@lavalogic/scoria 0.36.0 → 0.37.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 (550) hide show
  1. package/dist/Components/AccordionGroup.svelte +6 -2
  2. package/dist/Components/AccordionGroupButton.svelte +78 -78
  3. package/dist/Components/AccordionGroupButtonProps.d.ts +27 -8
  4. package/dist/Components/AccordionGroupProps.d.ts +10 -2
  5. package/dist/Components/Action.svelte +31 -33
  6. package/dist/Components/ActionProps.d.ts +23 -3
  7. package/dist/Components/AlertModal.svelte +90 -39
  8. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +1126 -0
  9. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte.d.ts +4 -0
  10. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.d.ts +92 -0
  11. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.js +12 -0
  12. package/dist/Components/Base/BaseModal.svelte +172 -0
  13. package/dist/Components/Base/BaseModal.svelte.d.ts +4 -0
  14. package/dist/Components/Base/BaseModalProps.d.ts +73 -0
  15. package/dist/Components/Base/BaseModalProps.js +1 -0
  16. package/dist/Components/Base/ContextWrapper.svelte +37 -15
  17. package/dist/Components/Base/ContextWrapper.svelte.d.ts +24 -5
  18. package/dist/Components/Base/ContextWrapperProps.d.ts +22 -0
  19. package/dist/Components/Base/Pagination.svelte +70 -62
  20. package/dist/Components/Base/Pagination.svelte.d.ts +12 -2
  21. package/dist/Components/Base/PaginationProps.d.ts +60 -3
  22. package/dist/Components/Base/Snippets.svelte +7 -0
  23. package/dist/Components/Base/Snippets.svelte.d.ts +5 -1
  24. package/dist/Components/BigRadioSet.svelte +18 -9
  25. package/dist/Components/BigRadioSetProps.d.ts +17 -1
  26. package/dist/Components/Bubble.svelte +67 -34
  27. package/dist/Components/Bubble.svelte.d.ts +23 -2
  28. package/dist/Components/BubbleProps.d.ts +55 -4
  29. package/dist/Components/Button.svelte +50 -38
  30. package/dist/Components/ButtonProps.d.ts +66 -1
  31. package/dist/Components/Checkbox.svelte +57 -29
  32. package/dist/Components/Checkbox.svelte.d.ts +1 -12
  33. package/dist/Components/CheckboxProps.d.ts +27 -0
  34. package/dist/Components/CheckboxProps.js +1 -0
  35. package/dist/Components/CollapsibleCard.svelte +53 -22
  36. package/dist/Components/CollapsibleCardProps.d.ts +22 -1
  37. package/dist/Components/Contexts/ContextMenu.svelte +53 -32
  38. package/dist/Components/Contexts/ContextMenu.svelte.d.ts +26 -0
  39. package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -7
  40. package/dist/Components/Contexts/ContextMenuDivider.svelte.d.ts +9 -0
  41. package/dist/Components/Contexts/ContextMenuOption.svelte +27 -18
  42. package/dist/Components/Contexts/ContextMenuOption.svelte.d.ts +12 -1
  43. package/dist/Components/Contexts/ContextMenuOptionProps.d.ts +34 -2
  44. package/dist/Components/Contexts/Toast.svelte +28 -4
  45. package/dist/Components/Contexts/Toast.svelte.d.ts +14 -0
  46. package/dist/Components/Contexts/ToastContainer.svelte +30 -11
  47. package/dist/Components/Contexts/ToastContainer.svelte.d.ts +14 -0
  48. package/dist/Components/Contexts/ToastProps.d.ts +14 -1
  49. package/dist/Components/Contexts/Tooltip.svelte +21 -10
  50. package/dist/Components/Contexts/Tooltip.svelte.d.ts +10 -0
  51. package/dist/Components/DataMatrixIcon.svelte +82 -11
  52. package/dist/Components/DataMatrixIconProps.d.ts +73 -1
  53. package/dist/Components/DateInput.svelte +64 -29
  54. package/dist/Components/DateInput.svelte.d.ts +1 -1
  55. package/dist/Components/DateOnlyInputProps.d.ts +31 -5
  56. package/dist/Components/DatePicker.svelte +96 -108
  57. package/dist/Components/DatePickerProps.d.ts +18 -1
  58. package/dist/Components/DateTimeInputProps.d.ts +30 -5
  59. package/dist/Components/DesktopModal.svelte +14 -43
  60. package/dist/Components/DesktopModalProps.d.ts +5 -4
  61. package/dist/Components/Dial.svelte +103 -41
  62. package/dist/Components/DialProps.d.ts +74 -2
  63. package/dist/Components/DimensionInput.svelte +50 -64
  64. package/dist/Components/DimensionInput.svelte.d.ts +1 -1
  65. package/dist/Components/DimensionInputProps.d.ts +39 -4
  66. package/dist/Components/DragMenu/DragMenuHolder.svelte +41 -29
  67. package/dist/Components/DragMenu/DragMenuHolderProps.d.ts +30 -1
  68. package/dist/Components/DragMenu/DraggableCard.svelte +44 -8
  69. package/dist/Components/DragMenu/DraggableCardProps.d.ts +27 -1
  70. package/dist/Components/FileCard.svelte +6 -2
  71. package/dist/Components/FileCardProps.d.ts +17 -1
  72. package/dist/Components/FileUpload.svelte +82 -42
  73. package/dist/Components/FileUploadProps.d.ts +34 -4
  74. package/dist/Components/GridInput.svelte +27 -17
  75. package/dist/Components/GridInput.svelte.d.ts +5 -5
  76. package/dist/Components/GridInputProps.d.ts +4 -1
  77. package/dist/Components/GridInputSet.svelte +12 -5
  78. package/dist/Components/GridInputSet.svelte.d.ts +5 -5
  79. package/dist/Components/GridInputSetProps.d.ts +4 -2
  80. package/dist/Components/HorizontalTabGroup.svelte +13 -11
  81. package/dist/Components/HorizontalTabGroupButton.svelte +16 -68
  82. package/dist/Components/HorizontalTabGroupProps.d.ts +15 -2
  83. package/dist/Components/Icon.svelte +62 -21
  84. package/dist/Components/IconProps.d.ts +54 -6
  85. package/dist/Components/Icons.d.ts +8 -0
  86. package/dist/Components/Icons.js +234 -215
  87. package/dist/Components/LoadingAnimation.svelte +18 -18
  88. package/dist/Components/LoadingAnimation.svelte.d.ts +1 -3
  89. package/dist/Components/LoadingAnimationProps.d.ts +16 -0
  90. package/dist/Components/LoadingAnimationProps.js +1 -0
  91. package/dist/Components/LoadingModal.svelte +18 -20
  92. package/dist/Components/LoadingModal.svelte.d.ts +1 -4
  93. package/dist/Components/LoadingModalProps.d.ts +17 -0
  94. package/dist/Components/LoadingModalProps.js +1 -0
  95. package/dist/Components/LoadingOverlay.svelte +11 -13
  96. package/dist/Components/LoadingOverlay.svelte.d.ts +1 -5
  97. package/dist/Components/LoadingOverlayProps.d.ts +28 -0
  98. package/dist/Components/LoadingOverlayProps.js +1 -0
  99. package/dist/Components/Modal.svelte +77 -82
  100. package/dist/Components/Modal.svelte.d.ts +1 -25
  101. package/dist/Components/ModalProps.d.ts +65 -0
  102. package/dist/Components/ModalProps.js +1 -0
  103. package/dist/Components/MultiSelect.svelte +88 -76
  104. package/dist/Components/MultiSelectCommonProps.d.ts +33 -4
  105. package/dist/Components/MultiSelectPropsAsObject.d.ts +5 -0
  106. package/dist/Components/MultiSelectPropsAsPrimitive.d.ts +6 -0
  107. package/dist/Components/Nav/CallbackButtonWithIcon.d.ts +22 -1
  108. package/dist/Components/Nav/Nav.svelte +35 -30
  109. package/dist/Components/Nav/Nav.svelte.d.ts +23 -2
  110. package/dist/Components/Nav/NavProps.d.ts +50 -3
  111. package/dist/Components/Nav/NavServiceMenuList.svelte +12 -3
  112. package/dist/Components/Nav/NavServiceMenuListProps.d.ts +25 -1
  113. package/dist/Components/Nav/NavTab.svelte +19 -48
  114. package/dist/Components/Nav/NavTab.svelte.d.ts +23 -2
  115. package/dist/Components/Nav/NavTabProps.d.ts +16 -2
  116. package/dist/Components/Nav/ServiceMenuItem.svelte +29 -20
  117. package/dist/Components/Nav/ServicesNav.svelte +60 -34
  118. package/dist/Components/Nav/ServicesNav.svelte.d.ts +23 -2
  119. package/dist/Components/Nav/ServicesNavProps.d.ts +20 -4
  120. package/dist/Components/Nav/SideMenuItemProps.d.ts +16 -0
  121. package/dist/Components/NumberInput.svelte +37 -27
  122. package/dist/Components/NumberInputProps.d.ts +37 -0
  123. package/dist/Components/PageHeading.svelte +2 -13
  124. package/dist/Components/PageHeading.svelte.d.ts +1 -6
  125. package/dist/Components/PageHeadingProps.d.ts +23 -0
  126. package/dist/Components/PageHeadingProps.js +1 -0
  127. package/dist/Components/PasswordInput.svelte +27 -15
  128. package/dist/Components/PasswordInput.svelte.d.ts +2 -2
  129. package/dist/Components/PasswordInputProps.d.ts +21 -0
  130. package/dist/Components/PasswordInputProps.js +1 -0
  131. package/dist/Components/Portal.svelte +14 -3
  132. package/dist/Components/PortalProps.d.ts +20 -1
  133. package/dist/Components/ProgressBubble.svelte +98 -53
  134. package/dist/Components/ProgressBubbleProps.d.ts +23 -2
  135. package/dist/Components/QuerySelect.svelte +103 -159
  136. package/dist/Components/QuerySelect.svelte.d.ts +2 -29
  137. package/dist/Components/QuerySelectProps.d.ts +66 -0
  138. package/dist/Components/QuerySelectProps.js +1 -0
  139. package/dist/Components/SingleSelect.svelte +86 -108
  140. package/dist/Components/SingleSelectCommonProps.d.ts +43 -5
  141. package/dist/Components/SingleSelectPropsAsObject.d.ts +7 -0
  142. package/dist/Components/SingleSelectPropsAsPrimitive.d.ts +8 -0
  143. package/dist/Components/StepButton.svelte +19 -69
  144. package/dist/Components/StepForm.svelte +52 -52
  145. package/dist/Components/StepFormProps.d.ts +16 -2
  146. package/dist/Components/Switch.svelte +68 -31
  147. package/dist/Components/Switch.svelte.d.ts +1 -1
  148. package/dist/Components/SwitchProps.d.ts +46 -0
  149. package/dist/Components/Table/Body/HeightData.d.ts +1 -6
  150. package/dist/Components/Table/Body/HeightData.js +8 -0
  151. package/dist/Components/Table/Body/QuickSearchCell.svelte +106 -50
  152. package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -11
  153. package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +6 -0
  154. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +43 -9
  155. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte.d.ts +24 -2
  156. package/dist/Components/Table/Body/Rows/ColumnHighlightProps.d.ts +3 -0
  157. package/dist/Components/Table/Body/Rows/ColumnList.svelte +15 -5
  158. package/dist/Components/Table/Body/Rows/ColumnList.svelte.d.ts +12 -11
  159. package/dist/Components/Table/Body/Rows/ColumnListProps.d.ts +1 -0
  160. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +424 -91
  161. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte.d.ts +12 -11
  162. package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +5 -0
  163. package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +43 -13
  164. package/dist/Components/Table/Body/Rows/Columns/AccessorComponentProps.d.ts +12 -0
  165. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +50 -38
  166. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte.d.ts +12 -12
  167. package/dist/Components/Table/Body/Rows/Columns/ActionsColumn.d.ts +9 -0
  168. package/dist/Components/Table/Body/Rows/Columns/ActionsTableCell.d.ts +5 -0
  169. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +61 -26
  170. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte.d.ts +14 -13
  171. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.d.ts +12 -0
  172. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.js +1 -0
  173. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +36 -16
  174. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +47 -24
  175. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte.d.ts +12 -11
  176. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCellProps.d.ts +7 -0
  177. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +54 -20
  178. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte.d.ts +17 -11
  179. package/dist/Components/Table/Body/Rows/Columns/RowSelectionColumn.d.ts +8 -0
  180. package/dist/Components/Table/Body/Rows/Columns/RowSelectionTableCell.d.ts +5 -0
  181. package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +11 -0
  182. package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +11 -0
  183. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +55 -40
  184. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte.d.ts +11 -0
  185. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +38 -27
  186. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte.d.ts +13 -18
  187. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.d.ts +17 -0
  188. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.js +1 -0
  189. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +22 -7
  190. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte.d.ts +1 -7
  191. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.d.ts +16 -0
  192. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.js +1 -0
  193. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +61 -31
  194. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte.d.ts +12 -11
  195. package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +9 -0
  196. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +123 -244
  197. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte.d.ts +20 -12
  198. package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +8 -0
  199. package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +9 -0
  200. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +126 -189
  201. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte.d.ts +12 -11
  202. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelectProps.d.ts +8 -0
  203. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +31 -19
  204. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +2 -5
  205. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.d.ts +14 -0
  206. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.js +1 -0
  207. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +125 -187
  208. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +13 -12
  209. package/dist/Components/Table/Body/Rows/Columns/TableSelectProps.d.ts +6 -0
  210. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +119 -270
  211. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte.d.ts +12 -11
  212. package/dist/Components/Table/Body/Rows/Columns/TableTextInputProps.d.ts +6 -0
  213. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +23 -13
  214. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.d.ts +104 -0
  215. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.js +215 -0
  216. package/dist/Components/Table/Body/Rows/TableRow.svelte +200 -132
  217. package/dist/Components/Table/Body/Rows/TableRow.svelte.d.ts +2 -10
  218. package/dist/Components/Table/Body/Rows/TableRowProps.d.ts +11 -2
  219. package/dist/Components/Table/Body/TableBody.svelte +170 -53
  220. package/dist/Components/Table/Body/TableBody.svelte.d.ts +15 -22
  221. package/dist/Components/Table/Body/TableBodyProps.d.ts +9 -7
  222. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +18 -12
  223. package/dist/Components/Table/ColumnFactory.svelte.d.ts +43 -0
  224. package/dist/Components/Table/ColumnFactory.svelte.js +339 -0
  225. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +5 -3
  226. package/dist/Components/Table/Headers/HighlightAllHeader.svelte.d.ts +12 -11
  227. package/dist/Components/Table/Headers/SelectAllHeader.svelte +5 -3
  228. package/dist/Components/Table/Headers/SelectAllHeader.svelte.d.ts +12 -11
  229. package/dist/Components/Table/Headers/TableHead.svelte +340 -200
  230. package/dist/Components/Table/Headers/TableHead.svelte.d.ts +13 -16
  231. package/dist/Components/Table/Headers/TableHeadProps.d.ts +10 -0
  232. package/dist/Components/Table/Headers/TableHeadProps.js +1 -0
  233. package/dist/Components/Table/Misc/ColumnPanel.svelte +108 -50
  234. package/dist/Components/Table/Misc/ColumnPanel.svelte.d.ts +12 -11
  235. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +20 -7
  236. package/dist/Components/Table/Misc/ColumnPanelModal.svelte.d.ts +12 -11
  237. package/dist/Components/Table/Misc/ColumnPanelModalProps.d.ts +5 -0
  238. package/dist/Components/Table/Misc/FilterInput.svelte +30 -41
  239. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -11
  240. package/dist/Components/Table/Misc/FilterPanel.svelte +387 -29
  241. package/dist/Components/Table/Misc/FilterPanel.svelte.d.ts +12 -11
  242. package/dist/Components/Table/Misc/FilterPanelModal.svelte +4 -51
  243. package/dist/Components/Table/Misc/FilterPanelModal.svelte.d.ts +2 -23
  244. package/dist/Components/Table/Misc/SidePanel.svelte +12 -9
  245. package/dist/Components/Table/Misc/SidePanel.svelte.d.ts +1 -7
  246. package/dist/Components/Table/Misc/SidePanelProps.d.ts +17 -0
  247. package/dist/Components/Table/Misc/SidePanelProps.js +1 -0
  248. package/dist/Components/Table/Misc/TableFooter.svelte +44 -35
  249. package/dist/Components/Table/Misc/TableFooter.svelte.d.ts +13 -14
  250. package/dist/Components/Table/Misc/TableFooterProps.d.ts +8 -0
  251. package/dist/Components/Table/Misc/TableFooterProps.js +1 -0
  252. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +17 -48
  253. package/dist/Components/Table/Misc/TableHorizontalBar.svelte.d.ts +12 -11
  254. package/dist/Components/Table/Misc/TableSidebar.svelte +28 -47
  255. package/dist/Components/Table/Misc/TableSidebar.svelte.d.ts +12 -11
  256. package/dist/Components/Table/Misc/ToolboxPanel.svelte +121 -55
  257. package/dist/Components/Table/Misc/ToolboxPanel.svelte.d.ts +12 -11
  258. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +31 -24
  259. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte.d.ts +12 -11
  260. package/dist/Components/Table/Misc/ToolboxPanelModalProps.d.ts +5 -0
  261. package/dist/Components/Table/Misc/numberDateFilterTypes.d.ts +7 -4
  262. package/dist/Components/Table/Misc/numberDateFilterTypes.js +8 -3
  263. package/dist/Components/Table/Misc/stringFilterTypes.d.ts +6 -4
  264. package/dist/Components/Table/Misc/stringFilterTypes.js +7 -3
  265. package/dist/Components/Table/NestedTable.svelte +85 -41
  266. package/dist/Components/Table/NestedTable.svelte.d.ts +2 -10
  267. package/dist/Components/Table/NestedTableProps.d.ts +25 -0
  268. package/dist/Components/Table/NestedTableProps.js +1 -0
  269. package/dist/Components/Table/SubApis.svelte.d.ts +23 -0
  270. package/dist/Components/Table/SubApis.svelte.js +359 -0
  271. package/dist/Components/Table/Table.svelte +347 -172
  272. package/dist/Components/Table/Table.svelte.d.ts +24 -1
  273. package/dist/Components/Table/TableHelpers.svelte.d.ts +58 -0
  274. package/dist/Components/Table/TableHelpers.svelte.js +88 -0
  275. package/dist/Components/Table/Types/Columns/Column.d.ts +10 -0
  276. package/dist/Components/Table/Types/Columns/ColumnPinningState.d.ts +12 -0
  277. package/dist/Components/Table/Types/Columns/ColumnSizingState.d.ts +8 -0
  278. package/dist/Components/Table/Types/Columns/ColumnType.d.ts +17 -0
  279. package/dist/Components/Table/Types/Columns/ColumnType.js +18 -1
  280. package/dist/Components/Table/Types/Columns/DateColumn.d.ts +6 -0
  281. package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -0
  282. package/dist/Components/Table/Types/Columns/Definitions/AccessorFn.d.ts +13 -0
  283. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +28 -3
  284. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +15 -0
  285. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.d.ts +10 -0
  286. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.js +11 -1
  287. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +23 -2
  288. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +9 -2
  289. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +21 -2
  290. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +8 -0
  291. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +29 -3
  292. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +11 -0
  293. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +23 -0
  294. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +8 -0
  295. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +31 -0
  296. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +17 -3
  297. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +21 -2
  298. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +7 -0
  299. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +29 -1
  300. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +17 -3
  301. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +122 -11
  302. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +77 -11
  303. package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +9 -0
  304. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +41 -1
  305. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +16 -0
  306. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +19 -1
  307. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +12 -1
  308. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +11 -0
  309. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +6 -3
  310. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +19 -0
  311. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +25 -1
  312. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +26 -0
  313. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +20 -5
  314. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +43 -7
  315. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +18 -3
  316. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +19 -5
  317. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +16 -5
  318. package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +14 -0
  319. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +34 -2
  320. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +30 -7
  321. package/dist/Components/Table/Types/Columns/Definitions/ValidationFn.d.ts +17 -0
  322. package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +10 -0
  323. package/dist/Components/Table/Types/Columns/DisplayType.d.ts +13 -0
  324. package/dist/Components/Table/Types/Columns/DisplayType.js +14 -1
  325. package/dist/Components/Table/Types/Columns/ExpandColumn.d.ts +5 -0
  326. package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +7 -0
  327. package/dist/Components/Table/Types/Columns/JSONColumnPinningState.d.ts +6 -0
  328. package/dist/Components/Table/Types/Columns/ProgressBarColumn.d.ts +5 -0
  329. package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +9 -0
  330. package/dist/Components/Table/Types/Columns/TableActionButton.d.ts +12 -0
  331. package/dist/Components/Table/Types/Columns/TableCell.d.ts +16 -2
  332. package/dist/Components/Table/Types/Columns/VisibilityState.d.ts +12 -0
  333. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +173 -0
  334. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +241 -0
  335. package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +166 -0
  336. package/dist/Components/Table/Types/Context/FilteringState.svelte.js +180 -0
  337. package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +316 -0
  338. package/dist/Components/Table/Types/Context/FocusState.svelte.js +751 -0
  339. package/dist/Components/Table/Types/Context/ITable.d.ts +10 -0
  340. package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +242 -0
  341. package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +317 -0
  342. package/dist/Components/Table/Types/Context/ReadonlyRowModel.d.ts +14 -3
  343. package/dist/Components/Table/Types/Context/Row.d.ts +18 -0
  344. package/dist/Components/Table/Types/Context/RowModel.d.ts +11 -0
  345. package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +260 -0
  346. package/dist/Components/Table/Types/Context/SelectionState.svelte.js +613 -0
  347. package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +112 -0
  348. package/dist/Components/Table/Types/Context/SortingState.svelte.js +272 -0
  349. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +547 -53
  350. package/dist/Components/Table/Types/Context/TableContext.svelte.js +959 -1259
  351. package/dist/Components/Table/Types/Context/TableInitOptions.d.ts +16 -0
  352. package/dist/Components/Table/Types/Context/TableSettings.d.ts +20 -0
  353. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +167 -0
  354. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +226 -0
  355. package/dist/Components/Table/Types/Coordinates/CellCoordinates.d.ts +12 -0
  356. package/dist/Components/Table/Types/Coordinates/CellCoordinatesWithoutColumn.d.ts +5 -0
  357. package/dist/Components/Table/Types/Coordinates/ColumnIndices.d.ts +16 -2
  358. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +143 -0
  359. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +454 -0
  360. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +21 -0
  361. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +10 -0
  362. package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.d.ts +16 -0
  363. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +87 -3
  364. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +112 -7
  365. package/dist/Components/Table/Types/DataRepository/SortingState.d.ts +12 -0
  366. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +87 -2
  367. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +74 -1
  368. package/dist/Components/Table/Types/ExpandedPanel.d.ts +9 -0
  369. package/dist/Components/Table/Types/ExpandedPanel.js +10 -1
  370. package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +17 -0
  371. package/dist/Components/Table/Types/Filtering/CustomFilter.d.ts +21 -0
  372. package/dist/Components/Table/Types/Filtering/CustomFilterType.d.ts +5 -0
  373. package/dist/Components/Table/Types/Filtering/CustomFilterType.js +6 -1
  374. package/dist/Components/Table/Types/Filtering/CustomRemoteFilters.d.ts +6 -0
  375. package/dist/Components/Table/Types/Filtering/FilterFn.d.ts +28 -0
  376. package/dist/Components/Table/Types/Filtering/FilterMode.d.ts +7 -0
  377. package/dist/Components/Table/Types/Filtering/FilterType.d.ts +8 -0
  378. package/dist/Components/Table/Types/Filtering/FilterType.js +9 -1
  379. package/dist/Components/Table/Types/Filtering/FilterValueType.d.ts +11 -0
  380. package/dist/Components/Table/Types/Filtering/FilterValueType.js +12 -1
  381. package/dist/Components/Table/Types/Filtering/HasCustomFilterFunction.d.ts +23 -2
  382. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.d.ts +19 -12
  383. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.js +18 -14
  384. package/dist/Components/Table/Types/Filtering/StringFilterMode.d.ts +22 -15
  385. package/dist/Components/Table/Types/Filtering/StringFilterMode.js +22 -16
  386. package/dist/Components/Table/Types/Focus/MultiFocusEdge.d.ts +8 -0
  387. package/dist/Components/Table/Types/Focus/MultiFocusEdge.js +9 -1
  388. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +22 -0
  389. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +22 -0
  390. package/dist/Components/Table/Types/Header.d.ts +8 -0
  391. package/dist/Components/Table/Types/HeaderGroup.d.ts +7 -0
  392. package/dist/Components/Table/Types/Layout/CellPinning.d.ts +1 -0
  393. package/dist/Components/Table/Types/Layout/CellPinning.js +8 -0
  394. package/dist/Components/Table/Types/OnChangeFn.d.ts +11 -0
  395. package/dist/Components/Table/Types/Pagination/PaginationState.d.ts +9 -0
  396. package/dist/Components/Table/Types/Pagination/PaginationType.d.ts +10 -0
  397. package/dist/Components/Table/Types/Pagination/PaginationType.js +11 -1
  398. package/dist/Components/Table/Types/Public/AnyEditEvent.d.ts +30 -0
  399. package/dist/Components/Table/Types/Public/AnyEditEvent.js +1 -0
  400. package/dist/Components/Table/Types/Public/BaseColumnOptions.d.ts +44 -0
  401. package/dist/Components/Table/Types/Public/BaseColumnOptions.js +1 -0
  402. package/dist/Components/Table/Types/Public/ColumnFactory.d.ts +35 -0
  403. package/dist/Components/Table/Types/Public/ColumnFactory.js +1 -0
  404. package/dist/Components/Table/Types/Public/ColumnOptions.d.ts +238 -0
  405. package/dist/Components/Table/Types/Public/ColumnOptions.js +1 -0
  406. package/dist/Components/Table/Types/Public/ColumnSpec.d.ts +39 -0
  407. package/dist/Components/Table/Types/Public/ColumnSpec.js +1 -0
  408. package/dist/Components/Table/Types/Public/CreateTableOptions.d.ts +87 -0
  409. package/dist/Components/Table/Types/Public/CreateTableOptions.js +1 -0
  410. package/dist/Components/Table/Types/Public/KeyConstraints.d.ts +42 -0
  411. package/dist/Components/Table/Types/Public/KeyConstraints.js +22 -0
  412. package/dist/Components/Table/Types/Public/RowSource.d.ts +87 -0
  413. package/dist/Components/Table/Types/Public/RowSource.js +1 -0
  414. package/dist/Components/Table/Types/Public/SelectionOptions.d.ts +26 -0
  415. package/dist/Components/Table/Types/Public/SelectionOptions.js +1 -0
  416. package/dist/Components/Table/Types/Public/Table.d.ts +39 -0
  417. package/dist/Components/Table/Types/Public/Table.js +1 -0
  418. package/dist/Components/Table/Types/Public/TableInitialState.d.ts +26 -0
  419. package/dist/Components/Table/Types/Public/TableInitialState.js +1 -0
  420. package/dist/Components/Table/Types/Public/TablePersistence.d.ts +38 -0
  421. package/dist/Components/Table/Types/Public/TablePersistence.js +1 -0
  422. package/dist/Components/Table/Types/Public/TableSubApis.d.ts +157 -0
  423. package/dist/Components/Table/Types/Public/TableSubApis.js +1 -0
  424. package/dist/Components/Table/Types/Public/index.d.ts +20 -0
  425. package/dist/Components/Table/Types/Public/index.js +8 -0
  426. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.d.ts +4 -0
  427. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.js +5 -1
  428. package/dist/Components/Table/createTable.svelte.d.ts +53 -0
  429. package/dist/Components/Table/createTable.svelte.js +269 -0
  430. package/dist/Components/TextArea.svelte +37 -18
  431. package/dist/Components/TextAreaProps.d.ts +37 -0
  432. package/dist/Components/TextInput.svelte +41 -22
  433. package/dist/Components/TextInputProps.d.ts +58 -1
  434. package/dist/Components/ThreeStateRadio.svelte +61 -64
  435. package/dist/Components/ThreeStateRadioProps.d.ts +29 -1
  436. package/dist/Components/Touch/BoolCard.svelte +8 -15
  437. package/dist/Components/Touch/BoolCard.svelte.d.ts +1 -10
  438. package/dist/Components/Touch/BoolCardProps.d.ts +21 -0
  439. package/dist/Components/Touch/BoolCardProps.js +1 -0
  440. package/dist/Components/Touch/DateModal.svelte +17 -25
  441. package/dist/Components/Touch/DateModal.svelte.d.ts +1 -17
  442. package/dist/Components/Touch/DateModalProps.d.ts +36 -0
  443. package/dist/Components/Touch/DateModalProps.js +1 -0
  444. package/dist/Components/Touch/EditCard.svelte +10 -3
  445. package/dist/Components/Touch/EditCardProps.d.ts +21 -0
  446. package/dist/Components/Touch/InfoCard.svelte +14 -7
  447. package/dist/Components/Touch/InfoCardProps.d.ts +9 -0
  448. package/dist/Components/Touch/InfoTextCard.svelte +9 -2
  449. package/dist/Components/Touch/InfoTextCardProps.d.ts +8 -0
  450. package/dist/Components/Touch/ModalExplanation.svelte +9 -12
  451. package/dist/Components/Touch/ModalExplanation.svelte.d.ts +1 -6
  452. package/dist/Components/Touch/ModalExplanationProps.d.ts +22 -0
  453. package/dist/Components/Touch/ModalExplanationProps.js +1 -0
  454. package/dist/Components/Touch/NumberKeyboard.svelte +62 -105
  455. package/dist/Components/Touch/NumberKeyboardProps.d.ts +19 -0
  456. package/dist/Components/Touch/NumberModal.svelte +16 -6
  457. package/dist/Components/Touch/NumberModalProps.d.ts +23 -1
  458. package/dist/Components/Touch/PlusMinusCard.svelte +12 -16
  459. package/dist/Components/Touch/PlusMinusCard.svelte.d.ts +1 -6
  460. package/dist/Components/Touch/PlusMinusCardProps.d.ts +18 -0
  461. package/dist/Components/Touch/PlusMinusCardProps.js +1 -0
  462. package/dist/Components/Touch/SelectModal.svelte +33 -15
  463. package/dist/Components/Touch/SelectModalProps.d.ts +22 -1
  464. package/dist/Components/Touch/SummaryCard.svelte +56 -14
  465. package/dist/Components/Touch/SummaryCardProps.d.ts +16 -3
  466. package/dist/Components/Touch/TextAreaModal.svelte +18 -9
  467. package/dist/Components/Touch/TextAreaModalProps.d.ts +21 -0
  468. package/dist/Components/Touch/TextModal.svelte +15 -32
  469. package/dist/Components/Touch/TextModalProps.d.ts +28 -1
  470. package/dist/Components/Touch/TouchCard.svelte +9 -47
  471. package/dist/Components/Touch/TouchCardProps.d.ts +21 -0
  472. package/dist/Components/Touch/TouchModal.svelte +105 -99
  473. package/dist/Components/Touch/TouchModalProps.d.ts +35 -1
  474. package/dist/Components/Touch/UtilityButton.svelte +36 -18
  475. package/dist/Components/Touch/UtilityButtonProps.d.ts +16 -0
  476. package/dist/Components/VerticalTabGroup.svelte +18 -40
  477. package/dist/Components/VerticalTabGroupButton.svelte +11 -50
  478. package/dist/Components/VerticalTabGroupProps.d.ts +15 -2
  479. package/dist/Contexts/AlertContext.svelte.d.ts +92 -8
  480. package/dist/Contexts/AlertContext.svelte.js +69 -6
  481. package/dist/Contexts/ContextMenuContext.svelte.d.ts +54 -8
  482. package/dist/Contexts/ContextMenuContext.svelte.js +48 -2
  483. package/dist/Contexts/TestContext.svelte.d.ts +27 -1
  484. package/dist/Contexts/TestContext.svelte.js +29 -1
  485. package/dist/Contexts/ToastContext.svelte.d.ts +29 -1
  486. package/dist/Contexts/ToastContext.svelte.js +93 -24
  487. package/dist/Contexts/TooltipContext.svelte.d.ts +68 -1
  488. package/dist/Contexts/TooltipContext.svelte.js +70 -7
  489. package/dist/Contexts/UntypedInputContext.svelte.d.ts +54 -5
  490. package/dist/Contexts/UntypedInputContext.svelte.js +87 -34
  491. package/dist/Delay/Delay.js +1 -1
  492. package/dist/Helpers/AsyncFlag.svelte.d.ts +39 -0
  493. package/dist/Helpers/AsyncFlag.svelte.js +72 -0
  494. package/dist/Helpers/Datamatrix.d.ts +10 -1
  495. package/dist/Helpers/Datamatrix.js +290 -1
  496. package/dist/Helpers/Helpers.svelte.d.ts +252 -18
  497. package/dist/Helpers/Helpers.svelte.js +271 -75
  498. package/dist/Helpers/INamed.d.ts +6 -0
  499. package/dist/Helpers/Storage.d.ts +67 -0
  500. package/dist/Helpers/Storage.js +138 -0
  501. package/dist/Helpers/dropdownPortal.d.ts +52 -0
  502. package/dist/Helpers/dropdownPortal.js +232 -0
  503. package/dist/Helpers/dropdownPortal.svelte.d.ts +2 -0
  504. package/dist/Helpers/dropdownPortal.svelte.js +5 -0
  505. package/dist/Helpers/memoiseByRow.d.ts +45 -0
  506. package/dist/Helpers/memoiseByRow.js +78 -0
  507. package/dist/Helpers/prefersReducedMotion.svelte.d.ts +27 -0
  508. package/dist/Helpers/prefersReducedMotion.svelte.js +18 -0
  509. package/dist/Helpers/useTooltip.svelte.d.ts +53 -0
  510. package/dist/Helpers/useTooltip.svelte.js +62 -0
  511. package/dist/Types/Examples/ExampleModal.svelte +2 -1
  512. package/dist/Types/Examples/ExampleSelectEnum.js +1 -1
  513. package/dist/Types/Internal/AsyncFlag.d.ts +7 -0
  514. package/dist/Types/Internal/AsyncFlag.js +1 -0
  515. package/dist/Types/Internal/BigRadioOption.d.ts +8 -0
  516. package/dist/Types/Internal/ButtonProp.d.ts +24 -2
  517. package/dist/Types/Internal/CallbackButton.d.ts +12 -0
  518. package/dist/Types/Internal/DateChange.d.ts +8 -0
  519. package/dist/Types/Internal/DatePickerType.d.ts +5 -0
  520. package/dist/Types/Internal/DatePickerType.js +6 -1
  521. package/dist/Types/Internal/IdentifiableToastMessage.d.ts +8 -0
  522. package/dist/Types/Internal/InputVariant.d.ts +5 -0
  523. package/dist/Types/Internal/InputVariant.js +6 -1
  524. package/dist/Types/Internal/Misc.d.ts +91 -0
  525. package/dist/Types/Internal/RefWrapper.d.ts +6 -0
  526. package/dist/Types/Internal/SelectOption.d.ts +8 -0
  527. package/dist/Types/Internal/Shape.d.ts +1 -0
  528. package/dist/Types/Internal/Shape.js +2 -1
  529. package/dist/Types/Internal/Side.d.ts +1 -0
  530. package/dist/Types/Internal/Side.js +2 -1
  531. package/dist/Types/Internal/Size.d.ts +5 -0
  532. package/dist/Types/Internal/Size.js +6 -1
  533. package/dist/Types/Internal/TabOption.d.ts +15 -5
  534. package/dist/Types/Internal/Ternary.d.ts +6 -0
  535. package/dist/Types/Internal/Ternary.js +7 -1
  536. package/dist/Types/Internal/ToastMessage.d.ts +28 -0
  537. package/dist/Types/Internal/Validity.d.ts +6 -0
  538. package/dist/Types/Internal/Validity.js +7 -1
  539. package/dist/Types/Internal/ValidityWrapper.d.ts +8 -0
  540. package/dist/Types/Internal/Variant.d.ts +5 -0
  541. package/dist/Types/Internal/Variant.js +6 -1
  542. package/dist/index.d.ts +27 -82
  543. package/dist/index.js +24 -62
  544. package/dist/scss/_mixins.scss +451 -167
  545. package/dist/scss/_motion.scss +57 -0
  546. package/dist/scss/_sizing.scss +16 -0
  547. package/dist/scss/colours.js +2 -2
  548. package/dist/scss/sizing.d.ts +9 -0
  549. package/dist/scss/sizing.js +10 -1
  550. package/package.json +35 -31
