@godxjp/ui 29.0.0 → 30.0.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 (53) hide show
  1. package/agent/START-HERE.md +1 -1
  2. package/agent/index.json +2 -2
  3. package/agent/llms.txt +3 -3
  4. package/agent/tokens.json +135 -135
  5. package/dist/components/data-display/badge.js +1 -1
  6. package/dist/components/data-display/table.js +1 -1
  7. package/dist/components/general/button.js +2 -2
  8. package/dist/components/navigation/tabs.js +1 -1
  9. package/dist/contracts/measurement.json +1 -1
  10. package/dist/styles/alert-layout.css +5 -5
  11. package/dist/styles/badge-layout.css +1 -1
  12. package/dist/styles/card-layout.css +10 -8
  13. package/dist/styles/chart-layout.css +5 -2
  14. package/dist/styles/control.css +64 -48
  15. package/dist/styles/data-display-layout.css +49 -40
  16. package/dist/styles/data-entry-layout.css +12 -12
  17. package/dist/styles/dialog-layout.css +11 -11
  18. package/dist/styles/focus-ring.css +2 -2
  19. package/dist/styles/layout.css +11 -10
  20. package/dist/styles/logo-layout.css +2 -2
  21. package/dist/styles/motion.css +1 -1
  22. package/dist/styles/navigation-layout.css +27 -15
  23. package/dist/styles/shell-layout.css +30 -87
  24. package/dist/styles/table-layout.css +11 -8
  25. package/dist/styles/toggle.css +1 -1
  26. package/dist/tokens/components/banner.css +1 -1
  27. package/dist/tokens/components/card.css +4 -4
  28. package/dist/tokens/components/chart.css +1 -1
  29. package/dist/tokens/components/chat-bubble.css +1 -1
  30. package/dist/tokens/components/control.css +13 -12
  31. package/dist/tokens/components/data-display.css +11 -11
  32. package/dist/tokens/components/data-entry.css +1 -1
  33. package/dist/tokens/components/descriptions.css +1 -1
  34. package/dist/tokens/components/draggable-panel.css +1 -1
  35. package/dist/tokens/components/feedback.css +1 -1
  36. package/dist/tokens/components/legal-document.css +1 -1
  37. package/dist/tokens/components/logo.css +1 -1
  38. package/dist/tokens/components/mega-menu.css +1 -1
  39. package/dist/tokens/components/navigation.css +6 -6
  40. package/dist/tokens/components/segmented.css +3 -3
  41. package/dist/tokens/components/separator.css +1 -1
  42. package/dist/tokens/components/shell.css +5 -5
  43. package/dist/tokens/components/table.css +4 -4
  44. package/dist/tokens/components/thought-chain.css +1 -1
  45. package/dist/tokens/components/toggle.css +1 -1
  46. package/dist/tokens/components/upload.css +2 -2
  47. package/dist/tokens/foundation.css +2 -2
  48. package/docs/i18n/messages/en.json +4 -0
  49. package/docs/i18n/messages/ja.json +4 -0
  50. package/docs/i18n/messages/vi.json +4 -0
  51. package/docs/themes/index.ts +19 -0
  52. package/docs/themes/neubrutalism.css +475 -0
  53. package/package.json +2 -2
@@ -49,7 +49,7 @@
49
49
  --prose-heading-space-block-start: var(--space-6);
50
50
  --prose-list-space-inline: var(--space-6);
51
51
  --prose-list-item-space: var(--space-1);
52
- --prose-quote-border-width: var(--stroke-md);
52
+ --prose-quote-border-width: initial;
53
53
  --prose-quote-space-inline: var(--space-3);
54
54
  --prose-code-font-size: calc(1em / var(--font-size-ratio));
55
55
  --prose-code-space-inline: var(--space-1);
@@ -109,10 +109,10 @@
109
109
  --avatar-presence-size: 30%;
110
110
  --avatar-presence-min-size: var(--space-2);
111
111
  --avatar-presence-inset: 0;
112
- --avatar-presence-ring-width: var(--stroke-md);
113
- --avatar-presence-stroke-width: var(--stroke-sm);
112
+ --avatar-presence-ring-width: initial;
113
+ --avatar-presence-stroke-width: initial;
114
114
  --avatar-presence-bar-inline-size: 56%;
115
- --avatar-presence-bar-block-size: var(--stroke-sm);
115
+ --avatar-presence-bar-block-size: initial;
116
116
  --avatar-presence-ring-color: initial;
117
117
  --avatar-presence-online-color: initial;
118
118
  --avatar-presence-away-color: initial;
