sveltacular 0.0.76 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) 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 -17
  5. package/dist/forms/bool-box/bool-box.svelte.d.ts +9 -21
  6. package/dist/forms/button/button.svelte +153 -89
  7. package/dist/forms/button/button.svelte.d.ts +25 -29
  8. package/dist/forms/check-box/check-box-group.svelte +63 -29
  9. package/dist/forms/check-box/check-box-group.svelte.d.ts +11 -27
  10. package/dist/forms/check-box/check-box.svelte +57 -33
  11. package/dist/forms/check-box/check-box.svelte.d.ts +15 -25
  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 -25
  16. package/dist/forms/combo-box/combo-box.svelte +655 -0
  17. package/dist/forms/combo-box/combo-box.svelte.d.ts +62 -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 +80 -54
  21. package/dist/forms/date-box/date-box.svelte.d.ts +21 -32
  22. package/dist/forms/file-area/file-area.svelte +109 -68
  23. package/dist/forms/file-area/file-area.svelte.d.ts +12 -22
  24. package/dist/forms/file-box/file-box.svelte +40 -21
  25. package/dist/forms/file-box/file-box.svelte.d.ts +14 -25
  26. package/dist/forms/form-field.svelte +18 -15
  27. package/dist/forms/form-field.svelte.d.ts +8 -18
  28. package/dist/forms/form-footer.svelte +6 -3
  29. package/dist/forms/form-footer.svelte.d.ts +6 -26
  30. package/dist/forms/form-header.svelte +15 -4
  31. package/dist/forms/form-header.svelte.d.ts +8 -18
  32. package/dist/forms/form-label.svelte +15 -6
  33. package/dist/forms/form-label.svelte.d.ts +8 -19
  34. package/dist/forms/form-section.svelte +15 -4
  35. package/dist/forms/form-section.svelte.d.ts +8 -18
  36. package/dist/forms/form.svelte +30 -13
  37. package/dist/forms/form.svelte.d.ts +11 -22
  38. package/dist/forms/index.d.ts +26 -0
  39. package/dist/forms/index.js +31 -0
  40. package/dist/forms/info-box/info-box.svelte +19 -8
  41. package/dist/forms/info-box/info-box.svelte.d.ts +8 -19
  42. package/dist/forms/list-box/index.d.ts +2 -0
  43. package/dist/forms/list-box/index.js +1 -0
  44. package/dist/forms/list-box/list-box.svelte +190 -118
  45. package/dist/forms/list-box/list-box.svelte.d.ts +16 -26
  46. package/dist/forms/money-box/money-box.svelte +223 -190
  47. package/dist/forms/money-box/money-box.svelte.d.ts +16 -28
  48. package/dist/forms/number-box/number-box.svelte +84 -67
  49. package/dist/forms/number-box/number-box.svelte.d.ts +17 -28
  50. package/dist/forms/phone-box/index.d.ts +1 -0
  51. package/dist/forms/phone-box/index.js +1 -0
  52. package/dist/forms/phone-box/phone-box.svelte +152 -122
  53. package/dist/forms/phone-box/phone-box.svelte.d.ts +8 -20
  54. package/dist/forms/radio-group/index.d.ts +2 -0
  55. package/dist/forms/radio-group/index.js +2 -0
  56. package/dist/forms/radio-group/radio-box.svelte +23 -8
  57. package/dist/forms/radio-group/radio-box.svelte.d.ts +10 -19
  58. package/dist/forms/radio-group/radio-group.svelte +27 -13
  59. package/dist/forms/radio-group/radio-group.svelte.d.ts +10 -21
  60. package/dist/forms/slider/slider.svelte +210 -0
  61. package/dist/forms/slider/slider.svelte.d.ts +17 -0
  62. package/dist/forms/switch-box/switch-box.svelte +35 -21
  63. package/dist/forms/switch-box/switch-box.svelte.d.ts +9 -20
  64. package/dist/forms/text-area/text-area.svelte +89 -15
  65. package/dist/forms/text-area/text-area.svelte.d.ts +15 -23
  66. package/dist/forms/text-box/text-box.svelte +253 -75
  67. package/dist/forms/text-box/text-box.svelte.d.ts +28 -36
  68. package/dist/forms/time-box/time-box.svelte +67 -0
  69. package/dist/forms/time-box/time-box.svelte.d.ts +12 -0
  70. package/dist/forms/url-box/url-box.svelte +32 -18
  71. package/dist/forms/url-box/url-box.svelte.d.ts +9 -20
  72. package/dist/forms/validation.d.ts +60 -0
  73. package/dist/forms/validation.js +123 -0
  74. package/dist/generic/address/address.svelte +22 -13
  75. package/dist/generic/address/address.svelte.d.ts +9 -19
  76. package/dist/generic/avatar/avatar.svelte +86 -0
  77. package/dist/generic/avatar/avatar.svelte.d.ts +10 -0
  78. package/dist/generic/badge/badge.svelte +82 -0
  79. package/dist/generic/badge/badge.svelte.d.ts +11 -0
  80. package/dist/generic/card/card-container.svelte +41 -13
  81. package/dist/generic/card/card-container.svelte.d.ts +8 -18
  82. package/dist/generic/card/card.svelte +47 -29
  83. package/dist/generic/card/card.svelte.d.ts +9 -19
  84. package/dist/generic/card/index.d.ts +3 -0
  85. package/dist/generic/card/index.js +2 -0
  86. package/dist/generic/chip/chip.svelte +90 -0
  87. package/dist/generic/chip/chip.svelte.d.ts +11 -0
  88. package/dist/generic/date/date-time.svelte +86 -64
  89. package/dist/generic/date/date-time.svelte.d.ts +10 -20
  90. package/dist/generic/divider/divider.svelte.d.ts +22 -19
  91. package/dist/generic/dot/dot.svelte +13 -4
  92. package/dist/generic/dot/dot.svelte.d.ts +7 -17
  93. package/dist/generic/dropdown-item/dropdown-item.svelte +24 -12
  94. package/dist/generic/dropdown-item/dropdown-item.svelte.d.ts +10 -21
  95. package/dist/generic/email/email.svelte +6 -4
  96. package/dist/generic/email/email.svelte.d.ts +5 -15
  97. package/dist/generic/empty/empty.svelte +57 -26
  98. package/dist/generic/empty/empty.svelte.d.ts +11 -21
  99. package/dist/generic/header/header.svelte +26 -10
  100. package/dist/generic/header/header.svelte.d.ts +10 -20
  101. package/dist/generic/index.d.ts +28 -0
  102. package/dist/generic/index.js +31 -0
  103. package/dist/generic/link/link.svelte +20 -7
  104. package/dist/generic/link/link.svelte.d.ts +11 -21
  105. package/dist/generic/list/index.d.ts +4 -0
  106. package/dist/generic/list/index.js +3 -0
  107. package/dist/generic/list/list-item.svelte +17 -13
  108. package/dist/generic/list/list-item.svelte.d.ts +6 -15
  109. package/dist/generic/list/list.d.ts +2 -2
  110. package/dist/generic/list/list.svelte +28 -15
  111. package/dist/generic/list/list.svelte.d.ts +9 -19
  112. package/dist/generic/menu/menu.svelte +163 -57
  113. package/dist/generic/menu/menu.svelte.d.ts +16 -24
  114. package/dist/generic/notice/notice.svelte +119 -81
  115. package/dist/generic/notice/notice.svelte.d.ts +17 -26
  116. package/dist/generic/overlay.svelte +40 -14
  117. package/dist/generic/overlay.svelte.d.ts +9 -19
  118. package/dist/generic/panel/panel.svelte +16 -6
  119. package/dist/generic/panel/panel.svelte.d.ts +8 -18
  120. package/dist/generic/phone/phone.svelte +30 -24
  121. package/dist/generic/phone/phone.svelte.d.ts +6 -16
  122. package/dist/generic/pill/pill.svelte +47 -33
  123. package/dist/generic/pill/pill.svelte.d.ts +10 -21
  124. package/dist/generic/popover/popover.svelte +226 -0
  125. package/dist/generic/popover/popover.svelte.d.ts +15 -0
  126. package/dist/generic/rating/rating.svelte +85 -0
  127. package/dist/generic/rating/rating.svelte.d.ts +11 -0
  128. package/dist/generic/scorecard/scorecard.svelte +34 -21
  129. package/dist/generic/scorecard/scorecard.svelte.d.ts +9 -19
  130. package/dist/generic/section/section.svelte +28 -9
  131. package/dist/generic/section/section.svelte.d.ts +11 -21
  132. package/dist/generic/spinner/spinner.svelte +64 -0
  133. package/dist/generic/spinner/spinner.svelte.d.ts +8 -0
  134. package/dist/generic/theme-provider/index.d.ts +1 -0
  135. package/dist/generic/theme-provider/index.js +1 -0
  136. package/dist/generic/theme-provider/theme-provider-demo.svelte +182 -0
  137. package/dist/generic/theme-provider/theme-provider-demo.svelte.d.ts +3 -0
  138. package/dist/generic/theme-provider/theme-provider.svelte +83 -0
  139. package/dist/generic/theme-provider/theme-provider.svelte.d.ts +44 -0
  140. package/dist/generic/toaster/toaster.svelte +31 -6
  141. package/dist/generic/toaster/toaster.svelte.d.ts +7 -15
  142. package/dist/generic/tooltip/tooltip.svelte +389 -0
  143. package/dist/generic/tooltip/tooltip.svelte.d.ts +21 -0
  144. package/dist/helpers/ago.d.ts +7 -1
  145. package/dist/helpers/ago.js +6 -0
  146. package/dist/helpers/animation-actions.d.ts +124 -0
  147. package/dist/helpers/animation-actions.js +299 -0
  148. package/dist/helpers/animations.d.ts +198 -0
  149. package/dist/helpers/animations.js +280 -0
  150. package/dist/helpers/announcer.d.ts +118 -0
  151. package/dist/helpers/announcer.js +250 -0
  152. package/dist/helpers/copy-to-clipboard.svelte.d.ts +5 -0
  153. package/dist/helpers/copy-to-clipboard.svelte.js +28 -0
  154. package/dist/helpers/debounce.d.ts +7 -0
  155. package/dist/helpers/debounce.js +7 -0
  156. package/dist/helpers/focus.d.ts +123 -0
  157. package/dist/helpers/focus.js +335 -0
  158. package/dist/helpers/fuzzy-search.d.ts +41 -0
  159. package/dist/helpers/fuzzy-search.js +114 -0
  160. package/dist/helpers/index.d.ts +24 -0
  161. package/dist/helpers/index.js +24 -0
  162. package/dist/helpers/navigate-to.d.ts +4 -0
  163. package/dist/helpers/navigate-to.js +4 -0
  164. package/dist/helpers/positioning.d.ts +97 -0
  165. package/dist/helpers/positioning.js +230 -0
  166. package/dist/helpers/round-to-decimals.d.ts +7 -5
  167. package/dist/helpers/round-to-decimals.js +7 -5
  168. package/dist/helpers/spring.svelte.d.ts +97 -0
  169. package/dist/helpers/spring.svelte.js +216 -0
  170. package/dist/helpers/subscribable.d.ts +1 -2
  171. package/dist/helpers/theme.svelte.d.ts +63 -0
  172. package/dist/helpers/theme.svelte.js +123 -0
  173. package/dist/helpers/unique-id.d.ts +4 -0
  174. package/dist/helpers/unique-id.js +4 -0
  175. package/dist/helpers/use-position.svelte.d.ts +96 -0
  176. package/dist/helpers/use-position.svelte.js +189 -0
  177. package/dist/helpers/use-virtual-list.svelte.d.ts +121 -0
  178. package/dist/helpers/use-virtual-list.svelte.js +239 -0
  179. package/dist/icons/angle-right-icon.svelte +2 -1
  180. package/dist/icons/angle-right-icon.svelte.d.ts +16 -12
  181. package/dist/icons/angle-up-icon.svelte.d.ts +22 -19
  182. package/dist/icons/check-icon.svelte.d.ts +22 -19
  183. package/dist/icons/copy-icon.svelte +46 -0
  184. package/dist/icons/copy-icon.svelte.d.ts +6 -0
  185. package/dist/icons/envelope-icon.svelte.d.ts +22 -19
  186. package/dist/icons/folder-open-icon.svelte.d.ts +22 -19
  187. package/dist/icons/hamburger-icon.svelte.d.ts +22 -19
  188. package/dist/icons/home-icon.svelte +2 -1
  189. package/dist/icons/home-icon.svelte.d.ts +16 -12
  190. package/dist/icons/index.d.ts +13 -0
  191. package/dist/icons/index.js +13 -0
  192. package/dist/icons/link-icon.svelte.d.ts +22 -19
  193. package/dist/icons/mobile-phone-icon.svelte.d.ts +22 -19
  194. package/dist/icons/phone-icon.svelte.d.ts +22 -19
  195. package/dist/icons/svg-icon.svelte +46 -12
  196. package/dist/icons/svg-icon.svelte.d.ts +13 -23
  197. package/dist/icons/upload-icon.svelte.d.ts +22 -19
  198. package/dist/images/icon.svelte +9 -3
  199. package/dist/images/icon.svelte.d.ts +6 -16
  200. package/dist/images/image.svelte +28 -10
  201. package/dist/images/image.svelte.d.ts +14 -26
  202. package/dist/images/index.d.ts +2 -0
  203. package/dist/images/index.js +2 -0
  204. package/dist/index.d.ts +13 -122
  205. package/dist/index.js +27 -135
  206. package/dist/layout/flex-col.svelte +65 -22
  207. package/dist/layout/flex-col.svelte.d.ts +12 -22
  208. package/dist/layout/flex-item.svelte +13 -3
  209. package/dist/layout/flex-item.svelte.d.ts +8 -18
  210. package/dist/layout/flex-row.svelte +70 -21
  211. package/dist/layout/flex-row.svelte.d.ts +14 -24
  212. package/dist/layout/grid.svelte +7 -1
  213. package/dist/layout/grid.svelte.d.ts +6 -26
  214. package/dist/layout/index.d.ts +4 -0
  215. package/dist/layout/index.js +4 -0
  216. package/dist/modals/alert.svelte +42 -28
  217. package/dist/modals/alert.svelte.d.ts +13 -24
  218. package/dist/modals/confirm.svelte +54 -37
  219. package/dist/modals/confirm.svelte.d.ts +16 -27
  220. package/dist/modals/dialog-body.svelte +10 -4
  221. package/dist/modals/dialog-body.svelte.d.ts +6 -26
  222. package/dist/modals/dialog-close-button.svelte +15 -9
  223. package/dist/modals/dialog-close-button.svelte.d.ts +6 -17
  224. package/dist/modals/dialog-footer.svelte +6 -3
  225. package/dist/modals/dialog-footer.svelte.d.ts +6 -26
  226. package/dist/modals/dialog-header.svelte +13 -1
  227. package/dist/modals/dialog-header.svelte.d.ts +7 -26
  228. package/dist/modals/dialog-window.svelte +42 -14
  229. package/dist/modals/dialog-window.svelte.d.ts +9 -17
  230. package/dist/modals/index.d.ts +9 -0
  231. package/dist/modals/index.js +9 -0
  232. package/dist/modals/modal.svelte +88 -25
  233. package/dist/modals/modal.svelte.d.ts +14 -22
  234. package/dist/modals/prompt.svelte +71 -50
  235. package/dist/modals/prompt.svelte.d.ts +19 -30
  236. package/dist/navigation/accordion/accordion.svelte +104 -0
  237. package/dist/navigation/accordion/accordion.svelte.d.ts +9 -0
  238. package/dist/navigation/app-bar/app-bar.svelte +26 -20
  239. package/dist/navigation/app-bar/app-bar.svelte.d.ts +10 -20
  240. package/dist/navigation/app-bar/app-branding.svelte +10 -5
  241. package/dist/navigation/app-bar/app-branding.svelte.d.ts +6 -15
  242. package/dist/navigation/app-bar/app-logo.svelte +20 -5
  243. package/dist/navigation/app-bar/app-logo.svelte.d.ts +9 -19
  244. package/dist/navigation/app-bar/app-nav-item.svelte +26 -14
  245. package/dist/navigation/app-bar/app-nav-item.svelte.d.ts +9 -20
  246. package/dist/navigation/app-bar/app-nav.svelte +39 -12
  247. package/dist/navigation/app-bar/app-nav.svelte.d.ts +8 -18
  248. package/dist/navigation/app-bar/index.d.ts +5 -0
  249. package/dist/navigation/app-bar/index.js +5 -0
  250. package/dist/navigation/breadcrumbs/breadcrumbs.svelte +54 -28
  251. package/dist/navigation/breadcrumbs/breadcrumbs.svelte.d.ts +12 -21
  252. package/dist/navigation/command-palette/command-palette.svelte +758 -0
  253. package/dist/navigation/command-palette/command-palette.svelte.d.ts +65 -0
  254. package/dist/navigation/command-palette/index.d.ts +2 -0
  255. package/dist/navigation/command-palette/index.js +1 -0
  256. package/dist/navigation/context-menu/README.md +146 -0
  257. package/dist/navigation/context-menu/context-menu-divider.svelte +21 -0
  258. package/dist/navigation/context-menu/context-menu-divider.svelte.d.ts +18 -0
  259. package/dist/navigation/context-menu/context-menu-item.svelte +268 -0
  260. package/dist/navigation/context-menu/context-menu-item.svelte.d.ts +19 -0
  261. package/dist/navigation/context-menu/context-menu.svelte +226 -0
  262. package/dist/navigation/context-menu/context-menu.svelte.d.ts +38 -0
  263. package/dist/navigation/context-menu/index.d.ts +3 -0
  264. package/dist/navigation/context-menu/index.js +3 -0
  265. package/dist/navigation/drawer/drawer.svelte +137 -0
  266. package/dist/navigation/drawer/drawer.svelte.d.ts +11 -0
  267. package/dist/navigation/dropdown-button/dropdown-button.svelte +58 -20
  268. package/dist/navigation/dropdown-button/dropdown-button.svelte.d.ts +10 -20
  269. package/dist/navigation/index.d.ts +11 -0
  270. package/dist/navigation/index.js +14 -0
  271. package/dist/navigation/pagination/pagination.svelte +55 -42
  272. package/dist/navigation/pagination/pagination.svelte.d.ts +10 -21
  273. package/dist/navigation/side-bar/side-bar.svelte +18 -9
  274. package/dist/navigation/side-bar/side-bar.svelte.d.ts +7 -17
  275. package/dist/navigation/tabs/index.d.ts +4 -0
  276. package/dist/navigation/tabs/index.js +3 -0
  277. package/dist/navigation/tabs/tab-context.d.ts +12 -6
  278. package/dist/navigation/tabs/tab-group.svelte +268 -55
  279. package/dist/navigation/tabs/tab-group.svelte.d.ts +9 -20
  280. package/dist/navigation/tabs/tab.svelte +64 -34
  281. package/dist/navigation/tabs/tab.svelte.d.ts +11 -22
  282. package/dist/navigation/wizard/index.d.ts +3 -0
  283. package/dist/navigation/wizard/index.js +2 -0
  284. package/dist/navigation/wizard/wizard-context.d.ts +13 -8
  285. package/dist/navigation/wizard/wizard-step.svelte +38 -15
  286. package/dist/navigation/wizard/wizard-step.svelte.d.ts +8 -18
  287. package/dist/navigation/wizard/wizard.svelte +123 -89
  288. package/dist/navigation/wizard/wizard.svelte.d.ts +15 -26
  289. package/dist/placeholders/index.d.ts +6 -0
  290. package/dist/placeholders/index.js +6 -0
  291. package/dist/placeholders/loading.svelte +39 -23
  292. package/dist/placeholders/loading.svelte.d.ts +10 -17
  293. package/dist/placeholders/progress.svelte +7 -6
  294. package/dist/placeholders/progress.svelte.d.ts +5 -15
  295. package/dist/placeholders/skeleton-input.svelte +66 -38
  296. package/dist/placeholders/skeleton-input.svelte.d.ts +5 -15
  297. package/dist/placeholders/skeleton-paragraph.svelte +25 -0
  298. package/dist/placeholders/skeleton-paragraph.svelte.d.ts +8 -0
  299. package/dist/placeholders/skeleton-table.svelte +75 -0
  300. package/dist/placeholders/skeleton-table.svelte.d.ts +8 -0
  301. package/dist/placeholders/skeleton-text.svelte +46 -16
  302. package/dist/placeholders/skeleton-text.svelte.d.ts +7 -17
  303. package/dist/tables/cell-renderers.d.ts +24 -0
  304. package/dist/tables/cell-renderers.js +228 -0
  305. package/dist/tables/data-grid.svelte +332 -135
  306. package/dist/tables/data-grid.svelte.d.ts +34 -33
  307. package/dist/tables/index.d.ts +10 -0
  308. package/dist/tables/index.js +12 -0
  309. package/dist/tables/table-caption.svelte +13 -4
  310. package/dist/tables/table-caption.svelte.d.ts +8 -18
  311. package/dist/tables/table-cell.svelte +45 -15
  312. package/dist/tables/table-cell.svelte.d.ts +10 -19
  313. package/dist/tables/table-context.svelte.d.ts +32 -0
  314. package/dist/tables/table-context.svelte.js +160 -0
  315. package/dist/tables/table-header-cell.svelte +158 -19
  316. package/dist/tables/table-header-cell.svelte.d.ts +15 -19
  317. package/dist/tables/table-header.svelte +31 -6
  318. package/dist/tables/table-header.svelte.d.ts +7 -26
  319. package/dist/tables/table-row.svelte +87 -7
  320. package/dist/tables/table-row.svelte.d.ts +10 -26
  321. package/dist/tables/table.svelte +61 -2
  322. package/dist/tables/table.svelte.d.ts +13 -26
  323. package/dist/test-utils/accessibility-helpers.d.ts +80 -0
  324. package/dist/test-utils/accessibility-helpers.js +220 -0
  325. package/dist/test-utils/index.d.ts +8 -0
  326. package/dist/test-utils/index.js +8 -0
  327. package/dist/test-utils/mock-helpers.d.ts +68 -0
  328. package/dist/test-utils/mock-helpers.js +165 -0
  329. package/dist/test-utils/render-helpers.d.ts +55 -0
  330. package/dist/test-utils/render-helpers.js +114 -0
  331. package/dist/test-utils/setup.d.ts +5 -0
  332. package/dist/test-utils/setup.js +91 -0
  333. package/dist/test-utils/test-data.d.ts +102 -0
  334. package/dist/test-utils/test-data.js +99 -0
  335. package/dist/timeline/index.d.ts +2 -0
  336. package/dist/timeline/index.js +2 -0
  337. package/dist/timeline/timeline-item.svelte +26 -9
  338. package/dist/timeline/timeline-item.svelte.d.ts +13 -23
  339. package/dist/timeline/timeline.svelte +12 -6
  340. package/dist/timeline/timeline.svelte.d.ts +6 -26
  341. package/dist/types/data.d.ts +61 -0
  342. package/dist/types/date.d.ts +1 -1
  343. package/dist/types/form.d.ts +20 -2
  344. package/dist/types/index.d.ts +5 -0
  345. package/dist/types/index.js +5 -0
  346. package/dist/types/size.d.ts +22 -0
  347. package/dist/types/size.js +22 -0
  348. package/dist/typography/code-block.svelte +89 -10
  349. package/dist/typography/code-block.svelte.d.ts +7 -17
  350. package/dist/typography/code.svelte +89 -0
  351. package/dist/typography/code.svelte.d.ts +7 -0
  352. package/dist/typography/headline.svelte +29 -9
  353. package/dist/typography/headline.svelte.d.ts +8 -18
  354. package/dist/typography/index.d.ts +6 -0
  355. package/dist/typography/index.js +6 -0
  356. package/dist/typography/paragraph.svelte +18 -10
  357. package/dist/typography/paragraph.svelte.d.ts +6 -26
  358. package/dist/typography/subtitle.svelte +18 -4
  359. package/dist/typography/subtitle.svelte.d.ts +8 -18
  360. package/dist/typography/text.svelte +20 -5
  361. package/dist/typography/text.svelte.d.ts +9 -19
  362. package/package.json +46 -36
  363. package/dist/navigation/accordian/accordian.svelte +0 -62
  364. package/dist/navigation/accordian/accordian.svelte.d.ts +0 -19
  365. package/dist/tables/table-body.svelte +0 -3
  366. package/dist/tables/table-body.svelte.d.ts +0 -27
  367. package/dist/tables/table-footer-cell.svelte +0 -22
  368. package/dist/tables/table-footer-cell.svelte.d.ts +0 -18
  369. package/dist/tables/table-footer-row.svelte +0 -3
  370. package/dist/tables/table-footer-row.svelte.d.ts +0 -27
  371. package/dist/tables/table-footer.svelte +0 -13
  372. package/dist/tables/table-footer.svelte.d.ts +0 -27
  373. package/dist/tables/table-header-row.svelte +0 -4
  374. package/dist/tables/table-header-row.svelte.d.ts +0 -27
