@nocoo/basalt 2.0.0-rc.1 → 2.0.2
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/charts/area.d.ts +8 -4
- package/dist/charts/area.js +41 -42
- package/dist/charts/area.js.map +1 -1
- package/dist/charts/bar.d.ts +7 -4
- package/dist/charts/bar.js +34 -27
- package/dist/charts/bar.js.map +1 -1
- package/dist/charts/bullet.d.ts +6 -4
- package/dist/charts/bullet.js +18 -23
- package/dist/charts/bullet.js.map +1 -1
- package/dist/charts/chart-colors.d.ts +3 -0
- package/dist/charts/charts.d.ts +6 -4
- package/dist/charts/charts.js +4 -3
- package/dist/charts/charts.js.map +1 -1
- package/dist/charts/config.d.ts +26 -15
- package/dist/charts/config.js +58 -44
- package/dist/charts/config.js.map +1 -1
- package/dist/charts/custom-chart.d.ts +6 -4
- package/dist/charts/custom-chart.js +4 -3
- package/dist/charts/custom-chart.js.map +1 -1
- package/dist/charts/date-navigation.d.ts +5 -0
- package/dist/charts/date-navigation.js.map +1 -1
- package/dist/charts/donut.d.ts +6 -4
- package/dist/charts/donut.js +38 -28
- package/dist/charts/donut.js.map +1 -1
- package/dist/charts/frame.d.ts +7 -3
- package/dist/charts/frame.js +30 -7
- package/dist/charts/frame.js.map +1 -1
- package/dist/charts/funnel.d.ts +6 -4
- package/dist/charts/funnel.js +16 -17
- package/dist/charts/funnel.js.map +1 -1
- package/dist/charts/gauge.d.ts +6 -3
- package/dist/charts/gauge.js +18 -17
- package/dist/charts/gauge.js.map +1 -1
- package/dist/charts/grouped-bar.d.ts +8 -4
- package/dist/charts/grouped-bar.js +36 -29
- package/dist/charts/grouped-bar.js.map +1 -1
- package/dist/charts/heatmap-calendar.d.ts +11 -5
- package/dist/charts/heatmap-calendar.js +25 -20
- package/dist/charts/heatmap-calendar.js.map +1 -1
- package/dist/charts/item-list.d.ts +9 -7
- package/dist/charts/item-list.js +1 -5
- package/dist/charts/item-list.js.map +1 -1
- package/dist/charts/legend.d.ts +7 -0
- package/dist/charts/legend.js +56 -0
- package/dist/charts/legend.js.map +1 -0
- package/dist/charts/line.d.ts +7 -4
- package/dist/charts/line.js +33 -41
- package/dist/charts/line.js.map +1 -1
- package/dist/charts/palette.d.ts +3 -2
- package/dist/charts/palette.js.map +1 -1
- package/dist/charts/radar.d.ts +6 -4
- package/dist/charts/radar.js +18 -18
- package/dist/charts/radar.js.map +1 -1
- package/dist/charts/sample.d.ts +8 -42
- package/dist/charts/sample.js.map +1 -1
- package/dist/charts/sankey.d.ts +5 -4
- package/dist/charts/sankey.js +15 -16
- package/dist/charts/sankey.js.map +1 -1
- package/dist/charts/series.d.ts +48 -0
- package/dist/charts/series.js +19 -0
- package/dist/charts/series.js.map +1 -0
- package/dist/charts/slot-bar.d.ts +12 -5
- package/dist/charts/slot-bar.js +27 -22
- package/dist/charts/slot-bar.js.map +1 -1
- package/dist/charts/sparkline.d.ts +6 -4
- package/dist/charts/sparkline.js +12 -11
- package/dist/charts/sparkline.js.map +1 -1
- package/dist/charts/stacked-bar.d.ts +8 -4
- package/dist/charts/stacked-bar.js +40 -37
- package/dist/charts/stacked-bar.js.map +1 -1
- package/dist/charts/stat-card.d.ts +7 -5
- package/dist/charts/stat-card.js +1 -1
- package/dist/charts/stat-card.js.map +1 -1
- package/dist/charts/timeline.d.ts +15 -8
- package/dist/charts/timeline.js +9 -14
- package/dist/charts/timeline.js.map +1 -1
- package/dist/charts/timeseries.d.ts +6 -4
- package/dist/charts/timeseries.js +4 -3
- package/dist/charts/timeseries.js.map +1 -1
- package/dist/charts/tooltip.d.ts +16 -0
- package/dist/charts/tooltip.js +105 -0
- package/dist/charts/tooltip.js.map +1 -0
- package/dist/components/alert-dialog.js +1 -0
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/button.js +2 -2
- package/dist/components/button.js.map +1 -1
- package/dist/components/confirm-dialog.d.ts +5 -1
- package/dist/components/confirm-dialog.js +52 -25
- package/dist/components/confirm-dialog.js.map +1 -1
- package/dist/components/delete-resource.d.ts +5 -0
- package/dist/components/delete-resource.js +38 -0
- package/dist/components/delete-resource.js.map +1 -0
- package/dist/components/description-list.d.ts +21 -0
- package/dist/components/description-list.js +35 -0
- package/dist/components/description-list.js.map +1 -0
- package/dist/components/dialog.js +2 -1
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/layer-card.d.ts +23 -4
- package/dist/components/layer-card.js +83 -50
- package/dist/components/layer-card.js.map +1 -1
- package/dist/components/loading-screen.js +9 -5
- package/dist/components/loading-screen.js.map +1 -1
- package/dist/components/page-header.d.ts +4 -4
- package/dist/components/page-header.js +20 -23
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/resource-list.d.ts +10 -0
- package/dist/components/resource-list.js +30 -0
- package/dist/components/resource-list.js.map +1 -0
- package/dist/components/section-rule.d.ts +10 -0
- package/dist/components/section-rule.js +44 -0
- package/dist/components/section-rule.js.map +1 -0
- package/dist/components/sheet.d.ts +4 -4
- package/dist/components/sheet.js +5 -4
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +1 -0
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/table.js +6 -5
- package/dist/components/table.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +26 -25
- package/dist/providers/accent.d.ts +23 -0
- package/dist/providers/accent.js +232 -0
- package/dist/providers/accent.js.map +1 -0
- package/dist/styles/standalone.css +274 -111
- package/dist/styles/tailwind.css +1 -0
- package/dist/styles/tokens.css +69 -0
- package/dist/utils/control-surface.d.ts +1 -1
- package/dist/utils/control-surface.js +1 -1
- package/dist/utils/control-surface.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,13 +11,25 @@ export type LayerCardProps = Omit<HTMLAttributes<HTMLDivElement>, "className"> &
|
|
|
11
11
|
* Additional classes for the card root.
|
|
12
12
|
*/
|
|
13
13
|
className?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Draw a hairline ring. Default grouping is luminance only.
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
outlined?: boolean;
|
|
14
19
|
/**
|
|
15
20
|
* Inner spacing for unstructured card content.
|
|
16
|
-
* @default "
|
|
21
|
+
* @default "md"
|
|
17
22
|
*/
|
|
18
23
|
padding?: LayerCardPadding;
|
|
19
24
|
};
|
|
20
25
|
export type LayerCardSectionProps = HTMLAttributes<HTMLDivElement>;
|
|
26
|
+
export type LayerCardWellProps = LayerCardSectionProps & {
|
|
27
|
+
/**
|
|
28
|
+
* Draw a hairline ring on a nested well.
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
outlined?: boolean;
|
|
32
|
+
};
|
|
21
33
|
export type LayerCardLoadingProps = Omit<HTMLAttributes<HTMLDivElement>, "aria-label"> & {
|
|
22
34
|
/**
|
|
23
35
|
* Accessible label announced for the loading state.
|
|
@@ -40,10 +52,11 @@ export type LayerCardEmptyProps = Omit<HTMLAttributes<HTMLDivElement>, "title">
|
|
|
40
52
|
*/
|
|
41
53
|
icon?: ReactNode;
|
|
42
54
|
};
|
|
43
|
-
declare function LayerCardSecondary({ className, ...props }: LayerCardSectionProps): import("react").JSX.Element;
|
|
44
|
-
declare function LayerCardPrimary({ className, ...props }: LayerCardSectionProps): import("react").JSX.Element;
|
|
45
55
|
declare function LayerCardHeader({ className, ...props }: LayerCardSectionProps): import("react").JSX.Element;
|
|
46
56
|
declare function LayerCardBody({ className, ...props }: LayerCardSectionProps): import("react").JSX.Element;
|
|
57
|
+
declare function LayerCardWell({ className, outlined, ...props }: LayerCardWellProps): import("react").JSX.Element;
|
|
58
|
+
declare function LayerCardPrimary(props: LayerCardWellProps): import("react").JSX.Element;
|
|
59
|
+
declare function LayerCardSecondary(props: LayerCardSectionProps): import("react").JSX.Element;
|
|
47
60
|
declare function LayerCardFooter({ className, ...props }: LayerCardSectionProps): import("react").JSX.Element;
|
|
48
61
|
declare function LayerCardLoading({ label, className, ...props }: LayerCardLoadingProps): import("react").JSX.Element;
|
|
49
62
|
declare function LayerCardEmpty({ title, description, icon, className, ...props }: LayerCardEmptyProps): import("react").JSX.Element;
|
|
@@ -52,9 +65,14 @@ export declare const LayerCard: import("react").ForwardRefExoticComponent<Omit<H
|
|
|
52
65
|
* Additional classes for the card root.
|
|
53
66
|
*/
|
|
54
67
|
className?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Draw a hairline ring. Default grouping is luminance only.
|
|
70
|
+
* @default false
|
|
71
|
+
*/
|
|
72
|
+
outlined?: boolean;
|
|
55
73
|
/**
|
|
56
74
|
* Inner spacing for unstructured card content.
|
|
57
|
-
* @default "
|
|
75
|
+
* @default "md"
|
|
58
76
|
*/
|
|
59
77
|
padding?: LayerCardPadding;
|
|
60
78
|
} & import("react").RefAttributes<HTMLDivElement>> & {
|
|
@@ -62,6 +80,7 @@ export declare const LayerCard: import("react").ForwardRefExoticComponent<Omit<H
|
|
|
62
80
|
Secondary: typeof LayerCardSecondary;
|
|
63
81
|
Header: typeof LayerCardHeader;
|
|
64
82
|
Body: typeof LayerCardBody;
|
|
83
|
+
Well: typeof LayerCardWell;
|
|
65
84
|
Footer: typeof LayerCardFooter;
|
|
66
85
|
Loading: typeof LayerCardLoading;
|
|
67
86
|
Empty: typeof LayerCardEmpty;
|
|
@@ -2,85 +2,108 @@
|
|
|
2
2
|
import { cn as e } from "../utils/cn.js";
|
|
3
3
|
import { Empty as t } from "./empty.js";
|
|
4
4
|
import { SkeletonLine as n } from "./skeleton-line.js";
|
|
5
|
-
import { Children as r, Fragment as i,
|
|
6
|
-
import { jsx as
|
|
5
|
+
import { Children as r, Fragment as i, cloneElement as a, forwardRef as o, isValidElement as s } from "react";
|
|
6
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/layer-card.tsx
|
|
8
|
-
var
|
|
8
|
+
var u = "overflow-hidden rounded-basalt-lg text-basalt-foreground", d = {
|
|
9
9
|
none: "",
|
|
10
10
|
sm: "p-3",
|
|
11
11
|
md: "p-4",
|
|
12
12
|
lg: "p-6"
|
|
13
13
|
};
|
|
14
|
-
function
|
|
15
|
-
return
|
|
14
|
+
function f(e) {
|
|
15
|
+
return s(e);
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
children:
|
|
22
|
-
}));
|
|
23
|
-
h.displayName = "LayerCard";
|
|
24
|
-
function g({ className: t, ...n }) {
|
|
25
|
-
return /* @__PURE__ */ s("div", {
|
|
26
|
-
className: e(d, t),
|
|
27
|
-
...n
|
|
28
|
-
});
|
|
17
|
+
function p(e) {
|
|
18
|
+
return e.type;
|
|
19
|
+
}
|
|
20
|
+
function m(e, t) {
|
|
21
|
+
return r.toArray(e).some((e) => f(e) ? t(p(e)) ? !0 : p(e) === i && m(e.props.children, t) : !1);
|
|
29
22
|
}
|
|
30
|
-
|
|
23
|
+
function h(t, n) {
|
|
24
|
+
return n ? r.map(t, (t) => {
|
|
25
|
+
if (!f(t)) return t;
|
|
26
|
+
if (p(t) === i) return a(t, { children: h(t.props.children, n) });
|
|
27
|
+
if (p(t) === _ || p(t) === x) {
|
|
28
|
+
let n = t;
|
|
29
|
+
return a(n, { className: e(n.props.className, "border-b border-basalt-border") });
|
|
30
|
+
}
|
|
31
|
+
return t;
|
|
32
|
+
}) : t;
|
|
33
|
+
}
|
|
34
|
+
var g = o(({ className: t, children: n, outlined: r = !1, padding: i = "md", ...a }, o) => {
|
|
35
|
+
let s = m(n, (e) => T.has(e)), l = m(n, (e) => e === y || e === b), f = m(n, (e) => e === v) && !l;
|
|
36
|
+
return /* @__PURE__ */ c("div", {
|
|
37
|
+
ref: o,
|
|
38
|
+
"data-basalt-surface": "",
|
|
39
|
+
className: e(u, s ? "flex w-full flex-col" : d[i], r && "ring-1 ring-basalt-border/40", t),
|
|
40
|
+
...a,
|
|
41
|
+
children: h(n, f)
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
g.displayName = "LayerCard";
|
|
31
45
|
function _({ className: t, ...n }) {
|
|
32
|
-
return /* @__PURE__ */
|
|
33
|
-
className: e(
|
|
46
|
+
return /* @__PURE__ */ c("div", {
|
|
47
|
+
className: e("flex min-w-0 items-start justify-between gap-4 px-4 py-3 text-basalt-muted-foreground", t),
|
|
34
48
|
...n
|
|
35
49
|
});
|
|
36
50
|
}
|
|
37
|
-
_.displayName = "LayerCard.
|
|
51
|
+
_.displayName = "LayerCard.Header";
|
|
38
52
|
function v({ className: t, ...n }) {
|
|
39
|
-
return /* @__PURE__ */
|
|
40
|
-
className: e("
|
|
53
|
+
return /* @__PURE__ */ c("div", {
|
|
54
|
+
className: e("min-w-0 p-4", t),
|
|
41
55
|
...n
|
|
42
56
|
});
|
|
43
57
|
}
|
|
44
|
-
v.displayName = "LayerCard.
|
|
45
|
-
function y({ className: t,
|
|
46
|
-
return /* @__PURE__ */
|
|
47
|
-
|
|
48
|
-
|
|
58
|
+
v.displayName = "LayerCard.Body";
|
|
59
|
+
function y({ className: t, outlined: n = !1, ...r }) {
|
|
60
|
+
return /* @__PURE__ */ c("div", {
|
|
61
|
+
"data-basalt-surface": "",
|
|
62
|
+
className: e("min-w-0 p-4", n && "ring-1 ring-basalt-border/40", t),
|
|
63
|
+
...r
|
|
49
64
|
});
|
|
50
65
|
}
|
|
51
|
-
y.displayName = "LayerCard.
|
|
52
|
-
function b(
|
|
53
|
-
return /* @__PURE__ */
|
|
66
|
+
y.displayName = "LayerCard.Well";
|
|
67
|
+
function b(e) {
|
|
68
|
+
return /* @__PURE__ */ c(y, { ...e });
|
|
69
|
+
}
|
|
70
|
+
b.displayName = "LayerCard.Primary";
|
|
71
|
+
function x(e) {
|
|
72
|
+
return /* @__PURE__ */ c(_, { ...e });
|
|
73
|
+
}
|
|
74
|
+
x.displayName = "LayerCard.Secondary";
|
|
75
|
+
function S({ className: t, ...n }) {
|
|
76
|
+
return /* @__PURE__ */ c("div", {
|
|
54
77
|
className: e("flex flex-wrap items-center justify-end gap-2 border-t border-basalt-border px-4 py-3", t),
|
|
55
78
|
...n
|
|
56
79
|
});
|
|
57
80
|
}
|
|
58
|
-
|
|
59
|
-
function
|
|
60
|
-
return /* @__PURE__ */
|
|
81
|
+
S.displayName = "LayerCard.Footer";
|
|
82
|
+
function C({ label: t = "Loading", className: r, ...i }) {
|
|
83
|
+
return /* @__PURE__ */ l("div", {
|
|
61
84
|
role: "status",
|
|
62
85
|
"aria-label": t,
|
|
63
86
|
className: e("space-y-3 p-4", r),
|
|
64
87
|
...i,
|
|
65
88
|
children: [
|
|
66
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ c(n, {
|
|
67
90
|
minWidth: 100,
|
|
68
91
|
maxWidth: 100
|
|
69
92
|
}),
|
|
70
|
-
/* @__PURE__ */
|
|
93
|
+
/* @__PURE__ */ c(n, {
|
|
71
94
|
minWidth: 72,
|
|
72
95
|
maxWidth: 72
|
|
73
96
|
}),
|
|
74
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ c(n, {
|
|
75
98
|
minWidth: 88,
|
|
76
99
|
maxWidth: 88
|
|
77
100
|
})
|
|
78
101
|
]
|
|
79
102
|
});
|
|
80
103
|
}
|
|
81
|
-
|
|
82
|
-
function
|
|
83
|
-
return /* @__PURE__ */
|
|
104
|
+
C.displayName = "LayerCard.Loading";
|
|
105
|
+
function w({ title: n = "No content", description: r, icon: i, className: a, ...o }) {
|
|
106
|
+
return /* @__PURE__ */ c(t, {
|
|
84
107
|
title: n,
|
|
85
108
|
description: r,
|
|
86
109
|
icon: i,
|
|
@@ -88,17 +111,27 @@ function S({ title: n = "No content", description: r, icon: i, className: a, ...
|
|
|
88
111
|
...o
|
|
89
112
|
});
|
|
90
113
|
}
|
|
91
|
-
|
|
92
|
-
var
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
114
|
+
w.displayName = "LayerCard.Empty";
|
|
115
|
+
var T = /* @__PURE__ */ new Set([
|
|
116
|
+
_,
|
|
117
|
+
v,
|
|
118
|
+
y,
|
|
119
|
+
S,
|
|
120
|
+
C,
|
|
121
|
+
w,
|
|
122
|
+
b,
|
|
123
|
+
x
|
|
124
|
+
]), E = Object.assign(g, {
|
|
125
|
+
Primary: b,
|
|
126
|
+
Secondary: x,
|
|
127
|
+
Header: _,
|
|
128
|
+
Body: v,
|
|
129
|
+
Well: y,
|
|
130
|
+
Footer: S,
|
|
131
|
+
Loading: C,
|
|
132
|
+
Empty: w
|
|
100
133
|
});
|
|
101
134
|
//#endregion
|
|
102
|
-
export {
|
|
135
|
+
export { E as LayerCard };
|
|
103
136
|
|
|
104
137
|
//# sourceMappingURL=layer-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layer-card.js","names":[],"sources":["../../src/components/layer-card.tsx"],"sourcesContent":["import {\n\tChildren,\n\tFragment,\n\tforwardRef,\n\ttype HTMLAttributes,\n\tisValidElement,\n\ttype ReactElement,\n\ttype ReactNode,\n} from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Empty } from \"./empty\";\nimport { SkeletonLine } from \"./skeleton-line\";\n\nconst
|
|
1
|
+
{"version":3,"file":"layer-card.js","names":[],"sources":["../../src/components/layer-card.tsx"],"sourcesContent":["import {\n\tChildren,\n\tcloneElement,\n\tFragment,\n\tforwardRef,\n\ttype HTMLAttributes,\n\tisValidElement,\n\ttype ReactElement,\n\ttype ReactNode,\n} from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Empty } from \"./empty\";\nimport { SkeletonLine } from \"./skeleton-line\";\n\nconst ROOT_CLASSES = \"overflow-hidden rounded-basalt-lg text-basalt-foreground\";\nconst PADDING_CLASSES = {\n\tnone: \"\",\n\tsm: \"p-3\",\n\tmd: \"p-4\",\n\tlg: \"p-6\",\n} as const;\n\nexport type LayerCardPadding = keyof typeof PADDING_CLASSES;\n\nexport type LayerCardProps = Omit<HTMLAttributes<HTMLDivElement>, \"className\"> & {\n\t/**\n\t * Additional classes for the card root.\n\t */\n\tclassName?: string;\n\t/**\n\t * Draw a hairline ring. Default grouping is luminance only.\n\t * @default false\n\t */\n\toutlined?: boolean;\n\t/**\n\t * Inner spacing for unstructured card content.\n\t * @default \"md\"\n\t */\n\tpadding?: LayerCardPadding;\n};\nexport type LayerCardSectionProps = HTMLAttributes<HTMLDivElement>;\nexport type LayerCardWellProps = LayerCardSectionProps & {\n\t/**\n\t * Draw a hairline ring on a nested well.\n\t * @default false\n\t */\n\toutlined?: boolean;\n};\nexport type LayerCardLoadingProps = Omit<HTMLAttributes<HTMLDivElement>, \"aria-label\"> & {\n\t/**\n\t * Accessible label announced for the loading state.\n\t * @default \"Loading\"\n\t */\n\tlabel?: string;\n};\nexport type LayerCardEmptyProps = Omit<HTMLAttributes<HTMLDivElement>, \"title\"> & {\n\t/**\n\t * Empty-state heading.\n\t * @default \"No content\"\n\t */\n\ttitle?: string;\n\t/**\n\t * Supporting empty-state text.\n\t */\n\tdescription?: string;\n\t/**\n\t * Optional empty-state icon.\n\t */\n\ticon?: ReactNode;\n};\n\nfunction isElement(child: ReactNode): child is ReactElement<{ children?: ReactNode }> {\n\treturn isValidElement(child);\n}\n\nfunction childType(child: ReactElement): unknown {\n\treturn child.type;\n}\n\nfunction hasSlot(children: ReactNode, match: (type: unknown) => boolean): boolean {\n\treturn Children.toArray(children).some((child) => {\n\t\tif (!isElement(child)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (match(childType(child))) {\n\t\t\treturn true;\n\t\t}\n\t\tif (childType(child) === Fragment) {\n\t\t\treturn hasSlot(child.props.children, match);\n\t\t}\n\t\treturn false;\n\t});\n}\n\nfunction decorateHeaders(children: ReactNode, divided: boolean): ReactNode {\n\tif (!divided) {\n\t\treturn children;\n\t}\n\treturn Children.map(children, (child) => {\n\t\tif (!isElement(child)) {\n\t\t\treturn child;\n\t\t}\n\t\tif (childType(child) === Fragment) {\n\t\t\treturn cloneElement(child, {\n\t\t\t\tchildren: decorateHeaders(child.props.children, divided),\n\t\t\t});\n\t\t}\n\t\tif (childType(child) === LayerCardHeader || childType(child) === LayerCardSecondary) {\n\t\t\tconst typed = child as ReactElement<{ className?: string }>;\n\t\t\treturn cloneElement(typed, {\n\t\t\t\tclassName: cn(typed.props.className, \"border-b border-basalt-border\"),\n\t\t\t});\n\t\t}\n\t\treturn child;\n\t});\n}\n\nconst LayerCardRoot = forwardRef<HTMLDivElement, LayerCardProps>(\n\t({ className, children, outlined = false, padding = \"md\", ...props }, ref) => {\n\t\tconst structured = hasSlot(children, (type) => STRUCTURED_TYPES.has(type));\n\t\tconst hasWell = hasSlot(\n\t\t\tchildren,\n\t\t\t(type) => type === LayerCardWell || type === LayerCardPrimary,\n\t\t);\n\t\tconst hasBody = hasSlot(children, (type) => type === LayerCardBody);\n\t\tconst headerDivided = hasBody && !hasWell;\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-basalt-surface=\"\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\tROOT_CLASSES,\n\t\t\t\t\tstructured ? \"flex w-full flex-col\" : PADDING_CLASSES[padding],\n\t\t\t\t\toutlined && \"ring-1 ring-basalt-border/40\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{decorateHeaders(children, headerDivided)}\n\t\t\t</div>\n\t\t);\n\t},\n);\nLayerCardRoot.displayName = \"LayerCard\";\n\nfunction LayerCardHeader({ className, ...props }: LayerCardSectionProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-w-0 items-start justify-between gap-4 px-4 py-3 text-basalt-muted-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nLayerCardHeader.displayName = \"LayerCard.Header\";\n\nfunction LayerCardBody({ className, ...props }: LayerCardSectionProps) {\n\treturn <div className={cn(\"min-w-0 p-4\", className)} {...props} />;\n}\nLayerCardBody.displayName = \"LayerCard.Body\";\n\nfunction LayerCardWell({ className, outlined = false, ...props }: LayerCardWellProps) {\n\treturn (\n\t\t<div\n\t\t\tdata-basalt-surface=\"\"\n\t\t\tclassName={cn(\"min-w-0 p-4\", outlined && \"ring-1 ring-basalt-border/40\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nLayerCardWell.displayName = \"LayerCard.Well\";\n\nfunction LayerCardPrimary(props: LayerCardWellProps) {\n\treturn <LayerCardWell {...props} />;\n}\nLayerCardPrimary.displayName = \"LayerCard.Primary\";\n\nfunction LayerCardSecondary(props: LayerCardSectionProps) {\n\treturn <LayerCardHeader {...props} />;\n}\nLayerCardSecondary.displayName = \"LayerCard.Secondary\";\n\nfunction LayerCardFooter({ className, ...props }: LayerCardSectionProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-wrap items-center justify-end gap-2 border-t border-basalt-border px-4 py-3\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nLayerCardFooter.displayName = \"LayerCard.Footer\";\n\nfunction LayerCardLoading({ label = \"Loading\", className, ...props }: LayerCardLoadingProps) {\n\treturn (\n\t\t<div role=\"status\" aria-label={label} className={cn(\"space-y-3 p-4\", className)} {...props}>\n\t\t\t<SkeletonLine minWidth={100} maxWidth={100} />\n\t\t\t<SkeletonLine minWidth={72} maxWidth={72} />\n\t\t\t<SkeletonLine minWidth={88} maxWidth={88} />\n\t\t</div>\n\t);\n}\nLayerCardLoading.displayName = \"LayerCard.Loading\";\n\nfunction LayerCardEmpty({\n\ttitle = \"No content\",\n\tdescription,\n\ticon,\n\tclassName,\n\t...props\n}: LayerCardEmptyProps) {\n\treturn (\n\t\t<Empty\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\ticon={icon}\n\t\t\tclassName={cn(\"p-8\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nLayerCardEmpty.displayName = \"LayerCard.Empty\";\n\nconst STRUCTURED_TYPES = new Set<unknown>([\n\tLayerCardHeader,\n\tLayerCardBody,\n\tLayerCardWell,\n\tLayerCardFooter,\n\tLayerCardLoading,\n\tLayerCardEmpty,\n\tLayerCardPrimary,\n\tLayerCardSecondary,\n]);\n\nexport const LayerCard = Object.assign(LayerCardRoot, {\n\tPrimary: LayerCardPrimary,\n\tSecondary: LayerCardSecondary,\n\tHeader: LayerCardHeader,\n\tBody: LayerCardBody,\n\tWell: LayerCardWell,\n\tFooter: LayerCardFooter,\n\tLoading: LayerCardLoading,\n\tEmpty: LayerCardEmpty,\n});\n"],"mappings":"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"}
|
|
@@ -10,11 +10,15 @@ function i({ label: i = "Loading", mark: a, className: o, ...s }) {
|
|
|
10
10
|
className: e("fixed inset-0 z-50 flex items-center justify-center bg-basalt-background", o),
|
|
11
11
|
...s,
|
|
12
12
|
children: /* @__PURE__ */ r("div", {
|
|
13
|
-
className: "
|
|
14
|
-
children: [/* @__PURE__ */ n("div", {
|
|
15
|
-
className: "
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
className: "flex flex-col items-center gap-4",
|
|
14
|
+
children: [a ?? /* @__PURE__ */ n(t, { className: "h-8 w-8 text-basalt-foreground" }), /* @__PURE__ */ n("div", {
|
|
15
|
+
className: "relative h-px overflow-hidden rounded-full bg-basalt-border",
|
|
16
|
+
style: { width: "6rem" },
|
|
17
|
+
children: /* @__PURE__ */ n("span", {
|
|
18
|
+
className: "absolute inset-0 animate-basalt-shimmer motion-reduce:animate-none",
|
|
19
|
+
style: { background: "linear-gradient(to right, transparent, hsl(var(--basalt-foreground) / 0.5), transparent)" }
|
|
20
|
+
})
|
|
21
|
+
})]
|
|
18
22
|
})
|
|
19
23
|
});
|
|
20
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading-screen.js","names":[],"sources":["../../src/components/loading-screen.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { BasaltMark } from \"./basalt-mark\";\n\nexport function LoadingScreen({\n\tlabel = \"Loading\",\n\tmark,\n\tclassName,\n\t...props\n}: HTMLAttributes<HTMLDivElement> & {\n\tlabel?: string;\n\tmark?: ReactNode;\n}) {\n\treturn (\n\t\t<div\n\t\t\trole=\"status\"\n\t\t\taria-label={label}\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed inset-0 z-50 flex items-center justify-center bg-basalt-background\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"
|
|
1
|
+
{"version":3,"file":"loading-screen.js","names":[],"sources":["../../src/components/loading-screen.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { BasaltMark } from \"./basalt-mark\";\n\nexport function LoadingScreen({\n\tlabel = \"Loading\",\n\tmark,\n\tclassName,\n\t...props\n}: HTMLAttributes<HTMLDivElement> & {\n\tlabel?: string;\n\tmark?: ReactNode;\n}) {\n\treturn (\n\t\t<div\n\t\t\trole=\"status\"\n\t\t\taria-label={label}\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed inset-0 z-50 flex items-center justify-center bg-basalt-background\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"flex flex-col items-center gap-4\">\n\t\t\t\t{mark ?? <BasaltMark className=\"h-8 w-8 text-basalt-foreground\" />}\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"relative h-px overflow-hidden rounded-full bg-basalt-border\"\n\t\t\t\t\tstyle={{ width: \"6rem\" }}\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"absolute inset-0 animate-basalt-shimmer motion-reduce:animate-none\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\"linear-gradient(to right, transparent, hsl(var(--basalt-foreground) / 0.5), transparent)\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;AAIA,SAAgB,EAAc,EAC7B,WAAQ,WACR,SACA,cACA,GAAG,KAID;CACF,OACC,kBAAC,OAAD;EACC,MAAK;EACL,cAAY;EACZ,WAAW,EACV,4EACA,CACD;EACA,GAAI;EAEJ,UAAA,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,KAAQ,kBAAC,GAAD,EAAY,WAAU,iCAAkC,CAAA,GACjE,kBAAC,OAAD;IACC,WAAU;IACV,OAAO,EAAE,OAAO,OAAO;IAEvB,UAAA,kBAAC,QAAD;KACC,WAAU;KACV,OAAO,EACN,YACC,2FACF;IACA,CAAA;GACG,CAAA,CACD;;CACD,CAAA;AAEP"}
|
|
@@ -9,11 +9,11 @@ export interface PageHeaderProps {
|
|
|
9
9
|
title: React.ReactNode;
|
|
10
10
|
/** Supporting text below the title. */
|
|
11
11
|
description?: React.ReactNode;
|
|
12
|
-
/** A short label above the title. */
|
|
13
|
-
eyebrow?: React.ReactNode;
|
|
14
12
|
/** Trail of parent pages. */
|
|
15
13
|
breadcrumbs?: readonly PageHeaderBreadcrumb[];
|
|
16
|
-
/**
|
|
14
|
+
/** Right-side title-row actions. Put the create button last. */
|
|
17
15
|
actions?: React.ReactNode;
|
|
16
|
+
/** Own-row filters. Keep short filters in actions. */
|
|
17
|
+
filters?: React.ReactNode;
|
|
18
18
|
}
|
|
19
|
-
export declare function PageHeader({ actions, breadcrumbs, description,
|
|
19
|
+
export declare function PageHeader({ actions, breadcrumbs, description, filters, title }: PageHeaderProps): React.JSX.Element;
|
|
@@ -3,38 +3,35 @@ import { Breadcrumbs as e } from "./breadcrumbs.js";
|
|
|
3
3
|
import * as t from "react";
|
|
4
4
|
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/page-header.tsx
|
|
6
|
-
function i({ actions: i, breadcrumbs: a, description: o,
|
|
6
|
+
function i({ actions: i, breadcrumbs: a, description: o, filters: s, title: c }) {
|
|
7
7
|
let l = t.useId();
|
|
8
8
|
return /* @__PURE__ */ r("header", {
|
|
9
9
|
"aria-labelledby": l,
|
|
10
|
-
className: "
|
|
11
|
-
children: [
|
|
12
|
-
items: [...a],
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
children: [
|
|
19
|
-
s ? /* @__PURE__ */ n("p", {
|
|
20
|
-
className: "text-xs font-medium text-basalt-muted-foreground",
|
|
21
|
-
children: s
|
|
22
|
-
}) : null,
|
|
23
|
-
/* @__PURE__ */ n("h1", {
|
|
10
|
+
className: "space-y-4",
|
|
11
|
+
children: [
|
|
12
|
+
a && a.length > 0 ? /* @__PURE__ */ n(e, { items: [...a] }) : null,
|
|
13
|
+
/* @__PURE__ */ r("div", {
|
|
14
|
+
className: "flex flex-col gap-4 md:flex-row md:items-start md:justify-between",
|
|
15
|
+
children: [/* @__PURE__ */ r("div", {
|
|
16
|
+
className: "min-w-0 flex-1 space-y-1",
|
|
17
|
+
children: [/* @__PURE__ */ n("h1", {
|
|
24
18
|
id: l,
|
|
25
19
|
className: "text-2xl font-semibold tracking-tight text-basalt-foreground",
|
|
26
20
|
children: c
|
|
27
|
-
}),
|
|
28
|
-
o ? /* @__PURE__ */ n("p", {
|
|
21
|
+
}), o ? /* @__PURE__ */ n("p", {
|
|
29
22
|
className: "text-sm text-basalt-muted-foreground",
|
|
30
23
|
children: o
|
|
31
|
-
}) : null
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
}) : null]
|
|
25
|
+
}), i ? /* @__PURE__ */ n("div", {
|
|
26
|
+
className: "flex flex-wrap items-center justify-end gap-2",
|
|
27
|
+
children: i
|
|
28
|
+
}) : null]
|
|
29
|
+
}),
|
|
30
|
+
s ? /* @__PURE__ */ n("div", {
|
|
34
31
|
className: "flex flex-wrap items-center gap-2",
|
|
35
|
-
children:
|
|
36
|
-
}) : null
|
|
37
|
-
|
|
32
|
+
children: s
|
|
33
|
+
}) : null
|
|
34
|
+
]
|
|
38
35
|
});
|
|
39
36
|
}
|
|
40
37
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-header.js","names":[],"sources":["../../src/components/page-header.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Breadcrumbs } from \"./breadcrumbs\";\n\nexport interface PageHeaderBreadcrumb {\n\thref?: string;\n\tlabel: React.ReactNode;\n\ticon?: React.ReactNode;\n}\n\nexport interface PageHeaderProps {\n\t/** The page title, rendered as the only heading. */\n\ttitle: React.ReactNode;\n\t/** Supporting text below the title. */\n\tdescription?: React.ReactNode;\n\t/**
|
|
1
|
+
{"version":3,"file":"page-header.js","names":[],"sources":["../../src/components/page-header.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Breadcrumbs } from \"./breadcrumbs\";\n\nexport interface PageHeaderBreadcrumb {\n\thref?: string;\n\tlabel: React.ReactNode;\n\ticon?: React.ReactNode;\n}\n\nexport interface PageHeaderProps {\n\t/** The page title, rendered as the only heading. */\n\ttitle: React.ReactNode;\n\t/** Supporting text below the title. */\n\tdescription?: React.ReactNode;\n\t/** Trail of parent pages. */\n\tbreadcrumbs?: readonly PageHeaderBreadcrumb[];\n\t/** Right-side title-row actions. Put the create button last. */\n\tactions?: React.ReactNode;\n\t/** Own-row filters. Keep short filters in actions. */\n\tfilters?: React.ReactNode;\n}\n\nexport function PageHeader({ actions, breadcrumbs, description, filters, title }: PageHeaderProps) {\n\tconst titleId = React.useId();\n\n\treturn (\n\t\t// biome-ignore lint/a11y/useAriaPropsSupportedByRole: the title heading names this header\n\t\t<header aria-labelledby={titleId} className=\"space-y-4\">\n\t\t\t{breadcrumbs && breadcrumbs.length > 0 ? <Breadcrumbs items={[...breadcrumbs]} /> : null}\n\t\t\t<div className=\"flex flex-col gap-4 md:flex-row md:items-start md:justify-between\">\n\t\t\t\t<div className=\"min-w-0 flex-1 space-y-1\">\n\t\t\t\t\t<h1 id={titleId} className=\"text-2xl font-semibold tracking-tight text-basalt-foreground\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</h1>\n\t\t\t\t\t{description ? (\n\t\t\t\t\t\t<p className=\"text-sm text-basalt-muted-foreground\">{description}</p>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t{actions ? (\n\t\t\t\t\t<div className=\"flex flex-wrap items-center justify-end gap-2\">{actions}</div>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t{filters ? <div className=\"flex flex-wrap items-center gap-2\">{filters}</div> : null}\n\t\t</header>\n\t);\n}\n"],"mappings":";;;;;AAsBA,SAAgB,EAAW,EAAE,YAAS,gBAAa,gBAAa,YAAS,YAA0B;CAClG,IAAM,IAAU,EAAM,MAAM;CAE5B,OAEC,kBAAC,UAAD;EAAQ,mBAAiB;EAAS,WAAU;EAA5C,UAAA;GACE,KAAe,EAAY,SAAS,IAAI,kBAAC,GAAD,EAAa,OAAO,CAAC,GAAG,CAAW,EAAI,CAAA,IAAI;GACpF,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACC,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACC,kBAAC,MAAD;MAAI,IAAI;MAAS,WAAU;MACzB,UAAA;KACE,CAAA,GACH,IACA,kBAAC,KAAD;MAAG,WAAU;MAAwC,UAAA;KAAe,CAAA,IACjE,IACA;IACJ,CAAA,GAAA,IACA,kBAAC,OAAD;KAAK,WAAU;KAAiD,UAAA;IAAa,CAAA,IAC1E,IACA;;GACJ,IAAU,kBAAC,OAAD;IAAK,WAAU;IAAqC,UAAA;GAAa,CAAA,IAAI;EACzE;;AAEV"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ResourceListRow = {
|
|
2
|
+
name: string;
|
|
3
|
+
status: string;
|
|
4
|
+
};
|
|
5
|
+
export type ResourceListProps = {
|
|
6
|
+
title: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
data: ResourceListRow[];
|
|
9
|
+
};
|
|
10
|
+
export declare function ResourceList({ title, description, data }: ResourceListProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { DataTable as e } from "./data-table.js";
|
|
3
|
+
import { PageHeader as t } from "./page-header.js";
|
|
4
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/resource-list.tsx
|
|
6
|
+
var i = [{
|
|
7
|
+
id: "name",
|
|
8
|
+
header: "Name",
|
|
9
|
+
accessor: (e) => e.name
|
|
10
|
+
}, {
|
|
11
|
+
id: "status",
|
|
12
|
+
header: "Status",
|
|
13
|
+
accessor: (e) => e.status
|
|
14
|
+
}];
|
|
15
|
+
function a({ title: a, description: o, data: s }) {
|
|
16
|
+
return /* @__PURE__ */ r("div", {
|
|
17
|
+
className: "space-y-4",
|
|
18
|
+
children: [/* @__PURE__ */ n(t, {
|
|
19
|
+
title: a,
|
|
20
|
+
description: o
|
|
21
|
+
}), /* @__PURE__ */ n(e, {
|
|
22
|
+
data: s,
|
|
23
|
+
columns: i
|
|
24
|
+
})]
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { a as ResourceList };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=resource-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-list.js","names":[],"sources":["../../src/components/resource-list.tsx"],"sourcesContent":["import { DataTable, type DataTableColumn } from \"./data-table\";\nimport { PageHeader } from \"./page-header\";\n\nexport type ResourceListRow = {\n\tname: string;\n\tstatus: string;\n};\n\nexport type ResourceListProps = {\n\ttitle: string;\n\tdescription?: string;\n\tdata: ResourceListRow[];\n};\n\nconst COLUMNS: DataTableColumn<ResourceListRow>[] = [\n\t{ id: \"name\", header: \"Name\", accessor: (row) => row.name },\n\t{ id: \"status\", header: \"Status\", accessor: (row) => row.status },\n];\n\nexport function ResourceList({ title, description, data }: ResourceListProps) {\n\treturn (\n\t\t<div className=\"space-y-4\">\n\t\t\t<PageHeader title={title} description={description} />\n\t\t\t<DataTable data={data} columns={COLUMNS} />\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;AAcA,IAAM,IAA8C,CACnD;CAAE,IAAI;CAAQ,QAAQ;CAAQ,WAAW,MAAQ,EAAI;AAAK,GAC1D;CAAE,IAAI;CAAU,QAAQ;CAAU,WAAW,MAAQ,EAAI;AAAO,CACjE;AAEA,SAAgB,EAAa,EAAE,UAAO,gBAAa,WAA2B;CAC7E,OACC,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACC,kBAAC,GAAD;GAAmB;GAAoB;EAAc,CAAA,GACrD,kBAAC,GAAD;GAAiB;GAAM,SAAS;EAAU,CAAA,CACtC;;AAEP"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
export type SectionRuleProps = Omit<HTMLAttributes<HTMLElement>, "title"> & {
|
|
3
|
+
/** Section title shown before the dashed rule. */
|
|
4
|
+
title: ReactNode;
|
|
5
|
+
/** Info tooltip beside the title. */
|
|
6
|
+
hint?: ReactNode;
|
|
7
|
+
/** Actions on the right of the dashed rule. */
|
|
8
|
+
actions?: ReactNode;
|
|
9
|
+
};
|
|
10
|
+
export declare function SectionRule({ title, hint, actions, className, children, ...props }: SectionRuleProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../utils/cn.js";
|
|
3
|
+
import { Tooltip as t, TooltipContent as n, TooltipProvider as r, TooltipTrigger as i } from "./tooltip.js";
|
|
4
|
+
import { Info as a } from "lucide-react";
|
|
5
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/section-rule.tsx
|
|
7
|
+
function c({ title: c, hint: l, actions: u, className: d, children: f, ...p }) {
|
|
8
|
+
return /* @__PURE__ */ s("section", {
|
|
9
|
+
className: e("space-y-3", d),
|
|
10
|
+
...p,
|
|
11
|
+
children: [/* @__PURE__ */ s("div", {
|
|
12
|
+
className: "flex items-center gap-3",
|
|
13
|
+
children: [
|
|
14
|
+
/* @__PURE__ */ s("div", {
|
|
15
|
+
className: "flex min-w-0 items-center gap-1.5",
|
|
16
|
+
children: [/* @__PURE__ */ o("h2", {
|
|
17
|
+
className: "text-xs font-medium tracking-wider text-basalt-muted-foreground uppercase",
|
|
18
|
+
children: c
|
|
19
|
+
}), l ? /* @__PURE__ */ o(r, { children: /* @__PURE__ */ s(t, { children: [/* @__PURE__ */ o(i, {
|
|
20
|
+
asChild: !0,
|
|
21
|
+
children: /* @__PURE__ */ o("button", {
|
|
22
|
+
type: "button",
|
|
23
|
+
"aria-label": "More information",
|
|
24
|
+
className: "inline-flex size-4 shrink-0 items-center justify-center text-basalt-muted-foreground hover:text-basalt-foreground",
|
|
25
|
+
children: /* @__PURE__ */ o(a, { className: "size-3.5" })
|
|
26
|
+
})
|
|
27
|
+
}), /* @__PURE__ */ o(n, { children: l })] }) }) : null]
|
|
28
|
+
}),
|
|
29
|
+
/* @__PURE__ */ o("div", {
|
|
30
|
+
className: "h-px min-w-4 flex-1 border-t border-dashed border-basalt-border",
|
|
31
|
+
"aria-hidden": "true"
|
|
32
|
+
}),
|
|
33
|
+
u ? /* @__PURE__ */ o("div", {
|
|
34
|
+
className: "flex shrink-0 flex-wrap items-center justify-end gap-2",
|
|
35
|
+
children: u
|
|
36
|
+
}) : null
|
|
37
|
+
]
|
|
38
|
+
}), f]
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { c as SectionRule };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=section-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-rule.js","names":[],"sources":["../../src/components/section-rule.tsx"],"sourcesContent":["import { Info } from \"lucide-react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\";\n\nexport type SectionRuleProps = Omit<HTMLAttributes<HTMLElement>, \"title\"> & {\n\t/** Section title shown before the dashed rule. */\n\ttitle: ReactNode;\n\t/** Info tooltip beside the title. */\n\thint?: ReactNode;\n\t/** Actions on the right of the dashed rule. */\n\tactions?: ReactNode;\n};\n\nexport function SectionRule({\n\ttitle,\n\thint,\n\tactions,\n\tclassName,\n\tchildren,\n\t...props\n}: SectionRuleProps) {\n\treturn (\n\t\t<section className={cn(\"space-y-3\", className)} {...props}>\n\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t<div className=\"flex min-w-0 items-center gap-1.5\">\n\t\t\t\t\t<h2 className=\"text-xs font-medium tracking-wider text-basalt-muted-foreground uppercase\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</h2>\n\t\t\t\t\t{hint ? (\n\t\t\t\t\t\t<TooltipProvider>\n\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\taria-label=\"More information\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"inline-flex size-4 shrink-0 items-center justify-center text-basalt-muted-foreground hover:text-basalt-foreground\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Info className=\"size-3.5\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t<TooltipContent>{hint}</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"h-px min-w-4 flex-1 border-t border-dashed border-basalt-border\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t\t{actions ? (\n\t\t\t\t\t<div className=\"flex shrink-0 flex-wrap items-center justify-end gap-2\">{actions}</div>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t{children}\n\t\t</section>\n\t);\n}\n"],"mappings":";;;;;;AAcA,SAAgB,EAAY,EAC3B,UACA,SACA,YACA,cACA,aACA,GAAG,KACiB;CACpB,OACC,kBAAC,WAAD;EAAS,WAAW,EAAG,aAAa,CAAS;EAAG,GAAI;EAApD,UAAA,CACC,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACC,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACC,kBAAC,MAAD;MAAI,WAAU;MACZ,UAAA;KACE,CAAA,GACH,IACA,kBAAC,GAAD,EAAA,UACC,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD;MAAgB,SAAA;MACf,UAAA,kBAAC,UAAD;OACC,MAAK;OACL,cAAW;OACX,WAAU;OAEV,UAAA,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA;MACrB,CAAA;KACO,CAAA,GAChB,kBAAC,GAAD,EAAA,UAAiB,EAAqB,CAAA,CAC9B,EAAA,CAAA,EACO,CAAA,IACd,IACA;;IACL,kBAAC,OAAD;KACC,WAAU;KACV,eAAY;IACZ,CAAA;IACA,IACA,kBAAC,OAAD;KAAK,WAAU;KAA0D,UAAA;IAAa,CAAA,IACnF;GACA;EACJ,CAAA,GAAA,CACO;;AAEX"}
|
|
@@ -6,10 +6,10 @@ export declare const SheetClose: React.ForwardRefExoticComponent<DialogPrimitive
|
|
|
6
6
|
export declare const SheetTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
7
7
|
export declare const SheetDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
8
8
|
declare const SIDE: {
|
|
9
|
-
readonly right: "fixed inset-y-0 right-0 box-border flex h-full w-80 flex-col gap-3 border-l border-basalt-border
|
|
10
|
-
readonly left: "fixed inset-y-0 left-0 box-border flex h-full w-80 flex-col gap-3 border-r border-basalt-border
|
|
11
|
-
readonly top: "fixed inset-x-0 top-0 box-border flex h-80 w-full flex-col gap-3 border-b border-basalt-border
|
|
12
|
-
readonly bottom: "fixed inset-x-0 bottom-0 box-border flex h-80 w-full flex-col gap-3 border-t border-basalt-border
|
|
9
|
+
readonly right: "fixed inset-y-0 right-0 box-border flex h-full w-80 flex-col gap-3 border-l border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg";
|
|
10
|
+
readonly left: "fixed inset-y-0 left-0 box-border flex h-full w-80 flex-col gap-3 border-r border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg";
|
|
11
|
+
readonly top: "fixed inset-x-0 top-0 box-border flex h-80 w-full flex-col gap-3 border-b border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg";
|
|
12
|
+
readonly bottom: "fixed inset-x-0 bottom-0 box-border flex h-80 w-full flex-col gap-3 border-t border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg";
|
|
13
13
|
};
|
|
14
14
|
export type SheetSide = keyof typeof SIDE;
|
|
15
15
|
export declare const SheetContent: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
package/dist/components/sheet.js
CHANGED
|
@@ -18,12 +18,13 @@ var d = r.forwardRef(({ className: t, ...n }, r) => /* @__PURE__ */ i(o.Descript
|
|
|
18
18
|
}));
|
|
19
19
|
d.displayName = o.Description.displayName;
|
|
20
20
|
var f = {
|
|
21
|
-
right: "fixed inset-y-0 right-0 box-border flex h-full w-80 flex-col gap-3 border-l border-basalt-border
|
|
22
|
-
left: "fixed inset-y-0 left-0 box-border flex h-full w-80 flex-col gap-3 border-r border-basalt-border
|
|
23
|
-
top: "fixed inset-x-0 top-0 box-border flex h-80 w-full flex-col gap-3 border-b border-basalt-border
|
|
24
|
-
bottom: "fixed inset-x-0 bottom-0 box-border flex h-80 w-full flex-col gap-3 border-t border-basalt-border
|
|
21
|
+
right: "fixed inset-y-0 right-0 box-border flex h-full w-80 flex-col gap-3 border-l border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg",
|
|
22
|
+
left: "fixed inset-y-0 left-0 box-border flex h-full w-80 flex-col gap-3 border-r border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg",
|
|
23
|
+
top: "fixed inset-x-0 top-0 box-border flex h-80 w-full flex-col gap-3 border-b border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg",
|
|
24
|
+
bottom: "fixed inset-x-0 bottom-0 box-border flex h-80 w-full flex-col gap-3 border-t border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg"
|
|
25
25
|
}, p = r.forwardRef(({ className: r, side: s = "right", children: c, ...l }, u) => /* @__PURE__ */ a(o.Portal, { children: [/* @__PURE__ */ i(o.Overlay, { className: e("fixed inset-0 bg-black/50 backdrop-blur-xs", t, n) }), /* @__PURE__ */ i(o.Content, {
|
|
26
26
|
ref: u,
|
|
27
|
+
"data-basalt-surface-root": "",
|
|
27
28
|
className: e(t, n, f[s], r),
|
|
28
29
|
...l,
|
|
29
30
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet.js","names":[],"sources":["../../src/components/sheet.tsx"],"sourcesContent":["import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { OVERLAY_LAYER, OVERLAY_MOTION } from \"./overlay\";\n\nexport const Sheet = DialogPrimitive.Root;\nexport const SheetTrigger = DialogPrimitive.Trigger;\nexport const SheetClose = DialogPrimitive.Close;\nexport const SheetTitle = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nSheetTitle.displayName = DialogPrimitive.Title.displayName;\n\nexport const SheetDescription = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-basalt-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nSheetDescription.displayName = DialogPrimitive.Description.displayName;\n\nconst SIDE = {\n\tright:\n\t\t\"fixed inset-y-0 right-0 box-border flex h-full w-80 flex-col gap-3 border-l border-basalt-border
|
|
1
|
+
{"version":3,"file":"sheet.js","names":[],"sources":["../../src/components/sheet.tsx"],"sourcesContent":["import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { OVERLAY_LAYER, OVERLAY_MOTION } from \"./overlay\";\n\nexport const Sheet = DialogPrimitive.Root;\nexport const SheetTrigger = DialogPrimitive.Trigger;\nexport const SheetClose = DialogPrimitive.Close;\nexport const SheetTitle = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nSheetTitle.displayName = DialogPrimitive.Title.displayName;\n\nexport const SheetDescription = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-basalt-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nSheetDescription.displayName = DialogPrimitive.Description.displayName;\n\nconst SIDE = {\n\tright:\n\t\t\"fixed inset-y-0 right-0 box-border flex h-full w-80 flex-col gap-3 border-l border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg\",\n\tleft: \"fixed inset-y-0 left-0 box-border flex h-full w-80 flex-col gap-3 border-r border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg\",\n\ttop: \"fixed inset-x-0 top-0 box-border flex h-80 w-full flex-col gap-3 border-b border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg\",\n\tbottom:\n\t\t\"fixed inset-x-0 bottom-0 box-border flex h-80 w-full flex-col gap-3 border-t border-basalt-border p-6 text-sm text-basalt-foreground shadow-lg\",\n} as const;\n\nexport type SheetSide = keyof typeof SIDE;\n\nexport const SheetContent = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & { side?: SheetSide }\n>(({ className, side = \"right\", children, ...props }, ref) => (\n\t<DialogPrimitive.Portal>\n\t\t<DialogPrimitive.Overlay\n\t\t\tclassName={cn(\"fixed inset-0 bg-black/50 backdrop-blur-xs\", OVERLAY_LAYER, OVERLAY_MOTION)}\n\t\t/>\n\t\t<DialogPrimitive.Content\n\t\t\tref={ref}\n\t\t\tdata-basalt-surface-root=\"\"\n\t\t\tclassName={cn(OVERLAY_LAYER, OVERLAY_MOTION, SIDE[side], className)}\n\t\t\t{...props}\n\t\t\tstyle={{ boxSizing: \"border-box\", ...props.style }}\n\t\t>\n\t\t\t{children}\n\t\t</DialogPrimitive.Content>\n\t</DialogPrimitive.Portal>\n));\nSheetContent.displayName = \"SheetContent\";\n\nexport const SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n\t<div className={cn(\"flex flex-col space-y-2 text-left\", className)} {...props} />\n);\nSheetHeader.displayName = \"SheetHeader\";\n\nexport const SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n\t<div\n\t\tclassName={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n\t\t{...props}\n\t/>\n);\nSheetFooter.displayName = \"SheetFooter\";\n"],"mappings":";;;;;;;AAKA,IAAa,IAAQ,EAAgB,MACxB,IAAe,EAAgB,SAC/B,IAAa,EAAgB,OAC7B,IAAa,EAAM,YAG7B,EAAE,cAAW,GAAG,KAAS,MAC3B,kBAAC,EAAgB,OAAjB;CACM;CACL,WAAW,EAAG,qDAAqD,CAAS;CAC5E,GAAI;AACJ,CAAA,CACD;AACD,EAAW,cAAc,EAAgB,MAAM;AAE/C,IAAa,IAAmB,EAAM,YAGnC,EAAE,cAAW,GAAG,KAAS,MAC3B,kBAAC,EAAgB,aAAjB;CACM;CACL,WAAW,EAAG,wCAAwC,CAAS;CAC/D,GAAI;AACJ,CAAA,CACD;AACD,EAAiB,cAAc,EAAgB,YAAY;AAE3D,IAAM,IAAO;CACZ,OACC;CACD,MAAM;CACN,KAAK;CACL,QACC;AACF,GAIa,IAAe,EAAM,YAG/B,EAAE,cAAW,UAAO,SAAS,aAAU,GAAG,KAAS,MACrD,kBAAC,EAAgB,QAAjB,EAAA,UAAA,CACC,kBAAC,EAAgB,SAAjB,EACC,WAAW,EAAG,8CAA8C,GAAe,CAAc,EACzF,CAAA,GACD,kBAAC,EAAgB,SAAjB;CACM;CACL,4BAAyB;CACzB,WAAW,EAAG,GAAe,GAAgB,EAAK,IAAO,CAAS;CAClE,GAAI;CACJ,OAAO;EAAE,WAAW;EAAc,GAAG,EAAM;CAAM;CAEhD;AACuB,CAAA,CACF,EAAA,CAAA,CACxB;AACD,EAAa,cAAc;AAE3B,IAAa,KAAe,EAAE,cAAW,GAAG,QAC3C,kBAAC,OAAD;CAAK,WAAW,EAAG,qCAAqC,CAAS;CAAG,GAAI;AAAQ,CAAA;AAEjF,EAAY,cAAc;AAE1B,IAAa,KAAe,EAAE,cAAW,GAAG,QAC3C,kBAAC,OAAD;CACC,WAAW,EAAG,0DAA0D,CAAS;CACjF,GAAI;AACJ,CAAA;AAEF,EAAY,cAAc"}
|
|
@@ -250,6 +250,7 @@ function F({ name: t, email: n, avatar: r, action: i, className: a }) {
|
|
|
250
250
|
}
|
|
251
251
|
function I({ className: t, ...n }) {
|
|
252
252
|
return /* @__PURE__ */ v("div", {
|
|
253
|
+
"data-basalt-surface-root": "",
|
|
253
254
|
className: e("min-h-0 flex-1 overflow-y-auto rounded-[16px] bg-basalt-card p-3 text-basalt-card-foreground shadow-sm ring-1 ring-basalt-border/40 md:rounded-basalt-island md:p-5", t),
|
|
254
255
|
...n
|
|
255
256
|
});
|