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
@@ -1,169 +1,215 @@
1
- <script>import { uniqueId } from "../../index.js";
2
- import { createEventDispatcher } from "svelte";
3
- import FormField from "../form-field.svelte";
4
- import FormLabel from "../form-label.svelte";
5
- const id = uniqueId();
6
- const dipatch = createEventDispatcher();
7
- export let value;
8
- export let prefix = "$";
9
- export let suffix = "";
10
- export let currency = "USD";
11
- export let allowCents = true;
12
- export let placeholder = "";
13
- export let size = "full";
14
- export let units = "ones";
15
- export let min = 0;
16
- export let max = null;
17
- const getDollarsFromValue = () => {
18
- if (!value) return "0";
19
- if (isValueInCents) return String(Math.abs(Math.floor(value / 100)));
20
- return String(Math.abs(Math.floor(value)));
21
- };
22
- const getCentsFromValue = () => {
23
- if (!value) return "00";
24
- if (isValueInCents) return String(Math.abs(Math.round(value % 100))).padStart(2, "0");
25
- return String(Math.abs(Math.round(value % 1 * 100))).padStart(2, "0");
26
- };
27
- let isValueInCents = units === "cents";
28
- const fieldOrder = ["dollars", "cents"];
29
- let dollars = getDollarsFromValue();
30
- let cents = getCentsFromValue();
31
- let lastState = [
32
- { value: String(dollars), selectionStart: 0, selectionEnd: 0 },
33
- { value: String(cents), selectionStart: 0, selectionEnd: 0 }
34
- ];
35
- $: if (value !== null && value >= 0) {
36
- dollars = getDollarsFromValue();
37
- cents = getCentsFromValue();
38
- }
39
- const getTargetProperties = (e) => {
40
- const target = e.target;
41
- const name = target.getAttribute("name");
42
- const index = fieldOrder.indexOf(name ?? "") || 0;
43
- const nextName = index < fieldOrder.length - 1 ? fieldOrder[index + 1] : null;
44
- const prevName = index > 0 ? fieldOrder[index - 1] : null;
45
- const selection = [target.selectionStart ?? 0, target.selectionEnd ?? 0];
46
- const key = e instanceof KeyboardEvent ? e.key : "";
47
- const isNumber = !isNaN(Number(key));
48
- const isDecimal = key === ".";
49
- const isBackspace = key === "Backspace";
50
- const isAllowed = isNumber || isDecimal || ["Delete", "ArrowLeft", "ArrowRight", "Tab"].includes(key);
51
- return {
52
- element: target,
53
- name,
54
- index,
55
- selectionStart: selection[0],
56
- selectionEnd: selection[1],
57
- isHighligted: selection[0] !== selection[1],
58
- key,
59
- isNumber,
60
- isDecimal,
61
- isBackspace,
62
- isAllowed,
63
- lastState: lastState[index],
64
- value: target.value,
65
- next: nextName ? document.getElementById(`${id}-${nextName}`) : null,
66
- previous: prevName ? document.getElementById(`${id}-${prevName}`) : null
67
- };
68
- };
69
- const focusAndHighlightText = (target) => {
70
- target.focus();
71
- target.setSelectionRange(0, target.value.length);
72
- };
73
- const updateLastState = (e) => {
74
- const target = getTargetProperties(e);
75
- lastState[target.index] = {
76
- value: target.value,
77
- selectionStart: target.selectionStart,
78
- selectionEnd: target.selectionEnd
79
- };
80
- };
81
- const isNumericString = (value2) => {
82
- return !isNaN(Number(value2));
83
- };
84
- const moveExtraCentsToDollars = (centsValue, append = true) => {
85
- if (centsValue.length > 2 && isNumericString(centsValue) && Number(centsValue) > 0) {
86
- const whole = centsValue.substring(0, centsValue.length - 2);
87
- const decimal = centsValue.substring(centsValue.length - 2);
88
- dollars = append ? `${dollars}${whole}` : whole;
89
- cents = decimal;
90
- }
91
- };
92
- const onKeyPress = (e) => {
93
- const target = getTargetProperties(e);
94
- if (!target.isAllowed) return e.preventDefault();
95
- if (target.isDecimal) {
96
- e.preventDefault();
97
- if (target.next && allowCents) focusAndHighlightText(target.next);
98
- return;
99
- }
100
- ;
101
- if (target.name === "cents" && target.value.length >= 2 && !target.isHighligted) {
102
- if (target.isNumber) moveExtraCentsToDollars(`${target.value}${e.key}`);
103
- return e.preventDefault();
104
- }
105
- updateLastState(e);
106
- };
107
- const onKeyUp = (e) => {
108
- const target = getTargetProperties(e);
109
- if (target.key === "ArrowLeft" && !target.isHighligted && target.previous && target.lastState.selectionStart === 0) {
110
- const preservedValue = String(target.previous.value);
111
- focusAndHighlightText(target.previous);
112
- target.previous.value = preservedValue;
113
- return e.preventDefault();
114
- }
115
- if (target.key === "ArrowRight" && !target.isHighligted && target.next && target.lastState.selectionStart === target.value.length) {
116
- focusAndHighlightText(target.next);
117
- return e.preventDefault();
118
- }
119
- if (target.isBackspace) {
120
- if (target.lastState.value.length === 0 && target.previous) {
121
- target.previous.focus();
122
- e.preventDefault();
123
- }
124
- }
125
- updateLastState(e);
126
- };
127
- const onInput = (e) => {
128
- const target = getTargetProperties(e);
129
- if (!isNumericString(target.value)) {
130
- target.element.value = target.lastState.value;
131
- return e.preventDefault();
132
- }
133
- if (target.value.includes("-")) {
134
- target.value = target.value.replace("-", "");
135
- }
136
- if (target.value.includes(".")) {
137
- const parts = target.value.split(".");
138
- dollars = parts[0];
139
- cents = parts[1].padEnd(2, "0").substring(0, 2);
140
- return e.preventDefault();
141
- }
142
- if (target.name === "cents" && target.value.length > 2) {
143
- moveExtraCentsToDollars(target.value, false);
144
- return e.preventDefault();
145
- }
146
- };
147
- const onSaveStateEvent = (e) => {
148
- if (dollars.length === 0) dollars = "0";
149
- if (cents.length === 0) cents = "00";
150
- updateLastState(e);
151
- };
152
- const onChange = () => {
153
- let centValue = Math.abs(isNumericString(cents) ? Number(cents) : 0);
154
- let dollarValue = Math.abs(isNumericString(dollars) ? Number(dollars) : 0);
155
- if (isValueInCents) value = dollarValue * 100 + centValue;
156
- else value = dollarValue + centValue / 100;
157
- if (min && value < min) value = min;
158
- if (max && value > max) value = max;
159
- cents = String(centValue).padStart(2, "0");
160
- };
1
+ <script lang="ts">
2
+ import { uniqueId, type FormFieldSizeOptions } from '../../index.js';
3
+ import FormField from '../form-field.svelte';
4
+ import { untrack } from 'svelte';
5
+
6
+ const id = uniqueId();
7
+
8
+ let {
9
+ value = $bindable(null as number | null),
10
+ prefix = '$',
11
+ suffix = '',
12
+ currency = 'USD',
13
+ allowCents = true,
14
+ placeholder = '',
15
+ size = 'full' as FormFieldSizeOptions,
16
+ units = 'ones' as 'ones' | 'cents',
17
+ min = 0,
18
+ max = null as number | null,
19
+ onChange = undefined,
20
+ label = undefined
21
+ }: {
22
+ value?: number | null;
23
+ prefix?: string;
24
+ suffix?: string;
25
+ currency?: string;
26
+ allowCents?: boolean;
27
+ placeholder?: string;
28
+ size?: FormFieldSizeOptions;
29
+ units?: 'ones' | 'cents';
30
+ min?: number;
31
+ max?: number | null;
32
+ onChange?: ((value: number | null) => void) | undefined;
33
+ label?: string;
34
+ } = $props();
35
+
36
+ let isValueInCents = $derived(units === 'cents');
37
+ const fieldOrder = ['dollars', 'cents'];
38
+
39
+ const getDollarsFromValue = () => {
40
+ if (!value) return '0';
41
+ if (isValueInCents) return String(Math.abs(Math.floor(value / 100)));
42
+ return String(Math.abs(Math.floor(value)));
43
+ }
44
+
45
+ const getCentsFromValue = () => {
46
+ if (!value) return '00';
47
+ if (isValueInCents) return String(Math.abs(Math.round(value % 100))).padStart(2, '0');
48
+ return String(Math.abs(Math.round((value % 1) * 100))).padStart(2, '0');
49
+ }
50
+
51
+ let dollars = $state(getDollarsFromValue());
52
+ let cents = $state(getCentsFromValue());
53
+ // Using untrack() to indicate we intentionally want non-reactive initial values
54
+ let lastState = $state([
55
+ { value: untrack(() => String(dollars)), selectionStart: 0, selectionEnd: 0 },
56
+ { value: untrack(() => String(cents)), selectionStart: 0, selectionEnd: 0 }
57
+ ]);
58
+ $effect(() => {
59
+ if (value !== null && value >= 0) {
60
+ // Use untrack to prevent writes to dollars/cents from triggering this effect again
61
+ untrack(() => {
62
+ dollars = getDollarsFromValue();
63
+ cents = getCentsFromValue();
64
+ });
65
+ }
66
+ });
67
+
68
+ const getTargetProperties = (e: KeyboardEvent | Event) => {
69
+ const target = e.target as HTMLInputElement;
70
+ const name = target.getAttribute('name');
71
+ const index = fieldOrder.indexOf(name ?? '') || 0;
72
+ const nextName = index < fieldOrder.length - 1 ? fieldOrder[index + 1] : null;
73
+ const prevName = index > 0 ? fieldOrder[index - 1] : null;
74
+ const selection = [target.selectionStart ?? 0, target.selectionEnd ?? 0];
75
+ const key = e instanceof KeyboardEvent ? e.key : '';
76
+ const isNumber = !isNaN(Number(key));
77
+ const isDecimal =key === '.';
78
+ const isBackspace = key === 'Backspace';
79
+ const isAllowed = isNumber || isDecimal || ['Delete', 'ArrowLeft', 'ArrowRight', 'Tab'].includes(key);
80
+ return {
81
+ element: target,
82
+ name,
83
+ index,
84
+ selectionStart: selection[0],
85
+ selectionEnd: selection[1],
86
+ isHighligted: selection[0] !== selection[1],
87
+ key,
88
+ isNumber,
89
+ isDecimal,
90
+ isBackspace,
91
+ isAllowed,
92
+ lastState: lastState[index],
93
+ value: target.value,
94
+ next: nextName ? document.getElementById(`${id}-${nextName}`) as HTMLInputElement : null,
95
+ previous: prevName ? document.getElementById(`${id}-${prevName}`) as HTMLInputElement : null
96
+ };
97
+ };
98
+
99
+ const focusAndHighlightText = (target: HTMLInputElement) => {
100
+ target.focus();
101
+ target.setSelectionRange(0, target.value.length);
102
+ };
103
+
104
+ const updateLastState = (e: Event) => {
105
+ const target = getTargetProperties(e);
106
+ lastState[target.index] = {
107
+ value: target.value,
108
+ selectionStart: target.selectionStart,
109
+ selectionEnd: target.selectionEnd
110
+ };
111
+ };
112
+
113
+ const isNumericString = (value: string | number) => {
114
+ return !isNaN(Number(value));
115
+ };
116
+
117
+ const moveExtraCentsToDollars = (centsValue: string, append = true) => {
118
+ if (centsValue.length > 2 && isNumericString(centsValue) && Number(centsValue) > 0) {
119
+ const whole = centsValue.substring(0, centsValue.length -2);
120
+ const decimal = centsValue.substring(centsValue.length -2);
121
+ dollars = append ? `${dollars}${whole}` : whole;
122
+ cents = decimal;
123
+ }
124
+ };
125
+
126
+ const onKeyPress = (e: KeyboardEvent) => {
127
+ const target = getTargetProperties(e);
128
+ if (!target.isAllowed) return e.preventDefault();
129
+ if (target.isDecimal) {
130
+ e.preventDefault();
131
+ if (target.next && allowCents) focusAndHighlightText(target.next);
132
+ return;
133
+ };
134
+ if (target.name === 'cents' && target.value.length >= 2 && !target.isHighligted) {
135
+ if (target.isNumber) moveExtraCentsToDollars(`${target.value}${e.key}`);
136
+ return e.preventDefault();
137
+ }
138
+ updateLastState(e);
139
+ };
140
+
141
+ const onKeyUp = (e: KeyboardEvent) => {
142
+ const target = getTargetProperties(e);
143
+ // Back arrow
144
+ if (target.key === 'ArrowLeft' && !target.isHighligted && target.previous && target.lastState.selectionStart === 0) {
145
+ const preservedValue = String(target.previous.value);
146
+ focusAndHighlightText(target.previous);
147
+ target.previous.value = preservedValue;
148
+ return e.preventDefault();
149
+ }
150
+ // Right arrow
151
+ if (target.key === 'ArrowRight' && !target.isHighligted && target.next && target.lastState.selectionStart === target.value.length) {
152
+ focusAndHighlightText(target.next);
153
+ return e.preventDefault();
154
+ }
155
+ // Handle backspace
156
+ if (target.isBackspace) {
157
+ if (target.lastState.value.length === 0 && target.previous) {
158
+ target.previous.focus();
159
+ e.preventDefault();
160
+ }
161
+ }
162
+ updateLastState(e);
163
+ };
164
+
165
+ const onInput = (e: Event) => {
166
+ const target = getTargetProperties(e);
167
+ // If they pasted in something non-numeric, revert to last state
168
+ if (!isNumericString(target.value)) {
169
+ target.element.value = target.lastState.value;
170
+ return e.preventDefault();
171
+ }
172
+ // No negative numbers
173
+ if (target.value.includes('-')) {
174
+ target.value = target.value.replace('-', '');
175
+ }
176
+ // If the input contains a decimal, break it into two parts
177
+ if (target.value.includes('.')) {
178
+ const parts = target.value.split('.');
179
+ dollars = parts[0];
180
+ cents = parts[1].padEnd(2, '0').substring(0, 2);
181
+ return e.preventDefault();
182
+ }
183
+ // If input is in cents and it's more than 2 digits, move the first digits to dollars
184
+ if (target.name === 'cents' && target.value.length > 2) {
185
+ moveExtraCentsToDollars(target.value, false);
186
+ return e.preventDefault();
187
+ }
188
+ };
189
+
190
+ const onSaveStateEvent = (e: Event) => {
191
+ if (dollars.length === 0) dollars = '0';
192
+ if (cents.length === 0) cents = '00';
193
+ updateLastState(e);
194
+ };
195
+
196
+ const handleChange = () => {
197
+ let centValue = Math.abs(isNumericString(cents) ? Number(cents) : 0);
198
+ let dollarValue = Math.abs(isNumericString(dollars) ? Number(dollars) : 0);
199
+ // Update value
200
+ if (isValueInCents) value = (dollarValue * 100) + centValue;
201
+ else value = dollarValue + (centValue / 100);
202
+ // Enforce min and max
203
+ if (min && value < min) value = min;
204
+ if (max && value > max) value = max;
205
+ // Cents should be padded to 2 digits, so that "5" becomes "05"
206
+ cents = String(centValue).padStart(2, '0');
207
+ onChange?.(value);
208
+ };
209
+
161
210
  </script>