@@ -0,0 +1,389 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import { uniqueId } from '../../helpers/unique-id.js';
4
+ import { usePosition } from '../../helpers/use-position.svelte.js';
5
+ import type { Placement } from '../../helpers/positioning.js';
6
+
7
+ type TriggerMode = 'hover' | 'focus' | 'click' | 'manual';
8
+
9
+ let {
10
+ // Content
11
+ title = undefined as string | undefined,
12
+ text = undefined as string | undefined,
13
+ content = undefined as Snippet | undefined,
14
+
15
+ // Positioning
16
+ placement = 'top' as Placement,
17
+ offset = 8,
18
+ arrow = true,
19
+
20
+ // Trigger behavior
21
+ trigger = 'hover' as TriggerMode,
22
+ openDelay = 0,
23
+ closeDelay = 0,
24
+
25
+ // Controlled state
26
+ open = $bindable(false),
27
+
28
+ // Disabled state
29
+ disabled = false,
30
+
31
+ // Styling
32
+ class: className = '',
33
+
34
+ // Trigger element
35
+ children
36
+ }: {
37
+ title?: string;
38
+ text?: string;
39
+ content?: Snippet;
40
+ placement?: Placement;
41
+ offset?: number;
42
+ arrow?: boolean;
43
+ trigger?: TriggerMode;
44
+ openDelay?: number;
45
+ closeDelay?: number;
46
+ open?: boolean;
47
+ disabled?: boolean;
48
+ class?: string;
49
+ children: Snippet;
50
+ } = $props();
51
+
52
+ const tooltipId = uniqueId();
53
+ let triggerRef = $state<HTMLElement | null>(null);
54
+ let tooltipRef = $state<HTMLElement | null>(null);
55
+ let openTimeoutId: ReturnType<typeof setTimeout> | null = null;
56
+ let closeTimeoutId: ReturnType<typeof setTimeout> | null = null;
57
+
58
+ // Check if tooltip has content to show
59
+ const hasContent = $derived(
60
+ (typeof title === 'string' && title.trim().length > 0) ||
61
+ (typeof text === 'string' && text.trim().length > 0) ||
62
+ content !== undefined
63
+ );
64
+
65
+ // Position manager - always enabled since we control via open state
66
+ let positionManager = $derived(
67
+ usePosition(
68
+ () => triggerRef,
69
+ () => tooltipRef,
70
+ {
71
+ placement,
72
+ offset,
73
+ arrow,
74
+ arrowSize: 8,
75
+ enabled: open
76
+ }
77
+ )
78
+ );
79
+
80
+ // Clear any pending timeouts
81
+ function clearTimeouts() {
82
+ if (openTimeoutId) {
83
+ clearTimeout(openTimeoutId);
84
+ openTimeoutId = null;
85
+ }
86
+ if (closeTimeoutId) {
87
+ clearTimeout(closeTimeoutId);
88
+ closeTimeoutId = null;
89
+ }
90
+ }
91
+
92
+ // Show tooltip with optional delay
93
+ function show() {
94
+ if (disabled || !hasContent) return;
95
+ clearTimeouts();
96
+
97
+ if (openDelay > 0) {
98
+ openTimeoutId = setTimeout(() => {
99
+ open = true;
100
+ openTimeoutId = null;
101
+ }, openDelay);
102
+ } else {
103
+ open = true;
104
+ }
105
+ }
106
+
107
+ // Hide tooltip with optional delay
108
+ function hide() {
109
+ clearTimeouts();
110
+
111
+ if (closeDelay > 0) {
112
+ closeTimeoutId = setTimeout(() => {
113
+ open = false;
114
+ closeTimeoutId = null;
115
+ }, closeDelay);
116
+ } else {
117
+ open = false;
118
+ }
119
+ }
120
+
121
+ // Toggle tooltip (for click mode)
122
+ function toggle() {
123
+ if (disabled || !hasContent) return;
124
+ clearTimeouts();
125
+ open = !open;
126
+ }
127
+
128
+ // Event handlers based on trigger mode
129
+ const handlers = $derived.by(() => {
130
+ if (disabled || trigger === 'manual') {
131
+ return {};
132
+ }
133
+
134
+ const baseHandlers: Record<string, (e: Event) => void> = {};
135
+
136
+ if (trigger === 'hover' || trigger === 'focus') {
137
+ // Hover triggers
138
+ if (trigger === 'hover') {
139
+ baseHandlers.onmouseenter = show;
140
+ baseHandlers.onmouseleave = hide;
141
+ }
142
+
143
+ // Focus triggers
144
+ if (trigger === 'focus') {
145
+ baseHandlers.onfocus = show;
146
+ baseHandlers.onblur = hide;
147
+ }
148
+
149
+ // Keyboard support (Escape to close)
150
+ baseHandlers.onkeydown = (e: Event) => {
151
+ const keyEvent = e as KeyboardEvent;
152
+ if (keyEvent.key === 'Escape' && open) {
153
+ hide();
154
+ e.preventDefault();
155
+ }
156
+ };
157
+ } else if (trigger === 'click') {
158
+ // Click mode
159
+ baseHandlers.onclick = (e: Event) => {
160
+ toggle();
161
+ e.stopPropagation();
162
+ };
163
+
164
+ // Close on Escape
165
+ baseHandlers.onkeydown = (e: Event) => {
166
+ const keyEvent = e as KeyboardEvent;
167
+ if (keyEvent.key === 'Escape' && open) {
168
+ hide();
169
+ e.preventDefault();
170
+ } else if (keyEvent.key === 'Enter' || keyEvent.key === ' ') {
171
+ toggle();
172
+ e.preventDefault();
173
+ }
174
+ };
175
+ }
176
+
177
+ return baseHandlers;
178
+ });
179
+
180
+ // Click outside to close (for click mode)
181
+ $effect(() => {
182
+ if (trigger === 'click' && open) {
183
+ const handleClickOutside = (e: MouseEvent) => {
184
+ if (
185
+ triggerRef &&
186
+ tooltipRef &&
187
+ !triggerRef.contains(e.target as Node) &&
188
+ !tooltipRef.contains(e.target as Node)
189
+ ) {
190
+ hide();
191
+ }
192
+ };
193
+
194
+ // Small delay to avoid closing immediately
195
+ setTimeout(() => {
196
+ document.addEventListener('click', handleClickOutside);
197
+ }, 0);
198
+
199
+ return () => {
200
+ document.removeEventListener('click', handleClickOutside);
201
+ };
202
+ }
203
+ });
204
+
205
+ // Update position when open changes
206
+ $effect(() => {
207
+ if (open && positionManager) {
208
+ positionManager.update();
209
+ }
210
+ });
211
+
212
+ // Cleanup timeouts on unmount
213
+ $effect(() => {
214
+ return () => {
215
+ clearTimeouts();
216
+ };
217
+ });
218
+
219
+ // Determine if trigger needs to be interactive
220
+ const needsInteraction = $derived(trigger !== 'manual');
221
+ const ariaAttributes = $derived.by(() => {
222
+ const attrs: Record<string, string | boolean | undefined> = {
223
+ 'aria-describedby': open ? tooltipId : undefined
224
+ };
225
+
226
+ // Add appropriate ARIA for click/manual modes
227
+ if (trigger === 'click') {
228
+ attrs['aria-expanded'] = open;
229
+ }
230
+
231
+ return attrs;
232
+ });
233
+ </script>
234
+
235
+ <!-- Trigger wrapper -->
236
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
237
+ <span
238
+ bind:this={triggerRef}
239
+ class="tooltip-trigger {className}"
240
+ class:disabled
241
+ role={trigger === 'click' ? 'button' : undefined}
242
+ tabindex={trigger === 'focus' || trigger === 'click' ? 0 : undefined}
243
+ {...handlers}
244
+ {...ariaAttributes}
245
+ >
246
+ {@render children()}
247
+ </span>
248
+
249
+ <!-- Tooltip content portal -->
250
+ {#if open && !disabled && hasContent}
251
+ <div
252
+ bind:this={tooltipRef}
253
+ class="tooltip"
254
+ class:with-arrow={arrow}
255
+ role="tooltip"
256
+ id={tooltipId}
257
+ aria-live="polite"
258
+ style="position: fixed; top: {positionManager.top}px; left: {positionManager.left}px; z-index: 9999;"
259
+ onmouseenter={() => {
260
+ // Keep tooltip open when hovering over it (for hover mode)
261
+ if (trigger === 'hover') {
262
+ clearTimeouts();
263
+ }
264
+ }}
265
+ onmouseleave={() => {
266
+ // Close when leaving tooltip (for hover mode)
267
+ if (trigger === 'hover') {
268
+ hide();
269
+ }
270
+ }}
271
+ >
272
+ <div class="tooltip-content">
273
+ {#if title}
274
+ <div class="tooltip-title">{title}</div>
275
+ {/if}
276
+ {#if content}
277
+ {@render content()}
278
+ {:else if text}
279
+ <div class="tooltip-text">{text}</div>
280
+ {/if}
281
+ </div>
282
+
283
+ {#if arrow}
284
+ <div
285
+ class="tooltip-arrow {positionManager.arrowSide}"
286
+ style={positionManager.arrowStyle}
287
+ ></div>
288
+ {/if}
289
+ </div>
290
+ {/if}
291
+
292
+ <style>.tooltip-trigger {
293
+ display: inline-block;
294
+ }
295
+ .tooltip-trigger.disabled {
296
+ cursor: not-allowed;
297
+ opacity: 0.6;
298
+ }
299
+ .tooltip-trigger:not(.disabled):focus-visible {
300
+ outline: 2px solid var(--primary, #0066cc);
301
+ outline-offset: 2px;
302
+ border-radius: var(--radius-sm, 0.125rem);
303
+ }
304
+
305
+ .tooltip {
306
+ padding: 0.5rem 0.75rem;
307
+ background-color: var(--tooltip-bg, #1a1a1a);
308
+ color: var(--tooltip-fg, #ffffff);
309
+ border-radius: var(--radius-md, 0.375rem);
310
+ font-size: var(--font-sm, 0.875rem);
311
+ line-height: 1.4;
312
+ max-width: min(320px, 90vw);
313
+ word-wrap: break-word;
314
+ pointer-events: auto;
315
+ box-shadow: var(--shadow-lg, 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06));
316
+ animation: tooltip-fade-in 0.15s ease-out;
317
+ /* Ensure tooltip stays above other content */
318
+ position: fixed;
319
+ }
320
+
321
+ .tooltip-content {
322
+ display: flex;
323
+ flex-direction: column;
324
+ gap: 0.25rem;
325
+ }
326
+
327
+ .tooltip-title {
328
+ font-weight: 600;
329
+ font-size: 0.9375rem; /* Slightly larger than body text */
330
+ line-height: 1.3;
331
+ color: var(--tooltip-title-fg, var(--tooltip-fg, #ffffff));
332
+ }
333
+
334
+ .tooltip-text {
335
+ font-size: var(--font-sm, 0.875rem);
336
+ line-height: 1.4;
337
+ }
338
+
339
+ .tooltip-arrow {
340
+ position: absolute;
341
+ width: 0;
342
+ height: 0;
343
+ border-style: solid;
344
+ /* Arrow on top of tooltip, pointing up */
345
+ }
346
+ .tooltip-arrow.top {
347
+ border-width: 0 8px 8px 8px;
348
+ border-color: transparent transparent var(--tooltip-bg, #1a1a1a) transparent;
349
+ }
350
+ .tooltip-arrow {
351
+ /* Arrow on bottom of tooltip, pointing down */
352
+ }
353
+ .tooltip-arrow.bottom {
354
+ border-width: 8px 8px 0 8px;
355
+ border-color: var(--tooltip-bg, #1a1a1a) transparent transparent transparent;
356
+ }
357
+ .tooltip-arrow {
358
+ /* Arrow on left of tooltip, pointing left */
359
+ }
360
+ .tooltip-arrow.left {
361
+ border-width: 8px 8px 8px 0;
362
+ border-color: transparent var(--tooltip-bg, #1a1a1a) transparent transparent;
363
+ }
364
+ .tooltip-arrow {
365
+ /* Arrow on right of tooltip, pointing right */
366
+ }
367
+ .tooltip-arrow.right {
368
+ border-width: 8px 0 8px 8px;
369
+ border-color: transparent transparent transparent var(--tooltip-bg, #1a1a1a);
370
+ }
371
+
372
+ @keyframes tooltip-fade-in {
373
+ from {
374
+ opacity: 0;
375
+ transform: scale(0.95);
376
+ }
377
+ to {
378
+ opacity: 1;
379
+ transform: scale(1);
380
+ }
381
+ }
382
+ /* Mobile responsiveness considerations */
383
+ @media (hover: none) {
384
+ /* On touch devices, tooltips with hover trigger might not work well */
385
+ /* Consider showing a visual indicator that tap is needed */
386
+ .tooltip-trigger:not(.disabled) {
387
+ cursor: pointer;
388
+ }
389
+ }</style>
@@ -0,0 +1,21 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { Placement } from '../../helpers/positioning.js';
3
+ type TriggerMode = 'hover' | 'focus' | 'click' | 'manual';
4
+ type $$ComponentProps = {
5
+ title?: string;
6
+ text?: string;
7
+ content?: Snippet;
8
+ placement?: Placement;
9
+ offset?: number;
10
+ arrow?: boolean;
11
+ trigger?: TriggerMode;
12
+ openDelay?: number;
13
+ closeDelay?: number;
14
+ open?: boolean;
15
+ disabled?: boolean;
16
+ class?: string;
17
+ children: Snippet;
18
+ };
19
+ declare const Tooltip: import("svelte").Component<$$ComponentProps, {}, "open">;
20
+ type Tooltip = ReturnType<typeof Tooltip>;
21
+ export default Tooltip;
@@ -1,2 +1,8 @@
1
- declare const ago: (date: Date, style?: 'full' | 'long' | 'short' | 'medium') => string;
1
+ /**
2
+ * Converts a date to a human-readable "ago" string (e.g., "2 hours ago", "3 days ago")
3
+ * @param date - The date to convert
4
+ * @param style - The style of output ('full', 'long', 'short', 'medium')
5
+ * @returns A human-readable time difference string
6
+ */
7
+ declare const ago: (date: Date, style?: "full" | "long" | "short" | "medium") => string;
2
8
  export default ago;
@@ -1,6 +1,12 @@
1
1
  const DAY_SECONDS = 86400;
2
2
  const WEEK_SECONDS = 604800;
3
3
  const YEAR_SECONDS = WEEK_SECONDS * 52;
4
+ /**
5
+ * Converts a date to a human-readable "ago" string (e.g., "2 hours ago", "3 days ago")
6
+ * @param date - The date to convert
7
+ * @param style - The style of output ('full', 'long', 'short', 'medium')
8
+ * @returns A human-readable time difference string
9
+ */
4
10
  const ago = (date, style = 'medium') => {
5
11
  const epoch = Math.round(date.getTime() / 1000);
6
12
  const now = Math.round(Date.now() / 1000);
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Reusable Svelte actions for animations
3
+ * Easy-to-use actions that can be applied to elements with `use:actionName`
4
+ * @module animation-actions
5
+ */
6
+ import { type AnimationOptions } from './animations.js';
7
+ import type { Action } from 'svelte/action';
8
+ /**
9
+ * Options for fade in action
10
+ */
11
+ export interface FadeInOptions extends AnimationOptions {
12
+ /** Delay before starting animation */
13
+ delay?: number;
14
+ }
15
+ /**
16
+ * Fade in element on mount
17
+ *
18
+ * @example
19
+ * ```svelte
20
+ * <div use:fadeIn={{ duration: 300 }}>
21
+ * Fades in when mounted
22
+ * </div>
23
+ * ```
24
+ */
25
+ export declare const fadeIn: Action<HTMLElement, FadeInOptions | undefined>;
26
+ /**
27
+ * Slide in from top on mount
28
+ *
29
+ * @example
30
+ * ```svelte
31
+ * <div use:slideIn="top">
32
+ * Slides in from top
33
+ * </div>
34
+ * ```
35
+ */
36
+ export declare const slideIn: Action<HTMLElement, 'top' | 'bottom' | undefined>;
37
+ /**
38
+ * Scale in on mount
39
+ *
40
+ * @example
41
+ * ```svelte
42
+ * <div use:scaleIn>
43
+ * Scales in when mounted
44
+ * </div>
45
+ * ```
46
+ */
47
+ export declare const scaleIn: Action<HTMLElement, AnimationOptions | undefined>;
48
+ /**
49
+ * Button press effect (scale down on click)
50
+ *
51
+ * @example
52
+ * ```svelte
53
+ * <button use:pressEffect>
54
+ * Click me
55
+ * </button>
56
+ * ```
57
+ */
58
+ export declare const pressEffect: Action<HTMLElement>;
59
+ /**
60
+ * Shake animation trigger
61
+ *
62
+ * @example
63
+ * ```svelte
64
+ * <script>
65
+ * let triggerShake = $state(false);
66
+ * </script>
67
+ * <div use:shake={triggerShake}>
68
+ * Shakes when triggerShake changes to true
69
+ * </div>
70
+ * ```
71
+ */
72
+ export declare const shake: Action<HTMLElement, boolean>;
73
+ /**
74
+ * Bounce animation trigger
75
+ *
76
+ * @example
77
+ * ```svelte
78
+ * <script>
79
+ * let triggerBounce = $state(false);
80
+ * </script>
81
+ * <div use:bounce={triggerBounce}>
82
+ * Bounces when triggerBounce changes to true
83
+ * </div>
84
+ * ```
85
+ */
86
+ export declare const bounce: Action<HTMLElement, boolean>;
87
+ /**
88
+ * Pulse animation trigger (for loading states)
89
+ *
90
+ * @example
91
+ * ```svelte
92
+ * <script>
93
+ * let isLoading = $state(false);
94
+ * </script>
95
+ * <div use:pulse={isLoading}>
96
+ * Pulses while loading
97
+ * </div>
98
+ * ```
99
+ */
100
+ export declare const pulse: Action<HTMLElement, boolean>;
101
+ /**
102
+ * Ripple effect on click (Material Design inspired)
103
+ *
104
+ * @example
105
+ * ```svelte
106
+ * <button use:ripple>
107
+ * Click for ripple effect
108
+ * </button>
109
+ * ```
110
+ */
111
+ export declare const ripple: Action<HTMLElement, {
112
+ color?: string;
113
+ } | undefined>;
114
+ /**
115
+ * Auto-focus element with smooth highlight
116
+ *
117
+ * @example
118
+ * ```svelte
119
+ * <input use:autoFocus />
120
+ * ```
121
+ */
122
+ export declare const autoFocus: Action<HTMLElement, {
123
+ delay?: number;
124
+ } | undefined>;