@godxjp/ui 33.15.0 → 33.17.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.
Files changed (88) hide show
  1. package/README.md +4 -4
  2. package/agent/START-HERE.md +7 -7
  3. package/agent/components/AppShell.json +1 -1
  4. package/agent/components/AreaChart.json +6 -0
  5. package/agent/components/BarChart.json +6 -0
  6. package/agent/components/Card.json +1 -1
  7. package/agent/components/DashboardGrid.json +76 -0
  8. package/agent/components/DataTable.json +1 -1
  9. package/agent/components/Heading.json +6 -0
  10. package/agent/components/HeatmapChart.json +6 -0
  11. package/agent/components/LineChart.json +6 -0
  12. package/agent/components/Pagination.json +1 -1
  13. package/agent/components/PieChart.json +6 -0
  14. package/agent/components/Table.json +2 -1
  15. package/agent/components-index.json +9 -3
  16. package/agent/components.json +118 -5
  17. package/agent/index.json +8 -8
  18. package/agent/llms.txt +6 -6
  19. package/agent/rules.json +1 -1
  20. package/agent/tokens.json +74 -2
  21. package/agent/vocabulary.json +12 -0
  22. package/dist/components/charts/chart-cartesian.d.ts +3 -2
  23. package/dist/components/charts/chart-cartesian.js +146 -46
  24. package/dist/components/charts/chart-datum-selection.d.ts +15 -0
  25. package/dist/components/charts/chart-datum-selection.js +97 -0
  26. package/dist/components/charts/chart-frame.d.ts +2 -1
  27. package/dist/components/charts/chart-frame.js +2 -1
  28. package/dist/components/charts/heatmap-chart.d.ts +1 -1
  29. package/dist/components/charts/heatmap-chart.js +20 -0
  30. package/dist/components/charts/index.d.ts +1 -1
  31. package/dist/components/charts/pie-chart.d.ts +2 -1
  32. package/dist/components/charts/pie-chart.js +36 -1
  33. package/dist/components/charts/recharts-peer.d.ts +1 -1
  34. package/dist/components/charts/recharts-peer.js +6 -0
  35. package/dist/components/data-display/index.d.ts +1 -1
  36. package/dist/components/data-display/index.js +10 -1
  37. package/dist/components/data-display/table.d.ts +9 -0
  38. package/dist/components/data-display/table.js +3 -0
  39. package/dist/components/general/typography.d.ts +1 -0
  40. package/dist/components/general/typography.js +3 -0
  41. package/dist/contracts/measurement.json +1 -1
  42. package/dist/i18n/messages/en.json +10 -0
  43. package/dist/i18n/messages/ja.json +10 -0
  44. package/dist/i18n/messages/vi.json +10 -0
  45. package/dist/lab/dashboard-grid-layout.d.ts +4 -0
  46. package/dist/lab/dashboard-grid-layout.js +36 -0
  47. package/dist/lab/dashboard-grid.d.ts +5 -0
  48. package/dist/lab/dashboard-grid.js +258 -0
  49. package/dist/lab/index.d.ts +2 -0
  50. package/dist/lab/index.js +2 -0
  51. package/dist/lib/hooks.d.ts +8 -0
  52. package/dist/lib/hooks.js +20 -21
  53. package/dist/props/components/charts.prop.d.ts +11 -0
  54. package/dist/props/components/dashboard-grid.prop.d.ts +27 -0
  55. package/dist/props/components/dashboard-grid.prop.js +0 -0
  56. package/dist/props/components/general.prop.d.ts +8 -1
  57. package/dist/props/components/index.d.ts +1 -1
  58. package/dist/props/registry.d.ts +89 -6
  59. package/dist/props/registry.js +85 -0
  60. package/dist/props/vocabulary/index.d.ts +1 -1
  61. package/dist/props/vocabulary/interaction.prop.d.ts +6 -0
  62. package/dist/styles/badge-layout.css +1 -0
  63. package/dist/styles/base.css +8 -0
  64. package/dist/styles/card-layout.css +8 -0
  65. package/dist/styles/chart-layout.css +28 -0
  66. package/dist/styles/control.css +82 -0
  67. package/dist/styles/dialog-layout.css +7 -3
  68. package/dist/styles/layers.json +10 -1
  69. package/dist/styles/layout.css +2 -0
  70. package/dist/styles/logo-layout.css +18 -12
  71. package/dist/styles/navigation-layout.css +2 -0
  72. package/dist/styles/shell-layout.css +40 -1
  73. package/dist/styles/table-layout.css +30 -0
  74. package/dist/styles/text-layout.css +5 -0
  75. package/dist/styles.css +1 -1
  76. package/dist/theme/famgia.service.css +10 -8
  77. package/dist/themes/godx-tokens.css +20 -16
  78. package/dist/tokens/base.css +2 -0
  79. package/dist/tokens/components/dashboard-grid.css +14 -0
  80. package/dist/tokens/components/feedback.css +2 -0
  81. package/dist/tokens/components/logo.css +6 -4
  82. package/dist/tokens/components/table.css +5 -1
  83. package/dist/tokens/derived.css +28 -24
  84. package/dist/tokens/foundation.css +62 -56
  85. package/dist/tokens/semantic/layout.css +5 -3
  86. package/docs/COMPOSITION-VS-COMPONENT.md +15 -14
  87. package/docs/TOKENS.md +33 -0
  88. package/package.json +2 -2
