@getmicdrop/svelte-components 5.4.1 → 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 (536) 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 +146 -145
  7. package/dist/calendar/PublicCard/PublicCard.svelte.d.ts.map +1 -1
  8. package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
  9. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
  10. package/dist/calendar/index.d.ts +9 -0
  11. package/dist/calendar/index.d.ts.map +1 -0
  12. package/dist/calendar/index.js +15 -0
  13. package/dist/components/Layout/Grid.spec.d.ts +2 -0
  14. package/dist/components/Layout/Grid.spec.d.ts.map +1 -0
  15. package/dist/components/Layout/Grid.spec.js +230 -0
  16. package/dist/components/Layout/Grid.svelte +101 -109
  17. package/dist/components/Layout/Grid.svelte.d.ts +16 -6
  18. package/dist/components/Layout/Grid.svelte.d.ts.map +1 -1
  19. package/dist/components/Layout/Section.svelte +80 -80
  20. package/dist/components/Layout/Sidebar.svelte +108 -108
  21. package/dist/components/Layout/Stack.spec.d.ts +2 -0
  22. package/dist/components/Layout/Stack.spec.d.ts.map +1 -0
  23. package/dist/components/Layout/Stack.spec.js +257 -0
  24. package/dist/components/Layout/Stack.svelte +52 -90
  25. package/dist/components/Layout/Stack.svelte.d.ts +4 -6
  26. package/dist/components/Layout/Stack.svelte.d.ts.map +1 -1
  27. package/dist/components/Layout/__tests__/Grid.test.d.ts +2 -0
  28. package/dist/components/Layout/__tests__/Grid.test.d.ts.map +1 -0
  29. package/dist/components/Layout/__tests__/Grid.test.js +246 -0
  30. package/dist/components/Layout/__tests__/Stack.test.d.ts +2 -0
  31. package/dist/components/Layout/__tests__/Stack.test.d.ts.map +1 -0
  32. package/dist/components/Layout/__tests__/Stack.test.js +267 -0
  33. package/dist/constants/formOptions.spec.d.ts.map +1 -1
  34. package/dist/constants/formOptions.spec.js +69 -82
  35. package/dist/constants/validation.js +91 -91
  36. package/dist/constants/validation.spec.js +64 -64
  37. package/dist/datetime/__tests__/format.test.js +81 -1
  38. package/dist/datetime/format.d.ts +74 -0
  39. package/dist/datetime/format.d.ts.map +1 -1
  40. package/dist/datetime/format.js +104 -0
  41. package/dist/datetime/index.d.ts +1 -1
  42. package/dist/datetime/index.d.ts.map +1 -1
  43. package/dist/datetime/index.js +1 -1
  44. package/dist/datetime/timezone.d.ts.map +1 -1
  45. package/dist/datetime/timezone.js +2 -0
  46. package/dist/datetime/types.d.ts +4 -0
  47. package/dist/datetime/types.d.ts.map +1 -1
  48. package/dist/forms/createFormStore.svelte.d.ts.map +1 -1
  49. package/dist/forms/createFormStore.svelte.js +3 -2
  50. package/dist/index.d.ts +4 -112
  51. package/dist/index.js +47 -223
  52. package/dist/index.spec.d.ts +2 -0
  53. package/dist/index.spec.d.ts.map +1 -0
  54. package/dist/index.spec.js +370 -0
  55. package/dist/patterns/data/DataGrid.svelte +45 -45
  56. package/dist/patterns/data/DataList.svelte +24 -24
  57. package/dist/patterns/data/DataTable.svelte +41 -41
  58. package/dist/patterns/data/index.d.ts +4 -0
  59. package/dist/patterns/data/index.d.ts.map +1 -0
  60. package/dist/patterns/data/index.js +4 -0
  61. package/dist/patterns/forms/FormActions.spec.js +88 -88
  62. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  63. package/dist/patterns/forms/FormActions.svelte +46 -46
  64. package/dist/patterns/forms/FormGrid.svelte +33 -33
  65. package/dist/patterns/forms/FormSection.svelte +32 -32
  66. package/dist/patterns/forms/FormValidationSummary.spec.d.ts.map +1 -1
  67. package/dist/patterns/forms/FormValidationSummary.spec.js +181 -203
  68. package/dist/patterns/forms/FormValidationSummary.stories.svelte +97 -97
  69. package/dist/patterns/forms/FormValidationSummary.svelte +74 -67
  70. package/dist/patterns/forms/FormValidationSummary.svelte.d.ts +8 -16
  71. package/dist/patterns/forms/FormValidationSummary.svelte.d.ts.map +1 -1
  72. package/dist/patterns/forms/index.d.ts +5 -0
  73. package/dist/patterns/forms/index.d.ts.map +1 -0
  74. package/dist/patterns/forms/index.js +5 -0
  75. package/dist/patterns/index.d.ts +6 -0
  76. package/dist/patterns/index.d.ts.map +1 -0
  77. package/dist/patterns/index.js +18 -0
  78. package/dist/patterns/layout/Sidebar.svelte +39 -39
  79. package/dist/patterns/layout/Stack.svelte +61 -45
  80. package/dist/patterns/layout/Stack.svelte.d.ts +35 -21
  81. package/dist/patterns/layout/Stack.svelte.d.ts.map +1 -1
  82. package/dist/patterns/layout/index.d.ts +5 -0
  83. package/dist/patterns/layout/index.d.ts.map +1 -0
  84. package/dist/patterns/layout/index.js +6 -0
  85. package/dist/patterns/navigation/BottomNav.spec.d.ts.map +1 -1
  86. package/dist/patterns/navigation/BottomNav.spec.js +104 -130
  87. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  88. package/dist/patterns/navigation/BottomNav.svelte +64 -54
  89. package/dist/patterns/navigation/BottomNav.svelte.d.ts +10 -10
  90. package/dist/patterns/navigation/BottomNav.svelte.d.ts.map +1 -1
  91. package/dist/patterns/navigation/Header.spec.d.ts.map +1 -1
  92. package/dist/patterns/navigation/Header.spec.js +161 -203
  93. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  94. package/dist/patterns/navigation/Header.svelte +255 -240
  95. package/dist/patterns/navigation/Header.svelte.d.ts +12 -19
  96. package/dist/patterns/navigation/Header.svelte.d.ts.map +1 -1
  97. package/dist/patterns/navigation/index.d.ts +3 -0
  98. package/dist/patterns/navigation/index.d.ts.map +1 -0
  99. package/dist/patterns/navigation/index.js +3 -0
  100. package/dist/patterns/page/PageHeader.svelte +49 -36
  101. package/dist/patterns/page/PageHeader.svelte.d.ts +12 -18
  102. package/dist/patterns/page/PageHeader.svelte.d.ts.map +1 -1
  103. package/dist/patterns/page/PageLayout.svelte +40 -40
  104. package/dist/patterns/page/PageLoader.spec.js +54 -54
  105. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  106. package/dist/patterns/page/PageLoader.svelte +53 -41
  107. package/dist/patterns/page/PageLoader.svelte.d.ts +9 -20
  108. package/dist/patterns/page/PageLoader.svelte.d.ts.map +1 -1
  109. package/dist/patterns/page/SectionHeader.svelte +51 -41
  110. package/dist/patterns/page/SectionHeader.svelte.d.ts +8 -17
  111. package/dist/patterns/page/SectionHeader.svelte.d.ts.map +1 -1
  112. package/dist/patterns/page/index.d.ts +5 -0
  113. package/dist/patterns/page/index.d.ts.map +1 -0
  114. package/dist/patterns/page/index.js +5 -0
  115. package/dist/presets/badges.js +112 -112
  116. package/dist/presets/buttons.js +76 -76
  117. package/dist/presets/index.js +9 -9
  118. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  119. package/dist/primitives/Accordion/Accordion.svelte +62 -61
  120. package/dist/primitives/Accordion/Accordion.svelte.d.ts.map +1 -1
  121. package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
  122. package/dist/primitives/Alert/Alert.spec.js +170 -170
  123. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  124. package/dist/primitives/Alert/Alert.svelte +64 -65
  125. package/dist/primitives/Alert/Alert.svelte.d.ts +2 -1
  126. package/dist/primitives/Alert/Alert.svelte.d.ts.map +1 -1
  127. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  128. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  129. package/dist/primitives/Badges/Badge.spec.js +103 -103
  130. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  131. package/dist/primitives/Badges/Badge.svelte +99 -142
  132. package/dist/primitives/Badges/Badge.svelte.d.ts +4 -2
  133. package/dist/primitives/Badges/Badge.svelte.d.ts.map +1 -1
  134. package/dist/primitives/BottomSheet/BottomSheet.spec.js +127 -127
  135. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  136. package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
  137. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +120 -120
  138. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  139. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
  140. package/dist/primitives/Button/Button.spec.js +211 -211
  141. package/dist/primitives/Button/Button.stories.svelte +76 -76
  142. package/dist/primitives/Button/Button.svelte +269 -301
  143. package/dist/primitives/Button/Button.svelte.d.ts +10 -26
  144. package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
  145. package/dist/primitives/Button/ButtonSaveDemo.spec.js +48 -48
  146. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  147. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  148. package/dist/primitives/Card.spec.js +49 -49
  149. package/dist/primitives/Card.stories.svelte +22 -22
  150. package/dist/primitives/Card.svelte +28 -28
  151. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  152. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  153. package/dist/primitives/DarkModeToggle.spec.js +357 -357
  154. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  155. package/dist/primitives/DarkModeToggle.svelte +136 -136
  156. package/dist/primitives/Drawer/Drawer.stories.svelte +100 -100
  157. package/dist/primitives/Drawer/Drawer.svelte +236 -214
  158. package/dist/primitives/Drawer/Drawer.svelte.d.ts +12 -31
  159. package/dist/primitives/Drawer/Drawer.svelte.d.ts.map +1 -1
  160. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  161. package/dist/primitives/Dropdown/Dropdown.svelte +160 -148
  162. package/dist/primitives/Dropdown/Dropdown.svelte.d.ts +9 -18
  163. package/dist/primitives/Dropdown/Dropdown.svelte.d.ts.map +1 -1
  164. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  165. package/dist/primitives/Icons/ArrowLeft.svelte +21 -20
  166. package/dist/primitives/Icons/ArrowLeft.svelte.d.ts +2 -0
  167. package/dist/primitives/Icons/ArrowLeft.svelte.d.ts.map +1 -1
  168. package/dist/primitives/Icons/ArrowRight.svelte +21 -20
  169. package/dist/primitives/Icons/ArrowRight.svelte.d.ts +2 -0
  170. package/dist/primitives/Icons/ArrowRight.svelte.d.ts.map +1 -1
  171. package/dist/primitives/Icons/Availability.svelte +27 -26
  172. package/dist/primitives/Icons/Availability.svelte.d.ts +2 -0
  173. package/dist/primitives/Icons/Availability.svelte.d.ts.map +1 -1
  174. package/dist/primitives/Icons/Back.svelte +27 -26
  175. package/dist/primitives/Icons/Back.svelte.d.ts +2 -0
  176. package/dist/primitives/Icons/Back.svelte.d.ts.map +1 -1
  177. package/dist/primitives/Icons/CheckCircle.svelte +19 -18
  178. package/dist/primitives/Icons/CheckCircle.svelte.d.ts +2 -0
  179. package/dist/primitives/Icons/CheckCircle.svelte.d.ts.map +1 -1
  180. package/dist/primitives/Icons/CheckCircleOutline.svelte +28 -27
  181. package/dist/primitives/Icons/CheckCircleOutline.svelte.d.ts +2 -0
  182. package/dist/primitives/Icons/CheckCircleOutline.svelte.d.ts.map +1 -1
  183. package/dist/primitives/Icons/CheckCircleSolid.svelte +12 -10
  184. package/dist/primitives/Icons/CheckCircleSolid.svelte.d.ts +4 -0
  185. package/dist/primitives/Icons/CheckCircleSolid.svelte.d.ts.map +1 -1
  186. package/dist/primitives/Icons/CheckOutline.svelte +15 -13
  187. package/dist/primitives/Icons/CheckOutline.svelte.d.ts +4 -0
  188. package/dist/primitives/Icons/CheckOutline.svelte.d.ts.map +1 -1
  189. package/dist/primitives/Icons/ChevronDownOutline.svelte +14 -12
  190. package/dist/primitives/Icons/ChevronDownOutline.svelte.d.ts +4 -0
  191. package/dist/primitives/Icons/ChevronDownOutline.svelte.d.ts.map +1 -1
  192. package/dist/primitives/Icons/ChevronLeft.svelte +17 -16
  193. package/dist/primitives/Icons/ChevronLeft.svelte.d.ts +2 -0
  194. package/dist/primitives/Icons/ChevronLeft.svelte.d.ts.map +1 -1
  195. package/dist/primitives/Icons/ChevronLeftOutline.svelte +14 -12
  196. package/dist/primitives/Icons/ChevronLeftOutline.svelte.d.ts +4 -0
  197. package/dist/primitives/Icons/ChevronLeftOutline.svelte.d.ts.map +1 -1
  198. package/dist/primitives/Icons/ChevronRight.svelte +17 -16
  199. package/dist/primitives/Icons/ChevronRight.svelte.d.ts +2 -0
  200. package/dist/primitives/Icons/ChevronRight.svelte.d.ts.map +1 -1
  201. package/dist/primitives/Icons/ChevronRightOutline.svelte +14 -12
  202. package/dist/primitives/Icons/ChevronRightOutline.svelte.d.ts +4 -0
  203. package/dist/primitives/Icons/ChevronRightOutline.svelte.d.ts.map +1 -1
  204. package/dist/primitives/Icons/ChevronUpOutline.svelte +14 -12
  205. package/dist/primitives/Icons/ChevronUpOutline.svelte.d.ts +4 -0
  206. package/dist/primitives/Icons/ChevronUpOutline.svelte.d.ts.map +1 -1
  207. package/dist/primitives/Icons/CloseCircleOutline.svelte +14 -12
  208. package/dist/primitives/Icons/CloseCircleOutline.svelte.d.ts +4 -0
  209. package/dist/primitives/Icons/CloseCircleOutline.svelte.d.ts.map +1 -1
  210. package/dist/primitives/Icons/CloseOutline.svelte +14 -12
  211. package/dist/primitives/Icons/CloseOutline.svelte.d.ts +4 -0
  212. package/dist/primitives/Icons/CloseOutline.svelte.d.ts.map +1 -1
  213. package/dist/primitives/Icons/Copy.svelte +28 -27
  214. package/dist/primitives/Icons/Copy.svelte.d.ts +2 -0
  215. package/dist/primitives/Icons/Copy.svelte.d.ts.map +1 -1
  216. package/dist/primitives/Icons/Cross.svelte +18 -17
  217. package/dist/primitives/Icons/Cross.svelte.d.ts +2 -0
  218. package/dist/primitives/Icons/Cross.svelte.d.ts.map +1 -1
  219. package/dist/primitives/Icons/DotsHorizontalOutline.svelte +12 -10
  220. package/dist/primitives/Icons/DotsHorizontalOutline.svelte.d.ts +4 -0
  221. package/dist/primitives/Icons/DotsHorizontalOutline.svelte.d.ts.map +1 -1
  222. package/dist/primitives/Icons/DownArrow.svelte +21 -20
  223. package/dist/primitives/Icons/DownArrow.svelte.d.ts +2 -0
  224. package/dist/primitives/Icons/DownArrow.svelte.d.ts.map +1 -1
  225. package/dist/primitives/Icons/ErrorCircle.svelte +19 -18
  226. package/dist/primitives/Icons/ErrorCircle.svelte.d.ts +2 -0
  227. package/dist/primitives/Icons/ErrorCircle.svelte.d.ts.map +1 -1
  228. package/dist/primitives/Icons/ExclamationCircleOutline.svelte +14 -12
  229. package/dist/primitives/Icons/ExclamationCircleOutline.svelte.d.ts +4 -0
  230. package/dist/primitives/Icons/ExclamationCircleOutline.svelte.d.ts.map +1 -1
  231. package/dist/primitives/Icons/ExclamationTriangleOutline.svelte +14 -12
  232. package/dist/primitives/Icons/ExclamationTriangleOutline.svelte.d.ts +4 -0
  233. package/dist/primitives/Icons/ExclamationTriangleOutline.svelte.d.ts.map +1 -1
  234. package/dist/primitives/Icons/EyeOutline.svelte +14 -12
  235. package/dist/primitives/Icons/EyeOutline.svelte.d.ts +4 -0
  236. package/dist/primitives/Icons/EyeOutline.svelte.d.ts.map +1 -1
  237. package/dist/primitives/Icons/EyeSlashOutline.svelte +14 -12
  238. package/dist/primitives/Icons/EyeSlashOutline.svelte.d.ts +4 -0
  239. package/dist/primitives/Icons/EyeSlashOutline.svelte.d.ts.map +1 -1
  240. package/dist/primitives/Icons/FacebookIcon.svelte +15 -13
  241. package/dist/primitives/Icons/FacebookIcon.svelte.d.ts +2 -0
  242. package/dist/primitives/Icons/FacebookIcon.svelte.d.ts.map +1 -1
  243. package/dist/primitives/Icons/FileCopyOutline.svelte +14 -12
  244. package/dist/primitives/Icons/FileCopyOutline.svelte.d.ts +4 -0
  245. package/dist/primitives/Icons/FileCopyOutline.svelte.d.ts.map +1 -1
  246. package/dist/primitives/Icons/Home.svelte +28 -27
  247. package/dist/primitives/Icons/Home.svelte.d.ts +2 -0
  248. package/dist/primitives/Icons/Home.svelte.d.ts.map +1 -1
  249. package/dist/primitives/Icons/HomeSolid.svelte +12 -10
  250. package/dist/primitives/Icons/HomeSolid.svelte.d.ts +4 -0
  251. package/dist/primitives/Icons/HomeSolid.svelte.d.ts.map +1 -1
  252. package/dist/primitives/Icons/Icon.spec.js +175 -175
  253. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  254. package/dist/primitives/Icons/Icon.svelte +79 -63
  255. package/dist/primitives/Icons/Icon.svelte.d.ts +5 -3
  256. package/dist/primitives/Icons/Icon.svelte.d.ts.map +1 -1
  257. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  258. package/dist/primitives/Icons/Icons.spec.d.ts +8 -0
  259. package/dist/primitives/Icons/Icons.spec.d.ts.map +1 -0
  260. package/dist/primitives/Icons/Icons.spec.js +291 -0
  261. package/dist/primitives/Icons/ImageOutline.svelte +21 -19
  262. package/dist/primitives/Icons/ImageOutline.svelte.d.ts +6 -2
  263. package/dist/primitives/Icons/ImageOutline.svelte.d.ts.map +1 -1
  264. package/dist/primitives/Icons/Info.svelte +20 -19
  265. package/dist/primitives/Icons/Info.svelte.d.ts +2 -0
  266. package/dist/primitives/Icons/Info.svelte.d.ts.map +1 -1
  267. package/dist/primitives/Icons/InfoCircleOutline.svelte +14 -12
  268. package/dist/primitives/Icons/InfoCircleOutline.svelte.d.ts +4 -0
  269. package/dist/primitives/Icons/InfoCircleOutline.svelte.d.ts.map +1 -1
  270. package/dist/primitives/Icons/InstagramIcon.svelte +21 -19
  271. package/dist/primitives/Icons/InstagramIcon.svelte.d.ts +2 -0
  272. package/dist/primitives/Icons/InstagramIcon.svelte.d.ts.map +1 -1
  273. package/dist/primitives/Icons/LogoInstagram.svelte +15 -15
  274. package/dist/primitives/Icons/LogoInstagram.svelte.d.ts +4 -2
  275. package/dist/primitives/Icons/LogoInstagram.svelte.d.ts.map +1 -1
  276. package/dist/primitives/Icons/Message.svelte +28 -27
  277. package/dist/primitives/Icons/Message.svelte.d.ts +2 -0
  278. package/dist/primitives/Icons/Message.svelte.d.ts.map +1 -1
  279. package/dist/primitives/Icons/MinusOutline.svelte +14 -12
  280. package/dist/primitives/Icons/MinusOutline.svelte.d.ts +4 -0
  281. package/dist/primitives/Icons/MinusOutline.svelte.d.ts.map +1 -1
  282. package/dist/primitives/Icons/MoonIcon.svelte +18 -16
  283. package/dist/primitives/Icons/MoonIcon.svelte.d.ts +2 -0
  284. package/dist/primitives/Icons/MoonIcon.svelte.d.ts.map +1 -1
  285. package/dist/primitives/Icons/More.svelte +34 -33
  286. package/dist/primitives/Icons/More.svelte.d.ts +2 -0
  287. package/dist/primitives/Icons/More.svelte.d.ts.map +1 -1
  288. package/dist/primitives/Icons/MoreHori.spec.js +67 -67
  289. package/dist/primitives/Icons/MoreHori.svelte +35 -34
  290. package/dist/primitives/Icons/MoreHori.svelte.d.ts +2 -0
  291. package/dist/primitives/Icons/MoreHori.svelte.d.ts.map +1 -1
  292. package/dist/primitives/Icons/Notification.svelte +27 -26
  293. package/dist/primitives/Icons/Notification.svelte.d.ts +2 -0
  294. package/dist/primitives/Icons/Notification.svelte.d.ts.map +1 -1
  295. package/dist/primitives/Icons/Payment.svelte +27 -26
  296. package/dist/primitives/Icons/Payment.svelte.d.ts +2 -0
  297. package/dist/primitives/Icons/Payment.svelte.d.ts.map +1 -1
  298. package/dist/primitives/Icons/PlusOutline.svelte +14 -12
  299. package/dist/primitives/Icons/PlusOutline.svelte.d.ts +4 -0
  300. package/dist/primitives/Icons/PlusOutline.svelte.d.ts.map +1 -1
  301. package/dist/primitives/Icons/Profile.svelte +34 -33
  302. package/dist/primitives/Icons/Profile.svelte.d.ts +2 -0
  303. package/dist/primitives/Icons/Profile.svelte.d.ts.map +1 -1
  304. package/dist/primitives/Icons/Reload.svelte +42 -41
  305. package/dist/primitives/Icons/Reload.svelte.d.ts +2 -0
  306. package/dist/primitives/Icons/Reload.svelte.d.ts.map +1 -1
  307. package/dist/primitives/Icons/SearchOutline.svelte +14 -12
  308. package/dist/primitives/Icons/SearchOutline.svelte.d.ts +4 -0
  309. package/dist/primitives/Icons/SearchOutline.svelte.d.ts.map +1 -1
  310. package/dist/primitives/Icons/ShareOutline.svelte +14 -12
  311. package/dist/primitives/Icons/ShareOutline.svelte.d.ts +4 -0
  312. package/dist/primitives/Icons/ShareOutline.svelte.d.ts.map +1 -1
  313. package/dist/primitives/Icons/Shows.svelte +34 -33
  314. package/dist/primitives/Icons/Shows.svelte.d.ts +2 -0
  315. package/dist/primitives/Icons/Shows.svelte.d.ts.map +1 -1
  316. package/dist/primitives/Icons/Signout.svelte +34 -33
  317. package/dist/primitives/Icons/Signout.svelte.d.ts +2 -0
  318. package/dist/primitives/Icons/Signout.svelte.d.ts.map +1 -1
  319. package/dist/primitives/Icons/SunIcon.svelte +21 -19
  320. package/dist/primitives/Icons/SunIcon.svelte.d.ts +2 -0
  321. package/dist/primitives/Icons/SunIcon.svelte.d.ts.map +1 -1
  322. package/dist/primitives/Icons/TiktokIcon.svelte +15 -13
  323. package/dist/primitives/Icons/TiktokIcon.svelte.d.ts +2 -0
  324. package/dist/primitives/Icons/TiktokIcon.svelte.d.ts.map +1 -1
  325. package/dist/primitives/Icons/TrashBinOutline.svelte +21 -19
  326. package/dist/primitives/Icons/TrashBinOutline.svelte.d.ts +6 -2
  327. package/dist/primitives/Icons/TrashBinOutline.svelte.d.ts.map +1 -1
  328. package/dist/primitives/Icons/TwitterIcon.svelte +15 -13
  329. package/dist/primitives/Icons/TwitterIcon.svelte.d.ts +2 -0
  330. package/dist/primitives/Icons/TwitterIcon.svelte.d.ts.map +1 -1
  331. package/dist/primitives/Icons/WarningIcon.spec.js +30 -30
  332. package/dist/primitives/Icons/WarningIcon.svelte +24 -24
  333. package/dist/primitives/Icons/WarningIcon.svelte.d.ts +6 -2
  334. package/dist/primitives/Icons/WarningIcon.svelte.d.ts.map +1 -1
  335. package/dist/primitives/Icons/iconTestUtils.d.ts +162 -0
  336. package/dist/primitives/Icons/iconTestUtils.d.ts.map +1 -0
  337. package/dist/primitives/Icons/iconTestUtils.js +160 -0
  338. package/dist/primitives/Icons/index.d.ts +56 -54
  339. package/dist/primitives/Icons/index.d.ts.map +1 -1
  340. package/dist/primitives/Icons/index.js +59 -61
  341. package/dist/primitives/Icons/types.d.ts +31 -0
  342. package/dist/primitives/Icons/types.d.ts.map +1 -0
  343. package/dist/primitives/Icons/types.js +8 -0
  344. package/dist/primitives/Input/Input.spec.js +573 -573
  345. package/dist/primitives/Input/Input.stories.svelte +139 -139
  346. package/dist/primitives/Input/Input.svelte +431 -444
  347. package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
  348. package/dist/primitives/Input/Select.spec.js +218 -218
  349. package/dist/primitives/Input/Select.stories.svelte +112 -112
  350. package/dist/primitives/Input/Select.svelte +249 -232
  351. package/dist/primitives/Input/Select.svelte.d.ts +16 -24
  352. package/dist/primitives/Input/Select.svelte.d.ts.map +1 -1
  353. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  354. package/dist/primitives/Input/Textarea.svelte +105 -79
  355. package/dist/primitives/Input/Textarea.svelte.d.ts +20 -39
  356. package/dist/primitives/Input/Textarea.svelte.d.ts.map +1 -1
  357. package/dist/primitives/Label/Label.svelte +37 -37
  358. package/dist/primitives/Modal/Modal.spec.js +95 -95
  359. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  360. package/dist/primitives/Modal/Modal.svelte +158 -158
  361. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  362. package/dist/primitives/Pagination/Pagination.svelte +261 -261
  363. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  364. package/dist/primitives/Radio/Radio.svelte +67 -67
  365. package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
  366. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
  367. package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
  368. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  369. package/dist/primitives/Skeleton/Skeleton.svelte +46 -52
  370. package/dist/primitives/Skeleton/Skeleton.svelte.d.ts +2 -1
  371. package/dist/primitives/Skeleton/Skeleton.svelte.d.ts.map +1 -1
  372. package/dist/primitives/Spinner/Spinner.spec.js +75 -75
  373. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  374. package/dist/primitives/Spinner/Spinner.svelte +44 -57
  375. package/dist/primitives/Spinner/Spinner.svelte.d.ts +4 -2
  376. package/dist/primitives/Spinner/Spinner.svelte.d.ts.map +1 -1
  377. package/dist/primitives/Tabs/TabItem.svelte +52 -51
  378. package/dist/primitives/Tabs/TabItem.svelte.d.ts.map +1 -1
  379. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  380. package/dist/primitives/Tabs/Tabs.svelte +129 -128
  381. package/dist/primitives/Tabs/Tabs.svelte.d.ts.map +1 -1
  382. package/dist/primitives/Toggle.spec.js +127 -127
  383. package/dist/primitives/Toggle.stories.svelte +92 -92
  384. package/dist/primitives/Toggle.svelte +71 -71
  385. package/dist/primitives/Typography/Typography.svelte +53 -53
  386. package/dist/primitives/ValidationError.spec.js +103 -103
  387. package/dist/primitives/ValidationError.stories.svelte +112 -111
  388. package/dist/primitives/ValidationError.svelte +29 -29
  389. package/dist/primitives/index.d.ts +31 -0
  390. package/dist/primitives/index.d.ts.map +1 -0
  391. package/dist/primitives/index.js +81 -0
  392. package/dist/recipes/CropImage/CropImage.spec.js +216 -216
  393. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  394. package/dist/recipes/CropImage/CropImage.svelte +238 -238
  395. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  396. package/dist/recipes/ImageUploader/ImageUploader.svelte +959 -980
  397. package/dist/recipes/ImageUploader/ImageUploader.svelte.d.ts.map +1 -1
  398. package/dist/recipes/SuperLogin/SuperLogin.svelte +18 -17
  399. package/dist/recipes/SuperLogin/SuperLogin.svelte.d.ts.map +1 -1
  400. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  401. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +66 -47
  402. package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts +7 -1
  403. package/dist/recipes/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -1
  404. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  405. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +113 -112
  406. package/dist/recipes/feedback/ErrorDisplay.svelte +67 -38
  407. package/dist/recipes/feedback/ErrorDisplay.svelte.d.ts +7 -0
  408. package/dist/recipes/feedback/ErrorDisplay.svelte.d.ts.map +1 -1
  409. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +129 -129
  410. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +176 -167
  411. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte.d.ts +2 -2
  412. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte.d.ts.map +1 -1
  413. package/dist/recipes/feedback/index.d.ts +4 -0
  414. package/dist/recipes/feedback/index.d.ts.map +1 -0
  415. package/dist/recipes/feedback/index.js +4 -0
  416. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  417. package/dist/recipes/fields/FormField.svelte +58 -58
  418. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  419. package/dist/recipes/fields/SelectField.svelte +82 -82
  420. package/dist/recipes/fields/SelectField.svelte.d.ts +4 -1
  421. package/dist/recipes/fields/SelectField.svelte.d.ts.map +1 -1
  422. package/dist/recipes/fields/TextareaField.svelte +101 -101
  423. package/dist/recipes/fields/TextareaField.svelte.d.ts +6 -2
  424. package/dist/recipes/fields/TextareaField.svelte.d.ts.map +1 -1
  425. package/dist/recipes/fields/ToggleField.svelte +60 -60
  426. package/dist/recipes/fields/index.js +7 -7
  427. package/dist/recipes/index.d.ts +8 -0
  428. package/dist/recipes/index.d.ts.map +1 -0
  429. package/dist/recipes/index.js +24 -0
  430. package/dist/recipes/inputs/MultiSelect.spec.js +257 -257
  431. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  432. package/dist/recipes/inputs/MultiSelect.svelte +276 -244
  433. package/dist/recipes/inputs/MultiSelect.svelte.d.ts +17 -26
  434. package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
  435. package/dist/recipes/inputs/OTPInput.spec.js +238 -238
  436. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  437. package/dist/recipes/inputs/OTPInput.svelte +117 -102
  438. package/dist/recipes/inputs/OTPInput.svelte.d.ts +15 -20
  439. package/dist/recipes/inputs/OTPInput.svelte.d.ts.map +1 -1
  440. package/dist/recipes/inputs/PasswordInput.svelte +121 -100
  441. package/dist/recipes/inputs/PasswordInput.svelte.d.ts +27 -34
  442. package/dist/recipes/inputs/PasswordInput.svelte.d.ts.map +1 -1
  443. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +173 -173
  444. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -108
  445. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +8 -16
  446. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts.map +1 -1
  447. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +300 -300
  448. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +170 -165
  449. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte.d.ts.map +1 -1
  450. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +337 -337
  451. package/dist/recipes/inputs/Search.svelte +102 -85
  452. package/dist/recipes/inputs/Search.svelte.d.ts +16 -32
  453. package/dist/recipes/inputs/Search.svelte.d.ts.map +1 -1
  454. package/dist/recipes/inputs/SelectDropdown.svelte +169 -161
  455. package/dist/recipes/inputs/SelectDropdown.svelte.d.ts +12 -18
  456. package/dist/recipes/inputs/SelectDropdown.svelte.d.ts.map +1 -1
  457. package/dist/recipes/inputs/index.d.ts +8 -0
  458. package/dist/recipes/inputs/index.d.ts.map +1 -0
  459. package/dist/recipes/inputs/index.js +8 -0
  460. package/dist/recipes/modals/AlertModal.svelte +130 -130
  461. package/dist/recipes/modals/ConfirmationModal.spec.js +191 -191
  462. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  463. package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
  464. package/dist/recipes/modals/InputModal.svelte +182 -182
  465. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  466. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  467. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  468. package/dist/recipes/modals/StatusModal.svelte +206 -206
  469. package/dist/recipes/modals/index.d.ts +7 -0
  470. package/dist/recipes/modals/index.d.ts.map +1 -0
  471. package/dist/recipes/modals/index.js +7 -0
  472. package/dist/services/EventService.js +75 -75
  473. package/dist/services/EventService.spec.js +217 -217
  474. package/dist/services/ShowService.spec.js +342 -342
  475. package/dist/stores/auth.js +36 -36
  476. package/dist/stores/auth.spec.js +139 -139
  477. package/dist/stores/toaster.js +13 -13
  478. package/dist/stories/ButtonAuditDashboard.svelte +23 -18
  479. package/dist/stories/ButtonAuditDashboard.svelte.d.ts.map +1 -1
  480. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  481. package/dist/stories/ButtonAuditReview.svelte +427 -427
  482. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  483. package/dist/stories/PatternsGallery.svelte +399 -388
  484. package/dist/stories/PatternsGallery.svelte.d.ts.map +1 -1
  485. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  486. package/dist/stories/PrimitivesGallery.svelte +752 -752
  487. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  488. package/dist/stories/RecipesGallery.svelte +471 -441
  489. package/dist/stories/RecipesGallery.svelte.d.ts.map +1 -1
  490. package/dist/stories/button-audit-manifest.json +11186 -11186
  491. package/dist/tailwind/preset.cjs +82 -82
  492. package/dist/telemetry.d.ts.map +1 -1
  493. package/dist/telemetry.js +1 -0
  494. package/dist/telemetry.server.d.ts.map +1 -1
  495. package/dist/telemetry.server.js +1 -0
  496. package/dist/telemetry.server.spec.js +1 -0
  497. package/dist/telemetry.spec.js +1 -0
  498. package/dist/tokens/__tests__/sizing.test.d.ts +2 -0
  499. package/dist/tokens/__tests__/sizing.test.d.ts.map +1 -0
  500. package/dist/tokens/__tests__/sizing.test.js +307 -0
  501. package/dist/tokens/__tests__/spacing.test.d.ts +2 -0
  502. package/dist/tokens/__tests__/spacing.test.d.ts.map +1 -0
  503. package/dist/tokens/__tests__/spacing.test.js +178 -0
  504. package/dist/tokens/__tests__/variants.test.d.ts +2 -0
  505. package/dist/tokens/__tests__/variants.test.d.ts.map +1 -0
  506. package/dist/tokens/__tests__/variants.test.js +329 -0
  507. package/dist/tokens/index.d.ts +3 -0
  508. package/dist/tokens/index.d.ts.map +1 -1
  509. package/dist/tokens/index.js +16 -0
  510. package/dist/tokens/sizing.d.ts +118 -0
  511. package/dist/tokens/sizing.d.ts.map +1 -0
  512. package/dist/tokens/sizing.js +125 -0
  513. package/dist/tokens/spacing.d.ts +105 -0
  514. package/dist/tokens/spacing.d.ts.map +1 -1
  515. package/dist/tokens/spacing.js +76 -0
  516. package/dist/tokens/tokens.css +87 -87
  517. package/dist/tokens/variants.d.ts +78 -0
  518. package/dist/tokens/variants.d.ts.map +1 -0
  519. package/dist/tokens/variants.js +89 -0
  520. package/dist/utils/__tests__/auth.test.d.ts +2 -0
  521. package/dist/utils/__tests__/auth.test.d.ts.map +1 -0
  522. package/dist/utils/__tests__/auth.test.js +431 -0
  523. package/dist/utils/__tests__/formatters.test.d.ts +2 -0
  524. package/dist/utils/__tests__/formatters.test.d.ts.map +1 -0
  525. package/dist/utils/__tests__/formatters.test.js +73 -0
  526. package/dist/utils/auth.d.ts +46 -0
  527. package/dist/utils/auth.d.ts.map +1 -0
  528. package/dist/utils/auth.js +195 -0
  529. package/dist/utils/formatters.d.ts +13 -0
  530. package/dist/utils/formatters.d.ts.map +1 -0
  531. package/dist/utils/formatters.js +24 -0
  532. package/dist/utils/utils.js +354 -354
  533. package/package.json +286 -282
  534. package/dist/patterns/layout/Grid.svelte +0 -35
  535. package/dist/patterns/layout/Grid.svelte.d.ts +0 -18
  536. package/dist/patterns/layout/Grid.svelte.d.ts.map +0 -1
