@getmicdrop/svelte-components 5.5.5 → 5.6.0

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 (266) hide show
  1. package/dist/calendar/AboutShow/AboutShow.svelte +172 -172
  2. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +782 -782
  3. package/dist/calendar/FAQs/FAQs.svelte +75 -75
  4. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +126 -126
  5. package/dist/calendar/OrderSummary/OrderSummary.svelte +367 -367
  6. package/dist/calendar/PublicCard/PublicCard.svelte +134 -134
  7. package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
  8. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
  9. package/dist/components/Layout/AppShell.svelte +104 -0
  10. package/dist/components/Layout/AppShell.svelte.d.ts +26 -0
  11. package/dist/components/Layout/AppShell.svelte.d.ts.map +1 -0
  12. package/dist/components/Layout/ContentSection.svelte +80 -0
  13. package/dist/components/Layout/ContentSection.svelte.d.ts +23 -0
  14. package/dist/components/Layout/ContentSection.svelte.d.ts.map +1 -0
  15. package/dist/components/Layout/Grid.svelte +4 -4
  16. package/dist/components/Layout/Heading.svelte +81 -0
  17. package/dist/components/Layout/Heading.svelte.d.ts +24 -0
  18. package/dist/components/Layout/Heading.svelte.d.ts.map +1 -0
  19. package/dist/components/Layout/PageContainer.svelte +69 -0
  20. package/dist/components/Layout/PageContainer.svelte.d.ts +23 -0
  21. package/dist/components/Layout/PageContainer.svelte.d.ts.map +1 -0
  22. package/dist/components/Layout/Responsive.svelte +75 -0
  23. package/dist/components/Layout/Responsive.svelte.d.ts +19 -0
  24. package/dist/components/Layout/Responsive.svelte.d.ts.map +1 -0
  25. package/dist/components/Layout/Section.svelte +80 -80
  26. package/dist/components/Layout/ShowOnDesktop.svelte +37 -0
  27. package/dist/components/Layout/ShowOnDesktop.svelte.d.ts +16 -0
  28. package/dist/components/Layout/ShowOnDesktop.svelte.d.ts.map +1 -0
  29. package/dist/components/Layout/ShowOnMobile.svelte +37 -0
  30. package/dist/components/Layout/ShowOnMobile.svelte.d.ts +16 -0
  31. package/dist/components/Layout/ShowOnMobile.svelte.d.ts.map +1 -0
  32. package/dist/components/Layout/Sidebar.svelte +108 -108
  33. package/dist/components/Layout/Stack.spec.js +1 -1
  34. package/dist/components/Layout/Stack.svelte +6 -6
  35. package/dist/components/Layout/Text.svelte +87 -0
  36. package/dist/components/Layout/Text.svelte.d.ts +28 -0
  37. package/dist/components/Layout/Text.svelte.d.ts.map +1 -0
  38. package/dist/components/Layout/TwoColumn.svelte +108 -0
  39. package/dist/components/Layout/TwoColumn.svelte.d.ts +28 -0
  40. package/dist/components/Layout/TwoColumn.svelte.d.ts.map +1 -0
  41. package/dist/components/Layout/__tests__/Heading.test.d.ts +2 -0
  42. package/dist/components/Layout/__tests__/Heading.test.d.ts.map +1 -0
  43. package/dist/components/Layout/__tests__/Heading.test.js +123 -0
  44. package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts +2 -0
  45. package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts.map +1 -0
  46. package/dist/components/Layout/__tests__/ShowOnDesktop.test.js +84 -0
  47. package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts +2 -0
  48. package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts.map +1 -0
  49. package/dist/components/Layout/__tests__/ShowOnMobile.test.js +80 -0
  50. package/dist/components/Layout/__tests__/Text.test.d.ts +2 -0
  51. package/dist/components/Layout/__tests__/Text.test.d.ts.map +1 -0
  52. package/dist/components/Layout/__tests__/Text.test.js +146 -0
  53. package/dist/components/Layout/__tests__/TwoColumn.test.d.ts +2 -0
  54. package/dist/components/Layout/__tests__/TwoColumn.test.d.ts.map +1 -0
  55. package/dist/components/Layout/__tests__/TwoColumn.test.js +129 -0
  56. package/dist/constants/validation.js +91 -91
  57. package/dist/constants/validation.spec.js +64 -64
  58. package/dist/datetime/__tests__/format.test.js +1 -1
  59. package/dist/datetime/__tests__/parse.test.js +1 -1
  60. package/dist/datetime/__tests__/timezone.test.js +1 -1
  61. package/dist/datetime/parse.js +1 -1
  62. package/dist/forms/createFormStore.svelte.js +1 -0
  63. package/dist/index.js +40 -40
  64. package/dist/patterns/data/DataGrid.svelte +45 -45
  65. package/dist/patterns/data/DataList.svelte +24 -24
  66. package/dist/patterns/data/DataTable.svelte +36 -36
  67. package/dist/patterns/forms/FormActions.spec.js +95 -95
  68. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  69. package/dist/patterns/forms/FormActions.svelte +46 -46
  70. package/dist/patterns/forms/FormGrid.svelte +33 -33
  71. package/dist/patterns/forms/FormSection.svelte +32 -32
  72. package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
  73. package/dist/patterns/forms/FormValidationSummary.svelte +74 -74
  74. package/dist/patterns/layout/Sidebar.svelte +39 -39
  75. package/dist/patterns/layout/index.d.ts +9 -0
  76. package/dist/patterns/layout/index.js +22 -0
  77. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  78. package/dist/patterns/navigation/BottomNav.svelte +64 -64
  79. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  80. package/dist/patterns/navigation/Header.svelte +193 -193
  81. package/dist/patterns/page/PageHeader.svelte +18 -18
  82. package/dist/patterns/page/PageLayout.svelte +40 -40
  83. package/dist/patterns/page/PageLoader.spec.js +57 -57
  84. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  85. package/dist/patterns/page/PageLoader.svelte +24 -24
  86. package/dist/patterns/page/SectionHeader.svelte +29 -29
  87. package/dist/presets/badges.js +112 -112
  88. package/dist/presets/buttons.js +76 -76
  89. package/dist/presets/index.js +9 -9
  90. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  91. package/dist/primitives/Accordion/Accordion.svelte +42 -42
  92. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  93. package/dist/primitives/Alert/Alert.spec.js +173 -173
  94. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  95. package/dist/primitives/Alert/Alert.svelte +27 -27
  96. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  97. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  98. package/dist/primitives/Badges/Badge.spec.js +144 -144
  99. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  100. package/dist/primitives/Badges/Badge.svelte +79 -79
  101. package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -136
  102. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  103. package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
  104. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -122
  105. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  106. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
  107. package/dist/primitives/Button/Button.spec.js +223 -223
  108. package/dist/primitives/Button/Button.stories.svelte +76 -76
  109. package/dist/primitives/Button/Button.svelte +270 -270
  110. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
  111. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  112. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  113. package/dist/primitives/Card.spec.js +49 -49
  114. package/dist/primitives/Card.stories.svelte +22 -22
  115. package/dist/primitives/Card.svelte +28 -28
  116. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  117. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  118. package/dist/primitives/DarkModeToggle.spec.js +390 -390
  119. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  120. package/dist/primitives/DarkModeToggle.svelte +136 -136
  121. package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
  122. package/dist/primitives/Drawer/Drawer.svelte +120 -120
  123. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  124. package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
  125. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  126. package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
  127. package/dist/primitives/Icons/ArrowRight.svelte +8 -8
  128. package/dist/primitives/Icons/Availability.svelte +14 -14
  129. package/dist/primitives/Icons/Back.svelte +14 -14
  130. package/dist/primitives/Icons/CheckCircle.svelte +6 -6
  131. package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
  132. package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
  133. package/dist/primitives/Icons/ChevronRight.svelte +4 -4
  134. package/dist/primitives/Icons/Copy.svelte +15 -15
  135. package/dist/primitives/Icons/Cross.svelte +5 -5
  136. package/dist/primitives/Icons/DownArrow.svelte +8 -8
  137. package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
  138. package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
  139. package/dist/primitives/Icons/Home.svelte +15 -15
  140. package/dist/primitives/Icons/Icon.spec.js +169 -169
  141. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  142. package/dist/primitives/Icons/Icon.svelte +52 -52
  143. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  144. package/dist/primitives/Icons/Info.svelte +7 -7
  145. package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
  146. package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
  147. package/dist/primitives/Icons/Message.svelte +15 -15
  148. package/dist/primitives/Icons/MoonIcon.svelte +5 -5
  149. package/dist/primitives/Icons/More.svelte +21 -21
  150. package/dist/primitives/Icons/MoreHori.spec.js +61 -61
  151. package/dist/primitives/Icons/MoreHori.svelte +22 -22
  152. package/dist/primitives/Icons/Notification.svelte +14 -14
  153. package/dist/primitives/Icons/Payment.svelte +14 -14
  154. package/dist/primitives/Icons/Profile.svelte +21 -21
  155. package/dist/primitives/Icons/Reload.svelte +29 -29
  156. package/dist/primitives/Icons/Shows.svelte +21 -21
  157. package/dist/primitives/Icons/Signout.svelte +21 -21
  158. package/dist/primitives/Icons/SunIcon.svelte +8 -8
  159. package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
  160. package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
  161. package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
  162. package/dist/primitives/Icons/WarningIcon.svelte +5 -5
  163. package/dist/primitives/Input/Input.spec.js +573 -573
  164. package/dist/primitives/Input/Input.stories.svelte +139 -139
  165. package/dist/primitives/Input/Input.svelte +417 -417
  166. package/dist/primitives/Input/Select.spec.js +212 -212
  167. package/dist/primitives/Input/Select.stories.svelte +112 -112
  168. package/dist/primitives/Input/Select.svelte +128 -128
  169. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  170. package/dist/primitives/Input/Textarea.svelte +35 -35
  171. package/dist/primitives/Label/Label.svelte +37 -37
  172. package/dist/primitives/Modal/Modal.spec.js +99 -99
  173. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  174. package/dist/primitives/Modal/Modal.svelte +158 -158
  175. package/dist/primitives/NumberInput/NumberInput.svelte +106 -106
  176. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  177. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  178. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  179. package/dist/primitives/Radio/Radio.svelte +67 -67
  180. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  181. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  182. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  183. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  184. package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
  185. package/dist/primitives/Spinner/Spinner.spec.js +71 -71
  186. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  187. package/dist/primitives/Spinner/Spinner.svelte +20 -20
  188. package/dist/primitives/Tabs/TabItem.svelte +49 -49
  189. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  190. package/dist/primitives/Tabs/Tabs.svelte +123 -123
  191. package/dist/primitives/Toggle.spec.js +143 -143
  192. package/dist/primitives/Toggle.stories.svelte +92 -92
  193. package/dist/primitives/Toggle.svelte +71 -71
  194. package/dist/primitives/Typography/Typography.svelte +53 -53
  195. package/dist/primitives/ValidationError.spec.js +103 -103
  196. package/dist/primitives/ValidationError.stories.svelte +69 -69
  197. package/dist/primitives/ValidationError.svelte +29 -29
  198. package/dist/primitives/index.js +84 -84
  199. package/dist/recipes/CropImage/CropImage.spec.js +208 -208
  200. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  201. package/dist/recipes/CropImage/CropImage.svelte +238 -238
  202. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  203. package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
  204. package/dist/recipes/SuperLogin/SuperLogin.spec.js +17 -17
  205. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  206. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
  207. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  208. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
  209. package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
  210. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
  211. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
  212. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  213. package/dist/recipes/fields/FormField.svelte +58 -58
  214. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  215. package/dist/recipes/fields/SelectField.svelte +80 -80
  216. package/dist/recipes/fields/TextareaField.svelte +97 -97
  217. package/dist/recipes/fields/ToggleField.svelte +60 -60
  218. package/dist/recipes/fields/index.js +7 -7
  219. package/dist/recipes/inputs/MultiSelect.spec.js +258 -258
  220. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  221. package/dist/recipes/inputs/MultiSelect.svelte +256 -256
  222. package/dist/recipes/inputs/OTPInput.spec.js +251 -251
  223. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  224. package/dist/recipes/inputs/OTPInput.svelte +29 -29
  225. package/dist/recipes/inputs/PasswordInput.svelte +22 -22
  226. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -117
  227. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
  228. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +326 -326
  229. package/dist/recipes/inputs/Search.svelte +37 -37
  230. package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
  231. package/dist/recipes/modals/AlertModal.svelte +130 -130
  232. package/dist/recipes/modals/ConfirmationModal.spec.js +206 -206
  233. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  234. package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
  235. package/dist/recipes/modals/InputModal.svelte +182 -182
  236. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  237. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  238. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  239. package/dist/recipes/modals/StatusModal.svelte +206 -206
  240. package/dist/services/EventService.js +75 -75
  241. package/dist/services/EventService.spec.js +217 -217
  242. package/dist/services/ShowService.spec.js +345 -345
  243. package/dist/stores/auth.js +36 -36
  244. package/dist/stores/auth.spec.js +139 -139
  245. package/dist/stores/toaster.js +13 -13
  246. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  247. package/dist/stories/ButtonAuditReview.svelte +427 -427
  248. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  249. package/dist/stories/PatternsGallery.svelte +206 -206
  250. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  251. package/dist/stories/PrimitivesGallery.svelte +725 -725
  252. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  253. package/dist/stories/RecipesGallery.svelte +271 -271
  254. package/dist/stories/button-audit-manifest.json +11186 -11186
  255. package/dist/tailwind/preset.cjs +82 -82
  256. package/dist/telemetry.js +405 -405
  257. package/dist/telemetry.spec.js +1144 -1144
  258. package/dist/tokens/__tests__/typography-base.test.d.ts +2 -0
  259. package/dist/tokens/__tests__/typography-base.test.d.ts.map +1 -0
  260. package/dist/tokens/__tests__/typography-base.test.js +138 -0
  261. package/dist/tokens/tokens.css +87 -87
  262. package/dist/tokens/typography-base.css +163 -0
  263. package/dist/utils/apiConfig.spec.js +219 -219
  264. package/dist/utils/transitions.js +62 -62
  265. package/dist/utils/utils.js +354 -354
  266. package/package.json +292 -291
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/Text.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,KAAK,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAC5F,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,KAAK,WAAW,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAElD,UAAU,KAAK;IACb,yBAAyB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,6BAA6B;IAC7B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,kBAAkB;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACnD,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACrE,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAsEH,QAAA,MAAM,IAAI,2CAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
@@ -0,0 +1,108 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ type Gap = 'none' | 'sm' | 'md' | 'lg' | 'xl';
5
+ type Ratio = 'equal' | '1:2' | '2:1' | '1:3' | '3:1';
6
+ type StackAt = 'sm' | 'md' | 'lg' | 'never';
7
+
8
+ interface Props {
9
+ /** Gap between columns */
10
+ gap?: Gap;
11
+ /** Column ratio */
12
+ ratio?: Ratio;
13
+ /** Breakpoint at which columns stack vertically */
14
+ stackAt?: StackAt;
15
+ /** Reverse order when stacked */
16
+ reverseOnStack?: boolean;
17
+ /** Vertical alignment */
18
+ align?: 'start' | 'center' | 'end' | 'stretch';
19
+ /** Additional CSS classes */
20
+ class?: string;
21
+ /** Left column content */
22
+ left?: Snippet;
23
+ /** Right column content */
24
+ right?: Snippet;
25
+ /** Children (alternative to left/right slots) */
26
+ children?: Snippet;
27
+ }
28
+
29
+ let {
30
+ gap = 'md',
31
+ ratio = 'equal',
32
+ stackAt = 'md',
33
+ reverseOnStack = false,
34
+ align = 'stretch',
35
+ class: className = '',
36
+ left,
37
+ right,
38
+ children,
39
+ }: Props = $props();
40
+
41
+ const gapClasses: Record<Gap, string> = {
42
+ none: 'gap-0',
43
+ sm: 'gap-2',
44
+ md: 'gap-4',
45
+ lg: 'gap-6',
46
+ xl: 'gap-8',
47
+ };
48
+
49
+ // Stack classes: normal and reversed versions
50
+ const stackAtClasses: Record<StackAt, string> = {
51
+ sm: 'flex-col sm:flex-row',
52
+ md: 'flex-col md:flex-row',
53
+ lg: 'flex-col lg:flex-row',
54
+ never: 'flex-row',
55
+ };
56
+
57
+ const stackAtReversedClasses: Record<StackAt, string> = {
58
+ sm: 'flex-col-reverse sm:flex-row',
59
+ md: 'flex-col-reverse md:flex-row',
60
+ lg: 'flex-col-reverse lg:flex-row',
61
+ never: 'flex-row',
62
+ };
63
+
64
+ const alignClasses: Record<string, string> = {
65
+ start: 'items-start',
66
+ center: 'items-center',
67
+ end: 'items-end',
68
+ stretch: 'items-stretch',
69
+ };
70
+
71
+ // Ratio classes for each column
72
+ const ratioLeftClasses: Record<Ratio, string> = {
73
+ equal: 'flex-1',
74
+ '1:2': 'w-full md:w-1/3',
75
+ '2:1': 'w-full md:w-2/3',
76
+ '1:3': 'w-full md:w-1/4',
77
+ '3:1': 'w-full md:w-3/4',
78
+ };
79
+
80
+ const ratioRightClasses: Record<Ratio, string> = {
81
+ equal: 'flex-1',
82
+ '1:2': 'w-full md:w-2/3',
83
+ '2:1': 'w-full md:w-1/3',
84
+ '1:3': 'w-full md:w-3/4',
85
+ '3:1': 'w-full md:w-1/4',
86
+ };
87
+
88
+ let containerClasses = $derived([
89
+ 'flex',
90
+ reverseOnStack ? stackAtReversedClasses[stackAt] : stackAtClasses[stackAt],
91
+ gapClasses[gap],
92
+ alignClasses[align],
93
+ className,
94
+ ].filter(Boolean).join(' '));
95
+ </script>
96
+
97
+ <div class={containerClasses}>
98
+ {#if left && right}
99
+ <div class={ratioLeftClasses[ratio]}>
100
+ {@render left()}
101
+ </div>
102
+ <div class={ratioRightClasses[ratio]}>
103
+ {@render right()}
104
+ </div>
105
+ {:else if children}
106
+ {@render children()}
107
+ {/if}
108
+ </div>
@@ -0,0 +1,28 @@
1
+ import type { Snippet } from 'svelte';
2
+ type Gap = 'none' | 'sm' | 'md' | 'lg' | 'xl';
3
+ type Ratio = 'equal' | '1:2' | '2:1' | '1:3' | '3:1';
4
+ type StackAt = 'sm' | 'md' | 'lg' | 'never';
5
+ interface Props {
6
+ /** Gap between columns */
7
+ gap?: Gap;
8
+ /** Column ratio */
9
+ ratio?: Ratio;
10
+ /** Breakpoint at which columns stack vertically */
11
+ stackAt?: StackAt;
12
+ /** Reverse order when stacked */
13
+ reverseOnStack?: boolean;
14
+ /** Vertical alignment */
15
+ align?: 'start' | 'center' | 'end' | 'stretch';
16
+ /** Additional CSS classes */
17
+ class?: string;
18
+ /** Left column content */
19
+ left?: Snippet;
20
+ /** Right column content */
21
+ right?: Snippet;
22
+ /** Children (alternative to left/right slots) */
23
+ children?: Snippet;
24
+ }
25
+ declare const TwoColumn: import("svelte").Component<Props, {}, "">;
26
+ type TwoColumn = ReturnType<typeof TwoColumn>;
27
+ export default TwoColumn;
28
+ //# sourceMappingURL=TwoColumn.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwoColumn.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/TwoColumn.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,KAAK,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9C,KAAK,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACrD,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC;AAE5C,UAAU,KAAK;IACb,0BAA0B;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,mBAAmB;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yBAAyB;IACzB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IAC/C,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA2FH,QAAA,MAAM,SAAS,2CAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Heading.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heading.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/Heading.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,123 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { render } from '@testing-library/svelte';
3
+ import Heading from '../Heading.svelte';
4
+ describe('Heading', () => {
5
+ describe('basic rendering', () => {
6
+ it('renders as h2 element by default', () => {
7
+ const { container } = render(Heading);
8
+ expect(container.querySelector('h2')).toBeTruthy();
9
+ });
10
+ it('applies default variant classes', () => {
11
+ const { container } = render(Heading);
12
+ const h2 = container.querySelector('h2');
13
+ expect(h2?.classList.contains('text-gray-900')).toBe(true);
14
+ });
15
+ it('applies default size class based on level', () => {
16
+ const { container } = render(Heading);
17
+ const h2 = container.querySelector('h2');
18
+ expect(h2?.classList.contains('text-2xl')).toBe(true);
19
+ });
20
+ it('applies font-semibold by default', () => {
21
+ const { container } = render(Heading);
22
+ const h2 = container.querySelector('h2');
23
+ expect(h2?.classList.contains('font-semibold')).toBe(true);
24
+ });
25
+ });
26
+ describe('level prop', () => {
27
+ it('renders h1 for level=1', () => {
28
+ const { container } = render(Heading, { level: 1 });
29
+ expect(container.querySelector('h1')).toBeTruthy();
30
+ expect(container.querySelector('h1')?.classList.contains('text-3xl')).toBe(true);
31
+ });
32
+ it('renders h2 for level=2', () => {
33
+ const { container } = render(Heading, { level: 2 });
34
+ expect(container.querySelector('h2')).toBeTruthy();
35
+ expect(container.querySelector('h2')?.classList.contains('text-2xl')).toBe(true);
36
+ });
37
+ it('renders h3 for level=3', () => {
38
+ const { container } = render(Heading, { level: 3 });
39
+ expect(container.querySelector('h3')).toBeTruthy();
40
+ expect(container.querySelector('h3')?.classList.contains('text-xl')).toBe(true);
41
+ });
42
+ it('renders h4 for level=4', () => {
43
+ const { container } = render(Heading, { level: 4 });
44
+ expect(container.querySelector('h4')).toBeTruthy();
45
+ expect(container.querySelector('h4')?.classList.contains('text-lg')).toBe(true);
46
+ });
47
+ it('renders h5 for level=5', () => {
48
+ const { container } = render(Heading, { level: 5 });
49
+ expect(container.querySelector('h5')).toBeTruthy();
50
+ expect(container.querySelector('h5')?.classList.contains('text-base')).toBe(true);
51
+ });
52
+ it('renders h6 for level=6', () => {
53
+ const { container } = render(Heading, { level: 6 });
54
+ expect(container.querySelector('h6')).toBeTruthy();
55
+ expect(container.querySelector('h6')?.classList.contains('text-sm')).toBe(true);
56
+ });
57
+ });
58
+ describe('size prop override', () => {
59
+ it('overrides default size when size prop is provided', () => {
60
+ const { container } = render(Heading, { level: 1, size: 'lg' });
61
+ const h1 = container.querySelector('h1');
62
+ expect(h1?.classList.contains('text-lg')).toBe(true);
63
+ expect(h1?.classList.contains('text-3xl')).toBe(false);
64
+ });
65
+ it('applies text-xs for size="xs"', () => {
66
+ const { container } = render(Heading, { size: 'xs' });
67
+ const h2 = container.querySelector('h2');
68
+ expect(h2?.classList.contains('text-xs')).toBe(true);
69
+ });
70
+ it('applies text-4xl for size="4xl"', () => {
71
+ const { container } = render(Heading, { size: '4xl' });
72
+ const h2 = container.querySelector('h2');
73
+ expect(h2?.classList.contains('text-4xl')).toBe(true);
74
+ });
75
+ });
76
+ describe('variant prop', () => {
77
+ it('applies default variant classes', () => {
78
+ const { container } = render(Heading, { variant: 'default' });
79
+ const h2 = container.querySelector('h2');
80
+ expect(h2?.classList.contains('text-gray-900')).toBe(true);
81
+ });
82
+ it('applies muted variant classes', () => {
83
+ const { container } = render(Heading, { variant: 'muted' });
84
+ const h2 = container.querySelector('h2');
85
+ expect(h2?.classList.contains('text-gray-600')).toBe(true);
86
+ });
87
+ it('applies primary variant classes', () => {
88
+ const { container } = render(Heading, { variant: 'primary' });
89
+ const h2 = container.querySelector('h2');
90
+ expect(h2?.classList.contains('text-primary')).toBe(true);
91
+ });
92
+ });
93
+ describe('weight prop', () => {
94
+ it('applies font-medium for weight="medium"', () => {
95
+ const { container } = render(Heading, { weight: 'medium' });
96
+ const h2 = container.querySelector('h2');
97
+ expect(h2?.classList.contains('font-medium')).toBe(true);
98
+ });
99
+ it('applies font-semibold for weight="semibold"', () => {
100
+ const { container } = render(Heading, { weight: 'semibold' });
101
+ const h2 = container.querySelector('h2');
102
+ expect(h2?.classList.contains('font-semibold')).toBe(true);
103
+ });
104
+ it('applies font-bold for weight="bold"', () => {
105
+ const { container } = render(Heading, { weight: 'bold' });
106
+ const h2 = container.querySelector('h2');
107
+ expect(h2?.classList.contains('font-bold')).toBe(true);
108
+ });
109
+ });
110
+ describe('class prop', () => {
111
+ it('applies custom classes', () => {
112
+ const { container } = render(Heading, { class: 'custom-class' });
113
+ const h2 = container.querySelector('h2');
114
+ expect(h2?.classList.contains('custom-class')).toBe(true);
115
+ });
116
+ it('preserves default classes when adding custom classes', () => {
117
+ const { container } = render(Heading, { class: 'custom-class' });
118
+ const h2 = container.querySelector('h2');
119
+ expect(h2?.classList.contains('text-2xl')).toBe(true);
120
+ expect(h2?.classList.contains('custom-class')).toBe(true);
121
+ });
122
+ });
123
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ShowOnDesktop.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShowOnDesktop.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/ShowOnDesktop.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { render } from '@testing-library/svelte';
3
+ import ShowOnDesktop from '../ShowOnDesktop.svelte';
4
+ describe('ShowOnDesktop', () => {
5
+ describe('basic rendering', () => {
6
+ it('renders a div element', () => {
7
+ const { container } = render(ShowOnDesktop);
8
+ expect(container.querySelector('div')).toBeTruthy();
9
+ });
10
+ it('applies hidden and lg:block by default', () => {
11
+ const { container } = render(ShowOnDesktop);
12
+ const div = container.querySelector('div');
13
+ expect(div?.classList.contains('hidden')).toBe(true);
14
+ expect(div?.classList.contains('lg:block')).toBe(true);
15
+ });
16
+ });
17
+ describe('breakpoint prop', () => {
18
+ it('applies sm:block for breakpoint="sm"', () => {
19
+ const { container } = render(ShowOnDesktop, { breakpoint: 'sm' });
20
+ const div = container.querySelector('div');
21
+ expect(div?.classList.contains('hidden')).toBe(true);
22
+ expect(div?.classList.contains('sm:block')).toBe(true);
23
+ });
24
+ it('applies md:block for breakpoint="md"', () => {
25
+ const { container } = render(ShowOnDesktop, { breakpoint: 'md' });
26
+ const div = container.querySelector('div');
27
+ expect(div?.classList.contains('hidden')).toBe(true);
28
+ expect(div?.classList.contains('md:block')).toBe(true);
29
+ });
30
+ it('applies lg:block for breakpoint="lg"', () => {
31
+ const { container } = render(ShowOnDesktop, { breakpoint: 'lg' });
32
+ const div = container.querySelector('div');
33
+ expect(div?.classList.contains('hidden')).toBe(true);
34
+ expect(div?.classList.contains('lg:block')).toBe(true);
35
+ });
36
+ it('applies xl:block for breakpoint="xl"', () => {
37
+ const { container } = render(ShowOnDesktop, { breakpoint: 'xl' });
38
+ const div = container.querySelector('div');
39
+ expect(div?.classList.contains('hidden')).toBe(true);
40
+ expect(div?.classList.contains('xl:block')).toBe(true);
41
+ });
42
+ });
43
+ describe('display prop', () => {
44
+ it('applies block display by default', () => {
45
+ const { container } = render(ShowOnDesktop);
46
+ const div = container.querySelector('div');
47
+ expect(div?.classList.contains('lg:block')).toBe(true);
48
+ });
49
+ it('applies flex display for display="flex"', () => {
50
+ const { container } = render(ShowOnDesktop, { display: 'flex' });
51
+ const div = container.querySelector('div');
52
+ expect(div?.classList.contains('lg:flex')).toBe(true);
53
+ });
54
+ it('applies grid display for display="grid"', () => {
55
+ const { container } = render(ShowOnDesktop, { display: 'grid' });
56
+ const div = container.querySelector('div');
57
+ expect(div?.classList.contains('lg:grid')).toBe(true);
58
+ });
59
+ it('applies inline display for display="inline"', () => {
60
+ const { container } = render(ShowOnDesktop, { display: 'inline' });
61
+ const div = container.querySelector('div');
62
+ expect(div?.classList.contains('lg:inline')).toBe(true);
63
+ });
64
+ it('applies inline-block display for display="inline-block"', () => {
65
+ const { container } = render(ShowOnDesktop, { display: 'inline-block' });
66
+ const div = container.querySelector('div');
67
+ expect(div?.classList.contains('lg:inline-block')).toBe(true);
68
+ });
69
+ });
70
+ describe('class prop', () => {
71
+ it('applies custom classes', () => {
72
+ const { container } = render(ShowOnDesktop, { class: 'custom-class' });
73
+ const div = container.querySelector('div');
74
+ expect(div?.classList.contains('custom-class')).toBe(true);
75
+ });
76
+ it('preserves default classes when adding custom classes', () => {
77
+ const { container } = render(ShowOnDesktop, { class: 'custom-class' });
78
+ const div = container.querySelector('div');
79
+ expect(div?.classList.contains('hidden')).toBe(true);
80
+ expect(div?.classList.contains('lg:block')).toBe(true);
81
+ expect(div?.classList.contains('custom-class')).toBe(true);
82
+ });
83
+ });
84
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ShowOnMobile.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShowOnMobile.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/ShowOnMobile.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { render } from '@testing-library/svelte';
3
+ import ShowOnMobile from '../ShowOnMobile.svelte';
4
+ describe('ShowOnMobile', () => {
5
+ describe('basic rendering', () => {
6
+ it('renders a div element', () => {
7
+ const { container } = render(ShowOnMobile);
8
+ expect(container.querySelector('div')).toBeTruthy();
9
+ });
10
+ it('applies block display and lg:hidden by default', () => {
11
+ const { container } = render(ShowOnMobile);
12
+ const div = container.querySelector('div');
13
+ expect(div?.classList.contains('block')).toBe(true);
14
+ expect(div?.classList.contains('lg:hidden')).toBe(true);
15
+ });
16
+ });
17
+ describe('breakpoint prop', () => {
18
+ it('applies sm:hidden for breakpoint="sm"', () => {
19
+ const { container } = render(ShowOnMobile, { breakpoint: 'sm' });
20
+ const div = container.querySelector('div');
21
+ expect(div?.classList.contains('sm:hidden')).toBe(true);
22
+ });
23
+ it('applies md:hidden for breakpoint="md"', () => {
24
+ const { container } = render(ShowOnMobile, { breakpoint: 'md' });
25
+ const div = container.querySelector('div');
26
+ expect(div?.classList.contains('md:hidden')).toBe(true);
27
+ });
28
+ it('applies lg:hidden for breakpoint="lg"', () => {
29
+ const { container } = render(ShowOnMobile, { breakpoint: 'lg' });
30
+ const div = container.querySelector('div');
31
+ expect(div?.classList.contains('lg:hidden')).toBe(true);
32
+ });
33
+ it('applies xl:hidden for breakpoint="xl"', () => {
34
+ const { container } = render(ShowOnMobile, { breakpoint: 'xl' });
35
+ const div = container.querySelector('div');
36
+ expect(div?.classList.contains('xl:hidden')).toBe(true);
37
+ });
38
+ });
39
+ describe('display prop', () => {
40
+ it('applies block display by default', () => {
41
+ const { container } = render(ShowOnMobile);
42
+ const div = container.querySelector('div');
43
+ expect(div?.classList.contains('block')).toBe(true);
44
+ });
45
+ it('applies flex display for display="flex"', () => {
46
+ const { container } = render(ShowOnMobile, { display: 'flex' });
47
+ const div = container.querySelector('div');
48
+ expect(div?.classList.contains('flex')).toBe(true);
49
+ });
50
+ it('applies grid display for display="grid"', () => {
51
+ const { container } = render(ShowOnMobile, { display: 'grid' });
52
+ const div = container.querySelector('div');
53
+ expect(div?.classList.contains('grid')).toBe(true);
54
+ });
55
+ it('applies inline display for display="inline"', () => {
56
+ const { container } = render(ShowOnMobile, { display: 'inline' });
57
+ const div = container.querySelector('div');
58
+ expect(div?.classList.contains('inline')).toBe(true);
59
+ });
60
+ it('applies inline-block display for display="inline-block"', () => {
61
+ const { container } = render(ShowOnMobile, { display: 'inline-block' });
62
+ const div = container.querySelector('div');
63
+ expect(div?.classList.contains('inline-block')).toBe(true);
64
+ });
65
+ });
66
+ describe('class prop', () => {
67
+ it('applies custom classes', () => {
68
+ const { container } = render(ShowOnMobile, { class: 'custom-class' });
69
+ const div = container.querySelector('div');
70
+ expect(div?.classList.contains('custom-class')).toBe(true);
71
+ });
72
+ it('preserves default classes when adding custom classes', () => {
73
+ const { container } = render(ShowOnMobile, { class: 'custom-class' });
74
+ const div = container.querySelector('div');
75
+ expect(div?.classList.contains('block')).toBe(true);
76
+ expect(div?.classList.contains('lg:hidden')).toBe(true);
77
+ expect(div?.classList.contains('custom-class')).toBe(true);
78
+ });
79
+ });
80
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Text.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/Text.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,146 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { render } from '@testing-library/svelte';
3
+ import Text from '../Text.svelte';
4
+ describe('Text', () => {
5
+ describe('basic rendering', () => {
6
+ it('renders as a p element by default', () => {
7
+ const { container } = render(Text);
8
+ expect(container.querySelector('p')).toBeTruthy();
9
+ });
10
+ it('applies primary variant classes by default', () => {
11
+ const { container } = render(Text);
12
+ const p = container.querySelector('p');
13
+ expect(p?.classList.contains('text-gray-900')).toBe(true);
14
+ });
15
+ it('applies base size class by default', () => {
16
+ const { container } = render(Text);
17
+ const p = container.querySelector('p');
18
+ expect(p?.classList.contains('text-base')).toBe(true);
19
+ });
20
+ });
21
+ describe('variant prop', () => {
22
+ it('applies primary variant classes', () => {
23
+ const { container } = render(Text, { variant: 'primary' });
24
+ const p = container.querySelector('p');
25
+ expect(p?.classList.contains('text-gray-900')).toBe(true);
26
+ });
27
+ it('applies secondary variant classes', () => {
28
+ const { container } = render(Text, { variant: 'secondary' });
29
+ const p = container.querySelector('p');
30
+ expect(p?.classList.contains('text-gray-500')).toBe(true);
31
+ });
32
+ it('applies muted variant classes', () => {
33
+ const { container } = render(Text, { variant: 'muted' });
34
+ const p = container.querySelector('p');
35
+ expect(p?.classList.contains('text-gray-400')).toBe(true);
36
+ });
37
+ it('applies error variant classes', () => {
38
+ const { container } = render(Text, { variant: 'error' });
39
+ const p = container.querySelector('p');
40
+ expect(p?.classList.contains('text-red-600')).toBe(true);
41
+ });
42
+ it('applies success variant classes', () => {
43
+ const { container } = render(Text, { variant: 'success' });
44
+ const p = container.querySelector('p');
45
+ expect(p?.classList.contains('text-green-600')).toBe(true);
46
+ });
47
+ it('applies warning variant classes', () => {
48
+ const { container } = render(Text, { variant: 'warning' });
49
+ const p = container.querySelector('p');
50
+ expect(p?.classList.contains('text-yellow-600')).toBe(true);
51
+ });
52
+ it('applies info variant classes', () => {
53
+ const { container } = render(Text, { variant: 'info' });
54
+ const p = container.querySelector('p');
55
+ expect(p?.classList.contains('text-blue-600')).toBe(true);
56
+ });
57
+ });
58
+ describe('size prop', () => {
59
+ it('applies text-xs for size="xs"', () => {
60
+ const { container } = render(Text, { size: 'xs' });
61
+ const p = container.querySelector('p');
62
+ expect(p?.classList.contains('text-xs')).toBe(true);
63
+ });
64
+ it('applies text-sm for size="sm"', () => {
65
+ const { container } = render(Text, { size: 'sm' });
66
+ const p = container.querySelector('p');
67
+ expect(p?.classList.contains('text-sm')).toBe(true);
68
+ });
69
+ it('applies text-lg for size="lg"', () => {
70
+ const { container } = render(Text, { size: 'lg' });
71
+ const p = container.querySelector('p');
72
+ expect(p?.classList.contains('text-lg')).toBe(true);
73
+ });
74
+ it('applies text-xl for size="xl"', () => {
75
+ const { container } = render(Text, { size: 'xl' });
76
+ const p = container.querySelector('p');
77
+ expect(p?.classList.contains('text-xl')).toBe(true);
78
+ });
79
+ });
80
+ describe('as prop', () => {
81
+ it('renders as p by default', () => {
82
+ const { container } = render(Text);
83
+ expect(container.querySelector('p')).toBeTruthy();
84
+ });
85
+ it('renders as span when as="span"', () => {
86
+ const { container } = render(Text, { as: 'span' });
87
+ expect(container.querySelector('span')).toBeTruthy();
88
+ });
89
+ it('renders as div when as="div"', () => {
90
+ const { container } = render(Text, { as: 'div' });
91
+ expect(container.querySelector('div')).toBeTruthy();
92
+ });
93
+ it('renders as label when as="label"', () => {
94
+ const { container } = render(Text, { as: 'label' });
95
+ expect(container.querySelector('label')).toBeTruthy();
96
+ });
97
+ });
98
+ describe('weight prop', () => {
99
+ it('applies font-normal by default', () => {
100
+ const { container } = render(Text);
101
+ const p = container.querySelector('p');
102
+ expect(p?.classList.contains('font-normal')).toBe(true);
103
+ });
104
+ it('applies font-medium for weight="medium"', () => {
105
+ const { container } = render(Text, { weight: 'medium' });
106
+ const p = container.querySelector('p');
107
+ expect(p?.classList.contains('font-medium')).toBe(true);
108
+ });
109
+ it('applies font-semibold for weight="semibold"', () => {
110
+ const { container } = render(Text, { weight: 'semibold' });
111
+ const p = container.querySelector('p');
112
+ expect(p?.classList.contains('font-semibold')).toBe(true);
113
+ });
114
+ it('applies font-bold for weight="bold"', () => {
115
+ const { container } = render(Text, { weight: 'bold' });
116
+ const p = container.querySelector('p');
117
+ expect(p?.classList.contains('font-bold')).toBe(true);
118
+ });
119
+ });
120
+ describe('truncate prop', () => {
121
+ it('does not apply truncate class by default', () => {
122
+ const { container } = render(Text);
123
+ const p = container.querySelector('p');
124
+ expect(p?.classList.contains('truncate')).toBe(false);
125
+ });
126
+ it('applies truncate class when truncate=true', () => {
127
+ const { container } = render(Text, { truncate: true });
128
+ const p = container.querySelector('p');
129
+ expect(p?.classList.contains('truncate')).toBe(true);
130
+ });
131
+ });
132
+ describe('class prop', () => {
133
+ it('applies custom classes', () => {
134
+ const { container } = render(Text, { class: 'custom-class' });
135
+ const p = container.querySelector('p');
136
+ expect(p?.classList.contains('custom-class')).toBe(true);
137
+ });
138
+ it('preserves default classes when adding custom classes', () => {
139
+ const { container } = render(Text, { class: 'custom-class' });
140
+ const p = container.querySelector('p');
141
+ expect(p?.classList.contains('text-gray-900')).toBe(true);
142
+ expect(p?.classList.contains('text-base')).toBe(true);
143
+ expect(p?.classList.contains('custom-class')).toBe(true);
144
+ });
145
+ });
146
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TwoColumn.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwoColumn.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/TwoColumn.test.ts"],"names":[],"mappings":""}