@getmicdrop/svelte-components 5.20.2 → 5.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/calendar/AboutShow/AboutShow.spec.js +10 -10
- package/dist/calendar/AboutShow/AboutShow.svelte +11 -11
- package/dist/calendar/Calendar/MiniMonthCalendar.spec.js +9 -8
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte +22 -25
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -1
- package/dist/calendar/FAQs/FAQs.spec.js +6 -6
- package/dist/calendar/FAQs/FAQs.svelte +4 -4
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +8 -12
- package/dist/calendar/OrderSummary/OrderSummary.svelte +36 -36
- package/dist/calendar/PublicCard/PublicCard.spec.js +3 -3
- package/dist/calendar/PublicCard/PublicCard.svelte +7 -7
- package/dist/calendar/ShowCard/ShowCard.spec.js +8 -8
- package/dist/calendar/ShowCard/ShowCard.svelte +8 -8
- package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.js +4 -4
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +4 -4
- package/dist/components/Heading.spec.js +1 -1
- package/dist/components/Heading.svelte +1 -1
- package/dist/components/Layout/AppShell.svelte +4 -4
- package/dist/components/Layout/ContentSection.svelte +2 -2
- package/dist/components/Layout/Heading.svelte +3 -3
- package/dist/components/Layout/PageContainer.svelte +2 -2
- package/dist/components/Layout/Section.spec.js +4 -4
- package/dist/components/Layout/Text.svelte +7 -7
- package/dist/components/Layout/__tests__/AppShell.test.js +5 -5
- package/dist/components/Layout/__tests__/ContentSection.test.js +1 -1
- package/dist/components/Layout/__tests__/Heading.test.js +3 -3
- package/dist/components/Layout/__tests__/PageContainer.test.js +4 -4
- package/dist/components/Layout/__tests__/Text.test.js +9 -9
- package/dist/components/Text.spec.js +4 -4
- package/dist/components/Text.svelte +7 -7
- package/dist/patterns/chat/ChatActivityNotice.spec.js +1 -1
- package/dist/patterns/chat/ChatActivityNotice.svelte +3 -3
- package/dist/patterns/chat/ChatBubble.spec.js +1 -1
- package/dist/patterns/chat/ChatBubble.svelte +7 -7
- package/dist/patterns/chat/ChatContainer.spec.js +1 -1
- package/dist/patterns/chat/ChatContainer.svelte +3 -3
- package/dist/patterns/chat/ChatDateDivider.svelte +1 -1
- package/dist/patterns/chat/ChatInvitationBubble.spec.js +2 -2
- package/dist/patterns/chat/ChatInvitationBubble.svelte +1 -1
- package/dist/patterns/chat/ChatInvitationNotice.spec.js +2 -2
- package/dist/patterns/chat/ChatInvitationNotice.svelte +1 -1
- package/dist/patterns/chat/ChatMessageGroup.svelte +2 -2
- package/dist/patterns/chat/ChatSlotUpdate.svelte +2 -2
- package/dist/patterns/chat/ChatStatusBadge.spec.js +10 -10
- package/dist/patterns/chat/ChatStatusBadge.svelte +8 -8
- package/dist/patterns/chat/ChatStatusTransition.spec.js +9 -9
- package/dist/patterns/chat/ChatStatusTransition.svelte +5 -5
- package/dist/patterns/chat/ChatTextBubble.spec.js +4 -4
- package/dist/patterns/chat/ChatTextBubble.svelte +2 -2
- package/dist/patterns/data/DataList.spec.js +5 -5
- package/dist/patterns/data/DataList.svelte +1 -1
- package/dist/patterns/data/DataTable.spec.js +18 -18
- package/dist/patterns/data/DataTable.svelte +3 -3
- package/dist/patterns/forms/FormActions.spec.js +6 -6
- package/dist/patterns/forms/FormActions.stories.svelte +1 -1
- package/dist/patterns/forms/FormActions.svelte +1 -1
- package/dist/patterns/forms/FormSection.spec.js +4 -4
- package/dist/patterns/forms/FormSection.svelte +2 -2
- package/dist/patterns/forms/FormValidationSummary.spec.js +2 -2
- package/dist/patterns/forms/FormValidationSummary.stories.svelte +4 -4
- package/dist/patterns/forms/FormValidationSummary.svelte +4 -4
- package/dist/patterns/navigation/BottomNav.stories.svelte +23 -23
- package/dist/patterns/navigation/BottomNav.svelte +3 -3
- package/dist/patterns/navigation/Header.spec.js +9 -9
- package/dist/patterns/navigation/Header.svelte +13 -15
- package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
- package/dist/patterns/page/PageLayout.spec.js +5 -5
- package/dist/patterns/page/PageLayout.svelte +1 -1
- package/dist/patterns/page/PageLoader.stories.svelte +5 -5
- package/dist/patterns/page/SectionHeader.spec.js +8 -8
- package/dist/patterns/page/SectionHeader.svelte +2 -2
- package/dist/presets/buttons.js +1 -1
- package/dist/presets/buttons.spec.js +4 -4
- package/dist/primitives/Accordion/Accordion.spec.js +5 -5
- package/dist/primitives/Accordion/Accordion.stories.svelte +9 -9
- package/dist/primitives/Accordion/Accordion.svelte +2 -2
- package/dist/primitives/Accordion/AccordionItem.spec.js +19 -28
- package/dist/primitives/Accordion/AccordionItem.svelte +4 -4
- package/dist/primitives/Avatar/Avatar.spec.js +11 -11
- package/dist/primitives/Avatar/Avatar.stories.svelte +6 -5
- package/dist/primitives/Avatar/Avatar.stories.svelte.d.ts.map +1 -1
- package/dist/primitives/Avatar/Avatar.svelte +3 -3
- package/dist/primitives/Badges/Badge.spec.js +10 -10
- package/dist/primitives/BottomSheet/BottomSheet.spec.js +5 -5
- package/dist/primitives/BottomSheet/BottomSheet.svelte +7 -7
- package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +4 -2
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte +4 -4
- package/dist/primitives/Button/Button.spec.js +15 -15
- package/dist/primitives/Button/Button.svelte +16 -16
- package/dist/primitives/Button/ButtonVariantShowcase.spec.js +1 -1
- package/dist/primitives/Button/ButtonVariantShowcase.svelte +18 -18
- package/dist/primitives/Card.spec.js +1 -1
- package/dist/primitives/Card.stories.svelte +1 -1
- package/dist/primitives/Card.svelte +1 -1
- package/dist/primitives/CardAction/CardAction.svelte +3 -3
- package/dist/primitives/Checkbox/Checkbox.spec.js +16 -16
- package/dist/primitives/Checkbox/Checkbox.stories.svelte +3 -3
- package/dist/primitives/Checkbox/Checkbox.svelte +9 -9
- package/dist/primitives/DarkModeToggle.spec.js +11 -11
- package/dist/primitives/DarkModeToggle.stories.svelte +8 -8
- package/dist/primitives/DarkModeToggle.svelte +4 -4
- package/dist/primitives/Drawer/Drawer.spec.js +4 -4
- package/dist/primitives/Drawer/Drawer.stories.svelte +6 -6
- package/dist/primitives/Drawer/Drawer.svelte +11 -11
- package/dist/primitives/Dropdown/Dropdown.spec.js +9 -9
- package/dist/primitives/Dropdown/Dropdown.stories.svelte +4 -4
- package/dist/primitives/Dropdown/Dropdown.svelte +2 -2
- package/dist/primitives/Dropdown/DropdownDivider.svelte +1 -1
- package/dist/primitives/Dropdown/DropdownItem.spec.js +8 -15
- package/dist/primitives/Dropdown/DropdownItem.svelte +3 -3
- package/dist/primitives/Helper/Helper.spec.js +6 -6
- package/dist/primitives/Helper/Helper.svelte +3 -3
- package/dist/primitives/Icons/Icon.stories.svelte +15 -15
- package/dist/primitives/Icons/IconGallery.stories.svelte +26 -26
- package/dist/primitives/Icons/Icons.spec.js +3 -3
- package/dist/primitives/Input/Input.spec.js +9 -9
- package/dist/primitives/Input/Input.svelte +11 -11
- package/dist/primitives/Input/Select.spec.js +7 -7
- package/dist/primitives/Input/Select.stories.svelte +1 -1
- package/dist/primitives/Input/Select.svelte +6 -6
- package/dist/primitives/Input/Textarea.spec.js +8 -8
- package/dist/primitives/Input/Textarea.stories.svelte +1 -1
- package/dist/primitives/Input/Textarea.svelte +2 -2
- package/dist/primitives/Label/Label.spec.js +20 -21
- package/dist/primitives/Label/Label.svelte +4 -4
- package/dist/primitives/LandingButton/LandingButton.svelte +3 -3
- package/dist/primitives/MenuItem/MenuItem.spec.js +5 -5
- package/dist/primitives/MenuItem/MenuItem.svelte +4 -4
- package/dist/primitives/Modal/Modal.stories.svelte +8 -8
- package/dist/primitives/Modal/Modal.svelte +4 -4
- package/dist/primitives/NavItem/NavItem.spec.js +2 -2
- package/dist/primitives/NavItem/NavItem.svelte +3 -3
- package/dist/primitives/NumberInput/NumberInput.spec.js +17 -17
- package/dist/primitives/NumberInput/NumberInput.svelte +8 -8
- package/dist/primitives/Pagination/DotIndicator.svelte +6 -6
- package/dist/primitives/Pagination/Pagination.spec.js +6 -6
- package/dist/primitives/Pagination/Pagination.stories.svelte +4 -4
- package/dist/primitives/Pagination/Pagination.svelte +3 -3
- package/dist/primitives/Radio/Radio.spec.js +19 -19
- package/dist/primitives/Radio/Radio.stories.svelte +5 -5
- package/dist/primitives/Radio/Radio.svelte +8 -8
- package/dist/primitives/SearchResultItem/SearchResultItem.svelte +5 -5
- package/dist/primitives/SidebarToggle/SidebarToggle.svelte +2 -2
- package/dist/primitives/Skeleton/CardPlaceholder.spec.js +1 -1
- package/dist/primitives/Skeleton/CardPlaceholder.svelte +11 -11
- package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +2 -2
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte +7 -7
- package/dist/primitives/Skeleton/ListPlaceholder.spec.js +2 -2
- package/dist/primitives/Skeleton/ListPlaceholder.svelte +5 -5
- package/dist/primitives/Skeleton/Skeleton.spec.js +7 -7
- package/dist/primitives/Skeleton/Skeleton.stories.svelte +4 -4
- package/dist/primitives/Skeleton/Skeleton.svelte +1 -1
- package/dist/primitives/Spinner/Spinner.spec.js +4 -5
- package/dist/primitives/Spinner/Spinner.stories.svelte +2 -2
- package/dist/primitives/Spinner/Spinner.svelte +1 -1
- package/dist/primitives/Tabs/Tabs.spec.js +14 -14
- package/dist/primitives/Tabs/Tabs.stories.svelte +6 -6
- package/dist/primitives/Tabs/Tabs.svelte +8 -8
- package/dist/primitives/Toggle.spec.js +3 -5
- package/dist/primitives/Toggle.stories.svelte +7 -7
- package/dist/primitives/Toggle.svelte +7 -7
- package/dist/primitives/Tooltip/Tooltip.svelte +5 -5
- package/dist/primitives/ValidationError.spec.js +1 -1
- package/dist/primitives/ValidationError.stories.svelte +8 -8
- package/dist/primitives/ValidationError.svelte +1 -1
- package/dist/recipes/CropImage/CropImage.stories.svelte +8 -8
- package/dist/recipes/CropImage/CropImage.svelte +7 -7
- package/dist/recipes/ImageUploader/ImageUploader.spec.js +1 -1
- package/dist/recipes/ImageUploader/ImageUploader.svelte +34 -56
- package/dist/recipes/SuperLogin/SuperLogin.svelte +25 -25
- package/dist/recipes/Toaster/Toaster.stories.svelte +10 -10
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
- package/dist/recipes/feedback/ErrorDisplay.spec.js +1 -1
- package/dist/recipes/feedback/ErrorDisplay.stories.svelte +2 -2
- package/dist/recipes/feedback/ErrorDisplay.svelte +2 -2
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +7 -7
- package/dist/recipes/fields/CheckboxField.spec.js +2 -2
- package/dist/recipes/fields/CheckboxField.svelte +2 -2
- package/dist/recipes/fields/FormField.spec.js +4 -4
- package/dist/recipes/fields/FormField.svelte +1 -1
- package/dist/recipes/fields/RadioGroup.spec.js +1 -1
- package/dist/recipes/fields/RadioGroup.svelte +2 -2
- package/dist/recipes/fields/SelectField.spec.js +2 -2
- package/dist/recipes/fields/TextareaField.spec.js +2 -2
- package/dist/recipes/fields/ToggleField.spec.js +2 -2
- package/dist/recipes/fields/ToggleField.svelte +1 -1
- package/dist/recipes/inputs/MultiSelect.stories.svelte +2 -2
- package/dist/recipes/inputs/MultiSelect.svelte +10 -10
- package/dist/recipes/inputs/OTPInput.stories.svelte +9 -9
- package/dist/recipes/inputs/OTPInput.svelte +1 -1
- package/dist/recipes/inputs/PasswordInput.spec.js +2 -2
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +14 -14
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +3 -3
- package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +2 -2
- package/dist/recipes/inputs/PhoneInput.svelte +5 -5
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +10 -10
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +7 -7
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +11 -14
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/Search.spec.js +3 -3
- package/dist/recipes/inputs/Search.svelte +1 -1
- package/dist/recipes/inputs/phoneInput/CountrySelector.svelte +5 -5
- package/dist/recipes/modals/AlertModal.spec.js +36 -36
- package/dist/recipes/modals/AlertModal.svelte +8 -8
- package/dist/recipes/modals/ConfirmationModal.spec.js +20 -20
- package/dist/recipes/modals/ConfirmationModal.svelte +1 -1
- package/dist/recipes/modals/FeedbackModal.svelte +7 -7
- package/dist/recipes/modals/InputModal.spec.js +17 -17
- package/dist/recipes/modals/InputModal.svelte +3 -3
- package/dist/recipes/modals/ModalStateManager.spec.js +1 -1
- package/dist/recipes/modals/ModalStateManager.svelte +2 -2
- package/dist/recipes/modals/StatusModal.spec.js +7 -7
- package/dist/recipes/modals/StatusModal.svelte +10 -10
- package/dist/schemas/__tests__/order.test.js +1 -1
- package/dist/schemas/auth.d.ts +107 -17
- package/dist/schemas/auth.d.ts.map +1 -1
- package/dist/schemas/common.d.ts +41 -13
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/event.d.ts +147 -41
- package/dist/schemas/event.d.ts.map +1 -1
- package/dist/schemas/order.d.ts +208 -51
- package/dist/schemas/order.d.ts.map +1 -1
- package/dist/schemas/performer.d.ts +199 -44
- package/dist/schemas/performer.d.ts.map +1 -1
- package/dist/schemas/promo.d.ts +221 -55
- package/dist/schemas/promo.d.ts.map +1 -1
- package/dist/schemas/ticket.d.ts +187 -61
- package/dist/schemas/ticket.d.ts.map +1 -1
- package/dist/schemas/user.d.ts +114 -54
- package/dist/schemas/user.d.ts.map +1 -1
- package/dist/schemas/venue.d.ts +238 -20
- package/dist/schemas/venue.d.ts.map +1 -1
- package/dist/stories/ButtonAuditDashboard.spec.js +12 -12
- package/dist/stories/ButtonAuditDashboard.svelte +55 -55
- package/dist/stories/ButtonAuditReview.spec.js +8 -8
- package/dist/stories/ButtonAuditReview.svelte +87 -87
- package/dist/stories/ButtonGridView.spec.js +27 -27
- package/dist/stories/ButtonGridView.svelte +22 -22
- package/dist/stories/ButtonShowcase.spec.js +4 -4
- package/dist/stories/ButtonShowcase.svelte +119 -119
- package/dist/stories/ComponentConsolidation.stories.svelte +453 -453
- package/dist/stories/DesignSystemAudit.stories.svelte +127 -127
- package/dist/stories/PatternsGallery.spec.js +3 -3
- package/dist/stories/PatternsGallery.svelte +23 -23
- package/dist/stories/PrimitivesGallery.spec.js +9 -9
- package/dist/stories/PrimitivesGallery.svelte +68 -68
- package/dist/stories/RecipesGallery.svelte +26 -26
- package/dist/tokens/__tests__/typography-base.test.js +5 -5
- package/dist/tokens/__tests__/typography.test.js +32 -36
- package/dist/tokens/__tests__/variants.test.js +63 -78
- package/dist/tokens/tokens.css +15 -15
- package/dist/tokens/typography-base.css +16 -16
- package/dist/tokens/typography.d.ts +29 -29
- package/dist/tokens/typography.js +29 -29
- package/dist/tokens/utilities.css +35 -47
- package/dist/tokens/variants.d.ts +32 -32
- package/dist/tokens/variants.js +32 -32
- package/dist/utils/utils/utils.spec.js +2 -2
- package/package.json +1 -1
|
@@ -405,7 +405,7 @@
|
|
|
405
405
|
}
|
|
406
406
|
|
|
407
407
|
// Call the success callback and wait for it to complete
|
|
408
|
-
// (
|
|
408
|
+
// (consumers may fetch contexts/user data needed for routing)
|
|
409
409
|
await onLoginSuccess({
|
|
410
410
|
token: data.token,
|
|
411
411
|
refreshToken: data.refreshToken || data.refreshtoken,
|
|
@@ -701,7 +701,7 @@
|
|
|
701
701
|
|
|
702
702
|
<div class="w-full flex justify-center px-4">
|
|
703
703
|
<div
|
|
704
|
-
class="login-card bg-
|
|
704
|
+
class="login-card bg-card rounded-xl shadow-xl overflow-hidden {shake
|
|
705
705
|
? 'shake'
|
|
706
706
|
: ''} {isViewTransitioning ? 'transition-height' : ''} {cardVisible ? 'card-visible' : 'card-hidden'}"
|
|
707
707
|
style="height: {contentHeight ? contentHeight + 'px' : 'auto'}"
|
|
@@ -710,7 +710,7 @@
|
|
|
710
710
|
{#if isCheckingEligibility}
|
|
711
711
|
<div class="flex justify-center py-12">
|
|
712
712
|
<div
|
|
713
|
-
class="animate-spin rounded-full h-8 w-8 border-b-2 border-
|
|
713
|
+
class="animate-spin rounded-full h-8 w-8 border-b-2 border-brand-primary"
|
|
714
714
|
></div>
|
|
715
715
|
</div>
|
|
716
716
|
{:else if view === "login"}
|
|
@@ -729,7 +729,7 @@
|
|
|
729
729
|
<h2 class={typography.h1}>
|
|
730
730
|
{typeof labels.welcomeBackTitle === 'function' ? labels.welcomeBackTitle(rememberedUser.firstName) : labels.welcomeBackTitle}
|
|
731
731
|
</h2>
|
|
732
|
-
<Button variant="link" class="text-
|
|
732
|
+
<Button variant="link" class="text-muted-foreground hover:text-brand-primary" onclick={handleNotMe}>
|
|
733
733
|
{typeof labels.notYouButton === 'function' ? labels.notYouButton(rememberedUser.firstName) : labels.notYouButton}
|
|
734
734
|
</Button>
|
|
735
735
|
{:else}
|
|
@@ -766,7 +766,7 @@
|
|
|
766
766
|
{#if errors.email && showErrors}
|
|
767
767
|
<div
|
|
768
768
|
transition:safeSlide={{ duration: 300, easing: cubicOut }}
|
|
769
|
-
class="flex items-center gap-1.5 text-
|
|
769
|
+
class="flex items-center gap-1.5 text-accent-danger"
|
|
770
770
|
role="alert"
|
|
771
771
|
>
|
|
772
772
|
<WarningIcon class="shrink-0" />
|
|
@@ -807,7 +807,7 @@
|
|
|
807
807
|
{#if errors.password && showErrors}
|
|
808
808
|
<div
|
|
809
809
|
transition:safeSlide={{ duration: 300, easing: cubicOut }}
|
|
810
|
-
class="flex items-center gap-1.5 text-
|
|
810
|
+
class="flex items-center gap-1.5 text-accent-danger"
|
|
811
811
|
role="alert"
|
|
812
812
|
>
|
|
813
813
|
<WarningIcon class="shrink-0" />
|
|
@@ -841,11 +841,11 @@
|
|
|
841
841
|
<div class="relative">
|
|
842
842
|
<div class="absolute inset-0 flex items-center">
|
|
843
843
|
<div
|
|
844
|
-
class="w-full border-t border-
|
|
844
|
+
class="w-full border-t border-stroke-primary"
|
|
845
845
|
></div>
|
|
846
846
|
</div>
|
|
847
847
|
<div class="relative flex justify-center text-sm">
|
|
848
|
-
<span class={`px-2 bg-
|
|
848
|
+
<span class={`px-2 bg-card ${typography.textMuted}`}
|
|
849
849
|
>{labels.or}</span
|
|
850
850
|
>
|
|
851
851
|
</div>
|
|
@@ -884,7 +884,7 @@
|
|
|
884
884
|
onclick={() => handleAccountSelectInternal(account)}
|
|
885
885
|
>
|
|
886
886
|
<div
|
|
887
|
-
class="h-10 w-10 rounded-md bg-
|
|
887
|
+
class="h-10 w-10 rounded-md bg-bg-tertiary shrink-0 overflow-hidden mr-4"
|
|
888
888
|
>
|
|
889
889
|
{#if account.performerProfile?.profileImage}
|
|
890
890
|
<img
|
|
@@ -894,7 +894,7 @@
|
|
|
894
894
|
/>
|
|
895
895
|
{:else}
|
|
896
896
|
<div
|
|
897
|
-
class="h-full w-full flex items-center justify-center bg-
|
|
897
|
+
class="h-full w-full flex items-center justify-center bg-status-info-bg text-brand-primary font-medium"
|
|
898
898
|
>
|
|
899
899
|
{account.organizationName
|
|
900
900
|
? account.organizationName[0].toUpperCase()
|
|
@@ -911,7 +911,7 @@
|
|
|
911
911
|
</p>
|
|
912
912
|
</div>
|
|
913
913
|
<div
|
|
914
|
-
class="text-
|
|
914
|
+
class="text-muted-foreground group-hover:text-text-secondary transition-colors"
|
|
915
915
|
>
|
|
916
916
|
<svg
|
|
917
917
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -930,8 +930,8 @@
|
|
|
930
930
|
{/each}
|
|
931
931
|
</div>
|
|
932
932
|
|
|
933
|
-
<div class="pt-4 border-t border-
|
|
934
|
-
<Button variant="ghost" size="full" class="text-
|
|
933
|
+
<div class="pt-4 border-t border-stroke-primary">
|
|
934
|
+
<Button variant="ghost" size="full" class="text-muted-foreground" onclick={handleReturnToSignIn}>
|
|
935
935
|
{labels.loginDifferentEmail}
|
|
936
936
|
</Button>
|
|
937
937
|
</div>
|
|
@@ -982,7 +982,7 @@
|
|
|
982
982
|
{#if errors.password && showErrors}
|
|
983
983
|
<div
|
|
984
984
|
transition:safeSlide={{ duration: 600, easing: cubicOut }}
|
|
985
|
-
class="flex items-start gap-1.5 text-
|
|
985
|
+
class="flex items-start gap-1.5 text-accent-danger"
|
|
986
986
|
role="alert"
|
|
987
987
|
>
|
|
988
988
|
<WarningIcon class="shrink-0 mt-1" />
|
|
@@ -1012,7 +1012,7 @@
|
|
|
1012
1012
|
href={tosUrl}
|
|
1013
1013
|
target="_blank"
|
|
1014
1014
|
rel="noopener noreferrer"
|
|
1015
|
-
class="text-
|
|
1015
|
+
class="text-brand-primary hover:underline">{labels.termsOfService}</a
|
|
1016
1016
|
>.
|
|
1017
1017
|
</p>
|
|
1018
1018
|
</div>
|
|
@@ -1052,7 +1052,7 @@
|
|
|
1052
1052
|
{#if errors.email && showErrors}
|
|
1053
1053
|
<div
|
|
1054
1054
|
transition:safeSlide={{ duration: 300, easing: cubicOut }}
|
|
1055
|
-
class="flex items-center gap-1.5 text-
|
|
1055
|
+
class="flex items-center gap-1.5 text-accent-danger"
|
|
1056
1056
|
role="alert"
|
|
1057
1057
|
>
|
|
1058
1058
|
<WarningIcon class="shrink-0" />
|
|
@@ -1116,7 +1116,7 @@
|
|
|
1116
1116
|
{#if errors.email && showErrors}
|
|
1117
1117
|
<div
|
|
1118
1118
|
transition:safeSlide={{ duration: 300, easing: cubicOut }}
|
|
1119
|
-
class="flex items-center gap-1.5 text-
|
|
1119
|
+
class="flex items-center gap-1.5 text-accent-danger"
|
|
1120
1120
|
role="alert"
|
|
1121
1121
|
>
|
|
1122
1122
|
<WarningIcon class="shrink-0" />
|
|
@@ -1133,8 +1133,8 @@
|
|
|
1133
1133
|
<p
|
|
1134
1134
|
class="{typography.smMuted} {loginLinkMessage.includes('sent') ||
|
|
1135
1135
|
loginLinkMessage.includes('check your email')
|
|
1136
|
-
? 'text-
|
|
1137
|
-
: 'text-
|
|
1136
|
+
? 'text-accent-success bg-status-success-bg'
|
|
1137
|
+
: 'text-accent-danger bg-status-error-bg'} p-3 rounded-md"
|
|
1138
1138
|
role="alert"
|
|
1139
1139
|
>
|
|
1140
1140
|
{loginLinkMessage}
|
|
@@ -1208,17 +1208,17 @@
|
|
|
1208
1208
|
|
|
1209
1209
|
<style>
|
|
1210
1210
|
.superlogin-container :global(body) {
|
|
1211
|
-
background-color:
|
|
1211
|
+
background-color: hsl(var(--bg-secondary));
|
|
1212
1212
|
}
|
|
1213
1213
|
|
|
1214
1214
|
.animated-gradient {
|
|
1215
1215
|
background: linear-gradient(
|
|
1216
1216
|
-45deg,
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1217
|
+
hsl(270 95% 75%),
|
|
1218
|
+
hsl(330 90% 82%),
|
|
1219
|
+
hsl(213 96% 78%),
|
|
1220
|
+
hsl(256 93% 76%),
|
|
1221
|
+
hsl(290 93% 83%)
|
|
1222
1222
|
);
|
|
1223
1223
|
background-size: 400% 400%;
|
|
1224
1224
|
animation: gradientShift 15s ease infinite;
|
|
@@ -22,20 +22,20 @@
|
|
|
22
22
|
<Toaster
|
|
23
23
|
position="bottom-right"
|
|
24
24
|
toastOptions={{
|
|
25
|
-
class: "text-sm bg-
|
|
25
|
+
class: "text-sm bg-card border border-border",
|
|
26
26
|
classes: {
|
|
27
|
-
error: "text-
|
|
28
|
-
success: "text-
|
|
27
|
+
error: "text-accent-danger",
|
|
28
|
+
success: "text-accent-success",
|
|
29
29
|
},
|
|
30
30
|
}}
|
|
31
31
|
/>
|
|
32
32
|
<button
|
|
33
33
|
onclick={showSuccessToast}
|
|
34
|
-
class="px-4 py-2 bg-
|
|
34
|
+
class="px-4 py-2 bg-accent-success text-white rounded-lg hover:bg-accent-success"
|
|
35
35
|
>
|
|
36
36
|
Show Success Toast
|
|
37
37
|
</button>
|
|
38
|
-
<p class="mt-4 text-sm text-
|
|
38
|
+
<p class="mt-4 text-sm text-muted-foreground">Click the button to see a success toast notification</p>
|
|
39
39
|
</div>
|
|
40
40
|
</Story>
|
|
41
41
|
|
|
@@ -44,19 +44,19 @@
|
|
|
44
44
|
<Toaster
|
|
45
45
|
position="bottom-right"
|
|
46
46
|
toastOptions={{
|
|
47
|
-
class: "text-sm bg-
|
|
47
|
+
class: "text-sm bg-card border border-border",
|
|
48
48
|
classes: {
|
|
49
|
-
error: "text-
|
|
50
|
-
success: "text-
|
|
49
|
+
error: "text-accent-danger",
|
|
50
|
+
success: "text-accent-success",
|
|
51
51
|
},
|
|
52
52
|
}}
|
|
53
53
|
/>
|
|
54
54
|
<button
|
|
55
55
|
onclick={showErrorToast}
|
|
56
|
-
class="px-4 py-2 bg-
|
|
56
|
+
class="px-4 py-2 bg-accent-danger text-white rounded-lg hover:bg-accent-danger"
|
|
57
57
|
>
|
|
58
58
|
Show Error Toast
|
|
59
59
|
</button>
|
|
60
|
-
<p class="mt-4 text-sm text-
|
|
60
|
+
<p class="mt-4 text-sm text-muted-foreground">Click the button to see an error toast notification</p>
|
|
61
61
|
</div>
|
|
62
62
|
</Story>
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
{#if icon || imageSrc}
|
|
57
57
|
{#if iconType === 'component' && icon}
|
|
58
58
|
{@const IconComponent = icon}
|
|
59
|
-
<IconComponent class="mb-3 text-
|
|
59
|
+
<IconComponent class="mb-3 text-muted-foreground {iconSize}" />
|
|
60
60
|
{:else if iconType === 'image' && imageSrc}
|
|
61
61
|
<img src={imageSrc} alt="" class="mb-3 {iconSize}" />
|
|
62
62
|
{/if}
|
|
@@ -23,7 +23,7 @@ describe("ErrorDisplay Component Tests", () => {
|
|
|
23
23
|
props: { error: "Error", show: true },
|
|
24
24
|
});
|
|
25
25
|
const icon = container.querySelector("svg");
|
|
26
|
-
expect(icon).toHaveClass("text-
|
|
26
|
+
expect(icon).toHaveClass("text-accent-danger");
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
test("Has shake class when shake is true", () => {
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
<Story name="Interactive Shake">
|
|
65
65
|
<div class="space-y-4">
|
|
66
66
|
<button
|
|
67
|
-
class="px-4 py-2 bg-
|
|
67
|
+
class="px-4 py-2 bg-brand-primary text-white rounded hover:bg-primary"
|
|
68
68
|
onclick={triggerShake}
|
|
69
69
|
>
|
|
70
70
|
Trigger Error Shake
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
<input
|
|
96
96
|
id="error-display-email"
|
|
97
97
|
type="email"
|
|
98
|
-
class="w-full px-3 py-2 border border-
|
|
98
|
+
class="w-full px-3 py-2 border border-status-error-border rounded"
|
|
99
99
|
value="invalid-email"
|
|
100
100
|
/>
|
|
101
101
|
<div class="mt-1">
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
<div
|
|
47
47
|
class="flex flex-col items-center justify-center px-6 py-10 text-center {shake ? 'animate-shake' : ''} {className}"
|
|
48
48
|
>
|
|
49
|
-
<div class="w-14 h-14 rounded-full bg-
|
|
50
|
-
<Icon name={icon} size="28" class="text-
|
|
49
|
+
<div class="w-14 h-14 rounded-full bg-status-error-bg flex items-center justify-center mb-4">
|
|
50
|
+
<Icon name={icon} size="28" class="text-accent-danger" />
|
|
51
51
|
</div>
|
|
52
52
|
|
|
53
53
|
{#if title}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
<div class="spinner" style="width: {size}px; height: {size}px;">
|
|
27
27
|
<svg viewBox="0 0 50 50">
|
|
28
28
|
<circle
|
|
29
|
-
class="stroke-gray-200
|
|
29
|
+
class="stroke-gray-200"
|
|
30
30
|
cx="25"
|
|
31
31
|
cy="25"
|
|
32
32
|
r="20"
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
stroke-width="4"
|
|
35
35
|
/>
|
|
36
36
|
<circle
|
|
37
|
-
class="spinner-head stroke-blue-700
|
|
37
|
+
class="spinner-head stroke-blue-700"
|
|
38
38
|
cx="25"
|
|
39
39
|
cy="25"
|
|
40
40
|
r="20"
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
<div class="success-circle" style="width: {size}px; height: {size}px;">
|
|
48
48
|
<svg viewBox="0 0 50 50">
|
|
49
49
|
<circle
|
|
50
|
-
class="stroke-
|
|
50
|
+
class="stroke-accent-success fill-status-success-bg"
|
|
51
51
|
cx="25"
|
|
52
52
|
cy="25"
|
|
53
53
|
r="23"
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
stroke-width="2"
|
|
56
56
|
/>
|
|
57
57
|
<polyline
|
|
58
|
-
class="checkmark stroke-
|
|
58
|
+
class="checkmark stroke-accent-success"
|
|
59
59
|
points="15,26 22,33 35,18"
|
|
60
60
|
fill="none"
|
|
61
61
|
stroke-width="3"
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
<div class="error-circle" style="width: {size}px; height: {size}px;">
|
|
69
69
|
<svg viewBox="0 0 50 50">
|
|
70
70
|
<circle
|
|
71
|
-
class="stroke-
|
|
71
|
+
class="stroke-accent-danger fill-status-error-bg"
|
|
72
72
|
cx="25"
|
|
73
73
|
cy="25"
|
|
74
74
|
r="23"
|
|
@@ -76,13 +76,13 @@
|
|
|
76
76
|
stroke-width="2"
|
|
77
77
|
/>
|
|
78
78
|
<line
|
|
79
|
-
class="error-x stroke-
|
|
79
|
+
class="error-x stroke-accent-danger"
|
|
80
80
|
x1="17" y1="17" x2="33" y2="33"
|
|
81
81
|
stroke-width="3"
|
|
82
82
|
stroke-linecap="round"
|
|
83
83
|
/>
|
|
84
84
|
<line
|
|
85
|
-
class="error-x error-x-2 stroke-
|
|
85
|
+
class="error-x error-x-2 stroke-accent-danger"
|
|
86
86
|
x1="33" y1="17" x2="17" y2="33"
|
|
87
87
|
stroke-width="3"
|
|
88
88
|
stroke-linecap="round"
|
|
@@ -39,7 +39,7 @@ describe('CheckboxField Label', () => {
|
|
|
39
39
|
test('error state applies error styling to label', () => {
|
|
40
40
|
const { container } = render(CheckboxField, { props: { label: 'Test', error: 'Required' } });
|
|
41
41
|
const labelSpan = container.querySelector('span');
|
|
42
|
-
expect(labelSpan).toHaveClass('text-
|
|
42
|
+
expect(labelSpan).toHaveClass('text-accent-danger');
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
45
|
|
|
@@ -65,7 +65,7 @@ describe('CheckboxField Description', () => {
|
|
|
65
65
|
describe('CheckboxField Error', () => {
|
|
66
66
|
test('no error shows no validation message', () => {
|
|
67
67
|
const { container } = render(CheckboxField);
|
|
68
|
-
const errorDiv = container.querySelector('.text-
|
|
68
|
+
const errorDiv = container.querySelector('.text-accent-danger');
|
|
69
69
|
expect(errorDiv).not.toBeInTheDocument();
|
|
70
70
|
});
|
|
71
71
|
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
{#if label || description}
|
|
71
71
|
<div class="flex flex-col">
|
|
72
72
|
{#if label}
|
|
73
|
-
<span class={`${typography.label} ${error ? 'text-
|
|
74
|
-
{label}{#if required}<span class="text-
|
|
73
|
+
<span class={`${typography.label} ${error ? 'text-accent-danger' : ''}`}>
|
|
74
|
+
{label}{#if required}<span class="text-accent-danger ml-0.5">*</span>{/if}
|
|
75
75
|
</span>
|
|
76
76
|
{/if}
|
|
77
77
|
{#if description}
|
|
@@ -45,20 +45,20 @@ describe('FormField Label', () => {
|
|
|
45
45
|
|
|
46
46
|
test('required asterisk has red color', () => {
|
|
47
47
|
const { container } = render(FormField, { props: { label: 'Name', required: true } });
|
|
48
|
-
const asterisk = container.querySelector('.text-
|
|
48
|
+
const asterisk = container.querySelector('.text-accent-danger');
|
|
49
49
|
expect(asterisk).toHaveTextContent('*');
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
test('error changes label color to red', () => {
|
|
53
53
|
const { container } = render(FormField, { props: { label: 'Email', error: 'Invalid' } });
|
|
54
54
|
const label = container.querySelector('label');
|
|
55
|
-
expect(label).toHaveClass('text-
|
|
55
|
+
expect(label).toHaveClass('text-status-error-text');
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
test('no error keeps label gray', () => {
|
|
59
59
|
const { container } = render(FormField, { props: { label: 'Email' } });
|
|
60
60
|
const label = container.querySelector('label');
|
|
61
|
-
expect(label).toHaveClass('text-
|
|
61
|
+
expect(label).toHaveClass('text-text-primary');
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
64
|
|
|
@@ -100,7 +100,7 @@ describe('FormField Error', () => {
|
|
|
100
100
|
|
|
101
101
|
test('error message uses ValidationError component', () => {
|
|
102
102
|
const { container } = render(FormField, { props: { error: 'Invalid input' } });
|
|
103
|
-
const errorDiv = container.querySelector('.text-
|
|
103
|
+
const errorDiv = container.querySelector('.text-accent-danger');
|
|
104
104
|
expect(errorDiv).toBeInTheDocument();
|
|
105
105
|
});
|
|
106
106
|
});
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
<div class="space-y-1 {className}">
|
|
41
41
|
{#if label}
|
|
42
42
|
<Label for={id} color={labelColor}>
|
|
43
|
-
{label}{#if required}<span class="text-
|
|
43
|
+
{label}{#if required}<span class="text-accent-danger ml-0.5">*</span>{/if}
|
|
44
44
|
</Label>
|
|
45
45
|
{/if}
|
|
46
46
|
|
|
@@ -58,7 +58,7 @@ describe('RadioGroup Label', () => {
|
|
|
58
58
|
test('error state applies red text to legend', () => {
|
|
59
59
|
const { container } = render(RadioGroup, { props: { label: 'Test', error: 'Required' } });
|
|
60
60
|
const legend = container.querySelector('legend');
|
|
61
|
-
expect(legend).toHaveClass('text-
|
|
61
|
+
expect(legend).toHaveClass('text-accent-danger');
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
64
|
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
|
|
64
64
|
<fieldset class={className}>
|
|
65
65
|
{#if label}
|
|
66
|
-
<legend class={`${typography.label} mb-2 ${error ? 'text-
|
|
67
|
-
{label}{#if required}<span class="text-
|
|
66
|
+
<legend class={`${typography.label} mb-2 ${error ? 'text-accent-danger' : ''}`}>
|
|
67
|
+
{label}{#if required}<span class="text-accent-danger ml-0.5">*</span>{/if}
|
|
68
68
|
</legend>
|
|
69
69
|
{/if}
|
|
70
70
|
|
|
@@ -101,13 +101,13 @@ describe('SelectField Error', () => {
|
|
|
101
101
|
test('error applies error border to button', () => {
|
|
102
102
|
const { container } = render(SelectField, { props: { error: 'Required' } });
|
|
103
103
|
const button = container.querySelector('button[aria-haspopup="listbox"]');
|
|
104
|
-
expect(button).toHaveClass('border-
|
|
104
|
+
expect(button).toHaveClass('border-status-error-border');
|
|
105
105
|
});
|
|
106
106
|
|
|
107
107
|
test('no error means no error border', () => {
|
|
108
108
|
const { container } = render(SelectField);
|
|
109
109
|
const button = container.querySelector('button[aria-haspopup="listbox"]');
|
|
110
|
-
expect(button).not.toHaveClass('border-
|
|
110
|
+
expect(button).not.toHaveClass('border-status-error-border');
|
|
111
111
|
});
|
|
112
112
|
});
|
|
113
113
|
|
|
@@ -92,7 +92,7 @@ describe('TextareaField Error', () => {
|
|
|
92
92
|
test('no error shows no validation styling', () => {
|
|
93
93
|
const { container } = render(TextareaField);
|
|
94
94
|
const textarea = container.querySelector('textarea');
|
|
95
|
-
expect(textarea).not.toHaveClass('border-
|
|
95
|
+
expect(textarea).not.toHaveClass('border-status-error-border');
|
|
96
96
|
});
|
|
97
97
|
|
|
98
98
|
test('error prop shows validation message', () => {
|
|
@@ -103,7 +103,7 @@ describe('TextareaField Error', () => {
|
|
|
103
103
|
test('error applies error border to textarea', () => {
|
|
104
104
|
const { container } = render(TextareaField, { props: { error: 'Required' } });
|
|
105
105
|
const textarea = container.querySelector('textarea');
|
|
106
|
-
expect(textarea).toHaveClass('border-
|
|
106
|
+
expect(textarea).toHaveClass('border-status-error-border');
|
|
107
107
|
});
|
|
108
108
|
});
|
|
109
109
|
|
|
@@ -35,7 +35,7 @@ describe('ToggleField Label', () => {
|
|
|
35
35
|
test('error state applies error styling to label', () => {
|
|
36
36
|
const { container } = render(ToggleField, { props: { label: 'Test', error: 'Required' } });
|
|
37
37
|
const labelSpan = container.querySelector('span');
|
|
38
|
-
expect(labelSpan).toHaveClass('text-
|
|
38
|
+
expect(labelSpan).toHaveClass('text-accent-danger');
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
41
|
|
|
@@ -61,7 +61,7 @@ describe('ToggleField Description', () => {
|
|
|
61
61
|
describe('ToggleField Error', () => {
|
|
62
62
|
test('no error shows no validation message', () => {
|
|
63
63
|
const { container } = render(ToggleField);
|
|
64
|
-
const errorDiv = container.querySelector('.text-
|
|
64
|
+
const errorDiv = container.querySelector('.text-accent-danger');
|
|
65
65
|
expect(errorDiv).not.toBeInTheDocument();
|
|
66
66
|
});
|
|
67
67
|
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
onchange={(e) => console.log('Selected:', e.value)}
|
|
99
99
|
/>
|
|
100
100
|
|
|
101
|
-
<div class="p-4 bg-
|
|
101
|
+
<div class="p-4 bg-muted rounded">
|
|
102
102
|
<p class="text-sm font-medium">Selected: {selectedFruits.join(', ') || 'None'}</p>
|
|
103
103
|
</div>
|
|
104
104
|
</div>
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
|
|
126
126
|
<button
|
|
127
127
|
type="submit"
|
|
128
|
-
class="w-full px-4 py-2 bg-
|
|
128
|
+
class="w-full px-4 py-2 bg-brand-primary text-white rounded hover:bg-primary"
|
|
129
129
|
>
|
|
130
130
|
Submit
|
|
131
131
|
</button>
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
{#if label}
|
|
183
183
|
<div class="flex justify-start items-center gap-1">
|
|
184
184
|
<label for={id || name} class={`${typography.label} leading-tight`}>
|
|
185
|
-
{label}{#if required}<span class="text-
|
|
185
|
+
{label}{#if required}<span class="text-accent-danger font-medium text-sm ml-0.5">*</span>{/if}
|
|
186
186
|
</label>
|
|
187
187
|
</div>
|
|
188
188
|
{/if}
|
|
@@ -192,8 +192,8 @@
|
|
|
192
192
|
<div
|
|
193
193
|
bind:this={triggerElement}
|
|
194
194
|
{id}
|
|
195
|
-
class="flex items-center justify-between gap-2 w-full {sizeClass} bg-
|
|
196
|
-
{error ? 'border-
|
|
195
|
+
class="flex items-center justify-between gap-2 w-full {sizeClass} bg-bg-secondary border rounded-lg cursor-pointer text-left transition-all focus:outline-hidden focus:ring-4 focus:ring-focus-ring
|
|
196
|
+
{error ? 'border-status-error-border' : 'border-stroke-primary hover:border-interactive-border focus:border-interactive-border'}
|
|
197
197
|
{disabled ? 'opacity-50 cursor-not-allowed' : ''}
|
|
198
198
|
{animateFocus ? 'multiselect-animate-focus' : ''}"
|
|
199
199
|
role="combobox"
|
|
@@ -211,11 +211,11 @@
|
|
|
211
211
|
{#if hasSelection}
|
|
212
212
|
<div class="flex flex-wrap gap-1.5">
|
|
213
213
|
{#each selectedItems as item}
|
|
214
|
-
<span class="inline-flex items-center px-2 py-1 bg-
|
|
214
|
+
<span class="inline-flex items-center px-2 py-1 bg-status-info-bg rounded">
|
|
215
215
|
<span class={`${typography.sm} overflow-hidden text-ellipsis whitespace-nowrap`} style="color-scheme: light dark;">{item.name}</span>
|
|
216
216
|
<button
|
|
217
217
|
type="button"
|
|
218
|
-
class="inline-flex items-center p-0.5 ms-1.5 text-sm text-
|
|
218
|
+
class="inline-flex items-center p-0.5 ms-1.5 text-sm text-brand-primary bg-transparent rounded-xs hover:bg-status-info-bg/80 hover:text-brand-primary"
|
|
219
219
|
onclick={(e) => removeItem(item, e)}
|
|
220
220
|
aria-label={typeof labels.removeItem === 'function' ? labels.removeItem(item.name) : `Remove ${item.name}`}
|
|
221
221
|
>
|
|
@@ -233,7 +233,7 @@
|
|
|
233
233
|
{#if hasSelection && !hideClear}
|
|
234
234
|
<button
|
|
235
235
|
type="button"
|
|
236
|
-
class="flex items-center justify-center w-5 h-5 p-0 bg-transparent border-none cursor-pointer text-
|
|
236
|
+
class="flex items-center justify-center w-5 h-5 p-0 bg-transparent border-none cursor-pointer text-muted-foreground hover:text-text-secondary rounded"
|
|
237
237
|
onclick={clearAll}
|
|
238
238
|
aria-label={labels.clearAll}
|
|
239
239
|
>
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
<ul
|
|
250
250
|
bind:this={dropdownElement}
|
|
251
251
|
id="{id || name}-listbox"
|
|
252
|
-
class="absolute top-full left-0 right-0 z-50 mt-1 bg-
|
|
252
|
+
class="absolute top-full left-0 right-0 z-50 mt-1 bg-card border border-border rounded-lg shadow-lg max-h-60 overflow-y-auto list-none m-0 py-1"
|
|
253
253
|
role="listbox"
|
|
254
254
|
tabindex="-1"
|
|
255
255
|
aria-multiselectable="true"
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
<li
|
|
264
264
|
id="{id || name}-option-{index}"
|
|
265
265
|
class="flex items-center gap-2 px-3 py-2 cursor-pointer transition-colors {typography.sm}
|
|
266
|
-
{index === focusedIndex || value.includes(item.value) ? 'bg-
|
|
266
|
+
{index === focusedIndex || value.includes(item.value) ? 'bg-muted' : 'hover:bg-muted'}"
|
|
267
267
|
role="option"
|
|
268
268
|
aria-selected={value.includes(item.value)}
|
|
269
269
|
onclick={() => toggleItem(item)}
|
|
@@ -273,7 +273,7 @@
|
|
|
273
273
|
<input
|
|
274
274
|
type="checkbox"
|
|
275
275
|
checked={value.includes(item.value)}
|
|
276
|
-
class="multiselect-checkbox w-4 h-4 text-
|
|
276
|
+
class="multiselect-checkbox w-4 h-4 text-brand-primary bg-muted border-stroke-primary rounded focus:ring-focus-ring focus:ring-2 {value.includes(item.value) ? 'multiselect-checkbox-checked' : ''}"
|
|
277
277
|
tabindex="-1"
|
|
278
278
|
onclick={(e) => { e.stopPropagation(); toggleItem(item); }}
|
|
279
279
|
/>
|
|
@@ -286,6 +286,6 @@
|
|
|
286
286
|
</div>
|
|
287
287
|
|
|
288
288
|
{#if error}
|
|
289
|
-
<p class={`${typography.sm} text-
|
|
289
|
+
<p class={`${typography.sm} text-accent-danger`}>{error}</p>
|
|
290
290
|
{/if}
|
|
291
291
|
</div>
|