@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
|
@@ -89,13 +89,13 @@
|
|
|
89
89
|
<div class="space-y-4">
|
|
90
90
|
<div class="flex gap-2">
|
|
91
91
|
<button
|
|
92
|
-
class="px-4 py-2 bg-
|
|
92
|
+
class="px-4 py-2 bg-brand-primary text-white rounded hover:bg-brand-primary"
|
|
93
93
|
onclick={simulateLoading}
|
|
94
94
|
>
|
|
95
95
|
Simulate Loading
|
|
96
96
|
</button>
|
|
97
97
|
<button
|
|
98
|
-
class="px-4 py-2 bg-
|
|
98
|
+
class="px-4 py-2 bg-accent-danger text-white rounded hover:bg-accent-danger"
|
|
99
99
|
onclick={simulateError}
|
|
100
100
|
>
|
|
101
101
|
Simulate Error
|
|
@@ -109,9 +109,9 @@
|
|
|
109
109
|
showRetry={true}
|
|
110
110
|
onRetry={simulateLoading}
|
|
111
111
|
>
|
|
112
|
-
<div class="p-8 bg-
|
|
113
|
-
<h3 class="text-xl font-bold text-
|
|
114
|
-
<p class="text-
|
|
112
|
+
<div class="p-8 bg-status-success-bg rounded-lg">
|
|
113
|
+
<h3 class="text-xl font-bold text-status-success-text">Success!</h3>
|
|
114
|
+
<p class="text-accent-success mt-2">Your content has loaded successfully.</p>
|
|
115
115
|
</div>
|
|
116
116
|
</PageLoader>
|
|
117
117
|
</div>
|
|
@@ -83,10 +83,10 @@ describe('SectionHeader Count', () => {
|
|
|
83
83
|
expect(badge).toHaveClass('justify-center');
|
|
84
84
|
});
|
|
85
85
|
|
|
86
|
-
test('count badge has bg-
|
|
86
|
+
test('count badge has bg-muted', () => {
|
|
87
87
|
const { container } = render(SectionHeader, { props: { title: 'Test', count: 10 } });
|
|
88
88
|
const badge = container.querySelector('span');
|
|
89
|
-
expect(badge).toHaveClass('bg-
|
|
89
|
+
expect(badge).toHaveClass('bg-muted');
|
|
90
90
|
});
|
|
91
91
|
|
|
92
92
|
test('count badge has rounded-full', () => {
|
|
@@ -95,10 +95,10 @@ describe('SectionHeader Count', () => {
|
|
|
95
95
|
expect(badge).toHaveClass('rounded-full');
|
|
96
96
|
});
|
|
97
97
|
|
|
98
|
-
test('count badge
|
|
98
|
+
test('count badge uses token-based bg class', () => {
|
|
99
99
|
const { container } = render(SectionHeader, { props: { title: 'Test', count: 10 } });
|
|
100
100
|
const badge = container.querySelector('span');
|
|
101
|
-
expect(badge).toHaveClass('
|
|
101
|
+
expect(badge).toHaveClass('bg-muted');
|
|
102
102
|
});
|
|
103
103
|
|
|
104
104
|
test('count badge has padding', () => {
|
|
@@ -125,16 +125,16 @@ describe('SectionHeader Divider', () => {
|
|
|
125
125
|
expect(container.querySelector('hr')).not.toBeInTheDocument();
|
|
126
126
|
});
|
|
127
127
|
|
|
128
|
-
test('divider has border-
|
|
128
|
+
test('divider has border-border', () => {
|
|
129
129
|
const { container } = render(SectionHeader, { props: { divider: true } });
|
|
130
130
|
const hr = container.querySelector('hr');
|
|
131
|
-
expect(hr).toHaveClass('border-
|
|
131
|
+
expect(hr).toHaveClass('border-border');
|
|
132
132
|
});
|
|
133
133
|
|
|
134
|
-
test('divider
|
|
134
|
+
test('divider uses token-based border class', () => {
|
|
135
135
|
const { container } = render(SectionHeader, { props: { divider: true } });
|
|
136
136
|
const hr = container.querySelector('hr');
|
|
137
|
-
expect(hr).toHaveClass('
|
|
137
|
+
expect(hr).toHaveClass('border-border');
|
|
138
138
|
});
|
|
139
139
|
|
|
140
140
|
test('divider has mb-4 margin', () => {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
<div class={className}>
|
|
25
25
|
{#if divider}
|
|
26
|
-
<hr class="border-
|
|
26
|
+
<hr class="border-border mb-4" />
|
|
27
27
|
{/if}
|
|
28
28
|
|
|
29
29
|
<div class="flex items-center justify-between gap-4">
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<h2 class={typography.h3}>{title}</h2>
|
|
33
33
|
{/if}
|
|
34
34
|
{#if count !== null}
|
|
35
|
-
<span class={`inline-flex items-center justify-center px-2 py-0.5 ${typography.xsMuted} bg-
|
|
35
|
+
<span class={`inline-flex items-center justify-center px-2 py-0.5 ${typography.xsMuted} bg-muted rounded-full`}>
|
|
36
36
|
{count}
|
|
37
37
|
</span>
|
|
38
38
|
{/if}
|
package/dist/presets/buttons.js
CHANGED
|
@@ -103,13 +103,13 @@ describe('Icon Button Presets', () => {
|
|
|
103
103
|
});
|
|
104
104
|
|
|
105
105
|
it('has red color classes', () => {
|
|
106
|
-
expect(ICON_BUTTON_PRESETS.destructive.className).toContain('text-
|
|
107
|
-
expect(ICON_BUTTON_PRESETS.destructive.className).toContain('hover:bg-
|
|
106
|
+
expect(ICON_BUTTON_PRESETS.destructive.className).toContain('text-accent-danger');
|
|
107
|
+
expect(ICON_BUTTON_PRESETS.destructive.className).toContain('hover:bg-status-error-bg');
|
|
108
108
|
});
|
|
109
109
|
|
|
110
110
|
it('has dark mode red classes', () => {
|
|
111
|
-
expect(ICON_BUTTON_PRESETS.destructive.className).toContain('
|
|
112
|
-
expect(ICON_BUTTON_PRESETS.destructive.className).toContain('
|
|
111
|
+
expect(ICON_BUTTON_PRESETS.destructive.className).toContain('');
|
|
112
|
+
expect(ICON_BUTTON_PRESETS.destructive.className).toContain('');
|
|
113
113
|
});
|
|
114
114
|
});
|
|
115
115
|
});
|
|
@@ -71,19 +71,19 @@ describe('Accordion Component', () => {
|
|
|
71
71
|
const { container } = render(Accordion);
|
|
72
72
|
const accordion = container.querySelector('[data-accordion]');
|
|
73
73
|
expect(accordion).toHaveClass('divide-y');
|
|
74
|
-
expect(accordion).toHaveClass('divide-
|
|
74
|
+
expect(accordion).toHaveClass('divide-border');
|
|
75
75
|
});
|
|
76
76
|
|
|
77
|
-
test('has
|
|
77
|
+
test('has token-based divide classes', () => {
|
|
78
78
|
const { container } = render(Accordion);
|
|
79
79
|
const accordion = container.querySelector('[data-accordion]');
|
|
80
|
-
expect(accordion).toHaveClass('
|
|
80
|
+
expect(accordion).toHaveClass('divide-border');
|
|
81
81
|
});
|
|
82
82
|
|
|
83
|
-
test('has
|
|
83
|
+
test('has border class when not flush', () => {
|
|
84
84
|
const { container } = render(Accordion);
|
|
85
85
|
const accordion = container.querySelector('[data-accordion]');
|
|
86
|
-
expect(accordion).toHaveClass('
|
|
86
|
+
expect(accordion).toHaveClass('border');
|
|
87
87
|
});
|
|
88
88
|
|
|
89
89
|
test('renders children snippet content', () => {
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
<div class="max-w-xl">
|
|
23
23
|
<Accordion>
|
|
24
24
|
<AccordionItem title="What is Micdrop?">
|
|
25
|
-
<p class="text-
|
|
25
|
+
<p class="text-text-secondary">Micdrop is a platform for comedians and venues to manage shows, ticket sales, and performer booking.</p>
|
|
26
26
|
</AccordionItem>
|
|
27
27
|
<AccordionItem title="How do I get started?">
|
|
28
|
-
<p class="text-
|
|
28
|
+
<p class="text-text-secondary">Sign up for an account, set up your venue or performer profile, and start creating shows.</p>
|
|
29
29
|
</AccordionItem>
|
|
30
30
|
<AccordionItem title="What are the fees?">
|
|
31
|
-
<p class="text-
|
|
31
|
+
<p class="text-text-secondary">Micdrop charges a small percentage per ticket sold. There are no monthly fees.</p>
|
|
32
32
|
</AccordionItem>
|
|
33
33
|
</Accordion>
|
|
34
34
|
</div>
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
<div class="max-w-xl">
|
|
41
41
|
<Accordion>
|
|
42
42
|
<AccordionItem title="Expanded by default" open={true}>
|
|
43
|
-
<p class="text-
|
|
43
|
+
<p class="text-text-secondary">This item starts expanded.</p>
|
|
44
44
|
</AccordionItem>
|
|
45
45
|
<AccordionItem title="Collapsed item">
|
|
46
|
-
<p class="text-
|
|
46
|
+
<p class="text-text-secondary">Click to expand this item.</p>
|
|
47
47
|
</AccordionItem>
|
|
48
48
|
</Accordion>
|
|
49
49
|
</div>
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
<div class="max-w-xl">
|
|
56
56
|
<Accordion>
|
|
57
57
|
<AccordionItem title="Features">
|
|
58
|
-
<ul class="list-disc list-inside text-
|
|
58
|
+
<ul class="list-disc list-inside text-text-secondary space-y-2">
|
|
59
59
|
<li>Online ticket sales</li>
|
|
60
60
|
<li>Performer management</li>
|
|
61
61
|
<li>Show scheduling</li>
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
</AccordionItem>
|
|
65
65
|
<AccordionItem title="Pricing">
|
|
66
66
|
<div class="space-y-2">
|
|
67
|
-
<p class="text-
|
|
68
|
-
<p class="text-
|
|
69
|
-
<p class="text-
|
|
67
|
+
<p class="text-text-secondary"><strong>Basic:</strong> Free</p>
|
|
68
|
+
<p class="text-text-secondary"><strong>Pro:</strong> $29/month</p>
|
|
69
|
+
<p class="text-text-secondary"><strong>Enterprise:</strong> Contact us</p>
|
|
70
70
|
</div>
|
|
71
71
|
</AccordionItem>
|
|
72
72
|
</Accordion>
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
// Flowbite-native classes
|
|
54
54
|
// Note: overflow-hidden was removed to allow dropdowns/menus inside accordion items to render outside the container
|
|
55
55
|
let containerClasses = $derived(flush
|
|
56
|
-
? "divide-y divide-
|
|
57
|
-
: "border border-
|
|
56
|
+
? "divide-y divide-border"
|
|
57
|
+
: "border border-border rounded-lg divide-y divide-border");
|
|
58
58
|
</script>
|
|
59
59
|
|
|
60
60
|
<div class="{containerClasses} {className}" data-accordion={multiple ? "open" : "collapse"} {...restProps}>
|
|
@@ -290,25 +290,19 @@ describe('AccordionItem - Styling (Flowbite Native)', () => {
|
|
|
290
290
|
test('button has gray background', () => {
|
|
291
291
|
const { container } = render(AccordionItemWrapper);
|
|
292
292
|
const button = container.querySelector('button');
|
|
293
|
-
expect(button).toHaveClass('bg-
|
|
293
|
+
expect(button).toHaveClass('bg-muted');
|
|
294
294
|
});
|
|
295
295
|
|
|
296
|
-
test('button has
|
|
296
|
+
test('button has token-based background', () => {
|
|
297
297
|
const { container } = render(AccordionItemWrapper);
|
|
298
298
|
const button = container.querySelector('button');
|
|
299
|
-
expect(button).toHaveClass('
|
|
299
|
+
expect(button).toHaveClass('bg-muted');
|
|
300
300
|
});
|
|
301
301
|
|
|
302
302
|
test('button has hover state', () => {
|
|
303
303
|
const { container } = render(AccordionItemWrapper);
|
|
304
304
|
const button = container.querySelector('button');
|
|
305
|
-
expect(button).toHaveClass('hover:bg-
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
test('button has dark mode hover state', () => {
|
|
309
|
-
const { container } = render(AccordionItemWrapper);
|
|
310
|
-
const button = container.querySelector('button');
|
|
311
|
-
expect(button).toHaveClass('dark:hover:bg-gray-700');
|
|
305
|
+
expect(button).toHaveClass('hover:bg-bg-tertiary');
|
|
312
306
|
});
|
|
313
307
|
|
|
314
308
|
test('content has p-5 padding', async () => {
|
|
@@ -340,7 +334,7 @@ describe('AccordionItem - Styling (Flowbite Native)', () => {
|
|
|
340
334
|
const contentWrapper = container.querySelector('p').parentElement;
|
|
341
335
|
expect(contentWrapper).toHaveClass('border');
|
|
342
336
|
expect(contentWrapper).toHaveClass('border-t-0');
|
|
343
|
-
expect(contentWrapper).toHaveClass('border-
|
|
337
|
+
expect(contentWrapper).toHaveClass('border-border');
|
|
344
338
|
});
|
|
345
339
|
});
|
|
346
340
|
|
|
@@ -360,7 +354,7 @@ describe('AccordionItem - Styling (Flowbite Native)', () => {
|
|
|
360
354
|
});
|
|
361
355
|
});
|
|
362
356
|
|
|
363
|
-
test('content has
|
|
357
|
+
test('content has token-based border', async () => {
|
|
364
358
|
const user = userEvent.setup();
|
|
365
359
|
const { container } = render(AccordionItemWrapper, {
|
|
366
360
|
props: { flush: false }
|
|
@@ -372,7 +366,7 @@ describe('AccordionItem - Styling (Flowbite Native)', () => {
|
|
|
372
366
|
|
|
373
367
|
await waitFor(() => {
|
|
374
368
|
const contentWrapper = container.querySelector('p').parentElement;
|
|
375
|
-
expect(contentWrapper).toHaveClass('
|
|
369
|
+
expect(contentWrapper).toHaveClass('border-border');
|
|
376
370
|
});
|
|
377
371
|
});
|
|
378
372
|
});
|
|
@@ -381,10 +375,9 @@ describe('AccordionItem - Typography Integration', () => {
|
|
|
381
375
|
test('header uses typography.body class', () => {
|
|
382
376
|
const { container } = render(AccordionItemWrapper);
|
|
383
377
|
const headerSpan = container.querySelector('button span');
|
|
384
|
-
// typography.body = "text-base text-
|
|
378
|
+
// typography.body = "text-base text-text-primary leading-relaxed"
|
|
385
379
|
expect(headerSpan).toHaveClass('text-base');
|
|
386
|
-
expect(headerSpan).toHaveClass('text-
|
|
387
|
-
expect(headerSpan).toHaveClass('dark:text-white');
|
|
380
|
+
expect(headerSpan).toHaveClass('text-text-primary');
|
|
388
381
|
expect(headerSpan).toHaveClass('leading-relaxed');
|
|
389
382
|
});
|
|
390
383
|
|
|
@@ -398,10 +391,9 @@ describe('AccordionItem - Typography Integration', () => {
|
|
|
398
391
|
|
|
399
392
|
await waitFor(() => {
|
|
400
393
|
const content = container.querySelector('p');
|
|
401
|
-
// typography.bodyMuted = "text-base text-
|
|
394
|
+
// typography.bodyMuted = "text-base text-muted-foreground leading-relaxed"
|
|
402
395
|
expect(content).toHaveClass('text-base');
|
|
403
|
-
expect(content).toHaveClass('text-
|
|
404
|
-
expect(content).toHaveClass('dark:text-gray-400');
|
|
396
|
+
expect(content).toHaveClass('text-muted-foreground');
|
|
405
397
|
expect(content).toHaveClass('leading-relaxed');
|
|
406
398
|
});
|
|
407
399
|
});
|
|
@@ -409,10 +401,9 @@ describe('AccordionItem - Typography Integration', () => {
|
|
|
409
401
|
test('button header text uses typography.smMuted', () => {
|
|
410
402
|
const { container } = render(AccordionItemWrapper);
|
|
411
403
|
const button = container.querySelector('button');
|
|
412
|
-
// typography.smMuted = "text-sm text-
|
|
404
|
+
// typography.smMuted = "text-sm text-muted-foreground"
|
|
413
405
|
expect(button).toHaveClass('text-sm');
|
|
414
|
-
expect(button).toHaveClass('text-
|
|
415
|
-
expect(button).toHaveClass('dark:text-gray-400');
|
|
406
|
+
expect(button).toHaveClass('text-muted-foreground');
|
|
416
407
|
});
|
|
417
408
|
});
|
|
418
409
|
|
|
@@ -420,13 +411,13 @@ describe('AccordionItem - Border Props', () => {
|
|
|
420
411
|
test('applies borderOpenClass when open', async () => {
|
|
421
412
|
const user = userEvent.setup();
|
|
422
413
|
const { container } = render(AccordionItemWrapper, {
|
|
423
|
-
props: { borderOpenClass: 'border-
|
|
414
|
+
props: { borderOpenClass: 'border-interactive-border' }
|
|
424
415
|
});
|
|
425
416
|
const button = container.querySelector('button');
|
|
426
417
|
|
|
427
418
|
// Initially closed - no borderOpenClass
|
|
428
419
|
const wrapper = container.querySelector('div');
|
|
429
|
-
expect(wrapper).not.toHaveClass('border-
|
|
420
|
+
expect(wrapper).not.toHaveClass('border-interactive-border');
|
|
430
421
|
|
|
431
422
|
// Click to open
|
|
432
423
|
await user.click(button);
|
|
@@ -434,14 +425,14 @@ describe('AccordionItem - Border Props', () => {
|
|
|
434
425
|
|
|
435
426
|
await waitFor(() => {
|
|
436
427
|
const wrapper = container.querySelector('div');
|
|
437
|
-
expect(wrapper).toHaveClass('border-
|
|
428
|
+
expect(wrapper).toHaveClass('border-interactive-border');
|
|
438
429
|
});
|
|
439
430
|
});
|
|
440
431
|
|
|
441
432
|
test('removes borderOpenClass when closed', async () => {
|
|
442
433
|
const user = userEvent.setup();
|
|
443
434
|
const { container } = render(AccordionItemWrapper, {
|
|
444
|
-
props: { open: true, borderOpenClass: 'border-
|
|
435
|
+
props: { open: true, borderOpenClass: 'border-status-error-border' }
|
|
445
436
|
});
|
|
446
437
|
|
|
447
438
|
await tick();
|
|
@@ -450,7 +441,7 @@ describe('AccordionItem - Border Props', () => {
|
|
|
450
441
|
// Initially open - has borderOpenClass
|
|
451
442
|
await waitFor(() => {
|
|
452
443
|
const wrapper = container.querySelector('div');
|
|
453
|
-
expect(wrapper).toHaveClass('border-
|
|
444
|
+
expect(wrapper).toHaveClass('border-status-error-border');
|
|
454
445
|
});
|
|
455
446
|
|
|
456
447
|
// Click to close
|
|
@@ -459,7 +450,7 @@ describe('AccordionItem - Border Props', () => {
|
|
|
459
450
|
|
|
460
451
|
await waitFor(() => {
|
|
461
452
|
const wrapper = container.querySelector('div');
|
|
462
|
-
expect(wrapper).not.toHaveClass('border-
|
|
453
|
+
expect(wrapper).not.toHaveClass('border-status-error-border');
|
|
463
454
|
});
|
|
464
455
|
});
|
|
465
456
|
|
|
@@ -67,11 +67,11 @@
|
|
|
67
67
|
let headerClasses = $derived([
|
|
68
68
|
"flex items-center justify-between w-full p-5 font-medium text-left",
|
|
69
69
|
typography.smMuted,
|
|
70
|
-
"bg-
|
|
71
|
-
"hover:bg-
|
|
70
|
+
"bg-muted",
|
|
71
|
+
"hover:bg-bg-tertiary",
|
|
72
72
|
"focus:outline-hidden",
|
|
73
73
|
"gap-3",
|
|
74
|
-
isOpen ? "bg-
|
|
74
|
+
isOpen ? "bg-muted" : "",
|
|
75
75
|
].join(" "));
|
|
76
76
|
</script>
|
|
77
77
|
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
|
|
94
94
|
{#if isOpen}
|
|
95
95
|
<div transition:safeSlide={{ duration: 200 }}>
|
|
96
|
-
<div class="p-5 {flush ? '' : 'border border-t-0 border-
|
|
96
|
+
<div class="p-5 {flush ? '' : 'border border-t-0 border-border'}">
|
|
97
97
|
<p class={typography.bodyMuted}>
|
|
98
98
|
{#if children}{@render children()}{/if}
|
|
99
99
|
</p>
|
|
@@ -63,15 +63,15 @@ describe('Avatar with Initials', () => {
|
|
|
63
63
|
test('initials container has gray colors', () => {
|
|
64
64
|
const { container } = render(Avatar, { props: { initials: 'EF' } });
|
|
65
65
|
const div = container.querySelector('div');
|
|
66
|
-
expect(div).toHaveClass('text-
|
|
67
|
-
expect(div).toHaveClass('bg-
|
|
66
|
+
expect(div).toHaveClass('text-text-secondary');
|
|
67
|
+
expect(div).toHaveClass('bg-bg-tertiary');
|
|
68
68
|
});
|
|
69
69
|
|
|
70
|
-
test('initials container
|
|
70
|
+
test('initials container uses token-based colors', () => {
|
|
71
71
|
const { container } = render(Avatar, { props: { initials: 'GH' } });
|
|
72
72
|
const div = container.querySelector('div');
|
|
73
|
-
expect(div).toHaveClass('
|
|
74
|
-
expect(div).toHaveClass('
|
|
73
|
+
expect(div).toHaveClass('text-text-secondary');
|
|
74
|
+
expect(div).toHaveClass('bg-bg-tertiary');
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
77
|
|
|
@@ -81,16 +81,16 @@ describe('Avatar Default Placeholder', () => {
|
|
|
81
81
|
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
-
test('placeholder container has bg-
|
|
84
|
+
test('placeholder container has bg-bg-tertiary', () => {
|
|
85
85
|
const { container } = render(Avatar);
|
|
86
86
|
const div = container.querySelector('div');
|
|
87
|
-
expect(div).toHaveClass('bg-
|
|
87
|
+
expect(div).toHaveClass('bg-bg-tertiary');
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
test('placeholder container
|
|
90
|
+
test('placeholder container uses token-based bg', () => {
|
|
91
91
|
const { container } = render(Avatar);
|
|
92
92
|
const div = container.querySelector('div');
|
|
93
|
-
expect(div).toHaveClass('
|
|
93
|
+
expect(div).toHaveClass('bg-bg-tertiary');
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
test('svg has correct sizing classes', () => {
|
|
@@ -100,10 +100,10 @@ describe('Avatar Default Placeholder', () => {
|
|
|
100
100
|
expect(svg).toHaveClass('h-1/2');
|
|
101
101
|
});
|
|
102
102
|
|
|
103
|
-
test('svg has text-
|
|
103
|
+
test('svg has text-muted-foreground color', () => {
|
|
104
104
|
const { container } = render(Avatar);
|
|
105
105
|
const svg = container.querySelector('svg');
|
|
106
|
-
expect(svg).toHaveClass('text-
|
|
106
|
+
expect(svg).toHaveClass('text-muted-foreground');
|
|
107
107
|
});
|
|
108
108
|
});
|
|
109
109
|
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
{/snippet}
|
|
38
38
|
</Story>
|
|
39
39
|
|
|
40
|
+
<!-- Note: fill colors in data URIs cannot use CSS custom properties; hardcoded hex values are required here -->
|
|
40
41
|
<Story name="With Image" args={{ src: 'data:image/svg+xml,' + encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150"><rect width="150" height="150" fill="#6366f1"/><circle cx="75" cy="55" r="30" fill="#fff"/><ellipse cx="75" cy="130" rx="45" ry="35" fill="#fff"/></svg>'), alt: 'User avatar' }}>
|
|
41
42
|
{#snippet template(args)}
|
|
42
43
|
<Avatar {...args} />
|
|
@@ -48,23 +49,23 @@
|
|
|
48
49
|
<div class="flex items-end gap-4">
|
|
49
50
|
<div class="text-center">
|
|
50
51
|
<Avatar size="xs" initials="XS" />
|
|
51
|
-
<p class="text-xs text-
|
|
52
|
+
<p class="text-xs text-muted-foreground mt-1">xs</p>
|
|
52
53
|
</div>
|
|
53
54
|
<div class="text-center">
|
|
54
55
|
<Avatar size="sm" initials="SM" />
|
|
55
|
-
<p class="text-xs text-
|
|
56
|
+
<p class="text-xs text-muted-foreground mt-1">sm</p>
|
|
56
57
|
</div>
|
|
57
58
|
<div class="text-center">
|
|
58
59
|
<Avatar size="md" initials="MD" />
|
|
59
|
-
<p class="text-xs text-
|
|
60
|
+
<p class="text-xs text-muted-foreground mt-1">md</p>
|
|
60
61
|
</div>
|
|
61
62
|
<div class="text-center">
|
|
62
63
|
<Avatar size="lg" initials="LG" />
|
|
63
|
-
<p class="text-xs text-
|
|
64
|
+
<p class="text-xs text-muted-foreground mt-1">lg</p>
|
|
64
65
|
</div>
|
|
65
66
|
<div class="text-center">
|
|
66
67
|
<Avatar size="xl" initials="XL" />
|
|
67
|
-
<p class="text-xs text-
|
|
68
|
+
<p class="text-xs text-muted-foreground mt-1">xl</p>
|
|
68
69
|
</div>
|
|
69
70
|
</div>
|
|
70
71
|
{/snippet}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.stories.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/primitives/Avatar/Avatar.stories.svelte.js"],"names":[],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"Avatar.stories.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/primitives/Avatar/Avatar.stories.svelte.js"],"names":[],"mappings":";;;;;;;;AA6GA;;;;mBAAkH;mBAzG7F,iBAAiB;6CAgGO,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,eAAe,QAAQ,CAAC"}
|
|
@@ -50,16 +50,16 @@
|
|
|
50
50
|
/>
|
|
51
51
|
{:else if initials}
|
|
52
52
|
<div
|
|
53
|
-
class="flex items-center justify-center font-medium text-
|
|
53
|
+
class="flex items-center justify-center font-medium text-text-secondary bg-bg-tertiary {sizeClass} {roundedClass} {className}"
|
|
54
54
|
>
|
|
55
55
|
{initials}
|
|
56
56
|
</div>
|
|
57
57
|
{:else}
|
|
58
58
|
<!-- Default placeholder -->
|
|
59
59
|
<div
|
|
60
|
-
class="flex items-center justify-center bg-
|
|
60
|
+
class="flex items-center justify-center bg-bg-tertiary {sizeClass} {roundedClass} {className}"
|
|
61
61
|
>
|
|
62
|
-
<svg class="w-1/2 h-1/2 text-
|
|
62
|
+
<svg class="w-1/2 h-1/2 text-muted-foreground" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
|
63
63
|
<path fill-rule="evenodd" d="M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z" clip-rule="evenodd"></path>
|
|
64
64
|
</svg>
|
|
65
65
|
</div>
|
|
@@ -35,43 +35,43 @@ describe('Badge Component Tests', () => {
|
|
|
35
35
|
// neutral variant (default)
|
|
36
36
|
const { container: neutralContainer } = render(Badge, { variant: 'neutral' });
|
|
37
37
|
const neutralBadge = neutralContainer.querySelector('div');
|
|
38
|
-
expect(neutralBadge).toHaveClass('bg-
|
|
38
|
+
expect(neutralBadge).toHaveClass('bg-muted');
|
|
39
39
|
|
|
40
40
|
// success variant
|
|
41
41
|
const { container: successContainer } = render(Badge, { variant: 'success' });
|
|
42
42
|
const successBadge = successContainer.querySelector('div');
|
|
43
|
-
expect(successBadge).toHaveClass('bg-
|
|
43
|
+
expect(successBadge).toHaveClass('bg-status-success-bg');
|
|
44
44
|
|
|
45
45
|
// warning variant
|
|
46
46
|
const { container: warningContainer } = render(Badge, { variant: 'warning' });
|
|
47
47
|
const warningBadge = warningContainer.querySelector('div');
|
|
48
|
-
expect(warningBadge).toHaveClass('bg-
|
|
48
|
+
expect(warningBadge).toHaveClass('bg-status-warning-bg');
|
|
49
49
|
|
|
50
50
|
// error variant
|
|
51
51
|
const { container: errorContainer } = render(Badge, { variant: 'error' });
|
|
52
52
|
const errorBadge = errorContainer.querySelector('div');
|
|
53
|
-
expect(errorBadge).toHaveClass('bg-
|
|
53
|
+
expect(errorBadge).toHaveClass('bg-status-error-bg');
|
|
54
54
|
|
|
55
55
|
// info variant
|
|
56
56
|
const { container: infoContainer } = render(Badge, { variant: 'info' });
|
|
57
57
|
const infoBadge = infoContainer.querySelector('div');
|
|
58
|
-
expect(infoBadge).toHaveClass('bg-
|
|
58
|
+
expect(infoBadge).toHaveClass('bg-status-info-bg');
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
test('Handles case-insensitive variants', () => {
|
|
62
62
|
const { container: upperContainer } = render(Badge, { variant: 'SUCCESS' });
|
|
63
63
|
const upperBadge = upperContainer.querySelector('div');
|
|
64
|
-
expect(upperBadge).toHaveClass('bg-
|
|
64
|
+
expect(upperBadge).toHaveClass('bg-status-success-bg');
|
|
65
65
|
|
|
66
66
|
const { container: mixedContainer } = render(Badge, { variant: 'Warning' });
|
|
67
67
|
const mixedBadge = mixedContainer.querySelector('div');
|
|
68
|
-
expect(mixedBadge).toHaveClass('bg-
|
|
68
|
+
expect(mixedBadge).toHaveClass('bg-status-warning-bg');
|
|
69
69
|
});
|
|
70
70
|
|
|
71
71
|
test('Falls back to neutral variant for unknown variants', () => {
|
|
72
72
|
const { container } = render(Badge, { variant: 'unknown' });
|
|
73
73
|
const badge = container.querySelector('div');
|
|
74
|
-
expect(badge).toHaveClass('bg-
|
|
74
|
+
expect(badge).toHaveClass('bg-muted');
|
|
75
75
|
});
|
|
76
76
|
|
|
77
77
|
test('Shows status dot when showDot is true', () => {
|
|
@@ -114,14 +114,14 @@ describe('Badge Component Tests', () => {
|
|
|
114
114
|
});
|
|
115
115
|
|
|
116
116
|
test('Applies custom text color', () => {
|
|
117
|
-
const { container } = render(Badge, { textColor: '
|
|
117
|
+
const { container } = render(Badge, { textColor: 'hsl(var(--accent-danger))' });
|
|
118
118
|
const badge = container.querySelector('div');
|
|
119
119
|
// Browser may convert hex to rgb
|
|
120
120
|
expect(badge.style.color).toBeTruthy();
|
|
121
121
|
});
|
|
122
122
|
|
|
123
123
|
test('Applies custom background color', () => {
|
|
124
|
-
const { container } = render(Badge, { bgColor: '
|
|
124
|
+
const { container } = render(Badge, { bgColor: 'hsl(var(--accent-success))' });
|
|
125
125
|
const badge = container.querySelector('div');
|
|
126
126
|
// Browser may convert hex to rgb
|
|
127
127
|
expect(badge.style.backgroundColor).toBeTruthy();
|
|
@@ -82,7 +82,7 @@ describe('BottomSheet Component', () => {
|
|
|
82
82
|
const { container } = render(BottomSheet, {
|
|
83
83
|
props: { open: true, onclose }
|
|
84
84
|
});
|
|
85
|
-
const sheet = container.querySelector('.bg-
|
|
85
|
+
const sheet = container.querySelector('.bg-card, .dark\\:bg-bg-secondary');
|
|
86
86
|
|
|
87
87
|
await fireEvent.click(sheet);
|
|
88
88
|
expect(closeCalled).toBe(false);
|
|
@@ -115,7 +115,7 @@ describe('BottomSheet Component', () => {
|
|
|
115
115
|
it('has handle bar element', () => {
|
|
116
116
|
const { container } = render(BottomSheet, { props: { open: true } });
|
|
117
117
|
// The handle is the gray bar with rounded corners
|
|
118
|
-
const handle = container.querySelector('.w-10.h-1.bg-
|
|
118
|
+
const handle = container.querySelector('.w-10.h-1.bg-bg-quaternary');
|
|
119
119
|
expect(handle).toBeTruthy();
|
|
120
120
|
});
|
|
121
121
|
|
|
@@ -150,7 +150,7 @@ describe('BottomSheet Component', () => {
|
|
|
150
150
|
it('does not render actions area when no actions snippet is provided', () => {
|
|
151
151
|
const { container } = render(BottomSheet, { props: { open: true } });
|
|
152
152
|
// The actions footer area should not exist if no actions snippet
|
|
153
|
-
const actionsArea = container.querySelector('.border-t.border-
|
|
153
|
+
const actionsArea = container.querySelector('.border-t.border-border');
|
|
154
154
|
expect(actionsArea).toBeFalsy();
|
|
155
155
|
});
|
|
156
156
|
|
|
@@ -182,7 +182,7 @@ describe('BottomSheet Component', () => {
|
|
|
182
182
|
props: { open: true, onclose }
|
|
183
183
|
});
|
|
184
184
|
// Click the inner sheet panel (not the backdrop itself)
|
|
185
|
-
const sheetPanel = container.querySelector('.bg-
|
|
185
|
+
const sheetPanel = container.querySelector('.bg-card');
|
|
186
186
|
await fireEvent.click(sheetPanel);
|
|
187
187
|
expect(closeCalled).toBe(false);
|
|
188
188
|
});
|
|
@@ -217,7 +217,7 @@ describe('BottomSheet Component', () => {
|
|
|
217
217
|
props: { open: true, onclose }
|
|
218
218
|
});
|
|
219
219
|
// Click the handle bar (a child of the backdrop)
|
|
220
|
-
const handleBar = container.querySelector('.w-10.h-1.bg-
|
|
220
|
+
const handleBar = container.querySelector('.w-10.h-1.bg-bg-quaternary');
|
|
221
221
|
await fireEvent.click(handleBar);
|
|
222
222
|
expect(closeCalled).toBe(false);
|
|
223
223
|
});
|