@@ -464,6 +464,11 @@ export declare const VOCABULARY_REGISTRY: {
464
464
  readonly category: "interaction";
465
465
  readonly description: "Heading level 1-4 — the semantic element, and the --heading-h* size it takes unless `size` (TextSizeProp) overrides it";
466
466
  };
467
+ readonly HeadingFamilyProp: {
468
+ readonly file: "vocabulary/interaction.prop.ts";
469
+ readonly category: "interaction";
470
+ readonly description: "Heading face display | editorial — editorial reads --font-family-editorial (an opt-in serif for a hero or a public page section), falling back to --font-family-display";
471
+ };
467
472
  readonly TextAlignProp: {
468
473
  readonly file: "vocabulary/interaction.prop.ts";
469
474
  readonly category: "interaction";
@@ -717,6 +722,64 @@ export declare const VOCABULARY_REGISTRY: {
717
722
  };
718
723
  export type VocabularyPropName = keyof typeof VOCABULARY_REGISTRY;
719
724
  export declare const COMPONENT_PROP_REGISTRY: {
725
+ readonly DashboardGridProp: {
726
+ readonly group: "layout";
727
+ readonly file: "components/dashboard-grid.prop.ts";
728
+ readonly vocabulary: readonly ["ClassNameProp", "IdProp", {
729
+ readonly field: "items";
730
+ readonly local: true;
731
+ readonly reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API.";
732
+ }, {
733
+ readonly field: "layout";
734
+ readonly local: true;
735
+ readonly reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API.";
736
+ }, {
737
+ readonly field: "defaultLayout";
738
+ readonly local: true;
739
+ readonly reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API.";
740
+ }, {
741
+ readonly field: "onLayoutChange";
742
+ readonly local: true;
743
+ readonly reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API.";
744
+ }, {
745
+ readonly field: "columns";
746
+ readonly local: true;
747
+ readonly reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API.";
748
+ }, {
749
+ readonly field: "rowHeight";
750
+ readonly local: true;
751
+ readonly reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API.";
752
+ }, {
753
+ readonly field: "editable";
754
+ readonly local: true;
755
+ readonly reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API.";
756
+ }];
757
+ };
758
+ readonly DashboardGridItemProp: {
759
+ readonly group: "layout";
760
+ readonly file: "components/dashboard-grid.prop.ts";
761
+ readonly vocabulary: readonly [{
762
+ readonly field: "id";
763
+ readonly local: true;
764
+ readonly reason: "Persisted grid cell coordinate or identity.";
765
+ }, {
766
+ readonly field: "x";
767
+ readonly local: true;
768
+ readonly reason: "Persisted grid cell coordinate or identity.";
769
+ }, {
770
+ readonly field: "y";
771
+ readonly local: true;
772
+ readonly reason: "Persisted grid cell coordinate or identity.";
773
+ }, {
774
+ readonly field: "w";
775
+ readonly local: true;
776
+ readonly reason: "Persisted grid cell coordinate or identity.";
777
+ }, {
778
+ readonly field: "h";
779
+ readonly local: true;
780
+ readonly reason: "Persisted grid cell coordinate or identity.";
781
+ }];
782
+ };
720
783
  readonly AppProviderProp: {
721
784
  readonly group: "app";
722
785
  readonly file: "components/app.prop.ts";
@@ -1628,7 +1691,7 @@ export declare const COMPONENT_PROP_REGISTRY: {
1628
1691
  readonly HeadingProp: {
1629
1692
  readonly group: "general";
1630
1693
  readonly file: "components/general.prop.ts";
1631
- readonly vocabulary: readonly ["HeadingLevelProp", "TextSizeProp", "TextToneProp", "TextAlignProp", "ClassNameProp"];
1694
+ readonly vocabulary: readonly ["HeadingLevelProp", "HeadingFamilyProp", "TextSizeProp", "TextToneProp", "TextAlignProp", "ClassNameProp"];
1632
1695
  };
1633
1696
  readonly TypographyBlockProp: {
1634
1697
  readonly group: "general";
@@ -2319,7 +2382,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
2319
2382
  readonly LineChartProp: {
2320
2383
  readonly group: "data-display";
2321
2384
  readonly file: "components/charts.prop.ts";
2322
- readonly vocabulary: readonly ["LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2385
+ readonly vocabulary: readonly [{
2386
+ readonly field: "onDatumSelect";
2387
+ readonly local: true;
2388
+ readonly reason: "Pointer and keyboard datum selection action, independent of dashboard state.";
2389
+ }, "LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2323
2390
  readonly field: "data";
2324
2391
  readonly local: true;
2325
2392
  readonly reason: "Chart row data (category + value per series).";
@@ -2372,7 +2439,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
2372
2439
  readonly BarChartProp: {
2373
2440
  readonly group: "data-display";
2374
2441
  readonly file: "components/charts.prop.ts";
2375
- readonly vocabulary: readonly ["LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2442
+ readonly vocabulary: readonly [{
2443
+ readonly field: "onDatumSelect";
2444
+ readonly local: true;
2445
+ readonly reason: "Pointer and keyboard datum selection action, independent of dashboard state.";
2446
+ }, "LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2376
2447
  readonly field: "data";
2377
2448
  readonly local: true;
2378
2449
  readonly reason: "Chart row data (category + value per series).";
@@ -2462,7 +2533,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
2462
2533
  readonly HeatmapChartProp: {
2463
2534
  readonly group: "data-display";
2464
2535
  readonly file: "components/charts.prop.ts";
2465
- readonly vocabulary: readonly ["LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2536
+ readonly vocabulary: readonly [{
2537
+ readonly field: "onDatumSelect";
2538
+ readonly local: true;
2539
+ readonly reason: "Pointer and keyboard datum selection action, independent of dashboard state.";
2540
+ }, "LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2466
2541
  readonly field: "rows";
2467
2542
  readonly local: true;
2468
2543
  readonly reason: "Row categories (y axis) — key + translated label.";
@@ -2499,7 +2574,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
2499
2574
  readonly AreaChartProp: {
2500
2575
  readonly group: "data-display";
2501
2576
  readonly file: "components/charts.prop.ts";
2502
- readonly vocabulary: readonly ["LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2577
+ readonly vocabulary: readonly [{
2578
+ readonly field: "onDatumSelect";
2579
+ readonly local: true;
2580
+ readonly reason: "Pointer and keyboard datum selection action, independent of dashboard state.";
2581
+ }, "LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2503
2582
  readonly field: "data";
2504
2583
  readonly local: true;
2505
2584
  readonly reason: "Chart row data (category + value per series).";
@@ -2556,7 +2635,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
2556
2635
  readonly PieChartProp: {
2557
2636
  readonly group: "data-display";
2558
2637
  readonly file: "components/charts.prop.ts";
2559
- readonly vocabulary: readonly ["LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2638
+ readonly vocabulary: readonly [{
2639
+ readonly field: "onDatumSelect";
2640
+ readonly local: true;
2641
+ readonly reason: "Pointer and keyboard datum selection action, independent of dashboard state.";
2642
+ }, "LabelProp", "DescriptionProp", "SizeProp", "EmptyMessageProp", "ClassNameProp", "IdProp", {
2560
2643
  readonly field: "data";
2561
2644
  readonly local: true;
2562
2645
  readonly reason: "Chart row data (one slice per row).";
@@ -463,6 +463,11 @@ const VOCABULARY_REGISTRY = {
463
463
  category: "interaction",
464
464
  description: "Heading level 1-4 \u2014 the semantic element, and the --heading-h* size it takes unless `size` (TextSizeProp) overrides it"
465
465
  },
466
+ HeadingFamilyProp: {
467
+ file: "vocabulary/interaction.prop.ts",
468
+ category: "interaction",
469
+ description: "Heading face display | editorial \u2014 editorial reads --font-family-editorial (an opt-in serif for a hero or a public page section), falling back to --font-family-display"
470
+ },
466
471
  TextAlignProp: {
467
472
  file: "vocabulary/interaction.prop.ts",
468
473
  category: "interaction",
@@ -717,6 +722,60 @@ const VOCABULARY_REGISTRY = {
717
722
  }
718
723
  };
719
724
  const COMPONENT_PROP_REGISTRY = {
725
+ DashboardGridProp: {
726
+ group: "layout",
727
+ file: "components/dashboard-grid.prop.ts",
728
+ vocabulary: [
729
+ "ClassNameProp",
730
+ "IdProp",
731
+ {
732
+ field: "items",
733
+ local: true,
734
+ reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API."
735
+ },
736
+ {
737
+ field: "layout",
738
+ local: true,
739
+ reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API."
740
+ },
741
+ {
742
+ field: "defaultLayout",
743
+ local: true,
744
+ reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API."
745
+ },
746
+ {
747
+ field: "onLayoutChange",
748
+ local: true,
749
+ reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API."
750
+ },
751
+ {
752
+ field: "columns",
753
+ local: true,
754
+ reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API."
755
+ },
756
+ {
757
+ field: "rowHeight",
758
+ local: true,
759
+ reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API."
760
+ },
761
+ {
762
+ field: "editable",
763
+ local: true,
764
+ reason: "DashboardGrid cell-layout editing contract (#1397), owner-approved lab API."
765
+ }
766
+ ]
767
+ },
768
+ DashboardGridItemProp: {
769
+ group: "layout",
770
+ file: "components/dashboard-grid.prop.ts",
771
+ vocabulary: [
772
+ { field: "id", local: true, reason: "Persisted grid cell coordinate or identity." },
773
+ { field: "x", local: true, reason: "Persisted grid cell coordinate or identity." },
774
+ { field: "y", local: true, reason: "Persisted grid cell coordinate or identity." },
775
+ { field: "w", local: true, reason: "Persisted grid cell coordinate or identity." },
776
+ { field: "h", local: true, reason: "Persisted grid cell coordinate or identity." }
777
+ ]
778
+ },
720
779
  AppProviderProp: { group: "app", file: "components/app.prop.ts", vocabulary: ["ChildrenProp"] },
721
780
  ThemeScopeProp: {
722
781
  group: "app",
@@ -1831,6 +1890,7 @@ const COMPONENT_PROP_REGISTRY = {
1831
1890
  file: "components/general.prop.ts",
1832
1891
  vocabulary: [
1833
1892
  "HeadingLevelProp",
1893
+ "HeadingFamilyProp",
1834
1894
  "TextSizeProp",
1835
1895
  "TextToneProp",
1836
1896
  "TextAlignProp",
@@ -2843,6 +2903,11 @@ const COMPONENT_PROP_REGISTRY = {
2843
2903
  group: "data-display",
2844
2904
  file: "components/charts.prop.ts",
2845
2905
  vocabulary: [
2906
+ {
2907
+ field: "onDatumSelect",
2908
+ local: true,
2909
+ reason: "Pointer and keyboard datum selection action, independent of dashboard state."
2910
+ },
2846
2911
  "LabelProp",
2847
2912
  "DescriptionProp",
2848
2913
  "SizeProp",
@@ -2879,6 +2944,11 @@ const COMPONENT_PROP_REGISTRY = {
2879
2944
  group: "data-display",
2880
2945
  file: "components/charts.prop.ts",
2881
2946
  vocabulary: [
2947
+ {
2948
+ field: "onDatumSelect",
2949
+ local: true,
2950
+ reason: "Pointer and keyboard datum selection action, independent of dashboard state."
2951
+ },
2882
2952
  "LabelProp",
2883
2953
  "DescriptionProp",
2884
2954
  "SizeProp",
@@ -2952,6 +3022,11 @@ const COMPONENT_PROP_REGISTRY = {
2952
3022
  group: "data-display",
2953
3023
  file: "components/charts.prop.ts",
2954
3024
  vocabulary: [
3025
+ {
3026
+ field: "onDatumSelect",
3027
+ local: true,
3028
+ reason: "Pointer and keyboard datum selection action, independent of dashboard state."
3029
+ },
2955
3030
  "LabelProp",
2956
3031
  "DescriptionProp",
2957
3032
  "SizeProp",
@@ -2988,6 +3063,11 @@ const COMPONENT_PROP_REGISTRY = {
2988
3063
  group: "data-display",
2989
3064
  file: "components/charts.prop.ts",
2990
3065
  vocabulary: [
3066
+ {
3067
+ field: "onDatumSelect",
3068
+ local: true,
3069
+ reason: "Pointer and keyboard datum selection action, independent of dashboard state."
3070
+ },
2991
3071
  "LabelProp",
2992
3072
  "DescriptionProp",
2993
3073
  "SizeProp",
@@ -3025,6 +3105,11 @@ const COMPONENT_PROP_REGISTRY = {
3025
3105
  group: "data-display",
3026
3106
  file: "components/charts.prop.ts",
3027
3107
  vocabulary: [
3108
+ {
3109
+ field: "onDatumSelect",
3110
+ local: true,
3111
+ reason: "Pointer and keyboard datum selection action, independent of dashboard state."
3112
+ },
3028
3113
  "LabelProp",
3029
3114
  "DescriptionProp",
3030
3115
  "SizeProp",
@@ -2,6 +2,6 @@
2
2
  export type { ClassNameProp, ChildrenProp, IdProp, OpenProp, DefaultOpenProp, OnOpenChangeProp, HandlerProp, PendingProp, RequiredProp, DisabledProp, LabelProp, HelperProp, ErrorProp, ErrorBagProp, PlaceholderProp, NameProp, ValueProp, DefaultValueProp, OnValueChangeProp, OnChangeProp, OnClickProp, AsChildProp, FlushProp, WidthProp, ControlWidthProp, AllowClearProp, MaxTagCountProp, MaxTagPlaceholderProp, NotFoundContentProp, PopupMatchWidthProp, } from "./shared.prop.js";
3
3
  export type { TitleProp, SubtitleProp, StatusProp, DescriptionProp, ExtraProp, FooterProp, ActionProp, IconProp, ConfirmLabelProp, CancelLabelProp, ActionsProp, EmptyMessageProp, } from "./content.prop.js";
4
4
  export type { PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, MobileShellWidthProp, OrientationProp, TableDensityProp, DensityProp, GapNameProp, PadProp, PadRawProp, PadSides, GapProp, GapStepProp, } from "./layout.prop.js";
5
- export type { ButtonVariantProp, ButtonSizeProp, BadgeVariantProp, AppSettingPickerAppearanceProp, AppSettingCycleAppearanceProp, ShapeProp, AvatarShapeProp, TextSizeProp, TextToneProp, FontWeightProp, HeadingLevelProp, TextAlignProp, TextWhitespaceProp, TextBreakProp, TypographyTypeProp, TypographyCopyConfigProp, TypographyEditConfigProp, TypographyEllipsisConfigProp, TypographyActionsConfigProp, SizeProp, ControlStatusProp, ControlVariantProp, FormLayoutProp, DescriptionsLayoutProp, BreakpointProp, ConfirmVariantProp, ToneProp, AlertVariantProp, CalloutKindProp, SortDirectionProp, ColumnAlignProp, SortStateProp, RevealDelayProp, RevealTriggerProp, InViewAmountProp, ActivityVariantProp, ActivityAnnounceProp, IconSizeProp, } from "./interaction.prop.js";
5
+ export type { ButtonVariantProp, ButtonSizeProp, BadgeVariantProp, AppSettingPickerAppearanceProp, AppSettingCycleAppearanceProp, ShapeProp, AvatarShapeProp, TextSizeProp, TextToneProp, FontWeightProp, HeadingLevelProp, HeadingFamilyProp, TextAlignProp, TextWhitespaceProp, TextBreakProp, TypographyTypeProp, TypographyCopyConfigProp, TypographyEditConfigProp, TypographyEllipsisConfigProp, TypographyActionsConfigProp, SizeProp, ControlStatusProp, ControlVariantProp, FormLayoutProp, DescriptionsLayoutProp, BreakpointProp, ConfirmVariantProp, ToneProp, AlertVariantProp, CalloutKindProp, SortDirectionProp, ColumnAlignProp, SortStateProp, RevealDelayProp, RevealTriggerProp, InViewAmountProp, ActivityVariantProp, ActivityAnnounceProp, IconSizeProp, } from "./interaction.prop.js";
6
6
  export type { BreadcrumbItemProp, BreadcrumbProp, BreadcrumbCurrentItemProp, BreadcrumbItemMenuProp, BreadcrumbItemEllipsisProp, BreadcrumbItemMenuEntryProp, BreadcrumbSeparatorProp, BreadcrumbItemRenderProp, } from "./navigation.prop.js";
7
7
  export type { GetRowIdProp, GetRowLabelProp, OnRowClickProp, ColumnDefProp, TablePresetProp, TableColumnPriorityProp, TableCellIndentProp, SelectedIdsProp, OnSelectChangeProp, OnTableDensityChangeProp, TableRowToneProp, RowToneProp, OnSortChangeProp, OnSearchChangeProp, OnClearFiltersProp, HasActiveFiltersProp, StickyProp, ColumnFixedProp, ColumnFilterValueProp, ColumnFilterItemProp, ColumnFilterStateProp, OnColumnFilterChangeProp, ColumnCompareProp, ColumnSorterProp, TableSelectionItemProp, TableSelectionBuiltInProp, TableSelectAllMatchingProp, TableRowSelectionProp, TableExpandableProp, TableSummaryProp, TableScrollProp, TableStickyProp, OnRowProp, TablePaginationProp, TablePaginationPositionProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, } from "./data.prop.js";
@@ -82,6 +82,12 @@ export type TextToneProp = "default" | "muted" | "primary" | "success" | "warnin
82
82
  export type FontWeightProp = "regular" | "medium" | "semibold" | "bold";
83
83
  /** Heading level — drives both the `--heading-h*` size token and the semantic `<h1..h4>` element. */
84
84
  export type HeadingLevelProp = 1 | 2 | 3 | 4;
85
+ /**
86
+ * Which heading face — `display` (default: --font-family-display, every heading) or `editorial`
87
+ * (--font-family-editorial: an opt-in magazine/serif face for a hero or a public page section,
88
+ * falling back to the display face until a theme names one).
89
+ */
90
+ export type HeadingFamilyProp = "display" | "editorial";
85
91
  /** Inline text alignment (logical, RTL-safe). */
86
92
  export type TextAlignProp = "start" | "center" | "end";
87
93
  /**
@@ -42,6 +42,7 @@
42
42
 
43
43
  [data-slot="badge"][data-tabular] {
44
44
  font-variant-numeric: tabular-nums;
45
+ font-family: var(--font-family-tabular, inherit);
45
46
  }
46
47
 
47
48
  [data-slot="badge"][data-tinted] {
@@ -251,3 +251,11 @@
251
251
  font-family: var(--font-family-mono);
252
252
  }
253
253
  }
254
+
255
+ @layer base {
256
+ @media print {
257
+ :root {
258
+ color-scheme: light;
259
+ }
260
+ }
261
+ }
@@ -734,3 +734,11 @@
734
734
  border-block: var(--stroke-hairline) solid hsl(var(--border));
735
735
  }
736
736
  }
737
+
738
+ @layer components {
739
+ @media print {
740
+ [data-slot="card"] {
741
+ break-inside: avoid;
742
+ }
743
+ }
744
+ }
@@ -326,3 +326,31 @@
326
326
  calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
327
327
  );
328
328
  }
329
+
330
+ .ui-chart-datum,
331
+ .ui-chart-heatmap-cell[data-interactive] {
332
+ cursor: pointer;
333
+ }
334
+
335
+ .ui-chart-datum:hover,
336
+ .ui-chart-heatmap-cell[data-interactive]:hover {
337
+ outline: var(--focus-ring-width) solid hsl(var(--focus-ring-color, var(--ring)));
338
+ outline-offset: var(--focus-ring-offset);
339
+ }
340
+
341
+ .ui-chart-bar-hit {
342
+ width: max(var(--chart-mark-width, 0px), var(--touch-target-min));
343
+ height: max(var(--chart-mark-height, 0px), var(--touch-target-min));
344
+ }
345
+
346
+ .ui-chart-point-hit {
347
+ r: calc(var(--touch-target-min) / 2);
348
+ }
349
+
350
+ .ui-chart-canvas:has(.ui-chart-datum) .recharts-surface {
351
+ overflow: visible;
352
+ }
353
+
354
+ .ui-chart-canvas:has(.ui-chart-datum) .recharts-text {
355
+ direction: ltr;
356
+ }
@@ -3921,3 +3921,85 @@
3921
3921
  }
3922
3922
  }
3923
3923
  }
3924
+
3925
+ @layer components {
3926
+ .ui-dashboard-grid,
3927
+ .ui-dashboard-grid-items,
3928
+ .ui-dashboard-grid-item,
3929
+ .ui-dashboard-grid-content {
3930
+ min-inline-size: 0;
3931
+ }
3932
+ .ui-dashboard-grid-items {
3933
+ display: grid;
3934
+ grid-template-columns: repeat(var(--dashboard-grid-columns, 1), minmax(0, 1fr));
3935
+ grid-auto-rows: var(--dashboard-grid-row-height);
3936
+ gap: var(--dashboard-grid-gap);
3937
+ }
3938
+ .ui-dashboard-grid-item {
3939
+ position: relative;
3940
+ border-radius: var(--dashboard-grid-item-radius);
3941
+ }
3942
+ .ui-dashboard-grid-surface {
3943
+ display: flex;
3944
+ flex-direction: column;
3945
+ block-size: 100%;
3946
+ }
3947
+ .ui-dashboard-grid-item .ui-dashboard-grid-header {
3948
+ padding-inline-start: calc(
3949
+ var(--dashboard-grid-handle-size) + var(--dashboard-grid-handle-inset) * 2
3950
+ );
3951
+ }
3952
+ .ui-dashboard-grid-items[data-stacked] {
3953
+ grid-auto-rows: auto;
3954
+ }
3955
+ .ui-dashboard-grid-content {
3956
+ flex: 1;
3957
+ min-block-size: 0;
3958
+ overflow: auto;
3959
+ }
3960
+ .ui-dashboard-grid-item[data-held] {
3961
+ outline: var(--focus-ring-width) solid
3962
+ hsl(var(--dashboard-grid-preview-ring-color, var(--ring)));
3963
+ outline-offset: var(--focus-ring-offset);
3964
+ }
3965
+ .ui-dashboard-grid-move,
3966
+ .ui-dashboard-grid-resize {
3967
+ position: absolute;
3968
+ z-index: 1;
3969
+ inline-size: var(--dashboard-grid-handle-size);
3970
+ block-size: var(--dashboard-grid-handle-size);
3971
+ min-inline-size: var(--touch-target-min);
3972
+ min-block-size: var(--touch-target-min);
3973
+ touch-action: none;
3974
+ }
3975
+ .ui-dashboard-grid-move {
3976
+ inset-block-start: var(--dashboard-grid-handle-inset);
3977
+ inset-inline-start: var(--dashboard-grid-handle-inset);
3978
+ cursor: grab;
3979
+ }
3980
+ .ui-dashboard-grid-resize {
3981
+ inset-block-end: var(--dashboard-grid-handle-inset);
3982
+ inset-inline-end: var(--dashboard-grid-handle-inset);
3983
+ cursor: nwse-resize;
3984
+ opacity: 0;
3985
+ }
3986
+ .ui-dashboard-grid-item:dir(rtl) .ui-dashboard-grid-resize {
3987
+ cursor: nesw-resize;
3988
+ transform: scaleX(-1);
3989
+ }
3990
+ .ui-dashboard-grid-item:hover .ui-dashboard-grid-resize,
3991
+ .ui-dashboard-grid-item:focus-within .ui-dashboard-grid-resize {
3992
+ opacity: 1;
3993
+ }
3994
+ .ui-dashboard-grid-item[data-held] .ui-dashboard-grid-move {
3995
+ cursor: grabbing;
3996
+ }
3997
+ @media (prefers-reduced-motion: reduce) {
3998
+ .ui-dashboard-grid-item,
3999
+ .ui-dashboard-grid-move,
4000
+ .ui-dashboard-grid-resize {
4001
+ transition: none;
4002
+ animation: none;
4003
+ }
4004
+ }
4005
+ }
@@ -53,7 +53,9 @@
53
53
 
54
54
  [data-slot="dialog-content"] {
55
55
  position: fixed;
56
- inset-inline-start: 50%;
56
+
57
+ inset-inline: 0;
58
+ margin-inline: auto;
57
59
  top: 50%;
58
60
  z-index: var(--overlay-z-index);
59
61
 
@@ -67,12 +69,14 @@
67
69
 
68
70
  --tw-animation-duration: var(--dialog-motion-duration, var(--duration-fast));
69
71
  max-width: none;
70
- transform: translate(-50%, -50%);
72
+ transform: translateY(-50%);
71
73
  gap: var(--dialog-space-gap);
72
74
  border: var(--stroke-hairline) solid hsl(var(--border));
73
75
 
74
76
  background-color: var(--dialog-surface-background, hsl(var(--background)));
75
77
 
78
+ border-radius: var(--dialog-radius, 0px);
79
+
76
80
  color: hsl(var(--foreground));
77
81
  padding: var(--dialog-space-inset);
78
82
 
@@ -82,7 +86,7 @@
82
86
 
83
87
  @media (min-width: 640px) {
84
88
  [data-slot="dialog-content"] {
85
- border-radius: var(--radius-lg, var(--radius));
89
+ border-radius: var(--dialog-radius, var(--radius-lg, var(--radius)));
86
90
  }
87
91
  }
88
92
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "33.15.0",
2
+ "version": "33.17.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",
@@ -404,6 +404,15 @@
404
404
  "data-display-layout.css"
405
405
  ]
406
406
  },
407
+ "DashboardGrid": {
408
+ "layers": [
409
+ "control.css",
410
+ "toggle.css",
411
+ "card-layout.css",
412
+ "dialog-layout.css",
413
+ "navigation-layout.css"
414
+ ]
415
+ },
407
416
  "DataState": {
408
417
  "layers": [
409
418
  "layout.css",
@@ -951,6 +951,8 @@
951
951
  );
952
952
  font-weight: var(--font-weight-semibold);
953
953
  line-height: var(--page-title-line-height-display);
954
+
955
+ font-family: var(--font-family-editorial, var(--font-family-display));
954
956
  text-wrap: balance;
955
957
  overflow-wrap: normal;
956
958
  }
@@ -225,21 +225,27 @@
225
225
  display: none;
226
226
  }
227
227
 
228
- @media (prefers-color-scheme: dark) {
229
- :root:not([data-theme="light"]) [data-slot="logo-artwork"][data-scheme="light"] {
230
- display: none;
231
- }
232
- :root:not([data-theme="light"]) [data-slot="logo-artwork"][data-scheme="dark"] {
233
- display: block;
228
+ @media not print {
229
+ @media (prefers-color-scheme: dark) {
230
+ :root:not([data-theme="light"]) [data-slot="logo-artwork"][data-scheme="light"] {
231
+ display: none;
232
+ }
233
+ :root:not([data-theme="light"]) [data-slot="logo-artwork"][data-scheme="dark"] {
234
+ display: block;
235
+ }
234
236
  }
235
237
  }
236
238
 
237
- .dark [data-slot="logo-artwork"][data-scheme="light"],
238
- :root[data-theme="dark"] [data-slot="logo-artwork"][data-scheme="light"] {
239
- display: none;
239
+ @media not print {
240
+ .dark [data-slot="logo-artwork"][data-scheme="light"],
241
+ :root[data-theme="dark"] [data-slot="logo-artwork"][data-scheme="light"] {
242
+ display: none;
243
+ }
240
244
  }
241
245
 
242
- .dark [data-slot="logo-artwork"][data-scheme="dark"],
243
- :root[data-theme="dark"] [data-slot="logo-artwork"][data-scheme="dark"] {
244
- display: block;
246
+ @media not print {
247
+ .dark [data-slot="logo-artwork"][data-scheme="dark"],
248
+ :root[data-theme="dark"] [data-slot="logo-artwork"][data-scheme="dark"] {
249
+ display: block;
250
+ }
245
251
  }
@@ -493,6 +493,8 @@
493
493
  }
494
494
 
495
495
  .ui-pagination {
496
+
497
+ padding-inline: 0;
496
498
  scroll-padding: calc(var(--focus-ring-weight) + var(--focus-outline-offset));
497
499
  max-inline-size: 100%;
498
500
  overflow-x: auto;
@@ -2086,7 +2086,14 @@
2086
2086
  min-inline-size: var(--topbar-item-min-width);
2087
2087
  }
2088
2088
 
2089
- .ui-topbar-start > :last-child:not(:is(button, a, [role="button"], .ui-button)) {
2089
+ .ui-topbar-start:has(
2090
+ > :last-child:is(button, a, [role="button"], .ui-button, .ui-topbar-search)
2091
+ ) {
2092
+ min-inline-size: min-content;
2093
+ }
2094
+
2095
+ .ui-topbar-start
2096
+ > :last-child:not(:is(button, a, [role="button"], .ui-button, .ui-topbar-search)) {
2090
2097
  max-width: 100%;
2091
2098
  min-width: 0;
2092
2099
  flex: 0 1 auto;
@@ -2804,3 +2811,35 @@
2804
2811
  grid-template-areas: "topbar" "main" "footer";
2805
2812
  }
2806
2813
  }
2814
+
2815
+ @layer components {
2816
+ @media print {
2817
+ html,
2818
+ body,
2819
+ .app-root,
2820
+ .app-root > .app-main {
2821
+ background: hsl(var(--background));
2822
+ }
2823
+ .app-root {
2824
+ display: block;
2825
+ height: auto;
2826
+ min-height: 0;
2827
+ overflow: visible;
2828
+ }
2829
+ .app-root[data-responsive-navigation]
2830
+ > :is(.app-sidebar, .app-topbar, .app-nav-rail, .app-footer),
2831
+ .app-breadcrumb,
2832
+ .app-mobile-nav-drawer {
2833
+ display: none;
2834
+ }
2835
+ .app-root > .app-main {
2836
+ width: auto;
2837
+ max-width: none;
2838
+ height: auto;
2839
+ min-height: 0;
2840
+ overflow: visible;
2841
+ contain: none;
2842
+ background-image: none;
2843
+ }
2844
+ }
2845
+ }