sveltacular 0.0.77 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/README.md +142 -15
  2. package/dist/forms/base-input-wrapper.svelte +99 -0
  3. package/dist/forms/base-input-wrapper.svelte.d.ts +15 -0
  4. package/dist/forms/bool-box/bool-box.svelte +30 -16
  5. package/dist/forms/bool-box/bool-box.svelte.d.ts +9 -23
  6. package/dist/forms/button/button.svelte +153 -89
  7. package/dist/forms/button/button.svelte.d.ts +25 -31
  8. package/dist/forms/check-box/check-box-group.svelte +69 -31
  9. package/dist/forms/check-box/check-box-group.svelte.d.ts +11 -29
  10. package/dist/forms/check-box/check-box.svelte +57 -33
  11. package/dist/forms/check-box/check-box.svelte.d.ts +15 -27
  12. package/dist/forms/check-box/index.d.ts +2 -0
  13. package/dist/forms/check-box/index.js +2 -0
  14. package/dist/forms/combo/new-or-existing-combo.svelte +37 -18
  15. package/dist/forms/combo/new-or-existing-combo.svelte.d.ts +15 -27
  16. package/dist/forms/combo-box/combo-box.svelte +643 -0
  17. package/dist/forms/combo-box/combo-box.svelte.d.ts +42 -0
  18. package/dist/forms/combo-box/index.d.ts +1 -0
  19. package/dist/forms/combo-box/index.js +1 -0
  20. package/dist/forms/date-box/date-box.svelte +82 -53
  21. package/dist/forms/date-box/date-box.svelte.d.ts +21 -34
  22. package/dist/forms/file-area/file-area.svelte +109 -57
  23. package/dist/forms/file-area/file-area.svelte.d.ts +12 -24
  24. package/dist/forms/file-box/file-box.svelte +38 -23
  25. package/dist/forms/file-box/file-box.svelte.d.ts +14 -27
  26. package/dist/forms/form-field.svelte +76 -13
  27. package/dist/forms/form-field.svelte.d.ts +15 -20
  28. package/dist/forms/form-footer.svelte +6 -3
  29. package/dist/forms/form-footer.svelte.d.ts +6 -28
  30. package/dist/forms/form-header.svelte +15 -4
  31. package/dist/forms/form-header.svelte.d.ts +8 -20
  32. package/dist/forms/form-label.svelte +15 -6
  33. package/dist/forms/form-label.svelte.d.ts +8 -21
  34. package/dist/forms/form-row.svelte +29 -0
  35. package/dist/forms/form-row.svelte.d.ts +7 -0
  36. package/dist/forms/form-section.svelte +15 -4
  37. package/dist/forms/form-section.svelte.d.ts +8 -20
  38. package/dist/forms/form.svelte +36 -13
  39. package/dist/forms/form.svelte.d.ts +11 -24
  40. package/dist/forms/index.d.ts +26 -0
  41. package/dist/forms/index.js +31 -0
  42. package/dist/forms/info-box/info-box.svelte +17 -10
  43. package/dist/forms/info-box/info-box.svelte.d.ts +8 -21
  44. package/dist/forms/list-box/index.d.ts +2 -0
  45. package/dist/forms/list-box/index.js +1 -0
  46. package/dist/forms/list-box/list-box.svelte +188 -111
  47. package/dist/forms/list-box/list-box.svelte.d.ts +16 -28
  48. package/dist/forms/money-box/money-box.svelte +224 -178
  49. package/dist/forms/money-box/money-box.svelte.d.ts +16 -30
  50. package/dist/forms/number-box/number-box.svelte +82 -62
  51. package/dist/forms/number-box/number-box.svelte.d.ts +17 -30
  52. package/dist/forms/phone-box/index.d.ts +1 -0
  53. package/dist/forms/phone-box/index.js +1 -0
  54. package/dist/forms/phone-box/phone-box.svelte +156 -116
  55. package/dist/forms/phone-box/phone-box.svelte.d.ts +8 -22
  56. package/dist/forms/radio-group/index.d.ts +2 -0
  57. package/dist/forms/radio-group/index.js +2 -0
  58. package/dist/forms/radio-group/radio-box.svelte +23 -8
  59. package/dist/forms/radio-group/radio-box.svelte.d.ts +10 -21
  60. package/dist/forms/radio-group/radio-group.svelte +25 -15
  61. package/dist/forms/radio-group/radio-group.svelte.d.ts +10 -23
  62. package/dist/forms/slider/slider.svelte +206 -0
  63. package/dist/forms/slider/slider.svelte.d.ts +17 -0
  64. package/dist/forms/switch-box/switch-box.svelte +35 -21
  65. package/dist/forms/switch-box/switch-box.svelte.d.ts +9 -22
  66. package/dist/forms/text-area/text-area.svelte +94 -17
  67. package/dist/forms/text-area/text-area.svelte.d.ts +15 -25
  68. package/dist/forms/text-box/text-box.svelte +244 -79
  69. package/dist/forms/text-box/text-box.svelte.d.ts +28 -38
  70. package/dist/forms/time-box/time-box.svelte +63 -0
  71. package/dist/forms/time-box/time-box.svelte.d.ts +12 -0
  72. package/dist/forms/url-box/url-box.svelte +32 -18
  73. package/dist/forms/url-box/url-box.svelte.d.ts +9 -22
  74. package/dist/forms/validation.d.ts +60 -0
  75. package/dist/forms/validation.js +123 -0
  76. package/dist/generic/address/address.svelte +22 -11
  77. package/dist/generic/address/address.svelte.d.ts +9 -21
  78. package/dist/generic/avatar/avatar.svelte +87 -0
  79. package/dist/generic/avatar/avatar.svelte.d.ts +10 -0
  80. package/dist/generic/badge/badge.svelte +82 -0
  81. package/dist/generic/badge/badge.svelte.d.ts +11 -0
  82. package/dist/generic/card/card-container.svelte +41 -12
  83. package/dist/generic/card/card-container.svelte.d.ts +8 -20
  84. package/dist/generic/card/card.svelte +47 -27
  85. package/dist/generic/card/card.svelte.d.ts +9 -21
  86. package/dist/generic/card/index.d.ts +3 -0
  87. package/dist/generic/card/index.js +2 -0
  88. package/dist/generic/chip/chip.svelte +91 -0
  89. package/dist/generic/chip/chip.svelte.d.ts +11 -0
  90. package/dist/generic/date/date-time.svelte +86 -58
  91. package/dist/generic/date/date-time.svelte.d.ts +10 -22
  92. package/dist/generic/divider/divider.svelte.d.ts +22 -21
  93. package/dist/generic/dot/dot.svelte +13 -4
  94. package/dist/generic/dot/dot.svelte.d.ts +7 -19
  95. package/dist/generic/dropdown-item/dropdown-item.svelte +24 -12
  96. package/dist/generic/dropdown-item/dropdown-item.svelte.d.ts +10 -23
  97. package/dist/generic/email/email.svelte +6 -4
  98. package/dist/generic/email/email.svelte.d.ts +5 -17
  99. package/dist/generic/empty/empty.svelte +57 -26
  100. package/dist/generic/empty/empty.svelte.d.ts +11 -23
  101. package/dist/generic/header/header.svelte +26 -10
  102. package/dist/generic/header/header.svelte.d.ts +10 -22
  103. package/dist/generic/index.d.ts +28 -0
  104. package/dist/generic/index.js +31 -0
  105. package/dist/generic/link/link.svelte +20 -7
  106. package/dist/generic/link/link.svelte.d.ts +11 -23
  107. package/dist/generic/list/index.d.ts +4 -0
  108. package/dist/generic/list/index.js +3 -0
  109. package/dist/generic/list/list-item.svelte +17 -13
  110. package/dist/generic/list/list-item.svelte.d.ts +6 -17
  111. package/dist/generic/list/list.d.ts +2 -2
  112. package/dist/generic/list/list.svelte +28 -15
  113. package/dist/generic/list/list.svelte.d.ts +9 -21
  114. package/dist/generic/menu/menu.svelte +163 -54
  115. package/dist/generic/menu/menu.svelte.d.ts +16 -26
  116. package/dist/generic/notice/notice.svelte +119 -80
  117. package/dist/generic/notice/notice.svelte.d.ts +17 -28
  118. package/dist/generic/overlay.svelte +40 -14
  119. package/dist/generic/overlay.svelte.d.ts +9 -21
  120. package/dist/generic/panel/panel.svelte +16 -6
  121. package/dist/generic/panel/panel.svelte.d.ts +8 -20
  122. package/dist/generic/phone/phone.svelte +30 -20
  123. package/dist/generic/phone/phone.svelte.d.ts +6 -18
  124. package/dist/generic/pill/pill.svelte +47 -33
  125. package/dist/generic/pill/pill.svelte.d.ts +10 -23
  126. package/dist/generic/popover/popover.svelte +226 -0
  127. package/dist/generic/popover/popover.svelte.d.ts +15 -0
  128. package/dist/generic/rating/rating.svelte +85 -0
  129. package/dist/generic/rating/rating.svelte.d.ts +11 -0
  130. package/dist/generic/scorecard/scorecard.svelte +34 -18
  131. package/dist/generic/scorecard/scorecard.svelte.d.ts +9 -21
  132. package/dist/generic/section/section.svelte +28 -9
  133. package/dist/generic/section/section.svelte.d.ts +11 -23
  134. package/dist/generic/spinner/spinner.svelte +64 -0
  135. package/dist/generic/spinner/spinner.svelte.d.ts +8 -0
  136. package/dist/generic/theme-provider/index.d.ts +1 -0
  137. package/dist/generic/theme-provider/index.js +1 -0
  138. package/dist/generic/theme-provider/theme-provider-demo.svelte +182 -0
  139. package/dist/generic/theme-provider/theme-provider-demo.svelte.d.ts +3 -0
  140. package/dist/generic/theme-provider/theme-provider.svelte +83 -0
  141. package/dist/generic/theme-provider/theme-provider.svelte.d.ts +44 -0
  142. package/dist/generic/toaster/toaster.svelte +31 -6
  143. package/dist/generic/toaster/toaster.svelte.d.ts +7 -17
  144. package/dist/generic/tooltip/tooltip.svelte +389 -0
  145. package/dist/generic/tooltip/tooltip.svelte.d.ts +21 -0
  146. package/dist/helpers/ago.d.ts +6 -0
  147. package/dist/helpers/ago.js +6 -0
  148. package/dist/helpers/animation-actions.d.ts +124 -0
  149. package/dist/helpers/animation-actions.js +299 -0
  150. package/dist/helpers/animations.d.ts +198 -0
  151. package/dist/helpers/animations.js +280 -0
  152. package/dist/helpers/announcer.d.ts +118 -0
  153. package/dist/helpers/announcer.js +250 -0
  154. package/dist/helpers/copy-to-clipboard.svelte.d.ts +5 -0
  155. package/dist/helpers/copy-to-clipboard.svelte.js +28 -0
  156. package/dist/helpers/debounce.d.ts +7 -0
  157. package/dist/helpers/debounce.js +7 -0
  158. package/dist/helpers/focus.d.ts +123 -0
  159. package/dist/helpers/focus.js +335 -0
  160. package/dist/helpers/fuzzy-search.d.ts +41 -0
  161. package/dist/helpers/fuzzy-search.js +114 -0
  162. package/dist/helpers/index.d.ts +24 -0
  163. package/dist/helpers/index.js +24 -0
  164. package/dist/helpers/navigate-to.d.ts +4 -0
  165. package/dist/helpers/navigate-to.js +4 -0
  166. package/dist/helpers/positioning.d.ts +97 -0
  167. package/dist/helpers/positioning.js +230 -0
  168. package/dist/helpers/round-to-decimals.d.ts +7 -5
  169. package/dist/helpers/round-to-decimals.js +7 -5
  170. package/dist/helpers/spring.svelte.d.ts +97 -0
  171. package/dist/helpers/spring.svelte.js +216 -0
  172. package/dist/helpers/subscribable.d.ts +1 -1
  173. package/dist/helpers/theme.svelte.d.ts +63 -0
  174. package/dist/helpers/theme.svelte.js +123 -0
  175. package/dist/helpers/unique-id.d.ts +4 -0
  176. package/dist/helpers/unique-id.js +4 -0
  177. package/dist/helpers/use-position.svelte.d.ts +96 -0
  178. package/dist/helpers/use-position.svelte.js +189 -0
  179. package/dist/helpers/use-virtual-list.svelte.d.ts +121 -0
  180. package/dist/helpers/use-virtual-list.svelte.js +239 -0
  181. package/dist/icons/angle-right-icon.svelte +2 -1
  182. package/dist/icons/angle-right-icon.svelte.d.ts +16 -14
  183. package/dist/icons/angle-up-icon.svelte.d.ts +22 -21
  184. package/dist/icons/check-icon.svelte.d.ts +22 -21
  185. package/dist/icons/copy-icon.svelte +46 -0
  186. package/dist/icons/copy-icon.svelte.d.ts +6 -0
  187. package/dist/icons/envelope-icon.svelte.d.ts +22 -21
  188. package/dist/icons/folder-open-icon.svelte.d.ts +22 -21
  189. package/dist/icons/hamburger-icon.svelte.d.ts +22 -21
  190. package/dist/icons/home-icon.svelte +2 -1
  191. package/dist/icons/home-icon.svelte.d.ts +16 -14
  192. package/dist/icons/index.d.ts +13 -0
  193. package/dist/icons/index.js +13 -0
  194. package/dist/icons/link-icon.svelte.d.ts +22 -21
  195. package/dist/icons/mobile-phone-icon.svelte.d.ts +22 -21
  196. package/dist/icons/phone-icon.svelte.d.ts +22 -21
  197. package/dist/icons/svg-icon.svelte +46 -10
  198. package/dist/icons/svg-icon.svelte.d.ts +13 -25
  199. package/dist/icons/upload-icon.svelte.d.ts +22 -21
  200. package/dist/images/icon.svelte +9 -3
  201. package/dist/images/icon.svelte.d.ts +6 -18
  202. package/dist/images/image.svelte +28 -8
  203. package/dist/images/image.svelte.d.ts +14 -28
  204. package/dist/images/index.d.ts +2 -0
  205. package/dist/images/index.js +2 -0
  206. package/dist/index.d.ts +13 -122
  207. package/dist/index.js +27 -135
  208. package/dist/layout/flex-col.svelte +65 -16
  209. package/dist/layout/flex-col.svelte.d.ts +12 -24
  210. package/dist/layout/flex-item.svelte +13 -3
  211. package/dist/layout/flex-item.svelte.d.ts +8 -20
  212. package/dist/layout/flex-row.svelte +70 -15
  213. package/dist/layout/flex-row.svelte.d.ts +14 -26
  214. package/dist/layout/grid.svelte +7 -1
  215. package/dist/layout/grid.svelte.d.ts +6 -28
  216. package/dist/layout/index.d.ts +4 -0
  217. package/dist/layout/index.js +4 -0
  218. package/dist/modals/alert.svelte +42 -28
  219. package/dist/modals/alert.svelte.d.ts +13 -26
  220. package/dist/modals/confirm.svelte +54 -37
  221. package/dist/modals/confirm.svelte.d.ts +16 -29
  222. package/dist/modals/dialog-body.svelte +10 -4
  223. package/dist/modals/dialog-body.svelte.d.ts +6 -28
  224. package/dist/modals/dialog-close-button.svelte +15 -9
  225. package/dist/modals/dialog-close-button.svelte.d.ts +6 -19
  226. package/dist/modals/dialog-footer.svelte +6 -3
  227. package/dist/modals/dialog-footer.svelte.d.ts +6 -28
  228. package/dist/modals/dialog-header.svelte +13 -1
  229. package/dist/modals/dialog-header.svelte.d.ts +7 -28
  230. package/dist/modals/dialog-window.svelte +42 -14
  231. package/dist/modals/dialog-window.svelte.d.ts +9 -19
  232. package/dist/modals/index.d.ts +9 -0
  233. package/dist/modals/index.js +9 -0
  234. package/dist/modals/modal.svelte +88 -23
  235. package/dist/modals/modal.svelte.d.ts +14 -24
  236. package/dist/modals/prompt.svelte +71 -49
  237. package/dist/modals/prompt.svelte.d.ts +19 -32
  238. package/dist/navigation/accordion/accordion.svelte +104 -0
  239. package/dist/navigation/accordion/accordion.svelte.d.ts +9 -0
  240. package/dist/navigation/app-bar/app-bar.svelte +26 -12
  241. package/dist/navigation/app-bar/app-bar.svelte.d.ts +10 -22
  242. package/dist/navigation/app-bar/app-branding.svelte +10 -5
  243. package/dist/navigation/app-bar/app-branding.svelte.d.ts +6 -17
  244. package/dist/navigation/app-bar/app-logo.svelte +20 -5
  245. package/dist/navigation/app-bar/app-logo.svelte.d.ts +9 -21
  246. package/dist/navigation/app-bar/app-nav-item.svelte +26 -13
  247. package/dist/navigation/app-bar/app-nav-item.svelte.d.ts +9 -22
  248. package/dist/navigation/app-bar/app-nav.svelte +39 -12
  249. package/dist/navigation/app-bar/app-nav.svelte.d.ts +8 -20
  250. package/dist/navigation/app-bar/index.d.ts +5 -0
  251. package/dist/navigation/app-bar/index.js +5 -0
  252. package/dist/navigation/breadcrumbs/breadcrumbs.svelte +54 -27
  253. package/dist/navigation/breadcrumbs/breadcrumbs.svelte.d.ts +12 -23
  254. package/dist/navigation/command-palette/command-palette.svelte +758 -0
  255. package/dist/navigation/command-palette/command-palette.svelte.d.ts +65 -0
  256. package/dist/navigation/command-palette/index.d.ts +2 -0
  257. package/dist/navigation/command-palette/index.js +1 -0
  258. package/dist/navigation/context-menu/README.md +147 -0
  259. package/dist/navigation/context-menu/context-menu-divider.svelte +22 -0
  260. package/dist/navigation/context-menu/context-menu-divider.svelte.d.ts +18 -0
  261. package/dist/navigation/context-menu/context-menu-item.svelte +268 -0
  262. package/dist/navigation/context-menu/context-menu-item.svelte.d.ts +19 -0
  263. package/dist/navigation/context-menu/context-menu.svelte +226 -0
  264. package/dist/navigation/context-menu/context-menu.svelte.d.ts +38 -0
  265. package/dist/navigation/context-menu/index.d.ts +3 -0
  266. package/dist/navigation/context-menu/index.js +3 -0
  267. package/dist/navigation/drawer/drawer.svelte +137 -0
  268. package/dist/navigation/drawer/drawer.svelte.d.ts +11 -0
  269. package/dist/navigation/dropdown-button/dropdown-button.svelte +58 -19
  270. package/dist/navigation/dropdown-button/dropdown-button.svelte.d.ts +10 -22
  271. package/dist/navigation/index.d.ts +11 -0
  272. package/dist/navigation/index.js +14 -0
  273. package/dist/navigation/pagination/pagination.svelte +55 -37
  274. package/dist/navigation/pagination/pagination.svelte.d.ts +10 -23
  275. package/dist/navigation/side-bar/side-bar.svelte +18 -9
  276. package/dist/navigation/side-bar/side-bar.svelte.d.ts +7 -19
  277. package/dist/navigation/tabs/index.d.ts +4 -0
  278. package/dist/navigation/tabs/index.js +3 -0
  279. package/dist/navigation/tabs/tab-context.d.ts +12 -6
  280. package/dist/navigation/tabs/tab-group.svelte +268 -52
  281. package/dist/navigation/tabs/tab-group.svelte.d.ts +9 -22
  282. package/dist/navigation/tabs/tab.svelte +64 -33
  283. package/dist/navigation/tabs/tab.svelte.d.ts +11 -24
  284. package/dist/navigation/wizard/index.d.ts +3 -0
  285. package/dist/navigation/wizard/index.js +2 -0
  286. package/dist/navigation/wizard/wizard-context.d.ts +13 -8
  287. package/dist/navigation/wizard/wizard-step.svelte +38 -13
  288. package/dist/navigation/wizard/wizard-step.svelte.d.ts +8 -20
  289. package/dist/navigation/wizard/wizard.svelte +123 -81
  290. package/dist/navigation/wizard/wizard.svelte.d.ts +15 -28
  291. package/dist/placeholders/index.d.ts +6 -0
  292. package/dist/placeholders/index.js +6 -0
  293. package/dist/placeholders/loading.svelte +39 -23
  294. package/dist/placeholders/loading.svelte.d.ts +10 -19
  295. package/dist/placeholders/progress.svelte +7 -6
  296. package/dist/placeholders/progress.svelte.d.ts +5 -17
  297. package/dist/placeholders/skeleton-input.svelte +66 -38
  298. package/dist/placeholders/skeleton-input.svelte.d.ts +5 -17
  299. package/dist/placeholders/skeleton-paragraph.svelte +25 -0
  300. package/dist/placeholders/skeleton-paragraph.svelte.d.ts +8 -0
  301. package/dist/placeholders/skeleton-table.svelte +75 -0
  302. package/dist/placeholders/skeleton-table.svelte.d.ts +8 -0
  303. package/dist/placeholders/skeleton-text.svelte +46 -15
  304. package/dist/placeholders/skeleton-text.svelte.d.ts +7 -19
  305. package/dist/tables/cell-renderers.d.ts +24 -0
  306. package/dist/tables/cell-renderers.js +228 -0
  307. package/dist/tables/data-grid.svelte +332 -118
  308. package/dist/tables/data-grid.svelte.d.ts +34 -35
  309. package/dist/tables/index.d.ts +10 -0
  310. package/dist/tables/index.js +12 -0
  311. package/dist/tables/table-caption.svelte +13 -4
  312. package/dist/tables/table-caption.svelte.d.ts +8 -20
  313. package/dist/tables/table-cell.svelte +45 -14
  314. package/dist/tables/table-cell.svelte.d.ts +10 -21
  315. package/dist/tables/table-context.svelte.d.ts +32 -0
  316. package/dist/tables/table-context.svelte.js +160 -0
  317. package/dist/tables/table-header-cell.svelte +158 -18
  318. package/dist/tables/table-header-cell.svelte.d.ts +15 -21
  319. package/dist/tables/table-header.svelte +31 -6
  320. package/dist/tables/table-header.svelte.d.ts +7 -28
  321. package/dist/tables/table-row.svelte +87 -7
  322. package/dist/tables/table-row.svelte.d.ts +10 -28
  323. package/dist/tables/table.svelte +61 -2
  324. package/dist/tables/table.svelte.d.ts +13 -28
  325. package/dist/test-utils/accessibility-helpers.d.ts +80 -0
  326. package/dist/test-utils/accessibility-helpers.js +220 -0
  327. package/dist/test-utils/index.d.ts +8 -0
  328. package/dist/test-utils/index.js +8 -0
  329. package/dist/test-utils/mock-helpers.d.ts +68 -0
  330. package/dist/test-utils/mock-helpers.js +165 -0
  331. package/dist/test-utils/render-helpers.d.ts +55 -0
  332. package/dist/test-utils/render-helpers.js +114 -0
  333. package/dist/test-utils/setup.d.ts +5 -0
  334. package/dist/test-utils/setup.js +91 -0
  335. package/dist/test-utils/test-data.d.ts +102 -0
  336. package/dist/test-utils/test-data.js +99 -0
  337. package/dist/timeline/index.d.ts +2 -0
  338. package/dist/timeline/index.js +2 -0
  339. package/dist/timeline/timeline-item.svelte +26 -9
  340. package/dist/timeline/timeline-item.svelte.d.ts +13 -25
  341. package/dist/timeline/timeline.svelte +12 -6
  342. package/dist/timeline/timeline.svelte.d.ts +6 -28
  343. package/dist/types/data.d.ts +61 -0
  344. package/dist/types/date.d.ts +1 -1
  345. package/dist/types/form.d.ts +20 -2
  346. package/dist/types/index.d.ts +5 -0
  347. package/dist/types/index.js +5 -0
  348. package/dist/types/size.d.ts +22 -0
  349. package/dist/types/size.js +22 -0
  350. package/dist/typography/code-block.svelte +89 -10
  351. package/dist/typography/code-block.svelte.d.ts +7 -19
  352. package/dist/typography/code.svelte +89 -0
  353. package/dist/typography/code.svelte.d.ts +7 -0
  354. package/dist/typography/headline.svelte +29 -9
  355. package/dist/typography/headline.svelte.d.ts +8 -20
  356. package/dist/typography/index.d.ts +6 -0
  357. package/dist/typography/index.js +6 -0
  358. package/dist/typography/paragraph.svelte +18 -10
  359. package/dist/typography/paragraph.svelte.d.ts +6 -28
  360. package/dist/typography/subtitle.svelte +18 -4
  361. package/dist/typography/subtitle.svelte.d.ts +8 -20
  362. package/dist/typography/text.svelte +20 -5
  363. package/dist/typography/text.svelte.d.ts +9 -21
  364. package/package.json +31 -21
  365. package/dist/navigation/accordian/accordian.svelte +0 -62
  366. package/dist/navigation/accordian/accordian.svelte.d.ts +0 -21
  367. package/dist/tables/table-body.svelte +0 -3
  368. package/dist/tables/table-body.svelte.d.ts +0 -29
  369. package/dist/tables/table-footer-cell.svelte +0 -22
  370. package/dist/tables/table-footer-cell.svelte.d.ts +0 -20
  371. package/dist/tables/table-footer-row.svelte +0 -3
  372. package/dist/tables/table-footer-row.svelte.d.ts +0 -29
  373. package/dist/tables/table-footer.svelte +0 -13
  374. package/dist/tables/table-footer.svelte.d.ts +0 -29
  375. package/dist/tables/table-header-row.svelte +0 -4
  376. package/dist/tables/table-header-row.svelte.d.ts +0 -29
