@getmicdrop/svelte-components 5.3.2 → 5.3.6

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.
Files changed (93) hide show
  1. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +10 -10
  2. package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts +6 -6
  3. package/dist/calendar/OrderSummary/OrderSummary.svelte +2 -2
  4. package/dist/calendar/OrderSummary/OrderSummary.svelte.d.ts +2 -2
  5. package/dist/calendar/PublicCard/PublicCard.svelte +2 -2
  6. package/dist/calendar/PublicCard/PublicCard.svelte.d.ts +2 -2
  7. package/dist/calendar/ShowCard/ShowCard.svelte +2 -2
  8. package/dist/calendar/ShowCard/ShowCard.svelte.d.ts +2 -2
  9. package/dist/patterns/navigation/Header.svelte +38 -27
  10. package/dist/patterns/page/PageLayout.svelte +1 -1
  11. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -0
  12. package/dist/primitives/Accordion/Accordion.stories.svelte.d.ts +28 -0
  13. package/dist/primitives/Accordion/Accordion.stories.svelte.d.ts.map +1 -0
  14. package/dist/primitives/Alert/Alert.stories.svelte +88 -0
  15. package/dist/primitives/Alert/Alert.stories.svelte.d.ts +28 -0
  16. package/dist/primitives/Alert/Alert.stories.svelte.d.ts.map +1 -0
  17. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -0
  18. package/dist/primitives/Avatar/Avatar.stories.svelte.d.ts +28 -0
  19. package/dist/primitives/Avatar/Avatar.stories.svelte.d.ts.map +1 -0
  20. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +1 -1
  21. package/dist/primitives/Button/Button.svelte +87 -22
  22. package/dist/primitives/Button/Button.svelte.d.ts +4 -0
  23. package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
  24. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -0
  25. package/dist/primitives/Checkbox/Checkbox.stories.svelte.d.ts +28 -0
  26. package/dist/primitives/Checkbox/Checkbox.stories.svelte.d.ts.map +1 -0
  27. package/dist/primitives/Drawer/Drawer.stories.svelte +100 -0
  28. package/dist/primitives/Drawer/Drawer.stories.svelte.d.ts +28 -0
  29. package/dist/primitives/Drawer/Drawer.stories.svelte.d.ts.map +1 -0
  30. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -0
  31. package/dist/primitives/Dropdown/Dropdown.stories.svelte.d.ts +28 -0
  32. package/dist/primitives/Dropdown/Dropdown.stories.svelte.d.ts.map +1 -0
  33. package/dist/primitives/Dropdown/Dropdown.svelte +13 -15
  34. package/dist/primitives/Dropdown/Dropdown.svelte.d.ts.map +1 -1
  35. package/dist/primitives/Icons/Icon.svelte +2 -1
  36. package/dist/primitives/Icons/Icon.svelte.d.ts.map +1 -1
  37. package/dist/primitives/Input/Select.stories.svelte +112 -0
  38. package/dist/primitives/Input/Select.stories.svelte.d.ts +28 -0
  39. package/dist/primitives/Input/Select.stories.svelte.d.ts.map +1 -0
  40. package/dist/primitives/Input/Textarea.stories.svelte +137 -0
  41. package/dist/primitives/Input/Textarea.stories.svelte.d.ts +28 -0
  42. package/dist/primitives/Input/Textarea.stories.svelte.d.ts.map +1 -0
  43. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -0
  44. package/dist/primitives/Pagination/Pagination.stories.svelte.d.ts +28 -0
  45. package/dist/primitives/Pagination/Pagination.stories.svelte.d.ts.map +1 -0
  46. package/dist/primitives/Pagination/Pagination.svelte +3 -3
  47. package/dist/primitives/Pagination/Pagination.svelte.d.ts +1 -1
  48. package/dist/primitives/Radio/Radio.stories.svelte +80 -0
  49. package/dist/primitives/Radio/Radio.stories.svelte.d.ts +28 -0
  50. package/dist/primitives/Radio/Radio.stories.svelte.d.ts.map +1 -0
  51. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -0
  52. package/dist/primitives/Skeleton/Skeleton.stories.svelte.d.ts +28 -0
  53. package/dist/primitives/Skeleton/Skeleton.stories.svelte.d.ts.map +1 -0
  54. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -0
  55. package/dist/primitives/Tabs/Tabs.stories.svelte.d.ts +28 -0
  56. package/dist/primitives/Tabs/Tabs.stories.svelte.d.ts.map +1 -0
  57. package/dist/primitives/Tabs/Tabs.svelte +1 -1
  58. package/dist/primitives/Toggle.svelte +4 -4
  59. package/dist/primitives/ValidationError.spec.js +25 -1
  60. package/dist/primitives/ValidationError.stories.svelte +24 -0
  61. package/dist/primitives/ValidationError.stories.svelte.d.ts.map +1 -1
  62. package/dist/primitives/ValidationError.svelte +8 -4
  63. package/dist/primitives/ValidationError.svelte.d.ts +2 -0
  64. package/dist/primitives/ValidationError.svelte.d.ts.map +1 -1
  65. package/dist/recipes/CropImage/CropImage.svelte +3 -3
  66. package/dist/recipes/SuperLogin/SuperLogin.svelte +34 -23
  67. package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
  68. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +2 -1
  69. package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -1
  70. package/dist/recipes/inputs/MultiSelect.svelte +2 -2
  71. package/dist/recipes/modals/InputModal.svelte +2 -1
  72. package/dist/recipes/modals/InputModal.svelte.d.ts.map +1 -1
  73. package/dist/stories/ComponentConsolidation.stories.svelte +276 -188
  74. package/dist/stories/ComponentConsolidation.stories.svelte.d.ts.map +1 -1
  75. package/dist/stories/PatternsGallery.stories.svelte +19 -0
  76. package/dist/stories/PatternsGallery.stories.svelte.d.ts +28 -0
  77. package/dist/stories/PatternsGallery.stories.svelte.d.ts.map +1 -0
  78. package/dist/stories/PatternsGallery.svelte +388 -0
  79. package/dist/stories/PatternsGallery.svelte.d.ts +4 -0
  80. package/dist/stories/PatternsGallery.svelte.d.ts.map +1 -0
  81. package/dist/stories/PrimitivesGallery.stories.svelte +19 -0
  82. package/dist/stories/PrimitivesGallery.stories.svelte.d.ts +28 -0
  83. package/dist/stories/PrimitivesGallery.stories.svelte.d.ts.map +1 -0
  84. package/dist/stories/PrimitivesGallery.svelte +752 -0
  85. package/dist/stories/PrimitivesGallery.svelte.d.ts +4 -0
  86. package/dist/stories/PrimitivesGallery.svelte.d.ts.map +1 -0
  87. package/dist/stories/RecipesGallery.stories.svelte +19 -0
  88. package/dist/stories/RecipesGallery.stories.svelte.d.ts +28 -0
  89. package/dist/stories/RecipesGallery.stories.svelte.d.ts.map +1 -0
  90. package/dist/stories/RecipesGallery.svelte +441 -0
  91. package/dist/stories/RecipesGallery.svelte.d.ts +4 -0
  92. package/dist/stories/RecipesGallery.svelte.d.ts.map +1 -0
  93. package/package.json +3 -2
