@godxjp/ui 7.0.0 → 8.1.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 (157) hide show
  1. package/dist/app/index.d.ts +2 -2
  2. package/dist/{app.prop-IobwLwaM.d.ts → app.prop-DnIXFzLi.d.ts} +9 -9
  3. package/dist/{checkbox-CK2mYEpD.d.ts → checkbox-ChRsR7Nk.d.ts} +2 -2
  4. package/dist/{chunk-3UGU5TYP.js → chunk-25RYBC5T.js} +2 -2
  5. package/dist/{chunk-CQBADMFG.js → chunk-26CPAKUP.js} +3 -2
  6. package/dist/{chunk-TT2L7JM6.js → chunk-3TS3G4U3.js} +3 -3
  7. package/dist/{chunk-ZS6DTAM2.js → chunk-4MMIMZMK.js} +1 -1
  8. package/dist/{chunk-6TSU4IHV.js → chunk-4R7RQDXI.js} +23 -21
  9. package/dist/{chunk-OXKY5QMK.js → chunk-6QXQQAOQ.js} +6 -6
  10. package/dist/{chunk-JJCGMCTL.js → chunk-A22MCA3X.js} +6 -6
  11. package/dist/{chunk-VXXKR5U4.js → chunk-A7PKMT7Y.js} +4 -4
  12. package/dist/{chunk-HKQITNB3.js → chunk-AINW5WYN.js} +5 -4
  13. package/dist/{chunk-OGFWIXRO.js → chunk-C5H655GK.js} +218 -53
  14. package/dist/{chunk-ZLK5SPT6.js → chunk-EOTOCNT7.js} +1 -1
  15. package/dist/{chunk-ARDVPIF4.js → chunk-G2WYOCDL.js} +5 -5
  16. package/dist/{chunk-V6UWJKZF.js → chunk-HTEL5DQI.js} +1 -1
  17. package/dist/{chunk-ICM6XBST.js → chunk-IBK5D2Q6.js} +2 -1
  18. package/dist/{chunk-IK7I3ABN.js → chunk-IOGU3ZWF.js} +2 -2
  19. package/dist/chunk-KKMQLQ7F.js +137 -0
  20. package/dist/{chunk-HJEBRCXL.js → chunk-M4PZNAMV.js} +1 -0
  21. package/dist/{chunk-2QG3OVAD.js → chunk-N43OKOFT.js} +7 -5
  22. package/dist/{chunk-ZR2TIBPG.js → chunk-NG23LVTM.js} +4 -4
  23. package/dist/{chunk-E76QIYSY.js → chunk-O24Z3ULJ.js} +4 -4
  24. package/dist/{chunk-L6J44O74.js → chunk-OJZ6C2HM.js} +2 -2
  25. package/dist/{chunk-2HLWHQJA.js → chunk-P4HFJQID.js} +5 -4
  26. package/dist/{chunk-EXBWDW5E.js → chunk-RGIYKJPW.js} +7 -7
  27. package/dist/{chunk-ZKIAZDVU.js → chunk-RGPF3HU6.js} +4 -4
  28. package/dist/{chunk-FBHN6OO4.js → chunk-SKIRU7GC.js} +2 -2
  29. package/dist/{chunk-NTUHJ37K.js → chunk-SMWKD2HG.js} +9 -9
  30. package/dist/chunk-TILFZBTE.js +50 -0
  31. package/dist/{chunk-6UFKWOEW.js → chunk-TMDGV4CN.js} +15 -11
  32. package/dist/{chunk-7AMHT5Z5.js → chunk-UIYEAUWA.js} +30 -13
  33. package/dist/chunk-WFUIE252.js +61 -0
  34. package/dist/{chunk-25ZZ2W3M.js → chunk-WN52SCGE.js} +5 -5
  35. package/dist/{chunk-EQRQM6RF.js → chunk-WTVLZVBA.js} +28 -8
  36. package/dist/{chunk-Y3XBNUTD.js → chunk-XDUZ7JJL.js} +2 -2
  37. package/dist/{chunk-RVY4F7LK.js → chunk-XZM2GNAY.js} +7 -7
  38. package/dist/components/admin/index.d.ts +19 -19
  39. package/dist/components/admin/index.js +30 -30
  40. package/dist/components/data-display/badge.d.ts +7 -4
  41. package/dist/components/data-display/badge.js +2 -2
  42. package/dist/components/data-display/card.d.ts +2 -2
  43. package/dist/components/data-display/index.d.ts +18 -7
  44. package/dist/components/data-display/index.js +65 -12
  45. package/dist/components/data-display/table.js +2 -2
  46. package/dist/components/data-entry/autocomplete.d.ts +5 -5
  47. package/dist/components/data-entry/autocomplete.js +6 -6
  48. package/dist/components/data-entry/calendar.d.ts +5 -5
  49. package/dist/components/data-entry/calendar.js +3 -3
  50. package/dist/components/data-entry/cascader.d.ts +6 -6
  51. package/dist/components/data-entry/cascader.js +7 -7
  52. package/dist/components/data-entry/checkbox.d.ts +6 -6
  53. package/dist/components/data-entry/checkbox.js +2 -2
  54. package/dist/components/data-entry/color-picker.d.ts +6 -6
  55. package/dist/components/data-entry/color-picker.js +2 -2
  56. package/dist/components/data-entry/command.d.ts +11 -11
  57. package/dist/components/data-entry/command.js +2 -2
  58. package/dist/components/data-entry/date-picker.d.ts +6 -6
  59. package/dist/components/data-entry/date-picker.js +5 -5
  60. package/dist/components/data-entry/date-range-picker.d.ts +6 -6
  61. package/dist/components/data-entry/date-range-picker.js +5 -5
  62. package/dist/components/data-entry/index.d.ts +50 -22
  63. package/dist/components/data-entry/index.js +25 -83
  64. package/dist/components/data-entry/radio.d.ts +5 -5
  65. package/dist/components/data-entry/radio.js +2 -2
  66. package/dist/components/data-entry/select.d.ts +5 -5
  67. package/dist/components/data-entry/select.js +6 -6
  68. package/dist/components/data-entry/slider.d.ts +5 -5
  69. package/dist/components/data-entry/switch.d.ts +5 -5
  70. package/dist/components/data-entry/textarea.js +2 -2
  71. package/dist/components/data-entry/time-picker.d.ts +6 -6
  72. package/dist/components/data-entry/time-picker.js +3 -3
  73. package/dist/components/data-entry/transfer.d.ts +7 -7
  74. package/dist/components/data-entry/transfer.js +4 -4
  75. package/dist/components/data-entry/tree-select.d.ts +6 -6
  76. package/dist/components/data-entry/tree-select.js +7 -7
  77. package/dist/components/data-entry/upload.d.ts +7 -7
  78. package/dist/components/data-entry/upload.js +5 -5
  79. package/dist/components/feedback/alert.d.ts +7 -5
  80. package/dist/components/feedback/alert.js +3 -3
  81. package/dist/components/feedback/dialog.d.ts +9 -6
  82. package/dist/components/feedback/dialog.js +2 -2
  83. package/dist/components/feedback/index.d.ts +24 -8
  84. package/dist/components/feedback/index.js +7 -6
  85. package/dist/components/general/button.d.ts +4 -4
  86. package/dist/components/general/button.js +1 -1
  87. package/dist/components/general/index.d.ts +3 -3
  88. package/dist/components/general/index.js +1 -1
  89. package/dist/components/layout/index.d.ts +10 -9
  90. package/dist/components/layout/index.js +3 -3
  91. package/dist/components/navigation/index.d.ts +13 -13
  92. package/dist/components/navigation/index.js +9 -9
  93. package/dist/components/navigation/pagination.d.ts +5 -5
  94. package/dist/components/navigation/pagination.js +7 -7
  95. package/dist/components/navigation/steps.d.ts +6 -6
  96. package/dist/components/navigation/steps.js +2 -2
  97. package/dist/components/query/index.d.ts +12 -7
  98. package/dist/components/query/index.js +4 -4
  99. package/dist/components/ui/index.d.ts +12 -12
  100. package/dist/components/ui/index.js +30 -30
  101. package/dist/{data-display.prop-CXP9Jfdn.d.ts → data-display.prop-Cf2p9QC4.d.ts} +6 -5
  102. package/dist/{data-entry.prop-CpSx5dX6.d.ts → data-entry.prop-CDkOajPj.d.ts} +38 -28
  103. package/dist/{data-table-C5lcmAwE.d.ts → data-table-B_q7j992.d.ts} +4 -4
  104. package/dist/{data.prop-BmLaGLb7.d.ts → data.prop-DMYMNl6L.d.ts} +2 -2
  105. package/dist/{feedback.prop-BnBpUzNK.d.ts → feedback.prop-BR5JOpPl.d.ts} +8 -5
  106. package/dist/filter-bar-DvVXm_d1.d.ts +14 -0
  107. package/dist/form/index.d.ts +3 -3
  108. package/dist/{form.prop-BHgpuFFm.d.ts → form.prop-Bc6r6JJW.d.ts} +1 -1
  109. package/dist/{general.prop-D7brMPNL.d.ts → general.prop-DoHDCRmL.d.ts} +2 -2
  110. package/dist/index.d.ts +22 -22
  111. package/dist/index.js +43 -30
  112. package/dist/inline-DqfYlGKj.d.ts +18 -0
  113. package/dist/{interaction.prop-Cdn7wOtq.d.ts → interaction.prop-DSFizzP6.d.ts} +8 -6
  114. package/dist/{layout.prop-MwHm4-Zl.d.ts → layout.prop-Baq9muDN.d.ts} +27 -13
  115. package/dist/layout.prop-CXvl2rVR.d.ts +16 -0
  116. package/dist/{navigation.prop-DAH4ysXj.d.ts → navigation.prop-8DgElO0c.d.ts} +12 -8
  117. package/dist/{navigation.prop-Hu7s7MJa.d.ts → navigation.prop-BKlxd-j7.d.ts} +2 -5
  118. package/dist/props/components/index.d.ts +14 -14
  119. package/dist/props/index.d.ts +14 -14
  120. package/dist/props/index.js +1 -1
  121. package/dist/props/registry.d.ts +251 -56
  122. package/dist/props/registry.js +1 -1
  123. package/dist/props/vocabulary/index.d.ts +5 -5
  124. package/dist/{query.prop-hIPrk2zI.d.ts → query.prop-DuODxsiU.d.ts} +12 -8
  125. package/dist/{search-input-rR2XDrjv.d.ts → search-input-cezAxpgb.d.ts} +7 -2
  126. package/dist/{shared.prop-BNRJc9K0.d.ts → shared.prop-BsNSXeqD.d.ts} +9 -3
  127. package/dist/{skeleton-CqFO4dRc.d.ts → skeleton-uWAjSacg.d.ts} +4 -2
  128. package/dist/styles/alert-layout.css +38 -18
  129. package/dist/styles/badge-layout.css +2 -2
  130. package/dist/styles/card-layout.css +5 -5
  131. package/dist/styles/control.css +31 -0
  132. package/dist/styles/data-display-layout.css +25 -0
  133. package/dist/styles/density.css +10 -10
  134. package/dist/styles/dialog-layout.css +4 -4
  135. package/dist/styles/feedback-layout.css +17 -0
  136. package/dist/styles/index.css +6 -9
  137. package/dist/styles/layout.css +95 -14
  138. package/dist/styles/table-layout.css +3 -3
  139. package/dist/theme/example.service.css +0 -5
  140. package/dist/tokens/base.css +7 -7
  141. package/dist/tokens/components/badge.css +7 -0
  142. package/dist/tokens/{primitives → components}/card.css +2 -3
  143. package/dist/tokens/{primitives → components}/control.css +10 -0
  144. package/dist/tokens/components/feedback.css +17 -0
  145. package/dist/tokens/{primitives → components}/table.css +2 -2
  146. package/dist/tokens/foundation.css +7 -22
  147. package/package.json +10 -4
  148. package/scripts/ui-audit.mjs +22 -0
  149. package/dist/chunk-S66TJXJU.js +0 -33
  150. package/dist/filter-bar-zSKz7YCR.d.ts +0 -10
  151. package/dist/inline-CV3A46np.d.ts +0 -10
  152. package/dist/layout.prop-4TCNvyQZ.d.ts +0 -20
  153. package/dist/tokens/primitives/badge.css +0 -13
  154. package/dist/tokens/primitives/feedback.css +0 -17
  155. /package/dist/{chunk-LDSLS6HE.js → chunk-HKD6ERY7.js} +0 -0
  156. /package/dist/tokens/{primitives → components}/navigation.css +0 -0
  157. /package/dist/tokens/{primitives → semantic}/layout.css +0 -0
