@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
@@ -1,254 +0,0 @@
1
- # Disclosure Components
2
-
3
- ## Tabs
4
-
5
- Tab navigation component.
6
-
7
- ```tsx
8
- import { Tabs } from "@simplysm/solid";
9
-
10
- <Tabs value={activeTab()} onValueChange={setActiveTab}>
11
- <Tabs.Tab value="tab1">Tab 1</Tabs.Tab>
12
- <Tabs.Tab value="tab2">Tab 2</Tabs.Tab>
13
- <Tabs.Tab value="tab3" disabled>Tab 3</Tabs.Tab>
14
- </Tabs>
15
- ```
16
-
17
- | Prop | Type | Default | Description |
18
- |------|------|---------|-------------|
19
- | `value` | `string` | - | Selected tab value |
20
- | `onValueChange` | `(value: string) => void` | - | Tab change callback |
21
- | `size` | `"xs" \| "sm" \| "lg" \| "xl"` | - | Size |
22
- | `class` | `string` | - | Additional CSS class |
23
- | `style` | `JSX.CSSProperties` | - | Inline style |
24
-
25
- **Sub-components:**
26
- - `Tabs.Tab` -- Individual tab (`value: string`, `disabled?: boolean`, `class?: string`)
27
-
28
- ---
29
-
30
- ## Collapse
31
-
32
- Content collapse/expand animation component. Uses `margin-top`-based transition for smooth open/close effects.
33
-
34
- ```tsx
35
- import { Collapse, Button } from "@simplysm/solid";
36
- import { createSignal } from "solid-js";
37
-
38
- const [open, setOpen] = createSignal(false);
39
-
40
- <Button
41
- aria-expanded={open()}
42
- aria-controls="content"
43
- onClick={() => setOpen(!open())}
44
- >
45
- Toggle
46
- </Button>
47
- <Collapse id="content" open={open()}>
48
- <p>Collapsible content</p>
49
- </Collapse>
50
- ```
51
-
52
- | Prop | Type | Default | Description |
53
- |------|------|---------|-------------|
54
- | `open` | `boolean` | `false` | Open state |
55
-
56
- Animation is automatically disabled when `prefers-reduced-motion` is set.
57
-
58
- ---
59
-
60
- ## Dropdown
61
-
62
- Positioned dropdown popup using compound components. Trigger click auto-toggles open state.
63
-
64
- ```tsx
65
- import { Dropdown, Button, List } from "@simplysm/solid";
66
-
67
- // Trigger/Content compound components
68
- <Dropdown>
69
- <Dropdown.Trigger>
70
- <Button>Open</Button>
71
- </Dropdown.Trigger>
72
- <Dropdown.Content>
73
- <p class="p-3">Dropdown content</p>
74
- </Dropdown.Content>
75
- </Dropdown>
76
-
77
- // Controlled open state
78
- <Dropdown open={open()} onOpenChange={setOpen}>
79
- <Dropdown.Trigger>
80
- <Button>Open</Button>
81
- </Dropdown.Trigger>
82
- <Dropdown.Content>
83
- <p class="p-3">Dropdown content</p>
84
- </Dropdown.Content>
85
- </Dropdown>
86
-
87
- // Context menu (absolute position, no Trigger)
88
- <Dropdown position={{ x: 100, y: 200 }} open={menuOpen()} onOpenChange={setMenuOpen}>
89
- <Dropdown.Content>
90
- <List inset>
91
- <List.Item>Menu item 1</List.Item>
92
- <List.Item>Menu item 2</List.Item>
93
- </List>
94
- </Dropdown.Content>
95
- </Dropdown>
96
- ```
97
-
98
- | Prop | Type | Default | Description |
99
- |------|------|---------|-------------|
100
- | `position` | `{ x: number; y: number }` | - | Absolute position (context menu mode, no Trigger needed) |
101
- | `open` | `boolean` | - | Open state |
102
- | `onOpenChange` | `(open: boolean) => void` | - | State change callback |
103
- | `maxHeight` | `number` | `300` | Maximum height (px) |
104
- | `disabled` | `boolean` | - | Disabled state (Trigger click ignored) |
105
- | `keyboardNav` | `boolean` | - | Enable keyboard navigation (used by Select, etc.) |
106
- | `class` | `string` | - | Additional CSS class for popup |
107
- | `style` | `JSX.CSSProperties` | - | Inline style for popup |
108
-
109
- **Sub-components:**
110
- - `Dropdown.Trigger` -- Trigger element wrapper (click to toggle)
111
- - `Dropdown.Content` -- Dropdown popup content
112
-
113
- ---
114
-
115
- ## Dialog
116
-
117
- Modal dialog component. Supports drag movement, resize, floating mode, fullscreen mode, and programmatic opening via `useDialog`.
118
-
119
- **Declarative usage:**
120
-
121
- ```tsx
122
- import { Dialog, Button } from "@simplysm/solid";
123
- import { createSignal } from "solid-js";
124
-
125
- const [open, setOpen] = createSignal(false);
126
-
127
- <Button onClick={() => setOpen(true)}>Open</Button>
128
- <Dialog open={open()} onOpenChange={setOpen} closeOnBackdrop width={600}>
129
- <Dialog.Header>Dialog Title</Dialog.Header>
130
- <div class="p-4">
131
- Dialog content
132
- </div>
133
- </Dialog>
134
-
135
- // With header action buttons
136
- <Dialog open={open()} onOpenChange={setOpen}>
137
- <Dialog.Header>My Dialog</Dialog.Header>
138
- <Dialog.Action>
139
- <Button size="sm" variant="ghost">Help</Button>
140
- </Dialog.Action>
141
- <div class="p-4">Dialog content</div>
142
- </Dialog>
143
-
144
- // Floating mode (no backdrop)
145
- <Dialog open={open()} onOpenChange={setOpen} float position="bottom-right">
146
- <Dialog.Header>Notification</Dialog.Header>
147
- <div class="p-4">Floating dialog</div>
148
- </Dialog>
149
-
150
- // No header (content only)
151
- <Dialog open={open()} onOpenChange={setOpen}>
152
- <div class="p-4">Dialog without header</div>
153
- </Dialog>
154
- ```
155
-
156
- **Programmatic usage with `useDialog`:**
157
-
158
- ```tsx
159
- import { useDialog, useDialogInstance, Button, TextInput } from "@simplysm/solid";
160
- import { createSignal } from "solid-js";
161
-
162
- // Dialog content component
163
- function EditDialog() {
164
- const dialogInstance = useDialogInstance<string>();
165
- const [name, setName] = createSignal("");
166
-
167
- return (
168
- <div class="p-4 space-y-4">
169
- <TextInput value={name()} onValueChange={setName} placeholder="Enter name" />
170
- <Button theme="primary" onClick={() => dialogInstance?.close(name())}>
171
- Save
172
- </Button>
173
- </div>
174
- );
175
- }
176
-
177
- // Opening dialog programmatically
178
- function MyPage() {
179
- const dialog = useDialog();
180
-
181
- const handleOpen = async () => {
182
- const result = await dialog.show<string>(
183
- () => <EditDialog />,
184
- { header: "Edit Name", width: 400, closeOnBackdrop: true },
185
- );
186
- if (result != null) {
187
- // result is the value passed to dialogInstance.close()
188
- console.log("Saved:", result);
189
- }
190
- };
191
-
192
- return <Button onClick={handleOpen}>Open Editor</Button>;
193
- }
194
- ```
195
-
196
- **Dialog Props:**
197
-
198
- | Prop | Type | Default | Description |
199
- |------|------|---------|-------------|
200
- | `open` | `boolean` | - | Open state |
201
- | `onOpenChange` | `(open: boolean) => void` | - | State change callback |
202
- | `closable` | `boolean` | `true` | Show close button |
203
- | `closeOnBackdrop` | `boolean` | - | Close on backdrop click |
204
- | `closeOnEscape` | `boolean` | `true` | Close on Escape key |
205
- | `resizable` | `boolean` | `false` | Resizable |
206
- | `movable` | `boolean` | `true` | Draggable |
207
- | `float` | `boolean` | - | Floating mode (no backdrop) |
208
- | `fill` | `boolean` | - | Fullscreen mode |
209
- | `width` | `number` | - | Width (px) |
210
- | `height` | `number` | - | Height (px) |
211
- | `minWidth` | `number` | - | Minimum width (px) |
212
- | `minHeight` | `number` | - | Minimum height (px) |
213
- | `position` | `"bottom-right" \| "top-right"` | - | Fixed position |
214
- | `headerStyle` | `JSX.CSSProperties \| string` | - | Header style |
215
- | `canDeactivate` | `() => boolean` | - | Pre-close confirmation function |
216
- | `onCloseComplete` | `() => void` | - | Post-close animation callback |
217
- | `class` | `string` | - | Additional CSS class applied to the dialog element |
218
-
219
- **Sub-components:**
220
- - `Dialog.Header` -- Dialog title (renders as `<h5>`, sets `aria-labelledby` on the dialog)
221
- - `Dialog.Action` -- Header action area (rendered between header text and close button)
222
-
223
- > The header bar (including close button) is only rendered when `Dialog.Header` is present. If no `Dialog.Header` is provided, the dialog renders content only with no header bar.
224
-
225
- **useDialog API:**
226
-
227
- | Method | Signature | Description |
228
- |--------|-----------|-------------|
229
- | `show` | `<T>(factory: () => JSX.Element, options: DialogShowOptions) => Promise<T \| undefined>` | Open dialog, returns result on close |
230
-
231
- `DialogShowOptions` accepts all Dialog props except `open`, `onOpenChange`, `onCloseComplete`, and `children`, plus:
232
-
233
- | Option | Type | Description |
234
- |--------|------|-------------|
235
- | `header` | `JSX.Element` | Dialog header content (renders inside `Dialog.Header`) |
236
-
237
- **useDialogInstance API:**
238
-
239
- | Method | Signature | Description |
240
- |--------|-----------|-------------|
241
- | `close` | `(result?: T) => void` | Close dialog with optional return value |
242
-
243
- **Dialog Defaults:**
244
-
245
- `DialogDefaultsContext` and `DialogDefaults` are exported for advanced use cases such as providing default dialog options to a subtree. Add `<DialogProvider>` to your provider tree to enable `useDialog()`. See [Provider Placement Guide](providers.md#provider-placement-guide).
246
-
247
- ```typescript
248
- import { DialogDefaultsContext, type DialogDefaults } from "@simplysm/solid";
249
- ```
250
-
251
- | Export | Kind | Description |
252
- |--------|------|-------------|
253
- | `DialogDefaultsContext` | context | Context for providing default dialog options |
254
- | `DialogDefaults` | interface | `{ closeOnEscape?: boolean; closeOnBackdrop?: boolean }` |
package/docs/display.md DELETED
@@ -1,153 +0,0 @@
1
- # Display Components
2
-
3
- ## Card
4
-
5
- Container with shadow effect.
6
-
7
- ```tsx
8
- import { Card } from "@simplysm/solid";
9
-
10
- <Card>Card content</Card>
11
- <Card class="p-4">Card with padding</Card>
12
- ```
13
-
14
- ---
15
-
16
- ## Tag
17
-
18
- Inline tag/badge component.
19
-
20
- ```tsx
21
- import { Tag } from "@simplysm/solid";
22
-
23
- <Tag theme="primary">New</Tag>
24
- <Tag theme="success">Complete</Tag>
25
- <Tag theme="danger">Urgent</Tag>
26
- ```
27
-
28
- | Prop | Type | Default | Description |
29
- |------|------|---------|-------------|
30
- | `theme` | `"primary" \| "info" \| "success" \| "warning" \| "danger" \| "base"` | `"base"` | Color theme |
31
-
32
- ---
33
-
34
- ## Link
35
-
36
- Inline text link component. Renders an `<a>` element with primary color and hover underline.
37
-
38
- ```tsx
39
- import { Link } from "@simplysm/solid";
40
-
41
- <Link href="https://example.com">Visit site</Link>
42
- <Link href="https://example.com" target="_blank" rel="noopener noreferrer">
43
- Open in new tab
44
- </Link>
45
- ```
46
-
47
- Accepts all standard HTML `<a>` attributes (`href`, `target`, `rel`, etc.).
48
-
49
- ---
50
-
51
- ## Alert
52
-
53
- Block-level alert/notice component.
54
-
55
- ```tsx
56
- import { Alert } from "@simplysm/solid";
57
-
58
- <Alert theme="info">This is an information message.</Alert>
59
- <Alert theme="warning">Please pay attention to this.</Alert>
60
- <Alert theme="danger">An error has occurred.</Alert>
61
- ```
62
-
63
- | Prop | Type | Default | Description |
64
- |------|------|---------|-------------|
65
- | `theme` | `"primary" \| "info" \| "success" \| "warning" \| "danger" \| "base"` | `"base"` | Color theme |
66
-
67
- ---
68
-
69
- ## Icon
70
-
71
- Tabler Icons wrapper component. Displayed in `em` units to scale proportionally with surrounding text.
72
-
73
- ```tsx
74
- import { Icon } from "@simplysm/solid";
75
- import { IconCheck, IconAlertTriangle } from "@tabler/icons-solidjs";
76
-
77
- <Icon icon={IconCheck} />
78
- <Icon icon={IconAlertTriangle} size="2em" />
79
- ```
80
-
81
- | Prop | Type | Default | Description |
82
- |------|------|---------|-------------|
83
- | `icon` | `Component` | **(required)** | Tabler icon component |
84
- | `size` | `string \| number` | `"1.25em"` | Icon size |
85
-
86
- ---
87
-
88
- ## Progress
89
-
90
- Progress indicator component.
91
-
92
- ```tsx
93
- import { Progress } from "@simplysm/solid";
94
-
95
- <Progress value={0.65} />
96
- <Progress value={0.8} theme="success" size="lg" />
97
-
98
- // Custom text
99
- <Progress value={progress()}>
100
- {Math.round(progress() * 100)}% complete
101
- </Progress>
102
- ```
103
-
104
- | Prop | Type | Default | Description |
105
- |------|------|---------|-------------|
106
- | `value` | `number` | **(required)** | Progress (0~1) |
107
- | `theme` | `"primary" \| "info" \| "success" \| "warning" \| "danger" \| "base"` | `"primary"` | Color theme |
108
- | `size` | `"sm" \| "lg"` | - | Size |
109
- | `inset` | `boolean` | - | Inset style |
110
-
111
- ---
112
-
113
- ## Barcode
114
-
115
- bwip-js-based barcode/QR code rendering component. Supports over 100 barcode types.
116
-
117
- ```tsx
118
- import { Barcode } from "@simplysm/solid";
119
-
120
- <Barcode type="qrcode" value="https://example.com" />
121
- <Barcode type="code128" value="ABC-12345" />
122
- <Barcode type="ean13" value="4901234567890" />
123
- ```
124
-
125
- | Prop | Type | Default | Description |
126
- |------|------|---------|-------------|
127
- | `type` | `BarcodeType` | **(required)** | Barcode type (`"qrcode"`, `"code128"`, `"ean13"`, etc.) |
128
- | `value` | `string` | - | Barcode value |
129
-
130
- ---
131
-
132
- ## Echarts
133
-
134
- Apache ECharts chart wrapper component. Requires `echarts` peer dependency installation.
135
-
136
- ```tsx
137
- import { Echarts } from "@simplysm/solid";
138
-
139
- <Echarts
140
- option={{
141
- xAxis: { type: "category", data: ["Mon", "Tue", "Wed"] },
142
- yAxis: { type: "value" },
143
- series: [{ data: [120, 200, 150], type: "bar" }],
144
- }}
145
- />
146
-
147
- <Echarts option={chartOption()} busy={isBusy()} />
148
- ```
149
-
150
- | Prop | Type | Default | Description |
151
- |------|------|---------|-------------|
152
- | `option` | `echarts.EChartsOption` | **(required)** | ECharts option object |
153
- | `busy` | `boolean` | - | Show busy state |
package/docs/feedback.md DELETED
@@ -1,238 +0,0 @@
1
- # Feedback Components
2
-
3
- ## Notification
4
-
5
- Notification system. Set up `NotificationProvider` and `NotificationBanner` in your provider tree. Use the `useNotification` hook to show notifications and optionally add `NotificationBell` in your layout.
6
-
7
- ```tsx
8
- import {
9
- NotificationBell,
10
- useNotification,
11
- } from "@simplysm/solid";
12
-
13
- // Trigger notifications within components
14
- function MyComponent() {
15
- const notification = useNotification();
16
-
17
- const handleSave = () => {
18
- notification.success("Success", "Saved successfully.");
19
- };
20
-
21
- const handleError = () => {
22
- notification.danger("Error", "An issue occurred.", {
23
- action: { label: "Retry", onClick: handleRetry },
24
- });
25
- };
26
-
27
- // Error handling with error()
28
- const handleLoad = async () => {
29
- try {
30
- const data = await fetchData();
31
- } catch (err) {
32
- notification.error(err, "Failed to load data"); // optional header
33
- // Shows danger notification with header + err.message,
34
- // logs err.stack via useLogger
35
- }
36
- };
37
-
38
- return <Button onClick={handleSave}>Save</Button>;
39
- }
40
- ```
41
-
42
- **useNotification API:**
43
-
44
- | Property/Method | Type/Signature | Description |
45
- |-----------------|----------------|-------------|
46
- | `items` | `Accessor<NotificationItem[]>` | Reactive notification list |
47
- | `unreadCount` | `Accessor<number>` | Unread notification count |
48
- | `latestUnread` | `Accessor<NotificationItem \| undefined>` | Most recent unread notification |
49
- | `info` | `(title: string, message?: string, options?: NotificationOptions) => string` | Info notification |
50
- | `success` | `(title: string, message?: string, options?: NotificationOptions) => string` | Success notification |
51
- | `warning` | `(title: string, message?: string, options?: NotificationOptions) => string` | Warning notification |
52
- | `danger` | `(title: string, message?: string, options?: NotificationOptions) => string` | Error notification |
53
- | `error` | `(err?: any, header?: string) => void` | Show error notification from caught error (shows danger notification + logs to `useLogger`). Re-throws if `err` is not an `Error` instance. |
54
- | `update` | `(id: string, updates: Partial<NotificationItem>, options?: { renotify?: boolean }) => void` | Update notification |
55
- | `remove` | `(id: string) => void` | Remove notification |
56
- | `markAsRead` | `(id: string) => void` | Mark as read |
57
- | `markAllAsRead` | `() => void` | Mark all as read |
58
- | `dismissBanner` | `() => void` | Dismiss banner |
59
- | `clear` | `() => void` | Clear all |
60
-
61
- **Components:**
62
- - `NotificationBanner` -- Top-of-screen notification banner. Automatically included by `SystemProvider`.
63
- - `NotificationBell` -- Notification bell icon (shows unread count badge; click to view history). Add to your layout as needed. By default includes its own `NotificationBanner` instance via `showBanner` prop — set `showBanner={false}` when using with `SystemProvider` to avoid a duplicate banner.
64
-
65
- **NotificationBell Props:**
66
-
67
- | Prop | Type | Default | Description |
68
- |------|------|---------|-------------|
69
- | `showBanner` | `boolean` | `true` | Render a `NotificationBanner` alongside the bell. Set to `false` when `SystemProvider` already provides one. |
70
-
71
- ---
72
-
73
- ## Busy
74
-
75
- Busy overlay system. Set up `BusyProvider` in your provider tree. Pass `variant` prop to choose between `"spinner"` (default) and `"bar"` variants. Control the busy state using the `useBusy` hook.
76
-
77
- ```tsx
78
- import { useBusy } from "@simplysm/solid";
79
-
80
- // Control busy within components
81
- function MyComponent() {
82
- const busy = useBusy();
83
-
84
- const fetchData = async () => {
85
- busy.show("Loading data...");
86
- try {
87
- await fetch("/api/data");
88
- } finally {
89
- busy.hide();
90
- }
91
- };
92
-
93
- return <Button onClick={fetchData}>Load Data</Button>;
94
- }
95
- ```
96
-
97
- **useBusy API:**
98
-
99
- | Method | Signature | Description |
100
- |--------|-----------|-------------|
101
- | `show` | `(message?: string) => void` | Show busy overlay |
102
- | `hide` | `() => void` | Hide busy overlay |
103
- | `setProgress` | `(percent: number \| undefined) => void` | Set progress |
104
-
105
- **BusyContainer Props:**
106
-
107
- `BusyContainer` can also be used directly to wrap content with busy state control:
108
-
109
- ```tsx
110
- import { BusyContainer } from "@simplysm/solid";
111
-
112
- <BusyContainer busy={isLoading()} message="Loading...">
113
- {/* wrapped content */}
114
- </BusyContainer>
115
- ```
116
-
117
- | Prop | Type | Default | Description |
118
- |------|------|---------|-------------|
119
- | `busy` | `boolean` | - | Show busy overlay |
120
- | `ready` | `boolean` | `true` | When `false`, shows busy and hides children; when `true`, shows children (controls rendering) |
121
- | `variant` | `"spinner" \| "bar"` | - | Busy overlay variant |
122
- | `message` | `string` | - | Message to display |
123
- | `progressPercent` | `number` | - | Progress percentage (0-100) |
124
-
125
- ---
126
-
127
- ## Print / usePrint
128
-
129
- Browser printing and PDF generation. Requires `<PrintProvider>` in the component tree.
130
-
131
- ```tsx
132
- // Provider setup:
133
- <SystemProvider clientName="my-app">
134
- <PrintProvider>
135
- <App />
136
- </PrintProvider>
137
- </SystemProvider>
138
- ```
139
-
140
- ```tsx
141
- import { Print, usePrint } from "@simplysm/solid";
142
-
143
- function MyComponent() {
144
- const { toPrinter, toPdf } = usePrint();
145
-
146
- const handlePrint = async () => {
147
- await toPrinter(
148
- () => (
149
- <Print>
150
- <Print.Page>
151
- <h1>Print content</h1>
152
- <p>Page 1</p>
153
- </Print.Page>
154
- <Print.Page>
155
- <p>Page 2</p>
156
- </Print.Page>
157
- </Print>
158
- ),
159
- { size: "A4", margin: "10mm" },
160
- );
161
- };
162
-
163
- const handlePdf = async () => {
164
- const pdfData = await toPdf(
165
- () => (
166
- <Print>
167
- <Print.Page>
168
- <h1>PDF content</h1>
169
- </Print.Page>
170
- </Print>
171
- ),
172
- { size: "A4 landscape" },
173
- );
174
- // pdfData: Uint8Array
175
- };
176
-
177
- return (
178
- <>
179
- <Button onClick={handlePrint}>Print</Button>
180
- <Button onClick={handlePdf}>Download PDF</Button>
181
- </>
182
- );
183
- }
184
- ```
185
-
186
- **usePrint API:**
187
-
188
- | Method | Signature | Description |
189
- |--------|-----------|-------------|
190
- | `toPrinter` | `(factory: () => JSX.Element, options?: PrintOptions) => Promise<void>` | Browser print |
191
- | `toPdf` | `(factory: () => JSX.Element, options?: PrintOptions) => Promise<Uint8Array>` | PDF generation |
192
-
193
- **PrintOptions:**
194
-
195
- | Option | Type | Default | Description |
196
- |--------|------|---------|-------------|
197
- | `size` | `string` | `"A4"` | Paper size (`"A4"`, `"A3"`, `"A4 landscape"`, `"210mm 297mm"`, etc.) |
198
- | `margin` | `string` | `"0"` | Margins (`"10mm"`, `"1cm"`, etc.) |
199
-
200
- **Sub-components:**
201
- - `Print.Page` -- Explicit page breaks (auto-breaks if not used)
202
-
203
- **usePrintInstance (for async data in print content):**
204
-
205
- Use `usePrintInstance` inside print content components when you need to load async data before rendering. Call `ready()` to signal that the content is ready to print.
206
-
207
- ```tsx
208
- import { usePrintInstance } from "@simplysm/solid";
209
- import { createResource, Show } from "solid-js";
210
-
211
- function InvoicePrintContent(props: { invoiceId: number }) {
212
- const printInstance = usePrintInstance();
213
- const [invoice] = createResource(() => fetchInvoice(props.invoiceId));
214
-
215
- createEffect(() => {
216
- if (invoice()) {
217
- printInstance?.ready(); // signal that content is ready
218
- }
219
- });
220
-
221
- return (
222
- <Show when={invoice()}>
223
- {(inv) => (
224
- <Print>
225
- <Print.Page>
226
- <h1>Invoice #{inv().id}</h1>
227
- {/* invoice content */}
228
- </Print.Page>
229
- </Print>
230
- )}
231
- </Show>
232
- );
233
- }
234
-
235
- // Usage
236
- const { toPrinter } = usePrint();
237
- await toPrinter(() => <InvoicePrintContent invoiceId={123} />, { size: "A4", margin: "10mm" });
238
- ```