@@ -132,7 +132,7 @@
132
132
 
133
133
  --progress-ring-size: 2.75rem;
134
134
  --progress-ring-size-sm: 2rem;
135
- --progress-ring-border-width: var(--stroke-lg);
135
+ --progress-ring-border-width: initial;
136
136
 
137
137
  --progress-ring-label-font-size: initial;
138
138
 
@@ -147,7 +147,7 @@
147
147
  --swatch-size: 1rem;
148
148
  --swatch-radius: 0.125rem;
149
149
 
150
- --swatch-border-width: var(--stroke-hairline);
150
+ --swatch-border-width: initial;
151
151
 
152
152
  --swatch-border-color: initial;
153
153
 
@@ -167,7 +167,7 @@
167
167
  --thumbnail-block-size-sm: 4rem;
168
168
  --thumbnail-block-size: 6rem;
169
169
  --thumbnail-block-size-lg: 10rem;
170
- --thumbnail-border-width: var(--stroke-hairline);
170
+ --thumbnail-border-width: initial;
171
171
  --thumbnail-radius: initial;
172
172
 
173
173
  --timeline-dot-done-background: initial;
@@ -175,7 +175,7 @@
175
175
  --timeline-dot-current-background: initial;
176
176
  --timeline-line-completed-background: initial;
177
177
 
178
- --timeline-dot-current-ring-width: var(--stroke-xl);
178
+ --timeline-dot-current-ring-width: initial;
179
179
 
180
180
  --qr-code-foreground: 0 0% 0%;
181
181
  --qr-code-background: 0 0% 100%;
@@ -204,8 +204,8 @@
204
204
  --timeline-grid-event-gap: var(--space-1);
205
205
  --timeline-grid-event-space-inset: var(--space-1);
206
206
  --timeline-grid-event-radius: initial;
207
- --timeline-grid-event-border-width: var(--stroke-md);
208
- --timeline-grid-now-width: var(--stroke-sm);
207
+ --timeline-grid-event-border-width: initial;
208
+ --timeline-grid-now-width: initial;
209
209
 
210
210
  --timeline-grid-line-color: initial;
211
211
  --timeline-grid-event-color: initial;
@@ -237,7 +237,7 @@
237
237
 
238
238
  --range-timeline-grid-color: initial;
239
239
 
240
- --range-timeline-grid-width: var(--stroke-hairline);
240
+ --range-timeline-grid-width: initial;
241
241
 
242
242
  --range-timeline-muted-column-background: initial;
243
243
 
@@ -17,7 +17,7 @@
17
17
  --branch-scope-picker-subset-gap: 0.5rem;
18
18
  --branch-scope-picker-subset-padding-inline: 1rem;
19
19
 
20
- --branch-scope-picker-subset-border-width: var(--stroke-md);
20
+ --branch-scope-picker-subset-border-width: initial;
21
21
 
22
22
  --branch-scope-picker-list-max-height: 16rem;
23
23
  }
@@ -21,7 +21,7 @@
21
21
  --descriptions-row-border: none;
22
22
  --descriptions-row-min-height: auto;
23
23
 
24
- --descriptions-border-width: var(--stroke-hairline);
24
+ --descriptions-border-width: initial;
25
25
  --descriptions-border-radius: initial;
26
26
 
27
27
  --descriptions-cell-padding-y: var(--space-2);
@@ -20,7 +20,7 @@
20
20
 
21
21
  --draggable-panel-radius: initial;
22
22
  --draggable-panel-shadow: var(--shadow-lg);
23
- --draggable-panel-border-width: var(--stroke-hairline);
23
+ --draggable-panel-border-width: initial;
24
24
 
25
25
  --draggable-panel-bar-padding: var(--space-2) var(--space-3);
26
26
  --draggable-panel-bar-gap: var(--space-2);
@@ -74,7 +74,7 @@
74
74
  --alert-bg-alpha: 0.05;
75
75
  --alert-border-alpha: 0.3;
76
76
 
77
- --banner-border-block-end-width: 1px;
77
+ --banner-border-block-end-width: initial;
78
78
  --banner-space-block: var(--space-3);
79
79
 
80
80
  --banner-space-inline: var(--space-page-active-x);
@@ -23,7 +23,7 @@
23
23
  calc(var(--font-size-base) / var(--font-size-ratio))
24
24
  );
25
25
 
26
- --legal-document-toc-marker-width: var(--stroke-md);
26
+ --legal-document-toc-marker-width: initial;
27
27
 
28
28
  --legal-document-nav-gap: var(--space-4);