@@ -1,6 +1,6 @@
1
1
  /*
2
- * LAYOUT — Stack / Inline / Page shell / EmptyState.
3
- * Apps: <Stack gap> · <Inline gap> · <PageContainer> — never ui-stack-* or Tailwind gap-*.
2
+ * LAYOUT — Flex / Page shell / EmptyState.
3
+ * Apps: <Flex gap> · <PageContainer> — never ui-flex-* or Tailwind gap-*.
4
4
  */
5
5
 
6
6
  @layer components {
@@ -23,26 +23,102 @@
23
23
  overflow: hidden;
24
24
  }
25
25
 
26
+ .ui-flex,
26
27
  .ui-stack-xs {
27
28
  display: flex;
29
+ }
30
+
31
+ .ui-flex[data-direction="row"] {
32
+ flex-direction: row;
33
+ }
34
+
35
+ .ui-flex[data-direction="col"] {
28
36
  flex-direction: column;
37
+ }
38
+
39
+ .ui-flex[data-wrap="true"] {
40
+ flex-wrap: wrap;
41
+ }
42
+
43
+ .ui-flex[data-align="start"] {
44
+ align-items: flex-start;
45
+ }
46
+
47
+ .ui-flex[data-align="center"] {
48
+ align-items: center;
49
+ }
50
+
51
+ .ui-flex[data-align="end"] {
52
+ align-items: flex-end;
53
+ }
54
+
55
+ .ui-flex[data-align="stretch"] {
56
+ align-items: stretch;
57
+ }
58
+
59
+ .ui-flex[data-align="baseline"] {
60
+ align-items: baseline;
61
+ }
62
+
63
+ .ui-flex[data-justify="start"] {
64
+ justify-content: flex-start;
65
+ }
66
+
67
+ .ui-flex[data-justify="center"] {
68
+ justify-content: center;
69
+ }
70
+
71
+ .ui-flex[data-justify="end"] {
72
+ justify-content: flex-end;
73
+ }
74
+
75
+ .ui-flex[data-justify="between"] {
76
+ justify-content: space-between;
77
+ }
78
+
79
+ .ui-flex[data-justify="around"] {
80
+ justify-content: space-around;
81
+ }
82
+
83
+ .ui-flex[data-justify="evenly"] {
84
+ justify-content: space-evenly;
85
+ }
86
+
87
+ .ui-flex-gap-xs,
88
+ .ui-stack-xs {
29
89
  gap: var(--space-stack-xs);
30
90
  }
