@nocoo/basalt 2.0.0-rc.1
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/LICENSE +21 -0
- package/README.md +41 -0
- package/dist/charts/area.d.ts +8 -0
- package/dist/charts/area.js +55 -0
- package/dist/charts/area.js.map +1 -0
- package/dist/charts/bar.d.ts +9 -0
- package/dist/charts/bar.js +42 -0
- package/dist/charts/bar.js.map +1 -0
- package/dist/charts/bullet.d.ts +8 -0
- package/dist/charts/bullet.js +50 -0
- package/dist/charts/bullet.js.map +1 -0
- package/dist/charts/chart-colors.d.ts +1 -0
- package/dist/charts/chart-colors.js +3 -0
- package/dist/charts/charts.d.ts +6 -0
- package/dist/charts/charts.js +15 -0
- package/dist/charts/charts.js.map +1 -0
- package/dist/charts/config.d.ts +117 -0
- package/dist/charts/config.js +117 -0
- package/dist/charts/config.js.map +1 -0
- package/dist/charts/custom-chart.d.ts +6 -0
- package/dist/charts/custom-chart.js +15 -0
- package/dist/charts/custom-chart.js.map +1 -0
- package/dist/charts/date-navigation.d.ts +22 -0
- package/dist/charts/date-navigation.js +122 -0
- package/dist/charts/date-navigation.js.map +1 -0
- package/dist/charts/donut.d.ts +8 -0
- package/dist/charts/donut.js +36 -0
- package/dist/charts/donut.js.map +1 -0
- package/dist/charts/frame.d.ts +9 -0
- package/dist/charts/frame.js +22 -0
- package/dist/charts/frame.js.map +1 -0
- package/dist/charts/funnel.d.ts +7 -0
- package/dist/charts/funnel.js +35 -0
- package/dist/charts/funnel.js.map +1 -0
- package/dist/charts/gauge.d.ts +8 -0
- package/dist/charts/gauge.js +46 -0
- package/dist/charts/gauge.js.map +1 -0
- package/dist/charts/grouped-bar.d.ts +7 -0
- package/dist/charts/grouped-bar.js +42 -0
- package/dist/charts/grouped-bar.js.map +1 -0
- package/dist/charts/heatmap-calendar.d.ts +27 -0
- package/dist/charts/heatmap-calendar.js +200 -0
- package/dist/charts/heatmap-calendar.js.map +1 -0
- package/dist/charts/item-list.d.ts +9 -0
- package/dist/charts/item-list.js +22 -0
- package/dist/charts/item-list.js.map +1 -0
- package/dist/charts/line.d.ts +9 -0
- package/dist/charts/line.js +58 -0
- package/dist/charts/line.js.map +1 -0
- package/dist/charts/palette.d.ts +33 -0
- package/dist/charts/palette.js +44 -0
- package/dist/charts/palette.js.map +1 -0
- package/dist/charts/radar.d.ts +6 -0
- package/dist/charts/radar.js +37 -0
- package/dist/charts/radar.js.map +1 -0
- package/dist/charts/sample.d.ts +42 -0
- package/dist/charts/sample.js +124 -0
- package/dist/charts/sample.js.map +1 -0
- package/dist/charts/sankey.d.ts +6 -0
- package/dist/charts/sankey.js +51 -0
- package/dist/charts/sankey.js.map +1 -0
- package/dist/charts/slot-bar.d.ts +15 -0
- package/dist/charts/slot-bar.js +80 -0
- package/dist/charts/slot-bar.js.map +1 -0
- package/dist/charts/sparkline.d.ts +6 -0
- package/dist/charts/sparkline.js +29 -0
- package/dist/charts/sparkline.js.map +1 -0
- package/dist/charts/stacked-bar.d.ts +7 -0
- package/dist/charts/stacked-bar.js +51 -0
- package/dist/charts/stacked-bar.js.map +1 -0
- package/dist/charts/stat-card.d.ts +21 -0
- package/dist/charts/stat-card.js +66 -0
- package/dist/charts/stat-card.js.map +1 -0
- package/dist/charts/timeline.d.ts +17 -0
- package/dist/charts/timeline.js +79 -0
- package/dist/charts/timeline.js.map +1 -0
- package/dist/charts/timeseries.d.ts +6 -0
- package/dist/charts/timeseries.js +15 -0
- package/dist/charts/timeseries.js.map +1 -0
- package/dist/components/accordion.d.ts +6 -0
- package/dist/components/accordion.js +21 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +25 -0
- package/dist/components/alert-dialog.js +61 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/app-header.d.ts +10 -0
- package/dist/components/app-header.js +35 -0
- package/dist/components/app-header.js.map +1 -0
- package/dist/components/app-shell.d.ts +4 -0
- package/dist/components/app-shell.js +29 -0
- package/dist/components/app-shell.js.map +1 -0
- package/dist/components/autocomplete.d.ts +47 -0
- package/dist/components/autocomplete.js +28 -0
- package/dist/components/autocomplete.js.map +1 -0
- package/dist/components/avatar.d.ts +5 -0
- package/dist/components/avatar.js +28 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +10 -0
- package/dist/components/badge.js +37 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/banner.d.ts +22 -0
- package/dist/components/banner.js +88 -0
- package/dist/components/banner.js.map +1 -0
- package/dist/components/basalt-mark.d.ts +8 -0
- package/dist/components/basalt-mark.js +17 -0
- package/dist/components/basalt-mark.js.map +1 -0
- package/dist/components/breadcrumbs.d.ts +9 -0
- package/dist/components/breadcrumbs.js +38 -0
- package/dist/components/breadcrumbs.js.map +1 -0
- package/dist/components/button.d.ts +17 -0
- package/dist/components/button.js +73 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/checkbox.d.ts +86 -0
- package/dist/components/checkbox.js +107 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/clipboard-text.d.ts +5 -0
- package/dist/components/clipboard-text.js +33 -0
- package/dist/components/clipboard-text.js.map +1 -0
- package/dist/components/code.d.ts +26 -0
- package/dist/components/code.js +45 -0
- package/dist/components/code.js.map +1 -0
- package/dist/components/collapsible.d.ts +33 -0
- package/dist/components/collapsible.js +38 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +47 -0
- package/dist/components/combobox.js +28 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command-palette.d.ts +83 -0
- package/dist/components/command-palette.js +90 -0
- package/dist/components/command-palette.js.map +1 -0
- package/dist/components/confirm-dialog.d.ts +52 -0
- package/dist/components/confirm-dialog.js +61 -0
- package/dist/components/confirm-dialog.js.map +1 -0
- package/dist/components/context-menu.d.ts +7 -0
- package/dist/components/context-menu.js +23 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/data-table.d.ts +76 -0
- package/dist/components/data-table.js +230 -0
- package/dist/components/data-table.js.map +1 -0
- package/dist/components/date-picker.d.ts +90 -0
- package/dist/components/date-picker.js +452 -0
- package/dist/components/date-picker.js.map +1 -0
- package/dist/components/dialog.d.ts +37 -0
- package/dist/components/dialog.js +67 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +38 -0
- package/dist/components/dropdown-menu.js +24 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/empty.d.ts +6 -0
- package/dist/components/empty.js +28 -0
- package/dist/components/empty.js.map +1 -0
- package/dist/components/field.d.ts +39 -0
- package/dist/components/field.js +52 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/flow.d.ts +24 -0
- package/dist/components/flow.js +56 -0
- package/dist/components/flow.js.map +1 -0
- package/dist/components/grid.d.ts +15 -0
- package/dist/components/grid.js +24 -0
- package/dist/components/grid.js.map +1 -0
- package/dist/components/hover-card.d.ts +5 -0
- package/dist/components/hover-card.js +18 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-area.d.ts +19 -0
- package/dist/components/input-area.js +27 -0
- package/dist/components/input-area.js.map +1 -0
- package/dist/components/input-group.d.ts +70 -0
- package/dist/components/input-group.js +78 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input.d.ts +19 -0
- package/dist/components/input.js +28 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.d.ts +20 -0
- package/dist/components/label.js +34 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/layer-card.d.ts +69 -0
- package/dist/components/layer-card.js +104 -0
- package/dist/components/layer-card.js.map +1 -0
- package/dist/components/link.d.ts +8 -0
- package/dist/components/link.js +18 -0
- package/dist/components/link.js.map +1 -0
- package/dist/components/loader.d.ts +4 -0
- package/dist/components/loader.js +66 -0
- package/dist/components/loader.js.map +1 -0
- package/dist/components/loading-screen.d.ts +5 -0
- package/dist/components/loading-screen.js +24 -0
- package/dist/components/loading-screen.js.map +1 -0
- package/dist/components/menu-bar.d.ts +8 -0
- package/dist/components/menu-bar.js +42 -0
- package/dist/components/menu-bar.js.map +1 -0
- package/dist/components/meter.d.ts +8 -0
- package/dist/components/meter.js +26 -0
- package/dist/components/meter.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +6 -0
- package/dist/components/navigation-menu.js +16 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/overlay.d.ts +16 -0
- package/dist/components/overlay.js +14 -0
- package/dist/components/overlay.js.map +1 -0
- package/dist/components/page-header.d.ts +19 -0
- package/dist/components/page-header.js +43 -0
- package/dist/components/page-header.js.map +1 -0
- package/dist/components/pagination.d.ts +35 -0
- package/dist/components/pagination.js +68 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.d.ts +38 -0
- package/dist/components/popover.js +65 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/radio.d.ts +108 -0
- package/dist/components/radio.js +80 -0
- package/dist/components/radio.js.map +1 -0
- package/dist/components/scroll-area.d.ts +15 -0
- package/dist/components/scroll-area.js +49 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/segment-control.d.ts +35 -0
- package/dist/components/segment-control.js +46 -0
- package/dist/components/segment-control.js.map +1 -0
- package/dist/components/select.d.ts +99 -0
- package/dist/components/select.js +51 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/sensitive-input.d.ts +23 -0
- package/dist/components/sensitive-input.js +43 -0
- package/dist/components/sensitive-input.js.map +1 -0
- package/dist/components/separator.d.ts +26 -0
- package/dist/components/separator.js +18 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.d.ts +26 -0
- package/dist/components/sheet.js +49 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.d.ts +101 -0
- package/dist/components/sidebar.js +260 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton-line.d.ts +6 -0
- package/dist/components/skeleton-line.js +22 -0
- package/dist/components/skeleton-line.js.map +1 -0
- package/dist/components/slider.d.ts +3 -0
- package/dist/components/slider.js +21 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/stat-strip.d.ts +19 -0
- package/dist/components/stat-strip.js +27 -0
- package/dist/components/stat-strip.js.map +1 -0
- package/dist/components/switch.d.ts +85 -0
- package/dist/components/switch.js +94 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table-of-contents.d.ts +33 -0
- package/dist/components/table-of-contents.js +37 -0
- package/dist/components/table-of-contents.js.map +1 -0
- package/dist/components/table-pager.d.ts +26 -0
- package/dist/components/table-pager.js +35 -0
- package/dist/components/table-pager.js.map +1 -0
- package/dist/components/table.d.ts +45 -0
- package/dist/components/table.js +32 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +65 -0
- package/dist/components/tabs.js +56 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text.d.ts +32 -0
- package/dist/components/text.js +46 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/theme-toggle.d.ts +7 -0
- package/dist/components/theme-toggle.js +28 -0
- package/dist/components/theme-toggle.js.map +1 -0
- package/dist/components/toast.d.ts +27 -0
- package/dist/components/toast.js +78 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/toggle-group.d.ts +4 -0
- package/dist/components/toggle-group.js +48 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +7 -0
- package/dist/components/toggle.js +37 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/toolbar.d.ts +58 -0
- package/dist/components/toolbar.js +76 -0
- package/dist/components/toolbar.js.map +1 -0
- package/dist/components/tooltip.d.ts +13 -0
- package/dist/components/tooltip.js +18 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/typeahead-field.d.ts +24 -0
- package/dist/components/typeahead-field.js +177 -0
- package/dist/components/typeahead-field.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +35 -0
- package/dist/providers/link.d.ts +12 -0
- package/dist/providers/link.js +18 -0
- package/dist/providers/link.js.map +1 -0
- package/dist/providers/theme.d.ts +11 -0
- package/dist/providers/theme.js +43 -0
- package/dist/providers/theme.js.map +1 -0
- package/dist/styles/standalone.css +2233 -0
- package/dist/styles/tailwind.css +103 -0
- package/dist/styles/tokens.css +277 -0
- package/dist/utils/cn.d.ts +2 -0
- package/dist/utils/cn.js +11 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/control-surface.d.ts +2 -0
- package/dist/utils/control-surface.js +11 -0
- package/dist/utils/control-surface.js.map +1 -0
- package/dist/utils/selection-indicator.d.ts +24 -0
- package/dist/utils/selection-indicator.js +108 -0
- package/dist/utils/selection-indicator.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { CHART_COLORS as e } from "./palette.js";
|
|
3
|
+
import { ANIMATION_PROPS as t } from "./config.js";
|
|
4
|
+
import { SAMPLE as n } from "./sample.js";
|
|
5
|
+
import { ChartFrame as r } from "./frame.js";
|
|
6
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
7
|
+
import { Line as a, LineChart as o } from "recharts";
|
|
8
|
+
//#region src/charts/sparkline.tsx
|
|
9
|
+
function s({ data: s = n, ariaLabel: c = "Sparkline", className: l }) {
|
|
10
|
+
return /* @__PURE__ */ i(r, {
|
|
11
|
+
ariaLabel: c,
|
|
12
|
+
className: l,
|
|
13
|
+
size: "h-10 w-28",
|
|
14
|
+
children: /* @__PURE__ */ i(o, {
|
|
15
|
+
data: s,
|
|
16
|
+
children: /* @__PURE__ */ i(a, {
|
|
17
|
+
type: "monotone",
|
|
18
|
+
dataKey: "y",
|
|
19
|
+
stroke: e[0],
|
|
20
|
+
dot: !1,
|
|
21
|
+
...t
|
|
22
|
+
})
|
|
23
|
+
})
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { s as Sparkline };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=sparkline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparkline.js","names":[],"sources":["../../src/charts/sparkline.tsx"],"sourcesContent":["import { Line, LineChart as RechartsLine } from \"recharts\";\nimport { ANIMATION_PROPS } from \"./config\";\nimport { ChartFrame } from \"./frame\";\nimport { CHART_COLORS } from \"./palette\";\nimport { SAMPLE, type XYPoint } from \"./sample\";\n\nexport function Sparkline({\n\tdata = SAMPLE,\n\tariaLabel = \"Sparkline\",\n\tclassName,\n}: {\n\tdata?: XYPoint[];\n\tariaLabel?: string;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<ChartFrame ariaLabel={ariaLabel} className={className} size=\"h-10 w-28\">\n\t\t\t<RechartsLine data={data}>\n\t\t\t\t<Line\n\t\t\t\t\ttype=\"monotone\"\n\t\t\t\t\tdataKey=\"y\"\n\t\t\t\t\tstroke={CHART_COLORS[0]}\n\t\t\t\t\tdot={false}\n\t\t\t\t\t{...ANIMATION_PROPS}\n\t\t\t\t/>\n\t\t\t</RechartsLine>\n\t\t</ChartFrame>\n\t);\n}\n"],"mappings":";;;;;;;;AAMA,SAAgB,EAAU,EACzB,UAAO,GACP,eAAY,aACZ,gBAKE;CACF,OACC,kBAAC,GAAD;EAAuB;EAAsB;EAAW,MAAK;EAC5D,UAAA,kBAAC,GAAD;GAAoB;GACnB,UAAA,kBAAC,GAAD;IACC,MAAK;IACL,SAAQ;IACR,QAAQ,EAAa;IACrB,KAAK;IACL,GAAI;GACJ,CAAA;EACY,CAAA;CACH,CAAA;AAEd"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { CHART_COLORS as e } from "./palette.js";
|
|
3
|
+
import { ANIMATION_PROPS as t, BAR_RADIUS as n, GRID_PROPS as r, cartesianAxisProps as i, chartTooltipProps as a } from "./config.js";
|
|
4
|
+
import { SAMPLE as o } from "./sample.js";
|
|
5
|
+
import { ChartFrame as s } from "./frame.js";
|
|
6
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
7
|
+
import { Bar as u, BarChart as d, CartesianGrid as f, Tooltip as p, XAxis as m, YAxis as h } from "recharts";
|
|
8
|
+
//#region src/charts/stacked-bar.tsx
|
|
9
|
+
function g({ data: g = o, ariaLabel: _ = "Stacked bar chart", className: v, showAxes: y = !1 }) {
|
|
10
|
+
return /* @__PURE__ */ c(s, {
|
|
11
|
+
ariaLabel: _,
|
|
12
|
+
className: v,
|
|
13
|
+
children: /* @__PURE__ */ l(d, {
|
|
14
|
+
data: g,
|
|
15
|
+
children: [
|
|
16
|
+
y ? /* @__PURE__ */ c(f, { ...r }) : null,
|
|
17
|
+
/* @__PURE__ */ c(m, {
|
|
18
|
+
dataKey: "x",
|
|
19
|
+
...i(!y)
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ c(h, { ...i(!y) }),
|
|
22
|
+
/* @__PURE__ */ c(p, { ...a({ cursor: "bar" }) }),
|
|
23
|
+
/* @__PURE__ */ c(u, {
|
|
24
|
+
dataKey: "y",
|
|
25
|
+
stackId: "stack",
|
|
26
|
+
fill: e[0],
|
|
27
|
+
radius: n.vertical,
|
|
28
|
+
...t
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ c(u, {
|
|
31
|
+
dataKey: "y2",
|
|
32
|
+
stackId: "stack",
|
|
33
|
+
fill: e[2],
|
|
34
|
+
radius: n.vertical,
|
|
35
|
+
...t
|
|
36
|
+
}),
|
|
37
|
+
/* @__PURE__ */ c(u, {
|
|
38
|
+
dataKey: "y3",
|
|
39
|
+
stackId: "stack",
|
|
40
|
+
fill: e[4],
|
|
41
|
+
radius: n.vertical,
|
|
42
|
+
...t
|
|
43
|
+
})
|
|
44
|
+
]
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { g as StackedBarChart };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=stacked-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacked-bar.js","names":[],"sources":["../../src/charts/stacked-bar.tsx"],"sourcesContent":["import { Bar, CartesianGrid, BarChart as RechartsBar, Tooltip, XAxis, YAxis } from \"recharts\";\nimport {\n\tANIMATION_PROPS,\n\tBAR_RADIUS,\n\tcartesianAxisProps,\n\tchartTooltipProps,\n\tGRID_PROPS,\n} from \"./config\";\nimport { ChartFrame } from \"./frame\";\nimport { CHART_COLORS } from \"./palette\";\nimport { SAMPLE, type XYPoint } from \"./sample\";\n\nexport function StackedBarChart({\n\tdata = SAMPLE,\n\tariaLabel = \"Stacked bar chart\",\n\tclassName,\n\tshowAxes = false,\n}: {\n\tdata?: XYPoint[];\n\tariaLabel?: string;\n\tclassName?: string;\n\tshowAxes?: boolean;\n}) {\n\treturn (\n\t\t<ChartFrame ariaLabel={ariaLabel} className={className}>\n\t\t\t<RechartsBar data={data}>\n\t\t\t\t{showAxes ? <CartesianGrid {...GRID_PROPS} /> : null}\n\t\t\t\t<XAxis dataKey=\"x\" {...cartesianAxisProps(!showAxes)} />\n\t\t\t\t<YAxis {...cartesianAxisProps(!showAxes)} />\n\t\t\t\t<Tooltip {...chartTooltipProps({ cursor: \"bar\" })} />\n\t\t\t\t<Bar\n\t\t\t\t\tdataKey=\"y\"\n\t\t\t\t\tstackId=\"stack\"\n\t\t\t\t\tfill={CHART_COLORS[0]}\n\t\t\t\t\tradius={BAR_RADIUS.vertical}\n\t\t\t\t\t{...ANIMATION_PROPS}\n\t\t\t\t/>\n\t\t\t\t<Bar\n\t\t\t\t\tdataKey=\"y2\"\n\t\t\t\t\tstackId=\"stack\"\n\t\t\t\t\tfill={CHART_COLORS[2]}\n\t\t\t\t\tradius={BAR_RADIUS.vertical}\n\t\t\t\t\t{...ANIMATION_PROPS}\n\t\t\t\t/>\n\t\t\t\t<Bar\n\t\t\t\t\tdataKey=\"y3\"\n\t\t\t\t\tstackId=\"stack\"\n\t\t\t\t\tfill={CHART_COLORS[4]}\n\t\t\t\t\tradius={BAR_RADIUS.vertical}\n\t\t\t\t\t{...ANIMATION_PROPS}\n\t\t\t\t/>\n\t\t\t</RechartsBar>\n\t\t</ChartFrame>\n\t);\n}\n"],"mappings":";;;;;;;;AAYA,SAAgB,EAAgB,EAC/B,UAAO,GACP,eAAY,qBACZ,cACA,cAAW,MAMT;CACF,OACC,kBAAC,GAAD;EAAuB;EAAsB;EAC5C,UAAA,kBAAC,GAAD;GAAmB;GAAnB,UAAA;IACE,IAAW,kBAAC,GAAD,EAAe,GAAI,EAAa,CAAA,IAAI;IAChD,kBAAC,GAAD;KAAO,SAAQ;KAAI,GAAI,EAAmB,CAAC,CAAQ;IAAI,CAAA;IACvD,kBAAC,GAAD,EAAO,GAAI,EAAmB,CAAC,CAAQ,EAAI,CAAA;IAC3C,kBAAC,GAAD,EAAS,GAAI,EAAkB,EAAE,QAAQ,MAAM,CAAC,EAAI,CAAA;IACpD,kBAAC,GAAD;KACC,SAAQ;KACR,SAAQ;KACR,MAAM,EAAa;KACnB,QAAQ,EAAW;KACnB,GAAI;IACJ,CAAA;IACD,kBAAC,GAAD;KACC,SAAQ;KACR,SAAQ;KACR,MAAM,EAAa;KACnB,QAAQ,EAAW;KACnB,GAAI;IACJ,CAAA;IACD,kBAAC,GAAD;KACC,SAAQ;KACR,SAAQ;KACR,MAAM,EAAa;KACnB,QAAQ,EAAW;KACnB,GAAI;IACJ,CAAA;GACW;;CACF,CAAA;AAEd"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { LucideIcon } from "lucide-react";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
export declare function StatCard({ label, title, value, subtitle, icon: Icon, iconColor, trend, ariaLabel, className, }: {
|
|
4
|
+
label?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
value?: string | number;
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
icon?: LucideIcon;
|
|
9
|
+
iconColor?: string;
|
|
10
|
+
trend?: {
|
|
11
|
+
value: number;
|
|
12
|
+
label?: string;
|
|
13
|
+
};
|
|
14
|
+
ariaLabel?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
17
|
+
export declare function StatGrid({ children, columns, className, }: {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
columns?: 2 | 3 | 4;
|
|
20
|
+
className?: string;
|
|
21
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../utils/cn.js";
|
|
3
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
4
|
+
//#region src/charts/stat-card.tsx
|
|
5
|
+
function r({ label: r = "Requests", title: i, value: a = "12.4k", subtitle: o, icon: s, iconColor: c = "text-basalt-muted-foreground", trend: l, ariaLabel: u, className: d }) {
|
|
6
|
+
let f = i ?? r, p = typeof a == "number" ? a.toLocaleString() : a, m = l && l.value > 0, h = l && l.value < 0, g = u ?? [
|
|
7
|
+
f,
|
|
8
|
+
p,
|
|
9
|
+
o,
|
|
10
|
+
l ? `${m ? "+" : ""}${l.value}% ${l.label ?? ""}` : null
|
|
11
|
+
].filter(Boolean).join(" ").trim();
|
|
12
|
+
return /* @__PURE__ */ n("div", {
|
|
13
|
+
className: e("rounded-basalt-md border border-basalt-border bg-basalt-secondary p-4", d),
|
|
14
|
+
role: "img",
|
|
15
|
+
"aria-label": g,
|
|
16
|
+
children: [/* @__PURE__ */ n("div", {
|
|
17
|
+
className: "flex items-start justify-between",
|
|
18
|
+
children: [/* @__PURE__ */ n("div", {
|
|
19
|
+
className: "space-y-1",
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ t("p", {
|
|
22
|
+
className: "text-xs text-basalt-muted-foreground md:text-sm",
|
|
23
|
+
children: f
|
|
24
|
+
}),
|
|
25
|
+
/* @__PURE__ */ t("p", {
|
|
26
|
+
className: "font-display text-xl font-semibold tracking-tight text-basalt-foreground md:text-2xl",
|
|
27
|
+
children: p
|
|
28
|
+
}),
|
|
29
|
+
o ? /* @__PURE__ */ t("p", {
|
|
30
|
+
className: "text-xs text-basalt-muted-foreground",
|
|
31
|
+
children: o
|
|
32
|
+
}) : null
|
|
33
|
+
]
|
|
34
|
+
}), s ? /* @__PURE__ */ t("div", {
|
|
35
|
+
className: e("rounded-md bg-basalt-card p-2", c),
|
|
36
|
+
children: /* @__PURE__ */ t(s, {
|
|
37
|
+
className: "h-5 w-5",
|
|
38
|
+
strokeWidth: 1.5
|
|
39
|
+
})
|
|
40
|
+
}) : null]
|
|
41
|
+
}), l ? /* @__PURE__ */ n("div", {
|
|
42
|
+
className: "mt-3 flex items-center gap-1 text-xs",
|
|
43
|
+
children: [/* @__PURE__ */ t("span", {
|
|
44
|
+
className: e("font-medium", m && "text-basalt-heatmap-green-4", h && "text-basalt-destructive", !m && !h && "text-basalt-muted-foreground"),
|
|
45
|
+
children: `${m ? "+" : ""}${l.value}%`
|
|
46
|
+
}), l.label ? /* @__PURE__ */ t("span", {
|
|
47
|
+
className: "text-basalt-muted-foreground",
|
|
48
|
+
children: l.label
|
|
49
|
+
}) : null]
|
|
50
|
+
}) : null]
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function i({ children: n, columns: r = 4, className: i }) {
|
|
54
|
+
return /* @__PURE__ */ t("div", {
|
|
55
|
+
className: e("grid gap-3 md:gap-4", {
|
|
56
|
+
2: "grid-cols-1 sm:grid-cols-2",
|
|
57
|
+
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
58
|
+
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"
|
|
59
|
+
}[r], i),
|
|
60
|
+
children: n
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { r as StatCard, i as StatGrid };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=stat-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat-card.js","names":[],"sources":["../../src/charts/stat-card.tsx"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport function StatCard({\n\tlabel = \"Requests\",\n\ttitle,\n\tvalue = \"12.4k\",\n\tsubtitle,\n\ticon: Icon,\n\ticonColor = \"text-basalt-muted-foreground\",\n\ttrend,\n\tariaLabel,\n\tclassName,\n}: {\n\tlabel?: string;\n\ttitle?: string;\n\tvalue?: string | number;\n\tsubtitle?: string;\n\ticon?: LucideIcon;\n\ticonColor?: string;\n\ttrend?: { value: number; label?: string };\n\tariaLabel?: string;\n\tclassName?: string;\n}) {\n\tconst heading = title ?? label;\n\tconst display = typeof value === \"number\" ? value.toLocaleString() : value;\n\tconst isPositiveTrend = trend && trend.value > 0;\n\tconst isNegativeTrend = trend && trend.value < 0;\n\tconst named =\n\t\tariaLabel ??\n\t\t[\n\t\t\theading,\n\t\t\tdisplay,\n\t\t\tsubtitle,\n\t\t\ttrend ? `${isPositiveTrend ? \"+\" : \"\"}${trend.value}% ${trend.label ?? \"\"}` : null,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\" \")\n\t\t\t.trim();\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rounded-basalt-md border border-basalt-border bg-basalt-secondary p-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\trole=\"img\"\n\t\t\taria-label={named}\n\t\t>\n\t\t\t<div className=\"flex items-start justify-between\">\n\t\t\t\t<div className=\"space-y-1\">\n\t\t\t\t\t<p className=\"text-xs text-basalt-muted-foreground md:text-sm\">{heading}</p>\n\t\t\t\t\t<p className=\"font-display text-xl font-semibold tracking-tight text-basalt-foreground md:text-2xl\">\n\t\t\t\t\t\t{display}\n\t\t\t\t\t</p>\n\t\t\t\t\t{subtitle ? <p className=\"text-xs text-basalt-muted-foreground\">{subtitle}</p> : null}\n\t\t\t\t</div>\n\t\t\t\t{Icon ? (\n\t\t\t\t\t<div className={cn(\"rounded-md bg-basalt-card p-2\", iconColor)}>\n\t\t\t\t\t\t<Icon className=\"h-5 w-5\" strokeWidth={1.5} />\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t{trend ? (\n\t\t\t\t<div className=\"mt-3 flex items-center gap-1 text-xs\">\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"font-medium\",\n\t\t\t\t\t\t\tisPositiveTrend && \"text-basalt-heatmap-green-4\",\n\t\t\t\t\t\t\tisNegativeTrend && \"text-basalt-destructive\",\n\t\t\t\t\t\t\t!isPositiveTrend && !isNegativeTrend && \"text-basalt-muted-foreground\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{`${isPositiveTrend ? \"+\" : \"\"}${trend.value}%`}\n\t\t\t\t\t</span>\n\t\t\t\t\t{trend.label ? <span className=\"text-basalt-muted-foreground\">{trend.label}</span> : null}\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t);\n}\n\nexport function StatGrid({\n\tchildren,\n\tcolumns = 4,\n\tclassName,\n}: {\n\tchildren: ReactNode;\n\tcolumns?: 2 | 3 | 4;\n\tclassName?: string;\n}) {\n\tconst gridCols = {\n\t\t2: \"grid-cols-1 sm:grid-cols-2\",\n\t\t3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n\t\t4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n\t};\n\treturn <div className={cn(\"grid gap-3 md:gap-4\", gridCols[columns], className)}>{children}</div>;\n}\n"],"mappings":";;;;AAIA,SAAgB,EAAS,EACxB,WAAQ,YACR,UACA,WAAQ,SACR,aACA,MAAM,GACN,eAAY,gCACZ,UACA,cACA,gBAWE;CACF,IAAM,IAAU,KAAS,GACnB,IAAU,OAAO,KAAU,WAAW,EAAM,eAAe,IAAI,GAC/D,IAAkB,KAAS,EAAM,QAAQ,GACzC,IAAkB,KAAS,EAAM,QAAQ,GACzC,IACL,KACA;EACC;EACA;EACA;EACA,IAAQ,GAAG,IAAkB,MAAM,KAAK,EAAM,MAAM,IAAI,EAAM,SAAS,OAAO;CAC/E,CAAC,CACC,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,CAAC,CACT,KAAK;CACR,OACC,kBAAC,OAAD;EACC,WAAW,EACV,yEACA,CACD;EACA,MAAK;EACL,cAAY;EANb,UAAA,CAQC,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACC,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACC,kBAAC,KAAD;MAAG,WAAU;MAAmD,UAAA;KAAW,CAAA;KAC3E,kBAAC,KAAD;MAAG,WAAU;MACX,UAAA;KACC,CAAA;KACF,IAAW,kBAAC,KAAD;MAAG,WAAU;MAAwC,UAAA;KAAY,CAAA,IAAI;IAC7E;GACJ,CAAA,GAAA,IACA,kBAAC,OAAD;IAAK,WAAW,EAAG,iCAAiC,CAAS;IAC5D,UAAA,kBAAC,GAAD;KAAM,WAAU;KAAU,aAAa;IAAM,CAAA;GACzC,CAAA,IACF,IACA;EACJ,CAAA,GAAA,IACA,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACC,kBAAC,QAAD;IACC,WAAW,EACV,eACA,KAAmB,+BACnB,KAAmB,2BACnB,CAAC,KAAmB,CAAC,KAAmB,8BACzC;IAEC,UAAA,GAAG,IAAkB,MAAM,KAAK,EAAM,MAAM;GACxC,CAAA,GACL,EAAM,QAAQ,kBAAC,QAAD;IAAM,WAAU;IAAgC,UAAA,EAAM;GAAY,CAAA,IAAI,IACjF;EACF,CAAA,IAAA,IACA;;AAEP;AAEA,SAAgB,EAAS,EACxB,aACA,aAAU,GACV,gBAKE;CAMF,OAAO,kBAAC,OAAD;EAAK,WAAW,EAAG,uBAAuB;GAJhD,GAAG;GACH,GAAG;GACH,GAAG;EAE6C,EAAS,IAAU,CAAS;EAAI;CAAc,CAAA;AAChG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type TimelineEvent = {
|
|
2
|
+
id: string;
|
|
3
|
+
time: string;
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle?: string;
|
|
6
|
+
color?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function Timeline({ items, events, ariaLabel, className, }: {
|
|
9
|
+
items?: {
|
|
10
|
+
id?: string;
|
|
11
|
+
title: string;
|
|
12
|
+
at?: string;
|
|
13
|
+
}[];
|
|
14
|
+
events?: TimelineEvent[];
|
|
15
|
+
ariaLabel?: string;
|
|
16
|
+
className?: string;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../utils/cn.js";
|
|
3
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
4
|
+
//#region src/charts/timeline.tsx
|
|
5
|
+
var r = Array.from({ length: 24 }, (e, t) => t);
|
|
6
|
+
function i(e) {
|
|
7
|
+
return Number.parseInt(e.split(":")[0] ?? "0", 10);
|
|
8
|
+
}
|
|
9
|
+
function a({ items: r = [{
|
|
10
|
+
title: "Created",
|
|
11
|
+
at: "Mon"
|
|
12
|
+
}, {
|
|
13
|
+
title: "Shipped",
|
|
14
|
+
at: "Tue"
|
|
15
|
+
}], events: i, ariaLabel: a = "Timeline", className: s }) {
|
|
16
|
+
return i ? /* @__PURE__ */ t(o, {
|
|
17
|
+
events: i,
|
|
18
|
+
ariaLabel: a,
|
|
19
|
+
className: s
|
|
20
|
+
}) : /* @__PURE__ */ t("ol", {
|
|
21
|
+
className: e("space-y-2 text-sm", s),
|
|
22
|
+
"aria-label": a,
|
|
23
|
+
children: r.map((e, r) => /* @__PURE__ */ n("li", {
|
|
24
|
+
className: "flex gap-2",
|
|
25
|
+
children: [/* @__PURE__ */ t("span", {
|
|
26
|
+
className: "text-basalt-muted-foreground",
|
|
27
|
+
children: e.at
|
|
28
|
+
}), /* @__PURE__ */ t("span", { children: e.title })]
|
|
29
|
+
}, e.id ?? `${e.at ?? ""}-${e.title}-${r}`))
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function o({ events: a, ariaLabel: o, className: s }) {
|
|
33
|
+
let c = /* @__PURE__ */ new Map();
|
|
34
|
+
for (let e of a) {
|
|
35
|
+
let t = i(e.time), n = c.get(t) ?? [];
|
|
36
|
+
c.set(t, [...n, e]);
|
|
37
|
+
}
|
|
38
|
+
return /* @__PURE__ */ t("ol", {
|
|
39
|
+
className: e("flex flex-col pl-14", s),
|
|
40
|
+
"aria-label": o,
|
|
41
|
+
children: r.map((r) => {
|
|
42
|
+
let i = c.get(r) ?? [], a = i.length > 0;
|
|
43
|
+
return /* @__PURE__ */ n("li", {
|
|
44
|
+
className: e("relative flex items-start border-l-2 py-2 pl-4", a ? "border-basalt-primary" : "border-basalt-border"),
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ n("div", {
|
|
47
|
+
className: "absolute left-0 w-12 -translate-x-full pr-2 text-right text-xs text-basalt-muted-foreground",
|
|
48
|
+
children: [r.toString().padStart(2, "0"), ":00"]
|
|
49
|
+
}),
|
|
50
|
+
/* @__PURE__ */ t("div", { className: e("absolute -left-[5px] top-2 h-2 w-2 rounded-full", a ? "bg-basalt-primary" : "bg-basalt-border") }),
|
|
51
|
+
/* @__PURE__ */ t("div", {
|
|
52
|
+
className: "flex min-h-[24px] w-full flex-col gap-1",
|
|
53
|
+
children: i.map((r) => /* @__PURE__ */ n("div", {
|
|
54
|
+
className: e("flex items-center gap-2 rounded-md px-2 py-1 text-xs", r.color ? `${r.color} text-white` : "bg-basalt-muted text-basalt-foreground"),
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ t("span", {
|
|
57
|
+
className: "font-medium",
|
|
58
|
+
children: r.time
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ t("span", {
|
|
61
|
+
className: "truncate",
|
|
62
|
+
children: r.title
|
|
63
|
+
}),
|
|
64
|
+
r.subtitle ? /* @__PURE__ */ t("span", {
|
|
65
|
+
className: e("truncate", r.color ? "text-white/80" : "text-basalt-muted-foreground"),
|
|
66
|
+
children: r.subtitle
|
|
67
|
+
}) : null
|
|
68
|
+
]
|
|
69
|
+
}, r.id))
|
|
70
|
+
})
|
|
71
|
+
]
|
|
72
|
+
}, r);
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//#endregion
|
|
77
|
+
export { a as Timeline };
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","names":[],"sources":["../../src/charts/timeline.tsx"],"sourcesContent":["import { cn } from \"../utils/cn\";\n\nexport type TimelineEvent = {\n\tid: string;\n\ttime: string;\n\ttitle: string;\n\tsubtitle?: string;\n\tcolor?: string;\n};\n\nconst hours = Array.from({ length: 24 }, (_, index) => index);\n\nfunction getHour(time: string) {\n\treturn Number.parseInt(time.split(\":\")[0] ?? \"0\", 10);\n}\n\nexport function Timeline({\n\titems = [\n\t\t{ title: \"Created\", at: \"Mon\" },\n\t\t{ title: \"Shipped\", at: \"Tue\" },\n\t],\n\tevents,\n\tariaLabel = \"Timeline\",\n\tclassName,\n}: {\n\titems?: { id?: string; title: string; at?: string }[];\n\tevents?: TimelineEvent[];\n\tariaLabel?: string;\n\tclassName?: string;\n}) {\n\tif (events) {\n\t\treturn <HourTimeline events={events} ariaLabel={ariaLabel} className={className} />;\n\t}\n\treturn (\n\t\t<ol className={cn(\"space-y-2 text-sm\", className)} aria-label={ariaLabel}>\n\t\t\t{items.map((item, index) => (\n\t\t\t\t<li key={item.id ?? `${item.at ?? \"\"}-${item.title}-${index}`} className=\"flex gap-2\">\n\t\t\t\t\t<span className=\"text-basalt-muted-foreground\">{item.at}</span>\n\t\t\t\t\t<span>{item.title}</span>\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ol>\n\t);\n}\n\nfunction HourTimeline({\n\tevents,\n\tariaLabel,\n\tclassName,\n}: {\n\tevents: TimelineEvent[];\n\tariaLabel: string;\n\tclassName?: string;\n}) {\n\tconst eventsByHour = new Map<number, TimelineEvent[]>();\n\tfor (const event of events) {\n\t\tconst hour = getHour(event.time);\n\t\tconst existing = eventsByHour.get(hour) ?? [];\n\t\teventsByHour.set(hour, [...existing, event]);\n\t}\n\treturn (\n\t\t<ol className={cn(\"flex flex-col pl-14\", className)} aria-label={ariaLabel}>\n\t\t\t{hours.map((hour) => {\n\t\t\t\tconst hourEvents = eventsByHour.get(hour) ?? [];\n\t\t\t\tconst hasEvents = hourEvents.length > 0;\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={hour}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"relative flex items-start border-l-2 py-2 pl-4\",\n\t\t\t\t\t\t\thasEvents ? \"border-basalt-primary\" : \"border-basalt-border\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"absolute left-0 w-12 -translate-x-full pr-2 text-right text-xs text-basalt-muted-foreground\">\n\t\t\t\t\t\t\t{hour.toString().padStart(2, \"0\")}:00\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"absolute -left-[5px] top-2 h-2 w-2 rounded-full\",\n\t\t\t\t\t\t\t\thasEvents ? \"bg-basalt-primary\" : \"bg-basalt-border\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"flex min-h-[24px] w-full flex-col gap-1\">\n\t\t\t\t\t\t\t{hourEvents.map((event) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"flex items-center gap-2 rounded-md px-2 py-1 text-xs\",\n\t\t\t\t\t\t\t\t\t\tevent.color\n\t\t\t\t\t\t\t\t\t\t\t? `${event.color} text-white`\n\t\t\t\t\t\t\t\t\t\t\t: \"bg-basalt-muted text-basalt-foreground\",\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span className=\"font-medium\">{event.time}</span>\n\t\t\t\t\t\t\t\t\t<span className=\"truncate\">{event.title}</span>\n\t\t\t\t\t\t\t\t\t{event.subtitle ? (\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\"truncate\",\n\t\t\t\t\t\t\t\t\t\t\t\tevent.color ? \"text-white/80\" : \"text-basalt-muted-foreground\",\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{event.subtitle}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ol>\n\t);\n}\n"],"mappings":";;;;AAUA,IAAM,IAAQ,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAU,CAAK;AAE5D,SAAS,EAAQ,GAAc;CAC9B,OAAO,OAAO,SAAS,EAAK,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,EAAE;AACrD;AAEA,SAAgB,EAAS,EACxB,WAAQ,CACP;CAAE,OAAO;CAAW,IAAI;AAAM,GAC9B;CAAE,OAAO;CAAW,IAAI;AAAM,CAC/B,GACA,WACA,eAAY,YACZ,gBAME;CAIF,OAHI,IACI,kBAAC,GAAD;EAAsB;EAAmB;EAAsB;CAAY,CAAA,IAGlF,kBAAC,MAAD;EAAI,WAAW,EAAG,qBAAqB,CAAS;EAAG,cAAY;EAC7D,UAAA,EAAM,KAAK,GAAM,MACjB,kBAAC,MAAD;GAA+D,WAAU;GAAzE,UAAA,CACC,kBAAC,QAAD;IAAM,WAAU;IAAgC,UAAA,EAAK;GAAS,CAAA,GAC9D,kBAAC,QAAD,EAAA,UAAO,EAAK,MAAY,CAAA,CACrB;EAHK,GAAA,EAAK,MAAM,GAAG,EAAK,MAAM,GAAG,GAAG,EAAK,MAAM,GAAG,GAGlD,CACJ;CACE,CAAA;AAEN;AAEA,SAAS,EAAa,EACrB,WACA,cACA,gBAKE;CACF,IAAM,oBAAe,IAAI,IAA6B;CACtD,KAAK,IAAM,KAAS,GAAQ;EAC3B,IAAM,IAAO,EAAQ,EAAM,IAAI,GACzB,IAAW,EAAa,IAAI,CAAI,KAAK,CAAC;EAC5C,EAAa,IAAI,GAAM,CAAC,GAAG,GAAU,CAAK,CAAC;CAC5C;CACA,OACC,kBAAC,MAAD;EAAI,WAAW,EAAG,uBAAuB,CAAS;EAAG,cAAY;EAC/D,UAAA,EAAM,KAAK,MAAS;GACpB,IAAM,IAAa,EAAa,IAAI,CAAI,KAAK,CAAC,GACxC,IAAY,EAAW,SAAS;GACtC,OACC,kBAAC,MAAD;IAEC,WAAW,EACV,kDACA,IAAY,0BAA0B,sBACvC;IALD,UAAA;KAOC,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,EAAK,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAE,KAC9B;;KACL,kBAAC,OAAD,EACC,WAAW,EACV,mDACA,IAAY,sBAAsB,kBACnC,EACA,CAAA;KACD,kBAAC,OAAD;MAAK,WAAU;MACb,UAAA,EAAW,KAAK,MAChB,kBAAC,OAAD;OAEC,WAAW,EACV,wDACA,EAAM,QACH,GAAG,EAAM,MAAM,eACf,wCACJ;OAPD,UAAA;QASC,kBAAC,QAAD;SAAM,WAAU;SAAe,UAAA,EAAM;QAAW,CAAA;QAChD,kBAAC,QAAD;SAAM,WAAU;SAAY,UAAA,EAAM;QAAY,CAAA;QAC7C,EAAM,WACN,kBAAC,QAAD;SACC,WAAW,EACV,YACA,EAAM,QAAQ,kBAAkB,8BACjC;SAEC,UAAA,EAAM;QACF,CAAA,IACH;OACA;MApBC,GAAA,EAAM,EAoBP,CACL;KACG,CAAA;IACF;GAzCE,GAAA,CAyCF;EAEN,CAAC;CACE,CAAA;AAEN"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { LineChart as e } from "./line.js";
|
|
3
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
4
|
+
//#region src/charts/timeseries.tsx
|
|
5
|
+
function n({ data: n, ariaLabel: r = "Timeseries", className: i }) {
|
|
6
|
+
return /* @__PURE__ */ t(e, {
|
|
7
|
+
data: n,
|
|
8
|
+
ariaLabel: r,
|
|
9
|
+
className: i
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { n as Timeseries };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=timeseries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeseries.js","names":[],"sources":["../../src/charts/timeseries.tsx"],"sourcesContent":["import { LineChart } from \"./line\";\nimport type { XYPoint } from \"./sample\";\n\nexport function Timeseries({\n\tdata,\n\tariaLabel = \"Timeseries\",\n\tclassName,\n}: {\n\tdata?: XYPoint[];\n\tariaLabel?: string;\n\tclassName?: string;\n}) {\n\treturn <LineChart data={data} ariaLabel={ariaLabel} className={className} />;\n}\n"],"mappings":";;;;AAGA,SAAgB,EAAW,EAC1B,SACA,eAAY,cACZ,gBAKE;CACF,OAAO,kBAAC,GAAD;EAAiB;EAAiB;EAAsB;CAAY,CAAA;AAC5E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionMultipleProps | AccordionPrimitive.AccordionSingleProps) & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
export declare const AccordionItem: React.ForwardRefExoticComponent<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
export declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
export declare const AccordionContent: React.ForwardRefExoticComponent<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../utils/cn.js";
|
|
3
|
+
import * as t from "react";
|
|
4
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
5
|
+
import * as r from "@radix-ui/react-accordion";
|
|
6
|
+
//#region src/components/accordion.tsx
|
|
7
|
+
var i = r.Root, a = r.Item, o = t.forwardRef(({ className: t, children: i, ...a }, o) => /* @__PURE__ */ n(r.Header, {
|
|
8
|
+
className: "flex",
|
|
9
|
+
children: /* @__PURE__ */ n(r.Trigger, {
|
|
10
|
+
ref: o,
|
|
11
|
+
className: e("flex flex-1 items-center justify-between py-3 text-sm font-medium", t),
|
|
12
|
+
...a,
|
|
13
|
+
children: i
|
|
14
|
+
})
|
|
15
|
+
}));
|
|
16
|
+
o.displayName = r.Trigger.displayName;
|
|
17
|
+
var s = r.Content;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { i as Accordion, s as AccordionContent, a as AccordionItem, o as AccordionTrigger };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.js","names":[],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport const Accordion = AccordionPrimitive.Root;\n\nexport const AccordionItem = AccordionPrimitive.Item;\n\nexport const AccordionTrigger = React.forwardRef<\n\tReact.ElementRef<typeof AccordionPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<AccordionPrimitive.Header className=\"flex\">\n\t\t<AccordionPrimitive.Trigger\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex flex-1 items-center justify-between py-3 text-sm font-medium\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</AccordionPrimitive.Trigger>\n\t</AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nexport const AccordionContent = AccordionPrimitive.Content;\n"],"mappings":";;;;;;AAIA,IAAa,IAAY,EAAmB,MAE/B,IAAgB,EAAmB,MAEnC,IAAmB,EAAM,YAGnC,EAAE,cAAW,aAAU,GAAG,KAAS,MACrC,kBAAC,EAAmB,QAApB;CAA2B,WAAU;CACpC,UAAA,kBAAC,EAAmB,SAApB;EACM;EACL,WAAW,EAAG,qEAAqE,CAAS;EAC5F,GAAI;EAEH;CAC0B,CAAA;AACF,CAAA,CAC3B;AACD,EAAiB,cAAc,EAAmB,QAAQ;AAE1D,IAAa,IAAmB,EAAmB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { type DialogSize } from "./dialog.js";
|
|
4
|
+
export declare const AlertDialog: React.FC<AlertDialogPrimitive.AlertDialogProps>;
|
|
5
|
+
export declare const AlertDialogTrigger: React.ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
export declare const AlertDialogPortal: React.FC<AlertDialogPrimitive.AlertDialogPortalProps>;
|
|
7
|
+
export declare const AlertDialogOverlay: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
export type AlertDialogContentProps = React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> & {
|
|
9
|
+
size?: DialogSize;
|
|
10
|
+
};
|
|
11
|
+
export declare const AlertDialogContent: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
12
|
+
size?: DialogSize;
|
|
13
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
export declare const AlertDialogTitle: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
15
|
+
export declare const AlertDialogDescription: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
16
|
+
export declare const AlertDialogCancel: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
17
|
+
export declare const AlertDialogAction: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
18
|
+
export declare function AlertDialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
19
|
+
export declare namespace AlertDialogHeader {
|
|
20
|
+
var displayName: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function AlertDialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
23
|
+
export declare namespace AlertDialogFooter {
|
|
24
|
+
var displayName: string;
|
|
25
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../utils/cn.js";
|
|
3
|
+
import { buttonVariants as t } from "./button.js";
|
|
4
|
+
import { dialogOverlayClass as n, dialogPanelClass as r } from "./dialog.js";
|
|
5
|
+
import * as i from "@radix-ui/react-alert-dialog";
|
|
6
|
+
import * as a from "react";
|
|
7
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/alert-dialog.tsx
|
|
9
|
+
var c = i.Root, l = i.Trigger, u = i.Portal, d = a.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ o(i.Overlay, {
|
|
10
|
+
ref: r,
|
|
11
|
+
className: n(e),
|
|
12
|
+
...t
|
|
13
|
+
}));
|
|
14
|
+
d.displayName = i.Overlay.displayName;
|
|
15
|
+
var f = a.forwardRef(({ className: e, size: t = "base", ...n }, a) => /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ o(d, {}), /* @__PURE__ */ o(i.Content, {
|
|
16
|
+
ref: a,
|
|
17
|
+
className: r({
|
|
18
|
+
size: t,
|
|
19
|
+
className: e
|
|
20
|
+
}),
|
|
21
|
+
...n
|
|
22
|
+
})] }));
|
|
23
|
+
f.displayName = i.Content.displayName;
|
|
24
|
+
var p = a.forwardRef(({ className: t, ...n }, r) => /* @__PURE__ */ o(i.Title, {
|
|
25
|
+
ref: r,
|
|
26
|
+
className: e("text-2xl font-semibold tracking-tight", t),
|
|
27
|
+
...n
|
|
28
|
+
}));
|
|
29
|
+
p.displayName = i.Title.displayName;
|
|
30
|
+
var m = a.forwardRef(({ className: t, ...n }, r) => /* @__PURE__ */ o(i.Description, {
|
|
31
|
+
ref: r,
|
|
32
|
+
className: e("text-base text-basalt-muted-foreground", t),
|
|
33
|
+
...n
|
|
34
|
+
}));
|
|
35
|
+
m.displayName = i.Description.displayName;
|
|
36
|
+
var h = a.forwardRef(({ className: n, ...r }, a) => /* @__PURE__ */ o(i.Cancel, {
|
|
37
|
+
ref: a,
|
|
38
|
+
className: e(t({ variant: "outline" }), n),
|
|
39
|
+
...r
|
|
40
|
+
}));
|
|
41
|
+
h.displayName = i.Cancel.displayName;
|
|
42
|
+
var g = a.forwardRef(({ className: n, ...r }, a) => /* @__PURE__ */ o(i.Action, {
|
|
43
|
+
ref: a,
|
|
44
|
+
className: e(t({ variant: "destructive" }), n),
|
|
45
|
+
...r
|
|
46
|
+
}));
|
|
47
|
+
g.displayName = i.Action.displayName;
|
|
48
|
+
var _ = ({ className: t, ...n }) => /* @__PURE__ */ o("div", {
|
|
49
|
+
className: e("flex flex-col space-y-2 text-left", t),
|
|
50
|
+
...n
|
|
51
|
+
});
|
|
52
|
+
_.displayName = "AlertDialogHeader";
|
|
53
|
+
var v = ({ className: t, ...n }) => /* @__PURE__ */ o("div", {
|
|
54
|
+
className: e("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", t),
|
|
55
|
+
...n
|
|
56
|
+
});
|
|
57
|
+
v.displayName = "AlertDialogFooter";
|
|
58
|
+
//#endregion
|
|
59
|
+
export { c as AlertDialog, g as AlertDialogAction, h as AlertDialogCancel, f as AlertDialogContent, m as AlertDialogDescription, v as AlertDialogFooter, _ as AlertDialogHeader, d as AlertDialogOverlay, u as AlertDialogPortal, p as AlertDialogTitle, l as AlertDialogTrigger };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=alert-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.js","names":[],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport * as React from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { buttonVariants } from \"./button\";\nimport { type DialogSize, dialogOverlayClass, dialogPanelClass } from \"./dialog\";\n\nexport const AlertDialog = AlertDialogPrimitive.Root;\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nexport const AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nexport const AlertDialogOverlay = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Overlay ref={ref} className={dialogOverlayClass(className)} {...props} />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nexport type AlertDialogContentProps = React.ComponentPropsWithoutRef<\n\ttypeof AlertDialogPrimitive.Content\n> & {\n\tsize?: DialogSize;\n};\n\nexport const AlertDialogContent = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogPrimitive.Content>,\n\tAlertDialogContentProps\n>(({ className, size = \"base\", ...props }, ref) => (\n\t<AlertDialogPortal>\n\t\t<AlertDialogOverlay />\n\t\t<AlertDialogPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={dialogPanelClass({ size, className })}\n\t\t\t{...props}\n\t\t/>\n\t</AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nexport const AlertDialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-2xl font-semibold tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nexport const AlertDialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-base text-basalt-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nexport const AlertDialogCancel = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Cancel\n\t\tref={ref}\n\t\tclassName={cn(buttonVariants({ variant: \"outline\" }), className)}\n\t\t{...props}\n\t/>\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport const AlertDialogAction = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogPrimitive.Action>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Action\n\t\tref={ref}\n\t\tclassName={cn(buttonVariants({ variant: \"destructive\" }), className)}\n\t\t{...props}\n\t/>\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nexport const AlertDialogHeader = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n\t<div className={cn(\"flex flex-col space-y-2 text-left\", className)} {...props} />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nexport const AlertDialogFooter = ({\n\tclassName,\n\t...props\n}: 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);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n"],"mappings":";;;;;;;;AAMA,IAAa,IAAc,EAAqB,MACnC,IAAqB,EAAqB,SAC1C,IAAoB,EAAqB,QAEzC,IAAqB,EAAM,YAGrC,EAAE,cAAW,GAAG,KAAS,MAC3B,kBAAC,EAAqB,SAAtB;CAAmC;CAAK,WAAW,EAAmB,CAAS;CAAG,GAAI;AAAQ,CAAA,CAC9F;AACD,EAAmB,cAAc,EAAqB,QAAQ;AAQ9D,IAAa,IAAqB,EAAM,YAGrC,EAAE,cAAW,UAAO,QAAQ,GAAG,KAAS,MAC1C,kBAAC,GAAD,EAAA,UAAA,CACC,kBAAC,GAAD,CAAqB,CAAA,GACrB,kBAAC,EAAqB,SAAtB;CACM;CACL,WAAW,EAAiB;EAAE;EAAM;CAAU,CAAC;CAC/C,GAAI;AACJ,CAAA,CACiB,EAAA,CAAA,CACnB;AACD,EAAmB,cAAc,EAAqB,QAAQ;AAE9D,IAAa,IAAmB,EAAM,YAGnC,EAAE,cAAW,GAAG,KAAS,MAC3B,kBAAC,EAAqB,OAAtB;CACM;CACL,WAAW,EAAG,yCAAyC,CAAS;CAChE,GAAI;AACJ,CAAA,CACD;AACD,EAAiB,cAAc,EAAqB,MAAM;AAE1D,IAAa,IAAyB,EAAM,YAGzC,EAAE,cAAW,GAAG,KAAS,MAC3B,kBAAC,EAAqB,aAAtB;CACM;CACL,WAAW,EAAG,0CAA0C,CAAS;CACjE,GAAI;AACJ,CAAA,CACD;AACD,EAAuB,cAAc,EAAqB,YAAY;AAEtE,IAAa,IAAoB,EAAM,YAGpC,EAAE,cAAW,GAAG,KAAS,MAC3B,kBAAC,EAAqB,QAAtB;CACM;CACL,WAAW,EAAG,EAAe,EAAE,SAAS,UAAU,CAAC,GAAG,CAAS;CAC/D,GAAI;AACJ,CAAA,CACD;AACD,EAAkB,cAAc,EAAqB,OAAO;AAE5D,IAAa,IAAoB,EAAM,YAGpC,EAAE,cAAW,GAAG,KAAS,MAC3B,kBAAC,EAAqB,QAAtB;CACM;CACL,WAAW,EAAG,EAAe,EAAE,SAAS,cAAc,CAAC,GAAG,CAAS;CACnE,GAAI;AACJ,CAAA,CACD;AACD,EAAkB,cAAc,EAAqB,OAAO;AAE5D,IAAa,KAAqB,EACjC,cACA,GAAG,QAEH,kBAAC,OAAD;CAAK,WAAW,EAAG,qCAAqC,CAAS;CAAG,GAAI;AAAQ,CAAA;AAEjF,EAAkB,cAAc;AAEhC,IAAa,KAAqB,EACjC,cACA,GAAG,QAEH,kBAAC,OAAD;CACC,WAAW,EAAG,0DAA0D,CAAS;CACjF,GAAI;AACJ,CAAA;AAEF,EAAkB,cAAc"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
export declare function AppHeader({ leading, breadcrumbs, title, actions, className, ...props }: HTMLAttributes<HTMLElement> & {
|
|
3
|
+
leading?: ReactNode;
|
|
4
|
+
breadcrumbs?: {
|
|
5
|
+
href?: string;
|
|
6
|
+
label: ReactNode;
|
|
7
|
+
}[];
|
|
8
|
+
title?: ReactNode;
|
|
9
|
+
actions?: ReactNode;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../utils/cn.js";
|
|
3
|
+
import { Breadcrumbs as t } from "./breadcrumbs.js";
|
|
4
|
+
import { ChevronRight as n } from "lucide-react";
|
|
5
|
+
import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/app-header.tsx
|
|
7
|
+
function o({ leading: o, breadcrumbs: s, title: c, actions: l, className: u, ...d }) {
|
|
8
|
+
return /* @__PURE__ */ a("header", {
|
|
9
|
+
className: e("flex h-14 shrink-0 items-center justify-between gap-3 px-4 md:px-6", u),
|
|
10
|
+
...d,
|
|
11
|
+
children: [/* @__PURE__ */ a("div", {
|
|
12
|
+
className: "flex min-w-0 items-center gap-3",
|
|
13
|
+
children: [o, /* @__PURE__ */ a("div", {
|
|
14
|
+
className: "flex min-w-0 items-center gap-1",
|
|
15
|
+
children: [s && s.length > 0 ? /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i(t, {
|
|
16
|
+
items: s,
|
|
17
|
+
className: "min-w-0"
|
|
18
|
+
}), /* @__PURE__ */ i(n, {
|
|
19
|
+
className: "size-3 shrink-0 text-basalt-muted-foreground",
|
|
20
|
+
"aria-hidden": "true"
|
|
21
|
+
})] }) : null, c ? /* @__PURE__ */ i("h1", {
|
|
22
|
+
className: "truncate text-sm font-normal text-basalt-foreground",
|
|
23
|
+
children: c
|
|
24
|
+
}) : null]
|
|
25
|
+
})]
|
|
26
|
+
}), l ? /* @__PURE__ */ i("div", {
|
|
27
|
+
className: "flex shrink-0 items-center gap-1",
|
|
28
|
+
children: l
|
|
29
|
+
}) : null]
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { o as AppHeader };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=app-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-header.js","names":[],"sources":["../../src/components/app-header.tsx"],"sourcesContent":["import { ChevronRight } from \"lucide-react\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Breadcrumbs } from \"./breadcrumbs\";\n\nexport function AppHeader({\n\tleading,\n\tbreadcrumbs,\n\ttitle,\n\tactions,\n\tclassName,\n\t...props\n}: HTMLAttributes<HTMLElement> & {\n\tleading?: ReactNode;\n\tbreadcrumbs?: { href?: string; label: ReactNode }[];\n\ttitle?: ReactNode;\n\tactions?: ReactNode;\n}) {\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-14 shrink-0 items-center justify-between gap-3 px-4 md:px-6\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"flex min-w-0 items-center gap-3\">\n\t\t\t\t{leading}\n\t\t\t\t<div className=\"flex min-w-0 items-center gap-1\">\n\t\t\t\t\t{breadcrumbs && breadcrumbs.length > 0 ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Breadcrumbs items={breadcrumbs} className=\"min-w-0\" />\n\t\t\t\t\t\t\t<ChevronRight\n\t\t\t\t\t\t\t\tclassName=\"size-3 shrink-0 text-basalt-muted-foreground\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t\t{title ? (\n\t\t\t\t\t\t<h1 className=\"truncate text-sm font-normal text-basalt-foreground\">{title}</h1>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{actions ? <div className=\"flex shrink-0 items-center gap-1\">{actions}</div> : null}\n\t\t</header>\n\t);\n}\n"],"mappings":";;;;;;AAKA,SAAgB,EAAU,EACzB,YACA,gBACA,UACA,YACA,cACA,GAAG,KAMD;CACF,OACC,kBAAC,UAAD;EACC,WAAW,EACV,sEACA,CACD;EACA,GAAI;EALL,UAAA,CAOC,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,GACD,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,KAAe,EAAY,SAAS,IACpC,kBAAA,GAAA,EAAA,UAAA,CACC,kBAAC,GAAD;KAAa,OAAO;KAAa,WAAU;IAAW,CAAA,GACtD,kBAAC,GAAD;KACC,WAAU;KACV,eAAY;IACZ,CAAA,CACA,EAAA,CAAA,IACC,MACH,IACA,kBAAC,MAAD;KAAI,WAAU;KAAuD,UAAA;IAAU,CAAA,IAC5E,IACA;GACD,CAAA,CAAA;EACJ,CAAA,GAAA,IAAU,kBAAC,OAAD;GAAK,WAAU;GAAoC,UAAA;EAAa,CAAA,IAAI,IACxE;;AAEV"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AnchorHTMLAttributes, HTMLAttributes } from "react";
|
|
2
|
+
export declare function AppSkipLink({ href, className, children, ...props }: AnchorHTMLAttributes<HTMLAnchorElement>): import("react").JSX.Element;
|
|
3
|
+
export declare function AppShell({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
4
|
+
export declare function AppMain({ className, ...props }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../utils/cn.js";
|
|
3
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/app-shell.tsx
|
|
5
|
+
function n({ href: n = "#main-content", className: r, children: i, ...a }) {
|
|
6
|
+
return /* @__PURE__ */ t("a", {
|
|
7
|
+
href: n,
|
|
8
|
+
className: e("sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-[100] focus:rounded-lg focus:bg-basalt-primary focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-basalt-primary-foreground", r),
|
|
9
|
+
...a,
|
|
10
|
+
children: i
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function r({ className: n, ...r }) {
|
|
14
|
+
return /* @__PURE__ */ t("div", {
|
|
15
|
+
className: e("flex h-screen w-full overflow-hidden bg-basalt-background", n),
|
|
16
|
+
...r
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function i({ className: n, ...r }) {
|
|
20
|
+
return /* @__PURE__ */ t("main", {
|
|
21
|
+
id: "main-content",
|
|
22
|
+
className: e("flex h-full min-w-0 flex-1 flex-col overflow-hidden", n),
|
|
23
|
+
...r
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { i as AppMain, r as AppShell, n as AppSkipLink };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=app-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-shell.js","names":[],"sources":["../../src/components/app-shell.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, HTMLAttributes } from \"react\";\nimport { cn } from \"../utils/cn\";\n\nexport function AppSkipLink({\n\thref = \"#main-content\",\n\tclassName,\n\tchildren,\n\t...props\n}: AnchorHTMLAttributes<HTMLAnchorElement>) {\n\treturn (\n\t\t<a\n\t\t\thref={href}\n\t\t\tclassName={cn(\n\t\t\t\t\"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-[100] focus:rounded-lg focus:bg-basalt-primary focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-basalt-primary-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</a>\n\t);\n}\n\nexport function AppShell({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex h-screen w-full overflow-hidden bg-basalt-background\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function AppMain({ className, ...props }: HTMLAttributes<HTMLElement>) {\n\treturn (\n\t\t<main\n\t\t\tid=\"main-content\"\n\t\t\tclassName={cn(\"flex h-full min-w-0 flex-1 flex-col overflow-hidden\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"],"mappings":";;;;AAGA,SAAgB,EAAY,EAC3B,UAAO,iBACP,cACA,aACA,GAAG,KACwC;CAC3C,OACC,kBAAC,KAAD;EACO;EACN,WAAW,EACV,uNACA,CACD;EACA,GAAI;EAEH;CACC,CAAA;AAEL;AAEA,SAAgB,EAAS,EAAE,cAAW,GAAG,KAAyC;CACjF,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,6DAA6D,CAAS;EACpF,GAAI;CACJ,CAAA;AAEH;AAEA,SAAgB,EAAQ,EAAE,cAAW,GAAG,KAAsC;CAC7E,OACC,kBAAC,QAAD;EACC,IAAG;EACH,WAAW,EAAG,uDAAuD,CAAS;EAC9E,GAAI;CACJ,CAAA;AAEH"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from "react";
|
|
2
|
+
import type { InputSize } from "./input.js";
|
|
3
|
+
import { type TypeaheadItem } from "./typeahead-field.js";
|
|
4
|
+
export type AutocompleteItem = TypeaheadItem;
|
|
5
|
+
export type AutocompleteProps = Omit<ComponentPropsWithoutRef<"div">, "children" | "defaultValue" | "onChange"> & {
|
|
6
|
+
/**
|
|
7
|
+
* Suggestions shown as the query matches. Values outside the list are allowed.
|
|
8
|
+
*/
|
|
9
|
+
items: AutocompleteItem[];
|
|
10
|
+
/**
|
|
11
|
+
* The controlled value.
|
|
12
|
+
*/
|
|
13
|
+
value?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The uncontrolled initial value.
|
|
16
|
+
*/
|
|
17
|
+
defaultValue?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Called when the value changes, including freeform text.
|
|
20
|
+
*/
|
|
21
|
+
onValueChange?: (value: string) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Native form field name.
|
|
24
|
+
*/
|
|
25
|
+
name?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Placeholder shown when the field is empty.
|
|
28
|
+
* @default Search…
|
|
29
|
+
*/
|
|
30
|
+
placeholder?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Disable the field.
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Disable the field and mark it busy.
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
loading?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The visual size of the field.
|
|
43
|
+
* @default default
|
|
44
|
+
*/
|
|
45
|
+
size?: InputSize;
|
|
46
|
+
};
|
|
47
|
+
export declare function Autocomplete({ items, value, defaultValue, onValueChange, name, placeholder, disabled, loading, size, className, id, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, ...rest }: AutocompleteProps): import("react").JSX.Element;
|