@simplysm/solid 13.0.69 → 13.0.71

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 (495) hide show
  1. package/README.md +168 -195
  2. package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
  3. package/dist/components/data/calendar/Calendar.js +15 -2
  4. package/dist/components/data/calendar/Calendar.js.map +2 -2
  5. package/dist/components/data/kanban/KanbanContext.js +2 -2
  6. package/dist/components/data/kanban/KanbanContext.js.map +1 -1
  7. package/dist/components/data/list/List.d.ts +8 -8
  8. package/dist/components/data/list/ListContext.d.ts +1 -1
  9. package/dist/components/data/list/ListItem.d.ts +15 -15
  10. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
  11. package/dist/components/data/sheet/DataSheet.js +6 -4
  12. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  13. package/dist/components/data/sheet/DataSheetConfigDialog.js +8 -8
  14. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +1 -1
  15. package/dist/components/data/sheet/types.d.ts +4 -4
  16. package/dist/components/data/sheet/types.d.ts.map +1 -1
  17. package/dist/components/disclosure/Collapse.d.ts +4 -4
  18. package/dist/components/disclosure/Dialog.d.ts +24 -24
  19. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  20. package/dist/components/disclosure/Dialog.js +7 -2
  21. package/dist/components/disclosure/Dialog.js.map +2 -2
  22. package/dist/components/disclosure/DialogContext.d.ts +25 -25
  23. package/dist/components/disclosure/DialogContext.d.ts.map +1 -1
  24. package/dist/components/disclosure/DialogContext.js +1 -1
  25. package/dist/components/disclosure/DialogContext.js.map +1 -1
  26. package/dist/components/disclosure/DialogInstanceContext.d.ts +7 -7
  27. package/dist/components/disclosure/DialogInstanceContext.d.ts.map +1 -1
  28. package/dist/components/disclosure/DialogProvider.d.ts +3 -3
  29. package/dist/components/disclosure/Dropdown.d.ts +26 -24
  30. package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
  31. package/dist/components/disclosure/Dropdown.js +24 -8
  32. package/dist/components/disclosure/Dropdown.js.map +2 -2
  33. package/dist/components/disclosure/Tabs.js +1 -1
  34. package/dist/components/disclosure/Tabs.js.map +1 -1
  35. package/dist/components/disclosure/dialogZIndex.d.ts +9 -7
  36. package/dist/components/disclosure/dialogZIndex.d.ts.map +1 -1
  37. package/dist/components/disclosure/dialogZIndex.js +4 -0
  38. package/dist/components/disclosure/dialogZIndex.js.map +1 -1
  39. package/dist/components/features/crud-detail/CrudDetail.d.ts.map +1 -1
  40. package/dist/components/features/crud-detail/CrudDetail.js +34 -22
  41. package/dist/components/features/crud-detail/CrudDetail.js.map +2 -2
  42. package/dist/components/features/crud-sheet/CrudSheet.d.ts.map +1 -1
  43. package/dist/components/features/crud-sheet/CrudSheet.js +48 -33
  44. package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
  45. package/dist/components/features/crudRegistry.d.ts +16 -0
  46. package/dist/components/features/crudRegistry.d.ts.map +1 -0
  47. package/dist/components/features/crudRegistry.js +37 -0
  48. package/dist/components/features/crudRegistry.js.map +6 -0
  49. package/dist/components/features/data-select-button/DataSelectButton.d.ts +14 -14
  50. package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
  51. package/dist/components/features/data-select-button/DataSelectButton.js +27 -9
  52. package/dist/components/features/data-select-button/DataSelectButton.js.map +2 -2
  53. package/dist/components/features/permission-table/PermissionTable.d.ts +3 -3
  54. package/dist/components/features/permission-table/PermissionTable.d.ts.map +1 -1
  55. package/dist/components/features/permission-table/PermissionTable.js +74 -85
  56. package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
  57. package/dist/components/features/shared-data/SharedDataSelect.d.ts +12 -12
  58. package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
  59. package/dist/components/features/shared-data/SharedDataSelect.js +10 -6
  60. package/dist/components/features/shared-data/SharedDataSelect.js.map +2 -2
  61. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +10 -10
  62. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
  63. package/dist/components/features/shared-data/SharedDataSelectList.d.ts +23 -15
  64. package/dist/components/features/shared-data/SharedDataSelectList.d.ts.map +1 -1
  65. package/dist/components/features/shared-data/SharedDataSelectList.js +191 -65
  66. package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
  67. package/dist/components/features/shared-data/SharedDataSelectListContext.d.ts +15 -0
  68. package/dist/components/features/shared-data/SharedDataSelectListContext.d.ts.map +1 -0
  69. package/dist/components/features/shared-data/SharedDataSelectListContext.js +27 -0
  70. package/dist/components/features/shared-data/SharedDataSelectListContext.js.map +6 -0
  71. package/dist/components/feedback/Progress.d.ts +1 -1
  72. package/dist/components/feedback/Progress.d.ts.map +1 -1
  73. package/dist/components/feedback/busy/BusyContainer.d.ts +2 -2
  74. package/dist/components/feedback/busy/BusyContainer.d.ts.map +1 -1
  75. package/dist/components/feedback/busy/BusyContext.d.ts +11 -11
  76. package/dist/components/feedback/busy/BusyContext.d.ts.map +1 -1
  77. package/dist/components/feedback/busy/BusyContext.js +1 -1
  78. package/dist/components/feedback/busy/BusyContext.js.map +1 -1
  79. package/dist/components/feedback/busy/BusyProvider.d.ts +6 -6
  80. package/dist/components/feedback/busy/BusyProvider.d.ts.map +1 -1
  81. package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -1
  82. package/dist/components/feedback/notification/NotificationBanner.js +7 -3
  83. package/dist/components/feedback/notification/NotificationBanner.js.map +2 -2
  84. package/dist/components/feedback/notification/NotificationBell.js +2 -2
  85. package/dist/components/feedback/notification/NotificationBell.js.map +1 -1
  86. package/dist/components/feedback/notification/NotificationContext.d.ts +22 -22
  87. package/dist/components/feedback/notification/NotificationContext.d.ts.map +1 -1
  88. package/dist/components/feedback/notification/NotificationContext.js +1 -1
  89. package/dist/components/feedback/notification/NotificationContext.js.map +1 -1
  90. package/dist/components/feedback/notification/NotificationProvider.d.ts +5 -5
  91. package/dist/components/feedback/notification/NotificationProvider.js +1 -1
  92. package/dist/components/feedback/notification/NotificationProvider.js.map +1 -1
  93. package/dist/components/feedback/print/PrintContext.js +1 -1
  94. package/dist/components/feedback/print/PrintContext.js.map +1 -1
  95. package/dist/components/form-control/DropdownTrigger.styles.d.ts +1 -1
  96. package/dist/components/form-control/DropdownTrigger.styles.d.ts.map +1 -1
  97. package/dist/components/form-control/ThemeToggle.d.ts +7 -7
  98. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
  99. package/dist/components/form-control/ThemeToggle.js +3 -3
  100. package/dist/components/form-control/checkbox/Checkbox.js +1 -1
  101. package/dist/components/form-control/checkbox/CheckboxGroup.js +1 -1
  102. package/dist/components/form-control/checkbox/Radio.js +1 -1
  103. package/dist/components/form-control/checkbox/RadioGroup.js +1 -1
  104. package/dist/components/form-control/color-picker/ColorPicker.d.ts +12 -12
  105. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  106. package/dist/components/form-control/color-picker/ColorPicker.js +2 -2
  107. package/dist/components/form-control/combobox/Combobox.d.ts +22 -22
  108. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  109. package/dist/components/form-control/combobox/Combobox.js +2 -2
  110. package/dist/components/form-control/combobox/ComboboxContext.d.ts +4 -4
  111. package/dist/components/form-control/combobox/ComboboxContext.d.ts.map +1 -1
  112. package/dist/components/form-control/combobox/ComboboxContext.js +1 -1
  113. package/dist/components/form-control/combobox/ComboboxContext.js.map +1 -1
  114. package/dist/components/form-control/combobox/ComboboxItem.d.ts +3 -3
  115. package/dist/components/form-control/combobox/ComboboxItem.d.ts.map +1 -1
  116. package/dist/components/form-control/date-range-picker/DateRangePicker.d.ts +14 -14
  117. package/dist/components/form-control/date-range-picker/DateRangePicker.d.ts.map +1 -1
  118. package/dist/components/form-control/date-range-picker/DateRangePicker.js +20 -9
  119. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
  120. package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
  121. package/dist/components/form-control/editor/EditorToolbar.js +65 -20
  122. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  123. package/dist/components/form-control/editor/RichTextEditor.d.ts +6 -6
  124. package/dist/components/form-control/editor/RichTextEditor.d.ts.map +1 -1
  125. package/dist/components/form-control/editor/RichTextEditor.js +1 -1
  126. package/dist/components/form-control/editor/editor.css +5 -5
  127. package/dist/components/form-control/field/DatePicker.d.ts +22 -22
  128. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  129. package/dist/components/form-control/field/DatePicker.js +4 -4
  130. package/dist/components/form-control/field/DatePicker.js.map +1 -1
  131. package/dist/components/form-control/field/DateTimePicker.d.ts +21 -21
  132. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  133. package/dist/components/form-control/field/DateTimePicker.js +4 -4
  134. package/dist/components/form-control/field/DateTimePicker.js.map +1 -1
  135. package/dist/components/form-control/field/FieldPlaceholder.d.ts +1 -1
  136. package/dist/components/form-control/field/FieldPlaceholder.d.ts.map +1 -1
  137. package/dist/components/form-control/field/NumberInput.d.ts +23 -23
  138. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  139. package/dist/components/form-control/field/NumberInput.js +4 -4
  140. package/dist/components/form-control/field/NumberInput.js.map +1 -1
  141. package/dist/components/form-control/field/TextInput.d.ts +25 -25
  142. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  143. package/dist/components/form-control/field/TextInput.js +5 -5
  144. package/dist/components/form-control/field/TextInput.js.map +1 -1
  145. package/dist/components/form-control/field/Textarea.d.ts +19 -19
  146. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  147. package/dist/components/form-control/field/Textarea.js +4 -4
  148. package/dist/components/form-control/field/Textarea.js.map +1 -1
  149. package/dist/components/form-control/field/TimePicker.d.ts +20 -20
  150. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  151. package/dist/components/form-control/field/TimePicker.js +4 -4
  152. package/dist/components/form-control/field/TimePicker.js.map +1 -1
  153. package/dist/components/form-control/numpad/Numpad.d.ts +11 -11
  154. package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
  155. package/dist/components/form-control/select/Select.d.ts +26 -26
  156. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  157. package/dist/components/form-control/select/Select.js +34 -23
  158. package/dist/components/form-control/select/Select.js.map +2 -2
  159. package/dist/components/form-control/select/SelectContext.d.ts +7 -7
  160. package/dist/components/form-control/select/SelectContext.d.ts.map +1 -1
  161. package/dist/components/form-control/select/SelectContext.js +1 -1
  162. package/dist/components/form-control/select/SelectContext.js.map +1 -1
  163. package/dist/components/form-control/select/SelectItem.d.ts +4 -4
  164. package/dist/components/form-control/select/SelectItem.d.ts.map +1 -1
  165. package/dist/components/form-control/state-preset/StatePreset.js +8 -8
  166. package/dist/components/form-control/state-preset/StatePreset.js.map +1 -1
  167. package/dist/components/layout/FormTable.js +4 -4
  168. package/dist/components/layout/sidebar/Sidebar.d.ts +5 -5
  169. package/dist/components/layout/sidebar/SidebarContainer.d.ts +11 -11
  170. package/dist/components/layout/sidebar/SidebarContainer.d.ts.map +1 -1
  171. package/dist/components/layout/sidebar/SidebarContainer.js +6 -1
  172. package/dist/components/layout/sidebar/SidebarContainer.js.map +2 -2
  173. package/dist/components/layout/sidebar/SidebarContext.d.ts +7 -7
  174. package/dist/components/layout/sidebar/SidebarContext.js +1 -1
  175. package/dist/components/layout/sidebar/SidebarContext.js.map +1 -1
  176. package/dist/components/layout/sidebar/SidebarMenu.d.ts +11 -11
  177. package/dist/components/layout/sidebar/SidebarUser.d.ts +14 -14
  178. package/dist/components/layout/topbar/Topbar.d.ts +6 -6
  179. package/dist/components/layout/topbar/Topbar.d.ts.map +1 -1
  180. package/dist/components/layout/topbar/Topbar.js +11 -6
  181. package/dist/components/layout/topbar/Topbar.js.map +2 -2
  182. package/dist/components/layout/topbar/TopbarContainer.d.ts +6 -6
  183. package/dist/components/layout/topbar/TopbarContext.js +2 -2
  184. package/dist/components/layout/topbar/TopbarContext.js.map +1 -1
  185. package/dist/components/layout/topbar/TopbarMenu.d.ts +11 -11
  186. package/dist/components/layout/topbar/TopbarMenu.d.ts.map +1 -1
  187. package/dist/components/layout/topbar/TopbarMenu.js +5 -1
  188. package/dist/components/layout/topbar/TopbarMenu.js.map +2 -2
  189. package/dist/components/layout/topbar/TopbarUser.d.ts +9 -9
  190. package/dist/directives/ripple.d.ts +5 -5
  191. package/dist/helpers/createAppStructure.d.ts.map +1 -1
  192. package/dist/helpers/createAppStructure.js +7 -3
  193. package/dist/helpers/createAppStructure.js.map +1 -1
  194. package/dist/helpers/createHmrSafeContext.d.ts +3 -0
  195. package/dist/helpers/createHmrSafeContext.d.ts.map +1 -0
  196. package/dist/helpers/createHmrSafeContext.js +10 -0
  197. package/dist/helpers/createHmrSafeContext.js.map +6 -0
  198. package/dist/helpers/createSlotComponent.d.ts +3 -3
  199. package/dist/helpers/mergeStyles.d.ts +8 -8
  200. package/dist/hooks/createControllableSignal.d.ts +10 -10
  201. package/dist/hooks/createControllableStore.d.ts +6 -6
  202. package/dist/hooks/createIMEHandler.d.ts +7 -7
  203. package/dist/hooks/createMountTransition.d.ts +4 -4
  204. package/dist/hooks/createSelectionGroup.d.ts.map +1 -1
  205. package/dist/hooks/createSelectionGroup.js +4 -3
  206. package/dist/hooks/createSelectionGroup.js.map +2 -2
  207. package/dist/hooks/createSlotSignal.d.ts +2 -2
  208. package/dist/hooks/useLocalStorage.d.ts +11 -11
  209. package/dist/hooks/useLogger.d.ts +1 -1
  210. package/dist/hooks/useLogger.d.ts.map +1 -1
  211. package/dist/hooks/useLogger.js +1 -1
  212. package/dist/hooks/useLogger.js.map +1 -1
  213. package/dist/hooks/useRouterLink.d.ts +10 -10
  214. package/dist/hooks/useRouterLink.d.ts.map +1 -1
  215. package/dist/index.d.ts +2 -1
  216. package/dist/index.d.ts.map +1 -1
  217. package/dist/index.js +2 -1
  218. package/dist/index.js.map +1 -1
  219. package/dist/providers/ClipboardProvider.d.ts +5 -5
  220. package/dist/providers/ConfigContext.d.ts +6 -6
  221. package/dist/providers/ConfigContext.js +2 -2
  222. package/dist/providers/ConfigContext.js.map +1 -1
  223. package/dist/providers/ErrorLoggerProvider.d.ts +3 -3
  224. package/dist/providers/LoggerContext.d.ts +13 -13
  225. package/dist/providers/PwaUpdateProvider.d.ts +4 -4
  226. package/dist/providers/PwaUpdateProvider.js +2 -2
  227. package/dist/providers/PwaUpdateProvider.js.map +1 -1
  228. package/dist/providers/ServiceClientContext.d.ts +8 -8
  229. package/dist/providers/ServiceClientContext.d.ts.map +1 -1
  230. package/dist/providers/ServiceClientContext.js +1 -1
  231. package/dist/providers/ServiceClientContext.js.map +1 -1
  232. package/dist/providers/ServiceClientProvider.d.ts +6 -6
  233. package/dist/providers/ServiceClientProvider.js +7 -7
  234. package/dist/providers/ServiceClientProvider.js.map +1 -1
  235. package/dist/providers/SyncStorageContext.d.ts +14 -14
  236. package/dist/providers/SystemProvider.d.ts.map +1 -1
  237. package/dist/providers/SystemProvider.js +21 -16
  238. package/dist/providers/SystemProvider.js.map +2 -2
  239. package/dist/providers/ThemeContext.d.ts +20 -20
  240. package/dist/providers/ThemeContext.d.ts.map +1 -1
  241. package/dist/providers/ThemeContext.js +1 -1
  242. package/dist/providers/ThemeContext.js.map +1 -1
  243. package/dist/providers/i18n/I18nContext.d.ts +44 -0
  244. package/dist/providers/i18n/I18nContext.d.ts.map +1 -0
  245. package/dist/providers/i18n/I18nContext.js +73 -0
  246. package/dist/providers/i18n/I18nContext.js.map +6 -0
  247. package/dist/providers/i18n/I18nContext.types.d.ts +28 -0
  248. package/dist/providers/i18n/I18nContext.types.d.ts.map +1 -0
  249. package/dist/providers/i18n/I18nContext.types.js +1 -0
  250. package/dist/providers/i18n/I18nContext.types.js.map +6 -0
  251. package/dist/providers/i18n/i18nUtils.d.ts +18 -0
  252. package/dist/providers/i18n/i18nUtils.d.ts.map +1 -0
  253. package/dist/providers/i18n/i18nUtils.js +25 -0
  254. package/dist/providers/i18n/i18nUtils.js.map +6 -0
  255. package/dist/providers/i18n/locales/en.d.ts +163 -0
  256. package/dist/providers/i18n/locales/en.d.ts.map +1 -0
  257. package/dist/providers/i18n/locales/en.js +165 -0
  258. package/dist/providers/i18n/locales/en.js.map +6 -0
  259. package/dist/providers/i18n/locales/ko.d.ts +163 -0
  260. package/dist/providers/i18n/locales/ko.d.ts.map +1 -0
  261. package/dist/providers/i18n/locales/ko.js +165 -0
  262. package/dist/providers/i18n/locales/ko.js.map +6 -0
  263. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts +4 -4
  264. package/dist/providers/shared-data/SharedDataContext.d.ts +28 -28
  265. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
  266. package/dist/providers/shared-data/SharedDataContext.js +1 -1
  267. package/dist/providers/shared-data/SharedDataContext.js.map +1 -1
  268. package/dist/providers/shared-data/SharedDataProvider.d.ts +9 -9
  269. package/dist/providers/shared-data/SharedDataProvider.js +4 -4
  270. package/dist/providers/shared-data/SharedDataProvider.js.map +1 -1
  271. package/package.json +9 -8
  272. package/src/components/data/calendar/Calendar.tsx +10 -4
  273. package/src/components/data/kanban/Kanban.tsx +14 -14
  274. package/src/components/data/kanban/KanbanContext.ts +3 -3
  275. package/src/components/data/list/List.tsx +10 -10
  276. package/src/components/data/list/ListContext.ts +1 -1
  277. package/src/components/data/list/ListItem.styles.ts +8 -8
  278. package/src/components/data/list/ListItem.tsx +15 -15
  279. package/src/components/data/sheet/DataSheet.styles.ts +22 -22
  280. package/src/components/data/sheet/DataSheet.tsx +52 -48
  281. package/src/components/data/sheet/DataSheetColumn.tsx +1 -1
  282. package/src/components/data/sheet/DataSheetConfigDialog.tsx +9 -9
  283. package/src/components/data/sheet/sheetUtils.ts +7 -7
  284. package/src/components/data/sheet/types.ts +16 -16
  285. package/src/components/disclosure/Collapse.tsx +11 -11
  286. package/src/components/disclosure/Dialog.tsx +60 -57
  287. package/src/components/disclosure/DialogContext.ts +26 -26
  288. package/src/components/disclosure/DialogInstanceContext.ts +7 -7
  289. package/src/components/disclosure/DialogProvider.tsx +5 -5
  290. package/src/components/disclosure/Dropdown.tsx +89 -75
  291. package/src/components/disclosure/Tabs.tsx +1 -1
  292. package/src/components/disclosure/dialogZIndex.ts +16 -11
  293. package/src/components/display/Echarts.tsx +4 -4
  294. package/src/components/features/address/AddressSearch.tsx +2 -2
  295. package/src/components/features/crud-detail/CrudDetail.tsx +34 -21
  296. package/src/components/features/crud-detail/CrudDetailAfter.tsx +1 -1
  297. package/src/components/features/crud-detail/CrudDetailBefore.tsx +1 -1
  298. package/src/components/features/crud-detail/CrudDetailTools.tsx +1 -1
  299. package/src/components/features/crud-sheet/CrudSheet.tsx +52 -40
  300. package/src/components/features/crud-sheet/CrudSheetColumn.tsx +1 -1
  301. package/src/components/features/crud-sheet/CrudSheetFilter.tsx +1 -1
  302. package/src/components/features/crud-sheet/CrudSheetHeader.tsx +1 -1
  303. package/src/components/features/crud-sheet/CrudSheetTools.tsx +1 -1
  304. package/src/components/features/crudRegistry.ts +60 -0
  305. package/src/components/features/data-select-button/DataSelectButton.tsx +34 -32
  306. package/src/components/features/permission-table/PermissionTable.tsx +70 -64
  307. package/src/components/features/shared-data/SharedDataSelect.tsx +24 -22
  308. package/src/components/features/shared-data/SharedDataSelectButton.tsx +10 -10
  309. package/src/components/features/shared-data/SharedDataSelectList.tsx +231 -59
  310. package/src/components/features/shared-data/SharedDataSelectListContext.ts +39 -0
  311. package/src/components/feedback/Progress.tsx +1 -1
  312. package/src/components/feedback/busy/BusyContainer.tsx +6 -6
  313. package/src/components/feedback/busy/BusyContext.ts +12 -12
  314. package/src/components/feedback/busy/BusyProvider.tsx +6 -6
  315. package/src/components/feedback/notification/NotificationBanner.tsx +3 -1
  316. package/src/components/feedback/notification/NotificationBell.tsx +4 -4
  317. package/src/components/feedback/notification/NotificationContext.ts +28 -28
  318. package/src/components/feedback/notification/NotificationProvider.tsx +9 -9
  319. package/src/components/feedback/print/PrintContext.ts +1 -1
  320. package/src/components/form-control/Button.tsx +1 -1
  321. package/src/components/form-control/DropdownTrigger.styles.ts +1 -1
  322. package/src/components/form-control/Invalid.tsx +5 -5
  323. package/src/components/form-control/ThemeToggle.tsx +10 -10
  324. package/src/components/form-control/checkbox/Checkbox.styles.ts +8 -8
  325. package/src/components/form-control/checkbox/Checkbox.tsx +2 -2
  326. package/src/components/form-control/checkbox/CheckboxGroup.tsx +1 -1
  327. package/src/components/form-control/checkbox/Radio.tsx +2 -2
  328. package/src/components/form-control/checkbox/RadioGroup.tsx +1 -1
  329. package/src/components/form-control/color-picker/ColorPicker.tsx +17 -17
  330. package/src/components/form-control/combobox/Combobox.tsx +55 -55
  331. package/src/components/form-control/combobox/ComboboxContext.ts +5 -5
  332. package/src/components/form-control/combobox/ComboboxItem.tsx +3 -3
  333. package/src/components/form-control/date-range-picker/DateRangePicker.tsx +40 -26
  334. package/src/components/form-control/editor/EditorToolbar.tsx +52 -50
  335. package/src/components/form-control/editor/RichTextEditor.tsx +16 -16
  336. package/src/components/form-control/editor/editor.css +5 -5
  337. package/src/components/form-control/field/DatePicker.tsx +39 -39
  338. package/src/components/form-control/field/DateTimePicker.tsx +38 -38
  339. package/src/components/form-control/field/Field.styles.ts +11 -11
  340. package/src/components/form-control/field/FieldPlaceholder.tsx +1 -1
  341. package/src/components/form-control/field/NumberInput.tsx +63 -63
  342. package/src/components/form-control/field/TextInput.tsx +48 -48
  343. package/src/components/form-control/field/Textarea.tsx +32 -32
  344. package/src/components/form-control/field/TimePicker.tsx +37 -37
  345. package/src/components/form-control/numpad/Numpad.tsx +26 -26
  346. package/src/components/form-control/select/Select.tsx +82 -86
  347. package/src/components/form-control/select/SelectContext.ts +8 -8
  348. package/src/components/form-control/select/SelectItem.tsx +5 -5
  349. package/src/components/form-control/state-preset/StatePreset.tsx +13 -13
  350. package/src/components/layout/FormTable.tsx +4 -4
  351. package/src/components/layout/sidebar/Sidebar.tsx +8 -8
  352. package/src/components/layout/sidebar/SidebarContainer.tsx +19 -17
  353. package/src/components/layout/sidebar/SidebarContext.ts +8 -8
  354. package/src/components/layout/sidebar/SidebarMenu.tsx +19 -19
  355. package/src/components/layout/sidebar/SidebarUser.tsx +14 -14
  356. package/src/components/layout/topbar/Topbar.tsx +15 -13
  357. package/src/components/layout/topbar/TopbarContainer.tsx +6 -6
  358. package/src/components/layout/topbar/TopbarContext.ts +2 -2
  359. package/src/components/layout/topbar/TopbarMenu.tsx +18 -16
  360. package/src/components/layout/topbar/TopbarUser.tsx +9 -9
  361. package/src/directives/ripple.ts +8 -8
  362. package/src/helpers/createAppStructure.ts +15 -8
  363. package/src/helpers/createHmrSafeContext.ts +8 -0
  364. package/src/helpers/createSlotComponent.ts +4 -4
  365. package/src/helpers/mergeStyles.ts +11 -11
  366. package/src/hooks/createControllableSignal.ts +11 -11
  367. package/src/hooks/createControllableStore.ts +8 -8
  368. package/src/hooks/createIMEHandler.ts +7 -7
  369. package/src/hooks/createMountTransition.ts +4 -4
  370. package/src/hooks/createSelectionGroup.tsx +5 -3
  371. package/src/hooks/createSlotSignal.ts +2 -2
  372. package/src/hooks/useLocalStorage.ts +13 -13
  373. package/src/hooks/useLogger.ts +2 -2
  374. package/src/hooks/useRouterLink.ts +15 -15
  375. package/src/index.ts +4 -3
  376. package/src/providers/ClipboardProvider.tsx +19 -19
  377. package/src/providers/ConfigContext.tsx +8 -8
  378. package/src/providers/ErrorLoggerProvider.tsx +3 -3
  379. package/src/providers/LoggerContext.tsx +13 -13
  380. package/src/providers/PwaUpdateProvider.tsx +6 -6
  381. package/src/providers/ServiceClientContext.ts +9 -9
  382. package/src/providers/ServiceClientProvider.tsx +15 -15
  383. package/src/providers/SyncStorageContext.tsx +15 -15
  384. package/src/providers/SystemProvider.tsx +15 -12
  385. package/src/providers/ThemeContext.tsx +26 -26
  386. package/src/providers/i18n/I18nContext.tsx +129 -0
  387. package/src/providers/i18n/I18nContext.types.ts +30 -0
  388. package/src/providers/i18n/i18nUtils.ts +38 -0
  389. package/src/providers/i18n/locales/en.ts +161 -0
  390. package/src/providers/i18n/locales/ko.ts +161 -0
  391. package/src/providers/shared-data/SharedDataChangeEvent.ts +4 -4
  392. package/src/providers/shared-data/SharedDataContext.ts +29 -29
  393. package/src/providers/shared-data/SharedDataProvider.tsx +21 -21
  394. package/src/styles/patterns.styles.ts +6 -6
  395. package/src/styles/tokens.styles.ts +5 -5
  396. package/tailwind.config.ts +1 -1
  397. package/tailwind.css +4 -4
  398. package/tests/components/data/List.spec.tsx +689 -0
  399. package/tests/components/data/Pagination.spec.tsx +336 -0
  400. package/tests/components/data/Table.spec.tsx +55 -0
  401. package/tests/components/data/kanban/Kanban.selection.spec.tsx +213 -0
  402. package/tests/components/data/sheet/DataSheet.spec.tsx +645 -0
  403. package/tests/components/disclosure/Collapse.spec.tsx +173 -0
  404. package/tests/components/disclosure/Dialog.spec.tsx +438 -0
  405. package/tests/components/disclosure/DialogProvider.spec.tsx +142 -0
  406. package/tests/components/disclosure/Dropdown.spec.tsx +333 -0
  407. package/tests/components/disclosure/Tabs.spec.tsx +220 -0
  408. package/tests/components/disclosure/dialogZIndex.spec.ts +45 -0
  409. package/tests/components/display/Alert.spec.tsx +47 -0
  410. package/tests/components/display/Barcode.spec.tsx +61 -0
  411. package/tests/components/display/Card.spec.tsx +41 -0
  412. package/tests/components/display/Link.spec.tsx +62 -0
  413. package/tests/components/display/Tag.spec.tsx +47 -0
  414. package/tests/components/features/address/AddressSearch.spec.tsx +45 -0
  415. package/tests/components/features/crud-detail/CrudDetail.spec.tsx +537 -0
  416. package/tests/components/features/crud-sheet/CrudSheet.spec.tsx +491 -0
  417. package/tests/components/features/crudRegistry.spec.ts +119 -0
  418. package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +482 -0
  419. package/tests/components/features/permission-table/PermissionTable.spec.tsx +288 -0
  420. package/tests/components/features/shared-data/SharedDataSelectList.spec.tsx +448 -0
  421. package/tests/components/feedback/busy/BusyContainer.spec.tsx +80 -0
  422. package/tests/components/feedback/notification/LiveRegion.spec.tsx +52 -0
  423. package/tests/components/feedback/notification/NotificationBanner.spec.tsx +187 -0
  424. package/tests/components/feedback/notification/NotificationBell.spec.tsx +226 -0
  425. package/tests/components/feedback/notification/NotificationContext.spec.tsx +362 -0
  426. package/tests/components/feedback/print/Print.spec.tsx +45 -0
  427. package/tests/components/form-control/Button.spec.tsx +119 -0
  428. package/tests/components/form-control/Invalid.spec.tsx +131 -0
  429. package/tests/components/form-control/checkbox/Checkbox.spec.tsx +137 -0
  430. package/tests/components/form-control/checkbox/CheckboxGroup.spec.tsx +108 -0
  431. package/tests/components/form-control/checkbox/Radio.spec.tsx +138 -0
  432. package/tests/components/form-control/checkbox/RadioGroup.spec.tsx +108 -0
  433. package/tests/components/form-control/color-picker/ColorPicker.spec.tsx +94 -0
  434. package/tests/components/form-control/combobox/Combobox.spec.tsx +253 -0
  435. package/tests/components/form-control/combobox/ComboboxItem.spec.tsx +88 -0
  436. package/tests/components/form-control/date-range-picker/DateRangePicker.spec.tsx +208 -0
  437. package/tests/components/form-control/field/DatePicker.spec.tsx +381 -0
  438. package/tests/components/form-control/field/DateTimePicker.spec.tsx +383 -0
  439. package/tests/components/form-control/field/NumberInput.spec.tsx +371 -0
  440. package/tests/components/form-control/field/TextInput.spec.tsx +341 -0
  441. package/tests/components/form-control/field/Textarea.spec.tsx +224 -0
  442. package/tests/components/form-control/field/TimePicker.spec.tsx +315 -0
  443. package/tests/components/form-control/numpad/Numpad.spec.tsx +248 -0
  444. package/tests/components/form-control/select/Select.spec.tsx +676 -0
  445. package/tests/components/form-control/select/SelectItem.spec.tsx +174 -0
  446. package/tests/components/layout/FormGroup.spec.tsx +104 -0
  447. package/tests/components/layout/FormTable.spec.tsx +43 -0
  448. package/tests/components/layout/sidebar/Sidebar.spec.tsx +192 -0
  449. package/tests/components/layout/sidebar/SidebarContainer.spec.tsx +261 -0
  450. package/tests/components/layout/sidebar/SidebarMenu.spec.tsx +219 -0
  451. package/tests/components/layout/sidebar/SidebarUser.spec.tsx +133 -0
  452. package/tests/components/layout/topbar/TopbarActions.spec.tsx +77 -0
  453. package/tests/components/layout/topbar/TopbarContainer.spec.tsx +38 -0
  454. package/tests/components/layout/topbar/createTopbarActions.spec.tsx +66 -0
  455. package/tests/directives/ripple.spec.tsx +130 -0
  456. package/tests/helpers/createAppStructure.spec.tsx +843 -0
  457. package/tests/helpers/mergeStyles.spec.ts +172 -0
  458. package/tests/hooks/createControllableSignal.spec.ts +194 -0
  459. package/tests/hooks/createIMEHandler.spec.ts +80 -0
  460. package/tests/hooks/createMountTransition.spec.ts +86 -0
  461. package/tests/hooks/useLocalStorage.spec.tsx +223 -0
  462. package/tests/hooks/useLogger.spec.tsx +116 -0
  463. package/tests/hooks/usePrint.spec.tsx +134 -0
  464. package/tests/hooks/useRouterLink.spec.tsx +183 -0
  465. package/tests/hooks/useSyncConfig.spec.tsx +304 -0
  466. package/tests/providers/ClipboardProvider.spec.tsx +20 -0
  467. package/tests/providers/ConfigContext.spec.tsx +42 -0
  468. package/tests/providers/ErrorLoggerProvider.spec.tsx +73 -0
  469. package/tests/providers/LoggerContext.spec.tsx +76 -0
  470. package/tests/providers/PwaUpdateProvider.spec.tsx +22 -0
  471. package/tests/providers/ServiceClientContext.spec.tsx +88 -0
  472. package/tests/providers/SyncStorageContext.spec.tsx +77 -0
  473. package/tests/providers/i18n/I18nContext.spec.tsx +110 -0
  474. package/tests/providers/shared-data/SharedDataProvider.spec.tsx +401 -0
  475. package/tests/vitest-env.d.ts +1 -0
  476. package/dist/components/form-control/select-list/SelectList.d.ts +0 -54
  477. package/dist/components/form-control/select-list/SelectList.d.ts.map +0 -1
  478. package/dist/components/form-control/select-list/SelectList.js +0 -280
  479. package/dist/components/form-control/select-list/SelectList.js.map +0 -6
  480. package/dist/components/form-control/select-list/SelectListContext.d.ts +0 -13
  481. package/dist/components/form-control/select-list/SelectListContext.d.ts.map +0 -1
  482. package/dist/components/form-control/select-list/SelectListContext.js +0 -14
  483. package/dist/components/form-control/select-list/SelectListContext.js.map +0 -6
  484. package/docs/data-components.md +0 -782
  485. package/docs/disclosure.md +0 -254
  486. package/docs/display.md +0 -153
  487. package/docs/feedback.md +0 -238
  488. package/docs/form-controls.md +0 -1068
  489. package/docs/helpers.md +0 -54
  490. package/docs/hooks.md +0 -588
  491. package/docs/layout.md +0 -384
  492. package/docs/providers.md +0 -211
  493. package/docs/styling.md +0 -184
  494. package/src/components/form-control/select-list/SelectList.tsx +0 -385
  495. package/src/components/form-control/select-list/SelectListContext.ts +0 -23
