@godxjp/ui 33.12.8 → 33.14.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 (51) hide show
  1. package/README.md +8 -4
  2. package/agent/START-HERE.md +5 -5
  3. package/agent/components/BranchScopePicker.json +21 -1
  4. package/agent/components/Breadcrumb.json +8 -2
  5. package/agent/components/DataTable.json +2 -1
  6. package/agent/components/MobileShell.json +1 -0
  7. package/agent/components/PageContainer.json +6 -0
  8. package/agent/components/Persona.json +66 -0
  9. package/agent/components/Sidebar.json +1 -0
  10. package/agent/components/Table.json +1 -1
  11. package/agent/components-index.json +5 -0
  12. package/agent/components.json +106 -5
  13. package/agent/index.json +7 -7
  14. package/agent/llms.txt +6 -6
  15. package/agent/tokens.json +62 -2
  16. package/agent/vocabulary.json +13 -0
  17. package/dist/components/data-display/data-table.js +51 -10
  18. package/dist/components/data-display/index.d.ts +2 -0
  19. package/dist/components/data-display/index.js +2 -0
  20. package/dist/components/data-display/persona.d.ts +11 -0
  21. package/dist/components/data-display/persona.js +34 -0
  22. package/dist/components/data-entry/branch-scope-picker.d.ts +3 -0
  23. package/dist/components/data-entry/branch-scope-picker.js +65 -11
  24. package/dist/components/layout/breadcrumb-ellipsis.js +33 -1
  25. package/dist/components/layout/breadcrumb.d.ts +4 -2
  26. package/dist/components/layout/breadcrumb.js +13 -3
  27. package/dist/components/layout/page-container.d.ts +1 -1
  28. package/dist/components/layout/page-container.js +5 -3
  29. package/dist/contracts/measurement.json +1 -1
  30. package/dist/i18n/messages/en.json +2 -1
  31. package/dist/i18n/messages/ja.json +13 -12
  32. package/dist/i18n/messages/vi.json +2 -1
  33. package/dist/props/components/data-display.prop.d.ts +10 -0
  34. package/dist/props/components/data-entry.prop.d.ts +6 -0
  35. package/dist/props/components/layout.prop.d.ts +5 -1
  36. package/dist/props/registry.d.ts +24 -2
  37. package/dist/props/registry.js +26 -0
  38. package/dist/props/vocabulary/index.d.ts +1 -1
  39. package/dist/props/vocabulary/navigation.prop.d.ts +2 -0
  40. package/dist/styles/control.css +29 -3
  41. package/dist/styles/data-display-layout.css +58 -0
  42. package/dist/styles/layers.json +8 -2
  43. package/dist/styles/table-layout.css +32 -12
  44. package/dist/styles.css +1 -1
  45. package/dist/tokens/base.css +2 -0
  46. package/dist/tokens/components/persona.css +13 -0
  47. package/dist/tokens/components/table.css +1 -1
  48. package/docs/TOKENS.md +11 -0
  49. package/package.json +2 -2
  50. package/scripts/cli.mjs +8 -2
  51. package/scripts/visual-audit.mjs +119 -27
@@ -155,19 +155,20 @@
155
155
  "placeholder": "年月を選択"
156
156
  },
157
157
  "branchScope": {
158
- "label": "ブランチ範囲",
159
- "all": "すべてのブランチ",
160
- "allDescription": "現在および今後のすべてのブランチに適用",
161
- "selected": "選択したブランチのみ",
162
- "selectedDescription": "下で選択したブランチにのみ適用",
163
- "listLabel": "ブランチ",
164
- "searchPlaceholder": "ブランチを検索",
158
+ "label": "支店範囲",
159
+ "all": "すべての支店",
160
+ "allDescription": "現在および今後のすべての支店に適用",
161
+ "selected": "選択した支店のみ",
162
+ "selectedDescription": "下で選択した支店にのみ適用",
163
+ "listLabel": "支店",
164
+ "searchPlaceholder": "支店を検索",
165
165
  "selectedCount": "{count} 件選択中",
166
- "empty": "選択できるブランチがありません",
167
- "error": "ブランチを取得できませんでした",
168
- "denied": "ブランチを表示する権限がありません",
169
- "loading": "ブランチを読み込み中…",
170
- "noMatches": "検索に一致するブランチがありません"
166
+ "empty": "選択できる支店がありません",
167
+ "error": "支店を取得できませんでした",
168
+ "denied": "支店を表示する権限がありません",
169
+ "loading": "支店を読み込み中…",
170
+ "noMatches": "検索に一致する支店がありません",
171
+ "choose": "支店を選択"
171
172
  },
