@getmicdrop/svelte-components 5.4.0 → 5.4.2

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 (417) hide show
  1. package/dist/calendar/PublicCard/PublicCard.svelte +1 -0
  2. package/dist/calendar/PublicCard/PublicCard.svelte.d.ts.map +1 -1
  3. package/dist/calendar/index.d.ts +9 -0
  4. package/dist/calendar/index.d.ts.map +1 -0
  5. package/dist/calendar/index.js +15 -0
  6. package/dist/components/Layout/Grid.spec.d.ts +2 -0
  7. package/dist/components/Layout/Grid.spec.d.ts.map +1 -0
  8. package/dist/components/Layout/Grid.spec.js +230 -0
  9. package/dist/components/Layout/Grid.svelte +19 -27
  10. package/dist/components/Layout/Grid.svelte.d.ts +16 -6
  11. package/dist/components/Layout/Grid.svelte.d.ts.map +1 -1
  12. package/dist/components/Layout/Stack.spec.d.ts +2 -0
  13. package/dist/components/Layout/Stack.spec.d.ts.map +1 -0
  14. package/dist/components/Layout/Stack.spec.js +257 -0
  15. package/dist/components/Layout/Stack.svelte +13 -51
  16. package/dist/components/Layout/Stack.svelte.d.ts +4 -6
  17. package/dist/components/Layout/Stack.svelte.d.ts.map +1 -1
  18. package/dist/components/Layout/__tests__/Grid.test.d.ts +2 -0
  19. package/dist/components/Layout/__tests__/Grid.test.d.ts.map +1 -0
  20. package/dist/components/Layout/__tests__/Grid.test.js +246 -0
  21. package/dist/components/Layout/__tests__/Stack.test.d.ts +2 -0
  22. package/dist/components/Layout/__tests__/Stack.test.d.ts.map +1 -0
  23. package/dist/components/Layout/__tests__/Stack.test.js +267 -0
  24. package/dist/constants/formOptions.spec.d.ts.map +1 -1
  25. package/dist/constants/formOptions.spec.js +69 -82
  26. package/dist/datetime/__tests__/format.test.js +81 -1
  27. package/dist/datetime/format.d.ts +74 -0
  28. package/dist/datetime/format.d.ts.map +1 -1
  29. package/dist/datetime/format.js +104 -0
  30. package/dist/datetime/index.d.ts +1 -1
  31. package/dist/datetime/index.d.ts.map +1 -1
  32. package/dist/datetime/index.js +1 -1
  33. package/dist/datetime/timezone.d.ts.map +1 -1
  34. package/dist/datetime/timezone.js +2 -0
  35. package/dist/datetime/types.d.ts +4 -0
  36. package/dist/datetime/types.d.ts.map +1 -1
  37. package/dist/forms/createFormStore.svelte.d.ts.map +1 -1
  38. package/dist/forms/createFormStore.svelte.js +3 -2
  39. package/dist/index.d.ts +4 -112
  40. package/dist/index.js +8 -184
  41. package/dist/index.spec.d.ts +2 -0
  42. package/dist/index.spec.d.ts.map +1 -0
  43. package/dist/index.spec.js +370 -0
  44. package/dist/patterns/data/DataTable.svelte +2 -2
  45. package/dist/patterns/data/index.d.ts +4 -0
  46. package/dist/patterns/data/index.d.ts.map +1 -0
  47. package/dist/patterns/data/index.js +4 -0
  48. package/dist/patterns/forms/FormValidationSummary.spec.d.ts.map +1 -1
  49. package/dist/patterns/forms/FormValidationSummary.spec.js +162 -184
  50. package/dist/patterns/forms/FormValidationSummary.stories.svelte +6 -6
  51. package/dist/patterns/forms/FormValidationSummary.svelte +11 -4
  52. package/dist/patterns/forms/FormValidationSummary.svelte.d.ts +8 -16
  53. package/dist/patterns/forms/FormValidationSummary.svelte.d.ts.map +1 -1
  54. package/dist/patterns/forms/index.d.ts +5 -0
  55. package/dist/patterns/forms/index.d.ts.map +1 -0
  56. package/dist/patterns/forms/index.js +5 -0
  57. package/dist/patterns/index.d.ts +6 -0
  58. package/dist/patterns/index.d.ts.map +1 -0
  59. package/dist/patterns/index.js +18 -0
  60. package/dist/patterns/layout/Stack.svelte +50 -34
  61. package/dist/patterns/layout/Stack.svelte.d.ts +35 -21
  62. package/dist/patterns/layout/Stack.svelte.d.ts.map +1 -1
  63. package/dist/patterns/layout/index.d.ts +5 -0
  64. package/dist/patterns/layout/index.d.ts.map +1 -0
  65. package/dist/patterns/layout/index.js +6 -0
  66. package/dist/patterns/navigation/BottomNav.spec.d.ts.map +1 -1
  67. package/dist/patterns/navigation/BottomNav.spec.js +85 -111
  68. package/dist/patterns/navigation/BottomNav.svelte +15 -5
  69. package/dist/patterns/navigation/BottomNav.svelte.d.ts +10 -10
  70. package/dist/patterns/navigation/BottomNav.svelte.d.ts.map +1 -1
  71. package/dist/patterns/navigation/Header.spec.d.ts.map +1 -1
  72. package/dist/patterns/navigation/Header.spec.js +147 -189
  73. package/dist/patterns/navigation/Header.svelte +20 -5
  74. package/dist/patterns/navigation/Header.svelte.d.ts +12 -19
  75. package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
  76. package/dist/patterns/navigation/index.d.ts +3 -0
  77. package/dist/patterns/navigation/index.d.ts.map +1 -0
  78. package/dist/patterns/navigation/index.js +3 -0
  79. package/dist/patterns/page/PageHeader.svelte +17 -4
  80. package/dist/patterns/page/PageHeader.svelte.d.ts +12 -18
  81. package/dist/patterns/page/PageHeader.svelte.d.ts.map +1 -1
  82. package/dist/patterns/page/PageLoader.svelte +14 -2
  83. package/dist/patterns/page/PageLoader.svelte.d.ts +9 -20
  84. package/dist/patterns/page/PageLoader.svelte.d.ts.map +1 -1
  85. package/dist/patterns/page/SectionHeader.svelte +12 -2
  86. package/dist/patterns/page/SectionHeader.svelte.d.ts +8 -17
  87. package/dist/patterns/page/SectionHeader.svelte.d.ts.map +1 -1
  88. package/dist/patterns/page/index.d.ts +5 -0
  89. package/dist/patterns/page/index.d.ts.map +1 -0
  90. package/dist/patterns/page/index.js +5 -0
  91. package/dist/primitives/Accordion/Accordion.svelte +3 -2
  92. package/dist/primitives/Accordion/Accordion.svelte.d.ts.map +1 -1
  93. package/dist/primitives/Alert/Alert.svelte +10 -11
  94. package/dist/primitives/Alert/Alert.svelte.d.ts +2 -1
  95. package/dist/primitives/Alert/Alert.svelte.d.ts.map +1 -1
  96. package/dist/primitives/Badges/Badge.svelte +15 -58
  97. package/dist/primitives/Badges/Badge.svelte.d.ts +4 -2
  98. package/dist/primitives/Badges/Badge.svelte.d.ts.map +1 -1
  99. package/dist/primitives/Button/Button.svelte +37 -69
  100. package/dist/primitives/Button/Button.svelte.d.ts +10 -26
  101. package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
  102. package/dist/primitives/Drawer/Drawer.stories.svelte +10 -10
  103. package/dist/primitives/Drawer/Drawer.svelte +32 -10
  104. package/dist/primitives/Drawer/Drawer.svelte.d.ts +12 -31
  105. package/dist/primitives/Drawer/Drawer.svelte.d.ts.map +1 -1
  106. package/dist/primitives/Dropdown/Dropdown.svelte +29 -17
  107. package/dist/primitives/Dropdown/Dropdown.svelte.d.ts +9 -18
  108. package/dist/primitives/Dropdown/Dropdown.svelte.d.ts.map +1 -1
  109. package/dist/primitives/Icons/ArrowLeft.svelte +3 -2
  110. package/dist/primitives/Icons/ArrowLeft.svelte.d.ts +2 -0
  111. package/dist/primitives/Icons/ArrowLeft.svelte.d.ts.map +1 -1
  112. package/dist/primitives/Icons/ArrowRight.svelte +3 -2
  113. package/dist/primitives/Icons/ArrowRight.svelte.d.ts +2 -0
  114. package/dist/primitives/Icons/ArrowRight.svelte.d.ts.map +1 -1
  115. package/dist/primitives/Icons/Availability.svelte +8 -7
  116. package/dist/primitives/Icons/Availability.svelte.d.ts +2 -0
  117. package/dist/primitives/Icons/Availability.svelte.d.ts.map +1 -1
  118. package/dist/primitives/Icons/Back.svelte +8 -7
  119. package/dist/primitives/Icons/Back.svelte.d.ts +2 -0
  120. package/dist/primitives/Icons/Back.svelte.d.ts.map +1 -1
  121. package/dist/primitives/Icons/CheckCircle.svelte +8 -7
  122. package/dist/primitives/Icons/CheckCircle.svelte.d.ts +2 -0
  123. package/dist/primitives/Icons/CheckCircle.svelte.d.ts.map +1 -1
  124. package/dist/primitives/Icons/CheckCircleOutline.svelte +3 -2
  125. package/dist/primitives/Icons/CheckCircleOutline.svelte.d.ts +2 -0
  126. package/dist/primitives/Icons/CheckCircleOutline.svelte.d.ts.map +1 -1
  127. package/dist/primitives/Icons/CheckCircleSolid.svelte +12 -10
  128. package/dist/primitives/Icons/CheckCircleSolid.svelte.d.ts +4 -0
  129. package/dist/primitives/Icons/CheckCircleSolid.svelte.d.ts.map +1 -1
  130. package/dist/primitives/Icons/CheckOutline.svelte +15 -13
  131. package/dist/primitives/Icons/CheckOutline.svelte.d.ts +4 -0
  132. package/dist/primitives/Icons/CheckOutline.svelte.d.ts.map +1 -1
  133. package/dist/primitives/Icons/ChevronDownOutline.svelte +14 -12
  134. package/dist/primitives/Icons/ChevronDownOutline.svelte.d.ts +4 -0
  135. package/dist/primitives/Icons/ChevronDownOutline.svelte.d.ts.map +1 -1
  136. package/dist/primitives/Icons/ChevronLeft.svelte +8 -7
  137. package/dist/primitives/Icons/ChevronLeft.svelte.d.ts +2 -0
  138. package/dist/primitives/Icons/ChevronLeft.svelte.d.ts.map +1 -1
  139. package/dist/primitives/Icons/ChevronLeftOutline.svelte +14 -12
  140. package/dist/primitives/Icons/ChevronLeftOutline.svelte.d.ts +4 -0
  141. package/dist/primitives/Icons/ChevronLeftOutline.svelte.d.ts.map +1 -1
  142. package/dist/primitives/Icons/ChevronRight.svelte +8 -7
  143. package/dist/primitives/Icons/ChevronRight.svelte.d.ts +2 -0
  144. package/dist/primitives/Icons/ChevronRight.svelte.d.ts.map +1 -1
  145. package/dist/primitives/Icons/ChevronRightOutline.svelte +14 -12
  146. package/dist/primitives/Icons/ChevronRightOutline.svelte.d.ts +4 -0
  147. package/dist/primitives/Icons/ChevronRightOutline.svelte.d.ts.map +1 -1
  148. package/dist/primitives/Icons/ChevronUpOutline.svelte +14 -12
  149. package/dist/primitives/Icons/ChevronUpOutline.svelte.d.ts +4 -0
  150. package/dist/primitives/Icons/ChevronUpOutline.svelte.d.ts.map +1 -1
  151. package/dist/primitives/Icons/CloseCircleOutline.svelte +14 -12
  152. package/dist/primitives/Icons/CloseCircleOutline.svelte.d.ts +4 -0
  153. package/dist/primitives/Icons/CloseCircleOutline.svelte.d.ts.map +1 -1
  154. package/dist/primitives/Icons/CloseOutline.svelte +14 -12
  155. package/dist/primitives/Icons/CloseOutline.svelte.d.ts +4 -0
  156. package/dist/primitives/Icons/CloseOutline.svelte.d.ts.map +1 -1
  157. package/dist/primitives/Icons/Copy.svelte +3 -2
  158. package/dist/primitives/Icons/Copy.svelte.d.ts +2 -0
  159. package/dist/primitives/Icons/Copy.svelte.d.ts.map +1 -1
  160. package/dist/primitives/Icons/Cross.svelte +3 -2
  161. package/dist/primitives/Icons/Cross.svelte.d.ts +2 -0
  162. package/dist/primitives/Icons/Cross.svelte.d.ts.map +1 -1
  163. package/dist/primitives/Icons/DotsHorizontalOutline.svelte +12 -10
  164. package/dist/primitives/Icons/DotsHorizontalOutline.svelte.d.ts +4 -0
  165. package/dist/primitives/Icons/DotsHorizontalOutline.svelte.d.ts.map +1 -1
  166. package/dist/primitives/Icons/DownArrow.svelte +3 -2
  167. package/dist/primitives/Icons/DownArrow.svelte.d.ts +2 -0
  168. package/dist/primitives/Icons/DownArrow.svelte.d.ts.map +1 -1
  169. package/dist/primitives/Icons/ErrorCircle.svelte +8 -7
  170. package/dist/primitives/Icons/ErrorCircle.svelte.d.ts +2 -0
  171. package/dist/primitives/Icons/ErrorCircle.svelte.d.ts.map +1 -1
  172. package/dist/primitives/Icons/ExclamationCircleOutline.svelte +14 -12
  173. package/dist/primitives/Icons/ExclamationCircleOutline.svelte.d.ts +4 -0
  174. package/dist/primitives/Icons/ExclamationCircleOutline.svelte.d.ts.map +1 -1
  175. package/dist/primitives/Icons/ExclamationTriangleOutline.svelte +14 -12
  176. package/dist/primitives/Icons/ExclamationTriangleOutline.svelte.d.ts +4 -0
  177. package/dist/primitives/Icons/ExclamationTriangleOutline.svelte.d.ts.map +1 -1
  178. package/dist/primitives/Icons/EyeOutline.svelte +14 -12
  179. package/dist/primitives/Icons/EyeOutline.svelte.d.ts +4 -0
  180. package/dist/primitives/Icons/EyeOutline.svelte.d.ts.map +1 -1
  181. package/dist/primitives/Icons/EyeSlashOutline.svelte +14 -12
  182. package/dist/primitives/Icons/EyeSlashOutline.svelte.d.ts +4 -0
  183. package/dist/primitives/Icons/EyeSlashOutline.svelte.d.ts.map +1 -1
  184. package/dist/primitives/Icons/FacebookIcon.svelte +3 -1
  185. package/dist/primitives/Icons/FacebookIcon.svelte.d.ts +2 -0
  186. package/dist/primitives/Icons/FacebookIcon.svelte.d.ts.map +1 -1
  187. package/dist/primitives/Icons/FileCopyOutline.svelte +14 -12
  188. package/dist/primitives/Icons/FileCopyOutline.svelte.d.ts +4 -0
  189. package/dist/primitives/Icons/FileCopyOutline.svelte.d.ts.map +1 -1
  190. package/dist/primitives/Icons/Home.svelte +3 -2
  191. package/dist/primitives/Icons/Home.svelte.d.ts +2 -0
  192. package/dist/primitives/Icons/Home.svelte.d.ts.map +1 -1
  193. package/dist/primitives/Icons/HomeSolid.svelte +12 -10
  194. package/dist/primitives/Icons/HomeSolid.svelte.d.ts +4 -0
  195. package/dist/primitives/Icons/HomeSolid.svelte.d.ts.map +1 -1
  196. package/dist/primitives/Icons/Icon.spec.js +2 -2
  197. package/dist/primitives/Icons/Icon.svelte +19 -3
  198. package/dist/primitives/Icons/Icon.svelte.d.ts +5 -3
  199. package/dist/primitives/Icons/Icon.svelte.d.ts.map +1 -1
  200. package/dist/primitives/Icons/Icons.spec.d.ts +8 -0
  201. package/dist/primitives/Icons/Icons.spec.d.ts.map +1 -0
  202. package/dist/primitives/Icons/Icons.spec.js +291 -0
  203. package/dist/primitives/Icons/ImageOutline.svelte +5 -3
  204. package/dist/primitives/Icons/ImageOutline.svelte.d.ts +6 -2
  205. package/dist/primitives/Icons/ImageOutline.svelte.d.ts.map +1 -1
  206. package/dist/primitives/Icons/Info.svelte +3 -2
  207. package/dist/primitives/Icons/Info.svelte.d.ts +2 -0
  208. package/dist/primitives/Icons/Info.svelte.d.ts.map +1 -1
  209. package/dist/primitives/Icons/InfoCircleOutline.svelte +14 -12
  210. package/dist/primitives/Icons/InfoCircleOutline.svelte.d.ts +4 -0
  211. package/dist/primitives/Icons/InfoCircleOutline.svelte.d.ts.map +1 -1
  212. package/dist/primitives/Icons/InstagramIcon.svelte +3 -1
  213. package/dist/primitives/Icons/InstagramIcon.svelte.d.ts +2 -0
  214. package/dist/primitives/Icons/InstagramIcon.svelte.d.ts.map +1 -1
  215. package/dist/primitives/Icons/LogoInstagram.svelte +3 -3
  216. package/dist/primitives/Icons/LogoInstagram.svelte.d.ts +4 -2
  217. package/dist/primitives/Icons/LogoInstagram.svelte.d.ts.map +1 -1
  218. package/dist/primitives/Icons/Message.svelte +3 -2
  219. package/dist/primitives/Icons/Message.svelte.d.ts +2 -0
  220. package/dist/primitives/Icons/Message.svelte.d.ts.map +1 -1
  221. package/dist/primitives/Icons/MinusOutline.svelte +14 -12
  222. package/dist/primitives/Icons/MinusOutline.svelte.d.ts +4 -0
  223. package/dist/primitives/Icons/MinusOutline.svelte.d.ts.map +1 -1
  224. package/dist/primitives/Icons/MoonIcon.svelte +3 -1
  225. package/dist/primitives/Icons/MoonIcon.svelte.d.ts +2 -0
  226. package/dist/primitives/Icons/MoonIcon.svelte.d.ts.map +1 -1
  227. package/dist/primitives/Icons/More.svelte +8 -7
  228. package/dist/primitives/Icons/More.svelte.d.ts +2 -0
  229. package/dist/primitives/Icons/More.svelte.d.ts.map +1 -1
  230. package/dist/primitives/Icons/MoreHori.spec.js +3 -3
  231. package/dist/primitives/Icons/MoreHori.svelte +3 -2
  232. package/dist/primitives/Icons/MoreHori.svelte.d.ts +2 -0
  233. package/dist/primitives/Icons/MoreHori.svelte.d.ts.map +1 -1
  234. package/dist/primitives/Icons/Notification.svelte +8 -7
  235. package/dist/primitives/Icons/Notification.svelte.d.ts +2 -0
  236. package/dist/primitives/Icons/Notification.svelte.d.ts.map +1 -1
  237. package/dist/primitives/Icons/Payment.svelte +8 -7
  238. package/dist/primitives/Icons/Payment.svelte.d.ts +2 -0
  239. package/dist/primitives/Icons/Payment.svelte.d.ts.map +1 -1
  240. package/dist/primitives/Icons/PlusOutline.svelte +14 -12
  241. package/dist/primitives/Icons/PlusOutline.svelte.d.ts +4 -0
  242. package/dist/primitives/Icons/PlusOutline.svelte.d.ts.map +1 -1
  243. package/dist/primitives/Icons/Profile.svelte +8 -7
  244. package/dist/primitives/Icons/Profile.svelte.d.ts +2 -0
  245. package/dist/primitives/Icons/Profile.svelte.d.ts.map +1 -1
  246. package/dist/primitives/Icons/Reload.svelte +3 -2
  247. package/dist/primitives/Icons/Reload.svelte.d.ts +2 -0
  248. package/dist/primitives/Icons/Reload.svelte.d.ts.map +1 -1
  249. package/dist/primitives/Icons/SearchOutline.svelte +14 -12
  250. package/dist/primitives/Icons/SearchOutline.svelte.d.ts +4 -0
  251. package/dist/primitives/Icons/SearchOutline.svelte.d.ts.map +1 -1
  252. package/dist/primitives/Icons/ShareOutline.svelte +14 -12
  253. package/dist/primitives/Icons/ShareOutline.svelte.d.ts +4 -0
  254. package/dist/primitives/Icons/ShareOutline.svelte.d.ts.map +1 -1
  255. package/dist/primitives/Icons/Shows.svelte +8 -7
  256. package/dist/primitives/Icons/Shows.svelte.d.ts +2 -0
  257. package/dist/primitives/Icons/Shows.svelte.d.ts.map +1 -1
  258. package/dist/primitives/Icons/Signout.svelte +8 -7
  259. package/dist/primitives/Icons/Signout.svelte.d.ts +2 -0
  260. package/dist/primitives/Icons/Signout.svelte.d.ts.map +1 -1
  261. package/dist/primitives/Icons/SunIcon.svelte +3 -1
  262. package/dist/primitives/Icons/SunIcon.svelte.d.ts +2 -0
  263. package/dist/primitives/Icons/SunIcon.svelte.d.ts.map +1 -1
  264. package/dist/primitives/Icons/TiktokIcon.svelte +3 -1
  265. package/dist/primitives/Icons/TiktokIcon.svelte.d.ts +2 -0
  266. package/dist/primitives/Icons/TiktokIcon.svelte.d.ts.map +1 -1
  267. package/dist/primitives/Icons/TrashBinOutline.svelte +5 -3
  268. package/dist/primitives/Icons/TrashBinOutline.svelte.d.ts +6 -2
  269. package/dist/primitives/Icons/TrashBinOutline.svelte.d.ts.map +1 -1
  270. package/dist/primitives/Icons/TwitterIcon.svelte +3 -1
  271. package/dist/primitives/Icons/TwitterIcon.svelte.d.ts +2 -0
  272. package/dist/primitives/Icons/TwitterIcon.svelte.d.ts.map +1 -1
  273. package/dist/primitives/Icons/WarningIcon.spec.js +4 -4
  274. package/dist/primitives/Icons/WarningIcon.svelte +6 -6
  275. package/dist/primitives/Icons/WarningIcon.svelte.d.ts +6 -2
  276. package/dist/primitives/Icons/WarningIcon.svelte.d.ts.map +1 -1
  277. package/dist/primitives/Icons/iconTestUtils.d.ts +162 -0
  278. package/dist/primitives/Icons/iconTestUtils.d.ts.map +1 -0
  279. package/dist/primitives/Icons/iconTestUtils.js +160 -0
  280. package/dist/primitives/Icons/index.d.ts +56 -54
  281. package/dist/primitives/Icons/index.d.ts.map +1 -1
  282. package/dist/primitives/Icons/index.js +59 -61
  283. package/dist/primitives/Icons/types.d.ts +31 -0
  284. package/dist/primitives/Icons/types.d.ts.map +1 -0
  285. package/dist/primitives/Icons/types.js +8 -0
  286. package/dist/primitives/Input/Input.svelte +7 -20
  287. package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
  288. package/dist/primitives/Input/Select.svelte +35 -18
  289. package/dist/primitives/Input/Select.svelte.d.ts +16 -24
  290. package/dist/primitives/Input/Select.svelte.d.ts.map +1 -1
  291. package/dist/primitives/Input/Textarea.svelte +35 -9
  292. package/dist/primitives/Input/Textarea.svelte.d.ts +20 -39
  293. package/dist/primitives/Input/Textarea.svelte.d.ts.map +1 -1
  294. package/dist/primitives/Skeleton/Skeleton.svelte +4 -10
  295. package/dist/primitives/Skeleton/Skeleton.svelte.d.ts +2 -1
  296. package/dist/primitives/Skeleton/Skeleton.svelte.d.ts.map +1 -1
  297. package/dist/primitives/Spinner/Spinner.svelte +10 -23
  298. package/dist/primitives/Spinner/Spinner.svelte.d.ts +4 -2
  299. package/dist/primitives/Spinner/Spinner.svelte.d.ts.map +1 -1
  300. package/dist/primitives/Tabs/TabItem.svelte +3 -2
  301. package/dist/primitives/Tabs/TabItem.svelte.d.ts.map +1 -1
  302. package/dist/primitives/Tabs/Tabs.svelte +2 -1
  303. package/dist/primitives/Tabs/Tabs.svelte.d.ts.map +1 -1
  304. package/dist/primitives/ValidationError.stories.svelte +10 -9
  305. package/dist/primitives/ValidationError.svelte +1 -1
  306. package/dist/primitives/index.d.ts +31 -0
  307. package/dist/primitives/index.d.ts.map +1 -0
  308. package/dist/primitives/index.js +81 -0
  309. package/dist/recipes/ImageUploader/ImageUploader.svelte +62 -83
  310. package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts.map +1 -1
  311. package/dist/recipes/SuperLogin/SuperLogin.svelte +18 -17
  312. package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
  313. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +25 -6
  314. package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts +7 -1
  315. package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -1
  316. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +2 -1
  317. package/dist/recipes/feedback/ErrorDisplay.svelte +34 -5
  318. package/dist/recipes/feedback/ErrorDisplay.svelte.d.ts +7 -0
  319. package/dist/recipes/feedback/ErrorDisplay.svelte.d.ts.map +1 -1
  320. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +14 -5
  321. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte.d.ts +2 -2
  322. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte.d.ts.map +1 -1
  323. package/dist/recipes/feedback/index.d.ts +4 -0
  324. package/dist/recipes/feedback/index.d.ts.map +1 -0
  325. package/dist/recipes/feedback/index.js +4 -0
  326. package/dist/recipes/fields/SelectField.svelte +1 -1
  327. package/dist/recipes/fields/SelectField.svelte.d.ts +4 -1
  328. package/dist/recipes/fields/SelectField.svelte.d.ts.map +1 -1
  329. package/dist/recipes/fields/TextareaField.svelte +2 -2
  330. package/dist/recipes/fields/TextareaField.svelte.d.ts +6 -2
  331. package/dist/recipes/fields/TextareaField.svelte.d.ts.map +1 -1
  332. package/dist/recipes/index.d.ts +8 -0
  333. package/dist/recipes/index.d.ts.map +1 -0
  334. package/dist/recipes/index.js +24 -0
  335. package/dist/recipes/inputs/MultiSelect.svelte +56 -24
  336. package/dist/recipes/inputs/MultiSelect.svelte.d.ts +17 -26
  337. package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
  338. package/dist/recipes/inputs/OTPInput.svelte +25 -10
  339. package/dist/recipes/inputs/OTPInput.svelte.d.ts +15 -20
  340. package/dist/recipes/inputs/OTPInput.svelte.d.ts.map +1 -1
  341. package/dist/recipes/inputs/PasswordInput.svelte +42 -21
  342. package/dist/recipes/inputs/PasswordInput.svelte.d.ts +27 -34
  343. package/dist/recipes/inputs/PasswordInput.svelte.d.ts.map +1 -1
  344. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +15 -6
  345. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +8 -16
  346. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts.map +1 -1
  347. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +6 -1
  348. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte.d.ts.map +1 -1
  349. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +4 -4
  350. package/dist/recipes/inputs/Search.svelte +29 -12
  351. package/dist/recipes/inputs/Search.svelte.d.ts +16 -32
  352. package/dist/recipes/inputs/Search.svelte.d.ts.map +1 -1
  353. package/dist/recipes/inputs/SelectDropdown.svelte +26 -18
  354. package/dist/recipes/inputs/SelectDropdown.svelte.d.ts +12 -18
  355. package/dist/recipes/inputs/SelectDropdown.svelte.d.ts.map +1 -1
  356. package/dist/recipes/inputs/index.d.ts +8 -0
  357. package/dist/recipes/inputs/index.d.ts.map +1 -0
  358. package/dist/recipes/inputs/index.js +8 -0
  359. package/dist/recipes/modals/index.d.ts +7 -0
  360. package/dist/recipes/modals/index.d.ts.map +1 -0
  361. package/dist/recipes/modals/index.js +7 -0
  362. package/dist/stories/ButtonAuditDashboard.svelte +23 -18
  363. package/dist/stories/ButtonAuditDashboard.svelte.d.ts.map +1 -1
  364. package/dist/stories/PatternsGallery.svelte +66 -55
  365. package/dist/stories/PatternsGallery.svelte.d.ts.map +1 -1
  366. package/dist/stories/PrimitivesGallery.svelte +13 -13
  367. package/dist/stories/RecipesGallery.svelte +85 -55
  368. package/dist/stories/RecipesGallery.svelte.d.ts.map +1 -1
  369. package/dist/stripe/index.d.ts +8 -0
  370. package/dist/stripe/index.d.ts.map +1 -0
  371. package/dist/stripe/index.js +7 -0
  372. package/dist/stripe/useStripeTheme.svelte.d.ts +79 -0
  373. package/dist/stripe/useStripeTheme.svelte.d.ts.map +1 -0
  374. package/dist/stripe/useStripeTheme.svelte.js +138 -0
  375. package/dist/telemetry.d.ts.map +1 -1
  376. package/dist/telemetry.js +1 -0
  377. package/dist/telemetry.server.d.ts.map +1 -1
  378. package/dist/telemetry.server.js +1 -0
  379. package/dist/telemetry.server.spec.js +1 -0
  380. package/dist/telemetry.spec.js +1 -0
  381. package/dist/tokens/__tests__/sizing.test.d.ts +2 -0
  382. package/dist/tokens/__tests__/sizing.test.d.ts.map +1 -0
  383. package/dist/tokens/__tests__/sizing.test.js +307 -0
  384. package/dist/tokens/__tests__/spacing.test.d.ts +2 -0
  385. package/dist/tokens/__tests__/spacing.test.d.ts.map +1 -0
  386. package/dist/tokens/__tests__/spacing.test.js +178 -0
  387. package/dist/tokens/__tests__/variants.test.d.ts +2 -0
  388. package/dist/tokens/__tests__/variants.test.d.ts.map +1 -0
  389. package/dist/tokens/__tests__/variants.test.js +329 -0
  390. package/dist/tokens/index.d.ts +3 -0
  391. package/dist/tokens/index.d.ts.map +1 -1
  392. package/dist/tokens/index.js +16 -0
  393. package/dist/tokens/sizing.d.ts +118 -0
  394. package/dist/tokens/sizing.d.ts.map +1 -0
  395. package/dist/tokens/sizing.js +125 -0
  396. package/dist/tokens/spacing.d.ts +105 -0
  397. package/dist/tokens/spacing.d.ts.map +1 -1
  398. package/dist/tokens/spacing.js +76 -0
  399. package/dist/tokens/variants.d.ts +78 -0
  400. package/dist/tokens/variants.d.ts.map +1 -0
  401. package/dist/tokens/variants.js +89 -0
  402. package/dist/utils/__tests__/auth.test.d.ts +2 -0
  403. package/dist/utils/__tests__/auth.test.d.ts.map +1 -0
  404. package/dist/utils/__tests__/auth.test.js +431 -0
  405. package/dist/utils/__tests__/formatters.test.d.ts +2 -0
  406. package/dist/utils/__tests__/formatters.test.d.ts.map +1 -0
  407. package/dist/utils/__tests__/formatters.test.js +73 -0
  408. package/dist/utils/auth.d.ts +46 -0
  409. package/dist/utils/auth.d.ts.map +1 -0
  410. package/dist/utils/auth.js +195 -0
  411. package/dist/utils/formatters.d.ts +13 -0
  412. package/dist/utils/formatters.d.ts.map +1 -0
  413. package/dist/utils/formatters.js +24 -0
  414. package/package.json +14 -2
  415. package/dist/patterns/layout/Grid.svelte +0 -35
  416. package/dist/patterns/layout/Grid.svelte.d.ts +0 -18
  417. package/dist/patterns/layout/Grid.svelte.d.ts.map +0 -1
