@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,145 @@
1
+ /**
2
+ * Showcase · case5 — Security / two-factor settings (Bảo mật · Xác thực hai lớp)
3
+ *
4
+ * The CORRECT build of the screen that keeps getting hand-rolled wrong. Every defect from the
5
+ * freelanced version is fixed here by following rules that ALREADY exist in the godx-ui MCP:
6
+ *
7
+ * ✗ wrong (hand-rolled) ✓ here (rule)
8
+ * ─────────────────────────────────────────────────────────────────────────────────────────
9
+ * factor row = a centered <div> with the ListRow — leading icon · title/description ·
10
+ * title duplicated as its own description trailing action (no redundant copy) (#113)
11
+ * "Xoá" rendered as plain black text destructive-toned ghost button — delete is a
12
+ * destructive action, color carries intent
13
+ * every action a full-width stacked bar right-aligned, auto-width actions; ONE primary
14
+ * (rule 217 explicitly forbids this) per card, secondary = outline (rule 217)
15
+ * 📱 / ✉️ emoji as "icons" lucide icons (no emoji in product UI) (anti-tell)
16
+ * brand glyph = a styled <span> (size/radius Avatar primitive — real brand mark (#116)
17
+ * baked as literals)
18
+ *
19
+ * Built ENTIRELY from real @godxjp/ui primitives. reference-design DNA: small headings, 14/1.7 body,
20
+ * one --primary action, 1px-border surfaces, no resting shadow, quiet factual copy, no emoji.
21
+ */
22
+ import { KeyRound, Mail, ShieldCheck, Smartphone } from "lucide-react";
23
+
24
+ import { Button, Text } from "@godxjp/ui/general";
25
+ import {
26
+ Avatar,
27
+ AvatarFallback,
28
+ Badge,
29
+ Card,
30
+ CardContent,
31
+ CardDescription,
32
+ CardFooter,
33
+ CardHeader,
34
+ CardTitle,
35
+ ListRow,
36
+ } from "@godxjp/ui/data-display";
37
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
38
+
39
+ // A row-level delete is destructive but low-emphasis — a ghost button toned destructive (color
40
+ // carries the intent without a heavy solid-red fill). This is the canonical "delete in a list" action.
41
+ function DeleteAction({ label }: { label: string }) {
42
+ return (
43
+ <Button
44
+ size="sm"
45
+ variant="ghost"
46
+ className="text-destructive hover:bg-destructive/10 hover:text-destructive"
47
+ >
48
+ {label}
49
+ </Button>
50
+ );
51
+ }
52
+
53
+ export default function SecurityMfaShowcase() {
54
+ return (
55
+ <PageContainer title="Bảo mật" subtitle="Quản lý mật khẩu, xác thực 2 lớp và passkey.">
56
+ <Flex direction="col" gap="lg" className="max-w-3xl">
57
+ {/* Account identity — the brand mark is an Avatar primitive, not a styled span. */}
58
+ <Flex direction="row" align="center" gap="sm">
59
+ <Avatar className="rounded-md">
60
+ <AvatarFallback className="bg-primary text-primary-foreground font-bold">
61
+ T
62
+ </AvatarFallback>
63
+ </Avatar>
64
+ <Flex direction="col" gap="xs">
65
+ <Text weight="medium">Tài khoản godx</Text>
66
+ <Text size="xs" tone="muted">
67
+ tu-phuc-vu@famgia.com
68
+ </Text>
69
+ </Flex>
70
+ </Flex>
71
+
72
+ {/* Two-factor authentication. Enrolled factors are ListRows; add/manage actions live in the
73
+ * trailing slot per row — NOT a stack of full-width bars. */}
74
+ <Card>
75
+ <CardHeader>
76
+ <CardTitle level={2}>Xác thực hai lớp</CardTitle>
77
+ <CardDescription>Yêu cầu xác minh thêm khi đăng nhập.</CardDescription>
78
+ </CardHeader>
79
+ <CardContent flush>
80
+ <ListRow
81
+ leading={<Mail aria-hidden="true" className="size-4" />}
82
+ title="OTP qua email"
83
+ description="Gửi mã tới t•••@famgia.com"
84
+ trailing={
85
+ <>
86
+ <Badge tone="success" icon={null}>
87
+ Đã bật
88
+ </Badge>
89
+ <DeleteAction label="Xoá" />
90
+ </>
91
+ }
92
+ />
93
+ <ListRow
94
+ leading={<Smartphone aria-hidden="true" className="size-4" />}
95
+ title="Ứng dụng xác thực"
96
+ description="Chưa thiết lập"
97
+ trailing={
98
+ <Button size="sm" variant="outline">
99
+ Thiết lập
100
+ </Button>
101
+ }
102
+ />
103
+ <ListRow
104
+ leading={<KeyRound aria-hidden="true" className="size-4" />}
105
+ title="Passkey"
106
+ description="1 thiết bị · MacBook Pro"
107
+ trailing={
108
+ <Button size="sm" variant="ghost">
109
+ Quản lý
110
+ </Button>
111
+ }
112
+ />
113
+ </CardContent>
114
+ </Card>
115
+
116
+ {/* Recovery codes — a card whose single action sits in a right-aligned footer (rule 217:
117
+ * primary rightmost, never a centered/full-width bar). */}
118
+ <Card>
119
+ <CardHeader>
120
+ <CardTitle level={2}>Mã khôi phục</CardTitle>
121
+ <CardDescription>
122
+ Dùng khi bạn không truy cập được thiết bị xác thực. Còn lại 8 mã chưa dùng.
123
+ </CardDescription>
124
+ </CardHeader>
125
+ <CardContent>
126
+ <Flex direction="row" align="center" gap="sm">
127
+ <ShieldCheck aria-hidden="true" className="text-success size-4" />
128
+ <Text size="sm" tone="muted">
129
+ Đã tạo ngày 12/03/2026
130
+ </Text>
131
+ </Flex>
132
+ </CardContent>
133
+ <CardFooter separated className="justify-end gap-2">
134
+ <Button variant="ghost" size="sm">
135
+ Tải xuống
136
+ </Button>
137
+ <Button variant="outline" size="sm">
138
+ Tạo lại mã
139
+ </Button>
140
+ </CardFooter>
141
+ </Card>
142
+ </Flex>
143
+ </PageContainer>
144
+ );
145
+ }
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Showcase · アクセス承認キュー / Access approval queue (gh#253) — the canonical five-column
3
+ * approval collection at 1440 · 1024 · 390 using ONLY public API.
4
+ *
5
+ * The whole responsive contract is `Table preset="action-collection"` plus a `priority` on each
6
+ * column's `TableHead`/`TableCell`. Below the collapse step the package swaps the desktop
7
+ * intrinsic column widths for the token-owned priority measures under `table-layout: fixed` and
8
+ * lets cells wrap, so 申請者 · 対象 · 理由 · 申請日時 · 操作 all stay inside the initial 390px
9
+ * frame — no page-local CSS, no consumer width, no hidden column, no horizontal scroll.
10
+ *
11
+ * The table stays a REAL table at every width: `<thead>` / `<th scope>` / `<tr>` / `<td>` are
12
+ * untouched, so header association and screen-reader table navigation are identical at 390 and at
13
+ * 1440. Row actions are a single kebab menu, the affordance whose measure the preset reserves
14
+ * first — it can never be pushed outside the viewport.
15
+ *
16
+ * Content is JA + EN + VI, including a deliberately long reason and a long resource path.
17
+ */
18
+ import { ClipboardCheck, LayoutDashboard, MoreHorizontal, ScrollText } from "lucide-react";
19
+
20
+ import {
21
+ Badge,
22
+ Card,
23
+ CardContent,
24
+ Table,
25
+ TableBody,
26
+ TableCell,
27
+ TableHead,
28
+ TableHeader,
29
+ TableRow,
30
+ } from "@godxjp/ui/data-display";
31
+ import { Button, Text } from "@godxjp/ui/general";
32
+ import { AppShell, Flex, PageContainer, Sidebar, Topbar } from "@godxjp/ui/layout";
33
+ import {
34
+ DropdownMenu,
35
+ DropdownMenuContent,
36
+ DropdownMenuItem,
37
+ DropdownMenuTrigger,
38
+ } from "@godxjp/ui/navigation";
39
+
40
+ type Request = {
41
+ id: string;
42
+ requester: string;
43
+ requesterMail: string;
44
+ target: string;
45
+ reason: string;
46
+ requestedAt: string;
47
+ state: "pending" | "escalated";
48
+ };
49
+
50
+ const REQUESTS: Request[] = [
51
+ {
52
+ id: "req-1041",
53
+ requester: "田中 太郎",
54
+ requesterMail: "taro.tanaka@example.co.jp",
55
+ target: "会計 / 請求書エクスポート",
56
+ reason: "月次決算のため請求データの一括出力権限が必要です。",
57
+ requestedAt: "2026-08-03T09:12:00+09:00",
58
+ state: "pending",
59
+ },
60
+ {
61
+ id: "req-1042",
62
+ requester: "Nguyễn Thị Hồng Ánh",
63
+ requesterMail: "hong.anh.nguyen@example.vn",
64
+ target: "Kho vận / Quản trị phiếu xuất kho khu vực miền Nam",
65
+ reason:
66
+ "Cần quyền quản trị để xử lý phiếu xuất kho tồn đọng của chi nhánh miền Nam trong kỳ kiểm kê quý III.",
67
+ requestedAt: "2026-08-03T11:47:00+09:00",
68
+ state: "escalated",
69
+ },
70
+ {
71
+ id: "req-1043",
72
+ requester: "Margaret Whitmore-Ashcombe",
73
+ requesterMail: "margaret.whitmore@example.com",
74
+ target: "Identity / Service account administration",
75
+ reason: "Rotating the service-account credentials scheduled for the August maintenance window.",
76
+ requestedAt: "2026-08-04T02:05:00+09:00",
77
+ state: "pending",
78
+ },
79
+ {
80
+ id: "req-1044",
81
+ requester: "佐藤 花子",
82
+ requesterMail: "hanako.sato@example.co.jp",
83
+ target: "勤怠 / 部門レポート",
84
+ reason: "部門別の残業集計を確認するため。",
85
+ requestedAt: "2026-08-04T08:30:00+09:00",
86
+ state: "pending",
87
+ },
88
+ ];
89
+
90
+ const REQUESTED_AT = new Intl.DateTimeFormat("ja-JP", {
91
+ dateStyle: "short",
92
+ timeStyle: "short",
93
+ timeZone: "Asia/Tokyo",
94
+ });
95
+
96
+ export default function TableApprovalQueue() {
97
+ return (
98
+ <AppShell
99
+ sidebar={
100
+ <Sidebar
101
+ product={{ name: "GodX Platform", role: "運用管理" }}
102
+ activeId="approvals"
103
+ sections={[
104
+ {
105
+ label: "運用",
106
+ items: [
107
+ { id: "dashboard", label: "ダッシュボード", icon: LayoutDashboard },
108
+ { id: "approvals", label: "アクセス承認", icon: ClipboardCheck },
109
+ { id: "audit", label: "監査ログ", icon: ScrollText },
110
+ ],
111
+ },
112
+ ]}
113
+ />
114
+ }
115
+ topbar={<Topbar start={<Text weight="medium">アクセス承認</Text>} />}
116
+ >
117
+ <PageContainer
118
+ title="アクセス承認"
119
+ subtitle="Access approval · Phê duyệt truy cập"
120
+ density="compact"
121
+ variant="flush"
122
+ >
123
+ <Card>
124
+ <CardContent flush>
125
+ <Table preset="action-collection" collapseBelow="sm">
126
+ <TableHeader>
127
+ <TableRow>
128
+ <TableHead priority="primary" scope="col">
129
+ 申請者
130
+ </TableHead>
131
+ <TableHead priority="secondary" scope="col">
132
+ 対象
133
+ </TableHead>
134
+ <TableHead scope="col">理由</TableHead>
135
+ <TableHead priority="meta" scope="col">
136
+ 申請日時
137
+ </TableHead>
138
+ <TableHead priority="actions" scope="col">
139
+ <span className="sr-only">操作</span>
140
+ </TableHead>
141
+ </TableRow>
142
+ </TableHeader>
143
+ <TableBody>
144
+ {REQUESTS.map((request) => (
145
+ <TableRow key={request.id}>
146
+ <TableCell priority="primary">
147
+ <Flex direction="col" gap="xs">
148
+ <Text size="sm">{request.requester}</Text>
149
+ <Text size="xs" tone="muted">
150
+ {request.requesterMail}
151
+ </Text>
152
+ </Flex>
153
+ </TableCell>
154
+ <TableCell priority="secondary">
155
+ <Flex direction="col" gap="xs" align="start">
156
+ <Text size="sm">{request.target}</Text>
157
+ {request.state === "escalated" && (
158
+ <Badge tone="warning">エスカレーション</Badge>
159
+ )}
160
+ </Flex>
161
+ </TableCell>
162
+ <TableCell>
163
+ <Text size="sm">{request.reason}</Text>
164
+ </TableCell>
165
+ <TableCell priority="meta">
166
+ <Text size="xs" tone="muted">
167
+ <time dateTime={request.requestedAt}>
168
+ {REQUESTED_AT.format(new Date(request.requestedAt))}
169
+ </time>
170
+ </Text>
171
+ </TableCell>
172
+ <TableCell priority="actions">
173
+ <DropdownMenu>
174
+ <DropdownMenuTrigger asChild>
175
+ <Button
176
+ variant="ghost"
177
+ size="xs"
178
+ aria-label={`${request.requester} の申請の操作`}
179
+ >
180
+ <MoreHorizontal aria-hidden />
181
+ </Button>
182
+ </DropdownMenuTrigger>
183
+ <DropdownMenuContent align="end">
184
+ <DropdownMenuItem>承認する</DropdownMenuItem>
185
+ <DropdownMenuItem>却下する</DropdownMenuItem>
186
+ <DropdownMenuItem>詳細を表示</DropdownMenuItem>
187
+ </DropdownMenuContent>
188
+ </DropdownMenu>
189
+ </TableCell>
190
+ </TableRow>
191
+ ))}
192
+ </TableBody>
193
+ </Table>
194
+ </CardContent>
195
+ </Card>
196
+ </PageContainer>
197
+ </AppShell>
198
+ );
199
+ }