@godxjp/ui 31.10.3 → 31.11.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.
@@ -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` 31.10.3.** If the project you are editing has a different
6
+ **This catalog describes `@godxjp/ui` 31.11.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.
@@ -47,7 +47,7 @@ Then ask it: `search_components`, `get_component`, `get_tokens`, `get_rule`, `li
47
47
  task is a task** — "build a settings page", "confirm a destructive delete", "a list page with
48
48
  filters" — start HERE, not at the components. Then fetch `patterns/<name>.json` for complete,
49
49
  copy-paste-ready code. A component index answers "does X exist"; it cannot answer "build Y".
50
- 1. `components-index.json` — 47 KB, all 177 components as name + group +
50
+ 1. `components-index.json` — 48 KB, all 178 components as name + group +
51
51
  tagline. Read this when you already know the SHAPE you need. Each entry may carry `absorbed`:
52
52
  names that **do not exist** and map to it — `Combobox`, `Autocomplete`, `CountrySelect` and
53
53
  `SearchSelect` are all `Select`. If you are about to hand-roll something, search this field
@@ -56,10 +56,10 @@ Then ask it: `search_components`, `get_component`, `get_tokens`, `get_rule`, `li
56
56
  its `importPath`, and its examples. Fetch only the handful you picked in step 1.
57
57
  3. `rules.json` — 50 cardinal rules. The ones about raw HTML and hardcoded colour are not
58
58
  style advice.
59
- 4. `tokens.json` — 2104 design tokens, each tagged with its `tier`. **If you were handed a
59
+ 4. `tokens.json` — 2116 design tokens, each tagged with its `tier`. **If you were handed a
60
60
  brand, read the 211 `foundation` entries first** — `--primary`, `--background`,
61
61
  `--radius`, `--font-size-base` are the handful everything else derives from. The
62
- 1789 `component` entries are per-part knobs; reach for one only when a role is
62
+ 1801 `component` entries are per-part knobs; reach for one only when a role is
63
63
  right everywhere except one component.
64
64
  5. `anti-ai-tells.json` — 26 shapes that make generated UI look generated, each with the
65
65
  fix. Read before you reach for a gradient hero or a wall of coloured chips.
@@ -145,7 +145,7 @@ has stopped following the brand.
145
145
  |---|---|---|---|
146
146
  | `foundation` | 211 | the seeds — `--primary`, `--background`, `--foreground`, `--radius`, `--font-size-base`, `--shadow-color`. Everything below is derived from these | **yes — this is the main road.** Handed a brand colour, this is where it goes: `:root { --primary: <H> <S>% <L>%; }` (HSL components, no `hsl()` wrapper) |
147
147
  | `semantic` | 104 | 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 |
148
- | `component` | 1789 | 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` |
148
+ | `component` | 1801 | 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` |
149
149
 
150
150
  A token whose `value` is `initial` is not empty and not broken: `initial` is the guaranteed-invalid
151
151
  value, so the real default is computed where the element paints it. Set it and yours wins.
@@ -0,0 +1,87 @@
1
+ {
2
+ "docPath": "data-display/image.tsx",
3
+ "example": "import { Image, ImagePreviewGroup, Prose } from \"@godxjp/ui/data-display\";\n\n<ImagePreviewGroup>\n <Prose>\n <p><Image src=\"/shots/before.png\" alt=\"Before the fix\" width={320} /></p>\n <p><Image src=\"/shots/after.png\" alt=\"After the fix\" width={320} /></p>\n <p><Image src=\"/logo.svg\" alt=\"\" width={24} preview={false} /></p>\n </Prose>\n</ImagePreviewGroup>",
4
+ "group": "data-display",
5
+ "importPath": "@godxjp/ui/data-display",
6
+ "name": "Image",
7
+ "props": [
8
+ {
9
+ "description": "Image URL.",
10
+ "name": "src",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "description": "Required (as on Thumbnail). Also names the trigger \"Preview: {alt}\". Pass \"\" for a decorative picture.",
15
+ "name": "alt",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "description": "antd shape. `false` = a plain, non-clickable picture that also leaves its group. `src` shows a different (larger) file in the preview. Defaults: scaleStep 0.5, minScale 1, maxScale 50.",
20
+ "name": "preview",
21
+ "type": "boolean | { visible?, onVisibleChange?(visible, prevVisible), src?, mask?, scaleStep?, minScale?, maxScale? }"
22
+ },
23
+ {
24
+ "description": "Shown when `src` fails. A failed picture does not open a preview (antd).",
25
+ "name": "fallback",
26
+ "type": "string"
27
+ },
28
+ {
29
+ "description": "Painted over the frame until the picture loads; `true` = a muted block.",
30
+ "name": "placeholder",
31
+ "type": "ReactNode | boolean"
32
+ },
33
+ {
34
+ "description": "Native img attributes.",
35
+ "name": "width / height",
36
+ "type": "number | string"
37
+ },
38
+ {
39
+ "description": "Class on the wrapper (the button).",
40
+ "name": "className",
41
+ "type": "string"
42
+ },
43
+ {
44
+ "description": "Explicit gallery instead of the Images rendered under the group. A clicked child opens at the item with its own src.",
45
+ "name": "ImagePreviewGroup.items",
46
+ "type": "(string | { src, alt? })[]"
47
+ },
48
+ {
49
+ "description": "antd shape and argument order. `false` turns every Image under the group into a plain picture.",
50
+ "name": "ImagePreviewGroup.preview",
51
+ "type": "boolean | { current?, onChange?(current, prevCurrent), visible?, onVisibleChange?(visible, prevVisible), scaleStep?, minScale?, maxScale? }"
52
+ },
53
+ {
54
+ "description": "Shown in the preview for a picture that fails to load.",
55
+ "name": "ImagePreviewGroup.fallback",
56
+ "type": "string"
57
+ }
58
+ ],
59
+ "related": [
60
+ "Thumbnail — a framed picture at a fixed height, with no preview.",
61
+ "Prose — the Markdown body the group usually wraps.",
62
+ "Carousel — slides on the page itself, not a full-viewport preview."
63
+ ],
64
+ "rules": [
65
+ 2,
66
+ 6,
67
+ 23,
68
+ 44,
69
+ 45
70
+ ],
71
+ "storyPath": "data-display/Image.stories.tsx",
72
+ "subParts": [
73
+ "ImagePreviewGroup"
74
+ ],
75
+ "tagline": "antd `Image` + `Image.PreviewGroup`: a picture that opens in a full-viewport preview (zoom in/out by button, wheel or double-click; rotate; flip; reset; drag to pan). Inside an `ImagePreviewGroup` every Image at any depth joins one gallery in document order — prev/next buttons, ←/→, a \"2 / 3\" counter. Esc closes; focus is trapped and returned to the picture.",
76
+ "usage": [
77
+ "DO wrap a rendered Markdown body in ImagePreviewGroup and map its `img` to `<Image>` — every screenshot of the article then pages in one preview, in reading order.",
78
+ "DO pass `preview={false}` for a logo or icon inside that body so it neither opens nor counts.",
79
+ "DO use `Image.PreviewGroup` or `ImagePreviewGroup` — the same component.",
80
+ "DON'T hand-roll a lightbox from Dialog + Carousel: it has no zoom, no arrow keys and a 32rem box. That composition is what this replaces.",
81
+ "DON'T nest an Image inside a link or button: the thumbnail is itself a button."
82
+ ],
83
+ "useCases": [
84
+ "Screenshots in a test result or wiki page that the reader opens large and pages through.",
85
+ "A product or evidence gallery with zoom and rotate."
86
+ ]
87
+ }
@@ -891,6 +891,11 @@
891
891
  "name": "OrgChart",
892
892
  "tagline": "An organization chart: boxes (avatar, name, title, extra) joined by CSS connector lines, top-down; `agent` nodes are dashed. Scrolls horizontally in its own named region when wider than its container, and turns into an indented Tree when the CONTAINER is under 40rem. APG tree view (tree/treeitem/group, roving tabindex, arrow keys)."
893
893
  },
894
+ {
895
+ "group": "data-display",
896
+ "name": "Image",
897
+ "tagline": "antd `Image` + `Image.PreviewGroup`: a picture that opens in a full-viewport preview (zoom in/out by button, wheel or double-click; rotate; flip; reset; drag to pan). Inside an `ImagePreviewGroup` every Image at any depth joins one gallery in document order — prev/next buttons, ←/→, a \"2 / 3\" counter. Esc closes; focus is trapped and returned to the picture."
898
+ },
894
899
  {
895
900
  "group": "data-entry",
896
901
  "name": "Attachments",
@@ -15769,6 +15769,93 @@
15769
15769
  "Reporting lines on an admin screen, falling back to an indented list in a narrow panel or on a phone."
15770
15770
  ]
15771
15771
  },
15772
+ {
15773
+ "docPath": "data-display/image.tsx",
15774
+ "example": "import { Image, ImagePreviewGroup, Prose } from \"@godxjp/ui/data-display\";\n\n<ImagePreviewGroup>\n <Prose>\n <p><Image src=\"/shots/before.png\" alt=\"Before the fix\" width={320} /></p>\n <p><Image src=\"/shots/after.png\" alt=\"After the fix\" width={320} /></p>\n <p><Image src=\"/logo.svg\" alt=\"\" width={24} preview={false} /></p>\n </Prose>\n</ImagePreviewGroup>",
15775
+ "group": "data-display",
15776
+ "importPath": "@godxjp/ui/data-display",
15777
+ "name": "Image",
15778
+ "props": [
15779
+ {
15780
+ "description": "Image URL.",
15781
+ "name": "src",
15782
+ "type": "string"
15783
+ },
15784
+ {
15785
+ "description": "Required (as on Thumbnail). Also names the trigger \"Preview: {alt}\". Pass \"\" for a decorative picture.",
15786
+ "name": "alt",
15787
+ "type": "string"
15788
+ },
15789
+ {
15790
+ "description": "antd shape. `false` = a plain, non-clickable picture that also leaves its group. `src` shows a different (larger) file in the preview. Defaults: scaleStep 0.5, minScale 1, maxScale 50.",
15791
+ "name": "preview",
15792
+ "type": "boolean | { visible?, onVisibleChange?(visible, prevVisible), src?, mask?, scaleStep?, minScale?, maxScale? }"
15793
+ },
15794
+ {
15795
+ "description": "Shown when `src` fails. A failed picture does not open a preview (antd).",
15796
+ "name": "fallback",
15797
+ "type": "string"
15798
+ },
15799
+ {
15800
+ "description": "Painted over the frame until the picture loads; `true` = a muted block.",
15801
+ "name": "placeholder",
15802
+ "type": "ReactNode | boolean"
15803
+ },
15804
+ {
15805
+ "description": "Native img attributes.",
15806
+ "name": "width / height",
15807
+ "type": "number | string"
15808
+ },
15809
+ {
15810
+ "description": "Class on the wrapper (the button).",
15811
+ "name": "className",
15812
+ "type": "string"
15813
+ },
15814
+ {
15815
+ "description": "Explicit gallery instead of the Images rendered under the group. A clicked child opens at the item with its own src.",
15816
+ "name": "ImagePreviewGroup.items",
15817
+ "type": "(string | { src, alt? })[]"
15818
+ },
15819
+ {
15820
+ "description": "antd shape and argument order. `false` turns every Image under the group into a plain picture.",
15821
+ "name": "ImagePreviewGroup.preview",
15822
+ "type": "boolean | { current?, onChange?(current, prevCurrent), visible?, onVisibleChange?(visible, prevVisible), scaleStep?, minScale?, maxScale? }"
15823
+ },
15824
+ {
15825
+ "description": "Shown in the preview for a picture that fails to load.",
15826
+ "name": "ImagePreviewGroup.fallback",
15827
+ "type": "string"
15828
+ }
15829
+ ],
15830
+ "related": [
15831
+ "Thumbnail — a framed picture at a fixed height, with no preview.",
15832
+ "Prose — the Markdown body the group usually wraps.",
15833
+ "Carousel — slides on the page itself, not a full-viewport preview."
15834
+ ],
15835
+ "rules": [
15836
+ 2,
15837
+ 6,
15838
+ 23,
15839
+ 44,
15840
+ 45
15841
+ ],
15842
+ "storyPath": "data-display/Image.stories.tsx",
15843
+ "subParts": [
15844
+ "ImagePreviewGroup"
15845
+ ],
15846
+ "tagline": "antd `Image` + `Image.PreviewGroup`: a picture that opens in a full-viewport preview (zoom in/out by button, wheel or double-click; rotate; flip; reset; drag to pan). Inside an `ImagePreviewGroup` every Image at any depth joins one gallery in document order — prev/next buttons, ←/→, a \"2 / 3\" counter. Esc closes; focus is trapped and returned to the picture.",
15847
+ "usage": [
15848
+ "DO wrap a rendered Markdown body in ImagePreviewGroup and map its `img` to `<Image>` — every screenshot of the article then pages in one preview, in reading order.",
15849
+ "DO pass `preview={false}` for a logo or icon inside that body so it neither opens nor counts.",
15850
+ "DO use `Image.PreviewGroup` or `ImagePreviewGroup` — the same component.",
15851
+ "DON'T hand-roll a lightbox from Dialog + Carousel: it has no zoom, no arrow keys and a 32rem box. That composition is what this replaces.",
15852
+ "DON'T nest an Image inside a link or button: the thumbnail is itself a button."
15853
+ ],
15854
+ "useCases": [
15855
+ "Screenshots in a test result or wiki page that the reader opens large and pages through.",
15856
+ "A product or evidence gallery with zoom and rotate."
15857
+ ]
15858
+ },
15772
15859
  {
15773
15860
  "docPath": "data-entry/attachments.tsx",
15774
15861
  "example": "import { Attachments } from \"@godxjp/ui/data-entry\";\n\n<Attachments\n items={files}\n onChange={({ fileList }) => setFiles(fileList)}\n overflow=\"scrollX\"\n maxCount={5}\n/>",
package/agent/index.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "counts": {
3
3
  "anti-ai-tells": 26,
4
- "components": 177,
4
+ "components": 178,
5
5
  "patterns": 21,
6
6
  "rules": 50,
7
- "tokens": 2104,
7
+ "tokens": 2116,
8
8
  "vocabulary": 14
9
9
  },
10
10
  "files": [
11
11
  {
12
12
  "file": "components-index.json",
13
- "note": "47 KB — name + group + tagline for all 177. FETCH THIS FIRST, then fetch only the components you chose.",
13
+ "note": "48 KB — name + group + tagline for all 178. FETCH THIS FIRST, then fetch only the components you chose.",
14
14
  "url": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json"
15
15
  },
16
16
  {
@@ -48,19 +48,19 @@
48
48
  "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.",
49
49
  "read": {
50
50
  "live": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/index.json",
51
- "pinned": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/v31.10.3/agent/index.json"
51
+ "pinned": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/v31.11.0/agent/index.json"
52
52
  },
53
53
  "source": "mcp/src/data — the same data @godxjp/ui-mcp serves — plus the foundation and semantic token tiers, read from src/tokens/*.css",
54
54
  "start": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/START-HERE.md",
55
55
  "tokenTiers": {
56
56
  "component": "per-part knobs, --{component}-{part}-{property}; usually leave these alone",
57
57
  "counts": {
58
- "component": 1789,
58
+ "component": 1801,
59
59
  "foundation": 211,
60
60
  "semantic": 104
61
61
  },
62
62
  "foundation": "the seeds a consumer is invited to set — --primary, --background, --radius",
63
63
  "semantic": "named roles that follow the seeds — --ring, --text-link, --overlay-background"
64
64
  },
65
- "version": "31.10.3"
65
+ "version": "31.11.0"
66
66
  }
package/agent/llms.txt CHANGED
@@ -1,10 +1,10 @@
1
1
  # @godxjp/ui
2
2
 
3
- > A Japanese-enterprise React design system: 177 components, 2104 design tokens,
4
- > 50 cardinal rules. This file is the entry point for AI agents. Catalog version 31.10.3.
3
+ > A Japanese-enterprise React design system: 178 components, 2116 design tokens,
4
+ > 50 cardinal rules. This file is the entry point for AI agents. Catalog version 31.11.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@31.10.3`). It is searchable and version-locked. These files exist for agents
7
+ (`npx @godxjp/ui-mcp@31.11.0`). It is searchable and version-locked. These files exist for agents
8
8
  that can only fetch URLs.