91
+ .ui-flex-gap-sm {
92
+ gap: var(--space-stack-sm);
93
+ }
94
+
31
95
  .ui-stack-sm {
32
96
  display: flex;
33
97
  flex-direction: column;
34
98
  gap: var(--space-stack-sm);
35
99
  }
100
+ .ui-flex-gap-md {
101
+ gap: var(--space-stack-md);
102
+ }
103
+
36
104
  .ui-stack-md {
37
105
  display: flex;
38
106
  flex-direction: column;
39
107
  gap: var(--space-stack-md);
40
108
  }
109
+ .ui-flex-gap-lg {
110
+ gap: var(--space-stack-lg);
111
+ }
112
+
41
113
  .ui-stack-lg {
42
114
  display: flex;
43
115
  flex-direction: column;
44
116
  gap: var(--space-stack-lg);
45
117
  }
118
+ .ui-flex-gap-xl {
119
+ gap: var(--space-stack-xl);
120
+ }
121
+
46
122
  .ui-stack-xl {
47
123
  display: flex;
48
124
  flex-direction: column;
@@ -85,23 +161,20 @@
85
161
  }
86
162
 
87
163
  @container (min-width: 640px) {
88
- .ui-responsive-grid[data-columns="2"] {
89
- grid-template-columns: repeat(2, minmax(0, 1fr));
164
+ .ui-responsive-grid {
165
+ grid-template-columns: repeat(var(--responsive-grid-sm, 2), minmax(0, 1fr));
90
166
  }
167
+ }
91
168
 
92
- .ui-responsive-grid[data-columns="3"],
93
- .ui-responsive-grid[data-columns="4"] {
94
- grid-template-columns: repeat(2, minmax(0, 1fr));
169
+ @container (min-width: 768px) {
170
+ .ui-responsive-grid {
171
+ grid-template-columns: repeat(var(--responsive-grid-md, 3), minmax(0, 1fr));
95
172
  }
96
173
  }
97
174
 
98
175
  @container (min-width: 1024px) {
99
- .ui-responsive-grid[data-columns="3"] {
100
- grid-template-columns: repeat(3, minmax(0, 1fr));
101
- }
102
-
103
- .ui-responsive-grid[data-columns="4"] {
104
- grid-template-columns: repeat(4, minmax(0, 1fr));
176
+ .ui-responsive-grid {
177
+ grid-template-columns: repeat(var(--responsive-grid-lg, 4), minmax(0, 1fr));
105
178
  }
106
179
  }
107
180
 
@@ -149,6 +222,7 @@
149
222
  padding-right: var(--space-page-active-x);
150
223
  }
151
224
 
225
+ .ui-page-container-inset,
152
226
  .ui-page-inset {
153
227
  padding-left: var(--space-page-active-x);
154
228
  padding-right: var(--space-page-active-x);
@@ -306,7 +380,7 @@
306
380
  align-items: center;
307
381
  gap: var(--space-stack-md);
308
382
  text-align: center;
309
- padding: var(--space-empty-state-y) var(--space-empty-state-x);
383
+ padding: var(--empty-state-space-y) var(--empty-state-space-x);
310
384
  }
311
385
 
312
386
  .ui-empty-state-title {
@@ -378,6 +452,7 @@
378
452
  font-variant-numeric: tabular-nums;
379
453
  }
380
454
 
455
+ .ui-toolbar,
381
456
  .ui-filter-bar {
382
457
  display: flex;
383
458
  flex-direction: column;
@@ -386,34 +461,40 @@
386
461
  }
387
462
 
388
463
  @media (min-width: 640px) {
464
+ .ui-toolbar,
389
465
  .ui-filter-bar {
390
466
  flex-flow: row wrap;
391
467
  align-items: flex-end;
392
468
  }
393
469
  }
394
470
 
471
+ .ui-toolbar-clear,
395
472
  .ui-filter-clear {
396
473
  width: 100%;
397
474
  }
398
475
 
399
476
  @media (min-width: 640px) {
477
+ .ui-toolbar-clear,
400
478
  .ui-filter-clear {
401
479
  width: auto;
402
480
  margin-left: auto;
403
481
  }
404
482
  }
405
483
 
484
+ .ui-toolbar-group,
406
485
  .ui-filter-group {
407
486
  min-width: 0;
408
487
  width: 100%;
409
488
  }
410
489
 
411
490
  @media (min-width: 640px) {
491
+ .ui-toolbar-group,
412
492
  .ui-filter-group {
413
493
  width: auto;
414
494
  }
415
495
  }
416
496
 
497
+ .ui-toolbar-label,
417
498
  .ui-filter-label {
418
499
  color: hsl(var(--muted-foreground));
419
500
  font-size: var(--filter-label-font-size);
@@ -5,7 +5,7 @@
5
5
  @layer components {
6
6
  [data-slot="table-head"] {
7
7
  height: var(--table-row-height);
8
- padding: var(--table-cell-padding-y) var(--space-table-cell-x);
8
+ padding: var(--table-cell-padding-y) var(--table-cell-space-x);
9
9
  text-align: left;
10
10
  vertical-align: middle;
11
11
  background: hsl(var(--secondary));
@@ -27,7 +27,7 @@
27
27
  }
28
28
 
29
29
  [data-slot="table-cell"] {
30
- padding: var(--table-cell-padding-y) var(--space-table-cell-x);
30
+ padding: var(--table-cell-padding-y) var(--table-cell-space-x);
31
31
  vertical-align: middle;
32
32
  /* Don't let a narrow column crush cell text — in CJK this collapses to one
33
33
  * character per line. Keep each cell on one line; the scroll container
@@ -91,7 +91,7 @@
91
91
  }
92
92
 
93
93
  [data-slot="card-content"][data-flush] .ui-data-table-toolbar {
94
- border-bottom: 1px solid hsl(var(--card-border-token));
94
+ border-bottom: 1px solid hsl(var(--card-border));
95
95
  padding: var(--card-space-header-y) var(--card-space-inset);
96
96
  }
97
97
 
@@ -19,11 +19,6 @@
19
19
  /* --info: 223 42% 50%; */
20
20
  /* --attention: 24 99% 46%; */
21
21
 
22
- /* Tracking-code identity (optional — do not reuse for status): */
23
- /* --tracking-internal: 211 73% 15%; */
24
- /* --tracking-seller: 44 5% 42%; */
25
- /* --tracking-yamato: 24 99% 46%; */
26
-
27
22
  /* Layout density (optional): */
28
23
  /* --space-page-x: var(--space-8); */
29
24
 
@@ -4,10 +4,10 @@
4
4
  */
5
5
 
6
6
  @import "./foundation.css";
7
- @import "./primitives/layout.css";
8
- @import "./primitives/control.css";
9
- @import "./primitives/card.css";
10
- @import "./primitives/table.css";
11
- @import "./primitives/feedback.css";
12
- @import "./primitives/badge.css";
13
- @import "./primitives/navigation.css";
7
+ @import "./semantic/layout.css";
8
+ @import "./components/control.css";
9
+ @import "./components/card.css";
10
+ @import "./components/table.css";
11
+ @import "./components/feedback.css";
12
+ @import "./components/badge.css";
13
+ @import "./components/navigation.css";
@@ -0,0 +1,7 @@
1
+ /* Badge component tokens. */
2
+
3
+ :root {
4
+ --badge-space-gap: var(--space-inline-xs);
5
+ --badge-space-x: var(--space-2);
6
+ --badge-space-y: var(--space-1);
7
+ }
@@ -1,4 +1,4 @@
1
- /* Card primitive tokens: card chrome derives from foundation + layout primitives. */
1
+ /* Card component tokens: card chrome derives from semantic layout tokens. */
2
2
 
3
3
  :root {
4
4
  --card-space-inset: var(--space-section-active);
@@ -12,8 +12,7 @@
12
12
  --card-description-font-size: var(--font-size-sm);
13
13
  --card-description-line-height: var(--line-height-normal);
14
14
  --card-background: var(--card);
15
- --card-foreground-token: var(--card-foreground);
16
- --card-border-token: var(--border);
15
+ --card-border: var(--border);
17
16
  --card-header-background: var(--muted);
18
17
  --card-header-background-alpha: 0.55;
19
18
  --card-radius: var(--radius);
@@ -24,6 +24,8 @@
24
24
  --control-focus-ring-width: 2px;
25
25
 
26
26
  --checkbox-size: 1rem;
27
+ --checkbox-size-compact: 0.875rem;
28
+ --checkbox-size-comfortable: 1.125rem;
27
29
  --choice-gap: var(--space-inline-sm);
28
30
  --choice-group-gap-x: var(--space-6);
29
31
  --choice-group-gap-y: var(--space-3);
@@ -31,9 +33,17 @@
31
33
  --choice-control-offset: 0.125rem;
32
34
 
33
35
  --switch-width: 2.25rem;
36
+ --switch-width-compact: 2rem;
37
+ --switch-width-comfortable: 2.5rem;
34
38
  --switch-height: 1.25rem;
39
+ --switch-height-compact: 1.125rem;
40
+ --switch-height-comfortable: 1.375rem;
35
41
  --switch-thumb-size: 1rem;
42
+ --switch-thumb-size-compact: 0.875rem;
43
+ --switch-thumb-size-comfortable: 1.125rem;
36
44
  --switch-thumb-translate: 1rem;
45
+ --switch-thumb-translate-compact: 0.875rem;
46
+ --switch-thumb-translate-comfortable: 1.125rem;
37
47
 
38
48
  --slider-track-height: 0.375rem;
39
49
  --slider-thumb-size: 1rem;
@@ -0,0 +1,17 @@
1
+ /* Feedback primitive tokens: dialog, alert, empty state. */
2
+
3
+ :root {
4
+ --dialog-space-inset: var(--space-5);
5
+ --dialog-space-gap: var(--space-stack-md);
6
+ --dialog-close-space-offset: var(--space-4);
7
+ --alert-space-inset: var(--space-section-active);
8
+ --alert-space-gap: var(--space-inline-md);
9
+ --alert-inner-space-gap: var(--space-stack-sm);
10
+ --alert-dismiss-space-offset: var(--space-3);
11
+ --empty-state-space-y: var(--space-10);
12
+ --empty-state-space-x: var(--space-6);
13
+ --skeleton-row-gap: var(--space-stack-sm);
14
+ --skeleton-cell-gap: var(--space-inline-lg);
15
+ --skeleton-card-inset: var(--space-section-active);
16
+ --skeleton-radius: var(--radius);
17
+ }
@@ -1,4 +1,4 @@
1
- /* Table primitive tokens: row height, cell padding. */
1
+ /* Table component tokens: row height, cell padding. */
2
2
 
3
3
  :root {
4
4
  --table-row-height-compact: 1.75rem;
@@ -6,5 +6,5 @@
6
6
  --table-row-height-comfortable: 2.75rem;
7
7
  --table-row-height: var(--table-row-height-default);
8
8
  --table-cell-padding-y: var(--space-2);
9
- --space-table-cell-x: var(--control-padding-x);
9
+ --table-cell-space-x: var(--control-padding-x);
10
10
  }
@@ -30,9 +30,6 @@
30
30
  --info-foreground: 60 33% 99%;
31
31
  --attention: 25 99% 46%; /* 朱 #eb6101 */
32
32
  --attention-foreground: 60 33% 99%;
33
- --tracking-internal: 204 100% 39%;
34
- --tracking-seller: 44 5% 42%;
35
- --tracking-yamato: 25 99% 46%;
36
33
 
37
34
  /* 和色 (wa-iro) — traditional Japanese accent palette for charts, tags,
38
35
  * decoration. Decorative hex (NOT semantic): never remap a wa-iro to a
@@ -51,22 +48,13 @@
51
48
  --wa-sumi: #595857; /* 墨 warm ink */
52
49
  --wa-nezu: #949495; /* 鼠 mouse-grey */
53
50
 
54
- /* Neutral + blue ramps (data viz, fine UI shading). */
55
- --gray-50: #f9fafb;
56
- --gray-100: #f3f4f6;
57
- --gray-200: #e5e7eb;
58
- --gray-300: #d1d5db;
59
- --gray-400: #9ca3af;
60
- --gray-500: #6b7280;
61
- --gray-600: #4b5563;
62
- --gray-700: #374151;
63
- --gray-800: #1f2937;
64
- --gray-900: #111827;
65
- --blue-50: #eff6ff;
66
- --blue-100: #dbeafe;
67
- --blue-500: #3b82f6;
68
- --blue-600: #2563eb;
69
- --blue-700: #1d4ed8;
51
+ /* Chart accents are neutral decorative primitives, not business semantics. */
52
+ --chart-1: #0077c7;
53
+ --chart-2: #006e54;
54
+ --chart-3: #f8b500;
55
+ --chart-4: #b7282e;
56
+ --chart-5: #4c6cb3;
57
+ --chart-6: #eb6101;
70
58
 
71
59
  /* Shape and elevation */
72
60
  --radius: 0.375rem;
@@ -145,7 +133,4 @@
145
133
  --info-foreground: 48 9% 9%;
146
134
  --attention: 25 95% 56%;
147
135
  --attention-foreground: 48 9% 9%;
148
- --tracking-internal: 204 90% 60%;
149
- --tracking-seller: 44 6% 64%;
150
- --tracking-yamato: 25 95% 56%;
151
136
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@godxjp/ui",
3
- "version": "7.0.0",
3
+ "version": "8.1.0",
4
4
  "type": "module",
5
5
  "description": "@godxjp/ui — shared React UI framework (shadcn + Radix + Tailwind v4).",
6
6
  "files": [
@@ -235,10 +235,12 @@
235
235
  "test": "vitest run",
236
236
  "test:watch": "vitest",
237
237
  "test:coverage": "vitest run --coverage",
238
- "verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
239
- "verify:release": "pnpm typecheck && pnpm lint && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm build && pnpm test",
238
+ "verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm test",
239
+ "verify:release": "pnpm typecheck && pnpm lint && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm build && pnpm test",
240
240
  "check:mcp-sync": "node scripts/check-mcp-sync.mjs",
241
241
  "check:mcp-orphans": "node scripts/check-mcp-orphans.mjs",
242
+ "check:prop-vocabulary": "node scripts/check-prop-vocabulary.mjs",
243
+ "check:token-tiers": "node scripts/check-token-tiers.mjs",
242
244
  "release": "node scripts/release.mjs",
243
245
  "preview": "node preview/scripts/kill-port.mjs && vite --config preview/vite.config.ts --port 6008 --strictPort",
244
246
  "preview:build": "vite build --config preview/vite.config.ts",
@@ -260,6 +262,7 @@
260
262
  "dependencies": {
261
263
  "@date-fns/tz": "^1.5.0",
262
264
  "@fontsource/m-plus-2": "^5.2.9",
265
+ "@radix-ui/react-accordion": "^1.2.12",
263
266
  "@radix-ui/react-alert-dialog": "^1.1.15",
264
267
  "@radix-ui/react-aspect-ratio": "^1.1.8",
265
268
  "@radix-ui/react-avatar": "^1.1.11",
@@ -268,6 +271,7 @@
268
271
  "@radix-ui/react-context": "^1.1.2",
269
272
  "@radix-ui/react-dialog": "^1.1.15",
270
273
  "@radix-ui/react-dropdown-menu": "^2.1.16",
274
+ "@radix-ui/react-hover-card": "^1.1.15",
271
275
  "@radix-ui/react-label": "^2.1.8",
272
276
  "@radix-ui/react-popover": "^1.1.15",
273
277
  "@radix-ui/react-radio-group": "^1.3.8",
@@ -285,11 +289,13 @@
285
289
  "clsx": "^2.1.1",
286
290
  "cmdk": "^1.1.1",
287
291
  "date-fns": "^4.1.0",
292
+ "input-otp": "^1.4.2",
288
293
  "lucide-react": "^1.14.0",
289
294
  "react-day-picker": "^10.0.1",
290
295
  "sonner": "^2.0.7",
291
296
  "tailwind-merge": "^3.5.0",
292
- "tailwindcss-animate": "^1.0.7"
297
+ "tailwindcss-animate": "^1.0.7",
298
+ "vaul": "^1.1.2"
293
299
  },
294
300
  "devDependencies": {
295
301
  "@eslint/js": "^9.39.4",
@@ -48,6 +48,28 @@ const RULES = [
48
48
  message:
49
49
  "Use semantic tokens (bg-primary, text-muted-foreground…), not raw palette colors (rules §4).",
50
50
  },
51
+ {
52
+ id: "status-tone-not-variant",
53
+ severity: "error",
54
+ test: /\bvariant=["'](?:success|warning|destructive|info|neutral)["']/,
55
+ message:
56
+ "Status/color intent uses tone, not variant. Use tone='success|warning|destructive|info|neutral'.",
57
+ },
58
+ {
59
+ id: "no-domain-tracking-token",
60
+ severity: "error",
61
+ test: /--(?:color-)?tracking-|--(?:tracking|color-tracking)-(?:internal|seller|yamato)/,
62
+ message:
63
+ "Package tracking/domain tokens are forbidden. Use semantic tokens or app-local theme overrides.",
64
+ },
65
+ {
66
+ id: "value-callback-on-value-change",
67
+ severity: "error",
68
+ test:
69
+ /<(?:Checkbox\.Group|Upload|Cascader|TreeSelect|Transfer|SearchSelect|DatePicker|DateRangePicker|TimePicker|ColorPicker|LocalePicker|TimezonePicker|DateFormatPicker|TimeFormatPicker)\b[^>]*\bonChange=/,
70
+ message:
71
+ "Abstract value components use onValueChange, not onChange. Reserve onChange for DOM events.",
72
+ },
51
73
  {
52
74
  id: "no-arbitrary-hex",
53
75
  severity: "error",
@@ -1,33 +0,0 @@
1
- import { cn } from './chunk-U7N2A7A3.js';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- // src/lib/variants.ts
5
- var densityClass = {
6
- compact: "ui-density-compact",
7
- default: "ui-density-default",
8
- comfortable: "ui-density-comfortable"
9
- };
10
- var pageContainerVariantClass = {
11
- default: void 0,
12
- narrow: "ui-page-container--narrow",
13
- flush: "ui-page-container--flush",
14
- ghost: "ui-page-container--ghost"
15
- };
16
- var stackGapClass = {
17
- xs: "ui-stack-xs",
18
- sm: "ui-stack-sm",
19
- md: "ui-stack-md",
20
- lg: "ui-stack-lg",
21
- xl: "ui-stack-xl"
22
- };
23
- var inlineGapClass = {
24
- xs: "ui-inline-xs",
25
- sm: "ui-inline-sm",
26
- md: "ui-inline-md",
27
- lg: "ui-inline-lg"
28
- };
29
- function Inline({ gap = "sm", className, children, ...props }) {
30
- return /* @__PURE__ */ jsx("div", { className: cn(inlineGapClass[gap], className), ...props, children });
31
- }
32
-
33
- export { Inline, densityClass, pageContainerVariantClass, stackGapClass };
@@ -1,10 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { a as PageHeaderProp } from './layout.prop-MwHm4-Zl.js';
3
- import { F as FilterBarProp, a as FilterGroupProp } from './navigation.prop-DAH4ysXj.js';
4
-
5
- declare function PageHeader({ title, description, breadcrumb, actions, className }: PageHeaderProp): react_jsx_runtime.JSX.Element;
6
-
7
- declare function FilterBar({ onClear, hasActiveFilters, className, children, }: FilterBarProp): react_jsx_runtime.JSX.Element;
8
- declare function FilterGroup({ label, className, children }: FilterGroupProp): react_jsx_runtime.JSX.Element;
9
-
10
- export { FilterBar as F, PageHeader as P, FilterGroup as a };
@@ -1,10 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { P as PageContainerProp, f as StackProp, I as InlineProp } from './layout.prop-MwHm4-Zl.js';
3
-
4
- declare function PageContainer({ title, subtitle, extra, footer, breadcrumb, density, variant, stickyFooter, children, className, }: PageContainerProp): react_jsx_runtime.JSX.Element;
5
-
6
- declare function Stack({ gap, className, children, ...props }: StackProp): react_jsx_runtime.JSX.Element;
7
-
8
- declare function Inline({ gap, className, children, ...props }: InlineProp): react_jsx_runtime.JSX.Element;
9
-
10
- export { Inline as I, PageContainer as P, Stack as S };
@@ -1,20 +0,0 @@
1
- /**
2
- * Layout & spacing prop types.
3
- * @see docs/PROPS-VOCABULARY.md#layout--density
4
- */
5
- /** Page-level density — affects padding, control heights across PageContainer subtree. */
6
- type PageDensityProp = "compact" | "default" | "comfortable";
7
- /** Page shell layout — orthogonal to PageDensityProp. */
8
- type PageContainerVariantProp = "default" | "narrow" | "flush" | "ghost";
9
- /** Vertical stack gap between block-level children. */
10
- type StackGapProp = "xs" | "sm" | "md" | "lg" | "xl";
11
- /** Horizontal inline gap between row items. */
12
- type InlineGapProp = "xs" | "sm" | "md" | "lg";
13
- /** DataTable row density — NOT the same as PageDensityProp. */
14
- type TableDensityProp = "compact" | "comfortable";
15
- /** @deprecated Alias — use PageDensityProp. Kept for lib/variants compat. */
16
- type DensityProp = PageDensityProp;
17
- /** @deprecated Alias — use StackGapProp. */
18
- type GapProp = StackGapProp;
19
-
20
- export type { DensityProp as D, GapProp as G, InlineGapProp as I, PageContainerVariantProp as P, StackGapProp as S, TableDensityProp as T, PageDensityProp as a };
@@ -1,13 +0,0 @@
1
- /* Badge primitive tokens. */
2
-
3
- :root {
4
- --space-badge-gap: var(--space-inline-xs);
5
- --space-badge-x: var(--space-2);
6
- --space-badge-y: var(--space-1);
7
- --code-badge-height: 1.75rem;
8
- --code-badge-gap: var(--space-inline-sm);
9
- --code-badge-padding-x: var(--space-2);
10
- --code-badge-bg-alpha: 0.055;
11
- --code-badge-border-alpha: 0.28;
12
- --code-badge-separator-alpha: 0.22;
13
- }
@@ -1,17 +0,0 @@
1
- /* Feedback primitive tokens: dialog, alert, empty state. */
2
-
3
- :root {
4
- --space-dialog-inset: var(--space-5);
5
- --space-dialog-gap: var(--space-stack-md);
6
- --space-dialog-close-offset: var(--space-4);
7
- --space-alert-inset: var(--space-section-active);
8
- --space-alert-gap: var(--space-inline-md);
9
- --space-alert-inner-gap: var(--space-stack-sm);
10
- --space-alert-dismiss-offset: var(--space-3);
11
- --space-empty-state-y: var(--space-10);
12
- --space-empty-state-x: var(--space-6);
13
- --skeleton-row-gap: var(--space-stack-sm);
14
- --skeleton-cell-gap: var(--space-inline-lg);
15
- --skeleton-card-inset: var(--space-section-active);
16
- --skeleton-radius: var(--radius);
17
- }
File without changes
File without changes