@@ -13,9 +13,9 @@
13
13
  readOnly = false,
14
14
  showPartialPreview = true,
15
15
  disablePastNavigation = false,
16
- ondateSelect,
17
- ondayClick,
18
- onmonthChange,
16
+ onDateSelect,
17
+ onDayClick,
18
+ onMonthChange,
19
19
  } = $props();
20
20
 
21
21
  let currentDate = new Date();
@@ -193,15 +193,15 @@
193
193
 
194
194
  if (isSelected) {
195
195
  triggerHaptic('medium');
196
- ondateSelect?.({ date: day.dateStr, selected: false });
196
+ onDateSelect?.({ date: day.dateStr, selected: false });
197
197
  } else {
198
198
  triggerHaptic('light');
199
- ondateSelect?.({ date: day.dateStr, selected: true });
199
+ onDateSelect?.({ date: day.dateStr, selected: true });
200
200
  }
201
201
  } else if (variant === 'display' || variant === 'public') {
202
202
  if (day.hasEvents) {
203
203
  triggerHaptic('light');
204
- ondayClick?.({ date: day.dateStr, events: day.events });
204
+ onDayClick?.({ date: day.dateStr, events: day.events });
205
205
  }
206
206
  }
207
207
  }
@@ -218,15 +218,15 @@
218
218
 