9
9
 
10
10
  ## Start
@@ -15,10 +15,10 @@ that can only fetch URLs.
15
15
  ## Catalog
16
16
 
17
17
  - [patterns-index.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/patterns-index.json): 21 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.
18
- - [components-index.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json): 47 KB — all 177 components as name, group, tagline, plus `absorbed`: the names that do NOT exist and map to it (`Combobox` → `Select`).
18
+ - [components-index.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json): 48 KB — all 178 components as name, group, tagline, plus `absorbed`: the names that do NOT exist and map to it (`Combobox` → `Select`).
19
19
  - [components/&lt;Name&gt;.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components/Select.json): one file per component (1 KB–36 KB, median 6 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.
20
20
  - [components.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components.json): 1.2 MB — every entry in one file. Most URL fetchers truncate a response this size without saying so; prefer the per-component files.
21
- - [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` — 211 `foundation` seeds (`--primary`, `--background`, `--radius`: set these when you are handed a brand), 104 `semantic` roles, 1789 `component` knobs.
21
+ - [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` — 211 `foundation` seeds (`--primary`, `--background`, `--radius`: set these when you are handed a brand), 104 `semantic` roles, 1801 `component` knobs.
22
22
  - [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.
23
23
  - [rules.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/rules.json): 50 cardinal rules.
24
24
  - [anti-ai-tells.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/anti-ai-tells.json): 26 shapes that make generated UI look generated, each with its fix.
@@ -26,7 +26,7 @@ that can only fetch URLs.
26
26
  ## Pinning
27
27
 
28
28
  Every URL above tracks `main`. To pin to the release a project actually installed, swap `main` for
29
- the tag: `.../godx-jp/godxjp-ui/v31.10.3/agent/...`. A catalog that does not match the installed
29
+ the tag: `.../godx-jp/godxjp-ui/v31.11.0/agent/...`. A catalog that does not match the installed
30
30
  package describes props that are absent, or hides props that are present, and says nothing either way.
31
31
 
32
32
  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.
package/agent/tokens.json CHANGED
@@ -7409,6 +7409,78 @@
7409
7409
  "tier": "component",
7410
7410
  "value": "var(--space-4)"
7411
7411
  },
7412
+ {
7413
+ "description": "The hover/focus veil over the thumbnail. default = --overlay-background",
7414
+ "name": "--image-mask-background",
7415
+ "tier": "component",
7416
+ "value": "initial"
7417
+ },
7418
+ {
7419
+ "description": "default = hsl(var(--background))",
7420
+ "name": "--image-mask-foreground",
7421
+ "tier": "component",
7422
+ "value": "initial"
7423
+ },
7424
+ {
7425
+ "description": "IMAGE — a picture that opens large, and its full-viewport preview (`src/components/data-display/image.tsx`, antd `Image` + `Image.PreviewGroup`). The preview's scrim is the shared `--overlay-background` itself — antd's preview mask is its modal mask — so a brand that retunes every overlay's scrim retunes this one too. It is used whole, never as a share of a share (gh#886). ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\").",
7426
+ "name": "--image-mask-gap",
7427
+ "tier": "component",
7428
+ "value": "var(--space-1)"
7429
+ },
7430
+ {
7431
+ "description": "default = var(--radius)",
7432
+ "name": "--image-radius",
7433
+ "tier": "component",
7434
+ "value": "initial"
7435
+ },
7436
+ {
7437
+ "description": "The preview stage. default = --overlay-background, as antd's mask",
7438
+ "name": "--image-preview-background",
7439
+ "tier": "component",
7440
+ "value": "initial"
7441
+ },
7442
+ {
7443
+ "description": "default = hsl(var(--background))",
7444
+ "name": "--image-preview-foreground",
7445
+ "tier": "component",
7446
+ "value": "initial"
7447
+ },
7448
+ {
7449
+ "description": "IMAGE — a picture that opens large, and its full-viewport preview (`src/components/data-display/image.tsx`, antd `Image` + `Image.PreviewGroup`). The preview's scrim is the shared `--overlay-background` itself — antd's preview mask is its modal mask — so a brand that retunes every overlay's scrim retunes this one too. It is used whole, never as a share of a share (gh#886). ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\").",
7450
+ "name": "--image-preview-inset",
7451
+ "tier": "component",
7452
+ "value": "var(--space-4)"
7453
+ },
7454
+ {
7455
+ "description": "IMAGE — a picture that opens large, and its full-viewport preview (`src/components/data-display/image.tsx`, antd `Image` + `Image.PreviewGroup`). The preview's scrim is the shared `--overlay-background` itself — antd's preview mask is its modal mask — so a brand that retunes every overlay's scrim retunes this one too. It is used whole, never as a share of a share (gh#886). ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\").",
7456
+ "name": "--image-preview-gap",
7457
+ "tier": "component",
7458
+ "value": "var(--space-2)"
7459
+ },
7460
+ {
7461
+ "description": "Every round control on the stage (close, prev/next, tools). ≥ the 24px WCAG 2.5.8 floor.",
7462
+ "name": "--image-preview-button-size",
7463
+ "tier": "component",
7464
+ "value": "2.5rem"
7465
+ },
7466
+ {
7467
+ "description": "IMAGE — a picture that opens large, and its full-viewport preview (`src/components/data-display/image.tsx`, antd `Image` + `Image.PreviewGroup`). The preview's scrim is the shared `--overlay-background` itself — antd's preview mask is its modal mask — so a brand that retunes every overlay's scrim retunes this one too. It is used whole, never as a share of a share (gh#886). ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\").",
7468
+ "name": "--image-preview-button-background-alpha",
7469
+ "tier": "component",
7470
+ "value": "10%"
7471
+ },
7472
+ {
7473
+ "description": "IMAGE — a picture that opens large, and its full-viewport preview (`src/components/data-display/image.tsx`, antd `Image` + `Image.PreviewGroup`). The preview's scrim is the shared `--overlay-background` itself — antd's preview mask is its modal mask — so a brand that retunes every overlay's scrim retunes this one too. It is used whole, never as a share of a share (gh#886). ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\").",
7474
+ "name": "--image-preview-button-hover-background-alpha",
7475
+ "tier": "component",
7476
+ "value": "20%"
7477
+ },
7478
+ {
7479
+ "description": "IMAGE — a picture that opens large, and its full-viewport preview (`src/components/data-display/image.tsx`, antd `Image` + `Image.PreviewGroup`). The preview's scrim is the shared `--overlay-background` itself — antd's preview mask is its modal mask — so a brand that retunes every overlay's scrim retunes this one too. It is used whole, never as a share of a share (gh#886). ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\").",
7480
+ "name": "--image-preview-icon-size",
7481
+ "tier": "component",
7482
+ "value": "var(--icon-size-lg)"
7483
+ },
7412
7484
  {
7413
7485
  "description": "Readable document measure. Caps the header, the section column and the footer so a 1440px viewport still reads at ~75-90 characters per line.",
7414
7486
  "name": "--legal-document-measure-max-width",
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import type { ImagePreviewConfigProp, ImagePreviewGroupProp } from "../../props/components/data-display.prop.js";
3
+ export type { ImagePreviewConfigProp, ImagePreviewGroupConfigProp, ImagePreviewGroupProp, ImagePreviewGroupProp as ImagePreviewGroupProps, ImagePreviewItemProp, ImageProp, ImageProp as ImageProps, } from "../../props/components/data-display.prop.js";
4
+ /**
5
+ * ImagePreviewGroup — pages one preview across many pictures (antd `Image.PreviewGroup`).
6
+ *
7
+ * Every `Image` under it — at any depth, e.g. inside a Markdown renderer's `img` override —
8
+ * registers itself; the gallery is those pictures in DOCUMENT order. `items` replaces that list.
9
+ */
10
+ export declare function ImagePreviewGroup({ items, fallback, preview, children, }: ImagePreviewGroupProp): React.JSX.Element;
11
+ /** `ImagePreviewGroup` is also reachable as `Image.PreviewGroup`, the antd spelling. */
12
+ export declare const Image: React.ForwardRefExoticComponent<Omit<React.ImgHTMLAttributes<HTMLImageElement>, "alt" | "placeholder"> & {
13
+ src: string;
14
+ alt: string;
15
+ fallback?: string;
16
+ placeholder?: React.ReactNode | boolean;
17
+ preview?: boolean | ImagePreviewConfigProp;
18
+ className?: import("../../props/index.js").ClassNameProp;
19
+ } & React.RefAttributes<HTMLImageElement>> & {
20
+ PreviewGroup: typeof ImagePreviewGroup;
21
+ };