@godxjp/ui 19.0.0 → 19.2.0

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 (445) hide show
  1. package/README.md +25 -128
  2. package/dist/app/app-provider.d.ts +1 -1
  3. package/dist/app/app-provider.js +3 -0
  4. package/dist/app/theme-axes.d.ts +4 -15
  5. package/dist/app/timezones.d.ts +1 -4
  6. package/dist/components/charts/area-chart.d.ts +2 -3
  7. package/dist/components/charts/bar-chart.d.ts +2 -3
  8. package/dist/components/charts/chart-frame.d.ts +7 -16
  9. package/dist/components/charts/chart-summary.d.ts +2 -2
  10. package/dist/components/charts/compact-bar-trend.d.ts +9 -24
  11. package/dist/components/charts/index.d.ts +1 -6
  12. package/dist/components/data-display/badge.d.ts +2 -12
  13. package/dist/components/data-display/card.d.ts +21 -41
  14. package/dist/components/data-display/carousel.d.ts +1 -2
  15. package/dist/components/data-display/code-block.d.ts +4 -0
  16. package/dist/components/data-display/code-block.js +24 -0
  17. package/dist/components/data-display/data-table.d.ts +15 -37
  18. package/dist/components/data-display/data-table.js +1 -3
  19. package/dist/components/data-display/descriptions.d.ts +2 -6
  20. package/dist/components/data-display/descriptions.js +0 -2
  21. package/dist/components/data-display/index.d.ts +4 -0
  22. package/dist/components/data-display/index.js +4 -0
  23. package/dist/components/data-display/list-row.d.ts +3 -22
  24. package/dist/components/data-display/permission-matrix.d.ts +7 -20
  25. package/dist/components/data-display/progress.d.ts +1 -1
  26. package/dist/components/data-display/prose.d.ts +4 -0
  27. package/dist/components/data-display/prose.js +20 -0
  28. package/dist/components/data-display/service-launcher-card.d.ts +3 -10
  29. package/dist/components/data-display/table.d.ts +20 -80
  30. package/dist/components/data-display/table.js +0 -3
  31. package/dist/components/data-display/timeline.d.ts +3 -5
  32. package/dist/components/data-entry/branch-scope-picker.d.ts +2 -19
  33. package/dist/components/data-entry/branch-scope-picker.js +0 -1
  34. package/dist/components/data-entry/calendar.d.ts +3 -2
  35. package/dist/components/data-entry/calendar.js +58 -3
  36. package/dist/components/data-entry/cascader.js +3 -1
  37. package/dist/components/data-entry/checkbox-group.js +12 -5
  38. package/dist/components/data-entry/checkbox.js +30 -21
  39. package/dist/components/data-entry/command-palette.d.ts +8 -22
  40. package/dist/components/data-entry/date-picker.d.ts +4 -5
  41. package/dist/components/data-entry/date-picker.js +12 -3
  42. package/dist/components/data-entry/date-range-picker.d.ts +1 -1
  43. package/dist/components/data-entry/date-range-picker.js +17 -6
  44. package/dist/components/data-entry/form-errors.d.ts +7 -18
  45. package/dist/components/data-entry/form-field.d.ts +1 -1
  46. package/dist/components/data-entry/form-field.js +15 -6
  47. package/dist/components/data-entry/form.d.ts +1 -9
  48. package/dist/components/data-entry/input.d.ts +16 -14
  49. package/dist/components/data-entry/input.js +13 -3
  50. package/dist/components/data-entry/month-picker.js +6 -4
  51. package/dist/components/data-entry/month-range-picker.d.ts +4 -6
  52. package/dist/components/data-entry/month-range-picker.js +11 -5
  53. package/dist/components/data-entry/number-input.d.ts +1 -5
  54. package/dist/components/data-entry/number-input.js +1 -0
  55. package/dist/components/data-entry/radio.js +19 -6
  56. package/dist/components/data-entry/search-select.d.ts +3 -5
  57. package/dist/components/data-entry/search-select.js +8 -2
  58. package/dist/components/data-entry/select.d.ts +15 -2
  59. package/dist/components/data-entry/select.js +57 -10
  60. package/dist/components/data-entry/switch.js +9 -2
  61. package/dist/components/data-entry/textarea.d.ts +10 -16
  62. package/dist/components/data-entry/textarea.js +8 -1
  63. package/dist/components/data-entry/time-picker.d.ts +3 -5
  64. package/dist/components/data-entry/tree-select.js +3 -1
  65. package/dist/components/data-entry/upload-types.d.ts +1 -5
  66. package/dist/components/data-entry/use-upload-draft.d.ts +0 -4
  67. package/dist/components/feedback/dialog.d.ts +6 -15
  68. package/dist/components/feedback/overlay-header-tone.d.ts +1 -1
  69. package/dist/components/feedback/sheet.d.ts +3 -10
  70. package/dist/components/feedback/sheet.js +1 -1
  71. package/dist/components/feedback/sonner.js +2 -3
  72. package/dist/components/general/activity.d.ts +4 -30
  73. package/dist/components/general/button.js +1 -10
  74. package/dist/components/general/logo.d.ts +6 -28
  75. package/dist/components/general/reveal.d.ts +3 -9
  76. package/dist/components/general/typography.d.ts +1 -3
  77. package/dist/components/layout/account-chip.d.ts +8 -0
  78. package/dist/components/layout/account-chip.js +45 -0
  79. package/dist/components/layout/auth-divider.d.ts +2 -9
  80. package/dist/components/layout/auth-shell.d.ts +1 -14
  81. package/dist/components/layout/breadcrumb.d.ts +1 -5
  82. package/dist/components/layout/centered-shell.d.ts +4 -18
  83. package/dist/components/layout/error-surface.d.ts +11 -28
  84. package/dist/components/layout/error-surface.js +4 -1
  85. package/dist/components/layout/index.d.ts +2 -0
  86. package/dist/components/layout/index.js +2 -0
  87. package/dist/components/layout/legal-document-shell.d.ts +5 -28
  88. package/dist/components/layout/master-detail.d.ts +2 -18
  89. package/dist/components/layout/page-container.js +0 -1
  90. package/dist/components/layout/responsive-grid.d.ts +6 -1
  91. package/dist/components/layout/responsive-grid.js +9 -2
  92. package/dist/components/layout/service-role-panel.d.ts +7 -19
  93. package/dist/components/layout/sidebar.d.ts +5 -27
  94. package/dist/components/layout/sidebar.js +0 -1
  95. package/dist/components/layout/split-pane.d.ts +0 -7
  96. package/dist/components/layout/topbar.d.ts +1 -14
  97. package/dist/components/navigation/app-setting-picker.js +1 -3
  98. package/dist/components/navigation/filter-bar.d.ts +1 -6
  99. package/dist/components/navigation/pagination-utils.d.ts +2 -12
  100. package/dist/components/navigation/tabs-scroll.d.ts +2 -36
  101. package/dist/components/navigation/tabs.js +4 -8
  102. package/dist/components/query/data-state.d.ts +2 -2
  103. package/dist/components/ui/credential-reveal.d.ts +1 -4
  104. package/dist/components/ui/hover-card.d.ts +1 -2
  105. package/dist/components/ui/separator.d.ts +2 -15
  106. package/dist/components/ui/toggle-group.d.ts +1 -5
  107. package/dist/components/ui/toggle.d.ts +6 -31
  108. package/dist/email/brand-mark.d.ts +6 -34
  109. package/dist/email/color.d.ts +7 -17
  110. package/dist/email/geometry.d.ts +4 -8
  111. package/dist/email/index.d.ts +4 -48
  112. package/dist/email/inline-style.d.ts +3 -9
  113. package/dist/email/urgency.d.ts +2 -7
  114. package/dist/form/form-context.d.ts +2 -5
  115. package/dist/form/form-root.d.ts +1 -2
  116. package/dist/i18n/messages/en.json +4 -0
  117. package/dist/i18n/messages/ja.json +4 -0
  118. package/dist/i18n/messages/vi.json +4 -0
  119. package/dist/inertia/index.d.ts +2 -10
  120. package/dist/lib/control-styles.d.ts +10 -21
  121. package/dist/lib/control-styles.js +4 -6
  122. package/dist/lib/datetime/format-date.d.ts +1 -4
  123. package/dist/lib/field-a11y.d.ts +31 -36
  124. package/dist/lib/field-a11y.js +16 -2
  125. package/dist/lib/format.d.ts +4 -8
  126. package/dist/lib/hooks.d.ts +6 -12
  127. package/dist/lib/permission-grid.d.ts +3 -18
  128. package/dist/lib/query-error.d.ts +3 -3
  129. package/dist/props/components/app.prop.d.ts +19 -27
  130. package/dist/props/components/charts.prop.d.ts +2 -3
  131. package/dist/props/components/data-display.prop.d.ts +48 -72
  132. package/dist/props/components/data-entry.prop.d.ts +41 -30
  133. package/dist/props/components/form.prop.d.ts +2 -6
  134. package/dist/props/components/general.prop.d.ts +11 -27
  135. package/dist/props/components/layout.prop.d.ts +89 -260
  136. package/dist/props/components/navigation.prop.d.ts +27 -42
  137. package/dist/props/registry.d.ts +31 -0
  138. package/dist/props/registry.js +33 -0
  139. package/dist/props/vocabulary/data.prop.d.ts +18 -49
  140. package/dist/props/vocabulary/index.d.ts +1 -1
  141. package/dist/props/vocabulary/interaction.prop.d.ts +10 -12
  142. package/dist/props/vocabulary/layout.prop.d.ts +8 -30
  143. package/dist/props/vocabulary/shared.prop.d.ts +3 -2
  144. package/dist/styles/alert-layout.css +1 -32
  145. package/dist/styles/badge-layout.css +4 -18
  146. package/dist/styles/base.css +14 -113
  147. package/dist/styles/card-layout.css +6 -128
  148. package/dist/styles/chart-layout.css +2 -17
  149. package/dist/styles/control.css +380 -458
  150. package/dist/styles/core.css +21 -0
  151. package/dist/styles/data-display-layout.css +175 -94
  152. package/dist/styles/data-entry-layout.css +0 -45
  153. package/dist/styles/density.css +1 -30
  154. package/dist/styles/dialog-layout.css +5 -69
  155. package/dist/styles/focus-ring.css +13 -87
  156. package/dist/styles/fonts.css +1 -31
  157. package/dist/styles/form-layout.css +7 -91
  158. package/dist/styles/index.css +2 -20
  159. package/dist/styles/layout.css +38 -456
  160. package/dist/styles/logo-layout.css +1 -35
  161. package/dist/styles/motion.css +3 -42
  162. package/dist/styles/navigation-layout.css +3 -50
  163. package/dist/styles/shell-layout.css +37 -403
  164. package/dist/styles/table-layout.css +16 -274
  165. package/dist/styles/text-layout.css +7 -21
  166. package/dist/styles/toggle.css +1 -23
  167. package/dist/theme/dxs.canonical.css +1 -55
  168. package/dist/theme/example.service.css +1 -26
  169. package/dist/theme/famgia.service.css +5 -15
  170. package/dist/tokens/axes.css +3 -40
  171. package/dist/tokens/base.css +1 -4
  172. package/dist/tokens/components/activity.css +6 -42
  173. package/dist/tokens/components/badge.css +4 -13
  174. package/dist/tokens/components/banner.css +4 -9
  175. package/dist/tokens/components/card.css +32 -88
  176. package/dist/tokens/components/chart.css +9 -26
  177. package/dist/tokens/components/control.css +37 -222
  178. package/dist/tokens/components/data-display.css +28 -79
  179. package/dist/tokens/components/data-entry.css +5 -19
  180. package/dist/tokens/components/descriptions.css +7 -27
  181. package/dist/tokens/components/email.css +38 -84
  182. package/dist/tokens/components/error-surface.css +2 -18
  183. package/dist/tokens/components/feedback.css +27 -124
  184. package/dist/tokens/components/form.css +13 -45
  185. package/dist/tokens/components/legal-document.css +16 -41
  186. package/dist/tokens/components/list-row.css +11 -36
  187. package/dist/tokens/components/logo.css +2 -57
  188. package/dist/tokens/components/navigation.css +16 -94
  189. package/dist/tokens/components/scroll-area.css +2 -18
  190. package/dist/tokens/components/separator.css +8 -30
  191. package/dist/tokens/components/sheet.css +3 -14
  192. package/dist/tokens/components/shell.css +53 -307
  193. package/dist/tokens/components/sidebar.css +5 -22
  194. package/dist/tokens/components/table.css +19 -140
  195. package/dist/tokens/components/toggle.css +3 -65
  196. package/dist/tokens/components/upload.css +7 -43
  197. package/dist/tokens/foundation.css +108 -383
  198. package/dist/tokens/semantic/layout.css +33 -207
  199. package/docs/CANONICAL-CONTRACTS.md +206 -0
  200. package/docs/COMPONENTS.md +157 -0
  201. package/docs/COMPOSITION-VS-COMPONENT.md +105 -0
  202. package/docs/CONSUMER-RULES.md +14 -0
  203. package/docs/CUSTOMER-THEMING.md +162 -0
  204. package/docs/DATETIME.md +69 -0
  205. package/docs/DEVELOPMENT.md +173 -0
  206. package/docs/FORMS.md +143 -0
  207. package/docs/FRAME-A11Y-CI.md +267 -0
  208. package/docs/FRAME-COVERAGE-LEDGER.md +123 -0
  209. package/docs/FRAME-COVERAGE-REPORT.md +140 -0
  210. package/docs/FRAME-COVERAGE-STANDARD.md +65 -0
  211. package/docs/FRAME-COVERAGE.md +29 -0
  212. package/docs/PROPS-REGISTRY.md +61 -0
  213. package/docs/PROPS-VOCABULARY.md +100 -0
  214. package/docs/README.md +60 -0
  215. package/docs/REGISTRY.md +70 -0
  216. package/docs/SPACING.md +56 -0
  217. package/docs/STANDARDS-vocabulary-tokens.md +48 -0
  218. package/docs/TESTING.md +98 -0
  219. package/docs/TOKENS.md +347 -0
  220. package/docs/asset-modules.d.ts +46 -0
  221. package/docs/assets/cover-terrain.svg +6 -0
  222. package/docs/assets/portrait-amber.svg +5 -0
  223. package/docs/assets/portrait-clay.svg +5 -0
  224. package/docs/assets/portrait-indigo.svg +5 -0
  225. package/docs/assets/portrait-iris.svg +5 -0
  226. package/docs/assets/portrait-moss.svg +5 -0
  227. package/docs/assets/portrait-plum.svg +5 -0
  228. package/docs/assets/portrait-slate.svg +5 -0
  229. package/docs/charts/compact-bar-trend.tsx +328 -0
  230. package/docs/charts/size-tiers.tsx +192 -0
  231. package/docs/data-display/accordion.tsx +99 -0
  232. package/docs/data-display/avatar.tsx +355 -0
  233. package/docs/data-display/badge.tsx +247 -0
  234. package/docs/data-display/card/examples/detail-panel.tsx +106 -0
  235. package/docs/data-display/card/index.md +3 -0
  236. package/docs/data-display/card/index.tsx +285 -0
  237. package/docs/data-display/carousel.tsx +156 -0
  238. package/docs/data-display/charts.tsx +198 -0
  239. package/docs/data-display/code-block.tsx +90 -0
  240. package/docs/data-display/collapsible.tsx +162 -0
  241. package/docs/data-display/credential-reveal.tsx +145 -0
  242. package/docs/data-display/data-table/examples/approval-queue.tsx +212 -0
  243. package/docs/data-display/data-table/examples/grid-features.tsx +158 -0
  244. package/docs/data-display/data-table/examples/list-page.tsx +175 -0
  245. package/docs/data-display/data-table/index.md +5 -0
  246. package/docs/data-display/data-table/index.tsx +295 -0
  247. package/docs/data-display/descriptions.tsx +143 -0
  248. package/docs/data-display/empty-state.tsx +164 -0
  249. package/docs/data-display/hover-card.tsx +181 -0
  250. package/docs/data-display/list-row.tsx +420 -0
  251. package/docs/data-display/permission-matrix.tsx +184 -0
  252. package/docs/data-display/popover-touch.tsx +27 -0
  253. package/docs/data-display/popover.tsx +245 -0
  254. package/docs/data-display/progress.tsx +84 -0
  255. package/docs/data-display/prose.tsx +105 -0
  256. package/docs/data-display/qr-code.tsx +68 -0
  257. package/docs/data-display/scroll-area.tsx +271 -0
  258. package/docs/data-display/service-launcher-card.tsx +145 -0
  259. package/docs/data-display/stat-card.tsx +99 -0
  260. package/docs/data-display/table.tsx +251 -0
  261. package/docs/data-display/timeline.tsx +112 -0
  262. package/docs/data-display/touch-actions.tsx +36 -0
  263. package/docs/data-display/tree-list.tsx +107 -0
  264. package/docs/data-entry/branch-scope-picker.tsx +123 -0
  265. package/docs/data-entry/calendar.tsx +180 -0
  266. package/docs/data-entry/cascader.tsx +378 -0
  267. package/docs/data-entry/checkbox.tsx +256 -0
  268. package/docs/data-entry/color-picker.tsx +117 -0
  269. package/docs/data-entry/command-palette.tsx +179 -0
  270. package/docs/data-entry/command.tsx +262 -0
  271. package/docs/data-entry/country-picker-recipe.tsx +170 -0
  272. package/docs/data-entry/date-picker.tsx +191 -0
  273. package/docs/data-entry/date-range-picker.tsx +149 -0
  274. package/docs/data-entry/form/examples/employee-settings.tsx +267 -0
  275. package/docs/data-entry/form/examples/invoice-form.tsx +387 -0
  276. package/docs/data-entry/form-field/examples/a11y-contract.tsx +240 -0
  277. package/docs/data-entry/form-field/examples/create-form.tsx +105 -0
  278. package/docs/data-entry/form-field/index.md +8 -0
  279. package/docs/data-entry/form-field/index.tsx +326 -0
  280. package/docs/data-entry/form-inertia.tsx +80 -0
  281. package/docs/data-entry/form-root.tsx +102 -0
  282. package/docs/data-entry/form.tsx +724 -0
  283. package/docs/data-entry/input-otp.tsx +231 -0
  284. package/docs/data-entry/input.tsx +114 -0
  285. package/docs/data-entry/label.tsx +100 -0
  286. package/docs/data-entry/month-picker.tsx +101 -0
  287. package/docs/data-entry/month-range-picker.tsx +115 -0
  288. package/docs/data-entry/number-input.tsx +240 -0
  289. package/docs/data-entry/password-input.tsx +106 -0
  290. package/docs/data-entry/password-strength.tsx +97 -0
  291. package/docs/data-entry/radio-group.tsx +95 -0
  292. package/docs/data-entry/rating.tsx +87 -0
  293. package/docs/data-entry/search-input.tsx +120 -0
  294. package/docs/data-entry/select-async-contracts.tsx +108 -0
  295. package/docs/data-entry/select-matrix.tsx +204 -0
  296. package/docs/data-entry/select.tsx +369 -0
  297. package/docs/data-entry/slider.tsx +130 -0
  298. package/docs/data-entry/switch.tsx +67 -0
  299. package/docs/data-entry/tag-input.tsx +108 -0
  300. package/docs/data-entry/textarea.tsx +209 -0
  301. package/docs/data-entry/time-picker.tsx +99 -0
  302. package/docs/data-entry/toggle-count.tsx +293 -0
  303. package/docs/data-entry/toggle-group.tsx +225 -0
  304. package/docs/data-entry/toggle.tsx +127 -0
  305. package/docs/data-entry/transfer.tsx +97 -0
  306. package/docs/data-entry/tree-select.tsx +204 -0
  307. package/docs/data-entry/upload.tsx +184 -0
  308. package/docs/feedback/alert-dialog.tsx +270 -0
  309. package/docs/feedback/alert.tsx +248 -0
  310. package/docs/feedback/banner.tsx +183 -0
  311. package/docs/feedback/danger-confirm.tsx +88 -0
  312. package/docs/feedback/dialog-touch.tsx +24 -0
  313. package/docs/feedback/dialog.tsx +193 -0
  314. package/docs/feedback/sheet.tsx +410 -0
  315. package/docs/feedback/skeleton.tsx +111 -0
  316. package/docs/feedback/toast.tsx +135 -0
  317. package/docs/feedback/tooltip.tsx +171 -0
  318. package/docs/feedback/two-factor-setup.tsx +68 -0
  319. package/docs/foundation/_email-specimen.ts +274 -0
  320. package/docs/foundation/colors.tsx +202 -0
  321. package/docs/foundation/density.tsx +232 -0
  322. package/docs/foundation/email-tokens.tsx +306 -0
  323. package/docs/foundation/radius-shadow.tsx +152 -0
  324. package/docs/foundation/spacing.tsx +211 -0
  325. package/docs/foundation/typography.tsx +147 -0
  326. package/docs/general/activity.tsx +224 -0
  327. package/docs/general/button/examples/destructive-confirm.tsx +90 -0
  328. package/docs/general/button/examples/form-actions.tsx +85 -0
  329. package/docs/general/button/examples/toolbar.tsx +160 -0
  330. package/docs/general/button/index.md +12 -0
  331. package/docs/general/button/index.tsx +211 -0
  332. package/docs/general/logo.tsx +131 -0
  333. package/docs/general/reveal.tsx +41 -0
  334. package/docs/general/typography.tsx +152 -0
  335. package/docs/layout/account-chip.tsx +72 -0
  336. package/docs/layout/admin-collection.tsx +122 -0
  337. package/docs/layout/app-shell.tsx +374 -0
  338. package/docs/layout/aspect-ratio.tsx +119 -0
  339. package/docs/layout/auth-account-summary.tsx +103 -0
  340. package/docs/layout/auth-divider.tsx +28 -0
  341. package/docs/layout/auth-footer.tsx +37 -0
  342. package/docs/layout/auth-identity.tsx +36 -0
  343. package/docs/layout/auth-recovery/examples/mfa-challenge.md +41 -0
  344. package/docs/layout/auth-recovery/examples/mfa-challenge.tsx +254 -0
  345. package/docs/layout/auth-recovery/examples/mobile-390.md +25 -0
  346. package/docs/layout/auth-recovery/examples/mobile-390.tsx +82 -0
  347. package/docs/layout/auth-recovery/examples/password-recovery.md +24 -0
  348. package/docs/layout/auth-recovery/examples/password-recovery.tsx +197 -0
  349. package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.md +27 -0
  350. package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.tsx +156 -0
  351. package/docs/layout/auth-recovery/index.md +140 -0
  352. package/docs/layout/auth-recovery/index.tsx +96 -0
  353. package/docs/layout/auth-shell-context.tsx +103 -0
  354. package/docs/layout/auth-shell-device.tsx +112 -0
  355. package/docs/layout/auth-shell-registration.tsx +335 -0
  356. package/docs/layout/auth-shell-variants.tsx +139 -0
  357. package/docs/layout/auth-shell.tsx +59 -0
  358. package/docs/layout/auth-stack.tsx +40 -0
  359. package/docs/layout/centered-shell.tsx +102 -0
  360. package/docs/layout/error-surface/examples/application-403.tsx +84 -0
  361. package/docs/layout/error-surface/examples/application-404.tsx +77 -0
  362. package/docs/layout/error-surface/examples/system-500.tsx +47 -0
  363. package/docs/layout/error-surface/examples/system-503.tsx +48 -0
  364. package/docs/layout/error-surface/index.md +153 -0
  365. package/docs/layout/error-surface/index.tsx +239 -0
  366. package/docs/layout/flex.tsx +262 -0
  367. package/docs/layout/legal-document-shell/_data.ts +110 -0
  368. package/docs/layout/legal-document-shell/examples/desktop-1440.md +12 -0
  369. package/docs/layout/legal-document-shell/examples/desktop-1440.tsx +83 -0
  370. package/docs/layout/legal-document-shell/examples/mobile-390.md +22 -0
  371. package/docs/layout/legal-document-shell/examples/mobile-390.tsx +70 -0
  372. package/docs/layout/legal-document-shell/examples/tablet-1024.md +3 -0
  373. package/docs/layout/legal-document-shell/examples/tablet-1024.tsx +84 -0
  374. package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.md +18 -0
  375. package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.tsx +61 -0
  376. package/docs/layout/legal-document-shell/index.md +51 -0
  377. package/docs/layout/legal-document-shell/index.tsx +101 -0
  378. package/docs/layout/master-detail.tsx +387 -0
  379. package/docs/layout/org-switcher.tsx +131 -0
  380. package/docs/layout/page-container.tsx +946 -0
  381. package/docs/layout/resizable-panel.tsx +419 -0
  382. package/docs/layout/responsive-grid.tsx +235 -0
  383. package/docs/layout/separator.tsx +327 -0
  384. package/docs/layout/service-role-panel.tsx +144 -0
  385. package/docs/layout/sidebar.tsx +586 -0
  386. package/docs/layout/split-pane.tsx +451 -0
  387. package/docs/layout/topbar.tsx +347 -0
  388. package/docs/navigation/app-setting-picker.tsx +141 -0
  389. package/docs/navigation/breadcrumb.tsx +128 -0
  390. package/docs/navigation/context-menu.tsx +117 -0
  391. package/docs/navigation/dropdown-menu.tsx +213 -0
  392. package/docs/navigation/filter-bar.tsx +227 -0
  393. package/docs/navigation/menubar.tsx +141 -0
  394. package/docs/navigation/navigation-menu.tsx +165 -0
  395. package/docs/navigation/pagination.tsx +241 -0
  396. package/docs/navigation/steps.tsx +263 -0
  397. package/docs/navigation/tabs-rtl.tsx +28 -0
  398. package/docs/navigation/tabs.tsx +308 -0
  399. package/docs/navigation/toolbar.tsx +339 -0
  400. package/docs/providers/app-provider.tsx +191 -0
  401. package/docs/providers/format-date.tsx +230 -0
  402. package/docs/query/button-refetch.tsx +160 -0
  403. package/docs/query/data-state.tsx +192 -0
  404. package/docs/query/infinite-query-state.tsx +93 -0
  405. package/docs/query/mutation-feedback.tsx +70 -0
  406. package/docs/query/prefetch-link.tsx +262 -0
  407. package/docs/query/touch-actions.tsx +68 -0
  408. package/docs/showcase/acme-portal.tsx +441 -0
  409. package/docs/showcase/acme-website.tsx +455 -0
  410. package/docs/showcase/case1-warehouse-dashboard.tsx +343 -0
  411. package/docs/showcase/case2-employee-me.tsx +441 -0
  412. package/docs/showcase/case3-approval-workflow.tsx +527 -0
  413. package/docs/showcase/case4-login.tsx +307 -0
  414. package/docs/showcase/case5-shift-calendar.tsx +795 -0
  415. package/docs/showcase/case6-agency-handy.tsx +1072 -0
  416. package/docs/showcase/futurelastic-web.tsx +390 -0
  417. package/docs/showcase/org-switcher.tsx +313 -0
  418. package/docs/showcase/permission-matrix.tsx +343 -0
  419. package/docs/showcase/public-landing.tsx +210 -0
  420. package/docs/showcase/settings-account-sections.tsx +559 -0
  421. package/docs/showcase/settings-security-mfa.tsx +145 -0
  422. package/docs/showcase/table-approval-queue.tsx +199 -0
  423. package/docs/showcase/table-bulk-actions.tsx +460 -0
  424. package/docs/showcase/table-compact-kintone.tsx +438 -0
  425. package/docs/showcase/table-conditional-format.tsx +367 -0
  426. package/docs/showcase/table-crud-list.tsx +544 -0
  427. package/docs/showcase/table-density.tsx +340 -0
  428. package/docs/showcase/table-expandable-rows.tsx +471 -0
  429. package/docs/showcase/table-filter-chips.tsx +461 -0
  430. package/docs/showcase/table-footer-totals.tsx +311 -0
  431. package/docs/showcase/table-grouped-subtotals.tsx +388 -0
  432. package/docs/showcase/table-master-detail.tsx +479 -0
  433. package/docs/showcase/table-pagination.tsx +320 -0
  434. package/docs/showcase/table-states.tsx +363 -0
  435. package/docs/showcase/table-sticky-columns.tsx +373 -0
  436. package/docs/showcase/table-tree-rows.tsx +444 -0
  437. package/docs/showcase/table-view-tabs.tsx +488 -0
  438. package/package.json +10 -11
  439. package/scripts/_agent-setup.mjs +16 -2
  440. package/scripts/audit-hook.mjs +3 -13
  441. package/scripts/init-agent-kit.mjs +1 -14
  442. package/scripts/postinstall.mjs +12 -12
  443. package/scripts/ui-audit.mjs +93 -31
  444. package/scripts/visual-audit-rules.mjs +51 -7
  445. package/scripts/visual-audit.mjs +118 -47
