@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
|
@@ -17,20 +17,20 @@
|
|
|
17
17
|
<Story name="Default">
|
|
18
18
|
<div class="flex flex-col gap-4 p-4">
|
|
19
19
|
<h3 class="text-lg font-semibold">Theme Toggle (3-State)</h3>
|
|
20
|
-
<p class="text-sm text-
|
|
20
|
+
<p class="text-sm text-muted-foreground">
|
|
21
21
|
Cycles through: Auto → Light → Dark → Auto
|
|
22
22
|
</p>
|
|
23
23
|
<DarkModeToggle />
|
|
24
|
-
<p class="text-xs text-
|
|
24
|
+
<p class="text-xs text-muted-foreground">
|
|
25
25
|
Click the toggle to cycle through theme modes. In auto mode, it follows system preferences.
|
|
26
26
|
</p>
|
|
27
27
|
</div>
|
|
28
28
|
</Story>
|
|
29
29
|
|
|
30
30
|
<Story name="In Header">
|
|
31
|
-
<div class="bg-
|
|
31
|
+
<div class="bg-card border border-border p-4 rounded-lg">
|
|
32
32
|
<div class="flex items-center justify-between">
|
|
33
|
-
<h2 class="text-xl font-bold text-
|
|
33
|
+
<h2 class="text-xl font-bold text-text-primary">Application Header</h2>
|
|
34
34
|
<DarkModeToggle />
|
|
35
35
|
</div>
|
|
36
36
|
</div>
|
|
@@ -38,17 +38,17 @@
|
|
|
38
38
|
|
|
39
39
|
<Story name="Theme States Demo">
|
|
40
40
|
<div class="space-y-4 p-4">
|
|
41
|
-
<div class="bg-
|
|
42
|
-
<h3 class="text-lg font-semibold text-
|
|
41
|
+
<div class="bg-card p-6 rounded-lg border border-border">
|
|
42
|
+
<h3 class="text-lg font-semibold text-text-primary mb-2">
|
|
43
43
|
Current Theme Demo
|
|
44
44
|
</h3>
|
|
45
|
-
<p class="text-
|
|
45
|
+
<p class="text-muted-foreground mb-4">
|
|
46
46
|
This content changes appearance based on the selected theme mode.
|
|
47
47
|
</p>
|
|
48
48
|
<DarkModeToggle />
|
|
49
49
|
</div>
|
|
50
50
|
|
|
51
|
-
<div class="text-sm text-
|
|
51
|
+
<div class="text-sm text-muted-foreground">
|
|
52
52
|
<p><strong>Auto Mode:</strong> Follows system preferences</p>
|
|
53
53
|
<p><strong>Light Mode:</strong> Forces light theme</p>
|
|
54
54
|
<p><strong>Dark Mode:</strong> Forces dark theme</p>
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
title={titleText}
|
|
110
110
|
>
|
|
111
111
|
<span
|
|
112
|
-
class="text-
|
|
112
|
+
class="text-accent-warning transition-all duration-300 {themeMode === 'light'
|
|
113
113
|
? 'scale-100 rotate-0 opacity-100'
|
|
114
114
|
: 'pointer-events-none absolute scale-0 rotate-180 opacity-0'}"
|
|
115
115
|
>
|
|
@@ -127,15 +127,15 @@
|
|
|
127
127
|
{#if themeMode === "auto"}
|
|
128
128
|
<div class="absolute inset-0 overflow-hidden rounded-lg">
|
|
129
129
|
<div
|
|
130
|
-
class="absolute flex h-full w-full items-center justify-center bg-
|
|
130
|
+
class="absolute flex h-full w-full items-center justify-center bg-card"
|
|
131
131
|
style="clip-path: polygon(0 0, 100% 0, 0 100%)"
|
|
132
132
|
>
|
|
133
|
-
<span class="-translate-x-1 -translate-y-1 text-
|
|
133
|
+
<span class="-translate-x-1 -translate-y-1 text-accent-warning">
|
|
134
134
|
<SunIcon size="12" />
|
|
135
135
|
</span>
|
|
136
136
|
</div>
|
|
137
137
|
<div
|
|
138
|
-
class="absolute flex h-full w-full items-center justify-center bg-
|
|
138
|
+
class="absolute flex h-full w-full items-center justify-center bg-bg-secondary"
|
|
139
139
|
style="clip-path: polygon(100% 0, 100% 100%, 0 100%)"
|
|
140
140
|
>
|
|
141
141
|
<span class="translate-x-1 translate-y-1">
|
|
@@ -152,16 +152,16 @@ describe('Drawer Styling', () => {
|
|
|
152
152
|
expect(dialog).toHaveClass('flex-col');
|
|
153
153
|
});
|
|
154
154
|
|
|
155
|
-
test('has bg-
|
|
155
|
+
test('has bg-card background', () => {
|
|
156
156
|
const { container } = render(Drawer, { props: { open: true } });
|
|
157
157
|
const dialog = container.querySelector('[role="dialog"]');
|
|
158
|
-
expect(dialog).toHaveClass('bg-
|
|
158
|
+
expect(dialog).toHaveClass('bg-card');
|
|
159
159
|
});
|
|
160
160
|
|
|
161
|
-
test('has
|
|
161
|
+
test('has token-based background', () => {
|
|
162
162
|
const { container } = render(Drawer, { props: { open: true } });
|
|
163
163
|
const dialog = container.querySelector('[role="dialog"]');
|
|
164
|
-
expect(dialog).toHaveClass('
|
|
164
|
+
expect(dialog).toHaveClass('bg-card');
|
|
165
165
|
});
|
|
166
166
|
});
|
|
167
167
|
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
<Drawer bind:open={openRight} position="right">
|
|
34
34
|
<div class="p-6">
|
|
35
35
|
<h2 class="text-xl font-semibold mb-4">Drawer Title</h2>
|
|
36
|
-
<p class="text-
|
|
36
|
+
<p class="text-text-secondary mb-4">
|
|
37
37
|
This drawer slides in from the right side. Click outside or use the close button to dismiss.
|
|
38
38
|
</p>
|
|
39
39
|
<div class="space-y-4">
|
|
40
|
-
<p class="text-sm text-
|
|
40
|
+
<p class="text-sm text-muted-foreground">Some content here...</p>
|
|
41
41
|
<Button onclick={() => openRight = false}>Close</Button>
|
|
42
42
|
</div>
|
|
43
43
|
</div>
|
|
@@ -54,10 +54,10 @@
|
|
|
54
54
|
<div class="p-6">
|
|
55
55
|
<h2 class="text-xl font-semibold mb-4">Navigation</h2>
|
|
56
56
|
<nav class="space-y-2">
|
|
57
|
-
<a href="/dashboard" class="block px-3 py-2 rounded hover:bg-
|
|
58
|
-
<a href="/shows" class="block px-3 py-2 rounded hover:bg-
|
|
59
|
-
<a href="/performers" class="block px-3 py-2 rounded hover:bg-
|
|
60
|
-
<a href="/settings" class="block px-3 py-2 rounded hover:bg-
|
|
57
|
+
<a href="/dashboard" class="block px-3 py-2 rounded hover:bg-muted">Dashboard</a>
|
|
58
|
+
<a href="/shows" class="block px-3 py-2 rounded hover:bg-muted">Shows</a>
|
|
59
|
+
<a href="/performers" class="block px-3 py-2 rounded hover:bg-muted">Performers</a>
|
|
60
|
+
<a href="/settings" class="block px-3 py-2 rounded hover:bg-muted">Settings</a>
|
|
61
61
|
</nav>
|
|
62
62
|
<div class="mt-6">
|
|
63
63
|
<Button variant="ghost" onclick={() => openLeft = false}>Close</Button>
|
|
@@ -74,15 +74,15 @@
|
|
|
74
74
|
let placementClasses = $derived.by(() => {
|
|
75
75
|
switch (placement) {
|
|
76
76
|
case 'left':
|
|
77
|
-
return `top-0 left-0 h-screen ${widthClass} max-w-full border-r border-
|
|
77
|
+
return `top-0 left-0 h-screen ${widthClass} max-w-full border-r border-border`;
|
|
78
78
|
case 'right':
|
|
79
|
-
return `top-0 right-0 h-screen ${widthClass} max-w-full border-l border-
|
|
79
|
+
return `top-0 right-0 h-screen ${widthClass} max-w-full border-l border-border`;
|
|
80
80
|
case 'top':
|
|
81
|
-
return `top-0 left-0 right-0 w-full border-b border-
|
|
81
|
+
return `top-0 left-0 right-0 w-full border-b border-border`;
|
|
82
82
|
case 'bottom':
|
|
83
|
-
return `bottom-0 left-0 right-0 w-full border-t border-
|
|
83
|
+
return `bottom-0 left-0 right-0 w-full border-t border-border`;
|
|
84
84
|
default:
|
|
85
|
-
return `top-0 left-0 h-screen ${widthClass} max-w-full border-r border-
|
|
85
|
+
return `top-0 left-0 h-screen ${widthClass} max-w-full border-r border-border`;
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
|
|
@@ -155,11 +155,11 @@
|
|
|
155
155
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
156
156
|
{#if edge && placement === "bottom" && !isVisible}
|
|
157
157
|
<div
|
|
158
|
-
class="fixed bottom-0 left-0 right-0 z-40 flex justify-center w-full p-4 cursor-pointer bg-
|
|
158
|
+
class="fixed bottom-0 left-0 right-0 z-40 flex justify-center w-full p-4 cursor-pointer bg-card border-t border-border hover:bg-bg-secondary transition-colors"
|
|
159
159
|
style="bottom: {edgeOffset}px"
|
|
160
160
|
onclick={handleEdgeClick}
|
|
161
161
|
>
|
|
162
|
-
<span class="absolute w-8 h-1 -translate-x-1/2 bg-
|
|
162
|
+
<span class="absolute w-8 h-1 -translate-x-1/2 bg-bg-quaternary rounded-lg top-3 left-1/2"></span>
|
|
163
163
|
</div>
|
|
164
164
|
{/if}
|
|
165
165
|
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
171
171
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
172
172
|
<div
|
|
173
|
-
class="fixed inset-0 z-30 bg-
|
|
173
|
+
class="fixed inset-0 z-30 bg-bg-primary/50"
|
|
174
174
|
onclick={handleBackdropClick}
|
|
175
175
|
transition:fade={{ duration: 200 }}
|
|
176
176
|
role="presentation"
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
bind:this={drawerElement}
|
|
183
183
|
{id}
|
|
184
184
|
class="
|
|
185
|
-
fixed z-40 flex flex-col bg-
|
|
185
|
+
fixed z-40 flex flex-col bg-card
|
|
186
186
|
{placementClasses}
|
|
187
187
|
{className}
|
|
188
188
|
"
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
>
|
|
196
196
|
<!-- Header (sticky) -->
|
|
197
197
|
{#if title || header}
|
|
198
|
-
<header class="shrink-0 p-4 border-b border-
|
|
198
|
+
<header class="shrink-0 p-4 border-b border-border">
|
|
199
199
|
{#if header}
|
|
200
200
|
{@render header()}
|
|
201
201
|
{:else}
|
|
@@ -216,7 +216,7 @@
|
|
|
216
216
|
|
|
217
217
|
<!-- Actions (sticky footer) -->
|
|
218
218
|
{#if actions}
|
|
219
|
-
<footer class="shrink-0 p-4 border-t border-
|
|
219
|
+
<footer class="shrink-0 p-4 border-t border-border flex flex-col gap-3">
|
|
220
220
|
{@render actions()}
|
|
221
221
|
</footer>
|
|
222
222
|
{/if}
|
|
@@ -59,16 +59,16 @@ describe('Dropdown Styling', () => {
|
|
|
59
59
|
expect(menu).toHaveClass('z-10');
|
|
60
60
|
});
|
|
61
61
|
|
|
62
|
-
test('has bg-
|
|
62
|
+
test('has bg-card background', () => {
|
|
63
63
|
const { container } = render(Dropdown, { props: { open: true } });
|
|
64
64
|
const menu = container.querySelector('[role="menu"]');
|
|
65
|
-
expect(menu).toHaveClass('bg-
|
|
65
|
+
expect(menu).toHaveClass('bg-card');
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
test('has
|
|
68
|
+
test('has token-based background', () => {
|
|
69
69
|
const { container } = render(Dropdown, { props: { open: true } });
|
|
70
70
|
const menu = container.querySelector('[role="menu"]');
|
|
71
|
-
expect(menu).toHaveClass('
|
|
71
|
+
expect(menu).toHaveClass('bg-card');
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
test('has rounded-lg border radius', () => {
|
|
@@ -93,7 +93,7 @@ describe('Dropdown Styling', () => {
|
|
|
93
93
|
const { container } = render(Dropdown, { props: { open: true } });
|
|
94
94
|
const menu = container.querySelector('[role="menu"]');
|
|
95
95
|
expect(menu).toHaveClass('divide-y');
|
|
96
|
-
expect(menu).toHaveClass('divide-
|
|
96
|
+
expect(menu).toHaveClass('divide-border');
|
|
97
97
|
});
|
|
98
98
|
});
|
|
99
99
|
|
|
@@ -116,16 +116,16 @@ describe('Dropdown List', () => {
|
|
|
116
116
|
expect(ul).toHaveClass('text-sm');
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
-
test('ul has text-
|
|
119
|
+
test('ul has text-text-secondary color', () => {
|
|
120
120
|
const { container } = render(Dropdown, { props: { open: true } });
|
|
121
121
|
const ul = container.querySelector('ul');
|
|
122
|
-
expect(ul).toHaveClass('text-
|
|
122
|
+
expect(ul).toHaveClass('text-text-secondary');
|
|
123
123
|
});
|
|
124
124
|
|
|
125
|
-
test('ul has
|
|
125
|
+
test('ul has token-based text color', () => {
|
|
126
126
|
const { container } = render(Dropdown, { props: { open: true } });
|
|
127
127
|
const ul = container.querySelector('ul');
|
|
128
|
-
expect(ul).toHaveClass('
|
|
128
|
+
expect(ul).toHaveClass('text-text-secondary');
|
|
129
129
|
});
|
|
130
130
|
});
|
|
131
131
|
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
<DropdownItem onclick={() => open2 = false}>Share</DropdownItem>
|
|
54
54
|
<DropdownItem onclick={() => open2 = false}>Export</DropdownItem>
|
|
55
55
|
<div class="border-t my-1"></div>
|
|
56
|
-
<DropdownItem onclick={() => open2 = false} class="text-
|
|
56
|
+
<DropdownItem onclick={() => open2 = false} class="text-accent-danger">Delete</DropdownItem>
|
|
57
57
|
</Dropdown>
|
|
58
58
|
{/if}
|
|
59
59
|
</div>
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
<h3 class="font-medium">Card Title</h3>
|
|
116
116
|
<div class="relative">
|
|
117
117
|
<button
|
|
118
|
-
class="p-1 hover:bg-
|
|
118
|
+
class="p-1 hover:bg-muted rounded"
|
|
119
119
|
onclick={() => open1 = !open1}
|
|
120
120
|
>
|
|
121
121
|
⋮
|
|
@@ -124,12 +124,12 @@
|
|
|
124
124
|
<Dropdown class="absolute mt-1 right-0 z-10">
|
|
125
125
|
<DropdownItem onclick={() => open1 = false}>Edit</DropdownItem>
|
|
126
126
|
<DropdownItem onclick={() => open1 = false}>Share</DropdownItem>
|
|
127
|
-
<DropdownItem onclick={() => open1 = false} class="text-
|
|
127
|
+
<DropdownItem onclick={() => open1 = false} class="text-accent-danger">Delete</DropdownItem>
|
|
128
128
|
</Dropdown>
|
|
129
129
|
{/if}
|
|
130
130
|
</div>
|
|
131
131
|
</div>
|
|
132
|
-
<p class="text-
|
|
132
|
+
<p class="text-text-secondary text-sm">
|
|
133
133
|
This is a card with a dropdown menu in the header for common actions.
|
|
134
134
|
</p>
|
|
135
135
|
</div>
|
|
@@ -166,13 +166,13 @@
|
|
|
166
166
|
{#if open}
|
|
167
167
|
<div
|
|
168
168
|
bind:this={containerRef}
|
|
169
|
-
class="absolute z-10 bg-
|
|
169
|
+
class="absolute z-10 bg-card divide-y divide-border rounded-lg shadow-lg w-44 {className}"
|
|
170
170
|
role="menu"
|
|
171
171
|
aria-label={ariaLabel ?? labels.menu}
|
|
172
172
|
transition:bloom={{ origin: placementOrigins[placement] || "top left" }}
|
|
173
173
|
{...restProps}
|
|
174
174
|
>
|
|
175
|
-
<ul bind:this={dropdownRef} class="py-2 text-sm text-
|
|
175
|
+
<ul bind:this={dropdownRef} class="py-2 text-sm text-text-secondary">
|
|
176
176
|
{#if typeof children === 'function'}{@render children()}{:else if children}{children}{/if}
|
|
177
177
|
</ul>
|
|
178
178
|
</div>
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
let { class: className = '' }: Props = $props();
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
|
-
<li class="my-1 border-t border-
|
|
9
|
+
<li class="my-1 border-t border-border {className}" role="separator" aria-hidden="true"></li>
|
|
@@ -131,26 +131,19 @@ describe('DropdownItem Styling', () => {
|
|
|
131
131
|
test('has hover styles', () => {
|
|
132
132
|
const { container } = render(DropdownItem);
|
|
133
133
|
const button = container.querySelector('button');
|
|
134
|
-
expect(button).toHaveClass('hover:bg-
|
|
134
|
+
expect(button).toHaveClass('hover:bg-muted');
|
|
135
135
|
});
|
|
136
136
|
|
|
137
|
-
test('has
|
|
137
|
+
test('has hover styles', () => {
|
|
138
138
|
const { container } = render(DropdownItem);
|
|
139
139
|
const button = container.querySelector('button');
|
|
140
|
-
expect(button).toHaveClass('
|
|
141
|
-
expect(button).toHaveClass('dark:hover:text-white');
|
|
140
|
+
expect(button).toHaveClass('hover:bg-muted');
|
|
142
141
|
});
|
|
143
142
|
|
|
144
143
|
test('has default text color', () => {
|
|
145
144
|
const { container } = render(DropdownItem);
|
|
146
145
|
const button = container.querySelector('button');
|
|
147
|
-
expect(button).toHaveClass('text-
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
test('has dark mode text color', () => {
|
|
151
|
-
const { container } = render(DropdownItem);
|
|
152
|
-
const button = container.querySelector('button');
|
|
153
|
-
expect(button).toHaveClass('dark:text-gray-200');
|
|
146
|
+
expect(button).toHaveClass('text-text-secondary');
|
|
154
147
|
});
|
|
155
148
|
});
|
|
156
149
|
|
|
@@ -315,8 +308,8 @@ describe('DropdownItem Active URL Styling', () => {
|
|
|
315
308
|
});
|
|
316
309
|
|
|
317
310
|
const anchor = container.querySelector('a');
|
|
318
|
-
expect(anchor).toHaveClass('bg-
|
|
319
|
-
expect(anchor).toHaveClass('text-
|
|
311
|
+
expect(anchor).toHaveClass('bg-status-info-bg');
|
|
312
|
+
expect(anchor).toHaveClass('text-brand-primary');
|
|
320
313
|
});
|
|
321
314
|
|
|
322
315
|
test('applies default classes when activeUrl does not match href', () => {
|
|
@@ -330,7 +323,7 @@ describe('DropdownItem Active URL Styling', () => {
|
|
|
330
323
|
});
|
|
331
324
|
|
|
332
325
|
const anchor = container.querySelector('a');
|
|
333
|
-
expect(anchor).toHaveClass('text-
|
|
334
|
-
expect(anchor).not.toHaveClass('bg-
|
|
326
|
+
expect(anchor).toHaveClass('text-text-secondary');
|
|
327
|
+
expect(anchor).not.toHaveClass('bg-status-info-bg');
|
|
335
328
|
});
|
|
336
329
|
});
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
const baseClasses = "block w-full text-left px-4 py-2 text-sm hover:bg-
|
|
48
|
-
const activeClasses = "bg-
|
|
47
|
+
const baseClasses = "block w-full text-left px-4 py-2 text-sm hover:bg-muted";
|
|
48
|
+
const activeClasses = "bg-status-info-bg text-brand-primary";
|
|
49
49
|
const disabledClasses = "opacity-50 cursor-not-allowed";
|
|
50
|
-
const defaultClasses = "text-
|
|
50
|
+
const defaultClasses = "text-text-secondary";
|
|
51
51
|
</script>
|
|
52
52
|
|
|
53
53
|
{#if href}
|
|
@@ -15,19 +15,19 @@ describe('Helper', () => {
|
|
|
15
15
|
expect(container.querySelector('p')).toBeInTheDocument();
|
|
16
16
|
});
|
|
17
17
|
|
|
18
|
-
test('default color has
|
|
18
|
+
test('default color has muted-foreground text', () => {
|
|
19
19
|
const { container } = render(Helper);
|
|
20
|
-
expect(container.querySelector('[class*="
|
|
20
|
+
expect(container.querySelector('[class*="text-muted-foreground"]')).toBeInTheDocument();
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
test('red color has
|
|
23
|
+
test('red color has accent-danger text', () => {
|
|
24
24
|
const { container } = render(Helper, { props: { color: 'red' } });
|
|
25
|
-
expect(container.querySelector('[class*="
|
|
25
|
+
expect(container.querySelector('[class*="text-accent-danger"]')).toBeInTheDocument();
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
test('green color has
|
|
28
|
+
test('green color has accent-success text', () => {
|
|
29
29
|
const { container } = render(Helper, { props: { color: 'green' } });
|
|
30
|
-
expect(container.querySelector('[class*="
|
|
30
|
+
expect(container.querySelector('[class*="text-accent-success"]')).toBeInTheDocument();
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
test('applies custom className', () => {
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
}: Props = $props();
|
|
23
23
|
|
|
24
24
|
const colorClasses: Record<string, string> = {
|
|
25
|
-
default: 'text-
|
|
26
|
-
red: 'text-
|
|
27
|
-
green: 'text-
|
|
25
|
+
default: 'text-muted-foreground',
|
|
26
|
+
red: 'text-accent-danger',
|
|
27
|
+
green: 'text-accent-success'
|
|
28
28
|
};
|
|
29
29
|
</script>
|
|
30
30
|
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
<Story name="All Icons">
|
|
46
46
|
<div class="grid grid-cols-4 md:grid-cols-6 lg:grid-cols-8 gap-6 p-4">
|
|
47
47
|
{#each iconNames as iconName}
|
|
48
|
-
<div class="flex flex-col items-center gap-2 p-3 border rounded-lg hover:bg-
|
|
48
|
+
<div class="flex flex-col items-center gap-2 p-3 border rounded-lg hover:bg-bg-secondary">
|
|
49
49
|
<Icon name={iconName} size="24" />
|
|
50
|
-
<span class="text-xs text-
|
|
50
|
+
<span class="text-xs text-muted-foreground text-center">{iconName}</span>
|
|
51
51
|
</div>
|
|
52
52
|
{/each}
|
|
53
53
|
</div>
|
|
@@ -57,23 +57,23 @@
|
|
|
57
57
|
<div class="flex items-end gap-6 p-4">
|
|
58
58
|
<div class="flex flex-col items-center gap-2">
|
|
59
59
|
<Icon name="Home" size="16" />
|
|
60
|
-
<span class="text-xs text-
|
|
60
|
+
<span class="text-xs text-muted-foreground">16px</span>
|
|
61
61
|
</div>
|
|
62
62
|
<div class="flex flex-col items-center gap-2">
|
|
63
63
|
<Icon name="Home" size="20" />
|
|
64
|
-
<span class="text-xs text-
|
|
64
|
+
<span class="text-xs text-muted-foreground">20px</span>
|
|
65
65
|
</div>
|
|
66
66
|
<div class="flex flex-col items-center gap-2">
|
|
67
67
|
<Icon name="Home" size="24" />
|
|
68
|
-
<span class="text-xs text-
|
|
68
|
+
<span class="text-xs text-muted-foreground">24px</span>
|
|
69
69
|
</div>
|
|
70
70
|
<div class="flex flex-col items-center gap-2">
|
|
71
71
|
<Icon name="Home" size="32" />
|
|
72
|
-
<span class="text-xs text-
|
|
72
|
+
<span class="text-xs text-muted-foreground">32px</span>
|
|
73
73
|
</div>
|
|
74
74
|
<div class="flex flex-col items-center gap-2">
|
|
75
75
|
<Icon name="Home" size="48" />
|
|
76
|
-
<span class="text-xs text-
|
|
76
|
+
<span class="text-xs text-muted-foreground">48px</span>
|
|
77
77
|
</div>
|
|
78
78
|
</div>
|
|
79
79
|
</Story>
|
|
@@ -81,20 +81,20 @@
|
|
|
81
81
|
<Story name="Icon Colors">
|
|
82
82
|
<div class="flex items-center gap-6 p-4">
|
|
83
83
|
<div class="flex flex-col items-center gap-2">
|
|
84
|
-
<Icon name="CheckCircle" size="32" color="
|
|
85
|
-
<span class="text-xs text-
|
|
84
|
+
<Icon name="CheckCircle" size="32" color="hsl(var(--accent-success))" />
|
|
85
|
+
<span class="text-xs text-muted-foreground">Success</span>
|
|
86
86
|
</div>
|
|
87
87
|
<div class="flex flex-col items-center gap-2">
|
|
88
|
-
<Icon name="ErrorCircle" size="32" color="
|
|
89
|
-
<span class="text-xs text-
|
|
88
|
+
<Icon name="ErrorCircle" size="32" color="hsl(var(--accent-danger))" />
|
|
89
|
+
<span class="text-xs text-muted-foreground">Error</span>
|
|
90
90
|
</div>
|
|
91
91
|
<div class="flex flex-col items-center gap-2">
|
|
92
|
-
<Icon name="Info" size="32" color="
|
|
93
|
-
<span class="text-xs text-
|
|
92
|
+
<Icon name="Info" size="32" color="hsl(var(--brand-primary))" />
|
|
93
|
+
<span class="text-xs text-muted-foreground">Info</span>
|
|
94
94
|
</div>
|
|
95
95
|
<div class="flex flex-col items-center gap-2">
|
|
96
|
-
<Icon name="Notification" size="32" color="
|
|
97
|
-
<span class="text-xs text-
|
|
96
|
+
<Icon name="Notification" size="32" color="hsl(var(--accent-warning))" />
|
|
97
|
+
<span class="text-xs text-muted-foreground">Warning</span>
|
|
98
98
|
</div>
|
|
99
99
|
</div>
|
|
100
100
|
</Story>
|