29
29
  --legal-document-header-gap: var(--space-2);
@@ -56,7 +56,7 @@
56
56
  --logo-wordmark-font-family: initial;
57
57
  --logo-wordmark-color: initial;
58
58
 
59
- --logo-divider-width: var(--stroke-hairline);
59
+ --logo-divider-width: initial;
60
60
  --logo-divider-height: 1em;
61
61
  --logo-divider-alpha: 0.25;
62
62
  --logo-divider-color: initial;
@@ -23,7 +23,7 @@
23
23
  --mega-menu-panel-background: hsl(var(--popover));
24
24
  --mega-menu-panel-foreground: hsl(var(--popover-foreground));
25
25
  --mega-menu-panel-border-color: hsl(var(--border));
26
- --mega-menu-panel-border-width: 1px;
26
+ --mega-menu-panel-border-width: initial;
27
27
  --mega-menu-panel-radius: initial;
28
28
  --mega-menu-panel-padding: var(--space-6);
29
29
  --mega-menu-panel-shadow: var(--shadow-md);
@@ -99,13 +99,13 @@
99
99
  --tabs-card-list-space-gap: var(--space-1);
100
100
 
101
101
  --tabs-card-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
102
- --tabs-card-rail-border-width: var(--stroke-hairline);
102
+ --tabs-card-rail-border-width: initial;
103
103
  --tabs-card-background: initial;
104
104
  --tabs-card-background-alpha: initial;
105
105
 
106
106
  --tabs-panel-background: initial;
107
107
  --tabs-panel-background-alpha: initial;
108
- --tabs-panel-border-width: var(--tabs-card-rail-border-width);
108
+ --tabs-panel-border-width: var(--tabs-card-rail-border-width, var(--stroke-hairline));
109
109
 
110
110
  --tabs-panel-radius: initial;
111
111
  --tabs-panel-space-inset: var(--space-4);
@@ -122,7 +122,7 @@
122
122
  --tabs-count-active-background: initial;
123
123
  --tabs-count-active-background-alpha: initial;
124
124
  --tabs-count-active-color: initial;
125
- --tabs-count-forced-outline-width: var(--stroke-hairline);
125
+ --tabs-count-forced-outline-width: initial;
126
126
 
127
127
  --tabs-bar-gap: var(--space-2);
128
128
  --tabs-extra-gap: var(--space-2);
@@ -183,8 +183,8 @@
183
183
  --menu-separator-space-inline: calc(var(--space-1) * -1);
184
184
 
185
185
  --steps-dot-size: 0.625rem;
186
- --steps-dot-process-ring-width: var(--stroke-xl);
187
- --steps-marker-border-width: var(--stroke-md);
186
+ --steps-dot-process-ring-width: initial;
187
+ --steps-marker-border-width: initial;
188
188
  --steps-marker-font-size: var(--font-size-sm, var(--font-size-base));
189
189
  --steps-marker-icon-size: var(--icon-size-md);
190
190
  --steps-wait-icon-size: var(--icon-size-xs);
@@ -213,7 +213,7 @@
213
213
  --steps-nav-radius: initial;
214
214
  --steps-nav-separator-size: var(--control-icon-size-sm);
215
215
 
216
- --steps-progress-ring-width: var(--stroke-md);
216
+ --steps-progress-ring-width: initial;
217
217
  --steps-progress-track-color: initial;
218
218
 
219
219
  --app-setting-picker-locale-width: 10rem;
@@ -21,9 +21,9 @@
21
21
 
22
22
  --segmented-item-gap: calc(var(--space-3) / 2);
23
23
 
24
- --segmented-item-color: var(--muted-foreground);
25
- --segmented-item-hover-color: var(--foreground);
26
- --segmented-item-selected-color: var(--foreground);
24
+ --segmented-item-color: initial;
25
+ --segmented-item-hover-color: initial;
26
+ --segmented-item-selected-color: initial;
27
27
 
28
28
  --segmented-item-hover-background: initial;
29
29
  --segmented-item-hover-background-alpha: initial;
@@ -1,7 +1,7 @@
1
1
 
2
2
  :root {
3
3
 
4
- --separator-rule-size: var(--stroke-hairline);
4
+ --separator-rule-size: initial;
5
5
 
6
6
  --separator-rule-color: initial;
7
7
 
@@ -36,7 +36,7 @@
36
36
  --font-size-2xs,
37
37
  calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
38
38
  );
