sveltacular 0.0.77 → 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 -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 +63 -29
  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 +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 -51
  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 +40 -21
  25. package/dist/forms/file-box/file-box.svelte.d.ts +14 -27
  26. package/dist/forms/form-field.svelte +18 -13
  27. package/dist/forms/form-field.svelte.d.ts +8 -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-section.svelte +15 -4
  35. package/dist/forms/form-section.svelte.d.ts +8 -20
  36. package/dist/forms/form.svelte +30 -13
  37. package/dist/forms/form.svelte.d.ts +11 -24
  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 -21
  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 -109
  45. package/dist/forms/list-box/list-box.svelte.d.ts +16 -28
  46. package/dist/forms/money-box/money-box.svelte +223 -176
  47. package/dist/forms/money-box/money-box.svelte.d.ts +16 -30
  48. package/dist/forms/number-box/number-box.svelte +84 -60
  49. package/dist/forms/number-box/number-box.svelte.d.ts +17 -30
  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 -114
  53. package/dist/forms/phone-box/phone-box.svelte.d.ts +8 -22
  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 -21
  58. package/dist/forms/radio-group/radio-group.svelte +27 -13
  59. package/dist/forms/radio-group/radio-group.svelte.d.ts +10 -23
  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 -22
  64. package/dist/forms/text-area/text-area.svelte +89 -15
  65. package/dist/forms/text-area/text-area.svelte.d.ts +15 -25
  66. package/dist/forms/text-box/text-box.svelte +253 -75
  67. package/dist/forms/text-box/text-box.svelte.d.ts +28 -38
  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 -22
  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 -11
  75. package/dist/generic/address/address.svelte.d.ts +9 -21
  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 -12
  81. package/dist/generic/card/card-container.svelte.d.ts +8 -20
  82. package/dist/generic/card/card.svelte +47 -27
  83. package/dist/generic/card/card.svelte.d.ts +9 -21
  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 -58
  89. package/dist/generic/date/date-time.svelte.d.ts +10 -22
  90. package/dist/generic/divider/divider.svelte.d.ts +22 -21
  91. package/dist/generic/dot/dot.svelte +13 -4
  92. package/dist/generic/dot/dot.svelte.d.ts +7 -19
  93. package/dist/generic/dropdown-item/dropdown-item.svelte +24 -12
  94. package/dist/generic/dropdown-item/dropdown-item.svelte.d.ts +10 -23
  95. package/dist/generic/email/email.svelte +6 -4
  96. package/dist/generic/email/email.svelte.d.ts +5 -17
  97. package/dist/generic/empty/empty.svelte +57 -26
  98. package/dist/generic/empty/empty.svelte.d.ts +11 -23
  99. package/dist/generic/header/header.svelte +26 -10
  100. package/dist/generic/header/header.svelte.d.ts +10 -22
  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 -23
  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 -17
  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 -21
  112. package/dist/generic/menu/menu.svelte +163 -54
  113. package/dist/generic/menu/menu.svelte.d.ts +16 -26
  114. package/dist/generic/notice/notice.svelte +119 -80
  115. package/dist/generic/notice/notice.svelte.d.ts +17 -28
  116. package/dist/generic/overlay.svelte +40 -14
  117. package/dist/generic/overlay.svelte.d.ts +9 -21
  118. package/dist/generic/panel/panel.svelte +16 -6
  119. package/dist/generic/panel/panel.svelte.d.ts +8 -20
  120. package/dist/generic/phone/phone.svelte +30 -20
  121. package/dist/generic/phone/phone.svelte.d.ts +6 -18
  122. package/dist/generic/pill/pill.svelte +47 -33
  123. package/dist/generic/pill/pill.svelte.d.ts +10 -23
  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 -18
  129. package/dist/generic/scorecard/scorecard.svelte.d.ts +9 -21
  130. package/dist/generic/section/section.svelte +28 -9
  131. package/dist/generic/section/section.svelte.d.ts +11 -23
  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 -17
  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 +6 -0
  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 -1
  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 -14
  181. package/dist/icons/angle-up-icon.svelte.d.ts +22 -21
  182. package/dist/icons/check-icon.svelte.d.ts +22 -21
  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 -21
  186. package/dist/icons/folder-open-icon.svelte.d.ts +22 -21
  187. package/dist/icons/hamburger-icon.svelte.d.ts +22 -21
  188. package/dist/icons/home-icon.svelte +2 -1
  189. package/dist/icons/home-icon.svelte.d.ts +16 -14
  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 -21
  193. package/dist/icons/mobile-phone-icon.svelte.d.ts +22 -21
  194. package/dist/icons/phone-icon.svelte.d.ts +22 -21
  195. package/dist/icons/svg-icon.svelte +46 -10
  196. package/dist/icons/svg-icon.svelte.d.ts +13 -25
  197. package/dist/icons/upload-icon.svelte.d.ts +22 -21
  198. package/dist/images/icon.svelte +9 -3
  199. package/dist/images/icon.svelte.d.ts +6 -18
  200. package/dist/images/image.svelte +28 -8
  201. package/dist/images/image.svelte.d.ts +14 -28
  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 -16
  207. package/dist/layout/flex-col.svelte.d.ts +12 -24
  208. package/dist/layout/flex-item.svelte +13 -3
  209. package/dist/layout/flex-item.svelte.d.ts +8 -20
  210. package/dist/layout/flex-row.svelte +70 -15
  211. package/dist/layout/flex-row.svelte.d.ts +14 -26
  212. package/dist/layout/grid.svelte +7 -1
  213. package/dist/layout/grid.svelte.d.ts +6 -28
  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 -26
  218. package/dist/modals/confirm.svelte +54 -37
  219. package/dist/modals/confirm.svelte.d.ts +16 -29
  220. package/dist/modals/dialog-body.svelte +10 -4
  221. package/dist/modals/dialog-body.svelte.d.ts +6 -28
  222. package/dist/modals/dialog-close-button.svelte +15 -9
  223. package/dist/modals/dialog-close-button.svelte.d.ts +6 -19
  224. package/dist/modals/dialog-footer.svelte +6 -3
  225. package/dist/modals/dialog-footer.svelte.d.ts +6 -28
  226. package/dist/modals/dialog-header.svelte +13 -1
  227. package/dist/modals/dialog-header.svelte.d.ts +7 -28
  228. package/dist/modals/dialog-window.svelte +42 -14
  229. package/dist/modals/dialog-window.svelte.d.ts +9 -19
  230. package/dist/modals/index.d.ts +9 -0
  231. package/dist/modals/index.js +9 -0
  232. package/dist/modals/modal.svelte +88 -23
  233. package/dist/modals/modal.svelte.d.ts +14 -24
  234. package/dist/modals/prompt.svelte +71 -49
  235. package/dist/modals/prompt.svelte.d.ts +19 -32
  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 -12
  239. package/dist/navigation/app-bar/app-bar.svelte.d.ts +10 -22
  240. package/dist/navigation/app-bar/app-branding.svelte +10 -5
  241. package/dist/navigation/app-bar/app-branding.svelte.d.ts +6 -17
  242. package/dist/navigation/app-bar/app-logo.svelte +20 -5
  243. package/dist/navigation/app-bar/app-logo.svelte.d.ts +9 -21
  244. package/dist/navigation/app-bar/app-nav-item.svelte +26 -13
  245. package/dist/navigation/app-bar/app-nav-item.svelte.d.ts +9 -22
  246. package/dist/navigation/app-bar/app-nav.svelte +39 -12
  247. package/dist/navigation/app-bar/app-nav.svelte.d.ts +8 -20
  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 -27
  251. package/dist/navigation/breadcrumbs/breadcrumbs.svelte.d.ts +12 -23
  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 -19
  268. package/dist/navigation/dropdown-button/dropdown-button.svelte.d.ts +10 -22
  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 -37
  272. package/dist/navigation/pagination/pagination.svelte.d.ts +10 -23
  273. package/dist/navigation/side-bar/side-bar.svelte +18 -9
  274. package/dist/navigation/side-bar/side-bar.svelte.d.ts +7 -19
  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 -52
  279. package/dist/navigation/tabs/tab-group.svelte.d.ts +9 -22
  280. package/dist/navigation/tabs/tab.svelte +64 -33
  281. package/dist/navigation/tabs/tab.svelte.d.ts +11 -24
  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 -13
  286. package/dist/navigation/wizard/wizard-step.svelte.d.ts +8 -20
  287. package/dist/navigation/wizard/wizard.svelte +123 -81
  288. package/dist/navigation/wizard/wizard.svelte.d.ts +15 -28
  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 -19
  293. package/dist/placeholders/progress.svelte +7 -6
  294. package/dist/placeholders/progress.svelte.d.ts +5 -17
  295. package/dist/placeholders/skeleton-input.svelte +66 -38
  296. package/dist/placeholders/skeleton-input.svelte.d.ts +5 -17
  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 -15
  302. package/dist/placeholders/skeleton-text.svelte.d.ts +7 -19
  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 -118
  306. package/dist/tables/data-grid.svelte.d.ts +34 -35
  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 -20
  311. package/dist/tables/table-cell.svelte +45 -14
  312. package/dist/tables/table-cell.svelte.d.ts +10 -21
  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 -18
  316. package/dist/tables/table-header-cell.svelte.d.ts +15 -21
  317. package/dist/tables/table-header.svelte +31 -6
  318. package/dist/tables/table-header.svelte.d.ts +7 -28
  319. package/dist/tables/table-row.svelte +87 -7
  320. package/dist/tables/table-row.svelte.d.ts +10 -28
  321. package/dist/tables/table.svelte +61 -2
  322. package/dist/tables/table.svelte.d.ts +13 -28
  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 -25
  339. package/dist/timeline/timeline.svelte +12 -6
  340. package/dist/timeline/timeline.svelte.d.ts +6 -28
  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 -19
  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 -20
  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 -28
  358. package/dist/typography/subtitle.svelte +18 -4
  359. package/dist/typography/subtitle.svelte.d.ts +8 -20
  360. package/dist/typography/text.svelte +20 -5
  361. package/dist/typography/text.svelte.d.ts +9 -21
  362. package/package.json +31 -21
  363. package/dist/navigation/accordian/accordian.svelte +0 -62
  364. package/dist/navigation/accordian/accordian.svelte.d.ts +0 -21
  365. package/dist/tables/table-body.svelte +0 -3
  366. package/dist/tables/table-body.svelte.d.ts +0 -29
  367. package/dist/tables/table-footer-cell.svelte +0 -22
  368. package/dist/tables/table-footer-cell.svelte.d.ts +0 -20
  369. package/dist/tables/table-footer-row.svelte +0 -3
  370. package/dist/tables/table-footer-row.svelte.d.ts +0 -29
  371. package/dist/tables/table-footer.svelte +0 -13
  372. package/dist/tables/table-footer.svelte.d.ts +0 -29
  373. package/dist/tables/table-header-row.svelte +0 -4
  374. package/dist/tables/table-header-row.svelte.d.ts +0 -29
