@simplysm/solid 13.0.28 → 13.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/README.md +15 -9
  2. package/dist/components/data/Pagination.d.ts +4 -5
  3. package/dist/components/data/Pagination.d.ts.map +1 -1
  4. package/dist/components/data/Pagination.js +14 -14
  5. package/dist/components/data/Pagination.js.map +2 -2
  6. package/dist/components/data/Table.js +1 -1
  7. package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
  8. package/dist/components/data/calendar/Calendar.js +1 -1
  9. package/dist/components/data/calendar/Calendar.js.map +1 -1
  10. package/dist/components/data/kanban/Kanban.d.ts +9 -9
  11. package/dist/components/data/kanban/Kanban.d.ts.map +1 -1
  12. package/dist/components/data/kanban/Kanban.js +6 -6
  13. package/dist/components/data/kanban/Kanban.js.map +2 -2
  14. package/dist/components/data/list/List.d.ts.map +1 -1
  15. package/dist/components/data/list/List.js.map +1 -1
  16. package/dist/components/data/list/ListItem.d.ts.map +1 -1
  17. package/dist/components/data/list/ListItem.js.map +1 -1
  18. package/dist/components/data/permission-table/PermissionTable.d.ts.map +1 -1
  19. package/dist/components/data/permission-table/PermissionTable.js.map +1 -1
  20. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
  21. package/dist/components/data/sheet/DataSheet.js +102 -107
  22. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  23. package/dist/components/data/sheet/DataSheet.styles.d.ts.map +1 -1
  24. package/dist/components/data/sheet/DataSheet.styles.js +24 -6
  25. package/dist/components/data/sheet/DataSheet.styles.js.map +1 -1
  26. package/dist/components/data/sheet/DataSheetColumn.d.ts.map +1 -1
  27. package/dist/components/data/sheet/DataSheetColumn.js.map +1 -1
  28. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
  29. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +1 -1
  30. package/dist/components/data/sheet/sheetUtils.d.ts.map +1 -1
  31. package/dist/components/data/sheet/sheetUtils.js.map +1 -1
  32. package/dist/components/data/sheet/types.d.ts +2 -2
  33. package/dist/components/data/sheet/types.d.ts.map +1 -1
  34. package/dist/components/disclosure/Collapse.d.ts.map +1 -1
  35. package/dist/components/disclosure/Collapse.js +0 -3
  36. package/dist/components/disclosure/Collapse.js.map +1 -1
  37. package/dist/components/disclosure/Dialog.d.ts +8 -8
  38. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  39. package/dist/components/disclosure/Dialog.js +64 -69
  40. package/dist/components/disclosure/Dialog.js.map +2 -2
  41. package/dist/components/disclosure/DialogContext.d.ts +4 -4
  42. package/dist/components/disclosure/DialogContext.d.ts.map +1 -1
  43. package/dist/components/disclosure/DialogContext.js.map +1 -1
  44. package/dist/components/disclosure/DialogProvider.d.ts.map +1 -1
  45. package/dist/components/disclosure/DialogProvider.js +8 -8
  46. package/dist/components/disclosure/DialogProvider.js.map +2 -2
  47. package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
  48. package/dist/components/disclosure/Dropdown.js.map +1 -1
  49. package/dist/components/disclosure/Tabs.d.ts.map +1 -1
  50. package/dist/components/disclosure/Tabs.js.map +1 -1
  51. package/dist/components/display/Alert.d.ts.map +1 -1
  52. package/dist/components/display/Alert.js.map +1 -1
  53. package/dist/components/display/Card.d.ts +0 -1
  54. package/dist/components/display/Card.d.ts.map +1 -1
  55. package/dist/components/display/Card.js +1 -2
  56. package/dist/components/display/Card.js.map +1 -1
  57. package/dist/components/display/Echarts.d.ts +1 -1
  58. package/dist/components/display/Echarts.d.ts.map +1 -1
  59. package/dist/components/display/Echarts.js +2 -2
  60. package/dist/components/display/Echarts.js.map +2 -2
  61. package/dist/components/display/Link.d.ts +5 -0
  62. package/dist/components/display/Link.d.ts.map +1 -0
  63. package/dist/components/display/Link.js +26 -0
  64. package/dist/components/display/Link.js.map +6 -0
  65. package/dist/components/feedback/Progress.d.ts +3 -3
  66. package/dist/components/feedback/Progress.d.ts.map +1 -1
  67. package/dist/components/feedback/Progress.js +1 -1
  68. package/dist/components/feedback/Progress.js.map +2 -2
  69. package/dist/components/feedback/busy/BusyContainer.d.ts +13 -0
  70. package/dist/components/feedback/busy/BusyContainer.d.ts.map +1 -0
  71. package/dist/components/feedback/{loading/LoadingContainer.js → busy/BusyContainer.js} +20 -13
  72. package/dist/components/feedback/busy/BusyContainer.js.map +6 -0
  73. package/dist/components/feedback/busy/BusyContext.d.ts +11 -0
  74. package/dist/components/feedback/busy/BusyContext.d.ts.map +1 -0
  75. package/dist/components/feedback/busy/BusyContext.js +14 -0
  76. package/dist/components/feedback/busy/BusyContext.js.map +6 -0
  77. package/dist/components/feedback/busy/BusyProvider.d.ts +7 -0
  78. package/dist/components/feedback/busy/BusyProvider.d.ts.map +1 -0
  79. package/dist/components/feedback/{loading/LoadingProvider.js → busy/BusyProvider.js} +7 -7
  80. package/dist/components/feedback/busy/BusyProvider.js.map +6 -0
  81. package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -1
  82. package/dist/components/feedback/notification/NotificationBanner.js +1 -1
  83. package/dist/components/feedback/notification/NotificationBanner.js.map +1 -1
  84. package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
  85. package/dist/components/feedback/notification/NotificationBell.js +4 -2
  86. package/dist/components/feedback/notification/NotificationBell.js.map +2 -2
  87. package/dist/components/feedback/notification/NotificationContext.d.ts.map +1 -1
  88. package/dist/components/feedback/notification/NotificationContext.js.map +1 -1
  89. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
  90. package/dist/components/feedback/notification/NotificationProvider.js +1 -0
  91. package/dist/components/feedback/notification/NotificationProvider.js.map +1 -1
  92. package/dist/components/form-control/Button.d.ts.map +1 -1
  93. package/dist/components/form-control/Button.js +2 -2
  94. package/dist/components/form-control/Button.js.map +1 -1
  95. package/dist/components/form-control/DropdownTrigger.styles.d.ts.map +1 -1
  96. package/dist/components/form-control/DropdownTrigger.styles.js +6 -1
  97. package/dist/components/form-control/DropdownTrigger.styles.js.map +1 -1
  98. package/dist/components/form-control/Invalid.d.ts +4 -2
  99. package/dist/components/form-control/Invalid.d.ts.map +1 -1
  100. package/dist/components/form-control/Invalid.js +81 -41
  101. package/dist/components/form-control/Invalid.js.map +2 -2
  102. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
  103. package/dist/components/form-control/ThemeToggle.js +4 -5
  104. package/dist/components/form-control/ThemeToggle.js.map +2 -2
  105. package/dist/components/form-control/checkbox/Checkbox.d.ts +4 -2
  106. package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
  107. package/dist/components/form-control/checkbox/Checkbox.js +65 -52
  108. package/dist/components/form-control/checkbox/Checkbox.js.map +2 -2
  109. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts +1 -2
  110. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
  111. package/dist/components/form-control/checkbox/Checkbox.styles.js +8 -10
  112. package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
  113. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts +9 -9
  114. package/dist/components/form-control/checkbox/CheckboxGroup.d.ts.map +1 -1
  115. package/dist/components/form-control/checkbox/CheckboxGroup.js +10 -82
  116. package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
  117. package/dist/components/form-control/checkbox/Radio.d.ts +4 -2
  118. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
  119. package/dist/components/form-control/checkbox/Radio.js +64 -51
  120. package/dist/components/form-control/checkbox/Radio.js.map +2 -2
  121. package/dist/components/form-control/checkbox/RadioGroup.d.ts +9 -9
  122. package/dist/components/form-control/checkbox/RadioGroup.d.ts.map +1 -1
  123. package/dist/components/form-control/checkbox/RadioGroup.js +10 -77
  124. package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
  125. package/dist/components/form-control/color-picker/ColorPicker.d.ts +8 -3
  126. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  127. package/dist/components/form-control/color-picker/ColorPicker.js +43 -26
  128. package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
  129. package/dist/components/form-control/combobox/Combobox.d.ts +8 -8
  130. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  131. package/dist/components/form-control/combobox/Combobox.js +72 -59
  132. package/dist/components/form-control/combobox/Combobox.js.map +2 -2
  133. package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
  134. package/dist/components/form-control/editor/EditorToolbar.js +3 -2
  135. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  136. package/dist/components/form-control/editor/RichTextEditor.d.ts.map +1 -1
  137. package/dist/components/form-control/editor/RichTextEditor.js.map +1 -1
  138. package/dist/components/form-control/field/DatePicker.d.ts +6 -0
  139. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  140. package/dist/components/form-control/field/DatePicker.js +138 -117
  141. package/dist/components/form-control/field/DatePicker.js.map +2 -2
  142. package/dist/components/form-control/field/DateTimePicker.d.ts +6 -0
  143. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  144. package/dist/components/form-control/field/DateTimePicker.js +138 -115
  145. package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
  146. package/dist/components/form-control/field/Field.styles.d.ts +14 -0
  147. package/dist/components/form-control/field/Field.styles.d.ts.map +1 -1
  148. package/dist/components/form-control/field/Field.styles.js +47 -3
  149. package/dist/components/form-control/field/Field.styles.js.map +1 -1
  150. package/dist/components/form-control/field/FieldPlaceholder.d.ts +7 -0
  151. package/dist/components/form-control/field/FieldPlaceholder.d.ts.map +1 -0
  152. package/dist/components/form-control/field/FieldPlaceholder.js +34 -0
  153. package/dist/components/form-control/field/FieldPlaceholder.js.map +6 -0
  154. package/dist/components/form-control/field/NumberInput.d.ts +13 -0
  155. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  156. package/dist/components/form-control/field/NumberInput.js +163 -111
  157. package/dist/components/form-control/field/NumberInput.js.map +2 -2
  158. package/dist/components/form-control/field/TextInput.d.ts +16 -1
  159. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  160. package/dist/components/form-control/field/TextInput.js +177 -114
  161. package/dist/components/form-control/field/TextInput.js.map +2 -2
  162. package/dist/components/form-control/field/Textarea.d.ts +10 -0
  163. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  164. package/dist/components/form-control/field/Textarea.js +156 -121
  165. package/dist/components/form-control/field/Textarea.js.map +2 -2
  166. package/dist/components/form-control/field/TimePicker.d.ts +10 -0
  167. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  168. package/dist/components/form-control/field/TimePicker.js +126 -94
  169. package/dist/components/form-control/field/TimePicker.js.map +2 -2
  170. package/dist/components/form-control/select/Select.d.ts +7 -9
  171. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  172. package/dist/components/form-control/select/Select.js +71 -60
  173. package/dist/components/form-control/select/Select.js.map +2 -2
  174. package/dist/components/form-control/select/SelectItem.d.ts.map +1 -1
  175. package/dist/components/form-control/select/SelectItem.js.map +1 -1
  176. package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -1
  177. package/dist/components/form-control/state-preset/StatePreset.js +2 -1
  178. package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
  179. package/dist/components/layout/FormGroup.d.ts.map +1 -1
  180. package/dist/components/layout/FormGroup.js.map +1 -1
  181. package/dist/components/layout/sidebar/Sidebar.d.ts.map +1 -1
  182. package/dist/components/layout/sidebar/Sidebar.js +1 -1
  183. package/dist/components/layout/sidebar/Sidebar.js.map +1 -1
  184. package/dist/components/layout/sidebar/SidebarContainer.d.ts.map +1 -1
  185. package/dist/components/layout/sidebar/SidebarContainer.js.map +1 -1
  186. package/dist/components/layout/sidebar/SidebarMenu.js +1 -1
  187. package/dist/components/layout/sidebar/SidebarMenu.js.map +1 -1
  188. package/dist/components/layout/sidebar/SidebarUser.d.ts.map +1 -1
  189. package/dist/components/layout/sidebar/SidebarUser.js +4 -4
  190. package/dist/components/layout/sidebar/SidebarUser.js.map +1 -1
  191. package/dist/components/layout/topbar/Topbar.js +1 -1
  192. package/dist/components/layout/topbar/TopbarMenu.d.ts.map +1 -1
  193. package/dist/components/layout/topbar/TopbarMenu.js.map +1 -1
  194. package/dist/components/layout/topbar/TopbarUser.d.ts.map +1 -1
  195. package/dist/components/layout/topbar/TopbarUser.js.map +1 -1
  196. package/dist/helpers/createAppStructure.d.ts.map +1 -1
  197. package/dist/helpers/createAppStructure.js +17 -12
  198. package/dist/helpers/createAppStructure.js.map +1 -1
  199. package/dist/helpers/mergeStyles.d.ts.map +1 -1
  200. package/dist/helpers/mergeStyles.js +4 -1
  201. package/dist/helpers/mergeStyles.js.map +1 -1
  202. package/dist/helpers/splitSlots.d.ts.map +1 -1
  203. package/dist/helpers/splitSlots.js.map +1 -1
  204. package/dist/hooks/createControllableSignal.d.ts.map +1 -1
  205. package/dist/hooks/createControllableSignal.js.map +1 -1
  206. package/dist/hooks/createItemTemplate.d.ts +17 -0
  207. package/dist/hooks/createItemTemplate.d.ts.map +1 -0
  208. package/dist/hooks/createItemTemplate.js +40 -0
  209. package/dist/hooks/createItemTemplate.js.map +6 -0
  210. package/dist/hooks/createPointerDrag.d.ts +13 -0
  211. package/dist/hooks/createPointerDrag.d.ts.map +1 -0
  212. package/dist/hooks/createPointerDrag.js +15 -0
  213. package/dist/hooks/createPointerDrag.js.map +6 -0
  214. package/dist/hooks/createSelectionGroup.d.ts +70 -0
  215. package/dist/hooks/createSelectionGroup.d.ts.map +1 -0
  216. package/dist/hooks/createSelectionGroup.js +141 -0
  217. package/dist/hooks/createSelectionGroup.js.map +6 -0
  218. package/dist/hooks/useClipboardValueCopy.js +3 -1
  219. package/dist/hooks/useClipboardValueCopy.js.map +1 -1
  220. package/dist/hooks/useLocalStorage.d.ts +5 -3
  221. package/dist/hooks/useLocalStorage.d.ts.map +1 -1
  222. package/dist/hooks/useLocalStorage.js.map +1 -1
  223. package/dist/hooks/usePrint.d.ts.map +1 -1
  224. package/dist/hooks/usePrint.js +5 -3
  225. package/dist/hooks/usePrint.js.map +1 -1
  226. package/dist/hooks/{createPwaUpdate.d.ts → usePwaUpdate.d.ts} +2 -2
  227. package/dist/hooks/usePwaUpdate.d.ts.map +1 -0
  228. package/dist/hooks/{createPwaUpdate.js → usePwaUpdate.js} +3 -3
  229. package/dist/hooks/usePwaUpdate.js.map +6 -0
  230. package/dist/hooks/useRouterLink.d.ts.map +1 -1
  231. package/dist/hooks/useRouterLink.js.map +1 -1
  232. package/dist/hooks/useSyncConfig.d.ts +3 -3
  233. package/dist/hooks/useSyncConfig.d.ts.map +1 -1
  234. package/dist/hooks/useSyncConfig.js +6 -7
  235. package/dist/hooks/useSyncConfig.js.map +1 -1
  236. package/dist/index.d.ts +5 -6
  237. package/dist/index.d.ts.map +1 -1
  238. package/dist/index.js +6 -7
  239. package/dist/index.js.map +1 -1
  240. package/dist/providers/ConfigContext.d.ts +2 -2
  241. package/dist/providers/ConfigContext.d.ts.map +1 -1
  242. package/dist/providers/InitializeProvider.js +5 -5
  243. package/dist/providers/InitializeProvider.js.map +2 -2
  244. package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
  245. package/dist/providers/ServiceClientProvider.js.map +1 -1
  246. package/dist/providers/ThemeContext.d.ts.map +1 -1
  247. package/dist/providers/ThemeContext.js +2 -1
  248. package/dist/providers/ThemeContext.js.map +2 -2
  249. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts.map +1 -1
  250. package/dist/providers/shared-data/SharedDataChangeEvent.js +1 -3
  251. package/dist/providers/shared-data/SharedDataChangeEvent.js.map +1 -1
  252. package/dist/providers/shared-data/SharedDataContext.d.ts +1 -1
  253. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
  254. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
  255. package/dist/providers/shared-data/SharedDataProvider.js +6 -6
  256. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
  257. package/dist/styles/patterns.styles.d.ts +1 -0
  258. package/dist/styles/patterns.styles.d.ts.map +1 -1
  259. package/dist/styles/patterns.styles.js +12 -1
  260. package/dist/styles/patterns.styles.js.map +1 -1
  261. package/dist/styles/tokens.styles.d.ts +2 -1
  262. package/dist/styles/tokens.styles.d.ts.map +1 -1
  263. package/dist/styles/tokens.styles.js +1 -1
  264. package/dist/styles/tokens.styles.js.map +1 -1
  265. package/docs/data-components.md +34 -5
  266. package/docs/disclosure.md +28 -8
  267. package/docs/display.md +19 -2
  268. package/docs/feedback.md +35 -12
  269. package/docs/form-controls.md +289 -33
  270. package/docs/hooks.md +21 -9
  271. package/docs/layout.md +15 -3
  272. package/docs/providers.md +120 -8
  273. package/docs/styling.md +90 -0
  274. package/package.json +3 -3
  275. package/src/components/data/Pagination.tsx +26 -22
  276. package/src/components/data/Table.tsx +1 -1
  277. package/src/components/data/calendar/Calendar.tsx +19 -5
  278. package/src/components/data/kanban/Kanban.tsx +72 -35
  279. package/src/components/data/list/List.tsx +11 -4
  280. package/src/components/data/list/ListItem.tsx +12 -2
  281. package/src/components/data/permission-table/PermissionTable.tsx +32 -5
  282. package/src/components/data/sheet/DataSheet.styles.ts +24 -6
  283. package/src/components/data/sheet/DataSheet.tsx +215 -149
  284. package/src/components/data/sheet/DataSheetColumn.tsx +5 -1
  285. package/src/components/data/sheet/DataSheetConfigDialog.tsx +27 -5
  286. package/src/components/data/sheet/sheetUtils.ts +12 -3
  287. package/src/components/data/sheet/types.ts +2 -2
  288. package/src/components/disclosure/Collapse.tsx +14 -3
  289. package/src/components/disclosure/Dialog.tsx +122 -106
  290. package/src/components/disclosure/DialogContext.ts +8 -5
  291. package/src/components/disclosure/DialogProvider.tsx +19 -7
  292. package/src/components/disclosure/Dropdown.tsx +12 -2
  293. package/src/components/disclosure/Tabs.tsx +29 -5
  294. package/src/components/display/Alert.tsx +3 -4
  295. package/src/components/display/Card.tsx +1 -2
  296. package/src/components/display/Echarts.tsx +12 -5
  297. package/src/components/display/Link.tsx +22 -0
  298. package/src/components/feedback/Progress.tsx +9 -5
  299. package/src/components/feedback/{loading/LoadingContainer.tsx → busy/BusyContainer.tsx} +52 -19
  300. package/src/components/feedback/busy/BusyContext.ts +20 -0
  301. package/src/components/feedback/{loading/LoadingProvider.tsx → busy/BusyProvider.tsx} +10 -10
  302. package/src/components/feedback/notification/NotificationBanner.tsx +14 -3
  303. package/src/components/feedback/notification/NotificationBell.tsx +21 -15
  304. package/src/components/feedback/notification/NotificationContext.ts +4 -1
  305. package/src/components/feedback/notification/NotificationProvider.tsx +4 -1
  306. package/src/components/form-control/Button.tsx +8 -3
  307. package/src/components/form-control/DropdownTrigger.styles.ts +7 -1
  308. package/src/components/form-control/Invalid.tsx +114 -48
  309. package/src/components/form-control/ThemeToggle.tsx +9 -18
  310. package/src/components/form-control/checkbox/Checkbox.styles.ts +7 -10
  311. package/src/components/form-control/checkbox/Checkbox.tsx +39 -28
  312. package/src/components/form-control/checkbox/CheckboxGroup.tsx +18 -97
  313. package/src/components/form-control/checkbox/Radio.tsx +39 -28
  314. package/src/components/form-control/checkbox/RadioGroup.tsx +18 -92
  315. package/src/components/form-control/color-picker/ColorPicker.tsx +51 -18
  316. package/src/components/form-control/combobox/Combobox.tsx +53 -35
  317. package/src/components/form-control/editor/EditorToolbar.tsx +19 -19
  318. package/src/components/form-control/editor/RichTextEditor.tsx +22 -4
  319. package/src/components/form-control/field/DatePicker.tsx +99 -93
  320. package/src/components/form-control/field/DateTimePicker.tsx +115 -96
  321. package/src/components/form-control/field/Field.styles.ts +62 -3
  322. package/src/components/form-control/field/FieldPlaceholder.tsx +18 -0
  323. package/src/components/form-control/field/NumberInput.tsx +136 -84
  324. package/src/components/form-control/field/TextInput.tsx +135 -88
  325. package/src/components/form-control/field/Textarea.tsx +126 -99
  326. package/src/components/form-control/field/TimePicker.tsx +101 -71
  327. package/src/components/form-control/select/Select.tsx +75 -42
  328. package/src/components/form-control/select/SelectItem.tsx +3 -1
  329. package/src/components/form-control/state-preset/StatePreset.tsx +41 -22
  330. package/src/components/layout/FormGroup.tsx +11 -2
  331. package/src/components/layout/sidebar/Sidebar.tsx +3 -2
  332. package/src/components/layout/sidebar/SidebarContainer.tsx +8 -1
  333. package/src/components/layout/sidebar/SidebarMenu.tsx +8 -2
  334. package/src/components/layout/sidebar/SidebarUser.tsx +12 -7
  335. package/src/components/layout/topbar/Topbar.tsx +1 -1
  336. package/src/components/layout/topbar/TopbarMenu.tsx +27 -5
  337. package/src/components/layout/topbar/TopbarUser.tsx +5 -1
  338. package/src/helpers/createAppStructure.ts +29 -15
  339. package/src/helpers/mergeStyles.ts +6 -2
  340. package/src/helpers/splitSlots.ts +4 -1
  341. package/src/hooks/createControllableSignal.ts +2 -1
  342. package/src/hooks/createItemTemplate.tsx +42 -0
  343. package/src/hooks/createPointerDrag.ts +28 -0
  344. package/src/hooks/createSelectionGroup.tsx +235 -0
  345. package/src/hooks/useClipboardValueCopy.ts +5 -2
  346. package/src/hooks/useLocalStorage.ts +11 -5
  347. package/src/hooks/usePrint.ts +9 -4
  348. package/src/hooks/{createPwaUpdate.ts → usePwaUpdate.ts} +1 -1
  349. package/src/hooks/useRouterLink.ts +3 -1
  350. package/src/hooks/useSyncConfig.ts +9 -13
  351. package/src/index.ts +6 -7
  352. package/src/providers/ConfigContext.ts +2 -2
  353. package/src/providers/InitializeProvider.tsx +4 -4
  354. package/src/providers/ServiceClientProvider.tsx +14 -3
  355. package/src/providers/ThemeContext.tsx +12 -3
  356. package/src/providers/shared-data/SharedDataChangeEvent.ts +4 -3
  357. package/src/providers/shared-data/SharedDataContext.ts +1 -1
  358. package/src/providers/shared-data/SharedDataProvider.tsx +13 -8
  359. package/src/styles/patterns.styles.ts +13 -1
  360. package/src/styles/tokens.styles.ts +2 -1
  361. package/tailwind.config.ts +9 -0
  362. package/tailwind.css +1 -1
  363. package/dist/components/display/Card.css +0 -15
  364. package/dist/components/feedback/loading/LoadingContainer.d.ts +0 -12
  365. package/dist/components/feedback/loading/LoadingContainer.d.ts.map +0 -1
  366. package/dist/components/feedback/loading/LoadingContainer.js.map +0 -6
  367. package/dist/components/feedback/loading/LoadingContext.d.ts +0 -11
  368. package/dist/components/feedback/loading/LoadingContext.d.ts.map +0 -1
  369. package/dist/components/feedback/loading/LoadingContext.js +0 -14
  370. package/dist/components/feedback/loading/LoadingContext.js.map +0 -6
  371. package/dist/components/feedback/loading/LoadingProvider.d.ts +0 -7
  372. package/dist/components/feedback/loading/LoadingProvider.d.ts.map +0 -1
  373. package/dist/components/feedback/loading/LoadingProvider.js.map +0 -6
  374. package/dist/hooks/createPwaUpdate.d.ts.map +0 -1
  375. package/dist/hooks/createPwaUpdate.js.map +0 -6
  376. package/src/components/display/Card.css +0 -15
  377. package/src/components/feedback/loading/LoadingContext.ts +0 -20
  378. /package/dist/components/feedback/{loading/LoadingContainer.css → busy/BusyContainer.css} +0 -0
  379. /package/src/components/feedback/{loading/LoadingContainer.css → busy/BusyContainer.css} +0 -0