39
- --org-switcher-meta-foreground: var(--muted-foreground);
39
+ --org-switcher-meta-foreground: initial;
40
40
  --sidebar-nav-sub-font-size: var(
41
41
  --font-size-xs,
42
42
  calc(var(--font-size-base) / var(--font-size-ratio))
@@ -162,7 +162,7 @@
162
162
  --topbar-item-min-width: var(--control-height);
163
163
 
164
164
  --topbar-item-radius: var(--radius-sharp);
165
- --topbar-item-color: var(--muted-foreground);
165
+ --topbar-item-color: initial;
166
166
 
167
167
  --topbar-item-hover-background: initial;
168
168
  --topbar-item-hover-background-alpha: initial;
@@ -218,7 +218,7 @@
218
218
 
219
219
  --app-launcher-tile-min-height: var(--control-height-comfortable);
220
220
  --app-launcher-tile-radius: initial;
221
- --app-launcher-tile-color: var(--foreground);
221
+ --app-launcher-tile-color: initial;
222
222
  --app-launcher-tile-hover-background: initial;
223
223
  --app-launcher-tile-hover-background-alpha: initial;
224
224
  --app-launcher-tile-hover-color: initial;
@@ -237,7 +237,7 @@
237
237
  --font-size-2xs,
238
238
  calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
239
239
  );
240
- --app-launcher-group-label-color: var(--muted-foreground);
240
+ --app-launcher-group-label-color: initial;
241
241
  --app-launcher-state-min-height: 8rem;
242
242
 
243
243
  --app-launcher-launchpad-backdrop-background: initial;
@@ -372,7 +372,7 @@
372
372
  );
373
373
  --auth-shell-divider-label-line-height: calc(19 / 11);
374
374
  --auth-shell-divider-rule-color: var(--border);
375
- --auth-shell-divider-label-color: var(--muted-foreground);
375
+ --auth-shell-divider-label-color: initial;
376
376
  --auth-identity-gap: 0.375rem;
377
377
  --auth-requester-gap: 0.375rem;
378
378
  --auth-requester-icon-size: var(--icon-size-md);
@@ -37,7 +37,7 @@
37
37
  --table-expand-column-width: 2.5rem;
38
38
 
39
39
  --table-summary-background: initial;
40
- --table-summary-border-width: var(--stroke-hairline);
40
+ --table-summary-border-width: initial;
41
41
 
42
42
  --table-row-expanded-background: initial;
43
43
 
@@ -105,10 +105,10 @@
105
105
 
106
106
  --table-line-height: calc(1.25 / 0.875);
107
107
 
108
- --table-row-border-width: var(--stroke-hairline);
108
+ --table-row-border-width: initial;
109
109
 
110
- --table-flush-divider-width: var(--table-row-border-width);
110
+ --table-flush-divider-width: var(--table-row-border-width, var(--stroke-hairline));
111
111
 
112
- --table-row-tone-rail-width: var(--stroke-2xl);
112
+ --table-row-tone-rail-width: initial;
113
113
  --table-row-tone-wash-alpha: 0.06;
114
114
  }
@@ -19,7 +19,7 @@
19
19
  --thought-chain-icon-success-color: initial;
20
20
  --thought-chain-icon-error-color: initial;
21
21
 
22
- --thought-chain-line-width: var(--stroke-hairline);
22
+ --thought-chain-line-width: initial;
23
23
  --thought-chain-line-color: initial;
24
24
 
25
25
  --thought-chain-chevron-size: var(--icon-size-sm);
@@ -28,5 +28,5 @@
28
28
  --toggle-pressed-border-color: initial;
29
29
  --toggle-pressed-border-color-alpha: initial;
30
30
 
31
- --toggle-count-forced-outline-width: var(--stroke-hairline);
31
+ --toggle-count-forced-outline-width: initial;
32
32
  }
@@ -4,7 +4,7 @@
4
4
 
5
5
  --upload-dropzone-space-inset: var(--space-10);
6
6
  --upload-dropzone-radius: initial;
7
- --upload-dropzone-border-width: var(--stroke-md);
7
+ --upload-dropzone-border-width: initial;
8
8
  --upload-dropzone-icon-size: var(--icon-size-3xl);
9
9
  --upload-dropzone-hint-space-block-start: var(--space-3);
10
10
  --upload-dropzone-hint-font-size: var(--font-size-sm, var(--font-size-base));
@@ -57,7 +57,7 @@
57
57
  --upload-avatar-size: 6rem;
58
58
 
59
59
  --upload-avatar-icon-size: var(--icon-size-xl);
60
- --upload-avatar-border-width: var(--stroke-md);
60
+ --upload-avatar-border-width: initial;
61
61
  --upload-avatar-change-space-block: var(--space-1);
