@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
@@ -13,11 +13,11 @@ import { mergeStyles } from "../../helpers/mergeStyles";
13
13
 
14
14
  export interface CollapseProps extends JSX.HTMLAttributes<HTMLDivElement> {
15
15
  /**
16
- * 콘텐츠 표시 여부. 기본값: false (닫힘)
16
+ * Whether to show content. Default: false (closed)
17
17
  *
18
- * 접근성 참고:
19
- * - 토글 버튼에 `aria-expanded`와 `aria-controls`를 사용하세요.
20
- * - `Button` 컴포넌트를 사용하면 Enter/Space 키보드 접근성이 자동 지원됩니다.
18
+ * Accessibility note:
19
+ * - Use `aria-expanded` and `aria-controls` on the toggle button.
20
+ * - If using the `Button` component, Enter/Space keyboard accessibility is automatically supported.
21
21
  *
22
22
  * @example
23
23
  * ```tsx
@@ -40,24 +40,24 @@ const transitionClass = clsx(
40
40
  export const Collapse: ParentComponent<CollapseProps> = (props) => {
41
41
  const [local, rest] = splitProps(props, ["children", "class", "style", "open"]);
42
42
 
43
- // 콘텐츠 요소 ref
43
+ // Content element ref
44
44
  const [contentRef, setContentRef] = createSignal<HTMLDivElement>();
45
45
 
46
- // 콘텐츠 높이 추적
46
+ // Track content height
47
47
  const size = createElementSize(contentRef);
48
48
 
49
- // 초기 렌더링 transition 비활성화 (깜빡임 방지)
50
- // requestAnimationFrame으로 다음 프레임에 활성화
49
+ // Disable transition on initial render (prevent flickering)
50
+ // Enable it on the next frame via requestAnimationFrame
51
51
  const [mounted, setMounted] = createSignal(false);
52
52
  onMount(() => {
53
53
  const rafId = requestAnimationFrame(() => setMounted(true));
54
54
  onCleanup(() => cancelAnimationFrame(rafId));
55
55
  });
56
56
 
57
- // open이 undefined false로 처리
57
+ // Treat undefined open as false
58
58
  const isOpen = () => local.open ?? false;
59
59
 
60
- // margin-top 계산
60
+ // Calculate margin-top
61
61
  const marginTop = () => (isOpen() ? undefined : `${-(size.height ?? 0)}px`);
62
62
 
63
63
  return (
@@ -72,7 +72,7 @@ export const Collapse: ParentComponent<CollapseProps> = (props) => {
72
72
  class={mounted() ? transitionClass : ""}
73
73
  style={{
74
74
  "margin-top": marginTop(),
75
- // 닫힌 상태에서 포커스 가능 요소 접근 차단 FOUC 방지
75
+ // When closed, prevent access to focusable elements and prevent FOUC
76
76
  "visibility": !isOpen() ? "hidden" : undefined,
77
77
  }}
78
78
  >
@@ -21,6 +21,7 @@ import { createMountTransition } from "../../hooks/createMountTransition";
21
21
  import { startPointerDrag } from "../../helpers/startPointerDrag";
22
22
  import { createSlotComponent } from "../../helpers/createSlotComponent";
23
23
  import { mergeStyles } from "../../helpers/mergeStyles";
24
+ import { useI18nOptional } from "../../providers/i18n/I18nContext";
24
25
  import { Icon } from "../display/Icon";
25
26
  import { borderSubtle } from "../../styles/tokens.styles";
26
27
  import { DialogDefaultsContext } from "./DialogContext";
@@ -38,41 +39,41 @@ const DialogHeader = createSlotComponent(DialogSlotsContext, (ctx) => ctx.setHea
38
39
  const DialogAction = createSlotComponent(DialogSlotsContext, (ctx) => ctx.setAction);
39
40
 
40
41
  export interface DialogProps {
41
- /** 모달 열림 상태 */
42
+ /** Modal open state */
42
43
  open?: boolean;
43
- /** 열림 상태 변경 콜백 */
44
+ /** Callback when open state changes */
44
45
  onOpenChange?: (open: boolean) => void;
45
- /** 닫기 버튼 표시 (기본: true) */
46
+ /** Show close button (default: true) */
46
47
  closable?: boolean;
47
- /** 백드롭 클릭으로 닫기 */
48
+ /** Close on backdrop click */
48
49
  closeOnBackdrop?: boolean;
49
- /** Escape 키로 닫기 (기본값: true) */
50
+ /** Close on Escape key (default: true) */
50
51
  closeOnEscape?: boolean;
51
- /** 리사이즈 가능 여부 (기본: false) */
52
+ /** Resizable (default: false) */
52
53
  resizable?: boolean;
53
- /** 드래그 이동 가능 여부 (기본: true) */
54
+ /** Draggable (default: true) */
54
55
  movable?: boolean;
55
- /** 플로팅 모드 (백드롭 없음) */
56
+ /** Floating mode (no backdrop) */
56
57
  float?: boolean;
57
- /** 전체 화면 모드 */
58
+ /** Full-screen mode */
58
59
  fill?: boolean;
59
- /** 너비 */
60
+ /** Width */
60
61
  width?: number;
61
- /** 높이 */
62
+ /** Height */
62
63
  height?: number;
63
- /** 최소 너비 */
64
+ /** Minimum width */
64
65
  minWidth?: number;
65
- /** 최소 높이 */
66
+ /** Minimum height */
66
67
  minHeight?: number;
67
- /** 고정 위치 */
68
+ /** Fixed position */
68
69
  position?: "bottom-right" | "top-right";
69
- /** 헤더 스타일 */
70
+ /** Header style */
70
71
  headerStyle?: JSX.CSSProperties | string;
71
- /** 닫기 확인 함수 */
72
+ /** Confirmation function before closing */
72
73
  canDeactivate?: () => boolean;
73
- /** 닫기 애니메이션 완료 콜백 */
74
+ /** Callback after close animation completes */
74
75
  onCloseComplete?: () => void;
75
- /** 추가 CSS 클래스 */
76
+ /** Additional CSS class */
76
77
  class?: string;
77
78
  }
