sveltacular 0.0.77 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/README.md +142 -15
  2. package/dist/forms/base-input-wrapper.svelte +99 -0
  3. package/dist/forms/base-input-wrapper.svelte.d.ts +15 -0
  4. package/dist/forms/bool-box/bool-box.svelte +30 -16
  5. package/dist/forms/bool-box/bool-box.svelte.d.ts +9 -23
  6. package/dist/forms/button/button.svelte +153 -89
  7. package/dist/forms/button/button.svelte.d.ts +25 -31
  8. package/dist/forms/check-box/check-box-group.svelte +69 -31
  9. package/dist/forms/check-box/check-box-group.svelte.d.ts +11 -29
  10. package/dist/forms/check-box/check-box.svelte +57 -33
  11. package/dist/forms/check-box/check-box.svelte.d.ts +15 -27
  12. package/dist/forms/check-box/index.d.ts +2 -0
  13. package/dist/forms/check-box/index.js +2 -0
  14. package/dist/forms/combo/new-or-existing-combo.svelte +37 -18
  15. package/dist/forms/combo/new-or-existing-combo.svelte.d.ts +15 -27
  16. package/dist/forms/combo-box/combo-box.svelte +643 -0
  17. package/dist/forms/combo-box/combo-box.svelte.d.ts +42 -0
  18. package/dist/forms/combo-box/index.d.ts +1 -0
  19. package/dist/forms/combo-box/index.js +1 -0
  20. package/dist/forms/date-box/date-box.svelte +82 -53
  21. package/dist/forms/date-box/date-box.svelte.d.ts +21 -34
  22. package/dist/forms/file-area/file-area.svelte +109 -57
  23. package/dist/forms/file-area/file-area.svelte.d.ts +12 -24
  24. package/dist/forms/file-box/file-box.svelte +38 -23
  25. package/dist/forms/file-box/file-box.svelte.d.ts +14 -27
  26. package/dist/forms/form-field.svelte +76 -13
  27. package/dist/forms/form-field.svelte.d.ts +15 -20
  28. package/dist/forms/form-footer.svelte +6 -3
  29. package/dist/forms/form-footer.svelte.d.ts +6 -28
  30. package/dist/forms/form-header.svelte +15 -4
  31. package/dist/forms/form-header.svelte.d.ts +8 -20
  32. package/dist/forms/form-label.svelte +15 -6
  33. package/dist/forms/form-label.svelte.d.ts +8 -21
  34. package/dist/forms/form-row.svelte +29 -0
  35. package/dist/forms/form-row.svelte.d.ts +7 -0
  36. package/dist/forms/form-section.svelte +15 -4
  37. package/dist/forms/form-section.svelte.d.ts +8 -20
  38. package/dist/forms/form.svelte +36 -13
  39. package/dist/forms/form.svelte.d.ts +11 -24
  40. package/dist/forms/index.d.ts +26 -0
  41. package/dist/forms/index.js +31 -0
  42. package/dist/forms/info-box/info-box.svelte +17 -10
  43. package/dist/forms/info-box/info-box.svelte.d.ts +8 -21
  44. package/dist/forms/list-box/index.d.ts +2 -0
  45. package/dist/forms/list-box/index.js +1 -0
  46. package/dist/forms/list-box/list-box.svelte +188 -111
  47. package/dist/forms/list-box/list-box.svelte.d.ts +16 -28
  48. package/dist/forms/money-box/money-box.svelte +224 -178
  49. package/dist/forms/money-box/money-box.svelte.d.ts +16 -30
  50. package/dist/forms/number-box/number-box.svelte +82 -62
  51. package/dist/forms/number-box/number-box.svelte.d.ts +17 -30
  52. package/dist/forms/phone-box/index.d.ts +1 -0
  53. package/dist/forms/phone-box/index.js +1 -0
  54. package/dist/forms/phone-box/phone-box.svelte +156 -116
  55. package/dist/forms/phone-box/phone-box.svelte.d.ts +8 -22
  56. package/dist/forms/radio-group/index.d.ts +2 -0
  57. package/dist/forms/radio-group/index.js +2 -0
  58. package/dist/forms/radio-group/radio-box.svelte +23 -8
  59. package/dist/forms/radio-group/radio-box.svelte.d.ts +10 -21
  60. package/dist/forms/radio-group/radio-group.svelte +25 -15
  61. package/dist/forms/radio-group/radio-group.svelte.d.ts +10 -23
  62. package/dist/forms/slider/slider.svelte +206 -0
  63. package/dist/forms/slider/slider.svelte.d.ts +17 -0
  64. package/dist/forms/switch-box/switch-box.svelte +35 -21
  65. package/dist/forms/switch-box/switch-box.svelte.d.ts +9 -22
  66. package/dist/forms/text-area/text-area.svelte +94 -17
  67. package/dist/forms/text-area/text-area.svelte.d.ts +15 -25
  68. package/dist/forms/text-box/text-box.svelte +244 -79
  69. package/dist/forms/text-box/text-box.svelte.d.ts +28 -38
  70. package/dist/forms/time-box/time-box.svelte +63 -0
  71. package/dist/forms/time-box/time-box.svelte.d.ts +12 -0
  72. package/dist/forms/url-box/url-box.svelte +32 -18
  73. package/dist/forms/url-box/url-box.svelte.d.ts +9 -22
  74. package/dist/forms/validation.d.ts +60 -0
  75. package/dist/forms/validation.js +123 -0
  76. package/dist/generic/address/address.svelte +22 -11
  77. package/dist/generic/address/address.svelte.d.ts +9 -21
  78. package/dist/generic/avatar/avatar.svelte +87 -0
  79. package/dist/generic/avatar/avatar.svelte.d.ts +10 -0
  80. package/dist/generic/badge/badge.svelte +82 -0
  81. package/dist/generic/badge/badge.svelte.d.ts +11 -0
  82. package/dist/generic/card/card-container.svelte +41 -12
  83. package/dist/generic/card/card-container.svelte.d.ts +8 -20
  84. package/dist/generic/card/card.svelte +47 -27
  85. package/dist/generic/card/card.svelte.d.ts +9 -21
  86. package/dist/generic/card/index.d.ts +3 -0
  87. package/dist/generic/card/index.js +2 -0
  88. package/dist/generic/chip/chip.svelte +91 -0
  89. package/dist/generic/chip/chip.svelte.d.ts +11 -0
  90. package/dist/generic/date/date-time.svelte +86 -58
  91. package/dist/generic/date/date-time.svelte.d.ts +10 -22
  92. package/dist/generic/divider/divider.svelte.d.ts +22 -21
  93. package/dist/generic/dot/dot.svelte +13 -4
  94. package/dist/generic/dot/dot.svelte.d.ts +7 -19
  95. package/dist/generic/dropdown-item/dropdown-item.svelte +24 -12
  96. package/dist/generic/dropdown-item/dropdown-item.svelte.d.ts +10 -23
  97. package/dist/generic/email/email.svelte +6 -4
  98. package/dist/generic/email/email.svelte.d.ts +5 -17
  99. package/dist/generic/empty/empty.svelte +57 -26
  100. package/dist/generic/empty/empty.svelte.d.ts +11 -23
  101. package/dist/generic/header/header.svelte +26 -10
  102. package/dist/generic/header/header.svelte.d.ts +10 -22
  103. package/dist/generic/index.d.ts +28 -0
  104. package/dist/generic/index.js +31 -0
  105. package/dist/generic/link/link.svelte +20 -7
  106. package/dist/generic/link/link.svelte.d.ts +11 -23
  107. package/dist/generic/list/index.d.ts +4 -0
  108. package/dist/generic/list/index.js +3 -0
  109. package/dist/generic/list/list-item.svelte +17 -13
  110. package/dist/generic/list/list-item.svelte.d.ts +6 -17
  111. package/dist/generic/list/list.d.ts +2 -2
  112. package/dist/generic/list/list.svelte +28 -15
  113. package/dist/generic/list/list.svelte.d.ts +9 -21
  114. package/dist/generic/menu/menu.svelte +163 -54
  115. package/dist/generic/menu/menu.svelte.d.ts +16 -26
  116. package/dist/generic/notice/notice.svelte +119 -80
  117. package/dist/generic/notice/notice.svelte.d.ts +17 -28
  118. package/dist/generic/overlay.svelte +40 -14
  119. package/dist/generic/overlay.svelte.d.ts +9 -21
  120. package/dist/generic/panel/panel.svelte +16 -6
  121. package/dist/generic/panel/panel.svelte.d.ts +8 -20
  122. package/dist/generic/phone/phone.svelte +30 -20
  123. package/dist/generic/phone/phone.svelte.d.ts +6 -18
  124. package/dist/generic/pill/pill.svelte +47 -33
  125. package/dist/generic/pill/pill.svelte.d.ts +10 -23
  126. package/dist/generic/popover/popover.svelte +226 -0
  127. package/dist/generic/popover/popover.svelte.d.ts +15 -0
  128. package/dist/generic/rating/rating.svelte +85 -0
  129. package/dist/generic/rating/rating.svelte.d.ts +11 -0
  130. package/dist/generic/scorecard/scorecard.svelte +34 -18
  131. package/dist/generic/scorecard/scorecard.svelte.d.ts +9 -21
  132. package/dist/generic/section/section.svelte +28 -9
  133. package/dist/generic/section/section.svelte.d.ts +11 -23
  134. package/dist/generic/spinner/spinner.svelte +64 -0
  135. package/dist/generic/spinner/spinner.svelte.d.ts +8 -0
  136. package/dist/generic/theme-provider/index.d.ts +1 -0
  137. package/dist/generic/theme-provider/index.js +1 -0
  138. package/dist/generic/theme-provider/theme-provider-demo.svelte +182 -0
  139. package/dist/generic/theme-provider/theme-provider-demo.svelte.d.ts +3 -0
  140. package/dist/generic/theme-provider/theme-provider.svelte +83 -0
  141. package/dist/generic/theme-provider/theme-provider.svelte.d.ts +44 -0
  142. package/dist/generic/toaster/toaster.svelte +31 -6
  143. package/dist/generic/toaster/toaster.svelte.d.ts +7 -17
  144. package/dist/generic/tooltip/tooltip.svelte +389 -0
  145. package/dist/generic/tooltip/tooltip.svelte.d.ts +21 -0
  146. package/dist/helpers/ago.d.ts +6 -0
  147. package/dist/helpers/ago.js +6 -0
  148. package/dist/helpers/animation-actions.d.ts +124 -0
  149. package/dist/helpers/animation-actions.js +299 -0
  150. package/dist/helpers/animations.d.ts +198 -0
  151. package/dist/helpers/animations.js +280 -0
  152. package/dist/helpers/announcer.d.ts +118 -0
  153. package/dist/helpers/announcer.js +250 -0
  154. package/dist/helpers/copy-to-clipboard.svelte.d.ts +5 -0
  155. package/dist/helpers/copy-to-clipboard.svelte.js +28 -0
  156. package/dist/helpers/debounce.d.ts +7 -0
  157. package/dist/helpers/debounce.js +7 -0
  158. package/dist/helpers/focus.d.ts +123 -0
  159. package/dist/helpers/focus.js +335 -0
  160. package/dist/helpers/fuzzy-search.d.ts +41 -0
  161. package/dist/helpers/fuzzy-search.js +114 -0
  162. package/dist/helpers/index.d.ts +24 -0
  163. package/dist/helpers/index.js +24 -0
  164. package/dist/helpers/navigate-to.d.ts +4 -0
  165. package/dist/helpers/navigate-to.js +4 -0
  166. package/dist/helpers/positioning.d.ts +97 -0
  167. package/dist/helpers/positioning.js +230 -0
  168. package/dist/helpers/round-to-decimals.d.ts +7 -5
  169. package/dist/helpers/round-to-decimals.js +7 -5
  170. package/dist/helpers/spring.svelte.d.ts +97 -0
  171. package/dist/helpers/spring.svelte.js +216 -0
  172. package/dist/helpers/subscribable.d.ts +1 -1
  173. package/dist/helpers/theme.svelte.d.ts +63 -0
  174. package/dist/helpers/theme.svelte.js +123 -0
  175. package/dist/helpers/unique-id.d.ts +4 -0
  176. package/dist/helpers/unique-id.js +4 -0
  177. package/dist/helpers/use-position.svelte.d.ts +96 -0
  178. package/dist/helpers/use-position.svelte.js +189 -0
  179. package/dist/helpers/use-virtual-list.svelte.d.ts +121 -0
  180. package/dist/helpers/use-virtual-list.svelte.js +239 -0
  181. package/dist/icons/angle-right-icon.svelte +2 -1
  182. package/dist/icons/angle-right-icon.svelte.d.ts +16 -14
  183. package/dist/icons/angle-up-icon.svelte.d.ts +22 -21
  184. package/dist/icons/check-icon.svelte.d.ts +22 -21
  185. package/dist/icons/copy-icon.svelte +46 -0
  186. package/dist/icons/copy-icon.svelte.d.ts +6 -0
  187. package/dist/icons/envelope-icon.svelte.d.ts +22 -21
  188. package/dist/icons/folder-open-icon.svelte.d.ts +22 -21
  189. package/dist/icons/hamburger-icon.svelte.d.ts +22 -21
  190. package/dist/icons/home-icon.svelte +2 -1
  191. package/dist/icons/home-icon.svelte.d.ts +16 -14
  192. package/dist/icons/index.d.ts +13 -0
  193. package/dist/icons/index.js +13 -0
  194. package/dist/icons/link-icon.svelte.d.ts +22 -21
  195. package/dist/icons/mobile-phone-icon.svelte.d.ts +22 -21
  196. package/dist/icons/phone-icon.svelte.d.ts +22 -21
  197. package/dist/icons/svg-icon.svelte +46 -10
  198. package/dist/icons/svg-icon.svelte.d.ts +13 -25
  199. package/dist/icons/upload-icon.svelte.d.ts +22 -21
  200. package/dist/images/icon.svelte +9 -3
  201. package/dist/images/icon.svelte.d.ts +6 -18
  202. package/dist/images/image.svelte +28 -8
  203. package/dist/images/image.svelte.d.ts +14 -28
  204. package/dist/images/index.d.ts +2 -0
  205. package/dist/images/index.js +2 -0
  206. package/dist/index.d.ts +13 -122
  207. package/dist/index.js +27 -135
  208. package/dist/layout/flex-col.svelte +65 -16
  209. package/dist/layout/flex-col.svelte.d.ts +12 -24
  210. package/dist/layout/flex-item.svelte +13 -3
  211. package/dist/layout/flex-item.svelte.d.ts +8 -20
  212. package/dist/layout/flex-row.svelte +70 -15
  213. package/dist/layout/flex-row.svelte.d.ts +14 -26
  214. package/dist/layout/grid.svelte +7 -1
  215. package/dist/layout/grid.svelte.d.ts +6 -28
  216. package/dist/layout/index.d.ts +4 -0
  217. package/dist/layout/index.js +4 -0
  218. package/dist/modals/alert.svelte +42 -28
  219. package/dist/modals/alert.svelte.d.ts +13 -26
  220. package/dist/modals/confirm.svelte +54 -37
  221. package/dist/modals/confirm.svelte.d.ts +16 -29
  222. package/dist/modals/dialog-body.svelte +10 -4
  223. package/dist/modals/dialog-body.svelte.d.ts +6 -28
  224. package/dist/modals/dialog-close-button.svelte +15 -9
  225. package/dist/modals/dialog-close-button.svelte.d.ts +6 -19
  226. package/dist/modals/dialog-footer.svelte +6 -3
  227. package/dist/modals/dialog-footer.svelte.d.ts +6 -28
  228. package/dist/modals/dialog-header.svelte +13 -1
  229. package/dist/modals/dialog-header.svelte.d.ts +7 -28
  230. package/dist/modals/dialog-window.svelte +42 -14
  231. package/dist/modals/dialog-window.svelte.d.ts +9 -19
  232. package/dist/modals/index.d.ts +9 -0
  233. package/dist/modals/index.js +9 -0
  234. package/dist/modals/modal.svelte +88 -23
  235. package/dist/modals/modal.svelte.d.ts +14 -24
  236. package/dist/modals/prompt.svelte +71 -49
  237. package/dist/modals/prompt.svelte.d.ts +19 -32
  238. package/dist/navigation/accordion/accordion.svelte +104 -0
  239. package/dist/navigation/accordion/accordion.svelte.d.ts +9 -0
  240. package/dist/navigation/app-bar/app-bar.svelte +26 -12
  241. package/dist/navigation/app-bar/app-bar.svelte.d.ts +10 -22
  242. package/dist/navigation/app-bar/app-branding.svelte +10 -5
  243. package/dist/navigation/app-bar/app-branding.svelte.d.ts +6 -17
  244. package/dist/navigation/app-bar/app-logo.svelte +20 -5
  245. package/dist/navigation/app-bar/app-logo.svelte.d.ts +9 -21
  246. package/dist/navigation/app-bar/app-nav-item.svelte +26 -13
  247. package/dist/navigation/app-bar/app-nav-item.svelte.d.ts +9 -22
  248. package/dist/navigation/app-bar/app-nav.svelte +39 -12
  249. package/dist/navigation/app-bar/app-nav.svelte.d.ts +8 -20
  250. package/dist/navigation/app-bar/index.d.ts +5 -0
  251. package/dist/navigation/app-bar/index.js +5 -0
  252. package/dist/navigation/breadcrumbs/breadcrumbs.svelte +54 -27
  253. package/dist/navigation/breadcrumbs/breadcrumbs.svelte.d.ts +12 -23
  254. package/dist/navigation/command-palette/command-palette.svelte +758 -0
  255. package/dist/navigation/command-palette/command-palette.svelte.d.ts +65 -0
  256. package/dist/navigation/command-palette/index.d.ts +2 -0
  257. package/dist/navigation/command-palette/index.js +1 -0
  258. package/dist/navigation/context-menu/README.md +147 -0
  259. package/dist/navigation/context-menu/context-menu-divider.svelte +22 -0
  260. package/dist/navigation/context-menu/context-menu-divider.svelte.d.ts +18 -0
  261. package/dist/navigation/context-menu/context-menu-item.svelte +268 -0
  262. package/dist/navigation/context-menu/context-menu-item.svelte.d.ts +19 -0
  263. package/dist/navigation/context-menu/context-menu.svelte +226 -0
  264. package/dist/navigation/context-menu/context-menu.svelte.d.ts +38 -0
  265. package/dist/navigation/context-menu/index.d.ts +3 -0
  266. package/dist/navigation/context-menu/index.js +3 -0
  267. package/dist/navigation/drawer/drawer.svelte +137 -0
  268. package/dist/navigation/drawer/drawer.svelte.d.ts +11 -0
  269. package/dist/navigation/dropdown-button/dropdown-button.svelte +58 -19
  270. package/dist/navigation/dropdown-button/dropdown-button.svelte.d.ts +10 -22
  271. package/dist/navigation/index.d.ts +11 -0
  272. package/dist/navigation/index.js +14 -0
  273. package/dist/navigation/pagination/pagination.svelte +55 -37
  274. package/dist/navigation/pagination/pagination.svelte.d.ts +10 -23
  275. package/dist/navigation/side-bar/side-bar.svelte +18 -9
  276. package/dist/navigation/side-bar/side-bar.svelte.d.ts +7 -19
  277. package/dist/navigation/tabs/index.d.ts +4 -0
  278. package/dist/navigation/tabs/index.js +3 -0
  279. package/dist/navigation/tabs/tab-context.d.ts +12 -6
  280. package/dist/navigation/tabs/tab-group.svelte +268 -52
  281. package/dist/navigation/tabs/tab-group.svelte.d.ts +9 -22
  282. package/dist/navigation/tabs/tab.svelte +64 -33
  283. package/dist/navigation/tabs/tab.svelte.d.ts +11 -24
  284. package/dist/navigation/wizard/index.d.ts +3 -0
  285. package/dist/navigation/wizard/index.js +2 -0
  286. package/dist/navigation/wizard/wizard-context.d.ts +13 -8
  287. package/dist/navigation/wizard/wizard-step.svelte +38 -13
  288. package/dist/navigation/wizard/wizard-step.svelte.d.ts +8 -20
  289. package/dist/navigation/wizard/wizard.svelte +123 -81
  290. package/dist/navigation/wizard/wizard.svelte.d.ts +15 -28
  291. package/dist/placeholders/index.d.ts +6 -0
  292. package/dist/placeholders/index.js +6 -0
  293. package/dist/placeholders/loading.svelte +39 -23
  294. package/dist/placeholders/loading.svelte.d.ts +10 -19
  295. package/dist/placeholders/progress.svelte +7 -6
  296. package/dist/placeholders/progress.svelte.d.ts +5 -17
  297. package/dist/placeholders/skeleton-input.svelte +66 -38
  298. package/dist/placeholders/skeleton-input.svelte.d.ts +5 -17
  299. package/dist/placeholders/skeleton-paragraph.svelte +25 -0
  300. package/dist/placeholders/skeleton-paragraph.svelte.d.ts +8 -0
  301. package/dist/placeholders/skeleton-table.svelte +75 -0
  302. package/dist/placeholders/skeleton-table.svelte.d.ts +8 -0
  303. package/dist/placeholders/skeleton-text.svelte +46 -15
  304. package/dist/placeholders/skeleton-text.svelte.d.ts +7 -19
  305. package/dist/tables/cell-renderers.d.ts +24 -0
  306. package/dist/tables/cell-renderers.js +228 -0
  307. package/dist/tables/data-grid.svelte +332 -118
  308. package/dist/tables/data-grid.svelte.d.ts +34 -35
  309. package/dist/tables/index.d.ts +10 -0
  310. package/dist/tables/index.js +12 -0
  311. package/dist/tables/table-caption.svelte +13 -4
  312. package/dist/tables/table-caption.svelte.d.ts +8 -20
  313. package/dist/tables/table-cell.svelte +45 -14
  314. package/dist/tables/table-cell.svelte.d.ts +10 -21
  315. package/dist/tables/table-context.svelte.d.ts +32 -0
  316. package/dist/tables/table-context.svelte.js +160 -0
  317. package/dist/tables/table-header-cell.svelte +158 -18
  318. package/dist/tables/table-header-cell.svelte.d.ts +15 -21
  319. package/dist/tables/table-header.svelte +31 -6
  320. package/dist/tables/table-header.svelte.d.ts +7 -28
  321. package/dist/tables/table-row.svelte +87 -7
  322. package/dist/tables/table-row.svelte.d.ts +10 -28
  323. package/dist/tables/table.svelte +61 -2
  324. package/dist/tables/table.svelte.d.ts +13 -28
  325. package/dist/test-utils/accessibility-helpers.d.ts +80 -0
  326. package/dist/test-utils/accessibility-helpers.js +220 -0
  327. package/dist/test-utils/index.d.ts +8 -0
  328. package/dist/test-utils/index.js +8 -0
  329. package/dist/test-utils/mock-helpers.d.ts +68 -0
  330. package/dist/test-utils/mock-helpers.js +165 -0
  331. package/dist/test-utils/render-helpers.d.ts +55 -0
  332. package/dist/test-utils/render-helpers.js +114 -0
  333. package/dist/test-utils/setup.d.ts +5 -0
  334. package/dist/test-utils/setup.js +91 -0
  335. package/dist/test-utils/test-data.d.ts +102 -0
  336. package/dist/test-utils/test-data.js +99 -0
  337. package/dist/timeline/index.d.ts +2 -0
  338. package/dist/timeline/index.js +2 -0
  339. package/dist/timeline/timeline-item.svelte +26 -9
  340. package/dist/timeline/timeline-item.svelte.d.ts +13 -25
  341. package/dist/timeline/timeline.svelte +12 -6
  342. package/dist/timeline/timeline.svelte.d.ts +6 -28
  343. package/dist/types/data.d.ts +61 -0
  344. package/dist/types/date.d.ts +1 -1
  345. package/dist/types/form.d.ts +20 -2
  346. package/dist/types/index.d.ts +5 -0
  347. package/dist/types/index.js +5 -0
  348. package/dist/types/size.d.ts +22 -0
  349. package/dist/types/size.js +22 -0
  350. package/dist/typography/code-block.svelte +89 -10
  351. package/dist/typography/code-block.svelte.d.ts +7 -19
  352. package/dist/typography/code.svelte +89 -0
  353. package/dist/typography/code.svelte.d.ts +7 -0
  354. package/dist/typography/headline.svelte +29 -9
  355. package/dist/typography/headline.svelte.d.ts +8 -20
  356. package/dist/typography/index.d.ts +6 -0
  357. package/dist/typography/index.js +6 -0
  358. package/dist/typography/paragraph.svelte +18 -10
  359. package/dist/typography/paragraph.svelte.d.ts +6 -28
  360. package/dist/typography/subtitle.svelte +18 -4
  361. package/dist/typography/subtitle.svelte.d.ts +8 -20
  362. package/dist/typography/text.svelte +20 -5
  363. package/dist/typography/text.svelte.d.ts +9 -21
  364. package/package.json +31 -21
  365. package/dist/navigation/accordian/accordian.svelte +0 -62
  366. package/dist/navigation/accordian/accordian.svelte.d.ts +0 -21
  367. package/dist/tables/table-body.svelte +0 -3
  368. package/dist/tables/table-body.svelte.d.ts +0 -29
  369. package/dist/tables/table-footer-cell.svelte +0 -22
  370. package/dist/tables/table-footer-cell.svelte.d.ts +0 -20
  371. package/dist/tables/table-footer-row.svelte +0 -3
  372. package/dist/tables/table-footer-row.svelte.d.ts +0 -29
  373. package/dist/tables/table-footer.svelte +0 -13
  374. package/dist/tables/table-footer.svelte.d.ts +0 -29
  375. package/dist/tables/table-header-row.svelte +0 -4
  376. package/dist/tables/table-header-row.svelte.d.ts +0 -29
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Theme Management Composable
3
+ *
4
+ * Provides reactive theme state and utilities for switching between light and dark modes.
5
+ * The theme preference is persisted in localStorage and synced across tabs.
6
+ *
7
+ * @example
8
+ * ```svelte
9
+ * <script>
10
+ * import { useTheme } from './theme.svelte';
11
+ *
12
+ * const theme = useTheme();
13
+ * </script>
14
+ *
15
+ * <button onclick={() => theme.toggle()}>
16
+ * Current theme: {theme.current}
17
+ * </button>
18
+ * ```
19
+ */
20
+ export type Theme = 'light' | 'dark' | 'system';
21
+ export type ResolvedTheme = 'light' | 'dark';
22
+ declare class ThemeManager {
23
+ current: Theme;
24
+ resolved: ResolvedTheme;
25
+ private mediaQuery;
26
+ private initialized;
27
+ constructor();
28
+ private initialize;
29
+ private updateResolvedTheme;
30
+ private applyTheme;
31
+ /**
32
+ * Set the theme to a specific value
33
+ */
34
+ set(theme: Theme): void;
35
+ /**
36
+ * Toggle between light and dark themes
37
+ * (skips 'system' mode for simple toggling)
38
+ */
39
+ toggle(): void;
40
+ /**
41
+ * Reset to system preference
42
+ */
43
+ resetToSystem(): void;
44
+ /**
45
+ * Check if dark mode is currently active
46
+ */
47
+ get isDark(): boolean;
48
+ /**
49
+ * Check if light mode is currently active
50
+ */
51
+ get isLight(): boolean;
52
+ /**
53
+ * Check if system preference is being used
54
+ */
55
+ get isSystem(): boolean;
56
+ }
57
+ /**
58
+ * Get the theme manager instance
59
+ *
60
+ * @returns ThemeManager instance with reactive theme state
61
+ */
62
+ export declare function useTheme(): ThemeManager;
63
+ export {};
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Theme Management Composable
3
+ *
4
+ * Provides reactive theme state and utilities for switching between light and dark modes.
5
+ * The theme preference is persisted in localStorage and synced across tabs.
6
+ *
7
+ * @example
8
+ * ```svelte
9
+ * <script>
10
+ * import { useTheme } from './theme.svelte';
11
+ *
12
+ * const theme = useTheme();
13
+ * </script>
14
+ *
15
+ * <button onclick={() => theme.toggle()}>
16
+ * Current theme: {theme.current}
17
+ * </button>
18
+ * ```
19
+ */
20
+ const STORAGE_KEY = 'sveltacular-theme';
21
+ const MEDIA_QUERY = '(prefers-color-scheme: dark)';
22
+ class ThemeManager {
23
+ current = $state('system');
24
+ resolved = $state('light');
25
+ mediaQuery = null;
26
+ initialized = false;
27
+ constructor() {
28
+ if (typeof window !== 'undefined') {
29
+ this.initialize();
30
+ }
31
+ }
32
+ initialize() {
33
+ if (this.initialized)
34
+ return;
35
+ this.initialized = true;
36
+ // Load saved preference or default to 'system'
37
+ const saved = localStorage.getItem(STORAGE_KEY);
38
+ this.current = saved || 'system';
39
+ // Set up media query listener for system preference
40
+ this.mediaQuery = window.matchMedia(MEDIA_QUERY);
41
+ this.updateResolvedTheme();
42
+ // Listen for system theme changes
43
+ this.mediaQuery.addEventListener('change', () => {
44
+ this.updateResolvedTheme();
45
+ });
46
+ // Listen for storage changes (sync across tabs)
47
+ window.addEventListener('storage', (e) => {
48
+ if (e.key === STORAGE_KEY && e.newValue) {
49
+ this.current = e.newValue;
50
+ this.updateResolvedTheme();
51
+ }
52
+ });
53
+ // Apply theme immediately
54
+ this.applyTheme();
55
+ }
56
+ updateResolvedTheme() {
57
+ if (this.current === 'system') {
58
+ this.resolved = this.mediaQuery?.matches ? 'dark' : 'light';
59
+ }
60
+ else {
61
+ this.resolved = this.current;
62
+ }
63
+ }
64
+ applyTheme() {
65
+ if (typeof document === 'undefined')
66
+ return;
67
+ this.updateResolvedTheme();
68
+ document.documentElement.setAttribute('data-theme', this.resolved);
69
+ }
70
+ /**
71
+ * Set the theme to a specific value
72
+ */
73
+ set(theme) {
74
+ this.current = theme;
75
+ localStorage.setItem(STORAGE_KEY, theme);
76
+ this.applyTheme();
77
+ }
78
+ /**
79
+ * Toggle between light and dark themes
80
+ * (skips 'system' mode for simple toggling)
81
+ */
82
+ toggle() {
83
+ const newTheme = this.resolved === 'dark' ? 'light' : 'dark';
84
+ this.set(newTheme);
85
+ }
86
+ /**
87
+ * Reset to system preference
88
+ */
89
+ resetToSystem() {
90
+ this.set('system');
91
+ }
92
+ /**
93
+ * Check if dark mode is currently active
94
+ */
95
+ get isDark() {
96
+ return this.resolved === 'dark';
97
+ }
98
+ /**
99
+ * Check if light mode is currently active
100
+ */
101
+ get isLight() {
102
+ return this.resolved === 'light';
103
+ }
104
+ /**
105
+ * Check if system preference is being used
106
+ */
107
+ get isSystem() {
108
+ return this.current === 'system';
109
+ }
110
+ }
111
+ // Singleton instance
112
+ let themeManager = null;
113
+ /**
114
+ * Get the theme manager instance
115
+ *
116
+ * @returns ThemeManager instance with reactive theme state
117
+ */
118
+ export function useTheme() {
119
+ if (!themeManager) {
120
+ themeManager = new ThemeManager();
121
+ }
122
+ return themeManager;
123
+ }
@@ -1 +1,5 @@
1
+ /**
2
+ * Generates a unique ID string using timestamp and random number
3
+ * @returns A unique hexadecimal string identifier
4
+ */
1
5
  export declare const uniqueId: () => string;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Generates a unique ID string using timestamp and random number
