@simplysm/solid 13.0.72 → 13.0.74

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 (210) hide show
  1. package/README.md +209 -202
  2. package/dist/components/data/calendar/Calendar.d.ts.map +1 -1
  3. package/dist/components/data/calendar/Calendar.js +3 -11
  4. package/dist/components/data/calendar/Calendar.js.map +2 -2
  5. package/dist/components/data/sheet/DataSheet.js +10 -10
  6. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  7. package/dist/components/data/sheet/DataSheetConfigDialog.d.ts.map +1 -1
  8. package/dist/components/data/sheet/DataSheetConfigDialog.js +27 -9
  9. package/dist/components/data/sheet/DataSheetConfigDialog.js.map +2 -2
  10. package/dist/components/disclosure/Dialog.d.ts +1 -1
  11. package/dist/components/disclosure/Dialog.d.ts.map +1 -1
  12. package/dist/components/disclosure/Dialog.js +5 -5
  13. package/dist/components/disclosure/Dialog.js.map +2 -2
  14. package/dist/components/disclosure/dialogZIndex.d.ts +1 -1
  15. package/dist/components/features/crud-detail/CrudDetail.js +23 -23
  16. package/dist/components/features/crud-detail/CrudDetail.js.map +2 -2
  17. package/dist/components/features/crud-sheet/CrudSheet.js +49 -49
  18. package/dist/components/features/crud-sheet/CrudSheet.js.map +2 -2
  19. package/dist/components/features/crud-sheet/types.d.ts +4 -4
  20. package/dist/components/features/crud-sheet/types.d.ts.map +1 -1
  21. package/dist/components/features/data-select-button/DataSelectButton.d.ts +25 -7
  22. package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -1
  23. package/dist/components/features/data-select-button/DataSelectButton.js +27 -12
  24. package/dist/components/features/data-select-button/DataSelectButton.js.map +2 -2
  25. package/dist/components/features/permission-table/PermissionTable.js +4 -4
  26. package/dist/components/features/permission-table/PermissionTable.js.map +2 -2
  27. package/dist/components/features/shared-data/SharedDataSelect.d.ts +22 -10
  28. package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -1
  29. package/dist/components/features/shared-data/SharedDataSelect.js +113 -29
  30. package/dist/components/features/shared-data/SharedDataSelect.js.map +2 -2
  31. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts +3 -3
  32. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -1
  33. package/dist/components/features/shared-data/SharedDataSelectButton.js.map +1 -1
  34. package/dist/components/features/shared-data/SharedDataSelectList.js +5 -4
  35. package/dist/components/features/shared-data/SharedDataSelectList.js.map +2 -2
  36. package/dist/components/feedback/notification/NotificationBanner.js +3 -3
  37. package/dist/components/feedback/notification/NotificationBanner.js.map +2 -2
  38. package/dist/components/feedback/notification/NotificationBell.d.ts.map +1 -1
  39. package/dist/components/feedback/notification/NotificationBell.js +12 -5
  40. package/dist/components/feedback/notification/NotificationBell.js.map +2 -2
  41. package/dist/components/feedback/notification/NotificationProvider.d.ts.map +1 -1
  42. package/dist/components/feedback/notification/NotificationProvider.js +3 -1
  43. package/dist/components/feedback/notification/NotificationProvider.js.map +2 -2
  44. package/dist/components/form-control/ThemeToggle.d.ts.map +1 -1
  45. package/dist/components/form-control/ThemeToggle.js +9 -6
  46. package/dist/components/form-control/ThemeToggle.js.map +2 -2
  47. package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
  48. package/dist/components/form-control/checkbox/Checkbox.js +3 -1
  49. package/dist/components/form-control/checkbox/Checkbox.js.map +2 -2
  50. package/dist/components/form-control/checkbox/CheckboxGroup.js +1 -1
  51. package/dist/components/form-control/checkbox/CheckboxGroup.js.map +2 -2
  52. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
  53. package/dist/components/form-control/checkbox/Radio.js +3 -1
  54. package/dist/components/form-control/checkbox/Radio.js.map +2 -2
  55. package/dist/components/form-control/checkbox/RadioGroup.js +1 -1
  56. package/dist/components/form-control/checkbox/RadioGroup.js.map +2 -2
  57. package/dist/components/form-control/color-picker/ColorPicker.d.ts.map +1 -1
  58. package/dist/components/form-control/color-picker/ColorPicker.js +3 -1
  59. package/dist/components/form-control/color-picker/ColorPicker.js.map +2 -2
  60. package/dist/components/form-control/combobox/Combobox.d.ts.map +1 -1
  61. package/dist/components/form-control/combobox/Combobox.js +9 -5
  62. package/dist/components/form-control/combobox/Combobox.js.map +2 -2
  63. package/dist/components/form-control/date-range-picker/DateRangePicker.js +9 -9
  64. package/dist/components/form-control/date-range-picker/DateRangePicker.js.map +2 -2
  65. package/dist/components/form-control/editor/EditorToolbar.js +3 -3
  66. package/dist/components/form-control/editor/EditorToolbar.js.map +2 -2
  67. package/dist/components/form-control/field/DatePicker.d.ts.map +1 -1
  68. package/dist/components/form-control/field/DatePicker.js +9 -3
  69. package/dist/components/form-control/field/DatePicker.js.map +2 -2
  70. package/dist/components/form-control/field/DateTimePicker.d.ts.map +1 -1
  71. package/dist/components/form-control/field/DateTimePicker.js +9 -3
  72. package/dist/components/form-control/field/DateTimePicker.js.map +2 -2
  73. package/dist/components/form-control/field/NumberInput.d.ts.map +1 -1
  74. package/dist/components/form-control/field/NumberInput.js +9 -3
  75. package/dist/components/form-control/field/NumberInput.js.map +2 -2
  76. package/dist/components/form-control/field/TextInput.d.ts.map +1 -1
  77. package/dist/components/form-control/field/TextInput.js +10 -4
  78. package/dist/components/form-control/field/TextInput.js.map +2 -2
  79. package/dist/components/form-control/field/Textarea.d.ts.map +1 -1
  80. package/dist/components/form-control/field/Textarea.js +9 -3
  81. package/dist/components/form-control/field/Textarea.js.map +2 -2
  82. package/dist/components/form-control/field/TimePicker.d.ts.map +1 -1
  83. package/dist/components/form-control/field/TimePicker.js +9 -3
  84. package/dist/components/form-control/field/TimePicker.js.map +2 -2
  85. package/dist/components/form-control/numpad/Numpad.d.ts.map +1 -1
  86. package/dist/components/form-control/numpad/Numpad.js +5 -1
  87. package/dist/components/form-control/numpad/Numpad.js.map +2 -2
  88. package/dist/components/form-control/select/Select.js +7 -7
  89. package/dist/components/form-control/select/Select.js.map +2 -2
  90. package/dist/components/form-control/state-preset/StatePreset.d.ts.map +1 -1
  91. package/dist/components/form-control/state-preset/StatePreset.js +42 -20
  92. package/dist/components/form-control/state-preset/StatePreset.js.map +2 -2
  93. package/dist/components/layout/sidebar/SidebarContainer.js +3 -3
  94. package/dist/components/layout/sidebar/SidebarContainer.js.map +2 -2
  95. package/dist/components/layout/sidebar/SidebarMenu.d.ts.map +1 -1
  96. package/dist/components/layout/sidebar/SidebarMenu.js +5 -2
  97. package/dist/components/layout/sidebar/SidebarMenu.js.map +2 -2
  98. package/dist/components/layout/topbar/Topbar.js +3 -4
  99. package/dist/components/layout/topbar/Topbar.js.map +2 -2
  100. package/dist/components/layout/topbar/TopbarMenu.js +3 -3
  101. package/dist/components/layout/topbar/TopbarMenu.js.map +2 -2
  102. package/dist/hooks/createSelectionGroup.d.ts +2 -2
  103. package/dist/hooks/createSelectionGroup.d.ts.map +1 -1
  104. package/dist/hooks/createSelectionGroup.js +5 -2
  105. package/dist/hooks/createSelectionGroup.js.map +2 -2
  106. package/dist/providers/i18n/I18nContext.d.ts +0 -4
  107. package/dist/providers/i18n/I18nContext.d.ts.map +1 -1
  108. package/dist/providers/i18n/I18nContext.js +1 -5
  109. package/dist/providers/i18n/I18nContext.js.map +2 -2
  110. package/dist/providers/i18n/locales/en.d.ts +38 -0
  111. package/dist/providers/i18n/locales/en.d.ts.map +1 -1
  112. package/dist/providers/i18n/locales/en.js +39 -1
  113. package/dist/providers/i18n/locales/en.js.map +1 -1
  114. package/dist/providers/i18n/locales/ko.d.ts +38 -0
  115. package/dist/providers/i18n/locales/ko.d.ts.map +1 -1
  116. package/dist/providers/i18n/locales/ko.js +39 -1
  117. package/dist/providers/i18n/locales/ko.js.map +1 -1
  118. package/package.json +6 -6
  119. package/src/components/data/calendar/Calendar.tsx +3 -4
  120. package/src/components/data/sheet/DataSheet.tsx +11 -11
  121. package/src/components/data/sheet/DataSheetConfigDialog.tsx +12 -10
  122. package/src/components/data/sheet/types.ts +1 -1
  123. package/src/components/disclosure/Dialog.tsx +10 -10
  124. package/src/components/disclosure/dialogZIndex.ts +1 -1
  125. package/src/components/features/crud-detail/CrudDetail.tsx +25 -25
  126. package/src/components/features/crud-sheet/CrudSheet.tsx +53 -53
  127. package/src/components/features/crud-sheet/types.ts +4 -4
  128. package/src/components/features/data-select-button/DataSelectButton.tsx +51 -21
  129. package/src/components/features/permission-table/PermissionTable.tsx +3 -3
  130. package/src/components/features/shared-data/SharedDataSelect.tsx +172 -33
  131. package/src/components/features/shared-data/SharedDataSelectButton.tsx +3 -2
  132. package/src/components/features/shared-data/SharedDataSelectList.tsx +4 -4
  133. package/src/components/feedback/notification/NotificationBanner.tsx +3 -3
  134. package/src/components/feedback/notification/NotificationBell.tsx +6 -4
  135. package/src/components/feedback/notification/NotificationProvider.tsx +3 -1
  136. package/src/components/form-control/ThemeToggle.tsx +10 -6
  137. package/src/components/form-control/checkbox/Checkbox.tsx +4 -1
  138. package/src/components/form-control/checkbox/CheckboxGroup.tsx +1 -1
  139. package/src/components/form-control/checkbox/Radio.tsx +4 -1
  140. package/src/components/form-control/checkbox/RadioGroup.tsx +1 -1
  141. package/src/components/form-control/color-picker/ColorPicker.tsx +4 -1
  142. package/src/components/form-control/combobox/Combobox.tsx +6 -3
  143. package/src/components/form-control/date-range-picker/DateRangePicker.tsx +8 -8
  144. package/src/components/form-control/editor/EditorToolbar.tsx +23 -23
  145. package/src/components/form-control/field/DatePicker.tsx +6 -3
  146. package/src/components/form-control/field/DateTimePicker.tsx +6 -3
  147. package/src/components/form-control/field/NumberInput.tsx +6 -3
  148. package/src/components/form-control/field/TextInput.tsx +7 -4
  149. package/src/components/form-control/field/Textarea.tsx +6 -3
  150. package/src/components/form-control/field/TimePicker.tsx +6 -3
  151. package/src/components/form-control/numpad/Numpad.tsx +3 -1
  152. package/src/components/form-control/select/Select.tsx +7 -7
  153. package/src/components/form-control/state-preset/StatePreset.tsx +14 -12
  154. package/src/components/layout/sidebar/SidebarContainer.tsx +3 -3
  155. package/src/components/layout/sidebar/SidebarMenu.tsx +3 -1
  156. package/src/components/layout/topbar/Topbar.tsx +3 -3
  157. package/src/components/layout/topbar/TopbarMenu.tsx +3 -3
  158. package/src/hooks/createSelectionGroup.tsx +8 -4
  159. package/src/providers/i18n/I18nContext.tsx +0 -7
  160. package/src/providers/i18n/locales/en.ts +38 -0
  161. package/src/providers/i18n/locales/ko.ts +38 -0
  162. package/tailwind.config.ts +2 -2
  163. package/tests/components/data/kanban/Kanban.selection.spec.tsx +34 -24
  164. package/tests/components/disclosure/Dialog.spec.tsx +28 -28
  165. package/tests/components/disclosure/DialogProvider.spec.tsx +51 -25
  166. package/tests/components/features/address/AddressSearch.spec.tsx +12 -4
  167. package/tests/components/features/crud-detail/CrudDetail.spec.tsx +1 -0
  168. package/tests/components/features/crud-sheet/CrudSheet.spec.tsx +30 -6
  169. package/tests/components/features/data-select-button/DataSelectButton.spec.tsx +77 -56
  170. package/tests/components/features/permission-table/PermissionTable.spec.tsx +12 -8
  171. package/tests/components/features/shared-data/SharedDataSelect.spec.tsx +172 -0
  172. package/tests/components/features/shared-data/SharedDataSelectList.spec.tsx +14 -2
  173. package/tests/components/feedback/notification/LiveRegion.spec.tsx +20 -9
  174. package/tests/components/feedback/notification/NotificationBanner.spec.tsx +64 -46
  175. package/tests/components/feedback/notification/NotificationBell.spec.tsx +70 -51
  176. package/tests/components/feedback/notification/NotificationContext.spec.tsx +105 -78
  177. package/tests/components/form-control/checkbox/Checkbox.spec.tsx +25 -20
  178. package/tests/components/form-control/checkbox/CheckboxGroup.spec.tsx +53 -30
  179. package/tests/components/form-control/checkbox/Radio.spec.tsx +25 -20
  180. package/tests/components/form-control/checkbox/RadioGroup.spec.tsx +53 -30
  181. package/tests/components/form-control/color-picker/ColorPicker.spec.tsx +24 -15
  182. package/tests/components/form-control/combobox/Combobox.spec.tsx +92 -59
  183. package/tests/components/form-control/date-range-picker/DateRangePicker.spec.tsx +2 -2
  184. package/tests/components/form-control/field/DatePicker.spec.tsx +50 -44
  185. package/tests/components/form-control/field/DateTimePicker.spec.tsx +51 -45
  186. package/tests/components/form-control/field/NumberInput.spec.tsx +53 -47
  187. package/tests/components/form-control/field/TextInput.spec.tsx +50 -44
  188. package/tests/components/form-control/field/Textarea.spec.tsx +35 -29
  189. package/tests/components/form-control/field/TimePicker.spec.tsx +43 -37
  190. package/tests/components/form-control/numpad/Numpad.spec.tsx +175 -25
  191. package/tests/components/form-control/select/Select.spec.tsx +5 -0
  192. package/tests/components/form-control/select/SelectItem.spec.tsx +1 -0
  193. package/tests/components/layout/sidebar/Sidebar.spec.tsx +79 -35
  194. package/tests/components/layout/sidebar/SidebarContainer.spec.tsx +1 -0
  195. package/tests/components/layout/sidebar/SidebarMenu.spec.tsx +28 -17
  196. package/tests/components/layout/topbar/TopbarActions.spec.tsx +41 -23
  197. package/tests/components/layout/topbar/createTopbarActions.spec.tsx +1 -0
  198. package/tests/hooks/usePrint.spec.tsx +1 -1
  199. package/tests/hooks/useRouterLink.spec.tsx +2 -0
  200. package/tests/hooks/useSyncConfig.spec.tsx +1 -0
  201. package/tests/providers/ErrorLoggerProvider.spec.tsx +1 -0
  202. package/tests/providers/PwaUpdateProvider.spec.tsx +16 -6
  203. package/tests/providers/ServiceClientContext.spec.tsx +40 -25
  204. package/tests/providers/i18n/I18nContext.spec.tsx +3 -4
  205. package/tests/providers/shared-data/SharedDataProvider.spec.tsx +2 -0
  206. package/dist/hooks/usePrint.d.ts +0 -3
  207. package/dist/hooks/usePrint.d.ts.map +0 -1
  208. package/dist/hooks/usePrint.js +0 -5
  209. package/dist/hooks/usePrint.js.map +0 -6
  210. package/src/hooks/usePrint.ts +0 -2