@@ -1,103 +1,159 @@
1
- <script>import { createEventDispatcher } from "svelte";
2
- import FormField from "../form-field.svelte";
3
- import FormLabel from "../form-label.svelte";
4
- import { uniqueId } from "../../helpers/unique-id.js";
5
- import Menu from "../../generic/menu/menu.svelte";
6
- import AngleUpIcon from "../../icons/angle-up-icon.svelte";
7
- import debounce from "../../helpers/debounce.js";
8
- import { browser } from "$app/environment";
9
- export let value = null;
10
- export let items = [];
11
- export let size = "full";
12
- export let disabled = false;
13
- export let required = false;
14
- export let searchable = false;
15
- export let search = void 0;
16
- export let placeholder = "";
17
- const id = uniqueId();
18
- const dispatch = createEventDispatcher();
19
- const getText = () => items.find((item) => item.value == value)?.name || "";
20
- let text = getText();
21
- let isMenuOpen = false;
22
- let highlightIndex = -1;
23
- let filteredItems = [];
24
- $: isSeachable = searchable || !!search;
25
- const onSelect = (e) => {
26
- value = e.detail.value;
27
- dispatch("change", value);
28
- text = getText();
29
- applyFilter();
30
- isMenuOpen = false;
31
- };
32
- const focusOnInput = () => {
33
- if (browser) document.getElementById(id)?.focus();
34
- };
35
- const toggle = () => isMenuOpen = !open;
36
- const clickArrow = () => {
37
- if (disabled) return;
38
- toggle();
39
- if (isMenuOpen) focusOnInput();
40
- };
41
- const onInputKeyPress = (e) => {
42
- if (disabled) return;
43
- if (e.key == "Escape") {
44
- isMenuOpen = false;
45
- return;
46
- }
47
- if (e.key == "Enter" || e.key == "Tab") {
48
- isMenuOpen = false;
49
- if (highlightIndex > -1) {
50
- onSelect(new CustomEvent("select", { detail: filteredItems[highlightIndex] }));
51
- }
52
- return;
53
- }
54
- if (e.key == "ArrowDown") {
55
- highlightIndex = Math.min(highlightIndex + 1, filteredItems.length - 1);
56
- isMenuOpen = true;
57
- return;
58
- }
59
- if (e.key == "ArrowUp") {
60
- highlightIndex = Math.max(highlightIndex - 1, -1);
61
- if (highlightIndex == -1) isMenuOpen = false;
62
- return;
63
- }
64
- if (e.key.length == 1 || e.key == "Backspace" || e.key == "Delete") {
65
- isMenuOpen = true;
66
- highlightIndex = 0;
67
- triggerSearch();
68
- }
69
- };
70
- const triggerSearch = debounce(async () => {
71
- if (search && isSeachable) {
72
- items = await search(text);
73
- }
74
- updateText();
75
- applyFilter();
76
- }, 300);
77
- const applyFilter = () => {
78
- const searchText = text.trim().toLowerCase();
79
- filteredItems = searchText && isSeachable ? items.map((item, index) => ({ ...item, index })).filter((item) => item.name.toLowerCase().includes(searchText)) : items.map((item, index) => ({ ...item, index }));
80
- };
81
- const clear = () => {
82
- if (disabled) return;
83
- text = "";
84
- value = "";
85
- triggerSearch();
86
- focusOnInput();
87
- };
88
- const updateText = async () => {
89
- if (browser) {
90
- const textBox = document.getElementById(id);
91
- if (document.activeElement != textBox) text = getText();
92
- }
93
- };
94
- triggerSearch();
95
- $: open = isMenuOpen && !disabled;
1
+ <script lang="ts">
2
+ import type { DropdownOption, FormFieldSizeOptions, MenuOption } from '../../types/form.js';
3
+ import FormField from '../form-field.svelte';
4
+ import FormLabel from '../form-label.svelte';
5
+ import { uniqueId } from '../../helpers/unique-id.js';
6
+ import Menu from '../../generic/menu/menu.svelte';
7
+ import AngleUpIcon from '../../icons/angle-up-icon.svelte';
8
+ import debounce from '../../helpers/debounce.js';
9
+ import { browser } from '$app/environment';
10
+ import type { SearchFunction } from './list-box.js';
11
+
12
+ let {
13
+ value = $bindable(null as string | null),
14
+ items = [] as DropdownOption[],
15
+ size = 'full' as FormFieldSizeOptions,
16
+ disabled = false,
17
+ required = false,
18
+ searchable = false,
19
+ search = undefined as SearchFunction | undefined,
20
+ placeholder = '',
21
+ onChange = undefined,
22
+ label = undefined,
23
+ virtualScroll = false,
24
+ itemHeight = 40
25
+ }: {
26
+ value?: string | null;
27
+ items?: DropdownOption[];
28
+ size?: FormFieldSizeOptions;
29
+ disabled?: boolean;
30
+ required?: boolean;
31
+ searchable?: boolean;
32
+ search?: SearchFunction | undefined;
33
+ placeholder?: string;
34
+ onChange?: ((value: string | null) => void) | undefined;
35
+ label?: string;
36
+ virtualScroll?: boolean;
37
+ itemHeight?: number;
38
+ } = $props();
39
+
40
+ const id = uniqueId();
41
+ const listboxId = `${id}-listbox`;
42
+ const getText = () => items.find((item) => item.value == value)?.name || '';
43
+
44
+ let text = $state(getText());
45
+ let isMenuOpen = $state(false);
46
+ let highlightIndex = $state(-1);
47
+ let filteredItems = $state<MenuOption[]>([]);
48
+ let isSeachable = $derived(searchable || !!search);
49
+
50
+ // Get the ID of the highlighted option for ARIA
51
+ let activeDescendant = $derived(
52
+ highlightIndex >= 0 && filteredItems[highlightIndex]
53
+ ? `${listboxId}-option-${highlightIndex}`
54
+ : undefined
55
+ );
56
+
57
+ // When an item is selected from the dropdown menu
58
+ const onSelect = (item: MenuOption) => {
59
+ value = item.value;
60
+ onChange?.(value);
61
+ text = getText();
62
+ applyFilter();
63
+ isMenuOpen = false;
64
+ };
65
+
66
+ const focusOnInput = () => {
67
+ if (browser) document.getElementById(id)?.focus();
68
+ };
69
+
70
+ // Toggle open or closed
71
+ const toggle = () => (isMenuOpen = !open);
72
+
73
+ // Click arrow
74
+ const clickArrow = () => {
75
+ if (disabled) return;
76
+ toggle();
77
+ if (isMenuOpen) focusOnInput();
78
+ };
79
+
80
+ // Handle key presses in the input
81
+ const onInputKeyPress = (e: KeyboardEvent) => {
82
+ if (disabled) return;
83
+ if (e.key == 'Escape') {
84
+ isMenuOpen = false;
85
+ return;
86
+ }
87
+ if (e.key == 'Enter' || e.key == 'Tab') {
88
+ isMenuOpen = false;
89
+ if (highlightIndex > -1) {
90
+ onSelect(filteredItems[highlightIndex]);
91
+ }
92
+ return;
93
+ }
94
+ if (e.key == 'ArrowDown') {
95
+ highlightIndex = Math.min(highlightIndex + 1, filteredItems.length - 1);
96
+ isMenuOpen = true;
97
+ return;
98
+ }
99
+ if (e.key == 'ArrowUp') {
100
+ highlightIndex = Math.max(highlightIndex - 1, -1);
101
+ if (highlightIndex == -1) isMenuOpen = false;
102
+ return;
103
+ }
104
+ if (e.key.length == 1 || e.key == 'Backspace' || e.key == 'Delete') {
105
+ isMenuOpen = true;
106
+ highlightIndex = 0;
107
+ triggerSearch();
108
+ }
109
+ };
110
+
111
+ // User is typing in the search box
112
+ const triggerSearch = debounce(async () => {
113
+ if (search && isSeachable) {
114
+ items = await search(text);
115
+ }
116
+ updateText();
117
+ applyFilter();
118
+ }, 300);
119
+
120
+ // Text or items have changed, we should apply the filter
121
+ const applyFilter = () => {
122
+ const searchText = text.trim().toLowerCase();
123
+ filteredItems =
124
+ searchText && isSeachable
125
+ ? items
126
+ .map((item, index) => ({ ...item, index }))
127
+ .filter((item) => item.name.toLowerCase().includes(searchText))
128
+ : items.map((item, index) => ({ ...item, index }));
129
+ };
130
+
131
+ const clear = () => {
132
+ if (disabled) return;
133
+ text = '';
134
+ value = '';
135
+ triggerSearch();
136
+ focusOnInput();
137
+ };
138
+
139
+ // When items change, we should change the text to match the value
140
+ const updateText = async () => {
141
+ if (browser) {
142
+ const textBox = document.getElementById(id) as HTMLInputElement;
143
+ // Don't change text if they're currently typing
144
+ if (document.activeElement != textBox) text = getText();
145
+ }
146
+ };
147
+
148
+ // Do initial search
149
+ triggerSearch();
150
+
151
+ let open = $derived(isMenuOpen && !disabled);
96
152
  </script>
