@ketvietlab/design-system 0.1.9 → 0.1.13
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 +92 -6
- package/dist/atlas/README.md +35 -0
- package/dist/atlas/adapter.schema.json +78 -0
- package/dist/atlas/profile.json +43 -0
- package/dist/atlas-cli.d.ts +3 -0
- package/dist/atlas-cli.d.ts.map +1 -0
- package/dist/atlas-cli.js +213 -0
- package/dist/atlas-cli.js.map +1 -0
- package/dist/catalogue/catalogue.css +198 -5
- package/dist/catalogue/groups.d.ts +11 -0
- package/dist/catalogue/groups.d.ts.map +1 -0
- package/dist/catalogue/groups.js +47 -0
- package/dist/catalogue/groups.js.map +1 -0
- package/dist/catalogue/index.d.ts +16 -17
- package/dist/catalogue/index.d.ts.map +1 -1
- package/dist/catalogue/index.js +39 -751
- package/dist/catalogue/index.js.map +1 -1
- package/dist/catalogue/inventory-policy.json +560 -0
- package/dist/catalogue/inventory.css +574 -0
- package/dist/catalogue/inventory.d.ts +16 -0
- package/dist/catalogue/inventory.d.ts.map +1 -0
- package/dist/catalogue/inventory.generated.d.ts +42 -0
- package/dist/catalogue/inventory.generated.d.ts.map +1 -0
- package/dist/catalogue/inventory.generated.js +3 -0
- package/dist/catalogue/inventory.generated.js.map +1 -0
- package/dist/catalogue/inventory.generated.json +9993 -0
- package/dist/catalogue/inventory.js +48 -0
- package/dist/catalogue/inventory.js.map +1 -0
- package/dist/catalogue/registry.d.ts +12 -0
- package/dist/catalogue/registry.d.ts.map +1 -0
- package/dist/catalogue/registry.js +134 -0
- package/dist/catalogue/registry.js.map +1 -0
- package/dist/catalogue/specimens.d.ts +15 -0
- package/dist/catalogue/specimens.d.ts.map +1 -0
- package/dist/catalogue/specimens.js +1186 -0
- package/dist/catalogue/specimens.js.map +1 -0
- package/dist/catalogue/styles.css +1 -0
- package/dist/contract/index.d.ts.map +1 -1
- package/dist/contract/index.js +64 -18
- package/dist/contract/index.js.map +1 -1
- package/dist/data-display/data-grid/index.d.ts +22 -0
- package/dist/data-display/data-grid/index.d.ts.map +1 -0
- package/dist/data-display/data-grid/index.js +15 -0
- package/dist/data-display/data-grid/index.js.map +1 -0
- package/dist/data-display/data-grid/styles.css +49 -0
- package/dist/data-display/resource-list/index.d.ts +22 -0
- package/dist/data-display/resource-list/index.d.ts.map +1 -0
- package/dist/data-display/resource-list/index.js +21 -0
- package/dist/data-display/resource-list/index.js.map +1 -0
- package/dist/data-display/resource-list/styles.css +39 -0
- package/dist/data-display/tree/index.d.ts +33 -0
- package/dist/data-display/tree/index.d.ts.map +1 -0
- package/dist/data-display/tree/index.js +21 -0
- package/dist/data-display/tree/index.js.map +1 -0
- package/dist/data-display/tree/styles.css +45 -0
- package/dist/data-operations/inline-edit/index.d.ts +19 -0
- package/dist/data-operations/inline-edit/index.d.ts.map +1 -0
- package/dist/data-operations/inline-edit/index.js +5 -0
- package/dist/data-operations/inline-edit/index.js.map +1 -0
- package/dist/data-operations/inline-edit/styles.css +34 -0
- package/dist/data-operations/list-controls/index.d.ts +67 -0
- package/dist/data-operations/list-controls/index.d.ts.map +1 -0
- package/dist/data-operations/list-controls/index.js +35 -0
- package/dist/data-operations/list-controls/index.js.map +1 -0
- package/dist/data-operations/list-controls/styles.css +82 -0
- package/dist/forms/combobox/index.d.ts +39 -0
- package/dist/forms/combobox/index.d.ts.map +1 -0
- package/dist/forms/combobox/index.js +23 -0
- package/dist/forms/combobox/index.js.map +1 -0
- package/dist/forms/combobox/styles.css +76 -0
- package/dist/forms/date-time/index.d.ts +25 -0
- package/dist/forms/date-time/index.d.ts.map +1 -0
- package/dist/forms/date-time/index.js +15 -0
- package/dist/forms/date-time/index.js.map +1 -0
- package/dist/forms/date-time/styles.css +25 -0
- package/dist/forms/relation-picker/index.d.ts +12 -0
- package/dist/forms/relation-picker/index.d.ts.map +1 -0
- package/dist/forms/relation-picker/index.js +13 -0
- package/dist/forms/relation-picker/index.js.map +1 -0
- package/dist/forms/relation-picker/styles.css +5 -0
- package/dist/forms/scalar-fields/index.d.ts +24 -0
- package/dist/forms/scalar-fields/index.d.ts.map +1 -0
- package/dist/forms/scalar-fields/index.js +23 -0
- package/dist/forms/scalar-fields/index.js.map +1 -0
- package/dist/forms/scalar-fields/styles.css +52 -0
- package/dist/forms/shared.d.ts +19 -0
- package/dist/forms/shared.d.ts.map +1 -0
- package/dist/forms/shared.js +9 -0
- package/dist/forms/shared.js.map +1 -0
- package/dist/forms/upload/index.d.ts +20 -0
- package/dist/forms/upload/index.d.ts.map +1 -0
- package/dist/forms/upload/index.js +11 -0
- package/dist/forms/upload/index.js.map +1 -0
- package/dist/forms/upload/styles.css +21 -0
- package/dist/foundations/reset.css +4 -0
- package/dist/foundations/tokens.css +31 -4
- package/dist/index.d.ts +78 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -19
- package/dist/index.js.map +1 -1
- package/dist/interactions/dialog/index.d.ts +25 -0
- package/dist/interactions/dialog/index.d.ts.map +1 -0
- package/dist/interactions/dialog/index.js +10 -0
- package/dist/interactions/dialog/index.js.map +1 -0
- package/dist/interactions/dialog/styles.css +11 -0
- package/dist/interactions/menu/index.d.ts +27 -0
- package/dist/interactions/menu/index.d.ts.map +1 -0
- package/dist/interactions/menu/index.js +13 -0
- package/dist/interactions/menu/index.js.map +1 -0
- package/dist/interactions/menu/styles.css +85 -0
- package/dist/interactions/popover/index.d.ts +15 -0
- package/dist/interactions/popover/index.d.ts.map +1 -0
- package/dist/interactions/popover/index.js +4 -0
- package/dist/interactions/popover/index.js.map +1 -0
- package/dist/interactions/popover/styles.css +47 -0
- package/dist/interactions/skeleton/index.d.ts +7 -0
- package/dist/interactions/skeleton/index.d.ts.map +1 -0
- package/dist/interactions/skeleton/index.js +5 -0
- package/dist/interactions/skeleton/index.js.map +1 -0
- package/dist/interactions/skeleton/styles.css +32 -0
- package/dist/interactions/spinner/index.d.ts +7 -0
- package/dist/interactions/spinner/index.d.ts.map +1 -0
- package/dist/interactions/spinner/index.js +4 -0
- package/dist/interactions/spinner/index.js.map +1 -0
- package/dist/interactions/spinner/styles.css +38 -0
- package/dist/interactions/toast/index.d.ts +16 -0
- package/dist/interactions/toast/index.d.ts.map +1 -0
- package/dist/interactions/toast/index.js +13 -0
- package/dist/interactions/toast/index.js.map +1 -0
- package/dist/interactions/toast/styles.css +64 -0
- package/dist/interactions/tooltip/index.d.ts +9 -0
- package/dist/interactions/tooltip/index.d.ts.map +1 -0
- package/dist/interactions/tooltip/index.js +4 -0
- package/dist/interactions/tooltip/index.js.map +1 -0
- package/dist/interactions/tooltip/styles.css +65 -0
- package/dist/layouts/app-navigation/index.d.ts +63 -0
- package/dist/layouts/app-navigation/index.d.ts.map +1 -0
- package/dist/layouts/app-navigation/index.js +50 -0
- package/dist/layouts/app-navigation/index.js.map +1 -0
- package/dist/layouts/app-navigation/styles.css +331 -0
- package/dist/layouts/app-navigation.d.ts +2 -0
- package/dist/layouts/app-navigation.d.ts.map +1 -0
- package/dist/layouts/app-navigation.js +2 -0
- package/dist/layouts/app-navigation.js.map +1 -0
- package/dist/layouts/flat/styles.css +74 -0
- package/dist/layouts/flat.css +1 -74
- package/dist/layouts/grouped/styles.css +131 -0
- package/dist/layouts/grouped.css +1 -126
- package/dist/layouts/index.d.ts +1 -69
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +1 -68
- package/dist/layouts/index.js.map +1 -1
- package/dist/layouts/layout/index.d.ts +70 -0
- package/dist/layouts/layout/index.d.ts.map +1 -0
- package/dist/layouts/layout/index.js +71 -0
- package/dist/layouts/layout/index.js.map +1 -0
- package/dist/layouts/layout/styles.css +369 -0
- package/dist/layouts/layouts.css +1 -369
- package/dist/layouts/shell/index.d.ts +27 -0
- package/dist/layouts/shell/index.d.ts.map +1 -0
- package/dist/layouts/shell/index.js +24 -0
- package/dist/layouts/shell/index.js.map +1 -0
- package/dist/layouts/shell/styles.css +168 -0
- package/dist/layouts/shell.css +1 -168
- package/dist/layouts/shell.d.ts +1 -26
- package/dist/layouts/shell.d.ts.map +1 -1
- package/dist/layouts/shell.js +1 -23
- package/dist/layouts/shell.js.map +1 -1
- package/dist/patterns/board-page/index.d.ts +16 -0
- package/dist/patterns/board-page/index.d.ts.map +1 -0
- package/dist/patterns/board-page/index.js +30 -0
- package/dist/patterns/board-page/index.js.map +1 -0
- package/dist/patterns/board-page/styles.css +164 -0
- package/dist/patterns/board-page.d.ts +1 -13
- package/dist/patterns/board-page.d.ts.map +1 -1
- package/dist/patterns/board-page.js +1 -27
- package/dist/patterns/board-page.js.map +1 -1
- package/dist/patterns/dashboard-page/index.d.ts +15 -0
- package/dist/patterns/dashboard-page/index.d.ts.map +1 -0
- package/dist/patterns/dashboard-page/index.js +27 -0
- package/dist/patterns/dashboard-page/index.js.map +1 -0
- package/dist/patterns/dashboard-page/styles.css +169 -0
- package/dist/patterns/dashboard-page.d.ts +1 -12
- package/dist/patterns/dashboard-page.d.ts.map +1 -1
- package/dist/patterns/dashboard-page.js +1 -24
- package/dist/patterns/dashboard-page.js.map +1 -1
- package/dist/patterns/data-table/index.d.ts +74 -0
- package/dist/patterns/data-table/index.d.ts.map +1 -0
- package/dist/patterns/data-table/index.js +60 -0
- package/dist/patterns/data-table/index.js.map +1 -0
- package/dist/patterns/data-table/styles.css +269 -0
- package/dist/patterns/data-table.d.ts +1 -73
- package/dist/patterns/data-table.d.ts.map +1 -1
- package/dist/patterns/data-table.js +1 -59
- package/dist/patterns/data-table.js.map +1 -1
- package/dist/patterns/form-page/index.d.ts +8 -0
- package/dist/patterns/form-page/index.d.ts.map +1 -0
- package/dist/patterns/form-page/index.js +22 -0
- package/dist/patterns/form-page/index.js.map +1 -0
- package/dist/patterns/form-page/styles.css +237 -0
- package/dist/patterns/form-page.d.ts +1 -7
- package/dist/patterns/form-page.d.ts.map +1 -1
- package/dist/patterns/form-page.js +1 -21
- package/dist/patterns/form-page.js.map +1 -1
- package/dist/patterns/list-chrome/index.d.ts +80 -0
- package/dist/patterns/list-chrome/index.d.ts.map +1 -0
- package/dist/patterns/list-chrome/index.js +45 -0
- package/dist/patterns/list-chrome/index.js.map +1 -0
- package/dist/patterns/list-chrome/styles.css +245 -0
- package/dist/patterns/list-chrome.d.ts +1 -79
- package/dist/patterns/list-chrome.d.ts.map +1 -1
- package/dist/patterns/list-chrome.js +1 -44
- package/dist/patterns/list-chrome.js.map +1 -1
- package/dist/patterns/list-page/index.d.ts +31 -0
- package/dist/patterns/list-page/index.d.ts.map +1 -0
- package/dist/patterns/list-page/index.js +41 -0
- package/dist/patterns/list-page/index.js.map +1 -0
- package/dist/patterns/list-page/responsive.css +140 -0
- package/dist/patterns/list-page/styles.css +228 -0
- package/dist/patterns/list-page.d.ts +1 -30
- package/dist/patterns/list-page.d.ts.map +1 -1
- package/dist/patterns/list-page.js +1 -40
- package/dist/patterns/list-page.js.map +1 -1
- package/dist/patterns/modal-sheet/index.d.ts +16 -0
- package/dist/patterns/modal-sheet/index.d.ts.map +1 -0
- package/dist/patterns/modal-sheet/index.js +15 -0
- package/dist/patterns/modal-sheet/index.js.map +1 -0
- package/dist/patterns/modal-sheet/styles.css +219 -0
- package/dist/patterns/modal-sheet.d.ts +1 -15
- package/dist/patterns/modal-sheet.d.ts.map +1 -1
- package/dist/patterns/modal-sheet.js +1 -14
- package/dist/patterns/modal-sheet.js.map +1 -1
- package/dist/patterns/page-shell/index.d.ts +24 -0
- package/dist/patterns/page-shell/index.d.ts.map +1 -0
- package/dist/patterns/page-shell/index.js +11 -0
- package/dist/patterns/page-shell/index.js.map +1 -0
- package/dist/patterns/page-shell.d.ts +1 -23
- package/dist/patterns/page-shell.d.ts.map +1 -1
- package/dist/patterns/page-shell.js +1 -10
- package/dist/patterns/page-shell.js.map +1 -1
- package/dist/patterns/patterns.css +12 -2247
- package/dist/patterns/pipeline/index.d.ts +29 -0
- package/dist/patterns/pipeline/index.d.ts.map +1 -0
- package/dist/patterns/pipeline/index.js +26 -0
- package/dist/patterns/pipeline/index.js.map +1 -0
- package/dist/patterns/pipeline/styles.css +168 -0
- package/dist/patterns/pipeline.d.ts +1 -28
- package/dist/patterns/pipeline.d.ts.map +1 -1
- package/dist/patterns/pipeline.js +1 -25
- package/dist/patterns/pipeline.js.map +1 -1
- package/dist/patterns/record-form/index.d.ts +18 -0
- package/dist/patterns/record-form/index.d.ts.map +1 -0
- package/dist/patterns/record-form/index.js +14 -0
- package/dist/patterns/record-form/index.js.map +1 -0
- package/dist/patterns/record-form/styles.css +175 -0
- package/dist/patterns/record-form.d.ts +1 -17
- package/dist/patterns/record-form.d.ts.map +1 -1
- package/dist/patterns/record-form.js +1 -13
- package/dist/patterns/record-form.js.map +1 -1
- package/dist/patterns/record-page/index.d.ts +31 -0
- package/dist/patterns/record-page/index.d.ts.map +1 -0
- package/dist/patterns/record-page/index.js +29 -0
- package/dist/patterns/record-page/index.js.map +1 -0
- package/dist/patterns/record-page/styles.css +228 -0
- package/dist/patterns/record-page.d.ts +1 -30
- package/dist/patterns/record-page.d.ts.map +1 -1
- package/dist/patterns/record-page.js +1 -28
- package/dist/patterns/record-page.js.map +1 -1
- package/dist/patterns/workspace-page/index.d.ts +23 -0
- package/dist/patterns/workspace-page/index.d.ts.map +1 -0
- package/dist/patterns/workspace-page/index.js +26 -0
- package/dist/patterns/workspace-page/index.js.map +1 -0
- package/dist/patterns/workspace-page/styles.css +9 -0
- package/dist/patterns/workspace-page.d.ts +1 -22
- package/dist/patterns/workspace-page.d.ts.map +1 -1
- package/dist/patterns/workspace-page.js +1 -25
- package/dist/patterns/workspace-page.js.map +1 -1
- package/dist/primitives/actions/index.d.ts +36 -0
- package/dist/primitives/actions/index.d.ts.map +1 -0
- package/dist/primitives/actions/index.js +10 -0
- package/dist/primitives/actions/index.js.map +1 -0
- package/dist/primitives/actions/styles.css +149 -0
- package/dist/primitives/actions.d.ts +1 -35
- package/dist/primitives/actions.d.ts.map +1 -1
- package/dist/primitives/actions.js +1 -9
- package/dist/primitives/actions.js.map +1 -1
- package/dist/primitives/feedback/index.d.ts +19 -0
- package/dist/primitives/feedback/index.d.ts.map +1 -0
- package/dist/primitives/feedback/index.js +21 -0
- package/dist/primitives/feedback/index.js.map +1 -0
- package/dist/primitives/feedback/styles.css +117 -0
- package/dist/primitives/feedback.d.ts +1 -18
- package/dist/primitives/feedback.d.ts.map +1 -1
- package/dist/primitives/feedback.js +1 -22
- package/dist/primitives/feedback.js.map +1 -1
- package/dist/primitives/field/index.d.ts +35 -0
- package/dist/primitives/field/index.d.ts.map +1 -0
- package/dist/primitives/field/index.js +34 -0
- package/dist/primitives/field/index.js.map +1 -0
- package/dist/primitives/field/native-control.d.ts +4 -0
- package/dist/primitives/field/native-control.d.ts.map +1 -0
- package/dist/primitives/field/native-control.js +12 -0
- package/dist/primitives/field/native-control.js.map +1 -0
- package/dist/primitives/field/styles.css +160 -0
- package/dist/primitives/field.d.ts +1 -34
- package/dist/primitives/field.d.ts.map +1 -1
- package/dist/primitives/field.js +1 -41
- package/dist/primitives/field.js.map +1 -1
- package/dist/primitives/navigation/index.d.ts +36 -0
- package/dist/primitives/navigation/index.d.ts.map +1 -0
- package/dist/primitives/navigation/index.js +19 -0
- package/dist/primitives/navigation/index.js.map +1 -0
- package/dist/primitives/{navigation.css → navigation/styles.css} +51 -0
- package/dist/primitives/navigation.d.ts +1 -25
- package/dist/primitives/navigation.d.ts.map +1 -1
- package/dist/primitives/navigation.js +1 -15
- package/dist/primitives/navigation.js.map +1 -1
- package/dist/primitives/primitives.css +4 -570
- package/dist/primitives/progress/index.d.ts +10 -0
- package/dist/primitives/progress/index.d.ts.map +1 -0
- package/dist/primitives/progress/index.js +13 -0
- package/dist/primitives/progress/index.js.map +1 -0
- package/dist/primitives/progress.d.ts +1 -9
- package/dist/primitives/progress.d.ts.map +1 -1
- package/dist/primitives/progress.js +1 -12
- package/dist/primitives/progress.js.map +1 -1
- package/dist/primitives/status/index.d.ts +27 -0
- package/dist/primitives/status/index.d.ts.map +1 -0
- package/dist/primitives/status/index.js +16 -0
- package/dist/primitives/status/index.js.map +1 -0
- package/dist/primitives/status/styles.css +114 -0
- package/dist/primitives/status.d.ts +1 -26
- package/dist/primitives/status.d.ts.map +1 -1
- package/dist/primitives/status.js +1 -15
- package/dist/primitives/status.js.map +1 -1
- package/dist/record/activity/index.d.ts +26 -0
- package/dist/record/activity/index.d.ts.map +1 -0
- package/dist/record/activity/index.js +33 -0
- package/dist/record/activity/index.js.map +1 -0
- package/dist/record/activity/styles.css +38 -0
- package/dist/record/composition/index.d.ts +33 -0
- package/dist/record/composition/index.d.ts.map +1 -0
- package/dist/record/composition/index.js +10 -0
- package/dist/record/composition/index.js.map +1 -0
- package/dist/record/composition/styles.css +30 -0
- package/dist/record/display/index.d.ts +37 -0
- package/dist/record/display/index.d.ts.map +1 -0
- package/dist/record/display/index.js +23 -0
- package/dist/record/display/index.js.map +1 -0
- package/dist/record/display/styles.css +63 -0
- package/dist/record/formatted-values/index.d.ts +19 -0
- package/dist/record/formatted-values/index.d.ts.map +1 -0
- package/dist/record/formatted-values/index.js +21 -0
- package/dist/record/formatted-values/index.js.map +1 -0
- package/dist/record/formatted-values/styles.css +8 -0
- package/dist/record/media/index.d.ts +31 -0
- package/dist/record/media/index.d.ts.map +1 -0
- package/dist/record/media/index.js +19 -0
- package/dist/record/media/index.js.map +1 -0
- package/dist/record/media/styles.css +38 -0
- package/dist/runtime/auto.d.ts +2 -0
- package/dist/runtime/auto.d.ts.map +1 -0
- package/dist/runtime/auto.js +5 -0
- package/dist/runtime/auto.js.map +1 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +369 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/styles.css +47 -8
- package/package.json +9 -2
- /package/dist/primitives/{progress.css → progress/styles.css} +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
|
|
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 }));
|
|
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
|
+
export const CountBadge = (props) => (_jsx("span", { "data-ui": "count-badge", role: "status", "aria-label": props.label, children: String(props.count) }));
|
|
6
|
+
export const initials = (name) => {
|
|
7
|
+
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
8
|
+
if (!parts.length)
|
|
9
|
+
return '?';
|
|
10
|
+
const first = parts.length > 1 ? parts[parts.length - 1] : parts[0];
|
|
11
|
+
const second = parts.length > 2 ? parts[parts.length - 2] : '';
|
|
12
|
+
return (second.slice(0, 1) + first.slice(0, 1)).toLocaleUpperCase('vi');
|
|
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) }));
|
|
15
|
+
export const Code = (props) => (_jsx("code", { "data-ui": "code", "data-context": props.context ?? null, children: props.value }));
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,0BAAc,OAAO,eAAY,KAAK,CAAC,IAAI,IAAI,SAAS,gBAAc,KAAK,CAAC,KAAK,IAAI,EAAE,YACpF,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,0BAAc,QAAQ,eAAY,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,iBAAc,MAAM,YAC7F,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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
@layer ket.app {
|
|
2
|
+
:where([data-kv-design-system]) [data-ui="badge"] {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
min-height: 1.4rem;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: 0.3125rem;
|
|
7
|
+
padding: 0.125rem 0.4375rem;
|
|
8
|
+
border: 1px solid transparent;
|
|
9
|
+
border-radius: var(--kv-radius-sm);
|
|
10
|
+
background: color-mix(in srgb, var(--kv-text-main) 7%, transparent);
|
|
11
|
+
color: var(--kv-text-secondary);
|
|
12
|
+
font-size: var(--kv-text-xs);
|
|
13
|
+
font-weight: var(--kv-weight-medium);
|
|
14
|
+
max-width: 100%;
|
|
15
|
+
white-space: normal;
|
|
16
|
+
overflow-wrap: anywhere;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-tone="info"] {
|
|
20
|
+
background: var(--kv-color-info-soft);
|
|
21
|
+
color: var(--kv-color-info);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-tone="positive"] {
|
|
25
|
+
background: var(--kv-color-positive-soft);
|
|
26
|
+
color: var(--kv-color-positive);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-tone="warning"] {
|
|
30
|
+
background: var(--kv-color-warning-soft);
|
|
31
|
+
color: var(--kv-color-warning);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:where([data-kv-design-system]) [data-ui="badge"][data-tone="danger"] {
|
|
35
|
+
background: var(--kv-color-danger-soft);
|
|
36
|
+
color: var(--kv-color-danger);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where([data-kv-design-system]) [data-ui="tag"] {
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
min-height: 1.6rem;
|
|
42
|
+
align-items: center;
|
|
43
|
+
gap: var(--kv-space-1);
|
|
44
|
+
padding-inline: var(--kv-space-2);
|
|
45
|
+
border: 1px solid var(--kv-color-line);
|
|
46
|
+
border-radius: var(--kv-radius-sm);
|
|
47
|
+
background: var(--kv-color-surface);
|
|
48
|
+
font-size: var(--kv-text-xs);
|
|
49
|
+
font-weight: 650;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:where([data-kv-design-system]) [data-ui="tag-remove"] {
|
|
53
|
+
display: grid;
|
|
54
|
+
width: 1rem;
|
|
55
|
+
height: 1rem;
|
|
56
|
+
place-items: center;
|
|
57
|
+
border-radius: var(--kv-radius-xs);
|
|
58
|
+
color: var(--kv-color-ink-muted);
|
|
59
|
+
text-decoration: none;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
:where([data-kv-design-system]) [data-ui="tag-remove"]:hover {
|
|
63
|
+
background: var(--kv-color-danger-soft);
|
|
64
|
+
color: var(--kv-color-danger);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
:where([data-kv-design-system]) [data-ui="count-badge"] {
|
|
68
|
+
display: inline-grid;
|
|
69
|
+
min-width: 1.4rem;
|
|
70
|
+
height: 1.4rem;
|
|
71
|
+
place-items: center;
|
|
72
|
+
padding-inline: var(--kv-space-1);
|
|
73
|
+
border-radius: var(--kv-radius-full);
|
|
74
|
+
background: var(--kv-color-accent-soft);
|
|
75
|
+
color: var(--kv-color-accent);
|
|
76
|
+
font-family: var(--kv-font-mono);
|
|
77
|
+
font-size: var(--kv-text-xs);
|
|
78
|
+
font-weight: 800;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
:where([data-kv-design-system]) [data-ui="avatar"] {
|
|
82
|
+
display: inline-grid;
|
|
83
|
+
width: 2rem;
|
|
84
|
+
height: 2rem;
|
|
85
|
+
place-items: center;
|
|
86
|
+
border: 1px solid var(--kv-color-line-strong);
|
|
87
|
+
border-radius: 50%;
|
|
88
|
+
background: var(--kv-color-accent-soft);
|
|
89
|
+
color: var(--kv-color-accent);
|
|
90
|
+
font-size: var(--kv-text-xs);
|
|
91
|
+
font-weight: 800;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
:where([data-kv-design-system]) [data-ui="avatar"][data-size="small"] {
|
|
95
|
+
width: 1.5rem;
|
|
96
|
+
height: 1.5rem;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:where([data-kv-design-system]) [data-ui="avatar"][data-size="large"] {
|
|
100
|
+
width: 3rem;
|
|
101
|
+
height: 3rem;
|
|
102
|
+
font-size: var(--kv-text-sm);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
:where([data-kv-design-system]) [data-ui="code"] {
|
|
106
|
+
padding: 0.15rem 0.35rem;
|
|
107
|
+
border-radius: var(--kv-radius-xs);
|
|
108
|
+
background: var(--kv-color-surface-subtle);
|
|
109
|
+
color: var(--kv-color-ink-secondary);
|
|
110
|
+
font-family: var(--kv-font-mono);
|
|
111
|
+
font-size: 0.85em;
|
|
112
|
+
overflow-wrap: anywhere;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -1,27 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const HOOKS: readonly ['badge', 'tag', 'tag-remove', 'count-badge', 'avatar', 'code'];
|
|
3
|
-
export type Tone = 'neutral' | 'info' | 'positive' | 'warning' | 'danger';
|
|
4
|
-
export declare const Badge: (props: {
|
|
5
|
-
label: string;
|
|
6
|
-
tone?: Tone;
|
|
7
|
-
value?: string;
|
|
8
|
-
}) => TemplateResult;
|
|
9
|
-
export declare const Tag: (props: {
|
|
10
|
-
label: string;
|
|
11
|
-
removeHref?: string | null;
|
|
12
|
-
removeLabel?: string | null;
|
|
13
|
-
}) => TemplateResult;
|
|
14
|
-
export declare const CountBadge: (props: {
|
|
15
|
-
count: number;
|
|
16
|
-
label: string;
|
|
17
|
-
}) => TemplateResult;
|
|
18
|
-
export declare const initials: (name: string) => string;
|
|
19
|
-
export declare const Avatar: (props: {
|
|
20
|
-
name: string;
|
|
21
|
-
size?: 'small' | 'default' | 'large';
|
|
22
|
-
}) => TemplateResult;
|
|
23
|
-
export declare const Code: (props: {
|
|
24
|
-
value: string;
|
|
25
|
-
context?: string | null;
|
|
26
|
-
}) => TemplateResult;
|
|
1
|
+
export * from './status/index.tsx';
|
|
27
2
|
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../../packages/design-system/src/primitives/status.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../../packages/design-system/src/primitives/status.tsx"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
|
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
|
|
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 }));
|
|
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
|
-
export const CountBadge = (props) => (_jsx("span", { "data-ui": "count-badge", role: "status", "aria-label": props.label, children: String(props.count) }));
|
|
6
|
-
export const initials = (name) => {
|
|
7
|
-
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
8
|
-
if (!parts.length)
|
|
9
|
-
return '?';
|
|
10
|
-
const first = parts.length > 1 ? parts[parts.length - 1] : parts[0];
|
|
11
|
-
const second = parts.length > 2 ? parts[parts.length - 2] : '';
|
|
12
|
-
return (second.slice(0, 1) + first.slice(0, 1)).toLocaleUpperCase('vi');
|
|
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) }));
|
|
15
|
-
export const Code = (props) => (_jsx("code", { "data-ui": "code", "data-context": props.context ?? null, children: props.value }));
|
|
1
|
+
export * from './status/index.js';
|
|
16
2
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../../../packages/design-system/src/primitives/status.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../../../packages/design-system/src/primitives/status.tsx"],"names":[],"mappings":"AAAA,cAAc,mBAAoB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
|
|
2
|
+
export declare const HOOKS: readonly ['activity-timeline', 'activity-item', 'activity-marker', 'audit-log', 'audit-item'];
|
|
3
|
+
export type ActivityItem = {
|
|
4
|
+
id: string;
|
|
5
|
+
actor: string;
|
|
6
|
+
actorDetail?: string;
|
|
7
|
+
action: JSXChild;
|
|
8
|
+
datetime: string;
|
|
9
|
+
timeLabel: string;
|
|
10
|
+
detail?: JSXChild;
|
|
11
|
+
redacted?: boolean;
|
|
12
|
+
};
|
|
13
|
+
type FeedProps = {
|
|
14
|
+
label: string;
|
|
15
|
+
items: readonly ActivityItem[];
|
|
16
|
+
loading?: boolean;
|
|
17
|
+
loadingLabel?: string;
|
|
18
|
+
emptyTitle?: string;
|
|
19
|
+
emptyMessage?: string;
|
|
20
|
+
error?: string | null;
|
|
21
|
+
redactedLabel?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare const ActivityTimeline: (props: FeedProps) => TemplateResult;
|
|
24
|
+
export declare const AuditLog: (props: FeedProps) => TemplateResult;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/record/activity/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAItE,eAAO,MAAM,KAAK,YAChB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,YAAY,CACJ,CAAA;AAEV,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,QAAQ,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAeD,eAAO,MAAM,gBAAgB,UAAW,SAAS,KAAG,cAsBnD,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,SAAS,KAAG,cAkB3C,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
|
|
2
|
+
import { each } from '@ketvietlab/ketjs-view';
|
|
3
|
+
import { EmptyState, LoadingState, Notice } from '../../primitives/feedback/index.js';
|
|
4
|
+
import { Person } from '../display/index.js';
|
|
5
|
+
export const HOOKS = [
|
|
6
|
+
'activity-timeline',
|
|
7
|
+
'activity-item',
|
|
8
|
+
'activity-marker',
|
|
9
|
+
'audit-log',
|
|
10
|
+
'audit-item',
|
|
11
|
+
];
|
|
12
|
+
const state = (props) => {
|
|
13
|
+
if (props.loading)
|
|
14
|
+
return _jsx(LoadingState, { label: props.loadingLabel ?? 'Loading activity' });
|
|
15
|
+
if (props.error)
|
|
16
|
+
return _jsx(Notice, { title: "Activity unavailable", message: props.error, tone: "danger" });
|
|
17
|
+
if (!props.items.length)
|
|
18
|
+
return (_jsx(EmptyState, { title: props.emptyTitle ?? 'No activity', message: props.emptyMessage ?? 'Nothing has happened yet.' }));
|
|
19
|
+
return null;
|
|
20
|
+
};
|
|
21
|
+
export const ActivityTimeline = (props) => {
|
|
22
|
+
const placeholder = state(props);
|
|
23
|
+
if (placeholder)
|
|
24
|
+
return placeholder;
|
|
25
|
+
return (_jsx("ol", { "data-ui": "activity-timeline", "aria-label": props.label, children: each(props.items, (item) => item.id, (item) => (_jsxs("li", { "data-ui": "activity-item", children: [_jsx("span", { "data-ui": "activity-marker", "aria-hidden": "true" }), _jsxs("div", { children: [_jsx(Person, { name: item.actor, detail: item.actorDetail, size: "small" }), _jsx("p", { children: item.redacted ? (props.redactedLabel ?? 'Details redacted') : item.action }), item.detail !== undefined && !item.redacted && _jsx("div", { children: item.detail }), _jsx("time", { datetime: item.datetime, children: item.timeLabel })] })] }))) }));
|
|
26
|
+
};
|
|
27
|
+
export const AuditLog = (props) => {
|
|
28
|
+
const placeholder = state(props);
|
|
29
|
+
if (placeholder)
|
|
30
|
+
return placeholder;
|
|
31
|
+
return (_jsx("ol", { "data-ui": "audit-log", "aria-label": props.label, children: each(props.items, (item) => item.id, (item) => (_jsxs("li", { "data-ui": "audit-item", children: [_jsx("time", { datetime: item.datetime, children: item.timeLabel }), _jsx("strong", { children: item.actor }), _jsx("span", { children: item.redacted ? (props.redactedLabel ?? 'Change redacted') : item.action })] }))) }));
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/record/activity/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,oCAAqC,CAAA;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAsB,CAAA;AAE7C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,mBAAmB;IACnB,eAAe;IACf,iBAAiB;IACjB,WAAW;IACX,YAAY;CACJ,CAAA;AAwBV,MAAM,KAAK,GAAG,CAAC,KAAgB,EAAyB,EAAE;IACxD,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,KAAC,YAAY,IAAC,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,kBAAkB,GAAI,CAAA;IAC3F,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,KAAC,MAAM,IAAC,KAAK,EAAC,sBAAsB,EAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAC,QAAQ,GAAG,CAAA;IACnG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;QACrB,OAAO,CACL,KAAC,UAAU,IACT,KAAK,EAAE,KAAK,CAAC,UAAU,IAAI,aAAa,EACxC,OAAO,EAAE,KAAK,CAAC,YAAY,IAAI,2BAA2B,GAC1D,CACH,CAAA;IACH,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAgB,EAAkB,EAAE;IACnE,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,WAAW;QAAE,OAAO,WAAW,CAAA;IACnC,OAAO,CACL,wBAAY,mBAAmB,gBAAa,KAAK,CAAC,KAAK,YACpD,IAAI,CACH,KAAK,CAAC,KAAK,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EACjB,CAAC,IAAI,EAAE,EAAE,CAAC,CACR,yBAAY,eAAe,aACzB,0BAAc,iBAAiB,iBAAa,MAAM,GAAG,EACrD,0BACE,KAAC,MAAM,IAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAC,OAAO,GAAG,EACnE,sBAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAK,EACjF,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,wBAAM,IAAI,CAAC,MAAM,GAAO,EACxE,eAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ,YAAG,IAAI,CAAC,SAAS,GAAQ,IAClD,IACH,CACN,CACF,GACE,CACN,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAgB,EAAkB,EAAE;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,WAAW;QAAE,OAAO,WAAW,CAAA;IACnC,OAAO,CACL,wBAAY,WAAW,gBAAa,KAAK,CAAC,KAAK,YAC5C,IAAI,CACH,KAAK,CAAC,KAAK,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EACjB,CAAC,IAAI,EAAE,EAAE,CAAC,CACR,yBAAY,YAAY,aACtB,eAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ,YAAG,IAAI,CAAC,SAAS,GAAQ,EACtD,2BAAS,IAAI,CAAC,KAAK,GAAU,EAC7B,yBAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAQ,IACpF,CACN,CACF,GACE,CACN,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
@layer ket.app {
|
|
2
|
+
:where([data-kv-design-system]) [data-ui="activity-timeline"],
|
|
3
|
+
:where([data-kv-design-system]) [data-ui="audit-log"] {
|
|
4
|
+
display: grid;
|
|
5
|
+
gap: var(--kv-space-3);
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
list-style: none;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
:where([data-kv-design-system]) [data-ui="activity-item"] {
|
|
12
|
+
display: grid;
|
|
13
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
14
|
+
gap: var(--kv-space-3);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:where([data-kv-design-system]) [data-ui="activity-marker"] {
|
|
18
|
+
width: 0.625rem;
|
|
19
|
+
height: 0.625rem;
|
|
20
|
+
margin-top: var(--kv-space-2);
|
|
21
|
+
border-radius: 50%;
|
|
22
|
+
background: var(--kv-color-accent);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:where([data-kv-design-system]) [data-ui="activity-item"] :is(p, time),
|
|
26
|
+
:where([data-kv-design-system]) [data-ui="audit-item"] :is(time, span) {
|
|
27
|
+
color: var(--kv-text-secondary);
|
|
28
|
+
font-size: var(--kv-text-sm);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:where([data-kv-design-system]) [data-ui="audit-item"] {
|
|
32
|
+
display: grid;
|
|
33
|
+
grid-template-columns: minmax(8rem, auto) minmax(8rem, auto) minmax(0, 1fr);
|
|
34
|
+
gap: var(--kv-space-3);
|
|
35
|
+
padding-block: var(--kv-space-2);
|
|
36
|
+
border-bottom: 1px solid var(--kv-panel-border);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
|
|
2
|
+
import type { KeyValueProps, PersonProps } from '../display/index.tsx';
|
|
3
|
+
import type { Tone } from '../../primitives/status/index.tsx';
|
|
4
|
+
export declare const HOOKS: readonly ['record-summary', 'record-summary-main', 'record-actions', 'record-rail'];
|
|
5
|
+
export type RecordSummaryProps = {
|
|
6
|
+
title: JSXChild;
|
|
7
|
+
subtitle?: JSXChild;
|
|
8
|
+
person?: PersonProps;
|
|
9
|
+
status?: {
|
|
10
|
+
label: string;
|
|
11
|
+
tone?: Tone;
|
|
12
|
+
detail?: string;
|
|
13
|
+
};
|
|
14
|
+
facts?: readonly (KeyValueProps & {
|
|
15
|
+
id: string;
|
|
16
|
+
})[];
|
|
17
|
+
};
|
|
18
|
+
export declare const RecordSummary: (props: RecordSummaryProps) => TemplateResult;
|
|
19
|
+
export declare const RecordActions: (props: {
|
|
20
|
+
label?: string;
|
|
21
|
+
actions: readonly JSXChild[];
|
|
22
|
+
}) => TemplateResult;
|
|
23
|
+
export type RecordRailSection = {
|
|
24
|
+
id: string;
|
|
25
|
+
title: string;
|
|
26
|
+
body: JSXChild;
|
|
27
|
+
actions?: JSXChild;
|
|
28
|
+
};
|
|
29
|
+
export declare const RecordRail: (props: {
|
|
30
|
+
label?: string;
|
|
31
|
+
sections: readonly RecordRailSection[];
|
|
32
|
+
}) => TemplateResult;
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/record/composition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAItE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAA;AAE7D,eAAO,MAAM,KAAK,YAAI,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,CAAU,CAAA;AAExG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,QAAQ,CAAA;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxD,KAAK,CAAC,EAAE,SAAS,CAAC,aAAa,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAA;CACpD,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,kBAAkB,KAAG,cAUzD,CAAA;AAED,eAAO,MAAM,aAAa,UAAW;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,KAAG,cAIvF,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAA;AACjG,eAAO,MAAM,UAAU,UAAW;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;CACvC,KAAG,cAUH,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
|
|
2
|
+
import { each } from '@ketvietlab/ketjs-view';
|
|
3
|
+
import { ActionGroup } from '../../primitives/actions/index.js';
|
|
4
|
+
import { Section } from '../../layouts/layout/index.js';
|
|
5
|
+
import { DescriptionList, Person, Status } from '../display/index.js';
|
|
6
|
+
export const HOOKS = ['record-summary', 'record-summary-main', 'record-actions', 'record-rail'];
|
|
7
|
+
export const RecordSummary = (props) => (_jsxs("header", { "data-ui": "record-summary", children: [_jsxs("div", { "data-ui": "record-summary-main", children: [_jsx("h2", { children: props.title }), props.subtitle !== undefined && _jsx("p", { children: props.subtitle }), props.person && _jsx(Person, { ...props.person })] }), props.status && _jsx(Status, { ...props.status }), props.facts && _jsx(DescriptionList, { items: props.facts, columns: 3 })] }));
|
|
8
|
+
export const RecordActions = (props) => (_jsx("nav", { "data-ui": "record-actions", "aria-label": props.label ?? 'Record actions', children: _jsx(ActionGroup, { actions: props.actions }) }));
|
|
9
|
+
export const RecordRail = (props) => (_jsx("aside", { "data-ui": "record-rail", "aria-label": props.label ?? 'Record context', children: each(props.sections, (section) => section.id, (section) => (_jsx(Section, { title: section.title, body: section.body, actions: section.actions }))) }));
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/record/composition/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAoC,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAAgC,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAAsB,CAAA;AAItE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,CAAU,CAAA;AAUxG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAkB,EAAE,CAAC,CAC1E,6BAAgB,gBAAgB,aAC9B,0BAAa,qBAAqB,aAChC,uBAAK,KAAK,CAAC,KAAK,GAAM,EACrB,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,sBAAI,KAAK,CAAC,QAAQ,GAAK,EACvD,KAAK,CAAC,MAAM,IAAI,KAAC,MAAM,OAAK,KAAK,CAAC,MAAM,GAAI,IACzC,EACL,KAAK,CAAC,MAAM,IAAI,KAAC,MAAM,OAAK,KAAK,CAAC,MAAM,GAAI,EAC5C,KAAK,CAAC,KAAK,IAAI,KAAC,eAAe,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAI,IAC5D,CACV,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAuD,EAAkB,EAAE,CAAC,CACxG,yBAAa,gBAAgB,gBAAa,KAAK,CAAC,KAAK,IAAI,gBAAgB,YACvE,KAAC,WAAW,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,GACnC,CACP,CAAA;AAGD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAG1B,EAAkB,EAAE,CAAC,CACpB,2BAAe,aAAa,gBAAa,KAAK,CAAC,KAAK,IAAI,gBAAgB,YACrE,IAAI,CACH,KAAK,CAAC,QAAQ,EACd,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EACvB,CAAC,OAAO,EAAE,EAAE,CAAC,CACX,KAAC,OAAO,IAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAI,CAChF,CACF,GACK,CACT,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
@layer ket.app {
|
|
2
|
+
:where([data-kv-design-system]) [data-ui="record-summary"] {
|
|
3
|
+
display: grid;
|
|
4
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
5
|
+
align-items: start;
|
|
6
|
+
gap: var(--kv-space-4);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
:where([data-kv-design-system]) [data-ui="record-summary-main"] {
|
|
10
|
+
display: grid;
|
|
11
|
+
gap: var(--kv-space-1);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:where([data-kv-design-system]) [data-ui="record-summary-main"] :is(h2, p) {
|
|
15
|
+
margin: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
:where([data-kv-design-system]) [data-ui="record-summary"] > [data-ui="description-list"] {
|
|
19
|
+
grid-column: 1 / -1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:where([data-kv-design-system]) [data-ui="record-actions"] {
|
|
23
|
+
display: flex;
|
|
24
|
+
justify-content: flex-end;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
:where([data-kv-design-system]) [data-ui="record-rail"] {
|
|
28
|
+
min-width: 0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
|
|
2
|
+
import type { Tone } from '../../primitives/status/index.tsx';
|
|
3
|
+
export declare const HOOKS: readonly ['description-list', 'key-value', 'key-value-label', 'key-value-value', 'person', 'person-body', 'avatar-group', 'status'];
|
|
4
|
+
export type KeyValueProps = {
|
|
5
|
+
label: JSXChild;
|
|
6
|
+
value: JSXChild;
|
|
7
|
+
emptyLabel?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const KeyValue: (props: KeyValueProps) => TemplateResult;
|
|
10
|
+
export declare const DescriptionList: (props: {
|
|
11
|
+
label?: string;
|
|
12
|
+
items: readonly (KeyValueProps & {
|
|
13
|
+
id: string;
|
|
14
|
+
})[];
|
|
15
|
+
columns?: 1 | 2 | 3;
|
|
16
|
+
}) => TemplateResult;
|
|
17
|
+
export type PersonProps = {
|
|
18
|
+
name: string;
|
|
19
|
+
detail?: JSXChild;
|
|
20
|
+
href?: string;
|
|
21
|
+
size?: 'small' | 'default' | 'large';
|
|
22
|
+
};
|
|
23
|
+
export declare const Person: (props: PersonProps) => TemplateResult;
|
|
24
|
+
export declare const AvatarGroup: (props: {
|
|
25
|
+
label: string;
|
|
26
|
+
people: readonly {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
}[];
|
|
30
|
+
max?: number;
|
|
31
|
+
}) => TemplateResult;
|
|
32
|
+
export declare const Status: (props: {
|
|
33
|
+
label: string;
|
|
34
|
+
tone?: Tone;
|
|
35
|
+
detail?: string;
|
|
36
|
+
}) => TemplateResult;
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/record/display/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAA;AAE7D,eAAO,MAAM,KAAK,YAChB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,QAAQ,CACA,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AACrF,eAAO,MAAM,QAAQ,UAAW,aAAa,KAAG,cAK/C,CAAA;AAED,eAAO,MAAM,eAAe,UAAW;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,SAAS,CAAC,aAAa,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAA;IAClD,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CACpB,KAAG,cAUH,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;CACrC,CAAA;AACD,eAAO,MAAM,MAAM,UAAW,WAAW,KAAG,cAQ3C,CAAA;AAED,eAAO,MAAM,WAAW,UAAW;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,KAAG,cAmBH,CAAA;AAED,eAAO,MAAM,MAAM,UAAW;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,cAI/E,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
|
|
2
|
+
import { each } from '@ketvietlab/ketjs-view';
|
|
3
|
+
import { Avatar, Badge } from '../../primitives/status/index.js';
|
|
4
|
+
export const HOOKS = [
|
|
5
|
+
'description-list',
|
|
6
|
+
'key-value',
|
|
7
|
+
'key-value-label',
|
|
8
|
+
'key-value-value',
|
|
9
|
+
'person',
|
|
10
|
+
'person-body',
|
|
11
|
+
'avatar-group',
|
|
12
|
+
'status',
|
|
13
|
+
];
|
|
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
|
+
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 })] })] }));
|
|
17
|
+
export const AvatarGroup = (props) => {
|
|
18
|
+
const visible = props.people.slice(0, props.max ?? 4);
|
|
19
|
+
const remaining = props.people.length - visible.length;
|
|
20
|
+
return (_jsxs("span", { "data-ui": "avatar-group", role: "group", "aria-label": props.label, children: [each(visible, (person) => person.id, (person) => (_jsx(Avatar, { name: person.name }))), remaining > 0 && (_jsxs("span", { role: "img", "aria-label": `${remaining} more people`, title: `${remaining} more people`, children: ["+", String(remaining)] }))] }));
|
|
21
|
+
};
|
|
22
|
+
export const Status = (props) => (_jsx("span", { "data-ui": "status", title: props.detail, children: _jsx(Badge, { label: props.label, tone: props.tone }) }));
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,aACpB,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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
@layer ket.app {
|
|
2
|
+
:where([data-kv-design-system]) [data-ui="description-list"] {
|
|
3
|
+
display: grid;
|
|
4
|
+
grid-template-columns: repeat(var(--kv-description-columns, 2), minmax(0, 1fr));
|
|
5
|
+
gap: var(--kv-space-3) var(--kv-space-5);
|
|
6
|
+
margin: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
:where([data-kv-design-system]) [data-ui="description-list"][data-columns="1"] {
|
|
10
|
+
--kv-description-columns: 1;
|
|
11
|
+
}
|
|
12
|
+
:where([data-kv-design-system]) [data-ui="description-list"][data-columns="3"] {
|
|
13
|
+
--kv-description-columns: 3;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
:where([data-kv-design-system]) [data-ui="key-value"] {
|
|
17
|
+
display: grid;
|
|
18
|
+
min-width: 0;
|
|
19
|
+
gap: var(--kv-space-1);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:where([data-kv-design-system]) [data-ui="key-value-label"] {
|
|
23
|
+
color: var(--kv-text-muted);
|
|
24
|
+
font-size: var(--kv-text-xs);
|
|
25
|
+
font-weight: var(--kv-weight-medium);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:where([data-kv-design-system]) [data-ui="key-value-value"] {
|
|
29
|
+
min-width: 0;
|
|
30
|
+
margin: 0;
|
|
31
|
+
overflow-wrap: anywhere;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:where([data-kv-design-system]) [data-ui="person"] {
|
|
35
|
+
display: inline-flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
gap: var(--kv-space-2);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
:where([data-kv-design-system]) [data-ui="person-body"] {
|
|
41
|
+
display: grid;
|
|
42
|
+
gap: 1px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:where([data-kv-design-system]) [data-ui="avatar-group"] {
|
|
46
|
+
display: inline-flex;
|
|
47
|
+
align-items: center;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
:where([data-kv-design-system]) [data-ui="avatar-group"] > * + * {
|
|
51
|
+
margin-left: calc(var(--kv-space-2) * -1);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:where([data-kv-design-system]) [data-ui="status"] {
|
|
55
|
+
display: inline-flex;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@container (max-width: 34rem) {
|
|
59
|
+
:where([data-kv-design-system]) [data-ui="description-list"] {
|
|
60
|
+
--kv-description-columns: 1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TemplateResult } from '@ketvietlab/ketjs-view';
|
|
2
|
+
export declare const HOOKS: readonly ['formatted-date', 'formatted-number', 'formatted-money'];
|
|
3
|
+
export declare const FormattedDate: (props: {
|
|
4
|
+
value: string;
|
|
5
|
+
locale?: string;
|
|
6
|
+
emptyLabel?: string;
|
|
7
|
+
}) => TemplateResult;
|
|
8
|
+
export declare const FormattedNumber: (props: {
|
|
9
|
+
value: number;
|
|
10
|
+
locale?: string;
|
|
11
|
+
minimumFractionDigits?: number;
|
|
12
|
+
maximumFractionDigits?: number;
|
|
13
|
+
}) => TemplateResult;
|
|
14
|
+
export declare const FormattedMoney: (props: {
|
|
15
|
+
value: number;
|
|
16
|
+
currency: string;
|
|
17
|
+
locale?: string;
|
|
18
|
+
}) => TemplateResult;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/design-system/src/record/formatted-values/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,eAAO,MAAM,KAAK,YAAI,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,CAAU,CAAA;AAEvF,eAAO,MAAM,aAAa,UAAW;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,KAAG,cAiBH,CAAA;AAED,eAAO,MAAM,eAAe,UAAW;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B,KAAG,cAOH,CAAA;AAED,eAAO,MAAM,cAAc,UAAW;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,KAAG,cAMH,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@ketvietlab/ketjs-view/jsx-runtime";
|
|
2
|
+
export const HOOKS = ['formatted-date', 'formatted-number', 'formatted-money'];
|
|
3
|
+
export const FormattedDate = (props) => {
|
|
4
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/u.exec(props.value);
|
|
5
|
+
const date = match ? new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3]))) : null;
|
|
6
|
+
const valid = !!match &&
|
|
7
|
+
!!date &&
|
|
8
|
+
date.getUTCFullYear() === Number(match[1]) &&
|
|
9
|
+
date.getUTCMonth() === Number(match[2]) - 1 &&
|
|
10
|
+
date.getUTCDate() === Number(match[3]);
|
|
11
|
+
const formatted = valid
|
|
12
|
+
? new Intl.DateTimeFormat(props.locale ?? 'vi-VN', { dateStyle: 'medium', timeZone: 'UTC' }).format(date)
|
|
13
|
+
: (props.emptyLabel ?? '—');
|
|
14
|
+
return (_jsx("time", { "data-ui": "formatted-date", datetime: valid ? props.value : null, children: formatted }));
|
|
15
|
+
};
|
|
16
|
+
export const FormattedNumber = (props) => (_jsx("data", { "data-ui": "formatted-number", value: String(props.value), children: new Intl.NumberFormat(props.locale ?? 'vi-VN', {
|
|
17
|
+
minimumFractionDigits: props.minimumFractionDigits,
|
|
18
|
+
maximumFractionDigits: props.maximumFractionDigits,
|
|
19
|
+
}).format(props.value) }));
|
|
20
|
+
export const FormattedMoney = (props) => (_jsx("data", { "data-ui": "formatted-money", value: String(props.value), "data-currency": props.currency, children: new Intl.NumberFormat(props.locale ?? 'vi-VN', { style: 'currency', currency: props.currency }).format(props.value) }));
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/design-system/src/record/formatted-values/index.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,CAAU,CAAA;AAEvF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAI7B,EAAkB,EAAE;IACnB,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACxG,MAAM,KAAK,GACT,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI;QACN,IAAI,CAAC,cAAc,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,MAAM,SAAS,GAAG,KAAK;QACrB,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACzG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAA;IAC7B,OAAO,CACL,0BAAc,gBAAgB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAChE,SAAS,GACL,CACR,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAK/B,EAAkB,EAAE,CAAC,CACpB,0BAAc,kBAAkB,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,YACxD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,EAAE;QAC9C,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;KACnD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GACjB,CACR,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAI9B,EAAkB,EAAE,CAAC,CACpB,0BAAc,iBAAiB,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAiB,KAAK,CAAC,QAAQ,YACtF,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CACrG,KAAK,CAAC,KAAK,CACZ,GACI,CACR,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
@layer ket.app {
|
|
2
|
+
:where([data-kv-design-system]) [data-ui="formatted-date"],
|
|
3
|
+
:where([data-kv-design-system]) [data-ui="formatted-number"],
|
|
4
|
+
:where([data-kv-design-system]) [data-ui="formatted-money"] {
|
|
5
|
+
font-variant-numeric: tabular-nums;
|
|
6
|
+
white-space: nowrap;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
|
|
2
|
+
export declare const HOOKS: readonly ['attachments', 'attachment', 'media-gallery', 'media-item'];
|
|
3
|
+
export type AttachmentItem = {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
href?: string;
|
|
7
|
+
meta?: JSXChild;
|
|
8
|
+
redacted?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const Attachments: (props: {
|
|
11
|
+
label: string;
|
|
12
|
+
items: readonly AttachmentItem[];
|
|
13
|
+
loading?: boolean;
|
|
14
|
+
error?: string | null;
|
|
15
|
+
redactedLabel?: string;
|
|
16
|
+
}) => TemplateResult;
|
|
17
|
+
export type MediaItem = {
|
|
18
|
+
id: string;
|
|
19
|
+
src?: string;
|
|
20
|
+
alt: string;
|
|
21
|
+
caption?: JSXChild;
|
|
22
|
+
href?: string;
|
|
23
|
+
redacted?: boolean;
|
|
24
|
+
};
|
|
25
|
+
export declare const MediaGallery: (props: {
|
|
26
|
+
label: string;
|
|
27
|
+
items: readonly MediaItem[];
|
|
28
|
+
emptyTitle?: string;
|
|
29
|
+
redactedLabel?: string;
|
|
30
|
+
}) => TemplateResult;
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|