@simplysm/solid 13.0.28 → 13.0.30

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 (379) hide show
  1. package/README.md +15 -9
  2. package/dist/components/data/Pagination.d.ts +4 -5
  3. package/dist/components/data/Pagination.d.ts.map +1 -1
  4. package/dist/components/data/Pagination.js +14 -14
  5. package/dist/components/data/Pagination.js.map +2 -2
  6. package/dist/components/data/Table.js +1 -1
  7. package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
  8. package/dist/components/data/calendar/Calendar.js +1 -1
  9. package/dist/components/data/calendar/Calendar.js.map +1 -1
  10. package/dist/components/data/kanban/Kanban.d.ts +9 -9
  11. package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
  12. package/dist/components/data/kanban/Kanban.js +6 -6
  13. package/dist/components/data/kanban/Kanban.js.map +2 -2
  14. package/dist/components/data/list/List.d.ts.map +1 -1
  15. package/dist/components/data/list/List.js.map +1 -1
  16. package/dist/components/data/list/ListItem.d.ts.map +1 -1
  17. package/dist/components/data/list/ListItem.js.map +1 -1
  18. package/dist/components/data/permission-table/PermissionTable.d.ts.map +1 -1
  19. package/dist/components/data/permission-table/PermissionTable.js.map +1 -1
  20. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
  21. package/dist/components/data/sheet/DataSheet.js +102 -107
  22. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  23. package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
  24. package/dist/components/data/sheet/DataSheet.styles.js +24 -6
  25. package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
  26. package/dist/components/data/sheet/DataSheetColumn.d.ts.map +1 -1
  27. package/dist/components/data/sheet/DataSheetColumn.js.map +1 -1
  28. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
  29. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +1 -1
  30. package/dist/components/data/sheet/sheetUtils.d.ts.map +1 -1
  31. package/dist/components/data/sheet/sheetUtils.js.map +1 -1
  32. package/dist/components/data/sheet/types.d.ts +2 -2
  33. package/dist/components/data/sheet/types.d.ts.map +1 -1
  34. package/dist/components/disclosure/Collapse.d.ts.map +1 -1
  35. package/dist/components/disclosure/Collapse.js +0 -3
  36. package/dist/components/disclosure/Collapse.js.map +1 -1
  37. package/dist/components/disclosure/Dialog.d.ts +8 -8
  38. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  39. package/dist/components/disclosure/Dialog.js +64 -69
  40. package/dist/components/disclosure/Dialog.js.map +2 -2
  41. package/dist/components/disclosure/DialogContext.d.ts +4 -4
  42. package/dist/components/disclosure/DialogContext.d.ts.map +1 -1
  43. package/dist/components/disclosure/DialogContext.js.map +1 -1
  44. package/dist/components/disclosure/DialogProvider.d.ts.map +1 -1
  45. package/dist/components/disclosure/DialogProvider.js +8 -8
  46. package/dist/components/disclosure/DialogProvider.js.map +2 -2
  47. package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
  48. package/dist/components/disclosure/Dropdown.js.map +1 -1
  49. package/dist/components/disclosure/Tabs.d.ts.map +1 -1
  50. package/dist/components/disclosure/Tabs.js.map +1 -1
  51. package/dist/components/display/Alert.d.ts.map +1 -1
  52. package/dist/components/display/Alert.js.map +1 -1
  53. package/dist/components/display/Card.d.ts +0 -1
  54. package/dist/components/display/Card.d.ts.map +1 -1
  55. package/dist/components/display/Card.js +1 -2
  56. package/dist/components/display/Card.js.map +1 -1
  57. package/dist/components/display/Echarts.d.ts +1 -1
  58. package/dist/components/display/Echarts.d.ts.map +1 -1
  59. package/dist/components/display/Echarts.js +2 -2
  60. package/dist/components/display/Echarts.js.map +2 -2
  61. package/dist/components/display/Link.d.ts +5 -0
  62. package/dist/components/display/Link.d.ts.map +1 -0
  63. package/dist/components/display/Link.js +26 -0
  64. package/dist/components/display/Link.js.map +6 -0
  65. package/dist/components/feedback/Progress.d.ts +3 -3
  66. package/dist/components/feedback/Progress.d.ts.map +1 -1
  67. package/dist/components/feedback/Progress.js +1 -1
  68. package/dist/components/feedback/Progress.js.map +2 -2
  69. package/dist/components/feedback/busy/BusyContainer.d.ts +13 -0
  70. package/dist/components/feedback/busy/BusyContainer.d.ts.map +1 -0
  71. package/dist/components/feedback/{loading/LoadingContainer.js → busy/BusyContainer.js} +20 -13
  72. package/dist/components/feedback/busy/BusyContainer.js.map +6 -0
  73. package/dist/components/feedback/busy/BusyContext.d.ts +11 -0
  74. package/dist/components/feedback/busy/BusyContext.d.ts.map +1 -0
  75. package/dist/components/feedback/busy/BusyContext.js +14 -0
  76. package/dist/components/feedback/busy/BusyContext.js.map +6 -0
  77. package/dist/components/feedback/busy/BusyProvider.d.ts +7 -0
  78. package/dist/components/feedback/busy/BusyProvider.d.ts.map +1 -0
  79. package/dist/components/feedback/{loading/LoadingProvider.js → busy/BusyProvider.js} +7 -7
  80. package/dist/components/feedback/busy/BusyProvider.js.map +6 -0
  81. package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -1
  82. package/dist/components/feedback/notification/NotificationBanner.js +1 -1
  83. package/dist/components/feedback/notification/NotificationBanner.js.map +1 -1
  84. package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
  85. package/dist/components/feedback/notification/NotificationBell.js +4 -2
  86. package/dist/components/feedback/notification/NotificationBell.js.map +2 -2
  87. package/dist/components/feedback/notification/NotificationContext.d.ts.map +1 -1
  88. package/dist/components/feedback/notification/NotificationContext.js.map +1 -1
  89. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
  90. package/dist/components/feedback/notification/NotificationProvider.js +1 -0
  91. package/dist/components/feedback/notification/NotificationProvider.js.map +1 -1
  92. package/dist/components/form-control/Button.d.ts.map +1 -1
  93. package/dist/components/form-control/Button.js +2 -2
  94. package/dist/components/form-control/Button.js.map +1 -1
  95. package/dist/components/form-control/DropdownTrigger.styles.d.ts.map +1 -1
  96. package/dist/components/form-control/DropdownTrigger.styles.js +6 -1
  97. package/dist/components/form-control/DropdownTrigger.styles.js.map +1 -1
  98. package/dist/components/form-control/Invalid.d.ts +4 -2
  99. package/dist/components/form-control/Invalid.d.ts.map +1 -1
  100. package/dist/components/form-control/Invalid.js +81 -41
  101. package/dist/components/form-control/Invalid.js.map +2 -2
  102. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
  103. package/dist/components/form-control/ThemeToggle.js +4 -5
  104. package/dist/components/form-control/ThemeToggle.js.map +2 -2
  105. package/dist/components/form-control/checkbox/Checkbox.d.ts +4 -2
  106. package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
  107. package/dist/components/form-control/checkbox/Checkbox.js +65 -52
  108. package/dist/components/form-control/checkbox/Checkbox.js.map +2 -2
  109. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts +1 -2
  110. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
  111. package/dist/components/form-control/checkbox/Checkbox.styles.js +8 -10
  112. package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
  113. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts +9 -9
  114. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts.map +1 -1
  115. package/dist/components/form-control/checkbox/CheckboxGroup.js +10 -82
  116. package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
  117. package/dist/components/form-control/checkbox/Radio.d.ts +4 -2
  118. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
  119. package/dist/components/form-control/checkbox/Radio.js +64 -51
  120. package/dist/components/form-control/checkbox/Radio.js.map +2 -2
  121. package/dist/components/form-control/checkbox/RadioGroup.d.ts +9 -9
  122. package/dist/components/form-control/checkbox/RadioGroup.d.ts.map +1 -1
  123. package/dist/components/form-control/checkbox/RadioGroup.js +10 -77
  124. package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
  125. package/dist/components/form-control/color-picker/ColorPicker.d.ts +8 -3
  126. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  127. package/dist/components/form-control/color-picker/ColorPicker.js +43 -26
  128. package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
  129. package/dist/components/form-control/combobox/Combobox.d.ts +8 -8
  130. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  131. package/dist/components/form-control/combobox/Combobox.js +72 -59
  132. package/dist/components/form-control/combobox/Combobox.js.map +2 -2
  133. package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
  134. package/dist/components/form-control/editor/EditorToolbar.js +3 -2
  135. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  136. package/dist/components/form-control/editor/RichTextEditor.d.ts.map +1 -1
  137. package/dist/components/form-control/editor/RichTextEditor.js.map +1 -1
  138. package/dist/components/form-control/field/DatePicker.d.ts +6 -0
  139. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  140. package/dist/components/form-control/field/DatePicker.js +138 -117
  141. package/dist/components/form-control/field/DatePicker.js.map +2 -2
  142. package/dist/components/form-control/field/DateTimePicker.d.ts +6 -0
  143. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  144. package/dist/components/form-control/field/DateTimePicker.js +138 -115
  145. package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
  146. package/dist/components/form-control/field/Field.styles.d.ts +14 -0
  147. package/dist/components/form-control/field/Field.styles.d.ts.map +1 -1
  148. package/dist/components/form-control/field/Field.styles.js +47 -3
  149. package/dist/components/form-control/field/Field.styles.js.map +1 -1
  150. package/dist/components/form-control/field/FieldPlaceholder.d.ts +7 -0
  151. package/dist/components/form-control/field/FieldPlaceholder.d.ts.map +1 -0
  152. package/dist/components/form-control/field/FieldPlaceholder.js +34 -0
  153. package/dist/components/form-control/field/FieldPlaceholder.js.map +6 -0
  154. package/dist/components/form-control/field/NumberInput.d.ts +13 -0
  155. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  156. package/dist/components/form-control/field/NumberInput.js +163 -111
  157. package/dist/components/form-control/field/NumberInput.js.map +2 -2
  158. package/dist/components/form-control/field/TextInput.d.ts +16 -1
  159. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  160. package/dist/components/form-control/field/TextInput.js +177 -114
  161. package/dist/components/form-control/field/TextInput.js.map +2 -2
  162. package/dist/components/form-control/field/Textarea.d.ts +10 -0
  163. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  164. package/dist/components/form-control/field/Textarea.js +156 -121
  165. package/dist/components/form-control/field/Textarea.js.map +2 -2
  166. package/dist/components/form-control/field/TimePicker.d.ts +10 -0
  167. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  168. package/dist/components/form-control/field/TimePicker.js +126 -94
  169. package/dist/components/form-control/field/TimePicker.js.map +2 -2
  170. package/dist/components/form-control/select/Select.d.ts +7 -9
  171. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  172. package/dist/components/form-control/select/Select.js +71 -60
  173. package/dist/components/form-control/select/Select.js.map +2 -2
  174. package/dist/components/form-control/select/SelectItem.d.ts.map +1 -1
  175. package/dist/components/form-control/select/SelectItem.js.map +1 -1
  176. package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -1
  177. package/dist/components/form-control/state-preset/StatePreset.js +2 -1
  178. package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
  179. package/dist/components/layout/FormGroup.d.ts.map +1 -1
  180. package/dist/components/layout/FormGroup.js.map +1 -1
  181. package/dist/components/layout/sidebar/Sidebar.d.ts.map +1 -1
  182. package/dist/components/layout/sidebar/Sidebar.js +1 -1
  183. package/dist/components/layout/sidebar/Sidebar.js.map +1 -1
  184. package/dist/components/layout/sidebar/SidebarContainer.d.ts.map +1 -1
  185. package/dist/components/layout/sidebar/SidebarContainer.js.map +1 -1
  186. package/dist/components/layout/sidebar/SidebarMenu.js +1 -1
  187. package/dist/components/layout/sidebar/SidebarMenu.js.map +1 -1
  188. package/dist/components/layout/sidebar/SidebarUser.d.ts.map +1 -1
  189. package/dist/components/layout/sidebar/SidebarUser.js +4 -4
  190. package/dist/components/layout/sidebar/SidebarUser.js.map +1 -1
  191. package/dist/components/layout/topbar/Topbar.js +1 -1
  192. package/dist/components/layout/topbar/TopbarMenu.d.ts.map +1 -1
  193. package/dist/components/layout/topbar/TopbarMenu.js.map +1 -1
  194. package/dist/components/layout/topbar/TopbarUser.d.ts.map +1 -1
  195. package/dist/components/layout/topbar/TopbarUser.js.map +1 -1
  196. package/dist/helpers/createAppStructure.d.ts.map +1 -1
  197. package/dist/helpers/createAppStructure.js +17 -12
  198. package/dist/helpers/createAppStructure.js.map +1 -1
  199. package/dist/helpers/mergeStyles.d.ts.map +1 -1
  200. package/dist/helpers/mergeStyles.js +4 -1
  201. package/dist/helpers/mergeStyles.js.map +1 -1
  202. package/dist/helpers/splitSlots.d.ts.map +1 -1
  203. package/dist/helpers/splitSlots.js.map +1 -1
  204. package/dist/hooks/createControllableSignal.d.ts.map +1 -1
  205. package/dist/hooks/createControllableSignal.js.map +1 -1
  206. package/dist/hooks/createItemTemplate.d.ts +17 -0
  207. package/dist/hooks/createItemTemplate.d.ts.map +1 -0
  208. package/dist/hooks/createItemTemplate.js +40 -0
  209. package/dist/hooks/createItemTemplate.js.map +6 -0
  210. package/dist/hooks/createPointerDrag.d.ts +13 -0
  211. package/dist/hooks/createPointerDrag.d.ts.map +1 -0
  212. package/dist/hooks/createPointerDrag.js +15 -0
  213. package/dist/hooks/createPointerDrag.js.map +6 -0
  214. package/dist/hooks/createSelectionGroup.d.ts +70 -0
  215. package/dist/hooks/createSelectionGroup.d.ts.map +1 -0
  216. package/dist/hooks/createSelectionGroup.js +141 -0
  217. package/dist/hooks/createSelectionGroup.js.map +6 -0
  218. package/dist/hooks/useClipboardValueCopy.js +3 -1
  219. package/dist/hooks/useClipboardValueCopy.js.map +1 -1
  220. package/dist/hooks/useLocalStorage.d.ts +5 -3
  221. package/dist/hooks/useLocalStorage.d.ts.map +1 -1
  222. package/dist/hooks/useLocalStorage.js.map +1 -1
  223. package/dist/hooks/usePrint.d.ts.map +1 -1
  224. package/dist/hooks/usePrint.js +5 -3
  225. package/dist/hooks/usePrint.js.map +1 -1
  226. package/dist/hooks/{createPwaUpdate.d.ts → usePwaUpdate.d.ts} +2 -2
  227. package/dist/hooks/usePwaUpdate.d.ts.map +1 -0
  228. package/dist/hooks/{createPwaUpdate.js → usePwaUpdate.js} +3 -3
  229. package/dist/hooks/usePwaUpdate.js.map +6 -0
  230. package/dist/hooks/useRouterLink.d.ts.map +1 -1
  231. package/dist/hooks/useRouterLink.js.map +1 -1
  232. package/dist/hooks/useSyncConfig.d.ts +3 -3
  233. package/dist/hooks/useSyncConfig.d.ts.map +1 -1
  234. package/dist/hooks/useSyncConfig.js +6 -7
  235. package/dist/hooks/useSyncConfig.js.map +1 -1
  236. package/dist/index.d.ts +5 -6
  237. package/dist/index.d.ts.map +1 -1
  238. package/dist/index.js +6 -7
  239. package/dist/index.js.map +1 -1
  240. package/dist/providers/ConfigContext.d.ts +2 -2
  241. package/dist/providers/ConfigContext.d.ts.map +1 -1
  242. package/dist/providers/InitializeProvider.js +5 -5
  243. package/dist/providers/InitializeProvider.js.map +2 -2
  244. package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
  245. package/dist/providers/ServiceClientProvider.js.map +1 -1
  246. package/dist/providers/ThemeContext.d.ts.map +1 -1
  247. package/dist/providers/ThemeContext.js +2 -1
  248. package/dist/providers/ThemeContext.js.map +2 -2
  249. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts.map +1 -1
  250. package/dist/providers/shared-data/SharedDataChangeEvent.js +1 -3
  251. package/dist/providers/shared-data/SharedDataChangeEvent.js.map +1 -1
  252. package/dist/providers/shared-data/SharedDataContext.d.ts +1 -1
  253. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
  254. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
  255. package/dist/providers/shared-data/SharedDataProvider.js +6 -6
  256. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
  257. package/dist/styles/patterns.styles.d.ts +1 -0
  258. package/dist/styles/patterns.styles.d.ts.map +1 -1
  259. package/dist/styles/patterns.styles.js +12 -1
  260. package/dist/styles/patterns.styles.js.map +1 -1
  261. package/dist/styles/tokens.styles.d.ts +2 -1
  262. package/dist/styles/tokens.styles.d.ts.map +1 -1
  263. package/dist/styles/tokens.styles.js +1 -1
  264. package/dist/styles/tokens.styles.js.map +1 -1
  265. package/docs/data-components.md +34 -5
  266. package/docs/disclosure.md +28 -8
  267. package/docs/display.md +19 -2
  268. package/docs/feedback.md +35 -12
  269. package/docs/form-controls.md +289 -33
  270. package/docs/hooks.md +21 -9
  271. package/docs/layout.md +15 -3
  272. package/docs/providers.md +120 -8
  273. package/docs/styling.md +90 -0
  274. package/package.json +3 -3
  275. package/src/components/data/Pagination.tsx +26 -22
  276. package/src/components/data/Table.tsx +1 -1
  277. package/src/components/data/calendar/Calendar.tsx +19 -5
  278. package/src/components/data/kanban/Kanban.tsx +72 -35
  279. package/src/components/data/list/List.tsx +11 -4
  280. package/src/components/data/list/ListItem.tsx +12 -2
  281. package/src/components/data/permission-table/PermissionTable.tsx +32 -5
  282. package/src/components/data/sheet/DataSheet.styles.ts +24 -6
  283. package/src/components/data/sheet/DataSheet.tsx +215 -149
  284. package/src/components/data/sheet/DataSheetColumn.tsx +5 -1
  285. package/src/components/data/sheet/DataSheetConfigDialog.tsx +27 -5
  286. package/src/components/data/sheet/sheetUtils.ts +12 -3
  287. package/src/components/data/sheet/types.ts +2 -2
  288. package/src/components/disclosure/Collapse.tsx +14 -3
  289. package/src/components/disclosure/Dialog.tsx +122 -106
  290. package/src/components/disclosure/DialogContext.ts +8 -5
  291. package/src/components/disclosure/DialogProvider.tsx +19 -7
  292. package/src/components/disclosure/Dropdown.tsx +12 -2
  293. package/src/components/disclosure/Tabs.tsx +29 -5
  294. package/src/components/display/Alert.tsx +3 -4
  295. package/src/components/display/Card.tsx +1 -2
  296. package/src/components/display/Echarts.tsx +12 -5
  297. package/src/components/display/Link.tsx +22 -0
  298. package/src/components/feedback/Progress.tsx +9 -5
  299. package/src/components/feedback/{loading/LoadingContainer.tsx → busy/BusyContainer.tsx} +52 -19
  300. package/src/components/feedback/busy/BusyContext.ts +20 -0
  301. package/src/components/feedback/{loading/LoadingProvider.tsx → busy/BusyProvider.tsx} +10 -10
  302. package/src/components/feedback/notification/NotificationBanner.tsx +14 -3
  303. package/src/components/feedback/notification/NotificationBell.tsx +21 -15
  304. package/src/components/feedback/notification/NotificationContext.ts +4 -1
  305. package/src/components/feedback/notification/NotificationProvider.tsx +4 -1
  306. package/src/components/form-control/Button.tsx +8 -3
  307. package/src/components/form-control/DropdownTrigger.styles.ts +7 -1
  308. package/src/components/form-control/Invalid.tsx +114 -48
  309. package/src/components/form-control/ThemeToggle.tsx +9 -18
  310. package/src/components/form-control/checkbox/Checkbox.styles.ts +7 -10
  311. package/src/components/form-control/checkbox/Checkbox.tsx +39 -28
  312. package/src/components/form-control/checkbox/CheckboxGroup.tsx +18 -97
  313. package/src/components/form-control/checkbox/Radio.tsx +39 -28
  314. package/src/components/form-control/checkbox/RadioGroup.tsx +18 -92
  315. package/src/components/form-control/color-picker/ColorPicker.tsx +51 -18
  316. package/src/components/form-control/combobox/Combobox.tsx +53 -35
  317. package/src/components/form-control/editor/EditorToolbar.tsx +19 -19
  318. package/src/components/form-control/editor/RichTextEditor.tsx +22 -4
  319. package/src/components/form-control/field/DatePicker.tsx +99 -93
  320. package/src/components/form-control/field/DateTimePicker.tsx +115 -96
  321. package/src/components/form-control/field/Field.styles.ts +62 -3
  322. package/src/components/form-control/field/FieldPlaceholder.tsx +18 -0
  323. package/src/components/form-control/field/NumberInput.tsx +136 -84
  324. package/src/components/form-control/field/TextInput.tsx +135 -88
  325. package/src/components/form-control/field/Textarea.tsx +126 -99
  326. package/src/components/form-control/field/TimePicker.tsx +101 -71
  327. package/src/components/form-control/select/Select.tsx +75 -42
  328. package/src/components/form-control/select/SelectItem.tsx +3 -1
  329. package/src/components/form-control/state-preset/StatePreset.tsx +41 -22
  330. package/src/components/layout/FormGroup.tsx +11 -2
  331. package/src/components/layout/sidebar/Sidebar.tsx +3 -2
  332. package/src/components/layout/sidebar/SidebarContainer.tsx +8 -1
  333. package/src/components/layout/sidebar/SidebarMenu.tsx +8 -2
  334. package/src/components/layout/sidebar/SidebarUser.tsx +12 -7
  335. package/src/components/layout/topbar/Topbar.tsx +1 -1
  336. package/src/components/layout/topbar/TopbarMenu.tsx +27 -5
  337. package/src/components/layout/topbar/TopbarUser.tsx +5 -1
  338. package/src/helpers/createAppStructure.ts +29 -15
  339. package/src/helpers/mergeStyles.ts +6 -2
  340. package/src/helpers/splitSlots.ts +4 -1
  341. package/src/hooks/createControllableSignal.ts +2 -1
  342. package/src/hooks/createItemTemplate.tsx +42 -0
  343. package/src/hooks/createPointerDrag.ts +28 -0
  344. package/src/hooks/createSelectionGroup.tsx +235 -0
  345. package/src/hooks/useClipboardValueCopy.ts +5 -2
  346. package/src/hooks/useLocalStorage.ts +11 -5
  347. package/src/hooks/usePrint.ts +9 -4
  348. package/src/hooks/{createPwaUpdate.ts → usePwaUpdate.ts} +1 -1
  349. package/src/hooks/useRouterLink.ts +3 -1
  350. package/src/hooks/useSyncConfig.ts +9 -13
  351. package/src/index.ts +6 -7
  352. package/src/providers/ConfigContext.ts +2 -2
  353. package/src/providers/InitializeProvider.tsx +4 -4
  354. package/src/providers/ServiceClientProvider.tsx +14 -3
  355. package/src/providers/ThemeContext.tsx +12 -3
  356. package/src/providers/shared-data/SharedDataChangeEvent.ts +4 -3
  357. package/src/providers/shared-data/SharedDataContext.ts +1 -1
  358. package/src/providers/shared-data/SharedDataProvider.tsx +13 -8
  359. package/src/styles/patterns.styles.ts +13 -1
  360. package/src/styles/tokens.styles.ts +2 -1
  361. package/tailwind.config.ts +9 -0
  362. package/tailwind.css +1 -1
  363. package/dist/components/display/Card.css +0 -15
  364. package/dist/components/feedback/loading/LoadingContainer.d.ts +0 -12
  365. package/dist/components/feedback/loading/LoadingContainer.d.ts.map +0 -1
  366. package/dist/components/feedback/loading/LoadingContainer.js.map +0 -6
  367. package/dist/components/feedback/loading/LoadingContext.d.ts +0 -11
  368. package/dist/components/feedback/loading/LoadingContext.d.ts.map +0 -1
  369. package/dist/components/feedback/loading/LoadingContext.js +0 -14
  370. package/dist/components/feedback/loading/LoadingContext.js.map +0 -6
  371. package/dist/components/feedback/loading/LoadingProvider.d.ts +0 -7
  372. package/dist/components/feedback/loading/LoadingProvider.d.ts.map +0 -1
  373. package/dist/components/feedback/loading/LoadingProvider.js.map +0 -6
  374. package/dist/hooks/createPwaUpdate.d.ts.map +0 -1
  375. package/dist/hooks/createPwaUpdate.js.map +0 -6
  376. package/src/components/display/Card.css +0 -15
  377. package/src/components/feedback/loading/LoadingContext.ts +0 -20
  378. /package/dist/components/feedback/{loading/LoadingContainer.css → busy/BusyContainer.css} +0 -0
  379. /package/src/components/feedback/{loading/LoadingContainer.css → busy/BusyContainer.css} +0 -0