@@ -0,0 +1,257 @@
1
+ import { render, screen } from '@testing-library/svelte';
2
+ import { expect, describe, test } from 'vitest';
3
+ import Stack from './Stack.svelte';
4
+ describe('Stack Component', () => {
5
+ describe('Basic Rendering', () => {
6
+ test('renders with default props', () => {
7
+ const { container } = render(Stack);
8
+ const stack = container.querySelector('div');
9
+ expect(stack).toBeInTheDocument();
10
+ expect(stack).toHaveClass('flex', 'flex-col', 'gap-4');
11
+ });
12
+ test('renders as flex container', () => {
13
+ const { container } = render(Stack);
14
+ expect(container.querySelector('div')).toHaveClass('flex');
15
+ });
16
+ });
17
+ describe('Direction', () => {
18
+ test('vertical direction applies flex-col', () => {
19
+ const { container } = render(Stack, { direction: 'vertical' });
20
+ expect(container.querySelector('div')).toHaveClass('flex-col');
21
+ });
22
+ test('horizontal direction applies flex-row', () => {
23
+ const { container } = render(Stack, { direction: 'horizontal' });
24
+ expect(container.querySelector('div')).toHaveClass('flex-row');
25
+ });
26
+ });
27
+ describe('Gap - Semantic Names', () => {
28
+ test('tight gap (4px)', () => {
29
+ const { container } = render(Stack, { gap: 'tight' });
30
+ expect(container.querySelector('div')).toHaveClass('gap-1');
31
+ });
32
+ test('compact gap (6px)', () => {
33
+ const { container } = render(Stack, { gap: 'compact' });
34
+ expect(container.querySelector('div')).toHaveClass('gap-1.5');
35
+ });
36
+ test('item gap (8px)', () => {
37
+ const { container } = render(Stack, { gap: 'item' });
38
+ expect(container.querySelector('div')).toHaveClass('gap-2');
39
+ });
40
+ test('group gap (12px)', () => {
41
+ const { container } = render(Stack, { gap: 'group' });
42
+ expect(container.querySelector('div')).toHaveClass('gap-3');
43
+ });
44
+ test('content gap (16px) - default', () => {
45
+ const { container } = render(Stack, { gap: 'content' });
46
+ expect(container.querySelector('div')).toHaveClass('gap-4');
47
+ });
48
+ test('section gap (24px)', () => {
49
+ const { container } = render(Stack, { gap: 'section' });
50
+ expect(container.querySelector('div')).toHaveClass('gap-6');
51
+ });
52
+ test('layout gap (32px)', () => {
53
+ const { container } = render(Stack, { gap: 'layout' });
54
+ expect(container.querySelector('div')).toHaveClass('gap-8');
55
+ });
56
+ test('page gap (48px)', () => {
57
+ const { container } = render(Stack, { gap: 'page' });
58
+ expect(container.querySelector('div')).toHaveClass('gap-12');
59
+ });
60
+ });
61
+ describe('Gap - Numeric Values', () => {
62
+ test('gap 0', () => {
63
+ const { container } = render(Stack, { gap: '0' });
64
+ expect(container.querySelector('div')).toHaveClass('gap-0');
65
+ });
66
+ test('gap 1', () => {
67
+ const { container } = render(Stack, { gap: '1' });
68
+ expect(container.querySelector('div')).toHaveClass('gap-1');
69
+ });
70
+ test('gap 2', () => {
71
+ const { container } = render(Stack, { gap: '2' });
72
+ expect(container.querySelector('div')).toHaveClass('gap-2');
73
+ });
74
+ test('gap 4 (default)', () => {
75
+ const { container } = render(Stack, { gap: '4' });
76
+ expect(container.querySelector('div')).toHaveClass('gap-4');
77
+ });
78
+ test('gap 8', () => {
79
+ const { container } = render(Stack, { gap: '8' });
80
+ expect(container.querySelector('div')).toHaveClass('gap-8');
81
+ });
82
+ });
83
+ describe('Gap - Legacy Aliases (Deprecated)', () => {
84
+ test('none gap (legacy)', () => {
85
+ const { container } = render(Stack, { gap: 'none' });
86
+ expect(container.querySelector('div')).toHaveClass('gap-0');
87
+ });
88
+ test('xs gap (legacy)', () => {
89
+ const { container } = render(Stack, { gap: 'xs' });
90
+ expect(container.querySelector('div')).toHaveClass('gap-1');
91
+ });
92
+ test('sm gap (legacy)', () => {
93
+ const { container } = render(Stack, { gap: 'sm' });
94
+ expect(container.querySelector('div')).toHaveClass('gap-2');
95
+ });
96
+ test('md gap (legacy)', () => {
97
+ const { container } = render(Stack, { gap: 'md' });
98
+ expect(container.querySelector('div')).toHaveClass('gap-4');
99
+ });
100
+ test('lg gap (legacy)', () => {
101
+ const { container } = render(Stack, { gap: 'lg' });
102
+ expect(container.querySelector('div')).toHaveClass('gap-6');
103
+ });
104
+ test('xl gap (legacy)', () => {
105
+ const { container } = render(Stack, { gap: 'xl' });
106
+ expect(container.querySelector('div')).toHaveClass('gap-8');
107
+ });
108
+ });
109
+ describe('Alignment', () => {
110
+ test('align start', () => {
111
+ const { container } = render(Stack, { align: 'start' });
112
+ expect(container.querySelector('div')).toHaveClass('items-start');
113
+ });
114
+ test('align center', () => {
115
+ const { container } = render(Stack, { align: 'center' });
116
+ expect(container.querySelector('div')).toHaveClass('items-center');
117
+ });
118
+ test('align end', () => {
119
+ const { container } = render(Stack, { align: 'end' });
120
+ expect(container.querySelector('div')).toHaveClass('items-end');
121
+ });
122
+ test('align stretch', () => {
123
+ const { container } = render(Stack, { align: 'stretch' });
124
+ expect(container.querySelector('div')).toHaveClass('items-stretch');
125
+ });
126
+ test('align baseline', () => {
127
+ const { container } = render(Stack, { align: 'baseline' });
128
+ expect(container.querySelector('div')).toHaveClass('items-baseline');
129
+ });
130
+ });
131
+ describe('Justify', () => {
132
+ test('justify start', () => {
133
+ const { container } = render(Stack, { justify: 'start' });
134
+ expect(container.querySelector('div')).toHaveClass('justify-start');
135
+ });
136
+ test('justify center', () => {
137
+ const { container } = render(Stack, { justify: 'center' });
138
+ expect(container.querySelector('div')).toHaveClass('justify-center');
139
+ });
140
+ test('justify end', () => {
141
+ const { container } = render(Stack, { justify: 'end' });
142
+ expect(container.querySelector('div')).toHaveClass('justify-end');
143
+ });
144
+ test('justify between', () => {
145
+ const { container } = render(Stack, { justify: 'between' });
146
+ expect(container.querySelector('div')).toHaveClass('justify-between');
147
+ });
148
+ test('justify around', () => {
149
+ const { container } = render(Stack, { justify: 'around' });
150
+ expect(container.querySelector('div')).toHaveClass('justify-around');
151
+ });
152
+ test('justify evenly', () => {
153
+ const { container } = render(Stack, { justify: 'evenly' });
154
+ expect(container.querySelector('div')).toHaveClass('justify-evenly');
155
+ });
156
+ });
157
+ describe('Wrap', () => {
158
+ test('wrap false by default', () => {
159
+ const { container } = render(Stack);
160
+ expect(container.querySelector('div')).not.toHaveClass('flex-wrap');
161
+ });
162
+ test('wrap true adds flex-wrap', () => {
163
+ const { container } = render(Stack, { wrap: true });
164
+ expect(container.querySelector('div')).toHaveClass('flex-wrap');
165
+ });
166
+ });
167
+ describe('Semantic Elements (as prop)', () => {
168
+ test('renders as div by default', () => {
169
+ const { container } = render(Stack);
170
+ expect(container.querySelector('div')).toBeInTheDocument();
171
+ });
172
+ test('renders as section', () => {
173
+ const { container } = render(Stack, { as: 'section' });
174
+ expect(container.querySelector('section')).toBeInTheDocument();
175
+ });
176
+ test('renders as article', () => {
177
+ const { container } = render(Stack, { as: 'article' });
178
+ expect(container.querySelector('article')).toBeInTheDocument();
179
+ });
180
+ test('renders as aside', () => {
181
+ const { container } = render(Stack, { as: 'aside' });
182
+ expect(container.querySelector('aside')).toBeInTheDocument();
183
+ });
184
+ test('renders as main', () => {
185
+ const { container } = render(Stack, { as: 'main' });
186
+ expect(container.querySelector('main')).toBeInTheDocument();
187
+ });
188
+ test('renders as nav', () => {
189
+ const { container } = render(Stack, { as: 'nav' });
190
+ expect(container.querySelector('nav')).toBeInTheDocument();
191
+ });
192
+ test('renders as ul', () => {
193
+ const { container } = render(Stack, { as: 'ul' });
194
+ expect(container.querySelector('ul')).toBeInTheDocument();
195
+ });
196
+ test('renders as ol', () => {
197
+ const { container } = render(Stack, { as: 'ol' });
198
+ expect(container.querySelector('ol')).toBeInTheDocument();
199
+ });
200
+ });
201
+ describe('Custom Class', () => {
202
+ test('accepts custom class', () => {
203
+ const { container } = render(Stack, { class: 'custom-class' });
204
+ expect(container.querySelector('div')).toHaveClass('custom-class');
205
+ });
206
+ test('merges custom class with generated classes', () => {
207
+ const { container } = render(Stack, { class: 'custom-class', gap: 'section' });
208
+ const stack = container.querySelector('div');
209
+ expect(stack).toHaveClass('custom-class');
210
+ expect(stack).toHaveClass('flex');
211
+ expect(stack).toHaveClass('gap-6');
212
+ });
213
+ });
214
+ describe('Rest Props', () => {
215
+ test('passes through data attributes', () => {
216
+ const { container } = render(Stack, { 'data-testid': 'my-stack' });
217
+ expect(container.querySelector('[data-testid="my-stack"]')).toBeInTheDocument();
218
+ });
219
+ test('passes through aria attributes', () => {
220
+ const { container } = render(Stack, { 'aria-label': 'Stack container' });
221
+ expect(container.querySelector('[aria-label="Stack container"]')).toBeInTheDocument();
222
+ });
223
+ });
224
+ describe('Combined Props', () => {
225
+ test('horizontal layout with center alignment and between justify', () => {
226
+ const { container } = render(Stack, {
227
+ direction: 'horizontal',
228
+ align: 'center',
229
+ justify: 'between',
230
+ gap: 'section'
231
+ });
232
+ const stack = container.querySelector('div');
233
+ expect(stack).toHaveClass('flex-row');
234
+ expect(stack).toHaveClass('items-center');
235
+ expect(stack).toHaveClass('justify-between');
236
+ expect(stack).toHaveClass('gap-6');
237
+ });
238
+ test('vertical layout as section with page gap', () => {
239
+ const { container } = render(Stack, {
240
+ direction: 'vertical',
241
+ as: 'section',
242
+ gap: 'page'
243
+ });
244
+ const stack = container.querySelector('section');
245
+ expect(stack).toHaveClass('flex-col');
246
+ expect(stack).toHaveClass('gap-12');
247
+ });
248
+ });
249
+ });
250
+ describe('Stack Deprecated Wrapper (patterns/layout/Stack)', () => {
251
+ // Note: The patterns version re-exports the components version
252
+ // These tests verify backward compatibility
253
+ test('deprecated wrapper imports work', async () => {
254
+ const DeprecatedStack = await import('../../patterns/layout/Stack.svelte');
255
+ expect(DeprecatedStack.default).toBeDefined();
256
+ });
257
+ });
@@ -1,17 +1,22 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
+ import {
4
+ gapMap,
5
+ alignScale,
6
+ justifyScale,
7
+ type GapKey,
8
+ type AlignKey,
9
+ type JustifyKey,
10
+ } from '../../tokens/spacing';
3
11
 
