impact-nova 2.1.0-alpha.4 → 2.1.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.d.ts +3 -0
- package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.js +6 -0
- package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +15 -21
- package/dist/components/data/ag-grid-react/cell-renderers/date-display-renderer.js +1 -1
- package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.d.ts +1 -2
- package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.js +12 -6
- package/dist/components/data/ag-grid-react/cell-renderers/editors/textarea-cell-editor.js +19 -19
- package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +1 -1
- package/dist/components/data/ag-grid-react/cell-renderers/switch-display-renderer.js +15 -15
- package/dist/components/data/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +1 -1
- package/dist/components/data/ag-grid-react/headers/advanced-filter/column-filter-section.js +33 -33
- package/dist/components/data/ag-grid-react/headers/components/header-info.js +66 -62
- package/dist/components/data/ag-grid-react/headers/components/info-modal.js +6 -6
- package/dist/components/data/ag-grid-react/headers/components/section-renderers.js +18 -18
- package/dist/components/data/ag-grid-react/headers/custom-header-group.js +40 -29
- package/dist/components/data/ag-grid-react/headers/custom-header.js +102 -98
- package/dist/components/data/ag-grid-react/index.d.ts +1 -1
- package/dist/components/data/ag-grid-react/index.js +136 -127
- package/dist/components/data/ag-grid-react/notify-column-indicator-sync.d.ts +7 -0
- package/dist/components/data/ag-grid-react/notify-column-indicator-sync.js +6 -0
- package/dist/components/data/ag-grid-react/theme.js +8 -4
- package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.d.ts +5 -0
- package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.js +13 -0
- package/dist/components/data/ag-grid-react/useGridAutoSizeStrategyOnResize.js +8 -5
- package/dist/components/data/data-table/build-column-tree-from-grid.d.ts +14 -0
- package/dist/components/data/data-table/build-column-tree-from-grid.js +95 -0
- package/dist/components/data/data-table/data-table-column-apply.d.ts +29 -0
- package/dist/components/data/data-table/data-table-column-apply.js +102 -0
- package/dist/components/data/data-table/data-table-column-def-pin.d.ts +25 -0
- package/dist/components/data/data-table/data-table-column-def-pin.js +66 -0
- package/dist/components/data/data-table/data-table-column-list-sync.d.ts +8 -0
- package/dist/components/data/data-table/data-table-column-list-sync.js +15 -0
- package/dist/components/data/data-table/data-table-column-list.d.ts +14 -4
- package/dist/components/data/data-table/data-table-column-list.js +74 -277
- package/dist/components/data/data-table/data-table-constants.d.ts +3 -4
- package/dist/components/data/data-table/data-table-context.d.ts +3 -6
- package/dist/components/data/data-table/data-table-context.js +21 -10
- package/dist/components/data/data-table/data-table-saved-views.js +26 -26
- package/dist/components/data/data-table/data-table-sheet-portal-store.d.ts +13 -0
- package/dist/components/data/data-table/data-table-sheet-portal-store.js +36 -0
- package/dist/components/data/data-table/data-table-sheet.d.ts +3 -6
- package/dist/components/data/data-table/data-table-sheet.js +4 -2
- package/dist/components/data/data-table/data-table-view-menu.js +40 -40
- package/dist/components/data/data-table/data-table.d.ts +8 -10
- package/dist/components/data/data-table/data-table.js +138 -111
- package/dist/components/data/data-table/data-table.types.d.ts +35 -0
- package/dist/components/data/data-table/index.js +28 -27
- package/dist/components/data/data-table/indicator-legend.js +6 -6
- package/dist/components/data/data-table/use-data-table-column-list-sync.d.ts +16 -0
- package/dist/components/data/data-table/use-data-table-column-list-sync.js +222 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-attributes.d.ts +8 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +72 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-context.d.ts +13 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-context.js +25 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-metrics.d.ts +6 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +41 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-parts.d.ts +31 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-parts.js +233 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-preset.d.ts +18 -0
- package/dist/components/data/expandable-list-item/expandable-list-item-preset.js +133 -0
- package/dist/components/data/expandable-list-item/expandable-list-item.d.ts +5 -0
- package/dist/components/data/{expandable-sku/expandable-sku.types.d.ts → expandable-list-item/expandable-list-item.types.d.ts} +7 -7
- package/dist/components/data/expandable-list-item/index.d.ts +5 -0
- package/dist/components/data/expandable-list-item/index.js +19 -0
- package/dist/components/data/nested-list/components/NestedListHeader.js +11 -11
- package/dist/components/data/nested-list/components/SortableItem.js +2 -2
- package/dist/components/data-display/avatar/avatar.types.d.ts +2 -0
- package/dist/components/data-display/badge/badge.types.d.ts +2 -0
- package/dist/components/data-display/calendar/calendar-day-picker-classnames.js +11 -11
- package/dist/components/data-display/calendar/calendar-month-picker-panel.js +7 -7
- package/dist/components/data-display/calendar/calendar-week-number-cell.js +31 -31
- package/dist/components/data-display/card/card.js +8 -8
- package/dist/components/data-display/chart/chart.types.d.ts +9 -0
- package/dist/components/data-display/skeleton/skeleton.js +6 -6
- package/dist/components/data-display/statistics-card/statistics-card.js +14 -14
- package/dist/components/feedback/alert-dialog/alert-dialog.js +19 -19
- package/dist/components/feedback/dialog/dialog.js +1 -1
- package/dist/components/feedback/drawer/drawer.js +18 -18
- package/dist/components/feedback/dropdown-menu/dropdown-menu.js +70 -57
- package/dist/components/feedback/popover/popover.js +1 -1
- package/dist/components/feedback/sheet/sheet.js +1 -1
- package/dist/components/feedback/tooltip/tooltip.js +22 -22
- package/dist/components/feedback/tooltip/tooltip.variants.js +1 -1
- package/dist/components/flows/command-palette/command-palette.js +104 -104
- package/dist/components/flows/command-palette/shortcut-settings.js +34 -34
- package/dist/components/flows/filter-strip/filter-tag-list.js +4 -4
- package/dist/components/flows/notification-panel/notification-list.js +17 -17
- package/dist/components/flows/notification-panel/notification-panel.js +4 -4
- package/dist/components/flows/notification-panel/notification-panel.types.d.ts +3 -0
- package/dist/components/flows/wizard/wizard.js +8 -8
- package/dist/components/forms/combobox/combobox.js +20 -20
- package/dist/components/forms/date-picker/date-picker.js +17 -17
- package/dist/components/forms/date-picker/date-range-picker.js +3 -3
- package/dist/components/forms/date-picker/month-picker.js +1 -1
- package/dist/components/forms/date-picker/month-range-picker.js +42 -42
- package/dist/components/forms/date-picker/week-picker.js +15 -15
- package/dist/components/forms/date-picker/week-range-picker.js +3 -3
- package/dist/components/forms/file-upload/file-upload.js +33 -33
- package/dist/components/forms/input/input.js +8 -8
- package/dist/components/forms/input/input.variants.js +3 -3
- package/dist/components/forms/select/components/SelectMenuPanel.d.ts +1 -2
- package/dist/components/forms/select/components/SelectMenuPanel.js +18 -20
- package/dist/components/forms/select/components/SelectTrigger.d.ts +9 -6
- package/dist/components/forms/select/components/SelectTrigger.js +120 -122
- package/dist/components/forms/select/components/Submenu.js +8 -8
- package/dist/components/forms/select/hooks/useSelectKeyboardHandlers.d.ts +1 -1
- package/dist/components/forms/select/hooks/useSelectValueState.d.ts +19 -0
- package/dist/components/forms/select/hooks/useSelectValueState.js +41 -0
- package/dist/components/forms/select/index.js +4 -3
- package/dist/components/forms/select/select.js +180 -175
- package/dist/components/forms/select/select.types.d.ts +3 -2
- package/dist/components/forms/select/select.variants.js +4 -4
- package/dist/components/forms/select/utils/select.d.ts +2 -1
- package/dist/components/forms/select/utils/select.js +47 -37
- package/dist/components/layout/sidebar/sidebar.d.ts +7 -50
- package/dist/components/layout/sidebar/sidebar.js +12 -11
- package/dist/components/layout/sidebar/sidebar.types.d.ts +35 -1
- package/dist/components/primitives/button-group/button-group.js +32 -32
- package/dist/components/primitives/chips/chips.variants.js +5 -5
- package/dist/components/primitives/empty-container/empty-container.types.d.ts +3 -0
- package/dist/components/primitives/kbd/kbd.variants.js +3 -3
- package/dist/components/primitives/stepper/stepper.js +6 -6
- package/dist/impact-nova-components.css +113 -7
- package/dist/impact-nova-tokens.scss +2 -4
- package/dist/impact-nova.css +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +467 -433
- package/dist/lib/compose-refs.d.ts +8 -0
- package/dist/lib/compose-refs.js +14 -0
- package/dist/lib/primitives/field.types.d.ts +8 -2
- package/dist/lib/virtualized/index.d.ts +3 -0
- package/dist/lib/virtualized/index.js +33 -16
- package/dist/lib/virtualized/useVirtualizedList.d.ts +2 -0
- package/dist/lib/virtualized/useVirtualizedList.js +115 -109
- package/dist/lib/virtualized/virtualized-list-context.d.ts +12 -0
- package/dist/lib/virtualized/virtualized-list-context.js +21 -0
- package/dist/lib/virtualized/virtualized-list-parts.d.ts +51 -0
- package/dist/lib/virtualized/virtualized-list-parts.js +175 -0
- package/dist/lib/virtualized/virtualized-list-utils.d.ts +5 -0
- package/dist/lib/virtualized/virtualized-list-utils.js +6 -0
- package/dist/llms/rules/ag-grid.js +1 -1
- package/dist/llms/rules/installation.js +1 -1
- package/dist/llms/rules/migration.js +1 -1
- package/dist/llms/rules/real-world-patterns.js +1 -1
- package/dist/llms/rules/requirements.js +1 -1
- package/package.json +24 -15
- package/tailwind.config.js +1 -0
- package/dist/components/data/ag-grid-react/headers/components/truncated-text.d.ts +0 -15
- package/dist/components/data/ag-grid-react/headers/components/truncated-text.js +0 -27
- package/dist/components/data/expandable-sku/expandable-sku.d.ts +0 -38
- package/dist/components/data/expandable-sku/expandable-sku.js +0 -245
- package/dist/components/data/expandable-sku/index.d.ts +0 -2
- package/dist/components/data/expandable-sku/index.js +0 -4
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ExpandableListItemSection, ExpandableListItemSelection } from './expandable-list-item.types';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export interface ExpandableListItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "onChange"> {
|
|
4
|
+
title: string;
|
|
5
|
+
description?: React.ReactNode;
|
|
6
|
+
badge?: React.ReactNode;
|
|
7
|
+
selection?: ExpandableListItemSelection;
|
|
8
|
+
selected?: boolean;
|
|
9
|
+
expanded?: boolean;
|
|
10
|
+
defaultExpanded?: boolean;
|
|
11
|
+
onExpandedChange?: (open: boolean) => void;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
sections?: ReadonlyArray<ExpandableListItemSection>;
|
|
14
|
+
panelFooter?: React.ReactNode;
|
|
15
|
+
expandAriaLabel?: string;
|
|
16
|
+
collapseAriaLabel?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const ExpandableListItem: React.ForwardRefExoticComponent<ExpandableListItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { jsx as l, jsxs as d } from "react/jsx-runtime";
|
|
2
|
+
import * as R from "react";
|
|
3
|
+
import { ExpandableListItemAttributes as T } from "./expandable-list-item-attributes.js";
|
|
4
|
+
import { ExpandableListItemMetrics as v } from "./expandable-list-item-metrics.js";
|
|
5
|
+
import { ExpandableListItemRoot as f, ExpandableListItemRow as o, ExpandableListItemCheckbox as C, ExpandableListItemHeader as E, ExpandableListItemMedia as I, ExpandableListItemTitle as k, ExpandableListItemDescription as L, ExpandableListItemTrigger as y, ExpandableListItemContent as j, ExpandableListItemFooter as M } from "./expandable-list-item-parts.js";
|
|
6
|
+
function O(e) {
|
|
7
|
+
switch (e.type) {
|
|
8
|
+
case "metrics":
|
|
9
|
+
return /* @__PURE__ */ l(
|
|
10
|
+
v,
|
|
11
|
+
{
|
|
12
|
+
sectionId: e.id,
|
|
13
|
+
columns: e.columns
|
|
14
|
+
},
|
|
15
|
+
e.id
|
|
16
|
+
);
|
|
17
|
+
case "attributes":
|
|
18
|
+
return /* @__PURE__ */ l(
|
|
19
|
+
T,
|
|
20
|
+
{
|
|
21
|
+
title: e.title,
|
|
22
|
+
tags: e.tags,
|
|
23
|
+
maxVisibleTags: e.maxVisibleTags,
|
|
24
|
+
formatOverflow: e.formatOverflow
|
|
25
|
+
},
|
|
26
|
+
e.id
|
|
27
|
+
);
|
|
28
|
+
case "custom":
|
|
29
|
+
return /* @__PURE__ */ l(V, { section: e }, e.id);
|
|
30
|
+
default:
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function V({ section: e }) {
|
|
35
|
+
return /* @__PURE__ */ l("div", { className: "px-4 py-4 sm:px-5", children: e.content });
|
|
36
|
+
}
|
|
37
|
+
const $ = R.forwardRef(
|
|
38
|
+
({
|
|
39
|
+
className: e,
|
|
40
|
+
title: t,
|
|
41
|
+
description: n,
|
|
42
|
+
badge: m,
|
|
43
|
+
selection: a,
|
|
44
|
+
selected: g,
|
|
45
|
+
expanded: w,
|
|
46
|
+
defaultExpanded: S = !1,
|
|
47
|
+
onExpandedChange: P,
|
|
48
|
+
disabled: c,
|
|
49
|
+
sections: i,
|
|
50
|
+
panelFooter: h,
|
|
51
|
+
expandAriaLabel: s = "Expand details",
|
|
52
|
+
collapseAriaLabel: u = "Collapse details",
|
|
53
|
+
...b
|
|
54
|
+
}, p) => {
|
|
55
|
+
const x = !!(g || a?.checked);
|
|
56
|
+
return i != null && i.length > 0 || h != null ? /* @__PURE__ */ d(
|
|
57
|
+
f,
|
|
58
|
+
{
|
|
59
|
+
ref: p,
|
|
60
|
+
className: e,
|
|
61
|
+
selected: x,
|
|
62
|
+
expanded: w,
|
|
63
|
+
defaultExpanded: S,
|
|
64
|
+
onExpandedChange: P,
|
|
65
|
+
disabled: c,
|
|
66
|
+
expandAriaLabel: s,
|
|
67
|
+
collapseAriaLabel: u,
|
|
68
|
+
...b,
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ d(o, { children: [
|
|
71
|
+
a ? /* @__PURE__ */ l(
|
|
72
|
+
C,
|
|
73
|
+
{
|
|
74
|
+
checked: a.checked,
|
|
75
|
+
disabled: a.disabled,
|
|
76
|
+
onCheckedChange: (r) => {
|
|
77
|
+
r !== a.checked && a.onCheckedChange(r);
|
|
78
|
+
},
|
|
79
|
+
"aria-label": a["aria-label"] ?? `Select ${t}`
|
|
80
|
+
}
|
|
81
|
+
) : null,
|
|
82
|
+
/* @__PURE__ */ l(y, { children: /* @__PURE__ */ d(E, { children: [
|
|
83
|
+
/* @__PURE__ */ d(I, { children: [
|
|
84
|
+
/* @__PURE__ */ l(k, { children: t }),
|
|
85
|
+
m
|
|
86
|
+
] }),
|
|
87
|
+
n ? /* @__PURE__ */ l(L, { children: n }) : null
|
|
88
|
+
] }) })
|
|
89
|
+
] }),
|
|
90
|
+
/* @__PURE__ */ d(j, { children: [
|
|
91
|
+
i?.map((r) => O(r)),
|
|
92
|
+
h ? /* @__PURE__ */ l(M, { children: h }) : null
|
|
93
|
+
] })
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
) : /* @__PURE__ */ l(
|
|
97
|
+
f,
|
|
98
|
+
{
|
|
99
|
+
ref: p,
|
|
100
|
+
className: e,
|
|
101
|
+
selected: x,
|
|
102
|
+
disabled: c,
|
|
103
|
+
expandAriaLabel: s,
|
|
104
|
+
collapseAriaLabel: u,
|
|
105
|
+
...b,
|
|
106
|
+
children: /* @__PURE__ */ d(o, { children: [
|
|
107
|
+
a ? /* @__PURE__ */ l(
|
|
108
|
+
C,
|
|
109
|
+
{
|
|
110
|
+
checked: a.checked,
|
|
111
|
+
disabled: a.disabled,
|
|
112
|
+
onCheckedChange: (r) => {
|
|
113
|
+
r !== a.checked && a.onCheckedChange(r);
|
|
114
|
+
},
|
|
115
|
+
"aria-label": a["aria-label"] ?? `Select ${t}`
|
|
116
|
+
}
|
|
117
|
+
) : null,
|
|
118
|
+
/* @__PURE__ */ d(E, { children: [
|
|
119
|
+
/* @__PURE__ */ d(I, { children: [
|
|
120
|
+
/* @__PURE__ */ l(k, { children: t }),
|
|
121
|
+
m
|
|
122
|
+
] }),
|
|
123
|
+
n ? /* @__PURE__ */ l(L, { children: n }) : null
|
|
124
|
+
] })
|
|
125
|
+
] })
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
$.displayName = "ExpandableListItem";
|
|
131
|
+
export {
|
|
132
|
+
$ as ExpandableListItem
|
|
133
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ExpandableListItem, type ExpandableListItemProps, } from './expandable-list-item-preset';
|
|
2
|
+
export { ExpandableListItemRoot, ExpandableListItemRow, ExpandableListItemCheckbox, ExpandableListItemTrigger, ExpandableListItemTitle, ExpandableListItemDescription, ExpandableListItemMedia, ExpandableListItemHeader, ExpandableListItemContent, ExpandableListItemFooter, type ExpandableListItemRootProps, type ExpandableListItemCheckboxProps, } from './expandable-list-item-parts';
|
|
3
|
+
export { ExpandableListItemMetrics, type ExpandableListItemMetricsProps } from './expandable-list-item-metrics';
|
|
4
|
+
export { ExpandableListItemAttributes, type ExpandableListItemAttributesProps, } from './expandable-list-item-attributes';
|
|
5
|
+
export type { ExpandableListItemAttributesSection, ExpandableListItemCustomSection, ExpandableListItemMetricColumn, ExpandableListItemMetricsSection, ExpandableListItemSelection, ExpandableListItemSection, } from './expandable-list-item.types';
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
export type
|
|
2
|
+
export type ExpandableListItemMetricColumn = {
|
|
3
3
|
label: string;
|
|
4
4
|
value: string;
|
|
5
5
|
};
|
|
6
6
|
/** Horizontal metrics row (any column count). */
|
|
7
|
-
export type
|
|
7
|
+
export type ExpandableListItemMetricsSection = {
|
|
8
8
|
id: string;
|
|
9
9
|
type: "metrics";
|
|
10
|
-
columns: ReadonlyArray<
|
|
10
|
+
columns: ReadonlyArray<ExpandableListItemMetricColumn>;
|
|
11
11
|
};
|
|
12
12
|
/** Tag pills with optional overflow summary (e.g. `+64`). */
|
|
13
|
-
export type
|
|
13
|
+
export type ExpandableListItemAttributesSection = {
|
|
14
14
|
id: string;
|
|
15
15
|
type: "attributes";
|
|
16
16
|
title?: string;
|
|
@@ -21,13 +21,13 @@ export type SkuRowAttributesSection = {
|
|
|
21
21
|
formatOverflow?: (hiddenCount: number) => string;
|
|
22
22
|
};
|
|
23
23
|
/** Arbitrary block inside the expanded panel. */
|
|
24
|
-
export type
|
|
24
|
+
export type ExpandableListItemCustomSection = {
|
|
25
25
|
id: string;
|
|
26
26
|
type: "custom";
|
|
27
27
|
content: ReactNode;
|
|
28
28
|
};
|
|
29
|
-
export type
|
|
30
|
-
export type
|
|
29
|
+
export type ExpandableListItemSection = ExpandableListItemMetricsSection | ExpandableListItemAttributesSection | ExpandableListItemCustomSection;
|
|
30
|
+
export type ExpandableListItemSelection = {
|
|
31
31
|
checked: boolean;
|
|
32
32
|
onCheckedChange: (checked: boolean) => void;
|
|
33
33
|
disabled?: boolean;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ExpandableListItem, type ExpandableListItemProps, } from './expandable-list-item-preset';
|
|
2
|
+
export { ExpandableListItemRoot, ExpandableListItemRow, ExpandableListItemCheckbox, ExpandableListItemTrigger, ExpandableListItemTitle, ExpandableListItemDescription, ExpandableListItemMedia, ExpandableListItemHeader, ExpandableListItemContent, ExpandableListItemFooter, type ExpandableListItemRootProps, type ExpandableListItemCheckboxProps, } from './expandable-list-item-parts';
|
|
3
|
+
export { ExpandableListItemMetrics, type ExpandableListItemMetricsProps } from './expandable-list-item-metrics';
|
|
4
|
+
export { ExpandableListItemAttributes, type ExpandableListItemAttributesProps, } from './expandable-list-item-attributes';
|
|
5
|
+
export type { ExpandableListItemAttributesSection, ExpandableListItemCustomSection, ExpandableListItemMetricColumn, ExpandableListItemMetricsSection, ExpandableListItemSelection, ExpandableListItemSection, } from './expandable-list-item.types';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ExpandableListItem as a } from "./expandable-list-item-preset.js";
|
|
2
|
+
import { ExpandableListItemCheckbox as p, ExpandableListItemContent as x, ExpandableListItemDescription as m, ExpandableListItemFooter as n, ExpandableListItemHeader as o, ExpandableListItemMedia as s, ExpandableListItemRoot as b, ExpandableListItemRow as d, ExpandableListItemTitle as r, ExpandableListItemTrigger as l } from "./expandable-list-item-parts.js";
|
|
3
|
+
import { ExpandableListItemMetrics as I } from "./expandable-list-item-metrics.js";
|
|
4
|
+
import { ExpandableListItemAttributes as f } from "./expandable-list-item-attributes.js";
|
|
5
|
+
export {
|
|
6
|
+
a as ExpandableListItem,
|
|
7
|
+
f as ExpandableListItemAttributes,
|
|
8
|
+
p as ExpandableListItemCheckbox,
|
|
9
|
+
x as ExpandableListItemContent,
|
|
10
|
+
m as ExpandableListItemDescription,
|
|
11
|
+
n as ExpandableListItemFooter,
|
|
12
|
+
o as ExpandableListItemHeader,
|
|
13
|
+
s as ExpandableListItemMedia,
|
|
14
|
+
I as ExpandableListItemMetrics,
|
|
15
|
+
b as ExpandableListItemRoot,
|
|
16
|
+
d as ExpandableListItemRow,
|
|
17
|
+
r as ExpandableListItemTitle,
|
|
18
|
+
l as ExpandableListItemTrigger
|
|
19
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as t, jsxs as o } from "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
-
import { Checkbox as
|
|
4
|
-
import { Input as
|
|
3
|
+
import { Checkbox as v } from "../../../forms/checkbox/checkbox.js";
|
|
4
|
+
import { Input as N } from "../../../forms/input/input.js";
|
|
5
5
|
import { ChevronRight as k, Search as g } from "impact-nova-icons";
|
|
6
6
|
import { cn as C } from "../../../../lib/utils.js";
|
|
7
7
|
import { useImpactNovaI18n as z } from "../../../../i18n/use-impact-nova-i18n.js";
|
|
@@ -12,8 +12,8 @@ const E = ({
|
|
|
12
12
|
enableSearch: n,
|
|
13
13
|
enableSelectAll: e,
|
|
14
14
|
groupLabel: i,
|
|
15
|
-
allChecked:
|
|
16
|
-
isIndeterminate:
|
|
15
|
+
allChecked: a,
|
|
16
|
+
isIndeterminate: m = !1,
|
|
17
17
|
onSelectAll: d,
|
|
18
18
|
searchText: x,
|
|
19
19
|
onSearchChange: l,
|
|
@@ -28,7 +28,7 @@ const E = ({
|
|
|
28
28
|
{
|
|
29
29
|
type: "button",
|
|
30
30
|
onClick: y,
|
|
31
|
-
className: "p-1 hover:bg-muted rounded-full transition-colors flex items-center text-content-icon hover:text-brand",
|
|
31
|
+
className: "p-1 hover:bg-canvas-muted rounded-full transition-colors flex items-center text-content-icon hover:text-brand",
|
|
32
32
|
"aria-label": u(c ? "nestedList.expandAll" : "nestedList.collapseAll"),
|
|
33
33
|
children: /* @__PURE__ */ t(
|
|
34
34
|
k,
|
|
@@ -46,14 +46,14 @@ const E = ({
|
|
|
46
46
|
] }),
|
|
47
47
|
/* @__PURE__ */ o("div", { className: "flex items-center gap-1", children: [
|
|
48
48
|
e && /* @__PURE__ */ t(
|
|
49
|
-
|
|
49
|
+
v,
|
|
50
50
|
{
|
|
51
|
-
checked:
|
|
51
|
+
checked: m ? "indeterminate" : a,
|
|
52
52
|
onCheckedChange: d
|
|
53
53
|
}
|
|
54
54
|
),
|
|
55
55
|
n ? /* @__PURE__ */ t("div", { className: "flex-1 ml-auto", children: /* @__PURE__ */ t(
|
|
56
|
-
|
|
56
|
+
N,
|
|
57
57
|
{
|
|
58
58
|
type: "text",
|
|
59
59
|
placeholder: p,
|
|
@@ -66,14 +66,14 @@ const E = ({
|
|
|
66
66
|
] }) : /* @__PURE__ */ o("div", { className: "flex items-center gap-1 mb-3", children: [
|
|
67
67
|
s && r && h,
|
|
68
68
|
e && /* @__PURE__ */ t(
|
|
69
|
-
|
|
69
|
+
v,
|
|
70
70
|
{
|
|
71
|
-
checked:
|
|
71
|
+
checked: m ? "indeterminate" : a,
|
|
72
72
|
onCheckedChange: d
|
|
73
73
|
}
|
|
74
74
|
),
|
|
75
75
|
n ? /* @__PURE__ */ t("div", { className: "flex-1 ml-auto", children: /* @__PURE__ */ t(
|
|
76
|
-
|
|
76
|
+
N,
|
|
77
77
|
{
|
|
78
78
|
type: "text",
|
|
79
79
|
placeholder: p,
|
|
@@ -102,7 +102,7 @@ const E = (e, r) => {
|
|
|
102
102
|
d.stopPropagation(), i(e.id);
|
|
103
103
|
},
|
|
104
104
|
onMouseDown: (d) => d.stopPropagation(),
|
|
105
|
-
className: "flex h-4 w-4 items-center justify-center rounded-full p-0 hover:bg-muted transition-colors text-content-icon hover:text-brand",
|
|
105
|
+
className: "flex h-4 w-4 items-center justify-center rounded-full p-0 hover:bg-canvas-muted transition-colors text-content-icon hover:text-brand",
|
|
106
106
|
"aria-label": h(a ? "nestedList.expand" : "nestedList.collapse"),
|
|
107
107
|
children: /* @__PURE__ */ t(
|
|
108
108
|
P,
|
|
@@ -130,7 +130,7 @@ const E = (e, r) => {
|
|
|
130
130
|
...C,
|
|
131
131
|
...I,
|
|
132
132
|
"aria-label": `${h("aria.dragHandle")}: ${e.label}`,
|
|
133
|
-
className: "shrink-0 mt-0.5 cursor-grab active:cursor-grabbing p-0 hover:bg-muted rounded flex items-center h-4",
|
|
133
|
+
className: "shrink-0 mt-0.5 cursor-grab active:cursor-grabbing p-0 hover:bg-canvas-muted rounded flex items-center h-4",
|
|
134
134
|
style: {
|
|
135
135
|
pointerEvents: "auto",
|
|
136
136
|
position: "relative",
|
|
@@ -3,5 +3,7 @@ import { avatarVariants } from './avatar.variants';
|
|
|
3
3
|
import type * as React from "react";
|
|
4
4
|
import type * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
5
5
|
export type AvatarProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root> & VariantProps<typeof avatarVariants>;
|
|
6
|
+
/** Image slot — Radix `Avatar.Image`. Cross-fades to `AvatarFallback` on load failure. */
|
|
6
7
|
export type AvatarImageProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>;
|
|
8
|
+
/** Shown when the image is loading or failed. Use 1–2 initials or an icon. */
|
|
7
9
|
export type AvatarFallbackProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>;
|
|
@@ -2,6 +2,8 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
2
2
|
import { badgeVariants } from './badge.variants';
|
|
3
3
|
import type * as React from "react";
|
|
4
4
|
export interface BadgeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "color">, Omit<VariantProps<typeof badgeVariants>, "layout"> {
|
|
5
|
+
/** Optional leading icon (16px). Omit `children` for icon-only badge (`data-layout="iconOnly"`). */
|
|
5
6
|
icon?: React.ReactNode;
|
|
7
|
+
/** Inactive visual — `pointer-events-none` and disabled token colors. */
|
|
6
8
|
disabled?: boolean;
|
|
7
9
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "react-day-picker";
|
|
2
2
|
import { cn as e } from "../../../lib/utils.js";
|
|
3
3
|
function s(o) {
|
|
4
|
-
const { defaultClassNames: t, pickerType:
|
|
4
|
+
const { defaultClassNames: t, pickerType: r, calendarType: l, showOutsideDays: a, classNames: n } = o;
|
|
5
5
|
return {
|
|
6
6
|
root: e("w-fit", t.root),
|
|
7
7
|
months: e("relative", t.months),
|
|
@@ -33,39 +33,39 @@ function s(o) {
|
|
|
33
33
|
),
|
|
34
34
|
weekday: e(
|
|
35
35
|
"flex-1 select-none rounded-md font-normal text-center",
|
|
36
|
-
"text-[11px] text-
|
|
36
|
+
"text-[11px] text-secondary-foreground pb-2",
|
|
37
37
|
"[&:nth-child(2)]:pl-2",
|
|
38
38
|
t.weekday
|
|
39
39
|
),
|
|
40
40
|
week: e("mt-1 flex w-full items-stretch group/week", t.week),
|
|
41
41
|
week_number_header: e(
|
|
42
42
|
"select-none font-normal text-center h-[30px] flex items-center justify-center",
|
|
43
|
-
"text-[11px] text-
|
|
43
|
+
"text-[11px] text-secondary-foreground w-[30px] flex-shrink-0",
|
|
44
44
|
t.week_number_header
|
|
45
45
|
),
|
|
46
46
|
week_number: e(
|
|
47
47
|
"select-none flex items-center justify-center h-[30px]",
|
|
48
|
-
"text-[11px] text-
|
|
49
|
-
|
|
48
|
+
"text-[11px] text-secondary-foreground w-[30px] flex-shrink-0 transition-colors",
|
|
49
|
+
r === "week" && "group-hover/week:bg-accent group-hover/week:rounded-l-lg",
|
|
50
50
|
t.week_number
|
|
51
51
|
),
|
|
52
52
|
day: e(
|
|
53
53
|
"group/day relative select-none p-0 text-center flex-1 h-[30px] flex items-center justify-center [&:nth-child(2)]:pl-2 rdp-day",
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
r === "week" && "group-hover/week:bg-accent [&:nth-child(2)]:group-hover/week:rounded-l-full [&:nth-child(8)]:group-hover/week:rounded-r-full",
|
|
55
|
+
r === "week" && "[&.rdp-selected:nth-child(2)]:rounded-l-full [&.rdp-selected:nth-child(8)]:rounded-r-full",
|
|
56
|
+
n?.day
|
|
57
57
|
),
|
|
58
58
|
range_start: e("bg-accent rounded-l-full", t.range_start),
|
|
59
59
|
range_middle: e("bg-accent rounded-none", t.range_middle),
|
|
60
60
|
range_end: e("bg-accent rounded-r-full", t.range_end),
|
|
61
61
|
today: e("text-brand", t.today),
|
|
62
62
|
outside: e(
|
|
63
|
-
l === "fiscal" || a ? "text-
|
|
63
|
+
l === "fiscal" || a ? "text-secondary-foreground opacity-50" : "invisible",
|
|
64
64
|
t.outside
|
|
65
65
|
),
|
|
66
|
-
disabled: e("text-
|
|
66
|
+
disabled: e("text-secondary-foreground opacity-50", t.disabled),
|
|
67
67
|
hidden: e("invisible", t.hidden),
|
|
68
|
-
...
|
|
68
|
+
...n
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
export {
|
|
@@ -7,7 +7,7 @@ import { isMonthRangeSelection as q } from "../../forms/date-picker/calendar-sel
|
|
|
7
7
|
function K({
|
|
8
8
|
yearOffset: s = 0,
|
|
9
9
|
displayYear: e,
|
|
10
|
-
monthMode:
|
|
10
|
+
monthMode: h,
|
|
11
11
|
monthsShort: N,
|
|
12
12
|
showFooter: p,
|
|
13
13
|
pendingMonthSelection: w,
|
|
@@ -15,7 +15,7 @@ function K({
|
|
|
15
15
|
resolvedStartYear: S,
|
|
16
16
|
resolvedEndYear: j,
|
|
17
17
|
yearOptions: k,
|
|
18
|
-
previousYearLabel:
|
|
18
|
+
previousYearLabel: u,
|
|
19
19
|
nextYearLabel: g,
|
|
20
20
|
isMonthSelected: z,
|
|
21
21
|
getMonthRangeProps: R,
|
|
@@ -33,8 +33,8 @@ function K({
|
|
|
33
33
|
variant: "ghost",
|
|
34
34
|
size: "icon",
|
|
35
35
|
className: "h-7 w-7 shrink-0",
|
|
36
|
-
"aria-label":
|
|
37
|
-
title:
|
|
36
|
+
"aria-label": u,
|
|
37
|
+
title: u,
|
|
38
38
|
disabled: e <= S,
|
|
39
39
|
onClick: () => P(e),
|
|
40
40
|
children: /* @__PURE__ */ t(v, { size: 16, className: "rotate-180" })
|
|
@@ -54,7 +54,7 @@ function K({
|
|
|
54
54
|
menuWidth: "140px"
|
|
55
55
|
}
|
|
56
56
|
) }),
|
|
57
|
-
(
|
|
57
|
+
(h === "single" || s === 1) && /* @__PURE__ */ t(
|
|
58
58
|
m,
|
|
59
59
|
{
|
|
60
60
|
variant: "ghost",
|
|
@@ -69,7 +69,7 @@ function K({
|
|
|
69
69
|
)
|
|
70
70
|
] }),
|
|
71
71
|
/* @__PURE__ */ t("div", { className: "grid grid-cols-4 gap-x-0 gap-y-4", children: N.map((r, o) => {
|
|
72
|
-
const f = z(e, o), { isStart: l, isEnd: i, isMiddle: a } = R(e, o), c =
|
|
72
|
+
const f = z(e, o), { isStart: l, isEnd: i, isMiddle: a } = R(e, o), c = h === "range", b = p ? w : C, I = q(b) && !!b.to, n = M(e, o);
|
|
73
73
|
return /* @__PURE__ */ d("div", { className: "group relative flex h-10 w-full items-center justify-center", children: [
|
|
74
74
|
c && I && (a || l || i) && !n && /* @__PURE__ */ t(
|
|
75
75
|
"div",
|
|
@@ -95,7 +95,7 @@ function K({
|
|
|
95
95
|
c && (l || i) && !n && "rounded-lg bg-brand text-brand-foreground hover:bg-brand/90 hover:text-brand-foreground",
|
|
96
96
|
!f && !n && "border border-transparent hover:border-brand hover:bg-accent hover:text-accent-foreground",
|
|
97
97
|
a && !n && "text-accent-foreground",
|
|
98
|
-
n && "cursor-not-allowed text-content-
|
|
98
|
+
n && "cursor-not-allowed text-content-placeholder opacity-50"
|
|
99
99
|
),
|
|
100
100
|
children: r
|
|
101
101
|
}
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
-
import { cn as
|
|
3
|
+
import { cn as a } from "../../../lib/utils.js";
|
|
4
4
|
function C({
|
|
5
|
-
week:
|
|
6
|
-
weekStartsOn:
|
|
5
|
+
week: y,
|
|
6
|
+
weekStartsOn: c,
|
|
7
7
|
pickerType: h,
|
|
8
8
|
weekNumberLabel: i,
|
|
9
9
|
weekLabel: p,
|
|
10
|
-
onWeekSelect:
|
|
11
|
-
className:
|
|
10
|
+
onWeekSelect: m,
|
|
11
|
+
className: s,
|
|
12
12
|
...f
|
|
13
13
|
}) {
|
|
14
|
-
const e =
|
|
14
|
+
const e = y.days.find((o) => !o.outside)?.date;
|
|
15
15
|
if (!e)
|
|
16
|
-
return /* @__PURE__ */
|
|
16
|
+
return /* @__PURE__ */ r(
|
|
17
17
|
"td",
|
|
18
18
|
{
|
|
19
19
|
...f,
|
|
20
|
-
className:
|
|
21
|
-
"select-none flex h-8 w-8 flex-shrink-0 items-center justify-center text-[11px] text-
|
|
22
|
-
|
|
20
|
+
className: a(
|
|
21
|
+
"select-none flex h-8 w-8 flex-shrink-0 items-center justify-center text-[11px] text-secondary-foreground rdp-week_number",
|
|
22
|
+
s
|
|
23
23
|
),
|
|
24
|
-
children: /* @__PURE__ */
|
|
24
|
+
children: /* @__PURE__ */ r("div", { className: "flex size-[--cell-size] items-center justify-center text-center" })
|
|
25
25
|
}
|
|
26
26
|
);
|
|
27
|
-
const l = e.getFullYear(),
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
(
|
|
31
|
-
) + 1, x = p(
|
|
27
|
+
const l = e.getFullYear(), d = e.getMonth(), k = (new Date(l, d, 1).getDay() + 7 - c) % 7, D = new Date(l, d, 1 - k), u = new Date(e), g = (e.getDay() + 7 - c) % 7;
|
|
28
|
+
u.setDate(e.getDate() - g);
|
|
29
|
+
const n = Math.round(
|
|
30
|
+
(u.getTime() - D.getTime()) / (10080 * 60 * 1e3)
|
|
31
|
+
) + 1, x = p(n);
|
|
32
32
|
if (h === "week") {
|
|
33
|
-
const
|
|
34
|
-
return /* @__PURE__ */
|
|
33
|
+
const o = () => m(e);
|
|
34
|
+
return /* @__PURE__ */ r(
|
|
35
35
|
"td",
|
|
36
36
|
{
|
|
37
37
|
"aria-label": x,
|
|
38
|
-
"data-week-index":
|
|
39
|
-
"data-week-number":
|
|
38
|
+
"data-week-index": n,
|
|
39
|
+
"data-week-number": n,
|
|
40
40
|
tabIndex: 0,
|
|
41
41
|
role: "button",
|
|
42
|
-
className:
|
|
42
|
+
className: a(
|
|
43
43
|
"select-none flex h-[30px] w-[30px] flex-shrink-0 cursor-pointer items-center justify-center rounded-lg rdp-week_number transition-colors hover:bg-accent hover:text-accent-foreground group-hover/week:bg-accent group-hover/week:rounded-l-lg",
|
|
44
|
-
|
|
44
|
+
s
|
|
45
45
|
),
|
|
46
46
|
onClick: (t) => {
|
|
47
|
-
t.preventDefault(), t.stopPropagation(),
|
|
47
|
+
t.preventDefault(), t.stopPropagation(), o();
|
|
48
48
|
},
|
|
49
49
|
onKeyDown: (t) => {
|
|
50
|
-
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), t.stopPropagation(),
|
|
50
|
+
(t.key === "Enter" || t.key === " ") && (t.preventDefault(), t.stopPropagation(), o());
|
|
51
51
|
},
|
|
52
|
-
children: /* @__PURE__ */
|
|
52
|
+
children: /* @__PURE__ */ r("div", { className: "flex h-8 w-full items-center justify-center text-center text-[11px] text-secondary-foreground", children: i(n) })
|
|
53
53
|
}
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
|
-
return /* @__PURE__ */
|
|
56
|
+
return /* @__PURE__ */ r(
|
|
57
57
|
"th",
|
|
58
58
|
{
|
|
59
59
|
...f,
|
|
60
60
|
"aria-label": x,
|
|
61
|
-
className:
|
|
62
|
-
"select-none flex h-[30px] w-[30px] flex-shrink-0 items-center justify-center text-[11px] text-
|
|
63
|
-
|
|
61
|
+
className: a(
|
|
62
|
+
"select-none flex h-[30px] w-[30px] flex-shrink-0 items-center justify-center text-[11px] text-secondary-foreground rdp-week_number",
|
|
63
|
+
s
|
|
64
64
|
),
|
|
65
65
|
scope: "row",
|
|
66
|
-
children: /* @__PURE__ */
|
|
66
|
+
children: /* @__PURE__ */ r("div", { className: "flex h-8 w-full items-center justify-center text-center", children: i(n) })
|
|
67
67
|
}
|
|
68
68
|
);
|
|
69
69
|
}
|
|
@@ -4,16 +4,16 @@ import { createCompoundPart as a } from "../../../lib/primitives/create-compound
|
|
|
4
4
|
import { cn as s } from "../../../lib/utils.js";
|
|
5
5
|
const i = d(
|
|
6
6
|
"Card",
|
|
7
|
-
({ className: e, ...
|
|
7
|
+
({ className: e, ...r }, t) => /* @__PURE__ */ o(
|
|
8
8
|
"div",
|
|
9
9
|
{
|
|
10
|
-
ref:
|
|
10
|
+
ref: t,
|
|
11
11
|
"data-component": "card",
|
|
12
12
|
className: s(
|
|
13
13
|
"rounded-xl border bg-canvas-elevated text-canvas-elevated-foreground shadow",
|
|
14
14
|
e
|
|
15
15
|
),
|
|
16
|
-
...
|
|
16
|
+
...r
|
|
17
17
|
}
|
|
18
18
|
)
|
|
19
19
|
), l = a("card", {
|
|
@@ -24,11 +24,11 @@ const i = d(
|
|
|
24
24
|
part: "title",
|
|
25
25
|
displayName: "CardTitle",
|
|
26
26
|
className: "font-semibold leading-none tracking-tight"
|
|
27
|
-
}),
|
|
27
|
+
}), f = a("card", {
|
|
28
28
|
part: "description",
|
|
29
29
|
displayName: "CardDescription",
|
|
30
|
-
className: "text-sm text-
|
|
31
|
-
}),
|
|
30
|
+
className: "text-sm text-secondary-foreground"
|
|
31
|
+
}), N = a("card", {
|
|
32
32
|
part: "content",
|
|
33
33
|
displayName: "CardContent",
|
|
34
34
|
className: "p-6 pt-0"
|
|
@@ -39,8 +39,8 @@ const i = d(
|
|
|
39
39
|
});
|
|
40
40
|
export {
|
|
41
41
|
i as Card,
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
N as CardContent,
|
|
43
|
+
f as CardDescription,
|
|
44
44
|
x as CardFooter,
|
|
45
45
|
l as CardHeader,
|
|
46
46
|
C as CardTitle
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type * as Highcharts from 'highcharts';
|
|
2
2
|
export type ChartSeriesOptions = Highcharts.SeriesOptionsType;
|
|
3
3
|
export type ChartType = ChartSeriesOptions['type'];
|
|
4
|
+
/**
|
|
5
|
+
* Impact Nova chart props — a styled wrapper around Highcharts only.
|
|
6
|
+
*
|
|
7
|
+
* - `series` accepts native `Highcharts.SeriesOptionsType[]` (all Highcharts series types).
|
|
8
|
+
* - `options` accepts full `Highcharts.Options` and merges over design-system defaults.
|
|
9
|
+
* - Simplified props map common cases; use `options` for the rest of the Highcharts API.
|
|
10
|
+
*
|
|
11
|
+
* @see https://api.highcharts.com/highcharts/
|
|
12
|
+
*/
|
|
4
13
|
export interface ChartProps {
|
|
5
14
|
type?: ChartType;
|
|
6
15
|
series?: ChartSeriesOptions[];
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { createComponent as
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
|
2
|
+
import { createComponent as n } from "../../../lib/primitives/create-component.js";
|
|
3
3
|
import { cn as r } from "../../../lib/utils.js";
|
|
4
|
-
const s =
|
|
4
|
+
const s = n(
|
|
5
5
|
"Skeleton",
|
|
6
|
-
({ className:
|
|
6
|
+
({ className: e, ...o }, t) => /* @__PURE__ */ m(
|
|
7
7
|
"div",
|
|
8
8
|
{
|
|
9
9
|
ref: t,
|
|
10
10
|
"data-component": "skeleton",
|
|
11
|
-
className: r("animate-pulse rounded-md bg-
|
|
12
|
-
...
|
|
11
|
+
className: r("animate-pulse rounded-md bg-muted", e),
|
|
12
|
+
...o
|
|
13
13
|
}
|
|
14
14
|
)
|
|
15
15
|
);
|