78
79
 
@@ -122,19 +123,19 @@ const resizePositionMap: Record<ResizeDirection, string> = {
122
123
  };
123
124
 
124
125
  /**
125
- * 다이얼로그 컴포넌트
126
+ * Dialog component
126
127
  *
127
- * 선언적 다이얼로그 UI 제공합니다. 드래그 이동, 8방향 리사이즈,
128
- * float/fill 모드, z-index 자동 관리 등을 지원합니다.
128
+ * Provides a declarative dialog UI. Supports dragging, 8-directional resizing,
129
+ * float/fill modes, automatic z-index management, and more.
129
130
  *
130
131
  * @example
131
132
  * ```tsx
132
133
  * const [open, setOpen] = createSignal(false);
133
134
  *
134
- * <Button onClick={() => setOpen(true)}>다이얼로그 열기</Button>
135
+ * <Button onClick={() => setOpen(true)}>Open Dialog</Button>
135
136
  * <Dialog open={open()} onOpenChange={setOpen}>
136
- * <Dialog.Header>내 다이얼로그</Dialog.Header>
137
- * <div class="p-4">다이얼로그 내용</div>
137
+ * <Dialog.Header>My Dialog</Dialog.Header>
138
+ * <div class="p-4">Dialog content</div>
138
139
  * </Dialog>
139
140
  * ```
140
141
  */