172
173
  "formErrors": {
173
174
  "title": "入力内容にエラーがあります"
@@ -167,7 +167,8 @@
167
167
  "error": "Không tải được danh sách chi nhánh",
168
168
  "denied": "Bạn không có quyền xem chi nhánh",
169
169
  "loading": "Đang tải chi nhánh…",
170
- "noMatches": "Không có chi nhánh khớp với tìm kiếm"
170
+ "noMatches": "Không có chi nhánh khớp với tìm kiếm",
171
+ "choose": "Chọn chi nhánh"
171
172
  },
172
173
  "formErrors": {
173
174
  "title": "Dữ liệu nhập có lỗi, vui lòng kiểm tra"
@@ -1424,3 +1424,13 @@ export type TextDiffProp = Omit<React.HTMLAttributes<HTMLDivElement>, "children"
1424
1424
  lang?: string;
1425
1425
  className?: ClassNameProp;
1426
1426
  };
1427
+ /** @see Persona — static identity; pass translated labels and badge content from the consumer. */
1428
+ export type PersonaProp = Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> & {
1429
+ name: string;
1430
+ description?: string;
1431
+ avatarSrc?: string;
1432
+ avatarFallback?: React.ReactNode;
1433
+ /** Optional inline badge beside the name, never part of the clipped name. */
1434
+ trailing?: React.ReactNode;
1435
+ size?: Extract<SizeProp, "sm" | "md">;
1436
+ };
@@ -2216,6 +2216,12 @@ export type BranchScopePickerProp = FieldA11yProps & {
2216
2216
  defaultValue?: BranchScopeValueProp;
2217
2217
  /** Value change handler (fires for mode switches AND branch checks). */
2218
2218
  onValueChange?: (value: BranchScopeValueProp) => void;
2219
+ /** Single compact Select for navigation/record fields; multiple preserves the all/subset editor. */
2220
+ selectionMode?: "single" | "multiple";
2221
+ /** Permit organization-wide scope. Set false for record forms; validate one concrete branch on submit. Default true. */
2222
+ allowAll?: boolean;
2223
+ /** Hide after a successful one-branch read, unless disabled branch or validation error. Does not emit or normalize value. Default false. */
2224
+ hideWhenSingle?: boolean;
2219
2225
  /** Disable the whole control. */
2220
2226
  disabled?: DisabledProp;
2221
2227
  /** Render the current value without any editable affordance (locked view). */
@@ -1,7 +1,7 @@
1
1
  /** Layout component prop types — @see docs/COMPONENTS.md#layout */
2
2
  import type * as React from "react";
3
3
  import type { ComponentType, ReactNode, SVGProps } from "react";
4
- import type { BreadcrumbProp, TitleProp, SubtitleProp, StatusProp, ExtraProp, FooterProp, PageDensityProp, DensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, MobileShellWidthProp, OrientationProp, TextAlignProp, TextToneProp, BreakpointProp, GapProp, PadProp, PadRawProp, ClassNameProp, ChildrenProp, IdProp, DisabledProp, DescriptionProp, ActionProp, IconProp, HeadingLevelProp, ToneProp, WidthProp, SizeProp } from "../vocabulary/index.js";
4
+ import type { BreadcrumbProp, BreadcrumbCurrentItemProp, TitleProp, SubtitleProp, StatusProp, ExtraProp, FooterProp, PageDensityProp, DensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, MobileShellWidthProp, OrientationProp, TextAlignProp, TextToneProp, BreakpointProp, GapProp, PadProp, PadRawProp, ClassNameProp, ChildrenProp, IdProp, DisabledProp, DescriptionProp, ActionProp, IconProp, HeadingLevelProp, ToneProp, WidthProp, SizeProp } from "../vocabulary/index.js";
5
5
  import type { EmptyStateToneProp } from "./data-display.prop.js";
6
6
  import type { SearchInputProp } from "./data-entry.prop.js";
7
7
  /**
@@ -82,6 +82,8 @@ export type PageContainerProp = {
82
82
  toolbar?: ReactNode;
83
83
  footer?: FooterProp;
84
84
  breadcrumb?: BreadcrumbProp;
85
+ /** Last item is current by default; none keeps an ancestor-only trail linked. */
86
+ breadcrumbCurrentItem?: BreadcrumbCurrentItemProp;
85
87
  /**
86
88
  * Override the breadcrumb `<nav>` landmark's accessible name. Defaults to a localized
87
89
  * "Breadcrumb".
@@ -1467,6 +1469,8 @@ export type SidebarProp = {
1467
1469
  */
1468
1470
  brand?: ReactNode | ((collapsed: boolean) => ReactNode);
1469
1471
  /**
1472
+ * Also accepts one app-local scope control (BranchScopePicker selectionMode="single").
1473
+ * This is viewing scope, not an organization/platform switch.
1470
1474
  * The rail's ONE primary action ("New issue", "+ Create", "New page"), rendered between `brand`
1471
1475
  * and the scrolling nav and never scrolling with it. Put exactly one primary control here: a
1472
1476
  * `Button` (variant primary) full width when expanded, icon-only with an `aria-label` + tooltip
@@ -604,6 +604,11 @@ export declare const VOCABULARY_REGISTRY: {
604
604
  readonly category: "navigation";
605
605
  readonly description: "One-line truncation of a breadcrumb segment, with the full label in a tooltip";
606
606
  };
607
+ readonly BreadcrumbCurrentItemProp: {
608
+ readonly file: "vocabulary/navigation.prop.ts";
609
+ readonly category: "navigation";
610
+ readonly description: "Current breadcrumb item: last (default) or none for ancestors only";
611
+ };
607
612
  readonly BreadcrumbProp: {
608
613
  readonly file: "vocabulary/navigation.prop.ts";
609
614
  readonly category: "navigation";
@@ -778,7 +783,7 @@ export declare const COMPONENT_PROP_REGISTRY: {
778
783
  readonly PageContainerProp: {
779
784
  readonly group: "layout";
780
785
  readonly file: "components/layout.prop.ts";
781
- readonly vocabulary: readonly ["TitleProp", "SubtitleProp", "StatusProp", "ExtraProp", "FooterProp", "BreadcrumbProp", "DensityProp", "PageContainerVariantProp", {
786
+ readonly vocabulary: readonly ["TitleProp", "SubtitleProp", "StatusProp", "ExtraProp", "FooterProp", "BreadcrumbProp", "BreadcrumbCurrentItemProp", "DensityProp", "PageContainerVariantProp", {
782
787
  readonly field: "toolbar";
783
788
  readonly local: true;
784
789
  readonly reason: "FIXED chrome band between the page header and the scrolling body (filter strip, status bar, channel workflow rail). Distinct from ExtraProp (header actions, inside the title row) and FooterProp (action bar after the body): it is the only slot that stays OUT of the `fill` scroll viewport while sharing the header/body gutters and measure, so a consumer never hand-lays `position: sticky` page chrome.";
@@ -2166,6 +2171,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
2166
2171
  readonly file: "components/data-display.prop.ts";
2167
2172
  readonly vocabulary: readonly ["ColumnDefProp", "DensityProp", "SortStateProp", "SelectedIdsProp", "GetRowLabelProp", "HandlerProp", "TablePresetProp", "TableColumnPriorityProp", "BreakpointProp", "ColumnFixedProp", "ColumnFilterItemProp", "ColumnFilterStateProp", "ColumnSorterProp", "TableRowSelectionProp", "TableSelectionBuiltInProp", "TableSelectAllMatchingProp", "TableExpandableProp", "TableSummaryProp", "TableScrollProp", "TableStickyProp", "OnRowProp", "TablePaginationProp", "TablePaginationPositionProp", "SortDirectionProp", "OnColumnFilterChangeProp"];
2168
2173
  };
2174
+ readonly PersonaProp: {
2175
+ readonly group: "data-display";
2176
+ readonly file: "components/data-display.prop.ts";
2177
+ readonly vocabulary: readonly ["SizeProp", "ClassNameProp", "DescriptionProp"];
2178
+ };
2169
2179
  readonly ListRowDensityProp: {
2170
2180
  readonly group: "data-display";
2171
2181
  readonly file: "components/data-display.prop.ts";
@@ -3822,7 +3832,19 @@ export declare const COMPONENT_PROP_REGISTRY: {
3822
3832
  readonly BranchScopePickerProp: {
3823
3833
  readonly group: "data-entry";
3824
3834
  readonly file: "components/data-entry.prop.ts";
3825
- readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp", "DisabledProp", "ErrorProp", "NameProp", "IdProp", "ClassNameProp", {
3835
+ readonly vocabulary: readonly [{
3836
+ readonly field: "selectionMode";
3837
+ readonly local: true;
3838
+ readonly reason: "Single navigation scope or existing multiple-branch subset editor.";
3839
+ }, {
3840
+ readonly field: "allowAll";
3841
+ readonly local: true;
3842
+ readonly reason: "Whether organization-wide branch scope is selectable.";
3843
+ }, {
3844
+ readonly field: "hideWhenSingle";
3845
+ readonly local: true;
3846
+ readonly reason: "Hide a settled single-branch navigation scope without changing consumer state.";
3847
+ }, "ValueProp", "DefaultValueProp", "OnValueChangeProp", "DisabledProp", "ErrorProp", "NameProp", "IdProp", "ClassNameProp", {
3826
3848
  readonly field: "branches";
3827
3849
  readonly local: true;
3828
3850
  readonly reason: "Consumer-supplied selectable branches (see BranchScopeOptionProp).";
@@ -604,6 +604,11 @@ const VOCABULARY_REGISTRY = {
604
604
  category: "navigation",
605
605
  description: "One-line truncation of a breadcrumb segment, with the full label in a tooltip"
606
606
  },
607
+ BreadcrumbCurrentItemProp: {
608
+ file: "vocabulary/navigation.prop.ts",
609
+ category: "navigation",
610
+ description: "Current breadcrumb item: last (default) or none for ancestors only"
611
+ },
607
612
  BreadcrumbProp: {
608
613
  file: "vocabulary/navigation.prop.ts",
609
614
  category: "navigation",
@@ -794,6 +799,7 @@ const COMPONENT_PROP_REGISTRY = {
794
799
  "ExtraProp",
795
800
  "FooterProp",
796
801
  "BreadcrumbProp",
802
+ "BreadcrumbCurrentItemProp",
797
803
  "DensityProp",
798
804
  "PageContainerVariantProp",
799
805
  {
@@ -2645,6 +2651,11 @@ const COMPONENT_PROP_REGISTRY = {
2645
2651
  "OnColumnFilterChangeProp"
2646
2652
  ]
2647
2653
  },
2654
+ PersonaProp: {
2655
+ group: "data-display",
2656
+ file: "components/data-display.prop.ts",
2657
+ vocabulary: ["SizeProp", "ClassNameProp", "DescriptionProp"]
2658
+ },
2648
2659
  ListRowDensityProp: {
2649
2660
  group: "data-display",
2650
2661
  file: "components/data-display.prop.ts",
@@ -4579,6 +4590,21 @@ const COMPONENT_PROP_REGISTRY = {
4579
4590
  group: "data-entry",
4580
4591
  file: "components/data-entry.prop.ts",
4581
4592
  vocabulary: [
4593
+ {
4594
+ field: "selectionMode",
4595
+ local: true,
4596
+ reason: "Single navigation scope or existing multiple-branch subset editor."
4597
+ },
4598
+ {
4599
+ field: "allowAll",
4600
+ local: true,
4601
+ reason: "Whether organization-wide branch scope is selectable."
4602
+ },
4603
+ {
4604
+ field: "hideWhenSingle",
4605
+ local: true,
4606
+ reason: "Hide a settled single-branch navigation scope without changing consumer state."
4607
+ },
4582
4608
  "ValueProp",
4583
4609
  "DefaultValueProp",
4584
4610
  "OnValueChangeProp",
@@ -3,5 +3,5 @@ export type { ClassNameProp, ChildrenProp, IdProp, OpenProp, DefaultOpenProp, On
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
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";
6
- export type { BreadcrumbItemProp, BreadcrumbProp, BreadcrumbItemMenuProp, BreadcrumbItemEllipsisProp, BreadcrumbItemMenuEntryProp, BreadcrumbSeparatorProp, BreadcrumbItemRenderProp, } from "./navigation.prop.js";
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";
@@ -48,6 +48,8 @@ export type BreadcrumbItemProp = {
48
48
  export type BreadcrumbItemEllipsisProp = boolean | {
49
49
  tooltip?: React.ReactNode;
50
50
  };
51
+ /** Which item represents the current page; none is an ancestor-only trail. */
52
+ export type BreadcrumbCurrentItemProp = "last" | "none";
51
53
  /** Ordered breadcrumb trail above page title. */
52
54
  export type BreadcrumbProp = BreadcrumbItemProp[];
53
55
  /**
@@ -1850,8 +1850,7 @@
1850
1850
  .ui-number-input-step::after {
1851
1851
  content: "";
1852
1852
  position: absolute;
1853
- inset-inline-start: 50%;
1854
- translate: -50% 0;
1853
+ inset-inline-start: calc((100% - var(--touch-target-min)) / 2);
1855
1854
  inline-size: var(--touch-target-min);
1856
1855
  block-size: var(--touch-target-min);
1857
1856
  }
@@ -2689,6 +2688,7 @@
2689
2688
  .ui-calendar {
2690
2689
  position: relative;
2691
2690
  inline-size: fit-content;
2691
+ max-inline-size: 100%;
2692
2692
  padding: var(--calendar-space-inset);
2693
2693
  }
2694
2694
 
@@ -2912,12 +2912,37 @@
2912
2912
  block-size: var(--calendar-chevron-size);
2913
2913
  }
2914
2914
 
2915
+ .ui-calendar-month {
2916
+ min-inline-size: 0;
2917
+ }
2918
+
2919
+ .ui-calendar-day,
2920
+ .ui-calendar-weekday {
2921
+ flex: 0 1 var(--control-height);
2922
+ min-inline-size: calc(var(--touch-target-min) + var(--stroke-hairline));
2923
+ }
2924
+
2915
2925
  .ui-calendar-grid {
2916
2926
  margin-block-start: var(--calendar-grid-space-block-start);
2917
- inline-size: 100%;
2927
+ inline-size: calc(7 * var(--control-height));
2928
+ max-inline-size: 100%;
2929
+ table-layout: fixed;
2918
2930
  border-collapse: collapse;
2919
2931
  }
2920
2932
 
2933
+ .ui-calendar[data-bordered="true"] .ui-calendar-grid {
2934
+ inline-size: calc(7 * var(--control-height) + var(--stroke-hairline));
2935
+ }
2936
+
2937
+ .ui-calendar .ui-calendar-grid:has(.ui-calendar-week-number) {
2938
+ inline-size: 100%;
2939
+ table-layout: auto;
2940
+ }
2941
+
2942
+ .ui-calendar[data-width="full"] .ui-calendar-grid {
2943
+ inline-size: 100%;
2944
+ }
2945
+
2921
2946
  .ui-calendar-weekday {
2922
2947
  inline-size: var(--control-height);
2923
2948
  border-radius: var(--calendar-weekday-radius, calc(var(--radius) / var(--radius-ratio)));
@@ -2947,6 +2972,7 @@
2947
2972
  .ui-calendar .ui-calendar-day-button {
2948
2973
 
2949
2974
  color: inherit;
2975
+ max-inline-size: 100%;
2950
2976
  inline-size: var(--control-height);
2951
2977
  block-size: var(--control-height);
2952
2978
  padding: 0;
@@ -1,4 +1,62 @@
1
1
  @layer components {
2
+ .ui-persona {
3
+ display: flex;
4
+ align-items: center;
5
+ flex-wrap: nowrap;
6
+ min-inline-size: 0;
7
+ max-inline-size: 100%;
8
+ gap: var(--persona-avatar-gap, var(--space-2));
9
+ }
10
+
11
+ .ui-persona [data-slot="persona-body"] {
12
+ display: flex;
13
+ flex-direction: column;
14
+ flex: 1;
15
+ min-inline-size: 0;
16
+ gap: var(--persona-label-gap, 0);
17
+ }
18
+
19
+ .ui-persona [data-slot="persona-name-line"] {
20
+ display: flex;
21
+ align-items: center;
22
+ min-inline-size: 0;
23
+ gap: var(--persona-trailing-gap, var(--space-1));
24
+ }
25
+
26
+ .ui-persona [data-slot="persona-name"],
27
+ .ui-persona [data-slot="persona-description"] {
28
+ display: block;
29
+ min-inline-size: 0;
30
+ overflow: hidden;
31
+ text-overflow: ellipsis;
32
+ white-space: nowrap;
33
+ text-align: start;
34
+ line-height: var(--persona-label-line-height);
35
+ }
36
+
37
+ .ui-persona [data-slot="persona-name"] {
38
+ font-size: var(--persona-name-font-size, var(--font-size-sm));
39
+ font-weight: var(--persona-name-font-weight, var(--font-weight-medium));
40
+ color: var(--persona-name-color, hsl(var(--foreground)));
41
+ }
42
+
43
+ .ui-persona[data-size="sm"] [data-slot="persona-name"] {
44
+ font-size: var(--persona-name-font-size-sm, var(--font-size-xs));
45
+ }
46
+
47
+ .ui-persona [data-slot="persona-description"] {
48
+ align-self: flex-start;
49
+ max-inline-size: 100%;
50
+ font-size: var(--persona-description-font-size, var(--font-size-xs));
51
+ color: var(--persona-description-color, hsl(var(--muted-foreground)));
52
+ }
53
+
54
+ .ui-persona [data-slot="persona-trailing"] {
55
+ flex: none;
56
+ display: inline-flex;
57
+ white-space: nowrap;
58
+ }
59
+
2
60
  .ui-avatar {
3
61
  position: relative;
4
62
  display: inline-flex;
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "33.12.8",
2
+ "version": "33.14.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",
@@ -215,7 +215,8 @@
215
215
  "alert-layout.css",
216
216
  "badge-layout.css",
217
217
  "data-entry-layout.css",
218
- "form-layout.css"
218
+ "form-layout.css",
219
+ "navigation-layout.css"
219
220
  ]
220
221
  },
221
222
  "Breadcrumb": {
@@ -767,6 +768,11 @@
767
768
  "form-layout.css"
768
769
  ]
769
770
  },
771
+ "Persona": {
772
+ "layers": [
773
+ "data-display-layout.css"
774
+ ]
775
+ },
770
776
  "PieChart": {
771
777
  "layers": [
772
778
  "layout.css",
@@ -1050,19 +1050,24 @@
1050
1050
  display: block;
1051
1051
 
1052
1052
  height: auto;
1053
- border: var(--stroke-hairline) solid hsl(var(--border));
1054
- border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1053
+
1054
+ border: 0;
1055
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
1056
+ border-radius: 0;
1055
1057
  padding: var(--table-stacked-collection-card-padding-y)
1056
- var(--table-stacked-collection-card-padding-x);
1058
+ var(--table-stacked-collection-card-padding-x, var(--card-space-inset));
1057
1059
  margin-block-end: var(--table-stacked-collection-card-gap);
1058
1060
  }
1059
1061
 
1060
1062
  [data-collapse-below="sm"] .ui-table-row:last-child {
1061
1063
  margin-block-end: 0;
1064
+ border-block-end-width: 0;
1062
1065
  }
1063
1066
 
1064
1067
  [data-collapse-below="sm"] [data-slot="table-cell"] {
1065
1068
  display: block;
1069
+
1070
+ inline-size: auto !important;
1066
1071
  padding-block: var(--table-stacked-collection-cell-padding-y);
1067
1072
 
1068
1073
  padding-inline: var(--table-stacked-collection-cell-padding-x);
@@ -1104,19 +1109,24 @@
1104
1109
  display: block;
1105
1110
 
1106
1111
  height: auto;
1107
- border: var(--stroke-hairline) solid hsl(var(--border));
1108
- border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1112
+
1113
+ border: 0;
1114
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
1115
+ border-radius: 0;
1109
1116
  padding: var(--table-stacked-collection-card-padding-y)
1110
- var(--table-stacked-collection-card-padding-x);
1117
+ var(--table-stacked-collection-card-padding-x, var(--card-space-inset));
1111
1118
  margin-block-end: var(--table-stacked-collection-card-gap);
1112
1119
  }
1113
1120
 
1114
1121
  [data-collapse-below="md"] .ui-table-row:last-child {
1115
1122
  margin-block-end: 0;
1123
+ border-block-end-width: 0;
1116
1124
  }
1117
1125
 
1118
1126
  [data-collapse-below="md"] [data-slot="table-cell"] {
1119
1127
  display: block;
1128
+
1129
+ inline-size: auto !important;
1120
1130
  padding-block: var(--table-stacked-collection-cell-padding-y);
1121
1131
  padding-inline: var(--table-stacked-collection-cell-padding-x);
1122
1132
  white-space: normal;
@@ -1156,19 +1166,24 @@
1156
1166
  display: block;
1157
1167
 
1158
1168
  height: auto;
1159
- border: var(--stroke-hairline) solid hsl(var(--border));
1160
- border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1169
+
1170
+ border: 0;
1171
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
1172
+ border-radius: 0;
1161
1173
  padding: var(--table-stacked-collection-card-padding-y)
1162
- var(--table-stacked-collection-card-padding-x);
1174
+ var(--table-stacked-collection-card-padding-x, var(--card-space-inset));
1163
1175
  margin-block-end: var(--table-stacked-collection-card-gap);
1164
1176
  }
1165
1177
 
1166
1178
  [data-collapse-below="lg"] .ui-table-row:last-child {
1167
1179
  margin-block-end: 0;
1180
+ border-block-end-width: 0;
1168
1181
  }
1169
1182
 
1170
1183
  [data-collapse-below="lg"] [data-slot="table-cell"] {
1171
1184
  display: block;
1185
+
1186
+ inline-size: auto !important;
1172
1187
  padding-block: var(--table-stacked-collection-cell-padding-y);
1173
1188
  padding-inline: var(--table-stacked-collection-cell-padding-x);
1174
1189
  white-space: normal;
@@ -1208,19 +1223,24 @@
1208
1223
  display: block;
1209
1224
 
1210
1225
  height: auto;
1211
- border: var(--stroke-hairline) solid hsl(var(--border));
1212
- border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1226
+
1227
+ border: 0;
1228
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
1229
+ border-radius: 0;
1213
1230
  padding: var(--table-stacked-collection-card-padding-y)
1214
- var(--table-stacked-collection-card-padding-x);
1231
+ var(--table-stacked-collection-card-padding-x, var(--card-space-inset));
1215
1232
  margin-block-end: var(--table-stacked-collection-card-gap);
1216
1233
  }
1217
1234
 
1218
1235
  [data-collapse-below="xl"] .ui-table-row:last-child {
1219
1236
  margin-block-end: 0;
1237
+ border-block-end-width: 0;
1220
1238
  }
1221
1239
 
1222
1240
  [data-collapse-below="xl"] [data-slot="table-cell"] {
1223
1241
  display: block;
1242
+
1243
+ inline-size: auto !important;
1224
1244
  padding-block: var(--table-stacked-collection-cell-padding-y);
1225
1245
  padding-inline: var(--table-stacked-collection-cell-padding-x);
1226
1246
  white-space: normal;