package/README.md CHANGED
@@ -1,218 +1,225 @@
1
1
  # @simplysm/solid
2
2
 
3
- A SolidJS UI component library for enterprise back-office applications such as ERP and MES.
3
+ SolidJS component library for the Simplysm framework. Provides form controls, layout components, data display, disclosure, feedback, providers, hooks, styles, directives, helpers, and feature-level composite components.
4
4
 
5
5
  ## Installation
6
6
 
7
- ```
7
+ ```bash
8
8
  pnpm add @simplysm/solid
9
9
  ```
10
10
 
11
- **Peer Dependencies:**
12
- - `solid-js` ^1.9
13
- - `tailwindcss` ^3.4
11
+ ## Table of Contents
12
+
13
+ - [Form Control](docs/form-control.md) — Input and selection components
14
+ - [Layout](docs/layout.md) — Page scaffolding and form layout
15
+ - [Data](docs/data.md) — Tables, lists, calendars, and kanban boards
16
+ - [Display](docs/display.md) — Visual presentation components
17
+ - [Disclosure](docs/disclosure.md) — Show/hide patterns (collapse, dropdown, dialog, tabs)
18
+ - [Feedback](docs/feedback.md) — Notifications, busy states, print, and progress
19
+ - [Providers](docs/providers.md) — Application-level context providers
20
+ - [Hooks](docs/hooks.md) — Reactive primitives and utility hooks
21
+ - [Styles, Directives, Helpers](docs/styles.md) — Design tokens, CSS patterns, directives, and utilities
22
+ - [Features](docs/features.md) — High-level composite components (CRUD, permissions, address search)
23
+
24
+ ---
25
+
26
+ ## Form Control
27
+
28
+ Input and selection components for user data entry. All field components support `required`, `validate`, `disabled`, `inset`, `size`, and `touchMode` unless noted.
29
+
30
+ See [docs/form-control.md](docs/form-control.md) for full signatures and props.
31
+
32
+ | Component | Description |
33
+ |-----------|-------------|
34
+ | [`Button`](docs/form-control.md#button) | Interactive button with semantic themes and variants |
35
+ | [`Select`](docs/form-control.md#select) | Dropdown supporting single/multiple selection and hierarchical items |
36
+ | [`Combobox`](docs/form-control.md#combobox) | Async search combo box with optional free-text input |
37
+ | [`TextInput`](docs/form-control.md#textinput) | Text/password/email input with format transformation |
38
+ | [`NumberInput`](docs/form-control.md#numberinput) | Number input with comma formatting and min/max constraints |
39
+ | [`DatePicker`](docs/form-control.md#datepicker) | Date picker with configurable granularity (year/month/date) |
40
+ | [`DateTimePicker`](docs/form-control.md#datetimepicker) | Date-time picker (minute/second granularity) |
41
+ | [`TimePicker`](docs/form-control.md#timepicker) | Time picker (minute/second granularity) |
42
+ | [`Textarea`](docs/form-control.md#textarea) | Multi-line text input with auto-grow |
43
+ | [`Checkbox`](docs/form-control.md#checkbox) | Boolean checkbox input |
44
+ | [`Radio`](docs/form-control.md#radio) | Boolean radio input |
45
+ | [`CheckboxGroup`](docs/form-control.md#checkboxgroup) | Group of checkboxes for multi-value selection |
46
+ | [`RadioGroup`](docs/form-control.md#radiogroup) | Group of radio buttons for single-value selection |
47
+ | [`ColorPicker`](docs/form-control.md#colorpicker) | Color picker returning `#RRGGBB` hex strings |
48
+ | [`DateRangePicker`](docs/form-control.md#daterangepicker) | Date range picker with period type (day/month/range) |
49
+ | [`RichTextEditor`](docs/form-control.md#richtexteditor) | Rich text editor powered by Tiptap, outputs HTML |
50
+ | [`Numpad`](docs/form-control.md#numpad) | On-screen numeric keypad for touch input |
51
+ | [`StatePreset`](docs/form-control.md#statepreset) | Named state snapshot save/restore backed by SyncConfig |
52
+ | [`ThemeToggle`](docs/form-control.md#themetoggle) | Button cycling through light/system/dark themes |
53
+ | [`Invalid`](docs/form-control.md#invalid) | Validation wrapper with error indicator |
54
+ | [`Field.styles`](docs/form-control.md#field-styles-fieldstyles) | Style utilities for custom field components |
55
+ | [`Checkbox.styles`](docs/form-control.md#checkbox-styles-checkboxstyles) | Style utilities for custom checkbox/radio components |
14
56
 
15
- **Optional Peer Dependencies:**
16
- - `echarts` ^6.0 — Required for Echarts chart components
57
+ ---
17
58
 
18
- ## Configuration
59
+ ## Layout
19
60
 
20
- Register the Tailwind preset in your app's `tailwind.config.ts`:
61
+ Structural layout components for page scaffolding and form organization.
62
+
63
+ See [docs/layout.md](docs/layout.md) for full details.
64
+
65
+ | Component | Description |
66
+ |-----------|-------------|
67
+ | [`FormGroup`](docs/layout.md#formgroup) | Responsive form layout with label-field pairs |
68
+ | [`FormTable`](docs/layout.md#formtable) | Styled HTML table for form layouts |
69
+ | [`Sidebar`](docs/layout.md#sidebar) | Responsive sidebar navigation |
70
+ | [`SidebarContext`](docs/layout.md#sidebarcontext) | Context and utilities for the Sidebar |
71
+ | [`Topbar`](docs/layout.md#topbar) | Top navigation bar with actions, menu, and user slots |
72
+ | [`TopbarContext`](docs/layout.md#topbarcontext) | Context for injecting page-level topbar actions |
73
+
74
+ ---
75
+
76
+ ## Data
77
+
78
+ Components for displaying and managing tabular, list, calendar, and kanban data.
21
79
 
22
- ```typescript
23
- import simplysmPreset from "@simplysm/solid/tailwind.config";
24
- export default {
25
- darkMode: "class",
26
- presets: [simplysmPreset],
27
- content: ["./src/**/*.{ts,tsx}", ...simplysmPreset.content],
28
- };
29
- ```
80
+ See [docs/data.md](docs/data.md) for full details.
81
+
82
+ | Component | Description |
83
+ |-----------|-------------|
84
+ | [`Table`](docs/data.md#table) | Styled HTML table |
85
+ | [`List`](docs/data.md#list) | Keyboard-navigable list with tree support |
86
+ | [`ListContext`](docs/data.md#listcontext) | Context for tracking nesting level in List |
87
+ | [`ListItem.styles`](docs/data.md#listitemstyles) | Style constants for custom list item implementations |
88
+ | [`Pagination`](docs/data.md#pagination) | Page navigation control |
89
+ | [`DataSheet`](docs/data.md#datasheet) | Feature-rich data grid with sorting, pagination, selection, tree, and reorder |
90
+ | [`Calendar`](docs/data.md#calendar) | Monthly calendar view rendering items on dates |
91
+ | [`Kanban`](docs/data.md#kanban) | Kanban board with drag-and-drop card reordering |
92
+ | [`KanbanContext`](docs/data.md#kanbancontext) | Internal context and types for Kanban |
93
+
94
+ ---
95
+
96
+ ## Display
97
+
98
+ Visual presentation components for rendering data, media, and decorative elements.
30
99
 
31
- Import base CSS in your entry point:
100
+ See [docs/display.md](docs/display.md) for full details.
101
+
102
+ | Component | Description |
103
+ |-----------|-------------|
104
+ | [`Barcode`](docs/display.md#barcode) | Renders barcodes using bwip-js |
105
+ | [`Card`](docs/display.md#card) | White surface card with shadow and hover animation |
106
+ | [`Echarts`](docs/display.md#echarts) | Apache ECharts chart with lazy loading and auto-resize |
107
+ | [`Icon`](docs/display.md#icon) | Renders a Tabler icon SVG |
108
+ | [`Tag`](docs/display.md#tag) | Inline badge/tag with semantic color theming |
109
+ | [`Link`](docs/display.md#link) | Styled anchor with theme and disabled support |
110
+ | [`Alert`](docs/display.md#alert) | Styled alert/callout block |
32
111
 
33
- ```typescript
34
- import "@simplysm/solid/tailwind.css";
35
- ```
112
+ ---
36
113
 
37
- Wrap your app with providers:
38
-
39
- ```tsx
40
- import { SystemProvider, DialogProvider, PrintProvider } from "@simplysm/solid";
41
- <SystemProvider clientName="my-app">
42
- <DialogProvider>
43
- <PrintProvider>
44
- <App />
45
- </PrintProvider>
46
- </DialogProvider>
47
- </SystemProvider>
48
- ```
114
+ ## Disclosure
115
+
116
+ Components for showing and hiding content.
117
+
118
+ See [docs/disclosure.md](docs/disclosure.md) for full details.
119
+
120
+ | Component | Description |
121
+ |-----------|-------------|
122
+ | [`Collapse`](docs/disclosure.md#collapse) | Animated height-collapse panel |
123
+ | [`Dropdown`](docs/disclosure.md#dropdown) | Popup dropdown with trigger/content slots |
124
+ | [`Dialog`](docs/disclosure.md#dialog) | Dialog with header, actions, resize/move support |
125
+ | [`DialogContext`](docs/disclosure.md#dialogcontext) | Hook for programmatic dialog management |
126
+ | [`DialogProvider`](docs/disclosure.md#dialogprovider) | Provider enabling `useDialog()` |
127
+ | [`DialogInstanceContext`](docs/disclosure.md#dialoginstancecontext) | Context for dialog result communication |
128
+ | [`Tabs`](docs/disclosure.md#tabs) | Tab navigation component |
129
+
130
+ ---
131
+
132
+ ## Feedback
133
+
134
+ Components for user feedback.
135
+
136
+ See [docs/feedback.md](docs/feedback.md) for full details.
137
+
138
+ | Component | Description |
139
+ |-----------|-------------|
140
+ | [`NotificationContext`](docs/feedback.md#notificationcontext) | Hook for in-app notifications |
141
+ | [`NotificationBell`](docs/feedback.md#notificationbell) | Bell icon with unread count |
142
+ | [`NotificationBanner`](docs/feedback.md#notificationbanner) | Portal-based notification banner |
143
+ | [`BusyContext`](docs/feedback.md#busycontext) | Hook for global busy state overlays |
144
+ | [`BusyContainer`](docs/feedback.md#busycontainer) | Container with spinner/bar loading overlay |
145
+ | [`PrintContext`](docs/feedback.md#printcontext) | Hook for print and PDF generation |
146
+ | [`PrintProvider`](docs/feedback.md#printprovider) | Provider enabling `usePrint()` |
147
+ | [`Print`](docs/feedback.md#print) | Printable content layout with pages |
148
+ | [`PrintInstanceContext`](docs/feedback.md#printinstancecontext) | Context for print component communication |
149
+ | [`Progress`](docs/feedback.md#progress) | Progress bar component |
150
+
151
+ ---
152
+
153
+ ## Providers
154
+
155
+ Application-level context providers for configuration, storage, theming, i18n, and shared data.
156
+
157
+ See [docs/providers.md](docs/providers.md) for full details.
158
+
159
+ | Provider | Description |
160
+ |----------|-------------|
161
+ | [`ConfigContext`](docs/providers.md#configcontext) | Application-wide configuration context |
162
+ | [`SyncStorageContext`](docs/providers.md#syncstoragecontext) | Persistent key-value storage with pluggable adapter |
163
+ | [`LoggerContext`](docs/providers.md#loggercontext) | Structured logging with pluggable adapter |
164
+ | [`ThemeContext`](docs/providers.md#themecontext) | Light/dark/system theme management |
165
+ | [`ServiceClientContext`](docs/providers.md#serviceclientcontext) | WebSocket service client context |
166
+ | [`SystemProvider`](docs/providers.md#systemprovider) | Composite root provider for applications |
167
+ | [`SharedDataContext`](docs/providers.md#shareddatacontext) | Shared data synchronized with the server |
168
+ | [`SharedDataChangeEvent`](docs/providers.md#shareddatachangeevent) | Event class for shared data change notifications |
169
+ | [`I18nContext`](docs/providers.md#i18ncontext) | Internationalization with built-in EN/KO dictionaries |
170
+
171
+ ---
172
+
173
+ ## Hooks
174
+
175
+ Reactive primitives and utility hooks.
176
+
177
+ See [docs/hooks.md](docs/hooks.md) for full details.
178
+
179
+ | Hook | Description |
180
+ |------|-------------|
181
+ | [`useLocalStorage`](docs/hooks.md#uselocalstorage) | Reactive localStorage accessor with SSR safety |
182
+ | [`useSyncConfig`](docs/hooks.md#usesyncconfig) | Persistent configuration backed by SyncStorage |
183
+ | [`useLogger`](docs/hooks.md#uselogger) | Structured logger from the logger context |
184
+ | [`createControllableSignal`](docs/hooks.md#createcontrollablesignal) | Signal for controlled/uncontrolled patterns |
185
+ | [`createControllableStore`](docs/hooks.md#createcontrollablestore) | Store for controlled/uncontrolled patterns |
186
+ | [`createIMEHandler`](docs/hooks.md#createimehandler) | IME composition handlers for CJK input |
187
+ | [`createMountTransition`](docs/hooks.md#createmounttransition) | Mount/unmount lifecycle with animation support |
188
+ | [`createSlotSignal`](docs/hooks.md#createslotsignal) | Slot registration for compound components |
189
+ | [`useRouterLink`](docs/hooks.md#userouterlink) | SolidJS Router navigation click handler |
190
+
191
+ ---
192
+
193
+ ## Styles, Directives, Helpers
194
+
195
+ Design tokens, CSS class patterns, directives, and utilities.
196
+
197
+ See [docs/styles.md](docs/styles.md) for full details.
198
+
199
+ | Export | Description |
200
+ |--------|-------------|
201
+ | [`tokens.styles`](docs/styles.md#tokensstyles) | Design token constants and type definitions |
202
+ | [`patterns.styles`](docs/styles.md#patternsstyles) | Reusable Tailwind class patterns |
203
+ | [`ripple`](docs/styles.md#ripple-directive) | Material-style ripple click effect directive |
204
+ | [`mergeStyles`](docs/styles.md#mergestyles) | Merge multiple CSS style values into one object |
205
+
206
+ ---
207
+
208
+ ## Features
209
+
210
+ High-level composite components combining multiple primitives into application-ready patterns.
211
+
212
+ See [docs/features.md](docs/features.md) for full details.
49
213
 
50
- | Provider | Required | Description |
51
- |----------|----------|-------------|
52
- | `SystemProvider` | Yes | Infrastructure: config, theme, logger, notification, busy, service client, shared data |
53
- | `DialogProvider` | If using `useDialog()` | Programmatic dialog management |
54
- | `PrintProvider` | If using `usePrint()` | Printing and PDF generation |
55
-
56
- ## Source Index
57
-
58
- ### Form Control
59
-
60
- | Source | Exports | Description | Test |
61
- |--------|---------|-------------|------|
62
- | `src/components/form-control/Button.tsx` | `ButtonProps`, `Button` | Button with ripple effect, theme/variant/size/inset options | `Button.spec.tsx` |
63
- | `src/components/form-control/select/Select.tsx` | `SelectProps`, `Select` | Dropdown selection with single/multiple mode, search, hierarchical items | `Select.spec.tsx` |
64
- | `src/components/form-control/combobox/Combobox.tsx` | `ComboboxProps`, `Combobox` | Autocomplete with async search, debounce, and custom value support | `Combobox.spec.tsx` |
65
- | `src/components/form-control/field/TextInput.tsx` | `TextInputProps`, `TextInput` | Text input with IME support, format mask, prefix slot, validation | `TextInput.spec.tsx` |
66
- | `src/components/form-control/field/NumberInput.tsx` | `NumberInputProps`, `NumberInput` | Numeric input with thousand-separator, min/max, prefix slot, validation | `NumberInput.spec.tsx` |
67
- | `src/components/form-control/field/DatePicker.tsx` | `DatePickerProps`, `DatePicker` | Date input supporting year/month/date units (DateOnly type) | `DatePicker.spec.tsx` |
68
- | `src/components/form-control/field/DateTimePicker.tsx` | `DateTimePickerProps`, `DateTimePicker` | Date-time input supporting minute/second units (DateTime type) | `DateTimePicker.spec.tsx` |
69
- | `src/components/form-control/field/TimePicker.tsx` | `TimePickerProps`, `TimePicker` | Time input supporting minute/second units (Time type) | `TimePicker.spec.tsx` |
70
- | `src/components/form-control/field/Textarea.tsx` | `TextareaProps`, `Textarea` | Auto-height textarea with IME support, minRows, validation | `Textarea.spec.tsx` |
71
- | `src/components/form-control/field/Field.styles.ts` | `FieldSize`, `fieldBaseClass`, `fieldSizeClasses`, `fieldInsetClass`, `fieldInsetHeightClass`, `fieldInsetSizeHeightClasses`, `fieldDisabledClass`, `textAreaBaseClass`, `textAreaSizeClasses`, `fieldInputClass`, `fieldGapClasses`, `getFieldWrapperClass`, `getTextareaWrapperClass` | Shared Tailwind class tokens and wrapper class generators for field components | - |
72
- | `src/components/form-control/checkbox/Checkbox.tsx` | `CheckboxProps`, `Checkbox` | Checkbox with ripple, controlled/uncontrolled, inset/inline modes | `Checkbox.spec.tsx` |
73
- | `src/components/form-control/checkbox/Checkbox.styles.ts` | `CheckboxSize`, `checkboxBaseClass`, `indicatorBaseClass`, `checkedClass`, `checkboxSizeClasses`, `checkboxInsetClass`, `checkboxInsetSizeHeightClasses`, `checkboxInlineClass`, `checkboxDisabledClass` | Tailwind class tokens shared by Checkbox and Radio components | - |
74
- | `src/components/form-control/checkbox/Radio.tsx` | `RadioProps`, `Radio` | Radio button (single-select variant of Checkbox) with ripple effect | `Radio.spec.tsx` |
75
- | `src/components/form-control/checkbox/CheckboxGroup.tsx` | `CheckboxGroup` | Group of checkboxes with multi-select value binding and validation | `CheckboxGroup.spec.tsx` |
76
- | `src/components/form-control/checkbox/RadioGroup.tsx` | `RadioGroup` | Group of radio buttons with single-select value binding and validation | `RadioGroup.spec.tsx` |
77
- | `src/components/form-control/color-picker/ColorPicker.tsx` | `ColorPickerProps`, `ColorPicker` | Native color picker input (#RRGGBB) with size and inset support | `ColorPicker.spec.tsx` |
78
- | `src/components/form-control/date-range-picker/DateRangePicker.tsx` | `DateRangePeriodType`, `DateRangePickerProps`, `DateRangePicker` | Date range input with day/month/range period type selection | `DateRangePicker.spec.tsx` |
79
- | `src/components/form-control/editor/RichTextEditor.tsx` | `RichTextEditorProps`, `RichTextEditor` | WYSIWYG rich text editor (Tiptap) with toolbar, table, image support | - |
80
- | `src/components/form-control/numpad/Numpad.tsx` | `NumpadProps`, `Numpad` | On-screen numeric keypad with optional ENT/minus buttons | `Numpad.spec.tsx` |
81
- | `src/components/form-control/state-preset/StatePreset.tsx` | `StatePresetProps`, `StatePreset` | Named state preset chips — save, restore, and overwrite arbitrary values | - |
82
- | `src/components/form-control/ThemeToggle.tsx` | `ThemeToggleProps`, `ThemeToggle` | Icon button that cycles light/system/dark theme modes | - |
83
- | `src/components/form-control/Invalid.tsx` | `InvalidProps`, `Invalid` | Validation wrapper that shows border or dot indicator with native form validity | `Invalid.spec.tsx` |
84
-
85
- ### Layout
86
-
87
- | Source | Exports | Description | Test |
88
- |--------|---------|-------------|------|
89
- | `src/components/layout/FormGroup.tsx` | `FormGroupProps`, `FormGroupItemProps`, `FormGroup` | Labeled field group in vertical or inline (horizontal) layout | `FormGroup.spec.tsx` |
90
- | `src/components/layout/FormTable.tsx` | `FormTableProps`, `FormTable` | Table layout for aligned label/field rows in forms | `FormTable.spec.tsx` |
91
- | `src/components/layout/sidebar/Sidebar.tsx` | `SidebarProps`, `SidebarContainerProps`, `SidebarMenuProps`, `SidebarUserMenu`, `SidebarUserProps`, `Sidebar` | Collapsible sidebar with slide animation, responsive desktop/mobile behavior | `Sidebar.spec.tsx` |
92
- | `src/components/layout/sidebar/SidebarContext.ts` | `SM_MEDIA_QUERY`, `SidebarContextValue`, `SidebarContext`, `useSidebarContext`, `useSidebarContextOptional` | Context providing toggle state for Sidebar open/close coordination | - |
93
- | `src/components/layout/topbar/Topbar.tsx` | `TopbarProps`, `TopbarContainerProps`, `TopbarMenuItem`, `TopbarMenuProps`, `TopbarUserMenu`, `TopbarUserProps`, `Topbar` | App topbar with optional sidebar toggle button and menu/user slots | - |
94
- | `src/components/layout/topbar/TopbarContext.ts` | `TopbarContextValue`, `TopbarContext`, `useTopbarActionsAccessor`, `createTopbarActions` | Context for injecting page-level action buttons into the topbar | `createTopbarActions.spec.tsx` |
95
-
96
- ### Data
97
-
98
- | Source | Exports | Description | Test |
99
- |--------|---------|-------------|------|
100
- | `src/components/data/Table.tsx` | `TableProps`, `Table` | Simple bordered HTML table with optional inset (borderless) style | `Table.spec.tsx` |
101
- | `src/components/data/list/List.tsx` | `ListProps`, `List` | Keyboard-navigable list container with tree expand/collapse support | `List.spec.tsx` |
102
- | `src/components/data/list/ListContext.ts` | `ListContextValue`, `ListContext`, `useListContext` | Context carrying nesting level for recursive List rendering | - |
103
- | `src/components/data/list/ListItem.styles.ts` | `listItemBaseClass`, `listItemSizeClasses`, `listItemSelectedClass`, `listItemDisabledClass`, `listItemReadonlyClass`, `listItemIndentGuideClass`, `listItemContentClass`, `getListItemSelectedIconClass` | Tailwind class tokens for ListItem states (selected, disabled, readonly, indent) | - |
104
- | `src/components/data/Pagination.tsx` | `PaginationProps`, `Pagination` | Page navigation bar with first/prev/next/last buttons | `Pagination.spec.tsx` |
105
- | `src/components/data/sheet/DataSheet.tsx` | `DataSheet` | Feature-rich data grid with sorting, selection, tree expand, reorder, pagination | `DataSheet.spec.tsx` |
106
- | `src/components/data/sheet/DataSheet.styles.ts` | `dataSheetContainerClass`, `tableClass`, `thClass`, `thContentClass`, `tdClass`, `summaryThClass`, `insetContainerClass`, `insetTableClass`, `defaultContainerClass`, `sortableThClass`, `sortIconClass`, `toolbarClass`, `fixedClass`, `fixedLastClass`, `resizerClass`, `resizeIndicatorClass`, `featureThClass`, `featureTdClass`, `expandIndentGuideClass`, `expandIndentGuideLineClass`, `expandToggleClass`, `selectSingleClass`, `selectSingleSelectedClass`, `selectSingleUnselectedClass`, `reorderHandleClass`, `reorderIndicatorClass`, `featureCellWrapperClass`, `featureCellBodyWrapperClass`, `featureCellClickableClass`, `featureCellBodyClickableClass`, `reorderCellWrapperClass`, `configButtonClass` | Tailwind class tokens for all DataSheet internal visual elements | - |
107
- | `src/components/data/sheet/types.ts` | `DataSheetProps`, `DataSheetColumnProps`, `DataSheetCellContext`, `SortingDef`, `DataSheetConfig`, `DataSheetConfigColumn`, `DataSheetColumnDef`, `HeaderDef`, `FlatItem`, `DataSheetDragPosition`, `DataSheetReorderEvent`, `DataSheetConfigColumnInfo` | TypeScript types and interfaces for DataSheet props, column defs, and internal structures | - |
108
- | `src/components/data/calendar/Calendar.tsx` | `CalendarProps`, `Calendar` | Monthly calendar grid that renders arbitrary items on their DateOnly date | - |
109
- | `src/components/data/kanban/Kanban.tsx` | `KanbanCardProps`, `KanbanLaneProps`, `KanbanProps`, `Kanban` | Kanban board with drag-and-drop card reordering and multi-select | `Kanban.selection.spec.tsx` |
110
- | `src/components/data/kanban/KanbanContext.ts` | `KanbanCardRef`, `KanbanDropInfo`, `KanbanDropTarget`, `KanbanContextValue`, `KanbanContext`, `useKanbanContext`, `KanbanLaneContextValue`, `KanbanLaneContext`, `useKanbanLaneContext` | Contexts sharing drag state and selection state between Kanban board and lanes | - |
111
-
112
- ### Display
113
-
114
- | Source | Exports | Description | Test |
115
- |--------|---------|-------------|------|
116
- | `src/components/display/Barcode.tsx` | `BarcodeType`, `BarcodeProps`, `Barcode` | Barcode/QR code renderer using bwip-js with many format options | `Barcode.spec.tsx` |
117
- | `src/components/display/Card.tsx` | `CardProps`, `Card` | Elevated card container with shadow and fade-in animation | `Card.spec.tsx` |
118
- | `src/components/display/Echarts.tsx` | `EchartsProps`, `Echarts` | Apache ECharts wrapper with resize observer and busy overlay support | - |
119
- | `src/components/display/Icon.tsx` | `IconProps`, `Icon` | Wrapper for Tabler icon components with size normalization | - |
120
- | `src/components/display/Tag.tsx` | `TagTheme`, `TagProps`, `Tag` | Inline colored badge/tag with semantic theme options | `Tag.spec.tsx` |
121
- | `src/components/display/Link.tsx` | `LinkTheme`, `LinkProps`, `Link` | Themed anchor link with disabled state support | `Link.spec.tsx` |
122
- | `src/components/display/Alert.tsx` | `AlertTheme`, `AlertProps`, `Alert` | Block alert box with semantic theme background colors | `Alert.spec.tsx` |
123
-
124
- ### Disclosure
125
-
126
- | Source | Exports | Description | Test |
127
- |--------|---------|-------------|------|
128
- | `src/components/disclosure/Collapse.tsx` | `CollapseProps`, `Collapse` | Animated height-based expand/collapse container | `Collapse.spec.tsx` |
129
- | `src/components/disclosure/Dropdown.tsx` | `DropdownProps`, `Dropdown` | Positioned floating dropdown with Portal rendering and keyboard navigation | `Dropdown.spec.tsx` |
130
- | `src/components/disclosure/Dialog.tsx` | `DialogProps`, `Dialog` | Modal dialog with draggable/resizable/closable options and backdrop | `Dialog.spec.tsx` |
131
- | `src/components/disclosure/DialogContext.ts` | `DialogDefaults`, `DialogShowOptions`, `DialogContextValue`, `DialogDefaultsContext`, `DialogContext`, `useDialog` | Context and hook for opening programmatic dialogs imperatively | - |
132
- | `src/components/disclosure/DialogInstanceContext.ts` | `DialogInstance`, `DialogInstanceContext`, `useDialogInstance` | Context providing close() to components rendered inside a dialog | - |
133
- | `src/components/disclosure/DialogProvider.tsx` | `DialogProviderProps`, `DialogProvider` | Provider that manages programmatic dialog stack via useDialog() | `DialogProvider.spec.tsx` |
134
- | `src/components/disclosure/Tabs.tsx` | `Tabs` | Tab bar with controlled/uncontrolled active tab selection | `Tabs.spec.tsx` |
135
-
136
- ### Feedback
137
-
138
- | Source | Exports | Description | Test |
139
- |--------|---------|-------------|------|
140
- | `src/components/feedback/notification/NotificationContext.ts` | `NotificationTheme`, `NotificationAction`, `NotificationItem`, `NotificationOptions`, `NotificationUpdateOptions`, `NotificationContextValue`, `NotificationContext`, `useNotification` | Context and hook for creating/updating/removing toast notifications | `NotificationContext.spec.tsx` |
141
- | `src/components/feedback/notification/NotificationBell.tsx` | `NotificationBellProps`, `NotificationBell` | Bell icon button that shows notification history dropdown | `NotificationBell.spec.tsx` |
142
- | `src/components/feedback/notification/NotificationBanner.tsx` | `NotificationBanner` | Fixed top-right banner that displays incoming notifications | `NotificationBanner.spec.tsx` |
143
- | `src/components/feedback/busy/BusyContext.ts` | `BusyVariant`, `BusyContextValue`, `BusyContext`, `useBusy` | Context and hook for showing/hiding spinner or progress bar overlay | - |
144
- | `src/components/feedback/busy/BusyContainer.tsx` | `BusyContainerProps`, `BusyContainer` | Container that overlays a spinner or progress bar while busy | `BusyContainer.spec.tsx` |
145
- | `src/components/feedback/print/PrintContext.ts` | `PrintOptions`, `PrintContextValue`, `PrintContext`, `usePrint` | Context and hook for sending content to printer or exporting as PDF | - |
146
- | `src/components/feedback/print/PrintProvider.tsx` | `PrintProvider` | Provider that implements toPrinter() and toPdf() via jsPDF and html-to-image | - |
147
- | `src/components/feedback/print/Print.tsx` | `Print` | Declarative print content wrapper with Print.Page sub-component | `Print.spec.tsx` |
148
- | `src/components/feedback/print/PrintInstanceContext.ts` | `PrintInstance`, `PrintInstanceContext`, `usePrintInstance` | Context providing ready() callback to print content components | - |
149
- | `src/components/feedback/Progress.tsx` | `ProgressTheme`, `ProgressProps`, `Progress` | Horizontal progress bar with theme and size options | - |
150
-
151
- ### Providers
152
-
153
- | Source | Exports | Description | Test |
154
- |--------|---------|-------------|------|
155
- | `src/providers/ConfigContext.tsx` | `AppConfig`, `ConfigContext`, `useConfig`, `ConfigProvider` | App-wide configuration provider (clientName as storage key prefix) | `ConfigContext.spec.tsx` |
156
- | `src/providers/SyncStorageContext.tsx` | `StorageAdapter`, `SyncStorageContextValue`, `SyncStorageContext`, `useSyncStorage`, `SyncStorageProvider` | Pluggable storage adapter provider (localStorage by default, swappable) | `SyncStorageContext.spec.tsx` |
157
- | `src/providers/LoggerContext.tsx` | `LogAdapter`, `LoggerContextValue`, `LoggerContext`, `LoggerProvider` | Logger provider with chainable adapter decoration (consola by default) | `LoggerContext.spec.tsx` |
158
- | `src/providers/ThemeContext.tsx` | `ThemeMode`, `ResolvedTheme`, `useTheme`, `ThemeProvider` | Theme provider managing light/dark/system mode with OS detection | - |
159
- | `src/providers/ServiceClientContext.ts` | `ServiceClientContextValue`, `ServiceClientContext`, `useServiceClient` | Context for managing named WebSocket service client connections | `ServiceClientContext.spec.tsx` |
160
- | `src/providers/shared-data/SharedDataContext.ts` | `SharedDataDefinition`, `SharedDataAccessor`, `SharedDataValue`, `SharedDataContext`, `useSharedData` | Context for reactive server-synced shared data with live-update subscriptions | `SharedDataProvider.spec.tsx` |
161
- | `src/providers/shared-data/SharedDataChangeEvent.ts` | `SharedDataChangeEvent` | Service event definition for broadcasting shared data changes | - |
162
- | `src/providers/SystemProvider.tsx` | `BusyVariant`, `SystemProvider` | Composite root provider that composes all infrastructure providers | - |
163
- | `src/providers/i18n/I18nContext.tsx` | `useI18n`, `useI18nOptional`, `I18nProvider` | Internationalization provider with t(), locale management, and localStorage persistence | `I18nContext.spec.tsx` |
164
- | `src/providers/i18n/I18nContext.types.ts` | `I18nContextValue`, `I18nConfigureOptions`, `FlatDict` | TypeScript types for I18n context value, configure options, and flat dict | - |
165
-
166
- ### Hooks
167
-
168
- | Source | Exports | Description | Test |
169
- |--------|---------|-------------|------|
170
- | `src/hooks/useLocalStorage.ts` | `useLocalStorage` | Reactive localStorage signal with clientName-prefixed keys | `useLocalStorage.spec.tsx` |
171
- | `src/hooks/useSyncConfig.ts` | `useSyncConfig` | Persistent config signal synced via SyncStorageProvider (falls back to localStorage) | `useSyncConfig.spec.tsx` |
172
- | `src/hooks/useLogger.ts` | `Logger`, `useLogger` | Logger hook that delegates to LoggerContext adapter (consola fallback) | `useLogger.spec.tsx` |
173
- | `src/hooks/createControllableSignal.ts` | `createControllableSignal` | Controlled/uncontrolled signal pattern hook supporting functional setters | `createControllableSignal.spec.ts` |
174
- | `src/hooks/createControllableStore.ts` | `createControllableStore` | Controlled/uncontrolled store pattern hook for object/array state | - |
175
- | `src/hooks/createIMEHandler.ts` | `createIMEHandler` | IME composition handler that delays value commit to prevent Korean input breakage | `createIMEHandler.spec.ts` |
176
- | `src/hooks/createMountTransition.ts` | `createMountTransition` | Mount/unmount animation hook providing mounted and animating signals | `createMountTransition.spec.ts` |
177
- | `src/hooks/createSlotSignal.ts` | `SlotAccessor`, `createSlotSignal` | Signal factory for registering JSX slot content from child components | - |
178
- | `src/hooks/useRouterLink.ts` | `RouterLinkOptions`, `useRouterLink` | Router navigation hook with Shift+click new-window support | `useRouterLink.spec.tsx` |
179
-
180
- ### Styles
181
-
182
- | Source | Exports | Description | Test |
183
- |--------|---------|-------------|------|
184
- | `src/styles/tokens.styles.ts` | `borderDefault`, `borderSubtle`, `bgSurface`, `textDefault`, `textMuted`, `textPlaceholder`, `disabledOpacity`, `ComponentSize`, `ComponentSizeCompact`, `paddingXs`, `paddingSm`, `paddingLg`, `paddingXl`, `SemanticTheme`, `themeTokens` | Design token constants (colors, sizes, themes) as Tailwind class strings | - |
185
- | `src/styles/patterns.styles.ts` | `iconButtonBase`, `insetFocusOutline`, `insetFocusOutlineSelf`, `insetBase`, `fieldSurface`, `inputBase` | Reusable Tailwind class patterns for icon buttons, inset fields, and input elements | - |
186
-
187
- ### Directives
188
-
189
- | Source | Exports | Description | Test |
190
- |--------|---------|-------------|------|
191
- | `src/directives/ripple.ts` | `ripple` | SolidJS directive that adds a Material-style ripple effect on click | `ripple.spec.tsx` |
192
-
193
- ### Helpers
194
-
195
- | Source | Exports | Description | Test |
196
- |--------|---------|-------------|------|
197
- | `src/helpers/mergeStyles.ts` | `mergeStyles` | Merges multiple JSX style objects or strings into a single style object | `mergeStyles.spec.ts` |
198
- | `src/helpers/createAppStructure.ts` | `AppStructureGroupItem`, `AppStructureLeafItem`, `AppStructureItem`, `AppStructureSubPerm`, `AppMenu`, `AppPerm`, `AppFlatPerm`, `AppRoute`, `AppFlatMenu`, `AppStructure`, `createAppStructure` | Builds typed app route/menu/permission structures from a nested definition tree | `createAppStructure.spec.tsx` |
199
- | `src/helpers/createSlotComponent.ts` | `createSlotComponent` | Factory for creating slot registration sub-components that inject into parent context | - |
200
-
201
- ### Features
202
-
203
- | Source | Exports | Description | Test |
204
- |--------|---------|-------------|------|
205
- | `src/components/features/address/AddressSearch.tsx` | `AddressSearchResult`, `AddressSearchContent` | Daum Postcode address search dialog content component | `AddressSearch.spec.tsx` |
206
- | `src/components/features/shared-data/SharedDataSelect.tsx` | `SharedDataSelectProps`, `SharedDataSelect` | Select dropdown bound to a SharedDataAccessor with search and edit action | - |
207
- | `src/components/features/shared-data/SharedDataSelectButton.tsx` | `SharedDataSelectButtonProps`, `SharedDataSelectButton` | Button-trigger selector bound to a SharedDataAccessor via modal list | - |
208
- | `src/components/features/shared-data/SharedDataSelectList.tsx` | `SharedDataSelectListProps`, `SharedDataSelectListComponent`, `SharedDataSelectList` | Paginated list for selecting a single item from a SharedDataAccessor | `SharedDataSelectList.spec.tsx` |
209
- | `src/components/features/data-select-button/DataSelectButton.tsx` | `DataSelectModalResult`, `DataSelectButtonProps`, `DataSelectButton` | Button that opens a modal dialog for selecting items from an async data source | `DataSelectButton.spec.tsx` |
210
- | `src/components/features/crud-sheet/CrudSheet.tsx` | `CrudSheet` | Full CRUD data grid with inline/modal edit, Excel import/export, search | `CrudSheet.spec.tsx` |
211
- | `src/components/features/crud-sheet/types.ts` | `SearchResult`, `InlineEditConfig`, `ModalEditConfig`, `ExcelConfig`, `SelectResult`, `CrudSheetCellContext`, `CrudSheetContext`, `CrudSheetProps`, `CrudSheetColumnDef`, `CrudSheetColumnProps`, `CrudSheetFilterDef`, `CrudSheetToolsDef`, `CrudSheetHeaderDef` | TypeScript types and interfaces for CrudSheet configuration and callbacks | - |
212
- | `src/components/features/crud-detail/CrudDetail.tsx` | `CrudDetail` | Detail form panel with load/save/refresh lifecycle and change tracking | `CrudDetail.spec.tsx` |
213
- | `src/components/features/crud-detail/types.ts` | `CrudDetailInfo`, `CrudDetailContext`, `CrudDetailProps`, `CrudDetailToolsDef`, `CrudDetailBeforeDef`, `CrudDetailAfterDef` | TypeScript types and interfaces for CrudDetail props and context | - |
214
- | `src/components/features/permission-table/PermissionTable.tsx` | `PermissionTableProps`, `collectAllPerms`, `filterByModules`, `changePermCheck`, `PermissionTable` | Permission matrix table for managing role-based access per module/action | `PermissionTable.spec.tsx` |
215
-
216
- ## License
217
-
218
- Apache-2.0
214
+ | Component | Description |
215
+ |-----------|-------------|
216
+ | [`AddressSearchContent`](docs/features.md#addresssearchcontent) | Korean address search dialog via Daum Postcode API |
217
+ | [`SharedDataSelect`](docs/features.md#shareddataselect) | Select pre-wired to a SharedDataAccessor |
218
+ | [`SharedDataSelectButton`](docs/features.md#shareddataselectbutton) | DataSelectButton pre-wired to a SharedDataAccessor |
219
+ | [`SharedDataSelectList`](docs/features.md#shareddataselectlist) | Searchable list with pagination for SharedDataAccessor |
220
+ | [`DataSelectButton`](docs/features.md#dataselectbutton) | Generic trigger button opening a selection dialog |
221
+ | [`CrudSheet`](docs/features.md#crudsheet) | Full CRUD data grid with inline/dialog edit and Excel support |
222
+ | [`CrudDetail`](docs/features.md#cruddetail) | Detail form with load/save/delete lifecycle |
223
+ | [`PermissionTable`](docs/features.md#permissiontable) | Permission editor grid with cascading checkbox logic |
224
+ | [`createAppStructure`](docs/features.md#createappstructure) | Typed app structure builder (routes, menus, permissions) |
225
+ | [`createSlotComponent`](docs/features.md#createslotcomponent) | Factory for slot registration in compound components |
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\calendar\\Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,GAAG,EAAc,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,MAAM,WAAW,aAAa,CAAC,MAAM,CAAE,SAAQ,IAAI,CACjD,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,EACpC,UAAU,CACX;IACC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC;IACvD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA0BD,iBAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,eAgHzD;AAED,eAAO,MAAM,QAAQ,qBAAe,CAAC"}
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\calendar\\Calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,GAAG,EAAc,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,MAAM,WAAW,aAAa,CAAC,MAAM,CAAE,SAAQ,IAAI,CACjD,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,EACpC,UAAU,CACX;IACC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC;IACvD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA0BD,iBAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,eA+GzD;AAED,eAAO,MAAM,QAAQ,qBAAe,CAAC"}
@@ -11,7 +11,7 @@ import { DateOnly } from "@simplysm/core-common";
11
11
  import clsx from "clsx";
12
12
  import { twMerge } from "tailwind-merge";
13
13
  import { createControllableSignal } from "../../../hooks/createControllableSignal.js";
14
- import { useI18nOptional } from "../../../providers/i18n/I18nContext.js";
14
+ import { useI18n } from "../../../providers/i18n/I18nContext.js";
15
15
  const baseClass = clsx(
16
16
  "w-full",
17
17
  "border-separate border-spacing-0",
@@ -39,7 +39,7 @@ function CalendarBase(props) {
39
39
  value: () => local.yearMonth ?? new DateOnly().setDay(1),
40
40
  onChange: () => local.onYearMonthChange
41
41
  });
42
- const i18n = useI18nOptional();
42
+ const i18n = useI18n();
43
43
  const weekNames = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
44
44
  const weekHeaders = createMemo(() => {
45
45
  const start = weekStartDay();
@@ -47,15 +47,7 @@ function CalendarBase(props) {
47
47
  length: 7
48
48
  }, (_, i) => {
49
49
  const key = weekNames[(start + i) % 7];
50
- return (i18n == null ? void 0 : i18n.t(`calendar.weeks.${key}`)) ?? {
51
- sun: "Sun",
52
- mon: "Mon",
53
- tue: "Tue",
54
- wed: "Wed",
55
- thu: "Thu",
56
- fri: "Fri",
57
- sat: "Sat"
58
- }[key];
50
+ return i18n.t(`calendar.weeks.${key}`);
59
51
  });
60
52
  });
61
53
  const dataTable = createMemo(() => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/data/calendar/Calendar.tsx"],
4
- "mappings": "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",
5
- "names": ["createMemo", "For", "splitProps", "DateOnly", "clsx", "twMerge", "createControllableSignal", "useI18nOptional", "baseClass", "notCurrentClass", "dayClass", "notCurrentDayClass", "contentClass", "CalendarBase", "props", "local", "rest", "weekStartDay", "minDaysInFirstWeek", "yearMonth", "value", "setDay", "onChange", "onYearMonthChange", "i18n", "weekNames", "weekHeaders", "start", "Array", "from", "length", "_", "i", "key", "t", "sun", "mon", "tue", "wed", "thu", "fri", "sat", "dataTable", "ym", "items", "getDate", "getItemDate", "itemMap", "Map", "date", "tick", "arr", "get", "push", "item", "index", "set", "firstDate", "getWeekSeqStartDate", "result", "r", "row", "c", "addDays", "getClassName", "class", "_el$", "_tmpl$", "_el$2", "firstChild", "_el$3", "_el$4", "nextSibling", "_$spread", "_$mergeProps", "_$insert", "_$createComponent", "each", "children", "header", "_el$5", "_tmpl$2", "_el$6", "_tmpl$3", "cell", "_el$7", "_tmpl$4", "_el$8", "_el$9", "day", "_$className", "entry", "renderItem", "_$effect", "_p$", "_v$", "month", "_v$2", "e", "undefined", "Calendar"]
4
+ "mappings": "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",
5
+ "names": ["createMemo", "For", "splitProps", "DateOnly", "clsx", "twMerge", "createControllableSignal", "useI18n", "baseClass", "notCurrentClass", "dayClass", "notCurrentDayClass", "contentClass", "CalendarBase", "props", "local", "rest", "weekStartDay", "minDaysInFirstWeek", "yearMonth", "value", "setDay", "onChange", "onYearMonthChange", "i18n", "weekNames", "weekHeaders", "start", "Array", "from", "length", "_", "i", "key", "t", "dataTable", "ym", "items", "getDate", "getItemDate", "itemMap", "Map", "date", "tick", "arr", "get", "push", "item", "index", "set", "firstDate", "getWeekSeqStartDate", "result", "r", "row", "c", "addDays", "getClassName", "class", "_el$", "_tmpl$", "_el$2", "firstChild", "_el$3", "_el$4", "nextSibling", "_$spread", "_$mergeProps", "_$insert", "_$createComponent", "each", "children", "header", "_el$5", "_tmpl$2", "_el$6", "_tmpl$3", "cell", "_el$7", "_tmpl$4", "_el$8", "_el$9", "day", "_$className", "entry", "renderItem", "_$effect", "_p$", "_v$", "month", "_v$2", "e", "undefined", "Calendar"]
6
6
  }
@@ -25,13 +25,13 @@ import { Checkbox } from "../../form-control/checkbox/Checkbox.js";
25
25
  import { Pagination } from "../Pagination.js";
26
26
  import { useSyncConfig } from "../../../hooks/useSyncConfig.js";
27
27
  import { DialogContext } from "../../disclosure/DialogContext.js";
28
- import { useI18nOptional } from "../../../providers/i18n/I18nContext.js";
28
+ import { useI18n } from "../../../providers/i18n/I18nContext.js";
29
29
  import "./DataSheet.css";
30
30
  import { configButtonClass, defaultContainerClass, expandIndentGuideClass, expandIndentGuideLineClass, expandToggleClass, featureCellBodyClickableClass, featureCellBodyWrapperClass, featureCellClickableClass, featureCellWrapperClass, featureTdClass, featureThClass, fixedClass, fixedLastClass, insetContainerClass, insetTableClass, reorderCellWrapperClass, reorderHandleClass, reorderIndicatorClass, resizeIndicatorClass, resizerClass, selectSingleClass, selectSingleSelectedClass, selectSingleUnselectedClass, dataSheetContainerClass, sortableThClass, sortIconClass, summaryThClass, tableClass, tdClass, thClass, thContentClass, toolbarClass } from "./DataSheet.styles.js";
31
31
  const DataSheet = (props) => {
32
32
  const [local] = splitProps(props, ["items", "persistKey", "hideConfigBar", "inset", "contentStyle", "sorts", "onSortsChange", "autoSort", "page", "onPageChange", "totalPageCount", "itemsPerPage", "displayPageCount", "expandedItems", "onExpandedItemsChange", "getChildren", "selectMode", "selectedItems", "onSelectedItemsChange", "autoSelect", "isItemSelectable", "cellClass", "cellStyle", "onItemsReorder", "class", "children"]);
33
- const modal = useContext(DialogContext);
34
- const i18n = useI18nOptional();
33
+ const dialog = useContext(DialogContext);
34
+ const i18n = useI18n();
35
35
  const resolved = children(() => local.children);
36
36
  const columnDefs = createMemo(() => resolved.toArray().filter(isDataSheetColumnDef));
37
37
  const [config, setConfig] = local.persistKey != null && local.persistKey !== "" ? useSyncConfig(`sheet.${local.persistKey}`, {
@@ -75,8 +75,8 @@ const DataSheet = (props) => {
75
75
  columnRecord: record
76
76
  });
77
77
  }
78
- async function openConfigModal() {
79
- if (!modal) return;
78
+ async function openConfigDialog() {
79
+ if (!dialog) return;
80
80
  const {
81
81
  DataSheetConfigDialog
82
82
  } = await import("./DataSheetConfigDialog");
@@ -90,7 +90,7 @@ const DataSheet = (props) => {
90
90
  width: col.width
91
91
  }));
92
92
  const currentConfig = config();
93
- const result = await modal.show(() => _$createComponent(DataSheetConfigDialog, {
93
+ const result = await dialog.show(() => _$createComponent(DataSheetConfigDialog, {
94
94
  columnInfos,
95
95
  currentConfig
96
96
  }), {
@@ -526,7 +526,7 @@ const DataSheet = (props) => {
526
526
  var _el$ = _tmpl$5(), _el$5 = _el$.firstChild, _el$6 = _el$5.firstChild, _el$7 = _el$6.firstChild, _el$1 = _el$7.nextSibling, _el$11 = _el$1.nextSibling, _el$12 = _el$6.nextSibling, _el$13 = _el$12.nextSibling;
527
527
  _$insert(_el$, _$createComponent(Show, {
528
528
  get when() {
529
- return _$memo(() => !!!local.hideConfigBar)() && (modal != null || effectivePageCount() > 1);
529
+ return _$memo(() => !!!local.hideConfigBar)() && (dialog != null || effectivePageCount() > 1);
530
530
  },
531
531
  get children() {
532
532
  var _el$2 = _tmpl$2(), _el$3 = _el$2.firstChild;
@@ -552,10 +552,10 @@ const DataSheet = (props) => {
552
552
  }
553
553
  }), _el$3);
554
554
  _$insert(_el$2, _$createComponent(Show, {
555
- when: modal != null,
555
+ when: dialog != null,
556
556
  get children() {
557
557
  var _el$4 = _tmpl$();
558
- _el$4.$$click = openConfigModal;
558
+ _el$4.$$click = openConfigDialog;
559
559
  _$className(_el$4, configButtonClass);
560
560
  _$insert(_el$4, _$createComponent(Icon, {
561
561
  icon: IconSettings,
@@ -634,7 +634,7 @@ const DataSheet = (props) => {
634
634
  }
635
635
  }));
636
636
  _$effect((_p$) => {
637
- var _v$7 = twMerge(featureThClass, fixedClass, "z-[5]", isExpandColLastFixed() ? fixedLastClass : void 0), _v$8 = featureHeaderRowspan(), _v$9 = isAllExpanded() ? (i18n == null ? void 0 : i18n.t("dataSheet.collapseAll")) ?? "Collapse all" : (i18n == null ? void 0 : i18n.t("dataSheet.expandAll")) ?? "Expand all";
637
+ var _v$7 = twMerge(featureThClass, fixedClass, "z-[5]", isExpandColLastFixed() ? fixedLastClass : void 0), _v$8 = featureHeaderRowspan(), _v$9 = isAllExpanded() ? i18n.t("dataSheet.collapseAll") : i18n.t("dataSheet.expandAll");
638
638
  _v$7 !== _p$.e && _$className(_el$16, _p$.e = _v$7);
639
639
  _v$8 !== _p$.t && _$setAttribute(_el$16, "rowspan", _p$.t = _v$8);
640
640
  _v$9 !== _p$.a && _$setAttribute(_el$18, "title", _p$.a = _v$9);