@godxjp/ui 31.3.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 +6 -6
- package/agent/components/CodeBlock.json +7 -1
- package/agent/components/OrgChart.json +59 -0
- package/agent/components/Tabs.json +5 -0
- package/agent/components-index.json +5 -0
- package/agent/components.json +71 -1
- package/agent/index.json +7 -7
- package/agent/llms.txt +6 -6
- package/agent/tokens.json +141 -3
- 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/data-entry/upload.js +12 -1
- package/dist/components/general/typography.d.ts +32 -0
- package/dist/components/general/typography.js +11 -2
- package/dist/components/navigation/tabs.d.ts +2 -2
- package/dist/components/navigation/tabs.js +57 -10
- 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/components/navigation.prop.d.ts +19 -1
- package/dist/props/registry.d.ts +40 -1
- package/dist/props/registry.js +50 -0
- package/dist/styles/alert-layout.css +12 -12
- package/dist/styles/control.css +18 -2
- package/dist/styles/data-display-layout.css +173 -0
- package/dist/styles/data-entry-layout.css +4 -0
- package/dist/styles/form-layout.css +47 -5
- package/dist/styles/layers.json +14 -1
- package/dist/styles/layout.css +2 -1
- package/dist/tokens/base.css +1 -0
- package/dist/tokens/components/org-chart.css +27 -0
- package/dist/tokens/components/segmented.css +4 -0
- package/dist/tokens/semantic/layout.css +2 -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/data-entry/segmented.tsx +2 -0
- package/docs/navigation/tabs.tsx +45 -0
- package/docs/query/data-state.tsx +30 -8
- package/docs/showcase/table-view-tabs.tsx +15 -13
- package/docs/themes/flat.css +4 -0
- package/docs/themes/glassmorphism.css +2 -0
- package/docs/themes/neubrutalism.css +6 -0
- package/package.json +2 -2
|
@@ -22,6 +22,13 @@ export type CodeBlockProp = {
|
|
|
22
22
|
size?: Extract<SizeProp, "xs" | "sm">;
|
|
23
23
|
/** Lands on `data-language`; no highlighter is bundled — see `children` for colouring its output. */
|
|
24
24
|
language?: string;
|
|
25
|
+
/**
|
|
26
|
+
* A copy button in the block's inline-end corner — antd `Typography`'s `copyable`, same name and
|
|
27
|
+
* semantics. `true` copies the block's text content; the object form sets `text`, `onCopy`,
|
|
28
|
+
* `tooltips` (`[copy, copied]`, or `false`), `icon` (`[copy, copied]`), `format` and `tabIndex`.
|
|
29
|
+
* The copy is announced politely to assistive technology.
|
|
30
|
+
*/
|
|
31
|
+
copyable?: boolean | TypographyCopyConfigProp;
|
|
25
32
|
className?: ClassNameProp;
|
|
26
33
|
};
|
|
27
34
|
/**
|
|
@@ -36,7 +43,7 @@ export type ProseProp = {
|
|
|
36
43
|
className?: ClassNameProp;
|
|
37
44
|
children?: ChildrenProp;
|
|
38
45
|
};
|
|
39
|
-
import type { ActionProp, ClassNameProp, DescriptionProp, IconProp, TitleProp, ColumnDefProp, GetRowIdProp, GetRowLabelProp, OnRowClickProp, OnSelectChangeProp, OnSortChangeProp, OnTableDensityChangeProp, SelectedIdsProp, SortStateProp, TableDensityProp, TablePresetProp, BreakpointProp, DensityProp, ChildrenProp, PendingProp, ToneProp, AvatarShapeProp, HeadingLevelProp, HandlerProp, SizeProp, LabelProp, IdProp, DescriptionsLayoutProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, GapProp, SortDirectionProp, OnColumnFilterChangeProp, OnRowProp, TableExpandableProp, TableRowSelectionProp, TableScrollProp, TableStickyProp, TableSummaryProp, DisabledProp, OnClickProp, ValueProp, DefaultValueProp, OnValueChangeProp } from "../vocabulary/index.js";
|
|
46
|
+
import type { ActionProp, ClassNameProp, DescriptionProp, IconProp, TitleProp, ExtraProp, ColumnDefProp, GetRowIdProp, GetRowLabelProp, OnRowClickProp, OnSelectChangeProp, OnSortChangeProp, OnTableDensityChangeProp, SelectedIdsProp, SortStateProp, TableDensityProp, TablePresetProp, BreakpointProp, DensityProp, ChildrenProp, PendingProp, ToneProp, AvatarShapeProp, HeadingLevelProp, HandlerProp, SizeProp, LabelProp, IdProp, DescriptionsLayoutProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, GapProp, SortDirectionProp, OnColumnFilterChangeProp, OnRowProp, TableExpandableProp, TableRowSelectionProp, TableScrollProp, TableStickyProp, TableSummaryProp, DisabledProp, OnClickProp, ValueProp, DefaultValueProp, OnValueChangeProp, TypographyCopyConfigProp } from "../vocabulary/index.js";
|
|
40
47
|
import type { TreeFieldNamesProp, TreeOptionProp } from "./data-entry.prop.js";
|
|
41
48
|
/**
|
|
42
49
|
* One key in a `Legend`: a tone, and the words that tone stands for.
|
|
@@ -1126,3 +1133,46 @@ export type MarqueeProp = Omit<React.HTMLAttributes<HTMLDivElement>, "onPlay" |
|
|
|
1126
1133
|
label?: LabelProp;
|
|
1127
1134
|
className?: ClassNameProp;
|
|
1128
1135
|
};
|
|
1136
|
+
/**
|
|
1137
|
+
* @see OrgChart — who a box stands for. `agent` draws the box with a DASHED border so an AI agent
|
|
1138
|
+
* is told apart from a person at a glance, and adds a localized visually hidden "AI agent" to the
|
|
1139
|
+
* node's accessible name, so the difference is never carried by the stroke alone (WCAG 1.4.1).
|
|
1140
|
+
*/
|
|
1141
|
+
export type OrgChartNodeVariantProp = "person" | "agent";
|
|
1142
|
+
/** @see OrgChart — one box of the chart. */
|
|
1143
|
+
export type OrgChartNodeProp = {
|
|
1144
|
+
/** Identity of the node. Unique across the whole chart. */
|
|
1145
|
+
key: string;
|
|
1146
|
+
/** The person's or agent's name — the box's first line and the start of its accessible name. */
|
|
1147
|
+
name: React.ReactNode;
|
|
1148
|
+
/** Role / job title, the line under the name. */
|
|
1149
|
+
title?: TitleProp;
|
|
1150
|
+
/** The mark at the box's inline start — usually an `<Avatar>`. Decorative; the name carries identity. */
|
|
1151
|
+
avatar?: React.ReactNode;
|
|
1152
|
+
/** Free slot under the text — a Badge, a status, a count. */
|
|
1153
|
+
extra?: ExtraProp;
|
|
1154
|
+
/** `person` (default) or `agent` (dashed box). */
|
|
1155
|
+
variant?: OrgChartNodeVariantProp;
|
|
1156
|
+
children?: readonly OrgChartNodeProp[];
|
|
1157
|
+
};
|
|
1158
|
+
/**
|
|
1159
|
+
* @see OrgChart — an organization chart: boxes joined by lines, top-down, with a horizontal scroll
|
|
1160
|
+
* region of its own when the chart is wider than its container, and an indented `Tree` of the same
|
|
1161
|
+
* data when the CONTAINER is narrow. It is the WAI-ARIA APG tree view in both forms.
|
|
1162
|
+
*/
|
|
1163
|
+
export type OrgChartProp = {
|
|
1164
|
+
/** The hierarchy. Usually one root; several roots render side by side. */
|
|
1165
|
+
data: readonly OrgChartNodeProp[];
|
|
1166
|
+
/**
|
|
1167
|
+
* Replace the box's content (avatar · name · title · extra) with your own. The box, its border,
|
|
1168
|
+
* the connectors and the keyboard stay the library's. Used by the narrow `Tree` form too.
|
|
1169
|
+
*/
|
|
1170
|
+
renderNode?: (node: OrgChartNodeProp) => React.ReactNode;
|
|
1171
|
+
/**
|
|
1172
|
+
* Accessible name of the chart (the `role="tree"`) — a plain string. A localized default
|
|
1173
|
+
* ("Organization chart") applies when omitted.
|
|
1174
|
+
*/
|
|
1175
|
+
label?: Extract<LabelProp, string>;
|
|
1176
|
+
className?: ClassNameProp;
|
|
1177
|
+
id?: IdProp;
|
|
1178
|
+
};
|
|
@@ -255,7 +255,11 @@ export type StepsSeparatorProp = "chevron" | "arrow";
|
|
|
255
255
|
export type TabItemProp = {
|
|
256
256
|
value: string;
|
|
257
257
|
label: React.ReactNode;
|
|
258
|
-
|
|
258
|
+
/**
|
|
259
|
+
* The panel body. Optional because a strip-only `Tabs` (`controls`, gh#1021) renders no panel
|
|
260
|
+
* at all — its content lives in the consumer's own region.
|
|
261
|
+
*/
|
|
262
|
+
content?: React.ReactNode;
|
|
259
263
|
disabled?: boolean;
|
|
260
264
|
/** Leading glyph inside the trigger (Ant Design `Tab.icon`). */
|
|
261
265
|
icon?: React.ReactNode;
|
|
@@ -514,6 +518,20 @@ export type TabsProp = {
|
|
|
514
518
|
moreIcon?: React.ReactNode;
|
|
515
519
|
/** Ant Design `onTabScroll`, on the logical axis. @see TabsOnScrollProp */
|
|
516
520
|
onTabScroll?: TabsOnScrollProp;
|
|
521
|
+
/**
|
|
522
|
+
* STRIP-ONLY MODE (gh#1021) — the `id` of the element OUTSIDE this `Tabs` that the strip
|
|
523
|
+
* drives: a status strip (未対応 / 対応中 / 完了) over a MasterDetail, a saved-view ribbon over a
|
|
524
|
+
* grid. With it set the `items` API renders the tablist ONLY — no `tabpanel`, empty or
|
|
525
|
+
* otherwise — and the selected tab's `aria-controls` points at this id, so the WAI-ARIA APG
|
|
526
|
+
* tab → controlled-region relationship stays real. The consumer's region is never mounted by
|
|
527
|
+
* the strip, so switching tabs cannot remount it (an unsent reply draft survives).
|
|
528
|
+
*
|
|
529
|
+
* Give the region an accessible name (`aria-label`/`aria-labelledby`, e.g. a `<section>`). In
|
|
530
|
+
* the compound form it applies to every trigger with no `TabsContent` declared for its value; a
|
|
531
|
+
* declared panel always wins. A pure FILTER with no region to point at is a `Segmented`
|
|
532
|
+
* (`radiogroup`), not a strip-only `Tabs`.
|
|
533
|
+
*/
|
|
534
|
+
controls?: IdProp;
|
|
517
535
|
className?: ClassNameProp;
|
|
518
536
|
listClassName?: ClassNameProp;
|
|
519
537
|
contentClassName?: ClassNameProp;
|
package/dist/props/registry.d.ts
CHANGED
|
@@ -2626,7 +2626,7 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
2626
2626
|
readonly TabsProp: {
|
|
2627
2627
|
readonly group: "navigation";
|
|
2628
2628
|
readonly file: "components/navigation.prop.ts";
|
|
2629
|
-
readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp", "ClassNameProp", "SizeProp", "ExtraProp", {
|
|
2629
|
+
readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp", "ClassNameProp", "SizeProp", "ExtraProp", "IdProp", {
|
|
2630
2630
|
readonly field: "bodied";
|
|
2631
2631
|
readonly local: true;
|
|
2632
2632
|
readonly reason: "A positive boolean for the card strip's PANEL BODY (gh#762) — an axis on Tabs rather than a `CardTabs` export, because the thing missing was a surface the existing card face already repaints its edge into, not a second component. No vocabulary type: no other component draws a body for its own panel.";
|
|
@@ -3929,6 +3929,45 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
3929
3929
|
readonly file: "components/data-display.prop.ts";
|
|
3930
3930
|
readonly vocabulary: readonly ["TitleProp", "DescriptionProp", "IconProp", "StatusProp", "ControlVariantProp", "DisabledProp", "OnClickProp", "IdProp", "ClassNameProp"];
|
|
3931
3931
|
};
|
|
3932
|
+
readonly OrgChartNodeVariantProp: {
|
|
3933
|
+
readonly group: "data-display";
|
|
3934
|
+
readonly file: "components/data-display.prop.ts";
|
|
3935
|
+
readonly vocabulary: readonly ["ControlVariantProp"];
|
|
3936
|
+
};
|
|
3937
|
+
readonly OrgChartNodeProp: {
|
|
3938
|
+
readonly group: "data-display";
|
|
3939
|
+
readonly file: "components/data-display.prop.ts";
|
|
3940
|
+
readonly vocabulary: readonly ["TitleProp", "ExtraProp", "ControlVariantProp", {
|
|
3941
|
+
readonly field: "key";
|
|
3942
|
+
readonly local: true;
|
|
3943
|
+
readonly reason: "The node's identity, unique across the chart.";
|
|
3944
|
+
}, {
|
|
3945
|
+
readonly field: "name";
|
|
3946
|
+
readonly local: true;
|
|
3947
|
+
readonly reason: "The person's or agent's display name (a ReactNode), not a form field `name` — NameProp is the submitted-field key.";
|
|
3948
|
+
}, {
|
|
3949
|
+
readonly field: "avatar";
|
|
3950
|
+
readonly local: true;
|
|
3951
|
+
readonly reason: "The mark at the box's inline start, usually an <Avatar>. Decorative.";
|
|
3952
|
+
}, {
|
|
3953
|
+
readonly field: "children";
|
|
3954
|
+
readonly local: true;
|
|
3955
|
+
readonly reason: "The node's own reports — the hierarchy itself, not a slot.";
|
|
3956
|
+
}];
|
|
3957
|
+
};
|
|
3958
|
+
readonly OrgChartProp: {
|
|
3959
|
+
readonly group: "data-display";
|
|
3960
|
+
readonly file: "components/data-display.prop.ts";
|
|
3961
|
+
readonly vocabulary: readonly ["LabelProp", "ClassNameProp", "IdProp", {
|
|
3962
|
+
readonly field: "data";
|
|
3963
|
+
readonly local: true;
|
|
3964
|
+
readonly reason: "The hierarchy of OrgChartNodeProp — the same shape feeds the boxes and the narrow Tree.";
|
|
3965
|
+
}, {
|
|
3966
|
+
readonly field: "renderNode";
|
|
3967
|
+
readonly local: true;
|
|
3968
|
+
readonly reason: "Escape hatch replacing a box's content; the box, connectors and keyboard stay the library's.";
|
|
3969
|
+
}];
|
|
3970
|
+
};
|
|
3932
3971
|
};
|
|
3933
3972
|
export type ComponentPropName = keyof typeof COMPONENT_PROP_REGISTRY;
|
|
3934
3973
|
/** Forbidden duplicate concepts — use the canonical name on the left. */
|
package/dist/props/registry.js
CHANGED
|
@@ -3063,6 +3063,7 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
3063
3063
|
"ClassNameProp",
|
|
3064
3064
|
"SizeProp",
|
|
3065
3065
|
"ExtraProp",
|
|
3066
|
+
"IdProp",
|
|
3066
3067
|
{
|
|
3067
3068
|
field: "bodied",
|
|
3068
3069
|
local: true,
|
|
@@ -4763,6 +4764,55 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
4763
4764
|
"IdProp",
|
|
4764
4765
|
"ClassNameProp"
|
|
4765
4766
|
]
|
|
4767
|
+
},
|
|
4768
|
+
OrgChartNodeVariantProp: {
|
|
4769
|
+
group: "data-display",
|
|
4770
|
+
file: "components/data-display.prop.ts",
|
|
4771
|
+
vocabulary: ["ControlVariantProp"]
|
|
4772
|
+
},
|
|
4773
|
+
OrgChartNodeProp: {
|
|
4774
|
+
group: "data-display",
|
|
4775
|
+
file: "components/data-display.prop.ts",
|
|
4776
|
+
vocabulary: [
|
|
4777
|
+
"TitleProp",
|
|
4778
|
+
"ExtraProp",
|
|
4779
|
+
"ControlVariantProp",
|
|
4780
|
+
{ field: "key", local: true, reason: "The node's identity, unique across the chart." },
|
|
4781
|
+
{
|
|
4782
|
+
field: "name",
|
|
4783
|
+
local: true,
|
|
4784
|
+
reason: "The person's or agent's display name (a ReactNode), not a form field `name` \u2014 NameProp is the submitted-field key."
|
|
4785
|
+
},
|
|
4786
|
+
{
|
|
4787
|
+
field: "avatar",
|
|
4788
|
+
local: true,
|
|
4789
|
+
reason: "The mark at the box's inline start, usually an <Avatar>. Decorative."
|
|
4790
|
+
},
|
|
4791
|
+
{
|
|
4792
|
+
field: "children",
|
|
4793
|
+
local: true,
|
|
4794
|
+
reason: "The node's own reports \u2014 the hierarchy itself, not a slot."
|
|
4795
|
+
}
|
|
4796
|
+
]
|
|
4797
|
+
},
|
|
4798
|
+
OrgChartProp: {
|
|
4799
|
+
group: "data-display",
|
|
4800
|
+
file: "components/data-display.prop.ts",
|
|
4801
|
+
vocabulary: [
|
|
4802
|
+
"LabelProp",
|
|
4803
|
+
"ClassNameProp",
|
|
4804
|
+
"IdProp",
|
|
4805
|
+
{
|
|
4806
|
+
field: "data",
|
|
4807
|
+
local: true,
|
|
4808
|
+
reason: "The hierarchy of OrgChartNodeProp \u2014 the same shape feeds the boxes and the narrow Tree."
|
|
4809
|
+
},
|
|
4810
|
+
{
|
|
4811
|
+
field: "renderNode",
|
|
4812
|
+
local: true,
|
|
4813
|
+
reason: "Escape hatch replacing a box's content; the box, connectors and keyboard stay the library's."
|
|
4814
|
+
}
|
|
4815
|
+
]
|
|
4766
4816
|
}
|
|
4767
4817
|
};
|
|
4768
4818
|
const PROP_ALIASES_FORBIDDEN = {
|
|
@@ -289,6 +289,18 @@
|
|
|
289
289
|
background: var(--skeleton-background, hsl(var(--muted)));
|
|
290
290
|
}
|
|
291
291
|
|
|
292
|
+
.ui-skeleton-line {
|
|
293
|
+
block-size: var(--skeleton-block-height);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.ui-skeleton-caption {
|
|
297
|
+
block-size: var(--skeleton-caption-height);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.ui-skeleton-title {
|
|
301
|
+
block-size: var(--skeleton-title-height);
|
|
302
|
+
}
|
|
303
|
+
|
|
292
304
|
.ui-skeleton-table {
|
|
293
305
|
overflow: hidden;
|
|
294
306
|
border: var(--stroke-hairline) solid hsl(var(--border));
|
|
@@ -327,18 +339,6 @@
|
|
|
327
339
|
border-radius: var(--skeleton-radius, var(--radius));
|
|
328
340
|
padding: var(--skeleton-card-inset);
|
|
329
341
|
|
|
330
|
-
.ui-skeleton-line {
|
|
331
|
-
block-size: var(--skeleton-block-height);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.ui-skeleton-caption {
|
|
335
|
-
block-size: var(--skeleton-caption-height);
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
.ui-skeleton-title {
|
|
339
|
-
block-size: var(--skeleton-title-height);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
342
|
.ui-skeleton-detail-label {
|
|
343
343
|
block-size: var(--skeleton-caption-height);
|
|
344
344
|
inline-size: var(--skeleton-label-width);
|
package/dist/styles/control.css
CHANGED
|
@@ -1282,13 +1282,29 @@
|
|
|
1282
1282
|
margin-inline-start: var(--segmented-count-gap);
|
|
1283
1283
|
border-radius: var(--segmented-count-radius);
|
|
1284
1284
|
padding-inline: var(--segmented-count-space-inline);
|
|
1285
|
-
|
|
1286
|
-
|
|
1285
|
+
|
|
1286
|
+
background: var(--segmented-count-background, hsl(var(--background)));
|
|
1287
|
+
color: var(--segmented-count-color, hsl(var(--muted-foreground)));
|
|
1287
1288
|
font-size: var(--segmented-count-font-size);
|
|
1288
1289
|
line-height: 1;
|
|
1289
1290
|
font-variant-numeric: tabular-nums;
|
|
1290
1291
|
}
|
|
1291
1292
|
|
|
1293
|
+
.ui-segmented-item[data-state="checked"] .ui-segmented-count {
|
|
1294
|
+
background: var(
|
|
1295
|
+
--segmented-count-selected-background,
|
|
1296
|
+
hsl(var(--primary) / var(--segmented-count-selected-background-alpha, 100%))
|
|
1297
|
+
);
|
|
1298
|
+
color: var(--segmented-count-selected-color, hsl(var(--primary-foreground)));
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
@media (forced-colors: active) {
|
|
1302
|
+
.ui-segmented-item[data-state="checked"] .ui-segmented-count {
|
|
1303
|
+
outline: var(--segmented-count-forced-outline-width, var(--stroke-hairline)) solid
|
|
1304
|
+
currentColor;
|
|
1305
|
+
}
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1292
1308
|
.ui-tag-input {
|
|
1293
1309
|
display: flex;
|
|
1294
1310
|
flex-wrap: wrap;
|
|
@@ -1120,6 +1120,27 @@
|
|
|
1120
1120
|
max-block-size: var(--code-block-max-height-lg);
|
|
1121
1121
|
}
|
|
1122
1122
|
|
|
1123
|
+
.ui-code-block-frame {
|
|
1124
|
+
position: relative;
|
|
1125
|
+
min-inline-size: 0;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
.ui-code-block[data-copyable] {
|
|
1129
|
+
padding-inline-end: calc(var(--code-block-space-inset) + var(--control-height-xs));
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
.ui-code-block-copy {
|
|
1133
|
+
position: absolute;
|
|
1134
|
+
inset-block-start: var(--space-1);
|
|
1135
|
+
inset-inline-end: var(--space-1);
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1138
|
+
@media (pointer: coarse) {
|
|
1139
|
+
.ui-code-block[data-copyable] {
|
|
1140
|
+
padding-inline-end: calc(var(--code-block-space-inset) + var(--control-height-default));
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1123
1144
|
.ui-code-block [data-code-token="comment"],
|
|
1124
1145
|
.ui-prose pre [data-code-token="comment"] {
|
|
1125
1146
|
color: var(--code-block-token-comment-color, hsl(var(--muted-foreground)));
|
|
@@ -2430,3 +2451,155 @@
|
|
|
2430
2451
|
flex-direction: column;
|
|
2431
2452
|
}
|
|
2432
2453
|
}
|
|
2454
|
+
|
|
2455
|
+
@layer components {
|
|
2456
|
+
|
|
2457
|
+
.ui-org-chart {
|
|
2458
|
+
min-inline-size: 0;
|
|
2459
|
+
container: org-chart / inline-size;
|
|
2460
|
+
}
|
|
2461
|
+
|
|
2462
|
+
.ui-org-chart-scroll {
|
|
2463
|
+
overflow-x: auto;
|
|
2464
|
+
padding: var(--org-chart-padding);
|
|
2465
|
+
}
|
|
2466
|
+
|
|
2467
|
+
.ui-org-chart-tree,
|
|
2468
|
+
.ui-org-chart-children {
|
|
2469
|
+
display: flex;
|
|
2470
|
+
justify-content: center;
|
|
2471
|
+
margin: 0;
|
|
2472
|
+
padding: 0;
|
|
2473
|
+
list-style: none;
|
|
2474
|
+
}
|
|
2475
|
+
|
|
2476
|
+
.ui-org-chart-tree {
|
|
2477
|
+
inline-size: max-content;
|
|
2478
|
+
min-inline-size: 100%;
|
|
2479
|
+
}
|
|
2480
|
+
|
|
2481
|
+
.ui-org-chart-branch {
|
|
2482
|
+
position: relative;
|
|
2483
|
+
display: flex;
|
|
2484
|
+
flex-direction: column;
|
|
2485
|
+
align-items: center;
|
|
2486
|
+
padding-inline: calc(var(--org-chart-sibling-gap) / 2);
|
|
2487
|
+
}
|
|
2488
|
+
|
|
2489
|
+
.ui-org-chart-children {
|
|
2490
|
+
position: relative;
|
|
2491
|
+
padding-block-start: calc(var(--org-chart-level-gap) / 2);
|
|
2492
|
+
}
|
|
2493
|
+
|
|
2494
|
+
.ui-org-chart-children::before,
|
|
2495
|
+
.ui-org-chart-children > .ui-org-chart-branch::before,
|
|
2496
|
+
.ui-org-chart-children > .ui-org-chart-branch::after {
|
|
2497
|
+
position: absolute;
|
|
2498
|
+
box-sizing: border-box;
|
|
2499
|
+
inset-block-start: 0;
|
|
2500
|
+
block-size: calc(var(--org-chart-level-gap) / 2);
|
|
2501
|
+
border: 0 solid var(--org-chart-line-color, hsl(var(--border)));
|
|
2502
|
+
content: "";
|
|
2503
|
+
}
|
|
2504
|
+
|
|
2505
|
+
.ui-org-chart-children::before {
|
|
2506
|
+
inset-inline-start: calc(50% - var(--org-chart-line-width, var(--stroke-hairline)) / 2);
|
|
2507
|
+
border-inline-start-width: var(--org-chart-line-width, var(--stroke-hairline));
|
|
2508
|
+
}
|
|
2509
|
+
|
|
2510
|
+
.ui-org-chart-children > .ui-org-chart-branch {
|
|
2511
|
+
padding-block-start: calc(var(--org-chart-level-gap) / 2);
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
.ui-org-chart-children > .ui-org-chart-branch::before {
|
|
2515
|
+
inset-inline: 0 50%;
|
|
2516
|
+
border-block-start-width: var(--org-chart-line-width, var(--stroke-hairline));
|
|
2517
|
+
}
|
|
2518
|
+
|
|
2519
|
+
.ui-org-chart-children > .ui-org-chart-branch::after {
|
|
2520
|
+
inset-inline: calc(50% - var(--org-chart-line-width, var(--stroke-hairline)) / 2) 0;
|
|
2521
|
+
border-block-start-width: var(--org-chart-line-width, var(--stroke-hairline));
|
|
2522
|
+
border-inline-start-width: var(--org-chart-line-width, var(--stroke-hairline));
|
|
2523
|
+
}
|
|
2524
|
+
|
|
2525
|
+
.ui-org-chart-children > .ui-org-chart-branch:first-child::before,
|
|
2526
|
+
.ui-org-chart-children > .ui-org-chart-branch:last-child::after {
|
|
2527
|
+
border-block-start-width: 0;
|
|
2528
|
+
}
|
|
2529
|
+
|
|
2530
|
+
.ui-org-chart-node {
|
|
2531
|
+
position: relative;
|
|
2532
|
+
display: flex;
|
|
2533
|
+
box-sizing: border-box;
|
|
2534
|
+
inline-size: var(--org-chart-node-inline-size);
|
|
2535
|
+
align-items: flex-start;
|
|
2536
|
+
gap: var(--org-chart-node-gap);
|
|
2537
|
+
padding-block: var(--org-chart-node-padding-block);
|
|
2538
|
+
padding-inline: var(--org-chart-node-padding-inline);
|
|
2539
|
+
border: var(--org-chart-node-border-width, var(--stroke-hairline)) solid
|
|
2540
|
+
var(--org-chart-node-border-color, hsl(var(--border)));
|
|
2541
|
+
border-radius: var(--org-chart-node-radius, var(--radius));
|
|
2542
|
+
background: var(--org-chart-node-background, hsl(var(--card)));
|
|
2543
|
+
color: var(--org-chart-node-foreground, hsl(var(--card-foreground)));
|
|
2544
|
+
font-size: var(--org-chart-node-font-size);
|
|
2545
|
+
text-align: start;
|
|
2546
|
+
}
|
|
2547
|
+
|
|
2548
|
+
.ui-org-chart-node[data-variant="agent"] {
|
|
2549
|
+
border-style: var(--org-chart-agent-border-style);
|
|
2550
|
+
}
|
|
2551
|
+
|
|
2552
|
+
.ui-org-chart-avatar {
|
|
2553
|
+
display: inline-flex;
|
|
2554
|
+
flex: 0 0 auto;
|
|
2555
|
+
}
|
|
2556
|
+
|
|
2557
|
+
.ui-org-chart-text {
|
|
2558
|
+
display: flex;
|
|
2559
|
+
min-inline-size: 0;
|
|
2560
|
+
flex: 1 1 auto;
|
|
2561
|
+
flex-direction: column;
|
|
2562
|
+
gap: var(--org-chart-node-text-gap);
|
|
2563
|
+
}
|
|
2564
|
+
|
|
2565
|
+
.ui-org-chart-name {
|
|
2566
|
+
font-weight: var(--font-weight-medium);
|
|
2567
|
+
overflow-wrap: anywhere;
|
|
2568
|
+
}
|
|
2569
|
+
|
|
2570
|
+
.ui-org-chart-title {
|
|
2571
|
+
color: var(--org-chart-node-title-color, hsl(var(--muted-foreground)));
|
|
2572
|
+
overflow-wrap: anywhere;
|
|
2573
|
+
}
|
|
2574
|
+
|
|
2575
|
+
.ui-org-chart-extra {
|
|
2576
|
+
display: flex;
|
|
2577
|
+
flex-wrap: wrap;
|
|
2578
|
+
gap: var(--org-chart-node-text-gap);
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2581
|
+
.ui-org-chart-list {
|
|
2582
|
+
display: none;
|
|
2583
|
+
}
|
|
2584
|
+
|
|
2585
|
+
.ui-org-chart-list-row {
|
|
2586
|
+
display: inline-flex;
|
|
2587
|
+
min-inline-size: 0;
|
|
2588
|
+
align-items: center;
|
|
2589
|
+
gap: var(--org-chart-node-gap);
|
|
2590
|
+
}
|
|
2591
|
+
|
|
2592
|
+
.ui-org-chart-list-row .ui-org-chart-extra {
|
|
2593
|
+
display: inline-flex;
|
|
2594
|
+
}
|
|
2595
|
+
|
|
2596
|
+
@container org-chart (width < 40rem) {
|
|
2597
|
+
.ui-org-chart-scroll {
|
|
2598
|
+
display: none;
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2601
|
+
.ui-org-chart-list {
|
|
2602
|
+
display: block;
|
|
2603
|
+
}
|
|
2604
|
+
}
|
|
2605
|
+
}
|
|
@@ -60,6 +60,9 @@
|
|
|
60
60
|
inline-size: 100%;
|
|
61
61
|
|
|
62
62
|
align-self: start;
|
|
63
|
+
|
|
64
|
+
--form-field-control-band: initial;
|
|
65
|
+
--form-field-first-line: initial;
|
|
63
66
|
}
|
|
64
67
|
|
|
65
68
|
.ui-form-field[data-layout="inline"] {
|
|
@@ -84,6 +87,40 @@
|
|
|
84
87
|
|
|
85
88
|
min-height: var(--control-height);
|
|
86
89
|
align-content: center;
|
|
90
|
+
|
|
91
|
+
grid-template-rows: minmax(var(--form-field-control-band, auto), auto);
|
|
92
|
+
align-items: center;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.ui-form-field-control:has(> .ui-form-field-note:first-child) {
|
|
96
|
+
grid-template-rows: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.ui-form-field-control
|
|
100
|
+
> fieldset
|
|
101
|
+
> :is(.ui-choice-group[data-orientation="vertical"], .ui-choice-field) {
|
|
102
|
+
align-self: start;
|
|
103
|
+
margin-block-start: max(
|
|
104
|
+
0px,
|
|
105
|
+
calc(
|
|
106
|
+
(
|
|
107
|
+
var(--form-field-control-band, 0px) - var(--font-size-base) *
|
|
108
|
+
var(--control-label-line-height)
|
|
109
|
+
) /
|
|
110
|
+
2
|
|
111
|
+
)
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.ui-form-field:has(
|
|
116
|
+
> .ui-form-field-control
|
|
117
|
+
> fieldset
|
|
118
|
+
> :is(.ui-control-multiline, [data-slot="textarea-affix-wrapper"])
|
|
119
|
+
) {
|
|
120
|
+
--form-field-first-line: calc(
|
|
121
|
+
var(--control-border-width, var(--stroke-hairline)) + var(--control-multiline-padding-block) +
|
|
122
|
+
0.5lh
|
|
123
|
+
);
|
|
87
124
|
}
|
|
88
125
|
|
|
89
126
|
.ui-form-field-control > * {
|
|
@@ -96,13 +133,14 @@
|
|
|
96
133
|
) {
|
|
97
134
|
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
98
135
|
align-items: start;
|
|
136
|
+
--form-field-control-band: var(--control-height);
|
|
99
137
|
column-gap: var(--form-label-gap);
|
|
100
138
|
row-gap: var(--space-stack-xs);
|
|
101
139
|
}
|
|
102
140
|
|
|
103
141
|
.ui-form-field[data-collapse-below="false"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
104
142
|
> .ui-form-field-label {
|
|
105
|
-
min-block-size: var(--control-height);
|
|
143
|
+
min-block-size: calc(2 * var(--form-field-first-line, var(--control-height) / 2));
|
|
106
144
|
flex-wrap: wrap;
|
|
107
145
|
}
|
|
108
146
|
.ui-form-field[data-collapse-below="false"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
@@ -131,12 +169,13 @@
|
|
|
131
169
|
) {
|
|
132
170
|
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
133
171
|
align-items: start;
|
|
172
|
+
--form-field-control-band: var(--control-height);
|
|
134
173
|
column-gap: var(--form-label-gap);
|
|
135
174
|
row-gap: var(--space-stack-xs);
|
|
136
175
|
}
|
|
137
176
|
.ui-form-field[data-collapse-below="sm"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
138
177
|
> .ui-form-field-label {
|
|
139
|
-
min-block-size: var(--control-height);
|
|
178
|
+
min-block-size: calc(2 * var(--form-field-first-line, var(--control-height) / 2));
|
|
140
179
|
flex-wrap: wrap;
|
|
141
180
|
}
|
|
142
181
|
.ui-form-field[data-collapse-below="sm"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
@@ -165,12 +204,13 @@
|
|
|
165
204
|
) {
|
|
166
205
|
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
167
206
|
align-items: start;
|
|
207
|
+
--form-field-control-band: var(--control-height);
|
|
168
208
|
column-gap: var(--form-label-gap);
|
|
169
209
|
row-gap: var(--space-stack-xs);
|
|
170
210
|
}
|
|
171
211
|
.ui-form-field[data-collapse-below="md"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
172
212
|
> .ui-form-field-label {
|
|
173
|
-
min-block-size: var(--control-height);
|
|
213
|
+
min-block-size: calc(2 * var(--form-field-first-line, var(--control-height) / 2));
|
|
174
214
|
flex-wrap: wrap;
|
|
175
215
|
}
|
|
176
216
|
.ui-form-field[data-collapse-below="md"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
@@ -199,12 +239,13 @@
|
|
|
199
239
|
) {
|
|
200
240
|
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
201
241
|
align-items: start;
|
|
242
|
+
--form-field-control-band: var(--control-height);
|
|
202
243
|
column-gap: var(--form-label-gap);
|
|
203
244
|
row-gap: var(--space-stack-xs);
|
|
204
245
|
}
|
|
205
246
|
.ui-form-field[data-collapse-below="lg"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
206
247
|
> .ui-form-field-label {
|
|
207
|
-
min-block-size: var(--control-height);
|
|
248
|
+
min-block-size: calc(2 * var(--form-field-first-line, var(--control-height) / 2));
|
|
208
249
|
flex-wrap: wrap;
|
|
209
250
|
}
|
|
210
251
|
.ui-form-field[data-collapse-below="lg"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
@@ -233,12 +274,13 @@
|
|
|
233
274
|
) {
|
|
234
275
|
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
235
276
|
align-items: start;
|
|
277
|
+
--form-field-control-band: var(--control-height);
|
|
236
278
|
column-gap: var(--form-label-gap);
|
|
237
279
|
row-gap: var(--space-stack-xs);
|
|
238
280
|
}
|
|
239
281
|
.ui-form-field[data-collapse-below="xl"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
240
282
|
> .ui-form-field-label {
|
|
241
|
-
min-block-size: var(--control-height);
|
|
283
|
+
min-block-size: calc(2 * var(--form-field-first-line, var(--control-height) / 2));
|
|
242
284
|
flex-wrap: wrap;
|
|
243
285
|
}
|
|
244
286
|
.ui-form-field[data-collapse-below="xl"]:is([data-layout="horizontal"], [data-layout="inline"])
|
package/dist/styles/layers.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "31.
|
|
2
|
+
"version": "31.5.0",
|
|
3
3
|
"generatedBy": "scripts/gen-style-layers.mjs — do not edit by hand; run `pnpm gen:style-layers`",
|
|
4
4
|
"base": "base.css",
|
|
5
5
|
"fonts": "fonts.css",
|
|
@@ -349,6 +349,9 @@
|
|
|
349
349
|
},
|
|
350
350
|
"CodeBlock": {
|
|
351
351
|
"layers": [
|
|
352
|
+
"control.css",
|
|
353
|
+
"text-layout.css",
|
|
354
|
+
"dialog-layout.css",
|
|
352
355
|
"data-display-layout.css"
|
|
353
356
|
]
|
|
354
357
|
},
|
|
@@ -673,6 +676,16 @@
|
|
|
673
676
|
"control.css"
|
|
674
677
|
]
|
|
675
678
|
},
|
|
679
|
+
"OrgChart": {
|
|
680
|
+
"layers": [
|
|
681
|
+
"layout.css",
|
|
682
|
+
"control.css",
|
|
683
|
+
"table-layout.css",
|
|
684
|
+
"alert-layout.css",
|
|
685
|
+
"data-display-layout.css",
|
|
686
|
+
"form-layout.css"
|
|
687
|
+
]
|
|
688
|
+
},
|
|
676
689
|
"OrgSwitcher": {
|
|
677
690
|
"layers": [
|
|
678
691
|
"shell-layout.css",
|
package/dist/styles/layout.css
CHANGED
package/dist/tokens/base.css
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
@import "./components/text.css";
|
|
39
39
|
@import "./components/tree.css";
|
|
40
40
|
@import "./components/thought-chain.css";
|
|
41
|
+
@import "./components/org-chart.css";
|
|
41
42
|
@import "./components/welcome.css";
|
|
42
43
|
@import "./components/actions.css";
|
|
43
44
|
@import "./components/attachments.css";
|