@godxjp/ui 19.1.0 → 19.3.1

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 (437) 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 +20 -14
  11. package/dist/components/data-display/badge.js +18 -4
  12. package/dist/components/data-display/card.d.ts +21 -41
  13. package/dist/components/data-display/carousel.d.ts +1 -2
  14. package/dist/components/data-display/code-block.d.ts +4 -0
  15. package/dist/components/data-display/code-block.js +24 -0
  16. package/dist/components/data-display/data-table.d.ts +15 -37
  17. package/dist/components/data-display/data-table.js +1 -3
  18. package/dist/components/data-display/descriptions.d.ts +2 -6
  19. package/dist/components/data-display/descriptions.js +0 -2
  20. package/dist/components/data-display/index.d.ts +4 -0
  21. package/dist/components/data-display/index.js +4 -0
  22. package/dist/components/data-display/list-row.d.ts +3 -22
  23. package/dist/components/data-display/permission-matrix.d.ts +7 -20
  24. package/dist/components/data-display/progress.d.ts +1 -1
  25. package/dist/components/data-display/prose.d.ts +4 -0
  26. package/dist/components/data-display/prose.js +20 -0
  27. package/dist/components/data-display/service-launcher-card.d.ts +3 -10
  28. package/dist/components/data-display/table.d.ts +20 -80
  29. package/dist/components/data-display/table.js +0 -3
  30. package/dist/components/data-display/timeline.d.ts +3 -5
  31. package/dist/components/data-entry/branch-scope-picker.d.ts +2 -19
  32. package/dist/components/data-entry/branch-scope-picker.js +0 -1
  33. package/dist/components/data-entry/calendar.d.ts +3 -2
  34. package/dist/components/data-entry/calendar.js +58 -3
  35. package/dist/components/data-entry/command-palette.d.ts +8 -22
  36. package/dist/components/data-entry/date-picker.d.ts +4 -5
  37. package/dist/components/data-entry/date-picker.js +6 -1
  38. package/dist/components/data-entry/date-range-picker.d.ts +1 -1
  39. package/dist/components/data-entry/date-range-picker.js +8 -3
  40. package/dist/components/data-entry/form-errors.d.ts +7 -18
  41. package/dist/components/data-entry/form-field.js +1 -5
  42. package/dist/components/data-entry/form.d.ts +1 -9
  43. package/dist/components/data-entry/input.d.ts +16 -14
  44. package/dist/components/data-entry/input.js +3 -0
  45. package/dist/components/data-entry/month-picker.js +2 -2
  46. package/dist/components/data-entry/month-range-picker.d.ts +4 -6
  47. package/dist/components/data-entry/month-range-picker.js +2 -2
  48. package/dist/components/data-entry/number-input.d.ts +1 -5
  49. package/dist/components/data-entry/number-input.js +1 -0
  50. package/dist/components/data-entry/radio.js +0 -1
  51. package/dist/components/data-entry/search-select.d.ts +2 -4
  52. package/dist/components/data-entry/select.d.ts +11 -6
  53. package/dist/components/data-entry/select.js +4 -2
  54. package/dist/components/data-entry/switch.js +0 -1
  55. package/dist/components/data-entry/textarea.d.ts +10 -16
  56. package/dist/components/data-entry/time-picker.d.ts +3 -5
  57. package/dist/components/data-entry/upload-types.d.ts +1 -5
  58. package/dist/components/data-entry/use-upload-draft.d.ts +0 -4
  59. package/dist/components/feedback/dialog.d.ts +6 -15
  60. package/dist/components/feedback/overlay-header-tone.d.ts +1 -1
  61. package/dist/components/feedback/sheet.d.ts +3 -10
  62. package/dist/components/feedback/sheet.js +1 -1
  63. package/dist/components/feedback/sonner.js +2 -3
  64. package/dist/components/general/activity.d.ts +4 -30
  65. package/dist/components/general/button.js +1 -10
  66. package/dist/components/general/logo.d.ts +6 -28
  67. package/dist/components/general/reveal.d.ts +3 -9
  68. package/dist/components/general/typography.d.ts +1 -3
  69. package/dist/components/layout/account-chip.d.ts +8 -0
  70. package/dist/components/layout/account-chip.js +45 -0
  71. package/dist/components/layout/auth-divider.d.ts +2 -9
  72. package/dist/components/layout/auth-shell.d.ts +1 -14
  73. package/dist/components/layout/breadcrumb.d.ts +1 -5
  74. package/dist/components/layout/centered-shell.d.ts +4 -18
  75. package/dist/components/layout/error-surface.d.ts +11 -28
  76. package/dist/components/layout/error-surface.js +4 -1
  77. package/dist/components/layout/index.d.ts +2 -0
  78. package/dist/components/layout/index.js +2 -0
  79. package/dist/components/layout/legal-document-shell.d.ts +5 -28
  80. package/dist/components/layout/master-detail.d.ts +2 -18
  81. package/dist/components/layout/page-container.js +0 -1
  82. package/dist/components/layout/responsive-grid.d.ts +6 -1
  83. package/dist/components/layout/responsive-grid.js +9 -2
  84. package/dist/components/layout/service-role-panel.d.ts +7 -19
  85. package/dist/components/layout/sidebar.d.ts +5 -27
  86. package/dist/components/layout/sidebar.js +0 -1
  87. package/dist/components/layout/split-pane.d.ts +0 -7
  88. package/dist/components/layout/topbar.d.ts +1 -14
  89. package/dist/components/navigation/app-setting-picker.js +1 -3
  90. package/dist/components/navigation/filter-bar.d.ts +1 -6
  91. package/dist/components/navigation/pagination-utils.d.ts +2 -12
  92. package/dist/components/navigation/tabs-scroll.d.ts +2 -36
  93. package/dist/components/navigation/tabs.js +4 -8
  94. package/dist/components/query/data-state.d.ts +2 -2
  95. package/dist/components/ui/credential-reveal.d.ts +1 -4
  96. package/dist/components/ui/hover-card.d.ts +1 -2
  97. package/dist/components/ui/separator.d.ts +2 -15
  98. package/dist/components/ui/toggle-group.d.ts +1 -5
  99. package/dist/components/ui/toggle.d.ts +6 -31
  100. package/dist/email/brand-mark.d.ts +6 -34
  101. package/dist/email/color.d.ts +7 -17
  102. package/dist/email/geometry.d.ts +4 -8
  103. package/dist/email/index.d.ts +4 -48
  104. package/dist/email/inline-style.d.ts +3 -9
  105. package/dist/email/urgency.d.ts +2 -7
  106. package/dist/form/form-context.d.ts +2 -5
  107. package/dist/form/form-root.d.ts +1 -2
  108. package/dist/i18n/messages/en.json +4 -0
  109. package/dist/i18n/messages/ja.json +4 -0
  110. package/dist/i18n/messages/vi.json +4 -0
  111. package/dist/inertia/index.d.ts +2 -10
  112. package/dist/lib/control-styles.d.ts +10 -21
  113. package/dist/lib/control-styles.js +4 -6
  114. package/dist/lib/datetime/format-date.d.ts +1 -4
  115. package/dist/lib/field-a11y.d.ts +11 -68
  116. package/dist/lib/field-a11y.js +0 -1
  117. package/dist/lib/format.d.ts +4 -8
  118. package/dist/lib/hooks.d.ts +6 -12
  119. package/dist/lib/permission-grid.d.ts +3 -18
  120. package/dist/lib/query-error.d.ts +3 -3
  121. package/dist/props/components/app.prop.d.ts +15 -38
  122. package/dist/props/components/charts.prop.d.ts +2 -3
  123. package/dist/props/components/data-display.prop.d.ts +55 -72
  124. package/dist/props/components/data-entry.prop.d.ts +35 -40
  125. package/dist/props/components/form.prop.d.ts +2 -6
  126. package/dist/props/components/general.prop.d.ts +11 -27
  127. package/dist/props/components/layout.prop.d.ts +89 -260
  128. package/dist/props/components/navigation.prop.d.ts +27 -42
  129. package/dist/props/registry.d.ts +36 -1
  130. package/dist/props/registry.js +45 -1
  131. package/dist/props/vocabulary/data.prop.d.ts +18 -49
  132. package/dist/props/vocabulary/index.d.ts +1 -1
  133. package/dist/props/vocabulary/interaction.prop.d.ts +10 -12
  134. package/dist/props/vocabulary/layout.prop.d.ts +8 -30
  135. package/dist/props/vocabulary/shared.prop.d.ts +3 -2
  136. package/dist/styles/alert-layout.css +1 -32
  137. package/dist/styles/badge-layout.css +19 -18
  138. package/dist/styles/base.css +14 -113
  139. package/dist/styles/card-layout.css +6 -128
  140. package/dist/styles/chart-layout.css +2 -17
  141. package/dist/styles/control.css +380 -458
  142. package/dist/styles/core.css +21 -0
  143. package/dist/styles/data-display-layout.css +175 -94
  144. package/dist/styles/data-entry-layout.css +0 -45
  145. package/dist/styles/density.css +1 -30
  146. package/dist/styles/dialog-layout.css +5 -69
  147. package/dist/styles/focus-ring.css +13 -87
  148. package/dist/styles/fonts.css +1 -31
  149. package/dist/styles/form-layout.css +7 -91
  150. package/dist/styles/index.css +2 -20
  151. package/dist/styles/layout.css +38 -456
  152. package/dist/styles/logo-layout.css +1 -35
  153. package/dist/styles/motion.css +3 -42
  154. package/dist/styles/navigation-layout.css +3 -50
  155. package/dist/styles/shell-layout.css +37 -403
  156. package/dist/styles/table-layout.css +16 -274
  157. package/dist/styles/text-layout.css +7 -21
  158. package/dist/styles/toggle.css +1 -23
  159. package/dist/theme/dxs.canonical.css +1 -55
  160. package/dist/theme/example.service.css +1 -26
  161. package/dist/theme/famgia.service.css +5 -15
  162. package/dist/tokens/axes.css +3 -40
  163. package/dist/tokens/base.css +1 -4
  164. package/dist/tokens/components/activity.css +6 -42
  165. package/dist/tokens/components/badge.css +12 -13
  166. package/dist/tokens/components/banner.css +4 -9
  167. package/dist/tokens/components/card.css +32 -88
  168. package/dist/tokens/components/chart.css +9 -26
  169. package/dist/tokens/components/control.css +37 -222
  170. package/dist/tokens/components/data-display.css +28 -79
  171. package/dist/tokens/components/data-entry.css +5 -19
  172. package/dist/tokens/components/descriptions.css +7 -27
  173. package/dist/tokens/components/email.css +38 -84
  174. package/dist/tokens/components/error-surface.css +2 -18
  175. package/dist/tokens/components/feedback.css +27 -124
  176. package/dist/tokens/components/form.css +13 -45
  177. package/dist/tokens/components/legal-document.css +16 -41
  178. package/dist/tokens/components/list-row.css +11 -36
  179. package/dist/tokens/components/logo.css +2 -57
  180. package/dist/tokens/components/navigation.css +16 -94
  181. package/dist/tokens/components/scroll-area.css +2 -18
  182. package/dist/tokens/components/separator.css +8 -30
  183. package/dist/tokens/components/sheet.css +3 -14
  184. package/dist/tokens/components/shell.css +53 -307
  185. package/dist/tokens/components/sidebar.css +5 -22
  186. package/dist/tokens/components/table.css +19 -140
  187. package/dist/tokens/components/toggle.css +3 -65
  188. package/dist/tokens/components/upload.css +7 -43
  189. package/dist/tokens/foundation.css +108 -383
  190. package/dist/tokens/semantic/layout.css +33 -207
  191. package/docs/CANONICAL-CONTRACTS.md +206 -0
  192. package/docs/COMPONENTS.md +157 -0
  193. package/docs/COMPOSITION-VS-COMPONENT.md +105 -0
  194. package/docs/CONSUMER-RULES.md +14 -0
  195. package/docs/CUSTOMER-THEMING.md +162 -0
  196. package/docs/DATETIME.md +69 -0
  197. package/docs/DEVELOPMENT.md +173 -0
  198. package/docs/FORMS.md +143 -0
  199. package/docs/FRAME-A11Y-CI.md +267 -0
  200. package/docs/FRAME-COVERAGE-LEDGER.md +123 -0
  201. package/docs/FRAME-COVERAGE-REPORT.md +140 -0
  202. package/docs/FRAME-COVERAGE-STANDARD.md +65 -0
  203. package/docs/FRAME-COVERAGE.md +29 -0
  204. package/docs/PROPS-REGISTRY.md +61 -0
  205. package/docs/PROPS-VOCABULARY.md +100 -0
  206. package/docs/README.md +60 -0
  207. package/docs/REGISTRY.md +70 -0
  208. package/docs/SPACING.md +56 -0
  209. package/docs/STANDARDS-vocabulary-tokens.md +48 -0
  210. package/docs/TESTING.md +98 -0
  211. package/docs/TOKENS.md +347 -0
  212. package/docs/asset-modules.d.ts +46 -0
  213. package/docs/assets/cover-terrain.svg +6 -0
  214. package/docs/assets/portrait-amber.svg +5 -0
  215. package/docs/assets/portrait-clay.svg +5 -0
  216. package/docs/assets/portrait-indigo.svg +5 -0
  217. package/docs/assets/portrait-iris.svg +5 -0
  218. package/docs/assets/portrait-moss.svg +5 -0
  219. package/docs/assets/portrait-plum.svg +5 -0
  220. package/docs/assets/portrait-slate.svg +5 -0
  221. package/docs/charts/compact-bar-trend.tsx +328 -0
  222. package/docs/charts/size-tiers.tsx +192 -0
  223. package/docs/data-display/accordion.tsx +99 -0
  224. package/docs/data-display/avatar.tsx +355 -0
  225. package/docs/data-display/badge.tsx +283 -0
  226. package/docs/data-display/card/examples/detail-panel.tsx +106 -0
  227. package/docs/data-display/card/index.md +3 -0
  228. package/docs/data-display/card/index.tsx +285 -0
  229. package/docs/data-display/carousel.tsx +160 -0
  230. package/docs/data-display/charts.tsx +198 -0
  231. package/docs/data-display/code-block.tsx +90 -0
  232. package/docs/data-display/collapsible.tsx +162 -0
  233. package/docs/data-display/credential-reveal.tsx +145 -0
  234. package/docs/data-display/data-table/examples/approval-queue.tsx +212 -0
  235. package/docs/data-display/data-table/examples/grid-features.tsx +158 -0
  236. package/docs/data-display/data-table/examples/list-page.tsx +175 -0
  237. package/docs/data-display/data-table/index.md +5 -0
  238. package/docs/data-display/data-table/index.tsx +295 -0
  239. package/docs/data-display/descriptions.tsx +143 -0
  240. package/docs/data-display/empty-state.tsx +164 -0
  241. package/docs/data-display/hover-card.tsx +181 -0
  242. package/docs/data-display/list-row.tsx +420 -0
  243. package/docs/data-display/permission-matrix.tsx +188 -0
  244. package/docs/data-display/popover-touch.tsx +27 -0
  245. package/docs/data-display/popover.tsx +246 -0
  246. package/docs/data-display/progress.tsx +84 -0
  247. package/docs/data-display/prose.tsx +105 -0
  248. package/docs/data-display/qr-code.tsx +68 -0
  249. package/docs/data-display/scroll-area.tsx +303 -0
  250. package/docs/data-display/service-launcher-card.tsx +145 -0
  251. package/docs/data-display/stat-card.tsx +99 -0
  252. package/docs/data-display/table.tsx +251 -0
  253. package/docs/data-display/timeline.tsx +112 -0
  254. package/docs/data-display/touch-actions.tsx +36 -0
  255. package/docs/data-display/tree-list.tsx +107 -0
  256. package/docs/data-entry/branch-scope-picker.tsx +123 -0
  257. package/docs/data-entry/calendar.tsx +180 -0
  258. package/docs/data-entry/cascader.tsx +378 -0
  259. package/docs/data-entry/checkbox.tsx +256 -0
  260. package/docs/data-entry/color-picker.tsx +117 -0
  261. package/docs/data-entry/command-palette.tsx +179 -0
  262. package/docs/data-entry/command.tsx +262 -0
  263. package/docs/data-entry/country-picker-recipe.tsx +175 -0
  264. package/docs/data-entry/date-picker.tsx +191 -0
  265. package/docs/data-entry/date-range-picker.tsx +149 -0
  266. package/docs/data-entry/form/examples/employee-settings.tsx +267 -0
  267. package/docs/data-entry/form/examples/invoice-form.tsx +387 -0
  268. package/docs/data-entry/form-field/examples/a11y-contract.tsx +240 -0
  269. package/docs/data-entry/form-field/examples/create-form.tsx +105 -0
  270. package/docs/data-entry/form-field/index.md +8 -0
  271. package/docs/data-entry/form-field/index.tsx +330 -0
  272. package/docs/data-entry/form-inertia.tsx +80 -0
  273. package/docs/data-entry/form-root.tsx +102 -0
  274. package/docs/data-entry/form.tsx +724 -0
  275. package/docs/data-entry/input-otp.tsx +231 -0
  276. package/docs/data-entry/input.tsx +114 -0
  277. package/docs/data-entry/label.tsx +100 -0
  278. package/docs/data-entry/month-picker.tsx +101 -0
  279. package/docs/data-entry/month-range-picker.tsx +115 -0
  280. package/docs/data-entry/number-input.tsx +240 -0
  281. package/docs/data-entry/password-input.tsx +102 -0
  282. package/docs/data-entry/password-strength.tsx +97 -0
  283. package/docs/data-entry/radio-group.tsx +95 -0
  284. package/docs/data-entry/rating.tsx +87 -0
  285. package/docs/data-entry/search-input.tsx +120 -0
  286. package/docs/data-entry/select-async-contracts.tsx +108 -0
  287. package/docs/data-entry/select-matrix.tsx +204 -0
  288. package/docs/data-entry/select.tsx +369 -0
  289. package/docs/data-entry/slider.tsx +130 -0
  290. package/docs/data-entry/switch.tsx +67 -0
  291. package/docs/data-entry/tag-input.tsx +108 -0
  292. package/docs/data-entry/textarea.tsx +209 -0
  293. package/docs/data-entry/time-picker.tsx +99 -0
  294. package/docs/data-entry/toggle-count.tsx +293 -0
  295. package/docs/data-entry/toggle-group.tsx +225 -0
  296. package/docs/data-entry/toggle.tsx +127 -0
  297. package/docs/data-entry/transfer.tsx +97 -0
  298. package/docs/data-entry/tree-select.tsx +204 -0
  299. package/docs/data-entry/upload.tsx +184 -0
  300. package/docs/feedback/alert-dialog.tsx +270 -0
  301. package/docs/feedback/alert.tsx +248 -0
  302. package/docs/feedback/banner.tsx +183 -0
  303. package/docs/feedback/danger-confirm.tsx +88 -0
  304. package/docs/feedback/dialog-touch.tsx +24 -0
  305. package/docs/feedback/dialog.tsx +193 -0
  306. package/docs/feedback/sheet.tsx +420 -0
  307. package/docs/feedback/skeleton.tsx +111 -0
  308. package/docs/feedback/toast.tsx +135 -0
  309. package/docs/feedback/tooltip.tsx +171 -0
  310. package/docs/feedback/two-factor-setup.tsx +68 -0
  311. package/docs/foundation/_email-specimen.ts +274 -0
  312. package/docs/foundation/colors.tsx +204 -0
  313. package/docs/foundation/density.tsx +232 -0
  314. package/docs/foundation/email-tokens.tsx +323 -0
  315. package/docs/foundation/radius-shadow.tsx +154 -0
  316. package/docs/foundation/spacing.tsx +211 -0
  317. package/docs/foundation/typography.tsx +147 -0
  318. package/docs/general/activity.tsx +224 -0
  319. package/docs/general/button/examples/destructive-confirm.tsx +90 -0
  320. package/docs/general/button/examples/form-actions.tsx +85 -0
  321. package/docs/general/button/examples/toolbar.tsx +160 -0
  322. package/docs/general/button/index.md +12 -0
  323. package/docs/general/button/index.tsx +211 -0
  324. package/docs/general/logo.tsx +131 -0
  325. package/docs/general/reveal.tsx +41 -0
  326. package/docs/general/typography.tsx +152 -0
  327. package/docs/layout/account-chip.tsx +72 -0
  328. package/docs/layout/admin-collection.tsx +122 -0
  329. package/docs/layout/app-shell.tsx +374 -0
  330. package/docs/layout/aspect-ratio.tsx +135 -0
  331. package/docs/layout/auth-account-summary.tsx +103 -0
  332. package/docs/layout/auth-divider.tsx +28 -0
  333. package/docs/layout/auth-footer.tsx +37 -0
  334. package/docs/layout/auth-identity.tsx +36 -0
  335. package/docs/layout/auth-recovery/examples/mfa-challenge.md +41 -0
  336. package/docs/layout/auth-recovery/examples/mfa-challenge.tsx +254 -0
  337. package/docs/layout/auth-recovery/examples/mobile-390.md +25 -0
  338. package/docs/layout/auth-recovery/examples/mobile-390.tsx +82 -0
  339. package/docs/layout/auth-recovery/examples/password-recovery.md +24 -0
  340. package/docs/layout/auth-recovery/examples/password-recovery.tsx +197 -0
  341. package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.md +27 -0
  342. package/docs/layout/auth-recovery/examples/wrapping-ja-en-vi.tsx +156 -0
  343. package/docs/layout/auth-recovery/index.md +140 -0
  344. package/docs/layout/auth-recovery/index.tsx +96 -0
  345. package/docs/layout/auth-shell-context.tsx +103 -0
  346. package/docs/layout/auth-shell-device.tsx +112 -0
  347. package/docs/layout/auth-shell-registration.tsx +335 -0
  348. package/docs/layout/auth-shell-variants.tsx +139 -0
  349. package/docs/layout/auth-shell.tsx +59 -0
  350. package/docs/layout/auth-stack.tsx +40 -0
  351. package/docs/layout/centered-shell.tsx +102 -0
  352. package/docs/layout/error-surface/examples/application-403.tsx +84 -0
  353. package/docs/layout/error-surface/examples/application-404.tsx +77 -0
  354. package/docs/layout/error-surface/examples/system-500.tsx +47 -0
  355. package/docs/layout/error-surface/examples/system-503.tsx +48 -0
  356. package/docs/layout/error-surface/index.md +153 -0
  357. package/docs/layout/error-surface/index.tsx +239 -0
  358. package/docs/layout/flex.tsx +266 -0
  359. package/docs/layout/legal-document-shell/_data.ts +110 -0
  360. package/docs/layout/legal-document-shell/examples/desktop-1440.md +12 -0
  361. package/docs/layout/legal-document-shell/examples/desktop-1440.tsx +83 -0
  362. package/docs/layout/legal-document-shell/examples/mobile-390.md +22 -0
  363. package/docs/layout/legal-document-shell/examples/mobile-390.tsx +70 -0
  364. package/docs/layout/legal-document-shell/examples/tablet-1024.md +3 -0
  365. package/docs/layout/legal-document-shell/examples/tablet-1024.tsx +84 -0
  366. package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.md +18 -0
  367. package/docs/layout/legal-document-shell/examples/wrapping-ja-en-vi.tsx +61 -0
  368. package/docs/layout/legal-document-shell/index.md +51 -0
  369. package/docs/layout/legal-document-shell/index.tsx +101 -0
  370. package/docs/layout/master-detail.tsx +387 -0
  371. package/docs/layout/org-switcher.tsx +131 -0
  372. package/docs/layout/page-container.tsx +954 -0
  373. package/docs/layout/resizable-panel.tsx +419 -0
  374. package/docs/layout/responsive-grid.tsx +243 -0
  375. package/docs/layout/separator.tsx +327 -0
  376. package/docs/layout/service-role-panel.tsx +144 -0
  377. package/docs/layout/sidebar.tsx +609 -0
  378. package/docs/layout/split-pane.tsx +468 -0
  379. package/docs/layout/topbar.tsx +349 -0
  380. package/docs/navigation/app-setting-picker.tsx +142 -0
  381. package/docs/navigation/breadcrumb.tsx +135 -0
  382. package/docs/navigation/context-menu.tsx +123 -0
  383. package/docs/navigation/dropdown-menu.tsx +213 -0
  384. package/docs/navigation/filter-bar.tsx +227 -0
  385. package/docs/navigation/menubar.tsx +141 -0
  386. package/docs/navigation/navigation-menu.tsx +158 -0
  387. package/docs/navigation/pagination.tsx +241 -0
  388. package/docs/navigation/steps.tsx +265 -0
  389. package/docs/navigation/tabs-rtl.tsx +28 -0
  390. package/docs/navigation/tabs.tsx +314 -0
  391. package/docs/navigation/toolbar.tsx +339 -0
  392. package/docs/providers/app-provider.tsx +191 -0
  393. package/docs/providers/format-date.tsx +230 -0
  394. package/docs/query/button-refetch.tsx +160 -0
  395. package/docs/query/data-state.tsx +192 -0
  396. package/docs/query/infinite-query-state.tsx +93 -0
  397. package/docs/query/mutation-feedback.tsx +70 -0
  398. package/docs/query/prefetch-link.tsx +262 -0
  399. package/docs/query/touch-actions.tsx +68 -0
  400. package/docs/showcase/acme-portal.tsx +455 -0
  401. package/docs/showcase/acme-website.tsx +461 -0
  402. package/docs/showcase/case1-warehouse-dashboard.tsx +359 -0
  403. package/docs/showcase/case2-employee-me.tsx +444 -0
  404. package/docs/showcase/case3-approval-workflow.tsx +529 -0
  405. package/docs/showcase/case4-login.tsx +313 -0
  406. package/docs/showcase/case5-shift-calendar.tsx +795 -0
  407. package/docs/showcase/case6-agency-handy.tsx +1113 -0
  408. package/docs/showcase/futurelastic-web.tsx +392 -0
  409. package/docs/showcase/org-switcher.tsx +313 -0
  410. package/docs/showcase/permission-matrix.tsx +346 -0
  411. package/docs/showcase/public-landing.tsx +210 -0
  412. package/docs/showcase/settings-account-sections.tsx +559 -0
  413. package/docs/showcase/settings-security-mfa.tsx +145 -0
  414. package/docs/showcase/table-approval-queue.tsx +199 -0
  415. package/docs/showcase/table-bulk-actions.tsx +460 -0
  416. package/docs/showcase/table-compact-kintone.tsx +438 -0
  417. package/docs/showcase/table-conditional-format.tsx +367 -0
  418. package/docs/showcase/table-crud-list.tsx +544 -0
  419. package/docs/showcase/table-density.tsx +347 -0
  420. package/docs/showcase/table-expandable-rows.tsx +480 -0
  421. package/docs/showcase/table-filter-chips.tsx +456 -0
  422. package/docs/showcase/table-footer-totals.tsx +314 -0
  423. package/docs/showcase/table-grouped-subtotals.tsx +391 -0
  424. package/docs/showcase/table-master-detail.tsx +484 -0
  425. package/docs/showcase/table-pagination.tsx +327 -0
  426. package/docs/showcase/table-states.tsx +366 -0
  427. package/docs/showcase/table-sticky-columns.tsx +376 -0
  428. package/docs/showcase/table-tree-rows.tsx +444 -0
  429. package/docs/showcase/table-view-tabs.tsx +488 -0
  430. package/package.json +9 -12
  431. package/scripts/_agent-setup.mjs +16 -2
  432. package/scripts/audit-hook.mjs +3 -13
  433. package/scripts/init-agent-kit.mjs +1 -14
  434. package/scripts/postinstall.mjs +12 -12
  435. package/scripts/ui-audit.mjs +93 -31
  436. package/scripts/visual-audit-rules.mjs +51 -7
  437. package/scripts/visual-audit.mjs +118 -47