package/docs/providers.md CHANGED
@@ -2,34 +2,146 @@
2
2
 
3
3
  ## InitializeProvider
4
4
 
5
- Root provider that wraps the entire application. Automatically sets up all required providers: configuration context, theme (dark/light/system), notification system with banner, global error capturing (window.onerror, unhandledrejection), loading overlay, and programmatic dialog support.
5
+ Root provider that wraps the entire application. Automatically sets up all required providers: configuration context, theme (dark/light/system), notification system with banner, global error capturing (window.onerror, unhandledrejection), busy overlay, programmatic dialog support, and form control clipboard value copy.
6
6
 
7
- See [Getting Started](getting-started.md#provider-setup) for setup instructions and `AppConfig` options.
7
+ See the [Configuration](../README.md#configuration) section in the main README for setup instructions and `AppConfig` options.
8
8
 
9
9
  ---
10
10
 
11
11
  ## ServiceClientProvider
12
12
 
13
- WebSocket client provider for RPC communication with `@simplysm/service-server`. Wraps `ServiceClient` from `@simplysm/service-client`.
13
+ WebSocket client provider for RPC communication with `@simplysm/service-server`. Wraps `ServiceClient` from `@simplysm/service-client`. Provides `useServiceClient` hook to components.
14
+
15
+ `ServiceClientProvider` takes no props. After mounting, use `useServiceClient()` to connect, close, and access client instances by key.
14
16
 
15
17
  ```tsx
16
- import { ServiceClientProvider } from "@simplysm/solid";
18
+ import { ServiceClientProvider, useServiceClient } from "@simplysm/solid";
17
19
 
18
- <ServiceClientProvider url="ws://localhost:3000">
20
+ // Wrap your app
21
+ <ServiceClientProvider>
19
22
  <App />
20
23
  </ServiceClientProvider>
24
+
25
+ // In a component
26
+ function App() {
27
+ const client = useServiceClient();
28
+
29
+ onMount(async () => {
30
+ await client.connect("main", { host: "localhost", port: 3000, ssl: false });
31
+ });
32
+
33
+ onCleanup(async () => {
34
+ await client.close("main");
35
+ });
36
+
37
+ const handleCall = async () => {
38
+ const svc = client.get("main");
39
+ const result = await svc.call("MyService", "myMethod", [arg1, arg2]);
40
+ };
41
+ }
21
42
  ```
22
43
 
44
+ **useServiceClient API:**
45
+
46
+ | Method | Signature | Description |
47
+ |--------|-----------|-------------|
48
+ | `connect` | `(key: string, options?: Partial<ServiceConnectionConfig>) => Promise<void>` | Open WebSocket connection |
49
+ | `close` | `(key: string) => Promise<void>` | Close connection by key |
50
+ | `get` | `(key: string) => ServiceClient` | Get connected client by key (throws if not connected) |
51
+ | `isConnected` | `(key: string) => boolean` | Check connection state |
52
+
53
+ `ServiceConnectionConfig`: `{ host: string; port: number; ssl: boolean }`
54
+
55
+ Defaults for `host`, `port`, and `ssl` are derived from `window.location` when omitted.
56
+
23
57
  ---
24
58
 
25
59
  ## SharedDataProvider
26
60
 
27
- Shared data provider for managing server-side data subscriptions. Works with `ServiceClientProvider` to provide reactive shared data across components.
61
+ Shared data provider for managing server-side data subscriptions. Works with `ServiceClientProvider` to provide reactive shared data across components via `useSharedData`.
28
62
 
29
63
  ```tsx
30
- import { SharedDataProvider, SharedDataChangeEvent } from "@simplysm/solid";
64
+ import { SharedDataProvider, type SharedDataDefinition } from "@simplysm/solid";
65
+
66
+ interface MySharedData {
67
+ users: UserRecord;
68
+ products: ProductRecord;
69
+ }
31
70
 
32
- <SharedDataProvider>
71
+ const definitions: { [K in keyof MySharedData]: SharedDataDefinition<MySharedData[K]> } = {
72
+ users: {
73
+ serviceKey: "main",
74
+ fetch: async (changeKeys) => fetchUsers(changeKeys),
75
+ getKey: (item) => item.id,
76
+ orderBy: [(item) => item.name, "asc"],
77
+ },
78
+ products: {
79
+ serviceKey: "main",
80
+ fetch: async (changeKeys) => fetchProducts(changeKeys),
81
+ getKey: (item) => item.id,
82
+ orderBy: [(item) => item.name, "asc"],
83
+ },
84
+ };
85
+
86
+ <SharedDataProvider definitions={definitions}>
33
87
  <App />
34
88
  </SharedDataProvider>
35
89
  ```
90
+
91
+ **SharedDataProvider Props:**
92
+
93
+ | Prop | Type | Description |
94
+ |------|------|-------------|
95
+ | `definitions` | `{ [K in keyof TSharedData]: SharedDataDefinition<TSharedData[K]> }` | Map of data key to fetch definition |
96
+
97
+ **SharedDataDefinition type:**
98
+
99
+ ```typescript
100
+ interface SharedDataDefinition<TData> {
101
+ serviceKey: string; // Connection key (matches useServiceClient key)
102
+ fetch: (changeKeys?: Array<string | number>) => Promise<TData[]>; // Data fetch function
103
+ getKey: (item: TData) => string | number; // Primary key extractor
104
+ orderBy: [(item: TData) => unknown, "asc" | "desc"][]; // Sort order
105
+ filter?: unknown; // Optional filter for change events
106
+ }
107
+ ```
108
+
109
+ **useSharedData API:**
110
+
111
+ ```tsx
112
+ import { useSharedData } from "@simplysm/solid";
113
+
114
+ function MyComponent() {
115
+ const sharedData = useSharedData<MySharedData>();
116
+
117
+ const users = () => sharedData.users.items(); // Accessor<TData[]>
118
+ const user = () => sharedData.users.get(userId()); // TData | undefined
119
+
120
+ const handleUpdate = async () => {
121
+ await sharedData.users.emit([updatedUserId]); // trigger refetch for keys
122
+ };
123
+ }
124
+ ```
125
+
126
+ **SharedDataAccessor API:**
127
+
128
+ | Property/Method | Type | Description |
129
+ |-----------------|------|-------------|
130
+ | `items` | `Accessor<TData[]>` | Reactive item array |
131
+ | `get` | `(key: string \| number \| undefined) => TData \| undefined` | Get item by key |
132
+ | `emit` | `(changeKeys?: Array<string \| number>) => Promise<void>` | Emit change event to server (triggers refetch in all subscribers) |
133
+
134
+ **SharedDataValue extras:**
135
+
136
+ | Property/Method | Type | Description |
137
+ |-----------------|------|-------------|
138
+ | `wait` | `() => Promise<void>` | Wait until all initial fetches complete |
139
+ | `busy` | `Accessor<boolean>` | True while any fetch is in progress |
140
+
141
+ **SharedDataChangeEvent:**
142
+
143
+ `SharedDataChangeEvent` is the event definition used internally by `SharedDataProvider` to communicate data changes between server and clients. Export it if you need to emit changes from the server side.
144
+
145
+ ```typescript
146
+ import { SharedDataChangeEvent } from "@simplysm/solid";
147
+ ```
package/docs/styling.md CHANGED
@@ -22,9 +22,11 @@
22
22
  | `h-field` / `size-field` | Default field height (based on `py-1`) |
23
23
  | `h-field-sm` / `size-field-sm` | Small field height (based on `py-0.5`) |
24
24
  | `h-field-lg` / `size-field-lg` | Large field height (based on `py-2`) |
25
+ | `h-field-xl` / `size-field-xl` | Extra-large field height (based on `py-3`) |
25
26
  | `h-field-inset` / `size-field-inset` | Inset field height (excludes border) |
26
27
  | `h-field-inset-sm` / `size-field-inset-sm` | Small inset field height |
27
28
  | `h-field-inset-lg` / `size-field-inset-lg` | Large inset field height |
29
+ | `h-field-inset-xl` / `size-field-inset-xl` | Extra-large inset field height |
28
30
 
29
31
  ## z-index Layers
30
32
 
@@ -65,3 +67,91 @@ const baseClass = clsx(
65
67
 
66
68
  const className = twMerge(baseClass, props.class);
67
69
  ```
70
+
71
+ ## Exported Style Tokens
72
+
73
+ `@simplysm/solid` exports TypeScript style constants and type definitions for use when building custom components that integrate with the library's design system.
74
+
75
+ ### tokens.styles
76
+
77
+ ```typescript
78
+ import {
79
+ type ComponentSize, // "sm" | "lg" | "xl"
80
+ type SemanticTheme, // "primary" | "info" | "success" | "warning" | "danger" | "base"
81
+ borderDefault, // Tailwind classes for default border color
82
+ borderSubtle, // Tailwind classes for subtle border color
83
+ bgSurface, // Tailwind classes for surface background
84
+ textDefault, // Tailwind classes for default text color
85
+ textMuted, // Tailwind classes for muted text color
86
+ textPlaceholder, // Tailwind classes for placeholder text color
87
+ disabledOpacity, // Tailwind classes for disabled state opacity
88
+ paddingSm, // Tailwind classes for small padding (px-1.5 py-0.5)
89
+ paddingLg, // Tailwind classes for large padding (px-3 py-2)
90
+ paddingXl, // Tailwind classes for extra-large padding (px-4 py-3)
91
+ themeTokens, // Record<SemanticTheme, { solid, solidHover, light, text, hoverBg, border }>
92
+ } from "@simplysm/solid";
93
+ ```
94
+
95
+ ### patterns.styles
96
+
97
+ ```typescript
98
+ import {
99
+ iconButtonBase, // Base classes for icon-only buttons
100
+ insetFocusOutline, // Focus outline (focus-within) for inset fields
101
+ insetFocusOutlineSelf, // Focus outline (focus) for inset trigger elements
102
+ insetBase, // Base layout classes for inset mode
103
+ fieldSurface, // Field surface (background, border, focus ring)
104
+ inputBase, // Base classes for <input> elements
105
+ } from "@simplysm/solid";
106
+ ```
107
+
108
+ ### Field.styles
109
+
110
+ ```typescript
111
+ import {
112
+ type FieldSize, // "sm" | "lg" | "xl"
113
+ getFieldWrapperClass, // Utility to build field wrapper class string
114
+ getTextareaWrapperClass, // Utility to build textarea wrapper class string
115
+ fieldInputClass, // Base classes for field <input> element
116
+ fieldGapClasses, // Gap classes per size (with prefix icon)
117
+ } from "@simplysm/solid";
118
+ ```
119
+
120
+ ### Checkbox.styles
121
+
122
+ ```typescript
123
+ import {
124
+ type CheckboxSize, // "sm" | "lg" | "xl"
125
+ checkboxBaseClass, // Base wrapper classes
126
+ indicatorBaseClass, // Base indicator (box) classes
127
+ checkedClass, // Checked state classes (primary color)
128
+ checkboxSizeClasses, // Size variant classes
129
+ checkboxInsetClass, // Inset mode classes
130
+ checkboxInlineClass, // Inline display classes
131
+ checkboxDisabledClass, // Disabled state classes
132
+ } from "@simplysm/solid";
133
+ ```
134
+
135
+ ### DataSheet.styles
136
+
137
+ ```typescript
138
+ import {
139
+ dataSheetContainerClass, tableClass, thClass, thContentClass, tdClass,
140
+ summaryThClass, insetContainerClass, insetTableClass, defaultContainerClass,
141
+ sortableThClass, sortIconClass, toolbarClass, fixedClass, fixedLastClass,
142
+ resizerClass, resizeIndicatorClass, featureThClass, featureTdClass,
143
+ expandIndentGuideClass, expandIndentGuideLineClass, expandToggleClass,
144
+ reorderHandleClass, reorderIndicatorClass, configButtonClass,
145
+ // etc.
146
+ } from "@simplysm/solid";
147
+ ```
148
+
149
+ ### ListItem.styles
150
+
151
+ ```typescript
152
+ import {
153
+ listItemBaseClass, listItemSizeClasses, listItemSelectedClass,
154
+ listItemDisabledClass, listItemReadonlyClass, listItemIndentGuideClass,
155
+ listItemContentClass, getListItemSelectedIconClass,
156
+ } from "@simplysm/solid";
157
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/solid",
3
- "version": "13.0.28",
3
+ "version": "13.0.30",
4
4
  "description": "심플리즘 패키지 - SolidJS 라이브러리",
5
5
  "author": "김석래",
6
6
  "license": "Apache-2.0",
@@ -49,8 +49,8 @@
49
49
  "solid-tiptap": "^0.8.0",
50
50
  "tailwind-merge": "^3.4.1",
51
51
  "tailwindcss": "^3.4.19",
52
- "@simplysm/core-browser": "13.0.28",
53
- "@simplysm/core-common": "13.0.28"
52
+ "@simplysm/core-browser": "13.0.30",
53
+ "@simplysm/core-common": "13.0.30"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@solidjs/testing-library": "^0.8.10"
@@ -1,25 +1,29 @@
1
1
  import { type Component, For, type JSX, splitProps } from "solid-js";
2
2
  import clsx from "clsx";
3
3
  import { twMerge } from "tailwind-merge";
4
- import { IconChevronLeft, IconChevronRight, IconChevronsLeft, IconChevronsRight } from "@tabler/icons-solidjs";
4
+ import {
5
+ IconChevronLeft,
6
+ IconChevronRight,
7
+ IconChevronsLeft,
8
+ IconChevronsRight,
9
+ } from "@tabler/icons-solidjs";
5
10
  import { Button } from "../form-control/Button";
6
11
  import { Icon } from "../display/Icon";
7
-
8
- type PaginationSize = "sm" | "lg";
12
+ import { type ComponentSizeCompact } from "../../styles/tokens.styles";
9
13
 
10
14
  export interface PaginationProps extends JSX.HTMLAttributes<HTMLElement> {
11
- pageIndex: number;
12
- onPageIndexChange?: (pageIndex: number) => void;
15
+ page: number;
16
+ onPageChange?: (page: number) => void;
13
17
  totalPageCount: number;
14
18
  displayPageCount?: number;
15
- size?: PaginationSize;
19
+ size?: ComponentSizeCompact;
16
20
  }
17
21
 
18
22
  const baseClass = clsx("inline-flex items-center");
19
23
 
20
24
  const btnClass = clsx("border-none font-normal");
21
25
 
22
- const gapClasses: Record<PaginationSize | "default", string> = {
26
+ const gapClasses: Record<ComponentSizeCompact | "default", string> = {
23
27
  default: "gap-1",
24
28
  sm: "gap-0.5",
25
29
  lg: "gap-1.5",
@@ -28,8 +32,8 @@ const gapClasses: Record<PaginationSize | "default", string> = {
28
32
  export const Pagination: Component<PaginationProps> = (props) => {
29
33
  const [local, rest] = splitProps(props, [
30
34
  "class",
31
- "pageIndex",
32
- "onPageIndexChange",
35
+ "page",
36
+ "onPageChange",
33
37
  "totalPageCount",
34
38
  "displayPageCount",
35
39
  "size",
@@ -38,17 +42,17 @@ export const Pagination: Component<PaginationProps> = (props) => {
38
42
  const visibleCount = () => local.displayPageCount ?? 10;
39
43
 
40
44
  const pages = () => {
41
- const from = Math.floor(local.pageIndex / visibleCount()) * visibleCount();
42
- const to = Math.min(from + visibleCount(), local.totalPageCount);
45
+ const from = Math.floor((local.page - 1) / visibleCount()) * visibleCount() + 1;
46
+ const to = Math.min(from + visibleCount() - 1, local.totalPageCount);
43
47
  const result: number[] = [];
44
- for (let i = from; i < to; i++) {
48
+ for (let i = from; i <= to; i++) {
45
49
  result.push(i);
46
50
  }
47
51
  return result;
48
52
  };
49
53
 
50
- const hasPrev = () => (pages()[0] ?? 0) > 0;
51
- const hasNext = () => (pages()[pages().length - 1] ?? 0) < local.totalPageCount - 1;
54
+ const hasPrev = () => (pages()[0] ?? 1) > 1;
55
+ const hasNext = () => (pages()[pages().length - 1] ?? 1) < local.totalPageCount;
52
56
 
53
57
  const getClassName = () => twMerge(baseClass, gapClasses[local.size ?? "default"], local.class);
54
58
 
@@ -60,7 +64,7 @@ export const Pagination: Component<PaginationProps> = (props) => {
60
64
  variant="ghost"
61
65
  size={local.size}
62
66
  disabled={!hasPrev()}
63
- onClick={() => local.onPageIndexChange?.(0)}
67
+ onClick={() => local.onPageChange?.(1)}
64
68
  >
65
69
  <Icon icon={IconChevronsLeft} size="1em" />
66
70
  </Button>
@@ -70,7 +74,7 @@ export const Pagination: Component<PaginationProps> = (props) => {
70
74
  variant="ghost"
71
75
  size={local.size}
72
76
  disabled={!hasPrev()}
73
- onClick={() => local.onPageIndexChange?.((pages()[0] ?? 1) - 1)}
77
+ onClick={() => local.onPageChange?.((pages()[0] ?? 2) - 1)}
74
78
  >
75
79
  <Icon icon={IconChevronLeft} size="1em" />
76
80
  </Button>
@@ -78,12 +82,12 @@ export const Pagination: Component<PaginationProps> = (props) => {
78
82
  {(p) => (
79
83
  <Button
80
84
  class={btnClass}
81
- theme={p === local.pageIndex ? "primary" : "base"}
82
- variant={p === local.pageIndex ? "solid" : "ghost"}
85
+ theme={p === local.page ? "primary" : "base"}
86
+ variant={p === local.page ? "solid" : "ghost"}
83
87
  size={local.size}
84
- onClick={() => local.onPageIndexChange?.(p)}
88
+ onClick={() => local.onPageChange?.(p)}
85
89
  >
86
- {p + 1}
90
+ {p}
87
91
  </Button>
88
92
  )}
89
93
  </For>
@@ -93,7 +97,7 @@ export const Pagination: Component<PaginationProps> = (props) => {
93
97
  variant="ghost"
94
98
  size={local.size}
95
99
  disabled={!hasNext()}
96
- onClick={() => local.onPageIndexChange?.((pages()[pages().length - 1] ?? 0) + 1)}
100
+ onClick={() => local.onPageChange?.((pages()[pages().length - 1] ?? 0) + 1)}
97
101
  >
98
102
  <Icon icon={IconChevronRight} size="1em" />
99
103
  </Button>
@@ -103,7 +107,7 @@ export const Pagination: Component<PaginationProps> = (props) => {
103
107
  variant="ghost"
104
108
  size={local.size}
105
109
  disabled={!hasNext()}
106
- onClick={() => local.onPageIndexChange?.(local.totalPageCount - 1)}
110
+ onClick={() => local.onPageChange?.(local.totalPageCount)}
107
111
  >
108
112
  <Icon icon={IconChevronsRight} size="1em" />
109
113
  </Button>
@@ -15,7 +15,7 @@ const baseClass = clsx(
15
15
  // th
16
16
  "[&_th]:border-l [&_th]:border-t [&_th]:border-base-300 [&_th]:dark:border-base-600",
17
17
  "[&_th]:px-2 [&_th]:py-1",
18
- "[&_th]:bg-base-100 [&_th]:text-left [&_th]:font-semibold",
18
+ "[&_th]:bg-base-100 [&_th]:text-left [&_th]:font-bold",
19
19
  "[&_th]:dark:bg-base-800",
20
20
  // td
21
21
  "[&_td]:border-l [&_td]:border-t [&_td]:border-base-300 [&_td]:dark:border-base-600",
@@ -4,7 +4,10 @@ import clsx from "clsx";
4
4
  import { twMerge } from "tailwind-merge";
5
5
  import { createControllableSignal } from "../../../hooks/createControllableSignal";
6
6
 
7
- export interface CalendarProps<TValue> extends Omit<JSX.HTMLAttributes<HTMLTableElement>, "children"> {
7
+ export interface CalendarProps<TValue> extends Omit<
8
+ JSX.HTMLAttributes<HTMLTableElement>,
9
+ "children"
10
+ > {
8
11
  items: TValue[];
9
12
  getItemDate: (item: TValue, index: number) => DateOnly;
10
13
  renderItem: (item: TValue, index: number) => JSX.Element;
@@ -25,7 +28,7 @@ const baseClass = clsx(
25
28
  // th
26
29
  "[&_th]:border-l [&_th]:border-t [&_th]:border-base-300 [&_th]:dark:border-base-600",
27
30
  "[&_th]:px-2 [&_th]:py-1",
28
- "[&_th]:bg-base-100 [&_th]:text-center [&_th]:text-sm [&_th]:font-semibold",
31
+ "[&_th]:bg-base-100 [&_th]:text-center [&_th]:text-sm [&_th]:font-bold",
29
32
  "[&_th]:dark:bg-base-800",
30
33
  // td
31
34
  "[&_td]:border-l [&_td]:border-t [&_td]:border-base-300 [&_td]:dark:border-base-600",
@@ -116,14 +119,25 @@ function CalendarBase<TValue>(props: CalendarProps<TValue>) {
116
119
  <tr>
117
120
  <For each={row}>
118
121
  {(cell) => (
119
- <td class={twMerge(notCurrentClass, cell.date.month !== yearMonth().month && "not-current")}>
122
+ <td
123
+ class={twMerge(
124
+ notCurrentClass,
125
+ cell.date.month !== yearMonth().month && "not-current",
126
+ )}
127
+ >
120
128
  <div
121
- class={cell.date.month !== yearMonth().month ? twMerge(dayClass, notCurrentDayClass) : dayClass}
129
+ class={
130
+ cell.date.month !== yearMonth().month
131
+ ? twMerge(dayClass, notCurrentDayClass)
132
+ : dayClass
133
+ }
122
134
  >
123
135
  {cell.date.day}
124
136
  </div>
125
137
  <div class={contentClass}>
126
- <For each={cell.items}>{(entry) => local.renderItem(entry.item, entry.index)}</For>
138
+ <For each={cell.items}>
139
+ {(entry) => local.renderItem(entry.item, entry.index)}
140
+ </For>
127
141
  </div>
128
142
  </td>
129
143
  )}