@@ -1,261 +1,261 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
- import { ChevronLeftOutline, ChevronRightOutline } from "../Icons";
4
- import { typography } from "../../tokens/typography";
5
-
6
- interface Props {
7
- currentPage?: number;
8
- totalPages?: number;
9
- maxVisible?: number;
10
- showPrevNext?: boolean;
11
- showIcons?: boolean;
12
- previousLabel?: string;
13
- nextLabel?: string;
14
- variant?: 'default' | 'table';
15
- size?: 'sm' | 'md' | 'lg';
16
- totalItems?: number;
17
- perPage?: number;
18
- class?: string;
19
- onchange?: (detail: { page: number }) => void;
20
- onPageChange?: (page: number) => void;
21
- prev?: Snippet;
22
- next?: Snippet;
23
- [key: string]: unknown;
24
- }
25
-
26
- let {
27
- currentPage = $bindable(1),
28
- totalPages = 1,
29
- maxVisible = 5,
30
- showPrevNext = true,
31
- showIcons = undefined,
32
- previousLabel = undefined,
33
- nextLabel = undefined,
34
- variant = 'default',
35
- size = 'md',
36
- totalItems = 0,
37
- perPage = 10,
38
- class: className = "",
39
- onchange,
40
- onPageChange,
41
- prev,
42
- next,
43
- ...restProps
44
- }: Props = $props();
45
-
46
- // Support flowbite's showIcons prop
47
- let effectiveShowPrevNext = $derived(showIcons !== undefined ? showIcons : showPrevNext);
48
-
49
- // Calculate showing range for table variant
50
- let startItem = $derived(totalItems > 0 ? (currentPage - 1) * perPage + 1 : 0);
51
- let endItem = $derived(Math.min(currentPage * perPage, totalItems));
52
-
53
- // Size-based classes
54
- let sizeClasses = $derived({
55
- sm: 'h-8 px-3 text-sm',
56
- md: 'h-9 px-3 text-sm',
57
- lg: 'h-10 px-4 text-base'
58
- }[size]);
59
-
60
- let pageSizeClasses = $derived({
61
- sm: 'h-8 w-8 text-sm',
62
- md: 'h-9 w-9 text-sm',
63
- lg: 'h-10 w-10 text-base'
64
- }[size]);
65
-
66
- function goToPage(page: number) {
67
- if (page >= 1 && page <= totalPages && page !== currentPage) {
68
- currentPage = page;
69
- onchange?.({ page });
70
- // Also dispatch flowbite-style event
71
- onPageChange?.(page);
72
- }
73
- }
74
-
75
- function previous() {
76
- goToPage(currentPage - 1);
77
- }
78
-
79
- function nextPage() {
80
- goToPage(currentPage + 1);
81
- }
82
-
83
- // Calculate which page numbers to show
84
- let visiblePages = $derived.by(() => {
85
- const pages = [];
86
- let start = Math.max(1, currentPage - Math.floor(maxVisible / 2));
87
- let end = Math.min(totalPages, start + maxVisible - 1);
88
-
89
- // Adjust start if we're near the end
90
- if (end - start + 1 < maxVisible) {
91
- start = Math.max(1, end - maxVisible + 1);
92
- }
93
-
94
- for (let i = start; i <= end; i++) {
95
- pages.push(i);
96
- }
97
-
98
- return pages;
99
- });
100
-
101
- let showStartEllipsis = $derived(visiblePages[0] > 1);
102
- let showEndEllipsis = $derived(visiblePages[visiblePages.length - 1] < totalPages);
103
-
104
- // Base button classes (Flowbite connected style)
105
- const baseButtonClasses = "flex items-center justify-center leading-tight font-medium border border-gray-300 bg-white text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white";
106
-
107
- // Active state classes (Flowbite style)
108
- const activeClasses = "flex items-center justify-center leading-tight font-medium border border-gray-300 bg-blue-50 text-blue-600 hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:border-gray-700 dark:text-white";
109
-
110
- // Disabled state classes
111
- const disabledClasses = "cursor-not-allowed opacity-50";
112
- </script>
113
-
114
- {#if variant === 'table'}
115
- <div class="flex flex-col items-center gap-3 sm:flex-row sm:justify-between {className}" {...restProps}>
116
- <span class={`${typography.sm} text-gray-700 dark:text-gray-400`}>
117
- Showing <span class={`font-semibold ${typography.sm}`}>{startItem}</span> to <span class={`font-semibold ${typography.sm}`}>{endItem}</span> of <span class={`font-semibold ${typography.sm}`}>{totalItems}</span> entries
118
- </span>
119
- <nav class="inline-flex -space-x-px rtl:space-x-reverse" aria-label="Pagination">
120
- {#if effectiveShowPrevNext}
121
- <button
122
- type="button"
123
- class="{baseButtonClasses} {sizeClasses} rounded-s-lg {currentPage === 1 ? disabledClasses : ''}"
124
- disabled={currentPage === 1}
125
- onclick={previous}
126
- aria-label="Previous page"
127
- >
128
- {#if prev}
129
- {@render prev()}
130
- {:else if previousLabel}
131
- {previousLabel}
132
- {:else}
133
- <span aria-hidden="true"><ChevronLeftOutline class="h-4 w-4 rtl:rotate-180" /></span>
134
- {/if}
135
- </button>
136
- {/if}
137
-
138
- {#if showStartEllipsis}
139
- <button
140
- type="button"
141
- class="{baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext ? 'rounded-s-lg' : ''}"
142
- onclick={() => goToPage(1)}
143
- >
144
- 1
145
- </button>
146
- <span class="{baseButtonClasses} {pageSizeClasses} cursor-default">...</span>
147
- {/if}
148
-
149
- {#each visiblePages as page, index}
150
- <button
151
- type="button"
152
- class="{page === currentPage ? activeClasses : baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext && !showStartEllipsis && index === 0 ? 'rounded-s-lg' : ''} {!effectiveShowPrevNext && !showEndEllipsis && index === visiblePages.length - 1 ? 'rounded-e-lg' : ''}"
153
- onclick={() => goToPage(page)}
154
- aria-current={page === currentPage ? "page" : undefined}
155
- >
156
- {page}
157
- </button>
158
- {/each}
159
-
160
- {#if showEndEllipsis}
161
- <span class="{baseButtonClasses} {pageSizeClasses} cursor-default">...</span>
162
- <button
163
- type="button"
164
- class="{baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext ? 'rounded-e-lg' : ''}"
165
- onclick={() => goToPage(totalPages)}
166
- >
167
- {totalPages}
168
- </button>
169
- {/if}
170
-
171
- {#if effectiveShowPrevNext}
172
- <button
173
- type="button"
174
- class="{baseButtonClasses} {sizeClasses} rounded-e-lg {currentPage === totalPages ? disabledClasses : ''}"
175
- disabled={currentPage === totalPages}
176
- onclick={nextPage}
177
- aria-label="Next page"
178
- >
179
- {#if next}
180
- {@render next()}
181
- {:else if nextLabel}
182
- {nextLabel}
183
- {:else}
184
- <span aria-hidden="true"><ChevronRightOutline class="h-4 w-4 rtl:rotate-180" /></span>
185
- {/if}
186
- </button>
187
- {/if}
188
- </nav>
189
- </div>
190
- {:else}
191
- <nav class="inline-flex -space-x-px rtl:space-x-reverse text-sm {className}" aria-label="Pagination" {...restProps}>
192
- {#if effectiveShowPrevNext}
193
- <button
194
- type="button"
195
- class="{baseButtonClasses} {sizeClasses} rounded-s-lg {currentPage === 1 ? disabledClasses : ''}"
196
- disabled={currentPage === 1}
197
- onclick={previous}
198
- aria-label="Previous page"
199
- >
200
- {#if prev}
201
- {@render prev()}
202
- {:else if previousLabel}
203
- {previousLabel}
204
- {:else}
205
- <span aria-hidden="true"><ChevronLeftOutline class="h-4 w-4 rtl:rotate-180" /></span>
206
- {/if}
207
- </button>
208
- {/if}
209
-
210
- {#if showStartEllipsis}
211
- <button
212
- type="button"
213
- class="{baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext ? 'rounded-s-lg' : ''}"
214
- onclick={() => goToPage(1)}
215
- >
216
- 1
217
- </button>
218
- <span class="{baseButtonClasses} {pageSizeClasses} cursor-default">...</span>
219
- {/if}
220
-
221
- {#each visiblePages as page, index}
222
- <button
223
- type="button"
224
- class="{page === currentPage ? activeClasses : baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext && !showStartEllipsis && index === 0 ? 'rounded-s-lg' : ''} {!effectiveShowPrevNext && !showEndEllipsis && index === visiblePages.length - 1 ? 'rounded-e-lg' : ''}"
225
- onclick={() => goToPage(page)}
226
- aria-current={page === currentPage ? "page" : undefined}
227
- >
228
- {page}
229
- </button>
230
- {/each}
231
-
232
- {#if showEndEllipsis}
233
- <span class="{baseButtonClasses} {pageSizeClasses} cursor-default">...</span>
234
- <button
235
- type="button"
236
- class="{baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext ? 'rounded-e-lg' : ''}"
237
- onclick={() => goToPage(totalPages)}
238
- >
239
- {totalPages}
240
- </button>
241
- {/if}
242
-
243
- {#if effectiveShowPrevNext}
244
- <button
245
- type="button"
246
- class="{baseButtonClasses} {sizeClasses} rounded-e-lg {currentPage === totalPages ? disabledClasses : ''}"
247
- disabled={currentPage === totalPages}
248
- onclick={nextPage}
249
- aria-label="Next page"
250
- >
251
- {#if next}
252
- {@render next()}
253
- {:else if nextLabel}
254
- {nextLabel}
255
- {:else}
256
- <span aria-hidden="true"><ChevronRightOutline class="h-4 w-4 rtl:rotate-180" /></span>
257
- {/if}
258
- </button>
259
- {/if}
260
- </nav>
261
- {/if}
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import { ChevronLeftOutline, ChevronRightOutline } from "../Icons";
4
+ import { typography } from "../../tokens/typography";
5
+
6
+ interface Props {
7
+ currentPage?: number;
8
+ totalPages?: number;
9
+ maxVisible?: number;
10
+ showPrevNext?: boolean;
11
+ showIcons?: boolean;
12
+ previousLabel?: string;
13
+ nextLabel?: string;
14
+ variant?: 'default' | 'table';
15
+ size?: 'sm' | 'md' | 'lg';
16
+ totalItems?: number;
17
+ perPage?: number;
18
+ class?: string;
19
+ onchange?: (detail: { page: number }) => void;
20
+ onPageChange?: (page: number) => void;
21
+ prev?: Snippet;
22
+ next?: Snippet;
23
+ [key: string]: unknown;
24
+ }
25
+
26
+ let {
27
+ currentPage = $bindable(1),
28
+ totalPages = 1,
29
+ maxVisible = 5,
30
+ showPrevNext = true,
31
+ showIcons = undefined,
32
+ previousLabel = undefined,
33
+ nextLabel = undefined,
34
+ variant = 'default',
35
+ size = 'md',
36
+ totalItems = 0,
37
+ perPage = 10,
38
+ class: className = "",
39
+ onchange,
40
+ onPageChange,
41
+ prev,
42
+ next,
43
+ ...restProps
44
+ }: Props = $props();
45
+
46
+ // Support flowbite's showIcons prop
47
+ let effectiveShowPrevNext = $derived(showIcons !== undefined ? showIcons : showPrevNext);
48
+
49
+ // Calculate showing range for table variant
50
+ let startItem = $derived(totalItems > 0 ? (currentPage - 1) * perPage + 1 : 0);
51
+ let endItem = $derived(Math.min(currentPage * perPage, totalItems));
52
+
53
+ // Size-based classes
54
+ let sizeClasses = $derived({
55
+ sm: 'h-8 px-3 text-sm',
56
+ md: 'h-9 px-3 text-sm',
57
+ lg: 'h-10 px-4 text-base'
58
+ }[size]);
59
+
60
+ let pageSizeClasses = $derived({
61
+ sm: 'h-8 w-8 text-sm',
62
+ md: 'h-9 w-9 text-sm',
63
+ lg: 'h-10 w-10 text-base'
64
+ }[size]);
65
+
66
+ function goToPage(page: number) {
67
+ if (page >= 1 && page <= totalPages && page !== currentPage) {
68
+ currentPage = page;
69
+ onchange?.({ page });
70
+ // Also dispatch flowbite-style event
71
+ onPageChange?.(page);
72
+ }
73
+ }
74
+
75
+ function previous() {
76
+ goToPage(currentPage - 1);
77
+ }
78
+
79
+ function nextPage() {
80
+ goToPage(currentPage + 1);
81
+ }
82
+
83
+ // Calculate which page numbers to show
84
+ let visiblePages = $derived.by(() => {
85
+ const pages = [];
86
+ let start = Math.max(1, currentPage - Math.floor(maxVisible / 2));
87
+ let end = Math.min(totalPages, start + maxVisible - 1);
88
+
89
+ // Adjust start if we're near the end
90
+ if (end - start + 1 < maxVisible) {
91
+ start = Math.max(1, end - maxVisible + 1);
92
+ }
93
+
94
+ for (let i = start; i <= end; i++) {
95
+ pages.push(i);
96
+ }
97
+
98
+ return pages;
99
+ });
100
+
101
+ let showStartEllipsis = $derived(visiblePages[0] > 1);
102
+ let showEndEllipsis = $derived(visiblePages[visiblePages.length - 1] < totalPages);
103
+
104
+ // Base button classes (Flowbite connected style)
105
+ const baseButtonClasses = "flex items-center justify-center leading-tight font-medium border border-gray-300 bg-white text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white";
106
+
107
+ // Active state classes (Flowbite style)
108
+ const activeClasses = "flex items-center justify-center leading-tight font-medium border border-gray-300 bg-blue-50 text-blue-600 hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:border-gray-700 dark:text-white";
109
+
110
+ // Disabled state classes
111
+ const disabledClasses = "cursor-not-allowed opacity-50";
112
+ </script>
113
+
114
+ {#if variant === 'table'}
115
+ <div class="flex flex-col items-center gap-3 sm:flex-row sm:justify-between {className}" {...restProps}>
116
+ <span class={`${typography.sm} text-gray-700 dark:text-gray-400`}>
117
+ Showing <span class={`font-semibold ${typography.sm}`}>{startItem}</span> to <span class={`font-semibold ${typography.sm}`}>{endItem}</span> of <span class={`font-semibold ${typography.sm}`}>{totalItems}</span> entries
118
+ </span>
119
+ <nav class="inline-flex -space-x-px rtl:space-x-reverse" aria-label="Pagination">
120
+ {#if effectiveShowPrevNext}
121
+ <button
122
+ type="button"
123
+ class="{baseButtonClasses} {sizeClasses} rounded-s-lg {currentPage === 1 ? disabledClasses : ''}"
124
+ disabled={currentPage === 1}
125
+ onclick={previous}
126
+ aria-label="Previous page"
127
+ >
128
+ {#if prev}
129
+ {@render prev()}
130
+ {:else if previousLabel}
131
+ {previousLabel}
132
+ {:else}
133
+ <span aria-hidden="true"><ChevronLeftOutline class="h-4 w-4 rtl:rotate-180" /></span>
134
+ {/if}
135
+ </button>
136
+ {/if}
137
+
138
+ {#if showStartEllipsis}
139
+ <button
140
+ type="button"
141
+ class="{baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext ? 'rounded-s-lg' : ''}"
142
+ onclick={() => goToPage(1)}
143
+ >
144
+ 1
145
+ </button>
146
+ <span class="{baseButtonClasses} {pageSizeClasses} cursor-default">...</span>
147
+ {/if}
148
+
149
+ {#each visiblePages as page, index}
150
+ <button
151
+ type="button"
152
+ class="{page === currentPage ? activeClasses : baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext && !showStartEllipsis && index === 0 ? 'rounded-s-lg' : ''} {!effectiveShowPrevNext && !showEndEllipsis && index === visiblePages.length - 1 ? 'rounded-e-lg' : ''}"
153
+ onclick={() => goToPage(page)}
154
+ aria-current={page === currentPage ? "page" : undefined}
155
+ >
156
+ {page}
157
+ </button>
158
+ {/each}
159
+
160
+ {#if showEndEllipsis}
161
+ <span class="{baseButtonClasses} {pageSizeClasses} cursor-default">...</span>
162
+ <button
163
+ type="button"
164
+ class="{baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext ? 'rounded-e-lg' : ''}"
165
+ onclick={() => goToPage(totalPages)}
166
+ >
167
+ {totalPages}
168
+ </button>
169
+ {/if}
170
+
171
+ {#if effectiveShowPrevNext}
172
+ <button
173
+ type="button"
174
+ class="{baseButtonClasses} {sizeClasses} rounded-e-lg {currentPage === totalPages ? disabledClasses : ''}"
175
+ disabled={currentPage === totalPages}
176
+ onclick={nextPage}
177
+ aria-label="Next page"
178
+ >
179
+ {#if next}
180
+ {@render next()}
181
+ {:else if nextLabel}
182
+ {nextLabel}
183
+ {:else}
184
+ <span aria-hidden="true"><ChevronRightOutline class="h-4 w-4 rtl:rotate-180" /></span>
185
+ {/if}
186
+ </button>
187
+ {/if}
188
+ </nav>
189
+ </div>
190
+ {:else}
191
+ <nav class="inline-flex -space-x-px rtl:space-x-reverse text-sm {className}" aria-label="Pagination" {...restProps}>
192
+ {#if effectiveShowPrevNext}
193
+ <button
194
+ type="button"
195
+ class="{baseButtonClasses} {sizeClasses} rounded-s-lg {currentPage === 1 ? disabledClasses : ''}"
196
+ disabled={currentPage === 1}
197
+ onclick={previous}
198
+ aria-label="Previous page"
199
+ >
200
+ {#if prev}
201
+ {@render prev()}
202
+ {:else if previousLabel}
203
+ {previousLabel}
204
+ {:else}
205
+ <span aria-hidden="true"><ChevronLeftOutline class="h-4 w-4 rtl:rotate-180" /></span>
206
+ {/if}
207
+ </button>
208
+ {/if}
209
+
210
+ {#if showStartEllipsis}
211
+ <button
212
+ type="button"
213
+ class="{baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext ? 'rounded-s-lg' : ''}"
214
+ onclick={() => goToPage(1)}
215
+ >
216
+ 1
217
+ </button>
218
+ <span class="{baseButtonClasses} {pageSizeClasses} cursor-default">...</span>
219
+ {/if}
220
+
221
+ {#each visiblePages as page, index}
222
+ <button
223
+ type="button"
224
+ class="{page === currentPage ? activeClasses : baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext && !showStartEllipsis && index === 0 ? 'rounded-s-lg' : ''} {!effectiveShowPrevNext && !showEndEllipsis && index === visiblePages.length - 1 ? 'rounded-e-lg' : ''}"
225
+ onclick={() => goToPage(page)}
226
+ aria-current={page === currentPage ? "page" : undefined}
227
+ >
228
+ {page}
229
+ </button>
230
+ {/each}
231
+
232
+ {#if showEndEllipsis}
233
+ <span class="{baseButtonClasses} {pageSizeClasses} cursor-default">...</span>
234
+ <button
235
+ type="button"
236
+ class="{baseButtonClasses} {pageSizeClasses} {!effectiveShowPrevNext ? 'rounded-e-lg' : ''}"
237
+ onclick={() => goToPage(totalPages)}
238
+ >
239
+ {totalPages}
240
+ </button>
241
+ {/if}
242
+
243
+ {#if effectiveShowPrevNext}
244
+ <button
245
+ type="button"
246
+ class="{baseButtonClasses} {sizeClasses} rounded-e-lg {currentPage === totalPages ? disabledClasses : ''}"
247
+ disabled={currentPage === totalPages}
248
+ onclick={nextPage}
249
+ aria-label="Next page"
250
+ >
251
+ {#if next}
252
+ {@render next()}
253
+ {:else if nextLabel}
254
+ {nextLabel}
255
+ {:else}
256
+ <span aria-hidden="true"><ChevronRightOutline class="h-4 w-4 rtl:rotate-180" /></span>
257
+ {/if}
258
+ </button>
259
+ {/if}
260
+ </nav>
261
+ {/if}