@godxjp/ui 33.25.2 → 33.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/agent/START-HERE.md +5 -5
- package/agent/components/Flex.json +28 -3
- package/agent/components/RadarChart.json +119 -0
- package/agent/components-index.json +5 -0
- package/agent/components.json +147 -3
- package/agent/index.json +6 -6
- package/agent/llms.txt +6 -6
- package/agent/tokens.json +198 -0
- package/dist/components/charts/index.d.ts +2 -0
- package/dist/components/charts/index.js +3 -1
- package/dist/components/charts/radar-chart.d.ts +5 -0
- package/dist/components/charts/radar-chart.js +273 -0
- package/dist/components/layout/flex.js +47 -1
- package/dist/contracts/measurement.json +1 -1
- package/dist/i18n/messages/en.json +1 -0
- package/dist/i18n/messages/ja.json +1 -0
- package/dist/i18n/messages/vi.json +1 -0
- package/dist/props/components/charts.prop.d.ts +19 -0
- package/dist/props/components/layout.prop.d.ts +14 -2
- package/dist/props/registry.d.ts +57 -0
- package/dist/props/registry.js +50 -0
- package/dist/styles/layers.json +7 -1
- package/dist/styles/layout.css +153 -0
- package/dist/styles/precompiled/base.css +1 -1
- package/dist/styles/precompiled/layout.css +1 -1
- package/dist/styles.css +1 -1
- package/dist/tokens/base.css +4 -0
- package/dist/tokens/components/flex.css +25 -0
- package/dist/tokens/components/radar-chart.css +21 -0
- package/package.json +6 -2
|
@@ -171,9 +171,21 @@ export type FlexJustifyProp = "start" | "center" | "end" | "between" | "around"
|
|
|
171
171
|
* Bringhurst's 45–75 character reading band, `wide` (72rem) is the MARKETING measure. Do not give
|
|
172
172
|
* a reading column `wide` — that rule is `--page-measure-wide`'s own, and it travels with the word.
|
|
173
173
|
*/
|
|
174
|
-
export type FlexMeasureProp = "narrow" | "medium" | "wide";
|
|
174
|
+
export type FlexMeasureProp = "narrow" | "medium" | "wide" | "card" | "card-compact";
|
|
175
175
|
/** @see Flex */
|
|
176
176
|
export type FlexProp = React.HTMLAttributes<HTMLElement> & {
|
|
177
|
+
/** React19 ref to the rendered element. */
|
|
178
|
+
ref?: React.Ref<HTMLElement>;
|
|
179
|
+
/** Fit the visual viewport below this element's measured top; observes resize and scroll. */
|
|
180
|
+
viewport?: boolean;
|
|
181
|
+
/** Equal flexible region: flex 1 1 0 with zero minimum block size. */
|
|
182
|
+
basis?: "equal";
|
|
183
|
+
/** Internal scrolling; scroll-x and scroll-y constrain the other axis. */
|
|
184
|
+
overflow?: "hidden" | "auto" | "scroll-x" | "scroll-y";
|
|
185
|
+
/** Declarative orientation; no implied domain action. */
|
|
186
|
+
rotate?: 0 | 90 | 180 | 270;
|
|
187
|
+
/** Animate orientation changes only. Reduced motion always settles immediately. */
|
|
188
|
+
animated?: boolean;
|
|
177
189
|
/**
|
|
178
190
|
* Render element — `div` (default) or `span` when the Flex sits in a PHRASING context and a
|
|
179
191
|
* `<div>` would be invalid HTML: inside a `TabsTrigger`/`PopoverTrigger`/`Button` (all of which
|
|
@@ -203,7 +215,7 @@ export type FlexProp = React.HTMLAttributes<HTMLElement> & {
|
|
|
203
215
|
*/
|
|
204
216
|
marker?: FlexMarkerProp;
|
|
205
217
|
/** Lightweight surfaces for rows and notices; no Card elevation by default. */
|
|
206
|
-
surface?: "muted" | "popover" | "warning";
|
|
218
|
+
surface?: "muted" | "popover" | "warning" | "felt" | "etched";
|
|
207
219
|
/** Negative inline inset, using the same spacing scale as pad. */
|
|
208
220
|
bleed?: GapProp;
|
|
209
221
|
/** Floating row actions: show on parent hover, focus-within, and touch. */
|
package/dist/props/registry.d.ts
CHANGED
|
@@ -909,6 +909,26 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
909
909
|
readonly group: "layout";
|
|
910
910
|
readonly file: "components/layout.prop.ts";
|
|
911
911
|
readonly vocabulary: readonly [{
|
|
912
|
+
readonly field: "viewport";
|
|
913
|
+
readonly local: true;
|
|
914
|
+
readonly reason: "Generic bounded composition and declarative orientation capability; inert when omitted.";
|
|
915
|
+
}, {
|
|
916
|
+
readonly field: "basis";
|
|
917
|
+
readonly local: true;
|
|
918
|
+
readonly reason: "Generic bounded composition and declarative orientation capability; inert when omitted.";
|
|
919
|
+
}, {
|
|
920
|
+
readonly field: "overflow";
|
|
921
|
+
readonly local: true;
|
|
922
|
+
readonly reason: "Generic bounded composition and declarative orientation capability; inert when omitted.";
|
|
923
|
+
}, {
|
|
924
|
+
readonly field: "rotate";
|
|
925
|
+
readonly local: true;
|
|
926
|
+
readonly reason: "Generic bounded composition and declarative orientation capability; inert when omitted.";
|
|
927
|
+
}, {
|
|
928
|
+
readonly field: "animated";
|
|
929
|
+
readonly local: true;
|
|
930
|
+
readonly reason: "Generic bounded composition and declarative orientation capability; inert when omitted.";
|
|
931
|
+
}, {
|
|
912
932
|
readonly field: "as";
|
|
913
933
|
readonly local: true;
|
|
914
934
|
readonly reason: "Closed tag seam (div | span) so a Flex stays valid HTML inside a phrasing-only parent such as the <button> a TabsTrigger renders — same shape as ListRow's `as` (gh#354).";
|
|
@@ -3616,6 +3636,43 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
3616
3636
|
readonly reason: "Chart-specific point-marker toggle.";
|
|
3617
3637
|
}];
|
|
3618
3638
|
};
|
|
3639
|
+
readonly RadarChartProp: {
|
|
3640
|
+
readonly group: "data-display";
|
|
3641
|
+
readonly file: "components/charts.prop.ts";
|
|
3642
|
+
readonly vocabulary: readonly ["LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "FooterProp", "ClassNameProp", "IdProp", {
|
|
3643
|
+
readonly field: "data";
|
|
3644
|
+
readonly local: true;
|
|
3645
|
+
readonly reason: "Complete same-unit polar profile rows.";
|
|
3646
|
+
}, {
|
|
3647
|
+
readonly field: "categoryKey";
|
|
3648
|
+
readonly local: true;
|
|
3649
|
+
readonly reason: "Accessor for translated axis labels.";
|
|
3650
|
+
}, {
|
|
3651
|
+
readonly field: "valueKey";
|
|
3652
|
+
readonly local: true;
|
|
3653
|
+
readonly reason: "Accessor for the quantitative axis value.";
|
|
3654
|
+
}, {
|
|
3655
|
+
readonly field: "valueMax";
|
|
3656
|
+
readonly local: true;
|
|
3657
|
+
readonly reason: "Required positive shared scale ceiling.";
|
|
3658
|
+
}, {
|
|
3659
|
+
readonly field: "valueTicks";
|
|
3660
|
+
readonly local: true;
|
|
3661
|
+
readonly reason: "Optional positive shared scale ticks.";
|
|
3662
|
+
}, {
|
|
3663
|
+
readonly field: "showCaption";
|
|
3664
|
+
readonly local: true;
|
|
3665
|
+
readonly reason: "Hide visible caption while preserving figure name.";
|
|
3666
|
+
}, {
|
|
3667
|
+
readonly field: "numberFormat";
|
|
3668
|
+
readonly local: true;
|
|
3669
|
+
readonly reason: "Intl options for exact profile values.";
|
|
3670
|
+
}, {
|
|
3671
|
+
readonly field: "ref";
|
|
3672
|
+
readonly local: true;
|
|
3673
|
+
readonly reason: "Forwarded figure reference.";
|
|
3674
|
+
}];
|
|
3675
|
+
};
|
|
3619
3676
|
readonly BarChartProp: {
|
|
3620
3677
|
readonly group: "data-display";
|
|
3621
3678
|
readonly file: "components/charts.prop.ts";
|
package/dist/props/registry.js
CHANGED
|
@@ -912,6 +912,31 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
912
912
|
group: "layout",
|
|
913
913
|
file: "components/layout.prop.ts",
|
|
914
914
|
vocabulary: [
|
|
915
|
+
{
|
|
916
|
+
field: "viewport",
|
|
917
|
+
local: true,
|
|
918
|
+
reason: "Generic bounded composition and declarative orientation capability; inert when omitted."
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
field: "basis",
|
|
922
|
+
local: true,
|
|
923
|
+
reason: "Generic bounded composition and declarative orientation capability; inert when omitted."
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
field: "overflow",
|
|
927
|
+
local: true,
|
|
928
|
+
reason: "Generic bounded composition and declarative orientation capability; inert when omitted."
|
|
929
|
+
},
|
|
930
|
+
{
|
|
931
|
+
field: "rotate",
|
|
932
|
+
local: true,
|
|
933
|
+
reason: "Generic bounded composition and declarative orientation capability; inert when omitted."
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
field: "animated",
|
|
937
|
+
local: true,
|
|
938
|
+
reason: "Generic bounded composition and declarative orientation capability; inert when omitted."
|
|
939
|
+
},
|
|
915
940
|
{
|
|
916
941
|
field: "as",
|
|
917
942
|
local: true,
|
|
@@ -3809,6 +3834,31 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
3809
3834
|
{ field: "showDots", local: true, reason: "Chart-specific point-marker toggle." }
|
|
3810
3835
|
]
|
|
3811
3836
|
},
|
|
3837
|
+
RadarChartProp: {
|
|
3838
|
+
group: "data-display",
|
|
3839
|
+
file: "components/charts.prop.ts",
|
|
3840
|
+
vocabulary: [
|
|
3841
|
+
"LabelProp",
|
|
3842
|
+
"DescriptionProp",
|
|
3843
|
+
"SizeProp",
|
|
3844
|
+
"EmptyMessageProp",
|
|
3845
|
+
"FooterProp",
|
|
3846
|
+
"ClassNameProp",
|
|
3847
|
+
"IdProp",
|
|
3848
|
+
{ field: "data", local: true, reason: "Complete same-unit polar profile rows." },
|
|
3849
|
+
{ field: "categoryKey", local: true, reason: "Accessor for translated axis labels." },
|
|
3850
|
+
{ field: "valueKey", local: true, reason: "Accessor for the quantitative axis value." },
|
|
3851
|
+
{ field: "valueMax", local: true, reason: "Required positive shared scale ceiling." },
|
|
3852
|
+
{ field: "valueTicks", local: true, reason: "Optional positive shared scale ticks." },
|
|
3853
|
+
{
|
|
3854
|
+
field: "showCaption",
|
|
3855
|
+
local: true,
|
|
3856
|
+
reason: "Hide visible caption while preserving figure name."
|
|
3857
|
+
},
|
|
3858
|
+
{ field: "numberFormat", local: true, reason: "Intl options for exact profile values." },
|
|
3859
|
+
{ field: "ref", local: true, reason: "Forwarded figure reference." }
|
|
3860
|
+
]
|
|
3861
|
+
},
|
|
3812
3862
|
BarChartProp: {
|
|
3813
3863
|
group: "data-display",
|
|
3814
3864
|
file: "components/charts.prop.ts",
|
package/dist/styles/layers.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "33.
|
|
2
|
+
"version": "33.26.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",
|
|
@@ -1094,6 +1094,12 @@
|
|
|
1094
1094
|
"data-display-layout.css"
|
|
1095
1095
|
]
|
|
1096
1096
|
},
|
|
1097
|
+
"RadarChart": {
|
|
1098
|
+
"layers": [
|
|
1099
|
+
"layout.css",
|
|
1100
|
+
"chart-layout.css"
|
|
1101
|
+
]
|
|
1102
|
+
},
|
|
1097
1103
|
"Radio": {
|
|
1098
1104
|
"layers": [
|
|
1099
1105
|
"control.css",
|
package/dist/styles/layout.css
CHANGED
|
@@ -2578,5 +2578,158 @@
|
|
|
2578
2578
|
grid-template-columns: var(--responsive-grid-panels-track-size);
|
|
2579
2579
|
gap: var(--responsive-grid-panels-gap);
|
|
2580
2580
|
}
|
|
2581
|
+
}
|
|
2582
|
+
|
|
2583
|
+
@layer components {
|
|
2584
|
+
.ui-flex[data-viewport] {
|
|
2585
|
+
block-size: var(--flex-viewport-available, 100dvh);
|
|
2586
|
+
min-block-size: 0;
|
|
2587
|
+
|
|
2588
|
+
overflow: clip;
|
|
2589
|
+
overflow-clip-margin: var(--focus-ring-clip-margin);
|
|
2590
|
+
}
|
|
2591
|
+
.ui-flex[data-basis="equal"] {
|
|
2592
|
+
flex: 1 1 0;
|
|
2593
|
+
min-block-size: 0;
|
|
2594
|
+
min-inline-size: 0;
|
|
2595
|
+
}
|
|
2596
|
+
.ui-flex[data-overflow] {
|
|
2597
|
+
min-block-size: 0;
|
|
2598
|
+
min-inline-size: 0;
|
|
2599
|
+
}
|
|
2600
|
+
.ui-flex[data-overflow="hidden"] {
|
|
2601
|
+
overflow: clip;
|
|
2602
|
+
overflow-clip-margin: var(--focus-ring-clip-margin);
|
|
2603
|
+
}
|
|
2604
|
+
.ui-flex[data-overflow="auto"] {
|
|
2605
|
+
overflow: auto;
|
|
2606
|
+
}
|
|
2607
|
+
.ui-flex[data-overflow="scroll-x"] {
|
|
2608
|
+
overflow-x: auto;
|
|
2609
|
+
overflow-y: hidden;
|
|
2610
|
+
}
|
|
2611
|
+
.ui-flex[data-overflow="scroll-y"] {
|
|
2612
|
+
overflow-y: auto;
|
|
2613
|
+
overflow-x: hidden;
|
|
2614
|
+
}
|
|
2615
|
+
.ui-flex[data-measure="card"],
|
|
2616
|
+
.ui-flex[data-measure="card-compact"] {
|
|
2617
|
+
margin-inline: 0;
|
|
2618
|
+
flex: 0 0 auto;
|
|
2619
|
+
max-inline-size: none;
|
|
2620
|
+
}
|
|
2621
|
+
.ui-flex[data-measure="card"] {
|
|
2622
|
+
inline-size: calc(var(--flex-card-width) * var(--flex-card-size-ratio));
|
|
2623
|
+
block-size: calc(var(--flex-card-width) * var(--flex-card-size-ratio));
|
|
2624
|
+
align-items: center;
|
|
2625
|
+
justify-content: center;
|
|
2626
|
+
}
|
|
2627
|
+
.ui-flex[data-measure="card-compact"] {
|
|
2628
|
+
inline-size: calc(var(--flex-compact-card-width) * var(--flex-card-size-ratio));
|
|
2629
|
+
block-size: calc(var(--flex-compact-card-width) * var(--flex-card-size-ratio));
|
|
2630
|
+
align-items: center;
|
|
2631
|
+
justify-content: center;
|
|
2632
|
+
}
|
|
2633
|
+
.ui-flex[data-rotate="0"] {
|
|
2634
|
+
transform: rotate(0deg);
|
|
2635
|
+
}
|
|
2636
|
+
.ui-flex[data-rotate="90"] {
|
|
2637
|
+
transform: rotate(90deg);
|
|
2638
|
+
}
|
|
2639
|
+
.ui-flex[data-rotate="180"] {
|
|
2640
|
+
transform: rotate(180deg);
|
|
2641
|
+
}
|
|
2642
|
+
.ui-flex[data-rotate="270"] {
|
|
2643
|
+
transform: rotate(270deg);
|
|
2644
|
+
}
|
|
2645
|
+
.ui-flex[data-animated][data-rotate] {
|
|
2646
|
+
transition: transform var(--flex-orientation-duration) var(--ease-decelerate);
|
|
2647
|
+
}
|
|
2648
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2649
|
+
.ui-flex[data-animated][data-rotate] {
|
|
2650
|
+
transition: none;
|
|
2651
|
+
}
|
|
2652
|
+
}
|
|
2653
|
+
}
|
|
2654
|
+
|
|
2655
|
+
@layer components {
|
|
2656
|
+
.ui-flex[data-measure="card"] > * {
|
|
2657
|
+
inline-size: var(--flex-card-width);
|
|
2658
|
+
max-inline-size: var(--flex-card-width);
|
|
2659
|
+
}
|
|
2660
|
+
.ui-flex[data-measure="card-compact"] > * {
|
|
2661
|
+
inline-size: var(--flex-compact-card-width);
|
|
2662
|
+
max-inline-size: var(--flex-compact-card-width);
|
|
2663
|
+
}
|
|
2664
|
+
.ui-flex[data-viewport] {
|
|
2665
|
+
padding-block-end: env(safe-area-inset-bottom, 0px);
|
|
2666
|
+
box-sizing: border-box;
|
|
2667
|
+
}
|
|
2668
|
+
}
|
|
2581
2669
|
|
|
2670
|
+
@layer components {
|
|
2671
|
+
.ui-flex[data-surface="felt"] {
|
|
2672
|
+
--background: var(--flex-felt-background, var(--primary));
|
|
2673
|
+
--button-outline-foreground: hsl(var(--foreground));
|
|
2674
|
+
--button-outline-background: transparent;
|
|
2675
|
+
--button-outline-border-color: hsl(
|
|
2676
|
+
var(--flex-etched-border-color, var(--foreground)) / var(--flex-felt-control-border-alpha)
|
|
2677
|
+
);
|
|
2678
|
+
--button-link-foreground: hsl(var(--foreground));
|
|
2679
|
+
--control-surface-background: hsl(var(--background));
|
|
2680
|
+
--control-surface-border-color: hsl(
|
|
2681
|
+
var(--flex-etched-border-color, var(--foreground)) / var(--flex-felt-control-border-alpha)
|
|
2682
|
+
);
|
|
2683
|
+
--secondary: var(--background);
|
|
2684
|
+
--secondary-foreground: var(--foreground);
|
|
2685
|
+
--accent: var(--foreground);
|
|
2686
|
+
--accent-foreground: var(--background);
|
|
2687
|
+
--slider-track-background: hsl(
|
|
2688
|
+
var(--flex-etched-border-color, var(--foreground)) / var(--flex-felt-track-alpha)
|
|
2689
|
+
);
|
|
2690
|
+
--slider-range-background: hsl(var(--foreground));
|
|
2691
|
+
|
|
2692
|
+
--foreground: var(--flex-felt-foreground, var(--primary-foreground));
|
|
2693
|
+
--muted-foreground: var(--flex-felt-muted-foreground, var(--primary-foreground));
|
|
2694
|
+
--ring: var(--flex-felt-focus-color, var(--primary-foreground));
|
|
2695
|
+
color: hsl(var(--foreground));
|
|
2696
|
+
background-color: hsl(var(--flex-felt-background, var(--primary)));
|
|
2697
|
+
background-image:
|
|
2698
|
+
radial-gradient(
|
|
2699
|
+
ellipse at center,
|
|
2700
|
+
hsl(var(--foreground) / var(--flex-felt-highlight-alpha)),
|
|
2701
|
+
transparent var(--flex-felt-highlight-size)
|
|
2702
|
+
),
|
|
2703
|
+
repeating-linear-gradient(
|
|
2704
|
+
0deg,
|
|
2705
|
+
hsl(var(--foreground) / var(--flex-felt-grain-alpha)) 0,
|
|
2706
|
+
transparent var(--flex-felt-grain-width),
|
|
2707
|
+
transparent var(--flex-felt-grain-size)
|
|
2708
|
+
),
|
|
2709
|
+
repeating-linear-gradient(
|
|
2710
|
+
90deg,
|
|
2711
|
+
hsl(var(--foreground) / var(--flex-felt-grain-alpha)) 0,
|
|
2712
|
+
transparent var(--flex-felt-grain-width),
|
|
2713
|
+
transparent var(--flex-felt-grain-size)
|
|
2714
|
+
);
|
|
2715
|
+
}
|
|
2716
|
+
.ui-flex[data-surface="etched"] {
|
|
2717
|
+
border: var(--flex-etched-border-size) solid
|
|
2718
|
+
hsl(var(--flex-etched-border-color, var(--foreground)) / var(--flex-etched-border-alpha));
|
|
2719
|
+
border-radius: var(--flex-etched-radius, var(--radius-md));
|
|
2720
|
+
background: transparent;
|
|
2721
|
+
box-sizing: border-box;
|
|
2722
|
+
}
|
|
2723
|
+
}
|
|
2724
|
+
|
|
2725
|
+
@layer components {
|
|
2726
|
+
.ui-flex[data-surface="felt"] .ui-button--default {
|
|
2727
|
+
--primary-foreground: var(--background);
|
|
2728
|
+
--primary-hover: var(--foreground);
|
|
2729
|
+
--button-default-background: hsl(var(--foreground));
|
|
2730
|
+
}
|
|
2731
|
+
.ui-flex[data-surface="felt"] .ui-slider-thumb {
|
|
2732
|
+
background: hsl(var(--foreground));
|
|
2733
|
+
border-color: hsl(var(--flex-etched-border-color, var(--foreground)));
|
|
2734
|
+
}
|
|
2582
2735
|
}
|