@kerfjs/ui 5.0.0-beta.59 → 5.0.0-beta.60
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/ai/component-catalog.json +99 -10
- package/ai/component-composition.json +78 -6
- package/ai/components/README.md +1 -1
- package/ai/components/floating-toolbar.md +3 -1
- package/ai/components/list-header.md +1 -1
- package/ai/components/list-item.md +4 -1
- package/ai/components/resize.md +6 -1
- package/ai/components/select.md +5 -3
- package/ai/components/state-banner.md +3 -1
- package/ai/components/tab-bar.md +1 -1
- package/ai/components/tabs.md +2 -1
- package/ai/components/text.md +2 -1
- package/ai/components/token-search-field.md +1 -1
- package/ai/components/toolbar-text.md +4 -2
- package/ai/components/toolbar.md +2 -1
- package/ai/components/value-table.md +2 -1
- package/ai/public-api-signatures-v1.md +55 -18
- package/ai/skill.md +18 -6
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/app-tab.d.ts +4 -1
- package/dist/app-tab.js +1 -1
- package/dist/catalog.js +6 -6
- package/dist/{chunk-2CCMJTVY.js → chunk-2OXQHM7I.js} +5 -5
- package/dist/{chunk-2CCMJTVY.js.map → chunk-2OXQHM7I.js.map} +1 -1
- package/dist/{chunk-XDKAYSVD.js → chunk-3SXMEK3B.js} +1 -1
- package/dist/chunk-3SXMEK3B.js.map +1 -0
- package/dist/{chunk-QOWG4ZCL.js → chunk-5I7OHCIP.js} +5 -2
- package/dist/chunk-5I7OHCIP.js.map +1 -0
- package/dist/{chunk-W4XKTST6.js → chunk-5PESG2VP.js} +3 -3
- package/dist/{chunk-W4XKTST6.js.map → chunk-5PESG2VP.js.map} +1 -1
- package/dist/{chunk-UX2VVXZ3.js → chunk-5Q3N6EV7.js} +2 -2
- package/dist/{chunk-UX2VVXZ3.js.map → chunk-5Q3N6EV7.js.map} +1 -1
- package/dist/{chunk-UFYZHYWU.js → chunk-A3CKOW2R.js} +4 -3
- package/dist/chunk-A3CKOW2R.js.map +1 -0
- package/dist/{chunk-UXT7TE6B.js → chunk-AUKT3KMG.js} +5 -1
- package/dist/chunk-AUKT3KMG.js.map +1 -0
- package/dist/{chunk-EVYKTVBQ.js → chunk-GLDWRCAM.js} +5 -1
- package/dist/chunk-GLDWRCAM.js.map +1 -0
- package/dist/{chunk-M7QV3IHH.js → chunk-I3Q7KKYM.js} +5 -1
- package/dist/chunk-I3Q7KKYM.js.map +1 -0
- package/dist/{chunk-3CGQ7ZNO.js → chunk-IA7TMD4Y.js} +2 -2
- package/dist/{chunk-3CGQ7ZNO.js.map → chunk-IA7TMD4Y.js.map} +1 -1
- package/dist/{chunk-VHADGP3B.js → chunk-KLJKU6ZL.js} +5 -1
- package/dist/chunk-KLJKU6ZL.js.map +1 -0
- package/dist/{chunk-6YFHCLHG.js → chunk-MERWRTBG.js} +1 -1
- package/dist/chunk-MERWRTBG.js.map +1 -0
- package/dist/{chunk-KH6VUGHU.js → chunk-NNMLEDMD.js} +2 -2
- package/dist/{chunk-KH6VUGHU.js.map → chunk-NNMLEDMD.js.map} +1 -1
- package/dist/{chunk-6CINWX2E.js → chunk-P7D3EMXM.js} +3 -1
- package/dist/chunk-P7D3EMXM.js.map +1 -0
- package/dist/{chunk-QPUPLNNB.js → chunk-T57AXDFM.js} +2 -2
- package/dist/{chunk-QPUPLNNB.js.map → chunk-T57AXDFM.js.map} +1 -1
- package/dist/{chunk-WOUF7YXM.js → chunk-T66UNBXL.js} +5 -2
- package/dist/chunk-T66UNBXL.js.map +1 -0
- package/dist/{chunk-XQV2B4IL.js → chunk-UIDKY4UB.js} +2 -2
- package/dist/{chunk-XQV2B4IL.js.map → chunk-UIDKY4UB.js.map} +1 -1
- package/dist/{chunk-OUK6QRDR.js → chunk-WPLIO5WJ.js} +5 -2
- package/dist/chunk-WPLIO5WJ.js.map +1 -0
- package/dist/collapsible-panel.d.ts +1 -0
- package/dist/collapsible-panel.js +2 -2
- package/dist/floating-toolbar.d.ts +8 -2
- package/dist/floating-toolbar.js +1 -1
- package/dist/index.js +13 -13
- package/dist/list-header.js +1 -1
- package/dist/list-item.d.ts +5 -2
- package/dist/list-item.js +1 -1
- package/dist/nav-stack.js +1 -1
- package/dist/resizable-region.d.ts +8 -3
- package/dist/resizable-region.js +1 -1
- package/dist/select.d.ts +4 -1
- package/dist/select.js +1 -1
- package/dist/split-view.d.ts +1 -0
- package/dist/split-view.js +2 -2
- package/dist/state-banner.d.ts +8 -2
- package/dist/state-banner.js +1 -1
- package/dist/styles/app-tab.css +3 -0
- package/dist/styles/floating-toolbar.css +56 -4
- package/dist/styles/list-header.css +15 -7
- package/dist/styles/list-item.css +60 -18
- package/dist/styles/resizable-region.css +33 -1
- package/dist/styles/select.css +26 -0
- package/dist/styles/state-banner.css +37 -0
- package/dist/styles/tab-bar.css +25 -10
- package/dist/styles/text.css +9 -0
- package/dist/styles/token-search-field.css +1 -1
- package/dist/styles/toolbar-text.css +4 -0
- package/dist/styles/toolbar.css +83 -1
- package/dist/styles/value-table.css +16 -3
- package/dist/text.d.ts +7 -2
- package/dist/text.js +1 -1
- package/dist/toolbar-text.d.ts +1 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +4 -2
- package/dist/toolbar.js +1 -1
- package/dist/value-table.d.ts +3 -1
- package/dist/value-table.js +1 -1
- package/dist/wire-catalog.js +1 -1
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/wire-workbench.js +1 -1
- package/dist/workbench.js +1 -1
- package/docs/collapsible-panel.md +7 -1
- package/docs/component-selection.md +61 -0
- package/docs/document-baseline.md +3 -0
- package/llms.txt +32 -0
- package/package.json +1 -1
- package/dist/chunk-6CINWX2E.js.map +0 -1
- package/dist/chunk-6YFHCLHG.js.map +0 -1
- package/dist/chunk-EVYKTVBQ.js.map +0 -1
- package/dist/chunk-M7QV3IHH.js.map +0 -1
- package/dist/chunk-OUK6QRDR.js.map +0 -1
- package/dist/chunk-QOWG4ZCL.js.map +0 -1
- package/dist/chunk-UFYZHYWU.js.map +0 -1
- package/dist/chunk-UXT7TE6B.js.map +0 -1
- package/dist/chunk-VHADGP3B.js.map +0 -1
- package/dist/chunk-WOUF7YXM.js.map +0 -1
- package/dist/chunk-XDKAYSVD.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
export { wireResizableRegions } from './chunk-
|
|
1
|
+
export { wireResizableRegions } from './chunk-UIDKY4UB.js';
|
|
2
2
|
export { reorderTabs, wireTabBars } from './chunk-46263QLK.js';
|
|
3
|
-
export { wireTokenSearchFields } from './chunk-
|
|
3
|
+
export { wireTokenSearchFields } from './chunk-A3CKOW2R.js';
|
|
4
4
|
export { TokenSearchField, placeTokenSearchCaret, readTokenSearchField } from './chunk-RRB26JRJ.js';
|
|
5
5
|
export { createTokenSearchModel } from './chunk-F7F7KRO2.js';
|
|
6
|
-
export { ValueTable, ValueTableRow } from './chunk-
|
|
6
|
+
export { ValueTable, ValueTableRow } from './chunk-P7D3EMXM.js';
|
|
7
7
|
export { wireScrollDividers } from './chunk-JCV4GXWB.js';
|
|
8
8
|
|
|
9
9
|
export { Spacer } from './chunk-MEY33VWB.js';
|
|
10
|
-
export { StateBanner } from './chunk-
|
|
10
|
+
export { StateBanner } from './chunk-GLDWRCAM.js';
|
|
11
11
|
export { SunkenPanel } from './chunk-6ZXOQEAN.js';
|
|
12
12
|
export { DialogSurface, PopupSurface } from './chunk-NN6GYOA2.js';
|
|
13
13
|
export { TabBar } from './chunk-N3GKMPDW.js';
|
|
14
14
|
export { SegmentedControl } from './chunk-X5QSICJ3.js';
|
|
15
|
-
export { Select } from './chunk-
|
|
15
|
+
export { Select } from './chunk-WPLIO5WJ.js';
|
|
16
16
|
export { ListInsetControl } from './chunk-5I7QGQVT.js';
|
|
17
17
|
export { EmptyState } from './chunk-E36EVCKG.js';
|
|
18
18
|
export { Grid } from './chunk-AGXQQFKZ.js';
|
|
19
19
|
export { ListActionRow } from './chunk-F4QMLOXJ.js';
|
|
20
|
-
export { AppTab } from './chunk-
|
|
20
|
+
export { AppTab } from './chunk-T66UNBXL.js';
|
|
21
21
|
export { PopupMenu, closePopupMenu, openPopupMenuAt } from './chunk-UWONG4QE.js';
|
|
22
|
-
export { ResizableRegion, clampRegionSize, resizeRegionFromPointer } from './chunk-
|
|
22
|
+
export { ResizableRegion, clampRegionSize, resizeRegionFromPointer } from './chunk-KLJKU6ZL.js';
|
|
23
23
|
export { Row } from './chunk-VZOFZPSO.js';
|
|
24
24
|
export { ListInsetText } from './chunk-DG6G5EPF.js';
|
|
25
|
-
export { ListItem } from './chunk-
|
|
25
|
+
export { ListItem } from './chunk-5I7OHCIP.js';
|
|
26
26
|
export { List } from './chunk-NAPE7WUS.js';
|
|
27
27
|
|
|
28
|
-
export { ToolbarText } from './chunk-
|
|
29
|
-
export { FloatingToolbar } from './chunk-
|
|
28
|
+
export { ToolbarText } from './chunk-3SXMEK3B.js';
|
|
29
|
+
export { FloatingToolbar } from './chunk-I3Q7KKYM.js';
|
|
30
30
|
|
|
31
31
|
export { LoadingSpinner } from './chunk-ZLWQZUGF.js';
|
|
32
|
-
export { ListHeader } from './chunk-
|
|
33
|
-
export { Text } from './chunk-
|
|
32
|
+
export { ListHeader } from './chunk-5Q3N6EV7.js';
|
|
33
|
+
export { Text } from './chunk-AUKT3KMG.js';
|
|
34
34
|
export { DisclosureArrow } from './chunk-KROD7KZK.js';
|
|
35
35
|
export { Skeleton } from './chunk-AHEG27M7.js';
|
|
36
36
|
export { Badge } from './chunk-MP2GDBQZ.js';
|
|
37
37
|
export { ToolbarActionLink, ToolbarControlGroup } from './chunk-7JUBXOIV.js';
|
|
38
|
-
export { Toolbar } from './chunk-
|
|
38
|
+
export { Toolbar } from './chunk-MERWRTBG.js';
|
|
39
39
|
export { Pane } from './chunk-EZVNC4J6.js';
|
|
40
40
|
export { LucideIcon } from './chunk-4R777DUZ.js';
|
|
41
41
|
export { ContentItem } from './chunk-MA73TA6D.js';
|
package/dist/list-header.js
CHANGED
package/dist/list-item.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ type ListItemRootAttributes = Readonly<Record<`data-${string}`, string | undefin
|
|
|
13
13
|
'data-busy'?: never;
|
|
14
14
|
'data-state'?: never;
|
|
15
15
|
'data-kui-disabled'?: never;
|
|
16
|
+
'data-icon-align'?: never;
|
|
16
17
|
}>;
|
|
17
18
|
interface ListItemProps {
|
|
18
19
|
label: string | SafeHtml;
|
|
@@ -25,7 +26,7 @@ interface ListItemProps {
|
|
|
25
26
|
status?: string | SafeHtml;
|
|
26
27
|
/** Show a progress indicator and expose the row as busy without replacing its content; a placeholder keeps the indicator. */
|
|
27
28
|
busy?: boolean;
|
|
28
|
-
density?: 'standard' | 'compact';
|
|
29
|
+
density?: 'standard' | 'compact' | 'spacious';
|
|
29
30
|
divider?: 'none' | 'before' | 'after' | 'both';
|
|
30
31
|
selected?: boolean;
|
|
31
32
|
action: string;
|
|
@@ -35,6 +36,8 @@ interface ListItemProps {
|
|
|
35
36
|
accessibleLabel?: string;
|
|
36
37
|
title?: string;
|
|
37
38
|
multiline?: boolean;
|
|
39
|
+
/** Alignment of an icon beside a wrapped label. Defaults to its first line. */
|
|
40
|
+
multilineIconAlign?: 'first-line' | 'center';
|
|
38
41
|
state?: string;
|
|
39
42
|
disabled?: boolean;
|
|
40
43
|
tabIndex?: number;
|
|
@@ -44,6 +47,6 @@ interface ListItemProps {
|
|
|
44
47
|
/** Native named-slot assignment when composed inside a web component. */
|
|
45
48
|
slot?: string;
|
|
46
49
|
}
|
|
47
|
-
declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, rootAttributes, slot, }: ListItemProps): SafeHtml;
|
|
50
|
+
declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, pressed, accessibleLabel, title, multiline, multilineIconAlign, state, disabled, tabIndex, placeholder, rootAttributes, slot, }: ListItemProps): SafeHtml;
|
|
48
51
|
|
|
49
52
|
export { ListItem, type ListItemProps };
|
package/dist/list-item.js
CHANGED
package/dist/nav-stack.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SafeHtml } from 'kerfjs';
|
|
2
|
+
import { CssLength } from './css-values.js';
|
|
2
3
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3
4
|
|
|
4
5
|
type ResizableRegionAxis = 'horizontal' | 'vertical';
|
|
@@ -7,7 +8,7 @@ type ResizableRegionSeparator = 'auto' | 'hidden';
|
|
|
7
8
|
type ResizableRegionCollapseMotion = 'none' | 'slide' | 'fade-slide';
|
|
8
9
|
type ResizableRegionContentOverflow = 'clip' | 'auto' | 'visible';
|
|
9
10
|
type ResizableRegionPresentation = 'inline' | 'overlay' | 'hidden';
|
|
10
|
-
type ResizableRegionRestorePosition = 'bottom-start' | 'bottom-end';
|
|
11
|
+
type ResizableRegionRestorePosition = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
11
12
|
type ResizableRegionResponsiveFillAt = 'compact' | 'narrow';
|
|
12
13
|
interface ResizableRegionProps {
|
|
13
14
|
id: string;
|
|
@@ -26,7 +27,7 @@ interface ResizableRegionProps {
|
|
|
26
27
|
separator?: ResizableRegionSeparator;
|
|
27
28
|
/** Keep the track change instant while optionally sliding the fixed-size content. */
|
|
28
29
|
collapseMotion?: ResizableRegionCollapseMotion;
|
|
29
|
-
/**
|
|
30
|
+
/** Use `visible` while an anchored popup must escape the content box; it raises the region to the popup layer. */
|
|
30
31
|
contentOverflow?: ResizableRegionContentOverflow;
|
|
31
32
|
/** Inline layout, an edge overlay, or a responsive replacement that removes the region. */
|
|
32
33
|
presentation?: ResizableRegionPresentation;
|
|
@@ -34,6 +35,10 @@ interface ResizableRegionProps {
|
|
|
34
35
|
restoreControl?: SafeHtml;
|
|
35
36
|
/** Safe-area-aware corner of the region's container (not the viewport) for `restoreControl`. */
|
|
36
37
|
restorePosition?: ResizableRegionRestorePosition;
|
|
38
|
+
/** Position a restore control in its container corner or leave it in normal flow. */
|
|
39
|
+
restorePlacement?: 'corner' | 'inline';
|
|
40
|
+
/** Corner distance before the container's safe-area inset. */
|
|
41
|
+
restoreInset?: CssLength;
|
|
37
42
|
/** Fill the available inline track and hide the separator below a container breakpoint. */
|
|
38
43
|
responsiveFillAt?: ResizableRegionResponsiveFillAt;
|
|
39
44
|
/** Decorative dormant content for the separator handle. Must not contain interactive descendants. */
|
|
@@ -42,6 +47,6 @@ interface ResizableRegionProps {
|
|
|
42
47
|
}
|
|
43
48
|
declare const clampRegionSize: (size: number, min: number, max: number) => number;
|
|
44
49
|
declare const resizeRegionFromPointer: (startSize: number, delta: number, edge: ResizableRegionEdge) => number;
|
|
45
|
-
declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, responsiveFillAt, handleIcon, children, }: ResizableRegionProps): SafeHtml;
|
|
50
|
+
declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, restorePlacement, restoreInset, responsiveFillAt, handleIcon, children, }: ResizableRegionProps): SafeHtml;
|
|
46
51
|
|
|
47
52
|
export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionCollapseMotion, type ResizableRegionContentOverflow, type ResizableRegionEdge, type ResizableRegionPresentation, type ResizableRegionProps, type ResizableRegionResponsiveFillAt, type ResizableRegionRestorePosition, type ResizableRegionSeparator, clampRegionSize, resizeRegionFromPointer };
|
package/dist/resizable-region.js
CHANGED
package/dist/select.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ type SelectPresentation = 'form' | 'toolbar-borderless' | 'navigation';
|
|
|
36
36
|
type SelectSize = 'default' | 'compact';
|
|
37
37
|
type SelectSelectedPresentation = 'label' | 'icon-only';
|
|
38
38
|
type SelectFocusRingOwner = 'select' | 'group';
|
|
39
|
+
type SelectTriggerWidth = 'fit-content' | 'max-content' | 'fill';
|
|
39
40
|
interface SelectBaseProps<Value extends string = string> {
|
|
40
41
|
name: string;
|
|
41
42
|
choices: readonly SelectChoice<Value>[];
|
|
@@ -51,6 +52,8 @@ interface SelectBaseProps<Value extends string = string> {
|
|
|
51
52
|
/** Form (default), borderless toolbar, or intrinsic navigation chrome. */
|
|
52
53
|
presentation?: SelectPresentation;
|
|
53
54
|
size?: SelectSize;
|
|
55
|
+
/** Closed trigger width; omit to keep the presentation's default. */
|
|
56
|
+
triggerWidth?: SelectTriggerWidth;
|
|
54
57
|
/** Let an enclosing ToolbarControlGroup paint the composed focus ring. */
|
|
55
58
|
focusRingOwner?: SelectFocusRingOwner;
|
|
56
59
|
/** Maximum closed-control label width in CSS pixels before ellipsis. */
|
|
@@ -101,4 +104,4 @@ type SelectMultipleValueProps<Value extends string = string> = SelectMultipleLab
|
|
|
101
104
|
type SelectProps<Value extends string = string> = SelectBaseProps<Value> & SelectAccessibleName & (SelectSingleValueProps<Value> | SelectMultipleValueProps<Value>);
|
|
102
105
|
declare function Select<Value extends string>(props: SelectProps<Value>): SafeHtml;
|
|
103
106
|
|
|
104
|
-
export { Select, type SelectChoice, type SelectFocusRingOwner, type SelectMultipleIconProps, type SelectMultipleLabelProps, type SelectMultipleValueProps, type SelectPresentation, type SelectProps, type SelectSelectedPresentation, type SelectSingleValueProps, type SelectSize };
|
|
107
|
+
export { Select, type SelectChoice, type SelectFocusRingOwner, type SelectMultipleIconProps, type SelectMultipleLabelProps, type SelectMultipleValueProps, type SelectPresentation, type SelectProps, type SelectSelectedPresentation, type SelectSingleValueProps, type SelectSize, type SelectTriggerWidth };
|
package/dist/select.js
CHANGED
package/dist/split-view.d.ts
CHANGED
package/dist/split-view.js
CHANGED
package/dist/state-banner.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
|
3
3
|
|
|
4
4
|
type StateBannerTone = 'neutral' | 'info' | 'pop' | 'success' | 'warning' | 'danger';
|
|
5
5
|
type StateBannerUrgency = 'status' | 'alert';
|
|
6
|
+
type StateBannerCopyLayout = 'inline' | 'stacked';
|
|
7
|
+
type StateBannerActionPlacement = 'trailing' | 'below';
|
|
6
8
|
interface StateBannerProps {
|
|
7
9
|
title: string;
|
|
8
10
|
detail?: string;
|
|
@@ -12,12 +14,16 @@ interface StateBannerProps {
|
|
|
12
14
|
action?: KerfUiContent;
|
|
13
15
|
tone?: StateBannerTone;
|
|
14
16
|
urgency?: StateBannerUrgency;
|
|
17
|
+
/** Keep the detail beside the title, or give it its own line. */
|
|
18
|
+
copyLayout?: StateBannerCopyLayout;
|
|
19
|
+
/** Place the action beside the copy or on a separate trailing row. */
|
|
20
|
+
actionPlacement?: StateBannerActionPlacement;
|
|
15
21
|
className?: string;
|
|
16
22
|
/** Render the title, badge, and detail as unanimated loading skeletons, keeping the icon and tone. The detail line appears only when `detail` is set, as in the live banner. */
|
|
17
23
|
placeholder?: boolean;
|
|
18
24
|
/** Native named-slot assignment when composed inside a web component. */
|
|
19
25
|
slot?: string;
|
|
20
26
|
}
|
|
21
|
-
declare function StateBanner({ title, detail, badge, icon, action, tone, urgency, className, placeholder, slot, }: StateBannerProps): SafeHtml;
|
|
27
|
+
declare function StateBanner({ title, detail, badge, icon, action, tone, urgency, copyLayout, actionPlacement, className, placeholder, slot, }: StateBannerProps): SafeHtml;
|
|
22
28
|
|
|
23
|
-
export { StateBanner, type StateBannerProps, type StateBannerTone, type StateBannerUrgency };
|
|
29
|
+
export { StateBanner, type StateBannerActionPlacement, type StateBannerCopyLayout, type StateBannerProps, type StateBannerTone, type StateBannerUrgency };
|
package/dist/state-banner.js
CHANGED
package/dist/styles/app-tab.css
CHANGED
|
@@ -106,6 +106,9 @@
|
|
|
106
106
|
text-overflow: ellipsis;
|
|
107
107
|
white-space: nowrap;
|
|
108
108
|
}
|
|
109
|
+
.kui-app-tab[data-attention="true"] .kui-app-tab__name {
|
|
110
|
+
color: var(--kui-app-tab-attention-color, var(--kui-color-warning-on-quiet));
|
|
111
|
+
}
|
|
109
112
|
.kui-app-tab[data-presentation="icon-only"] .kui-app-tab__select {
|
|
110
113
|
width: 100%;
|
|
111
114
|
justify-content: center;
|
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
--kui-floating-toolbar-inset,
|
|
7
7
|
var(--kui-space-m, 1rem)
|
|
8
8
|
);
|
|
9
|
+
--_kui-floating-toolbar-safe-block-start: 0px;
|
|
10
|
+
--_kui-floating-toolbar-safe-block-end: 0px;
|
|
11
|
+
--_kui-floating-toolbar-safe-inline-start: 0px;
|
|
12
|
+
--_kui-floating-toolbar-safe-inline-end: 0px;
|
|
9
13
|
|
|
10
14
|
/* Floats above the main content of its nearest positioned ancestor. z-index
|
|
11
15
|
stays low so it never covers dialogs/overlays (it is not top-layer). Forced
|
|
@@ -30,6 +34,25 @@
|
|
|
30
34
|
gap: var(--kui-space-xs, 0.5rem);
|
|
31
35
|
}
|
|
32
36
|
|
|
37
|
+
.kui-floating-toolbar[data-safe-area-insets="true"] {
|
|
38
|
+
--_kui-floating-toolbar-safe-block-start: var(
|
|
39
|
+
--kui-edge-inset-block-start,
|
|
40
|
+
var(--kui-safe-area-block-start, env(safe-area-inset-top, 0px))
|
|
41
|
+
);
|
|
42
|
+
--_kui-floating-toolbar-safe-block-end: var(
|
|
43
|
+
--kui-edge-inset-block-end,
|
|
44
|
+
var(--kui-safe-area-block-end, env(safe-area-inset-bottom, 0px))
|
|
45
|
+
);
|
|
46
|
+
--_kui-floating-toolbar-safe-inline-start: var(
|
|
47
|
+
--kui-edge-inset-inline-start,
|
|
48
|
+
var(--kui-safe-area-inline-start, env(safe-area-inset-left, 0px))
|
|
49
|
+
);
|
|
50
|
+
--_kui-floating-toolbar-safe-inline-end: var(
|
|
51
|
+
--kui-edge-inset-inline-end,
|
|
52
|
+
var(--kui-safe-area-inline-end, env(safe-area-inset-right, 0px))
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
33
56
|
/* In a layout's restore corner the corner already owns the inset, so the
|
|
34
57
|
toolbar floats from the corner itself. Zero specificity: the toolbar's own
|
|
35
58
|
`inset` (or an app rule on the toolbar) still wins, while a token inherited
|
|
@@ -44,19 +67,43 @@
|
|
|
44
67
|
}
|
|
45
68
|
|
|
46
69
|
.kui-floating-toolbar[data-position^="bottom"] {
|
|
47
|
-
inset-block-end:
|
|
70
|
+
inset-block-end: calc(
|
|
71
|
+
var(
|
|
72
|
+
--kui-floating-toolbar-inset-block-end,
|
|
73
|
+
var(--_kui-floating-toolbar-inset)
|
|
74
|
+
) +
|
|
75
|
+
var(--_kui-floating-toolbar-safe-block-end)
|
|
76
|
+
);
|
|
48
77
|
}
|
|
49
78
|
|
|
50
79
|
.kui-floating-toolbar[data-position^="top"] {
|
|
51
|
-
inset-block-start:
|
|
80
|
+
inset-block-start: calc(
|
|
81
|
+
var(
|
|
82
|
+
--kui-floating-toolbar-inset-block-start,
|
|
83
|
+
var(--_kui-floating-toolbar-inset)
|
|
84
|
+
) +
|
|
85
|
+
var(--_kui-floating-toolbar-safe-block-start)
|
|
86
|
+
);
|
|
52
87
|
}
|
|
53
88
|
|
|
54
89
|
.kui-floating-toolbar[data-position$="-end"] {
|
|
55
|
-
inset-inline-end:
|
|
90
|
+
inset-inline-end: calc(
|
|
91
|
+
var(
|
|
92
|
+
--kui-floating-toolbar-inset-inline-end,
|
|
93
|
+
var(--_kui-floating-toolbar-inset)
|
|
94
|
+
) +
|
|
95
|
+
var(--_kui-floating-toolbar-safe-inline-end)
|
|
96
|
+
);
|
|
56
97
|
}
|
|
57
98
|
|
|
58
99
|
.kui-floating-toolbar[data-position$="-start"] {
|
|
59
|
-
inset-inline-start:
|
|
100
|
+
inset-inline-start: calc(
|
|
101
|
+
var(
|
|
102
|
+
--kui-floating-toolbar-inset-inline-start,
|
|
103
|
+
var(--_kui-floating-toolbar-inset)
|
|
104
|
+
) +
|
|
105
|
+
var(--_kui-floating-toolbar-safe-inline-start)
|
|
106
|
+
);
|
|
60
107
|
}
|
|
61
108
|
|
|
62
109
|
/* The centered edges span from the middle rather than an inline edge. */
|
|
@@ -65,3 +112,8 @@
|
|
|
65
112
|
inset-inline-start: 50%;
|
|
66
113
|
transform: translateX(-50%);
|
|
67
114
|
}
|
|
115
|
+
|
|
116
|
+
.kui-floating-toolbar[data-placement="inline"] {
|
|
117
|
+
position: static;
|
|
118
|
+
transform: none;
|
|
119
|
+
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
display: flex;
|
|
10
10
|
width: calc(100% - (2 * var(--kui-layout-inline-margin, 0.5rem)));
|
|
11
11
|
min-width: 0;
|
|
12
|
-
min-height: 2.75rem;
|
|
12
|
+
min-height: var(--kui-list-header-min-height, 2.75rem);
|
|
13
13
|
margin-inline: var(--kui-layout-inline-margin, 0.5rem);
|
|
14
14
|
box-sizing: border-box;
|
|
15
15
|
color: var(--kui-list-header-color);
|
|
@@ -18,13 +18,16 @@
|
|
|
18
18
|
gap: var(--kui-layout-item-gap, 0.5rem);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
.kui-list-header[data-density="compact"]
|
|
22
|
-
|
|
23
|
-
min-height: 2.25rem;
|
|
21
|
+
.kui-list-header[data-density="compact"] {
|
|
22
|
+
min-height: var(--kui-list-header-min-height, 2.25rem);
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
.kui-list-header[data-density="compact"] .kui-list-header__title {
|
|
27
|
-
|
|
26
|
+
min-height: var(
|
|
27
|
+
--kui-list-header-title-min-height,
|
|
28
|
+
var(--kui-list-header-min-height, 2.25rem)
|
|
29
|
+
);
|
|
30
|
+
padding-block: var(--kui-list-header-title-padding-block, 0.25rem);
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
.kui-list-header[data-divider="before"],
|
|
@@ -71,7 +74,7 @@
|
|
|
71
74
|
.kui-list-header__title,
|
|
72
75
|
.kui-list-header__action {
|
|
73
76
|
box-sizing: border-box;
|
|
74
|
-
border: 1px solid transparent;
|
|
77
|
+
border: var(--kui-list-header-border-width, 1px) solid transparent;
|
|
75
78
|
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
76
79
|
color: inherit;
|
|
77
80
|
background: transparent;
|
|
@@ -80,7 +83,12 @@
|
|
|
80
83
|
.kui-list-header__title {
|
|
81
84
|
display: flex;
|
|
82
85
|
min-width: 0;
|
|
83
|
-
min-height:
|
|
86
|
+
min-height: var(
|
|
87
|
+
--kui-list-header-title-min-height,
|
|
88
|
+
var(--kui-list-header-min-height, 2.75rem)
|
|
89
|
+
);
|
|
90
|
+
padding-block: var(--kui-list-header-title-padding-block, 0px);
|
|
91
|
+
padding-inline: var(--kui-list-header-title-padding-inline, 0px);
|
|
84
92
|
align-items: center;
|
|
85
93
|
flex: 1 1 auto;
|
|
86
94
|
gap: var(--kui-layout-item-gap, 0.5rem);
|
|
@@ -10,34 +10,50 @@
|
|
|
10
10
|
--kui-list-item-selected-background: var(--kui-color-brand-fill-normal);
|
|
11
11
|
display: grid;
|
|
12
12
|
width: calc(100% - (2 * var(--kui-layout-inline-margin, 0.5rem)));
|
|
13
|
-
min-height: 2.75rem;
|
|
13
|
+
min-height: var(--kui-list-item-min-height, 2.75rem);
|
|
14
14
|
overflow: hidden;
|
|
15
15
|
margin-inline: var(--kui-layout-inline-margin, 0.5rem);
|
|
16
|
-
padding: var(
|
|
16
|
+
padding-block: var(
|
|
17
|
+
--kui-list-item-padding-block,
|
|
18
|
+
var(--kui-layout-item-padding, 0.5rem)
|
|
19
|
+
);
|
|
20
|
+
padding-inline: var(
|
|
21
|
+
--kui-list-item-padding-inline,
|
|
22
|
+
var(--kui-layout-item-padding, 0.5rem)
|
|
23
|
+
);
|
|
17
24
|
box-sizing: border-box;
|
|
18
|
-
border:
|
|
19
|
-
|
|
25
|
+
border: var(--kui-list-item-border-width, 1px) solid
|
|
26
|
+
var(--kui-list-item-border);
|
|
27
|
+
border-radius: var(
|
|
28
|
+
--kui-list-item-radius,
|
|
29
|
+
var(--kui-layout-rounded-radius, calc(1px + 0.6875rem))
|
|
30
|
+
);
|
|
20
31
|
color: var(--kui-list-item-color);
|
|
21
32
|
background: var(--kui-list-item-background);
|
|
22
33
|
cursor: pointer;
|
|
23
|
-
grid-template-columns: minmax(0, 1fr) auto;
|
|
24
|
-
align-items: center;
|
|
25
|
-
column-gap: var(--kui-layout-item-gap, 0.5rem);
|
|
34
|
+
grid-template-columns: var(--kui-list-item-columns, minmax(0, 1fr) auto);
|
|
35
|
+
align-items: var(--kui-list-item-align-items, center);
|
|
36
|
+
column-gap: var(--kui-list-item-gap, var(--kui-layout-item-gap, 0.5rem));
|
|
26
37
|
font: inherit;
|
|
27
38
|
text-align: start;
|
|
28
39
|
}
|
|
29
40
|
|
|
30
41
|
.kui-list-item[data-density="compact"] {
|
|
31
|
-
min-height: 2.25rem;
|
|
32
|
-
padding-block: 0.25rem;
|
|
42
|
+
min-height: var(--kui-list-item-min-height, 2.25rem);
|
|
43
|
+
padding-block: var(--kui-list-item-padding-block, 0.25rem);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.kui-list-item[data-density="spacious"] {
|
|
47
|
+
min-height: var(--kui-list-item-min-height, 3.25rem);
|
|
48
|
+
padding-block: var(--kui-list-item-padding-block, 0.75rem);
|
|
33
49
|
}
|
|
34
50
|
|
|
35
51
|
.kui-list-item[data-has-description="true"] {
|
|
36
|
-
min-height: 3.25rem;
|
|
52
|
+
min-height: var(--kui-list-item-min-height, 3.25rem);
|
|
37
53
|
}
|
|
38
54
|
|
|
39
55
|
.kui-list-item[data-density="compact"][data-has-description="true"] {
|
|
40
|
-
min-height: 2.75rem;
|
|
56
|
+
min-height: var(--kui-list-item-min-height, 2.75rem);
|
|
41
57
|
}
|
|
42
58
|
|
|
43
59
|
.kui-list-item[data-divider="before"],
|
|
@@ -55,7 +71,10 @@
|
|
|
55
71
|
}
|
|
56
72
|
|
|
57
73
|
.kui-list-item[data-has-icon="true"] {
|
|
58
|
-
grid-template-columns:
|
|
74
|
+
grid-template-columns: var(
|
|
75
|
+
--kui-list-item-columns,
|
|
76
|
+
var(--kui-list-item-icon-size, 1.125rem) minmax(0, 1fr) auto
|
|
77
|
+
);
|
|
59
78
|
}
|
|
60
79
|
|
|
61
80
|
.kui-list-item[data-has-icon="true"] .kui-list-item__icon {
|
|
@@ -112,22 +131,24 @@
|
|
|
112
131
|
|
|
113
132
|
.kui-list-item__icon {
|
|
114
133
|
display: grid;
|
|
115
|
-
width: 1.125rem;
|
|
116
|
-
height: 1.125rem;
|
|
117
|
-
color: currentColor;
|
|
134
|
+
width: var(--kui-list-item-icon-size, 1.125rem);
|
|
135
|
+
height: var(--kui-list-item-icon-size, 1.125rem);
|
|
136
|
+
color: var(--kui-list-item-icon-color, currentColor);
|
|
118
137
|
place-items: center;
|
|
119
138
|
}
|
|
120
139
|
|
|
121
140
|
.kui-list-item__icon svg {
|
|
122
141
|
display: block;
|
|
123
|
-
width: 1.125rem;
|
|
124
|
-
height: 1.125rem;
|
|
142
|
+
width: var(--kui-list-item-icon-size, 1.125rem);
|
|
143
|
+
height: var(--kui-list-item-icon-size, 1.125rem);
|
|
125
144
|
}
|
|
126
145
|
|
|
127
146
|
.kui-list-item__label {
|
|
128
147
|
display: grid;
|
|
129
148
|
min-width: 0;
|
|
149
|
+
max-width: var(--kui-list-item-label-max-width, none);
|
|
130
150
|
overflow: hidden;
|
|
151
|
+
font-weight: var(--kui-list-item-label-weight, inherit);
|
|
131
152
|
white-space: nowrap;
|
|
132
153
|
}
|
|
133
154
|
|
|
@@ -175,17 +196,38 @@
|
|
|
175
196
|
|
|
176
197
|
.kui-list-item[data-multiline="true"] .kui-list-item__icon {
|
|
177
198
|
align-self: start;
|
|
178
|
-
margin-block-start: calc(
|
|
199
|
+
margin-block-start: calc(
|
|
200
|
+
(1lh - var(--kui-list-item-icon-size, 1.125rem)) / 2
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.kui-list-item[data-multiline="true"][data-icon-align="center"]
|
|
205
|
+
.kui-list-item__icon {
|
|
206
|
+
align-self: center;
|
|
207
|
+
margin-block-start: 0;
|
|
179
208
|
}
|
|
180
209
|
|
|
181
210
|
.kui-list-item__trailing {
|
|
182
211
|
display: inline-flex;
|
|
183
212
|
min-width: 0;
|
|
213
|
+
color: var(--kui-list-item-trailing-color, inherit);
|
|
184
214
|
align-items: center;
|
|
185
215
|
justify-content: flex-end;
|
|
186
216
|
gap: var(--kui-layout-item-gap, 0.5rem);
|
|
187
217
|
}
|
|
188
218
|
|
|
219
|
+
.kui-list-item[data-state="drag-target"] {
|
|
220
|
+
outline: var(
|
|
221
|
+
--kui-list-item-drag-target-outline,
|
|
222
|
+
2px solid var(--kui-color-brand-border-normal)
|
|
223
|
+
);
|
|
224
|
+
outline-offset: var(--kui-list-item-drag-target-outline-offset, -2px);
|
|
225
|
+
background: var(
|
|
226
|
+
--kui-list-item-drag-target-background,
|
|
227
|
+
var(--kui-color-brand-fill-quiet)
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
|
|
189
231
|
.kui-list-item__status {
|
|
190
232
|
color: var(--kui-color-neutral-on-quiet);
|
|
191
233
|
font-size: var(--kui-font-xs);
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
display: flex;
|
|
15
15
|
min-width: 0;
|
|
16
16
|
min-height: 0;
|
|
17
|
+
background: var(--kui-resizable-region-background, transparent);
|
|
17
18
|
}
|
|
18
19
|
/* As a split SplitView's list, the region's track grows by the unsafe
|
|
19
20
|
inline-start inset the SplitView provides, while its committed size stays
|
|
@@ -164,7 +165,7 @@
|
|
|
164
165
|
.kui-resizable-region[data-presentation="overlay"] {
|
|
165
166
|
position: absolute;
|
|
166
167
|
z-index: var(--kui-resizable-region-overlay-z, 41);
|
|
167
|
-
background: var(--kui-color-surface);
|
|
168
|
+
background: var(--kui-resizable-region-background, var(--kui-color-surface));
|
|
168
169
|
box-shadow: var(--kui-shadow-l);
|
|
169
170
|
}
|
|
170
171
|
/* Each overlay maximum caps only the resizable axis: a side overlay spans its
|
|
@@ -353,6 +354,19 @@
|
|
|
353
354
|
)
|
|
354
355
|
);
|
|
355
356
|
}
|
|
357
|
+
.kui-resizable-region__restore[data-placement="inline"] {
|
|
358
|
+
position: static;
|
|
359
|
+
}
|
|
360
|
+
.kui-resizable-region__restore[data-position^="top"][data-placement="corner"] {
|
|
361
|
+
inset-block-end: auto;
|
|
362
|
+
inset-block-start: calc(
|
|
363
|
+
var(--_kui-resizable-region-restore-inset) +
|
|
364
|
+
var(
|
|
365
|
+
--kui-edge-inset-block-start,
|
|
366
|
+
var(--kui-safe-area-block-start, env(safe-area-inset-top, 0px))
|
|
367
|
+
)
|
|
368
|
+
);
|
|
369
|
+
}
|
|
356
370
|
.kui-resizable-region__restore[data-position="bottom-start"] {
|
|
357
371
|
inset-inline-start: calc(
|
|
358
372
|
var(--_kui-resizable-region-restore-inset) +
|
|
@@ -362,6 +376,24 @@
|
|
|
362
376
|
)
|
|
363
377
|
);
|
|
364
378
|
}
|
|
379
|
+
.kui-resizable-region__restore[data-position="top-start"] {
|
|
380
|
+
inset-inline-start: calc(
|
|
381
|
+
var(--_kui-resizable-region-restore-inset) +
|
|
382
|
+
var(
|
|
383
|
+
--kui-edge-inset-inline-start,
|
|
384
|
+
var(--kui-safe-area-inline-start, env(safe-area-inset-left, 0px))
|
|
385
|
+
)
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
.kui-resizable-region__restore[data-position="top-end"] {
|
|
389
|
+
inset-inline-end: calc(
|
|
390
|
+
var(--_kui-resizable-region-restore-inset) +
|
|
391
|
+
var(
|
|
392
|
+
--kui-edge-inset-inline-end,
|
|
393
|
+
var(--kui-safe-area-inline-end, env(safe-area-inset-right, 0px))
|
|
394
|
+
)
|
|
395
|
+
);
|
|
396
|
+
}
|
|
365
397
|
.kui-resizable-region__restore[data-position="bottom-end"] {
|
|
366
398
|
inset-inline-end: calc(
|
|
367
399
|
var(--_kui-resizable-region-restore-inset) +
|
package/dist/styles/select.css
CHANGED
|
@@ -191,6 +191,17 @@
|
|
|
191
191
|
display: inline-flex;
|
|
192
192
|
min-width: 0;
|
|
193
193
|
align-items: center;
|
|
194
|
+
overflow: hidden;
|
|
195
|
+
color: var(--kui-select-selected-color, inherit);
|
|
196
|
+
font-size: var(--kui-select-selected-font-size, inherit);
|
|
197
|
+
font-weight: var(--kui-select-selected-font-weight, inherit);
|
|
198
|
+
}
|
|
199
|
+
.kui-select__custom-selected-content {
|
|
200
|
+
display: block;
|
|
201
|
+
min-width: 0;
|
|
202
|
+
overflow: hidden;
|
|
203
|
+
text-overflow: ellipsis;
|
|
204
|
+
white-space: nowrap;
|
|
194
205
|
}
|
|
195
206
|
.kui-select--custom-selected::part(start) {
|
|
196
207
|
min-width: 0;
|
|
@@ -291,3 +302,18 @@
|
|
|
291
302
|
height: 100%;
|
|
292
303
|
fill: currentColor;
|
|
293
304
|
}
|
|
305
|
+
|
|
306
|
+
/* Explicit width policy applies to both the live control and its loading
|
|
307
|
+
placeholder; the presentation keeps its existing width when omitted. */
|
|
308
|
+
.kui-select[data-trigger-width="fill"] {
|
|
309
|
+
width: 100%;
|
|
310
|
+
max-width: var(--kui-select-trigger-max-width, 100%);
|
|
311
|
+
}
|
|
312
|
+
.kui-select[data-trigger-width="fit-content"] {
|
|
313
|
+
width: fit-content;
|
|
314
|
+
max-width: var(--kui-select-trigger-max-width, 100%);
|
|
315
|
+
}
|
|
316
|
+
.kui-select[data-trigger-width="max-content"] {
|
|
317
|
+
width: max-content;
|
|
318
|
+
max-width: var(--kui-select-trigger-max-width, 100%);
|
|
319
|
+
}
|