97
153
 
98
154
  <FormField {size}>
99
- {#if $$slots.default}
100
- <FormLabel {id} {required} {disabled}><slot /></FormLabel>
155
+ {#if label}
156
+ <FormLabel {id} {required} {disabled} {label} />
101
157
  {/if}
102
158
  <div class="{open ? 'open' : 'closed'} {disabled ? 'disabled' : 'enabled'}">
103
159
  <input
@@ -108,16 +164,38 @@ $: open = isMenuOpen && !disabled;
108
164
  {disabled}
109
165
  {placeholder}
110
166
  readonly={!isSeachable}
111
- on:focus={() => (isMenuOpen = true)}
112
- on:keyup={onInputKeyPress}
167
+ role="combobox"
168
+ aria-expanded={open}
169
+ aria-controls={listboxId}
170
+ aria-autocomplete={isSeachable ? 'list' : 'none'}
171
+ aria-activedescendant={activeDescendant}
172
+ aria-haspopup="listbox"
173
+ onfocus={() => (isMenuOpen = true)}
174
+ onkeyup={onInputKeyPress}
113
175
  data-value={value}
114
176
  data-text={text}
115
177
  />
116
- <button type="button" class="icon" on:click={clickArrow} on:keydown={clickArrow} {disabled}>
178
+ <button
179
+ type="button"
180
+ class="icon"
181
+ onclick={clickArrow}
182
+ onkeydown={clickArrow}
183
+ {disabled}
184
+ aria-label={open ? 'Close options' : 'Open options'}
185
+ tabindex="-1"
186
+ >
117
187
  <AngleUpIcon />
118
188
  </button>
119
189
  {#if text && isSeachable}
120
- <button type="button" class="clear" on:click={clear} on:keydown={clear} {disabled}>
190
+ <button
191
+ type="button"
192
+ class="clear"
193
+ onclick={clear}
194
+ onkeydown={clear}
195
+ {disabled}
196
+ aria-label="Clear selection"
197
+ tabindex="-1"
198
+ >
121
199
  X
122
200
  </button>
123
201
  {/if}
@@ -127,10 +205,13 @@ $: open = isMenuOpen && !disabled;
127
205
  {open}
128
206
  closeAfterSelect={false}
129
207
  searchText={text}
130
- on:select={onSelect}
208
+ onSelect={onSelect}
131
209
  size="full"
132
210
  bind:highlightIndex
133
211
  bind:value
212
+ {listboxId}
213
+ {virtualScroll}
214
+ {itemHeight}
134
215
  />
135
216
  </div>
136
217
  </div>
@@ -146,15 +227,15 @@ div.disabled {
146
227
  }
147
228
  div input {
148
229
  width: 100%;
149
- padding: 0.5rem 1rem;
150
- border-radius: 0.25rem;
151
- border: 1px solid var(--form-input-border, black);
152
- background-color: var(--form-input-bg, white);
153
- color: var(--form-input-fg, black);
154
- font-size: 0.875rem;
230
+ padding: var(--spacing-sm) var(--spacing-base);
231
+ border-radius: var(--radius-md);
232
+ border: var(--border-thin) solid var(--form-input-border);
233
+ background-color: var(--form-input-bg);
234
+ color: var(--form-input-fg);
235
+ font-size: var(--font-base);
155
236
  font-weight: 500;
156
237
  line-height: 1.25rem;
157
- transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.2s ease-in-out, fill 0.2s ease-in-out, stroke 0.2s ease-in-out;
238
+ transition: background-color var(--transition-base) var(--ease-in-out), border-color var(--transition-base) var(--ease-in-out), color var(--transition-base) var(--ease-in-out), fill var(--transition-base) var(--ease-in-out), stroke var(--transition-base) var(--ease-in-out);
158
239
  user-select: none;
159
240
  white-space: nowrap;
160
241
  }
@@ -1,31 +1,19 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { DropdownOption, FormFieldSizeOptions } from '../../types/form.js';
3
2
  import type { SearchFunction } from './list-box.js';
4
- declare const __propDef: {
5
- props: {
6
- value?: string | null;
7
- items?: DropdownOption[];
8
- size?: FormFieldSizeOptions;
9
- disabled?: boolean;
10
- required?: boolean;
11
- searchable?: boolean;
12
- search?: SearchFunction | undefined;
13
- placeholder?: string;
14
- };
15
- events: {
16
- change: CustomEvent<string | null>;
17
- } & {
18
- [evt: string]: CustomEvent<any>;
19
- };
20
- slots: {
21
- default: {};
22
- };
23
- exports?: {} | undefined;
24
- bindings?: string | undefined;
3
+ type $$ComponentProps = {
4
+ value?: string | null;
5
+ items?: DropdownOption[];
6
+ size?: FormFieldSizeOptions;
7
+ disabled?: boolean;
8
+ required?: boolean;
9
+ searchable?: boolean;
10
+ search?: SearchFunction | undefined;
11
+ placeholder?: string;
12
+ onChange?: ((value: string | null) => void) | undefined;
13
+ label?: string;
14
+ virtualScroll?: boolean;
15
+ itemHeight?: number;
25
16
  };
26
- export type ListBoxProps = typeof __propDef.props;
27
- export type ListBoxEvents = typeof __propDef.events;
28
- export type ListBoxSlots = typeof __propDef.slots;
29
- export default class ListBox extends SvelteComponent<ListBoxProps, ListBoxEvents, ListBoxSlots> {
30
- }
31
- export {};
17
+ declare const ListBox: import("svelte").Component<$$ComponentProps, {}, "value">;
18
+ type ListBox = ReturnType<typeof ListBox>;
19
+ export default ListBox;