3
+ * @returns A unique hexadecimal string identifier
4
+ */
1
5
  export const uniqueId = () => {
2
6
  return Math.floor(Math.random() * Date.now()).toString(16);
3
7
  };
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Position Composable
3
+ *
4
+ * Reactive positioning for floating elements (tooltips, popovers, dropdowns).
5
+ * Automatically updates position on scroll and resize events.
6
+ *
7
+ * @example
8
+ * ```svelte
9
+ * <script>
10
+ * import { usePosition } from './use-position.svelte';
11
+ *
12
+ * let buttonRef: HTMLElement;
13
+ * let tooltipRef: HTMLElement;
14
+ *
15
+ * const position = usePosition(() => buttonRef, () => tooltipRef, {
16
+ * placement: 'top',
17
+ * arrow: true
18
+ * });
19
+ * </script>
20
+ *
21
+ * <button bind:this={buttonRef}>Hover me</button>
22
+ *
23
+ * <div
24
+ * bind:this={tooltipRef}
25
+ * style="position: fixed; top: {position.top}px; left: {position.left}px;"
26
+ * >
27
+ * Tooltip content
28
+ * </div>
29
+ * ```
30
+ */
31
+ import { type PositionOptions } from './positioning.js';
32
+ export interface UsePositionOptions extends PositionOptions {
33
+ /**
34
+ * Whether positioning is enabled
35
+ * @default true
36
+ */
37
+ enabled?: boolean;
38
+ /**
39
+ * Update position on scroll
40
+ * @default true
41
+ */
42
+ updateOnScroll?: boolean;
43
+ /**
44
+ * Update position on resize
45
+ * @default true
46
+ */
47
+ updateOnResize?: boolean;
48
+ }
49
+ export declare class PositionManager {
50
+ top: number;
51
+ left: number;
52
+ side: import("./positioning.js").Side;
53
+ alignment: import("./positioning.js").Alignment;
54
+ arrowTop: number | undefined;
55
+ arrowLeft: number | undefined;
56
+ arrowSide: import("./positioning.js").Side;
57
+ private getReferenceElement;
58
+ private getFloatingElement;
59
+ private options;
60
+ private cleanup;
61
+ private rafId;
62
+ constructor(getReferenceElement: () => Element | null, getFloatingElement: () => Element | null, options: UsePositionOptions);
63
+ /**
64
+ * Update the position
65
+ */
66
+ update(): void;
67
+ /**
68
+ * Start listening for scroll and resize events
69
+ */
70
+ start(): void;
71
+ /**
72
+ * Stop listening for events
73
+ */
74
+ stop(): void;
75
+ /**
76
+ * Update options
77
+ */
78
+ setOptions(options: Partial<UsePositionOptions>): void;
79
+ /**
80
+ * Get current position as style object
81
+ */
82
+ get style(): string;
83
+ /**
84
+ * Get arrow style object
85
+ */
86
+ get arrowStyle(): string;
87
+ }
88
+ /**
89
+ * Create a position manager instance
90
+ *
91
+ * @param getReferenceElement - Function that returns the reference element
92
+ * @param getFloatingElement - Function that returns the floating element
93
+ * @param options - Positioning options
94
+ * @returns PositionManager instance
95
+ */
96
+ export declare function usePosition(getReferenceElement: () => Element | null, getFloatingElement: () => Element | null, options: UsePositionOptions): PositionManager;
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Position Composable
3
+ *
4
+ * Reactive positioning for floating elements (tooltips, popovers, dropdowns).
5
+ * Automatically updates position on scroll and resize events.
6
+ *
7
+ * @example
8
+ * ```svelte
9
+ * <script>
10
+ * import { usePosition } from './use-position.svelte';
11
+ *
12
+ * let buttonRef: HTMLElement;
13
+ * let tooltipRef: HTMLElement;
14
+ *
15
+ * const position = usePosition(() => buttonRef, () => tooltipRef, {
16
+ * placement: 'top',
17
+ * arrow: true
18
+ * });
19
+ * </script>
20
+ *
21
+ * <button bind:this={buttonRef}>Hover me</button>
22
+ *
23
+ * <div
24
+ * bind:this={tooltipRef}
25
+ * style="position: fixed; top: {position.top}px; left: {position.left}px;"
26
+ * >
27
+ * Tooltip content
28
+ * </div>
29
+ * ```
30
+ */
31
+ import { calculatePosition, calculateArrowPosition } from './positioning.js';
32
+ import { onMount } from 'svelte';
33
+ export class PositionManager {
34
+ // Position state
35
+ top = $state(0);
36
+ left = $state(0);
37
+ side = $state('bottom');
38
+ alignment = $state('center');
39
+ // Arrow state
40
+ arrowTop = $state(undefined);
41
+ arrowLeft = $state(undefined);
42
+ arrowSide = $state('bottom');
43
+ // Element getters
44
+ getReferenceElement;
45
+ getFloatingElement;
46
+ // Options
47
+ options;
48
+ // Cleanup
49
+ cleanup = null;
50
+ rafId = null;
51
+ constructor(getReferenceElement, getFloatingElement, options) {
52
+ this.getReferenceElement = getReferenceElement;
53
+ this.getFloatingElement = getFloatingElement;
54
+ this.options = {
55
+ enabled: true,
56
+ updateOnScroll: true,
57
+ updateOnResize: true,
58
+ ...options
59
+ };
60
+ }
61
+ /**
62
+ * Update the position
63
+ */
64
+ update() {
65
+ // Cancel any pending update
66
+ if (this.rafId !== null) {
67
+ cancelAnimationFrame(this.rafId);
68
+ }
69
+ // Schedule update in next frame
70
+ this.rafId = requestAnimationFrame(() => {
71
+ this.rafId = null;
72
+ if (!this.options.enabled)
73
+ return;
74
+ const reference = this.getReferenceElement();
75
+ const floating = this.getFloatingElement();
76
+ if (!reference || !floating)
77
+ return;
78
+ // Calculate position
79
+ const position = calculatePosition(reference, floating, this.options);
80
+ this.top = position.top;
81
+ this.left = position.left;
82
+ this.side = position.side;
83
+ this.alignment = position.alignment;
84
+ // Calculate arrow position if enabled
85
+ if (this.options.arrow) {
86
+ const arrow = calculateArrowPosition(reference, floating, position.side, this.options.arrowSize);
87
+ this.arrowTop = arrow.top;
88
+ this.arrowLeft = arrow.left;
89
+ this.arrowSide = arrow.side;
90
+ }
91
+ });
92
+ }
93
+ /**
94
+ * Start listening for scroll and resize events
95
+ */
96
+ start() {
97
+ this.stop(); // Clean up any existing listeners
98
+ // Initial update
99
+ this.update();
100
+ // Set up event listeners
101
+ const listeners = [];
102
+ if (this.options.updateOnScroll) {
103
+ const scrollHandler = () => this.update();
104
+ window.addEventListener('scroll', scrollHandler, { passive: true });
105
+ listeners.push(() => window.removeEventListener('scroll', scrollHandler));
106
+ }
107
+ if (this.options.updateOnResize) {
108
+ const resizeHandler = () => this.update();
109
+ window.addEventListener('resize', resizeHandler, { passive: true });
110
+ listeners.push(() => window.removeEventListener('resize', resizeHandler));
111
+ }
112
+ // Store cleanup function
113
+ this.cleanup = () => {
114
+ listeners.forEach(cleanup => cleanup());
115
+ if (this.rafId !== null) {
116
+ cancelAnimationFrame(this.rafId);
117
+ this.rafId = null;
118
+ }
119
+ };
120
+ }
121
+ /**
122
+ * Stop listening for events
123
+ */
124
+ stop() {
125
+ if (this.cleanup) {
126
+ this.cleanup();
127
+ this.cleanup = null;
128
+ }
129
+ }
130
+ /**
131
+ * Update options
132
+ */
133
+ setOptions(options) {
134
+ this.options = { ...this.options, ...options };
135
+ this.update();
136
+ }
137
+ /**
138
+ * Get current position as style object
139
+ */
140
+ get style() {
141
+ return `position: fixed; top: ${this.top}px; left: ${this.left}px;`;
142
+ }
143
+ /**
144
+ * Get arrow style object
145
+ */
146
+ get arrowStyle() {
147
+ const styles = ['position: absolute;'];
148
+ if (this.arrowLeft !== undefined) {
149
+ styles.push(`left: ${this.arrowLeft}px;`);
150
+ }
151
+ if (this.arrowTop !== undefined) {
152
+ styles.push(`top: ${this.arrowTop}px;`);
153
+ }
154
+ // Position arrow on the correct side
155
+ // Overlap by 1px to bridge gap created by border-radius
156
+ switch (this.arrowSide) {
157
+ case 'top':
158
+ styles.push('bottom: calc(100% - 1px);');
159
+ break;
160
+ case 'bottom':
161
+ styles.push('top: calc(100% - 1px);');
162
+ break;
163
+ case 'left':
164
+ styles.push('right: calc(100% - 1px);');
165
+ break;
166
+ case 'right':
167
+ styles.push('left: calc(100% - 1px);');
168
+ break;
169
+ }
170
+ return styles.join(' ');
171
+ }
172
+ }
173
+ /**
174
+ * Create a position manager instance
175
+ *
176
+ * @param getReferenceElement - Function that returns the reference element
177
+ * @param getFloatingElement - Function that returns the floating element
178
+ * @param options - Positioning options
179
+ * @returns PositionManager instance
180
+ */
181
+ export function usePosition(getReferenceElement, getFloatingElement, options) {
182
+ const manager = new PositionManager(getReferenceElement, getFloatingElement, options);
183
+ // Auto-start on mount
184
+ onMount(() => {
185
+ manager.start();
186
+ return () => manager.stop();
187
+ });
188
+ return manager;
189
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Virtual List Composable
3
+ *
4
+ * Provides efficient rendering of large lists by only rendering visible items.
5
+ * Maintains 60fps performance with 10,000+ items through viewport-based rendering.
6
+ *
7
+ * @example
8
+ * ```svelte
9
+ * <script>
10
+ * import { useVirtualList } from './use-virtual-list.svelte';
11
+ *
12
+ * const items = Array.from({ length: 10000 }, (_, i) => ({ id: i, name: `Item ${i}` }));
13
+ * const virtual = useVirtualList(items, { itemHeight: 40 });
14
+ * </script>
15
+ *
16
+ * <div bind:this={virtual.containerRef} style="height: 400px; overflow-y: auto;">
17
+ * <div style="height: {virtual.totalHeight}px; position: relative;">
18
+ * {#each virtual.visibleItems as item (item.index)}
19
+ * <div style="position: absolute; top: {item.offsetTop}px; height: {virtual.itemHeight}px;">
20
+ * {item.data.name}
21
+ * </div>
22
+ * {/each}
23
+ * </div>
24
+ * </div>
25
+ * ```
26
+ */
27
+ export interface VirtualListOptions {
28
+ /**
29
+ * Height of each item in pixels
30
+ */
31
+ itemHeight: number;
32
+ /**
33
+ * Number of items to render outside the visible viewport (buffer zone)
34
+ * Higher values provide smoother scrolling but render more items
35
+ * @default 3
36
+ */
37
+ overscan?: number;
38
+ /**
39
+ * Enable variable height items (experimental)
40
+ * When true, itemHeight is used as estimated height
41
+ * @default false
42
+ */
43
+ variableHeight?: boolean;
44
+ }
45
+ export interface VirtualItem<T> {
46
+ /**
47
+ * Original index in the source array
48
+ */
49
+ index: number;
50
+ /**
51
+ * The actual data item
52
+ */
53
+ data: T;
54
+ /**
55
+ * Offset from the top of the container
56
+ */
57
+ offsetTop: number;
58
+ /**
59
+ * Height of this specific item (for variable height)
60
+ */
61
+ height: number;
62
+ }
63
+ export declare class VirtualList<T> {
64
+ private itemHeight;
65
+ private overscan;
66
+ private variableHeight;
67
+ items: T[];
68
+ visibleItems: VirtualItem<T>[];
69
+ totalHeight: number;
70
+ scrollTop: number;
71
+ containerHeight: number;
72
+ containerRef: HTMLElement | null;
73
+ private heightCache;
74
+ private scrollHandler;
75
+ private resizeObserver;
76
+ constructor(items: T[], options: VirtualListOptions);
77
+ /**
78
+ * Update the items array
79
+ */
80
+ setItems(items: T[]): void;
81
+ /**
82
+ * Set the container element and attach scroll listener
83
+ */
84
+ setContainer(element: HTMLElement | null): void;
85
+ /**
86
+ * Calculate total height of all items
87
+ */
88
+ private calculateTotalHeight;
89
+ /**
90
+ * Get the height of a specific item
91
+ */
92
+ private getItemHeight;
93
+ /**
94
+ * Get the offset top position for a specific item
95
+ */
96
+ private getItemOffsetTop;
97
+ /**
98
+ * Find the start index based on scroll position
99
+ */
100
+ private findStartIndex;
101
+ /**
102
+ * Update which items should be visible
103
+ */
104
+ private updateVisibleItems;
105
+ /**
106
+ * Update the height of a specific item (for variable height mode)
107
+ */
108
+ setItemHeight(index: number, height: number): void;
109
+ /**
110
+ * Scroll to a specific item index
111
+ */
112
+ scrollToIndex(index: number, behavior?: ScrollBehavior): void;
113
+ /**
114
+ * Clean up event listeners
115
+ */
116
+ destroy(): void;
117
+ }
118
+ /**
119
+ * Create a virtual list instance
120
+ */
121
+ export declare function useVirtualList<T>(items: T[], options: VirtualListOptions): VirtualList<T>;