162
211
 
163
- <FormField {size}>
164
- {#if $$slots.default}
165
- <FormLabel {id}><slot /></FormLabel>
166
- {/if}
212
+ <FormField {size} {label} {id}>
167
213
  <div class="input {currency}" class:allowCents {id}>
168
214
  {#if prefix}
169
215
  <span class="prefix">{prefix}</span>
@@ -174,13 +220,13 @@ const onChange = () => {
174
220
  {placeholder}
175
221
  bind:value={dollars}
176
222
  type="text"
177
- on:keypress={onKeyPress}
178
- on:keyup={onKeyUp}
179
- on:input={onInput}
180
- on:change={onChange}
181
- on:mouseup={onSaveStateEvent}
182
- on:focus={onSaveStateEvent}
183
- on:blur={onSaveStateEvent}
223
+ onkeypress={onKeyPress}
224
+ onkeyup={onKeyUp}
225
+ oninput={onInput}
226
+ onchange={handleChange}
227
+ onmouseup={onSaveStateEvent}
228
+ onfocus={onSaveStateEvent}
229
+ onblur={onSaveStateEvent}
184
230
  name="dollars"
185
231
  id="{id}-dollars"
186
232
  inputmode="numeric"
@@ -192,13 +238,13 @@ const onChange = () => {
192
238
  bind:value={cents}
193
239
  type="text"
194
240
  class="cents"
195
- on:keypress={onKeyPress}
196
- on:keyup={onKeyUp}
197
- on:input={onInput}
198
- on:change={onChange}
199
- on:mouseup={onSaveStateEvent}
200
- on:focus={onSaveStateEvent}
201
- on:blur={onSaveStateEvent}
241
+ onkeypress={onKeyPress}
242
+ onkeyup={onKeyUp}
243
+ oninput={onInput}
244
+ onchange={handleChange}
245
+ onmouseup={onSaveStateEvent}
246
+ onfocus={onSaveStateEvent}
247
+ onblur={onSaveStateEvent}
202
248
  name="cents"
203
249
  id="{id}-cents"
204
250
  inputmode="numeric"
@@ -1,32 +1,18 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import { type FormFieldSizeOptions } from '../../index.js';
3
- declare const __propDef: {
4
- props: {
5
- value: number | null;
6
- prefix?: string;
7
- suffix?: string;
8
- currency?: string;
9
- allowCents?: boolean;
10
- placeholder?: string;
11
- size?: FormFieldSizeOptions;
12
- units?: "ones" | "cents";
13
- min?: number;
14
- max?: number | null;
15
- };
16
- events: {
17
- change: CustomEvent<number | null>;
18
- } & {
19
- [evt: string]: CustomEvent<any>;
20
- };
21
- slots: {
22
- default: {};
23
- };
24
- exports?: {} | undefined;
25
- bindings?: string | undefined;
2
+ type $$ComponentProps = {
3
+ value?: number | null;
4
+ prefix?: string;
5
+ suffix?: string;
6
+ currency?: string;
7
+ allowCents?: boolean;
8
+ placeholder?: string;
9
+ size?: FormFieldSizeOptions;
10
+ units?: 'ones' | 'cents';
11
+ min?: number;
12
+ max?: number | null;
13
+ onChange?: ((value: number | null) => void) | undefined;
14
+ label?: string;
26
15
  };
27
- export type MoneyBoxProps = typeof __propDef.props;
28
- export type MoneyBoxEvents = typeof __propDef.events;
29
- export type MoneyBoxSlots = typeof __propDef.slots;
30
- export default class MoneyBox extends SvelteComponent<MoneyBoxProps, MoneyBoxEvents, MoneyBoxSlots> {
31
- }
32
- export {};
16
+ declare const MoneyBox: import("svelte").Component<$$ComponentProps, {}, "value">;
17
+ type MoneyBox = ReturnType<typeof MoneyBox>;
18
+ export default MoneyBox;