@simplysm/solid 13.0.69 → 13.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. package/README.md +168 -195
  2. package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
  3. package/dist/components/data/calendar/Calendar.js +15 -2
  4. package/dist/components/data/calendar/Calendar.js.map +2 -2
  5. package/dist/components/data/kanban/KanbanContext.js +2 -2
  6. package/dist/components/data/kanban/KanbanContext.js.map +1 -1
  7. package/dist/components/data/list/List.d.ts +8 -8
  8. package/dist/components/data/list/ListContext.d.ts +1 -1
  9. package/dist/components/data/list/ListItem.d.ts +15 -15
  10. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
  11. package/dist/components/data/sheet/DataSheet.js +6 -4
  12. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  13. package/dist/components/data/sheet/DataSheetConfigDialog.js +8 -8
  14. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +1 -1
  15. package/dist/components/data/sheet/types.d.ts +4 -4
  16. package/dist/components/data/sheet/types.d.ts.map +1 -1
  17. package/dist/components/disclosure/Collapse.d.ts +4 -4
  18. package/dist/components/disclosure/Dialog.d.ts +24 -24
  19. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  20. package/dist/components/disclosure/Dialog.js +7 -2
  21. package/dist/components/disclosure/Dialog.js.map +2 -2
  22. package/dist/components/disclosure/DialogContext.d.ts +25 -25
  23. package/dist/components/disclosure/DialogContext.d.ts.map +1 -1
  24. package/dist/components/disclosure/DialogContext.js +1 -1
  25. package/dist/components/disclosure/DialogContext.js.map +1 -1
  26. package/dist/components/disclosure/DialogInstanceContext.d.ts +7 -7
  27. package/dist/components/disclosure/DialogInstanceContext.d.ts.map +1 -1
  28. package/dist/components/disclosure/DialogProvider.d.ts +3 -3
  29. package/dist/components/disclosure/Dropdown.d.ts +26 -24
  30. package/dist/components/disclosure/Dropdown.d.ts.map +1 -1
  31. package/dist/components/disclosure/Dropdown.js +24 -8
  32. package/dist/components/disclosure/Dropdown.js.map +2 -2
  33. package/dist/components/disclosure/Tabs.js +1 -1
  34. package/dist/components/disclosure/Tabs.js.map +1 -1
  35. package/dist/components/disclosure/dialogZIndex.d.ts +9 -7
  36. package/dist/components/disclosure/dialogZIndex.d.ts.map +1 -1
  37. package/dist/components/disclosure/dialogZIndex.js +4 -0
  38. package/dist/components/disclosure/dialogZIndex.js.map +1 -1
  39. package/dist/components/features/crud-detail/CrudDetail.d.ts.map +1 -1
  40. package/dist/components/features/crud-detail/CrudDetail.js +34 -22
  41. package/dist/components/features/crud-detail/CrudDetail.js.map +2 -2
  42. package/dist/components/features/crud-sheet/CrudSheet.d.ts.map +1 -1
  43. package/dist/components/features/crud-sheet/CrudSheet.js +48 -33
  44. package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
  45. package/dist/components/features/crudRegistry.d.ts +16 -0
  46. package/dist/components/features/crudRegistry.d.ts.map +1 -0
  47. package/dist/components/features/crudRegistry.js +37 -0
  48. package/dist/components/features/crudRegistry.js.map +6 -0
  49. package/dist/components/features/data-select-button/DataSelectButton.d.ts +14 -14
  50. package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
  51. package/dist/components/features/data-select-button/DataSelectButton.js +27 -9
  52. package/dist/components/features/data-select-button/DataSelectButton.js.map +2 -2
  53. package/dist/components/features/permission-table/PermissionTable.d.ts +3 -3
  54. package/dist/components/features/permission-table/PermissionTable.d.ts.map +1 -1
  55. package/dist/components/features/permission-table/PermissionTable.js +74 -85
  56. package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
  57. package/dist/components/features/shared-data/SharedDataSelect.d.ts +12 -12
  58. package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
  59. package/dist/components/features/shared-data/SharedDataSelect.js +10 -6
  60. package/dist/components/features/shared-data/SharedDataSelect.js.map +2 -2
  61. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +10 -10
  62. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
  63. package/dist/components/features/shared-data/SharedDataSelectList.d.ts +23 -15
  64. package/dist/components/features/shared-data/SharedDataSelectList.d.ts.map +1 -1
  65. package/dist/components/features/shared-data/SharedDataSelectList.js +191 -65
  66. package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
  67. package/dist/components/features/shared-data/SharedDataSelectListContext.d.ts +15 -0
  68. package/dist/components/features/shared-data/SharedDataSelectListContext.d.ts.map +1 -0
  69. package/dist/components/features/shared-data/SharedDataSelectListContext.js +27 -0
  70. package/dist/components/features/shared-data/SharedDataSelectListContext.js.map +6 -0
  71. package/dist/components/feedback/Progress.d.ts +1 -1
  72. package/dist/components/feedback/Progress.d.ts.map +1 -1
  73. package/dist/components/feedback/busy/BusyContainer.d.ts +2 -2
  74. package/dist/components/feedback/busy/BusyContainer.d.ts.map +1 -1
  75. package/dist/components/feedback/busy/BusyContext.d.ts +11 -11
  76. package/dist/components/feedback/busy/BusyContext.d.ts.map +1 -1
  77. package/dist/components/feedback/busy/BusyContext.js +1 -1
  78. package/dist/components/feedback/busy/BusyContext.js.map +1 -1
  79. package/dist/components/feedback/busy/BusyProvider.d.ts +6 -6
  80. package/dist/components/feedback/busy/BusyProvider.d.ts.map +1 -1
  81. package/dist/components/feedback/notification/NotificationBanner.d.ts.map +1 -1
  82. package/dist/components/feedback/notification/NotificationBanner.js +7 -3
  83. package/dist/components/feedback/notification/NotificationBanner.js.map +2 -2
  84. package/dist/components/feedback/notification/NotificationBell.js +2 -2
  85. package/dist/components/feedback/notification/NotificationBell.js.map +1 -1
  86. package/dist/components/feedback/notification/NotificationContext.d.ts +22 -22
  87. package/dist/components/feedback/notification/NotificationContext.d.ts.map +1 -1
  88. package/dist/components/feedback/notification/NotificationContext.js +1 -1
  89. package/dist/components/feedback/notification/NotificationContext.js.map +1 -1
  90. package/dist/components/feedback/notification/NotificationProvider.d.ts +5 -5
  91. package/dist/components/feedback/notification/NotificationProvider.js +1 -1
  92. package/dist/components/feedback/notification/NotificationProvider.js.map +1 -1
  93. package/dist/components/feedback/print/PrintContext.js +1 -1
  94. package/dist/components/feedback/print/PrintContext.js.map +1 -1
  95. package/dist/components/form-control/DropdownTrigger.styles.d.ts +1 -1
  96. package/dist/components/form-control/DropdownTrigger.styles.d.ts.map +1 -1
  97. package/dist/components/form-control/ThemeToggle.d.ts +7 -7
  98. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
  99. package/dist/components/form-control/ThemeToggle.js +3 -3
  100. package/dist/components/form-control/checkbox/Checkbox.js +1 -1
  101. package/dist/components/form-control/checkbox/CheckboxGroup.js +1 -1
  102. package/dist/components/form-control/checkbox/Radio.js +1 -1
  103. package/dist/components/form-control/checkbox/RadioGroup.js +1 -1
  104. package/dist/components/form-control/color-picker/ColorPicker.d.ts +12 -12
  105. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  106. package/dist/components/form-control/color-picker/ColorPicker.js +2 -2
  107. package/dist/components/form-control/combobox/Combobox.d.ts +22 -22
  108. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  109. package/dist/components/form-control/combobox/Combobox.js +2 -2
  110. package/dist/components/form-control/combobox/ComboboxContext.d.ts +4 -4
  111. package/dist/components/form-control/combobox/ComboboxContext.d.ts.map +1 -1
  112. package/dist/components/form-control/combobox/ComboboxContext.js +1 -1
  113. package/dist/components/form-control/combobox/ComboboxContext.js.map +1 -1
  114. package/dist/components/form-control/combobox/ComboboxItem.d.ts +3 -3
  115. package/dist/components/form-control/combobox/ComboboxItem.d.ts.map +1 -1
  116. package/dist/components/form-control/date-range-picker/DateRangePicker.d.ts +14 -14
  117. package/dist/components/form-control/date-range-picker/DateRangePicker.d.ts.map +1 -1
  118. package/dist/components/form-control/date-range-picker/DateRangePicker.js +20 -9
  119. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
  120. package/dist/components/form-control/editor/EditorToolbar.d.ts.map +1 -1
  121. package/dist/components/form-control/editor/EditorToolbar.js +65 -20
  122. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  123. package/dist/components/form-control/editor/RichTextEditor.d.ts +6 -6
  124. package/dist/components/form-control/editor/RichTextEditor.d.ts.map +1 -1
  125. package/dist/components/form-control/editor/RichTextEditor.js +1 -1
  126. package/dist/components/form-control/editor/editor.css +5 -5
  127. package/dist/components/form-control/field/DatePicker.d.ts +22 -22
  128. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  129. package/dist/components/form-control/field/DatePicker.js +4 -4
  130. package/dist/components/form-control/field/DatePicker.js.map +1 -1
  131. package/dist/components/form-control/field/DateTimePicker.d.ts +21 -21
  132. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  133. package/dist/components/form-control/field/DateTimePicker.js +4 -4
  134. package/dist/components/form-control/field/DateTimePicker.js.map +1 -1
  135. package/dist/components/form-control/field/FieldPlaceholder.d.ts +1 -1
  136. package/dist/components/form-control/field/FieldPlaceholder.d.ts.map +1 -1
  137. package/dist/components/form-control/field/NumberInput.d.ts +23 -23
  138. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  139. package/dist/components/form-control/field/NumberInput.js +4 -4
  140. package/dist/components/form-control/field/NumberInput.js.map +1 -1
  141. package/dist/components/form-control/field/TextInput.d.ts +25 -25
  142. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  143. package/dist/components/form-control/field/TextInput.js +5 -5
  144. package/dist/components/form-control/field/TextInput.js.map +1 -1
  145. package/dist/components/form-control/field/Textarea.d.ts +19 -19
  146. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  147. package/dist/components/form-control/field/Textarea.js +4 -4
  148. package/dist/components/form-control/field/Textarea.js.map +1 -1
  149. package/dist/components/form-control/field/TimePicker.d.ts +20 -20
  150. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  151. package/dist/components/form-control/field/TimePicker.js +4 -4
  152. package/dist/components/form-control/field/TimePicker.js.map +1 -1
  153. package/dist/components/form-control/numpad/Numpad.d.ts +11 -11
  154. package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
  155. package/dist/components/form-control/select/Select.d.ts +26 -26
  156. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  157. package/dist/components/form-control/select/Select.js +34 -23
  158. package/dist/components/form-control/select/Select.js.map +2 -2
  159. package/dist/components/form-control/select/SelectContext.d.ts +7 -7
  160. package/dist/components/form-control/select/SelectContext.d.ts.map +1 -1
  161. package/dist/components/form-control/select/SelectContext.js +1 -1
  162. package/dist/components/form-control/select/SelectContext.js.map +1 -1
  163. package/dist/components/form-control/select/SelectItem.d.ts +4 -4
  164. package/dist/components/form-control/select/SelectItem.d.ts.map +1 -1
  165. package/dist/components/form-control/state-preset/StatePreset.js +8 -8
  166. package/dist/components/form-control/state-preset/StatePreset.js.map +1 -1
  167. package/dist/components/layout/FormTable.js +4 -4
  168. package/dist/components/layout/sidebar/Sidebar.d.ts +5 -5
  169. package/dist/components/layout/sidebar/SidebarContainer.d.ts +11 -11
  170. package/dist/components/layout/sidebar/SidebarContainer.d.ts.map +1 -1
  171. package/dist/components/layout/sidebar/SidebarContainer.js +6 -1
  172. package/dist/components/layout/sidebar/SidebarContainer.js.map +2 -2
  173. package/dist/components/layout/sidebar/SidebarContext.d.ts +7 -7
  174. package/dist/components/layout/sidebar/SidebarContext.js +1 -1
  175. package/dist/components/layout/sidebar/SidebarContext.js.map +1 -1
  176. package/dist/components/layout/sidebar/SidebarMenu.d.ts +11 -11
  177. package/dist/components/layout/sidebar/SidebarUser.d.ts +14 -14
  178. package/dist/components/layout/topbar/Topbar.d.ts +6 -6
  179. package/dist/components/layout/topbar/Topbar.d.ts.map +1 -1
  180. package/dist/components/layout/topbar/Topbar.js +11 -6
  181. package/dist/components/layout/topbar/Topbar.js.map +2 -2
  182. package/dist/components/layout/topbar/TopbarContainer.d.ts +6 -6
  183. package/dist/components/layout/topbar/TopbarContext.js +2 -2
  184. package/dist/components/layout/topbar/TopbarContext.js.map +1 -1
  185. package/dist/components/layout/topbar/TopbarMenu.d.ts +11 -11
  186. package/dist/components/layout/topbar/TopbarMenu.d.ts.map +1 -1
  187. package/dist/components/layout/topbar/TopbarMenu.js +5 -1
  188. package/dist/components/layout/topbar/TopbarMenu.js.map +2 -2
  189. package/dist/components/layout/topbar/TopbarUser.d.ts +9 -9
  190. package/dist/directives/ripple.d.ts +5 -5
  191. package/dist/helpers/createAppStructure.d.ts.map +1 -1
  192. package/dist/helpers/createAppStructure.js +7 -3
  193. package/dist/helpers/createAppStructure.js.map +1 -1
  194. package/dist/helpers/createHmrSafeContext.d.ts +3 -0
  195. package/dist/helpers/createHmrSafeContext.d.ts.map +1 -0
  196. package/dist/helpers/createHmrSafeContext.js +10 -0
  197. package/dist/helpers/createHmrSafeContext.js.map +6 -0
  198. package/dist/helpers/createSlotComponent.d.ts +3 -3
  199. package/dist/helpers/mergeStyles.d.ts +8 -8
  200. package/dist/hooks/createControllableSignal.d.ts +10 -10
  201. package/dist/hooks/createControllableStore.d.ts +6 -6
  202. package/dist/hooks/createIMEHandler.d.ts +7 -7
  203. package/dist/hooks/createMountTransition.d.ts +4 -4
  204. package/dist/hooks/createSelectionGroup.d.ts.map +1 -1
  205. package/dist/hooks/createSelectionGroup.js +4 -3
  206. package/dist/hooks/createSelectionGroup.js.map +2 -2
  207. package/dist/hooks/createSlotSignal.d.ts +2 -2
  208. package/dist/hooks/useLocalStorage.d.ts +11 -11
  209. package/dist/hooks/useLogger.d.ts +1 -1
  210. package/dist/hooks/useLogger.d.ts.map +1 -1
  211. package/dist/hooks/useLogger.js +1 -1
  212. package/dist/hooks/useLogger.js.map +1 -1
  213. package/dist/hooks/useRouterLink.d.ts +10 -10
  214. package/dist/hooks/useRouterLink.d.ts.map +1 -1
  215. package/dist/index.d.ts +2 -1
  216. package/dist/index.d.ts.map +1 -1
  217. package/dist/index.js +2 -1
  218. package/dist/index.js.map +1 -1
  219. package/dist/providers/ClipboardProvider.d.ts +5 -5
  220. package/dist/providers/ConfigContext.d.ts +6 -6
  221. package/dist/providers/ConfigContext.js +2 -2
  222. package/dist/providers/ConfigContext.js.map +1 -1
  223. package/dist/providers/ErrorLoggerProvider.d.ts +3 -3
  224. package/dist/providers/LoggerContext.d.ts +13 -13
  225. package/dist/providers/PwaUpdateProvider.d.ts +4 -4
  226. package/dist/providers/PwaUpdateProvider.js +2 -2
  227. package/dist/providers/PwaUpdateProvider.js.map +1 -1
  228. package/dist/providers/ServiceClientContext.d.ts +8 -8
  229. package/dist/providers/ServiceClientContext.d.ts.map +1 -1
  230. package/dist/providers/ServiceClientContext.js +1 -1
  231. package/dist/providers/ServiceClientContext.js.map +1 -1
  232. package/dist/providers/ServiceClientProvider.d.ts +6 -6
  233. package/dist/providers/ServiceClientProvider.js +7 -7
  234. package/dist/providers/ServiceClientProvider.js.map +1 -1
  235. package/dist/providers/SyncStorageContext.d.ts +14 -14
  236. package/dist/providers/SystemProvider.d.ts.map +1 -1
  237. package/dist/providers/SystemProvider.js +21 -16
  238. package/dist/providers/SystemProvider.js.map +2 -2
  239. package/dist/providers/ThemeContext.d.ts +20 -20
  240. package/dist/providers/ThemeContext.d.ts.map +1 -1
  241. package/dist/providers/ThemeContext.js +1 -1
  242. package/dist/providers/ThemeContext.js.map +1 -1
  243. package/dist/providers/i18n/I18nContext.d.ts +44 -0
  244. package/dist/providers/i18n/I18nContext.d.ts.map +1 -0
  245. package/dist/providers/i18n/I18nContext.js +73 -0
  246. package/dist/providers/i18n/I18nContext.js.map +6 -0
  247. package/dist/providers/i18n/I18nContext.types.d.ts +28 -0
  248. package/dist/providers/i18n/I18nContext.types.d.ts.map +1 -0
  249. package/dist/providers/i18n/I18nContext.types.js +1 -0
  250. package/dist/providers/i18n/I18nContext.types.js.map +6 -0
  251. package/dist/providers/i18n/i18nUtils.d.ts +18 -0
  252. package/dist/providers/i18n/i18nUtils.d.ts.map +1 -0
  253. package/dist/providers/i18n/i18nUtils.js +25 -0
  254. package/dist/providers/i18n/i18nUtils.js.map +6 -0
  255. package/dist/providers/i18n/locales/en.d.ts +163 -0
  256. package/dist/providers/i18n/locales/en.d.ts.map +1 -0
  257. package/dist/providers/i18n/locales/en.js +165 -0
  258. package/dist/providers/i18n/locales/en.js.map +6 -0
  259. package/dist/providers/i18n/locales/ko.d.ts +163 -0
  260. package/dist/providers/i18n/locales/ko.d.ts.map +1 -0
  261. package/dist/providers/i18n/locales/ko.js +165 -0
  262. package/dist/providers/i18n/locales/ko.js.map +6 -0
  263. package/dist/providers/shared-data/SharedDataChangeEvent.d.ts +4 -4
  264. package/dist/providers/shared-data/SharedDataContext.d.ts +28 -28
  265. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
  266. package/dist/providers/shared-data/SharedDataContext.js +1 -1
  267. package/dist/providers/shared-data/SharedDataContext.js.map +1 -1
  268. package/dist/providers/shared-data/SharedDataProvider.d.ts +9 -9
  269. package/dist/providers/shared-data/SharedDataProvider.js +4 -4
  270. package/dist/providers/shared-data/SharedDataProvider.js.map +1 -1
  271. package/package.json +9 -8
  272. package/src/components/data/calendar/Calendar.tsx +10 -4
  273. package/src/components/data/kanban/Kanban.tsx +14 -14
  274. package/src/components/data/kanban/KanbanContext.ts +3 -3
  275. package/src/components/data/list/List.tsx +10 -10
  276. package/src/components/data/list/ListContext.ts +1 -1
  277. package/src/components/data/list/ListItem.styles.ts +8 -8
  278. package/src/components/data/list/ListItem.tsx +15 -15
  279. package/src/components/data/sheet/DataSheet.styles.ts +22 -22
  280. package/src/components/data/sheet/DataSheet.tsx +52 -48
  281. package/src/components/data/sheet/DataSheetColumn.tsx +1 -1
  282. package/src/components/data/sheet/DataSheetConfigDialog.tsx +9 -9
  283. package/src/components/data/sheet/sheetUtils.ts +7 -7
  284. package/src/components/data/sheet/types.ts +16 -16
  285. package/src/components/disclosure/Collapse.tsx +11 -11
  286. package/src/components/disclosure/Dialog.tsx +60 -57
  287. package/src/components/disclosure/DialogContext.ts +26 -26
  288. package/src/components/disclosure/DialogInstanceContext.ts +7 -7
  289. package/src/components/disclosure/DialogProvider.tsx +5 -5
  290. package/src/components/disclosure/Dropdown.tsx +89 -75
  291. package/src/components/disclosure/Tabs.tsx +1 -1
  292. package/src/components/disclosure/dialogZIndex.ts +16 -11
  293. package/src/components/display/Echarts.tsx +4 -4
  294. package/src/components/features/address/AddressSearch.tsx +2 -2
  295. package/src/components/features/crud-detail/CrudDetail.tsx +34 -21
  296. package/src/components/features/crud-detail/CrudDetailAfter.tsx +1 -1
  297. package/src/components/features/crud-detail/CrudDetailBefore.tsx +1 -1
  298. package/src/components/features/crud-detail/CrudDetailTools.tsx +1 -1
  299. package/src/components/features/crud-sheet/CrudSheet.tsx +52 -40
  300. package/src/components/features/crud-sheet/CrudSheetColumn.tsx +1 -1
  301. package/src/components/features/crud-sheet/CrudSheetFilter.tsx +1 -1
  302. package/src/components/features/crud-sheet/CrudSheetHeader.tsx +1 -1
  303. package/src/components/features/crud-sheet/CrudSheetTools.tsx +1 -1
  304. package/src/components/features/crudRegistry.ts +60 -0
  305. package/src/components/features/data-select-button/DataSelectButton.tsx +34 -32
  306. package/src/components/features/permission-table/PermissionTable.tsx +70 -64
  307. package/src/components/features/shared-data/SharedDataSelect.tsx +24 -22
  308. package/src/components/features/shared-data/SharedDataSelectButton.tsx +10 -10
  309. package/src/components/features/shared-data/SharedDataSelectList.tsx +231 -59
  310. package/src/components/features/shared-data/SharedDataSelectListContext.ts +39 -0
  311. package/src/components/feedback/Progress.tsx +1 -1
  312. package/src/components/feedback/busy/BusyContainer.tsx +6 -6
  313. package/src/components/feedback/busy/BusyContext.ts +12 -12
  314. package/src/components/feedback/busy/BusyProvider.tsx +6 -6
  315. package/src/components/feedback/notification/NotificationBanner.tsx +3 -1
  316. package/src/components/feedback/notification/NotificationBell.tsx +4 -4
  317. package/src/components/feedback/notification/NotificationContext.ts +28 -28
  318. package/src/components/feedback/notification/NotificationProvider.tsx +9 -9
  319. package/src/components/feedback/print/PrintContext.ts +1 -1
  320. package/src/components/form-control/Button.tsx +1 -1
  321. package/src/components/form-control/DropdownTrigger.styles.ts +1 -1
  322. package/src/components/form-control/Invalid.tsx +5 -5
  323. package/src/components/form-control/ThemeToggle.tsx +10 -10
  324. package/src/components/form-control/checkbox/Checkbox.styles.ts +8 -8
  325. package/src/components/form-control/checkbox/Checkbox.tsx +2 -2
  326. package/src/components/form-control/checkbox/CheckboxGroup.tsx +1 -1
  327. package/src/components/form-control/checkbox/Radio.tsx +2 -2
  328. package/src/components/form-control/checkbox/RadioGroup.tsx +1 -1
  329. package/src/components/form-control/color-picker/ColorPicker.tsx +17 -17
  330. package/src/components/form-control/combobox/Combobox.tsx +55 -55
  331. package/src/components/form-control/combobox/ComboboxContext.ts +5 -5
  332. package/src/components/form-control/combobox/ComboboxItem.tsx +3 -3
  333. package/src/components/form-control/date-range-picker/DateRangePicker.tsx +40 -26
  334. package/src/components/form-control/editor/EditorToolbar.tsx +52 -50
  335. package/src/components/form-control/editor/RichTextEditor.tsx +16 -16
  336. package/src/components/form-control/editor/editor.css +5 -5
  337. package/src/components/form-control/field/DatePicker.tsx +39 -39
  338. package/src/components/form-control/field/DateTimePicker.tsx +38 -38
  339. package/src/components/form-control/field/Field.styles.ts +11 -11
  340. package/src/components/form-control/field/FieldPlaceholder.tsx +1 -1
  341. package/src/components/form-control/field/NumberInput.tsx +63 -63
  342. package/src/components/form-control/field/TextInput.tsx +48 -48
  343. package/src/components/form-control/field/Textarea.tsx +32 -32
  344. package/src/components/form-control/field/TimePicker.tsx +37 -37
  345. package/src/components/form-control/numpad/Numpad.tsx +26 -26
  346. package/src/components/form-control/select/Select.tsx +82 -86
  347. package/src/components/form-control/select/SelectContext.ts +8 -8
  348. package/src/components/form-control/select/SelectItem.tsx +5 -5
  349. package/src/components/form-control/state-preset/StatePreset.tsx +13 -13
  350. package/src/components/layout/FormTable.tsx +4 -4
  351. package/src/components/layout/sidebar/Sidebar.tsx +8 -8
  352. package/src/components/layout/sidebar/SidebarContainer.tsx +19 -17
  353. package/src/components/layout/sidebar/SidebarContext.ts +8 -8
  354. package/src/components/layout/sidebar/SidebarMenu.tsx +19 -19
  355. package/src/components/layout/sidebar/SidebarUser.tsx +14 -14
  356. package/src/components/layout/topbar/Topbar.tsx +15 -13
  357. package/src/components/layout/topbar/TopbarContainer.tsx +6 -6
  358. package/src/components/layout/topbar/TopbarContext.ts +2 -2
  359. package/src/components/layout/topbar/TopbarMenu.tsx +18 -16
  360. package/src/components/layout/topbar/TopbarUser.tsx +9 -9
  361. package/src/directives/ripple.ts +8 -8
  362. package/src/helpers/createAppStructure.ts +15 -8
  363. package/src/helpers/createHmrSafeContext.ts +8 -0
  364. package/src/helpers/createSlotComponent.ts +4 -4
  365. package/src/helpers/mergeStyles.ts +11 -11
  366. package/src/hooks/createControllableSignal.ts +11 -11
  367. package/src/hooks/createControllableStore.ts +8 -8
  368. package/src/hooks/createIMEHandler.ts +7 -7
  369. package/src/hooks/createMountTransition.ts +4 -4
  370. package/src/hooks/createSelectionGroup.tsx +5 -3
  371. package/src/hooks/createSlotSignal.ts +2 -2
  372. package/src/hooks/useLocalStorage.ts +13 -13
  373. package/src/hooks/useLogger.ts +2 -2
  374. package/src/hooks/useRouterLink.ts +15 -15
  375. package/src/index.ts +4 -3
  376. package/src/providers/ClipboardProvider.tsx +19 -19
  377. package/src/providers/ConfigContext.tsx +8 -8
  378. package/src/providers/ErrorLoggerProvider.tsx +3 -3
  379. package/src/providers/LoggerContext.tsx +13 -13
  380. package/src/providers/PwaUpdateProvider.tsx +6 -6
  381. package/src/providers/ServiceClientContext.ts +9 -9
  382. package/src/providers/ServiceClientProvider.tsx +15 -15
  383. package/src/providers/SyncStorageContext.tsx +15 -15
  384. package/src/providers/SystemProvider.tsx +15 -12
  385. package/src/providers/ThemeContext.tsx +26 -26
  386. package/src/providers/i18n/I18nContext.tsx +129 -0
  387. package/src/providers/i18n/I18nContext.types.ts +30 -0
  388. package/src/providers/i18n/i18nUtils.ts +38 -0
  389. package/src/providers/i18n/locales/en.ts +161 -0
  390. package/src/providers/i18n/locales/ko.ts +161 -0
  391. package/src/providers/shared-data/SharedDataChangeEvent.ts +4 -4
  392. package/src/providers/shared-data/SharedDataContext.ts +29 -29
  393. package/src/providers/shared-data/SharedDataProvider.tsx +21 -21
  394. package/src/styles/patterns.styles.ts +6 -6
  395. package/src/styles/tokens.styles.ts +5 -5
  396. package/tailwind.config.ts +1 -1
  397. package/tailwind.css +4 -4
  398. package/tests/components/data/List.spec.tsx +689 -0
  399. package/tests/components/data/Pagination.spec.tsx +336 -0
  400. package/tests/components/data/Table.spec.tsx +55 -0
  401. package/tests/components/data/kanban/Kanban.selection.spec.tsx +213 -0
  402. package/tests/components/data/sheet/DataSheet.spec.tsx +645 -0
  403. package/tests/components/disclosure/Collapse.spec.tsx +173 -0
  404. package/tests/components/disclosure/Dialog.spec.tsx +438 -0
  405. package/tests/components/disclosure/DialogProvider.spec.tsx +142 -0
  406. package/tests/components/disclosure/Dropdown.spec.tsx +333 -0
  407. package/tests/components/disclosure/Tabs.spec.tsx +220 -0
  408. package/tests/components/disclosure/dialogZIndex.spec.ts +45 -0
  409. package/tests/components/display/Alert.spec.tsx +47 -0
  410. package/tests/components/display/Barcode.spec.tsx +61 -0
  411. package/tests/components/display/Card.spec.tsx +41 -0
  412. package/tests/components/display/Link.spec.tsx +62 -0
  413. package/tests/components/display/Tag.spec.tsx +47 -0
  414. package/tests/components/features/address/AddressSearch.spec.tsx +45 -0
  415. package/tests/components/features/crud-detail/CrudDetail.spec.tsx +537 -0
  416. package/tests/components/features/crud-sheet/CrudSheet.spec.tsx +491 -0
  417. package/tests/components/features/crudRegistry.spec.ts +119 -0
  418. package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +482 -0
  419. package/tests/components/features/permission-table/PermissionTable.spec.tsx +288 -0
  420. package/tests/components/features/shared-data/SharedDataSelectList.spec.tsx +448 -0
  421. package/tests/components/feedback/busy/BusyContainer.spec.tsx +80 -0
  422. package/tests/components/feedback/notification/LiveRegion.spec.tsx +52 -0
  423. package/tests/components/feedback/notification/NotificationBanner.spec.tsx +187 -0
  424. package/tests/components/feedback/notification/NotificationBell.spec.tsx +226 -0
  425. package/tests/components/feedback/notification/NotificationContext.spec.tsx +362 -0
  426. package/tests/components/feedback/print/Print.spec.tsx +45 -0
  427. package/tests/components/form-control/Button.spec.tsx +119 -0
  428. package/tests/components/form-control/Invalid.spec.tsx +131 -0
  429. package/tests/components/form-control/checkbox/Checkbox.spec.tsx +137 -0
  430. package/tests/components/form-control/checkbox/CheckboxGroup.spec.tsx +108 -0
  431. package/tests/components/form-control/checkbox/Radio.spec.tsx +138 -0
  432. package/tests/components/form-control/checkbox/RadioGroup.spec.tsx +108 -0
  433. package/tests/components/form-control/color-picker/ColorPicker.spec.tsx +94 -0
  434. package/tests/components/form-control/combobox/Combobox.spec.tsx +253 -0
  435. package/tests/components/form-control/combobox/ComboboxItem.spec.tsx +88 -0
  436. package/tests/components/form-control/date-range-picker/DateRangePicker.spec.tsx +208 -0
  437. package/tests/components/form-control/field/DatePicker.spec.tsx +381 -0
  438. package/tests/components/form-control/field/DateTimePicker.spec.tsx +383 -0
  439. package/tests/components/form-control/field/NumberInput.spec.tsx +371 -0
  440. package/tests/components/form-control/field/TextInput.spec.tsx +341 -0
  441. package/tests/components/form-control/field/Textarea.spec.tsx +224 -0
  442. package/tests/components/form-control/field/TimePicker.spec.tsx +315 -0
  443. package/tests/components/form-control/numpad/Numpad.spec.tsx +248 -0
  444. package/tests/components/form-control/select/Select.spec.tsx +676 -0
  445. package/tests/components/form-control/select/SelectItem.spec.tsx +174 -0
  446. package/tests/components/layout/FormGroup.spec.tsx +104 -0
  447. package/tests/components/layout/FormTable.spec.tsx +43 -0
  448. package/tests/components/layout/sidebar/Sidebar.spec.tsx +192 -0
  449. package/tests/components/layout/sidebar/SidebarContainer.spec.tsx +261 -0
  450. package/tests/components/layout/sidebar/SidebarMenu.spec.tsx +219 -0
  451. package/tests/components/layout/sidebar/SidebarUser.spec.tsx +133 -0
  452. package/tests/components/layout/topbar/TopbarActions.spec.tsx +77 -0
  453. package/tests/components/layout/topbar/TopbarContainer.spec.tsx +38 -0
  454. package/tests/components/layout/topbar/createTopbarActions.spec.tsx +66 -0
  455. package/tests/directives/ripple.spec.tsx +130 -0
  456. package/tests/helpers/createAppStructure.spec.tsx +843 -0
  457. package/tests/helpers/mergeStyles.spec.ts +172 -0
  458. package/tests/hooks/createControllableSignal.spec.ts +194 -0
  459. package/tests/hooks/createIMEHandler.spec.ts +80 -0
  460. package/tests/hooks/createMountTransition.spec.ts +86 -0
  461. package/tests/hooks/useLocalStorage.spec.tsx +223 -0
  462. package/tests/hooks/useLogger.spec.tsx +116 -0
  463. package/tests/hooks/usePrint.spec.tsx +134 -0
  464. package/tests/hooks/useRouterLink.spec.tsx +183 -0
  465. package/tests/hooks/useSyncConfig.spec.tsx +304 -0
  466. package/tests/providers/ClipboardProvider.spec.tsx +20 -0
  467. package/tests/providers/ConfigContext.spec.tsx +42 -0
  468. package/tests/providers/ErrorLoggerProvider.spec.tsx +73 -0
  469. package/tests/providers/LoggerContext.spec.tsx +76 -0
  470. package/tests/providers/PwaUpdateProvider.spec.tsx +22 -0
  471. package/tests/providers/ServiceClientContext.spec.tsx +88 -0
  472. package/tests/providers/SyncStorageContext.spec.tsx +77 -0
  473. package/tests/providers/i18n/I18nContext.spec.tsx +110 -0
  474. package/tests/providers/shared-data/SharedDataProvider.spec.tsx +401 -0
  475. package/tests/vitest-env.d.ts +1 -0
  476. package/dist/components/form-control/select-list/SelectList.d.ts +0 -54
  477. package/dist/components/form-control/select-list/SelectList.d.ts.map +0 -1
  478. package/dist/components/form-control/select-list/SelectList.js +0 -280
  479. package/dist/components/form-control/select-list/SelectList.js.map +0 -6
  480. package/dist/components/form-control/select-list/SelectListContext.d.ts +0 -13
  481. package/dist/components/form-control/select-list/SelectListContext.d.ts.map +0 -1
  482. package/dist/components/form-control/select-list/SelectListContext.js +0 -14
  483. package/dist/components/form-control/select-list/SelectListContext.js.map +0 -6
  484. package/docs/data-components.md +0 -782
  485. package/docs/disclosure.md +0 -254
  486. package/docs/display.md +0 -153
  487. package/docs/feedback.md +0 -238
  488. package/docs/form-controls.md +0 -1068
  489. package/docs/helpers.md +0 -54
  490. package/docs/hooks.md +0 -588
  491. package/docs/layout.md +0 -384
  492. package/docs/providers.md +0 -211
  493. package/docs/styling.md +0 -184
  494. package/src/components/form-control/select-list/SelectList.tsx +0 -385
  495. package/src/components/form-control/select-list/SelectListContext.ts +0 -23