4
- type GapValue = 'tight' | 'compact' | 'item' | 'group' | 'content' | 'section' | 'layout' | 'page' | '0' | '1' | '1.5' | '2' | '3' | '4' | '6' | '8' | '12' | '16';
5
12
  type Direction = 'vertical' | 'horizontal';
6
- type Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
7
- type Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
8
13
  type ElementType = 'div' | 'section' | 'article' | 'aside' | 'main' | 'nav' | 'ul' | 'ol';
9
14
 
10
15
  interface Props {
11
- gap?: GapValue;
16
+ gap?: GapKey;
12
17
  direction?: Direction;
13
- align?: Align;
14
- justify?: Justify;
18
+ align?: AlignKey;
19
+ justify?: JustifyKey;
15
20
  wrap?: boolean;
16
21
  as?: ElementType;
17
22
  class?: string;
@@ -31,55 +36,12 @@
31
36
  ...restProps
32
37
  }: Props = $props();
33
38
 
34
- const semanticGapMap: Record<string, string> = {
35
- 'tight': 'gap-1',
36
- 'compact': 'gap-1.5',
37
- 'item': 'gap-2',
38
- 'group': 'gap-3',
39
- 'content': 'gap-4',
40
- 'section': 'gap-6',
41
- 'layout': 'gap-8',
42
- 'page': 'gap-12',
43
- };
44
-
45
- const numericGapMap: Record<string, string> = {
46
- '0': 'gap-0',
47
- '1': 'gap-1',
48
- '1.5': 'gap-1.5',
49
- '2': 'gap-2',
50
- '3': 'gap-3',
51
- '4': 'gap-4',
52
- '6': 'gap-6',
53
- '8': 'gap-8',
54
- '12': 'gap-12',
55
- '16': 'gap-16'
56
- };
57
-
58
- const gapMap = { ...numericGapMap, ...semanticGapMap };
59
-
60
- const alignMap: Record<string, string> = {
61
- start: 'items-start',
62
- center: 'items-center',
63
- end: 'items-end',
64
- stretch: 'items-stretch',
65
- baseline: 'items-baseline'
66
- };
67
-
68
- const justifyMap: Record<string, string> = {
69
- start: 'justify-start',
70
- center: 'justify-center',
71
- end: 'justify-end',
72
- between: 'justify-between',
73
- around: 'justify-around',
74
- evenly: 'justify-evenly'
75
- };
76
-
77
39
  let classes = $derived([
78
40
  'flex',
79
41
  direction === 'vertical' ? 'flex-col' : 'flex-row',
80
42
  gapMap[gap] || 'gap-4',
81
- align ? alignMap[align] : '',
82
- justify ? justifyMap[justify] : '',
43
+ align ? alignScale[align] : '',
44
+ justify ? justifyScale[justify] : '',
83
45
  wrap ? 'flex-wrap' : '',
84
46
  className
85
47
  ].filter(Boolean).join(' '));
