Add expand and fade-in animations to conditional form sections

Add smooth animations to form sections that appear when toggles are enabled, improving user experience with visual feedback.

Changes:
- Add expandFadeIn keyframe animation to Tailwind config
- Apply expand-fade-in animation to UserSettingsForm payment sections
- Apply expand-fade-in animation to LocationEditForm conditional fields
- Update account page HomeIcon color from green to white for consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Knee Cola
2025-11-26 20:31:41 +01:00
parent eed92b5ac3
commit 4f38fa4496
4 changed files with 22 additions and 9 deletions

View File

@@ -17,7 +17,7 @@ const Page: FC = async () => {
<div className="card card-compact card-bordered min-w-[20em] max-w-[90em] bg-base-100 shadow-s my-1"> <div className="card card-compact card-bordered min-w-[20em] max-w-[90em] bg-base-100 shadow-s my-1">
<div className="card-body"> <div className="card-body">
<h2 className="card-title"><AccountCircle /> {t('title')}</h2> <h2 className="card-title"><AccountCircle /> {t('title')}</h2>
<Link href={`/${locale}/home`} className='btn btn-neutral'><HomeIcon className='text-green-300' /> {t('goto-home-button-label')}</Link> <Link href={`/${locale}/home`} className='btn btn-neutral'><HomeIcon className='text-white'/> {t('goto-home-button-label')}</Link>
<Link href={`/${locale}/home/account/settings`} className='btn btn-neutral'><SettingsIcon className='text-blue-400' /> {t('goto-settings-button-label')}</Link> <Link href={`/${locale}/home/account/settings`} className='btn btn-neutral'><SettingsIcon className='text-blue-400' /> {t('goto-settings-button-label')}</Link>
<LogoutButton /> <LogoutButton />
</div> </div>

View File

@@ -119,7 +119,7 @@ export const LocationEditForm: FC<LocationEditFormProps> = ({ location, yearMont
</fieldset> </fieldset>
{formValues.tenantPaymentMethod === "iban" && userSettings?.enableIbanPayment ? ( {formValues.tenantPaymentMethod === "iban" && userSettings?.enableIbanPayment ? (
<> <div className="animate-expand-fade-in origin-top">
<div className="divider mt-4 mb-2 font-bold uppercase">{t("iban-payment--form-title")}</div> <div className="divider mt-4 mb-2 font-bold uppercase">{t("iban-payment--form-title")}</div>
<div className="form-control w-full"> <div className="form-control w-full">
<label className="label"> <label className="label">
@@ -192,7 +192,7 @@ export const LocationEditForm: FC<LocationEditFormProps> = ({ location, yearMont
))} ))}
</div> </div>
</div> </div>
</> </div>
) : // ELSE include hidden inputs to preserve existing values ) : // ELSE include hidden inputs to preserve existing values
<> <>
<input <input
@@ -266,7 +266,7 @@ export const LocationEditForm: FC<LocationEditFormProps> = ({ location, yearMont
</fieldset> </fieldset>
{formValues.rentDueNotification && ( {formValues.rentDueNotification && (
<> <div className="animate-expand-fade-in origin-top">
<fieldset className="fieldset mt-2 p-2"> <fieldset className="fieldset mt-2 p-2">
<legend className="fieldset-legend">{t("rent-due-day-label")}</legend> <legend className="fieldset-legend">{t("rent-due-day-label")}</legend>
<select defaultValue={formValues.rentDueDay} <select defaultValue={formValues.rentDueDay}
@@ -301,7 +301,7 @@ export const LocationEditForm: FC<LocationEditFormProps> = ({ location, yearMont
))} ))}
</div> </div>
</fieldset> </fieldset>
</> </div>
)} )}
</fieldset> </fieldset>

View File

@@ -129,7 +129,7 @@ const FormFields: FC<FormFieldsProps> = ({ userSettings, errors, message }) => {
</fieldset> </fieldset>
{ formValues.enableIbanPayment ? ( { formValues.enableIbanPayment ? (
<> <div className="animate-expand-fade-in origin-top">
<div className="divider mt-2 mb-2 font-bold uppercase">{t("iban-form-title")}</div> <div className="divider mt-2 mb-2 font-bold uppercase">{t("iban-form-title")}</div>
<div className="form-control w-full"> <div className="form-control w-full">
<label className="label"> <label className="label">
@@ -231,7 +231,7 @@ const FormFields: FC<FormFieldsProps> = ({ userSettings, errors, message }) => {
</div> </div>
<NoteBox>{t("payment-additional-notes")}</NoteBox> <NoteBox>{t("payment-additional-notes")}</NoteBox>
</> </div>
) : // ELSE include hidden inputs to preserve existing values ) : // ELSE include hidden inputs to preserve existing values
<> <>
<input <input
@@ -281,7 +281,7 @@ const FormFields: FC<FormFieldsProps> = ({ userSettings, errors, message }) => {
</fieldset> </fieldset>
{ formValues.enableRevolutPayment ? ( { formValues.enableRevolutPayment ? (
<> <div className="animate-expand-fade-in origin-top">
<div className="divider mt-2 mb-2 font-bold uppercase">{t("revolut-form-title")}</div> <div className="divider mt-2 mb-2 font-bold uppercase">{t("revolut-form-title")}</div>
<div className="form-control w-full"> <div className="form-control w-full">
<label className="label"> <label className="label">
@@ -326,7 +326,7 @@ const FormFields: FC<FormFieldsProps> = ({ userSettings, errors, message }) => {
} }
</div> </div>
<NoteBox>{t("payment-additional-notes")}</NoteBox> <NoteBox>{t("payment-additional-notes")}</NoteBox>
</> </div>
) )
: // ELSE include hidden input to preserve existing value : // ELSE include hidden input to preserve existing value
<> <>

View File

@@ -18,6 +18,9 @@ const config: Config = {
600: '#2F6FEB', 600: '#2F6FEB',
}, },
}, },
animation: {
'expand-fade-in': 'expandFadeIn 0.3s ease-in-out forwards',
},
}, },
keyframes: { keyframes: {
shimmer: { shimmer: {
@@ -37,6 +40,16 @@ const config: Config = {
maxHeight: '200px', maxHeight: '200px',
}, },
}, },
expandFadeIn: {
'0%': {
opacity: '0',
transform: 'scaleY(0.95)',
},
'100%': {
opacity: '1',
transform: 'scaleY(1)',
},
},
}, },
}, },
plugins: [ plugins: [