219
219
  if (isSelected) {
220
220
  triggerHaptic('medium');
221
- ondateSelect?.({ date: day.dateStr, selected: false });
221
+ onDateSelect?.({ date: day.dateStr, selected: false });
222
222
  } else {
223
223
  triggerHaptic('light');
224
- ondateSelect?.({ date: day.dateStr, selected: true });
224
+ onDateSelect?.({ date: day.dateStr, selected: true });
225
225
  }
226
226
  } else if (variant === 'display' || variant === 'public') {
227
227
  if (day.hasEvents) {
228
228
  triggerHaptic('light');
229
- ondayClick?.({ date: day.dateStr, events: day.events });
229
+ onDayClick?.({ date: day.dateStr, events: day.events });
230
230
  }
231
231
  }
232
232
  }
@@ -279,7 +279,7 @@
279
279
  }
280
280
  }
281
281
  triggerHaptic('medium');
282
- onmonthChange?.({ year: currentYear, month: currentMonth });
282
+ onMonthChange?.({ year: currentYear, month: currentMonth });
283
283
  return;
284
284
  }
285
285
 
@@ -14,9 +14,9 @@ declare const MiniMonthCalendar: import("svelte").Component<{
14
14
  readOnly?: boolean;
15
15
  showPartialPreview?: boolean;
16
16
  disablePastNavigation?: boolean;
17
- ondateSelect: any;
18
- ondayClick: any;
19
- onmonthChange: any;
17
+ onDateSelect: any;
18
+ onDayClick: any;
19
+ onMonthChange: any;
20
20
  }, {}, "selectedDates">;
21
21
  type $$ComponentProps = {
22
22
  variant?: string;
@@ -29,8 +29,8 @@ type $$ComponentProps = {
29
29
  readOnly?: boolean;
30
30
  showPartialPreview?: boolean;
31
31
  disablePastNavigation?: boolean;
32
- ondateSelect: any;
33
- ondayClick: any;
34
- onmonthChange: any;
32
+ onDateSelect: any;
33
+ onDayClick: any;
34
+ onMonthChange: any;
35
35
  };
36
36
  //# sourceMappingURL=MiniMonthCalendar.svelte.d.ts.map
@@ -23,7 +23,7 @@
23
23
  maxServiceFeeCents: 0,
24
24
  taxPercentage: 0,
25
25
  },
26
- onpriceUpdate,
26
+ onPriceUpdate,
27
27
  } = $props();
28
28
 
29
29
  let showOrderSummaryOnMobile = $state(false);
@@ -101,7 +101,7 @@
101
101
  let total = $derived(Math.max(0, subtotal + fees + taxes - (promoApplied && !currentPromoRule?.provideDiscount ? promoDiscount : 0)));
102
102
 
103
103
  $effect(() => {
104
- onpriceUpdate?.({ subtotal, fees, taxes, total, promoSavings });
104
+ onPriceUpdate?.({ subtotal, fees, taxes, total, promoSavings });
105
105
  });
106
106
  </script>
107
107
 
@@ -16,7 +16,7 @@ declare const OrderSummary: import("svelte").Component<{
16
16
  executePurchase?: any;
17
17
  elements?: any;
18
18
  venueServiceCharge?: Record<string, any>;
19
- onpriceUpdate: any;
19
+ onPriceUpdate: any;
20
20
  }, {}, "">;
