@godxjp/ui 33.22.2 → 33.25.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/DESIGN.md +1 -1
- package/README.md +16 -5
- package/agent/DESIGN.md +1 -1
- package/agent/START-HERE.md +8 -8
- package/agent/components/AgentBadge.json +43 -0
- package/agent/components/AppShell.json +6 -0
- package/agent/components/Avatar.json +7 -0
- package/agent/components/CatalogDetail.json +7 -3
- package/agent/components/DatePicker.json +1 -1
- package/agent/components/DropdownMenu.json +1 -0
- package/agent/components/EditorialCard.json +2 -1
- package/agent/components/Image.json +6 -1
- package/agent/components/PageContainer.json +5 -0
- package/agent/components/PageErrorBoundary.json +48 -0
- package/agent/components/Pagination.json +5 -0
- package/agent/components/Popover.json +1 -0
- package/agent/components/Select.json +2 -1
- package/agent/components/Toaster.json +2 -2
- package/agent/components/Toolbar.json +1 -1
- package/agent/components/Topbar.json +1 -1
- package/agent/components-index.json +10 -0
- package/agent/components.json +138 -11
- package/agent/index.json +8 -8
- package/agent/llms.txt +7 -7
- package/agent/patterns/notice-bar.json +16 -0
- package/agent/patterns-index.json +15 -0
- package/agent/patterns.json +16 -0
- package/agent/rules.json +2 -2
- package/agent/tokens.json +121 -7
- package/dist/components/charts/chart-cartesian.js +5 -1
- package/dist/components/charts/chart-summary.d.ts +1 -1
- package/dist/components/charts/chart-summary.js +17 -6
- package/dist/components/charts/compact-bar-trend.js +4 -3
- package/dist/components/charts/pie-chart.js +2 -1
- package/dist/components/data-display/avatar.d.ts +1 -1
- package/dist/components/data-display/avatar.js +7 -1
- package/dist/components/data-display/badge.d.ts +11 -0
- package/dist/components/data-display/badge.js +20 -0
- package/dist/components/data-display/image.d.ts +1 -0
- package/dist/components/data-display/image.js +10 -2
- package/dist/components/data-display/index.d.ts +2 -2
- package/dist/components/data-display/index.js +2 -1
- package/dist/components/data-display/popover.js +11 -0
- package/dist/components/data-entry/calendar.js +1 -1
- package/dist/components/data-entry/date-picker.js +22 -5
- package/dist/components/data-entry/record-picker.js +122 -98
- package/dist/components/data-entry/select.js +13 -3
- package/dist/components/general/button.js +2 -2
- package/dist/components/layout/affix.js +1 -1
- package/dist/components/layout/app-shell.d.ts +1 -1
- package/dist/components/layout/app-shell.js +3 -1
- package/dist/components/layout/editorial-catalog.d.ts +1 -1
- package/dist/components/layout/editorial-catalog.js +53 -15
- package/dist/components/layout/index.d.ts +2 -0
- package/dist/components/layout/index.js +2 -0
- package/dist/components/layout/page-container.d.ts +1 -1
- package/dist/components/layout/page-container.js +6 -3
- package/dist/components/layout/page-error-boundary.d.ts +32 -0
- package/dist/components/layout/page-error-boundary.js +57 -0
- package/dist/components/layout/sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar.js +100 -49
- package/dist/components/layout/topbar.js +108 -21
- package/dist/components/navigation/dropdown-menu.d.ts +13 -3
- package/dist/components/navigation/dropdown-menu.js +36 -6
- package/dist/components/navigation/pagination.d.ts +1 -1
- package/dist/components/navigation/pagination.js +13 -1
- package/dist/components/navigation/toolbar.js +2 -1
- package/dist/contracts/measurement.json +1 -1
- package/dist/i18n/messages/en.json +7 -0
- package/dist/i18n/messages/ja.json +7 -0
- package/dist/i18n/messages/vi.json +7 -0
- package/dist/props/components/data-display.prop.d.ts +29 -0
- package/dist/props/components/layout.prop.d.ts +52 -2
- package/dist/props/components/navigation.prop.d.ts +15 -1
- package/dist/props/registry.d.ts +65 -5
- package/dist/props/registry.js +90 -4
- package/dist/styles/alert-layout.css +4 -0
- package/dist/styles/application.css +24 -0
- package/dist/styles/badge-layout.css +14 -0
- package/dist/styles/base.css +11 -0
- package/dist/styles/control.css +32 -19
- package/dist/styles/core.css +1 -0
- package/dist/styles/data-display-layout.css +51 -0
- package/dist/styles/dialog-layout.css +9 -0
- package/dist/styles/editorial-layout.css +2076 -0
- package/dist/styles/editorial.css +3 -0
- package/dist/styles/icon-layout.css +3 -0
- package/dist/styles/index.css +1 -0
- package/dist/styles/layers.json +60 -9
- package/dist/styles/layout.css +9 -1985
- package/dist/styles/precompiled/alert-layout.css +2 -0
- package/dist/styles/precompiled/badge-layout.css +2 -0
- package/dist/styles/precompiled/base.css +2 -0
- package/dist/styles/precompiled/card-layout.css +2 -0
- package/dist/styles/precompiled/chart-layout.css +2 -0
- package/dist/styles/precompiled/control.css +2 -0
- package/dist/styles/precompiled/data-display-layout.css +2 -0
- package/dist/styles/precompiled/data-entry-layout.css +2 -0
- package/dist/styles/precompiled/dialog-layout.css +2 -0
- package/dist/styles/precompiled/editorial-account-layout.css +2 -0
- package/dist/styles/precompiled/editorial-layout.css +2 -0
- package/dist/styles/precompiled/float-button-layout.css +2 -0
- package/dist/styles/precompiled/form-layout.css +2 -0
- package/dist/styles/precompiled/icon-layout.css +2 -0
- package/dist/styles/precompiled/layout.css +2 -0
- package/dist/styles/precompiled/logo-layout.css +2 -0
- package/dist/styles/precompiled/motion.css +2 -0
- package/dist/styles/precompiled/navigation-layout.css +2 -0
- package/dist/styles/precompiled/shell-layout.css +2 -0
- package/dist/styles/precompiled/table-layout.css +2 -0
- package/dist/styles/precompiled/text-layout.css +2 -0
- package/dist/styles/precompiled/toggle.css +2 -0
- package/dist/styles/precompiled/vendor-day-picker.css +2 -0
- package/dist/styles/precompiled/vendor-sonner.css +2 -0
- package/dist/styles/shell-layout.css +17 -1
- package/dist/styles/table-layout.css +1 -1
- package/dist/styles.css +1 -1
- package/dist/tokens/components/badge.css +3 -0
- package/dist/tokens/components/control.css +3 -0
- package/dist/tokens/components/data-display.css +9 -0
- package/dist/tokens/components/editorial.css +9 -6
- package/dist/tokens/components/shell.css +2 -0
- package/dist/tokens/foundation.css +8 -0
- package/docs/CONSUMER-RULES.md +36 -1
- package/package.json +4 -2
- package/scripts/consumer-rule.md +1 -1
- package/scripts/prune-css.mjs +56 -8
- package/scripts/ui-audit.mjs +36 -0
- package/skills/godxjp-ui-navigation/SKILL.md +14 -9
- package/skills/godxjp-ui-navigation/references/principles.md +2 -2
|
@@ -375,10 +375,16 @@
|
|
|
375
375
|
"position": "Vị trí ảnh bìa",
|
|
376
376
|
"hint": "Kéo ảnh hoặc dùng phím mũi tên để chỉnh vị trí",
|
|
377
377
|
"valueText": "{value}% tính từ trên"
|
|
378
|
+
},
|
|
379
|
+
"pageErrorBoundary": {
|
|
380
|
+
"title": "Không thể hiển thị trang này",
|
|
381
|
+
"description": "Đã xảy ra lỗi khi hiển thị trang này. Các phần khác của ứng dụng vẫn hoạt động: hãy tải lại trang, hoặc chuyển sang trang khác từ menu.",
|
|
382
|
+
"reload": "Tải lại trang"
|
|
378
383
|
}
|
|
379
384
|
},
|
|
380
385
|
"dataDisplay": {
|
|
381
386
|
"avatar": {
|
|
387
|
+
"agent": "Tác tử AI",
|
|
382
388
|
"presence": {
|
|
383
389
|
"online": "Trực tuyến",
|
|
384
390
|
"away": "Vắng mặt",
|
|
@@ -780,6 +786,7 @@
|
|
|
780
786
|
"trendCurrent": "hiện tại",
|
|
781
787
|
"heatmapSummary": "Bản đồ nhiệt {rows} × {columns}",
|
|
782
788
|
"heatmapHighest": "Cao nhất: {value} tại {row}, {column}",
|
|
789
|
+
"noData": "Không có dữ liệu",
|
|
783
790
|
"heatmapNoData": "Không có dữ liệu",
|
|
784
791
|
"heatmapTop": "Hạng {rank}",
|
|
785
792
|
"heatmapLegend": "Thang màu",
|
|
@@ -261,9 +261,25 @@ export type AvatarProp = React.ComponentPropsWithoutRef<"span"> & {
|
|
|
261
261
|
* a presence dot never carries visible text; that is `Badge status`.
|
|
262
262
|
*/
|
|
263
263
|
presenceLabel?: LabelProp;
|
|
264
|
+
/**
|
|
265
|
+
* Who the mark stands for. `person` (default) is inert — no attribute, no node. `agent` marks an
|
|
266
|
+
* AI agent: a small "AI" tag at the block-start/inline-end corner (the corner `presence` does not
|
|
267
|
+
* use) plus a localized visually hidden "AI agent" folded into the avatar's accessible text, so the
|
|
268
|
+
* difference is never carried by the tag's colour alone (WCAG 1.4.1). Same vocabulary as
|
|
269
|
+
* `OrgChartNode.variant`.
|
|
270
|
+
*/
|
|
271
|
+
kind?: AvatarKindProp;
|
|
264
272
|
className?: ClassNameProp;
|
|
265
273
|
children?: ChildrenProp;
|
|
266
274
|
};
|
|
275
|
+
/**
|
|
276
|
+
* Who an Avatar stands for — a person or an AI agent. Deliberately the same two values as
|
|
277
|
+
* `OrgChartNodeVariantProp`, so an app that already knows a principal's kind passes it unchanged
|
|
278
|
+
* to both. Retune the agent tag with `--avatar-agent-*`.
|
|
279
|
+
*
|
|
280
|
+
* @see Avatar
|
|
281
|
+
*/
|
|
282
|
+
export type AvatarKindProp = "person" | "agent";
|
|
267
283
|
/**
|
|
268
284
|
* Avatar presence status — a person's realtime reachability.
|
|
269
285
|
*
|
|
@@ -307,6 +323,17 @@ export type AvatarAppearanceProp = "default" | "tinted";
|
|
|
307
323
|
*/
|
|
308
324
|
export type AvatarImageFitProp = "cover" | "contain";
|
|
309
325
|
/** @see Badge */
|
|
326
|
+
/**
|
|
327
|
+
* @see AgentBadge — the "AI agent" label beside a name (violet outline, pill, never wraps). The
|
|
328
|
+
* text-row half of telling an agent apart from a person; `Avatar kind="agent"` is the mark half.
|
|
329
|
+
*/
|
|
330
|
+
export type AgentBadgeProp = Omit<React.HTMLAttributes<HTMLElement>, "children"> & {
|
|
331
|
+
/** Render element — `span` (default; the label sits in a name's text line) or `div`. */
|
|
332
|
+
as?: "div" | "span";
|
|
333
|
+
/** Overrides the localized default label (`dataDisplay.avatar.agent`). */
|
|
334
|
+
children?: ChildrenProp;
|
|
335
|
+
className?: ClassNameProp;
|
|
336
|
+
};
|
|
310
337
|
export type BadgeProp = {
|
|
311
338
|
/**
|
|
312
339
|
* Render element — `div` (default) or `span` when the chip sits in a phrasing context where a
|
|
@@ -1325,6 +1352,8 @@ export type ImageProp = Omit<React.ImgHTMLAttributes<HTMLImageElement>, "alt" |
|
|
|
1325
1352
|
fallback?: string;
|
|
1326
1353
|
/** Painted over the frame until the picture loads. `true` = the plain muted block. */
|
|
1327
1354
|
placeholder?: React.ReactNode | boolean;
|
|
1355
|
+
/** Resolved source status, including cached-before-mount images. Error stays final for fallback. */
|
|
1356
|
+
onStatusChange?: (status: "loading" | "loaded" | "error") => void;
|
|
1328
1357
|
/** `false` = a plain picture, not clickable, not in its group. Default `true`. */
|
|
1329
1358
|
preview?: boolean | ImagePreviewConfigProp;
|
|
1330
1359
|
/**
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Layout component prop types — @see docs/COMPONENTS.md#layout */
|
|
2
2
|
import type * as React from "react";
|
|
3
|
+
import type { ImageProp } from "./data-display.prop.js";
|
|
3
4
|
import type { ComponentType, ReactNode, SVGProps } from "react";
|
|
4
5
|
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, LabelProp, NameProp, PlaceholderProp } from "../vocabulary/index.js";
|
|
5
6
|
import type { EmptyStateToneProp } from "./data-display.prop.js";
|
|
@@ -73,6 +74,13 @@ export type PageContainerProp = {
|
|
|
73
74
|
titleRef?: React.Ref<HTMLHeadingElement>;
|
|
74
75
|
/** @see PageContainerExtraProp */
|
|
75
76
|
extra?: PageContainerExtraProp;
|
|
77
|
+
/**
|
|
78
|
+
* The page's Help control (gh#1494) — a `Button` that opens a help Sheet, or a link to the
|
|
79
|
+
* manual. It has ONE fixed place on every page: the inline end of the header row, after the
|
|
80
|
+
* `extra` actions, and still the last item at the inline end when those actions wrap. A page
|
|
81
|
+
* passing only `help` still gets a header. Pass one control; it is not a second action cluster.
|
|
82
|
+
*/
|
|
83
|
+
help?: ReactNode;
|
|
76
84
|
/**
|
|
77
85
|
* FIXED chrome band between the page header and the scrolling body — a filter strip, a status
|
|
78
86
|
* bar, a "channel workflow" rail. It is a first-class page-chrome slot precisely because the
|
|
@@ -454,6 +462,33 @@ export type PageInsetProp = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
454
462
|
children?: ChildrenProp;
|
|
455
463
|
className?: ClassNameProp;
|
|
456
464
|
};
|
|
465
|
+
/** @see PageErrorBoundary — the render-prop form of `fallback`. */
|
|
466
|
+
export type PageErrorBoundaryFallbackProp = (failure: {
|
|
467
|
+
/** What the page threw. */
|
|
468
|
+
error: unknown;
|
|
469
|
+
/** Draws the page again (e.g. a "Try again" button that re-renders without a reload). */
|
|
470
|
+
reset: () => void;
|
|
471
|
+
}) => ReactNode;
|
|
472
|
+
/**
|
|
473
|
+
* @see PageErrorBoundary — a page-level error boundary (gh#1494). A page that throws while
|
|
474
|
+
* rendering is replaced by an `ErrorSurface`; the shell around it stays.
|
|
475
|
+
*/
|
|
476
|
+
export type PageErrorBoundaryProp = {
|
|
477
|
+
children?: ChildrenProp;
|
|
478
|
+
/**
|
|
479
|
+
* What to draw instead of the page. Default: an `application` `ErrorSurface` (status 500,
|
|
480
|
+
* localized title and description, one "Reload page" action). A function receives
|
|
481
|
+
* `{ error, reset }`.
|
|
482
|
+
*/
|
|
483
|
+
fallback?: ReactNode | PageErrorBoundaryFallbackProp;
|
|
484
|
+
/**
|
|
485
|
+
* Draw the page again whenever this value changes (compared with `Object.is`). The boundary
|
|
486
|
+
* already resets when the URL changes; pass a key for a change the URL does not show.
|
|
487
|
+
*/
|
|
488
|
+
resetKey?: unknown;
|
|
489
|
+
/** Report the error (Sentry, a log endpoint). Replaces the development-time `console.error`. */
|
|
490
|
+
onError?: (error: unknown, info: React.ErrorInfo) => void;
|
|
491
|
+
};
|
|
457
492
|
/** @see AppShell */
|
|
458
493
|
export type AppShellProp = {
|
|
459
494
|
/** Phone destinations, using MobileShell tabBar children (3–5 links or Buttons with aria-current="page"). Only rendered in drawer navigation mode. Main/footer reserve the measured safe-area-inclusive height. */
|
|
@@ -463,6 +498,14 @@ export type AppShellProp = {
|
|
|
463
498
|
/** Omit or pass null/false for a shell without the sidebar landmark or grid track. */
|
|
464
499
|
sidebar?: ReactNode;
|
|
465
500
|
children: ReactNode;
|
|
501
|
+
/**
|
|
502
|
+
* The page-level error boundary around `children` (gh#1494). Default `true`: a page that throws
|
|
503
|
+
* while rendering is replaced by an `ErrorSurface` inside `<main>`, and the sidebar, topbar and
|
|
504
|
+
* breadcrumb stay, so the user can navigate away; the boundary resets when the URL changes.
|
|
505
|
+
* Pass props to configure it (`{ fallback, resetKey, onError }`), or `false` when the app
|
|
506
|
+
* already wraps its pages in its own boundary.
|
|
507
|
+
*/
|
|
508
|
+
errorBoundary?: boolean | Omit<PageErrorBoundaryProp, "children">;
|
|
466
509
|
topbar?: ReactNode;
|
|
467
510
|
topbarLeft?: ReactNode;
|
|
468
511
|
topbarRight?: ReactNode;
|
|
@@ -1149,6 +1192,9 @@ export type SidebarItemProp = {
|
|
|
1149
1192
|
* Nested rows — renders a collapsible submenu group (the parent reads active when any child is).
|
|
1150
1193
|
* Honoured by BOTH `Sidebar` and `NavList` (gh#815): `NavList` used to map `items` straight to a
|
|
1151
1194
|
* row, so a nested group type-checked, rendered as one flat row and lost its children silently.
|
|
1195
|
+
* A child may carry `children` of its own (gh#1493): the group nests one level further, so a
|
|
1196
|
+
* section can hold work area → sub-area → page (three clickable levels), and the collapsed-rail
|
|
1197
|
+
* flyout lists the grandchildren under a labelled group.
|
|
1152
1198
|
*/
|
|
1153
1199
|
children?: SidebarItemProp[];
|
|
1154
1200
|
};
|
|
@@ -2594,8 +2640,12 @@ export type EditorialFilterFieldProp = {
|
|
|
2594
2640
|
export type CatalogDetailProp = {
|
|
2595
2641
|
/** `"sealed"` frames a product package instead of a card. */
|
|
2596
2642
|
variant?: "card" | "sealed";
|
|
2597
|
-
/**
|
|
2598
|
-
media
|
|
2643
|
+
/** Custom media. Used when `image` is omitted. */
|
|
2644
|
+
media?: ReactNode;
|
|
2645
|
+
/** Kit-owned, source-keyed Image with loading skeleton and error fallback. Takes precedence over media. */
|
|
2646
|
+
image?: Pick<ImageProp, "src" | "alt" | "width" | "height" | "fallback"> & {
|
|
2647
|
+
priority?: boolean;
|
|
2648
|
+
};
|
|
2599
2649
|
/** The save toggle over the frame's corner (same shape as `CatalogCard`'s). */
|
|
2600
2650
|
favorite?: CatalogCardProp["favorite"];
|
|
2601
2651
|
/** A line under the frame (the picture's source, an official link). */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type * as React from "react";
|
|
3
3
|
import type { ReactNode } from "react";
|
|
4
4
|
import type { AffixProp, AffixTargetProp, ResponsiveGridColumnsProp, SidebarLinkComponentProp } from "./layout.prop.js";
|
|
5
|
-
import type { ActionsProp, ChildrenProp, ClassNameProp, DisabledProp, ErrorProp, HasActiveFiltersProp, IdProp, LabelProp, OnClearFiltersProp, OnOpenChangeProp, OpenProp, DefaultOpenProp, PendingProp, PlaceholderProp, StickyProp, TextAlignProp } from "../vocabulary/index.js";
|
|
5
|
+
import type { ActionsProp, AllowClearProp, ChildrenProp, ClassNameProp, DisabledProp, ErrorProp, HasActiveFiltersProp, IdProp, LabelProp, OnClearFiltersProp, OnOpenChangeProp, OpenProp, DefaultOpenProp, PendingProp, PlaceholderProp, RequiredProp, StickyProp, TextAlignProp } from "../vocabulary/index.js";
|
|
6
6
|
import type { FormProp, SearchSelectOptionProp } from "./data-entry.prop.js";
|
|
7
7
|
/**
|
|
8
8
|
* Renders the canonical SearchInput as the FIRST control of the strip, with a token-owned
|
|
@@ -41,6 +41,17 @@ export type FilterBarFilterProp = {
|
|
|
41
41
|
onSelectedChange?: (selected: string) => void;
|
|
42
42
|
placeholder?: PlaceholderProp;
|
|
43
43
|
disabled?: DisabledProp;
|
|
44
|
+
/**
|
|
45
|
+
* A SCOPE filter that is never empty — the branch, the month (gh#1495). The filter renders no
|
|
46
|
+
* ✕ and its control is `aria-required`; the bar's clear-all is still the consumer's `onClear`,
|
|
47
|
+
* which should leave a required filter at its value. Implies `allowClear={false}`.
|
|
48
|
+
*/
|
|
49
|
+
required?: RequiredProp;
|
|
50
|
+
/**
|
|
51
|
+
* The per-filter ✕. Default `true`: a filter is optional by nature, "no filter" is its resting
|
|
52
|
+
* state. `false` hides it without marking the filter required (gh#1495).
|
|
53
|
+
*/
|
|
54
|
+
allowClear?: AllowClearProp;
|
|
44
55
|
};
|
|
45
56
|
/**
|
|
46
57
|
* Chips are pure consumer data — the lifecycle is: ADD by including the chip in `chips`, REMOVE
|
|
@@ -221,6 +232,9 @@ export type PaginationProp = {
|
|
|
221
232
|
disabled?: DisabledProp;
|
|
222
233
|
className?: ClassNameProp;
|
|
223
234
|
onValueChange?: (page: number, pageSize: number) => void;
|
|
235
|
+
/** Pointer enter, focus or touch start on an enabled page/previous/next target. May repeat;
|
|
236
|
+
* preload/cache the target without changing the controlled value. Also applies in simple mode. */
|
|
237
|
+
onPageIntent?: (page: number) => void;
|
|
224
238
|
};
|
|
225
239
|
/** @see Pagination — control tier (Ant Design `size`: `small` → `sm`, `middle` → `md`). */
|
|
226
240
|
export type PaginationSizeProp = "sm" | "md";
|
package/dist/props/registry.d.ts
CHANGED
|
@@ -847,6 +847,10 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
847
847
|
readonly group: "layout";
|
|
848
848
|
readonly file: "components/layout.prop.ts";
|
|
849
849
|
readonly vocabulary: readonly ["TitleProp", "SubtitleProp", "StatusProp", "ExtraProp", "FooterProp", "BreadcrumbProp", "BreadcrumbCurrentItemProp", "DensityProp", "PageContainerVariantProp", {
|
|
850
|
+
readonly field: "help";
|
|
851
|
+
readonly local: true;
|
|
852
|
+
readonly reason: "The page's ONE Help control (gh#1494), at a fixed place: the last item at the header row's inline end, after the `extra` actions. A single node, not an ActionsProp list.";
|
|
853
|
+
}, {
|
|
850
854
|
readonly field: "toolbar";
|
|
851
855
|
readonly local: true;
|
|
852
856
|
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.";
|
|
@@ -1133,7 +1137,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1133
1137
|
readonly AppShellProp: {
|
|
1134
1138
|
readonly group: "layout";
|
|
1135
1139
|
readonly file: "components/layout.prop.ts";
|
|
1136
|
-
readonly vocabulary: readonly ["ChildrenProp",
|
|
1140
|
+
readonly vocabulary: readonly ["ChildrenProp", {
|
|
1141
|
+
readonly field: "errorBoundary";
|
|
1142
|
+
readonly local: true;
|
|
1143
|
+
readonly reason: "Page-level error boundary around `children` (gh#1494): `true` (default) keeps the shell when a page throws, an object configures PageErrorBoundary, `false` opts out.";
|
|
1144
|
+
}, "BreakpointProp", {
|
|
1137
1145
|
readonly field: "logoCompact";
|
|
1138
1146
|
readonly local: true;
|
|
1139
1147
|
readonly reason: "The brand node a narrow bar gets instead of `logo` — the consumer's own mark/viewBox, which a stylesheet cannot produce (gh#728).";
|
|
@@ -1929,7 +1937,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1929
1937
|
readonly CatalogDetailProp: {
|
|
1930
1938
|
readonly group: "layout";
|
|
1931
1939
|
readonly file: "components/layout.prop.ts";
|
|
1932
|
-
readonly vocabulary: readonly [
|
|
1940
|
+
readonly vocabulary: readonly [{
|
|
1941
|
+
readonly field: "image";
|
|
1942
|
+
readonly local: true;
|
|
1943
|
+
readonly reason: "Kit-owned source-keyed media configuration.";
|
|
1944
|
+
}, "TitleProp", "ClassNameProp", {
|
|
1933
1945
|
readonly field: "variant";
|
|
1934
1946
|
readonly local: true;
|
|
1935
1947
|
readonly reason: "Card or sealed-product frame.";
|
|
@@ -2452,6 +2464,32 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
2452
2464
|
readonly reason: "Slot for the host's cover controls (change / reposition / remove), laid out off the focal area — a ReactNode slot, not the ActionsProp item list.";
|
|
2453
2465
|
}];
|
|
2454
2466
|
};
|
|
2467
|
+
readonly PageErrorBoundaryFallbackProp: {
|
|
2468
|
+
readonly group: "layout";
|
|
2469
|
+
readonly file: "components/layout.prop.ts";
|
|
2470
|
+
readonly vocabulary: readonly [{
|
|
2471
|
+
readonly field: "fallback";
|
|
2472
|
+
readonly local: true;
|
|
2473
|
+
readonly reason: "Render-prop form of PageErrorBoundary `fallback`: `({ error, reset }) => node` (gh#1494).";
|
|
2474
|
+
}];
|
|
2475
|
+
};
|
|
2476
|
+
readonly PageErrorBoundaryProp: {
|
|
2477
|
+
readonly group: "layout";
|
|
2478
|
+
readonly file: "components/layout.prop.ts";
|
|
2479
|
+
readonly vocabulary: readonly ["ChildrenProp", {
|
|
2480
|
+
readonly field: "fallback";
|
|
2481
|
+
readonly local: true;
|
|
2482
|
+
readonly reason: "What replaces the page that threw — a node, or `({ error, reset }) => node`. Default: an application ErrorSurface with the kit's localized copy (gh#1494).";
|
|
2483
|
+
}, {
|
|
2484
|
+
readonly field: "resetKey";
|
|
2485
|
+
readonly local: true;
|
|
2486
|
+
readonly reason: "React error-boundary reset key (react-error-boundary's resetKeys, one value): a change draws the page again. The URL change already resets.";
|
|
2487
|
+
}, {
|
|
2488
|
+
readonly field: "onError";
|
|
2489
|
+
readonly local: true;
|
|
2490
|
+
readonly reason: "componentDidCatch reporter `(error, info)` for an error tracker.";
|
|
2491
|
+
}];
|
|
2492
|
+
};
|
|
2455
2493
|
readonly ErrorSurfaceProp: {
|
|
2456
2494
|
readonly group: "layout";
|
|
2457
2495
|
readonly file: "components/layout.prop.ts";
|
|
@@ -3339,6 +3377,20 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
3339
3377
|
readonly file: "components/data-display.prop.ts";
|
|
3340
3378
|
readonly vocabulary: readonly [];
|
|
3341
3379
|
};
|
|
3380
|
+
readonly AvatarKindProp: {
|
|
3381
|
+
readonly group: "data-display";
|
|
3382
|
+
readonly file: "components/data-display.prop.ts";
|
|
3383
|
+
readonly vocabulary: readonly [];
|
|
3384
|
+
};
|
|
3385
|
+
readonly AgentBadgeProp: {
|
|
3386
|
+
readonly group: "data-display";
|
|
3387
|
+
readonly file: "components/data-display.prop.ts";
|
|
3388
|
+
readonly vocabulary: readonly [{
|
|
3389
|
+
readonly field: "as";
|
|
3390
|
+
readonly local: true;
|
|
3391
|
+
readonly reason: "Closed tag seam (div | span), the same one Badge carries, so the label stays valid HTML beside a name inside a link or a <button>.";
|
|
3392
|
+
}, "ChildrenProp", "ClassNameProp"];
|
|
3393
|
+
};
|
|
3342
3394
|
readonly AvatarImageFitProp: {
|
|
3343
3395
|
readonly group: "data-display";
|
|
3344
3396
|
readonly file: "components/data-display.prop.ts";
|
|
@@ -4003,7 +4055,7 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
4003
4055
|
readonly FilterBarFilterProp: {
|
|
4004
4056
|
readonly group: "navigation";
|
|
4005
4057
|
readonly file: "components/navigation.prop.ts";
|
|
4006
|
-
readonly vocabulary: readonly ["LabelProp", "PlaceholderProp", "DisabledProp"];
|
|
4058
|
+
readonly vocabulary: readonly ["LabelProp", "PlaceholderProp", "DisabledProp", "RequiredProp", "AllowClearProp"];
|
|
4007
4059
|
};
|
|
4008
4060
|
readonly FilterBarChipProp: {
|
|
4009
4061
|
readonly group: "navigation";
|
|
@@ -4018,7 +4070,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
4018
4070
|
readonly PaginationProp: {
|
|
4019
4071
|
readonly group: "navigation";
|
|
4020
4072
|
readonly file: "components/navigation.prop.ts";
|
|
4021
|
-
readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "DisabledProp", "ClassNameProp", "SizeProp"
|
|
4073
|
+
readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "DisabledProp", "ClassNameProp", "SizeProp", {
|
|
4074
|
+
readonly field: "onPageIntent";
|
|
4075
|
+
readonly local: true;
|
|
4076
|
+
readonly reason: "A page target intent event for cache/router preloading, separate from the controlled value channel; pointer enter, focus and touch start (gh#1472).";
|
|
4077
|
+
}];
|
|
4022
4078
|
};
|
|
4023
4079
|
readonly PaginationSizeProp: {
|
|
4024
4080
|
readonly group: "navigation";
|
|
@@ -5643,7 +5699,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
5643
5699
|
readonly ImageProp: {
|
|
5644
5700
|
readonly group: "data-display";
|
|
5645
5701
|
readonly file: "components/data-display.prop.ts";
|
|
5646
|
-
readonly vocabulary: readonly [
|
|
5702
|
+
readonly vocabulary: readonly [{
|
|
5703
|
+
readonly field: "onStatusChange";
|
|
5704
|
+
readonly local: true;
|
|
5705
|
+
readonly reason: "Resolved image loading state, including cached images and fallback.";
|
|
5706
|
+
}, "ClassNameProp", "PlaceholderProp", {
|
|
5647
5707
|
readonly field: "src";
|
|
5648
5708
|
readonly local: true;
|
|
5649
5709
|
readonly reason: "The native img src attribute.";
|
package/dist/props/registry.js
CHANGED
|
@@ -861,6 +861,11 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
861
861
|
"BreadcrumbCurrentItemProp",
|
|
862
862
|
"DensityProp",
|
|
863
863
|
"PageContainerVariantProp",
|
|
864
|
+
{
|
|
865
|
+
field: "help",
|
|
866
|
+
local: true,
|
|
867
|
+
reason: "The page's ONE Help control (gh#1494), at a fixed place: the last item at the header row's inline end, after the `extra` actions. A single node, not an ActionsProp list."
|
|
868
|
+
},
|
|
864
869
|
{
|
|
865
870
|
field: "toolbar",
|
|
866
871
|
local: true,
|
|
@@ -1152,6 +1157,11 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1152
1157
|
file: "components/layout.prop.ts",
|
|
1153
1158
|
vocabulary: [
|
|
1154
1159
|
"ChildrenProp",
|
|
1160
|
+
{
|
|
1161
|
+
field: "errorBoundary",
|
|
1162
|
+
local: true,
|
|
1163
|
+
reason: "Page-level error boundary around `children` (gh#1494): `true` (default) keeps the shell when a page throws, an object configures PageErrorBoundary, `false` opts out."
|
|
1164
|
+
},
|
|
1155
1165
|
"BreakpointProp",
|
|
1156
1166
|
{
|
|
1157
1167
|
field: "logoCompact",
|
|
@@ -1590,9 +1600,17 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1590
1600
|
{ field: "variant", local: true, reason: "inset (site search) or inline (collection row)." },
|
|
1591
1601
|
{ field: "count", local: true, reason: "Live count at the end of the inline row." },
|
|
1592
1602
|
{ field: "debounce", local: true, reason: "Settle delay in ms, as SearchInput.debounce." },
|
|
1593
|
-
{
|
|
1603
|
+
{
|
|
1604
|
+
field: "suggestions",
|
|
1605
|
+
local: true,
|
|
1606
|
+
reason: "Grouped suggestion rows under the box (gh#1447)."
|
|
1607
|
+
},
|
|
1594
1608
|
{ field: "suggestionsFooter", local: true, reason: "Last popup row linking to all results." },
|
|
1595
|
-
{
|
|
1609
|
+
{
|
|
1610
|
+
field: "suggestionsLabel",
|
|
1611
|
+
local: true,
|
|
1612
|
+
reason: "Accessible name of the suggestions listbox."
|
|
1613
|
+
},
|
|
1596
1614
|
{
|
|
1597
1615
|
field: "onQueryChange",
|
|
1598
1616
|
local: true,
|
|
@@ -1874,6 +1892,7 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1874
1892
|
group: "layout",
|
|
1875
1893
|
file: "components/layout.prop.ts",
|
|
1876
1894
|
vocabulary: [
|
|
1895
|
+
{ field: "image", local: true, reason: "Kit-owned source-keyed media configuration." },
|
|
1877
1896
|
"TitleProp",
|
|
1878
1897
|
"ClassNameProp",
|
|
1879
1898
|
{ field: "variant", local: true, reason: "Card or sealed-product frame." },
|
|
@@ -2182,6 +2201,39 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
2182
2201
|
}
|
|
2183
2202
|
]
|
|
2184
2203
|
},
|
|
2204
|
+
PageErrorBoundaryFallbackProp: {
|
|
2205
|
+
group: "layout",
|
|
2206
|
+
file: "components/layout.prop.ts",
|
|
2207
|
+
vocabulary: [
|
|
2208
|
+
{
|
|
2209
|
+
field: "fallback",
|
|
2210
|
+
local: true,
|
|
2211
|
+
reason: "Render-prop form of PageErrorBoundary `fallback`: `({ error, reset }) => node` (gh#1494)."
|
|
2212
|
+
}
|
|
2213
|
+
]
|
|
2214
|
+
},
|
|
2215
|
+
PageErrorBoundaryProp: {
|
|
2216
|
+
group: "layout",
|
|
2217
|
+
file: "components/layout.prop.ts",
|
|
2218
|
+
vocabulary: [
|
|
2219
|
+
"ChildrenProp",
|
|
2220
|
+
{
|
|
2221
|
+
field: "fallback",
|
|
2222
|
+
local: true,
|
|
2223
|
+
reason: "What replaces the page that threw \u2014 a node, or `({ error, reset }) => node`. Default: an application ErrorSurface with the kit's localized copy (gh#1494)."
|
|
2224
|
+
},
|
|
2225
|
+
{
|
|
2226
|
+
field: "resetKey",
|
|
2227
|
+
local: true,
|
|
2228
|
+
reason: "React error-boundary reset key (react-error-boundary's resetKeys, one value): a change draws the page again. The URL change already resets."
|
|
2229
|
+
},
|
|
2230
|
+
{
|
|
2231
|
+
field: "onError",
|
|
2232
|
+
local: true,
|
|
2233
|
+
reason: "componentDidCatch reporter `(error, info)` for an error tracker."
|
|
2234
|
+
}
|
|
2235
|
+
]
|
|
2236
|
+
},
|
|
2185
2237
|
ErrorSurfaceProp: {
|
|
2186
2238
|
group: "layout",
|
|
2187
2239
|
file: "components/layout.prop.ts",
|
|
@@ -3453,6 +3505,24 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
3453
3505
|
file: "components/data-display.prop.ts",
|
|
3454
3506
|
vocabulary: []
|
|
3455
3507
|
},
|
|
3508
|
+
AvatarKindProp: {
|
|
3509
|
+
group: "data-display",
|
|
3510
|
+
file: "components/data-display.prop.ts",
|
|
3511
|
+
vocabulary: []
|
|
3512
|
+
},
|
|
3513
|
+
AgentBadgeProp: {
|
|
3514
|
+
group: "data-display",
|
|
3515
|
+
file: "components/data-display.prop.ts",
|
|
3516
|
+
vocabulary: [
|
|
3517
|
+
{
|
|
3518
|
+
field: "as",
|
|
3519
|
+
local: true,
|
|
3520
|
+
reason: "Closed tag seam (div | span), the same one Badge carries, so the label stays valid HTML beside a name inside a link or a <button>."
|
|
3521
|
+
},
|
|
3522
|
+
"ChildrenProp",
|
|
3523
|
+
"ClassNameProp"
|
|
3524
|
+
]
|
|
3525
|
+
},
|
|
3456
3526
|
AvatarImageFitProp: {
|
|
3457
3527
|
group: "data-display",
|
|
3458
3528
|
file: "components/data-display.prop.ts",
|
|
@@ -4180,7 +4250,7 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
4180
4250
|
FilterBarFilterProp: {
|
|
4181
4251
|
group: "navigation",
|
|
4182
4252
|
file: "components/navigation.prop.ts",
|
|
4183
|
-
vocabulary: ["LabelProp", "PlaceholderProp", "DisabledProp"]
|
|
4253
|
+
vocabulary: ["LabelProp", "PlaceholderProp", "DisabledProp", "RequiredProp", "AllowClearProp"]
|
|
4184
4254
|
},
|
|
4185
4255
|
FilterBarChipProp: {
|
|
4186
4256
|
group: "navigation",
|
|
@@ -4195,7 +4265,18 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
4195
4265
|
PaginationProp: {
|
|
4196
4266
|
group: "navigation",
|
|
4197
4267
|
file: "components/navigation.prop.ts",
|
|
4198
|
-
vocabulary: [
|
|
4268
|
+
vocabulary: [
|
|
4269
|
+
"ValueProp",
|
|
4270
|
+
"OnValueChangeProp",
|
|
4271
|
+
"DisabledProp",
|
|
4272
|
+
"ClassNameProp",
|
|
4273
|
+
"SizeProp",
|
|
4274
|
+
{
|
|
4275
|
+
field: "onPageIntent",
|
|
4276
|
+
local: true,
|
|
4277
|
+
reason: "A page target intent event for cache/router preloading, separate from the controlled value channel; pointer enter, focus and touch start (gh#1472)."
|
|
4278
|
+
}
|
|
4279
|
+
]
|
|
4199
4280
|
},
|
|
4200
4281
|
PaginationSizeProp: {
|
|
4201
4282
|
group: "navigation",
|
|
@@ -6260,6 +6341,11 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
6260
6341
|
group: "data-display",
|
|
6261
6342
|
file: "components/data-display.prop.ts",
|
|
6262
6343
|
vocabulary: [
|
|
6344
|
+
{
|
|
6345
|
+
field: "onStatusChange",
|
|
6346
|
+
local: true,
|
|
6347
|
+
reason: "Resolved image loading state, including cached images and fallback."
|
|
6348
|
+
},
|
|
6263
6349
|
"ClassNameProp",
|
|
6264
6350
|
"PlaceholderProp",
|
|
6265
6351
|
{ field: "src", local: true, reason: "The native img src attribute." },
|
|
@@ -243,6 +243,10 @@
|
|
|
243
243
|
visibility: hidden;
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
+
:root:has(.ui-overlay-modal) [data-sonner-toaster] {
|
|
247
|
+
pointer-events: none;
|
|
248
|
+
}
|
|
249
|
+
|
|
246
250
|
.ui-skeleton-block {
|
|
247
251
|
border-radius: var(--skeleton-radius, var(--radius));
|
|
248
252
|
background: var(--skeleton-background, hsl(var(--muted)));
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
@layer theme, base, vendor, components, utilities;
|
|
3
|
+
@import "./vendor-sonner.css";
|
|
4
|
+
@import "./vendor-day-picker.css";
|
|
5
|
+
@import "./base.css";
|
|
6
|
+
@import "./shell-layout.css";
|
|
7
|
+
@import "./motion.css";
|
|
8
|
+
@import "./layout.css";
|
|
9
|
+
@import "./control.css";
|
|
10
|
+
@import "./toggle.css";
|
|
11
|
+
@import "./logo-layout.css";
|
|
12
|
+
@import "./card-layout.css";
|
|
13
|
+
@import "./text-layout.css";
|
|
14
|
+
@import "./table-layout.css";
|
|
15
|
+
@import "./dialog-layout.css";
|
|
16
|
+
@import "./alert-layout.css";
|
|
17
|
+
@import "./badge-layout.css";
|
|
18
|
+
@import "./data-display-layout.css";
|
|
19
|
+
@import "./data-entry-layout.css";
|
|
20
|
+
@import "./form-layout.css";
|
|
21
|
+
@import "./navigation-layout.css";
|
|
22
|
+
@import "./chart-layout.css";
|
|
23
|
+
@import "./float-button-layout.css";
|
|
24
|
+
@import "./icon-layout.css";
|
|
@@ -94,4 +94,18 @@
|
|
|
94
94
|
width: var(--badge-remove-icon-size);
|
|
95
95
|
height: var(--badge-remove-icon-size);
|
|
96
96
|
}
|
|
97
|
+
|
|
98
|
+
[data-slot="badge"][data-agent] {
|
|
99
|
+
border-color: hsl(var(--badge-agent-border, var(--agent)));
|
|
100
|
+
background-color: transparent;
|
|
101
|
+
color: hsl(var(--badge-agent-foreground, var(--text-agent)));
|
|
102
|
+
white-space: nowrap;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@media (forced-colors: active) {
|
|
106
|
+
[data-slot="badge"][data-agent] {
|
|
107
|
+
border-color: CanvasText;
|
|
108
|
+
color: CanvasText;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
97
111
|
}
|
package/dist/styles/base.css
CHANGED
package/dist/styles/control.css
CHANGED
|
@@ -138,6 +138,12 @@
|
|
|
138
138
|
flex-shrink: 0;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
.ui-button--xs svg,
|
|
142
|
+
.ui-button--icon-xs svg {
|
|
143
|
+
width: var(--button-icon-size, var(--button-xs-icon-size));
|
|
144
|
+
height: var(--button-icon-size, var(--button-xs-icon-size));
|
|
145
|
+
}
|
|
146
|
+
|
|
141
147
|
.ui-button {
|
|
142
148
|
backdrop-filter: blur(var(--button-backdrop-blur-size))
|
|
143
149
|
saturate(var(--surface-backdrop-saturate, 160%));
|
|
@@ -1945,9 +1951,13 @@
|
|
|
1945
1951
|
max-block-size: var(--radix-popover-content-available-height);
|
|
1946
1952
|
max-inline-size: min(
|
|
1947
1953
|
var(--search-select-panel-max-width),
|
|
1948
|
-
calc(100vw - var(--search-select-panel-viewport-inset))
|
|
1954
|
+
calc(var(--popover-viewport-inline-size, 100vw) - var(--search-select-panel-viewport-inset))
|
|
1955
|
+
);
|
|
1956
|
+
min-inline-size: min(
|
|
1957
|
+
var(--radix-popover-trigger-width),
|
|
1958
|
+
var(--search-select-panel-max-width),
|
|
1959
|
+
calc(var(--popover-viewport-inline-size, 100vw) - var(--search-select-panel-viewport-inset))
|
|
1949
1960
|
);
|
|
1950
|
-
min-inline-size: var(--radix-popover-trigger-width);
|
|
1951
1961
|
}
|
|
1952
1962
|
|
|
1953
1963
|
.ui-search-select-panel[data-popup-match="content"] {
|
|
@@ -1955,8 +1965,16 @@
|
|
|
1955
1965
|
}
|
|
1956
1966
|
|
|
1957
1967
|
.ui-search-select-panel[data-popup-match="fixed"] {
|
|
1958
|
-
min-inline-size:
|
|
1959
|
-
|
|
1968
|
+
min-inline-size: min(
|
|
1969
|
+
var(--search-select-panel-inline-size, var(--radix-popover-trigger-width)),
|
|
1970
|
+
var(--search-select-panel-max-width),
|
|
1971
|
+
calc(var(--popover-viewport-inline-size, 100vw) - var(--search-select-panel-viewport-inset))
|
|
1972
|
+
);
|
|
1973
|
+
inline-size: min(
|
|
1974
|
+
var(--search-select-panel-inline-size, var(--radix-popover-trigger-width)),
|
|
1975
|
+
var(--search-select-panel-max-width),
|
|
1976
|
+
calc(var(--popover-viewport-inline-size, 100vw) - var(--search-select-panel-viewport-inset))
|
|
1977
|
+
);
|
|
1960
1978
|
}
|
|
1961
1979
|
|
|
1962
1980
|
.ui-search-select-selected-icon {
|
|
@@ -2243,6 +2261,12 @@
|
|
|
2243
2261
|
var(--menu-content-min-width),
|
|
2244
2262
|
var(--trigger-width, var(--menu-content-min-width))
|
|
2245
2263
|
);
|
|
2264
|
+
|
|
2265
|
+
inline-size: max-content;
|
|
2266
|
+
max-inline-size: min(
|
|
2267
|
+
var(--select-content-max-width),
|
|
2268
|
+
calc(100vw - var(--select-content-viewport-inset))
|
|
2269
|
+
);
|
|
2246
2270
|
overflow: hidden;
|
|
2247
2271
|
border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
|
|
2248
2272
|
border: var(--stroke-hairline) solid hsl(var(--border));
|
|
@@ -2262,6 +2286,7 @@
|
|
|
2262
2286
|
.ui-select-content[data-popup-match="fixed"] {
|
|
2263
2287
|
min-width: var(--select-content-inline-size);
|
|
2264
2288
|
width: var(--select-content-inline-size);
|
|
2289
|
+
max-inline-size: none;
|
|
2265
2290
|
}
|
|
2266
2291
|
|
|
2267
2292
|
.ui-select-viewport {
|
|
@@ -2287,21 +2312,9 @@
|
|
|
2287
2312
|
calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
|
|
2288
2313
|
);
|
|
2289
2314
|
padding-inline: var(--menu-item-space-inline);
|
|
2290
|
-
height:
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
gap: var(--menu-item-space-gap);
|
|
2294
|
-
font-size: var(--menu-item-font-size);
|
|
2295
|
-
}
|
|
2296
|
-
|
|
2297
|
-
.ui-select-item,
|
|
2298
|
-
.ui-select-label {
|
|
2299
|
-
border-radius: var(
|
|
2300
|
-
--menu-item-radius,
|
|
2301
|
-
calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
|
|
2302
|
-
);
|
|
2303
|
-
padding-inline: var(--menu-item-space-inline);
|
|
2304
|
-
height: var(--menu-item-height);
|
|
2315
|
+
height: auto;
|
|
2316
|
+
min-height: var(--menu-item-height);
|
|
2317
|
+
padding-block: max(0px, calc((var(--menu-item-height) - 1lh) / 2));
|
|
2305
2318
|
display: flex;
|
|
2306
2319
|
align-items: center;
|
|
2307
2320
|
gap: var(--menu-item-space-gap);
|