@godxjp/ui 33.25.2 → 33.26.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.
package/README.md CHANGED
@@ -18,7 +18,7 @@ npm i @godxjp/ui
18
18
 
19
19
  <!-- agent-catalog-counts:start -->
20
20
 
21
- The catalog — 212 components, 3203 tokens, 44 cardinal rules — is published in two forms from one
21
+ The catalog — 213 components, 3236 tokens, 44 cardinal rules — is published in two forms from one
22
22
  source. **Entry point for either: [`AGENTS.md`](AGENTS.md).**
23
23
  <!-- agent-catalog-counts:end -->
24
24
 
@@ -53,10 +53,10 @@ static files straight from this public repo — no hosting, no deploy step:
53
53
  | [`agent/llms.txt`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/llms.txt) | 3 KB | the [llms.txt](https://llmstxt.org/) entry point |
54
54
  | [`agent/DESIGN.md`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/DESIGN.md) | 18 KB | the visual spec: tokens, colour scarcity, admin screen anatomy, do/don't |
55
55
  | [`agent/index.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/index.json) | 3 KB | manifest: version, counts, every file's URL |
56
- | [`agent/components-index.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json) | 47 KB | all 212 as name + group + tagline — **fetch this first** |
56
+ | [`agent/components-index.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json) | 47 KB | all 213 as name + group + tagline — **fetch this first** |
57
57
  | [`agent/components/<Name>.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components/Select.json) | 1 KB–38 KB | one file per component, each with its `importPath` — **this is the route to take** |
58
- | [`agent/components.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components.json) | 1.4 MB | all 212 entries in one file — most URL fetchers truncate this silently; prefer the per-component files |
59
- | [`agent/tokens.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/tokens.json) | 1.4 MB | all 3203 design tokens, their values and why they exist |
58
+ | [`agent/components.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components.json) | 1.4 MB | all 213 entries in one file — most URL fetchers truncate this silently; prefer the per-component files |
59
+ | [`agent/tokens.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/tokens.json) | 1.4 MB | all 3236 design tokens, their values and why they exist |
60
60
  | [`agent/vocabulary.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/vocabulary.json) | 7 KB | the controlled prop vocabulary |
61
61
  | [`agent/rules.json`](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/rules.json) | 24 KB | the 44 cardinal rules |
62
62
  <!-- prettier-ignore-end -->
@@ -3,7 +3,7 @@
3
3
  You are about to write code against a design system you did not author. This file is the whole
4
4
  contract. Read it before you write JSX.
5
5
 
6
- **This catalog describes `@godxjp/ui` 33.25.2.** If the project you are editing has a different
6
+ **This catalog describes `@godxjp/ui` 33.26.0.** If the project you are editing has a different
7
7
  version in its `package.json`, read the pinned catalog for THAT version instead
8
8
  (`…/v<their-version>/agent/…`). A catalog newer than the installed package describes props that do
9
9
  not exist yet; older, and it hides props that do. Neither failure announces itself.
@@ -52,7 +52,7 @@ screen anatomy, the visual target the rules below do not give you. Then fetch in
52
52
  task is a task** — "build a settings page", "confirm a destructive delete", "a list page with
53
53
  filters" — start HERE, not at the components. Then fetch `patterns/<name>.json` for complete,
54
54
  copy-paste-ready code. A component index answers "does X exist"; it cannot answer "build Y".
55
- 1. `components-index.json` — 47 KB, all 212 components as name + group +
55
+ 1. `components-index.json` — 47 KB, all 213 components as name + group +
56
56
  tagline. Read this when you already know the SHAPE you need. Each entry may carry `absorbed`:
57
57
  names that **do not exist** and map to it — `Combobox`, `Autocomplete`, `CountrySelect` and
58
58
  `SearchSelect` are all `Select`. If you are about to hand-roll something, search this field
@@ -61,10 +61,10 @@ screen anatomy, the visual target the rules below do not give you. Then fetch in
61
61
  its `importPath`, and its examples. Fetch only the handful you picked in step 1.
62
62
  3. `rules.json` — 44 cardinal rules. The ones about raw HTML and hardcoded colour are not
63
63
  style advice.
64
- 4. `tokens.json` — 3203 design tokens, each tagged with its `tier`. **If you were handed a
64
+ 4. `tokens.json` — 3236 design tokens, each tagged with its `tier`. **If you were handed a
65
65
  brand, read the 223 `foundation` entries first** — `--primary`, `--background`,
66
66
  `--radius`, `--font-size-base` are the handful everything else derives from. The
67
- 2867 `component` entries are per-part knobs; reach for one only when a role is
67
+ 2900 `component` entries are per-part knobs; reach for one only when a role is
68
68
  right everywhere except one component.
69
69
  5. `anti-ai-tells.json` — 35 shapes that make generated UI look generated, each with the
70
70
  fix. Read before you reach for a gradient hero or a wall of coloured chips.
@@ -150,7 +150,7 @@ has stopped following the brand.
150
150
  |---|---|---|---|
151
151
  | `foundation` | 223 | the seeds — `--primary`, `--background`, `--foreground`, `--radius`, `--font-size-base`, `--shadow-color`. Everything below is derived from these | **yes — this is the main road.** The default `--primary` is a neutral placeholder: set it (`:root { --primary: <H> <S>% <L>%; }`, HSL components, no `hsl()` wrapper) or import a theme preset such as `@godxjp/ui/themes/godx.css` |
152
152
  | `semantic` | 113 | named roles that follow the seeds — `--ring`, `--text-link`, `--primary-hover`, `--overlay-background` | only when the seed is right and ONE role must differ. That role then stops following a later brand change |
153
- | `component` | 2867 | per-part knobs, `--{component}-{part}-{property}` | rarely. Most are declared `initial` with the real default at the call site — deliberate, so a scoped override re-resolves instead of freezing at `:root` |
153
+ | `component` | 2900 | per-part knobs, `--{component}-{part}-{property}` | rarely. Most are declared `initial` with the real default at the call site — deliberate, so a scoped override re-resolves instead of freezing at `:root` |
154
154
 
155
155
  A token whose `value` is `initial` is not empty and not broken: `initial` is the guaranteed-invalid
156
156
  value, so the real default is computed where the element paints it. Set it and yours wins.
@@ -7,6 +7,31 @@
7
7
  "importPath": "@godxjp/ui/layout",
8
8
  "name": "Flex",
9
9
  "props": [
10
+ {
11
+ "description": "Measure actual top and fit remaining visual viewport; observes resize and scroll.",
12
+ "name": "viewport",
13
+ "type": "boolean"
14
+ },
15
+ {
16
+ "description": "Equal flexible region with zero block and inline minimum.",
17
+ "name": "basis",
18
+ "type": "\"equal\""
19
+ },
20
+ {
21
+ "description": "Internal scroll ownership without document growth.",
22
+ "name": "overflow",
23
+ "type": "\"hidden\" | \"auto\" | \"scroll-x\" | \"scroll-y\""
24
+ },
25
+ {
26
+ "description": "Declarative orientation, never infers an action.",
27
+ "name": "rotate",
28
+ "type": "0 | 90 | 180 | 270"
29
+ },
30
+ {
31
+ "description": "Orientation transition only; reduced motion is immediate.",
32
+ "name": "animated",
33
+ "type": "boolean"
34
+ },
10
35
  {
11
36
  "defaultValue": "false",
12
37
  "description": "Weld the children into one control — antd Space.Compact (v32 folded `SpaceCompact` in here). Each child gets its own flex-item wrapper, inner corner radii are zeroed and the shared border collapses to one hairline; each child keeps its own focus ring, name and `size`. `direction` picks the axis (\"row\" default, \"col\"); `gap`/`wrap`/`pad` and the other layout knobs do not apply (a seam has no gap). Named (aria-label/-labelledby, e.g. by a wrapping FormField) it becomes role=\"group\".",
@@ -35,9 +60,9 @@
35
60
  "type": "GapProp"
36
61
  },
37
62
  {
38
- "description": "Lightweight surface, without Card structure.",
63
+ "description": "Lightweight surface, without Card structure. Felt is a themeable textured material with scoped high-contrast ink and focus roles; etched is a transparent outlined region.",
39
64
  "name": "surface",
40
- "type": "\"muted\" | \"popover\" | \"warning\""
65
+ "type": "\"muted\" | \"popover\" | \"warning\" | \"felt\" | \"etched\""
41
66
  },
42
67
  {
43
68
  "description": "false prevents shrinking.",
@@ -100,7 +125,7 @@
100
125
  {
101
126
  "description": "CENTRE this box and CAP it at a page measure (--page-measure-narrow 42rem / -medium 48rem / -wide 72rem): margin-inline:auto + inline-size:100% + max-inline-size. THE public answer to \"full-bleed outside, measured column inside\" — a marketing <section> paints edge to edge and its inner Flex measure=\"wide\" holds the content on the page measure. Deliberately NOT on PageContainer: that owns page padding and a header/toolbar/footer scaffold, so a full-bleed page cannot consume it, and the refusal left the centred column owned by nobody — three showcases each hand-wrote the same four declarations (gh#839). It adds NO gutter: the page inset is pad={{ inline: 6 }}, and one band with two padding owners drifts. A MAX, so nothing binds below the cap at 390px. An explicit `width` wins. Do not give a READING column \"wide\" — prose stays narrow/medium, which bracket Bringhurst's 45-75 characters. Omitted emits no attribute at all.",
102
127
  "name": "measure",
103
- "type": "\"narrow\" | \"medium\" | \"wide\""
128
+ "type": "\"narrow\" | \"medium\" | \"wide\" | \"card\" | \"card-compact\""
104
129
  },
105
130
  {
106
131
  "description": "Cross-axis alignment, emitted as a data attribute for the layout CSS.",
@@ -0,0 +1,119 @@
1
+ {
2
+ "example": "<RadarChart data={profile} categoryKey=\"axis\" valueKey=\"value\" valueMax={3} valueTicks={[1,2,3]} label={t(\"profile.title\")} />",
3
+ "group": "data-display",
4
+ "importPath": "@godxjp/ui/charts/radar-chart",
5
+ "name": "RadarChart",
6
+ "props": [
7
+ {
8
+ "description": "Three to six same-unit axes; missing, negative or nonfinite values invalidate the whole plot.",
9
+ "name": "data",
10
+ "required": true,
11
+ "type": "ChartDatum[]"
12
+ },
13
+ {
14
+ "description": "Key for already-translated axis labels; full names remain in the accessible data summary.",
15
+ "name": "categoryKey",
16
+ "required": true,
17
+ "type": "string"
18
+ },
19
+ {
20
+ "description": "Key for finite numeric axis values.",
21
+ "name": "valueKey",
22
+ "required": true,
23
+ "type": "string"
24
+ },
25
+ {
26
+ "description": "Strictly positive common scale ceiling; zero baseline is fixed.",
27
+ "name": "valueMax",
28
+ "required": true,
29
+ "type": "number"
30
+ },
31
+ {
32
+ "description": "Optional positive scale ticks within the ceiling, e.g. [1,2,3] for an ordinal rubric.",
33
+ "name": "valueTicks",
34
+ "required": false,
35
+ "type": "number[]"
36
+ },
37
+ {
38
+ "description": "Accessible figure name.",
39
+ "name": "label",
40
+ "required": true,
41
+ "type": "ReactNode"
42
+ },
43
+ {
44
+ "description": "Show the caption; false retains the accessible name.",
45
+ "name": "showCaption",
46
+ "required": false,
47
+ "type": "boolean"
48
+ },
49
+ {
50
+ "description": "Explain units, normalization and provenance.",
51
+ "name": "description",
52
+ "required": false,
53
+ "type": "ReactNode"
54
+ },
55
+ {
56
+ "description": "Shared chart canvas height tier.",
57
+ "name": "size",
58
+ "required": false,
59
+ "type": "\"xs\" | \"sm\" | \"md\" | \"lg\""
60
+ },
61
+ {
62
+ "description": "Locale-aware number options; defaults preserve up to 21 significant digits.",
63
+ "name": "numberFormat",
64
+ "required": false,
65
+ "type": "Intl.NumberFormatOptions"
66
+ },
67
+ {
68
+ "description": "Message for incomplete or invalid data.",
69
+ "name": "emptyMessage",
70
+ "required": false,
71
+ "type": "ReactNode"
72
+ },
73
+ {
74
+ "description": "Visible exact-value table or legend beneath the plot.",
75
+ "name": "footer",
76
+ "required": false,
77
+ "type": "ReactNode"
78
+ },
79
+ {
80
+ "description": "Optional class.",
81
+ "name": "className",
82
+ "required": false,
83
+ "type": "string"
84
+ },
85
+ {
86
+ "description": "Stable figure identifier.",
87
+ "name": "id",
88
+ "required": false,
89
+ "type": "string"
90
+ },
91
+ {
92
+ "description": "Figure ref.",
93
+ "name": "ref",
94
+ "required": false,
95
+ "type": "React.Ref<HTMLElement>"
96
+ }
97
+ ],
98
+ "related": [
99
+ "BarChart — exact category comparison.",
100
+ "PieChart — part-to-whole breakdown."
101
+ ],
102
+ "rules": [
103
+ 21,
104
+ 23,
105
+ 44,
106
+ 45
107
+ ],
108
+ "storyPath": "charts/radar-chart.tsx",
109
+ "tagline": "Dependency-free quantitative radar/spider profile with 3–6 axes and an explicit shared zero-based scale. Missing or out-of-domain values are not zero-filled. Not an inferred quality score.",
110
+ "usage": [
111
+ "DO use same-unit axes with a disclosed common zero baseline and positive ceiling; invalid data renders the empty state.",
112
+ "DO retain a visible exact-value table in the footer where users compare values; the accessible summary always retains exact localized values.",
113
+ "DO theme grid, geometry and measured two-line axis labels through --radar-chart-* tokens. Full labels remain in SVG titles and the accessible summary."
114
+ ],
115
+ "useCases": [
116
+ "Same-unit operational capacity profiles.",
117
+ "Disclosed ordinal assessment rubrics without inferred scores."
118
+ ]
119
+ }
@@ -950,6 +950,11 @@
950
950
  "name": "BarChart",
951
951
  "tagline": "Compare a value across categories — grouped or `stacked`, vertical or `horizontal`, with localized ticks/tooltips and a built-in text alternative."
952
952
  },
953
+ {
954
+ "group": "data-display",
955
+ "name": "RadarChart",
956
+ "tagline": "Dependency-free quantitative radar/spider profile with 3–6 axes and an explicit shared zero-based scale."
957
+ },
953
958
  {
954
959
  "group": "data-display",
955
960
  "name": "CompactBarTrend",
@@ -2967,6 +2967,31 @@
2967
2967
  "importPath": "@godxjp/ui/layout",
2968
2968
  "name": "Flex",
2969
2969
  "props": [
2970
+ {
2971
+ "description": "Measure actual top and fit remaining visual viewport; observes resize and scroll.",
2972
+ "name": "viewport",
2973
+ "type": "boolean"
2974
+ },
2975
+ {
2976
+ "description": "Equal flexible region with zero block and inline minimum.",
2977
+ "name": "basis",
2978
+ "type": "\"equal\""
2979
+ },
2980
+ {
2981
+ "description": "Internal scroll ownership without document growth.",
2982
+ "name": "overflow",
2983
+ "type": "\"hidden\" | \"auto\" | \"scroll-x\" | \"scroll-y\""
2984
+ },
2985
+ {
2986
+ "description": "Declarative orientation, never infers an action.",
2987
+ "name": "rotate",
2988
+ "type": "0 | 90 | 180 | 270"
2989
+ },
2990
+ {
2991
+ "description": "Orientation transition only; reduced motion is immediate.",
2992
+ "name": "animated",
2993
+ "type": "boolean"
2994
+ },
2970
2995
  {
2971
2996
  "defaultValue": "false",
2972
2997
  "description": "Weld the children into one control — antd Space.Compact (v32 folded `SpaceCompact` in here). Each child gets its own flex-item wrapper, inner corner radii are zeroed and the shared border collapses to one hairline; each child keeps its own focus ring, name and `size`. `direction` picks the axis (\"row\" default, \"col\"); `gap`/`wrap`/`pad` and the other layout knobs do not apply (a seam has no gap). Named (aria-label/-labelledby, e.g. by a wrapping FormField) it becomes role=\"group\".",
@@ -2995,9 +3020,9 @@
2995
3020
  "type": "GapProp"
2996
3021
  },
2997
3022
  {
2998
- "description": "Lightweight surface, without Card structure.",
3023
+ "description": "Lightweight surface, without Card structure. Felt is a themeable textured material with scoped high-contrast ink and focus roles; etched is a transparent outlined region.",
2999
3024
  "name": "surface",
3000
- "type": "\"muted\" | \"popover\" | \"warning\""
3025
+ "type": "\"muted\" | \"popover\" | \"warning\" | \"felt\" | \"etched\""
3001
3026
  },
3002
3027
  {
3003
3028
  "description": "false prevents shrinking.",
@@ -3060,7 +3085,7 @@
3060
3085
  {
3061
3086
  "description": "CENTRE this box and CAP it at a page measure (--page-measure-narrow 42rem / -medium 48rem / -wide 72rem): margin-inline:auto + inline-size:100% + max-inline-size. THE public answer to \"full-bleed outside, measured column inside\" — a marketing <section> paints edge to edge and its inner Flex measure=\"wide\" holds the content on the page measure. Deliberately NOT on PageContainer: that owns page padding and a header/toolbar/footer scaffold, so a full-bleed page cannot consume it, and the refusal left the centred column owned by nobody — three showcases each hand-wrote the same four declarations (gh#839). It adds NO gutter: the page inset is pad={{ inline: 6 }}, and one band with two padding owners drifts. A MAX, so nothing binds below the cap at 390px. An explicit `width` wins. Do not give a READING column \"wide\" — prose stays narrow/medium, which bracket Bringhurst's 45-75 characters. Omitted emits no attribute at all.",
3062
3087
  "name": "measure",
3063
- "type": "\"narrow\" | \"medium\" | \"wide\""
3088
+ "type": "\"narrow\" | \"medium\" | \"wide\" | \"card\" | \"card-compact\""
3064
3089
  },
3065
3090
  {
3066
3091
  "description": "Cross-axis alignment, emitted as a data attribute for the layout CSS.",
@@ -15997,6 +16022,125 @@
15997
16022
  "Ranking with long labels (horizontal)."
15998
16023
  ]
15999
16024
  },
16025
+ {
16026
+ "example": "<RadarChart data={profile} categoryKey=\"axis\" valueKey=\"value\" valueMax={3} valueTicks={[1,2,3]} label={t(\"profile.title\")} />",
16027
+ "group": "data-display",
16028
+ "importPath": "@godxjp/ui/charts/radar-chart",
16029
+ "name": "RadarChart",
16030
+ "props": [
16031
+ {
16032
+ "description": "Three to six same-unit axes; missing, negative or nonfinite values invalidate the whole plot.",
16033
+ "name": "data",
16034
+ "required": true,
16035
+ "type": "ChartDatum[]"
16036
+ },
16037
+ {
16038
+ "description": "Key for already-translated axis labels; full names remain in the accessible data summary.",
16039
+ "name": "categoryKey",
16040
+ "required": true,
16041
+ "type": "string"
16042
+ },
16043
+ {
16044
+ "description": "Key for finite numeric axis values.",
16045
+ "name": "valueKey",
16046
+ "required": true,
16047
+ "type": "string"
16048
+ },
16049
+ {
16050
+ "description": "Strictly positive common scale ceiling; zero baseline is fixed.",
16051
+ "name": "valueMax",
16052
+ "required": true,
16053
+ "type": "number"
16054
+ },
16055
+ {
16056
+ "description": "Optional positive scale ticks within the ceiling, e.g. [1,2,3] for an ordinal rubric.",
16057
+ "name": "valueTicks",
16058
+ "required": false,
16059
+ "type": "number[]"
16060
+ },
16061
+ {
16062
+ "description": "Accessible figure name.",
16063
+ "name": "label",
16064
+ "required": true,
16065
+ "type": "ReactNode"
16066
+ },
16067
+ {
16068
+ "description": "Show the caption; false retains the accessible name.",
16069
+ "name": "showCaption",
16070
+ "required": false,
16071
+ "type": "boolean"
16072
+ },
16073
+ {
16074
+ "description": "Explain units, normalization and provenance.",
16075
+ "name": "description",
16076
+ "required": false,
16077
+ "type": "ReactNode"
16078
+ },
16079
+ {
16080
+ "description": "Shared chart canvas height tier.",
16081
+ "name": "size",
16082
+ "required": false,
16083
+ "type": "\"xs\" | \"sm\" | \"md\" | \"lg\""
16084
+ },
16085
+ {
16086
+ "description": "Locale-aware number options; defaults preserve up to 21 significant digits.",
16087
+ "name": "numberFormat",
16088
+ "required": false,
16089
+ "type": "Intl.NumberFormatOptions"
16090
+ },
16091
+ {
16092
+ "description": "Message for incomplete or invalid data.",
16093
+ "name": "emptyMessage",
16094
+ "required": false,
16095
+ "type": "ReactNode"
16096
+ },
16097
+ {
16098
+ "description": "Visible exact-value table or legend beneath the plot.",
16099
+ "name": "footer",
16100
+ "required": false,
16101
+ "type": "ReactNode"
16102
+ },
16103
+ {
16104
+ "description": "Optional class.",
16105
+ "name": "className",
16106
+ "required": false,
16107
+ "type": "string"
16108
+ },
16109
+ {
16110
+ "description": "Stable figure identifier.",
16111
+ "name": "id",
16112
+ "required": false,
16113
+ "type": "string"
16114
+ },
16115
+ {
16116
+ "description": "Figure ref.",
16117
+ "name": "ref",
16118
+ "required": false,
16119
+ "type": "React.Ref<HTMLElement>"
16120
+ }
16121
+ ],
16122
+ "related": [
16123
+ "BarChart — exact category comparison.",
16124
+ "PieChart — part-to-whole breakdown."
16125
+ ],
16126
+ "rules": [
16127
+ 21,
16128
+ 23,
16129
+ 44,
16130
+ 45
16131
+ ],
16132
+ "storyPath": "charts/radar-chart.tsx",
16133
+ "tagline": "Dependency-free quantitative radar/spider profile with 3–6 axes and an explicit shared zero-based scale. Missing or out-of-domain values are not zero-filled. Not an inferred quality score.",
16134
+ "usage": [
16135
+ "DO use same-unit axes with a disclosed common zero baseline and positive ceiling; invalid data renders the empty state.",
16136
+ "DO retain a visible exact-value table in the footer where users compare values; the accessible summary always retains exact localized values.",
16137
+ "DO theme grid, geometry and measured two-line axis labels through --radar-chart-* tokens. Full labels remain in SVG titles and the accessible summary."
16138
+ ],
16139
+ "useCases": [
16140
+ "Same-unit operational capacity profiles.",
16141
+ "Disclosed ordinal assessment rubrics without inferred scores."
16142
+ ]
16143
+ },
16000
16144
  {
16001
16145
  "example": "import { CompactBarTrend } from \"@godxjp/ui/charts/compact-bar-trend\";\nimport { Text } from \"@godxjp/ui/general\";\n\n<CompactBarTrend\n label={t(\"dashboard.newOrganizations7d\")}\n description={t(\"dashboard.newOrganizationsHint\")}\n data={trend}\n categoryKey=\"date\"\n valueKey=\"count\"\n emphasizedIndex={-1}\n size=\"xs\"\n footer={<Text size=\"xs\" tone=\"muted\">{t(\"dashboard.lastUpdated\", { at: new Date().toISOString() })}</Text>}\n/>",
16002
16146
  "group": "data-display",
package/agent/index.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "counts": {
3
3
  "anti-ai-tells": 35,
4
- "components": 212,
4
+ "components": 213,
5
5
  "patterns": 29,
6
6
  "rules": 44,
7
- "tokens": 3203,
7
+ "tokens": 3236,
8
8
  "vocabulary": 16
9
9
  },
10
10
  "design": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/DESIGN.md",
@@ -16,7 +16,7 @@
16
16
  },
17
17
  {
18
18
  "file": "components-index.json",
19
- "note": "47 KB — name + group + tagline for all 212. FETCH THIS FIRST, then fetch only the components you chose.",
19
+ "note": "47 KB — name + group + tagline for all 213. FETCH THIS FIRST, then fetch only the components you chose.",
20
20
  "url": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json"
21
21
  },
22
22
  {
@@ -54,19 +54,19 @@
54
54
  "note": "Pin to the tag that matches the @godxjp/ui version you installed. A catalog newer than your package describes props you do not have; older, and it hides props you do.",
55
55
  "read": {
56
56
  "live": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/index.json",
57
- "pinned": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/v33.25.2/agent/index.json"
57
+ "pinned": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/v33.26.0/agent/index.json"
58
58
  },
59
59
  "source": "mcp/src/data — the same data @godxjp/ui-mcp serves — plus the foundation and semantic token tiers, read from src/tokens/*.css",
60
60
  "start": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/START-HERE.md",
61
61
  "tokenTiers": {
62
62
  "component": "per-part knobs, --{component}-{part}-{property}; usually leave these alone",
63
63
  "counts": {
64
- "component": 2867,
64
+ "component": 2900,
65
65
  "foundation": 223,
66
66
  "semantic": 113
67
67
  },
68
68
  "foundation": "the seeds a consumer is invited to set — --primary, --background, --radius",
69
69
  "semantic": "named roles that follow the seeds — --ring, --text-link, --overlay-background"
70
70
  },
71
- "version": "33.25.2"
71
+ "version": "33.26.0"
72
72
  }
package/agent/llms.txt CHANGED
@@ -1,10 +1,10 @@
1
1
  # @godxjp/ui
2
2
 
3
- > A Japanese-enterprise React design system: 212 components, 3203 design tokens,
4
- > 44 cardinal rules. This file is the entry point for AI agents. Catalog version 33.25.2.
3
+ > A Japanese-enterprise React design system: 213 components, 3236 design tokens,
4
+ > 44 cardinal rules. This file is the entry point for AI agents. Catalog version 33.26.0.
5
5
 
6
6
  If your client can run a process, do not read these files — run the MCP server instead
7
- (`npx @godxjp/ui-mcp@33.25.2`). It is searchable and version-locked. These files exist for agents
7
+ (`npx @godxjp/ui-mcp@33.26.0`). It is searchable and version-locked. These files exist for agents
8
8
  that can only fetch URLs.
9
9
 
10
10
  ## Start
@@ -16,10 +16,10 @@ that can only fetch URLs.
16
16
  ## Catalog
17
17
 
18
18
  - [patterns-index.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/patterns-index.json): 29 whole-task patterns (name, tagline, tags). Start here when the task is a TASK — "build a settings page" — then fetch `patterns/<name>.json` for complete code.
19
- - [components-index.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json): 47 KB — all 212 components as name, group, tagline, plus `absorbed`: the names that do NOT exist and map to it (`Combobox` → `Select`).
19
+ - [components-index.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json): 47 KB — all 213 components as name, group, tagline, plus `absorbed`: the names that do NOT exist and map to it (`Combobox` → `Select`).
20
20
  - [components/&lt;Name&gt;.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components/Select.json): one file per component (1 KB–38 KB, median 5 KB). Read the index, then fetch only the ones you chose — this is the selective route, and the reason you do not need the blob.
21
21
  - [components.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components.json): 1.4 MB — every entry in one file. Most URL fetchers truncate a response this size without saying so; prefer the per-component files.
22
- - [tokens.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/tokens.json): every design token with its value, the reason it exists, and its `tier` — 223 `foundation` seeds (`--primary`, `--background`, `--radius`: set these when you are handed a brand), 113 `semantic` roles, 2867 `component` knobs.
22
+ - [tokens.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/tokens.json): every design token with its value, the reason it exists, and its `tier` — 223 `foundation` seeds (`--primary`, `--background`, `--radius`: set these when you are handed a brand), 113 `semantic` roles, 2900 `component` knobs.
23
23
  - [vocabulary.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/vocabulary.json): the controlled prop vocabulary — which prop name means what, across every component.
24
24
  - [rules.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/rules.json): 44 cardinal rules.
25
25
  - [anti-ai-tells.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/anti-ai-tells.json): 35 shapes that make generated UI look generated, each with its fix.
@@ -27,7 +27,7 @@ that can only fetch URLs.
27
27
  ## Pinning
28
28
 
29
29
  Every URL above tracks `main`. To pin to the release a project actually installed, swap `main` for
30
- the tag: `.../godx-jp/godxjp-ui/v33.25.2/agent/...`. A catalog that does not match the installed
30
+ the tag: `.../godx-jp/godxjp-ui/v33.26.0/agent/...`. A catalog that does not match the installed
31
31
  package describes props that are absent, or hides props that are present, and says nothing either way.
32
32
 
33
33
  Pinned catalogs only exist for releases whose tag actually contains `agent/`. If `…/v<version>/agent/index.json` returns 404, that release predates this catalog: read `…/main/…` instead and compare `index.json` → `version` against the package you have, so you at least know which way it drifted.