@godxjp/ui 31.4.0 → 31.5.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/agent/START-HERE.md +5 -5
- package/agent/components/CodeBlock.json +7 -1
- package/agent/components/OrgChart.json +59 -0
- package/agent/components-index.json +5 -0
- package/agent/components.json +66 -1
- package/agent/index.json +6 -6
- package/agent/llms.txt +6 -6
- package/agent/tokens.json +108 -0
- package/dist/components/data-display/code-block.js +90 -4
- package/dist/components/data-display/index.d.ts +2 -0
- package/dist/components/data-display/index.js +2 -0
- package/dist/components/data-display/org-chart.d.ts +5 -0
- package/dist/components/data-display/org-chart.js +169 -0
- package/dist/components/general/typography.d.ts +32 -0
- package/dist/components/general/typography.js +11 -2
- package/dist/contracts/measurement.json +1 -1
- package/dist/i18n/messages/en.json +10 -0
- package/dist/i18n/messages/ja.json +10 -0
- package/dist/i18n/messages/vi.json +10 -0
- package/dist/props/components/data-display.prop.d.ts +51 -1
- package/dist/props/registry.d.ts +39 -0
- package/dist/props/registry.js +49 -0
- package/dist/styles/data-display-layout.css +173 -0
- package/dist/styles/layers.json +14 -1
- package/dist/tokens/base.css +1 -0
- package/dist/tokens/components/org-chart.css +27 -0
- package/docs/FRAME-COVERAGE-REPORT.md +3 -2
- package/docs/data-display/code-block.tsx +27 -0
- package/docs/data-display/org-chart.tsx +165 -0
- package/docs/navigation/tabs.tsx +17 -15
- package/docs/query/data-state.tsx +2 -4
- package/docs/showcase/table-view-tabs.tsx +1 -1
- package/package.json +2 -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` 31.
|
|
6
|
+
**This catalog describes `@godxjp/ui` 31.5.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
|
|
50
|
+
1. `components-index.json` — 47 KB, all 177 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` —
|
|
59
|
+
4. `tokens.json` — 2098 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
|
-
|
|
62
|
+
1783 `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` |
|
|
148
|
+
| `component` | 1783 | 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.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"example": "import { CodeBlock } from \"@godxjp/ui/data-display\";\n\n<CodeBlock maxHeight=\"sm\" language=\"json\" aria-label=\"Response body\">{body}</CodeBlock>\n<CodeBlock size=\"xs\" maxHeight=\"md\" aria-label=\"Console\">{consoleText}</CodeBlock>",
|
|
2
|
+
"example": "import { CodeBlock } from \"@godxjp/ui/data-display\";\n\n<CodeBlock maxHeight=\"sm\" language=\"json\" aria-label=\"Response body\">{body}</CodeBlock>\n<CodeBlock size=\"xs\" maxHeight=\"md\" aria-label=\"Console\">{consoleText}</CodeBlock>\n<CodeBlock copyable language=\"bash\">pnpm add @godxjp/ui</CodeBlock>",
|
|
3
3
|
"group": "data-display",
|
|
4
4
|
"importPath": "@godxjp/ui/data-display",
|
|
5
5
|
"name": "CodeBlock",
|
|
@@ -31,6 +31,11 @@
|
|
|
31
31
|
"name": "language",
|
|
32
32
|
"type": "string"
|
|
33
33
|
},
|
|
34
|
+
{
|
|
35
|
+
"description": "antd Typography's `copyable`, same name and semantics (gh#1032): a copy button in the block's inline-end corner. `true` copies the block's text content (highlighter spans included); `text` overrides it. The block reserves the button's column, the confirmed state is announced politely, and `onCopy` fires only after the clipboard write succeeds.",
|
|
36
|
+
"name": "copyable",
|
|
37
|
+
"type": "boolean | { text?: string | (() => string | Promise<string>); onCopy?: (event) => void; tooltips?: ReactNode | [ReactNode, ReactNode] | false; icon?: ReactNode | [ReactNode, ReactNode]; format?: \"text/plain\" | \"text/html\"; tabIndex?: number }"
|
|
38
|
+
},
|
|
34
39
|
{
|
|
35
40
|
"description": "Extra classes on the `pre`.",
|
|
36
41
|
"name": "className",
|
|
@@ -52,6 +57,7 @@
|
|
|
52
57
|
"DO cap the height of anything that can be large (a 64 KB response body, a console dump) with `maxHeight`; the page keeps its rhythm and the block scrolls.",
|
|
53
58
|
"DON'T hand-roll `<pre className=\"max-h-64 overflow-auto rounded bg-muted p-2 whitespace-pre-wrap\">`: every one of those values is a copy of a token this component reads.",
|
|
54
59
|
"DON'T reach for `Text as=\"code\"` for a block: that is inline monospace with no wrapping axis. Use `Text as=\"code\"` for an identifier inside a sentence, CodeBlock for a block.",
|
|
60
|
+
"DO use `copyable` for a command or snippet the reader will paste (gh#1032). DON'T hand-roll a copy Button next to or over a CodeBlock: `copyable` owns the clipboard call, the confirmed state, the placement and the polite announcement.",
|
|
55
61
|
"DON'T use CodeBlock for a single value in a Descriptions row: `Descriptions.Item mono` owns that (it breaks the value, not the row).",
|
|
56
62
|
"SYNTAX COLOUR (gh#784): CodeBlock does not highlight, but it DOES own the palette. Tag each span from your highlighter with `data-code-token` — the twelve names are Shiki createCssVariablesTheme's verbatim (comment, keyword, string, string-expression, function, constant, parameter, punctuation, link, inserted, deleted, changed, plus the block foreground) — and the package colours them. DON'T put `style={{ color }}` or a palette `className` on the spans: both are visual overrides, and the colour is not the consumer's to choose. Retheme with the `--code-block-token-*-color` knobs, which are role-mirrors, so light and dark follow the theme with no second palette."
|
|
57
63
|
],
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"docPath": "data-display/org-chart.tsx",
|
|
3
|
+
"example": "import { Avatar, AvatarFallback, Badge, OrgChart } from \"@godxjp/ui/data-display\";\n\n<OrgChart\n label=\"Company org chart\"\n data={[\n {\n key: \"ceo\", name: \"Haruka Tanaka\", title: \"CEO\",\n avatar: <Avatar size=\"sm\"><AvatarFallback>HT</AvatarFallback></Avatar>,\n children: [\n { key: \"cto\", name: \"Kenji Watanabe\", title: \"CTO\" },\n { key: \"bot\", name: \"Review Agent\", title: \"Code review\", variant: \"agent\",\n extra: <Badge tone=\"success\">Running</Badge> },\n ],\n },\n ]}\n/>",
|
|
4
|
+
"group": "data-display",
|
|
5
|
+
"importPath": "@godxjp/ui/data-display",
|
|
6
|
+
"name": "OrgChart",
|
|
7
|
+
"props": [
|
|
8
|
+
{
|
|
9
|
+
"description": "The hierarchy: { key, name, title?, avatar?, extra?, variant?: \"person\" | \"agent\", children? }. `key` is unique across the chart. `avatar` is usually an <Avatar>; `extra` a Badge or status.",
|
|
10
|
+
"name": "data",
|
|
11
|
+
"type": "OrgChartNodeProp[]"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"description": "Replace a box's content. The box, its border, the connectors and the keyboard stay the library's; the narrow Tree form uses it too.",
|
|
15
|
+
"name": "renderNode",
|
|
16
|
+
"type": "(node: OrgChartNodeProp) => ReactNode"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"description": "Accessible name of the role=\"tree\" (a plain string). Localized default \"Organization chart\".",
|
|
20
|
+
"name": "label",
|
|
21
|
+
"type": "string"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"description": "DOM id of the root.",
|
|
25
|
+
"name": "id",
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"description": "Root class.",
|
|
30
|
+
"name": "className",
|
|
31
|
+
"type": "string"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"related": [
|
|
35
|
+
"Tree — the indented, collapsible outline. OrgChart renders it as its narrow form.",
|
|
36
|
+
"Avatar — the mark in each box.",
|
|
37
|
+
"Badge — a status in a box's `extra` slot."
|
|
38
|
+
],
|
|
39
|
+
"rules": [
|
|
40
|
+
2,
|
|
41
|
+
6,
|
|
42
|
+
23,
|
|
43
|
+
44,
|
|
44
|
+
45
|
|
45
|
+
],
|
|
46
|
+
"storyPath": "data-display/OrgChart.stories.tsx",
|
|
47
|
+
"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).",
|
|
48
|
+
"usage": [
|
|
49
|
+
"DO mark AI agents with `variant: \"agent\"` — the box is dashed AND its accessible name ends in a localized \"AI agent\", so the kind is never carried by the stroke alone.",
|
|
50
|
+
"DO give it the width it has; the breakpoint is a container query, so a chart in a narrow side panel switches to the Tree form on a wide screen too.",
|
|
51
|
+
"DO retune boxes and lines through the --org-chart-* tokens (node size, gaps, line width/colour, agent border style).",
|
|
52
|
+
"DON'T wrap it in your own overflow-x scroller — it owns its scroll region, which only becomes a named tab stop when the chart actually overflows.",
|
|
53
|
+
"DON'T use it for an outline users expand and collapse — that is Tree. OrgChart always shows every node."
|
|
54
|
+
],
|
|
55
|
+
"useCases": [
|
|
56
|
+
"A company or team org chart with people and AI agents side by side.",
|
|
57
|
+
"Reporting lines on an admin screen, falling back to an indented list in a narrow panel or on a phone."
|
|
58
|
+
]
|
|
59
|
+
}
|
|
@@ -886,6 +886,11 @@
|
|
|
886
886
|
"name": "ThoughtChain",
|
|
887
887
|
"tagline": "The assistant's reasoning, step by step (Ant Design X ThoughtChain): an ORDERED list of steps, each with an ordinal or a glyph, a status, and a body it can collapse — where Ant X's own step is a <div onClick> with no role and no aria-expanded."
|
|
888
888
|
},
|
|
889
|
+
{
|
|
890
|
+
"group": "data-display",
|
|
891
|
+
"name": "OrgChart",
|
|
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
|
+
},
|
|
889
894
|
{
|
|
890
895
|
"group": "data-entry",
|
|
891
896
|
"name": "Attachments",
|
package/agent/components.json
CHANGED
|
@@ -4808,7 +4808,7 @@
|
|
|
4808
4808
|
]
|
|
4809
4809
|
},
|
|
4810
4810
|
{
|
|
4811
|
-
"example": "import { CodeBlock } from \"@godxjp/ui/data-display\";\n\n<CodeBlock maxHeight=\"sm\" language=\"json\" aria-label=\"Response body\">{body}</CodeBlock>\n<CodeBlock size=\"xs\" maxHeight=\"md\" aria-label=\"Console\">{consoleText}</CodeBlock>",
|
|
4811
|
+
"example": "import { CodeBlock } from \"@godxjp/ui/data-display\";\n\n<CodeBlock maxHeight=\"sm\" language=\"json\" aria-label=\"Response body\">{body}</CodeBlock>\n<CodeBlock size=\"xs\" maxHeight=\"md\" aria-label=\"Console\">{consoleText}</CodeBlock>\n<CodeBlock copyable language=\"bash\">pnpm add @godxjp/ui</CodeBlock>",
|
|
4812
4812
|
"group": "data-display",
|
|
4813
4813
|
"importPath": "@godxjp/ui/data-display",
|
|
4814
4814
|
"name": "CodeBlock",
|
|
@@ -4840,6 +4840,11 @@
|
|
|
4840
4840
|
"name": "language",
|
|
4841
4841
|
"type": "string"
|
|
4842
4842
|
},
|
|
4843
|
+
{
|
|
4844
|
+
"description": "antd Typography's `copyable`, same name and semantics (gh#1032): a copy button in the block's inline-end corner. `true` copies the block's text content (highlighter spans included); `text` overrides it. The block reserves the button's column, the confirmed state is announced politely, and `onCopy` fires only after the clipboard write succeeds.",
|
|
4845
|
+
"name": "copyable",
|
|
4846
|
+
"type": "boolean | { text?: string | (() => string | Promise<string>); onCopy?: (event) => void; tooltips?: ReactNode | [ReactNode, ReactNode] | false; icon?: ReactNode | [ReactNode, ReactNode]; format?: \"text/plain\" | \"text/html\"; tabIndex?: number }"
|
|
4847
|
+
},
|
|
4843
4848
|
{
|
|
4844
4849
|
"description": "Extra classes on the `pre`.",
|
|
4845
4850
|
"name": "className",
|
|
@@ -4861,6 +4866,7 @@
|
|
|
4861
4866
|
"DO cap the height of anything that can be large (a 64 KB response body, a console dump) with `maxHeight`; the page keeps its rhythm and the block scrolls.",
|
|
4862
4867
|
"DON'T hand-roll `<pre className=\"max-h-64 overflow-auto rounded bg-muted p-2 whitespace-pre-wrap\">`: every one of those values is a copy of a token this component reads.",
|
|
4863
4868
|
"DON'T reach for `Text as=\"code\"` for a block: that is inline monospace with no wrapping axis. Use `Text as=\"code\"` for an identifier inside a sentence, CodeBlock for a block.",
|
|
4869
|
+
"DO use `copyable` for a command or snippet the reader will paste (gh#1032). DON'T hand-roll a copy Button next to or over a CodeBlock: `copyable` owns the clipboard call, the confirmed state, the placement and the polite announcement.",
|
|
4864
4870
|
"DON'T use CodeBlock for a single value in a Descriptions row: `Descriptions.Item mono` owns that (it breaks the value, not the row).",
|
|
4865
4871
|
"SYNTAX COLOUR (gh#784): CodeBlock does not highlight, but it DOES own the palette. Tag each span from your highlighter with `data-code-token` — the twelve names are Shiki createCssVariablesTheme's verbatim (comment, keyword, string, string-expression, function, constant, parameter, punctuation, link, inserted, deleted, changed, plus the block foreground) — and the package colours them. DON'T put `style={{ color }}` or a palette `className` on the spans: both are visual overrides, and the colour is not the consumer's to choose. Retheme with the `--code-block-token-*-color` knobs, which are role-mirrors, so light and dark follow the theme with no second palette."
|
|
4866
4872
|
],
|
|
@@ -15608,6 +15614,65 @@
|
|
|
15608
15614
|
"ThoughtChainItem alone: the chip an assistant drops inline to name the tool it just reached for."
|
|
15609
15615
|
]
|
|
15610
15616
|
},
|
|
15617
|
+
{
|
|
15618
|
+
"docPath": "data-display/org-chart.tsx",
|
|
15619
|
+
"example": "import { Avatar, AvatarFallback, Badge, OrgChart } from \"@godxjp/ui/data-display\";\n\n<OrgChart\n label=\"Company org chart\"\n data={[\n {\n key: \"ceo\", name: \"Haruka Tanaka\", title: \"CEO\",\n avatar: <Avatar size=\"sm\"><AvatarFallback>HT</AvatarFallback></Avatar>,\n children: [\n { key: \"cto\", name: \"Kenji Watanabe\", title: \"CTO\" },\n { key: \"bot\", name: \"Review Agent\", title: \"Code review\", variant: \"agent\",\n extra: <Badge tone=\"success\">Running</Badge> },\n ],\n },\n ]}\n/>",
|
|
15620
|
+
"group": "data-display",
|
|
15621
|
+
"importPath": "@godxjp/ui/data-display",
|
|
15622
|
+
"name": "OrgChart",
|
|
15623
|
+
"props": [
|
|
15624
|
+
{
|
|
15625
|
+
"description": "The hierarchy: { key, name, title?, avatar?, extra?, variant?: \"person\" | \"agent\", children? }. `key` is unique across the chart. `avatar` is usually an <Avatar>; `extra` a Badge or status.",
|
|
15626
|
+
"name": "data",
|
|
15627
|
+
"type": "OrgChartNodeProp[]"
|
|
15628
|
+
},
|
|
15629
|
+
{
|
|
15630
|
+
"description": "Replace a box's content. The box, its border, the connectors and the keyboard stay the library's; the narrow Tree form uses it too.",
|
|
15631
|
+
"name": "renderNode",
|
|
15632
|
+
"type": "(node: OrgChartNodeProp) => ReactNode"
|
|
15633
|
+
},
|
|
15634
|
+
{
|
|
15635
|
+
"description": "Accessible name of the role=\"tree\" (a plain string). Localized default \"Organization chart\".",
|
|
15636
|
+
"name": "label",
|
|
15637
|
+
"type": "string"
|
|
15638
|
+
},
|
|
15639
|
+
{
|
|
15640
|
+
"description": "DOM id of the root.",
|
|
15641
|
+
"name": "id",
|
|
15642
|
+
"type": "string"
|
|
15643
|
+
},
|
|
15644
|
+
{
|
|
15645
|
+
"description": "Root class.",
|
|
15646
|
+
"name": "className",
|
|
15647
|
+
"type": "string"
|
|
15648
|
+
}
|
|
15649
|
+
],
|
|
15650
|
+
"related": [
|
|
15651
|
+
"Tree — the indented, collapsible outline. OrgChart renders it as its narrow form.",
|
|
15652
|
+
"Avatar — the mark in each box.",
|
|
15653
|
+
"Badge — a status in a box's `extra` slot."
|
|
15654
|
+
],
|
|
15655
|
+
"rules": [
|
|
15656
|
+
2,
|
|
15657
|
+
6,
|
|
15658
|
+
23,
|
|
15659
|
+
44,
|
|
15660
|
+
45
|
|
15661
|
+
],
|
|
15662
|
+
"storyPath": "data-display/OrgChart.stories.tsx",
|
|
15663
|
+
"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).",
|
|
15664
|
+
"usage": [
|
|
15665
|
+
"DO mark AI agents with `variant: \"agent\"` — the box is dashed AND its accessible name ends in a localized \"AI agent\", so the kind is never carried by the stroke alone.",
|
|
15666
|
+
"DO give it the width it has; the breakpoint is a container query, so a chart in a narrow side panel switches to the Tree form on a wide screen too.",
|
|
15667
|
+
"DO retune boxes and lines through the --org-chart-* tokens (node size, gaps, line width/colour, agent border style).",
|
|
15668
|
+
"DON'T wrap it in your own overflow-x scroller — it owns its scroll region, which only becomes a named tab stop when the chart actually overflows.",
|
|
15669
|
+
"DON'T use it for an outline users expand and collapse — that is Tree. OrgChart always shows every node."
|
|
15670
|
+
],
|
|
15671
|
+
"useCases": [
|
|
15672
|
+
"A company or team org chart with people and AI agents side by side.",
|
|
15673
|
+
"Reporting lines on an admin screen, falling back to an indented list in a narrow panel or on a phone."
|
|
15674
|
+
]
|
|
15675
|
+
},
|
|
15611
15676
|
{
|
|
15612
15677
|
"docPath": "data-entry/attachments.tsx",
|
|
15613
15678
|
"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":
|
|
4
|
+
"components": 177,
|
|
5
5
|
"patterns": 21,
|
|
6
6
|
"rules": 50,
|
|
7
|
-
"tokens":
|
|
7
|
+
"tokens": 2098,
|
|
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
|
|
13
|
+
"note": "47 KB — name + group + tagline for all 177. 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.
|
|
51
|
+
"pinned": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/v31.5.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":
|
|
58
|
+
"component": 1783,
|
|
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.
|
|
65
|
+
"version": "31.5.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:
|
|
4
|
-
> 50 cardinal rules. This file is the entry point for AI agents. Catalog version 31.
|
|
3
|
+
> A Japanese-enterprise React design system: 177 components, 2098 design tokens,
|
|
4
|
+
> 50 cardinal rules. This file is the entry point for AI agents. Catalog version 31.5.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.
|
|
7
|
+
(`npx @godxjp/ui-mcp@31.5.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
|
|
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`).
|
|
19
19
|
- [components/<Name>.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components/Select.json): one file per component (1 KB–35 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,
|
|
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, 1783 `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.
|
|
29
|
+
the tag: `.../godx-jp/godxjp-ui/v31.5.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
|
@@ -9221,6 +9221,114 @@
|
|
|
9221
9221
|
"tier": "component",
|
|
9222
9222
|
"value": "0.7"
|
|
9223
9223
|
},
|
|
9224
|
+
{
|
|
9225
|
+
"description": "The box. A fixed inline size, so siblings line up in even columns and the connector bus has a predictable pitch; long names wrap inside it instead of widening one box.",
|
|
9226
|
+
"name": "--org-chart-node-inline-size",
|
|
9227
|
+
"tier": "component",
|
|
9228
|
+
"value": "13rem"
|
|
9229
|
+
},
|
|
9230
|
+
{
|
|
9231
|
+
"description": "ORG CHART — boxes joined by lines, top-down (`src/components/data-display/org-chart.tsx`). Every length the chart paints is a knob (cardinal rule #45) and the defaults are the quiet reading (#44): a hairline connector in the border hue, a card-coloured box with the hairline edge every other surface here has. An `agent` box differs by its STROKE STYLE only (dashed), so a theme that retunes the edge colour retunes both kinds at once. ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\"), so a scoped `[data-tenant]` / `.dark` override reaches them instead of freezing at `:root`.",
|
|
9232
|
+
"name": "--org-chart-node-padding-block",
|
|
9233
|
+
"tier": "component",
|
|
9234
|
+
"value": "var(--space-3)"
|
|
9235
|
+
},
|
|
9236
|
+
{
|
|
9237
|
+
"description": "ORG CHART — boxes joined by lines, top-down (`src/components/data-display/org-chart.tsx`). Every length the chart paints is a knob (cardinal rule #45) and the defaults are the quiet reading (#44): a hairline connector in the border hue, a card-coloured box with the hairline edge every other surface here has. An `agent` box differs by its STROKE STYLE only (dashed), so a theme that retunes the edge colour retunes both kinds at once. ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\"), so a scoped `[data-tenant]` / `.dark` override reaches them instead of freezing at `:root`.",
|
|
9238
|
+
"name": "--org-chart-node-padding-inline",
|
|
9239
|
+
"tier": "component",
|
|
9240
|
+
"value": "var(--space-3)"
|
|
9241
|
+
},
|
|
9242
|
+
{
|
|
9243
|
+
"description": "ORG CHART — boxes joined by lines, top-down (`src/components/data-display/org-chart.tsx`). Every length the chart paints is a knob (cardinal rule #45) and the defaults are the quiet reading (#44): a hairline connector in the border hue, a card-coloured box with the hairline edge every other surface here has. An `agent` box differs by its STROKE STYLE only (dashed), so a theme that retunes the edge colour retunes both kinds at once. ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\"), so a scoped `[data-tenant]` / `.dark` override reaches them instead of freezing at `:root`.",
|
|
9244
|
+
"name": "--org-chart-node-gap",
|
|
9245
|
+
"tier": "component",
|
|
9246
|
+
"value": "var(--space-3)"
|
|
9247
|
+
},
|
|
9248
|
+
{
|
|
9249
|
+
"description": "ORG CHART — boxes joined by lines, top-down (`src/components/data-display/org-chart.tsx`). Every length the chart paints is a knob (cardinal rule #45) and the defaults are the quiet reading (#44): a hairline connector in the border hue, a card-coloured box with the hairline edge every other surface here has. An `agent` box differs by its STROKE STYLE only (dashed), so a theme that retunes the edge colour retunes both kinds at once. ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\"), so a scoped `[data-tenant]` / `.dark` override reaches them instead of freezing at `:root`.",
|
|
9250
|
+
"name": "--org-chart-node-text-gap",
|
|
9251
|
+
"tier": "component",
|
|
9252
|
+
"value": "var(--space-1)"
|
|
9253
|
+
},
|
|
9254
|
+
{
|
|
9255
|
+
"description": "gh#888 — φ tier freezes at :root; default = var(--radius)",
|
|
9256
|
+
"name": "--org-chart-node-radius",
|
|
9257
|
+
"tier": "component",
|
|
9258
|
+
"value": "initial"
|
|
9259
|
+
},
|
|
9260
|
+
{
|
|
9261
|
+
"description": "default = var(--stroke-hairline)",
|
|
9262
|
+
"name": "--org-chart-node-border-width",
|
|
9263
|
+
"tier": "component",
|
|
9264
|
+
"value": "initial"
|
|
9265
|
+
},
|
|
9266
|
+
{
|
|
9267
|
+
"description": "default = hsl(var(--border))",
|
|
9268
|
+
"name": "--org-chart-node-border-color",
|
|
9269
|
+
"tier": "component",
|
|
9270
|
+
"value": "initial"
|
|
9271
|
+
},
|
|
9272
|
+
{
|
|
9273
|
+
"description": "default = hsl(var(--card))",
|
|
9274
|
+
"name": "--org-chart-node-background",
|
|
9275
|
+
"tier": "component",
|
|
9276
|
+
"value": "initial"
|
|
9277
|
+
},
|
|
9278
|
+
{
|
|
9279
|
+
"description": "default = hsl(var(--card-foreground))",
|
|
9280
|
+
"name": "--org-chart-node-foreground",
|
|
9281
|
+
"tier": "component",
|
|
9282
|
+
"value": "initial"
|
|
9283
|
+
},
|
|
9284
|
+
{
|
|
9285
|
+
"description": "default = hsl(var(--muted-foreground))",
|
|
9286
|
+
"name": "--org-chart-node-title-color",
|
|
9287
|
+
"tier": "component",
|
|
9288
|
+
"value": "initial"
|
|
9289
|
+
},
|
|
9290
|
+
{
|
|
9291
|
+
"description": "ORG CHART — boxes joined by lines, top-down (`src/components/data-display/org-chart.tsx`). Every length the chart paints is a knob (cardinal rule #45) and the defaults are the quiet reading (#44): a hairline connector in the border hue, a card-coloured box with the hairline edge every other surface here has. An `agent` box differs by its STROKE STYLE only (dashed), so a theme that retunes the edge colour retunes both kinds at once. ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\"), so a scoped `[data-tenant]` / `.dark` override reaches them instead of freezing at `:root`.",
|
|
9292
|
+
"name": "--org-chart-node-font-size",
|
|
9293
|
+
"tier": "component",
|
|
9294
|
+
"value": "var(--font-size-sm, var(--font-size-base))"
|
|
9295
|
+
},
|
|
9296
|
+
{
|
|
9297
|
+
"description": "The `agent` variant's stroke style. A dashed edge, not a second colour — the difference must survive greyscale, and the sr-only \"AI agent\" carries it for a screen reader.",
|
|
9298
|
+
"name": "--org-chart-agent-border-style",
|
|
9299
|
+
"tier": "component",
|
|
9300
|
+
"value": "dashed"
|
|
9301
|
+
},
|
|
9302
|
+
{
|
|
9303
|
+
"description": "Spacing of the tree itself: the vertical run between a parent and its children's row, and the gutter between two siblings. The connector is drawn inside these gaps, half above the bus and half below it.",
|
|
9304
|
+
"name": "--org-chart-level-gap",
|
|
9305
|
+
"tier": "component",
|
|
9306
|
+
"value": "var(--space-8)"
|
|
9307
|
+
},
|
|
9308
|
+
{
|
|
9309
|
+
"description": "ORG CHART — boxes joined by lines, top-down (`src/components/data-display/org-chart.tsx`). Every length the chart paints is a knob (cardinal rule #45) and the defaults are the quiet reading (#44): a hairline connector in the border hue, a card-coloured box with the hairline edge every other surface here has. An `agent` box differs by its STROKE STYLE only (dashed), so a theme that retunes the edge colour retunes both kinds at once. ROLE-MIRROR KNOBS ARE `initial`, WITH THE DEFAULT AT THE CALL SITE (docs/TOKENS.md · \"Role-mirror knobs MUST be `initial`\"), so a scoped `[data-tenant]` / `.dark` override reaches them instead of freezing at `:root`.",
|
|
9310
|
+
"name": "--org-chart-sibling-gap",
|
|
9311
|
+
"tier": "component",
|
|
9312
|
+
"value": "var(--space-4)"
|
|
9313
|
+
},
|
|
9314
|
+
{
|
|
9315
|
+
"description": "The connector. default = var(--stroke-hairline)",
|
|
9316
|
+
"name": "--org-chart-line-width",
|
|
9317
|
+
"tier": "component",
|
|
9318
|
+
"value": "initial"
|
|
9319
|
+
},
|
|
9320
|
+
{
|
|
9321
|
+
"description": "default = hsl(var(--border))",
|
|
9322
|
+
"name": "--org-chart-line-color",
|
|
9323
|
+
"tier": "component",
|
|
9324
|
+
"value": "initial"
|
|
9325
|
+
},
|
|
9326
|
+
{
|
|
9327
|
+
"description": "Room around the chart inside its scroll region, so an edge box's focus ring is not clipped.",
|
|
9328
|
+
"name": "--org-chart-padding",
|
|
9329
|
+
"tier": "component",
|
|
9330
|
+
"value": "var(--space-2)"
|
|
9331
|
+
},
|
|
9224
9332
|
{
|
|
9225
9333
|
"description": "`thin` reproduces the old 10px rail closely on the platforms that draw a classic scrollbar; `auto` gives the full-width platform bar, which is what a touch/coarse-pointer console wants. Only `auto | thin | none` are valid — a length is not (that is the standard property's whole bargain, and the reason `--scroll-area-bar-size` could not survive as a rem).",
|
|
9226
9334
|
"name": "--scroll-area-scrollbar-width",
|
|
@@ -1,15 +1,96 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
3
|
import * as React from "react";
|
|
4
|
+
import { Check, Copy, LoaderCircle } from "lucide-react";
|
|
5
|
+
import { useTranslation } from "../../i18n/use-translation.js";
|
|
3
6
|
import { cn } from "../../lib/utils.js";
|
|
4
|
-
|
|
7
|
+
import { Button } from "../general/button.js";
|
|
8
|
+
import {
|
|
9
|
+
ActionTooltip,
|
|
10
|
+
COPIED_RESET_MS,
|
|
11
|
+
getNode,
|
|
12
|
+
toCopyConfigList,
|
|
13
|
+
useMergedConfig,
|
|
14
|
+
writeClipboard
|
|
15
|
+
} from "../general/typography.js";
|
|
16
|
+
function CodeBlockCopy({
|
|
17
|
+
config,
|
|
18
|
+
codeRef
|
|
19
|
+
}) {
|
|
20
|
+
const { t } = useTranslation();
|
|
21
|
+
const [copied, setCopied] = React.useState(false);
|
|
22
|
+
const [copyLoading, setCopyLoading] = React.useState(false);
|
|
23
|
+
const copyTimer = React.useRef(null);
|
|
24
|
+
React.useEffect(
|
|
25
|
+
() => () => {
|
|
26
|
+
if (copyTimer.current) clearTimeout(copyTimer.current);
|
|
27
|
+
},
|
|
28
|
+
[]
|
|
29
|
+
);
|
|
30
|
+
const onCopyClick = async (event) => {
|
|
31
|
+
setCopyLoading(true);
|
|
32
|
+
try {
|
|
33
|
+
const configured = typeof config.text === "function" ? await config.text() : config.text;
|
|
34
|
+
await writeClipboard(configured || codeRef.current?.textContent || "", config.format);
|
|
35
|
+
setCopyLoading(false);
|
|
36
|
+
setCopied(true);
|
|
37
|
+
if (copyTimer.current) clearTimeout(copyTimer.current);
|
|
38
|
+
copyTimer.current = setTimeout(() => setCopied(false), COPIED_RESET_MS);
|
|
39
|
+
config.onCopy?.(event);
|
|
40
|
+
} catch {
|
|
41
|
+
setCopyLoading(false);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const copyLabels = toCopyConfigList(config.tooltips);
|
|
45
|
+
const copyIcons = toCopyConfigList(config.icon);
|
|
46
|
+
const systemCopyLabel = copied ? t("ui.codeBlock.copied") : t("ui.codeBlock.copy");
|
|
47
|
+
const copyTitle = getNode(copyLabels[copied ? 1 : 0], systemCopyLabel);
|
|
48
|
+
const copyAriaLabel = typeof copyTitle === "string" ? copyTitle : systemCopyLabel;
|
|
49
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
50
|
+
/* @__PURE__ */ jsx(ActionTooltip, { title: copyTitle, children: /* @__PURE__ */ jsx(
|
|
51
|
+
Button,
|
|
52
|
+
{
|
|
53
|
+
type: "button",
|
|
54
|
+
variant: "ghost",
|
|
55
|
+
size: "icon-xs",
|
|
56
|
+
"data-slot": "code-block-copy",
|
|
57
|
+
"data-state": copied ? "copied" : "idle",
|
|
58
|
+
"aria-label": copyAriaLabel,
|
|
59
|
+
tabIndex: config.tabIndex,
|
|
60
|
+
onClick: onCopyClick,
|
|
61
|
+
className: "ui-code-block-copy",
|
|
62
|
+
children: copied ? getNode(copyIcons[1], /* @__PURE__ */ jsx(Check, { "aria-hidden": "true" }), true) : getNode(
|
|
63
|
+
copyIcons[0],
|
|
64
|
+
copyLoading ? /* @__PURE__ */ jsx(LoaderCircle, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(Copy, { "aria-hidden": "true" }),
|
|
65
|
+
true
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
) }),
|
|
69
|
+
/* @__PURE__ */ jsx("span", { "aria-live": "polite", className: "sr-only", "data-slot": "code-block-status", children: copied ? t("ui.codeBlock.copiedAnnounce") : "" })
|
|
70
|
+
] });
|
|
71
|
+
}
|
|
72
|
+
const CodeBlock = React.forwardRef(function CodeBlock2({
|
|
73
|
+
children,
|
|
74
|
+
wrap = true,
|
|
75
|
+
maxHeight = "none",
|
|
76
|
+
size = "sm",
|
|
77
|
+
language,
|
|
78
|
+
copyable,
|
|
79
|
+
className,
|
|
80
|
+
style,
|
|
81
|
+
...rest
|
|
82
|
+
}, ref) {
|
|
83
|
+
const [enableCopy, copyConfig] = useMergedConfig(copyable);
|
|
84
|
+
const codeRef = React.useRef(null);
|
|
5
85
|
const scrolls = maxHeight !== "none" || !wrap;
|
|
6
|
-
|
|
86
|
+
const pre = /* @__PURE__ */ jsx(
|
|
7
87
|
"pre",
|
|
8
88
|
{
|
|
9
89
|
ref,
|
|
10
90
|
"data-slot": "code-block",
|
|
11
91
|
"data-wrap": wrap ? void 0 : "false",
|
|
12
92
|
"data-max-height": typeof maxHeight === "string" && maxHeight !== "none" ? maxHeight : void 0,
|
|
93
|
+
"data-copyable": enableCopy ? "" : void 0,
|
|
13
94
|
style: {
|
|
14
95
|
...style,
|
|
15
96
|
...typeof maxHeight === "object" ? { maxBlockSize: maxHeight.value, overflow: "auto" } : void 0
|
|
@@ -19,9 +100,14 @@ const CodeBlock = React.forwardRef(function CodeBlock2({ children, wrap = true,
|
|
|
19
100
|
tabIndex: scrolls ? 0 : void 0,
|
|
20
101
|
className: cn("ui-code-block", className),
|
|
21
102
|
...rest,
|
|
22
|
-
children: /* @__PURE__ */ jsx("code", { children })
|
|
103
|
+
children: /* @__PURE__ */ jsx("code", { ref: codeRef, children })
|
|
23
104
|
}
|
|
24
105
|
);
|
|
106
|
+
if (!enableCopy) return pre;
|
|
107
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "code-block-frame", className: "ui-code-block-frame", children: [
|
|
108
|
+
pre,
|
|
109
|
+
/* @__PURE__ */ jsx(CodeBlockCopy, { config: copyConfig, codeRef })
|
|
110
|
+
] });
|
|
25
111
|
});
|
|
26
112
|
export {
|
|
27
113
|
CodeBlock
|
|
@@ -53,6 +53,8 @@ export { ChatBubble, ChatBubbleList } from "./chat-bubble.js";
|
|
|
53
53
|
export type { ChatBubbleListProp, ChatBubbleListProps, ChatBubblePlacementProp, ChatBubbleProp, ChatBubbleProps, ChatBubbleToneProp, ChatBubbleTypingProp, ChatBubbleVariantProp, ChatMessageProp, } from "./chat-bubble.js";
|
|
54
54
|
export { Tree } from "./tree.js";
|
|
55
55
|
export type { TreeNodeProp, TreeProp, TreeProps } from "./tree.js";
|
|
56
|
+
export { OrgChart } from "./org-chart.js";
|
|
57
|
+
export type { OrgChartNodeProp, OrgChartNodeVariantProp, OrgChartProp, OrgChartProps, } from "./org-chart.js";
|
|
56
58
|
export { Welcome } from "./welcome.js";
|
|
57
59
|
export type { WelcomeProp, WelcomeProps, WelcomeVariantProp } from "./welcome.js";
|
|
58
60
|
export { ThoughtChain, ThoughtChainItem } from "./thought-chain.js";
|
|
@@ -60,6 +60,7 @@ import { PermissionMatrix } from "./permission-matrix.js";
|
|
|
60
60
|
import { RangeTimeline } from "./range-timeline.js";
|
|
61
61
|
import { ChatBubble, ChatBubbleList } from "./chat-bubble.js";
|
|
62
62
|
import { Tree } from "./tree.js";
|
|
63
|
+
import { OrgChart } from "./org-chart.js";
|
|
63
64
|
import { Welcome } from "./welcome.js";
|
|
64
65
|
import { ThoughtChain, ThoughtChainItem } from "./thought-chain.js";
|
|
65
66
|
export {
|
|
@@ -103,6 +104,7 @@ export {
|
|
|
103
104
|
Legend,
|
|
104
105
|
ListRow,
|
|
105
106
|
Marquee,
|
|
107
|
+
OrgChart,
|
|
106
108
|
PermissionMatrix,
|
|
107
109
|
Popover,
|
|
108
110
|
PopoverAnchor,
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { OrgChartProp } from "../../props/components/data-display.prop.js";
|
|
3
|
+
export type { OrgChartNodeProp, OrgChartNodeVariantProp, OrgChartProp, OrgChartProp as OrgChartProps, } from "../../props/components/data-display.prop.js";
|
|
4
|
+
/** `ref` reaches the root `<div>` — the container the breakpoint is measured against. */
|
|
5
|
+
export declare const OrgChart: React.ForwardRefExoticComponent<OrgChartProp & React.RefAttributes<HTMLDivElement>>;
|