21
21
  type $$ComponentProps = {
22
22
  loading?: boolean;
@@ -31,6 +31,6 @@ type $$ComponentProps = {
31
31
  executePurchase?: any;
32
32
  elements?: any;
33
33
  venueServiceCharge?: Record<string, any>;
34
- onpriceUpdate: any;
34
+ onPriceUpdate: any;
35
35
  };
36
36
  //# sourceMappingURL=OrderSummary.svelte.d.ts.map
@@ -3,7 +3,7 @@
3
3
  events = [],
4
4
  view = "row",
5
5
  placeholderImage = null,
6
- oneventClick,
6
+ onEventClick,
7
7
  } = $props();
8
8
 
9
9
  let isSmallScreen = $state(false);
@@ -33,7 +33,7 @@
33
33
  });
34
34
 
35
35
  function handleEventClick(event) {
36
- oneventClick?.(event);
36
+ onEventClick?.(event);
37
37
  }
38
38
 
39
39
  function handleKeydown(e, event) {
@@ -7,12 +7,12 @@ declare const PublicCard: import("svelte").Component<{
7
7
  events?: any[];
8
8
  view?: string;
9
9
  placeholderImage?: any;
10
- oneventClick: any;
10
+ onEventClick: any;
11
11
  }, {}, "">;
12
12
  type $$ComponentProps = {
13
13
  events?: any[];
14
14
  view?: string;
15
15
  placeholderImage?: any;
16
- oneventClick: any;
16
+ onEventClick: any;
17
17
  };
18
18
  //# sourceMappingURL=PublicCard.svelte.d.ts.map
@@ -31,7 +31,7 @@
31
31
  }
32
32
  return timeStr;
33
33
  },
34
- onshowtimeSelect,
34
+ onShowtimeSelect,
35
35
  } = $props();
36
36
 
37
37
  let selectedDate = $state(null);
@@ -39,7 +39,7 @@
39
39
 
40
40
  function handleSelect(e) {
41
41
  selectedDate = e.date;
42
- onshowtimeSelect?.({ date: e.date, ...e });
42
+ onShowtimeSelect?.({ date: e.date, ...e });
43
43
  }
44
44
 