@@ -0,0 +1,111 @@
1
+ import {
2
+ Skeleton,
3
+ SkeletonDetail,
4
+ SkeletonRows,
5
+ SkeletonStat,
6
+ SkeletonTable,
7
+ } from "@godxjp/ui/feedback";
8
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
9
+ import { Flex, PageContainer, ResponsiveGrid } from "@godxjp/ui/layout";
10
+
11
+ /**
12
+ * Skeleton · loading placeholders. Three levels:
13
+ * Skeleton · custom pulsing block (h + w via className).
14
+ * SkeletonTable · pre-mount DataTable placeholder (rows, columns props).
15
+ * SkeletonStat · StatCard/KPI tile placeholder (no props; use in ResponsiveGrid).
16
+ * SkeletonDetail · single-record detail placeholder (title + metadata rows, no props).
17
+ * Never use a spinner overlay on skeletonable content.
18
+ */
19
+ export default function Demo() {
20
+ return (
21
+ <PageContainer
22
+ title="Skeleton"
23
+ subtitle="loading placeholders · Skeleton (custom block) · SkeletonTable (DataTable pre-mount) · SkeletonStat (KPI tile) · SkeletonDetail (record page)"
24
+ >
25
+ <Flex direction="col" gap="lg">
26
+ <Card>
27
+ <CardHeader>
28
+ <CardTitle level={2}>Skeleton · custom pulsing blocks</CardTitle>
29
+ <CardDescription>
30
+ Base primitive. Pass className for h + w. Use when SkeletonTable / SkeletonStat do not
31
+ match the target layout (e.g. a single loading line, a media placeholder, inline
32
+ metadata).
33
+ </CardDescription>
34
+ </CardHeader>
35
+ <CardContent>
36
+ <Flex direction="col" gap="sm">
37
+ <Skeleton className="h-5 w-48" />
38
+ <Skeleton className="h-4 w-72" />
39
+ <Skeleton className="h-4 w-60" />
40
+ <Flex direction="row" gap="sm" align="center">
41
+ <Skeleton className="size-10 rounded-full" />
42
+ <Flex direction="col" gap="xs">
43
+ <Skeleton className="h-4 w-32" />
44
+ <Skeleton className="h-3 w-24" />
45
+ </Flex>
46
+ </Flex>
47
+ </Flex>
48
+ </CardContent>
49
+ </Card>
50
+
51
+ <Card>
52
+ <CardHeader>
53
+ <CardTitle>SkeletonRows · generic repeated rows</CardTitle>
54
+ <CardDescription>
55
+ Use for non-table list layouts with deterministic row count.
56
+ </CardDescription>
57
+ </CardHeader>
58
+ <CardContent>
59
+ <SkeletonRows rows={3} columns={2} />
60
+ </CardContent>
61
+ </Card>
62
+
63
+ <Card>
64
+ <CardHeader>
65
+ <CardTitle level={2}>SkeletonTable · DataTable pre-mount placeholder</CardTitle>
66
+ <CardDescription>
67
+ Drop-in while deferred prop / query resolves. Match rows to page size and columns to
68
+ column count so the layout does not jump on hydration. Do NOT wrap in Card · it owns
69
+ its own structure.
70
+ </CardDescription>
71
+ </CardHeader>
72
+ <CardContent flush>
73
+ <SkeletonTable rows={6} columns={6} />
74
+ </CardContent>
75
+ </Card>
76
+
77
+ <Card>
78
+ <CardHeader>
79
+ <CardTitle level={2}>SkeletonStat · KPI / StatCard tile placeholder</CardTitle>
80
+ <CardDescription>
81
+ Use inside a ResponsiveGrid · one SkeletonStat per expected StatCard. No props. Do NOT
82
+ wrap in an extra Card (SkeletonStat owns its own bordered box).
83
+ </CardDescription>
84
+ </CardHeader>
85
+ <CardContent>
86
+ <ResponsiveGrid columns={4}>
87
+ <SkeletonStat />
88
+ <SkeletonStat />
89
+ <SkeletonStat />
90
+ <SkeletonStat />
91
+ </ResponsiveGrid>
92
+ </CardContent>
93
+ </Card>
94
+
95
+ <Card>
96
+ <CardHeader>
97
+ <CardTitle level={2}>SkeletonDetail · single-record detail loading state</CardTitle>
98
+ <CardDescription>
99
+ The ready-made detail placeholder (title + metadata rows). Reach for this on a record
100
+ / show page while the record loads · do NOT hand-compose it from base Skeleton blocks.
101
+ No props.
102
+ </CardDescription>
103
+ </CardHeader>
104
+ <CardContent>
105
+ <SkeletonDetail />
106
+ </CardContent>
107
+ </Card>
108
+ </Flex>
109
+ </PageContainer>
110
+ );
111
+ }
@@ -0,0 +1,135 @@
1
+ import { Toaster, toast } from "@godxjp/ui/feedback";
2
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
3
+ import { Button } from "@godxjp/ui/general";
4
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
5
+
6
+ /**
7
+ * Toast (Toaster + sonner) · transient ephemeral feedback. Mount ONE <Toaster>
8
+ * at app root. Fire through the public @godxjp/ui/feedback toast export.
9
+ */
10
+ export default function Demo() {
11
+ return (
12
+ <PageContainer
13
+ title="Toast"
14
+ subtitle="Toaster (mount once at root) + toast() from sonner · fire-and-forget ephemeral feedback"
15
+ >
16
+ {/* Mount Toaster once · in a real app this lives in the root layout */}
17
+ <Toaster richColors position="top-right" duration={4000} closeButton />
18
+
19
+ <Flex direction="col" gap="lg">
20
+ <Card>
21
+ <CardHeader>
22
+ <CardTitle level={2}>Toast variants</CardTitle>
23
+ <CardDescription>
24
+ Import toast from sonner (not @godxjp/ui). success / error / warning / info for the
25
+ four semantic variants. Toasts auto-dismiss · use Alert for persistent messages.
26
+ </CardDescription>
27
+ </CardHeader>
28
+ <CardContent>
29
+ <Flex direction="row" wrap gap="md">
30
+ <Button
31
+ variant="outline"
32
+ size="sm"
33
+ onClick={() => toast.success("仕訳を保存しました")}
34
+ >
35
+ success
36
+ </Button>
37
+ <Button
38
+ variant="outline"
39
+ size="sm"
40
+ onClick={() => toast.error("保存に失敗しました · 再度お試しください")}
41
+ >
42
+ error
43
+ </Button>
44
+ <Button
45
+ variant="outline"
46
+ size="sm"
47
+ onClick={() => toast.warning("セッションの有効期限が近づいています")}
48
+ >
49
+ warning
50
+ </Button>
51
+ <Button
52
+ variant="outline"
53
+ size="sm"
54
+ onClick={() => toast.info("エクスポートを開始しました")}
55
+ >
56
+ info
57
+ </Button>
58
+ </Flex>
59
+ </CardContent>
60
+ </Card>
61
+
62
+ <Card>
63
+ <CardHeader>
64
+ <CardTitle>Programmatic dismiss</CardTitle>
65
+ <CardDescription>
66
+ Keep the returned id and dismiss a specific toast explicitly.
67
+ </CardDescription>
68
+ </CardHeader>
69
+ <CardContent>
70
+ <Button
71
+ variant="outline"
72
+ onClick={() => {
73
+ const id = toast.loading("同期しています…", { duration: Infinity });
74
+ window.setTimeout(() => toast.dismiss(id), 500);
75
+ }}
76
+ >
77
+ 同期トーストを表示して閉じる
78
+ </Button>
79
+ </CardContent>
80
+ </Card>
81
+
82
+ <Card>
83
+ <CardHeader>
84
+ <CardTitle level={2}>Soft destructive with undo action</CardTitle>
85
+ <CardDescription>
86
+ After a delete, surface an undo action via the toast action option. The user can
87
+ recover without a confirmation modal.
88
+ </CardDescription>
89
+ </CardHeader>
90
+ <CardContent>
91
+ <Button
92
+ variant="destructive"
93
+ size="sm"
94
+ onClick={() =>
95
+ toast("請求書 #INV-2024-0042 を削除しました", {
96
+ action: {
97
+ label: "元に戻す",
98
+ onClick: () => toast.info("削除を取り消しました"),
99
+ },
100
+ })
101
+ }
102
+ >
103
+ 請求書を削除
104
+ </Button>
105
+ </CardContent>
106
+ </Card>
107
+
108
+ <Card>
109
+ <CardHeader>
110
+ <CardTitle level={2}>Promise toast (loading → success/error)</CardTitle>
111
+ <CardDescription>
112
+ toast.promise() tracks an async operation automatically · shows a loading state then
113
+ resolves to success or error. Ideal for background exports or bulk imports.
114
+ </CardDescription>
115
+ </CardHeader>
116
+ <CardContent>
117
+ <Button
118
+ variant="outline"
119
+ size="sm"
120
+ onClick={() =>
121
+ toast.promise(new Promise<void>((r) => setTimeout(r, 2000)), {
122
+ loading: "CSV をエクスポート中...",
123
+ success: "エクスポートが完了しました",
124
+ error: "エクスポートに失敗しました",
125
+ })
126
+ }
127
+ >
128
+ CSV エクスポート
129
+ </Button>
130
+ </CardContent>
131
+ </Card>
132
+ </Flex>
133
+ </PageContainer>
134
+ );
135
+ }
@@ -0,0 +1,171 @@
1
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@godxjp/ui/feedback";
2
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
3
+ import { Button, Text } from "@godxjp/ui/general";
4
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
5
+ import { Copy, Info, Pencil, Trash2 } from "lucide-react";
6
+
7
+ /**
8
+ * Tooltip · self-providing (no app-level TooltipProvider needed). Compose
9
+ * Tooltip > TooltipTrigger (asChild on interactive elements) > TooltipContent.
10
+ * Read-only hints only · use Popover for interactive floating content.
11
+ *
12
+ * TooltipProvider stays OPTIONAL — reach for it only to tune the open/close
13
+ * delay across a whole cluster (e.g. a dense toolbar) in one place instead of
14
+ * repeating delayDuration on every Tooltip. See the last card.
15
+ */
16
+ export default function Demo() {
17
+ return (
18
+ <PageContainer
19
+ title="Tooltip"
20
+ subtitle="hover/focus read-only hint · icon labels, truncated values, keyboard shortcuts"
21
+ >
22
+ <Flex direction="col" gap="lg">
23
+ <Card>
24
+ <CardHeader>
25
+ <CardTitle level={2}>Icon-only button labels</CardTitle>
26
+ <CardDescription>
27
+ Use TooltipTrigger asChild to avoid nesting a button inside a button. The tooltip
28
+ provides the accessible label for icon-only actions in DataTable rows.
29
+ </CardDescription>
30
+ </CardHeader>
31
+ <CardContent>
32
+ <Flex direction="row" gap="sm" align="center">
33
+ <Tooltip>
34
+ <TooltipTrigger asChild>
35
+ <Button variant="ghost" size="icon" aria-label="請求書をコピー">
36
+ <Copy className="size-4" />
37
+ </Button>
38
+ </TooltipTrigger>
39
+ <TooltipContent side="top">請求書をコピー</TooltipContent>
40
+ </Tooltip>
41
+
42
+ <Tooltip>
43
+ <TooltipTrigger asChild>
44
+ <Button
45
+ variant="ghost"
46
+ size="icon"
47
+ aria-label="削除"
48
+ className="text-destructive hover:text-destructive"
49
+ >
50
+ <Trash2 className="size-4" />
51
+ </Button>
52
+ </TooltipTrigger>
53
+ <TooltipContent side="top">削除 (元に戻せません)</TooltipContent>
54
+ </Tooltip>
55
+ </Flex>
56
+ </CardContent>
57
+ </Card>
58
+
59
+ <Card>
60
+ <CardHeader>
61
+ <CardTitle level={2}>Contextual help on a form label</CardTitle>
62
+ <CardDescription>
63
+ Wrap a non-interactive icon in a span with tabIndex=0 so keyboard users can focus it.
64
+ Explain accounting terms or beta features without cluttering the UI.
65
+ </CardDescription>
66
+ </CardHeader>
67
+ <CardContent>
68
+ <Flex direction="row" gap="sm" align="center">
69
+ <Text weight="medium">AR 残高</Text>
70
+ <Tooltip>
71
+ <TooltipTrigger asChild>
72
+ <span tabIndex={0} className="text-muted-foreground cursor-help">
73
+ <Info className="size-4" />
74
+ </span>
75
+ </TooltipTrigger>
76
+ <TooltipContent side="right" className="max-w-56">
77
+ 売掛金の未回収合計額。請求書ステータスが「未払い」のものを集計しています。
78
+ </TooltipContent>
79
+ </Tooltip>
80
+ </Flex>
81
+ </CardContent>
82
+ </Card>
83
+
84
+ <Card>
85
+ <CardHeader>
86
+ <CardTitle level={2}>Disabled button reason</CardTitle>
87
+ <CardDescription>
88
+ Wrap a disabled Button in a Tooltip to explain why the action is unavailable.
89
+ TooltipTrigger asChild merges onto the disabled element correctly.
90
+ </CardDescription>
91
+ </CardHeader>
92
+ <CardContent>
93
+ <Tooltip>
94
+ <TooltipTrigger asChild>
95
+ <span tabIndex={0} className="inline-block">
96
+ <Button disabled>承認申請</Button>
97
+ </span>
98
+ </TooltipTrigger>
99
+ <TooltipContent side="bottom">全項目を入力してから申請できます</TooltipContent>
100
+ </Tooltip>
101
+ </CardContent>
102
+ </Card>
103
+
104
+ <Card>
105
+ <CardHeader>
106
+ <CardTitle level={2}>Keyboard shortcut hint</CardTitle>
107
+ <CardDescription>
108
+ Surface keyboard shortcuts on toolbar buttons without adding visible text to the UI.
109
+ delayDuration={0} for instant display on quick hover.
110
+ </CardDescription>
111
+ </CardHeader>
112
+ <CardContent>
113
+ <Tooltip delayDuration={0}>
114
+ <TooltipTrigger asChild>
115
+ <Button variant="outline" size="sm">
116
+ 検索
117
+ </Button>
118
+ </TooltipTrigger>
119
+ <TooltipContent side="bottom">⌘K でグローバル検索を開く</TooltipContent>
120
+ </Tooltip>
121
+ </CardContent>
122
+ </Card>
123
+
124
+ <Card>
125
+ <CardHeader>
126
+ <CardTitle level={2}>Shared delay across a toolbar (TooltipProvider)</CardTitle>
127
+ <CardDescription>
128
+ Wrap a cluster in TooltipProvider to set one delayDuration for every tooltip inside —
129
+ a dense toolbar feels snappy without repeating the prop on each Tooltip.
130
+ </CardDescription>
131
+ </CardHeader>
132
+ <CardContent>
133
+ <TooltipProvider delayDuration={0}>
134
+ <Flex direction="row" gap="sm" align="center">
135
+ <Tooltip>
136
+ <TooltipTrigger asChild>
137
+ <Button variant="ghost" size="icon" aria-label="編集">
138
+ <Pencil className="size-4" />
139
+ </Button>
140
+ </TooltipTrigger>
141
+ <TooltipContent side="bottom">編集</TooltipContent>
142
+ </Tooltip>
143
+ <Tooltip>
144
+ <TooltipTrigger asChild>
145
+ <Button variant="ghost" size="icon" aria-label="複製">
146
+ <Copy className="size-4" />
147
+ </Button>
148
+ </TooltipTrigger>
149
+ <TooltipContent side="bottom">複製</TooltipContent>
150
+ </Tooltip>
151
+ <Tooltip>
152
+ <TooltipTrigger asChild>
153
+ <Button
154
+ variant="ghost"
155
+ size="icon"
156
+ aria-label="削除"
157
+ className="text-destructive hover:text-destructive"
158
+ >
159
+ <Trash2 className="size-4" />
160
+ </Button>
161
+ </TooltipTrigger>
162
+ <TooltipContent side="bottom">削除 (元に戻せません)</TooltipContent>
163
+ </Tooltip>
164
+ </Flex>
165
+ </TooltipProvider>
166
+ </CardContent>
167
+ </Card>
168
+ </Flex>
169
+ </PageContainer>
170
+ );
171
+ }
@@ -0,0 +1,68 @@
1
+ import { useState } from "react";
2
+
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display";
4
+ import { TwoFactorSetup, type TwoFactorSetupLabels } from "@godxjp/ui/feedback";
5
+ import { Button, Text } from "@godxjp/ui/general";
6
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
7
+
8
+ const labels: TwoFactorSetupLabels = {
9
+ title: "二要素認証を有効にする",
10
+ description: "認証アプリでQRコードを読み取り、表示された6桁のコードを入力します。",
11
+ qrLabel: "認証アプリ登録用QRコード",
12
+ manualKeyLabel: "手動セットアップキー",
13
+ codeLabel: "確認コード",
14
+ codePlaceholder: "123 456",
15
+ recoveryNotice: "復旧コードは安全な場所に保存してください。再表示できません。",
16
+ cancel: "キャンセル",
17
+ confirm: "確認して有効化",
18
+ acknowledge: "保存しました",
19
+ };
20
+
21
+ /**
22
+ * TwoFactorSetup — controlled enrollment and one-time recovery-code journey. Persistence and
23
+ * network requests remain consumer-owned; this frame demonstrates the public state boundary.
24
+ */
25
+ export default function Demo() {
26
+ const [open, setOpen] = useState(false);
27
+ const [code, setCode] = useState("");
28
+ const [recoveryCodes, setRecoveryCodes] = useState<string[]>([]);
29
+
30
+ const beginEnrollment = () => {
31
+ setCode("");
32
+ setRecoveryCodes([]);
33
+ setOpen(true);
34
+ };
35
+
36
+ return (
37
+ <PageContainer title="TwoFactorSetup" subtitle="登録 · OTP確認 · 復旧コード受領">
38
+ <Card>
39
+ <CardHeader>
40
+ <CardTitle level={2}>認証アプリを登録</CardTitle>
41
+ <CardDescription>6桁の確認コードが揃うまで有効化操作は利用できません。</CardDescription>
42
+ </CardHeader>
43
+ <CardContent>
44
+ <Flex direction="col" gap="md">
45
+ <Button onClick={beginEnrollment}>二要素認証を設定</Button>
46
+ <Text size="sm" tone="muted" aria-live="polite">
47
+ {recoveryCodes.length > 0
48
+ ? "復旧コードを表示しています。"
49
+ : "二要素認証はまだ設定されていません。"}
50
+ </Text>
51
+ </Flex>
52
+ <TwoFactorSetup
53
+ open={open}
54
+ onOpenChange={setOpen}
55
+ qrValue="otpauth://totp/Godx:tanaka@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Godx"
56
+ manualKey="JBSW Y3DP EHPK 3PXP"
57
+ code={code}
58
+ onCodeChange={setCode}
59
+ onConfirm={() => setRecoveryCodes(["alpha-7k2m", "bravo-9p4x", "charlie-3d8q"])}
60
+ recoveryCodes={recoveryCodes}
61
+ onAcknowledge={() => setOpen(false)}
62
+ labels={labels}
63
+ />
64
+ </CardContent>
65
+ </Card>
66
+ </PageContainer>
67
+ );
68
+ }