@@ -1,14 +1,12 @@
1
1
  import type { Snippet } from 'svelte';
2
- type GapValue = 'tight' | 'compact' | 'item' | 'group' | 'content' | 'section' | 'layout' | 'page' | '0' | '1' | '1.5' | '2' | '3' | '4' | '6' | '8' | '12' | '16';
2
+ import { type GapKey, type AlignKey, type JustifyKey } from '../../tokens/spacing';
3
3
  type Direction = 'vertical' | 'horizontal';
4
- type Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
5
- type Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
6
4
  type ElementType = 'div' | 'section' | 'article' | 'aside' | 'main' | 'nav' | 'ul' | 'ol';
7
5
  interface Props {
8
- gap?: GapValue;
6
+ gap?: GapKey;
9
7
  direction?: Direction;
10
- align?: Align;
11
- justify?: Justify;
8
+ align?: AlignKey;
9
+ justify?: JustifyKey;
12
10
  wrap?: boolean;
13
11
  as?: ElementType;
14
12
  class?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Stack.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/Stack.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,KAAK,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACnK,KAAK,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAC3C,KAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AACjE,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC5E,KAAK,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1F,UAAU,KAAK;IACb,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAkFH,QAAA,MAAM,KAAK,2CAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Stack.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/Stack.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAIH,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAG9B,KAAK,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAC3C,KAAK,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1F,UAAU,KAAK;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAqCH,QAAA,MAAM,KAAK,2CAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Grid.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/Grid.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { render } from '@testing-library/svelte';
3
+ import Grid from '../Grid.svelte';
4
+ describe('Grid', () => {
5
+ describe('basic rendering', () => {
6
+ it('renders as a div by default', () => {
7
+ const { container } = render(Grid);
8
+ expect(container.querySelector('div')).toBeTruthy();
9
+ });
10
+ it('applies grid class', () => {
11
+ const { container } = render(Grid);
12
+ const div = container.querySelector('div');
13
+ expect(div?.classList.contains('grid')).toBe(true);
14
+ });
15
+ it('applies default gap-4 class', () => {
16
+ const { container } = render(Grid);
17
+ const div = container.querySelector('div');
18
+ expect(div?.classList.contains('gap-4')).toBe(true);
19
+ });
20
+ it('applies default 3-column responsive layout', () => {
21
+ const { container } = render(Grid);
22
+ const div = container.querySelector('div');
23
+ expect(div?.classList.contains('grid-cols-1')).toBe(true);
24
+ expect(div?.classList.contains('md:grid-cols-2')).toBe(true);
25
+ expect(div?.classList.contains('lg:grid-cols-3')).toBe(true);
26
+ });
27
+ });
28
+ describe('cols prop', () => {
29
+ it('applies single column layout for cols="1"', () => {
30
+ const { container } = render(Grid, { cols: '1' });
31
+ const div = container.querySelector('div');
32
+ expect(div?.classList.contains('grid-cols-1')).toBe(true);
33
+ expect(div?.classList.contains('md:grid-cols-2')).toBe(false);
34
+ });
35
+ it('applies 2-column responsive layout for cols="2"', () => {
36
+ const { container } = render(Grid, { cols: '2' });
37
+ const div = container.querySelector('div');
38
+ expect(div?.classList.contains('grid-cols-1')).toBe(true);
39
+ expect(div?.classList.contains('md:grid-cols-2')).toBe(true);
40
+ expect(div?.classList.contains('lg:grid-cols-3')).toBe(false);
41
+ });
42
+ it('applies 3-column responsive layout for cols="3"', () => {
43
+ const { container } = render(Grid, { cols: '3' });
44
+ const div = container.querySelector('div');
45
+ expect(div?.classList.contains('grid-cols-1')).toBe(true);
46
+ expect(div?.classList.contains('md:grid-cols-2')).toBe(true);
47
+ expect(div?.classList.contains('lg:grid-cols-3')).toBe(true);
48
+ });
49
+ it('applies 4-column responsive layout for cols="4"', () => {
50
+ const { container } = render(Grid, { cols: '4' });
51
+ const div = container.querySelector('div');
52
+ expect(div?.classList.contains('grid-cols-1')).toBe(true);
53
+ expect(div?.classList.contains('sm:grid-cols-2')).toBe(true);
54
+ expect(div?.classList.contains('lg:grid-cols-4')).toBe(true);
55
+ });
56
+ it('applies 5-column responsive layout for cols="5"', () => {
57
+ const { container } = render(Grid, { cols: '5' });
58
+ const div = container.querySelector('div');
59
+ expect(div?.classList.contains('grid-cols-1')).toBe(true);
60
+ expect(div?.classList.contains('sm:grid-cols-2')).toBe(true);
61
+ expect(div?.classList.contains('lg:grid-cols-5')).toBe(true);
62
+ });
63
+ it('applies 6-column responsive layout for cols="6"', () => {
64
+ const { container } = render(Grid, { cols: '6' });
65
+ const div = container.querySelector('div');
66
+ expect(div?.classList.contains('grid-cols-1')).toBe(true);
67
+ expect(div?.classList.contains('sm:grid-cols-2')).toBe(true);
68
+ expect(div?.classList.contains('md:grid-cols-3')).toBe(true);
69
+ expect(div?.classList.contains('lg:grid-cols-6')).toBe(true);
70
+ });
71
+ it('applies 12-column layout for cols="12"', () => {
72
+ const { container } = render(Grid, { cols: '12' });
73
+ const div = container.querySelector('div');
74
+ expect(div?.classList.contains('grid-cols-12')).toBe(true);
75
+ });
76
+ it('applies auto-fit layout with inline style for cols="auto"', () => {
77
+ const { container } = render(Grid, { cols: 'auto' });
78
+ const div = container.querySelector('div');
79
+ expect(div?.getAttribute('style')).toContain('grid-template-columns');
80
+ expect(div?.getAttribute('style')).toContain('auto-fit');
81
+ expect(div?.getAttribute('style')).toContain('minmax');
82
+ });
83
+ });
84
+ describe('minWidth prop (for auto columns)', () => {
85
+ it('uses default minWidth of 280px', () => {
86
+ const { container } = render(Grid, { cols: 'auto' });
87
+ const div = container.querySelector('div');
88
+ expect(div?.getAttribute('style')).toContain('280px');
89
+ });
90
+ it('applies custom minWidth', () => {
91
+ const { container } = render(Grid, { cols: 'auto', minWidth: '300px' });
92
+ const div = container.querySelector('div');
93
+ expect(div?.getAttribute('style')).toContain('300px');
94
+ });
95
+ it('ignores minWidth when cols is not "auto"', () => {
96
+ const { container } = render(Grid, { cols: '3', minWidth: '400px' });
97
+ const div = container.querySelector('div');
98
+ expect(div?.getAttribute('style')).toBeFalsy();
99
+ });
100
+ });
101
+ describe('gap prop', () => {
102
+ describe('numeric values', () => {
103
+ it('applies gap-0 for gap="0"', () => {
104
+ const { container } = render(Grid, { gap: '0' });
105
+ const div = container.querySelector('div');
106
+ expect(div?.classList.contains('gap-0')).toBe(true);
107
+ });
108
+ it('applies gap-6 for gap="6"', () => {
109
+ const { container } = render(Grid, { gap: '6' });
110
+ const div = container.querySelector('div');
111
+ expect(div?.classList.contains('gap-6')).toBe(true);
112
+ });
113
+ it('applies gap-8 for gap="8"', () => {
114
+ const { container } = render(Grid, { gap: '8' });
115
+ const div = container.querySelector('div');
116
+ expect(div?.classList.contains('gap-8')).toBe(true);
117
+ });
118
+ });
119
+ describe('semantic values', () => {
120
+ it('applies gap-4 for gap="content"', () => {
121
+ const { container } = render(Grid, { gap: 'content' });
122
+ const div = container.querySelector('div');
123
+ expect(div?.classList.contains('gap-4')).toBe(true);
124
+ });
125
+ it('applies gap-6 for gap="section"', () => {
126
+ const { container } = render(Grid, { gap: 'section' });
127
+ const div = container.querySelector('div');
128
+ expect(div?.classList.contains('gap-6')).toBe(true);
129
+ });
130
+ it('applies gap-8 for gap="layout"', () => {
131
+ const { container } = render(Grid, { gap: 'layout' });
132
+ const div = container.querySelector('div');
133
+ expect(div?.classList.contains('gap-8')).toBe(true);
134
+ });
135
+ });
136
+ describe('grid-specific semantic values', () => {
137
+ it('applies gap-4 for gap="tight"', () => {
138
+ const { container } = render(Grid, { gap: 'tight' });
139
+ const div = container.querySelector('div');
140
+ expect(div?.classList.contains('gap-4')).toBe(true);
141
+ });
142
+ it('applies gap-6 for gap="standard"', () => {
143
+ const { container } = render(Grid, { gap: 'standard' });
144
+ const div = container.querySelector('div');
145
+ expect(div?.classList.contains('gap-6')).toBe(true);
146
+ });
147
+ it('applies gap-8 for gap="spacious"', () => {
148
+ const { container } = render(Grid, { gap: 'spacious' });
149
+ const div = container.querySelector('div');
150
+ expect(div?.classList.contains('gap-8')).toBe(true);
151
+ });
152
+ });
153
+ describe('legacy values', () => {
154
+ it('applies gap-0 for gap="none"', () => {
155
+ const { container } = render(Grid, { gap: 'none' });
156
+ const div = container.querySelector('div');
157
+ expect(div?.classList.contains('gap-0')).toBe(true);
158
+ });
159
+ it('applies gap-2 for gap="sm"', () => {
160
+ const { container } = render(Grid, { gap: 'sm' });
161
+ const div = container.querySelector('div');
162
+ expect(div?.classList.contains('gap-2')).toBe(true);
163
+ });
164
+ it('applies gap-4 for gap="md"', () => {
165
+ const { container } = render(Grid, { gap: 'md' });
166
+ const div = container.querySelector('div');
167
+ expect(div?.classList.contains('gap-4')).toBe(true);
168
+ });
169
+ });
170
+ });
171
+ describe('as prop', () => {
172
+ it('renders as div by default', () => {
173
+ const { container } = render(Grid);
174
+ expect(container.querySelector('div')).toBeTruthy();
175
+ expect(container.querySelector('section')).toBeFalsy();
176
+ });
177
+ it('renders as section when as="section"', () => {
178
+ const { container } = render(Grid, { as: 'section' });
179
+ expect(container.querySelector('section')).toBeTruthy();
180
+ expect(container.querySelector('div')).toBeFalsy();
181
+ });
182
+ it('renders as ul when as="ul"', () => {
183
+ const { container } = render(Grid, { as: 'ul' });
184
+ expect(container.querySelector('ul')).toBeTruthy();
185
+ });
186
+ });
187
+ describe('class prop', () => {
188
+ it('applies custom classes', () => {
189
+ const { container } = render(Grid, { class: 'custom-grid' });
190
+ const div = container.querySelector('div');
191
+ expect(div?.classList.contains('custom-grid')).toBe(true);
192
+ });
193
+ it('preserves default classes when adding custom classes', () => {
194
+ const { container } = render(Grid, { class: 'custom-grid' });
195
+ const div = container.querySelector('div');
196
+ expect(div?.classList.contains('grid')).toBe(true);
197
+ expect(div?.classList.contains('gap-4')).toBe(true);
198
+ expect(div?.classList.contains('custom-grid')).toBe(true);
199
+ });
200
+ it('supports multiple custom classes', () => {
201
+ const { container } = render(Grid, { class: 'class-a class-b' });
202
+ const div = container.querySelector('div');
203
+ expect(div?.classList.contains('class-a')).toBe(true);
204
+ expect(div?.classList.contains('class-b')).toBe(true);
205
+ });
206
+ });
207
+ describe('combined props', () => {
208
+ it('applies all props correctly together', () => {
209
+ const { container } = render(Grid, {
210
+ cols: '4',
211
+ gap: 'section',
212
+ as: 'section',
213
+ class: 'my-grid',
214
+ });
215
+ const section = container.querySelector('section');
216
+ expect(section).toBeTruthy();
217
+ expect(section?.classList.contains('grid')).toBe(true);
218
+ expect(section?.classList.contains('gap-6')).toBe(true);
219
+ expect(section?.classList.contains('lg:grid-cols-4')).toBe(true);
220
+ expect(section?.classList.contains('my-grid')).toBe(true);
221
+ });
222
+ it('handles auto columns with custom gap', () => {
223
+ const { container } = render(Grid, {
224
+ cols: 'auto',
225
+ gap: 'spacious',
226
+ minWidth: '320px',
227
+ });
228
+ const div = container.querySelector('div');
229
+ expect(div?.classList.contains('grid')).toBe(true);
230
+ expect(div?.classList.contains('gap-8')).toBe(true);
231
+ expect(div?.getAttribute('style')).toContain('320px');
232
+ });
233
+ });
234
+ describe('12-column layout grid', () => {
235
+ it('applies fixed 12-column layout without responsive classes', () => {
236
+ const { container } = render(Grid, { cols: '12', gap: 'none' });
237
+ const div = container.querySelector('div');
238
+ expect(div?.classList.contains('grid-cols-12')).toBe(true);
239
+ expect(div?.classList.contains('gap-0')).toBe(true);
240
+ // Should not have responsive column classes
241
+ expect(div?.classList.contains('sm:grid-cols-2')).toBe(false);
242
+ expect(div?.classList.contains('md:grid-cols-3')).toBe(false);
243
+ expect(div?.classList.contains('lg:grid-cols-6')).toBe(false);
244
+ });
245
+ });
246
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Stack.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stack.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/Layout/__tests__/Stack.test.ts"],"names":[],"mappings":""}