62
62
 
63
63
  --upload-avatar-change-background: rgb(0 0 0 / 0.7);
@@ -119,7 +119,7 @@
119
119
  --brand-glow: initial;
120
120
 
121
121
  --focus-outline: 1;
122
- --focus-outline-weight: var(--stroke-hairline);
122
+ --focus-outline-weight: initial;
123
123
 
124
124
  --focus-outline-color: initial;
125
125
 
@@ -128,7 +128,7 @@
128
128
 
129
129
  --focus-ring-color: initial;
130
130
 
131
- --focus-ring-weight: var(--focus-outline-weight);
131
+ --focus-ring-weight: var(--focus-outline-weight, var(--stroke-hairline));
132
132
  --focus-ring-width: calc(var(--focus-ring-weight) * var(--focus-outline));
133
133
 
134
134
  --focus-ring-opacity: 1;
@@ -941,6 +941,10 @@
941
941
  "flat": {
942
942
  "name": "Flat",
943
943
  "note": "No corners, no shadow, opaque surfaces separated by a line. Squaring one number costs sixty-seven declarations."
944
+ },
945
+ "neubrutalism": {
946
+ "name": "Neubrutalism",
947
+ "note": "Thick black borders, hard offset shadows with no blur, square corners and loud saturated fills. Thickening a border costs 22 declarations and still reaches only a fifth of them."
944
948
  }
945
949
  },
946
950
  "seed": {
@@ -935,6 +935,10 @@
935
935
  "flat": {
936
936
  "name": "フラット",
937
937
  "note": "角丸なし、影なし、線で区切る不透明な面。角丸を0にするだけで67行の宣言が必要です。"
938
+ },
939
+ "neubrutalism": {
940
+ "name": "ニューブルータリズム",
941
+ "note": "太い黒枠、ぼかしのない硬いドロップシャドウ、角ゼロ、彩度の高い面。枠を太くするのに22宣言かかり、それでも全体の五分の一にしか届かない。"
938
942
  }
939
943
  },
940
944
  "seed": {
@@ -935,6 +935,10 @@
935
935
  "flat": {
936
936
  "name": "Flat",
937
937
  "note": "Không bo góc, không đổ bóng, mặt đục ngăn nhau bằng một đường kẻ. Bo góc về 0 tốn sáu mươi bảy khai báo."
938
+ },
939
+ "neubrutalism": {
940
+ "name": "Neubrutalism",
941
+ "note": "Viền đen dày, bóng đổ cứng không làm mờ, góc vuông và mảng màu bão hoà. Làm dày viền tốn 22 khai báo mà vẫn chỉ với tới một phần năm số chỗ."
938
942
  }
939
943
  },
940
944
  "seed": {
@@ -30,6 +30,7 @@
30
30
  */
31
31
  import "./glassmorphism.css";
32
32
  import "./flat.css";
33
+ import "./neubrutalism.css";
33
34
 
34
35
  export type ThemeRow = {
35
36
  /**
@@ -159,6 +160,24 @@ export const THEMES: readonly ThemeRow[] = [
159
160
  * not a contract it holds anyone to. */
160
161
  inkSurface: { light: "#E4E1EA", dark: "#403D30" },
161
162
  },
163
+ {
164
+ id: "neubrutalism",
165
+ nameKey: "themeLab.theme.neubrutalism.name",
166
+ noteKey: "themeLab.theme.neubrutalism.note",
167
+ /* Both members are the WORST-CASE ground rather than the average one, and the two are
168
+ * different KINDS of worst case — in light the ink walks dark, so the hardest ground is the
169
+ * DARKEST fill; in dark it walks light, so the hardest is the LIGHTEST. Computed over every
170
+ * fill this theme declares × all five `SEEDS`, with the sRGB relative-luminance formula:
171
+ * light is the violet seed's `--accent` (#D9C5FC, L=0.6171), dark is the citron seed's
172
+ * `--accent` (#615205, L=0.0859). Carrying one hex into both slots is the mistake the pair
173
+ * exists to prevent (gh#896), and taking the average fill is the mistake gh#903 made.
174
+ *
175
+ * Named even though FINDING D means this theme never leans on seed-derived ink: `tenantTheme`
176
+ * emits these as inline literals on an ancestor, so leaving the slot `null` would walk them
177
+ * against the LIGHT default in both polarities — the gh#887 defect, arriving through a door
178
+ * this theme does not otherwise use. */
179
+ inkSurface: { light: "#D9C5FC", dark: "#615205" },
180
+ },
162
181
  ];
163
182
 
164
183
  /**