@simplysm/solid 13.0.0-beta.6 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (777) hide show
  1. package/README.md +103 -1544
  2. package/dist/components/data/Pagination.d.ts.map +1 -0
  3. package/dist/components/data/Pagination.js +102 -56
  4. package/dist/components/data/Pagination.js.map +2 -3
  5. package/dist/components/data/Table.d.ts.map +1 -0
  6. package/dist/components/data/Table.js +16 -8
  7. package/dist/components/data/Table.js.map +2 -3
  8. package/dist/components/data/calendar/Calendar.d.ts.map +1 -0
  9. package/dist/components/data/calendar/Calendar.js +73 -21
  10. package/dist/components/data/calendar/Calendar.js.map +2 -3
  11. package/dist/components/data/kanban/Kanban.css +10 -0
  12. package/dist/components/data/kanban/Kanban.d.ts.map +1 -0
  13. package/dist/components/data/kanban/Kanban.js +181 -103
  14. package/dist/components/data/kanban/Kanban.js.map +2 -3
  15. package/dist/components/data/kanban/KanbanContext.d.ts.map +1 -0
  16. package/dist/components/data/kanban/KanbanContext.js.map +0 -1
  17. package/dist/components/data/list/List.d.ts.map +1 -0
  18. package/dist/components/data/list/List.js +32 -23
  19. package/dist/components/data/list/List.js.map +2 -3
  20. package/dist/components/data/list/ListContext.d.ts.map +1 -0
  21. package/dist/components/data/list/ListContext.js.map +0 -1
  22. package/dist/components/data/list/ListItem.d.ts.map +1 -0
  23. package/dist/components/data/list/ListItem.js +108 -59
  24. package/dist/components/data/list/ListItem.js.map +2 -3
  25. package/dist/components/data/list/ListItem.styles.d.ts.map +1 -0
  26. package/dist/components/data/list/ListItem.styles.js +3 -3
  27. package/dist/components/data/list/ListItem.styles.js.map +0 -1
  28. package/dist/components/data/permission-table/PermissionTable.d.ts.map +1 -0
  29. package/dist/components/data/permission-table/PermissionTable.js +105 -38
  30. package/dist/components/data/permission-table/PermissionTable.js.map +2 -3
  31. package/dist/components/data/sheet/DataSheet.css +26 -0
  32. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -0
  33. package/dist/components/data/sheet/DataSheet.js +654 -438
  34. package/dist/components/data/sheet/DataSheet.js.map +2 -3
  35. package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -0
  36. package/dist/components/data/sheet/DataSheet.styles.js +1 -1
  37. package/dist/components/data/sheet/DataSheet.styles.js.map +0 -1
  38. package/dist/components/data/sheet/DataSheetColumn.d.ts.map +1 -0
  39. package/dist/components/data/sheet/DataSheetColumn.js +1 -1
  40. package/dist/components/data/sheet/DataSheetColumn.js.map +2 -3
  41. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -0
  42. package/dist/components/data/sheet/DataSheetConfigDialog.js +92 -18
  43. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +2 -3
  44. package/dist/components/data/sheet/sheetUtils.d.ts.map +1 -0
  45. package/dist/components/data/sheet/sheetUtils.js.map +0 -1
  46. package/dist/components/data/sheet/types.d.ts.map +1 -0
  47. package/dist/components/data/sheet/types.js.map +0 -1
  48. package/dist/components/disclosure/Collapse.d.ts.map +1 -0
  49. package/dist/components/disclosure/Collapse.js +40 -23
  50. package/dist/components/disclosure/Collapse.js.map +2 -3
  51. package/dist/components/disclosure/Dialog.d.ts.map +1 -0
  52. package/dist/components/disclosure/Dialog.js +133 -141
  53. package/dist/components/disclosure/Dialog.js.map +2 -3
  54. package/dist/components/disclosure/DialogContext.d.ts.map +1 -0
  55. package/dist/components/disclosure/DialogContext.js.map +0 -1
  56. package/dist/components/disclosure/DialogInstanceContext.d.ts.map +1 -0
  57. package/dist/components/disclosure/DialogInstanceContext.js.map +0 -1
  58. package/dist/components/disclosure/DialogProvider.d.ts.map +1 -0
  59. package/dist/components/disclosure/DialogProvider.js +92 -40
  60. package/dist/components/disclosure/DialogProvider.js.map +2 -3
  61. package/dist/components/disclosure/Dropdown.d.ts.map +1 -0
  62. package/dist/components/disclosure/Dropdown.js +62 -47
  63. package/dist/components/disclosure/Dropdown.js.map +2 -3
  64. package/dist/components/disclosure/Tabs.d.ts.map +1 -0
  65. package/dist/components/disclosure/Tabs.js +57 -29
  66. package/dist/components/disclosure/Tabs.js.map +2 -3
  67. package/dist/components/disclosure/dialogZIndex.d.ts.map +1 -0
  68. package/dist/components/disclosure/dialogZIndex.js.map +0 -1
  69. package/dist/components/display/Alert.d.ts.map +1 -0
  70. package/dist/components/display/Alert.js +16 -2
  71. package/dist/components/display/Alert.js.map +2 -3
  72. package/dist/components/display/Barcode.d.ts.map +1 -0
  73. package/dist/components/display/Barcode.js +16 -1
  74. package/dist/components/display/Barcode.js.map +2 -3
  75. package/dist/components/display/Card.css +14 -0
  76. package/dist/components/display/Card.d.ts.map +1 -0
  77. package/dist/components/display/Card.js +16 -10
  78. package/dist/components/display/Card.js.map +2 -3
  79. package/dist/{solid/src/components → components}/display/Echarts.d.ts +2 -2
  80. package/dist/components/display/Echarts.d.ts.map +1 -0
  81. package/dist/components/display/Echarts.js +28 -6
  82. package/dist/components/display/Echarts.js.map +2 -3
  83. package/dist/components/display/Icon.d.ts.map +1 -0
  84. package/dist/components/display/Icon.js +12 -1
  85. package/dist/components/display/Icon.js.map +2 -3
  86. package/dist/components/display/Tag.d.ts.map +1 -0
  87. package/dist/components/display/Tag.js +17 -5
  88. package/dist/components/display/Tag.js.map +2 -3
  89. package/dist/components/feedback/Progress.d.ts.map +1 -0
  90. package/dist/components/feedback/Progress.js +43 -12
  91. package/dist/components/feedback/Progress.js.map +2 -3
  92. package/dist/components/feedback/loading/LoadingContainer.css +19 -0
  93. package/dist/components/feedback/loading/LoadingContainer.d.ts.map +1 -0
  94. package/dist/components/feedback/loading/LoadingContainer.js +109 -45
  95. package/dist/components/feedback/loading/LoadingContainer.js.map +2 -3
  96. package/dist/components/feedback/loading/LoadingContext.d.ts.map +1 -0
  97. package/dist/components/feedback/loading/LoadingContext.js.map +0 -1
  98. package/dist/components/feedback/loading/LoadingProvider.d.ts.map +1 -0
  99. package/dist/components/feedback/loading/LoadingProvider.js +32 -12
  100. package/dist/components/feedback/loading/LoadingProvider.js.map +2 -3
  101. package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -0
  102. package/dist/components/feedback/notification/NotificationBanner.js +64 -30
  103. package/dist/components/feedback/notification/NotificationBanner.js.map +2 -3
  104. package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -0
  105. package/dist/components/feedback/notification/NotificationBell.js +118 -50
  106. package/dist/components/feedback/notification/NotificationBell.js.map +2 -3
  107. package/dist/components/feedback/notification/NotificationContext.d.ts.map +1 -0
  108. package/dist/components/feedback/notification/NotificationContext.js.map +0 -1
  109. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -0
  110. package/dist/components/feedback/notification/NotificationProvider.js +41 -17
  111. package/dist/components/feedback/notification/NotificationProvider.js.map +2 -3
  112. package/dist/components/feedback/notification/index.d.ts.map +1 -0
  113. package/dist/components/feedback/notification/index.js +4 -4
  114. package/dist/components/feedback/notification/index.js.map +0 -1
  115. package/dist/components/feedback/print/Print.d.ts.map +1 -0
  116. package/dist/components/feedback/print/Print.js +10 -2
  117. package/dist/components/feedback/print/Print.js.map +2 -3
  118. package/dist/components/feedback/print/PrintInstanceContext.d.ts.map +1 -0
  119. package/dist/components/feedback/print/PrintInstanceContext.js.map +0 -1
  120. package/dist/components/form-control/Button.d.ts.map +1 -0
  121. package/dist/components/form-control/Button.js +35 -56
  122. package/dist/components/form-control/Button.js.map +2 -3
  123. package/dist/components/form-control/DropdownTrigger.styles.d.ts.map +1 -0
  124. package/dist/components/form-control/DropdownTrigger.styles.js +2 -2
  125. package/dist/components/form-control/DropdownTrigger.styles.js.map +0 -1
  126. package/dist/components/form-control/Invalid.d.ts +10 -0
  127. package/dist/components/form-control/Invalid.d.ts.map +1 -0
  128. package/dist/components/form-control/Invalid.js +51 -0
  129. package/dist/components/form-control/Invalid.js.map +6 -0
  130. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -0
  131. package/dist/components/form-control/ThemeToggle.js +75 -30
  132. package/dist/components/form-control/ThemeToggle.js.map +2 -3
  133. package/dist/{solid/src/components/form-control/checkbox/Radio.d.ts.map → components/form-control/checkbox/Checkbox.d.ts.map} +1 -1
  134. package/dist/components/form-control/checkbox/Checkbox.js +60 -50
  135. package/dist/components/form-control/checkbox/Checkbox.js.map +2 -3
  136. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -0
  137. package/dist/components/form-control/checkbox/Checkbox.styles.js +2 -2
  138. package/dist/components/form-control/checkbox/Checkbox.styles.js.map +0 -1
  139. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts.map +1 -0
  140. package/dist/components/form-control/checkbox/CheckboxGroup.js +49 -27
  141. package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -3
  142. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -0
  143. package/dist/components/form-control/checkbox/Radio.js +58 -49
  144. package/dist/components/form-control/checkbox/Radio.js.map +2 -3
  145. package/dist/components/form-control/checkbox/RadioGroup.d.ts.map +1 -0
  146. package/dist/components/form-control/checkbox/RadioGroup.js +49 -27
  147. package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -3
  148. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -0
  149. package/dist/components/form-control/color-picker/ColorPicker.js +30 -21
  150. package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -3
  151. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -0
  152. package/dist/components/form-control/combobox/Combobox.js +172 -84
  153. package/dist/components/form-control/combobox/Combobox.js.map +2 -3
  154. package/dist/components/form-control/combobox/ComboboxContext.d.ts.map +1 -0
  155. package/dist/components/form-control/combobox/ComboboxContext.js.map +0 -1
  156. package/dist/components/form-control/combobox/ComboboxItem.d.ts.map +1 -0
  157. package/dist/components/form-control/combobox/ComboboxItem.js +38 -31
  158. package/dist/components/form-control/combobox/ComboboxItem.js.map +2 -3
  159. package/dist/components/form-control/date-range-picker/DateRangePicker.d.ts.map +1 -0
  160. package/dist/components/form-control/date-range-picker/DateRangePicker.js +105 -67
  161. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -3
  162. package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -0
  163. package/dist/components/form-control/editor/EditorToolbar.js +211 -248
  164. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -3
  165. package/dist/{solid/src/components → components}/form-control/editor/RichTextEditor.d.ts +0 -2
  166. package/dist/components/form-control/editor/RichTextEditor.d.ts.map +1 -0
  167. package/dist/components/form-control/editor/RichTextEditor.js +73 -58
  168. package/dist/components/form-control/editor/RichTextEditor.js.map +2 -3
  169. package/dist/components/form-control/editor/editor.css +81 -0
  170. package/dist/{solid/src/components → components}/form-control/field/DatePicker.d.ts +0 -2
  171. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -0
  172. package/dist/components/form-control/field/DatePicker.js +123 -91
  173. package/dist/components/form-control/field/DatePicker.js.map +2 -3
  174. package/dist/{solid/src/components → components}/form-control/field/DateTimePicker.d.ts +0 -2
  175. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -0
  176. package/dist/components/form-control/field/DateTimePicker.js +123 -108
  177. package/dist/components/form-control/field/DateTimePicker.js.map +2 -3
  178. package/dist/{solid/src/components → components}/form-control/field/Field.styles.d.ts +0 -1
  179. package/dist/components/form-control/field/Field.styles.d.ts.map +1 -0
  180. package/dist/components/form-control/field/Field.styles.js +2 -4
  181. package/dist/components/form-control/field/Field.styles.js.map +1 -2
  182. package/dist/{solid/src/components → components}/form-control/field/NumberInput.d.ts +0 -2
  183. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -0
  184. package/dist/components/form-control/field/NumberInput.js +137 -102
  185. package/dist/components/form-control/field/NumberInput.js.map +2 -3
  186. package/dist/{solid/src/components → components}/form-control/field/TextInput.d.ts +0 -2
  187. package/dist/components/form-control/field/TextInput.d.ts.map +1 -0
  188. package/dist/components/form-control/field/TextInput.js +133 -98
  189. package/dist/components/form-control/field/TextInput.js.map +2 -3
  190. package/dist/{solid/src/components → components}/form-control/field/Textarea.d.ts +0 -2
  191. package/dist/components/form-control/field/Textarea.d.ts.map +1 -0
  192. package/dist/components/form-control/field/Textarea.js +147 -128
  193. package/dist/components/form-control/field/Textarea.js.map +2 -3
  194. package/dist/{solid/src/components → components}/form-control/field/TimePicker.d.ts +0 -2
  195. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -0
  196. package/dist/components/form-control/field/TimePicker.js +115 -87
  197. package/dist/components/form-control/field/TimePicker.js.map +2 -3
  198. package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -0
  199. package/dist/components/form-control/numpad/Numpad.js +189 -31
  200. package/dist/components/form-control/numpad/Numpad.js.map +2 -3
  201. package/dist/components/form-control/select/Select.d.ts.map +1 -0
  202. package/dist/components/form-control/select/Select.js +188 -86
  203. package/dist/components/form-control/select/Select.js.map +2 -3
  204. package/dist/components/form-control/select/SelectContext.d.ts.map +1 -0
  205. package/dist/components/form-control/select/SelectContext.js.map +0 -1
  206. package/dist/components/form-control/select/SelectItem.d.ts.map +1 -0
  207. package/dist/components/form-control/select/SelectItem.js +79 -38
  208. package/dist/components/form-control/select/SelectItem.js.map +2 -3
  209. package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -0
  210. package/dist/components/form-control/state-preset/StatePreset.js +95 -80
  211. package/dist/components/form-control/state-preset/StatePreset.js.map +2 -3
  212. package/dist/components/layout/FormGroup.d.ts.map +1 -0
  213. package/dist/components/layout/FormGroup.js +47 -11
  214. package/dist/components/layout/FormGroup.js.map +2 -3
  215. package/dist/components/layout/FormTable.d.ts.map +1 -0
  216. package/dist/components/layout/FormTable.js +15 -1
  217. package/dist/components/layout/FormTable.js.map +2 -3
  218. package/dist/components/layout/sidebar/Sidebar.d.ts.map +1 -0
  219. package/dist/components/layout/sidebar/Sidebar.js +37 -36
  220. package/dist/components/layout/sidebar/Sidebar.js.map +2 -3
  221. package/dist/{solid/src/components → components}/layout/sidebar/SidebarContainer.d.ts +1 -1
  222. package/dist/components/layout/sidebar/SidebarContainer.d.ts.map +1 -0
  223. package/dist/components/layout/sidebar/SidebarContainer.js +48 -35
  224. package/dist/components/layout/sidebar/SidebarContainer.js.map +2 -3
  225. package/dist/components/layout/sidebar/SidebarContext.d.ts.map +1 -0
  226. package/dist/components/layout/sidebar/SidebarContext.js.map +0 -1
  227. package/dist/components/layout/sidebar/SidebarMenu.d.ts.map +1 -0
  228. package/dist/components/layout/sidebar/SidebarMenu.js +91 -25
  229. package/dist/components/layout/sidebar/SidebarMenu.js.map +2 -3
  230. package/dist/components/layout/sidebar/SidebarUser.d.ts +48 -0
  231. package/dist/components/layout/sidebar/SidebarUser.d.ts.map +1 -0
  232. package/dist/components/layout/sidebar/SidebarUser.js +99 -26
  233. package/dist/components/layout/sidebar/SidebarUser.js.map +2 -3
  234. package/dist/components/layout/topbar/Topbar.d.ts.map +1 -0
  235. package/dist/components/layout/topbar/Topbar.js +40 -7
  236. package/dist/components/layout/topbar/Topbar.js.map +2 -3
  237. package/dist/components/layout/topbar/TopbarContainer.d.ts.map +1 -0
  238. package/dist/components/layout/topbar/TopbarContainer.js +16 -1
  239. package/dist/components/layout/topbar/TopbarContainer.js.map +2 -3
  240. package/dist/components/layout/topbar/TopbarMenu.d.ts.map +1 -0
  241. package/dist/components/layout/topbar/TopbarMenu.js +200 -28
  242. package/dist/components/layout/topbar/TopbarMenu.js.map +2 -3
  243. package/dist/components/layout/topbar/TopbarUser.d.ts.map +1 -0
  244. package/dist/components/layout/topbar/TopbarUser.js +83 -16
  245. package/dist/components/layout/topbar/TopbarUser.js.map +2 -3
  246. package/dist/directives/ripple.d.ts.map +1 -0
  247. package/dist/directives/ripple.js.map +0 -1
  248. package/dist/helpers/createAppStructure.d.ts.map +1 -0
  249. package/dist/helpers/createAppStructure.js.map +0 -1
  250. package/dist/helpers/mergeStyles.d.ts.map +1 -0
  251. package/dist/helpers/mergeStyles.js.map +0 -1
  252. package/dist/helpers/splitSlots.d.ts.map +1 -0
  253. package/dist/helpers/splitSlots.js.map +0 -1
  254. package/dist/hooks/createControllableSignal.d.ts.map +1 -0
  255. package/dist/hooks/createControllableSignal.js.map +0 -1
  256. package/dist/hooks/createIMEHandler.d.ts.map +1 -0
  257. package/dist/hooks/createIMEHandler.js.map +0 -1
  258. package/dist/hooks/createMountTransition.d.ts.map +1 -0
  259. package/dist/hooks/createMountTransition.js.map +0 -1
  260. package/dist/hooks/createPwaUpdate.d.ts +14 -0
  261. package/dist/hooks/createPwaUpdate.d.ts.map +1 -0
  262. package/dist/hooks/createPwaUpdate.js +50 -0
  263. package/dist/hooks/createPwaUpdate.js.map +6 -0
  264. package/dist/hooks/useClipboardValueCopy.d.ts.map +1 -0
  265. package/dist/hooks/useClipboardValueCopy.js +1 -2
  266. package/dist/hooks/useClipboardValueCopy.js.map +1 -2
  267. package/dist/hooks/useLocalStorage.d.ts +29 -0
  268. package/dist/hooks/useLocalStorage.d.ts.map +1 -0
  269. package/dist/hooks/useLocalStorage.js +36 -0
  270. package/dist/hooks/useLocalStorage.js.map +6 -0
  271. package/dist/hooks/useLogger.d.ts +9 -0
  272. package/dist/hooks/useLogger.d.ts.map +1 -0
  273. package/dist/hooks/useLogger.js +24 -0
  274. package/dist/hooks/useLogger.js.map +6 -0
  275. package/dist/hooks/usePrint.d.ts.map +1 -0
  276. package/dist/hooks/usePrint.js +2 -2
  277. package/dist/hooks/usePrint.js.map +0 -1
  278. package/dist/hooks/useRouterLink.d.ts.map +1 -0
  279. package/dist/hooks/useRouterLink.js.map +0 -1
  280. package/dist/hooks/useSyncConfig.d.ts +24 -0
  281. package/dist/hooks/useSyncConfig.d.ts.map +1 -0
  282. package/dist/hooks/useSyncConfig.js +60 -0
  283. package/dist/hooks/useSyncConfig.js.map +6 -0
  284. package/dist/{solid/src/index.d.ts → index.d.ts} +9 -4
  285. package/dist/index.d.ts.map +1 -0
  286. package/dist/index.js +90 -84
  287. package/dist/index.js.map +1 -2
  288. package/dist/{solid/src/providers → providers}/ConfigContext.d.ts +20 -2
  289. package/dist/providers/ConfigContext.d.ts.map +1 -0
  290. package/dist/providers/ConfigContext.js.map +1 -2
  291. package/dist/{solid/src/providers → providers}/InitializeProvider.d.ts +6 -3
  292. package/dist/providers/InitializeProvider.d.ts.map +1 -0
  293. package/dist/providers/InitializeProvider.js +58 -3
  294. package/dist/providers/InitializeProvider.js.map +2 -3
  295. package/dist/providers/ServiceClientContext.d.ts.map +1 -0
  296. package/dist/providers/ServiceClientContext.js.map +0 -1
  297. package/dist/providers/ServiceClientProvider.d.ts.map +1 -0
  298. package/dist/providers/ServiceClientProvider.js +30 -24
  299. package/dist/providers/ServiceClientProvider.js.map +2 -3
  300. package/dist/{solid/src/providers → providers}/ThemeContext.d.ts +1 -1
  301. package/dist/providers/ThemeContext.d.ts.map +1 -0
  302. package/dist/providers/ThemeContext.js +10 -6
  303. package/dist/providers/ThemeContext.js.map +2 -3
  304. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts +5 -0
  305. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts.map +1 -0
  306. package/dist/providers/shared-data/SharedDataChangeEvent.js +4 -4
  307. package/dist/providers/shared-data/SharedDataChangeEvent.js.map +1 -2
  308. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -0
  309. package/dist/providers/shared-data/SharedDataContext.js.map +0 -1
  310. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -0
  311. package/dist/providers/shared-data/SharedDataProvider.js +20 -17
  312. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -3
  313. package/dist/styles/patterns.styles.d.ts.map +1 -0
  314. package/dist/styles/patterns.styles.js +1 -1
  315. package/dist/styles/patterns.styles.js.map +0 -1
  316. package/dist/styles/tokens.styles.d.ts.map +1 -0
  317. package/dist/styles/tokens.styles.js.map +0 -1
  318. package/docs/data-components.md +304 -0
  319. package/docs/disclosure.md +208 -0
  320. package/docs/display.md +136 -0
  321. package/docs/feedback.md +188 -0
  322. package/docs/form-controls.md +535 -0
  323. package/docs/helpers.md +46 -0
  324. package/docs/hooks.md +313 -0
  325. package/docs/layout.md +289 -0
  326. package/docs/providers.md +35 -0
  327. package/docs/styling.md +67 -0
  328. package/package.json +20 -10
  329. package/src/components/data/list/ListItem.styles.ts +2 -2
  330. package/src/components/data/sheet/DataSheet.tsx +3 -3
  331. package/src/components/display/Echarts.tsx +18 -11
  332. package/src/components/form-control/Invalid.tsx +61 -0
  333. package/src/components/form-control/editor/RichTextEditor.tsx +2 -9
  334. package/src/components/form-control/field/DatePicker.tsx +0 -6
  335. package/src/components/form-control/field/DateTimePicker.tsx +0 -6
  336. package/src/components/form-control/field/Field.styles.ts +0 -3
  337. package/src/components/form-control/field/NumberInput.tsx +0 -6
  338. package/src/components/form-control/field/TextInput.tsx +0 -6
  339. package/src/components/form-control/field/Textarea.tsx +0 -6
  340. package/src/components/form-control/field/TimePicker.tsx +0 -6
  341. package/src/components/form-control/state-preset/StatePreset.tsx +2 -2
  342. package/src/components/layout/sidebar/SidebarContainer.tsx +3 -4
  343. package/src/components/layout/sidebar/SidebarUser.tsx +44 -16
  344. package/src/hooks/createPwaUpdate.ts +73 -0
  345. package/src/hooks/useClipboardValueCopy.ts +1 -1
  346. package/src/hooks/useLocalStorage.ts +68 -0
  347. package/src/hooks/useLogger.ts +32 -0
  348. package/src/hooks/useSyncConfig.ts +99 -0
  349. package/src/index.ts +9 -4
  350. package/src/providers/ConfigContext.ts +23 -2
  351. package/src/providers/InitializeProvider.tsx +59 -5
  352. package/src/providers/ServiceClientProvider.tsx +2 -2
  353. package/src/providers/ThemeContext.tsx +3 -3
  354. package/src/providers/shared-data/SharedDataChangeEvent.ts +4 -7
  355. package/src/providers/shared-data/SharedDataProvider.tsx +3 -0
  356. package/.cache/typecheck-browser.tsbuildinfo +0 -1
  357. package/.cache/typecheck-tests-browser.tsbuildinfo +0 -1
  358. package/dist/core-browser/src/extensions/element-ext.d.ts +0 -98
  359. package/dist/core-browser/src/extensions/element-ext.d.ts.map +0 -1
  360. package/dist/core-browser/src/extensions/html-element-ext.d.ts +0 -54
  361. package/dist/core-browser/src/extensions/html-element-ext.d.ts.map +0 -1
  362. package/dist/core-browser/src/index.d.ts +0 -7
  363. package/dist/core-browser/src/index.d.ts.map +0 -1
  364. package/dist/core-browser/src/utils/blob.d.ts +0 -10
  365. package/dist/core-browser/src/utils/blob.d.ts.map +0 -1
  366. package/dist/core-browser/src/utils/download.d.ts +0 -11
  367. package/dist/core-browser/src/utils/download.d.ts.map +0 -1
  368. package/dist/core-common/src/common.types.d.ts +0 -74
  369. package/dist/core-common/src/common.types.d.ts.map +0 -1
  370. package/dist/core-common/src/env.d.ts +0 -6
  371. package/dist/core-common/src/env.d.ts.map +0 -1
  372. package/dist/core-common/src/errors/argument-error.d.ts +0 -25
  373. package/dist/core-common/src/errors/argument-error.d.ts.map +0 -1
  374. package/dist/core-common/src/errors/not-implemented-error.d.ts +0 -29
  375. package/dist/core-common/src/errors/not-implemented-error.d.ts.map +0 -1
  376. package/dist/core-common/src/errors/sd-error.d.ts +0 -27
  377. package/dist/core-common/src/errors/sd-error.d.ts.map +0 -1
  378. package/dist/core-common/src/errors/timeout-error.d.ts +0 -31
  379. package/dist/core-common/src/errors/timeout-error.d.ts.map +0 -1
  380. package/dist/core-common/src/extensions/arr-ext.d.ts +0 -15
  381. package/dist/core-common/src/extensions/arr-ext.d.ts.map +0 -1
  382. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +0 -19
  383. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +0 -1
  384. package/dist/core-common/src/extensions/arr-ext.types.d.ts +0 -215
  385. package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +0 -1
  386. package/dist/core-common/src/extensions/map-ext.d.ts +0 -57
  387. package/dist/core-common/src/extensions/map-ext.d.ts.map +0 -1
  388. package/dist/core-common/src/extensions/set-ext.d.ts +0 -36
  389. package/dist/core-common/src/extensions/set-ext.d.ts.map +0 -1
  390. package/dist/core-common/src/features/debounce-queue.d.ts +0 -53
  391. package/dist/core-common/src/features/debounce-queue.d.ts.map +0 -1
  392. package/dist/core-common/src/features/event-emitter.d.ts +0 -66
  393. package/dist/core-common/src/features/event-emitter.d.ts.map +0 -1
  394. package/dist/core-common/src/features/serial-queue.d.ts +0 -47
  395. package/dist/core-common/src/features/serial-queue.d.ts.map +0 -1
  396. package/dist/core-common/src/index.d.ts +0 -32
  397. package/dist/core-common/src/index.d.ts.map +0 -1
  398. package/dist/core-common/src/types/date-only.d.ts +0 -152
  399. package/dist/core-common/src/types/date-only.d.ts.map +0 -1
  400. package/dist/core-common/src/types/date-time.d.ts +0 -96
  401. package/dist/core-common/src/types/date-time.d.ts.map +0 -1
  402. package/dist/core-common/src/types/lazy-gc-map.d.ts +0 -80
  403. package/dist/core-common/src/types/lazy-gc-map.d.ts.map +0 -1
  404. package/dist/core-common/src/types/time.d.ts +0 -68
  405. package/dist/core-common/src/types/time.d.ts.map +0 -1
  406. package/dist/core-common/src/types/uuid.d.ts +0 -35
  407. package/dist/core-common/src/types/uuid.d.ts.map +0 -1
  408. package/dist/core-common/src/utils/bytes.d.ts +0 -51
  409. package/dist/core-common/src/utils/bytes.d.ts.map +0 -1
  410. package/dist/core-common/src/utils/date-format.d.ts +0 -90
  411. package/dist/core-common/src/utils/date-format.d.ts.map +0 -1
  412. package/dist/core-common/src/utils/json.d.ts +0 -34
  413. package/dist/core-common/src/utils/json.d.ts.map +0 -1
  414. package/dist/core-common/src/utils/num.d.ts +0 -60
  415. package/dist/core-common/src/utils/num.d.ts.map +0 -1
  416. package/dist/core-common/src/utils/obj.d.ts +0 -258
  417. package/dist/core-common/src/utils/obj.d.ts.map +0 -1
  418. package/dist/core-common/src/utils/path.d.ts +0 -23
  419. package/dist/core-common/src/utils/path.d.ts.map +0 -1
  420. package/dist/core-common/src/utils/primitive.d.ts +0 -18
  421. package/dist/core-common/src/utils/primitive.d.ts.map +0 -1
  422. package/dist/core-common/src/utils/str.d.ts +0 -103
  423. package/dist/core-common/src/utils/str.d.ts.map +0 -1
  424. package/dist/core-common/src/utils/template-strings.d.ts +0 -84
  425. package/dist/core-common/src/utils/template-strings.d.ts.map +0 -1
  426. package/dist/core-common/src/utils/transferable.d.ts +0 -47
  427. package/dist/core-common/src/utils/transferable.d.ts.map +0 -1
  428. package/dist/core-common/src/utils/wait.d.ts +0 -19
  429. package/dist/core-common/src/utils/wait.d.ts.map +0 -1
  430. package/dist/core-common/src/utils/xml.d.ts +0 -36
  431. package/dist/core-common/src/utils/xml.d.ts.map +0 -1
  432. package/dist/core-common/src/zip/sd-zip.d.ts +0 -80
  433. package/dist/core-common/src/zip/sd-zip.d.ts.map +0 -1
  434. package/dist/hooks/usePersisted.js +0 -25
  435. package/dist/hooks/usePersisted.js.map +0 -7
  436. package/dist/orm-common/src/db-context.d.ts +0 -669
  437. package/dist/orm-common/src/db-context.d.ts.map +0 -1
  438. package/dist/orm-common/src/errors/db-transaction-error.d.ts +0 -51
  439. package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +0 -1
  440. package/dist/orm-common/src/exec/executable.d.ts +0 -79
  441. package/dist/orm-common/src/exec/executable.d.ts.map +0 -1
  442. package/dist/orm-common/src/exec/queryable.d.ts +0 -708
  443. package/dist/orm-common/src/exec/queryable.d.ts.map +0 -1
  444. package/dist/orm-common/src/exec/search-parser.d.ts +0 -72
  445. package/dist/orm-common/src/exec/search-parser.d.ts.map +0 -1
  446. package/dist/orm-common/src/expr/expr-unit.d.ts +0 -25
  447. package/dist/orm-common/src/expr/expr-unit.d.ts.map +0 -1
  448. package/dist/orm-common/src/expr/expr.d.ts +0 -1369
  449. package/dist/orm-common/src/expr/expr.d.ts.map +0 -1
  450. package/dist/orm-common/src/index.d.ts +0 -32
  451. package/dist/orm-common/src/index.d.ts.map +0 -1
  452. package/dist/orm-common/src/models/system-migration.d.ts +0 -10
  453. package/dist/orm-common/src/models/system-migration.d.ts.map +0 -1
  454. package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +0 -95
  455. package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +0 -1
  456. package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +0 -66
  457. package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +0 -1
  458. package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +0 -84
  459. package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +0 -1
  460. package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +0 -45
  461. package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +0 -1
  462. package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +0 -84
  463. package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +0 -1
  464. package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +0 -54
  465. package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +0 -1
  466. package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +0 -84
  467. package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +0 -1
  468. package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +0 -52
  469. package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +0 -1
  470. package/dist/orm-common/src/query-builder/query-builder.d.ts +0 -7
  471. package/dist/orm-common/src/query-builder/query-builder.d.ts.map +0 -1
  472. package/dist/orm-common/src/schema/factory/column-builder.d.ts +0 -394
  473. package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +0 -1
  474. package/dist/orm-common/src/schema/factory/index-builder.d.ts +0 -151
  475. package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +0 -1
  476. package/dist/orm-common/src/schema/factory/relation-builder.d.ts +0 -337
  477. package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +0 -1
  478. package/dist/orm-common/src/schema/procedure-builder.d.ts +0 -202
  479. package/dist/orm-common/src/schema/procedure-builder.d.ts.map +0 -1
  480. package/dist/orm-common/src/schema/table-builder.d.ts +0 -259
  481. package/dist/orm-common/src/schema/table-builder.d.ts.map +0 -1
  482. package/dist/orm-common/src/schema/view-builder.d.ts +0 -183
  483. package/dist/orm-common/src/schema/view-builder.d.ts.map +0 -1
  484. package/dist/orm-common/src/types/column.d.ts +0 -172
  485. package/dist/orm-common/src/types/column.d.ts.map +0 -1
  486. package/dist/orm-common/src/types/db.d.ts +0 -175
  487. package/dist/orm-common/src/types/db.d.ts.map +0 -1
  488. package/dist/orm-common/src/types/expr.d.ts +0 -474
  489. package/dist/orm-common/src/types/expr.d.ts.map +0 -1
  490. package/dist/orm-common/src/types/query-def.d.ts +0 -351
  491. package/dist/orm-common/src/types/query-def.d.ts.map +0 -1
  492. package/dist/orm-common/src/utils/result-parser.d.ts +0 -38
  493. package/dist/orm-common/src/utils/result-parser.d.ts.map +0 -1
  494. package/dist/service-client/src/features/event-client.d.ts +0 -14
  495. package/dist/service-client/src/features/event-client.d.ts.map +0 -1
  496. package/dist/service-client/src/features/file-client.d.ts +0 -13
  497. package/dist/service-client/src/features/file-client.d.ts.map +0 -1
  498. package/dist/service-client/src/features/orm/orm-client-connector.d.ts +0 -10
  499. package/dist/service-client/src/features/orm/orm-client-connector.d.ts.map +0 -1
  500. package/dist/service-client/src/features/orm/orm-client-db-context-executor.d.ts +0 -26
  501. package/dist/service-client/src/features/orm/orm-client-db-context-executor.d.ts.map +0 -1
  502. package/dist/service-client/src/features/orm/orm-connect-config.d.ts +0 -13
  503. package/dist/service-client/src/features/orm/orm-connect-config.d.ts.map +0 -1
  504. package/dist/service-client/src/index.d.ts +0 -12
  505. package/dist/service-client/src/index.d.ts.map +0 -1
  506. package/dist/service-client/src/protocol/client-protocol-wrapper.d.ts +0 -23
  507. package/dist/service-client/src/protocol/client-protocol-wrapper.d.ts.map +0 -1
  508. package/dist/service-client/src/service-client.d.ts +0 -41
  509. package/dist/service-client/src/service-client.d.ts.map +0 -1
  510. package/dist/service-client/src/transport/service-transport.d.ts +0 -24
  511. package/dist/service-client/src/transport/service-transport.d.ts.map +0 -1
  512. package/dist/service-client/src/transport/socket-provider.d.ts +0 -31
  513. package/dist/service-client/src/transport/socket-provider.d.ts.map +0 -1
  514. package/dist/service-client/src/types/connection-config.d.ts +0 -8
  515. package/dist/service-client/src/types/connection-config.d.ts.map +0 -1
  516. package/dist/service-client/src/types/progress.types.d.ts +0 -10
  517. package/dist/service-client/src/types/progress.types.d.ts.map +0 -1
  518. package/dist/service-common/src/index.d.ts +0 -8
  519. package/dist/service-common/src/index.d.ts.map +0 -1
  520. package/dist/service-common/src/protocol/protocol.types.d.ts +0 -100
  521. package/dist/service-common/src/protocol/protocol.types.d.ts.map +0 -1
  522. package/dist/service-common/src/protocol/service-protocol.d.ts +0 -63
  523. package/dist/service-common/src/protocol/service-protocol.d.ts.map +0 -1
  524. package/dist/service-common/src/service-types/auto-update-service.types.d.ts +0 -17
  525. package/dist/service-common/src/service-types/auto-update-service.types.d.ts.map +0 -1
  526. package/dist/service-common/src/service-types/crypto-service.types.d.ts +0 -22
  527. package/dist/service-common/src/service-types/crypto-service.types.d.ts.map +0 -1
  528. package/dist/service-common/src/service-types/orm-service.types.d.ts +0 -30
  529. package/dist/service-common/src/service-types/orm-service.types.d.ts.map +0 -1
  530. package/dist/service-common/src/service-types/smtp-service.types.d.ts +0 -55
  531. package/dist/service-common/src/service-types/smtp-service.types.d.ts.map +0 -1
  532. package/dist/service-common/src/types.d.ts +0 -43
  533. package/dist/service-common/src/types.d.ts.map +0 -1
  534. package/dist/solid/src/components/data/Pagination.d.ts.map +0 -1
  535. package/dist/solid/src/components/data/Table.d.ts.map +0 -1
  536. package/dist/solid/src/components/data/calendar/Calendar.d.ts.map +0 -1
  537. package/dist/solid/src/components/data/kanban/Kanban.d.ts.map +0 -1
  538. package/dist/solid/src/components/data/kanban/KanbanContext.d.ts.map +0 -1
  539. package/dist/solid/src/components/data/list/List.d.ts.map +0 -1
  540. package/dist/solid/src/components/data/list/ListContext.d.ts.map +0 -1
  541. package/dist/solid/src/components/data/list/ListItem.d.ts.map +0 -1
  542. package/dist/solid/src/components/data/list/ListItem.styles.d.ts.map +0 -1
  543. package/dist/solid/src/components/data/permission-table/PermissionTable.d.ts.map +0 -1
  544. package/dist/solid/src/components/data/sheet/DataSheet.d.ts.map +0 -1
  545. package/dist/solid/src/components/data/sheet/DataSheet.styles.d.ts.map +0 -1
  546. package/dist/solid/src/components/data/sheet/DataSheetColumn.d.ts.map +0 -1
  547. package/dist/solid/src/components/data/sheet/DataSheetConfigDialog.d.ts.map +0 -1
  548. package/dist/solid/src/components/data/sheet/sheetUtils.d.ts.map +0 -1
  549. package/dist/solid/src/components/data/sheet/types.d.ts.map +0 -1
  550. package/dist/solid/src/components/disclosure/Collapse.d.ts.map +0 -1
  551. package/dist/solid/src/components/disclosure/Dialog.d.ts.map +0 -1
  552. package/dist/solid/src/components/disclosure/DialogContext.d.ts.map +0 -1
  553. package/dist/solid/src/components/disclosure/DialogInstanceContext.d.ts.map +0 -1
  554. package/dist/solid/src/components/disclosure/DialogProvider.d.ts.map +0 -1
  555. package/dist/solid/src/components/disclosure/Dropdown.d.ts.map +0 -1
  556. package/dist/solid/src/components/disclosure/Tabs.d.ts.map +0 -1
  557. package/dist/solid/src/components/disclosure/dialogZIndex.d.ts.map +0 -1
  558. package/dist/solid/src/components/display/Alert.d.ts.map +0 -1
  559. package/dist/solid/src/components/display/Barcode.d.ts.map +0 -1
  560. package/dist/solid/src/components/display/Card.d.ts.map +0 -1
  561. package/dist/solid/src/components/display/Echarts.d.ts.map +0 -1
  562. package/dist/solid/src/components/display/Icon.d.ts.map +0 -1
  563. package/dist/solid/src/components/display/Tag.d.ts.map +0 -1
  564. package/dist/solid/src/components/feedback/Progress.d.ts.map +0 -1
  565. package/dist/solid/src/components/feedback/loading/LoadingContainer.d.ts.map +0 -1
  566. package/dist/solid/src/components/feedback/loading/LoadingContext.d.ts.map +0 -1
  567. package/dist/solid/src/components/feedback/loading/LoadingProvider.d.ts.map +0 -1
  568. package/dist/solid/src/components/feedback/notification/NotificationBanner.d.ts.map +0 -1
  569. package/dist/solid/src/components/feedback/notification/NotificationBell.d.ts.map +0 -1
  570. package/dist/solid/src/components/feedback/notification/NotificationContext.d.ts.map +0 -1
  571. package/dist/solid/src/components/feedback/notification/NotificationProvider.d.ts.map +0 -1
  572. package/dist/solid/src/components/feedback/notification/index.d.ts.map +0 -1
  573. package/dist/solid/src/components/feedback/print/Print.d.ts.map +0 -1
  574. package/dist/solid/src/components/feedback/print/PrintInstanceContext.d.ts.map +0 -1
  575. package/dist/solid/src/components/form-control/Button.d.ts.map +0 -1
  576. package/dist/solid/src/components/form-control/DropdownTrigger.styles.d.ts.map +0 -1
  577. package/dist/solid/src/components/form-control/ThemeToggle.d.ts.map +0 -1
  578. package/dist/solid/src/components/form-control/checkbox/Checkbox.d.ts.map +0 -1
  579. package/dist/solid/src/components/form-control/checkbox/Checkbox.styles.d.ts.map +0 -1
  580. package/dist/solid/src/components/form-control/checkbox/CheckboxGroup.d.ts.map +0 -1
  581. package/dist/solid/src/components/form-control/checkbox/RadioGroup.d.ts.map +0 -1
  582. package/dist/solid/src/components/form-control/color-picker/ColorPicker.d.ts.map +0 -1
  583. package/dist/solid/src/components/form-control/combobox/Combobox.d.ts.map +0 -1
  584. package/dist/solid/src/components/form-control/combobox/ComboboxContext.d.ts.map +0 -1
  585. package/dist/solid/src/components/form-control/combobox/ComboboxItem.d.ts.map +0 -1
  586. package/dist/solid/src/components/form-control/date-range-picker/DateRangePicker.d.ts.map +0 -1
  587. package/dist/solid/src/components/form-control/editor/EditorToolbar.d.ts.map +0 -1
  588. package/dist/solid/src/components/form-control/editor/RichTextEditor.d.ts.map +0 -1
  589. package/dist/solid/src/components/form-control/field/DatePicker.d.ts.map +0 -1
  590. package/dist/solid/src/components/form-control/field/DateTimePicker.d.ts.map +0 -1
  591. package/dist/solid/src/components/form-control/field/Field.styles.d.ts.map +0 -1
  592. package/dist/solid/src/components/form-control/field/NumberInput.d.ts.map +0 -1
  593. package/dist/solid/src/components/form-control/field/TextInput.d.ts.map +0 -1
  594. package/dist/solid/src/components/form-control/field/Textarea.d.ts.map +0 -1
  595. package/dist/solid/src/components/form-control/field/TimePicker.d.ts.map +0 -1
  596. package/dist/solid/src/components/form-control/numpad/Numpad.d.ts.map +0 -1
  597. package/dist/solid/src/components/form-control/select/Select.d.ts.map +0 -1
  598. package/dist/solid/src/components/form-control/select/SelectContext.d.ts.map +0 -1
  599. package/dist/solid/src/components/form-control/select/SelectItem.d.ts.map +0 -1
  600. package/dist/solid/src/components/form-control/state-preset/StatePreset.d.ts.map +0 -1
  601. package/dist/solid/src/components/layout/FormGroup.d.ts.map +0 -1
  602. package/dist/solid/src/components/layout/FormTable.d.ts.map +0 -1
  603. package/dist/solid/src/components/layout/sidebar/Sidebar.d.ts.map +0 -1
  604. package/dist/solid/src/components/layout/sidebar/SidebarContainer.d.ts.map +0 -1
  605. package/dist/solid/src/components/layout/sidebar/SidebarContext.d.ts.map +0 -1
  606. package/dist/solid/src/components/layout/sidebar/SidebarMenu.d.ts.map +0 -1
  607. package/dist/solid/src/components/layout/sidebar/SidebarUser.d.ts +0 -36
  608. package/dist/solid/src/components/layout/sidebar/SidebarUser.d.ts.map +0 -1
  609. package/dist/solid/src/components/layout/topbar/Topbar.d.ts.map +0 -1
  610. package/dist/solid/src/components/layout/topbar/TopbarContainer.d.ts.map +0 -1
  611. package/dist/solid/src/components/layout/topbar/TopbarMenu.d.ts.map +0 -1
  612. package/dist/solid/src/components/layout/topbar/TopbarUser.d.ts.map +0 -1
  613. package/dist/solid/src/directives/ripple.d.ts.map +0 -1
  614. package/dist/solid/src/helpers/createAppStructure.d.ts.map +0 -1
  615. package/dist/solid/src/helpers/mergeStyles.d.ts.map +0 -1
  616. package/dist/solid/src/helpers/splitSlots.d.ts.map +0 -1
  617. package/dist/solid/src/hooks/createControllableSignal.d.ts.map +0 -1
  618. package/dist/solid/src/hooks/createIMEHandler.d.ts.map +0 -1
  619. package/dist/solid/src/hooks/createMountTransition.d.ts.map +0 -1
  620. package/dist/solid/src/hooks/useClipboardValueCopy.d.ts.map +0 -1
  621. package/dist/solid/src/hooks/usePersisted.d.ts +0 -26
  622. package/dist/solid/src/hooks/usePersisted.d.ts.map +0 -1
  623. package/dist/solid/src/hooks/usePrint.d.ts.map +0 -1
  624. package/dist/solid/src/hooks/useRouterLink.d.ts.map +0 -1
  625. package/dist/solid/src/index.d.ts.map +0 -1
  626. package/dist/solid/src/providers/ConfigContext.d.ts.map +0 -1
  627. package/dist/solid/src/providers/InitializeProvider.d.ts.map +0 -1
  628. package/dist/solid/src/providers/ServiceClientContext.d.ts.map +0 -1
  629. package/dist/solid/src/providers/ServiceClientProvider.d.ts.map +0 -1
  630. package/dist/solid/src/providers/ThemeContext.d.ts.map +0 -1
  631. package/dist/solid/src/providers/shared-data/SharedDataChangeEvent.d.ts +0 -8
  632. package/dist/solid/src/providers/shared-data/SharedDataChangeEvent.d.ts.map +0 -1
  633. package/dist/solid/src/providers/shared-data/SharedDataContext.d.ts.map +0 -1
  634. package/dist/solid/src/providers/shared-data/SharedDataProvider.d.ts.map +0 -1
  635. package/dist/solid/src/styles/patterns.styles.d.ts.map +0 -1
  636. package/dist/solid/src/styles/tokens.styles.d.ts.map +0 -1
  637. package/src/hooks/usePersisted.ts +0 -51
  638. package/tests/components/data/List.spec.tsx +0 -683
  639. package/tests/components/data/Pagination.spec.tsx +0 -317
  640. package/tests/components/data/Table.spec.tsx +0 -55
  641. package/tests/components/data/kanban/Kanban.selection.spec.tsx +0 -209
  642. package/tests/components/data/permission-table/PermissionTable.spec.tsx +0 -280
  643. package/tests/components/data/sheet/DataSheet.spec.tsx +0 -564
  644. package/tests/components/disclosure/Collapse.spec.tsx +0 -162
  645. package/tests/components/disclosure/Dialog.spec.tsx +0 -319
  646. package/tests/components/disclosure/DialogProvider.spec.tsx +0 -110
  647. package/tests/components/disclosure/Dropdown.spec.tsx +0 -410
  648. package/tests/components/disclosure/Tabs.spec.tsx +0 -220
  649. package/tests/components/display/Alert.spec.tsx +0 -47
  650. package/tests/components/display/Barcode.spec.tsx +0 -61
  651. package/tests/components/display/Card.spec.tsx +0 -41
  652. package/tests/components/display/Tag.spec.tsx +0 -47
  653. package/tests/components/feedback/notification/LiveRegion.spec.tsx +0 -41
  654. package/tests/components/feedback/notification/NotificationBanner.spec.tsx +0 -164
  655. package/tests/components/feedback/notification/NotificationBell.spec.tsx +0 -207
  656. package/tests/components/feedback/notification/NotificationContext.spec.tsx +0 -331
  657. package/tests/components/feedback/print/Print.spec.tsx +0 -45
  658. package/tests/components/form-control/Button.spec.tsx +0 -119
  659. package/tests/components/form-control/checkbox/Checkbox.spec.tsx +0 -120
  660. package/tests/components/form-control/checkbox/Radio.spec.tsx +0 -112
  661. package/tests/components/form-control/color-picker/ColorPicker.spec.tsx +0 -67
  662. package/tests/components/form-control/combobox/Combobox.spec.tsx +0 -174
  663. package/tests/components/form-control/combobox/ComboboxItem.spec.tsx +0 -85
  664. package/tests/components/form-control/date-range-picker/DateRangePicker.spec.tsx +0 -172
  665. package/tests/components/form-control/field/DatePicker.spec.tsx +0 -305
  666. package/tests/components/form-control/field/DateTimePicker.spec.tsx +0 -287
  667. package/tests/components/form-control/field/NumberInput.spec.tsx +0 -276
  668. package/tests/components/form-control/field/TextInput.spec.tsx +0 -258
  669. package/tests/components/form-control/field/Textarea.spec.tsx +0 -181
  670. package/tests/components/form-control/field/TimePicker.spec.tsx +0 -243
  671. package/tests/components/form-control/numpad/Numpad.spec.tsx +0 -238
  672. package/tests/components/form-control/select/Select.spec.tsx +0 -239
  673. package/tests/components/form-control/select/SelectItem.spec.tsx +0 -149
  674. package/tests/components/layout/FormGroup.spec.tsx +0 -104
  675. package/tests/components/layout/FormTable.spec.tsx +0 -43
  676. package/tests/components/layout/sidebar/Sidebar.spec.tsx +0 -190
  677. package/tests/components/layout/sidebar/SidebarContainer.spec.tsx +0 -203
  678. package/tests/components/layout/sidebar/SidebarMenu.spec.tsx +0 -213
  679. package/tests/components/layout/sidebar/SidebarUser.spec.tsx +0 -171
  680. package/tests/directives/ripple.spec.tsx +0 -130
  681. package/tests/helpers/createAppStructure.spec.tsx +0 -338
  682. package/tests/helpers/mergeStyles.spec.ts +0 -163
  683. package/tests/helpers/splitSlots.spec.tsx +0 -188
  684. package/tests/hooks/createControllableSignal.spec.ts +0 -194
  685. package/tests/hooks/createIMEHandler.spec.ts +0 -80
  686. package/tests/hooks/createMountTransition.spec.ts +0 -86
  687. package/tests/hooks/usePersisted.spec.tsx +0 -191
  688. package/tests/hooks/usePrint.spec.tsx +0 -123
  689. package/tests/hooks/useRouterLink.spec.tsx +0 -183
  690. package/tests/providers/ConfigContext.spec.ts +0 -40
  691. package/tests/providers/ServiceClientContext.spec.tsx +0 -83
  692. package/tests/providers/shared-data/SharedDataProvider.spec.tsx +0 -233
  693. /package/dist/{solid/src/components → components}/data/Pagination.d.ts +0 -0
  694. /package/dist/{solid/src/components → components}/data/Table.d.ts +0 -0
  695. /package/dist/{solid/src/components → components}/data/calendar/Calendar.d.ts +0 -0
  696. /package/dist/{solid/src/components → components}/data/kanban/Kanban.d.ts +0 -0
  697. /package/dist/{solid/src/components → components}/data/kanban/KanbanContext.d.ts +0 -0
  698. /package/dist/{solid/src/components → components}/data/list/List.d.ts +0 -0
  699. /package/dist/{solid/src/components → components}/data/list/ListContext.d.ts +0 -0
  700. /package/dist/{solid/src/components → components}/data/list/ListItem.d.ts +0 -0
  701. /package/dist/{solid/src/components → components}/data/list/ListItem.styles.d.ts +0 -0
  702. /package/dist/{solid/src/components → components}/data/permission-table/PermissionTable.d.ts +0 -0
  703. /package/dist/{solid/src/components → components}/data/sheet/DataSheet.d.ts +0 -0
  704. /package/dist/{solid/src/components → components}/data/sheet/DataSheet.styles.d.ts +0 -0
  705. /package/dist/{solid/src/components → components}/data/sheet/DataSheetColumn.d.ts +0 -0
  706. /package/dist/{solid/src/components → components}/data/sheet/DataSheetConfigDialog.d.ts +0 -0
  707. /package/dist/{solid/src/components → components}/data/sheet/sheetUtils.d.ts +0 -0
  708. /package/dist/{solid/src/components → components}/data/sheet/types.d.ts +0 -0
  709. /package/dist/{solid/src/components → components}/disclosure/Collapse.d.ts +0 -0
  710. /package/dist/{solid/src/components → components}/disclosure/Dialog.d.ts +0 -0
  711. /package/dist/{solid/src/components → components}/disclosure/DialogContext.d.ts +0 -0
  712. /package/dist/{solid/src/components → components}/disclosure/DialogInstanceContext.d.ts +0 -0
  713. /package/dist/{solid/src/components → components}/disclosure/DialogProvider.d.ts +0 -0
  714. /package/dist/{solid/src/components → components}/disclosure/Dropdown.d.ts +0 -0
  715. /package/dist/{solid/src/components → components}/disclosure/Tabs.d.ts +0 -0
  716. /package/dist/{solid/src/components → components}/disclosure/dialogZIndex.d.ts +0 -0
  717. /package/dist/{solid/src/components → components}/display/Alert.d.ts +0 -0
  718. /package/dist/{solid/src/components → components}/display/Barcode.d.ts +0 -0
  719. /package/dist/{solid/src/components → components}/display/Card.d.ts +0 -0
  720. /package/dist/{solid/src/components → components}/display/Icon.d.ts +0 -0
  721. /package/dist/{solid/src/components → components}/display/Tag.d.ts +0 -0
  722. /package/dist/{solid/src/components → components}/feedback/Progress.d.ts +0 -0
  723. /package/dist/{solid/src/components → components}/feedback/loading/LoadingContainer.d.ts +0 -0
  724. /package/dist/{solid/src/components → components}/feedback/loading/LoadingContext.d.ts +0 -0
  725. /package/dist/{solid/src/components → components}/feedback/loading/LoadingProvider.d.ts +0 -0
  726. /package/dist/{solid/src/components → components}/feedback/notification/NotificationBanner.d.ts +0 -0
  727. /package/dist/{solid/src/components → components}/feedback/notification/NotificationBell.d.ts +0 -0
  728. /package/dist/{solid/src/components → components}/feedback/notification/NotificationContext.d.ts +0 -0
  729. /package/dist/{solid/src/components → components}/feedback/notification/NotificationProvider.d.ts +0 -0
  730. /package/dist/{solid/src/components → components}/feedback/notification/index.d.ts +0 -0
  731. /package/dist/{solid/src/components → components}/feedback/print/Print.d.ts +0 -0
  732. /package/dist/{solid/src/components → components}/feedback/print/PrintInstanceContext.d.ts +0 -0
  733. /package/dist/{solid/src/components → components}/form-control/Button.d.ts +0 -0
  734. /package/dist/{solid/src/components → components}/form-control/DropdownTrigger.styles.d.ts +0 -0
  735. /package/dist/{solid/src/components → components}/form-control/ThemeToggle.d.ts +0 -0
  736. /package/dist/{solid/src/components → components}/form-control/checkbox/Checkbox.d.ts +0 -0
  737. /package/dist/{solid/src/components → components}/form-control/checkbox/Checkbox.styles.d.ts +0 -0
  738. /package/dist/{solid/src/components → components}/form-control/checkbox/CheckboxGroup.d.ts +0 -0
  739. /package/dist/{solid/src/components → components}/form-control/checkbox/Radio.d.ts +0 -0
  740. /package/dist/{solid/src/components → components}/form-control/checkbox/RadioGroup.d.ts +0 -0
  741. /package/dist/{solid/src/components → components}/form-control/color-picker/ColorPicker.d.ts +0 -0
  742. /package/dist/{solid/src/components → components}/form-control/combobox/Combobox.d.ts +0 -0
  743. /package/dist/{solid/src/components → components}/form-control/combobox/ComboboxContext.d.ts +0 -0
  744. /package/dist/{solid/src/components → components}/form-control/combobox/ComboboxItem.d.ts +0 -0
  745. /package/dist/{solid/src/components → components}/form-control/date-range-picker/DateRangePicker.d.ts +0 -0
  746. /package/dist/{solid/src/components → components}/form-control/editor/EditorToolbar.d.ts +0 -0
  747. /package/dist/{solid/src/components → components}/form-control/numpad/Numpad.d.ts +0 -0
  748. /package/dist/{solid/src/components → components}/form-control/select/Select.d.ts +0 -0
  749. /package/dist/{solid/src/components → components}/form-control/select/SelectContext.d.ts +0 -0
  750. /package/dist/{solid/src/components → components}/form-control/select/SelectItem.d.ts +0 -0
  751. /package/dist/{solid/src/components → components}/form-control/state-preset/StatePreset.d.ts +0 -0
  752. /package/dist/{solid/src/components → components}/layout/FormGroup.d.ts +0 -0
  753. /package/dist/{solid/src/components → components}/layout/FormTable.d.ts +0 -0
  754. /package/dist/{solid/src/components → components}/layout/sidebar/Sidebar.d.ts +0 -0
  755. /package/dist/{solid/src/components → components}/layout/sidebar/SidebarContext.d.ts +0 -0
  756. /package/dist/{solid/src/components → components}/layout/sidebar/SidebarMenu.d.ts +0 -0
  757. /package/dist/{solid/src/components → components}/layout/topbar/Topbar.d.ts +0 -0
  758. /package/dist/{solid/src/components → components}/layout/topbar/TopbarContainer.d.ts +0 -0
  759. /package/dist/{solid/src/components → components}/layout/topbar/TopbarMenu.d.ts +0 -0
  760. /package/dist/{solid/src/components → components}/layout/topbar/TopbarUser.d.ts +0 -0
  761. /package/dist/{solid/src/directives → directives}/ripple.d.ts +0 -0
  762. /package/dist/{solid/src/helpers → helpers}/createAppStructure.d.ts +0 -0
  763. /package/dist/{solid/src/helpers → helpers}/mergeStyles.d.ts +0 -0
  764. /package/dist/{solid/src/helpers → helpers}/splitSlots.d.ts +0 -0
  765. /package/dist/{solid/src/hooks → hooks}/createControllableSignal.d.ts +0 -0
  766. /package/dist/{solid/src/hooks → hooks}/createIMEHandler.d.ts +0 -0
  767. /package/dist/{solid/src/hooks → hooks}/createMountTransition.d.ts +0 -0
  768. /package/dist/{solid/src/hooks → hooks}/useClipboardValueCopy.d.ts +0 -0
  769. /package/dist/{solid/src/hooks → hooks}/usePrint.d.ts +0 -0
  770. /package/dist/{solid/src/hooks → hooks}/useRouterLink.d.ts +0 -0
  771. /package/dist/{solid/src/providers → providers}/ServiceClientContext.d.ts +0 -0
  772. /package/dist/{solid/src/providers → providers}/ServiceClientProvider.d.ts +0 -0
  773. /package/dist/{solid/src/providers → providers}/shared-data/SharedDataContext.d.ts +0 -0
  774. /package/dist/{solid/src/providers → providers}/shared-data/SharedDataProvider.d.ts +0 -0
  775. /package/dist/{solid/src/styles → styles}/patterns.styles.d.ts +0 -0
  776. /package/dist/{solid/src/styles → styles}/tokens.styles.d.ts +0 -0
  777. /package/{src/base.css → tailwind.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splitSlots.d.ts","sourceRoot":"","sources":["../../src/helpers/splitSlots.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,QAAQ,EAAc,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,QAAQ,EAAE;IAAE,OAAO,EAAE,MAAM,OAAO,EAAE,CAAA;CAAE,EACtC,IAAI,EAAE,SAAS,CAAC,EAAE,GACjB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAsB/D"}
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/helpers/splitSlots.ts"],
4
- "sourcesContent": ["import \"@simplysm/core-common\";\nimport { type Accessor, createMemo } from \"solid-js\";\nimport type { JSX } from \"solid-js/jsx-runtime\";\n\n/**\n * children\uC744 slot \uD0A4 \uAE30\uC900\uC73C\uB85C \uBD84\uB9AC\uD558\uC5EC \uBC18\uD658\uD569\uB2C8\uB2E4.\n * SolidJS\uC758 splitProps\uC640 \uC720\uC0AC\uD55C \uD328\uD134\uC73C\uB85C \uB3D9\uC791\uD569\uB2C8\uB2E4.\n *\n * @param resolved - children(() => props.children)\uC73C\uB85C \uC0DD\uC131\uB41C resolved children\n * @param keys - \uBD84\uB9AC\uD560 slot \uD0A4 \uBC30\uC5F4 (camelCase, data \uC18D\uC131\uACFC \uB9E4\uCE6D)\n * @returns [slots, content] - slots\uB294 \uAC01 \uD0A4\uBCC4 HTMLElement[], content\uB294 \uB098\uBA38\uC9C0 JSX.Element[]\n *\n * @example\n * ```tsx\n * const resolved = children(() => props.children);\n * const [slots, content] = splitSlots(resolved, [\"selectHeader\", \"selectAction\"] as const);\n *\n * // JSX\uC5D0\uC11C \uC0AC\uC6A9\n * <div>{slots().selectHeader.single()}</div>\n * <div>{content()}</div>\n * ```\n */\nexport function splitSlots<K extends string>(\n resolved: { toArray: () => unknown[] },\n keys: readonly K[],\n): [Accessor<Record<K, HTMLElement[]>>, Accessor<JSX.Element[]>] {\n const memo = createMemo(() => {\n const arr = resolved.toArray();\n const result = Object.fromEntries(keys.map((k) => [k, []])) as unknown as Record<K, HTMLElement[]>;\n const content: JSX.Element[] = [];\n\n for (const c of arr) {\n if (c instanceof HTMLElement) {\n const matchedKey = keys.find((k) => k in c.dataset);\n if (matchedKey !== undefined) {\n result[matchedKey].push(c);\n continue;\n }\n }\n content.push(c as JSX.Element);\n }\n\n return { result, content };\n });\n\n // eslint-disable-next-line solid/reactivity -- \uBC18\uD658\uB41C accessor\uB294 JSX\uB098 tracked scope\uC5D0\uC11C \uD638\uCD9C\uB428\n return [() => memo().result, () => memo().content];\n}\n"],
5
4
  "mappings": "AAAA,OAAO;AACP,SAAwB,kBAAkB;AAqBnC,SAAS,WACd,UACA,MAC+D;AAC/D,QAAM,OAAO,WAAW,MAAM;AAC5B,UAAM,MAAM,SAAS,QAAQ;AAC7B,UAAM,SAAS,OAAO,YAAY,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1D,UAAM,UAAyB,CAAC;AAEhC,eAAW,KAAK,KAAK;AACnB,UAAI,aAAa,aAAa;AAC5B,cAAM,aAAa,KAAK,KAAK,CAAC,MAAM,KAAK,EAAE,OAAO;AAClD,YAAI,eAAe,QAAW;AAC5B,iBAAO,UAAU,EAAE,KAAK,CAAC;AACzB;AAAA,QACF;AAAA,MACF;AACA,cAAQ,KAAK,CAAgB;AAAA,IAC/B;AAEA,WAAO,EAAE,QAAQ,QAAQ;AAAA,EAC3B,CAAC;AAGD,SAAO,CAAC,MAAM,KAAK,EAAE,QAAQ,MAAM,KAAK,EAAE,OAAO;AACnD;",
6
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createControllableSignal.d.ts","sourceRoot":"","sources":["../../src/hooks/createControllableSignal.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE;IACnD,KAAK,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAClD,iCAW6B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,WAWjD"}
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/createControllableSignal.ts"],
4
- "sourcesContent": ["import { createSignal, createEffect } from \"solid-js\";\n\n/**\n * \uD568\uC218 \uD0C0\uC785\uC744 \uC81C\uD55C\uD558\uB294 \uC720\uD2F8\uB9AC\uD2F0 \uD0C0\uC785\n * \uD568\uC218 \uD0C0\uC785\uC774 \uC804\uB2EC\uB418\uBA74 never\uB85C \uBCC0\uD658\uB418\uC5B4 \uCEF4\uD30C\uC77C \uD0C0\uC784 \uC5D0\uB7EC \uBC1C\uC0DD\n *\n * @remarks\n * \uD568\uC218\uB97C \uC800\uC7A5\uD574\uC57C \uD560 \uACBD\uC6B0 \uAC1D\uCCB4\uB85C \uAC10\uC2F8\uAE30: `createControllableSignal<{ fn: () => void }>(...)`\n */\ntype NotFunction<T> = T extends (...args: unknown[]) => unknown ? never : T;\n\n/**\n * Controlled/Uncontrolled \uD328\uD134\uC744 \uC9C0\uC6D0\uD558\uB294 signal hook\n *\n * @remarks\n * - `onChange`\uAC00 \uC81C\uACF5\uB418\uBA74 controlled \uBAA8\uB4DC: \uC678\uBD80\uC5D0\uC11C \uAC12 \uAD00\uB9AC\n * - `onChange`\uAC00 \uC5C6\uC73C\uBA74 uncontrolled \uBAA8\uB4DC: \uB0B4\uBD80 \uC0C1\uD0DC \uC0AC\uC6A9\n * - \uD568\uC218\uD615 setter \uC9C0\uC6D0: `setValue(prev => !prev)`\n *\n * @example\n * ```tsx\n * // Controlled \uBAA8\uB4DC (onOpenChange \uC81C\uACF5)\n * const [open, setOpen] = createControllableSignal({\n * value: () => props.open ?? false,\n * onChange: () => props.onOpenChange,\n * });\n *\n * // Uncontrolled \uBAA8\uB4DC (onOpenChange \uBBF8\uC81C\uACF5)\n * const [open, setOpen] = createControllableSignal({\n * value: () => props.open ?? false,\n * onChange: () => undefined,\n * });\n *\n * // \uD568\uC218\uD615 setter\n * setOpen(prev => !prev);\n * ```\n */\nexport function createControllableSignal<T>(options: {\n value: () => T & NotFunction<T>;\n onChange: () => ((value: T) => void) | undefined;\n}) {\n const [internalValue, setInternalValue] = createSignal<T>(options.value());\n\n // props \uBCC0\uACBD \uC2DC \uB0B4\uBD80 \uC0C1\uD0DC \uB3D9\uAE30\uD654 (props \uC6B0\uC120)\n createEffect(() => {\n const propValue = options.value();\n setInternalValue(() => propValue);\n });\n\n const isControlled = () => options.onChange() !== undefined;\n const value = () => (isControlled() ? options.value() : internalValue());\n const setValue = (newValue: T | ((prev: T) => T)) => {\n const resolved = typeof newValue === \"function\" ? (newValue as (prev: T) => T)(value()) : newValue;\n\n if (isControlled()) {\n options.onChange()?.(resolved);\n } else {\n setInternalValue(() => resolved);\n }\n };\n\n return [value, setValue] as const;\n}\n"],
5
4
  "mappings": "AAAA,SAAS,cAAc,oBAAoB;AAqCpC,SAAS,yBAA4B,SAGzC;AACD,QAAM,CAAC,eAAe,gBAAgB,IAAI,aAAgB,QAAQ,MAAM,CAAC;AAGzE,eAAa,MAAM;AACjB,UAAM,YAAY,QAAQ,MAAM;AAChC,qBAAiB,MAAM,SAAS;AAAA,EAClC,CAAC;AAED,QAAM,eAAe,MAAM,QAAQ,SAAS,MAAM;AAClD,QAAM,QAAQ,MAAO,aAAa,IAAI,QAAQ,MAAM,IAAI,cAAc;AACtE,QAAM,WAAW,CAAC,aAAmC;AAnDvD;AAoDI,UAAM,WAAW,OAAO,aAAa,aAAc,SAA4B,MAAM,CAAC,IAAI;AAE1F,QAAI,aAAa,GAAG;AAClB,oBAAQ,SAAS,MAAjB,mBAAqB;AAAA,IACvB,OAAO;AACL,uBAAiB,MAAM,QAAQ;AAAA,IACjC;AAAA,EACF;AAEA,SAAO,CAAC,OAAO,QAAQ;AACzB;",
6
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createIMEHandler.d.ts","sourceRoot":"","sources":["../../src/hooks/createIMEHandler.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;kCAgB7B,IAAI;yBAOX,MAAM,eAAe,OAAO,KAAG,IAAI;kCAS1B,MAAM,KAAG,IAAI;4BA5BrB,IAAI;EA8ClC"}
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/createIMEHandler.ts"],
4
- "sourcesContent": ["import { createSignal, onCleanup } from \"solid-js\";\n\n/**\n * IME \uC870\uD569 \uCC98\uB9AC \uD6C5\n *\n * @remarks\n * \uD55C\uAE00 \uB4F1 IME \uC870\uD569 \uC911 onValueChange\uB97C \uC9C0\uC5F0\uD558\uC5EC DOM \uC7AC\uC0DD\uC131(\uC870\uD569 \uB04A\uAE40)\uC744 \uBC29\uC9C0\uD569\uB2C8\uB2E4.\n * - \uC870\uD569 \uC911: composingValue\uB9CC \uC5C5\uB370\uC774\uD2B8 (content div \uD45C\uC2DC\uC6A9)\n * - \uC870\uD569 \uC644\uB8CC(compositionEnd): setTimeout(0)\uC73C\uB85C \uC9C0\uC5F0 \uD6C4 setValue \uD638\uCD9C\n * - cleanup: flushComposition\uC73C\uB85C \uBBF8\uCEE4\uBC0B \uAC12 \uC989\uC2DC \uCEE4\uBC0B\n *\n * @param setValue - \uAC12 \uCEE4\uBC0B \uD568\uC218\n * @returns IME \uD578\uB4E4\uB7EC \uAC1D\uCCB4\n */\nexport function createIMEHandler(setValue: (value: string) => void) {\n const [composingValue, setComposingValue] = createSignal<string | null>(null);\n let compositionFlushTimer: ReturnType<typeof setTimeout> | undefined;\n\n function flushComposition(): void {\n if (compositionFlushTimer != null) {\n clearTimeout(compositionFlushTimer);\n compositionFlushTimer = undefined;\n }\n const pending = composingValue();\n if (pending != null) {\n setComposingValue(null);\n setValue(pending);\n }\n }\n\n function handleCompositionStart(): void {\n if (compositionFlushTimer != null) {\n clearTimeout(compositionFlushTimer);\n compositionFlushTimer = undefined;\n }\n }\n\n function handleInput(value: string, isComposing: boolean): void {\n if (isComposing || compositionFlushTimer != null) {\n setComposingValue(value);\n return;\n }\n setComposingValue(null);\n setValue(value);\n }\n\n function handleCompositionEnd(value: string): void {\n setComposingValue(value);\n compositionFlushTimer = setTimeout(() => {\n compositionFlushTimer = undefined;\n setComposingValue(null);\n setValue(value);\n }, 0);\n }\n\n onCleanup(() => flushComposition());\n\n return {\n composingValue,\n handleCompositionStart,\n handleInput,\n handleCompositionEnd,\n flushComposition,\n };\n}\n"],
5
4
  "mappings": "AAAA,SAAS,cAAc,iBAAiB;AAcjC,SAAS,iBAAiB,UAAmC;AAClE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,aAA4B,IAAI;AAC5E,MAAI;AAEJ,WAAS,mBAAyB;AAChC,QAAI,yBAAyB,MAAM;AACjC,mBAAa,qBAAqB;AAClC,8BAAwB;AAAA,IAC1B;AACA,UAAM,UAAU,eAAe;AAC/B,QAAI,WAAW,MAAM;AACnB,wBAAkB,IAAI;AACtB,eAAS,OAAO;AAAA,IAClB;AAAA,EACF;AAEA,WAAS,yBAA+B;AACtC,QAAI,yBAAyB,MAAM;AACjC,mBAAa,qBAAqB;AAClC,8BAAwB;AAAA,IAC1B;AAAA,EACF;AAEA,WAAS,YAAY,OAAe,aAA4B;AAC9D,QAAI,eAAe,yBAAyB,MAAM;AAChD,wBAAkB,KAAK;AACvB;AAAA,IACF;AACA,sBAAkB,IAAI;AACtB,aAAS,KAAK;AAAA,EAChB;AAEA,WAAS,qBAAqB,OAAqB;AACjD,sBAAkB,KAAK;AACvB,4BAAwB,WAAW,MAAM;AACvC,8BAAwB;AACxB,wBAAkB,IAAI;AACtB,eAAS,KAAK;AAAA,IAChB,GAAG,CAAC;AAAA,EACN;AAEA,YAAU,MAAM,iBAAiB,CAAC;AAElC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMountTransition.d.ts","sourceRoot":"","sources":["../../src/hooks/createMountTransition.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG;IAC1D,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CA8BA"}
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/createMountTransition.ts"],
4
- "sourcesContent": ["import { createSignal, createEffect, onCleanup } from \"solid-js\";\n\n/**\n * \uC5F4\uB9BC/\uB2EB\uD798 \uC560\uB2C8\uBA54\uC774\uC158\uC744 \uC704\uD55C mount transition \uD6C5\n *\n * @remarks\n * - `open`\uC774 true\uAC00 \uB418\uBA74 \uC989\uC2DC `mounted=true`, double rAF \uD6C4 `animating=true`\n * - `open`\uC774 false\uAC00 \uB418\uBA74 \uC989\uC2DC `animating=false`, transitionend \uB610\uB294 fallback \uD0C0\uC774\uBA38(200ms) \uD6C4 `mounted=false`\n * - CSS transition\uACFC \uD568\uAED8 \uC0AC\uC6A9: `mounted()`\uB85C DOM \uB80C\uB354\uB9C1, `animating()`\uC73C\uB85C CSS \uD074\uB798\uC2A4 \uC804\uD658\n */\nexport function createMountTransition(open: () => boolean): {\n mounted: () => boolean;\n animating: () => boolean;\n unmount: () => void;\n} {\n const [mounted, setMounted] = createSignal(false);\n const [animating, setAnimating] = createSignal(false);\n\n createEffect(() => {\n if (open()) {\n setMounted(true);\n let rafId1: number;\n let rafId2: number;\n rafId1 = requestAnimationFrame(() => {\n rafId2 = requestAnimationFrame(() => {\n setAnimating(true);\n });\n });\n onCleanup(() => {\n cancelAnimationFrame(rafId1);\n cancelAnimationFrame(rafId2);\n });\n } else if (mounted()) {\n setAnimating(false);\n const fallbackTimer = setTimeout(() => {\n if (!open()) setMounted(false);\n }, 200);\n onCleanup(() => clearTimeout(fallbackTimer));\n }\n });\n\n const unmount = () => setMounted(false);\n\n return { mounted, animating, unmount };\n}\n"],
5
4
  "mappings": "AAAA,SAAS,cAAc,cAAc,iBAAiB;AAU/C,SAAS,sBAAsB,MAIpC;AACA,QAAM,CAAC,SAAS,UAAU,IAAI,aAAa,KAAK;AAChD,QAAM,CAAC,WAAW,YAAY,IAAI,aAAa,KAAK;AAEpD,eAAa,MAAM;AACjB,QAAI,KAAK,GAAG;AACV,iBAAW,IAAI;AACf,UAAI;AACJ,UAAI;AACJ,eAAS,sBAAsB,MAAM;AACnC,iBAAS,sBAAsB,MAAM;AACnC,uBAAa,IAAI;AAAA,QACnB,CAAC;AAAA,MACH,CAAC;AACD,gBAAU,MAAM;AACd,6BAAqB,MAAM;AAC3B,6BAAqB,MAAM;AAAA,MAC7B,CAAC;AAAA,IACH,WAAW,QAAQ,GAAG;AACpB,mBAAa,KAAK;AAClB,YAAM,gBAAgB,WAAW,MAAM;AACrC,YAAI,CAAC,KAAK,EAAG,YAAW,KAAK;AAAA,MAC/B,GAAG,GAAG;AACN,gBAAU,MAAM,aAAa,aAAa,CAAC;AAAA,IAC7C;AAAA,EACF,CAAC;AAED,QAAM,UAAU,MAAM,WAAW,KAAK;AAEtC,SAAO,EAAE,SAAS,WAAW,QAAQ;AACvC;",
6
5
  "names": []
7
6
  }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * PWA Service Worker update detection hook.
