@ketvietlab/design-system 0.1.16 → 0.1.17
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/README.md +29 -0
- package/dist/catalogue/catalogue.css +8 -0
- package/dist/catalogue/index.js +1 -1
- package/dist/catalogue/inventory-policy.json +21 -0
- package/dist/catalogue/inventory.generated.js +1 -1
- package/dist/catalogue/inventory.generated.js.map +1 -1
- package/dist/catalogue/inventory.generated.json +646 -84
- package/dist/catalogue/registry.d.ts.map +1 -1
- package/dist/catalogue/registry.js +6 -0
- package/dist/catalogue/registry.js.map +1 -1
- package/dist/catalogue/specimens.d.ts.map +1 -1
- package/dist/catalogue/specimens.js +113 -8
- package/dist/catalogue/specimens.js.map +1 -1
- package/dist/contract/index.d.ts.map +1 -1
- package/dist/contract/index.js +6 -0
- package/dist/contract/index.js.map +1 -1
- package/dist/data-display/bar-chart/index.d.ts +61 -0
- package/dist/data-display/bar-chart/index.d.ts.map +1 -0
- package/dist/data-display/bar-chart/index.js +64 -0
- package/dist/data-display/bar-chart/index.js.map +1 -0
- package/dist/data-display/bar-chart/styles.css +191 -0
- package/dist/data-display/matrix/index.d.ts +36 -0
- package/dist/data-display/matrix/index.d.ts.map +1 -0
- package/dist/data-display/matrix/index.js +28 -0
- package/dist/data-display/matrix/index.js.map +1 -0
- package/dist/data-display/matrix/styles.css +148 -0
- package/dist/data-operations/timeframe-filter/index.d.ts +34 -0
- package/dist/data-operations/timeframe-filter/index.d.ts.map +1 -0
- package/dist/data-operations/timeframe-filter/index.js +30 -0
- package/dist/data-operations/timeframe-filter/index.js.map +1 -0
- package/dist/data-operations/timeframe-filter/styles.css +109 -0
- package/dist/foundations/tokens.css +10 -0
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/interactions/menu/index.d.ts +17 -2
- package/dist/interactions/menu/index.d.ts.map +1 -1
- package/dist/interactions/menu/index.js +21 -5
- package/dist/interactions/menu/index.js.map +1 -1
- package/dist/interactions/menu/styles.css +36 -0
- package/dist/layouts/app-navigation/styles.css +8 -0
- package/dist/layouts/layout/index.d.ts +43 -3
- package/dist/layouts/layout/index.d.ts.map +1 -1
- package/dist/layouts/layout/index.js +28 -4
- package/dist/layouts/layout/index.js.map +1 -1
- package/dist/layouts/layout/styles.css +182 -4
- package/dist/layouts/page-identity/index.d.ts +19 -0
- package/dist/layouts/page-identity/index.d.ts.map +1 -0
- package/dist/layouts/page-identity/index.js +6 -0
- package/dist/layouts/page-identity/index.js.map +1 -0
- package/dist/layouts/shell/index.d.ts +7 -11
- package/dist/layouts/shell/index.d.ts.map +1 -1
- package/dist/layouts/shell/index.js +12 -2
- package/dist/layouts/shell/index.js.map +1 -1
- package/dist/layouts/shell/styles.css +16 -31
- package/dist/patterns/data-table/index.d.ts.map +1 -1
- package/dist/patterns/data-table/index.js +1 -1
- package/dist/patterns/data-table/index.js.map +1 -1
- package/dist/patterns/data-table/styles.css +124 -43
- package/dist/patterns/list-chrome/index.d.ts +2 -2
- package/dist/patterns/list-chrome/index.d.ts.map +1 -1
- package/dist/patterns/list-chrome/index.js +4 -3
- package/dist/patterns/list-chrome/index.js.map +1 -1
- package/dist/patterns/list-chrome/styles.css +122 -40
- package/dist/patterns/list-page/styles.css +5 -1
- package/dist/patterns/modal-sheet/styles.css +1 -1
- package/dist/patterns/page-shell/index.d.ts +2 -23
- package/dist/patterns/page-shell/index.d.ts.map +1 -1
- package/dist/patterns/page-shell/index.js +1 -10
- package/dist/patterns/page-shell/index.js.map +1 -1
- package/dist/patterns/page-shell/styles.css +131 -0
- package/dist/patterns/patterns.css +1 -0
- package/dist/primitives/feedback/index.d.ts.map +1 -1
- package/dist/primitives/feedback/index.js +1 -1
- package/dist/primitives/feedback/index.js.map +1 -1
- package/dist/primitives/feedback/styles.css +13 -11
- package/dist/primitives/navigation/index.d.ts +11 -5
- package/dist/primitives/navigation/index.d.ts.map +1 -1
- package/dist/primitives/navigation/index.js +17 -2
- package/dist/primitives/navigation/index.js.map +1 -1
- package/dist/primitives/navigation/styles.css +101 -13
- package/dist/primitives/status/index.d.ts.map +1 -1
- package/dist/primitives/status/index.js +2 -2
- package/dist/primitives/status/index.js.map +1 -1
- package/dist/primitives/status/styles.css +8 -8
- package/dist/record/display/index.js +1 -1
- package/dist/record/display/index.js.map +1 -1
- package/dist/record/display/styles.css +2 -2
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +99 -4
- package/dist/runtime/index.js.map +1 -1
- package/dist/styles.css +2 -50
- package/package.json +2 -2
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
|
|
2
|
-
export declare const HOOKS: readonly ['breadcrumbs', 'breadcrumb', 'nav-list', 'nav-item', 'nav-item-leading', 'nav-item-label', 'nav-item-count', 'tabs', 'tab', 'tab-count'];
|
|
2
|
+
export declare const HOOKS: readonly ['breadcrumbs', 'breadcrumb', 'breadcrumb-overflow', 'breadcrumb-overflow-trigger', 'breadcrumb-overflow-list', 'nav-list', 'nav-item', 'nav-item-leading', 'nav-item-label', 'nav-item-count', 'tabs', 'tab', 'tab-count'];
|
|
3
3
|
export type BreadcrumbItem = {
|
|
4
4
|
id?: string;
|
|
5
5
|
label: string;
|
|
6
6
|
href?: string;
|
|
7
7
|
};
|
|
8
|
-
export
|
|
8
|
+
export type BreadcrumbsProps = {
|
|
9
9
|
label: string;
|
|
10
10
|
items: readonly BreadcrumbItem[];
|
|
11
|
-
|
|
11
|
+
/** Keep the first and current locations visible; put intermediate ancestors in a native disclosure. */
|
|
12
|
+
maxItems?: number;
|
|
13
|
+
/** Accessible label for the collapsed ancestor trigger, supplied in the application's locale. */
|
|
14
|
+
overflowLabel?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const Breadcrumbs: (props: BreadcrumbsProps) => TemplateResult;
|
|
12
17
|
export type NavItemProps = {
|
|
13
18
|
label: string;
|
|
14
19
|
href: string;
|
|
15
20
|
leading?: JSXChild;
|
|
16
|
-
count?: number;
|
|
21
|
+
count?: number | string;
|
|
17
22
|
active?: boolean;
|
|
18
23
|
};
|
|
19
24
|
export declare const NavItem: (props: NavItemProps) => TemplateResult;
|
|
@@ -25,7 +30,8 @@ export type TabItem = {
|
|
|
25
30
|
id: string;
|
|
26
31
|
label: string;
|
|
27
32
|
href: string;
|
|
28
|
-
|
|
33
|
+
/** A number, or a bounded label such as "10.000+" when the exact total is not counted. */
|
|
34
|
+
count?: number | string;
|
|
29
35
|
active?: boolean;
|
|
30
36
|
};
|
|
31
37
|
export declare const Tabs: (props: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/primitives/navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,eAAO,MAAM,KAAK,YAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,WAAW,CACH,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/primitives/navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,eAAO,MAAM,KAAK,YAChB,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,WAAW,CACH,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAQD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;IAChC,uGAAuG;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,WAAW,UAAW,gBAAgB,KAAG,cA0DrD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,YAAY,KAAG,cAe7C,CAAA;AAED,eAAO,MAAM,OAAO,UAAW;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,KAAG,cAUlF,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,IAAI,UAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;IACzB,SAAS,CAAC,EAAE,QAAQ,CAAA;CACrB,KAAG,cAmBH,CAAA"}
|
|
@@ -3,6 +3,9 @@ import { each } from '@ketvietlab/ketjs-view';
|
|
|
3
3
|
export const HOOKS = [
|
|
4
4
|
'breadcrumbs',
|
|
5
5
|
'breadcrumb',
|
|
6
|
+
'breadcrumb-overflow',
|
|
7
|
+
'breadcrumb-overflow-trigger',
|
|
8
|
+
'breadcrumb-overflow-list',
|
|
6
9
|
'nav-list',
|
|
7
10
|
'nav-item',
|
|
8
11
|
'nav-item-leading',
|
|
@@ -12,8 +15,20 @@ export const HOOKS = [
|
|
|
12
15
|
'tab',
|
|
13
16
|
'tab-count',
|
|
14
17
|
];
|
|
15
|
-
export const Breadcrumbs = (props) =>
|
|
18
|
+
export const Breadcrumbs = (props) => {
|
|
19
|
+
const limit = Math.max(3, Math.floor(props.maxItems ?? props.items.length));
|
|
20
|
+
const overflow = props.items.length > limit;
|
|
21
|
+
const omitted = overflow ? props.items.slice(1, props.items.length - (limit - 2)) : [];
|
|
22
|
+
const visible = overflow
|
|
23
|
+
? [
|
|
24
|
+
props.items[0],
|
|
25
|
+
{ id: '__breadcrumb-overflow', kind: 'overflow', items: omitted },
|
|
26
|
+
...props.items.slice(props.items.length - (limit - 2)),
|
|
27
|
+
]
|
|
28
|
+
: props.items;
|
|
29
|
+
return (_jsx("nav", { "data-ui": "breadcrumbs", "data-pattern": "breadcrumbs", "aria-label": props.label, children: _jsx("ol", { children: each(visible, (item, index) => item.id ?? `${index}:${'label' in item ? item.label : 'overflow'}`, (item, index) => 'kind' in item ? (_jsx("li", { "data-ui": "breadcrumb-overflow", children: _jsxs("details", { children: [_jsx("summary", { "data-ui": "breadcrumb-overflow-trigger", "aria-label": props.overflowLabel ?? props.label, children: "\u2026" }), _jsx("ol", { "data-ui": "breadcrumb-overflow-list", children: each(item.items, (ancestor, ancestorIndex) => ancestor.id ?? `${ancestorIndex}:${ancestor.label}`, (ancestor) => (_jsx("li", { children: ancestor.href ? (_jsx("a", { href: ancestor.href, children: ancestor.label })) : (_jsx("span", { children: ancestor.label })) }))) })] }) })) : (_jsx("li", { "data-ui": "breadcrumb", children: item.href !== undefined && index < visible.length - 1 ? (_jsx("a", { href: item.href, children: item.label })) : (_jsx("span", { "aria-current": index === visible.length - 1 ? 'page' : null, children: item.label })) }))) }) }));
|
|
30
|
+
};
|
|
16
31
|
export const NavItem = (props) => (_jsxs("a", { "data-ui": "nav-item", "data-active": props.active === true ? 'true' : null, href: props.href, "aria-current": props.active === true ? 'page' : null, children: [props.leading !== undefined && (_jsx("span", { "data-ui": "nav-item-leading", "aria-hidden": "true", children: props.leading })), _jsx("span", { "data-ui": "nav-item-label", children: props.label }), props.count !== undefined && _jsx("span", { "data-ui": "nav-item-count", children: String(props.count) })] }));
|
|
17
32
|
export const NavList = (props) => (_jsx("nav", { "data-ui": "nav-list", "aria-label": props.label, children: each(props.items, (item) => `${item.href}:${item.label}`, (item) => (_jsx(NavItem, { ...item }))) }));
|
|
18
|
-
export const Tabs = (props) => (_jsxs("nav", { "data-ui": "tabs", "aria-label": props.label, children: [each(props.items, (item) => item.id, (item) => (_jsxs("a", { "data-ui": "tab", "data-active": item.active === true ? 'true' : null, href: item.href, "aria-current": item.active === true ? 'page' : null, children: [item.label, item.count !== undefined && _jsx("span", { "data-ui": "tab-count", children: String(item.count) })] }))), props.extension] }));
|
|
33
|
+
export const Tabs = (props) => (_jsxs("nav", { "data-ui": "tabs", "data-pattern": "tabs", "aria-label": props.label, children: [each(props.items, (item) => item.id, (item) => (_jsxs("a", { "data-ui": "tab", "data-active": item.active === true ? 'true' : null, href: item.href, "aria-current": item.active === true ? 'page' : null, children: [item.label, item.count !== undefined && _jsx("span", { "data-ui": "tab-count", children: String(item.count) })] }))), props.extension] }));
|
|
19
34
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/primitives/navigation/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAG7C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,aAAa;IACb,YAAY;IACZ,UAAU;IACV,UAAU;IACV,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,MAAM;IACN,KAAK;IACL,WAAW;CACH,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/primitives/navigation/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
@layer ket.app {
|
|
2
|
-
:where([data-kv-design-system]) [data-ui="breadcrumbs"] {
|
|
2
|
+
:where([data-kv-design-system]) [data-ui="breadcrumbs"][data-pattern="breadcrumbs"] {
|
|
3
3
|
min-width: 0;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
:where([data-kv-design-system]) [data-ui="breadcrumbs"] ol {
|
|
6
|
+
:where([data-kv-design-system]) [data-ui="breadcrumbs"][data-pattern="breadcrumbs"] ol {
|
|
7
7
|
display: flex;
|
|
8
8
|
min-width: 0;
|
|
9
9
|
align-items: center;
|
|
@@ -15,37 +15,114 @@
|
|
|
15
15
|
list-style: none;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
:where([data-kv-design-system])
|
|
18
|
+
:where([data-kv-design-system])
|
|
19
|
+
[data-ui="breadcrumbs"][data-pattern="breadcrumbs"]
|
|
20
|
+
:is([data-ui="breadcrumb"], [data-ui="breadcrumb-overflow"]) {
|
|
19
21
|
display: inline-flex;
|
|
20
22
|
min-width: 0;
|
|
21
23
|
align-items: center;
|
|
22
24
|
gap: var(--kv-space-1-5);
|
|
25
|
+
color: inherit;
|
|
23
26
|
}
|
|
24
27
|
|
|
25
|
-
:where([data-kv-design-system])
|
|
28
|
+
:where([data-kv-design-system])
|
|
29
|
+
[data-ui="breadcrumbs"][data-pattern="breadcrumbs"]
|
|
30
|
+
:is([data-ui="breadcrumb"], [data-ui="breadcrumb-overflow"])
|
|
31
|
+
+ :is([data-ui="breadcrumb"], [data-ui="breadcrumb-overflow"])::before {
|
|
26
32
|
flex: none;
|
|
27
33
|
color: var(--kv-border-strong);
|
|
28
34
|
content: "/";
|
|
29
35
|
}
|
|
30
36
|
|
|
31
|
-
:where([data-kv-design-system]) [data-ui="breadcrumb"]
|
|
37
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow"] {
|
|
38
|
+
position: relative;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow"] details {
|
|
42
|
+
position: relative;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow-trigger"] {
|
|
46
|
+
display: grid;
|
|
47
|
+
min-width: 1.5rem;
|
|
48
|
+
min-height: 1.5rem;
|
|
49
|
+
place-items: center;
|
|
50
|
+
border-radius: var(--kv-radius-sm);
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
list-style: none;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow-trigger"]::-webkit-details-marker {
|
|
56
|
+
display: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow-trigger"]:hover {
|
|
60
|
+
background: var(--kv-interactive-hover);
|
|
61
|
+
color: var(--kv-text-main);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow-list"] {
|
|
65
|
+
position: absolute;
|
|
66
|
+
z-index: var(--kv-layer-menu);
|
|
67
|
+
top: calc(100% + var(--kv-space-1));
|
|
68
|
+
left: 0;
|
|
69
|
+
display: grid;
|
|
70
|
+
width: max-content;
|
|
71
|
+
max-width: min(20rem, calc(100vw - var(--kv-space-8)));
|
|
72
|
+
gap: var(--kv-space-0-5);
|
|
73
|
+
padding: var(--kv-space-1);
|
|
74
|
+
border: 1px solid var(--kv-border-default);
|
|
75
|
+
border-radius: var(--kv-radius-md);
|
|
76
|
+
background: var(--kv-panel-bg);
|
|
77
|
+
box-shadow: var(--kv-shadow-popover);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow-list"] li {
|
|
81
|
+
display: contents;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow-list"] :is(a, span) {
|
|
85
|
+
display: block;
|
|
86
|
+
padding: var(--kv-space-2) var(--kv-space-3);
|
|
87
|
+
border-radius: var(--kv-radius-sm);
|
|
88
|
+
color: var(--kv-text-main);
|
|
89
|
+
text-decoration: none;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
:where([data-kv-design-system]) [data-ui="breadcrumb-overflow-list"] a:hover {
|
|
93
|
+
background: var(--kv-interactive-hover);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
:where([data-kv-design-system])
|
|
97
|
+
[data-ui="breadcrumbs"][data-pattern="breadcrumbs"]
|
|
98
|
+
[data-ui="breadcrumb"]
|
|
99
|
+
:is(a, span) {
|
|
32
100
|
overflow: hidden;
|
|
33
101
|
color: inherit;
|
|
34
102
|
text-overflow: ellipsis;
|
|
35
103
|
white-space: nowrap;
|
|
36
104
|
}
|
|
37
105
|
|
|
38
|
-
:where([data-kv-design-system])
|
|
106
|
+
:where([data-kv-design-system])
|
|
107
|
+
[data-ui="breadcrumbs"][data-pattern="breadcrumbs"]
|
|
108
|
+
[data-ui="breadcrumb"]
|
|
109
|
+
a {
|
|
39
110
|
text-decoration: none;
|
|
40
111
|
}
|
|
41
112
|
|
|
42
|
-
:where([data-kv-design-system])
|
|
113
|
+
:where([data-kv-design-system])
|
|
114
|
+
[data-ui="breadcrumbs"][data-pattern="breadcrumbs"]
|
|
115
|
+
[data-ui="breadcrumb"]
|
|
116
|
+
a:hover {
|
|
43
117
|
color: var(--kv-text-main);
|
|
44
118
|
text-decoration: underline;
|
|
45
119
|
text-underline-offset: 0.1875rem;
|
|
46
120
|
}
|
|
47
121
|
|
|
48
|
-
:where([data-kv-design-system])
|
|
122
|
+
:where([data-kv-design-system])
|
|
123
|
+
[data-ui="breadcrumbs"][data-pattern="breadcrumbs"]
|
|
124
|
+
[data-ui="breadcrumb"]
|
|
125
|
+
[aria-current="page"] {
|
|
49
126
|
color: var(--kv-text-main);
|
|
50
127
|
font-weight: var(--kv-weight-medium);
|
|
51
128
|
}
|
|
@@ -107,7 +184,7 @@
|
|
|
107
184
|
opacity: 0.72;
|
|
108
185
|
}
|
|
109
186
|
|
|
110
|
-
:where([data-kv-design-system]) [data-ui="tabs"] {
|
|
187
|
+
:where([data-kv-design-system]) [data-ui="tabs"][data-pattern="tabs"] {
|
|
111
188
|
display: flex;
|
|
112
189
|
min-height: var(--kv-table-header-height);
|
|
113
190
|
align-items: center;
|
|
@@ -116,28 +193,33 @@
|
|
|
116
193
|
overflow-x: auto;
|
|
117
194
|
}
|
|
118
195
|
|
|
119
|
-
:where([data-kv-design-system]) [data-ui="tab"] {
|
|
196
|
+
:where([data-kv-design-system]) [data-ui="tabs"][data-pattern="tabs"] [data-ui="tab"] {
|
|
120
197
|
position: relative;
|
|
121
198
|
display: inline-flex;
|
|
122
199
|
height: var(--kv-table-header-height);
|
|
123
200
|
flex: none;
|
|
124
201
|
align-items: center;
|
|
125
202
|
gap: var(--kv-space-1-5);
|
|
203
|
+
padding: 0;
|
|
204
|
+
border: 0;
|
|
205
|
+
background: transparent;
|
|
126
206
|
color: var(--kv-text-muted);
|
|
127
207
|
font-size: var(--kv-text-sm);
|
|
128
208
|
font-weight: var(--kv-weight-medium);
|
|
129
209
|
text-decoration: none;
|
|
130
210
|
}
|
|
131
211
|
|
|
132
|
-
:where([data-kv-design-system]) [data-ui="tab"]:hover {
|
|
212
|
+
:where([data-kv-design-system]) [data-ui="tabs"][data-pattern="tabs"] [data-ui="tab"]:hover {
|
|
133
213
|
color: var(--kv-text-secondary);
|
|
134
214
|
}
|
|
135
215
|
|
|
136
|
-
:where([data-kv-design-system]) [data-ui="tab"][data-active="true"] {
|
|
216
|
+
:where([data-kv-design-system]) [data-ui="tabs"][data-pattern="tabs"] [data-ui="tab"][data-active="true"] {
|
|
137
217
|
color: var(--kv-tab-active-text);
|
|
138
218
|
}
|
|
139
219
|
|
|
140
|
-
:where([data-kv-design-system])
|
|
220
|
+
:where([data-kv-design-system])
|
|
221
|
+
[data-ui="tabs"][data-pattern="tabs"]
|
|
222
|
+
[data-ui="tab"][data-active="true"]::after {
|
|
141
223
|
position: absolute;
|
|
142
224
|
right: 0;
|
|
143
225
|
bottom: -1px;
|
|
@@ -147,4 +229,10 @@
|
|
|
147
229
|
background: var(--kv-accent);
|
|
148
230
|
content: "";
|
|
149
231
|
}
|
|
232
|
+
|
|
233
|
+
:where([data-kv-design-system])
|
|
234
|
+
[data-ui="breadcrumbs"][data-pattern="breadcrumbs"]
|
|
235
|
+
[data-ui="breadcrumb"]::after {
|
|
236
|
+
content: none;
|
|
237
|
+
}
|
|
150
238
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/primitives/status/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,eAAO,MAAM,KAAK,YAAI,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAA;AAE7F,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEzE,eAAO,MAAM,KAAK,UAAW;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/primitives/status/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,eAAO,MAAM,KAAK,YAAI,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAA;AAE7F,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEzE,eAAO,MAAM,KAAK,UAAW;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,cAS7E,CAAA;AAED,eAAO,MAAM,GAAG,UAAW;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B,KAAG,cAaH,CAAA;AAED,eAAO,MAAM,UAAU,UAAW;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,cAIpE,CAAA;AAED,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,MAMvC,CAAA;AAED,eAAO,MAAM,MAAM,UAAW;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;CAAE,KAAG,cAUtF,CAAA;AAED,eAAO,MAAM,IAAI,UAAW;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,KAAG,cAIxE,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
|
|
2
2
|
export const HOOKS = ['badge', 'tag', 'tag-remove', 'count-badge', 'avatar', 'code'];
|
|
3
|
-
export const Badge = (props) => (_jsx("span", { "data-ui": "badge", "data-tone": props.tone ?? 'neutral', "data-value": props.value ?? '', children: props.label }));
|
|
3
|
+
export const Badge = (props) => (_jsx("span", { "data-ui": "badge", "data-pattern": "badge", "data-tone": props.tone ?? 'neutral', "data-value": props.value ?? '', children: props.label }));
|
|
4
4
|
export const Tag = (props) => (_jsxs("span", { "data-ui": "tag", children: [props.label, !!props.removeHref && (_jsx("a", { "data-ui": "tag-remove", href: props.removeHref, "aria-label": props.removeLabel ?? `Remove ${props.label}`, children: "\u00D7" }))] }));
|
|
5
5
|
export const CountBadge = (props) => (_jsx("span", { "data-ui": "count-badge", role: "status", "aria-label": props.label, children: String(props.count) }));
|
|
6
6
|
export const initials = (name) => {
|
|
@@ -11,6 +11,6 @@ export const initials = (name) => {
|
|
|
11
11
|
const second = parts.length > 2 ? parts[parts.length - 2] : '';
|
|
12
12
|
return (second.slice(0, 1) + first.slice(0, 1)).toLocaleUpperCase('vi');
|
|
13
13
|
};
|
|
14
|
-
export const Avatar = (props) => (_jsx("span", { "data-ui": "avatar", "data-size": props.size ?? 'default', title: props.name, "aria-hidden": "true", children: initials(props.name) }));
|
|
14
|
+
export const Avatar = (props) => (_jsx("span", { "data-ui": "avatar", "data-pattern": "avatar", "data-size": props.size ?? 'default', title: props.name, "aria-hidden": "true", children: initials(props.name) }));
|
|
15
15
|
export const Code = (props) => (_jsx("code", { "data-ui": "code", "data-context": props.context ?? null, children: props.value }));
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/primitives/status/index.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAA;AAI7F,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAqD,EAAkB,EAAE,CAAC,CAC9F,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/primitives/status/index.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAA;AAI7F,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAqD,EAAkB,EAAE,CAAC,CAC9F,0BACU,OAAO,kBACF,OAAO,eACT,KAAK,CAAC,IAAI,IAAI,SAAS,gBACtB,KAAK,CAAC,KAAK,IAAI,EAAE,YAE5B,KAAK,CAAC,KAAK,GACP,CACR,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAInB,EAAkB,EAAE,CAAC,CACpB,2BAAc,KAAK,aAChB,KAAK,CAAC,KAAK,EACX,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CACrB,uBACU,YAAY,EACpB,IAAI,EAAE,KAAK,CAAC,UAAU,gBACV,KAAK,CAAC,WAAW,IAAI,UAAU,KAAK,CAAC,KAAK,EAAE,uBAGtD,CACL,IACI,CACR,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAuC,EAAkB,EAAE,CAAC,CACrF,0BAAc,aAAa,EAAC,IAAI,EAAC,QAAQ,gBAAa,KAAK,CAAC,KAAK,YAC9D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GACf,CACR,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACtD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,GAAG,CAAA;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAA;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;AACzE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAA6D,EAAkB,EAAE,CAAC,CACvG,0BACU,QAAQ,kBACH,QAAQ,eACV,KAAK,CAAC,IAAI,IAAI,SAAS,EAClC,KAAK,EAAE,KAAK,CAAC,IAAI,iBACL,MAAM,YAEjB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAChB,CACR,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAiD,EAAkB,EAAE,CAAC,CACzF,0BAAc,MAAM,kBAAe,KAAK,CAAC,OAAO,IAAI,IAAI,YACrD,KAAK,CAAC,KAAK,GACP,CACR,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@layer ket.app {
|
|
2
|
-
:where([data-kv-design-system]) [data-ui="badge"] {
|
|
2
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-pattern="badge"] {
|
|
3
3
|
display: inline-flex;
|
|
4
4
|
min-height: 1.4rem;
|
|
5
5
|
align-items: center;
|
|
@@ -16,22 +16,22 @@
|
|
|
16
16
|
overflow-wrap: anywhere;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
:where([data-kv-design-system]) [data-ui="badge"][data-tone="info"] {
|
|
19
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-pattern="badge"][data-tone="info"] {
|
|
20
20
|
background: var(--kv-color-info-soft);
|
|
21
21
|
color: var(--kv-color-info);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
:where([data-kv-design-system]) [data-ui="badge"][data-tone="positive"] {
|
|
24
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-pattern="badge"][data-tone="positive"] {
|
|
25
25
|
background: var(--kv-color-positive-soft);
|
|
26
26
|
color: var(--kv-color-positive);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
:where([data-kv-design-system]) [data-ui="badge"][data-tone="warning"] {
|
|
29
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-pattern="badge"][data-tone="warning"] {
|
|
30
30
|
background: var(--kv-color-warning-soft);
|
|
31
31
|
color: var(--kv-color-warning);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
:where([data-kv-design-system]) [data-ui="badge"][data-tone="danger"] {
|
|
34
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-pattern="badge"][data-tone="danger"] {
|
|
35
35
|
background: var(--kv-color-danger-soft);
|
|
36
36
|
color: var(--kv-color-danger);
|
|
37
37
|
}
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
font-weight: 800;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
:where([data-kv-design-system]) [data-ui="avatar"] {
|
|
81
|
+
:where([data-kv-design-system]) [data-ui="avatar"][data-pattern="avatar"] {
|
|
82
82
|
display: inline-grid;
|
|
83
83
|
width: 2rem;
|
|
84
84
|
height: 2rem;
|
|
@@ -91,12 +91,12 @@
|
|
|
91
91
|
font-weight: 800;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
:where([data-kv-design-system]) [data-ui="avatar"][data-size="small"] {
|
|
94
|
+
:where([data-kv-design-system]) [data-ui="avatar"][data-pattern="avatar"][data-size="small"] {
|
|
95
95
|
width: 1.5rem;
|
|
96
96
|
height: 1.5rem;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
:where([data-kv-design-system]) [data-ui="avatar"][data-size="large"] {
|
|
99
|
+
:where([data-kv-design-system]) [data-ui="avatar"][data-pattern="avatar"][data-size="large"] {
|
|
100
100
|
width: 3rem;
|
|
101
101
|
height: 3rem;
|
|
102
102
|
font-size: var(--kv-text-sm);
|
|
@@ -13,7 +13,7 @@ export const HOOKS = [
|
|
|
13
13
|
];
|
|
14
14
|
export const KeyValue = (props) => (_jsxs("div", { "data-ui": "key-value", children: [_jsx("dt", { "data-ui": "key-value-label", children: props.label }), _jsx("dd", { "data-ui": "key-value-value", children: props.value ?? props.emptyLabel ?? '—' })] }));
|
|
15
15
|
export const DescriptionList = (props) => (_jsx("dl", { "data-ui": "description-list", "aria-label": props.label, "data-columns": String(props.columns ?? 2), children: each(props.items, (item) => item.id, (item) => (_jsx(KeyValue, { ...item }))) }));
|
|
16
|
-
export const Person = (props) => (_jsxs("span", { "data-ui": "person", children: [_jsx(Avatar, { name: props.name, size: props.size }), _jsxs("span", { "data-ui": "person-body", children: [props.href ? _jsx("a", { href: props.href, children: props.name }) : _jsx("strong", { children: props.name }), props.detail !== undefined && _jsx("small", { children: props.detail })] })] }));
|
|
16
|
+
export const Person = (props) => (_jsxs("span", { "data-ui": "person", "data-pattern": "person", children: [_jsx(Avatar, { name: props.name, size: props.size }), _jsxs("span", { "data-ui": "person-body", children: [props.href ? _jsx("a", { href: props.href, children: props.name }) : _jsx("strong", { children: props.name }), props.detail !== undefined && _jsx("small", { children: props.detail })] })] }));
|
|
17
17
|
export const AvatarGroup = (props) => {
|
|
18
18
|
const visible = props.people.slice(0, props.max ?? 4);
|
|
19
19
|
const remaining = props.people.length - visible.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/record/display/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kCAAmC,CAAA;AAGjE,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,kBAAkB;IAClB,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,QAAQ;IACR,aAAa;IACb,cAAc;IACd,QAAQ;CACA,CAAA;AAGV,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAkB,EAAE,CAAC,CAChE,0BAAa,WAAW,aACtB,wBAAY,iBAAiB,YAAE,KAAK,CAAC,KAAK,GAAM,EAChD,wBAAY,iBAAiB,YAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,GAAM,IACvE,CACP,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAI/B,EAAkB,EAAE,CAAC,CACpB,wBAAY,kBAAkB,gBAAa,KAAK,CAAC,KAAK,kBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,YAC7F,IAAI,CACH,KAAK,CAAC,KAAK,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EACjB,CAAC,IAAI,EAAE,EAAE,CAAC,CACR,KAAC,QAAQ,OAAK,IAAI,GAAI,CACvB,CACF,GACE,CACN,CAAA;AAQD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAkB,EAAE,CAAC,CAC5D,2BAAc,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/record/display/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kCAAmC,CAAA;AAGjE,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,kBAAkB;IAClB,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,QAAQ;IACR,aAAa;IACb,cAAc;IACd,QAAQ;CACA,CAAA;AAGV,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAkB,EAAE,CAAC,CAChE,0BAAa,WAAW,aACtB,wBAAY,iBAAiB,YAAE,KAAK,CAAC,KAAK,GAAM,EAChD,wBAAY,iBAAiB,YAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,GAAM,IACvE,CACP,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAI/B,EAAkB,EAAE,CAAC,CACpB,wBAAY,kBAAkB,gBAAa,KAAK,CAAC,KAAK,kBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,YAC7F,IAAI,CACH,KAAK,CAAC,KAAK,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EACjB,CAAC,IAAI,EAAE,EAAE,CAAC,CACR,KAAC,QAAQ,OAAK,IAAI,GAAI,CACvB,CACF,GACE,CACN,CAAA;AAQD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAkB,EAAE,CAAC,CAC5D,2BAAc,QAAQ,kBAAc,QAAQ,aAC1C,KAAC,MAAM,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,EAC9C,2BAAc,aAAa,aACxB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAG,IAAI,EAAE,KAAK,CAAC,IAAI,YAAG,KAAK,CAAC,IAAI,GAAK,CAAC,CAAC,CAAC,2BAAS,KAAK,CAAC,IAAI,GAAU,EAClF,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,0BAAQ,KAAK,CAAC,MAAM,GAAS,IACvD,IACF,CACR,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAI3B,EAAkB,EAAE;IACnB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACrD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IACtD,OAAO,CACL,2BAAc,cAAc,EAAC,IAAI,EAAC,OAAO,gBAAa,KAAK,CAAC,KAAK,aAC9D,IAAI,CACH,OAAO,EACP,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EACrB,CAAC,MAAM,EAAE,EAAE,CAAC,CACV,KAAC,MAAM,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAI,CAC9B,CACF,EACA,SAAS,GAAG,CAAC,IAAI,CAChB,gBAAM,IAAI,EAAC,KAAK,gBAAa,GAAG,SAAS,cAAc,EAAE,KAAK,EAAE,GAAG,SAAS,cAAc,kBACtF,MAAM,CAAC,SAAS,CAAC,IACd,CACR,IACI,CACR,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAsD,EAAkB,EAAE,CAAC,CAChG,0BAAc,QAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,MAAM,YACxC,KAAC,KAAK,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,GAC1C,CACR,CAAA"}
|
|
@@ -31,13 +31,13 @@
|
|
|
31
31
|
overflow-wrap: anywhere;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
:where([data-kv-design-system]) [data-ui="person"] {
|
|
34
|
+
:where([data-kv-design-system]) [data-ui="person"][data-pattern="person"] {
|
|
35
35
|
display: inline-flex;
|
|
36
36
|
align-items: center;
|
|
37
37
|
gap: var(--kv-space-2);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
:where([data-kv-design-system]) [data-ui="person-body"] {
|
|
40
|
+
:where([data-kv-design-system]) [data-ui="person"][data-pattern="person"] [data-ui="person-body"] {
|
|
41
41
|
display: grid;
|
|
42
42
|
gap: 1px;
|
|
43
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/design-system/src/runtime/index.js"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,UAHhC,UAAU,KACR,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/design-system/src/runtime/index.js"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,UAHhC,UAAU,KACR,MAAM,IAwblB,CAAA"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -38,6 +38,21 @@ export const attachDesignSystemInteractions = (root = document) => {
|
|
|
38
38
|
;(first instanceof HTMLElement ? first : modal).focus()
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
const menus = /** @type {HTMLDetailsElement[]} */ (
|
|
42
|
+
[...root.querySelectorAll('[data-ui="menu"]')].filter((menu) => menu instanceof HTMLDetailsElement)
|
|
43
|
+
)
|
|
44
|
+
/** @param {HTMLDetailsElement} menu */
|
|
45
|
+
const syncMenu = (menu) => {
|
|
46
|
+
const trigger = menu.querySelector('[data-ui="menu-trigger"]')
|
|
47
|
+
if (trigger instanceof HTMLElement) trigger.setAttribute('aria-expanded', String(menu.open))
|
|
48
|
+
}
|
|
49
|
+
const menuCleanups = menus.map((menu) => {
|
|
50
|
+
const onToggle = () => syncMenu(menu)
|
|
51
|
+
menu.addEventListener('toggle', onToggle)
|
|
52
|
+
syncMenu(menu)
|
|
53
|
+
return () => menu.removeEventListener('toggle', onToggle)
|
|
54
|
+
})
|
|
55
|
+
|
|
41
56
|
const navigationMedia = window.matchMedia('(max-width: 48rem)')
|
|
42
57
|
const navigationRoot = document.documentElement
|
|
43
58
|
const priorNavigationOpen = navigationRoot.dataset.kvNavigationOpen
|
|
@@ -284,13 +299,33 @@ export const attachDesignSystemInteractions = (root = document) => {
|
|
|
284
299
|
return
|
|
285
300
|
}
|
|
286
301
|
}
|
|
302
|
+
const activeMenu = document.activeElement?.closest('[data-ui="menu"]')
|
|
303
|
+
if (activeMenu instanceof HTMLDetailsElement && !activeMenu.open) {
|
|
304
|
+
const trigger = activeMenu.querySelector('[data-ui="menu-trigger"]')
|
|
305
|
+
if (document.activeElement === trigger && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
|
|
306
|
+
activeMenu.open = true
|
|
307
|
+
const items = /** @type {HTMLElement[]} */ (
|
|
308
|
+
[
|
|
309
|
+
...activeMenu.querySelectorAll(
|
|
310
|
+
'[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"]',
|
|
311
|
+
),
|
|
312
|
+
].filter((item) => item instanceof HTMLElement && item.getAttribute('aria-disabled') !== 'true')
|
|
313
|
+
)
|
|
314
|
+
const item = event.key === 'ArrowUp' ? items.at(-1) : items[0]
|
|
315
|
+
if (item instanceof HTMLElement) item.focus()
|
|
316
|
+
event.preventDefault()
|
|
317
|
+
return
|
|
318
|
+
}
|
|
319
|
+
}
|
|
287
320
|
const openMenu = document.activeElement?.closest('[data-ui="menu"][open]')
|
|
288
321
|
if (openMenu instanceof HTMLDetailsElement) {
|
|
289
322
|
const trigger = openMenu.querySelector('[data-ui="menu-trigger"]')
|
|
290
323
|
const items = /** @type {HTMLElement[]} */ (
|
|
291
|
-
[
|
|
292
|
-
|
|
293
|
-
|
|
324
|
+
[
|
|
325
|
+
...openMenu.querySelectorAll(
|
|
326
|
+
'[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"]',
|
|
327
|
+
),
|
|
328
|
+
].filter((item) => item instanceof HTMLElement && item.getAttribute('aria-disabled') !== 'true')
|
|
294
329
|
)
|
|
295
330
|
const active = document.activeElement
|
|
296
331
|
const activeIndex = active instanceof HTMLElement ? items.indexOf(active) : -1
|
|
@@ -349,12 +384,70 @@ export const attachDesignSystemInteractions = (root = document) => {
|
|
|
349
384
|
if (first instanceof HTMLElement) first.focus()
|
|
350
385
|
}
|
|
351
386
|
}
|
|
387
|
+
/**
|
|
388
|
+
* Table selection. `select-all` toggles the enabled row checkboxes of its own table, a row
|
|
389
|
+
* change keeps the header checked or indeterminate, and every bulk bar bound to the same form
|
|
390
|
+
* (`data-form`) shows the live count and enables its actions only while something is selected.
|
|
391
|
+
*
|
|
392
|
+
* @param {Element} table
|
|
393
|
+
*/
|
|
394
|
+
const syncSelection = (table) => {
|
|
395
|
+
const rows = /** @type {HTMLInputElement[]} */ (
|
|
396
|
+
[...table.querySelectorAll('[data-ui="row-select"]')].filter(
|
|
397
|
+
(input) => input instanceof HTMLInputElement && !input.disabled,
|
|
398
|
+
)
|
|
399
|
+
)
|
|
400
|
+
const checked = rows.filter((input) => input.checked)
|
|
401
|
+
const all = table.querySelector('[data-ui="select-all"]')
|
|
402
|
+
if (all instanceof HTMLInputElement) {
|
|
403
|
+
all.checked = rows.length > 0 && checked.length === rows.length
|
|
404
|
+
all.indeterminate = checked.length > 0 && checked.length < rows.length
|
|
405
|
+
}
|
|
406
|
+
for (const input of rows)
|
|
407
|
+
input.closest('[data-ui="row"]')?.toggleAttribute('data-selected', input.checked)
|
|
408
|
+
const form = rows[0]?.getAttribute('form')
|
|
409
|
+
if (!form) return
|
|
410
|
+
for (const bar of document.querySelectorAll(
|
|
411
|
+
`[data-ui="bulk-actions"][data-form="${CSS.escape(form)}"]`,
|
|
412
|
+
)) {
|
|
413
|
+
if (checked.length) bar.setAttribute('data-has-selection', 'true')
|
|
414
|
+
else bar.removeAttribute('data-has-selection')
|
|
415
|
+
for (const count of bar.querySelectorAll('[data-ui="bulk-count"]'))
|
|
416
|
+
count.textContent = String(checked.length)
|
|
417
|
+
for (const button of bar.querySelectorAll('[data-ui="bulk-action-list"] button')) {
|
|
418
|
+
if (button instanceof HTMLButtonElement && button.dataset.kvAlwaysDisabled !== 'true')
|
|
419
|
+
button.disabled = checked.length === 0
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
/** @param {Event} event */
|
|
424
|
+
const onSelectionChange = (event) => {
|
|
425
|
+
const target = event.target
|
|
426
|
+
if (!(target instanceof HTMLInputElement)) return
|
|
427
|
+
const hook = target.getAttribute('data-ui')
|
|
428
|
+
if (hook !== 'select-all' && hook !== 'row-select') return
|
|
429
|
+
const table = target.closest('[data-ui="table"]')
|
|
430
|
+
if (!table) return
|
|
431
|
+
if (hook === 'select-all') {
|
|
432
|
+
for (const input of table.querySelectorAll('[data-ui="row-select"]')) {
|
|
433
|
+
if (input instanceof HTMLInputElement && !input.disabled) input.checked = target.checked
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
syncSelection(table)
|
|
437
|
+
}
|
|
438
|
+
for (const table of root.querySelectorAll('[data-ui="table"]')) {
|
|
439
|
+
if (table.querySelector('[data-ui="row-select"]')) syncSelection(table)
|
|
440
|
+
}
|
|
441
|
+
document.addEventListener('change', onSelectionChange)
|
|
442
|
+
|
|
352
443
|
/** @param {MouseEvent} event */
|
|
353
444
|
const onDocumentClick = (event) => {
|
|
354
445
|
const target = event.target
|
|
355
446
|
if (!(target instanceof Node)) return
|
|
356
447
|
for (const menu of root.querySelectorAll('[data-ui="menu"][open]')) {
|
|
357
|
-
if (menu instanceof HTMLDetailsElement
|
|
448
|
+
if (!(menu instanceof HTMLDetailsElement)) continue
|
|
449
|
+
const item = target instanceof Element ? target.closest('[data-ui="menu-item"]') : null
|
|
450
|
+
if (!menu.contains(target) || (item && item.getAttribute('aria-disabled') !== 'true')) menu.open = false
|
|
358
451
|
}
|
|
359
452
|
}
|
|
360
453
|
document.addEventListener('keydown', onKeydown)
|
|
@@ -363,6 +456,8 @@ export const attachDesignSystemInteractions = (root = document) => {
|
|
|
363
456
|
return () => {
|
|
364
457
|
document.removeEventListener('keydown', onKeydown)
|
|
365
458
|
document.removeEventListener('click', onDocumentClick)
|
|
459
|
+
document.removeEventListener('change', onSelectionChange)
|
|
460
|
+
for (const cleanup of menuCleanups) cleanup()
|
|
366
461
|
navigationMedia.removeEventListener('change', onNavigationMediaChange)
|
|
367
462
|
for (const cleanup of navigationCleanups) cleanup()
|
|
368
463
|
if (priorNavigationOpen === undefined) delete navigationRoot.dataset.kvNavigationOpen
|