@godxjp/ui 19.1.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 (436) hide show
  1. package/README.md +25 -128
  2. package/dist/app/theme-axes.d.ts +4 -15
  3. package/dist/app/timezones.d.ts +1 -4
  4. package/dist/components/charts/area-chart.d.ts +2 -3
  5. package/dist/components/charts/bar-chart.d.ts +2 -3
  6. package/dist/components/charts/chart-frame.d.ts +7 -16
  7. package/dist/components/charts/chart-summary.d.ts +2 -2
  8. package/dist/components/charts/compact-bar-trend.d.ts +9 -24
  9. package/dist/components/charts/index.d.ts +1 -6
  10. package/dist/components/data-display/badge.d.ts +2 -12
  11. package/dist/components/data-display/card.d.ts +21 -41
  12. package/dist/components/data-display/carousel.d.ts +1 -2
  13. package/dist/components/data-display/code-block.d.ts +4 -0
  14. package/dist/components/data-display/code-block.js +24 -0
  15. package/dist/components/data-display/data-table.d.ts +15 -37
  16. package/dist/components/data-display/data-table.js +1 -3
  17. package/dist/components/data-display/descriptions.d.ts +2 -6
  18. package/dist/components/data-display/descriptions.js +0 -2
  19. package/dist/components/data-display/index.d.ts +4 -0
  20. package/dist/components/data-display/index.js +4 -0
  21. package/dist/components/data-display/list-row.d.ts +3 -22
  22. package/dist/components/data-display/permission-matrix.d.ts +7 -20
  23. package/dist/components/data-display/progress.d.ts +1 -1
  24. package/dist/components/data-display/prose.d.ts +4 -0
  25. package/dist/components/data-display/prose.js +20 -0
  26. package/dist/components/data-display/service-launcher-card.d.ts +3 -10
  27. package/dist/components/data-display/table.d.ts +20 -80
  28. package/dist/components/data-display/table.js +0 -3
  29. package/dist/components/data-display/timeline.d.ts +3 -5
  30. package/dist/components/data-entry/branch-scope-picker.d.ts +2 -19
  31. package/dist/components/data-entry/branch-scope-picker.js +0 -1
  32. package/dist/components/data-entry/calendar.d.ts +3 -2
  33. package/dist/components/data-entry/calendar.js +58 -3
  34. package/dist/components/data-entry/command-palette.d.ts +8 -22
  35. package/dist/components/data-entry/date-picker.d.ts +4 -5
  36. package/dist/components/data-entry/date-picker.js +6 -1
  37. package/dist/components/data-entry/date-range-picker.d.ts +1 -1
  38. package/dist/components/data-entry/date-range-picker.js +8 -3
  39. package/dist/components/data-entry/form-errors.d.ts +7 -18
  40. package/dist/components/data-entry/form-field.js +1 -5
  41. package/dist/components/data-entry/form.d.ts +1 -9
  42. package/dist/components/data-entry/input.d.ts +16 -14
  43. package/dist/components/data-entry/input.js +3 -0
  44. package/dist/components/data-entry/month-picker.js +2 -2
  45. package/dist/components/data-entry/month-range-picker.d.ts +4 -6
  46. package/dist/components/data-entry/month-range-picker.js +2 -2
  47. package/dist/components/data-entry/number-input.d.ts +1 -5
  48. package/dist/components/data-entry/number-input.js +1 -0
  49. package/dist/components/data-entry/radio.js +0 -1
  50. package/dist/components/data-entry/search-select.d.ts +2 -4
  51. package/dist/components/data-entry/select.d.ts +11 -6
  52. package/dist/components/data-entry/select.js +4 -2
  53. package/dist/components/data-entry/switch.js +0 -1
  54. package/dist/components/data-entry/textarea.d.ts +10 -16
  55. package/dist/components/data-entry/time-picker.d.ts +3 -5
  56. package/dist/components/data-entry/upload-types.d.ts +1 -5
  57. package/dist/components/data-entry/use-upload-draft.d.ts +0 -4
  58. package/dist/components/feedback/dialog.d.ts +6 -15
  59. package/dist/components/feedback/overlay-header-tone.d.ts +1 -1
  60. package/dist/components/feedback/sheet.d.ts +3 -10
  61. package/dist/components/feedback/sheet.js +1 -1
  62. package/dist/components/feedback/sonner.js +2 -3
  63. package/dist/components/general/activity.d.ts +4 -30
  64. package/dist/components/general/button.js +1 -10
  65. package/dist/components/general/logo.d.ts +6 -28
  66. package/dist/components/general/reveal.d.ts +3 -9
  67. package/dist/components/general/typography.d.ts +1 -3
  68. package/dist/components/layout/account-chip.d.ts +8 -0
  69. package/dist/components/layout/account-chip.js +45 -0
  70. package/dist/components/layout/auth-divider.d.ts +2 -9
  71. package/dist/components/layout/auth-shell.d.ts +1 -14
  72. package/dist/components/layout/breadcrumb.d.ts +1 -5
  73. package/dist/components/layout/centered-shell.d.ts +4 -18
  74. package/dist/components/layout/error-surface.d.ts +11 -28
  75. package/dist/components/layout/error-surface.js +4 -1
  76. package/dist/components/layout/index.d.ts +2 -0
  77. package/dist/components/layout/index.js +2 -0
  78. package/dist/components/layout/legal-document-shell.d.ts +5 -28
  79. package/dist/components/layout/master-detail.d.ts +2 -18
  80. package/dist/components/layout/page-container.js +0 -1
  81. package/dist/components/layout/responsive-grid.d.ts +6 -1
  82. package/dist/components/layout/responsive-grid.js +9 -2
  83. package/dist/components/layout/service-role-panel.d.ts +7 -19
  84. package/dist/components/layout/sidebar.d.ts +5 -27
  85. package/dist/components/layout/sidebar.js +0 -1
  86. package/dist/components/layout/split-pane.d.ts +0 -7
  87. package/dist/components/layout/topbar.d.ts +1 -14
  88. package/dist/components/navigation/app-setting-picker.js +1 -3
  89. package/dist/components/navigation/filter-bar.d.ts +1 -6
  90. package/dist/components/navigation/pagination-utils.d.ts +2 -12
  91. package/dist/components/navigation/tabs-scroll.d.ts +2 -36
  92. package/dist/components/navigation/tabs.js +4 -8
  93. package/dist/components/query/data-state.d.ts +2 -2
  94. package/dist/components/ui/credential-reveal.d.ts +1 -4
  95. package/dist/components/ui/hover-card.d.ts +1 -2
  96. package/dist/components/ui/separator.d.ts +2 -15
  97. package/dist/components/ui/toggle-group.d.ts +1 -5
  98. package/dist/components/ui/toggle.d.ts +6 -31
  99. package/dist/email/brand-mark.d.ts +6 -34
  100. package/dist/email/color.d.ts +7 -17
  101. package/dist/email/geometry.d.ts +4 -8
  102. package/dist/email/index.d.ts +4 -48
  103. package/dist/email/inline-style.d.ts +3 -9
  104. package/dist/email/urgency.d.ts +2 -7
  105. package/dist/form/form-context.d.ts +2 -5
  106. package/dist/form/form-root.d.ts +1 -2
  107. package/dist/i18n/messages/en.json +4 -0
  108. package/dist/i18n/messages/ja.json +4 -0
  109. package/dist/i18n/messages/vi.json +4 -0
  110. package/dist/inertia/index.d.ts +2 -10
  111. package/dist/lib/control-styles.d.ts +10 -21
  112. package/dist/lib/control-styles.js +4 -6
  113. package/dist/lib/datetime/format-date.d.ts +1 -4
  114. package/dist/lib/field-a11y.d.ts +11 -68
  115. package/dist/lib/field-a11y.js +0 -1
  116. package/dist/lib/format.d.ts +4 -8
  117. package/dist/lib/hooks.d.ts +6 -12
  118. package/dist/lib/permission-grid.d.ts +3 -18
  119. package/dist/lib/query-error.d.ts +3 -3
  120. package/dist/props/components/app.prop.d.ts +15 -38
  121. package/dist/props/components/charts.prop.d.ts +2 -3
  122. package/dist/props/components/data-display.prop.d.ts +48 -72
  123. package/dist/props/components/data-entry.prop.d.ts +35 -40
  124. package/dist/props/components/form.prop.d.ts +2 -6
  125. package/dist/props/components/general.prop.d.ts +11 -27
  126. package/dist/props/components/layout.prop.d.ts +89 -260
  127. package/dist/props/components/navigation.prop.d.ts +27 -42
  128. package/dist/props/registry.d.ts +31 -0
  129. package/dist/props/registry.js +33 -0
  130. package/dist/props/vocabulary/data.prop.d.ts +18 -49
  131. package/dist/props/vocabulary/index.d.ts +1 -1
  132. package/dist/props/vocabulary/interaction.prop.d.ts +10 -12
  133. package/dist/props/vocabulary/layout.prop.d.ts +8 -30
  134. package/dist/props/vocabulary/shared.prop.d.ts +3 -2
  135. package/dist/styles/alert-layout.css +1 -32
  136. package/dist/styles/badge-layout.css +4 -18
  137. package/dist/styles/base.css +14 -113
  138. package/dist/styles/card-layout.css +6 -128
  139. package/dist/styles/chart-layout.css +2 -17
  140. package/dist/styles/control.css +380 -458
  141. package/dist/styles/core.css +21 -0
  142. package/dist/styles/data-display-layout.css +175 -94
  143. package/dist/styles/data-entry-layout.css +0 -45
  144. package/dist/styles/density.css +1 -30
  145. package/dist/styles/dialog-layout.css +5 -69
  146. package/dist/styles/focus-ring.css +13 -87
  147. package/dist/styles/fonts.css +1 -31
  148. package/dist/styles/form-layout.css +7 -91
  149. package/dist/styles/index.css +2 -20
  150. package/dist/styles/layout.css +38 -456
  151. package/dist/styles/logo-layout.css +1 -35
  152. package/dist/styles/motion.css +3 -42
  153. package/dist/styles/navigation-layout.css +3 -50
  154. package/dist/styles/shell-layout.css +37 -403
  155. package/dist/styles/table-layout.css +16 -274
  156. package/dist/styles/text-layout.css +7 -21
  157. package/dist/styles/toggle.css +1 -23
  158. package/dist/theme/dxs.canonical.css +1 -55
  159. package/dist/theme/example.service.css +1 -26
  160. package/dist/theme/famgia.service.css +5 -15
  161. package/dist/tokens/axes.css +3 -40
  162. package/dist/tokens/base.css +1 -4
  163. package/dist/tokens/components/activity.css +6 -42
  164. package/dist/tokens/components/badge.css +4 -13
  165. package/dist/tokens/components/banner.css +4 -9
  166. package/dist/tokens/components/card.css +32 -88
  167. package/dist/tokens/components/chart.css +9 -26
  168. package/dist/tokens/components/control.css +37 -222
  169. package/dist/tokens/components/data-display.css +28 -79
  170. package/dist/tokens/components/data-entry.css +5 -19
  171. package/dist/tokens/components/descriptions.css +7 -27
  172. package/dist/tokens/components/email.css +38 -84
  173. package/dist/tokens/components/error-surface.css +2 -18
  174. package/dist/tokens/components/feedback.css +27 -124
  175. package/dist/tokens/components/form.css +13 -45
  176. package/dist/tokens/components/legal-document.css +16 -41
  177. package/dist/tokens/components/list-row.css +11 -36
  178. package/dist/tokens/components/logo.css +2 -57
  179. package/dist/tokens/components/navigation.css +16 -94
  180. package/dist/tokens/components/scroll-area.css +2 -18
  181. package/dist/tokens/components/separator.css +8 -30
  182. package/dist/tokens/components/sheet.css +3 -14
  183. package/dist/tokens/components/shell.css +53 -307
  184. package/dist/tokens/components/sidebar.css +5 -22
  185. package/dist/tokens/components/table.css +19 -140
  186. package/dist/tokens/components/toggle.css +3 -65
  187. package/dist/tokens/components/upload.css +7 -43
  188. package/dist/tokens/foundation.css +108 -383
  189. package/dist/tokens/semantic/layout.css +33 -207
  190. package/docs/CANONICAL-CONTRACTS.md +206 -0
  191. package/docs/COMPONENTS.md +157 -0
  192. package/docs/COMPOSITION-VS-COMPONENT.md +105 -0
  193. package/docs/CONSUMER-RULES.md +14 -0
  194. package/docs/CUSTOMER-THEMING.md +162 -0
  195. package/docs/DATETIME.md +69 -0
  196. package/docs/DEVELOPMENT.md +173 -0
  197. package/docs/FORMS.md +143 -0
  198. package/docs/FRAME-A11Y-CI.md +267 -0
  199. package/docs/FRAME-COVERAGE-LEDGER.md +123 -0
  200. package/docs/FRAME-COVERAGE-REPORT.md +140 -0
  201. package/docs/FRAME-COVERAGE-STANDARD.md +65 -0
  202. package/docs/FRAME-COVERAGE.md +29 -0
  203. package/docs/PROPS-REGISTRY.md +61 -0
  204. package/docs/PROPS-VOCABULARY.md +100 -0
  205. package/docs/README.md +60 -0
  206. package/docs/REGISTRY.md +70 -0
  207. package/docs/SPACING.md +56 -0
  208. package/docs/STANDARDS-vocabulary-tokens.md +48 -0
  209. package/docs/TESTING.md +98 -0
  210. package/docs/TOKENS.md +347 -0
  211. package/docs/asset-modules.d.ts +46 -0
  212. package/docs/assets/cover-terrain.svg +6 -0
  213. package/docs/assets/portrait-amber.svg +5 -0
  214. package/docs/assets/portrait-clay.svg +5 -0
  215. package/docs/assets/portrait-indigo.svg +5 -0
  216. package/docs/assets/portrait-iris.svg +5 -0
  217. package/docs/assets/portrait-moss.svg +5 -0
  218. package/docs/assets/portrait-plum.svg +5 -0
  219. package/docs/assets/portrait-slate.svg +5 -0
  220. package/docs/charts/compact-bar-trend.tsx +328 -0
  221. package/docs/charts/size-tiers.tsx +192 -0
  222. package/docs/data-display/accordion.tsx +99 -0
  223. package/docs/data-display/avatar.tsx +355 -0
  224. package/docs/data-display/badge.tsx +247 -0
  225. package/docs/data-display/card/examples/detail-panel.tsx +106 -0
  226. package/docs/data-display/card/index.md +3 -0
  227. package/docs/data-display/card/index.tsx +285 -0
  228. package/docs/data-display/carousel.tsx +156 -0
  229. package/docs/data-display/charts.tsx +198 -0
  230. package/docs/data-display/code-block.tsx +90 -0
  231. package/docs/data-display/collapsible.tsx +162 -0
  232. package/docs/data-display/credential-reveal.tsx +145 -0
  233. package/docs/data-display/data-table/examples/approval-queue.tsx +212 -0
  234. package/docs/data-display/data-table/examples/grid-features.tsx +158 -0
  235. package/docs/data-display/data-table/examples/list-page.tsx +175 -0
  236. package/docs/data-display/data-table/index.md +5 -0
  237. package/docs/data-display/data-table/index.tsx +295 -0
  238. package/docs/data-display/descriptions.tsx +143 -0
  239. package/docs/data-display/empty-state.tsx +164 -0
  240. package/docs/data-display/hover-card.tsx +181 -0
  241. package/docs/data-display/list-row.tsx +420 -0
  242. package/docs/data-display/permission-matrix.tsx +184 -0
  243. package/docs/data-display/popover-touch.tsx +27 -0
  244. package/docs/data-display/popover.tsx +245 -0
  245. package/docs/data-display/progress.tsx +84 -0
  246. package/docs/data-display/prose.tsx +105 -0
  247. package/docs/data-display/qr-code.tsx +68 -0
  248. package/docs/data-display/scroll-area.tsx +271 -0
  249. package/docs/data-display/service-launcher-card.tsx +145 -0
  250. package/docs/data-display/stat-card.tsx +99 -0
  251. package/docs/data-display/table.tsx +251 -0
  252. package/docs/data-display/timeline.tsx +112 -0
  253. package/docs/data-display/touch-actions.tsx +36 -0
  254. package/docs/data-display/tree-list.tsx +107 -0
  255. package/docs/data-entry/branch-scope-picker.tsx +123 -0
  256. package/docs/data-entry/calendar.tsx +180 -0
  257. package/docs/data-entry/cascader.tsx +378 -0
  258. package/docs/data-entry/checkbox.tsx +256 -0
  259. package/docs/data-entry/color-picker.tsx +117 -0
  260. package/docs/data-entry/command-palette.tsx +179 -0
  261. package/docs/data-entry/command.tsx +262 -0
  262. package/docs/data-entry/country-picker-recipe.tsx +170 -0
  263. package/docs/data-entry/date-picker.tsx +191 -0
  264. package/docs/data-entry/date-range-picker.tsx +149 -0
  265. package/docs/data-entry/form/examples/employee-settings.tsx +267 -0
  266. package/docs/data-entry/form/examples/invoice-form.tsx +387 -0
  267. package/docs/data-entry/form-field/examples/a11y-contract.tsx +240 -0
  268. package/docs/data-entry/form-field/examples/create-form.tsx +105 -0
  269. package/docs/data-entry/form-field/index.md +8 -0
  270. package/docs/data-entry/form-field/index.tsx +326 -0
  271. package/docs/data-entry/form-inertia.tsx +80 -0
  272. package/docs/data-entry/form-root.tsx +102 -0
  273. package/docs/data-entry/form.tsx +724 -0
  274. package/docs/data-entry/input-otp.tsx +231 -0
  275. package/docs/data-entry/input.tsx +114 -0
  276. package/docs/data-entry/label.tsx +100 -0
  277. package/docs/data-entry/month-picker.tsx +101 -0
  278. package/docs/data-entry/month-range-picker.tsx +115 -0
  279. package/docs/data-entry/number-input.tsx +240 -0
  280. package/docs/data-entry/password-input.tsx +106 -0
  281. package/docs/data-entry/password-strength.tsx +97 -0
  282. package/docs/data-entry/radio-group.tsx +95 -0
  283. package/docs/data-entry/rating.tsx +87 -0
  284. package/docs/data-entry/search-input.tsx +120 -0
  285. package/docs/data-entry/select-async-contracts.tsx +108 -0
  286. package/docs/data-entry/select-matrix.tsx +204 -0
  287. package/docs/data-entry/select.tsx +369 -0
  288. package/docs/data-entry/slider.tsx +130 -0
  289. package/docs/data-entry/switch.tsx +67 -0
  290. package/docs/data-entry/tag-input.tsx +108 -0
  291. package/docs/data-entry/textarea.tsx +209 -0
  292. package/docs/data-entry/time-picker.tsx +99 -0
  293. package/docs/data-entry/toggle-count.tsx +293 -0
  294. package/docs/data-entry/toggle-group.tsx +225 -0
  295. package/docs/data-entry/toggle.tsx +127 -0
  296. package/docs/data-entry/transfer.tsx +97 -0
  297. package/docs/data-entry/tree-select.tsx +204 -0
  298. package/docs/data-entry/upload.tsx +184 -0
  299. package/docs/feedback/alert-dialog.tsx +270 -0
  300. package/docs/feedback/alert.tsx +248 -0
  301. package/docs/feedback/banner.tsx +183 -0
  302. package/docs/feedback/danger-confirm.tsx +88 -0
  303. package/docs/feedback/dialog-touch.tsx +24 -0
  304. package/docs/feedback/dialog.tsx +193 -0
  305. package/docs/feedback/sheet.tsx +410 -0
  306. package/docs/feedback/skeleton.tsx +111 -0
  307. package/docs/feedback/toast.tsx +135 -0
  308. package/docs/feedback/tooltip.tsx +171 -0
  309. package/docs/feedback/two-factor-setup.tsx +68 -0
  310. package/docs/foundation/_email-specimen.ts +274 -0
  311. package/docs/foundation/colors.tsx +202 -0
  312. package/docs/foundation/density.tsx +232 -0
  313. package/docs/foundation/email-tokens.tsx +306 -0
  314. package/docs/foundation/radius-shadow.tsx +152 -0
  315. package/docs/foundation/spacing.tsx +211 -0
  316. package/docs/foundation/typography.tsx +147 -0
  317. package/docs/general/activity.tsx +224 -0
  318. package/docs/general/button/examples/destructive-confirm.tsx +90 -0
  319. package/docs/general/button/examples/form-actions.tsx +85 -0
  320. package/docs/general/button/examples/toolbar.tsx +160 -0
  321. package/docs/general/button/index.md +12 -0
  322. package/docs/general/button/index.tsx +211 -0
  323. package/docs/general/logo.tsx +131 -0
  324. package/docs/general/reveal.tsx +41 -0
  325. package/docs/general/typography.tsx +152 -0
  326. package/docs/layout/account-chip.tsx +72 -0
  327. package/docs/layout/admin-collection.tsx +122 -0
  328. package/docs/layout/app-shell.tsx +374 -0
  329. package/docs/layout/aspect-ratio.tsx +119 -0
  330. package/docs/layout/auth-account-summary.tsx +103 -0
  331. package/docs/layout/auth-divider.tsx +28 -0
  332. package/docs/layout/auth-footer.tsx +37 -0
  333. package/docs/layout/auth-identity.tsx +36 -0
  334. package/docs/layout/auth-recovery/examples/mfa-challenge.md +41 -0
  335. package/docs/layout/auth-recovery/examples/mfa-challenge.tsx +254 -0
  336. package/docs/layout/auth-recovery/examples/mobile-390.md +25 -0
  337. package/docs/layout/auth-recovery/examples/mobile-390.tsx +82 -0
  338. package/docs/layout/auth-recovery/examples/password-recovery.md +24 -0
  339. package/docs/layout/auth-recovery/examples/password-recovery.tsx +197 -0
  340. package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.md +27 -0
  341. package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.tsx +156 -0
  342. package/docs/layout/auth-recovery/index.md +140 -0
  343. package/docs/layout/auth-recovery/index.tsx +96 -0
  344. package/docs/layout/auth-shell-context.tsx +103 -0
  345. package/docs/layout/auth-shell-device.tsx +112 -0
  346. package/docs/layout/auth-shell-registration.tsx +335 -0
  347. package/docs/layout/auth-shell-variants.tsx +139 -0
  348. package/docs/layout/auth-shell.tsx +59 -0
  349. package/docs/layout/auth-stack.tsx +40 -0
  350. package/docs/layout/centered-shell.tsx +102 -0
  351. package/docs/layout/error-surface/examples/application-403.tsx +84 -0
  352. package/docs/layout/error-surface/examples/application-404.tsx +77 -0
  353. package/docs/layout/error-surface/examples/system-500.tsx +47 -0
  354. package/docs/layout/error-surface/examples/system-503.tsx +48 -0
  355. package/docs/layout/error-surface/index.md +153 -0
  356. package/docs/layout/error-surface/index.tsx +239 -0
  357. package/docs/layout/flex.tsx +262 -0
  358. package/docs/layout/legal-document-shell/_data.ts +110 -0
  359. package/docs/layout/legal-document-shell/examples/desktop-1440.md +12 -0
  360. package/docs/layout/legal-document-shell/examples/desktop-1440.tsx +83 -0
  361. package/docs/layout/legal-document-shell/examples/mobile-390.md +22 -0
  362. package/docs/layout/legal-document-shell/examples/mobile-390.tsx +70 -0
  363. package/docs/layout/legal-document-shell/examples/tablet-1024.md +3 -0
  364. package/docs/layout/legal-document-shell/examples/tablet-1024.tsx +84 -0
  365. package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.md +18 -0
  366. package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.tsx +61 -0
  367. package/docs/layout/legal-document-shell/index.md +51 -0
  368. package/docs/layout/legal-document-shell/index.tsx +101 -0
  369. package/docs/layout/master-detail.tsx +387 -0
  370. package/docs/layout/org-switcher.tsx +131 -0
  371. package/docs/layout/page-container.tsx +946 -0
  372. package/docs/layout/resizable-panel.tsx +419 -0
  373. package/docs/layout/responsive-grid.tsx +235 -0
  374. package/docs/layout/separator.tsx +327 -0
  375. package/docs/layout/service-role-panel.tsx +144 -0
  376. package/docs/layout/sidebar.tsx +586 -0
  377. package/docs/layout/split-pane.tsx +451 -0
  378. package/docs/layout/topbar.tsx +347 -0
  379. package/docs/navigation/app-setting-picker.tsx +141 -0
  380. package/docs/navigation/breadcrumb.tsx +128 -0
  381. package/docs/navigation/context-menu.tsx +117 -0
  382. package/docs/navigation/dropdown-menu.tsx +213 -0
  383. package/docs/navigation/filter-bar.tsx +227 -0
  384. package/docs/navigation/menubar.tsx +141 -0
  385. package/docs/navigation/navigation-menu.tsx +165 -0
  386. package/docs/navigation/pagination.tsx +241 -0
  387. package/docs/navigation/steps.tsx +263 -0
  388. package/docs/navigation/tabs-rtl.tsx +28 -0
  389. package/docs/navigation/tabs.tsx +308 -0
  390. package/docs/navigation/toolbar.tsx +339 -0
  391. package/docs/providers/app-provider.tsx +191 -0
  392. package/docs/providers/format-date.tsx +230 -0
  393. package/docs/query/button-refetch.tsx +160 -0
  394. package/docs/query/data-state.tsx +192 -0
  395. package/docs/query/infinite-query-state.tsx +93 -0
  396. package/docs/query/mutation-feedback.tsx +70 -0
  397. package/docs/query/prefetch-link.tsx +262 -0
  398. package/docs/query/touch-actions.tsx +68 -0
  399. package/docs/showcase/acme-portal.tsx +441 -0
  400. package/docs/showcase/acme-website.tsx +455 -0
  401. package/docs/showcase/case1-warehouse-dashboard.tsx +343 -0
  402. package/docs/showcase/case2-employee-me.tsx +441 -0
  403. package/docs/showcase/case3-approval-workflow.tsx +527 -0
  404. package/docs/showcase/case4-login.tsx +307 -0
  405. package/docs/showcase/case5-shift-calendar.tsx +795 -0
  406. package/docs/showcase/case6-agency-handy.tsx +1072 -0
  407. package/docs/showcase/futurelastic-web.tsx +390 -0
  408. package/docs/showcase/org-switcher.tsx +313 -0
  409. package/docs/showcase/permission-matrix.tsx +343 -0
  410. package/docs/showcase/public-landing.tsx +210 -0
  411. package/docs/showcase/settings-account-sections.tsx +559 -0
  412. package/docs/showcase/settings-security-mfa.tsx +145 -0
  413. package/docs/showcase/table-approval-queue.tsx +199 -0
  414. package/docs/showcase/table-bulk-actions.tsx +460 -0
  415. package/docs/showcase/table-compact-kintone.tsx +438 -0
  416. package/docs/showcase/table-conditional-format.tsx +367 -0
  417. package/docs/showcase/table-crud-list.tsx +544 -0
  418. package/docs/showcase/table-density.tsx +340 -0
  419. package/docs/showcase/table-expandable-rows.tsx +471 -0
  420. package/docs/showcase/table-filter-chips.tsx +461 -0
  421. package/docs/showcase/table-footer-totals.tsx +311 -0
  422. package/docs/showcase/table-grouped-subtotals.tsx +388 -0
  423. package/docs/showcase/table-master-detail.tsx +479 -0
  424. package/docs/showcase/table-pagination.tsx +320 -0
  425. package/docs/showcase/table-states.tsx +363 -0
  426. package/docs/showcase/table-sticky-columns.tsx +373 -0
  427. package/docs/showcase/table-tree-rows.tsx +444 -0
  428. package/docs/showcase/table-view-tabs.tsx +488 -0
  429. package/package.json +9 -11
  430. package/scripts/_agent-setup.mjs +16 -2
  431. package/scripts/audit-hook.mjs +3 -13
  432. package/scripts/init-agent-kit.mjs +1 -14
  433. package/scripts/postinstall.mjs +12 -12
  434. package/scripts/ui-audit.mjs +93 -31
  435. package/scripts/visual-audit-rules.mjs +51 -7
  436. package/scripts/visual-audit.mjs +118 -47
