@godxjp/ui 27.1.0 → 27.4.1
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/dist/components/data-display/badge.d.ts +10 -3
- package/dist/components/data-display/badge.js +14 -3
- package/dist/components/data-display/data-table.d.ts +20 -12
- package/dist/components/data-display/data-table.js +53 -5
- package/dist/components/data-display/range-timeline.d.ts +16 -0
- package/dist/components/data-display/range-timeline.js +115 -80
- package/dist/components/data-display/table.d.ts +16 -0
- package/dist/components/data-display/table.js +2 -0
- package/dist/components/data-entry/checkbox.js +23 -5
- package/dist/components/data-entry/command.d.ts +3 -1
- package/dist/components/data-entry/command.js +10 -2
- package/dist/components/data-entry/form-field.js +9 -8
- package/dist/components/data-entry/index.d.ts +1 -0
- package/dist/components/data-entry/search-select.js +145 -136
- package/dist/components/data-entry/select.js +38 -3
- package/dist/components/general/icon.d.ts +31 -0
- package/dist/components/general/icon.js +23 -0
- package/dist/components/general/index.d.ts +2 -0
- package/dist/components/general/index.js +2 -0
- package/dist/components/layout/flex.d.ts +2 -2
- package/dist/components/layout/flex.js +7 -1
- package/dist/components/layout/org-switcher.js +1 -1
- package/dist/components/layout/responsive-grid.d.ts +8 -2
- package/dist/components/layout/responsive-grid.js +2 -0
- package/dist/components/layout/topbar-item.d.ts +1 -0
- package/dist/components/layout/topbar-item.js +3 -1
- package/dist/contracts/measurement.json +1 -1
- package/dist/form/form-field-control.d.ts +1 -1
- package/dist/form/form-field-control.js +32 -23
- package/dist/i18n/messages/en.json +2 -1
- package/dist/i18n/messages/ja.json +2 -1
- package/dist/i18n/messages/vi.json +2 -1
- package/dist/props/components/data-display.prop.d.ts +12 -0
- package/dist/props/components/data-entry.prop.d.ts +10 -0
- package/dist/props/components/form.prop.d.ts +34 -2
- package/dist/props/components/general.prop.d.ts +42 -1
- package/dist/props/components/index.d.ts +1 -1
- package/dist/props/components/layout.prop.d.ts +49 -0
- package/dist/props/registry.d.ts +57 -3
- package/dist/props/registry.js +62 -2
- package/dist/props/vocabulary/data.prop.d.ts +27 -1
- package/dist/props/vocabulary/index.d.ts +2 -2
- package/dist/props/vocabulary/interaction.prop.d.ts +11 -0
- package/dist/styles/control.css +44 -1
- package/dist/styles/core.css +2 -0
- package/dist/styles/data-display-layout.css +58 -1
- package/dist/styles/form-layout.css +21 -0
- package/dist/styles/icon-layout.css +37 -0
- package/dist/styles/index.css +2 -0
- package/dist/styles/layout.css +7 -0
- package/dist/styles/navigation-layout.css +5 -1
- package/dist/styles/shell-layout.css +11 -14
- package/dist/styles/table-layout.css +80 -8
- package/dist/styles/text-layout.css +16 -8
- package/dist/tokens/components/control.css +5 -0
- package/dist/tokens/components/data-display.css +6 -0
- package/dist/tokens/components/navigation.css +1 -1
- package/dist/tokens/components/table.css +2 -0
- package/docs/CONSUMER-RULES.md +2 -2
- package/docs/DESIGN-AUTHORITY.md +32 -1
- package/docs/FRAME-COVERAGE-REPORT.md +3 -2
- package/docs/data-display/data-table/examples/server-paged.tsx +156 -0
- package/docs/data-display/data-table/examples/striped-list.tsx +173 -0
- package/docs/data-display/popover.tsx +43 -1
- package/docs/data-display/timeline.tsx +73 -9
- package/docs/data-entry/command.tsx +80 -1
- package/docs/data-entry/form-root.tsx +12 -2
- package/docs/general/icon.tsx +215 -0
- package/docs/layout/flex.tsx +59 -0
- package/docs/layout/responsive-grid.tsx +100 -0
- package/docs/layout/topbar-item.tsx +29 -1
- package/package.json +3 -2
- package/scripts/consumer-rule.md +18 -17
- package/scripts/ui-audit.mjs +128 -0
package/dist/props/registry.js
CHANGED
|
@@ -350,7 +350,12 @@ const VOCABULARY_REGISTRY = {
|
|
|
350
350
|
TablePaginationProp: {
|
|
351
351
|
file: "vocabulary/data.prop.ts",
|
|
352
352
|
category: "data",
|
|
353
|
-
description: "DataTable pagination object surface \u2014 1-based current | pageSize | total | pageSizeOptions | showSizeChanger | onChange (antd TablePaginationConfig); `false` hides the pager"
|
|
353
|
+
description: "DataTable pagination object surface \u2014 1-based current | pageSize | total | pageSizeOptions | showSizeChanger | showTotal | position | onChange (antd TablePaginationConfig); `false` hides the pager. Without a composed DataTable.Pagination the table renders its own Pagination footer (total + page numbers, density-sized); total > data.length \u2264 pageSize reads as server paging"
|
|
354
|
+
},
|
|
355
|
+
TablePaginationPositionProp: {
|
|
356
|
+
file: "vocabulary/data.prop.ts",
|
|
357
|
+
category: "data",
|
|
358
|
+
description: "DataTable pagination footer position (antd TablePaginationPosition, logical) \u2014 topStart | topCenter | topEnd | bottomStart | bottomCenter | bottomEnd (default) | none"
|
|
354
359
|
},
|
|
355
360
|
TableCellIndentProp: {
|
|
356
361
|
file: "vocabulary/data.prop.ts",
|
|
@@ -428,6 +433,11 @@ const VOCABULARY_REGISTRY = {
|
|
|
428
433
|
category: "interaction",
|
|
429
434
|
description: "Text size \u2014 golden-ratio type-scale steps (2xs\u20262xl), never an arbitrary px"
|
|
430
435
|
},
|
|
436
|
+
IconSizeProp: {
|
|
437
|
+
file: "vocabulary/interaction.prop.ts",
|
|
438
|
+
category: "interaction",
|
|
439
|
+
description: "Icon size \u2014 the nine --icon-size-* scale steps (2xs\u20264xl), never an arbitrary px or a size- utility"
|
|
440
|
+
},
|
|
431
441
|
TextToneProp: {
|
|
432
442
|
file: "vocabulary/interaction.prop.ts",
|
|
433
443
|
category: "interaction",
|
|
@@ -762,6 +772,7 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
762
772
|
]
|
|
763
773
|
},
|
|
764
774
|
FlexDirectionProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
775
|
+
FlexMarkerProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
765
776
|
FlexAlignProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
766
777
|
FlexJustifyProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
767
778
|
FlexProp: {
|
|
@@ -774,6 +785,11 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
774
785
|
reason: "Closed tag seam (div | span) so a Flex stays valid HTML inside a phrasing-only parent such as the <button> a TabsTrigger renders \u2014 same shape as ListRow's `as` (gh#354)."
|
|
775
786
|
},
|
|
776
787
|
{ field: "direction", local: true, reason: "Flex-specific axis control." },
|
|
788
|
+
{
|
|
789
|
+
field: "marker",
|
|
790
|
+
local: true,
|
|
791
|
+
reason: 'List-marker seam for as="ul"/"ol" (disc | decimal | none). marker="none" emits no data-list, so a list keeps its element, its <li> semantics and its gap token while losing the bullet and the --space-5 indent \u2014 the home <ListRow as="li"> had none of, which forced a raw <ul> (gh#714).'
|
|
792
|
+
},
|
|
777
793
|
"GapProp",
|
|
778
794
|
{ field: "align", local: true, reason: "Flex-specific align-items keyword subset." },
|
|
779
795
|
{ field: "justify", local: true, reason: "Flex-specific justify-content keyword subset." },
|
|
@@ -794,6 +810,7 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
794
810
|
ResponsiveGridFlowProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
795
811
|
ResponsiveGridColumnsProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
796
812
|
ResponsiveGridPresetProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
813
|
+
ResponsiveGridAlignProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
797
814
|
MasterDetailRailWidthProp: {
|
|
798
815
|
group: "layout",
|
|
799
816
|
file: "components/layout.prop.ts",
|
|
@@ -1322,6 +1339,32 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1322
1339
|
}
|
|
1323
1340
|
]
|
|
1324
1341
|
},
|
|
1342
|
+
IconGlyphProp: {
|
|
1343
|
+
group: "general",
|
|
1344
|
+
file: "components/general.prop.ts",
|
|
1345
|
+
vocabulary: [
|
|
1346
|
+
"IconProp",
|
|
1347
|
+
"IconSizeProp",
|
|
1348
|
+
"TextToneProp",
|
|
1349
|
+
"LabelProp",
|
|
1350
|
+
"ClassNameProp",
|
|
1351
|
+
{
|
|
1352
|
+
field: "label",
|
|
1353
|
+
local: true,
|
|
1354
|
+
reason: "LabelProp narrowed to string: this becomes the glyph's aria-label, and an accessible name is TEXT \u2014 a ReactNode cannot be one."
|
|
1355
|
+
},
|
|
1356
|
+
{
|
|
1357
|
+
field: "as",
|
|
1358
|
+
local: true,
|
|
1359
|
+
reason: "The glyph COMPONENT to render \u2014 the IconProp concept, widened to a component that also forwards SVG props and a ref, because Icon renders ONTO the glyph (the sized element is the <svg> itself) rather than wrapping it."
|
|
1360
|
+
},
|
|
1361
|
+
{
|
|
1362
|
+
field: "size",
|
|
1363
|
+
local: true,
|
|
1364
|
+
reason: "IconSizeProp, the nine-step icon scale \u2014 deliberately NOT the four-step control SizeProp: a glyph beside 2xs caption text and a 48px empty-state mark are the same primitive."
|
|
1365
|
+
}
|
|
1366
|
+
]
|
|
1367
|
+
},
|
|
1325
1368
|
FloatButtonTypeProp: {
|
|
1326
1369
|
group: "general",
|
|
1327
1370
|
file: "components/general.prop.ts",
|
|
@@ -1499,6 +1542,17 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1499
1542
|
file: "components/data-entry.prop.ts",
|
|
1500
1543
|
vocabulary: ["PlaceholderProp", "ValueProp", "DisabledProp"]
|
|
1501
1544
|
},
|
|
1545
|
+
CommandProp: {
|
|
1546
|
+
group: "data-entry",
|
|
1547
|
+
file: "components/data-entry.prop.ts",
|
|
1548
|
+
vocabulary: [
|
|
1549
|
+
{
|
|
1550
|
+
field: "split",
|
|
1551
|
+
local: true,
|
|
1552
|
+
reason: "antd List `split` \u2014 ruled-list presentation (row dividers, 0 list padding) for option/checkbox lists; the rest of the root API is cmdk's (gh#699)."
|
|
1553
|
+
}
|
|
1554
|
+
]
|
|
1555
|
+
},
|
|
1502
1556
|
TextareaProp: {
|
|
1503
1557
|
group: "data-entry",
|
|
1504
1558
|
file: "components/data-entry.prop.ts",
|
|
@@ -2045,6 +2099,7 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
2045
2099
|
"TableStickyProp",
|
|
2046
2100
|
"OnRowProp",
|
|
2047
2101
|
"TablePaginationProp",
|
|
2102
|
+
"TablePaginationPositionProp",
|
|
2048
2103
|
"SortDirectionProp",
|
|
2049
2104
|
"OnColumnFilterChangeProp"
|
|
2050
2105
|
]
|
|
@@ -3385,7 +3440,12 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
3385
3440
|
{
|
|
3386
3441
|
field: "columns",
|
|
3387
3442
|
local: true,
|
|
3388
|
-
reason: "Labels
|
|
3443
|
+
reason: "Labels, positive numeric unit counts and an optional muted flag (non-working period) define a consumer-supplied axis."
|
|
3444
|
+
},
|
|
3445
|
+
{
|
|
3446
|
+
field: "bordered",
|
|
3447
|
+
local: true,
|
|
3448
|
+
reason: "Rules the body as a grid (row rules, header rule, a vertical rule per column); default true, same name and default as Calendar bordered."
|
|
3389
3449
|
},
|
|
3390
3450
|
{
|
|
3391
3451
|
field: "bands",
|
|
@@ -265,18 +265,44 @@ export type OnRowProp<T> = (row: T, index: number) => (React.HTMLAttributes<HTML
|
|
|
265
265
|
* Pagination object surface (antd `TablePaginationConfig`). 1-BASED `current`, like antd — the
|
|
266
266
|
* TanStack-shaped `{ pageIndex, pageSize }` form the prop already accepted is still accepted and
|
|
267
267
|
* is told apart by its `pageIndex` field. `false` hides the pager entirely.
|
|
268
|
+
*
|
|
269
|
+
* Given WITHOUT a composed `<DataTable.Pagination>`, the table renders its own antd footer: the
|
|
270
|
+
* real `Pagination` (total + page numbers) at `position`, sized from the table's `density`.
|
|
271
|
+
* A composed `<DataTable.Pagination>` keeps its own footer and wins — never two pagers.
|
|
268
272
|
*/
|
|
269
273
|
export type TablePaginationProp = {
|
|
270
274
|
/** 1-based current page. */
|
|
271
275
|
current?: number;
|
|
272
276
|
pageSize?: number;
|
|
273
|
-
/**
|
|
277
|
+
/**
|
|
278
|
+
* Total row count on the server — drives the page count. As in antd, a `total` larger than
|
|
279
|
+
* `data.length` with no more than `pageSize` rows is read as SERVER paging: `data` is the current
|
|
280
|
+
* page, shown as is, and the footer offers `ceil(total / pageSize)` pages.
|
|
281
|
+
*/
|
|
274
282
|
total?: number;
|
|
275
283
|
pageSizeOptions?: number[];
|
|
276
284
|
/** Default `true`. `false` drops the rows-per-page select. */
|
|
277
285
|
showSizeChanger?: boolean;
|
|
286
|
+
/** antd `showTotal` — `true` for the localized total label, or a `(total, range)` render. */
|
|
287
|
+
showTotal?: boolean | ((total: number, range: [number, number]) => React.ReactNode);
|
|
288
|
+
/**
|
|
289
|
+
* antd `hideOnSinglePage`, whose antd default is `false` — and that default is kept HERE, in the
|
|
290
|
+
* table footer, although the standalone `Pagination` defaults it to `true` (gh#711). A list
|
|
291
|
+
* screen's footer carries the total and the rows-per-page select, so hiding it on the last page
|
|
292
|
+
* of a shrinking filter makes the row count disappear exactly when the user is checking it.
|
|
293
|
+
*/
|
|
294
|
+
hideOnSinglePage?: boolean;
|
|
295
|
+
/** antd `position`, logical spelling. Default `["bottomEnd"]` (antd `bottomRight`). */
|
|
296
|
+
position?: TablePaginationPositionProp[];
|
|
278
297
|
onChange?: (page: number, pageSize: number) => void;
|
|
279
298
|
};
|
|
299
|
+
/**
|
|
300
|
+
* Where DataTable's own pagination footer sits (antd `TablePaginationPosition`). antd's physical
|
|
301
|
+
* `topLeft` / `bottomRight` become `topStart` / `bottomEnd` here — the same logical respelling as
|
|
302
|
+
* `DropdownMenuPlacementProp` — so an RTL table puts the pager on its reading end with no second
|
|
303
|
+
* value. `none` renders no footer while the pagination state stays live.
|
|
304
|
+
*/
|
|
305
|
+
export type TablePaginationPositionProp = "topStart" | "topCenter" | "topEnd" | "bottomStart" | "bottomCenter" | "bottomEnd" | "none";
|
|
280
306
|
/**
|
|
281
307
|
* Descriptions column count (antd `column`). A plain number keeps this library's own mobile-first
|
|
282
308
|
* ladder; the `{ sm, md, lg, xl }` object is antd's responsive form, expressed against this
|
|
@@ -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, AppSettingToggleAppearanceProp, ShapeProp, AvatarShapeProp, TextSizeProp, TextToneProp, FontWeightProp, HeadingLevelProp, TextAlignProp, TextWhitespaceProp, TypographyTypeProp, TitleLevelProp, TypographyCopyConfigProp, TypographyEditConfigProp, TypographyEllipsisConfigProp, TypographyActionsConfigProp, SizeProp, ControlStatusProp, ControlVariantProp, FormLayoutProp, DescriptionsLayoutProp, BreakpointProp, ConfirmVariantProp, ToneProp, AlertVariantProp, SortDirectionProp, ColumnAlignProp, SortStateProp, RevealDelayProp, ActivityVariantProp, ActivityAnnounceProp, } from "./interaction.prop.js";
|
|
5
|
+
export type { ButtonVariantProp, ButtonSizeProp, BadgeVariantProp, AppSettingPickerAppearanceProp, AppSettingToggleAppearanceProp, ShapeProp, AvatarShapeProp, TextSizeProp, TextToneProp, FontWeightProp, HeadingLevelProp, TextAlignProp, TextWhitespaceProp, TypographyTypeProp, TitleLevelProp, TypographyCopyConfigProp, TypographyEditConfigProp, TypographyEllipsisConfigProp, TypographyActionsConfigProp, SizeProp, ControlStatusProp, ControlVariantProp, FormLayoutProp, DescriptionsLayoutProp, BreakpointProp, ConfirmVariantProp, ToneProp, AlertVariantProp, SortDirectionProp, ColumnAlignProp, SortStateProp, RevealDelayProp, ActivityVariantProp, ActivityAnnounceProp, IconSizeProp, } from "./interaction.prop.js";
|
|
6
6
|
export type { BreadcrumbItemProp, BreadcrumbProp, BreadcrumbItemMenuProp, BreadcrumbItemMenuEntryProp, BreadcrumbSeparatorProp, BreadcrumbItemRenderProp, } from "./navigation.prop.js";
|
|
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, TableRowSelectionProp, TableExpandableProp, TableSummaryProp, TableScrollProp, TableStickyProp, OnRowProp, TablePaginationProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, } from "./data.prop.js";
|
|
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, TableRowSelectionProp, TableExpandableProp, TableSummaryProp, TableScrollProp, TableStickyProp, OnRowProp, TablePaginationProp, TablePaginationPositionProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, } from "./data.prop.js";
|
|
@@ -31,6 +31,17 @@ export type ShapeProp = "default" | "pill" | "sharp";
|
|
|
31
31
|
export type AvatarShapeProp = "circle" | "square";
|
|
32
32
|
/** Text size — steps of the golden-ratio type scale (NEVER an arbitrary px). `sm` = base. */
|
|
33
33
|
export type TextSizeProp = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
|
|
34
|
+
/**
|
|
35
|
+
* Icon size — the NINE steps of the `--icon-size-*` scale (docs/TOKENS.md · gh#326), not the four
|
|
36
|
+
* of the control `SizeProp`.
|
|
37
|
+
*
|
|
38
|
+
* The icon axis already had a vocabulary before it had a name, and it is a FIXED LIST rather than
|
|
39
|
+
* a ratio: 14/16 = 0.875 but 20/16 = 1.25, because a 1px-stroke glyph cannot sit on half a pixel.
|
|
40
|
+
* Naming the whole list here — as `TextSizeProp` does for type — is what lets a consumer put a
|
|
41
|
+
* standalone glyph on the scale (`<Icon as={Lock} size="sm" />`) instead of reaching for a
|
|
42
|
+
* `className="size-4"` the consumer rules forbid.
|
|
43
|
+
*/
|
|
44
|
+
export type IconSizeProp = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
|
|
34
45
|
/** Text colour intent — maps to semantic foreground tokens (no raw palette). */
|
|
35
46
|
/**
|
|
36
47
|
* `inherit` is the one that is NOT a colour: it takes whatever the surface already set (gh#643).
|
package/dist/styles/control.css
CHANGED
|
@@ -377,6 +377,14 @@
|
|
|
377
377
|
line-height: 0;
|
|
378
378
|
}
|
|
379
379
|
|
|
380
|
+
.ui-choice-field > .ui-choice-control {
|
|
381
|
+
display: flex;
|
|
382
|
+
align-items: center;
|
|
383
|
+
font-size: var(--font-size-base);
|
|
384
|
+
line-height: var(--control-label-line-height);
|
|
385
|
+
min-block-size: 1lh;
|
|
386
|
+
}
|
|
387
|
+
|
|
380
388
|
.ui-choice-input {
|
|
381
389
|
position: absolute;
|
|
382
390
|
inset: 0;
|
|
@@ -770,6 +778,30 @@
|
|
|
770
778
|
opacity: 0.5;
|
|
771
779
|
}
|
|
772
780
|
|
|
781
|
+
.ui-command[data-split] .ui-command-group {
|
|
782
|
+
padding: var(--command-list-split-padding);
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
.ui-command[data-split] .ui-command-item {
|
|
786
|
+
border-radius: 0;
|
|
787
|
+
margin-inline: calc(-1 * var(--command-list-split-inset));
|
|
788
|
+
padding-inline: calc(var(--command-list-split-inset) + var(--command-input-padding-x));
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
.ui-command[data-split] .ui-command-group [cmdk-group-heading] {
|
|
792
|
+
padding-inline: calc(var(--command-list-split-inset) + var(--command-input-padding-x));
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
.ui-command[data-split] .ui-command-item:has(+ .ui-command-item) {
|
|
796
|
+
border-block-end: var(--command-item-divider-width) solid
|
|
797
|
+
hsl(var(--command-item-divider-color, var(--border)));
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
.ui-command[data-split] .ui-command-group:not([hidden]) ~ .ui-command-group:not([hidden]) {
|
|
801
|
+
border-block-start: var(--command-item-divider-width) solid
|
|
802
|
+
hsl(var(--command-item-divider-color, var(--border)));
|
|
803
|
+
}
|
|
804
|
+
|
|
773
805
|
[data-slot="dialog-content"].ui-command-palette {
|
|
774
806
|
top: var(--command-palette-inset-top);
|
|
775
807
|
width: min(
|
|
@@ -1060,7 +1092,9 @@
|
|
|
1060
1092
|
border: 0;
|
|
1061
1093
|
padding: 0;
|
|
1062
1094
|
cursor: pointer;
|
|
1063
|
-
color: hsl(
|
|
1095
|
+
color: hsl(
|
|
1096
|
+
var(--rating-star-empty-color, var(--muted-foreground)) / var(--rating-star-empty-alpha)
|
|
1097
|
+
);
|
|
1064
1098
|
line-height: 0;
|
|
1065
1099
|
}
|
|
1066
1100
|
.ui-rating-star:disabled {
|
|
@@ -1509,6 +1543,10 @@
|
|
|
1509
1543
|
padding: var(--search-select-list-space-inset);
|
|
1510
1544
|
}
|
|
1511
1545
|
|
|
1546
|
+
.ui-command[data-split] .ui-search-select-list {
|
|
1547
|
+
padding: var(--command-list-split-padding);
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1512
1550
|
.ui-search-select-option-slot {
|
|
1513
1551
|
min-inline-size: 0;
|
|
1514
1552
|
flex: 1 1 0%;
|
|
@@ -1702,6 +1740,11 @@
|
|
|
1702
1740
|
display: contents;
|
|
1703
1741
|
}
|
|
1704
1742
|
|
|
1743
|
+
.ui-select-root > [data-react-aria-prevent-focus][aria-hidden="true"] {
|
|
1744
|
+
position: absolute !important;
|
|
1745
|
+
inset: auto !important;
|
|
1746
|
+
}
|
|
1747
|
+
|
|
1705
1748
|
.ui-select-content {
|
|
1706
1749
|
position: relative;
|
|
1707
1750
|
z-index: var(--overlay-z-index);
|
package/dist/styles/core.css
CHANGED
|
@@ -1328,12 +1328,69 @@
|
|
|
1328
1328
|
min-inline-size: 0;
|
|
1329
1329
|
overflow: hidden;
|
|
1330
1330
|
padding: var(--space-2);
|
|
1331
|
-
border-inline-end:
|
|
1331
|
+
border-inline-end: var(--range-timeline-grid-width) solid
|
|
1332
|
+
hsl(var(--range-timeline-border-color));
|
|
1332
1333
|
}
|
|
1333
1334
|
.ui-range-timeline-track {
|
|
1334
1335
|
position: relative;
|
|
1335
1336
|
min-inline-size: 0;
|
|
1336
1337
|
}
|
|
1338
|
+
|
|
1339
|
+
.ui-range-timeline-body {
|
|
1340
|
+
position: relative;
|
|
1341
|
+
isolation: isolate;
|
|
1342
|
+
}
|
|
1343
|
+
.ui-range-timeline-grid {
|
|
1344
|
+
position: absolute;
|
|
1345
|
+
inset: 0;
|
|
1346
|
+
z-index: -1;
|
|
1347
|
+
display: grid;
|
|
1348
|
+
grid-template-columns: var(--range-timeline-label-width) minmax(0, 1fr);
|
|
1349
|
+
pointer-events: none;
|
|
1350
|
+
}
|
|
1351
|
+
.ui-range-timeline-grid-column {
|
|
1352
|
+
min-inline-size: 0;
|
|
1353
|
+
padding-inline: var(--space-2);
|
|
1354
|
+
border-inline-end: var(--range-timeline-grid-width) solid transparent;
|
|
1355
|
+
}
|
|
1356
|
+
.ui-range-timeline-grid-column[data-muted="true"] {
|
|
1357
|
+
background: var(--range-timeline-muted-column-background, hsl(var(--muted)));
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
.ui-range-timeline[data-bordered="true"] .ui-range-timeline-column,
|
|
1361
|
+
.ui-range-timeline[data-bordered="true"] .ui-range-timeline-label,
|
|
1362
|
+
.ui-range-timeline[data-bordered="true"] .ui-range-timeline-grid-column {
|
|
1363
|
+
border-inline-end-color: var(--range-timeline-grid-color, hsl(var(--input)));
|
|
1364
|
+
}
|
|
1365
|
+
.ui-range-timeline[data-bordered="true"] .ui-range-timeline-header + .ui-range-timeline-header,
|
|
1366
|
+
.ui-range-timeline[data-bordered="true"] .ui-range-timeline-row {
|
|
1367
|
+
border-block-start: var(--range-timeline-grid-width) solid
|
|
1368
|
+
var(--range-timeline-grid-color, hsl(var(--input)));
|
|
1369
|
+
}
|
|
1370
|
+
.ui-range-timeline-outside {
|
|
1371
|
+
position: absolute;
|
|
1372
|
+
inset-block: 0;
|
|
1373
|
+
display: flex;
|
|
1374
|
+
align-items: center;
|
|
1375
|
+
gap: var(--space-1);
|
|
1376
|
+
padding-inline: var(--space-2);
|
|
1377
|
+
color: hsl(var(--muted-foreground));
|
|
1378
|
+
}
|
|
1379
|
+
.ui-range-timeline-outside[data-direction="before"] {
|
|
1380
|
+
inset-inline-start: 0;
|
|
1381
|
+
}
|
|
1382
|
+
.ui-range-timeline-outside[data-direction="after"] {
|
|
1383
|
+
inset-inline-end: 0;
|
|
1384
|
+
}
|
|
1385
|
+
.ui-range-timeline-outside-icon {
|
|
1386
|
+
inline-size: var(--icon-size-sm);
|
|
1387
|
+
block-size: var(--icon-size-sm);
|
|
1388
|
+
flex-shrink: 0;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
[dir="rtl"] .ui-range-timeline-outside-icon {
|
|
1392
|
+
transform: scaleX(-1);
|
|
1393
|
+
}
|
|
1337
1394
|
.ui-range-timeline-bar {
|
|
1338
1395
|
position: absolute;
|
|
1339
1396
|
inset-block-start: 50%;
|
|
@@ -110,6 +110,11 @@
|
|
|
110
110
|
> * {
|
|
111
111
|
max-inline-size: 100%;
|
|
112
112
|
}
|
|
113
|
+
|
|
114
|
+
.ui-form-field[data-collapse-below="false"][data-layout="horizontal"]
|
|
115
|
+
> .ui-form-field-control:first-child {
|
|
116
|
+
grid-column-start: 2;
|
|
117
|
+
}
|
|
113
118
|
.ui-form-field[data-collapse-below="false"][data-label-align="end"]:is(
|
|
114
119
|
[data-layout="horizontal"],
|
|
115
120
|
[data-layout="inline"]
|
|
@@ -139,6 +144,10 @@
|
|
|
139
144
|
> * {
|
|
140
145
|
max-inline-size: 100%;
|
|
141
146
|
}
|
|
147
|
+
.ui-form-field[data-collapse-below="sm"][data-layout="horizontal"]
|
|
148
|
+
> .ui-form-field-control:first-child {
|
|
149
|
+
grid-column-start: 2;
|
|
150
|
+
}
|
|
142
151
|
.ui-form-field[data-collapse-below="sm"][data-label-align="end"]:is(
|
|
143
152
|
[data-layout="horizontal"],
|
|
144
153
|
[data-layout="inline"]
|
|
@@ -169,6 +178,10 @@
|
|
|
169
178
|
> * {
|
|
170
179
|
max-inline-size: 100%;
|
|
171
180
|
}
|
|
181
|
+
.ui-form-field[data-collapse-below="md"][data-layout="horizontal"]
|
|
182
|
+
> .ui-form-field-control:first-child {
|
|
183
|
+
grid-column-start: 2;
|
|
184
|
+
}
|
|
172
185
|
.ui-form-field[data-collapse-below="md"][data-label-align="end"]:is(
|
|
173
186
|
[data-layout="horizontal"],
|
|
174
187
|
[data-layout="inline"]
|
|
@@ -199,6 +212,10 @@
|
|
|
199
212
|
> * {
|
|
200
213
|
max-inline-size: 100%;
|
|
201
214
|
}
|
|
215
|
+
.ui-form-field[data-collapse-below="lg"][data-layout="horizontal"]
|
|
216
|
+
> .ui-form-field-control:first-child {
|
|
217
|
+
grid-column-start: 2;
|
|
218
|
+
}
|
|
202
219
|
.ui-form-field[data-collapse-below="lg"][data-label-align="end"]:is(
|
|
203
220
|
[data-layout="horizontal"],
|
|
204
221
|
[data-layout="inline"]
|
|
@@ -229,6 +246,10 @@
|
|
|
229
246
|
> * {
|
|
230
247
|
max-inline-size: 100%;
|
|
231
248
|
}
|
|
249
|
+
.ui-form-field[data-collapse-below="xl"][data-layout="horizontal"]
|
|
250
|
+
> .ui-form-field-control:first-child {
|
|
251
|
+
grid-column-start: 2;
|
|
252
|
+
}
|
|
232
253
|
.ui-form-field[data-collapse-below="xl"][data-label-align="end"]:is(
|
|
233
254
|
[data-layout="horizontal"],
|
|
234
255
|
[data-layout="inline"]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
@layer components {
|
|
3
|
+
svg.ui-icon[data-slot="icon"] {
|
|
4
|
+
inline-size: var(--icon-glyph-size);
|
|
5
|
+
block-size: var(--icon-glyph-size);
|
|
6
|
+
|
|
7
|
+
flex: 0 0 auto;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.ui-icon[data-size="2xs"] {
|
|
11
|
+
--icon-glyph-size: var(--icon-size-2xs);
|
|
12
|
+
}
|
|
13
|
+
.ui-icon[data-size="xs"] {
|
|
14
|
+
--icon-glyph-size: var(--icon-size-xs);
|
|
15
|
+
}
|
|
16
|
+
.ui-icon[data-size="sm"] {
|
|
17
|
+
--icon-glyph-size: var(--icon-size-sm);
|
|
18
|
+
}
|
|
19
|
+
.ui-icon[data-size="md"] {
|
|
20
|
+
--icon-glyph-size: var(--icon-size-md);
|
|
21
|
+
}
|
|
22
|
+
.ui-icon[data-size="lg"] {
|
|
23
|
+
--icon-glyph-size: var(--icon-size-lg);
|
|
24
|
+
}
|
|
25
|
+
.ui-icon[data-size="xl"] {
|
|
26
|
+
--icon-glyph-size: var(--icon-size-xl);
|
|
27
|
+
}
|
|
28
|
+
.ui-icon[data-size="2xl"] {
|
|
29
|
+
--icon-glyph-size: var(--icon-size-2xl);
|
|
30
|
+
}
|
|
31
|
+
.ui-icon[data-size="3xl"] {
|
|
32
|
+
--icon-glyph-size: var(--icon-size-3xl);
|
|
33
|
+
}
|
|
34
|
+
.ui-icon[data-size="4xl"] {
|
|
35
|
+
--icon-glyph-size: var(--icon-size-4xl);
|
|
36
|
+
}
|
|
37
|
+
}
|
package/dist/styles/index.css
CHANGED
package/dist/styles/layout.css
CHANGED
|
@@ -321,6 +321,13 @@
|
|
|
321
321
|
align-items: start;
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
+
.ui-responsive-grid[data-align="start"] {
|
|
325
|
+
align-items: start;
|
|
326
|
+
}
|
|
327
|
+
.ui-responsive-grid[data-align="stretch"] {
|
|
328
|
+
align-items: stretch;
|
|
329
|
+
}
|
|
330
|
+
|
|
324
331
|
.ui-responsive-grid[data-gap="none"] {
|
|
325
332
|
gap: 0;
|
|
326
333
|
}
|
|
@@ -338,8 +338,12 @@
|
|
|
338
338
|
justify-content: safe flex-end;
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
+
.ui-pagination[data-align="end"] > .ui-pagination-total {
|
|
342
|
+
margin-inline-end: 0;
|
|
343
|
+
}
|
|
344
|
+
|
|
341
345
|
.ui-pagination[data-size="sm"] {
|
|
342
|
-
--control-height: var(--pagination-control-height-sm);
|
|
346
|
+
--control-height: var(--pagination-control-height-sm, var(--control-height-sm));
|
|
343
347
|
}
|
|
344
348
|
|
|
345
349
|
.ui-pagination-jumper {
|
|
@@ -1165,14 +1165,11 @@
|
|
|
1165
1165
|
}
|
|
1166
1166
|
|
|
1167
1167
|
.ui-org-switcher-command {
|
|
1168
|
+
--command-list-split-inset: var(--org-switcher-list-inset);
|
|
1168
1169
|
width: 100%;
|
|
1169
1170
|
padding-inline: calc(var(--org-switcher-list-inset) - var(--org-switcher-list-offset));
|
|
1170
1171
|
}
|
|
1171
1172
|
|
|
1172
|
-
.ui-org-switcher-command .ui-command-group {
|
|
1173
|
-
padding: 0;
|
|
1174
|
-
}
|
|
1175
|
-
|
|
1176
1173
|
.ui-org-switcher-command .ui-command-input-wrapper {
|
|
1177
1174
|
|
|
1178
1175
|
border: 1px solid hsl(var(--input));
|
|
@@ -1183,16 +1180,6 @@
|
|
|
1183
1180
|
background: hsl(var(--background));
|
|
1184
1181
|
}
|
|
1185
1182
|
|
|
1186
|
-
.ui-org-switcher-command .ui-command-item {
|
|
1187
|
-
border-radius: 0;
|
|
1188
|
-
margin-inline: calc(-1 * var(--org-switcher-list-inset));
|
|
1189
|
-
padding-inline: calc(var(--org-switcher-list-inset) + var(--command-input-padding-x));
|
|
1190
|
-
}
|
|
1191
|
-
|
|
1192
|
-
.ui-org-switcher-command .ui-command-item + .ui-command-item {
|
|
1193
|
-
border-block-start: 1px solid hsl(var(--border));
|
|
1194
|
-
}
|
|
1195
|
-
|
|
1196
1183
|
[data-slot="dialog-footer"]:has(> .ui-org-switcher-legend),
|
|
1197
1184
|
[data-slot="sheet-footer"]:has(> .ui-org-switcher-legend) {
|
|
1198
1185
|
justify-content: flex-start;
|
|
@@ -2096,6 +2083,16 @@
|
|
|
2096
2083
|
flex: 0 0 auto;
|
|
2097
2084
|
}
|
|
2098
2085
|
|
|
2086
|
+
.ui-topbar-item-icon {
|
|
2087
|
+
display: inline-flex;
|
|
2088
|
+
flex: 0 0 auto;
|
|
2089
|
+
align-items: center;
|
|
2090
|
+
}
|
|
2091
|
+
.ui-topbar-item-icon svg {
|
|
2092
|
+
inline-size: var(--topbar-icon-size);
|
|
2093
|
+
block-size: var(--topbar-icon-size);
|
|
2094
|
+
}
|
|
2095
|
+
|
|
2099
2096
|
@media (width <= 68.75rem) {
|
|
2100
2097
|
.ui-topbar-center {
|
|
2101
2098
|
display: var(--topbar-center-compact-display);
|
|
@@ -40,7 +40,47 @@
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
.ui-table-row[data-tone] {
|
|
43
|
-
background:
|
|
43
|
+
background-image: linear-gradient(
|
|
44
|
+
hsl(var(--table-row-tone-color) / var(--table-row-tone-wash-alpha)),
|
|
45
|
+
hsl(var(--table-row-tone-color) / var(--table-row-tone-wash-alpha))
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:where([data-slot="table"] > tbody > tr:nth-child(even of :not([data-expanded-row]))) {
|
|
50
|
+
background-color: color-mix(
|
|
51
|
+
in srgb,
|
|
52
|
+
var(--table-row-striped-background, hsl(var(--muted) / 0.8)) var(--table-row-striped-alpha),
|
|
53
|
+
transparent
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
:where(
|
|
58
|
+
[data-slot="table"]
|
|
59
|
+
> tbody
|
|
60
|
+
> tr:nth-child(even of :not([data-expanded-row]))
|
|
61
|
+
+ tr[data-expanded-row]
|
|
62
|
+
> td
|
|
63
|
+
) {
|
|
64
|
+
background-image: linear-gradient(
|
|
65
|
+
color-mix(
|
|
66
|
+
in srgb,
|
|
67
|
+
var(--table-row-striped-background, hsl(var(--muted) / 0.8)) var(--table-row-striped-alpha),
|
|
68
|
+
transparent
|
|
69
|
+
),
|
|
70
|
+
color-mix(
|
|
71
|
+
in srgb,
|
|
72
|
+
var(--table-row-striped-background, hsl(var(--muted) / 0.8)) var(--table-row-striped-alpha),
|
|
73
|
+
transparent
|
|
74
|
+
)
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
[data-slot="table"][data-striped=""] {
|
|
79
|
+
--table-row-striped-alpha: 100%;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
[data-slot="table"][data-striped="false"] {
|
|
83
|
+
--table-row-striped-alpha: 0%;
|
|
44
84
|
}
|
|
45
85
|
|
|
46
86
|
.ui-table-row[data-tone] > [data-slot="table-cell"]:first-child {
|
|
@@ -172,6 +212,14 @@
|
|
|
172
212
|
min-width: 0;
|
|
173
213
|
}
|
|
174
214
|
|
|
215
|
+
.ui-data-table-pagination--footer > .ui-pagination {
|
|
216
|
+
flex: 1 1 auto;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.ui-data-table-pagination--footer:empty {
|
|
220
|
+
display: none;
|
|
221
|
+
}
|
|
222
|
+
|
|
175
223
|
.ui-data-table-page-size {
|
|
176
224
|
flex: 0 0 auto;
|
|
177
225
|
flex-wrap: nowrap;
|
|
@@ -213,10 +261,6 @@
|
|
|
213
261
|
min-inline-size: var(--table-surface-min-inline-size);
|
|
214
262
|
}
|
|
215
263
|
|
|
216
|
-
.ui-data-table-surface[data-striped] tbody tr:nth-child(even):not([data-state="selected"]) {
|
|
217
|
-
background-color: var(--table-row-striped-background, hsl(var(--muted) / 0.4));
|
|
218
|
-
}
|
|
219
|
-
|
|
220
264
|
.ui-data-table-empty {
|
|
221
265
|
padding: var(--empty-state-space-y) var(--empty-state-space-x);
|
|
222
266
|
}
|
|
@@ -332,6 +376,13 @@
|
|
|
332
376
|
box-shadow: var(--table-fixed-shadow-start);
|
|
333
377
|
}
|
|
334
378
|
|
|
379
|
+
[data-slot="card"]
|
|
380
|
+
.ui-data-table-surface
|
|
381
|
+
tbody
|
|
382
|
+
:is(.ui-data-table-pin-end, .ui-data-table-pin-start) {
|
|
383
|
+
background-color: hsl(var(--card-background, var(--card)));
|
|
384
|
+
}
|
|
385
|
+
|
|
335
386
|
th.ui-data-table-pin-end,
|
|
336
387
|
th.ui-data-table-pin-start {
|
|
337
388
|
background-color: hsl(var(--secondary));
|
|
@@ -345,11 +396,27 @@
|
|
|
345
396
|
box-shadow: 6px 0 6px -5px hsl(var(--foreground) / 0.12);
|
|
346
397
|
}
|
|
347
398
|
|
|
399
|
+
:where([data-slot="table"] > tbody > tr:nth-child(even of :not([data-expanded-row])))
|
|
400
|
+
> :is(.ui-data-table-pin-end, .ui-data-table-pin-start) {
|
|
401
|
+
background-image: linear-gradient(
|
|
402
|
+
color-mix(
|
|
403
|
+
in srgb,
|
|
404
|
+
var(--table-row-striped-background, hsl(var(--muted) / 0.8)) var(--table-row-striped-alpha),
|
|
405
|
+
transparent
|
|
406
|
+
),
|
|
407
|
+
color-mix(
|
|
408
|
+
in srgb,
|
|
409
|
+
var(--table-row-striped-background, hsl(var(--muted) / 0.8)) var(--table-row-striped-alpha),
|
|
410
|
+
transparent
|
|
411
|
+
)
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
|
|
348
415
|
.ui-data-table-surface tbody tr:hover > .ui-data-table-pin-end,
|
|
349
416
|
.ui-data-table-surface tbody tr:hover > .ui-data-table-pin-start {
|
|
350
417
|
background-image: linear-gradient(
|
|
351
|
-
var(--table-row-hover-background, hsl(var(--
|
|
352
|
-
var(--table-row-hover-background, hsl(var(--
|
|
418
|
+
var(--table-row-hover-background, hsl(var(--accent) / 0.7)),
|
|
419
|
+
var(--table-row-hover-background, hsl(var(--accent) / 0.7))
|
|
353
420
|
);
|
|
354
421
|
}
|
|
355
422
|
|
|
@@ -385,7 +452,12 @@
|
|
|
385
452
|
}
|
|
386
453
|
|
|
387
454
|
.ui-data-table-expanded-row > [data-slot="table-cell"] {
|
|
388
|
-
background-color:
|
|
455
|
+
background-color: color-mix(
|
|
456
|
+
in srgb,
|
|
457
|
+
var(--table-row-expanded-background, hsl(var(--muted) / 0.3))
|
|
458
|
+
calc(100% - var(--table-row-striped-alpha)),
|
|
459
|
+
transparent
|
|
460
|
+
);
|
|
389
461
|
}
|
|
390
462
|
|
|
391
463
|
.ui-data-table-summary {
|