@@ -0,0 +1,225 @@
1
+ import { useState } from "react";
2
+
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
4
+ import { FormField, ToggleGroup, ToggleGroupItem } from "@godxjp/ui/data-entry";
5
+ import { Text } from "@godxjp/ui/general";
6
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
7
+
8
+ /**
9
+ * ToggleGroup — single or multi-select toggle set. type='single' for mutually
10
+ * exclusive modes; type='multiple' for independent selections. Never raw radio
11
+ * buttons for this pattern. Composed only from real @godxjp/ui components.
12
+ */
13
+ export default function Demo() {
14
+ const [period, setPeriod] = useState<string>("monthly");
15
+ const [formats, setFormats] = useState<string[]>(["pdf"]);
16
+ const [view, setView] = useState<string>("list");
17
+
18
+ return (
19
+ <PageContainer
20
+ title="ToggleGroup"
21
+ subtitle="Single or multi-select toggle set · toolbar modes, output formats"
22
+ >
23
+ <Flex direction="col" gap="lg">
24
+ <Card>
25
+ <CardHeader>
26
+ <CardTitle level={2}>Single selection (type=“single”)</CardTitle>
27
+ <CardDescription>
28
+ Mutually exclusive · switching fiscal period. value is string, onValueChange receives
29
+ string.
30
+ </CardDescription>
31
+ </CardHeader>
32
+ <CardContent>
33
+ <FormField id="period" label="集計期間">
34
+ <ToggleGroup
35
+ type="single"
36
+ value={period}
37
+ onValueChange={(v) => {
38
+ if (v) setPeriod(v);
39
+ }}
40
+ >
41
+ <ToggleGroupItem value="daily">日次</ToggleGroupItem>
42
+ <ToggleGroupItem value="monthly">月次</ToggleGroupItem>
43
+ <ToggleGroupItem value="quarterly">四半期</ToggleGroupItem>
44
+ <ToggleGroupItem value="yearly">年次</ToggleGroupItem>
45
+ </ToggleGroup>
46
+ </FormField>
47
+ </CardContent>
48
+ </Card>
49
+
50
+ <Card>
51
+ <CardHeader>
52
+ <CardTitle level={2}>Multiple selection (type=“multiple”)</CardTitle>
53
+ <CardDescription>
54
+ Independent toggles · output format selection. value is string[], onValueChange
55
+ receives string[].
56
+ </CardDescription>
57
+ </CardHeader>
58
+ <CardContent>
59
+ <FormField id="formats" label="出力形式">
60
+ <ToggleGroup
61
+ type="multiple"
62
+ value={formats}
63
+ onValueChange={(v) => setFormats(v as string[])}
64
+ >
65
+ <ToggleGroupItem value="pdf">PDF</ToggleGroupItem>
66
+ <ToggleGroupItem value="csv">CSV</ToggleGroupItem>
67
+ <ToggleGroupItem value="xlsx">Excel</ToggleGroupItem>
68
+ <ToggleGroupItem value="mail">メール</ToggleGroupItem>
69
+ </ToggleGroup>
70
+ </FormField>
71
+ </CardContent>
72
+ </Card>
73
+
74
+ <Card>
75
+ <CardHeader>
76
+ <CardTitle level={2}>View density switcher</CardTitle>
77
+ <CardDescription>
78
+ Common use case: switching between display modes in a list or dashboard.
79
+ </CardDescription>
80
+ </CardHeader>
81
+ <CardContent>
82
+ <ToggleGroup
83
+ type="single"
84
+ value={view}
85
+ onValueChange={(v) => {
86
+ if (v) setView(v);
87
+ }}
88
+ >
89
+ <ToggleGroupItem value="list">一覧</ToggleGroupItem>
90
+ <ToggleGroupItem value="card">カード</ToggleGroupItem>
91
+ <ToggleGroupItem value="compact">コンパクト</ToggleGroupItem>
92
+ </ToggleGroup>
93
+ </CardContent>
94
+ </Card>
95
+
96
+ <Card>
97
+ <CardHeader>
98
+ <CardTitle level={2}>variant · default / outline</CardTitle>
99
+ <CardDescription>
100
+ variant は ToggleGroup にだけ指定すれば全アイテムへ伝播する(各 ToggleGroupItem
101
+ への繰り返し指定は不要)。default は選択時に背景が塗られ、outline は枠線で示す。
102
+ </CardDescription>
103
+ </CardHeader>
104
+ <CardContent>
105
+ <Flex direction="col" gap="md">
106
+ <Flex direction="col" gap="sm">
107
+ <Text as="p" size="sm" tone="muted">
108
+ variant=&quot;default&quot;
109
+ </Text>
110
+ <ToggleGroup type="single" variant="default" defaultValue="pdf">
111
+ <ToggleGroupItem value="pdf">PDF</ToggleGroupItem>
112
+ <ToggleGroupItem value="csv">CSV</ToggleGroupItem>
113
+ <ToggleGroupItem value="xlsx">Excel</ToggleGroupItem>
114
+ </ToggleGroup>
115
+ </Flex>
116
+ <Flex direction="col" gap="sm">
117
+ <Text as="p" size="sm" tone="muted">
118
+ variant=&quot;outline&quot;
119
+ </Text>
120
+ <ToggleGroup type="single" variant="outline" defaultValue="pdf">
121
+ <ToggleGroupItem value="pdf">PDF</ToggleGroupItem>
122
+ <ToggleGroupItem value="csv">CSV</ToggleGroupItem>
123
+ <ToggleGroupItem value="xlsx">Excel</ToggleGroupItem>
124
+ </ToggleGroup>
125
+ </Flex>
126
+ </Flex>
127
+ </CardContent>
128
+ </Card>
129
+
130
+ <Card>
131
+ <CardHeader>
132
+ <CardTitle level={2}>size · sm / md / lg</CardTitle>
133
+ <CardDescription>
134
+ size も ToggleGroup にだけ指定すれば全アイテムへ伝播する。md
135
+ が既定。周囲のコントロール密度に合わせて sm または lg を選ぶ。
136
+ </CardDescription>
137
+ </CardHeader>
138
+ <CardContent>
139
+ <Flex direction="col" gap="md">
140
+ <Flex direction="col" gap="sm">
141
+ <Text as="p" size="sm" tone="muted">
142
+ size=&quot;sm&quot;
143
+ </Text>
144
+ <ToggleGroup type="single" size="sm" defaultValue="day">
145
+ <ToggleGroupItem value="day">日次</ToggleGroupItem>
146
+ <ToggleGroupItem value="month">月次</ToggleGroupItem>
147
+ <ToggleGroupItem value="year">年次</ToggleGroupItem>
148
+ </ToggleGroup>
149
+ </Flex>
150
+ <Flex direction="col" gap="sm">
151
+ <Text as="p" size="sm" tone="muted">
152
+ size=&quot;md&quot;
153
+ </Text>
154
+ <ToggleGroup type="single" size="md" defaultValue="day">
155
+ <ToggleGroupItem value="day">日次</ToggleGroupItem>
156
+ <ToggleGroupItem value="month">月次</ToggleGroupItem>
157
+ <ToggleGroupItem value="year">年次</ToggleGroupItem>
158
+ </ToggleGroup>
159
+ </Flex>
160
+ <Flex direction="col" gap="sm">
161
+ <Text as="p" size="sm" tone="muted">
162
+ size=&quot;lg&quot;
163
+ </Text>
164
+ <ToggleGroup type="single" size="lg" defaultValue="day">
165
+ <ToggleGroupItem value="day">日次</ToggleGroupItem>
166
+ <ToggleGroupItem value="month">月次</ToggleGroupItem>
167
+ <ToggleGroupItem value="year">年次</ToggleGroupItem>
168
+ </ToggleGroup>
169
+ </Flex>
170
+ </Flex>
171
+ </CardContent>
172
+ </Card>
173
+
174
+ <Card>
175
+ <CardHeader>
176
+ <CardTitle level={2}>継承と上書き(group → item)</CardTitle>
177
+ <CardDescription>
178
+ group の variant / size は全アイテムへ伝播し、item 側で明示した prop
179
+ が常に優先される。group だけ・item だけ・両方に指定した 3
180
+ つの書き方はすべて同じ描画になる。
181
+ </CardDescription>
182
+ </CardHeader>
183
+ <CardContent>
184
+ <Flex direction="col" gap="md">
185
+ <Flex direction="col" gap="sm">
186
+ <Text as="p" size="sm" tone="muted">
187
+ group size=&quot;sm&quot; · 中央のみ item size=&quot;lg&quot; で上書き
188
+ </Text>
189
+ <ToggleGroup type="single" size="sm" variant="outline" defaultValue="day">
190
+ <ToggleGroupItem value="day">日次</ToggleGroupItem>
191
+ <ToggleGroupItem value="month" size="lg">
192
+ 月次
193
+ </ToggleGroupItem>
194
+ <ToggleGroupItem value="year">年次</ToggleGroupItem>
195
+ </ToggleGroup>
196
+ </Flex>
197
+ <Flex direction="col" gap="sm">
198
+ <Text as="p" size="sm" tone="muted">
199
+ group にのみ指定(伝播)
200
+ </Text>
201
+ <ToggleGroup type="single" size="lg" variant="outline" defaultValue="day">
202
+ <ToggleGroupItem value="day">日次</ToggleGroupItem>
203
+ <ToggleGroupItem value="month">月次</ToggleGroupItem>
204
+ </ToggleGroup>
205
+ </Flex>
206
+ <Flex direction="col" gap="sm">
207
+ <Text as="p" size="sm" tone="muted">
208
+ item にのみ指定(従来の書き方・描画は不変)
209
+ </Text>
210
+ <ToggleGroup type="single" defaultValue="day">
211
+ <ToggleGroupItem value="day" size="lg" variant="outline">
212
+ 日次
213
+ </ToggleGroupItem>
214
+ <ToggleGroupItem value="month" size="lg" variant="outline">
215
+ 月次
216
+ </ToggleGroupItem>
217
+ </ToggleGroup>
218
+ </Flex>
219
+ </Flex>
220
+ </CardContent>
221
+ </Card>
222
+ </Flex>
223
+ </PageContainer>
224
+ );
225
+ }
@@ -0,0 +1,127 @@
1
+ import { useState } from "react";
2
+
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
4
+ import { Toggle } from "@godxjp/ui/data-entry";
5
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
6
+
7
+ /**
8
+ * Toggle · a single pressed/unpressed button (Radix Toggle). Use for toolbar
9
+ * actions and pinned filters. For multi-option selection use ToggleGroup.
10
+ * Composed only from real @godxjp/ui components.
11
+ */
12
+ export default function Demo() {
13
+ const [bold, setBold] = useState(false);
14
+ const [pinned, setPinned] = useState(true);
15
+ const [outline, setOutline] = useState(false);
16
+ const [unread, setUnread] = useState(true);
17
+
18
+ return (
19
+ <PageContainer
20
+ title="Toggle"
21
+ subtitle="Single pressed/unpressed button · toolbar actions, pinned filters"
22
+ >
23
+ <Flex direction="col" gap="lg">
24
+ <Card>
25
+ <CardHeader>
26
+ <CardTitle level={2}>Controlled state</CardTitle>
27
+ <CardDescription>
28
+ Controlled via pressed/onPressedChange. Suitable for toolbar formatting or filter
29
+ pins.
30
+ </CardDescription>
31
+ </CardHeader>
32
+ <CardContent>
33
+ <Flex direction="row" gap="md">
34
+ <Toggle pressed={bold} onPressedChange={setBold} aria-label="太字">
35
+ 太字
36
+ </Toggle>
37
+ <Toggle pressed={pinned} onPressedChange={setPinned} aria-label="未払いをピン留め">
38
+ 未払いをピン留め
39
+ </Toggle>
40
+ </Flex>
41
+ </CardContent>
42
+ </Card>
43
+
44
+ <Card>
45
+ <CardHeader>
46
+ <CardTitle level={2}>Variants</CardTitle>
47
+ <CardDescription>
48
+ default (filled background when pressed) vs outline (border style).
49
+ </CardDescription>
50
+ </CardHeader>
51
+ <CardContent>
52
+ <Flex direction="row" gap="md">
53
+ <Toggle
54
+ variant="default"
55
+ pressed={pinned}
56
+ onPressedChange={setPinned}
57
+ aria-label="仕訳フィルタ"
58
+ >
59
+ 仕訳フィルタ
60
+ </Toggle>
61
+ <Toggle
62
+ variant="outline"
63
+ pressed={outline}
64
+ onPressedChange={setOutline}
65
+ aria-label="消費税対象のみ"
66
+ >
67
+ 消費税対象のみ
68
+ </Toggle>
69
+ </Flex>
70
+ </CardContent>
71
+ </Card>
72
+
73
+ <Card>
74
+ <CardHeader>
75
+ <CardTitle level={2}>Sizes</CardTitle>
76
+ <CardDescription>sm / md / lg · match surrounding density.</CardDescription>
77
+ </CardHeader>
78
+ <CardContent>
79
+ <Flex direction="row" gap="md" align="center">
80
+ <Toggle size="sm" aria-label="小サイズ">
81
+
82
+ </Toggle>
83
+ <Toggle size="md" aria-label="標準サイズ">
84
+ 標準
85
+ </Toggle>
86
+ <Toggle size="lg" aria-label="大サイズ">
87
+
88
+ </Toggle>
89
+ </Flex>
90
+ </CardContent>
91
+ </Card>
92
+
93
+ <Card>
94
+ <CardHeader>
95
+ <CardTitle level={2}>Count</CardTitle>
96
+ <CardDescription>
97
+ count / overflowCount / showZero / countLabel · Button と同じ語彙。押下状態と数字が 1
98
+ つのコントロールに乗るので、ファセットフィルタチップやリアクションチップが real
99
+ primitive だけで書ける。数字は Intl.NumberFormat
100
+ でロケール整形され、アクセシブル名は「未読, 12 件」のように読み上げられる。
101
+ さらに詳しい実画面は Toggle Count のページを参照。
102
+ </CardDescription>
103
+ </CardHeader>
104
+ <CardContent>
105
+ <Flex direction="row" gap="md" align="center" wrap>
106
+ <Toggle
107
+ pressed={unread}
108
+ onPressedChange={setUnread}
109
+ count={12}
110
+ countLabel="件"
111
+ variant="outline"
112
+ >
113
+ 未読
114
+ </Toggle>
115
+ <Toggle count={1240} overflowCount={999} countLabel="件" variant="outline">
116
+ すべて
117
+ </Toggle>
118
+ <Toggle count={0} showZero={false} countLabel="件" variant="outline">
119
+ 下書き
120
+ </Toggle>
121
+ </Flex>
122
+ </CardContent>
123
+ </Card>
124
+ </Flex>
125
+ </PageContainer>
126
+ );
127
+ }
@@ -0,0 +1,97 @@
1
+ import { useState } from "react";
2
+
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
4
+ import { Transfer } from "@godxjp/ui/data-entry";
5
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
6
+
7
+ /**
8
+ * Transfer — デュアルリストシャトル。
9
+ * targetKeys を自分で管理し onValueChange で更新する。
10
+ * TransferItemProp は { key, title, description?, disabled? }。
11
+ * Never hand-roll a two-panel picker. Composed only from real @godxjp/ui components.
12
+ */
13
+
14
+ const ALL_ACCOUNTS = [
15
+ { key: "1010", title: "現金", description: "流動資産" },
16
+ { key: "1020", title: "普通預金", description: "流動資産" },
17
+ { key: "1030", title: "売掛金", description: "流動資産" },
18
+ { key: "1040", title: "前払費用", description: "流動資産" },
19
+ { key: "2010", title: "機械装置", description: "固定資産" },
20
+ { key: "2020", title: "車両運搬具", description: "固定資産" },
21
+ { key: "3010", title: "買掛金", description: "流動負債" },
22
+ { key: "3020", title: "未払費用", description: "流動負債" },
23
+ { key: "4010", title: "売上高", description: "収益" },
24
+ { key: "5010", title: "売上原価", description: "費用" },
25
+ { key: "5020", title: "給料手当", description: "費用" },
26
+ { key: "5030", title: "旅費交通費", description: "費用", disabled: true },
27
+ ];
28
+
29
+ const REPORT_COLUMNS = [
30
+ { key: "col-date", title: "日付", description: "仕訳日付" },
31
+ { key: "col-no", title: "伝票番号", description: "仕訳番号" },
32
+ { key: "col-debit-acct", title: "借方科目", description: "借方勘定科目コード" },
33
+ { key: "col-debit-amt", title: "借方金額", description: "借方金額(円)" },
34
+ { key: "col-credit-acct", title: "貸方科目", description: "貸方勘定科目コード" },
35
+ { key: "col-credit-amt", title: "貸方金額", description: "貸方金額(円)" },
36
+ { key: "col-tax", title: "税区分", description: "消費税区分コード" },
37
+ { key: "col-dept", title: "部門", description: "計上部門" },
38
+ { key: "col-memo", title: "摘要", description: "仕訳摘要" },
39
+ { key: "col-partner", title: "取引先", description: "取引先名" },
40
+ ];
41
+
42
+ export default function Demo() {
43
+ const [mappedKeys, setMappedKeys] = useState<string[]>(["1010", "1030"]);
44
+ const [reportKeys, setReportKeys] = useState<string[]>([
45
+ "col-date",
46
+ "col-no",
47
+ "col-debit-acct",
48
+ "col-credit-acct",
49
+ ]);
50
+
51
+ return (
52
+ <PageContainer
53
+ title="Transfer"
54
+ subtitle="デュアルリストシャトル · targetKeys を管理し onValueChange で更新する"
55
+ >
56
+ <Flex direction="col" gap="lg">
57
+ <Card>
58
+ <CardHeader>
59
+ <CardTitle level={2}>外部勘定科目マッピング(検索付き)</CardTitle>
60
+ <CardDescription>
61
+ 外部から取り込んだ科目(左)を社内正規科目(右)にマッピングする。 マッピング済み:{" "}
62
+ {mappedKeys.length} 件
63
+ </CardDescription>
64
+ </CardHeader>
65
+ <CardContent>
66
+ <Transfer
67
+ dataSource={ALL_ACCOUNTS}
68
+ targetKeys={mappedKeys}
69
+ onValueChange={(nextKeys) => setMappedKeys(nextKeys)}
70
+ titles={["取込科目", "マッピング済"]}
71
+ showSearch
72
+ />
73
+ </CardContent>
74
+ </Card>
75
+
76
+ <Card>
77
+ <CardHeader>
78
+ <CardTitle level={2}>レポート列選択(追加専用)</CardTitle>
79
+ <CardDescription>
80
+ oneWay=true でレポートに列を追加のみ可能(削除不可)。 選択列: {reportKeys.length} 列
81
+ </CardDescription>
82
+ </CardHeader>
83
+ <CardContent>
84
+ <Transfer
85
+ dataSource={REPORT_COLUMNS}
86
+ targetKeys={reportKeys}
87
+ onValueChange={(nextKeys) => setReportKeys(nextKeys)}
88
+ titles={["利用可能な列", "レポート列"]}
89
+ showSearch
90
+ oneWay
91
+ />
92
+ </CardContent>
93
+ </Card>
94
+ </Flex>
95
+ </PageContainer>
96
+ );
97
+ }
@@ -0,0 +1,204 @@
1
+ import { useState } from "react";
2
+
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
4
+ import { FormField, TreeSelect } from "@godxjp/ui/data-entry";
5
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
6
+
7
+ /**
8
+ * TreeSelect — 階層ツリーピッカー(Popover + 展開/折り畳み)。
9
+ * 単一選択: onChange は string | undefined。
10
+ * 複数/チェック可能: onChange は string[]。
11
+ * SHOW_* 定数は TreeSelect.SHOW_CHILD / SHOW_PARENT / SHOW_ALL を使用。
12
+ * Never a raw <select>. Composed only from real @godxjp/ui components.
13
+ */
14
+
15
+ const ACCOUNT_TREE = [
16
+ {
17
+ value: "assets",
18
+ label: "資産",
19
+ children: [
20
+ {
21
+ value: "current-assets",
22
+ label: "流動資産",
23
+ children: [
24
+ { value: "cash", label: "現金" },
25
+ { value: "bank", label: "普通預金" },
26
+ { value: "ar", label: "売掛金" },
27
+ { value: "prepaid", label: "前払費用" },
28
+ ],
29
+ },
30
+ {
31
+ value: "fixed-assets",
32
+ label: "固定資産",
33
+ children: [
34
+ { value: "machinery", label: "機械装置" },
35
+ { value: "vehicles", label: "車両運搬具" },
36
+ { value: "furniture", label: "器具備品" },
37
+ ],
38
+ },
39
+ ],
40
+ },
41
+ {
42
+ value: "liabilities",
43
+ label: "負債",
44
+ children: [
45
+ {
46
+ value: "current-liabilities",
47
+ label: "流動負債",
48
+ children: [
49
+ { value: "ap", label: "買掛金" },
50
+ { value: "accrued", label: "未払費用" },
51
+ { value: "tax-payable", label: "未払消費税" },
52
+ ],
53
+ },
54
+ {
55
+ value: "long-term",
56
+ label: "固定負債",
57
+ children: [{ value: "long-loan", label: "長期借入金" }],
58
+ },
59
+ ],
60
+ },
61
+ {
62
+ value: "equity",
63
+ label: "純資産",
64
+ children: [
65
+ { value: "capital", label: "資本金" },
66
+ { value: "retained", label: "繰越利益剰余金" },
67
+ ],
68
+ },
69
+ {
70
+ value: "revenue",
71
+ label: "収益",
72
+ children: [
73
+ { value: "sales", label: "売上高" },
74
+ { value: "other-income", label: "営業外収益" },
75
+ ],
76
+ },
77
+ {
78
+ value: "expenses",
79
+ label: "費用",
80
+ children: [
81
+ { value: "cogs", label: "売上原価" },
82
+ { value: "salary-exp", label: "給料手当" },
83
+ { value: "rent-exp", label: "地代家賃" },
84
+ { value: "travel-exp", label: "旅費交通費" },
85
+ ],
86
+ },
87
+ ];
88
+
89
+ const DEPT_TREE = [
90
+ {
91
+ value: "hq",
92
+ label: "本社",
93
+ children: [
94
+ {
95
+ value: "finance-div",
96
+ label: "財務本部",
97
+ children: [
98
+ { value: "accounting", label: "経理部" },
99
+ { value: "treasury", label: "財務部" },
100
+ ],
101
+ },
102
+ {
103
+ value: "sales-div",
104
+ label: "営業本部",
105
+ children: [
106
+ { value: "sales-east", label: "東日本営業部" },
107
+ { value: "sales-west", label: "西日本営業部" },
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ value: "branch",
114
+ label: "支社",
115
+ children: [
116
+ { value: "osaka-branch", label: "大阪支社" },
117
+ { value: "nagoya-branch", label: "名古屋支社" },
118
+ ],
119
+ },
120
+ ];
121
+
122
+ export default function Demo() {
123
+ const [glAccount, setGlAccount] = useState<string | undefined>();
124
+ const [deptFilter, setDeptFilter] = useState<string[]>([]);
125
+
126
+ return (
127
+ <PageContainer
128
+ title="TreeSelect"
129
+ subtitle="階層ツリーピッカー · 単一は string、複数は string[] を返す"
130
+ >
131
+ <Flex direction="col" gap="lg">
132
+ <Card>
133
+ <CardHeader>
134
+ <CardTitle level={2}>勘定科目選択(単一・検索付き)</CardTitle>
135
+ <CardDescription>
136
+ 科目ツリーから1科目を選択。showSearch + treeDefaultExpandAll で素早くアクセス。
137
+ 選択値: {glAccount ?? "未選択"}
138
+ </CardDescription>
139
+ </CardHeader>
140
+ <CardContent>
141
+ <FormField id="gl-account" label="勘定科目">
142
+ <TreeSelect
143
+ id="gl-account"
144
+ treeData={ACCOUNT_TREE}
145
+ value={glAccount}
146
+ onValueChange={(v) => setGlAccount(v as string | undefined)}
147
+ showSearch
148
+ treeDefaultExpandAll
149
+ placeholder="科目を選択..."
150
+ allowClear
151
+ />
152
+ </FormField>
153
+ </CardContent>
154
+ </Card>
155
+
156
+ <Card>
157
+ <CardHeader>
158
+ <CardTitle level={2}>部門フィルター(複数選択 + チェックボックス)</CardTitle>
159
+ <CardDescription>
160
+ treeCheckable で親選択が子に連鎖。SHOW_PARENT で表示を集約。 選択数:{" "}
161
+ {deptFilter.length} 件
162
+ </CardDescription>
163
+ </CardHeader>
164
+ <CardContent>
165
+ <FormField id="dept-filter" label="部門">
166
+ <TreeSelect
167
+ id="dept-filter"
168
+ treeData={DEPT_TREE}
169
+ value={deptFilter}
170
+ onValueChange={(v) => setDeptFilter(v as string[])}
171
+ treeCheckable
172
+ showCheckedStrategy={TreeSelect.SHOW_PARENT}
173
+ showSearch
174
+ placeholder="部門を選択..."
175
+ />
176
+ </FormField>
177
+ </CardContent>
178
+ </Card>
179
+
180
+ <Card>
181
+ <CardHeader>
182
+ <CardTitle level={2}>費用科目(チェック非連鎖・SHOW_ALL)</CardTitle>
183
+ <CardDescription>
184
+ treeCheckStrictly=true で親子独立選択。SHOW_ALL で全チェックノードを表示。
185
+ </CardDescription>
186
+ </CardHeader>
187
+ <CardContent>
188
+ <FormField id="expense-accounts" label="費用科目">
189
+ <TreeSelect
190
+ id="expense-accounts"
191
+ treeData={ACCOUNT_TREE}
192
+ treeCheckable
193
+ treeCheckStrictly
194
+ showCheckedStrategy={TreeSelect.SHOW_ALL}
195
+ placeholder="費用科目を複数選択..."
196
+ showSearch
197
+ />
198
+ </FormField>
199
+ </CardContent>
200
+ </Card>
201
+ </Flex>
202
+ </PageContainer>
203
+ );
204
+ }