@@ -145,6 +146,7 @@ interface DialogComponent extends ParentComponent<DialogProps> {
145
146
 
146
147
  export const Dialog: DialogComponent = (props) => {
147
148
  const dialogDefaults = useContext(DialogDefaultsContext);
149
+ const i18n = useI18nOptional();
148
150
 
149
151
  const [local] = splitProps(props, [
150
152
  "open",
@@ -179,10 +181,10 @@ export const Dialog: DialogComponent = (props) => {
179
181
  onChange: () => local.onOpenChange,
180
182
  });
181
183
 
182
- // 애니메이션 상태 (mount transition)
184
+ // Animation state (mount transition)
183
185
  const { mounted, animating, unmount } = createMountTransition(open);
184
186
 
185
- // onCloseComplete 중복 호출 방지
187
+ // Prevent duplicate onCloseComplete calls
186
188
  let closeCompleteEmitted = false;
187
189
 
188
190
  const emitCloseComplete = () => {
@@ -192,7 +194,7 @@ export const Dialog: DialogComponent = (props) => {
192
194
  local.onCloseComplete?.();
193
195
  };
194
196
 
195
- // open 변경 closeCompleteEmitted 초기화 + fallback unmount 감지
197
+ // Reset closeCompleteEmitted when open changes + detect fallback unmount
196
198
  let wasMounted = false;
197
199
  createEffect(() => {
198
200
  if (open()) {
@@ -201,23 +203,23 @@ export const Dialog: DialogComponent = (props) => {
201
203
  if (mounted()) {
202
204
  wasMounted = true;
203
205
  } else if (wasMounted) {
204
- // fallback timer가 transitionend보다 먼저 실행되어 DOM이 제거된 경우,
205
- // onCloseComplete가 호출되지 않는 문제 방지
206
+ // Prevent onCloseComplete from not being called when fallback timer runs
207
+ // before transitionend and removes DOM
206
208
  emitCloseComplete();
207
209
  }
208
210
  });
209
211
 
210
- // dialog ref
212
+ // Dialog ref
211
213
  let dialogRef: HTMLDivElement | undefined;
212
214
 
213
- // wrapper ref (signal 관리하여 Portal ref 타이밍 보장)
215
+ // Wrapper ref (managed as signal to guarantee Portal ref timing)
214
216
  const [wrapperRef, setWrapperRef] = createSignal<HTMLDivElement>();
215
217
 
216
218
  const closeOnEscape = () => local.closeOnEscape ?? dialogDefaults?.().closeOnEscape ?? true;
217
219
  const closeOnBackdrop = () =>
218
220
  local.closeOnBackdrop ?? dialogDefaults?.().closeOnBackdrop ?? false;
219
221
 
220
- // Escape 키 감지
222
+ // Detect Escape key
221
223
  createEffect(() => {
222
224
  if (!open()) return;
223
225
 
@@ -237,7 +239,7 @@ export const Dialog: DialogComponent = (props) => {
237
239
  onCleanup(() => document.removeEventListener("keydown", handleKeyDown));
238
240
  });
239
241
 
240
- // 열릴 등록, 닫힐 해제
242
+ // Register when opening, unregister when closing
241
243
  createEffect(() => {
242
244
  if (!open()) return;
243
245
  const el = wrapperRef();
@@ -246,24 +248,24 @@ export const Dialog: DialogComponent = (props) => {
246
248
  onCleanup(() => unregisterDialog(el));
247
249
  });
248
250
 
249
- // 닫기 시도 (canDeactivate 체크)
251
+ // Attempt to close (check canDeactivate)
250
252
  const tryClose = () => {
251
253
  if (local.canDeactivate && !local.canDeactivate()) return;
252
254
  setOpen(false);
253
255
  };
254
256
 
255
- // 백드롭 클릭 핸들러
257
+ // Backdrop click handler
256
258
  const handleBackdropClick = () => {
257
259
  if (!closeOnBackdrop()) return;
258
260
  tryClose();
259
261
  };
260
262
 
261
- // 닫기 버튼 클릭 핸들러
263
+ // Close button click handler
262
264
  const handleCloseClick = () => {
263
265
  tryClose();
264
266
  };
265
267
 
266
- // transitionend 이벤트 처리
268
+ // Handle transitionend event
267
269
  const handleTransitionEnd = (e: TransitionEvent) => {
268
270
  if (e.propertyName !== "opacity") return;
269
271
  if (!open()) {
@@ -271,20 +273,20 @@ export const Dialog: DialogComponent = (props) => {
271
273
  }
272
274
  };
273
275
 
274
- // z-index 자동 관리
276
+ // Automatic z-index management
275
277
  const handleDialogFocus = () => {
276
278
  const el = wrapperRef();
277
279
  if (!el) return;
278
280
  bringToFront(el);
279
281
  };
280
282
 
281
- // 드래그 이동
283
+ // Dragging
282
284
  const handleHeaderPointerDown = (event: PointerEvent) => {
283
- // movable 기본값은 true
285
+ // movable default is true
284
286
  if (local.movable === false) return;
285
287
  const wrapperEl = wrapperRef();
286
288
  if (!dialogRef || !wrapperEl) return;
287
- // 닫기 버튼 인터랙티브 요소에서 시작된 이벤트는 드래그로 처리하지 않음
289
+ // Do not treat events from interactive elements like close button as drag
288
290
  if ((event.target as HTMLElement).closest("button")) return;
289
291
 
290
292
  const target = event.currentTarget as HTMLElement;
@@ -307,7 +309,7 @@ export const Dialog: DialogComponent = (props) => {
307
309
  dialogEl.style.bottom = "auto";
308
310
  dialogEl.style.margin = "0";
309
311
 
310
- // 화면 밖 방지
312
+ // Prevent off-screen
311
313
  if (dialogEl.offsetLeft > wrapperEl.offsetWidth - 100) {
312
314
  dialogEl.style.left = wrapperEl.offsetWidth - 100 + "px";
313
315
  }
@@ -328,7 +330,7 @@ export const Dialog: DialogComponent = (props) => {
328
330
  });
329
331
  };
330
332
 
331
- // 리사이즈
333
+ // Resize
332
334
  const handleResizeBarPointerDown = (event: PointerEvent, direction: ResizeDirection) => {
333
335
  if (!local.resizable) return;
334
336
  if (!dialogRef) return;
@@ -381,7 +383,7 @@ export const Dialog: DialogComponent = (props) => {
381
383
  });
382
384
  };
383
385
 
384
- // dialog 인라인 스타일 계산
386
+ // Calculate dialog inline styles
385
387
  const dialogStyle = (): JSX.CSSProperties => {
386
388
  const style: JSX.CSSProperties = {};
387
389
 
@@ -404,7 +406,7 @@ export const Dialog: DialogComponent = (props) => {
404
406
  style["min-height"] = `${local.minHeight}px`;
405
407
  }
406
408
 
407
- // position 모드
409
+ // Position mode
408
410
  if (local.position === "bottom-right") {
409
411
  style.position = "absolute";
410
412
  style.right = "3rem";
@@ -418,7 +420,7 @@ export const Dialog: DialogComponent = (props) => {
418
420
  return style;
419
421
  };
420
422
 
421
- // 애니메이션 클래스
423
+ // Animation class
422
424
  const animationClass = () => {
423
425
  const base = clsx("transition-[opacity,transform]", "duration-200", "ease-out");
424
426
  if (animating()) {
@@ -428,9 +430,9 @@ export const Dialog: DialogComponent = (props) => {
428
430
  }
429
431
  };
430
432
 
431
- // wrapper 클래스
433
+ // Wrapper class
432
434
  const wrapperClass = () =>
433
- // eslint-disable-next-line tailwindcss/enforces-shorthand -- inset-0 Chrome 84 미지원
435
+ // eslint-disable-next-line tailwindcss/enforces-shorthand -- inset-0 not supported in Chrome 84
434
436
  clsx(
435
437
  "fixed bottom-0 left-0 right-0 top-0",
436
438
  "flex flex-col items-center",
@@ -438,9 +440,9 @@ export const Dialog: DialogComponent = (props) => {
438
440
  local.float && "pointer-events-none",
439
441
  );
440
442
 
441
- // 백드롭 클래스
443
+ // Backdrop class
442
444
  const backdropClass = () =>
443
- // eslint-disable-next-line tailwindcss/enforces-shorthand -- inset-0 Chrome 84 미지원
445
+ // eslint-disable-next-line tailwindcss/enforces-shorthand -- inset-0 not supported in Chrome 84
444
446
  clsx(
445
447
  "absolute bottom-0 left-0 right-0 top-0",
446
448
  "bg-black/30",
@@ -451,7 +453,7 @@ export const Dialog: DialogComponent = (props) => {
451
453
  animating() ? "opacity-100" : "opacity-0",
452
454
  );
453
455
 
454
- // dialog 클래스
456
+ // Dialog class
455
457
  const dialogBaseClass = () =>
456
458
  clsx(
457
459
  "relative",
@@ -469,7 +471,7 @@ export const Dialog: DialogComponent = (props) => {
469
471
  animationClass(),
470
472
  );
471
473
 
472
- // 헤더 클래스
474
+ // Header class
473
475
  const headerClass = () =>
474
476
  clsx("flex items-center gap-2", "px-3 py-1", "select-none", "border-b", borderSubtle);
475
477
 
@@ -478,12 +480,12 @@ export const Dialog: DialogComponent = (props) => {
478
480
  <Portal>
479
481
  <DialogSlotsContext.Provider value={{ setHeader, setAction }}>
480
482
  <div ref={setWrapperRef} data-modal class={wrapperClass()}>
481
- {/* 백드롭 */}
483
+ {/* Backdrop */}
482
484
  <Show when={!local.float}>
483
485
  <div data-modal-backdrop class={backdropClass()} onClick={handleBackdropClick} />
484
486
  </Show>
485
487
 
486
- {/* 다이얼로그 */}
488
+ {/* Dialog */}
487
489
  <div
488
490
  ref={(el) => {
489
491
  dialogRef = el;
@@ -498,7 +500,7 @@ export const Dialog: DialogComponent = (props) => {
498
500
  onFocus={handleDialogFocus}
499
501
  onTransitionEnd={handleTransitionEnd}
500
502
  >
501
- {/* 헤더 */}
503
+ {/* Header */}
502
504
  <Show when={hasHeader()}>
503
505
  <div
504
506
  data-modal-header
@@ -519,6 +521,7 @@ export const Dialog: DialogComponent = (props) => {
519
521
  data-modal-close
520
522
  size={"sm"}
521
523
  variant={"ghost"}
524
+ aria-label={i18n?.t("dialog.close") ?? "Close dialog"}
522
525
  onClick={handleCloseClick}
523
526
  >
524
527
  <Icon icon={IconX} />
@@ -527,12 +530,12 @@ export const Dialog: DialogComponent = (props) => {
527
530
  </div>
528
531
  </Show>
529
532
 
530
- {/* 콘텐츠 */}
533
+ {/* Content */}
531
534
  <div data-modal-content class={dialogContentClass}>
532
535
  {local.children}
533
536
  </div>
534
537
 
535
- {/* 리사이즈 */}
538
+ {/* Resize bars */}
536
539
  <Show when={local.resizable}>
537
540
  <For each={RESIZE_DIRECTIONS}>
538
541
  {(direction) => (
@@ -1,69 +1,69 @@
1
1
  import { createContext, useContext, type Accessor, type JSX } from "solid-js";
2
2
 
3
- /** 다이얼로그 기본 설정 */
3
+ /** Dialog default configuration */
4
4
  export interface DialogDefaults {
5
- /** ESC 키로 닫기 허용 */
5
+ /** Allow closing via ESC key */
6
6
  closeOnEscape?: boolean;
7
- /** 백드롭 클릭으로 닫기 허용 */
7
+ /** Allow closing via backdrop click */
8
8
  closeOnBackdrop?: boolean;
9
9
  }
10
10
 
11
- /** 다이얼로그 기본 설정 Context */
11
+ /** Dialog default configuration Context */
12
12
  export const DialogDefaultsContext = createContext<Accessor<DialogDefaults>>();
13
13
 
14
- /** 프로그래매틱 다이얼로그 옵션 */
14
+ /** Programmatic dialog options */
15
15
  export interface DialogShowOptions {
16
- /** 다이얼로그 헤더 */
16
+ /** Dialog header */
17
17
  header?: JSX.Element;
18
- /** 닫기 버튼 표시 */
18
+ /** Show close button */
19
19
  closable?: boolean;
20
- /** 백드롭 클릭으로 닫기 */
20
+ /** Close on backdrop click */
21
21
  closeOnBackdrop?: boolean;
22
- /** ESC 키로 닫기 */
22
+ /** Close on ESC key */
23
23
  closeOnEscape?: boolean;
24
- /** 크기 조절 가능 */
24
+ /** Resizable */
25
25
  resizable?: boolean;
26
- /** 드래그 이동 가능 */
26
+ /** Draggable */
27
27
  movable?: boolean;
28
- /** 플로팅 모드 (우하단 고정) */
28
+ /** Floating mode (fixed to bottom-right) */
29
29
  float?: boolean;
30
- /** 전체 화면 채우기 */
30
+ /** Fill full screen */
31
31
  fill?: boolean;
32
- /** 초기 너비 (px) */
32
+ /** Initial width (px) */
33
33
  width?: number;
34
- /** 초기 높이 (px) */
34
+ /** Initial height (px) */
35
35
  height?: number;
36
- /** 최소 너비 (px) */
36
+ /** Minimum width (px) */
37
37
  minWidth?: number;
38
- /** 최소 높이 (px) */
38
+ /** Minimum height (px) */
39
39
  minHeight?: number;
40
- /** 플로팅 위치 */
40
+ /** Floating position */
41
41
  position?: "bottom-right" | "top-right";
42
- /** 헤더 커스텀 스타일 */
42
+ /** Custom header style */
43
43
  headerStyle?: JSX.CSSProperties | string;
44
- /** 닫기 확인 함수 (false 반환 시 닫기 취소) */
44
+ /** Confirmation function before closing (return false to cancel) */
45
45
  canDeactivate?: () => boolean;
46
46
  }
47
47
 
48
- /** 프로그래매틱 다이얼로그 Context */
48
+ /** Programmatic dialog Context value */
49
49
  export interface DialogContextValue {
50
- /** 다이얼로그를 열고, 닫힐 때까지 대기하여 결과를 반환 */
50
+ /** Open dialog and wait until closing, returns result */
51
51
  show<T = undefined>(
52
52
  factory: () => JSX.Element,
53
53
  options: DialogShowOptions,
54
54
  ): Promise<T | undefined>;
55
55
  }
56
56
 
57
- /** 프로그래매틱 다이얼로그 Context */
57
+ /** Programmatic dialog Context */
58
58
  export const DialogContext = createContext<DialogContextValue>();
59
59
 
60
60
  /**
61
- * 프로그래매틱 다이얼로그에 접근하는
61
+ * Hook to access programmatic dialogs
62
62
  *
63
- * @throws DialogProvider 없으면 에러 발생
63
+ * @throws Throws error if DialogProvider is not present
64
64
  */
65
65
  export function useDialog(): DialogContextValue {
66
66
  const ctx = useContext(DialogContext);
67
- if (!ctx) throw new Error("useDialog DialogProvider 내부에서만 사용할 있습니다");
67
+ if (!ctx) throw new Error("useDialog can only be used inside DialogProvider");
68
68
  return ctx;
69
69
  }
@@ -1,24 +1,24 @@
1
1
  import { createContext, useContext } from "solid-js";
2
2
 
3
3
  /**
4
- * 다이얼로그 인스턴스 (프로그래매틱 다이얼로그 내부에서 사용)
4
+ * Dialog instance (used internally within programmatic dialogs)
5
5
  */
6
6
  export interface DialogInstance<TResult> {
7
- /** 다이얼로그 닫기 (result show() Promise로 전달) */
7
+ /** Close dialog (result is passed to show() Promise) */
8
8
  close: (result?: TResult) => void;
9
9
  }
10
10
 
11
- /** 다이얼로그 인스턴스 Context */
11
+ /** Dialog instance Context */
12
12
  export const DialogInstanceContext = createContext<DialogInstance<unknown>>();
13
13
 
14
14
  /**
15
- * 다이얼로그 인스턴스에 접근하는
15
+ * Hook to access dialog instance
16
16
  *
17
17
  * @remarks
18
- * DialogProvider.show()로 열린 다이얼로그 내부에서만 값이 존재한다.
19
- * Provider 외부에서 호출하면 undefined를 반환한다.
18
+ * Only has a value inside a dialog opened via DialogProvider.show().
19
+ * Returns undefined when called outside the Provider.
20
20
  *
21
- * @returns DialogInstance 또는 undefined (Provider 외부)
21
+ * @returns DialogInstance or undefined (outside Provider)
22
22
  */
23
23
  export function useDialogInstance<TResult = undefined>(): DialogInstance<TResult> | undefined {
24
24
  return useContext(DialogInstanceContext) as DialogInstance<TResult> | undefined;
@@ -30,10 +30,10 @@ interface DialogEntry {
30
30
  let nextId = 0;
31
31
 
32
32
  /**
33
- * 프로그래매틱 다이얼로그 Provider
33
+ * Programmatic dialog Provider
34
34
  *
35
- * `useDialog().show(content, options)` 로 다이얼로그를 열고,
36
- * `close(result)` 닫으면 Promise가 resolve됩니다.
35
+ * Open dialogs with `useDialog().show(content, options)`,
36
+ * and close them with `close(result)` to resolve the Promise.
37
37
  *
38
38
  * @example
39
39
  * ```tsx
@@ -73,7 +73,7 @@ export const DialogProvider: ParentComponent<DialogProviderProps> = (props) => {
73
73
  });
74
74
  };
75
75
 
76
- // 닫기 애니메이션 시작 (open false로 변경)
76
+ // Start close animation (set open to false)
77
77
  const requestClose = (id: string, result?: unknown) => {
78
78
  const entry = entries().find((e) => e.id === id);
79
79
  if (entry) {
@@ -82,7 +82,7 @@ export const DialogProvider: ParentComponent<DialogProviderProps> = (props) => {
82
82
  }
83
83
  };
84
84
 
85
- // 애니메이션 완료 실제 제거
85
+ // Actually remove after animation completes
86
86
  const removeEntry = (id: string) => {
87
87
  setEntries((prev) => {
88
88
  const entry = prev.find((e) => e.id === id);