@godxjp/ui 33.6.0 → 33.6.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.
- package/agent/START-HERE.md +1 -1
- package/agent/index.json +2 -2
- package/agent/llms.txt +3 -3
- package/dist/contracts/measurement.json +1 -1
- package/dist/styles/layers.json +1 -1
- package/package.json +2 -2
- package/scripts/ui-audit.mjs +22 -2
package/agent/START-HERE.md
CHANGED
|
@@ -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.6.
|
|
6
|
+
**This catalog describes `@godxjp/ui` 33.6.1.** 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.
|
package/agent/index.json
CHANGED
|
@@ -54,7 +54,7 @@
|
|
|
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.6.
|
|
57
|
+
"pinned": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/v33.6.1/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",
|
|
@@ -68,5 +68,5 @@
|
|
|
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.6.
|
|
71
|
+
"version": "33.6.1"
|
|
72
72
|
}
|
package/agent/llms.txt
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# @godxjp/ui
|
|
2
2
|
|
|
3
3
|
> A Japanese-enterprise React design system: 166 components, 2232 design tokens,
|
|
4
|
-
> 44 cardinal rules. This file is the entry point for AI agents. Catalog version 33.6.
|
|
4
|
+
> 44 cardinal rules. This file is the entry point for AI agents. Catalog version 33.6.1.
|
|
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.6.
|
|
7
|
+
(`npx @godxjp/ui-mcp@33.6.1`). It is searchable and version-locked. These files exist for agents
|
|
8
8
|
that can only fetch URLs.
|
|
9
9
|
|
|
10
10
|
## Start
|
|
@@ -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.6.
|
|
30
|
+
the tag: `.../godx-jp/godxjp-ui/v33.6.1/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.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "AUTO-GENERATED by scripts/gen-measurement-contract.mjs — do not edit. Read this instead of guessing: docs/MEASUREMENT-CONTRACT.md.",
|
|
3
|
-
"version": "33.6.
|
|
3
|
+
"version": "33.6.1",
|
|
4
4
|
"targetSize": {
|
|
5
5
|
"standard": "WCAG 2.2 SC 2.5.8 Target Size (Minimum), level AA — 24×24 CSS px",
|
|
6
6
|
"min": 24,
|
package/dist/styles/layers.json
CHANGED
package/package.json
CHANGED
package/scripts/ui-audit.mjs
CHANGED
|
@@ -1839,9 +1839,27 @@ const NO_OP_SUBMIT =
|
|
|
1839
1839
|
* create sub-component with no PageContainer of its own still pairs with the page's list) —
|
|
1840
1840
|
* neither inside an overlay, the list not inside the
|
|
1841
1841
|
* Form (an editor with a line-items Table is a form, not a list page), and the Form actually
|
|
1842
|
-
* submitting (see NO_OP_SUBMIT)
|
|
1842
|
+
* submitting (see NO_OP_SUBMIT), and not the page's own editor: a Form whose `id` a Button
|
|
1843
|
+
* submits from elsewhere (`<Button type="submit" form={FORM_ID}>` in the header, the page-editor
|
|
1844
|
+
* exemplar's shape) IS the page, so a read-only list beside it is part of that editor — gino-cloud
|
|
1845
|
+
* 実習終了 listed the filings the chosen reason triggers next to its form. One finding per such Form.
|
|
1843
1846
|
*/
|
|
1844
1847
|
function* formOnListPageMatches(source) {
|
|
1848
|
+
// The tag's OWN `name=` value (topLevelAttrs blanks nested braces but keeps offsets): a string
|
|
1849
|
+
// literal or a bare identifier, normalized so `form={FORM_ID}` pairs with `id={FORM_ID}`.
|
|
1850
|
+
const attrValue = (openTag, name) => {
|
|
1851
|
+
const at = new RegExp(`\\b${name}\\s*=\\s*`).exec(topLevelAttrs(openTag));
|
|
1852
|
+
if (!at) return null;
|
|
1853
|
+
const lit = /^(?:"([^"]*)"|'([^']*)'|\{\s*([\w.$]+)\s*\})/.exec(
|
|
1854
|
+
openTag.slice(at.index + at[0].length),
|
|
1855
|
+
);
|
|
1856
|
+
return lit ? (lit[1] ?? lit[2] ?? `{${lit[3]}}`) : null;
|
|
1857
|
+
};
|
|
1858
|
+
const submitTargets = new Set();
|
|
1859
|
+
for (const { tag, openTag } of jsxElements(source)) {
|
|
1860
|
+
const target = tag === "Button" ? attrValue(openTag, "form") : null;
|
|
1861
|
+
if (target !== null) submitTargets.add(target);
|
|
1862
|
+
}
|
|
1845
1863
|
const opened = []; // Forms whose children frame has not been seen yet
|
|
1846
1864
|
const byFrame = new Map(); // a Form's children-frame id → { index, openTag, scope, skip, fields }
|
|
1847
1865
|
const listScopes = new Set(); // PageContainer children-frame ids (or "file") holding a list
|
|
@@ -1865,7 +1883,9 @@ function* formOnListPageMatches(source) {
|
|
|
1865
1883
|
// `role="search"` marks a 検索条件フォーム: a submitting SEARCH over the list, not a create
|
|
1866
1884
|
// form inlined beside it (the same shape SearchForm renders).
|
|
1867
1885
|
const search = /\brole\s*=\s*\{?\s*["']search["']/.test(attrs);
|
|
1868
|
-
const
|
|
1886
|
+
const id = attrValue(openTag, "id");
|
|
1887
|
+
const editor = id !== null && submitTargets.has(id);
|
|
1888
|
+
const skip = overlay || !submits || search || editor || NO_OP_SUBMIT.test(openTag);
|
|
1869
1889
|
opened.push({ index, openTag, scope, skip, fields: 0 });
|
|
1870
1890
|
}
|
|
1871
1891
|
} else if (tag === "FormField") {
|