@@ -9,54 +9,54 @@ import { Invalid } from "../../form-control/Invalid";
9
9
  type DatePickerUnit = "year" | "month" | "date";
10
10
 
11
11
  export interface DatePickerProps {
12
- /** 입력 */
12
+ /** Input value */
13
13
  value?: DateOnly;
14
14
 
15
- /** 변경 콜백 */
15
+ /** Value change callback */
16
16
  onValueChange?: (value: DateOnly | undefined) => void;
17
17
 
18
- /** 날짜 단위 */
18
+ /** Date unit */
19
19
  unit?: DatePickerUnit;
20
20
 
21
- /** 최소 날짜 */
21
+ /** Minimum date */
22
22
  min?: DateOnly;
23
23
 
24
- /** 최대 날짜 */
24
+ /** Maximum date */
25
25
  max?: DateOnly;
26
26
 
27
- /** 타이틀 (툴팁) */
27
+ /** Title (tooltip) */
28
28
  title?: string;
29
29
 
30
- /** 비활성화 */
30
+ /** Disable input */
31
31
  disabled?: boolean;
32
32
 
33
- /** 읽기 전용 */
33
+ /** Read-only */
34
34
  readonly?: boolean;
35
35
 
36
- /** 사이즈 */
36
+ /** Size */
37
37
  size?: FieldSize;
38
38
 
39
- /** 테두리 없는 스타일 */
39
+ /** Borderless style */
40
40
  inset?: boolean;
41
41
 
42
- /** 커스텀 class */
42
+ /** Custom class */
43
43
  class?: string;
44
44
 
45
- /** 커스텀 style */
45
+ /** Custom style */
46
46
  style?: JSX.CSSProperties;
47
47
 
48
- /** 필수 입력 여부 */
48
+ /** Required input */
49
49
  required?: boolean;
50
50
 
51
- /** 커스텀 유효성 검사 함수 */
51
+ /** Custom validation function */
52
52
  validate?: (value: DateOnly | undefined) => string | undefined;
53
53
 
54
- /** touchMode: 포커스 해제 후에만 에러 표시 */
54
+ /** touchMode: show errors only after blur */
55
55
  touchMode?: boolean;
56
56
  }