@@ -30,13 +30,13 @@
30
30
 
31
31
  <script
32
32
  lang="ts"
33
- generics="V extends object,VP extends ValueProp<V>"
33
+ generics="V extends Record<string, unknown>,VP extends ValueProp<V>"
34
34
  >
35
35
  const { item, first, last }: GridInputProps<V, VP> = $props();
36
36
 
37
37
  let value = $derived(isText(item) ? (item.value ?? '') : '');
38
38
 
39
- function isText<V extends object, VP extends ValueProp<V>>(
39
+ function isText<V extends Record<string, unknown>, VP extends ValueProp<V>>(
40
40
  item: GridItem<V, VP>
41
41
  ): item is GridTextItem {
42
42
  return item.type == null || textTypes.has(item.type);
@@ -46,37 +46,37 @@
46
46
  return item.type == 'select';
47
47
  }
48
48
 
49
- function isMultiSelect<A extends object, B extends ValueProp<A>>(
49
+ function isMultiSelect<A extends Record<string, unknown>, B extends ValueProp<A>>(
50
50
  item: GridSelectItem<A, B>
51
51
  ): item is GridMultiSelectItem<A, B> {
52
52
  return 'multi' in item && item.multi === true;
53
53
  }
54
54
 
55
- function isMultiSelectPrimitive<A extends object, B extends ValueProp<A>>(
55
+ function isMultiSelectPrimitive<A extends Record<string, unknown>, B extends ValueProp<A>>(
56
56
  item: GridMultiSelectItem<A, B>
57
57
  ): item is GridMultiSelectItemAsPrimitive<A, B> {
58
58
  return 'valueAsObject' in item && !item.valueAsObject;
59
59
  }
60
60
 
61
- function isMultiSelectObject<A extends object, B extends ValueProp<A>>(
61
+ function isMultiSelectObject<A extends Record<string, unknown>, B extends ValueProp<A>>(
62
62
  item: GridMultiSelectItem<A, B>
63
63
  ): item is GridMultiSelectItemAsObject<A, B> {
64
64
  return 'valueAsObject' in item && item.valueAsObject;
65
65
  }
66
66
 
67
- function isSingleSelect<A extends object, B extends ValueProp<A>>(
67
+ function isSingleSelect<A extends Record<string, unknown>, B extends ValueProp<A>>(
68
68
  item: GridSelectItem<A, B>
69
69
  ): item is GridSingleSelectItem<A, B> {
70
70
  return !('multi' in item) || item.multi === false;
71
71
  }
72
72
 
73
- function isSingleSelectPrimitive<A extends object, B extends ValueProp<A>>(
73
+ function isSingleSelectPrimitive<A extends Record<string, unknown>, B extends ValueProp<A>>(
74
74
  item: GridSingleSelectItem<A, B>
75
75
  ): item is GridSingleSelectItemAsPrimitive<A, B> {
76
76
  return 'valueAsObject' in item && !item.valueAsObject;
77
77
  }
78
78
 
79
- function isSingleSelectObject<A extends object, B extends ValueProp<A>>(
79
+ function isSingleSelectObject<A extends Record<string, unknown>, B extends ValueProp<A>>(
80
80
  item: GridSingleSelectItem<A, B>
81
81
  ): item is GridSingleSelectItemAsObject<A, B> {
82
82
  return 'valueAsObject' in item && item.valueAsObject;
@@ -130,10 +130,11 @@
130
130
  valueProp={item.valueProp}
131
131
  selectedValues={item.value}
132
132
  invalid={item.invalid}
133
- onchange={(v: Array<V>) => {
134
- const values = v.map((it) => it[item.valueProp]);
135
-
136
- item.updater(values);
133
+ onchange={(v: Array<V[VP]>) => {
134
+ // Phase 7.6: `valueAsObject={false}` means MultiSelect
135
+ // hands us the primitives directly; no more `.map`
136
+ // to dig `.value` off each option object.
137
+ item.updater(v);
137
138
  }}
138
139
  />
139
140
  {/if}
@@ -170,10 +171,19 @@
170
171
  clearable={!item.required}
171
172
  disabled={item.disabled}
172
173
  invalid={item.invalid}
173
- onchange={(v: V | null) => {
174
- const x = v == null ? null : v[item.valueProp];
175
-
176
- item.updater(x);
174
+ onchange={(
175
+ // Phase 7.6: `valueAsObject={false}` means SingleSelect
176
+ // already passes the primitive key value; no need to
177
+ // dig it back out of an option object. `clearable` is
178
+ // enabled when the field is not `required`, so the
179
+ // callback must accept `null` to satisfy the
180
+ // SingleSelect prop signature. The annotation collapses
181
+ // to `unknown` because `V extends Record<string,
182
+ // unknown>` makes `V[VP]` itself `unknown`.
183
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
184
+ v: V[VP] | null
185
+ ) => {
186
+ item.updater(v);
177
187
  }}
178
188
  />
179
189
  {/if}
@@ -193,7 +203,7 @@
193
203
  --sv-border-radius: 0;
194
204
  }
195
205
  label .left {
196
- background-color: #eaeef3;
206
+ background-color: #f4f7f9;
197
207
  display: flex;
198
208
  flex-flow: row nowrap;
199
209
  padding: 0.75rem;
@@ -1,13 +1,13 @@
1
1
  import type { ValueProp } from '../Types/Internal/Misc.js';
2
2
  import type { GridInputProps } from './GridInputProps.js';
3
- declare function $$render<V extends object, VP extends ValueProp<V>>(): {
3
+ declare function $$render<V extends Record<string, unknown>, VP extends ValueProp<V>>(): {
4
4
  props: GridInputProps<V, VP>;
5
5
  exports: {};
6
6
  bindings: "";
7
7
  slots: {};
8
8
  events: {};
9
9
  };
10
- declare class __sveltets_Render<V extends object, VP extends ValueProp<V>> {
10
+ declare class __sveltets_Render<V extends Record<string, unknown>, VP extends ValueProp<V>> {
11
11
  props(): ReturnType<typeof $$render<V, VP>>['props'];
12
12
  events(): ReturnType<typeof $$render<V, VP>>['events'];
13
13
  slots(): ReturnType<typeof $$render<V, VP>>['slots'];
@@ -15,12 +15,12 @@ declare class __sveltets_Render<V extends object, VP extends ValueProp<V>> {
15
15
  exports(): {};
16
16
  }
17
17
  interface $$IsomorphicComponent {
18
- new <V extends object, VP extends ValueProp<V>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, VP>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, VP>['props']>, ReturnType<__sveltets_Render<V, VP>['events']>, ReturnType<__sveltets_Render<V, VP>['slots']>> & {
18
+ new <V extends Record<string, unknown>, VP extends ValueProp<V>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, VP>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, VP>['props']>, ReturnType<__sveltets_Render<V, VP>['events']>, ReturnType<__sveltets_Render<V, VP>['slots']>> & {
19
19
  $$bindings?: ReturnType<__sveltets_Render<V, VP>['bindings']>;
20
20
  } & ReturnType<__sveltets_Render<V, VP>['exports']>;
21
- <V extends object, VP extends ValueProp<V>>(internal: unknown, props: ReturnType<__sveltets_Render<V, VP>['props']> & {}): ReturnType<__sveltets_Render<V, VP>['exports']>;
21
+ <V extends Record<string, unknown>, VP extends ValueProp<V>>(internal: unknown, props: ReturnType<__sveltets_Render<V, VP>['props']> & {}): ReturnType<__sveltets_Render<V, VP>['exports']>;
22
22
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
23
  }
24
24
  declare const GridInput: $$IsomorphicComponent;
25
- type GridInput<V extends object, VP extends ValueProp<V>> = InstanceType<typeof GridInput<V, VP>>;
25
+ type GridInput<V extends Record<string, unknown>, VP extends ValueProp<V>> = InstanceType<typeof GridInput<V, VP>>;
26
26
  export default GridInput;
@@ -1,7 +1,10 @@
1
1
  import type { GridItem } from '../Types/Internal/GridItem.js';
2
2
  import type { ValueProp } from '../Types/Internal/Misc.js';
3
- export interface GridInputProps<V extends object, VP extends ValueProp<V>> {
3
+ export interface GridInputProps<V extends Record<string, unknown>, VP extends ValueProp<V>> {
4
+ /** Item descriptor controlling which sub-input is rendered. */
4
5
  item: GridItem<V, VP>;
6
+ /** True when this row is first in its GridInputSet. */
5
7
  first: boolean;
8
+ /** True when this row is last in its GridInputSet. */
6
9
  last: boolean;
7
10
  }
@@ -1,6 +1,9 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts" generics="V extends object,VP extends ValueProp<V>">
3
+ <script
4
+ lang="ts"
5
+ generics="V extends Record<string, unknown>,VP extends ValueProp<V>"
6
+ >
4
7
  import type { ValueProp } from '../Types/Internal/Misc.js';
5
8
  import GridInput from './GridInput.svelte';
6
9
  import type { GridInputSetProps } from './GridInputSetProps.js';
@@ -14,8 +17,12 @@
14
17
  {#if header}
15
18
  {@render header()}
16
19
  {/if}
17
- {#each items as item, index (item)}
18
- <GridInput item={items[index]} first={index == 0} last={index == lastIndex} />
20
+ {#each items as item, index (item.label)}
21
+ <GridInput
22
+ {item}
23
+ first={index == 0}
24
+ last={index == lastIndex}
25
+ />
19
26
  {/each}
20
27
  </div>
21
28
 
@@ -23,7 +30,7 @@
23
30
  display: grid;
24
31
  grid-template-columns: [label] 16rem [value] 1fr;
25
32
  gap: 1px;
26
- border: solid 1px #ced2d6;
33
+ border: solid 1px #dae0e5;
27
34
  border-radius: 4px;
28
- background-color: #ced2d6;
35
+ background-color: #dae0e5;
29
36
  }</style>
@@ -1,13 +1,13 @@
1
1
  import type { ValueProp } from '../Types/Internal/Misc.js';
2
2
  import type { GridInputSetProps } from './GridInputSetProps.js';
3
- declare function $$render<V extends object, VP extends ValueProp<V>>(): {
3
+ declare function $$render<V extends Record<string, unknown>, VP extends ValueProp<V>>(): {
4
4
  props: GridInputSetProps<V, VP>;
5
5
  exports: {};
6
6
  bindings: "";
7
7
  slots: {};
8
8
  events: {};
9
9
  };
10
- declare class __sveltets_Render<V extends object, VP extends ValueProp<V>> {
10
+ declare class __sveltets_Render<V extends Record<string, unknown>, VP extends ValueProp<V>> {
11
11
  props(): ReturnType<typeof $$render<V, VP>>['props'];
12
12
  events(): ReturnType<typeof $$render<V, VP>>['events'];
13
13
  slots(): ReturnType<typeof $$render<V, VP>>['slots'];
@@ -15,12 +15,12 @@ declare class __sveltets_Render<V extends object, VP extends ValueProp<V>> {
15
15
  exports(): {};
16
16
  }
17
17
  interface $$IsomorphicComponent {
18
- new <V extends object, VP extends ValueProp<V>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, VP>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, VP>['props']>, ReturnType<__sveltets_Render<V, VP>['events']>, ReturnType<__sveltets_Render<V, VP>['slots']>> & {
18
+ new <V extends Record<string, unknown>, VP extends ValueProp<V>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, VP>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, VP>['props']>, ReturnType<__sveltets_Render<V, VP>['events']>, ReturnType<__sveltets_Render<V, VP>['slots']>> & {
19
19
  $$bindings?: ReturnType<__sveltets_Render<V, VP>['bindings']>;
20
20
  } & ReturnType<__sveltets_Render<V, VP>['exports']>;
21
- <V extends object, VP extends ValueProp<V>>(internal: unknown, props: ReturnType<__sveltets_Render<V, VP>['props']> & {}): ReturnType<__sveltets_Render<V, VP>['exports']>;
21
+ <V extends Record<string, unknown>, VP extends ValueProp<V>>(internal: unknown, props: ReturnType<__sveltets_Render<V, VP>['props']> & {}): ReturnType<__sveltets_Render<V, VP>['exports']>;
22
22
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
23
  }
24
24
  declare const GridInputSet: $$IsomorphicComponent;
25
- type GridInputSet<V extends object, VP extends ValueProp<V>> = InstanceType<typeof GridInputSet<V, VP>>;
25
+ type GridInputSet<V extends Record<string, unknown>, VP extends ValueProp<V>> = InstanceType<typeof GridInputSet<V, VP>>;
26
26
  export default GridInputSet;
@@ -1,7 +1,9 @@
1
1
  import type { GridItem } from '../Types/Internal/GridItem.js';
2
2
  import type { ValueProp } from '../Types/Internal/Misc.js';
3
3
  import type { Snippet } from 'svelte';
4
- export interface GridInputSetProps<V extends object, VP extends ValueProp<V>> {
5
- items: Array<GridItem<V, VP>>;
4
+ export interface GridInputSetProps<V extends Record<string, unknown>, VP extends ValueProp<V>> {
5
+ /** Readonly list of grid item descriptors to render as rows. */
6
+ items: ReadonlyArray<GridItem<V, VP>>;
7
+ /** Optional header snippet rendered above the first row. */
6
8
  header?: Snippet;
7
9
  }
@@ -9,8 +9,7 @@
9
9
  import HorizontalTabGroupButton from './HorizontalTabGroupButton.svelte';
10
10
  import type { HorizontalTabGroupProps } from './HorizontalTabGroupProps.js';
11
11
  import TextInput from './TextInput.svelte';
12
- let {
13
- // name: _name, //FIXME why is this not implemented?
12
+ const {
14
13
  tabComponent,
15
14
  tabs,
16
15
  selected,
@@ -20,20 +19,23 @@
20
19
  filterFn,
21
20
  }: HorizontalTabGroupProps<CommonDenominator> = $props();
22
21
 
23
- // svelte-ignore state_referenced_locally
24
- let filteredTabs = $state(tabs);
22
+ let searchValue = $state('');
25
23
 
24
+ // Debounce only the search value, not the tabs array. This way a parent
25
+ // rebuilding `tabs` shows the new list immediately, while typing still
26
+ // pays the 300ms cost.
27
+ let debouncedSearch = $state('');
26
28
  $effect(() => {
27
29
  const term = searchValue;
28
30
  const id = setTimeout(() => {
29
- filteredTabs = filterFn ? tabs.filter((t) => filterFn(t, term)) : tabs;
31
+ debouncedSearch = term;
30
32
  }, 300);
31
33
  return () => {
32
34
  clearTimeout(id);
33
35
  };
34
36
  });
35
37
 
36
- let searchValue = $state('');
38
+ const filteredTabs = $derived(filterFn ? tabs.filter((t) => filterFn(t, debouncedSearch)) : tabs);
37
39
  </script>
38
40
 
39
41
  <div
@@ -54,15 +56,15 @@
54
56
  {/if}
55
57
  </div>
56
58
  {#if tabComponent}
57
- {#each filteredTabs as option (option)}
58
- {@render tabComponent(option, selected === option)}
59
+ {#each filteredTabs as option (option.label)}
60
+ {@render tabComponent(option, selected?.label === option.label)}
59
61
  {/each}
60
62
  {:else}
61
- {#each filteredTabs as option (option)}
63
+ {#each filteredTabs as option (option.label)}
62
64
  <HorizontalTabGroupButton
63
65
  {option}
64
66
  noRadius={noRadius || filterable}
65
- selected={selected === option}
67
+ selected={selected?.label === option.label}
66
68
  />
67
69
  {/each}
68
70
  {/if}
@@ -80,7 +82,7 @@
80
82
  width: 100%;
81
83
  padding: 0.5rem;
82
84
  background-color: #ffffff;
83
- min-width: 330px;
85
+ min-width: 20.625rem;
84
86
  }
85
87
 
86
88
  .wrapper {
@@ -4,56 +4,17 @@
4
4
  lang="ts"
5
5
  generics="Args"
6
6
  >
7
- import { devCatch } from '../Helpers/Helpers.svelte.js';
7
+ import { useAsyncFlag } from '../Helpers/AsyncFlag.svelte.js';
8
8
  import { Colour } from '../scss/colours.js';
9
9
  import { Size } from '../Types/Internal/Size.js';
10
10
  import Icon from './Icon.svelte';
11
11
  import type { TabGroupButtonProps } from './TabGroupButtonProps.js';
12
12
 
13
- let { option, selected, noRadius = false }: TabGroupButtonProps<Args> = $props();
13
+ const { option, selected, noRadius = false }: TabGroupButtonProps<Args> = $props();
14
14
 
15
- let disabled = $state(true);
16
- let visible = $state(true);
17
- let isValid = $state(true);
18
-
19
- $effect(() => {
20
- if (typeof option.isValid === 'boolean') {
21
- isValid = option.isValid;
22
- } else {
23
- option.isValid
24
- ?.then((v) => {
25
- isValid = v;
26
- })
27
- .catch(devCatch);
28
- }
29
- });
30
- $effect(() => {
31
- if (typeof option.disabled === 'boolean') {
32
- disabled = option.disabled;
33
- } else if (option.disabled == undefined) {
34
- disabled = false;
35
- } else {
36
- option.disabled
37
- .then((v) => {
38
- disabled = v;
39
- })
40
- .catch(devCatch);
41
- }
42
- });
43
-
44
- $effect(() => {
45
- if (typeof option.visible === 'boolean') {
46
- visible = option.visible;
47
- } else if (option.visible == undefined) {
48
- visible = true;
49
- } else {
50
- option.visible
51
- .then((v) => {
52
- visible = v;
53
- })
54
- .catch(devCatch);
55
- }
56
- });
15
+ const isValid = useAsyncFlag(() => option.isValid, true);
16
+ const disabled = useAsyncFlag(() => option.disabled, false);
17
+ const visible = useAsyncFlag(() => option.visible, true);
57
18
  </script>
58
19
 
59
20
  <button
@@ -63,33 +24,20 @@
63
24
  }}
64
25
  type="button"
65
26
  class="tab"
66
- class:invalid={!isValid}
67
- {disabled}
68
- class:hidden={!visible}
27
+ class:invalid={!isValid.value}
28
+ disabled={disabled.value}
29
+ class:hidden={!visible.value}
69
30
  class:no-radius={noRadius}
70
31
  >
71
32
  <div class="selected-marker"></div>
72
- <!-- <Icon
73
- name="nothing"
74
- colour={Colour['$brand-primary']}
75
- size={Size.Small}
76
- {...option.iconLeft}
77
- /> -->
78
33
 
79
34
  {option.label}
80
- {#if !isValid}
35
+ {#if !isValid.value}
81
36
  <Icon
82
37
  name="error"
83
38
  colour={Colour['$error-border']}
84
39
  size={Size.Small}
85
40
  />
86
- <!-- {:else}
87
- <Icon
88
- name="nothing"
89
- colour={Colour['$brand-primary']}
90
- size={Size.Small}
91
- {...option.iconRight}
92
- /> -->
93
41
  {/if}
94
42
  </button>
95
43
 
@@ -102,7 +50,7 @@
102
50
  cursor: pointer;
103
51
  font-size: 1rem;
104
52
  font-weight: 500;
105
- padding: 1rem;
53
+ padding: 1.0005rem;
106
54
  background-color: #ffffff;
107
55
  border: none;
108
56
  text-align: start;
@@ -142,12 +90,12 @@
142
90
  .tab:not(.no-radius):first-child {
143
91
  border-radius: 4px 0 0 0;
144
92
  }
145
- .tab:hover, .tab.selected:hover, .tab.invalid:hover {
146
- background-color: #f4f7f9;
93
+ .tab.invalid, .tab:hover.invalid, .tab.selected:hover.invalid {
94
+ color: #aa1414;
147
95
  }
148
- .tab.invalid .selected-marker {
149
- background-color: #aa1414 !important;
96
+ .tab.invalid .selected-marker, .tab:hover.invalid .selected-marker, .tab.selected:hover.invalid .selected-marker {
97
+ background-color: #aa1414;
150
98
  }
151
- .tab.invalid {
152
- color: #aa1414 !important;
99
+ .tab:hover, .tab.selected:hover, .tab.invalid:hover {
100
+ background-color: #f4f7f9;
153
101
  }</style>
@@ -1,14 +1,27 @@
1
1
  import type { TabOption } from '../Types/Internal/TabOption.js';
2
2
  import type { Snippet } from 'svelte';
3
+ /**
4
+ * Discriminated union props for HorizontalTabGroup. Either the search bar
5
+ * is disabled and `filterFn` cannot be supplied, or `filterable: true` and
6
+ * `filterFn` is required.
7
+ */
3
8
  export type HorizontalTabGroupProps<CommonDenominator> = HorizontalTabGroupPropsWithSearch<CommonDenominator> | HorizontalTabGroupPropsWithoutSearch<CommonDenominator>;
4
9
  interface HorizontalTabGroupPropsBase<CommonDenominator> {
10
+ /** Optional name for future persistence (not currently wired). */
5
11
  name?: string;
6
- tabComponent?: Snippet<[TabOption<CommonDenominator>, boolean]>;
12
+ /** Custom snippet that renders each tab. Receives the option and a `selected` boolean. */
13
+ tabComponent?: Snippet<[option: TabOption<CommonDenominator>, selected: boolean]>;
14
+ /** Strip the outer border radius. */
7
15
  noRadius?: boolean;
16
+ /** Stretch to fill the parent's flex axis. */
8
17
  grow?: boolean;
9
- tabs: Array<TabOption<CommonDenominator>>;
18
+ /** The tabs to render. Keyed by `option.label`. */
19
+ tabs: ReadonlyArray<TabOption<CommonDenominator>>;
20
+ /** Currently selected tab, matched by reference. */
10
21
  selected: TabOption<CommonDenominator> | undefined;
22
+ /** Render a search box above the tabs. */
11
23
  filterable?: boolean;
24
+ /** Predicate used to filter tabs on each keystroke (debounced by 300ms). */
12
25
  filterFn?: (item: TabOption<CommonDenominator>, filterValue: string) => boolean;
13
26
  }
14
27
  export interface HorizontalTabGroupPropsWithoutSearch<CommonDenominator> extends HorizontalTabGroupPropsBase<CommonDenominator> {
@@ -1,6 +1,9 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts" module>
3
+ <script
4
+ lang="ts"
5
+ module
6
+ >
4
7
  import { passthrough } from '../Helpers/Helpers.svelte.js';
5
8
  import { Size } from '../Types/Internal/Size.js';
6
9
  import { Variant } from '../Types/Internal/Variant.js';
@@ -18,8 +21,17 @@
18
21
  [Size.DoubleXLarge]: '40',
19
22
  [Size.TripleXLarge]: '40',
20
23
  [Size.FillHeight]: '24',
21
- [Size.FillWidth]: '24'
24
+ [Size.FillWidth]: '24',
22
25
  };
26
+
27
+ // SECURITY invariant: the `icons` map must remain frozen. The component
28
+ // inlines `displayIcon.svg` via `{@html}` and relies on the freeze to
29
+ // guarantee no runtime mutation of the SVG payload (XSS sink otherwise).
30
+ // This runtime check fires once at module evaluation; if it ever fails,
31
+ // the build/runtime should be considered compromised.
32
+ if (!Object.isFrozen(icons)) {
33
+ throw new Error('Icon: icons map is not frozen. Refusing to inline SVG fragments via {@html}.');
34
+ }
23
35
  </script>
24
36
 
25
37
  <script lang="ts">
@@ -41,11 +53,20 @@
41
53
  bottom,
42
54
  colour,
43
55
  onclick,
44
- rotate
56
+ rotate,
45
57
  }: IconProps = $props();
46
58
 
47
59
  const dim = $derived(sizes[size]);
48
60
  const displayIcon = $derived(icons[name]);
61
+
62
+ // Build the inline style string once per reactive input change rather
63
+ // than on every render. Cheap allocation reduction for the many-Icon-
64
+ // per-screen case (toolbars, table cells, status indicators).
65
+ const styleString = $derived(
66
+ `--zindex: ${zindex.toString()}; --left: ${left ?? ''}; --right: ${right ?? ''}; --top: ${top ?? ''}; --bottom: ${bottom ?? ''}; --anchorX: ${anchorX ?? ''}; --anchorY: ${anchorY ?? ''};${colour ? ` --colour: ${colour};` : ''}`
67
+ );
68
+
69
+ const ariaLabel = $derived(label ?? name.toString());
49
70
  </script>
50
71
 
51
72
  {#if clickable}
@@ -55,31 +76,35 @@
55
76
  class:header-icon={variant === Variant.HeaderIcon}
56
77
  class:fill-width={size === Size.FillWidth}
57
78
  class:fill-height={size === Size.FillHeight}
58
- style="--zindex: {zindex}; --left: {left}; --right: {right}; --top: {top}; --bottom: {bottom}; --anchorX: {anchorX}; --anchorY: {anchorY}; {colour
59
- ? `--colour: ${colour};`
60
- : ''}"
79
+ style={styleString}
61
80
  class:absolute={float}
62
81
  {onclick}
63
82
  class:rotate
64
83
  onkeydown={passthrough}
65
- aria-label={label ?? name.toString()}
84
+ aria-label={ariaLabel}
66
85
  >
67
86
  {#if displayIcon}
68
87
  <!-- SECURITY both displayIcon and its svg property have been frozen. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze -->
69
- <svg width={dim} height={dim} viewBox="0 0 {displayIcon.box} {displayIcon.box}"
70
- >{@html displayIcon.svg}</svg
88
+ <svg
89
+ width={dim}
90
+ height={dim}
91
+ viewBox="0 0 {displayIcon.box} {displayIcon.box}"
92
+ >
93
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
94
+ {@html displayIcon.svg}</svg
71
95
  >
72
96
  {:else}
73
- <span>Invalid Icon</span>
97
+ <span
98
+ aria-hidden="true"
99
+ class="invalid-icon"
100
+ ></span>
74
101
  {/if}
75
102
  </button>
76
103
  {:else if displayIcon}
77
104
  <!-- SECURITY both displayIcon and its svg property have been frozen. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze -->
78
105
  <svg
79
106
  class="icon"
80
- style="--zindex: {zindex}; --left: {left}; --right: {right}; --top: {top}; --bottom: {bottom}; --anchorX: {anchorX}; --anchorY: {anchorY}; {colour
81
- ? `--colour: ${colour};`
82
- : ''}"
107
+ style={styleString}
83
108
  class:absolute={float}
84
109
  class:invisible
85
110
  class:header-icon={variant === Variant.HeaderIcon}
@@ -88,22 +113,32 @@
88
113
  width={dim}
89
114
  height={dim}
90
115
  class:rotate
91
- viewBox="0 0 {displayIcon.box} {displayIcon.box}">{@html displayIcon.svg}</svg
116
+ viewBox="0 0 {displayIcon.box} {displayIcon.box}"
117
+ >
118
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
119
+ {@html displayIcon.svg}</svg
92
120
  >
93
121
  {:else}
94
- <span>Invalid Icon</span>
122
+ <span
123
+ aria-hidden="true"
124
+ class="invalid-icon"
125
+ ></span>
95
126
  {/if}
96
127
 
97
128
  <style>.rotate {
98
- animation: spin 1.5s forwards infinite linear;
99
129
  transform-origin: center;
100
130
  }
101
- @keyframes spin {
102
- 0% {
103
- transform: rotate(0deg);
131
+ @media (prefers-reduced-motion: no-preference) {
132
+ .rotate {
133
+ animation: spin 1.5s forwards infinite linear;
104
134
  }
105
- 100% {
106
- transform: rotate(360deg);
135
+ @keyframes spin {
136
+ 0% {
137
+ transform: rotate(0deg);
138
+ }
139
+ 100% {
140
+ transform: rotate(360deg);
141
+ }
107
142
  }
108
143
  }
109
144
 
@@ -111,6 +146,12 @@
111
146
  transition: border-color ease-out 0.15s 0s, background-color ease-out 0.15s 0s, color ease-out 0.15s 0s, fill ease-out 0.15s 0s;
112
147
  }
113
148
 
149
+ .invalid-icon {
150
+ display: inline-block;
151
+ width: 0;
152
+ height: 0;
153
+ }
154
+
114
155
  .absolute {
115
156
  position: absolute;
116
157
  z-index: var(--zindex, 3);