@@ -16,10 +16,11 @@ import { IconEye, IconEyeOff } from "@tabler/icons-solidjs";
16
16
  import { Card } from "../../display/Card";
17
17
  import { Checkbox } from "../../form-control/checkbox/Checkbox";
18
18
  import { Icon } from "../../display/Icon";
19
- import { LoadingContainer } from "../../feedback/loading/LoadingContainer";
19
+ import { BusyContainer } from "../../feedback/busy/BusyContainer";
20
20
  import { createControllableSignal } from "../../../hooks/createControllableSignal";
21
21
  import { splitSlots } from "../../../helpers/splitSlots";
22
22
  import "./Kanban.css";
23
+ import { iconButtonBase } from "../../../styles/patterns.styles";
23
24
  import {
24
25
  KanbanContext,
25
26
  KanbanLaneContext,
@@ -34,16 +35,23 @@ import {
34
35
 
35
36
  // ─── KanbanLaneTitle ─────────────────────────────────────────────
36
37
 
37
- const KanbanLaneTitle: ParentComponent = (props) => <div data-kanban-lane-title>{props.children}</div>;
38
+ const KanbanLaneTitle: ParentComponent = (props) => (
39
+ <div data-kanban-lane-title>{props.children}</div>
40
+ );
38
41
 
39
42
  // ─── KanbanLaneTools ─────────────────────────────────────────────
40
43
 
41
- const KanbanLaneTools: ParentComponent = (props) => <div data-kanban-lane-tools>{props.children}</div>;
44
+ const KanbanLaneTools: ParentComponent = (props) => (
45
+ <div data-kanban-lane-tools>{props.children}</div>
46
+ );
42
47
 
43
48
  // ─── KanbanCard ──────────────────────────────────────────────────
44
49
 
45
- export interface KanbanCardProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "children" | "draggable"> {
46
- value?: unknown;
50
+ export interface KanbanCardProps<TCardValue = unknown> extends Omit<
51
+ JSX.HTMLAttributes<HTMLDivElement>,
52
+ "children" | "draggable"
53
+ > {
54
+ value?: TCardValue;
47
55
  draggable?: boolean;
48
56
  selectable?: boolean;
49
57
  contentClass?: string;
@@ -52,14 +60,25 @@ export interface KanbanCardProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>
52
60
 
53
61
  const cardHostClass = clsx("relative block", "transition-opacity duration-200");
54
62
 
55
- const cardContentClass = clsx("select-none whitespace-normal", "animate-none", "transition-shadow duration-200");
63
+ const cardContentClass = clsx(
64
+ "select-none whitespace-normal",
65
+ "animate-none",
66
+ "transition-shadow duration-200",
67
+ );
56
68
 
57
69
  const cardSelectedClass = clsx("ring-2 ring-primary-500/50", "shadow-md dark:shadow-black/30");
58
70
 
59
71
  const LONG_PRESS_MS = 500;
60
72
 
61
73
  const KanbanCard: ParentComponent<KanbanCardProps> = (props) => {
62
- const [local, rest] = splitProps(props, ["children", "class", "value", "draggable", "selectable", "contentClass"]);
74
+ const [local, rest] = splitProps(props, [
75
+ "children",
76
+ "class",
77
+ "value",
78
+ "draggable",
79
+ "selectable",
80
+ "contentClass",
81
+ ]);
63
82
 
64
83
  const boardCtx = useKanbanContext();
65
84
  const laneCtx = useKanbanLaneContext();
@@ -182,7 +201,12 @@ const KanbanCard: ParentComponent<KanbanCardProps> = (props) => {
182
201
  ref={hostRef}
183
202
  data-kanban-card
184
203
  draggable={isDraggable()}
185
- class={twMerge(cardHostClass, isDraggable() && "cursor-grab", isDragSource() && "opacity-30", local.class)}
204
+ class={twMerge(
205
+ cardHostClass,
206
+ isDraggable() && "cursor-grab",
207
+ isDragSource() && "opacity-30",
208
+ local.class,
209
+ )}
186
210
  onDragStart={handleDragStart}
187
211
  onDragOver={handleDragOver}
188
212
  onDrop={handleDrop}
@@ -191,7 +215,9 @@ const KanbanCard: ParentComponent<KanbanCardProps> = (props) => {
191
215
  onPointerCancel={handlePointerCancel}
192
216
  onClick={handleClick}
193
217
  >
194
- <Card class={twMerge(cardContentClass, isSelected() && cardSelectedClass, local.contentClass)}>
218
+ <Card
219
+ class={twMerge(cardContentClass, isSelected() && cardSelectedClass, local.contentClass)}
220
+ >
195
221
  {local.children}
196
222
  </Card>
197
223
  </div>
@@ -200,8 +226,11 @@ const KanbanCard: ParentComponent<KanbanCardProps> = (props) => {
200
226
 
201
227
  // ─── KanbanLane ──────────────────────────────────────────────────
202
228
 
203
- export interface KanbanLaneProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "children"> {
204
- value?: unknown;
229
+ export interface KanbanLaneProps<TLaneValue = unknown> extends Omit<
230
+ JSX.HTMLAttributes<HTMLDivElement>,
231
+ "children"
232
+ > {
233
+ value?: TLaneValue;
205
234
  busy?: boolean;
206
235
  collapsible?: boolean;
207
236
  collapsed?: boolean;
@@ -223,20 +252,12 @@ const laneDragOverClass = clsx("bg-primary-50 dark:bg-primary-950");
223
252
  const laneHeaderBaseClass = clsx(
224
253
  "flex items-center gap-2",
225
254
  "px-3 py-2",
226
- "font-semibold",
255
+ "font-bold",
227
256
  "text-base-700 dark:text-base-200",
228
257
  "select-none",
229
258
  );
230
259
 
231
- const collapseButtonClass = clsx(
232
- "flex items-center justify-center",
233
- "size-6 rounded",
234
- "text-base-500",
235
- "hover:bg-base-200 hover:text-primary-500",
236
- "dark:hover:bg-base-800",
237
- "transition-colors duration-150",
238
- "cursor-pointer",
239
- );
260
+ const collapseButtonClass = twMerge(iconButtonBase, "size-6", "hover:text-primary-500");
240
261
 
241
262
  const laneToolsClass = clsx("flex items-center", "gap-1");
242
263
 
@@ -267,9 +288,9 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
267
288
 
268
289
  const boardCtx = useKanbanContext();
269
290
 
270
- const [registeredCards, setRegisteredCards] = createSignal<Map<string, { value: unknown; selectable: boolean }>>(
271
- new Map(),
272
- );
291
+ const [registeredCards, setRegisteredCards] = createSignal<
292
+ Map<string, { value: unknown; selectable: boolean }>
293
+ >(new Map());
273
294
 
274
295
  const registerCard = (id: string, info: { value: unknown; selectable: boolean }) => {
275
296
  setRegisteredCards((prev) => new Map(prev).set(id, info));
@@ -396,7 +417,8 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
396
417
  placeholderEl.style.height = `${dc.heightOnDrag}px`;
397
418
 
398
419
  // 삽입 위치 계산
399
- const referenceNode = target.position === "before" ? target.element : target.element.nextElementSibling;
420
+ const referenceNode =
421
+ target.position === "before" ? target.element : target.element.nextElementSibling;
400
422
 
401
423
  // 이미 올바른 위치면 DOM 조작 생략
402
424
  if (placeholderEl.parentNode === bodyRef && placeholderEl.nextSibling === referenceNode) {
@@ -414,7 +436,7 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
414
436
  });
415
437
 
416
438
  return (
417
- <LoadingContainer busy={local.busy} variant="bar">
439
+ <BusyContainer busy={local.busy} variant="bar">
418
440
  <div
419
441
  {...rest}
420
442
  data-kanban-lane
@@ -427,12 +449,16 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
427
449
  <Show when={hasHeader()}>
428
450
  <div class={laneHeaderBaseClass}>
429
451
  <Show when={local.collapsible}>
430
- <button type="button" class={collapseButtonClass} onClick={() => setCollapsed((prev) => !prev)}>
452
+ <button
453
+ type="button"
454
+ class={collapseButtonClass}
455
+ onClick={() => setCollapsed((prev) => !prev)}
456
+ >
431
457
  <Icon icon={collapsed() ? IconEyeOff : IconEye} size="1em" />
432
458
  </button>
433
459
  </Show>
434
460
  <Show when={hasSelectableCards()}>
435
- <Checkbox value={isAllSelected()} onValueChange={handleSelectAll} inline theme="primary" />
461
+ <Checkbox value={isAllSelected()} onValueChange={handleSelectAll} inline />
436
462
  </Show>
437
463
  <div class="flex-1">{slots().kanbanLaneTitle}</div>
438
464
  <Show when={slots().kanbanLaneTools.length > 0}>
@@ -446,7 +472,7 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
446
472
  </div>
447
473
  </Show>
448
474
  </div>
449
- </LoadingContainer>
475
+ </BusyContainer>
450
476
  );
451
477
  };
452
478
 
@@ -459,17 +485,22 @@ const KanbanLane: ParentComponent<KanbanLaneProps> = (props) => {
459
485
 
460
486
  // ─── Kanban (Board) ──────────────────────────────────────────────
461
487
 
462
- export interface KanbanProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "children" | "onDrop"> {
463
- onDrop?: (info: KanbanDropInfo) => void;
464
- selectedValues?: unknown[];
465
- onSelectedValuesChange?: (values: unknown[]) => void;
488
+ export interface KanbanProps<TCardValue = unknown, TLaneValue = unknown> extends Omit<
489
+ JSX.HTMLAttributes<HTMLDivElement>,
490
+ "children" | "onDrop"
491
+ > {
492
+ onDrop?: (info: KanbanDropInfo<TLaneValue, TCardValue>) => void;
493
+ selectedValues?: TCardValue[];
494
+ onSelectedValuesChange?: (values: TCardValue[]) => void;
466
495
  children?: JSX.Element;
467
496
  }
468
497
 
469
498
  const boardBaseClass = clsx("inline-flex flex-nowrap", "h-full", "gap-4");
470
499
 
471
500
  interface KanbanComponent {
472
- (props: KanbanProps): JSX.Element;
501
+ <TCardValue = unknown, TLaneValue = unknown>(
502
+ props: KanbanProps<TCardValue, TLaneValue>,
503
+ ): JSX.Element;
473
504
  Lane: typeof KanbanLane;
474
505
  Card: typeof KanbanCard;
475
506
  LaneTitle: typeof KanbanLaneTitle;
@@ -477,7 +508,13 @@ interface KanbanComponent {
477
508
  }
478
509
 
479
510
  const KanbanBase = (props: KanbanProps) => {
480
- const [local, rest] = splitProps(props, ["children", "class", "onDrop", "selectedValues", "onSelectedValuesChange"]);
511
+ const [local, rest] = splitProps(props, [
512
+ "children",
513
+ "class",
514
+ "onDrop",
515
+ "selectedValues",
516
+ "onSelectedValuesChange",
517
+ ]);
481
518
 
482
519
  const [dragCard, setDragCard] = createSignal<KanbanCardRef>();
483
520
 
@@ -6,11 +6,15 @@ import { ListItem } from "./ListItem";
6
6
 
7
7
  const baseClass = clsx("inline-flex flex-col rounded-md");
8
8
 
9
- const rootClass = clsx("border border-base-300 bg-base-50 p-px dark:border-base-700 dark:bg-base-900");
9
+ const rootClass = clsx(
10
+ "border border-base-300 bg-base-50 p-px dark:border-base-700 dark:bg-base-900",
11
+ );
10
12
 
11
13
  const nestedClass = clsx("rounded-none py-1");
12
14
 
13
- const insetClass = clsx("w-full border-transparent bg-transparent dark:border-transparent dark:bg-transparent");
15
+ const insetClass = clsx(
16
+ "w-full border-transparent bg-transparent dark:border-transparent dark:bg-transparent",
17
+ );
14
18
 
15
19
  export interface ListProps extends JSX.HTMLAttributes<HTMLDivElement> {
16
20
  /**
@@ -89,7 +93,8 @@ const ListBase: ParentComponent<ListProps> = (props) => {
89
93
  current.click();
90
94
  } else {
91
95
  // Collapse의 이전 형제가 부모 button
92
- const parentItem = current.closest("[data-collapse]")?.previousElementSibling as HTMLElement | null;
96
+ const parentItem = current.closest("[data-collapse]")
97
+ ?.previousElementSibling as HTMLElement | null;
93
98
  if (parentItem?.hasAttribute("data-list-item")) {
94
99
  parentItem.focus();
95
100
  }
@@ -100,7 +105,9 @@ const ListBase: ParentComponent<ListProps> = (props) => {
100
105
  const current = e.target as HTMLElement;
101
106
  if (!current.hasAttribute("data-list-item")) return;
102
107
 
103
- const allItems = [...listRef.querySelectorAll('[data-list-item]:not([aria-disabled="true"])')] as HTMLElement[];
108
+ const allItems = [
109
+ ...listRef.querySelectorAll('[data-list-item]:not([aria-disabled="true"])'),
110
+ ] as HTMLElement[];
104
111
  const visibleItems = allItems.filter((el) => isVisible(el));
105
112
  const idx = visibleItems.indexOf(current);
106
113
 
@@ -1,4 +1,11 @@
1
- import { children, type Component, type JSX, type ParentComponent, Show, splitProps } from "solid-js";
1
+ import {
2
+ children,
3
+ type Component,
4
+ type JSX,
5
+ type ParentComponent,
6
+ Show,
7
+ splitProps,
8
+ } from "solid-js";
2
9
  import { IconChevronDown, type IconProps } from "@tabler/icons-solidjs";
3
10
  import { Icon } from "../../display/Icon";
4
11
  import clsx from "clsx";
@@ -52,7 +59,10 @@ const ListItemChildren: ParentComponent = (props) => (
52
59
  </div>
53
60
  );
54
61
 
55
- export interface ListItemProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, "onClick"> {
62
+ export interface ListItemProps extends Omit<
63
+ JSX.ButtonHTMLAttributes<HTMLButtonElement>,
64
+ "onClick"
65
+ > {
56
66
  /**
57
67
  * 중첩 리스트의 열림 상태 (controlled 모드)
58
68
  */
@@ -1,5 +1,14 @@
1
1
  import type { JSX } from "solid-js";
2
- import { type Component, createEffect, createMemo, createSignal, For, on, Show, splitProps } from "solid-js";
2
+ import {
3
+ type Component,
4
+ createEffect,
5
+ createMemo,
6
+ createSignal,
7
+ For,
8
+ on,
9
+ Show,
10
+ splitProps,
11
+ } from "solid-js";
3
12
  import clsx from "clsx";
4
13
  import { twMerge } from "tailwind-merge";
5
14
  import { DataSheet } from "../sheet/DataSheet";
@@ -113,7 +122,10 @@ export function changePermCheck<TModule>(
113
122
  // --- 내부 헬퍼 ---
114
123
 
115
124
  /** 모듈 필터에 의해 보이는지 확인 (객체 참조 유지) */
116
- function isItemVisible<TModule>(item: PermissionItem<TModule>, modules: TModule[] | undefined): boolean {
125
+ function isItemVisible<TModule>(
126
+ item: PermissionItem<TModule>,
127
+ modules: TModule[] | undefined,
128
+ ): boolean {
117
129
  if (!modules || modules.length === 0) return true;
118
130
  if (item.modules && !item.modules.some((m) => modules.includes(m))) return false;
119
131
  if (!item.perms && item.children) {
@@ -123,7 +135,10 @@ function isItemVisible<TModule>(item: PermissionItem<TModule>, modules: TModule[
123
135
  }
124
136
 
125
137
  /** 보이는 아이템에서만 고유 perm 타입 수집 */
126
- function collectVisiblePerms<TModule>(items: PermissionItem<TModule>[], modules: TModule[] | undefined): string[] {
138
+ function collectVisiblePerms<TModule>(
139
+ items: PermissionItem<TModule>[],
140
+ modules: TModule[] | undefined,
141
+ ): string[] {
127
142
  const set = new Set<string>();
128
143
 
129
144
  function walk(list: PermissionItem<TModule>[]) {
@@ -165,7 +180,11 @@ function hasPermInTree<TModule>(item: PermissionItem<TModule>, perm: string): bo
165
180
  }
166
181
 
167
182
  /** 기본 권한(perms[0])이 꺼져 있어서 비활성화해야 하는지 */
168
- function isPermDisabled<TModule>(item: PermissionItem<TModule>, perm: string, value: Record<string, boolean>): boolean {
183
+ function isPermDisabled<TModule>(
184
+ item: PermissionItem<TModule>,
185
+ perm: string,
186
+ value: Record<string, boolean>,
187
+ ): boolean {
169
188
  if (!item.perms || item.href == null || item.href === "") return false;
170
189
  const basePerm = item.perms[0];
171
190
  if (perm === basePerm) return false;
@@ -196,7 +215,15 @@ function collectExpandable<TModule>(
196
215
  // --- 컴포넌트 ---
197
216
 
198
217
  export const PermissionTable: Component<PermissionTableProps> = (props) => {
199
- const [local] = splitProps(props, ["items", "value", "onValueChange", "modules", "disabled", "class", "style"]);
218
+ const [local] = splitProps(props, [
219
+ "items",
220
+ "value",
221
+ "onValueChange",
222
+ "modules",
223
+ "disabled",
224
+ "class",
225
+ "style",
226
+ ]);
200
227
 
201
228
  // 보이는 최상위 아이템 (객체 참조 유지)
202
229
  const visibleItems = createMemo(() => {
@@ -1,7 +1,11 @@
1
1
  import clsx from "clsx";
2
2
  import { borderDefault, borderSubtle } from "../../../styles/tokens.styles";
3
3
 
4
- export const dataSheetContainerClass = clsx("relative", "bg-white dark:bg-base-950", "overflow-auto");
4
+ export const dataSheetContainerClass = clsx(
5
+ "relative",
6
+ "bg-white dark:bg-base-950",
7
+ "overflow-auto",
8
+ );
5
9
 
6
10
  export const tableClass = clsx("border-separate border-spacing-0", "w-max");
7
11
 
@@ -11,7 +15,7 @@ export const thClass = clsx(
11
15
  "border-b border-r border-base-300 dark:border-base-800",
12
16
  "overflow-hidden whitespace-nowrap",
13
17
  "p-0",
14
- "text-left font-semibold",
18
+ "text-left font-bold",
15
19
  "align-middle",
16
20
  );
17
21
 
@@ -111,7 +115,12 @@ export const expandToggleClass = clsx(
111
115
  );
112
116
 
113
117
  // 선택 컬럼 — single 모드 아이콘 래퍼
114
- export const selectSingleClass = clsx("flex items-center justify-center", "size-6", "cursor-pointer", "rounded");
118
+ export const selectSingleClass = clsx(
119
+ "flex items-center justify-center",
120
+ "size-6",
121
+ "cursor-pointer",
122
+ "rounded",
123
+ );
115
124
 
116
125
  // single 모드 — 선택됨
117
126
  export const selectSingleSelectedClass = clsx("text-primary-500", "dark:text-primary-400");
@@ -143,13 +152,22 @@ export const featureCellWrapperClass = clsx("flex items-center", "px-1");
143
152
  export const featureCellBodyWrapperClass = clsx("flex h-full items-center", "px-1");
144
153
 
145
154
  // 기능 컬럼 헤더 클릭 가능 래퍼 (전체 선택 등)
146
- export const featureCellClickableClass = clsx("flex cursor-pointer items-center justify-center", "px-1");
155
+ export const featureCellClickableClass = clsx(
156
+ "flex cursor-pointer items-center justify-center",
157
+ "px-1",
158
+ );
147
159
 
148
160
  // 기능 컬럼 바디 클릭 가능 래퍼 (선택/재정렬 등 — 전체 높이)
149
- export const featureCellBodyClickableClass = clsx("flex h-full cursor-pointer items-center justify-center", "px-1");
161
+ export const featureCellBodyClickableClass = clsx(
162
+ "flex h-full cursor-pointer items-center justify-center",
163
+ "px-1",
164
+ );
150
165
 
151
166
  // 재정렬 핸들 래퍼 (touch-none 추가)
152
- export const reorderCellWrapperClass = clsx("flex h-full touch-none items-center justify-center", "px-1");
167
+ export const reorderCellWrapperClass = clsx(
168
+ "flex h-full touch-none items-center justify-center",
169
+ "px-1",
170
+ );
153
171
 
154
172
  // 설정 버튼
155
173
  export const configButtonClass = clsx(