57
57
 
58
58
  /**
59
- * DateOnly 값을 타입에 맞는 문자열로 변환
59
+ * Convert DateOnly value to format string matching type
60
60
  */
61
61
  function formatDateValue(value: DateOnly | undefined, type: DatePickerUnit): string | undefined {
62
62
  if (value == null) return undefined;
@@ -72,7 +72,7 @@ function formatDateValue(value: DateOnly | undefined, type: DatePickerUnit): str
72
72
  }
73
73
 
74
74
  /**
75
- * 입력 문자열을 DateOnly로 변환
75
+ * Convert input string to DateOnly
76
76
  */
77
77
  function parseValue(str: string, type: DatePickerUnit): DateOnly | undefined {
78
78
  if (str === "") return undefined;
@@ -84,20 +84,20 @@ function parseValue(str: string, type: DatePickerUnit): DateOnly | undefined {
84
84
  return new DateOnly(year, 1, 1);
85
85
  }
86
86
  case "month": {
87
- // yyyy-MM 형식
87
+ // yyyy-MM format
88
88
  const match = /^(\d{4})-(\d{2})$/.exec(str);
89
89
  if (match == null) return undefined;
90
90
  return new DateOnly(Number(match[1]), Number(match[2]), 1);
91
91
  }
92
92
  case "date": {
93
- // yyyy-MM-dd 형식
93
+ // yyyy-MM-dd format
94
94
  return DateOnly.parse(str);
95
95
  }
96
96
  }