45
45
  async function handleShare() {
@@ -9,7 +9,7 @@ declare const ShowCard: import("svelte").Component<{
9
9
  showTitle?: boolean;
10
10
  formatDateTime?: Function;
11
11
  formatTimeline?: Function;
12
- onshowtimeSelect: any;
12
+ onShowtimeSelect: any;
13
13
  }, {}, "">;
14
14
  type $$ComponentProps = {
15
15
  event?: Record<string, any>;
@@ -17,6 +17,6 @@ type $$ComponentProps = {
17
17
  showTitle?: boolean;
18
18
  formatDateTime?: Function;
19
19
  formatTimeline?: Function;
20
- onshowtimeSelect: any;
20
+ onShowtimeSelect: any;
21
21
  };
22
22
  //# sourceMappingURL=ShowCard.svelte.d.ts.map
@@ -73,12 +73,13 @@
73
73
  <div class="flex items-center gap-3">
74
74
  <DarkModeToggle />
75
75
  <div class="relative ml-1">
76
- <button
77
- class="bg-transparent border-none p-0 cursor-pointer rounded-lg transition-opacity duration-150 min-w-10 min-h-10 hover:opacity-80 focus:outline-none [&_img]:object-cover [&_img]:aspect-square [&_img]:rounded-lg"
76
+ <Button
77
+ variant="avatar"
78
+ size="md"
78
79
  onclick={() => showDesktopDropdown = !showDesktopDropdown}
79
80
  >
80
81
  <Avatar src={avatar} rounded size="md" />
81
- </button>
82
+ </Button>
82
83
 
83
84
  {#if showDesktopDropdown}
84
85
  <!-- svelte-ignore a11y_click_events_have_key_events -->
@@ -90,20 +91,22 @@
90
91
  <span class="block text-xs text-gray-500 dark:text-gray-400 mt-0.5">{email || ""}</span>
91
92
  </div>
92
93
  {#each dropdownLinks as { label, href }}
93
- <button
94
- class="w-full py-3 px-4 text-sm font-medium text-gray-900 dark:text-white bg-transparent border-none text-left cursor-pointer transition-colors duration-150 hover:bg-gray-100 dark:hover:bg-gray-700"
94
+ <Button
95
+ variant="menu-item"
96
+ size="md"
95
97
  onclick={() => handleDropdownItemClick(href)}
96
98
  >
97
99
  {label}
98
- </button>
100
+ </Button>
99
101
  {/each}
100
102
  <div class="h-px bg-gray-200 dark:bg-gray-700"></div>
101
- <button
102
- class="w-full py-3 px-4 text-sm font-medium text-red-600 dark:text-red-500 bg-transparent border-none text-left cursor-pointer transition-colors duration-150 hover:bg-red-50 dark:hover:bg-gray-700"
103
+ <Button
104
+ variant="menu-item-danger"
105
+ size="md"
103
106
  onclick={() => { showDesktopDropdown = false; signoutHandler(); }}
104
107
  >
105
108
  Sign out
106
- </button>
109
+ </Button>
107
110
  </div>
108
111
  {/if}
109
112
  </div>
@@ -131,19 +134,23 @@
131
134
  <DarkModeToggle />
132
135
 
133
136
  <div class="relative ml-1">
134
- <button
135
- class="block md:hidden bg-transparent border-none p-0 cursor-pointer rounded-lg transition-opacity duration-150 min-w-10 min-h-10 hover:opacity-80 focus:outline-none [&_img]:object-cover [&_img]:aspect-square [&_img]:rounded-lg"
137
+ <Button
138
+ variant="avatar"
139
+ size="md"
140
+ class="block md:hidden"
136
141
  onclick={() => showMobileSheet = true}
137
142
  >
138
143
  <Avatar src={avatar} rounded size="md" />
139
- </button>
144
+ </Button>
140
145
 
141
- <button
142
- class="hidden md:block bg-transparent border-none p-0 cursor-pointer rounded-lg transition-opacity duration-150 min-w-10 min-h-10 hover:opacity-80 focus:outline-none [&_img]:object-cover [&_img]:aspect-square [&_img]:rounded-lg"
146
+ <Button
147
+ variant="avatar"
148
+ size="md"
149
+ class="hidden md:block"
143
150
  onclick={() => showDesktopDropdown = !showDesktopDropdown}
144
151
  >
145
152
  <Avatar src={avatar} rounded size="md" />
146
- </button>
153
+ </Button>
147
154
 
148
155
  {#if showDesktopDropdown}
149
156
  <!-- svelte-ignore a11y_click_events_have_key_events -->
@@ -155,20 +162,22 @@
155
162
  <span class="block text-xs text-gray-500 dark:text-gray-400 mt-0.5">{email || ""}</span>
156
163
  </div>
157
164
  {#each dropdownLinks as { label, href }}
158
- <button
159
- class="w-full py-3 px-4 text-sm font-medium text-gray-900 dark:text-white bg-transparent border-none text-left cursor-pointer transition-colors duration-150 hover:bg-gray-100 dark:hover:bg-gray-700"
165
+ <Button
166
+ variant="menu-item"
167
+ size="md"
160
168
  onclick={() => handleDropdownItemClick(href)}
161
169
  >
162
170
  {label}
163
- </button>
171
+ </Button>
164
172
  {/each}
165
173
  <div class="h-px bg-gray-200 dark:bg-gray-700"></div>
166
- <button
167
- class="w-full py-3 px-4 text-sm font-medium text-red-600 dark:text-red-500 bg-transparent border-none text-left cursor-pointer transition-colors duration-150 hover:bg-red-50 dark:hover:bg-gray-700"
174
+ <Button
175
+ variant="menu-item-danger"
176
+ size="md"
168
177
  onclick={() => { showDesktopDropdown = false; signoutHandler(); }}
169
178
  >
170
179
  Sign out
171
- </button>
180
+ </Button>
172
181
  </div>
173
182
  {/if}
174
183
  </div>
@@ -202,20 +211,22 @@
202
211
 
203
212
  <div class="py-2">
204
213
  {#each dropdownLinks as { label, href }}
205
- <button
214
+ <Button
215
+ variant="menu-item"
216
+ size="lg"
206
217
  onclick={() => handleMobileSheetItemClick(href)}
207
- class="w-full text-left px-6 py-4 text-base font-medium text-gray-900 dark:text-white bg-transparent border-none cursor-pointer transition-colors duration-150 active:bg-gray-100 dark:active:bg-gray-700"
208
218
  >
209
219
  {label}
210
- </button>
220
+ </Button>
211
221
  {/each}
212
222
 
213
- <button
223
+ <Button
224
+ variant="menu-item-danger"
225
+ size="lg"
214
226
  onclick={() => { showMobileSheet = false; signoutHandler(); }}
215
- class="w-full text-left px-6 py-4 text-base font-medium text-red-600 dark:text-red-500 bg-transparent border-none cursor-pointer transition-colors duration-150 active:bg-gray-100 dark:active:bg-gray-700"
216
227
  >
217
228
  Sign Out
218
- </button>
229
+ </Button>
219
230
  </div>
220
231
 
221
232
  <div class="border-t-8 border-gray-100 dark:border-gray-700">
@@ -28,7 +28,7 @@
28
28
  </nav>
29
29
  {/if}
30
30
 
31
- <div class="px-4 pb-20 md:pb-6 {className}">
31
+ <div class="px-4 pt-4 pb-20 md:pb-6 {className}">
32
32
  {#if variant === 'card'}
33
33
  <Card className="bg-white dark:bg-gray-800 {maxWidth}">
34
34
  {@render children?.()}
@@ -0,0 +1,75 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Accordion from './Accordion.svelte';
4
+ import AccordionItem from './AccordionItem.svelte';
5
+
6
+ const { Story } = defineMeta({
7
+ title: 'Primitives/Accordion',
8
+ component: Accordion,
9
+ tags: ['autodocs'],
10
+ parameters: {
11
+ docs: {
12
+ description: {
13
+ component: 'Collapsible content sections. Use AccordionItem children to create expandable sections.',
14
+ },
15
+ },
16
+ },
17
+ });
18
+ </script>
19
+
20
+ <Story name="Default">
21
+ {#snippet template()}
22
+ <div class="max-w-xl">
23
+ <Accordion>
24
+ <AccordionItem title="What is Micdrop?">
25
+ <p class="text-gray-600">Micdrop is a platform for comedians and venues to manage shows, ticket sales, and performer booking.</p>
26
+ </AccordionItem>
27
+ <AccordionItem title="How do I get started?">
28
+ <p class="text-gray-600">Sign up for an account, set up your venue or performer profile, and start creating shows.</p>
29
+ </AccordionItem>
30
+ <AccordionItem title="What are the fees?">
31
+ <p class="text-gray-600">Micdrop charges a small percentage per ticket sold. There are no monthly fees.</p>
32
+ </AccordionItem>
33
+ </Accordion>
34
+ </div>
35
+ {/snippet}
36
+ </Story>
37
+
38
+ <Story name="Single Item Open">
39
+ {#snippet template()}
40
+ <div class="max-w-xl">
41
+ <Accordion>
42
+ <AccordionItem title="Expanded by default" open={true}>
43
+ <p class="text-gray-600">This item starts expanded.</p>
44
+ </AccordionItem>
45
+ <AccordionItem title="Collapsed item">
46
+ <p class="text-gray-600">Click to expand this item.</p>
47
+ </AccordionItem>
48
+ </Accordion>
49
+ </div>
50
+ {/snippet}
51
+ </Story>
52
+
53
+ <Story name="With Rich Content">
54
+ {#snippet template()}
55
+ <div class="max-w-xl">
56
+ <Accordion>
57
+ <AccordionItem title="Features">
58
+ <ul class="list-disc list-inside text-gray-600 space-y-2">
59
+ <li>Online ticket sales</li>
60
+ <li>Performer management</li>
61
+ <li>Show scheduling</li>
62
+ <li>Analytics dashboard</li>
63
+ </ul>
64
+ </AccordionItem>
65
+ <AccordionItem title="Pricing">
66
+ <div class="space-y-2">
67
+ <p class="text-gray-600"><strong>Basic:</strong> Free</p>
68
+ <p class="text-gray-600"><strong>Pro:</strong> $29/month</p>
69
+ <p class="text-gray-600"><strong>Enterprise:</strong> Contact us</p>
70
+ </div>
71
+ </AccordionItem>
72
+ </Accordion>
73
+ </div>
74
+ {/snippet}
75
+ </Story>
@@ -0,0 +1,28 @@
1
+ export default Accordion;
2
+ type Accordion = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Accordion: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import Accordion from './Accordion.svelte';
15
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
28
+ //# sourceMappingURL=Accordion.stories.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.stories.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/primitives/Accordion/Accordion.stories.svelte.js"],"names":[],"mappings":";;;;;;;;AAyFA;;;;mBAAqH;sBArF7F,oBAAoB;6CA4EC,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"}
@@ -0,0 +1,88 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Alert from './Alert.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Primitives/Alert',
7
+ component: Alert,
8
+ tags: ['autodocs'],
9
+ argTypes: {
10
+ color: {
11
+ control: 'select',
12
+ options: ['info', 'success', 'warning', 'error'],
13
+ },
14
+ dismissible: { control: 'boolean' },
15
+ },
16
+ parameters: {
17
+ docs: {
18
+ description: {
19
+ component: 'Contextual feedback messages for user actions or system states.',
20
+ },
21
+ },
22
+ },
23
+ });
24
+ </script>
25
+
26
+ <Story name="Info" args={{ color: 'info' }}>
27
+ {#snippet template(args)}
28
+ <Alert {...args}>
29
+ <span class="font-medium">Info!</span> This is an informational alert with helpful information.
30
+ </Alert>
31
+ {/snippet}
32
+ </Story>
33
+
34
+ <Story name="Success" args={{ color: 'success' }}>
35
+ {#snippet template(args)}
36
+ <Alert {...args}>
37
+ <span class="font-medium">Success!</span> Your changes have been saved successfully.
38
+ </Alert>
39
+ {/snippet}
40
+ </Story>
41
+
42
+ <Story name="Warning" args={{ color: 'warning' }}>
43
+ {#snippet template(args)}
44
+ <Alert {...args}>
45
+ <span class="font-medium">Warning!</span> Please review this information before proceeding.
46
+ </Alert>
47
+ {/snippet}
48
+ </Story>
49
+
50
+ <Story name="Error" args={{ color: 'error' }}>
51
+ {#snippet template(args)}
52
+ <Alert {...args}>
53
+ <span class="font-medium">Error!</span> Something went wrong. Please try again.
54
+ </Alert>
55
+ {/snippet}
56
+ </Story>
57
+
58
+ <Story name="Dismissible">
59
+ {#snippet template()}
60
+ <div class="space-y-4">
61
+ <Alert color="info" dismissible>
62
+ Click the X to dismiss this alert.
63
+ </Alert>
64
+ <Alert color="success" dismissible>
65
+ This success alert can also be dismissed.
66
+ </Alert>
67
+ </div>
68
+ {/snippet}
69
+ </Story>
70
+
71
+ <Story name="All Variants">
72
+ {#snippet template()}
73
+ <div class="space-y-4">
74
+ <Alert color="info">
75
+ <span class="font-medium">Info:</span> Just letting you know about something.
76
+ </Alert>
77
+ <Alert color="success">
78
+ <span class="font-medium">Success:</span> Great job! Everything worked.
79
+ </Alert>
80
+ <Alert color="warning">
81
+ <span class="font-medium">Warning:</span> Be careful about this action.
82
+ </Alert>
83
+ <Alert color="error">
84
+ <span class="font-medium">Error:</span> Something went wrong.
85
+ </Alert>
86
+ </div>
87
+ {/snippet}
88
+ </Story>
@@ -0,0 +1,28 @@
1
+ export default Alert;
2
+ type Alert = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Alert: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import Alert from './Alert.svelte';
15
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
28
+ //# sourceMappingURL=Alert.stories.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.stories.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/primitives/Alert/Alert.stories.svelte.js"],"names":[],"mappings":";;;;;;;;AAsGA;;;;mBAAiH;kBAlG7F,gBAAgB;6CAyFS,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"}
@@ -0,0 +1,94 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Avatar from './Avatar.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Primitives/Avatar',
7
+ component: Avatar,
8
+ tags: ['autodocs'],
9
+ argTypes: {
10
+ size: {
11
+ control: 'select',
12
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
13
+ },
14
+ src: { control: 'text' },
15
+ alt: { control: 'text' },
16
+ initials: { control: 'text' },
17
+ },
18
+ parameters: {
19
+ docs: {
20
+ description: {
21
+ component: 'User profile picture component with fallback to initials.',
22
+ },
23
+ },
24
+ },
25
+ });
26
+ </script>
27
+
28
+ <Story name="Default">
29
+ {#snippet template()}
30
+ <Avatar />
31
+ {/snippet}
32
+ </Story>
33
+
34
+ <Story name="With Initials" args={{ initials: 'JD' }}>
35
+ {#snippet template(args)}
36
+ <Avatar {...args} />
37
+ {/snippet}
38
+ </Story>
39
+
40
+ <Story name="With Image" args={{ src: 'https://i.pravatar.cc/150?img=3', alt: 'User avatar' }}>
41
+ {#snippet template(args)}
42
+ <Avatar {...args} />
43
+ {/snippet}
44
+ </Story>
45
+
46
+ <Story name="All Sizes">
47
+ {#snippet template()}
48
+ <div class="flex items-end gap-4">
49
+ <div class="text-center">
50
+ <Avatar size="xs" initials="XS" />
51
+ <p class="text-xs text-gray-500 mt-1">xs</p>
52
+ </div>
53
+ <div class="text-center">
54
+ <Avatar size="sm" initials="SM" />
55
+ <p class="text-xs text-gray-500 mt-1">sm</p>
56
+ </div>
57
+ <div class="text-center">
58
+ <Avatar size="md" initials="MD" />
59
+ <p class="text-xs text-gray-500 mt-1">md</p>
60
+ </div>
61
+ <div class="text-center">
62
+ <Avatar size="lg" initials="LG" />
63
+ <p class="text-xs text-gray-500 mt-1">lg</p>
64
+ </div>
65
+ <div class="text-center">
66
+ <Avatar size="xl" initials="XL" />
67
+ <p class="text-xs text-gray-500 mt-1">xl</p>
68
+ </div>
69
+ </div>
70
+ {/snippet}
71
+ </Story>
72
+
73
+ <Story name="Image Sizes">
74
+ {#snippet template()}
75
+ <div class="flex items-end gap-4">
76
+ <Avatar size="xs" src="https://i.pravatar.cc/150?img=1" />
77
+ <Avatar size="sm" src="https://i.pravatar.cc/150?img=2" />
78
+ <Avatar size="md" src="https://i.pravatar.cc/150?img=3" />
79
+ <Avatar size="lg" src="https://i.pravatar.cc/150?img=4" />
80
+ <Avatar size="xl" src="https://i.pravatar.cc/150?img=5" />
81
+ </div>
82
+ {/snippet}
83
+ </Story>
84
+
85
+ <Story name="Group">
86
+ {#snippet template()}
87
+ <div class="flex -space-x-4">
88
+ <Avatar src="https://i.pravatar.cc/150?img=1" class="ring-2 ring-white" />
89
+ <Avatar src="https://i.pravatar.cc/150?img=2" class="ring-2 ring-white" />
90
+ <Avatar src="https://i.pravatar.cc/150?img=3" class="ring-2 ring-white" />
91
+ <Avatar initials="+5" class="ring-2 ring-white" />
92
+ </div>
93
+ {/snippet}
94
+ </Story>