@@ -0,0 +1,120 @@
1
+ import { useState } from "react";
2
+
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
4
+ import { SearchInput } from "@godxjp/ui/data-entry";
5
+ import { Text } from "@godxjp/ui/general";
6
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
7
+
8
+ /**
9
+ * SearchInput — debounced search box with a built-in clear button.
10
+ * Always listen to onSearch (NOT onChange). Uncontrolled for local filters,
11
+ * controlled when search state lives in a URL param. Never a raw <input>.
12
+ * Composed only from real @godxjp/ui components.
13
+ */
14
+ export default function Demo() {
15
+ const [journalQuery, setJournalQuery] = useState("");
16
+ const [partnerQuery, setPartnerQuery] = useState("");
17
+
18
+ const journals = [
19
+ { id: "JE-0001", desc: "売上計上 · 株式会社山田商事" },
20
+ { id: "JE-0002", desc: "仕入計上 · 有限会社田中工業" },
21
+ { id: "JE-0003", desc: "経費精算 · 交通費" },
22
+ { id: "JE-0004", desc: "売上計上 · ABC株式会社" },
23
+ { id: "JE-0005", desc: "給与支払 · 2024年3月分" },
24
+ ];
25
+
26
+ const filtered = journals.filter(
27
+ (j) =>
28
+ j.id.toLowerCase().includes(journalQuery.toLowerCase()) ||
29
+ j.desc.toLowerCase().includes(journalQuery.toLowerCase()),
30
+ );
31
+
32
+ return (
33
+ <PageContainer
34
+ title="SearchInput"
35
+ subtitle="デバウンス付き検索ボックス · onSearch でフィルタリングを駆動する"
36
+ >
37
+ <Flex direction="col" gap="lg">
38
+ <Card>
39
+ <CardHeader>
40
+ <CardTitle level={2}>仕訳一覧フィルター(制御モード)</CardTitle>
41
+ <CardDescription>
42
+ value + onValueChange で即時制御(入力に追従)。onSearch は 250 ms
43
+ デバウンス後に発火。
44
+ </CardDescription>
45
+ </CardHeader>
46
+ <CardContent>
47
+ <Flex direction="col" gap="md">
48
+ <SearchInput
49
+ placeholder="仕訳ID・摘要で検索"
50
+ value={journalQuery}
51
+ onValueChange={setJournalQuery}
52
+ onSearch={() => {}}
53
+ />
54
+ <Flex direction="col" gap="sm">
55
+ {filtered.length === 0 ? (
56
+ <Text as="p" tone="muted">
57
+ 該当なし
58
+ </Text>
59
+ ) : (
60
+ filtered.map((j) => (
61
+ <Text as="p" key={j.id}>
62
+ <Text tone="muted" mono>
63
+ {j.id}
64
+ </Text>{" "}
65
+ {j.desc}
66
+ </Text>
67
+ ))
68
+ )}
69
+ </Flex>
70
+ </Flex>
71
+ </CardContent>
72
+ </Card>
73
+
74
+ <Card>
75
+ <CardHeader>
76
+ <CardTitle level={2}>取引先検索(非制御モード)</CardTitle>
77
+ <CardDescription>
78
+ defaultValue のみ渡して非制御。ローカルフィルターに適す。
79
+ </CardDescription>
80
+ </CardHeader>
81
+ <CardContent>
82
+ <Flex direction="col" gap="md">
83
+ <SearchInput
84
+ placeholder="取引先名で検索"
85
+ defaultValue=""
86
+ onSearch={setPartnerQuery}
87
+ debounce={300}
88
+ />
89
+ {partnerQuery && (
90
+ <Text as="p" tone="muted">
91
+ 検索中:{" "}
92
+ <Text as="strong" weight="medium">
93
+ {partnerQuery}
94
+ </Text>
95
+ </Text>
96
+ )}
97
+ </Flex>
98
+ </CardContent>
99
+ </Card>
100
+
101
+ <Card>
102
+ <CardHeader>
103
+ <CardTitle level={2}>カスタム ariaLabel</CardTitle>
104
+ <CardDescription>隣接するラベルがない場合は ariaLabel で補完する。</CardDescription>
105
+ </CardHeader>
106
+ <CardContent>
107
+ <SearchInput
108
+ id="account-code-search"
109
+ ariaLabel="勘定科目コード検索"
110
+ className="contract-search-wrapper"
111
+ inputClassName="contract-search-field"
112
+ placeholder="勘定科目コードで検索"
113
+ onSearch={() => {}}
114
+ />
115
+ </CardContent>
116
+ </Card>
117
+ </Flex>
118
+ </PageContainer>
119
+ );
120
+ }
@@ -0,0 +1,108 @@
1
+ import { useState } from "react";
2
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
3
+ import { FormField, Select } from "@godxjp/ui/data-entry";
4
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
5
+
6
+ const countries = [
7
+ { value: "jp", label: "日本", sublabel: "Japan" },
8
+ { value: "vn", label: "Việt Nam", sublabel: "Vietnam" },
9
+ ];
10
+
11
+ export default function Demo() {
12
+ const [attempt, setAttempt] = useState(0);
13
+ const [open, setOpen] = useState(false);
14
+ const [search, setSearch] = useState("");
15
+
16
+ return (
17
+ <PageContainer
18
+ title="Select async contracts"
19
+ subtitle="Retry · load more · controlled state · read-only"
20
+ >
21
+ <Flex direction="col" gap="lg">
22
+ <Card>
23
+ <CardHeader>
24
+ <CardTitle level={2}>Explicit retry action</CardTitle>
25
+ <CardDescription>
26
+ A rejected loader exposes a keyboard-focusable retry action.
27
+ </CardDescription>
28
+ </CardHeader>
29
+ <CardContent>
30
+ <FormField id="retry-country" label="Country">
31
+ <Select
32
+ id="retry-country"
33
+ errorMessage="国を読み込めませんでした"
34
+ loadOptions={async () => {
35
+ if (attempt === 0) {
36
+ setAttempt(1);
37
+ throw new Error("offline");
38
+ }
39
+ return { options: countries };
40
+ }}
41
+ />
42
+ </FormField>
43
+ </CardContent>
44
+ </Card>
45
+
46
+ <Card>
47
+ <CardHeader>
48
+ <CardTitle level={2}>Keyboard load more</CardTitle>
49
+ <CardDescription>
50
+ Infinite scroll also exposes a normal button for keyboard and switch users.
51
+ </CardDescription>
52
+ </CardHeader>
53
+ <CardContent>
54
+ <Select
55
+ aria-label="Paged country"
56
+ loadOptions={async ({ page }) => ({
57
+ options: [countries[(page - 1) % countries.length]],
58
+ hasMore: page === 1,
59
+ })}
60
+ />
61
+ </CardContent>
62
+ </Card>
63
+
64
+ <Card>
65
+ <CardHeader>
66
+ <CardTitle level={2}>Controlled popup + search</CardTitle>
67
+ <CardDescription>
68
+ Parent state can synchronize deep links, dialogs, and external filter controls.
69
+ </CardDescription>
70
+ </CardHeader>
71
+ <CardContent>
72
+ <Select
73
+ aria-label="Controlled country"
74
+ showSearch
75
+ options={countries}
76
+ open={open}
77
+ onOpenChange={setOpen}
78
+ search={search}
79
+ onSearchChange={setSearch}
80
+ filterOption={(option, query) =>
81
+ option.sublabel?.toLowerCase().includes(query.toLowerCase()) ?? false
82
+ }
83
+ size="sm"
84
+ />
85
+ </CardContent>
86
+ </Card>
87
+
88
+ <Card>
89
+ <CardHeader>
90
+ <CardTitle level={2}>Read-only value</CardTitle>
91
+ <CardDescription>
92
+ Users may inspect options but cannot change or clear the committed value.
93
+ </CardDescription>
94
+ </CardHeader>
95
+ <CardContent>
96
+ <Select
97
+ aria-label="Locked country"
98
+ showSearch
99
+ options={countries}
100
+ defaultValue="jp"
101
+ readOnly
102
+ />
103
+ </CardContent>
104
+ </Card>
105
+ </Flex>
106
+ </PageContainer>
107
+ );
108
+ }
@@ -0,0 +1,204 @@
1
+ import { useState } from "react";
2
+
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
4
+ import {
5
+ Form,
6
+ FormField,
7
+ Select,
8
+ SelectContent,
9
+ SelectGroup,
10
+ SelectItem,
11
+ SelectLabel,
12
+ SelectSeparator,
13
+ SelectTrigger,
14
+ SelectValue,
15
+ } from "@godxjp/ui/data-entry";
16
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
17
+
18
+ const REGIONS = [
19
+ { value: "tokyo", label: "東京都千代田区丸の内第一営業本部" },
20
+ { value: "hcm", label: "Thành phố Hồ Chí Minh – Văn phòng điều hành khu vực phía Nam" },
21
+ { value: "danang", label: "Đà Nẵng", disabled: true },
22
+ ];
23
+
24
+ /** Exhaustive supported Select states. Async loading/empty/error live in the main Select frame. */
25
+ export default function Demo() {
26
+ const [controlled, setControlled] = useState("tokyo");
27
+ const [searchable, setSearchable] = useState("hcm");
28
+
29
+ return (
30
+ <PageContainer title="Select matrix" subtitle="Primitive · data API · state · locale · layout">
31
+ <Flex direction="col" gap="lg">
32
+ <Card>
33
+ <CardHeader>
34
+ <CardTitle level={2}>Compound primitive · complete anatomy</CardTitle>
35
+ <CardDescription>
36
+ Group, label, separator, disabled item, controlled value, sm/md trigger and portalled
37
+ content. Radix owns keyboard focus and collision handling.
38
+ </CardDescription>
39
+ </CardHeader>
40
+ <CardContent>
41
+ <Flex direction="col" gap="md">
42
+ <FormField
43
+ id="compound-controlled"
44
+ label="Controlled priority"
45
+ helper="Arrow keys move between enabled options"
46
+ >
47
+ <Select value={controlled} onValueChange={setControlled}>
48
+ <SelectTrigger id="compound-controlled" size="sm">
49
+ <SelectValue placeholder="選択" />
50
+ </SelectTrigger>
51
+ <SelectContent collisionPadding={16}>
52
+ <SelectGroup>
53
+ <SelectLabel>日本</SelectLabel>
54
+ <SelectItem value="tokyo">東京</SelectItem>
55
+ <SelectItem value="osaka">大阪</SelectItem>
56
+ </SelectGroup>
57
+ <SelectSeparator />
58
+ <SelectGroup>
59
+ <SelectLabel>Việt Nam</SelectLabel>
60
+ <SelectItem value="hcm">Thành phố Hồ Chí Minh</SelectItem>
61
+ <SelectItem value="danang" disabled>
62
+ Đà Nẵng(利用不可)
63
+ </SelectItem>
64
+ </SelectGroup>
65
+ </SelectContent>
66
+ </Select>
67
+ </FormField>
68
+ <FormField id="compound-uncontrolled" label="Uncontrolled default">
69
+ <Select defaultValue="osaka">
70
+ <SelectTrigger id="compound-uncontrolled" size="md">
71
+ <SelectValue />
72
+ </SelectTrigger>
73
+ <SelectContent position="popper" sideOffset={8} collisionPadding={24}>
74
+ <SelectItem value="tokyo">東京</SelectItem>
75
+ <SelectItem value="osaka">大阪</SelectItem>
76
+ </SelectContent>
77
+ </Select>
78
+ </FormField>
79
+ <FormField id="compound-disabled" label="Disabled control">
80
+ <Select defaultValue="tokyo" disabled>
81
+ <SelectTrigger id="compound-disabled">
82
+ <SelectValue />
83
+ </SelectTrigger>
84
+ <SelectContent>
85
+ <SelectItem value="tokyo">東京</SelectItem>
86
+ </SelectContent>
87
+ </Select>
88
+ </FormField>
89
+ </Flex>
90
+ </CardContent>
91
+ </Card>
92
+
93
+ <Card>
94
+ <CardHeader>
95
+ <CardTitle level={2}>Non-search / search API boundary</CardTitle>
96
+ <CardDescription>
97
+ Without showSearch/loadOptions the data API delegates to Radix Select: grouping,
98
+ disabled options, renderOption, name and controlled/uncontrolled values are supported.
99
+ clearable, search/loading/empty/error messages and selected-value renderers belong to
100
+ the searchable engine; this frame does not imply parity where the implementation has
101
+ none. SearchSelect itself is internal and is not a package-barrel component export.
102
+ </CardDescription>
103
+ </CardHeader>
104
+ </Card>
105
+
106
+ <Card>
107
+ <CardHeader>
108
+ <CardTitle level={2}>Data-driven · long JA/VI and disabled option</CardTitle>
109
+ <CardDescription>
110
+ Long labels truncate without widening the page. The disabled option remains visible
111
+ but cannot be selected; name creates a native hidden form value.
112
+ </CardDescription>
113
+ </CardHeader>
114
+ <CardContent>
115
+ <Form columns={2} density="compact">
116
+ <FormField id="long-controlled" label="Controlled" helper="日本語・Tiếng Việt の長文">
117
+ <Select
118
+ id="long-controlled"
119
+ name="region"
120
+ value={controlled}
121
+ onValueChange={setControlled}
122
+ options={REGIONS}
123
+ />
124
+ </FormField>
125
+ <FormField id="long-uncontrolled" label="Uncontrolled" required>
126
+ <Select
127
+ id="long-uncontrolled"
128
+ name="region_default"
129
+ defaultValue="hcm"
130
+ options={REGIONS}
131
+ />
132
+ </FormField>
133
+ </Form>
134
+ </CardContent>
135
+ </Card>
136
+
137
+ <Card>
138
+ <CardHeader>
139
+ <CardTitle level={2}>Searchable · FormField validation contract</CardTitle>
140
+ <CardDescription>
141
+ The searchable trigger receives FormField label, helper, required, invalid and error
142
+ references. The internal search textbox has its own visible-purpose accessible name.
143
+ </CardDescription>
144
+ </CardHeader>
145
+ <CardContent>
146
+ <FormField
147
+ id="searchable-invalid"
148
+ label="担当拠点"
149
+ required
150
+ helper="名称で検索できます"
151
+ error="担当拠点を確認してください"
152
+ >
153
+ <Select
154
+ id="searchable-invalid"
155
+ name="searchable_region"
156
+ value={searchable}
157
+ onValueChange={setSearchable}
158
+ showSearch
159
+ searchPlaceholder="拠点を検索 / Tìm văn phòng"
160
+ clearLabel="選択をクリア"
161
+ options={REGIONS}
162
+ />
163
+ </FormField>
164
+ </CardContent>
165
+ </Card>
166
+
167
+ <Card>
168
+ <CardHeader>
169
+ <CardTitle level={2}>RTL and collision boundary</CardTitle>
170
+ <CardDescription>
171
+ Logical spacing mirrors under dir=rtl. The portalled panel uses Radix collision
172
+ padding near the inline edge instead of overflowing the viewport.
173
+ </CardDescription>
174
+ </CardHeader>
175
+ <CardContent>
176
+ <div dir="rtl" className="ms-auto w-full max-w-sm">
177
+ <FormField id="rtl-select" label="المنطقة" helper="اختر منطقة التشغيل">
178
+ <Select
179
+ id="rtl-select"
180
+ defaultValue="riyadh"
181
+ options={[
182
+ { value: "riyadh", label: "الرياض" },
183
+ { value: "jeddah", label: "جدة" },
184
+ ]}
185
+ />
186
+ </FormField>
187
+ </div>
188
+ </CardContent>
189
+ </Card>
190
+
191
+ <Card>
192
+ <CardHeader>
193
+ <CardTitle level={2}>Supported async boundary</CardTitle>
194
+ <CardDescription>
195
+ The main Select frame demonstrates loading, resolved-empty and rejected loaders.
196
+ Re-querying or reopening retries the loader; there is currently no explicit
197
+ retry-button prop, so this matrix does not invent one.
198
+ </CardDescription>
199
+ </CardHeader>
200
+ </Card>
201
+ </Flex>
202
+ </PageContainer>
203
+ );
204
+ }