97
97
  }
98
98
 
99
99
  /**
100
- * HTML input type 속성 결정
100
+ * Determine HTML input type attribute
101
101
  */
102
102
  function getInputType(type: DatePickerUnit): string {
103
103
  switch (type) {
@@ -111,23 +111,23 @@ function getInputType(type: DatePickerUnit): string {
111
111
  }
112
112
 
113
113
  /**
114
- * DatePicker 컴포넌트
114
+ * DatePicker component
115
115
  *
116
- * 날짜 입력 필드. year, month, date 단위를 지원한다.
117
- * 내부적으로 string ↔ DateOnly 타입 변환을 처리한다.
116
+ * Date input field supporting year, month, and date units.
117
+ * Handles string ↔ DateOnly type conversion internally.
118
118
  *
119
119
  * @example
120
120
  * ```tsx
121
- * // 날짜 입력
121
+ * // Date input
122
122
  * <DatePicker unit="date" value={date()} onValueChange={setDate} />
123
123
  *
124
- * // 연도만 입력
124
+ * // Year only
125
125
  * <DatePicker unit="year" value={yearDate()} onValueChange={setYearDate} />
126
126
  *
127
- * // 연월 입력
127
+ * // Year-month input
128
128
  * <DatePicker unit="month" value={monthDate()} onValueChange={setMonthDate} />
129
129
  *
130
- * // min/max 제한
130
+ * // With min/max constraints
131
131
  * <DatePicker
132
132
  * unit="date"
133
133
  * value={date()}
@@ -155,26 +155,26 @@ export const DatePicker: Component<DatePickerProps> = (props) => {
155
155
  "touchMode",
156
156
  ]);
157
157
 
158
- // 기본 단위는 date
158
+ // Default unit is date
159
159
  const fieldType = () => local.unit ?? "date";
160
160
 
161
- // controlled/uncontrolled 패턴 지원
161
+ // Support controlled/uncontrolled pattern
162
162
  const [value, setValue] = createControllableSignal({
163
163
  value: () => local.value,
164
164
  onChange: () => local.onValueChange,
165
165
  });
166
166
 
167
- // 표시
167
+ // Display value
168
168
  const displayValue = () => formatDateValue(value(), fieldType()) ?? "";
169
169
 
170
- // 확정 핸들러 (포커스 아웃 또는 Enter)
170
+ // Change handler (on blur or Enter)
171
171
  const handleChange: JSX.EventHandler<HTMLInputElement, Event> = (e) => {
172
172
  const newValue = e.currentTarget.value;
173
173
  const parsed = parseValue(newValue, fieldType());
174
174
  setValue(parsed);
175
175
  };
176
176
 
177
- // wrapper 클래스 (includeCustomClass: 외부 class를 포함할지 여부)
177
+ // Wrapper class (includeCustomClass: whether to include external class)
178
178
  const getWrapperClass = (includeCustomClass: boolean) =>
179
179
  getFieldWrapperClass({
180
180
  size: local.size,
@@ -184,18 +184,18 @@ export const DatePicker: Component<DatePickerProps> = (props) => {
184
184
  extra: "min-w-32",
185
185
  });
186
186
 
187
- // 편집 가능 여부
187
+ // Editable check
188
188
  const isEditable = () => !local.disabled && !local.readonly;
189
189
 
190
- // 유효성 검사 메시지 (순서대로 검사, 최초 실패 메시지 반환)
190
+ // Validation message (check in order, return first error)
191
191
  const errorMsg = createMemo(() => {
192
192
  const v = value();
193
- if (local.required && v === undefined) return "필수 입력 항목입니다";
193
+ if (local.required && v === undefined) return "This field is required";
194
194
  if (v !== undefined) {
195
195
  if (local.min !== undefined && v.tick < local.min.tick)
196
- return `${local.min}보다 크거나 같아야 합니다`;
196
+ return `Must be greater than or equal to ${local.min}`;
197
197
  if (local.max !== undefined && v.tick > local.max.tick)
198
- return `${local.max}보다 작거나 같아야 합니다`;
198
+ return `Must be less than or equal to ${local.max}`;
199
199
  }
200
200
  return local.validate?.(v);
201
201
  });
@@ -209,7 +209,7 @@ export const DatePicker: Component<DatePickerProps> = (props) => {
209
209
  <Show
210
210
  when={local.inset}
211
211
  fallback={
212
- // standalone 모드: 기존 Show 패턴 유지
212
+ // standalone mode: maintain existing Show pattern
213
213
  <Show
214
214
  when={isEditable()}
215
215
  fallback={
@@ -239,7 +239,7 @@ export const DatePicker: Component<DatePickerProps> = (props) => {
239
239
  </Show>
240
240
  }
241
241
  >
242
- {/* inset 모드: dual-element overlay 패턴 */}
242
+ {/* inset mode: dual-element overlay pattern */}
243
243
  <div {...rest} data-date-field class={clsx("relative", local.class)} style={local.style}>
244
244
  <div
245
245
  data-date-field-content
@@ -9,54 +9,54 @@ import { Invalid } from "../../form-control/Invalid";
9
9
  type DateTimePickerUnit = "minute" | "second";
10
10
 
11
11
  export interface DateTimePickerProps {
12
- /** 입력 */
12
+ /** Input value */
13
13
  value?: DateTime;
14
14
 
15
- /** 변경 콜백 */
15
+ /** Value change callback */
16
16
  onValueChange?: (value: DateTime | undefined) => void;
17
17
 
18
- /** 날짜시간 단위 */
18
+ /** DateTime unit */
19
19
  unit?: DateTimePickerUnit;
20
20
 
21
- /** 최소 날짜시간 */
21
+ /** Minimum datetime */
22
22
  min?: DateTime;
23
23
 
24
- /** 최대 날짜시간 */
24
+ /** Maximum datetime */
25
25
  max?: DateTime;
26
26
 
27
- /** 타이틀 (툴팁) */
27
+ /** Title (tooltip) */
28
28
  title?: string;
29
29
 
30
- /** 비활성화 */
30
+ /** Disable input */
31
31
  disabled?: boolean;
32
32
 
33
- /** 읽기 전용 */
33
+ /** Read-only */
34
34
  readonly?: boolean;
35
35
 
36
- /** 사이즈 */
36
+ /** Size */
37
37
  size?: FieldSize;
38
38
 
39
- /** 테두리 없는 스타일 */
39
+ /** Borderless style */
40
40
  inset?: boolean;
41
41
 
42
- /** 커스텀 class */
42
+ /** Custom class */
43
43
  class?: string;
44
44
 
45
- /** 커스텀 style */
45
+ /** Custom style */
46
46
  style?: JSX.CSSProperties;
47
47
 
48
- /** 필수 입력 여부 */
48
+ /** Required input */
49
49
  required?: boolean;
50
50
 
51
- /** 커스텀 유효성 검사 함수 */
51
+ /** Custom validation function */
52
52
  validate?: (value: DateTime | undefined) => string | undefined;
53
53
 
54
- /** touchMode: 포커스 해제 후에만 에러 표시 */
54
+ /** touchMode: show errors only after blur */
55
55
  touchMode?: boolean;
56
56
  }
57
57
 
58
58
  /**
59
- * DateTime 값을 타입에 맞는 문자열로 변환
59
+ * Convert DateTime value to format string matching type
60
60
  */
61
61
  function formatDateTimeValue(
62
62
  value: DateTime | undefined,
@@ -73,14 +73,14 @@ function formatDateTimeValue(
73
73
  }
74
74
 
75
75
  /**
76
- * 입력 문자열을 DateTime으로 변환
76
+ * Convert input string to DateTime
77
77
  */
78
78
  function parseValue(str: string, unit: DateTimePickerUnit): DateTime | undefined {
79
79
  if (str === "") return undefined;
80
80
 
81
81
  switch (unit) {
82
82
  case "minute": {
83
- // yyyy-MM-ddTHH:mm 형식
83
+ // yyyy-MM-ddTHH:mm format
84
84
  const match = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/.exec(str);
85
85
  if (match == null) return undefined;
86
86
  return new DateTime(
@@ -93,7 +93,7 @@ function parseValue(str: string, unit: DateTimePickerUnit): DateTime | undefined
93
93
  );
94
94
  }
95
95
  case "second": {
96
- // yyyy-MM-ddTHH:mm:ss 형식
96
+ // yyyy-MM-ddTHH:mm:ss format
97
97
  const match = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/.exec(str);
98
98
  if (match == null) return undefined;
99
99
  return new DateTime(
@@ -109,20 +109,20 @@ function parseValue(str: string, unit: DateTimePickerUnit): DateTime | undefined
109
109
  }
110
110
 
111
111
  /**
112
- * DateTimePicker 컴포넌트
112
+ * DateTimePicker component
113
113
  *
114
- * 날짜시간 입력 필드. minute, second 단위를 지원한다.
115
- * 내부적으로 string ↔ DateTime 타입 변환을 처리한다.
114
+ * DateTime input field supporting minute and second units.
115
+ * Handles string ↔ DateTime type conversion internally.
116
116
  *
117
117
  * @example
118
118
  * ```tsx
119
- * // 날짜시간 입력 ( 단위)
119
+ * // DateTime input (minute unit)
120
120
  * <DateTimePicker unit="minute" value={dateTime()} onValueChange={setDateTime} />
121
121
  *
122
- * // 날짜시간 입력 ( 단위)
122
+ * // DateTime input (second unit)
123
123
  * <DateTimePicker unit="second" value={dateTime()} onValueChange={setDateTime} />
124
124
  *
125
- * // min/max 제한
125
+ * // With min/max constraints
126
126
  * <DateTimePicker
127
127
  * unit="minute"
128
128
  * value={dateTime()}
@@ -150,26 +150,26 @@ export const DateTimePicker: Component<DateTimePickerProps> = (props) => {
150
150
  "touchMode",
151
151
  ]);
152
152
 
153
- // 기본 단위는 minute
153
+ // Default unit is minute
154
154
  const fieldType = () => local.unit ?? "minute";
155
155
 
156
- // controlled/uncontrolled 패턴 지원
156
+ // Support controlled/uncontrolled pattern
157
157
  const [value, setValue] = createControllableSignal({
158
158
  value: () => local.value,
159
159
  onChange: () => local.onValueChange,
160
160
  });
161
161
 
162
- // 표시
162
+ // Display value
163
163
  const displayValue = () => formatDateTimeValue(value(), fieldType()) ?? "";
164
164
 
165
- // 확정 핸들러 (포커스 아웃 또는 Enter)
165
+ // Change handler (on blur or Enter)
166
166
  const handleChange: JSX.EventHandler<HTMLInputElement, Event> = (e) => {
167
167
  const newValue = e.currentTarget.value;
168
168
  const parsed = parseValue(newValue, fieldType());
169
169
  setValue(parsed);
170
170
  };
171
171
 
172
- // wrapper 클래스 (includeCustomClass: inset 모드에서는 커스텀 class 외부 div 적용)
172
+ // Wrapper class (includeCustomClass: whether to apply custom class to outer div in inset mode)
173
173
  const getWrapperClass = (includeCustomClass: boolean) =>
174
174
  getFieldWrapperClass({
175
175
  size: local.size,
@@ -179,21 +179,21 @@ export const DateTimePicker: Component<DateTimePickerProps> = (props) => {
179
179
  extra: "min-w-44",
180
180
  });
181
181
 
182
- // 편집 가능 여부
182
+ // Editable check
183
183
  const isEditable = () => !local.disabled && !local.readonly;
184
184
 
185
- // step 속성 (second일 1)
185
+ // Step attribute (1 when second)
186
186
  const getStep = () => (fieldType() === "second" ? "1" : undefined);
187
187
 
188
- // 유효성 검사 메시지 (순서대로 검사, 최초 실패 메시지 반환)
188
+ // Validation message (check in order, return first error)
189
189
  const errorMsg = createMemo(() => {
190
190
  const v = value();
191
- if (local.required && v === undefined) return "필수 입력 항목입니다";
191
+ if (local.required && v === undefined) return "This field is required";
192
192
  if (v !== undefined) {
193
193
  if (local.min !== undefined && v.tick < local.min.tick)
194
- return `${local.min.toFormatString("yyyy-MM-dd HH:mm:ss")}보다 크거나 같아야 합니다`;
194
+ return `Must be greater than or equal to ${local.min.toFormatString("yyyy-MM-dd HH:mm:ss")}`;
195
195
  if (local.max !== undefined && v.tick > local.max.tick)
196
- return `${local.max.toFormatString("yyyy-MM-dd HH:mm:ss")}보다 작거나 같아야 합니다`;
196
+ return `Must be less than or equal to ${local.max.toFormatString("yyyy-MM-dd HH:mm:ss")}`;
197
197
  }
198
198
  return local.validate?.(v);
199
199
  });
@@ -207,7 +207,7 @@ export const DateTimePicker: Component<DateTimePickerProps> = (props) => {
207
207
  <Show
208
208
  when={local.inset}
209
209
  fallback={
210
- // standalone 모드
210
+ // standalone mode
211
211
  <Show
212
212
  when={isEditable()}
213
213
  fallback={
@@ -238,7 +238,7 @@ export const DateTimePicker: Component<DateTimePickerProps> = (props) => {
238
238
  </Show>
239
239
  }
240
240
  >
241
- {/* inset 모드: dual-element overlay 패턴 */}
241
+ {/* inset mode: dual-element overlay pattern */}
242
242
  <div
243
243
  {...rest}
244
244
  data-datetime-field
@@ -16,7 +16,7 @@ import {
16
16
 
17
17
  export type FieldSize = ComponentSize;
18
18
 
19
- // 기본 wrapper 스타일
19
+ // Base wrapper styles
20
20
  export const fieldBaseClass = clsx(
21
21
  "inline-flex items-center",
22
22
  fieldSurface,
@@ -25,7 +25,7 @@ export const fieldBaseClass = clsx(
25
25
  "[text-decoration:inherit]",
26
26
  );
27
27
 
28
- // 사이즈별 스타일
28
+ // Size-specific styles
29
29
  export const fieldSizeClasses: Record<FieldSize, string> = {
30
30
  xs: clsx("h-field-xs", paddingXs),
31
31
  sm: clsx("h-field-sm", paddingSm),
@@ -33,14 +33,14 @@ export const fieldSizeClasses: Record<FieldSize, string> = {
33
33
  xl: clsx("h-field-xl", paddingXl),
34
34
  };
35
35
 
36
- // inset 스타일
36
+ // Inset styles
37
37
  export const fieldInsetClass = clsx(
38
38
  insetBase,
39
39
  "bg-primary-50 dark:bg-primary-950/30",
40
40
  insetFocusOutline,
41
41
  );
42
42
 
43
- // inset 높이 (border 2px 제외)
43
+ // Inset heights (excluding 2px border)
44
44
  export const fieldInsetHeightClass = "h-field-inset";
45
45
  export const fieldInsetSizeHeightClasses: Record<FieldSize, string> = {
46
46
  xs: "h-field-inset-xs",
@@ -49,13 +49,13 @@ export const fieldInsetSizeHeightClasses: Record<FieldSize, string> = {
49
49
  xl: "h-field-inset-xl",
50
50
  };
51
51
 
52
- // disabled 스타일
52
+ // Disabled styles
53
53
  export const fieldDisabledClass = clsx("bg-base-100 text-base-500 dark:bg-base-800");
54
54
 
55
- // textarea wrapper 스타일 (h-field 제거)
55
+ // Textarea wrapper styles (h-field removed)
56
56
  export const textAreaBaseClass = clsx("inline-block w-48", fieldSurface, "px-2 py-1");
57
57
 
58
- // textarea 사이즈별 스타일 (h-field-* 제거)
58
+ // Textarea size-specific styles (h-field-* removed)
59
59
  export const textAreaSizeClasses: Record<FieldSize, string> = {
60
60
  xs: paddingXs,
61
61
  sm: paddingSm,
@@ -63,10 +63,10 @@ export const textAreaSizeClasses: Record<FieldSize, string> = {
63
63
  xl: paddingXl,
64
64
  };
65
65
 
66
- // input 스타일
66
+ // Input styles
67
67
  export const fieldInputClass = inputBase;
68
68
 
69
- // prefixIcon gap 클래스 (nested ternary 대체)
69
+ // Prefix icon gap classes (replaces nested ternary)
70
70
  export const fieldGapClasses: Record<FieldSize | "default", string> = {
71
71
  xs: "gap-0.5",
72
72
  sm: "gap-1.5",
@@ -75,7 +75,7 @@ export const fieldGapClasses: Record<FieldSize | "default", string> = {
75
75
  xl: "gap-4",
76
76
  };
77
77
 
78
- // 공유 wrapper 클래스 생성 함수
78
+ // Shared wrapper class generation function
79
79
  export function getFieldWrapperClass(options: {
80
80
  size?: FieldSize;
81
81
  disabled?: boolean;
@@ -95,7 +95,7 @@ export function getFieldWrapperClass(options: {
95
95
  );
96
96
  }
97
97
 
98
- // Textarea 전용 wrapper 클래스 생성 함수
98
+ // Textarea-specific wrapper class generation function
99
99
  export function getTextareaWrapperClass(options: {
100
100
  size?: FieldSize;
101
101
  disabled?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { type Component, Show } from "solid-js";
2
2
  import { textMuted } from "../../../styles/tokens.styles";
3
3
 
4
- /** 값이 없을 placeholder 또는 NBSP 표시하는 공유 컴포넌트 */
4
+ /** Shared component to display placeholder or NBSP when value is empty */
5
5
  export const PlaceholderFallback: Component<{ value?: string; placeholder?: string }> = (props) => (
6
6
  <>
7
7
  <Show