@@ -0,0 +1,65 @@
1
+ import type { Snippet } from 'svelte';
2
+ /**
3
+ * Command item interface
4
+ */
5
+ export interface Command {
6
+ /** Unique identifier for the command */
7
+ id: string;
8
+ /** Display label for the command */
9
+ label: string;
10
+ /** Optional description/subtitle */
11
+ description?: string;
12
+ /** Optional icon (snippet or string class name) */
13
+ icon?: Snippet | string;
14
+ /** Group this command belongs to */
15
+ group?: string;
16
+ /** Keywords for better search matching */
17
+ keywords?: string[];
18
+ /** Custom data to pass to onSelect handler */
19
+ data?: any;
20
+ /** Whether this command is disabled */
21
+ disabled?: boolean;
22
+ /** Action to perform when selected */
23
+ action?: () => void | Promise<void>;
24
+ }
25
+ export interface CommandGroup {
26
+ /** Group identifier */
27
+ id: string;
28
+ /** Group display name */
29
+ label: string;
30
+ /** Group priority for ordering */
31
+ priority?: number;
32
+ }
33
+ interface Props {
34
+ /** List of available commands */
35
+ commands?: Command[];
36
+ /** Command groups configuration */
37
+ groups?: CommandGroup[];
38
+ /** Whether the palette is open */
39
+ open?: boolean;
40
+ /** Placeholder text for search input */
41
+ placeholder?: string;
42
+ /** Show recent commands at the top */
43
+ showRecent?: boolean;
44
+ /** Maximum recent commands to show */
45
+ maxRecent?: number;
46
+ /** Keyboard shortcut to open (default: 'k' for Cmd/Ctrl+K) */
47
+ shortcut?: string;
48
+ /** Modifier key for shortcut (default: 'meta' for Cmd/Ctrl) */
49
+ shortcutModifier?: 'meta' | 'ctrl' | 'alt' | 'shift';
50
+ /** Enable keyboard shortcut */
51
+ enableShortcut?: boolean;
52
+ /** Empty state message */
53
+ emptyMessage?: string;
54
+ /** Blur background when open */
55
+ blur?: boolean;
56
+ /** Callback when a command is selected */
57
+ onSelect?: (command: Command) => void;
58
+ /** Callback when palette opens */
59
+ onOpen?: () => void;
60
+ /** Callback when palette closes */
61
+ onClose?: () => void;
62
+ }
63
+ declare const CommandPalette: import("svelte").Component<Props, {}, "open">;
64
+ type CommandPalette = ReturnType<typeof CommandPalette>;
65
+ export default CommandPalette;
@@ -0,0 +1,2 @@
1
+ export { default as CommandPalette } from './command-palette.svelte';
2
+ export type { Command, CommandGroup } from './command-palette.svelte';
@@ -0,0 +1 @@
1
+ export { default as CommandPalette } from './command-palette.svelte';
@@ -0,0 +1,147 @@
1
+ # Context Menu Component
2
+
3
+ A fully-featured right-click menu component with keyboard navigation and nested submenus.
4
+
5
+ ## Features
6
+
7
+ - ✅ Right-click trigger with contextmenu event
8
+ - ✅ Full keyboard navigation (↑↓←→, Home, End, Enter, Space, Escape)
9
+ - ✅ Nested submenus with multi-level support
10
+ - ✅ Auto-positioning with viewport collision detection
11
+ - ✅ Fully accessible (ARIA roles, keyboard support)
12
+ - ✅ Visual states: hover, focus, disabled, danger
13
+ - ✅ Icon support
14
+ - ✅ Click outside to close
15
+
16
+ ## Basic Usage
17
+
18
+ ```svelte
19
+ <script>
20
+ import { ContextMenu, ContextMenuItem, ContextMenuDivider } from 'sveltacular';
21
+
22
+ let menu;
23
+
24
+ function showMenu(event) {
25
+ event.preventDefault();
26
+ menu.show(event);
27
+ }
28
+ </script>
29
+
30
+ <div oncontextmenu={showMenu}>
31
+ Right-click me
32
+ </div>
33
+
34
+ <ContextMenu bind:this={menu}>
35
+ <ContextMenuItem onClick={() => console.log('New')}>
36
+ New File
37
+ </ContextMenuItem>
38
+ <ContextMenuItem onClick={() => console.log('Open')}>
39
+ Open
40
+ </ContextMenuItem>
41
+ <ContextMenuDivider />
42
+ <ContextMenuItem onClick={() => console.log('Delete')} danger>
43
+ Delete
44
+ </ContextMenuItem>
45
+ </ContextMenu>
46
+ ```
47
+
48
+ ## With Icons
49
+
50
+ ```svelte
51
+ <ContextMenuItem onClick={() => console.log('Copy')}>
52
+ {#snippet icon()}
53
+ <CopyIcon />
54
+ {/snippet}
55
+ Copy
56
+ </ContextMenuItem>
57
+ ```
58
+
59
+ ## Nested Submenus
60
+
61
+ ```svelte
62
+ <ContextMenuItem>
63
+ {#snippet submenu()}
64
+ <ContextMenuItem onClick={() => console.log('Option 1')}>
65
+ Option 1
66
+ </ContextMenuItem>
67
+ <ContextMenuItem onClick={() => console.log('Option 2')}>
68
+ Option 2
69
+ </ContextMenuItem>
70
+ {/snippet}
71
+ More Options
72
+ </ContextMenuItem>
73
+ ```
74
+
75
+ ## Props
76
+
77
+ ### ContextMenu
78
+
79
+ | Prop | Type | Default | Description |
80
+ |------|------|---------|-------------|
81
+ | `onOpen` | `() => void` | `undefined` | Callback when menu opens |
82
+ | `onClose` | `() => void` | `undefined` | Callback when menu closes |
83
+ | `closeOnClick` | `boolean` | `true` | Auto-close menu when item is clicked |
84
+
85
+ ### ContextMenuItem
86
+
87
+ | Prop | Type | Default | Description |
88
+ |------|------|---------|-------------|
89
+ | `onClick` | `() => void` | `undefined` | Callback when item is clicked |
90
+ | `disabled` | `boolean` | `false` | Disable the menu item |
91
+ | `danger` | `boolean` | `false` | Style as destructive action (red) |
92
+ | `icon` | `Snippet` | `undefined` | Optional icon snippet |
93
+ | `submenu` | `Snippet` | `undefined` | Optional submenu content |
94
+
95
+ ## Methods
96
+
97
+ ### show(event)
98
+
99
+ Show the context menu at the event position.
100
+
101
+ ```svelte
102
+ menu.show(event);
103
+ ```
104
+
105
+ ### hide()
106
+
107
+ Hide the context menu.
108
+
109
+ ```svelte
110
+ menu.hide();
111
+ ```
112
+
113
+ ## Keyboard Navigation
114
+
115
+ - **↑ / ↓** - Navigate between items
116
+ - **→** - Open submenu
117
+ - **←** - Close submenu
118
+ - **Enter / Space** - Activate item
119
+ - **Escape** - Close menu
120
+ - **Home** - Jump to first item
121
+ - **End** - Jump to last item
122
+
123
+ ## Accessibility
124
+
125
+ - Uses ARIA `menu` and `menuitem` roles
126
+ - Full keyboard navigation support
127
+ - Focus management for submenus
128
+ - Screen reader compatible
129
+ - WCAG 2.1 AA compliant
130
+
131
+ ## Testing
132
+
133
+ See `CONTEXT_MENU_TESTING.md` for comprehensive testing guide with 50+ test checkpoints.
134
+
135
+ ## Note on Storybook
136
+
137
+ Due to limitations in the Storybook Svelte CSF parser with advanced Svelte 5 syntax, this component does not have interactive Storybook stories. However, the component is fully functional and can be tested in your application or by following the testing guide.
138
+
139
+ ---
140
+
141
+ **Component Version:** 1.0.0
142
+ **Last Updated:** January 3, 2026
143
+
144
+
145
+
146
+
147
+
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ /**
3
+ * ContextMenuDivider Component
4
+ *
5
+ * Visual separator for context menu items.
6
+ *
7
+ * @component
8
+ */
9
+ </script>
10
+
11
+ <div class="context-menu-divider" role="separator" aria-orientation="horizontal"></div>
12
+
13
+ <style>.context-menu-divider {
14
+ height: 1px;
15
+ margin: 0.25rem 0;
16
+ background-color: var(--form-input-border, #e5e7eb);
17
+ }</style>
18
+
19
+
20
+
21
+
22
+
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const ContextMenuDivider: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type ContextMenuDivider = InstanceType<typeof ContextMenuDivider>;
18
+ export default ContextMenuDivider;
@@ -0,0 +1,268 @@
1
+ <script lang="ts">
2
+ /**
3
+ * ContextMenuItem Component
4
+ *
5
+ * Individual item in a context menu. Can contain a submenu.
6
+ *
7
+ * @component
8
+ */
9
+ import type { Snippet } from 'svelte';
10
+ import { getContext } from 'svelte';
11
+ import AngleRightIcon from '../../icons/angle-right-icon.svelte';
12
+
13
+ let {
14
+ onClick = undefined,
15
+ disabled = false,
16
+ danger = false,
17
+ icon = undefined,
18
+ submenu = undefined,
19
+ children
20
+ }: {
21
+ onClick?: (() => void) | undefined;
22
+ disabled?: boolean;
23
+ danger?: boolean;
24
+ icon?: Snippet | undefined;
25
+ submenu?: Snippet | undefined;
26
+ children: Snippet;
27
+ } = $props();
28
+
29
+ let showSubmenu = $state(false);
30
+ let itemRef: HTMLDivElement | null = null;
31
+ let submenuRef = $state<HTMLDivElement | null>(null);
32
+ let submenuTimeout: number | null = null;
33
+
34
+ /**
35
+ * Handle item click
36
+ */
37
+ function handleClick(event: Event) {
38
+ if (disabled) {
39
+ event.preventDefault();
40
+ return;
41
+ }
42
+
43
+ // If there's a submenu, toggle it instead of closing
44
+ if (submenu) {
45
+ event.stopPropagation();
46
+ showSubmenu = !showSubmenu;
47
+ return;
48
+ }
49
+
50
+ onClick?.();
51
+
52
+ // Get the context menu and tell it to close
53
+ const contextMenu = getContext('contextMenu') as any;
54
+ if (contextMenu?.handleItemClick) {
55
+ contextMenu.handleItemClick();
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Handle keyboard interaction
61
+ */
62
+ function handleKeyDown(event: KeyboardEvent) {
63
+ if (disabled) return;
64
+
65
+ switch (event.key) {
66
+ case 'Enter':
67
+ case ' ':
68
+ event.preventDefault();
69
+ handleClick(event);
70
+ break;
71
+
72
+ case 'ArrowRight':
73
+ if (submenu) {
74
+ event.preventDefault();
75
+ event.stopPropagation();
76
+ showSubmenu = true;
77
+ // Focus first item in submenu
78
+ setTimeout(() => {
79
+ const firstItem = submenuRef?.querySelector('[role="menuitem"]') as HTMLElement;
80
+ firstItem?.focus();
81
+ }, 0);
82
+ }
83
+ break;
84
+
85
+ case 'ArrowLeft':
86
+ if (showSubmenu) {
87
+ event.preventDefault();
88
+ event.stopPropagation();
89
+ showSubmenu = false;
90
+ itemRef?.focus();
91
+ }
92
+ break;
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Show submenu on hover
98
+ */
99
+ function handleMouseEnter() {
100
+ if (submenu && !disabled) {
101
+ if (submenuTimeout) {
102
+ clearTimeout(submenuTimeout);
103
+ }
104
+ submenuTimeout = window.setTimeout(() => {
105
+ showSubmenu = true;
106
+ }, 200);
107
+ }
108
+ }
109
+
110
+ /**
111
+ * Hide submenu on leave
112
+ */
113
+ function handleMouseLeave() {
114
+ if (submenuTimeout) {
115
+ clearTimeout(submenuTimeout);
116
+ submenuTimeout = null;
117
+ }
118
+ // Don't hide if mouse is over submenu
119
+ if (submenu) {
120
+ setTimeout(() => {
121
+ const isOverSubmenu = submenuRef?.matches(':hover');
122
+ if (!isOverSubmenu) {
123
+ showSubmenu = false;
124
+ }
125
+ }, 100);
126
+ }
127
+ }
128
+
129
+ /**
130
+ * Position submenu
131
+ */
132
+ function getSubmenuPosition() {
133
+ if (!itemRef) return 'left: 100%; top: 0;';
134
+
135
+ const rect = itemRef.getBoundingClientRect();
136
+ const viewportWidth = window.innerWidth;
137
+
138
+ // Check if submenu would go off right edge
139
+ const wouldOverflow = rect.right + 200 > viewportWidth; // Assume 200px submenu width
140
+
141
+ if (wouldOverflow) {
142
+ return 'right: 100%; top: 0;';
143
+ }
144
+
145
+ return 'left: 100%; top: 0;';
146
+ }
147
+ </script>
148
+
149
+ <div
150
+ bind:this={itemRef}
151
+ class="context-menu-item"
152
+ class:disabled
153
+ class:danger
154
+ class:has-submenu={!!submenu}
155
+ role="menuitem"
156
+ tabindex={disabled ? -1 : 0}
157
+ aria-disabled={disabled}
158
+ onclick={handleClick}
159
+ onkeydown={handleKeyDown}
160
+ onmouseenter={handleMouseEnter}
161
+ onmouseleave={handleMouseLeave}
162
+ >
163
+ {#if icon}
164
+ <span class="icon" aria-hidden="true">
165
+ {@render icon()}
166
+ </span>
167
+ {/if}
168
+
169
+ <span class="label">
170
+ {@render children()}
171
+ </span>
172
+
173
+ {#if submenu}
174
+ <span class="arrow" aria-hidden="true">
175
+ <AngleRightIcon />
176
+ </span>
177
+
178
+ {#if showSubmenu}
179
+ <div
180
+ bind:this={submenuRef}
181
+ class="submenu"
182
+ role="menu"
183
+ aria-orientation="vertical"
184
+ style={getSubmenuPosition()}
185
+ >
186
+ {@render submenu()}
187
+ </div>
188
+ {/if}
189
+ {/if}
190
+ </div>
191
+
192
+ <style>.context-menu-item {
193
+ position: relative;
194
+ display: flex;
195
+ align-items: center;
196
+ gap: 0.75rem;
197
+ padding: 0.5rem 0.75rem;
198
+ cursor: pointer;
199
+ color: var(--form-input-fg, #000);
200
+ font-size: 0.875rem;
201
+ transition: background-color 0.15s ease;
202
+ outline: none;
203
+ }
204
+ .context-menu-item:hover:not(.disabled) {
205
+ background-color: var(--form-input-selected-bg, #0066cc);
206
+ color: var(--form-input-selected-fg, white);
207
+ }
208
+ .context-menu-item:focus-visible {
209
+ background-color: var(--form-input-selected-bg, #0066cc);
210
+ color: var(--form-input-selected-fg, white);
211
+ outline: 2px solid var(--focus-ring-color, #0066cc);
212
+ outline-offset: -2px;
213
+ }
214
+ .context-menu-item.disabled {
215
+ opacity: 0.5;
216
+ cursor: not-allowed;
217
+ }
218
+ .context-menu-item.danger {
219
+ color: var(--danger-color, #dc2626);
220
+ }
221
+ .context-menu-item.danger:hover:not(.disabled), .context-menu-item.danger:focus-visible {
222
+ background-color: var(--danger-color, #dc2626);
223
+ color: white;
224
+ }
225
+ .context-menu-item .icon {
226
+ display: flex;
227
+ align-items: center;
228
+ justify-content: center;
229
+ width: 1rem;
230
+ height: 1rem;
231
+ flex-shrink: 0;
232
+ }
233
+ .context-menu-item .label {
234
+ flex: 1;
235
+ white-space: nowrap;
236
+ }
237
+ .context-menu-item .arrow {
238
+ display: flex;
239
+ align-items: center;
240
+ justify-content: center;
241
+ width: 1rem;
242
+ height: 1rem;
243
+ flex-shrink: 0;
244
+ margin-left: auto;
245
+ }
246
+ .context-menu-item .submenu {
247
+ position: absolute;
248
+ z-index: 10001;
249
+ min-width: 12rem;
250
+ background: var(--form-input-bg, white);
251
+ border: 1px solid var(--form-input-border, #ccc);
252
+ border-radius: var(--border-radius-md, 0.375rem);
253
+ box-shadow: var(--shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.1));
254
+ padding: 0.25rem 0;
255
+ animation: fadeIn 0.15s ease;
256
+ }
257
+
258
+ @keyframes fadeIn {
259
+ from {
260
+ opacity: 0;
261
+ transform: scale(0.95);
262
+ }
263
+ to {
264
+ opacity: 1;
265
+ transform: scale(1);
266
+ }
267
+ }</style>
268
+
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ContextMenuItem Component
3
+ *
4
+ * Individual item in a context menu. Can contain a submenu.
5
+ *
6
+ * @component
7
+ */
8
+ import type { Snippet } from 'svelte';
9
+ type $$ComponentProps = {
10
+ onClick?: (() => void) | undefined;
11
+ disabled?: boolean;
12
+ danger?: boolean;
13
+ icon?: Snippet | undefined;
14
+ submenu?: Snippet | undefined;
15
+ children: Snippet;
16
+ };
17
+ declare const ContextMenuItem: import("svelte").Component<$$ComponentProps, {}, "">;
18
+ type ContextMenuItem = ReturnType<typeof ContextMenuItem>;
19
+ export default ContextMenuItem;