3
+ *
4
+ * Polls for SW updates every 5 minutes. When a new version is detected,
5
+ * shows a notification with a reload action via the Notification system.
6
+ *
7
+ * No-ops gracefully when:
8
+ * - `navigator.serviceWorker` is unavailable (HTTP, unsupported browser)
9
+ * - No service worker is registered (dev mode, tests)
10
+ *
11
+ * Must be called inside NotificationProvider.
12
+ */
13
+ export declare function createPwaUpdate(): void;
14
+ //# sourceMappingURL=createPwaUpdate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPwaUpdate.d.ts","sourceRoot":"","sources":["../../src/hooks/createPwaUpdate.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAuDtC"}
@@ -0,0 +1,50 @@
1
+ import { onCleanup } from "solid-js";
2
+ import { useNotification } from "../components/feedback/notification/NotificationContext.js";
3
+ const UPDATE_INTERVAL = 5 * 60 * 1e3;
4
+ function createPwaUpdate() {
5
+ if (typeof navigator === "undefined" || !("serviceWorker" in navigator)) return;
6
+ const notification = useNotification();
7
+ let intervalId;
8
+ void navigator.serviceWorker.getRegistration().then((registration) => {
9
+ if (registration == null) return;
10
+ intervalId = setInterval(() => {
11
+ void registration.update();
12
+ }, UPDATE_INTERVAL);
13
+ if (registration.waiting != null) {
14
+ promptUpdate(registration.waiting);
15
+ }
16
+ registration.addEventListener("updatefound", () => {
17
+ const newSW = registration.installing;
18
+ if (newSW == null) return;
19
+ newSW.addEventListener("statechange", () => {
20
+ if (newSW.state === "installed" && navigator.serviceWorker.controller != null) {
21
+ promptUpdate(newSW);
22
+ }
23
+ });
24
+ });
25
+ });
26
+ const onControllerChange = () => {
27
+ window.location.reload();
28
+ };
29
+ navigator.serviceWorker.addEventListener("controllerchange", onControllerChange);
30
+ onCleanup(() => {
31
+ if (intervalId != null) {
32
+ clearInterval(intervalId);
33
+ }
34
+ navigator.serviceWorker.removeEventListener("controllerchange", onControllerChange);
35
+ });
36
+ function promptUpdate(waitingSW) {
37
+ notification.info("\uC571\uC774 \uC5C5\uB370\uC774\uD2B8\uB418\uC5C8\uC2B5\uB2C8\uB2E4", "\uC0C8\uB85C\uACE0\uCE68\uD558\uBA74 \uCD5C\uC2E0 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4", {
38
+ action: {
39
+ label: "\uC0C8\uB85C\uACE0\uCE68",
40
+ onClick: () => {
41
+ waitingSW.postMessage({ type: "SKIP_WAITING" });
42
+ }
43
+ }
44
+ });
45
+ }
46
+ }
47
+ export {
48
+ createPwaUpdate
49
+ };
50
+ //# sourceMappingURL=createPwaUpdate.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/hooks/createPwaUpdate.ts"],
4
+ "mappings": "AAAA,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAEhC,MAAM,kBAAkB,IAAI,KAAK;AAc1B,SAAS,kBAAwB;AACtC,MAAI,OAAO,cAAc,eAAe,EAAE,mBAAmB,WAAY;AAEzE,QAAM,eAAe,gBAAgB;AACrC,MAAI;AAEJ,OAAK,UAAU,cAAc,gBAAgB,EAAE,KAAK,CAAC,iBAAiB;AACpE,QAAI,gBAAgB,KAAM;AAG1B,iBAAa,YAAY,MAAM;AAC7B,WAAK,aAAa,OAAO;AAAA,IAC3B,GAAG,eAAe;AAGlB,QAAI,aAAa,WAAW,MAAM;AAChC,mBAAa,aAAa,OAAO;AAAA,IACnC;AAGA,iBAAa,iBAAiB,eAAe,MAAM;AACjD,YAAM,QAAQ,aAAa;AAC3B,UAAI,SAAS,KAAM;AAEnB,YAAM,iBAAiB,eAAe,MAAM;AAC1C,YAAI,MAAM,UAAU,eAAe,UAAU,cAAc,cAAc,MAAM;AAC7E,uBAAa,KAAK;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAGD,QAAM,qBAAqB,MAAM;AAC/B,WAAO,SAAS,OAAO;AAAA,EACzB;AACA,YAAU,cAAc,iBAAiB,oBAAoB,kBAAkB;AAE/E,YAAU,MAAM;AACd,QAAI,cAAc,MAAM;AACtB,oBAAc,UAAU;AAAA,IAC1B;AACA,cAAU,cAAc,oBAAoB,oBAAoB,kBAAkB;AAAA,EACpF,CAAC;AAED,WAAS,aAAa,WAAgC;AACpD,iBAAa,KAAK,uEAAgB,2HAA4B;AAAA,MAC5D,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,SAAS,MAAM;AACb,oBAAU,YAAY,EAAE,MAAM,eAAe,CAAC;AAAA,QAChD;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClipboardValueCopy.d.ts","sourceRoot":"","sources":["../../src/hooks/useClipboardValueCopy.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAiB5C"}
@@ -22,7 +22,6 @@ function extractTextFromRange(range) {
22
22
  if (!hasFormElements) return null;
23
23
  const parts = [];
24
24
  const walk = (node) => {
25
- var _a;
26
25
  if (!range.intersectsNode(node)) return;
27
26
  if (node instanceof Element) {
28
27
  const role = node.getAttribute("role");
@@ -47,7 +46,7 @@ function extractTextFromRange(range) {
47
46
  }
48
47
  if (node instanceof HTMLSelectElement) {
49
48
  if (node.selectedOptions.length > 0) {
50
- parts.push(((_a = node.selectedOptions[0].textContent) == null ? void 0 : _a.trim()) ?? "");
49
+ parts.push(node.selectedOptions[0].textContent.trim());
51
50
  }
52
51
  return;
53
52
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useClipboardValueCopy.ts"],
4
- "sourcesContent": ["import { onCleanup, onMount } from \"solid-js\";\n\n/**\n * \uD3FC \uCEE8\uD2B8\uB864\uC758 value\uB97C \uD074\uB9BD\uBCF4\uB4DC \uBCF5\uC0AC\uC5D0 \uD3EC\uD568\uC2DC\uD0A4\uB294 \uCD08\uAE30\uD654 \uD6C5\n *\n * @remarks\n * \uBE0C\uB77C\uC6B0\uC800 \uAE30\uBCF8 \uB3D9\uC791\uC5D0\uC11C\uB294 \uB4DC\uB798\uADF8 \uC120\uD0DD \uD6C4 \uBCF5\uC0AC \uC2DC `<input>`, `<textarea>`, `<select>`\uC758\n * \uAC12\uC774 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294 \uBB38\uC81C\uB97C \uD574\uACB0\uD55C\uB2E4.\n *\n * - `<input type=\"text|number|...\">` \u2192 `.value`\n * - `<textarea>` \u2192 `.value`\n * - `<select>` \u2192 \uC120\uD0DD\uB41C \uC635\uC158 \uD14D\uC2A4\uD2B8\n * - `<input type=\"checkbox|radio\">` \u2192 `.checked` ? \"Y\" : \"\"\n * - \uD14C\uC774\uBE14 \uB0B4\uC5D0\uC11C\uB294 \uC140 \uAC04 \uD0ED(`\\t`), \uD589 \uAC04 \uAC1C\uD589(`\\n`) \uAD6C\uBD84 (Excel \uD638\uD658)\n */\nexport function useClipboardValueCopy(): void {\n onMount(() => {\n const handler = (e: ClipboardEvent) => {\n const sel = window.getSelection();\n if (!sel || sel.isCollapsed || sel.rangeCount === 0) return;\n\n const range = sel.getRangeAt(0);\n const text = extractTextFromRange(range);\n if (text == null) return;\n\n e.clipboardData!.setData(\"text/plain\", text);\n e.preventDefault();\n };\n\n document.addEventListener(\"copy\", handler);\n onCleanup(() => document.removeEventListener(\"copy\", handler));\n });\n}\n\n/**\n * Selection Range \uB0B4\uC758 \uD14D\uC2A4\uD2B8\uB97C \uCD94\uCD9C\uD55C\uB2E4.\n * \uD3FC \uCEE8\uD2B8\uB864\uC740 value\uB85C \uCE58\uD658\uD558\uACE0, \uD14C\uC774\uBE14 \uAD6C\uC870\uB294 TSV \uD615\uC2DD\uC73C\uB85C \uBCC0\uD658\uD55C\uB2E4.\n *\n * @returns \uCD94\uCD9C\uB41C \uD14D\uC2A4\uD2B8. \uD3FC \uCEE8\uD2B8\uB864\uC774 \uC5C6\uC73C\uBA74 `null` (\uBE0C\uB77C\uC6B0\uC800 \uAE30\uBCF8 \uB3D9\uC791 \uC720\uC9C0)\n */\nfunction extractTextFromRange(range: Range): string | null {\n const root =\n range.commonAncestorContainer instanceof Element\n ? range.commonAncestorContainer\n : range.commonAncestorContainer.parentElement;\n if (!root) return null;\n\n // \uC120\uD0DD \uBC94\uC704\uC5D0 \uD3FC \uCEE8\uD2B8\uB864\uC774 \uC5C6\uC73C\uBA74 \uBE0C\uB77C\uC6B0\uC800 \uAE30\uBCF8 \uB3D9\uC791 \uC0AC\uC6A9\n const formSelector = 'input:not([type=hidden]), textarea, select, [role=\"checkbox\"], [role=\"radio\"]';\n const hasFormElements = [...root.querySelectorAll(formSelector)].some((el) => range.intersectsNode(el));\n if (!hasFormElements) return null;\n\n const parts: string[] = [];\n\n const walk = (node: Node) => {\n if (!range.intersectsNode(node)) return;\n\n // ARIA checkbox/radio: role=\"checkbox\" \uB610\uB294 role=\"radio\" \uC694\uC18C\n if (node instanceof Element) {\n const role = node.getAttribute(\"role\");\n if (role === \"checkbox\" || role === \"radio\") {\n parts.push(node.getAttribute(\"aria-checked\") === \"true\" ? \"Y\" : \"\");\n return;\n }\n }\n\n // \uD3FC \uCEE8\uD2B8\uB864: value \uCD94\uCD9C\n if (node instanceof HTMLInputElement) {\n if (node.type === \"hidden\") return;\n if (node.type === \"checkbox\" || node.type === \"radio\") {\n parts.push(node.checked ? \"Y\" : \"\");\n } else {\n parts.push(formatInputValue(node));\n }\n return;\n }\n if (node instanceof HTMLTextAreaElement) {\n const v = node.value;\n // \uAC1C\uD589 \uD3EC\uD568 \uC2DC \uD070\uB530\uC634\uD45C\uB85C \uAC10\uC2F8\uC11C Excel \uC140 \uB0B4 \uC904\uBC14\uAFC8 \uC720\uC9C0\n parts.push(v.includes(\"\\n\") ? `\"${v.replace(/\"/g, '\"\"')}\"` : v);\n return;\n }\n if (node instanceof HTMLSelectElement) {\n if (node.selectedOptions.length > 0) {\n parts.push(node.selectedOptions[0].textContent?.trim() ?? \"\");\n }\n return;\n }\n\n // \uD14D\uC2A4\uD2B8 \uB178\uB4DC\n if (node.nodeType === Node.TEXT_NODE) {\n // \uC228\uACA8\uC9C4 \uD14D\uC2A4\uD2B8 \uAC74\uB108\uB6F0\uAE30 (dual-element overlay \uD328\uD134 \uB4F1)\n const parent = node.parentElement;\n if (parent) {\n const style = getComputedStyle(parent);\n if (style.visibility === \"hidden\" || style.display === \"none\") {\n return;\n }\n }\n\n let text = node.textContent ?? \"\";\n if (node === range.startContainer && node === range.endContainer) {\n text = text.slice(range.startOffset, range.endOffset);\n } else if (node === range.startContainer) {\n text = text.slice(range.startOffset);\n } else if (node === range.endContainer) {\n text = text.slice(0, range.endOffset);\n }\n parts.push(text);\n return;\n }\n\n // Element\uAC00 \uC544\uB2CC \uB178\uB4DC\n if (!(node instanceof Element)) {\n for (const child of node.childNodes) walk(child);\n return;\n }\n\n // <br>\n if (node.tagName === \"BR\") {\n parts.push(\"\\n\");\n return;\n }\n\n // \uD14C\uC774\uBE14 \uD589: \uC140 \uAC04 \uD0ED \uAD6C\uBD84, \uD589 \uB05D \uAC1C\uD589\n if (node.tagName === \"TR\") {\n let firstCell = true;\n for (const child of node.childNodes) {\n if (!range.intersectsNode(child)) continue;\n if (child instanceof HTMLTableCellElement) {\n if (!firstCell) parts.push(\"\\t\");\n firstCell = false;\n }\n walk(child);\n }\n parts.push(\"\\n\");\n return;\n }\n\n // \uAE30\uBCF8: \uC790\uC2DD \uC21C\uD68C\n for (const child of node.childNodes) {\n walk(child);\n }\n };\n\n walk(range.commonAncestorContainer);\n\n return parts.join(\"\").replace(/\\n+$/, \"\");\n}\n\n/**\n * input value\uB97C \uB85C\uCE98 \uD615\uC2DD\uC73C\uB85C \uBCC0\uD658\uD55C\uB2E4.\n * - `date` \u2192 `toLocaleDateString()`\n * - `time` \u2192 `toLocaleTimeString()`\n * - `datetime-local` \u2192 `toLocaleString()`\n * - \uADF8 \uC678 \u2192 \uC6D0\uB798 \uAC12 \uADF8\uB300\uB85C\n */\nfunction formatInputValue(input: HTMLInputElement): string {\n const { type, value } = input;\n if (!value) return \"\";\n\n if (type === \"date\" || type === \"datetime-local\") {\n const date = new Date(value);\n if (!isNaN(date.getTime())) {\n return type === \"date\" ? date.toLocaleDateString() : date.toLocaleString();\n }\n }\n\n if (type === \"time\") {\n const date = new Date(`1970-01-01T${value}`);\n if (!isNaN(date.getTime())) {\n return date.toLocaleTimeString();\n }\n }\n\n return value;\n}\n"],
5
- "mappings": "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",
4
+ "mappings": "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",
6
5
  "names": []
7
6
  }
@@ -0,0 +1,29 @@
1
+ import { type Accessor, type Setter } from "solid-js";
2
+ /**
3
+ * localStorage 기반 저장소 훅.
4
+ * syncStorage 설정과 무관하게 항상 localStorage를 사용한다.
5
+ * 기기별로 독립적으로 유지되어야 하는 데이터(인증 토큰, 기기별 상태 등)에 사용한다.
6
+ *
7
+ * 키는 ConfigContext의 `clientName`으로 자동 prefix된다. (`${clientName}.${key}`)
8
+ *
9
+ * @template T - 저장할 값의 타입
10
+ * @param key - localStorage 키
11
+ * @param initialValue - 초기값 (옵셔널)
12
+ * @returns [Accessor<T | undefined>, Setter<T | undefined>] 튜플
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * const [token, setToken] = useLocalStorage<string>("auth-token");
17
+ *
18
+ * // 값 설정
19
+ * setToken("abc123");
20
+ *
21
+ * // 값 읽기
22
+ * console.log(token()); // "abc123"
23
+ *
24
+ * // 값 제거
25
+ * setToken(undefined);
26
+ * ```
27
+ */
28
+ export declare function useLocalStorage<T>(key: string, initialValue?: T): [Accessor<T | undefined>, Setter<T | undefined>];
29
+ //# sourceMappingURL=useLocalStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalStorage.d.ts","sourceRoot":"","sources":["../../src/hooks/useLocalStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAgB,MAAM,UAAU,CAAC;AAGpE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAsClH"}
@@ -0,0 +1,36 @@
1
+ import { createSignal } from "solid-js";
2
+ import { useConfig } from "../providers/ConfigContext.js";
3
+ function useLocalStorage(key, initialValue) {
4
+ const config = useConfig();
5
+ const prefixedKey = `${config.clientName}.${key}`;
6
+ let storedValue = initialValue;
7
+ try {
8
+ const item = localStorage.getItem(prefixedKey);
9
+ if (item !== null) {
10
+ storedValue = JSON.parse(item);
11
+ }
12
+ } catch {
13
+ }
14
+ const [value, setValue] = createSignal(storedValue);
15
+ const setAndStore = (newValue) => {
16
+ let resolved;
17
+ if (typeof newValue === "function") {
18
+ resolved = newValue(value());
19
+ setValue(() => resolved);
20
+ } else {
21
+ resolved = newValue;
22
+ setValue(() => newValue);
23
+ }
24
+ if (resolved === void 0) {
25
+ localStorage.removeItem(prefixedKey);
26
+ } else {
27
+ localStorage.setItem(prefixedKey, JSON.stringify(resolved));
28
+ }
29
+ return resolved;
30
+ };
31
+ return [value, setAndStore];
32
+ }
33
+ export {
34
+ useLocalStorage
35
+ };
36
+ //# sourceMappingURL=useLocalStorage.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/hooks/useLocalStorage.ts"],
4
+ "mappings": "AAAA,SAAqC,oBAAoB;AACzD,SAAS,iBAAiB;AA4BnB,SAAS,gBAAmB,KAAa,cAAoE;AAClH,QAAM,SAAS,UAAU;AACzB,QAAM,cAAc,GAAG,OAAO,UAAU,IAAI,GAAG;AAG/C,MAAI,cAA6B;AACjC,MAAI;AACF,UAAM,OAAO,aAAa,QAAQ,WAAW;AAC7C,QAAI,SAAS,MAAM;AACjB,oBAAc,KAAK,MAAM,IAAI;AAAA,IAC/B;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,QAAM,CAAC,OAAO,QAAQ,IAAI,aAA4B,WAAW;AAEjE,QAAM,cAAc,CAAC,aAAuE;AAC1F,QAAI;AAEJ,QAAI,OAAO,aAAa,YAAY;AAClC,iBAAY,SAAoD,MAAM,CAAC;AACvE,eAAS,MAAM,QAAQ;AAAA,IACzB,OAAO;AACL,iBAAW;AACX,eAAS,MAAM,QAAQ;AAAA,IACzB;AAEA,QAAI,aAAa,QAAW;AAC1B,mBAAa,WAAW,WAAW;AAAA,IACrC,OAAO;AACL,mBAAa,QAAQ,aAAa,KAAK,UAAU,QAAQ,CAAC;AAAA,IAC5D;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,OAAO,WAAoC;AACrD;",
5
+ "names": []
6
+ }
@@ -0,0 +1,9 @@
1
+ interface Logger {
2
+ log: (...args: unknown[]) => void;
3
+ info: (...args: unknown[]) => void;
4
+ warn: (...args: unknown[]) => void;
5
+ error: (...args: unknown[]) => void;
6
+ }
7
+ export declare function useLogger(): Logger;
8
+ export {};
9
+ //# sourceMappingURL=useLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogger.d.ts","sourceRoot":"","sources":["../../src/hooks/useLogger.ts"],"names":[],"mappings":"AAKA,UAAU,MAAM;IACd,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAmBlC"}
@@ -0,0 +1,24 @@
1
+ import { consola } from "consola";
2
+ import { useConfig } from "../providers/ConfigContext.js";
3
+ function useLogger() {
4
+ const config = useConfig();
5
+ const createLogFunction = (level) => {
6
+ return (...args) => {
7
+ if (config.logger) {
8
+ void config.logger.write(level, ...args);
9
+ } else {
10
+ consola[level](...args);
11
+ }
12
+ };
13
+ };
14
+ return {
15
+ log: createLogFunction("log"),
16
+ info: createLogFunction("info"),
17
+ warn: createLogFunction("warn"),
18
+ error: createLogFunction("error")
19
+ };
20
+ }
21
+ export {
22
+ useLogger
23
+ };
24
+ //# sourceMappingURL=useLogger.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/hooks/useLogger.ts"],
4
+ "mappings": "AAAA,SAAS,eAAe;AACxB,SAAS,iBAAkC;AAWpC,SAAS,YAAoB;AAClC,QAAM,SAAS,UAAU;AAEzB,QAAM,oBAAoB,CAAC,UAAoB;AAC7C,WAAO,IAAI,SAAoB;AAC7B,UAAI,OAAO,QAAQ;AACjB,aAAK,OAAO,OAAO,MAAM,OAAO,GAAG,IAAI;AAAA,MACzC,OAAO;AACL,QAAC,QAAgB,KAAK,EAAE,GAAG,IAAI;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,KAAK,kBAAkB,KAAK;AAAA,IAC5B,MAAM,kBAAkB,MAAM;AAAA,IAC9B,MAAM,kBAAkB,MAAM;AAAA,IAC9B,OAAO,kBAAkB,OAAO;AAAA,EAClC;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePrint.d.ts","sourceRoot":"","sources":["../../src/hooks/usePrint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AASpC,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACpF;AAiHD,wBAAgB,QAAQ,IAAI,cAAc,CAkJzC"}
@@ -1,8 +1,8 @@
1
1
  import { render } from "solid-js/web";
2
2
  import { jsPDF } from "jspdf";
3
3
  import * as htmlToImage from "html-to-image";
4
- import { useLoading } from "../components/feedback/loading/LoadingContext";
5
- import { PrintInstanceContext } from "../components/feedback/print/PrintInstanceContext";
4
+ import { useLoading } from "../components/feedback/loading/LoadingContext.js";
5
+ import { PrintInstanceContext } from "../components/feedback/print/PrintInstanceContext.js";
6
6
  const PAPER_SIZES = {
7
7
  a3: [841.89, 1190.55],
8
8
  a4: [595.28, 841.89],
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/usePrint.ts"],
4
- "sourcesContent": ["import type { JSX } from \"solid-js\";\nimport { render } from \"solid-js/web\";\nimport { jsPDF } from \"jspdf\";\nimport * as htmlToImage from \"html-to-image\";\nimport { useLoading } from \"../components/feedback/loading/LoadingContext\";\nimport { PrintInstanceContext, type PrintInstance } from \"../components/feedback/print/PrintInstanceContext\";\n\n// --- Types ---\n\nexport interface PrintOptions {\n size?: string;\n margin?: string;\n}\n\nexport interface UsePrintReturn {\n toPrinter: (factory: () => JSX.Element, options?: PrintOptions) => Promise<void>;\n toPdf: (factory: () => JSX.Element, options?: PrintOptions) => Promise<Uint8Array>;\n}\n\n// --- Paper size constants (pt) ---\n\nconst PAPER_SIZES: Partial<Record<string, [number, number]>> = {\n a3: [841.89, 1190.55],\n a4: [595.28, 841.89],\n a5: [419.53, 595.28],\n letter: [612, 792],\n legal: [612, 1008],\n};\n\n// --- Internal helpers ---\n\nfunction parseDimension(dim: string): number {\n const num = parseFloat(dim);\n if (dim.endsWith(\"mm\")) return num * 2.83465;\n if (dim.endsWith(\"cm\")) return num * 28.3465;\n if (dim.endsWith(\"in\")) return num * 72;\n return num; // pt\n}\n\nfunction parseSize(size?: string): { width: number; height: number; orientation: \"p\" | \"l\" } {\n const s = (size ?? \"A4\").toLowerCase().trim();\n const landscape = s.includes(\"landscape\");\n const cleanSize = s.replace(/\\s*(landscape|portrait)\\s*/g, \"\").trim();\n\n const paperSize = PAPER_SIZES[cleanSize];\n if (paperSize) {\n const [w, h] = paperSize;\n if (landscape) return { width: h, height: w, orientation: \"l\" };\n return { width: w, height: h, orientation: \"p\" };\n }\n\n // \uCEE4\uC2A4\uD140 \uD06C\uAE30: \"210mm 297mm\"\n const parts = cleanSize.split(/\\s+/);\n if (parts.length === 2) {\n const w = parseDimension(parts[0]);\n const h = parseDimension(parts[1]);\n return { width: w, height: h, orientation: w > h ? \"l\" : \"p\" };\n }\n\n return { width: 595.28, height: 841.89, orientation: \"p\" };\n}\n\nfunction waitForImages(container: HTMLElement): Promise<void> {\n const imgs = Array.from(container.querySelectorAll(\"img\"));\n return Promise.all(\n imgs.map((img) =>\n img.complete\n ? Promise.resolve()\n : new Promise<void>((resolve) => {\n img.addEventListener(\"load\", () => resolve(), { once: true });\n img.addEventListener(\"error\", () => resolve(), { once: true });\n }),\n ),\n ).then(() => undefined);\n}\n\nasync function renderAndWait(factory: () => JSX.Element): Promise<{ container: HTMLElement; dispose: () => void }> {\n const container = document.createElement(\"div\");\n container.style.position = \"fixed\";\n container.style.left = \"-9999px\";\n container.style.top = \"0\";\n document.body.appendChild(container);\n\n let resolveReady: (() => void) | undefined;\n const state = { readyCalled: false };\n\n const readyPromise = new Promise<void>((resolve) => {\n resolveReady = resolve;\n });\n\n const instance: PrintInstance = {\n ready: () => {\n state.readyCalled = true;\n resolveReady?.();\n },\n };\n\n const dispose = render(\n () =>\n PrintInstanceContext.Provider({\n value: instance,\n get children() {\n return factory();\n },\n }),\n container,\n );\n\n // SolidJS \uCEF4\uD3EC\uB10C\uD2B8\uB294 \uB3D9\uAE30\uC801\uC73C\uB85C \uB9C8\uC6B4\uD2B8\uB428.\n // \uB3D9\uAE30\uC801\uC73C\uB85C ready()\uAC00 \uD638\uCD9C\uB418\uC5C8\uC73C\uBA74 \uC774\uBBF8 state.readyCalled=true.\n // \uBE44\uB3D9\uAE30 ready (onMount \uB0B4 async \uB4F1)\uB97C \uC704\uD574 rAF \uB300\uAE30 \uD6C4 \uD655\uC778.\n await Promise.resolve();\n\n if (!state.readyCalled) {\n await new Promise<void>((resolve) => {\n requestAnimationFrame(() => resolve());\n });\n }\n\n if (state.readyCalled) {\n await readyPromise;\n }\n\n await waitForImages(container);\n\n return { container, dispose };\n}\n\n// --- Hook ---\n\nexport function usePrint(): UsePrintReturn {\n const busy = useLoading();\n\n const toPrinter = async (factory: () => JSX.Element, options?: PrintOptions): Promise<void> => {\n busy.show();\n let container: HTMLElement | undefined;\n let dispose: (() => void) | undefined;\n let styleEl: HTMLStyleElement | undefined;\n\n try {\n const result = await renderAndWait(factory);\n container = result.container;\n dispose = result.dispose;\n\n // \uC778\uC1C4 \uB300\uC0C1\uC744 visible\uB85C \uC804\uD658\n container.style.position = \"static\";\n container.style.left = \"auto\";\n container.classList.add(\"_sd-print-target\");\n\n // @media print \uC2A4\uD0C0\uC77C \uC8FC\uC785\n styleEl = document.createElement(\"style\");\n styleEl.textContent = `\n @page {\n size: ${options?.size ?? \"A4\"};\n margin: ${options?.margin ?? \"0\"};\n }\n body > ._sd-print-target { display: none; }\n @media print {\n html, body { -webkit-print-color-adjust: exact; background: white; }\n body > * { display: none !important; }\n body > ._sd-print-target { display: block !important; }\n }\n `;\n document.head.appendChild(styleEl);\n\n await new Promise<void>((resolve) => {\n requestAnimationFrame(() => {\n window.print();\n resolve();\n });\n });\n } finally {\n styleEl?.remove();\n dispose?.();\n container?.remove();\n busy.hide();\n }\n };\n\n const toPdf = async (factory: () => JSX.Element, options?: PrintOptions): Promise<Uint8Array> => {\n busy.show();\n let container: HTMLElement | undefined;\n let dispose: (() => void) | undefined;\n\n try {\n const result = await renderAndWait(factory);\n container = result.container;\n dispose = result.dispose;\n\n const { width: pageWidth, height: pageHeight, orientation } = parseSize(options?.size);\n\n const doc = new jsPDF(orientation, \"pt\", [pageWidth, pageHeight]);\n doc.deletePage(1);\n\n const pages = Array.from(container.querySelectorAll<HTMLElement>(\"[data-print-page]\"));\n\n if (pages.length > 0) {\n // \uBA85\uC2DC\uC801 \uD398\uC774\uC9C0 \uBD84\uD560\n for (const pageEl of pages) {\n pageEl.style.width = pageWidth + \"pt\";\n\n const canvas = await htmlToImage.toCanvas(pageEl, {\n backgroundColor: \"white\",\n pixelRatio: 4,\n });\n\n const imgWidth = pageWidth;\n const imgHeight = canvas.height * (pageWidth / canvas.width);\n\n doc.addPage([pageWidth, pageHeight], orientation);\n doc.addImage({\n imageData: canvas,\n x: 0,\n y: 0,\n width: imgWidth,\n height: imgHeight,\n });\n }\n } else {\n // \uC790\uB3D9 \uBD84\uD560: \uC804\uCCB4 \uCF58\uD150\uCE20\uB97C \uD398\uC774\uC9C0 \uB192\uC774 \uAE30\uC900\uC73C\uB85C \uC2AC\uB77C\uC774\uC2A4\n // container \uC790\uCCB4\uB294 off-screen \uC2A4\uD0C0\uC77C(position/left)\uC744 \uAC00\uC9C0\uBBC0\uB85C\n // html-to-image\uAC00 \uD074\uB860 \uC2DC \uB3D9\uC77C \uC2A4\uD0C0\uC77C\uC744 \uBCF5\uC81C\uD558\uC5EC \uBE48 \uCE94\uBC84\uC2A4\uAC00 \uC0DD\uAE38 \uC218 \uC788\uC74C.\n // \uB530\uB77C\uC11C \uC2E4\uC81C \uCF58\uD150\uCE20 \uC694\uC18C\uB97C target\uC73C\uB85C \uC0AC\uC6A9.\n const target = (container.firstElementChild as HTMLElement | null) ?? container;\n target.style.width = pageWidth + \"pt\";\n\n const canvas = await htmlToImage.toCanvas(target, {\n backgroundColor: \"white\",\n pixelRatio: 4,\n });\n\n const scaleFactor = pageWidth / canvas.width;\n const pageHeightPx = pageHeight / scaleFactor;\n const totalPages = Math.ceil(canvas.height / pageHeightPx);\n\n for (let i = 0; i < totalPages; i++) {\n const sliceCanvas = document.createElement(\"canvas\");\n sliceCanvas.width = canvas.width;\n sliceCanvas.height = Math.min(pageHeightPx, canvas.height - i * pageHeightPx);\n\n const ctx = sliceCanvas.getContext(\"2d\")!;\n ctx.drawImage(\n canvas,\n 0,\n i * pageHeightPx,\n canvas.width,\n sliceCanvas.height,\n 0,\n 0,\n canvas.width,\n sliceCanvas.height,\n );\n\n const imgHeight = sliceCanvas.height * scaleFactor;\n\n doc.addPage([pageWidth, pageHeight], orientation);\n doc.addImage({\n imageData: sliceCanvas,\n x: 0,\n y: 0,\n width: pageWidth,\n height: imgHeight,\n });\n }\n }\n\n const arrayBuffer = doc.output(\"arraybuffer\");\n return new Uint8Array(arrayBuffer);\n } finally {\n dispose?.();\n container?.remove();\n busy.hide();\n }\n };\n\n return { toPrinter, toPdf };\n}\n"],
5
4
  "mappings": "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",
6
5
  "names": []
7
6
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRouterLink.d.ts","sourceRoot":"","sources":["../../src/hooks/useRouterLink.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,wBAAwB;IACxB,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,IAAI,CAAC,OAAO,EAAE,iBAAiB,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAsBvG"}
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/useRouterLink.ts"],
4
- "sourcesContent": ["import { useNavigate } from \"@solidjs/router\";\n\nexport interface RouterLinkOptions {\n /** \uC774\uB3D9\uD560 \uACBD\uB85C (\uC644\uC131\uB41C URL, \uC608: \"/home/dashboard?tab=1\") */\n href: string;\n\n /** \uD398\uC774\uC9C0 \uC774\uB3D9 \uC2DC \uC804\uB2EC\uD560 \uB370\uC774\uD130 (URL\uC5D0 \uB178\uCD9C\uB418\uC9C0 \uC54A\uC74C) */\n state?: Record<string, unknown>;\n\n /** Shift+\uD074\uB9AD \uC2DC \uC0C8 \uCC3D \uD06C\uAE30 */\n window?: {\n width?: number; // \uAE30\uBCF8\uAC12: 800\n height?: number; // \uAE30\uBCF8\uAC12: 800\n };\n}\n\n/**\n * \uB77C\uC6B0\uD130 \uB124\uBE44\uAC8C\uC774\uC158\uC744 \uCC98\uB9AC\uD558\uB294 hook\n *\n * @remarks\n * - \uC77C\uBC18 \uD074\uB9AD: SPA \uB77C\uC6B0\uD305 (useNavigate)\n * - Ctrl/Alt + \uD074\uB9AD: \uC0C8 \uD0ED\n * - Shift + \uD074\uB9AD: \uC0C8 \uCC3D (window \uC635\uC158 \uD06C\uAE30 \uC801\uC6A9)\n *\n * @example\n * ```tsx\n * const navigate = useRouterLink();\n *\n * <ListItem onClick={navigate({ href: \"/home/dashboard\" })}>\n * \uB300\uC2DC\uBCF4\uB4DC\n * </ListItem>\n *\n * // state \uC804\uB2EC\n * <ListItem onClick={navigate({\n * href: \"/users/123\",\n * state: { from: \"list\" }\n * })}>\n * \uC0AC\uC6A9\uC790\n * </ListItem>\n * ```\n */\nexport function useRouterLink(): (options: RouterLinkOptions) => (e: MouseEvent | KeyboardEvent) => void {\n const navigate = useNavigate();\n\n return (options: RouterLinkOptions) => {\n return (e: MouseEvent | KeyboardEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.ctrlKey || e.metaKey || e.altKey) {\n // Ctrl/Cmd/Alt + \uD074\uB9AD: \uC0C8 \uD0ED\n window.open(options.href, \"_blank\");\n } else if (e.shiftKey) {\n // Shift + \uD074\uB9AD: \uC0C8 \uCC3D\n const width = options.window?.width ?? 800;\n const height = options.window?.height ?? 800;\n window.open(options.href, \"\", `width=${width},height=${height}`);\n } else {\n // \uC77C\uBC18 \uD074\uB9AD: SPA \uB77C\uC6B0\uD305\n navigate(options.href, options.state ? { state: options.state } : undefined);\n }\n };\n };\n}\n"],
5
4
  "mappings": "AAAA,SAAS,mBAAmB;AAyCrB,SAAS,gBAAyF;AACvG,QAAM,WAAW,YAAY;AAE7B,SAAO,CAAC,YAA+B;AACrC,WAAO,CAAC,MAAkC;AA7C9C;AA8CM,QAAE,eAAe;AACjB,QAAE,gBAAgB;AAElB,UAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ;AAEtC,eAAO,KAAK,QAAQ,MAAM,QAAQ;AAAA,MACpC,WAAW,EAAE,UAAU;AAErB,cAAM,UAAQ,aAAQ,WAAR,mBAAgB,UAAS;AACvC,cAAM,WAAS,aAAQ,WAAR,mBAAgB,WAAU;AACzC,eAAO,KAAK,QAAQ,MAAM,IAAI,SAAS,KAAK,WAAW,MAAM,EAAE;AAAA,MACjE,OAAO;AAEL,iBAAS,QAAQ,MAAM,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,MAAS;AAAA,MAC7E;AAAA,IACF;AAAA,EACF;AACF;",
6
5
  "names": []
7
6
  }
@@ -0,0 +1,24 @@
1
+ import { type Accessor, type Setter } from "solid-js";
2
+ /**
3
+ * Creates a reactive signal that syncs configuration data to storage.
4
+ *
5
+ * Uses `syncStorage` from ConfigProvider if available, otherwise falls back to `localStorage`.
6
+ * Designed for data that should persist and sync across devices (e.g., theme, user preferences, DataSheet configs).
7
+ *
8
+ * @param key - Storage key for the config value
9
+ * @param defaultValue - Default value if no stored value exists
10
+ * @returns Tuple of [value accessor, value setter, loading state accessor]
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * const [theme, setTheme, loading] = useSyncConfig("user-theme", "light");
15
+ *
16
+ * <Show when={!loading()}>
17
+ * <button onClick={() => setTheme(theme() === "light" ? "dark" : "light")}>
18
+ * Toggle theme
19
+ * </button>
20
+ * </Show>
21
+ * ```
22
+ */
23
+ export declare function useSyncConfig<T>(key: string, defaultValue: T): [Accessor<T>, Setter<T>, Accessor<boolean>];
24
+ //# sourceMappingURL=useSyncConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSyncConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useSyncConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAyC,MAAM,UAAU,CAAC;AAG7F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CA0E1G"}
@@ -0,0 +1,60 @@
1
+ import { createEffect, createSignal, onCleanup } from "solid-js";
2
+ import { useConfig } from "../providers/ConfigContext.js";
3
+ function useSyncConfig(key, defaultValue) {
4
+ const config = useConfig();
5
+ const prefixedKey = `${config.clientName}.${key}`;
6
+ const [value, setValue] = createSignal(defaultValue);
7
+ const [loading, setLoading] = createSignal(false);
8
+ const initializeFromStorage = async () => {
9
+ if (!config.syncStorage) {
10
+ try {
11
+ const stored = localStorage.getItem(prefixedKey);
12
+ if (stored !== null) {
13
+ setValue(() => JSON.parse(stored));
14
+ }
15
+ } catch {
16
+ }
17
+ return;
18
+ }
19
+ setLoading(true);
20
+ try {
21
+ const stored = await config.syncStorage.getItem(prefixedKey);
22
+ if (stored !== null) {
23
+ setValue(() => JSON.parse(stored));
24
+ }
25
+ } catch {
26
+ try {
27
+ const stored = localStorage.getItem(prefixedKey);
28
+ if (stored !== null) {
29
+ setValue(() => JSON.parse(stored));
30
+ }
31
+ } catch {
32
+ }
33
+ } finally {
34
+ setLoading(false);
35
+ }
36
+ };
37
+ void initializeFromStorage();
38
+ createEffect(() => {
39
+ const currentValue = value();
40
+ const serialized = JSON.stringify(currentValue);
41
+ if (!config.syncStorage) {
42
+ localStorage.setItem(prefixedKey, serialized);
43
+ return;
44
+ }
45
+ void (async () => {
46
+ try {
47
+ await config.syncStorage.setItem(prefixedKey, serialized);
48
+ } catch {
49
+ localStorage.setItem(prefixedKey, serialized);
50
+ }
51
+ })();
52
+ });
53
+ onCleanup(() => {
54
+ });
55
+ return [value, setValue, loading];
56
+ }
57
+ export {
58
+ useSyncConfig
59
+ };
60
+ //# sourceMappingURL=useSyncConfig.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/hooks/useSyncConfig.ts"],
4
+ "mappings": "AAAA,SAAqC,cAAc,cAAc,iBAAiB;AAClF,SAAS,iBAAiB;AAuBnB,SAAS,cAAiB,KAAa,cAA8D;AAC1G,QAAM,SAAS,UAAU;AACzB,QAAM,cAAc,GAAG,OAAO,UAAU,IAAI,GAAG;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAgB,YAAY;AACtD,QAAM,CAAC,SAAS,UAAU,IAAI,aAAa,KAAK;AAGhD,QAAM,wBAAwB,YAAY;AACxC,QAAI,CAAC,OAAO,aAAa;AAEvB,UAAI;AACF,cAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,YAAI,WAAW,MAAM;AACnB,mBAAS,MAAM,KAAK,MAAM,MAAM,CAAM;AAAA,QACxC;AAAA,MACF,QAAQ;AAAA,MAER;AACA;AAAA,IACF;AAGA,eAAW,IAAI;AACf,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,YAAY,QAAQ,WAAW;AAC3D,UAAI,WAAW,MAAM;AACnB,iBAAS,MAAM,KAAK,MAAM,MAAM,CAAM;AAAA,MACxC;AAAA,IACF,QAAQ;AAEN,UAAI;AACF,cAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,YAAI,WAAW,MAAM;AACnB,mBAAS,MAAM,KAAK,MAAM,MAAM,CAAM;AAAA,QACxC;AAAA,MACF,QAAQ;AAAA,MAER;AAAA,IACF,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAGA,OAAK,sBAAsB;AAG3B,eAAa,MAAM;AACjB,UAAM,eAAe,MAAM;AAC3B,UAAM,aAAa,KAAK,UAAU,YAAY;AAE9C,QAAI,CAAC,OAAO,aAAa;AAEvB,mBAAa,QAAQ,aAAa,UAAU;AAC5C;AAAA,IACF;AAGA,UAAM,YAAY;AAChB,UAAI;AACF,cAAM,OAAO,YAAa,QAAQ,aAAa,UAAU;AAAA,MAC3D,QAAQ;AAEN,qBAAa,QAAQ,aAAa,UAAU;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,EACL,CAAC;AAGD,YAAU,MAAM;AAAA,EAEhB,CAAC;AAED,SAAO,CAAC,OAAO,UAAU,OAAO;AAClC;",
5
+ "names": []
6
+ }
@@ -21,6 +21,7 @@ export * from "./components/form-control/editor/RichTextEditor";
21
21
  export * from "./components/form-control/numpad/Numpad";
22
22
  export * from "./components/form-control/state-preset/StatePreset";
23
23
  export * from "./components/form-control/ThemeToggle";
24
+ export * from "./components/form-control/Invalid";
24
25
  export * from "./components/layout/FormGroup";
25
26
  export * from "./components/layout/FormTable";
26
27
  export * from "./components/layout/sidebar/Sidebar";
@@ -52,28 +53,32 @@ export * from "./components/disclosure/DialogInstanceContext";
52
53
  export * from "./components/disclosure/DialogProvider";
53
54
  export * from "./components/disclosure/Tabs";
54
55
  export * from "./components/feedback/notification/NotificationContext";
56
+ export * from "./components/feedback/notification/NotificationBell";
55
57
  export * from "./components/feedback/notification/NotificationProvider";
56
58
  export * from "./components/feedback/notification/NotificationBanner";
57
- export * from "./components/feedback/notification/NotificationBell";
58
59
  export * from "./components/feedback/loading/LoadingContext";
59
- export * from "./components/feedback/loading/LoadingProvider";
60
60
  export * from "./components/feedback/loading/LoadingContainer";
61
+ export * from "./components/feedback/loading/LoadingProvider";
61
62
  export * from "./components/feedback/print/Print";
62
63
  export * from "./components/feedback/print/PrintInstanceContext";
63
64
  export * from "./components/feedback/Progress";
64
65
  export * from "./providers/ConfigContext";
65
66
  export * from "./providers/InitializeProvider";
66
- export * from "./providers/ThemeContext";
67
+ export { useTheme } from "./providers/ThemeContext";
68
+ export type { ThemeMode, ResolvedTheme } from "./providers/ThemeContext";
67
69
  export * from "./providers/ServiceClientContext";
68
70
  export * from "./providers/ServiceClientProvider";
69
71
  export * from "./providers/shared-data/SharedDataContext";
70
72
  export * from "./providers/shared-data/SharedDataProvider";
71
73
  export * from "./providers/shared-data/SharedDataChangeEvent";
72
- export * from "./hooks/usePersisted";
74
+ export * from "./hooks/useLocalStorage";
75
+ export * from "./hooks/useSyncConfig";
76
+ export * from "./hooks/useLogger";
73
77
  export * from "./hooks/usePrint";
74
78
  export { createControllableSignal } from "./hooks/createControllableSignal";
75
79
  export { createIMEHandler } from "./hooks/createIMEHandler";
76
80
  export { createMountTransition } from "./hooks/createMountTransition";
81
+ export { createPwaUpdate } from "./hooks/createPwaUpdate";
77
82
  export { useRouterLink } from "./hooks/useRouterLink";
78
83
  export * from "./styles/tokens.styles";
79
84
  export * from "./styles/patterns.styles";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}