package/docs/layout.md DELETED
@@ -1,384 +0,0 @@
1
- # Layout Components
2
-
3
- ## Sidebar
4
-
5
- Sidebar navigation with responsive support (mobile overlay below 520px). Open/closed state is in-memory only (resets on page refresh).
6
-
7
- ```tsx
8
- import { Sidebar, Topbar } from "@simplysm/solid";
9
- import { useNavigate } from "@solidjs/router";
10
-
11
- const navigate = useNavigate();
12
-
13
- <Sidebar.Container>
14
- <Sidebar>
15
- <Sidebar.User
16
- name="John Doe"
17
- description="john@example.com"
18
- menus={[
19
- { title: "Profile", onClick: () => navigate("/profile") },
20
- { title: "Logout", onClick: handleLogout },
21
- ]}
22
- />
23
- <Sidebar.Menu menus={menuItems} />
24
- </Sidebar>
25
- <div class="flex flex-1 flex-col">
26
- <Topbar>
27
- <h1>App Name</h1>
28
- </Topbar>
29
- <main class="flex-1 overflow-auto p-4">
30
- {/* main content */}
31
- </main>
32
- </div>
33
- </Sidebar.Container>
34
- ```
35
-
36
- **Sub-components:**
37
- - `Sidebar.Container` -- Container wrapping sidebar and main area (required)
38
- - `Sidebar.Menu` -- Menu items list (`menus: SidebarMenuItem[]`)
39
- - `Sidebar.User` -- User info area with avatar and optional dropdown menu
40
-
41
- **Sidebar.User Props:**
42
-
43
- | Prop | Type | Default | Description |
44
- |------|------|---------|-------------|
45
- | `name` | `string` | **(required)** | User name |
46
- | `description` | `string` | - | Optional additional info (email, role, etc.). If omitted, only name is shown |
47
- | `icon` | `Component<TablerIconProps>` | `IconUser` | Avatar icon (Tabler Icons component). Rendered in a circular badge |
48
- | `menus` | `SidebarUserMenu[]` | - | Dropdown menu items. When present, component becomes clickable |
49
-
50
- **SidebarUserMenu type:**
51
-
52
- ```typescript
53
- interface SidebarUserMenu {
54
- title: string;
55
- onClick: () => void;
56
- }
57
- ```
58
-
59
- **SidebarMenuItem type:**
60
-
61
- ```typescript
62
- interface SidebarMenuItem {
63
- title: string;
64
- href?: string;
65
- icon?: Component<IconProps>;
66
- children?: SidebarMenuItem[];
67
- }
68
- ```
69
-
70
- **useSidebarContext / useSidebarContextOptional hooks:**
71
-
72
- ```tsx
73
- import { useSidebarContext, useSidebarContextOptional } from "@simplysm/solid";
74
-
75
- // Throws if not inside Sidebar.Container
76
- const sidebar = useSidebarContext();
77
- sidebar.toggle(); // current open/closed state
78
- sidebar.setToggle(false); // programmatically close
79
-
80
- // Returns undefined if not inside Sidebar.Container (no error)
81
- const sidebarOpt = useSidebarContextOptional();
82
- ```
83
-
84
- **SM_MEDIA_QUERY constant:**
85
-
86
- Exported media query string matching the Tailwind `sm:` breakpoint (640px). Use this to align custom responsive logic with sidebar behavior.
87
-
88
- ```typescript
89
- import { SM_MEDIA_QUERY } from "@simplysm/solid";
90
-
91
- const mql = window.matchMedia(SM_MEDIA_QUERY); // "(min-width: 640px)"
92
- ```
93
-
94
- ---
95
-
96
- ## Topbar
97
-
98
- Top navigation bar. When used inside `Sidebar.Container`, a sidebar toggle button appears automatically.
99
-
100
- ```tsx
101
- import { Topbar } from "@simplysm/solid";
102
- import { IconSettings, IconUser } from "@tabler/icons-solidjs";
103
-
104
- const menuItems: TopbarMenuItem[] = [
105
- { title: "Settings", icon: IconSettings, href: "/settings" },
106
- {
107
- title: "Admin",
108
- icon: IconUser,
109
- children: [
110
- { title: "Users", href: "/admin/users" },
111
- { title: "Roles", href: "/admin/roles" },
112
- ],
113
- },
114
- ];
115
-
116
- const userMenus: TopbarUserMenu[] = [
117
- { title: "Profile", onClick: () => navigate("/profile") },
118
- { title: "Logout", onClick: handleLogout },
119
- ];
120
-
121
- <Topbar>
122
- <h1 class="text-lg font-bold">App Name</h1>
123
- <Topbar.Menu menus={menuItems} />
124
- <div class="flex-1" />
125
- <Topbar.User menus={userMenus}>User</Topbar.User>
126
- </Topbar>
127
- ```
128
-
129
- **Sub-components:**
130
- - `Topbar.Container` -- Container wrapping topbar and main content, provides `TopbarContext`
131
- - `Topbar.Actions` -- Slot outlet that renders actions registered via `createTopbarActions`
132
- - `Topbar.Menu` -- Menu items list
133
- - `Topbar.User` -- User menu (dropdown)
134
-
135
- ### Topbar Actions Slot
136
-
137
- A slot pattern that lets child pages inject action buttons (save, delete, etc.) into the topbar. The parent layout defines **where** actions appear, child pages define **what** to show.
138
-
139
- **Layout (define the slot):**
140
-
141
- ```tsx
142
- import { Topbar } from "@simplysm/solid";
143
-
144
- <Topbar.Container>
145
- <Topbar>
146
- <span>Title</span>
147
- <Topbar.Actions />
148
- <div class="flex-1" />
149
- </Topbar>
150
- <main class="flex-1 overflow-auto p-4">
151
- {props.children}
152
- </main>
153
- </Topbar.Container>
154
- ```
155
-
156
- **Child page (fill the slot):**
157
-
158
- ```tsx
159
- import { createTopbarActions, Button } from "@simplysm/solid";
160
-
161
- function UserPage() {
162
- createTopbarActions(() => (
163
- <>
164
- <Button theme="primary">Save</Button>
165
- <Button>Cancel</Button>
166
- </>
167
- ));
168
-
169
- return <div>...</div>;
170
- }
171
- ```
172
-
173
- When `UserPage` mounts, the buttons appear in the topbar. When it unmounts, the actions are automatically cleaned up via `onCleanup`.
174
-
175
- **createTopbarActions(accessor: () => JSX.Element): void**
176
-
177
- Registers actions in the nearest `Topbar.Container` scope. Automatically removes actions on component unmount. Must be called inside `Topbar.Container`.
178
-
179
- **useTopbarActionsAccessor(): Accessor&lt;JSX.Element | undefined&gt;**
180
-
181
- Returns the actions accessor directly. For advanced use cases such as building custom topbar components. Must be called inside `Topbar.Container`.
182
-
183
- ```tsx
184
- import { useTopbarActionsAccessor } from "@simplysm/solid";
185
-
186
- const actions = useTopbarActionsAccessor();
187
- // actions() returns the currently registered JSX.Element or undefined
188
- ```
189
-
190
- **TopbarContext:**
191
-
192
- `TopbarContext` is exported for building custom topbar layouts. `Topbar.Container` wraps children with `TopbarContext.Provider`, sharing `actions` accessor and `setActions` setter.
193
-
194
- ```typescript
195
- import { TopbarContext } from "@simplysm/solid";
196
-
197
- interface TopbarContextValue {
198
- actions: Accessor<JSX.Element | undefined>;
199
- setActions: Setter<JSX.Element | undefined>;
200
- }
201
- ```
202
-
203
- **TopbarMenuItem type:**
204
-
205
- ```typescript
206
- interface TopbarMenuItem {
207
- title: string;
208
- href?: string;
209
- icon?: Component<IconProps>;
210
- children?: TopbarMenuItem[]; // supports unlimited nesting
211
- }
212
- ```
213
-
214
- **TopbarUserMenu type:**
215
-
216
- ```typescript
217
- interface TopbarUserMenu {
218
- title: string;
219
- onClick: () => void;
220
- }
221
- ```
222
-
223
- ---
224
-
225
- ## FormGroup
226
-
227
- Layout component for arranging form fields with labels vertically or inline.
228
-
229
- ```tsx
230
- import { FormGroup, TextInput } from "@simplysm/solid";
231
-
232
- // Vertical layout (default)
233
- <FormGroup>
234
- <FormGroup.Item label="Name">
235
- <TextInput value={name()} onValueChange={setName} />
236
- </FormGroup.Item>
237
- <FormGroup.Item label="Email">
238
- <TextInput type="email" value={email()} onValueChange={setEmail} />
239
- </FormGroup.Item>
240
- </FormGroup>
241
-
242
- // Inline layout
243
- <FormGroup inline>
244
- <FormGroup.Item label="Search">
245
- <TextInput value={query()} onValueChange={setQuery} />
246
- </FormGroup.Item>
247
- <FormGroup.Item>
248
- <Button theme="primary">Search</Button>
249
- </FormGroup.Item>
250
- </FormGroup>
251
- ```
252
-
253
- | Prop | Type | Default | Description |
254
- |------|------|---------|-------------|
255
- | `inline` | `boolean` | `false` | Inline layout mode |
256
-
257
- **Sub-components:**
258
- - `FormGroup.Item` -- Form item (`label?: JSX.Element`)
259
-
260
- ---
261
-
262
- ## FormTable
263
-
264
- `<table>`-based form layout. Labels go in `<th>`, input fields in `<td>`.
265
-
266
- ```tsx
267
- import { FormTable, TextInput, NumberInput } from "@simplysm/solid";
268
-
269
- <FormTable>
270
- <tbody>
271
- <tr>
272
- <th>Name</th>
273
- <td><TextInput value={name()} onValueChange={setName} /></td>
274
- <th>Age</th>
275
- <td><NumberInput value={age()} onValueChange={setAge} /></td>
276
- </tr>
277
- <tr>
278
- <th>Email</th>
279
- <td colSpan={3}><TextInput type="email" value={email()} onValueChange={setEmail} /></td>
280
- </tr>
281
- </tbody>
282
- </FormTable>
283
- ```
284
-
285
- ---
286
-
287
- ## Kanban
288
-
289
- Kanban board layout component with drag-and-drop cards, lane collapse, multi-select, and busy states.
290
-
291
- ```tsx
292
- import { createSignal, For } from "solid-js";
293
- import { Button, Icon, Kanban, type KanbanDropInfo } from "@simplysm/solid";
294
- import { IconPlus } from "@tabler/icons-solidjs";
295
-
296
- const [selected, setSelected] = createSignal<unknown[]>([]);
297
-
298
- const handleDrop = (info: KanbanDropInfo) => {
299
- // info.sourceValue: dragged card value
300
- // info.targetLaneValue: target lane value
301
- // info.targetCardValue: target card value (undefined if dropped on empty area)
302
- // info.position: "before" | "after" | undefined
303
- moveCard(info);
304
- };
305
-
306
- <div class="h-[500px]">
307
- <Kanban
308
- selectedValues={selected()}
309
- onSelectedValuesChange={setSelected}
310
- onDrop={handleDrop}
311
- >
312
- <For each={lanes()}>
313
- {(lane) => (
314
- <Kanban.Lane value={lane.id} collapsible busy={lane.busy}>
315
- <Kanban.LaneTitle>
316
- {lane.title} ({lane.cards.length})
317
- </Kanban.LaneTitle>
318
- <Kanban.LaneTools>
319
- <Button size="sm" variant="ghost">
320
- <Icon icon={IconPlus} />
321
- </Button>
322
- </Kanban.LaneTools>
323
- <For each={lane.cards}>
324
- {(card) => (
325
- <Kanban.Card value={card.id} selectable draggable contentClass="p-2">
326
- {card.title}
327
- </Kanban.Card>
328
- )}
329
- </For>
330
- </Kanban.Lane>
331
- )}
332
- </For>
333
- </Kanban>
334
- </div>
335
- ```
336
-
337
- **Kanban Props:**
338
-
339
- | Prop | Type | Default | Description |
340
- |------|------|---------|-------------|
341
- | `onDrop` | `(info: KanbanDropInfo) => void` | - | Drop event handler |
342
- | `selectedValues` | `unknown[]` | - | Selected card values |
343
- | `onSelectedValuesChange` | `(values: unknown[]) => void` | - | Selection change callback |
344
-
345
- `KanbanDropInfo`: `{ sourceValue?: unknown; targetLaneValue?: unknown; targetCardValue?: unknown; position?: "before" | "after" }`
346
-
347
- **Kanban.Lane Props:**
348
-
349
- | Prop | Type | Default | Description |
350
- |------|------|---------|-------------|
351
- | `value` | `unknown` | - | Lane identifier |
352
- | `busy` | `boolean` | - | Show busy bar |
353
- | `collapsible` | `boolean` | - | Allow collapse/expand |
354
- | `collapsed` | `boolean` | - | Collapsed state (controlled) |
355
- | `onCollapsedChange` | `(collapsed: boolean) => void` | - | Collapse state callback |
356
-
357
- **Kanban.Card Props:**
358
-
359
- | Prop | Type | Default | Description |
360
- |------|------|---------|-------------|
361
- | `value` | `unknown` | - | Card identifier |
362
- | `draggable` | `boolean` | `true` | Enable drag |
363
- | `selectable` | `boolean` | `false` | Enable selection |
364
- | `contentClass` | `string` | - | Card content class |
365
-
366
- **Sub-components:**
367
- - `Kanban.Lane` -- Board lane/column
368
- - `Kanban.LaneTitle` -- Lane header title area
369
- - `Kanban.LaneTools` -- Lane header action buttons
370
- - `Kanban.Card` -- Draggable card
371
-
372
- **Selection:** Shift+Click for multi-select, long press for single select. Lane header checkbox toggles all cards in the lane.
373
-
374
- **KanbanContext:**
375
-
376
- `KanbanContext` and `useKanbanContext` are exported for building custom Kanban card/lane sub-components. `useKanbanLaneContext` provides lane-scoped context. These are low-level APIs for advanced customization.
377
-
378
- ```typescript
379
- import { useKanbanContext, useKanbanLaneContext } from "@simplysm/solid";
380
-
381
- // inside a custom card component
382
- const kanban = useKanbanContext();
383
- const lane = useKanbanLaneContext();
384
- ```
package/docs/providers.md DELETED
@@ -1,211 +0,0 @@
1
- # Providers
2
-
3
- ## SystemProvider
4
-
5
- Infrastructure provider. Wraps all internal providers (config, theme, logger, notification, busy, service client, shared data) in the correct dependency order. Use this to set up your app.
6
-
7
- ```tsx
8
- import { SystemProvider } from "@simplysm/solid";
9
-
10
- <SystemProvider clientName="my-app">
11
- <AppRoot />
12
- </SystemProvider>
13
- ```
14
-
15
- Configuration is done via hooks inside child components:
16
-
17
- ```tsx
18
- function AppRoot() {
19
- const serviceClient = useServiceClient();
20
-
21
- onMount(async () => {
22
- await serviceClient.connect("main", { port: 3000 });
23
- useSyncStorage()!.configure((origin) => myStorageAdapter);
24
- useLogger().configure((origin) => myLogAdapter);
25
- useSharedData().configure((origin) => definitions);
26
- });
27
- }
28
- ```
29
-
30
- | Prop | Type | Default | Description |
31
- |------|------|---------|-------------|
32
- | `clientName` | `string` | (required) | Client identifier (used as storage key prefix) |
33
- | `busyVariant` | `BusyVariant` | `"spinner"` | Busy overlay display variant (`"spinner"` or `"bar"`) |
34
-
35
- **Internal nesting order:**
36
-
37
- ```
38
- ConfigProvider → SyncStorageProvider → LoggerProvider →
39
- NotificationProvider + NotificationBanner →
40
- ErrorLoggerProvider → PwaUpdateProvider →
41
- ClipboardProvider → ThemeProvider →
42
- ServiceClientProvider → SharedDataProvider →
43
- BusyProvider → {children}
44
- ```
45
-
46
- Internal providers are not exported individually. `DialogProvider` and `PrintProvider` are exported separately for flexible placement in your provider tree.
47
-
48
- ---
49
-
50
- ## Exported Types & Hooks
51
-
52
- The following types, context objects, and hooks are exported for use with `SystemProvider`:
53
-
54
- | Export | Kind | Description |
55
- |--------|------|-------------|
56
- | `useConfig` | hook | App configuration access |
57
- | `useTheme` | hook | Theme mode access and toggle |
58
- | `useSyncStorage` | hook | Sync storage adapter access |
59
- | `useServiceClient` | hook | WebSocket RPC client access |
60
- | `useSharedData` | hook | Shared data subscription access |
61
- | `useNotification` | hook | Notification system access |
62
- | `useBusy` | hook | Busy overlay control |
63
- | `ConfigContext` | context | For mock injection in tests |
64
- | `SyncStorageContext` | context | For mock injection in tests |
65
- | `ServiceClientContext` | context | For mock injection in tests |
66
- | `SharedDataContext` | context | For mock injection in tests |
67
- | `AppConfig` | type | Config context value type |
68
- | `StorageAdapter` | type | Sync storage adapter interface |
69
- | `SyncStorageContextValue` | type | Sync storage context value type |
70
- | `LogAdapter` | type | Log adapter interface |
71
- | `LoggerContextValue` | type | Logger context value type |
72
- | `ThemeMode` | type | `"light" \| "dark" \| "system"` |
73
- | `ResolvedTheme` | type | `"light" \| "dark"` |
74
- | `ServiceClientContextValue` | type | Service client context value type |
75
- | `SharedDataDefinition` | type | Data subscription definition |
76
- | `SharedDataAccessor` | type | Per-key data accessor |
77
- | `SharedDataValue` | type | Full shared data context value |
78
- | `BusyVariant` | type | `"spinner" \| "bar"` |
79
- | `SharedDataChangeEvent` | class | Server-side change event definition |
80
-
81
- ---
82
-
83
- ## SharedData Usage
84
-
85
- ```tsx
86
- import { useSharedData } from "@simplysm/solid";
87
-
88
- function MyComponent() {
89
- const sharedData = useSharedData<MySharedData>();
90
-
91
- const users = () => sharedData.users.items(); // Accessor<TData[]>
92
- const user = () => sharedData.users.get(userId()); // TData | undefined
93
-
94
- const handleUpdate = async () => {
95
- await sharedData.users.emit([updatedUserId]); // trigger refetch for keys
96
- };
97
- }
98
- ```
99
-
100
- **SharedDataDefinition type:**
101
-
102
- ```typescript
103
- interface SharedDataDefinition<TData> {
104
- serviceKey: string; // Connection key (matches useServiceClient key)
105
- fetch: (changeKeys?: Array<string | number>) => Promise<TData[]>; // Data fetch function
106
- getKey: (item: TData) => string | number; // Primary key extractor
107
- orderBy: [(item: TData) => unknown, "asc" | "desc"][]; // Sort order
108
- filter?: unknown; // Optional filter for change events
109
- getSearchText?: (item: TData) => string; // Search text extractor (for SelectList/Select filtering)
110
- getIsHidden?: (item: TData) => boolean; // Hidden item filter
111
- getParentKey?: (item: TData) => string | number | undefined; // Parent key extractor (for tree structure)
112
- }
113
- ```
114
-
115
- **SharedDataAccessor API:**
116
-
117
- | Property/Method | Type | Description |
118
- |-----------------|------|-------------|
119
- | `items` | `Accessor<TData[]>` | Reactive item array |
120
- | `get` | `(key: string \| number \| undefined) => TData \| undefined` | Get item by key |
121
- | `emit` | `(changeKeys?: Array<string \| number>) => Promise<void>` | Emit change event to server (triggers refetch in all subscribers) |
122
- | `getKey` | `(item: TData) => string \| number` | Primary key extractor |
123
- | `getSearchText` | `((item: TData) => string) \| undefined` | Search text extractor |
124
- | `getIsHidden` | `((item: TData) => boolean) \| undefined` | Hidden item filter |
125
- | `getParentKey` | `((item: TData) => string \| number \| undefined) \| undefined` | Parent key extractor (tree structure) |
126
-
127
- **SharedDataValue extras:**
128
-
129
- | Property/Method | Type | Description |
130
- |-----------------|------|-------------|
131
- | `wait` | `() => Promise<void>` | Wait until all initial fetches complete |
132
- | `busy` | `Accessor<boolean>` | True while any fetch is in progress |
133
- | `configure` | `(fn: (origin) => definitions) => void` | Set up data subscriptions via decorator function (call once after service client connects) |
134
-
135
- **SharedDataChangeEvent:**
136
-
137
- `SharedDataChangeEvent` is the event definition used internally to communicate data changes between server and clients. Export it if you need to emit changes from the server side.
138
-
139
- ```typescript
140
- import { SharedDataChangeEvent } from "@simplysm/solid";
141
- ```
142
-
143
- ---
144
-
145
- ## DialogProvider
146
-
147
- Programmatic dialog management. Must be placed inside `SystemProvider`. See [Dialog](disclosure.md#dialog) for full Dialog component and `useDialog` API.
148
-
149
- ```tsx
150
- import { DialogProvider, useDialog } from "@simplysm/solid";
151
-
152
- // In your provider tree:
153
- <SystemProvider clientName="my-app">
154
- <DialogProvider>
155
- <App />
156
- </DialogProvider>
157
- </SystemProvider>
158
- ```
159
-
160
- | Prop | Type | Default | Description |
161
- |------|------|---------|-------------|
162
- | `closeOnEscape` | `boolean` | `true` | Default: close dialogs on Escape key |
163
- | `closeOnBackdrop` | `boolean` | - | Default: close dialogs on backdrop click |
164
-
165
- ---
166
-
167
- ## PrintProvider
168
-
169
- Printing and PDF generation. Must be placed inside `SystemProvider` (depends on `useBusy()`). See [Print / usePrint](feedback.md#print--useprint) for full API.
170
-
171
- ```tsx
172
- import { PrintProvider, usePrint } from "@simplysm/solid";
173
-
174
- // In your provider tree:
175
- <SystemProvider clientName="my-app">
176
- <PrintProvider>
177
- <App />
178
- </PrintProvider>
179
- </SystemProvider>
180
- ```
181
-
182
- No additional props.
183
-
184
- ---
185
-
186
- ## Provider Placement Guide
187
-
188
- `SystemProvider` provides all infrastructure. `DialogProvider` and `PrintProvider` are standalone and should be placed where their factory content needs context access.
189
-
190
- **Recommended structure:**
191
-
192
- ```
193
- <SystemProvider> ← Infrastructure (config, theme, logger, etc.)
194
- <YourAuthProvider> ← Your providers
195
- <YourDataProvider>
196
- <DialogProvider> ← Dialog factories can access Auth + Data
197
- <PrintProvider> ← Print factories can access Auth + Data
198
- <App />
199
- </PrintProvider>
200
- </DialogProvider>
201
- </YourDataProvider>
202
- </YourAuthProvider>
203
- </SystemProvider>
204
- ```
205
-
206
- **Why this order?**
207
-
208
- - `DialogProvider` and `PrintProvider` accept user components as factory functions (`dialog.show(() => <Form />)`, `print.toPrinter(() => <Report />)`)
209
- - These factories are rendered inside the Provider's tree, not at the call site
210
- - To access your app's contexts (auth, data, etc.), place `DialogProvider`/`PrintProvider` **below** those contexts
211
- - `SystemProvider` must be outermost because `DialogProvider`/`PrintProvider` depend on `useBusy()` and other system hooks