@aortl/admin-react 0.13.2 → 0.14.0

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/index.d.ts CHANGED
@@ -23,6 +23,11 @@ export { Select, type SelectProps, type SelectTriggerProps, type SelectTriggerVa
23
23
  export { Container, type ContainerProps, type ContainerSize } from './Container';
24
24
  export { Card, type CardProps, type CardVariant, type CardContainerProps, type CardBodyProps, type CardHeaderProps, type CardToolbarProps, type CardTitleProps, type CardDescriptionProps, type CardActionsProps, } from './Card';
25
25
  export { StatCard, type StatCardProps } from './StatCard';
26
+ export { BarChart, type BarChartProps, type BarChartContainerProps, type BarProps, type BarChartVariant, type BarChartOrientation, } from './BarChart';
27
+ export { Donut, type DonutProps, type DonutFigureProps, type DonutRingProps } from './Donut';
28
+ export { StackedBar, type StackedBarProps, type StackedBarTrackProps, type SegmentProps, } from './StackedBar';
29
+ export { ChartLegend, type ChartLegendProps } from './ChartLegend';
30
+ export { SERIES, type ChartDatum, type ChartSize, type ChartType } from './chart-internal';
26
31
  export { Dialog, type DialogProps, type DialogContainerProps, type DialogSize, type DialogClosedBy, type DialogHeaderProps, type DialogTitleProps, type DialogDescriptionProps, type DialogBodyProps, type DialogFooterProps, type DialogCloseButtonProps, } from './Dialog';
27
32
  export { Field, type FieldProps, type FieldContainerProps, type FieldLabelProps, type FieldDescriptionProps, type FieldErrorProps, } from './Field';
28
33
  export { Footer, type FooterProps, type FooterLinksProps, type FooterLinkProps, type FooterMetaProps, } from './Footer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1193,6 +1193,282 @@ function StatCard({ variant = "default", label, value, detail, icon, compact, bo
1193
1193
  });
1194
1194
  }
1195
1195
  //#endregion
1196
+ //#region src/chart-internal.ts
1197
+ /**
1198
+ * Multi-series palette — references EXISTING Flexoki palette tokens, NOT a new
1199
+ * token layer. Cycled by index (`SERIES[i % len]`); a datum's own `color`
1200
+ * overrides. Vanilla authors copy the same sequence (it's documented), so both
1201
+ * bundles render identical colours. Single-series charts ignore this entirely
1202
+ * and follow `currentColor`.
1203
+ */
1204
+ var SERIES = [
1205
+ "var(--color-blue-500)",
1206
+ "var(--color-orange-400)",
1207
+ "var(--color-green-500)",
1208
+ "var(--color-purple-400)",
1209
+ "var(--color-cyan-500)",
1210
+ "var(--color-magenta-400)",
1211
+ "var(--color-yellow-500)",
1212
+ "var(--color-red-400)"
1213
+ ];
1214
+ /** Resolve a segment's colour: explicit `datum.color` wins, else cycle SERIES. */
1215
+ function seriesColor(datum, index) {
1216
+ return datum.color ?? SERIES[index % SERIES.length];
1217
+ }
1218
+ /** Largest value, floored at 1 so the bar calc never divides by zero. */
1219
+ function computeMax(data, explicit) {
1220
+ if (explicit !== void 0) return explicit;
1221
+ return Math.max(1, ...data.map((d) => d.value));
1222
+ }
1223
+ /**
1224
+ * Build the cumulative `conic-gradient` stop string for a donut/pie:
1225
+ * `<color> <from>deg <to>deg, …`. Degrees accumulate across segments. A
1226
+ * non-positive total yields a single neutral fill so the ring isn't blank.
1227
+ */
1228
+ function buildDonutSegments(data) {
1229
+ const total = data.reduce((sum, d) => sum + Math.max(0, d.value), 0);
1230
+ if (total <= 0) return "var(--color-surface-strong) 0 100%";
1231
+ let acc = 0;
1232
+ const stops = [];
1233
+ for (let i = 0; i < data.length; i++) {
1234
+ const datum = data[i];
1235
+ const from = acc / total * 360;
1236
+ acc += Math.max(0, datum.value);
1237
+ const to = acc / total * 360;
1238
+ stops.push(`${seriesColor(datum, i)} ${from}deg ${to}deg`);
1239
+ }
1240
+ return stops.join(", ");
1241
+ }
1242
+ var TYPE_NOUN = {
1243
+ bar: "Bar chart",
1244
+ stack: "Proportion bar",
1245
+ donut: "Donut chart",
1246
+ pie: "Pie chart"
1247
+ };
1248
+ /**
1249
+ * Auto-generated summary for the chart root's `aria-label`. Callers that pass
1250
+ * their own `aria-label` skip this. Example: "Bar chart. Mon: 80, Tue: 52."
1251
+ */
1252
+ function buildAriaLabel(type, data) {
1253
+ const parts = data.map((d) => d.label !== void 0 ? `${d.label}: ${d.value}` : `${d.value}`);
1254
+ return `${TYPE_NOUN[type]}. ${parts.join(", ")}.`;
1255
+ }
1256
+ /** Native `title` text for a bar/segment/legend row. */
1257
+ function datumTitle(datum) {
1258
+ return datum.label !== void 0 ? `${datum.label}: ${datum.value}` : `${datum.value}`;
1259
+ }
1260
+ /** Merge admin custom-property vars with an incoming `style` (incoming wins). */
1261
+ function mergeStyle(vars, incoming) {
1262
+ return {
1263
+ ...vars,
1264
+ ...incoming
1265
+ };
1266
+ }
1267
+ //#endregion
1268
+ //#region src/BarChart.tsx
1269
+ /**
1270
+ * The bare bar-chart grid — no bars. Compose `<BarChart.Bar>` children by hand
1271
+ * (e.g. to interleave a reference line). Sets `role="img"`; pass `aria-label`.
1272
+ */
1273
+ function BarChartContainer({ orientation = "horizontal", size = "md", showValues, inline, variant = "primary", className, ...rest }) {
1274
+ return /* @__PURE__ */ jsx("div", {
1275
+ role: "img",
1276
+ className: cn([
1277
+ "chart",
1278
+ "chart-bars",
1279
+ orientation === "vertical" && "chart-bars-vertical",
1280
+ size !== "md" && `chart-${size}`,
1281
+ showValues && "chart-values",
1282
+ inline && "chart-inline",
1283
+ variant !== "primary" && `chart-${variant}`
1284
+ ], className),
1285
+ ...rest
1286
+ });
1287
+ }
1288
+ /**
1289
+ * One bar. Renders a label (only when present), the fill (with a native
1290
+ * `title`), and an always-present value cell (hidden by CSS unless the chart
1291
+ * carries `.chart-values`). Stays `currentColor` unless an explicit colour is
1292
+ * given — single-series bars never cycle the SERIES palette.
1293
+ */
1294
+ function Bar({ datum, value, label, color, className, style, ...rest }) {
1295
+ const v = datum?.value ?? value ?? 0;
1296
+ const lab = datum?.label ?? label;
1297
+ const barColor = datum?.color ?? color;
1298
+ const vars = { "--value": v };
1299
+ if (barColor !== void 0) vars["--bar-color"] = barColor;
1300
+ const title = datum !== void 0 ? datumTitle(datum) : void 0;
1301
+ return /* @__PURE__ */ jsxs("div", {
1302
+ className: cn("chart-bar", className),
1303
+ style: mergeStyle(vars, style),
1304
+ ...rest,
1305
+ children: [
1306
+ lab !== void 0 ? /* @__PURE__ */ jsx("span", {
1307
+ className: cn("chart-bar-label", void 0),
1308
+ children: lab
1309
+ }) : null,
1310
+ /* @__PURE__ */ jsx("div", {
1311
+ className: cn("chart-bar-track", void 0),
1312
+ children: /* @__PURE__ */ jsx("div", {
1313
+ className: cn("chart-bar-fill", void 0),
1314
+ title
1315
+ })
1316
+ }),
1317
+ /* @__PURE__ */ jsx("span", {
1318
+ className: cn("chart-bar-value", void 0),
1319
+ children: v
1320
+ })
1321
+ ]
1322
+ });
1323
+ }
1324
+ /**
1325
+ * Single-series bar chart. Computes the max, sets `--chart-max` on the
1326
+ * container (bars inherit it), and generates an overridable `aria-label`.
1327
+ * Horizontal by default; pass `orientation="vertical"` for columns. For
1328
+ * hand-composed layouts use `<BarChart.Container>` + `<BarChart.Bar>`.
1329
+ */
1330
+ function BarChartRoot({ data, max, orientation = "horizontal", size = "md", showValues, inline, variant = "primary", style, "aria-label": ariaLabel, ...rest }) {
1331
+ return /* @__PURE__ */ jsx(BarChartContainer, {
1332
+ orientation,
1333
+ size,
1334
+ showValues,
1335
+ inline,
1336
+ variant,
1337
+ style: mergeStyle({ "--chart-max": computeMax(data, max) }, style),
1338
+ "aria-label": ariaLabel ?? buildAriaLabel("bar", data),
1339
+ ...rest,
1340
+ children: data.map((d, i) => /* @__PURE__ */ jsx(Bar, { datum: d }, d.label ?? i))
1341
+ });
1342
+ }
1343
+ var BarChart = Object.assign(BarChartRoot, {
1344
+ Container: BarChartContainer,
1345
+ Bar
1346
+ });
1347
+ //#endregion
1348
+ //#region src/ChartLegend.tsx
1349
+ /**
1350
+ * Shared legend for `<Donut>` and `<StackedBar>` — one swatch + label per
1351
+ * datum. Each row carries its own `title`, which is where the donut's
1352
+ * per-slice read-out lives (a conic-gradient slice has no element to hang a
1353
+ * `title` on). The swatch colour mirrors `seriesColor`, so legend and chart
1354
+ * stay in sync.
1355
+ */
1356
+ function ChartLegend({ data, className, ...rest }) {
1357
+ return /* @__PURE__ */ jsx("ul", {
1358
+ className: cn("chart-legend", className),
1359
+ ...rest,
1360
+ children: data.map((d, i) => /* @__PURE__ */ jsx("li", {
1361
+ className: cn("chart-legend-item", void 0),
1362
+ style: mergeStyle({ "--legend-color": seriesColor(d, i) }),
1363
+ title: datumTitle(d),
1364
+ children: d.label ?? d.value
1365
+ }, d.label ?? i))
1366
+ });
1367
+ }
1368
+ //#endregion
1369
+ //#region src/Donut.tsx
1370
+ /** Square positioning context that overlays the centre label on the ring. */
1371
+ function Figure({ size = "md", className, ...rest }) {
1372
+ return /* @__PURE__ */ jsx("div", {
1373
+ className: cn(["chart-donut-figure", size !== "md" && `chart-${size}`], className),
1374
+ ...rest
1375
+ });
1376
+ }
1377
+ /** The masked conic-gradient ring. Builds `--donut-segments` from the data. */
1378
+ function Ring({ data, pie, thickness, className, style, ...rest }) {
1379
+ const vars = { "--donut-segments": buildDonutSegments(data) };
1380
+ if (thickness !== void 0 && !pie) vars["--donut-thickness"] = thickness;
1381
+ return /* @__PURE__ */ jsx("div", {
1382
+ className: cn(["chart-donut", pie && "chart-donut-pie"], className),
1383
+ style: mergeStyle(vars, style),
1384
+ ...rest
1385
+ });
1386
+ }
1387
+ /** Centred overlay (a total, a label). Not a child of the ring — masks clip subtrees. */
1388
+ function Center({ className, ...rest }) {
1389
+ return /* @__PURE__ */ jsx("div", {
1390
+ className: cn("chart-donut-center", className),
1391
+ ...rest
1392
+ });
1393
+ }
1394
+ /**
1395
+ * Donut (or `pie`) breakdown. Builds the cumulative conic-gradient string from
1396
+ * `data`, overlays an optional `centerLabel`, and generates an overridable
1397
+ * `aria-label`. Per-slice read-outs live on the optional `legend` rows — a
1398
+ * conic slice has no element to carry a `title`. Resize by overriding
1399
+ * `--chart-size` (it inherits to the figure) or via `size`.
1400
+ */
1401
+ function DonutRoot({ data, size = "md", thickness, pie, centerLabel, legend, inline, className, "aria-label": ariaLabel, ...rest }) {
1402
+ return /* @__PURE__ */ jsxs("div", {
1403
+ role: "img",
1404
+ className: cn(["chart", inline && "chart-inline"], className),
1405
+ "aria-label": ariaLabel ?? buildAriaLabel(pie ? "pie" : "donut", data),
1406
+ ...rest,
1407
+ children: [/* @__PURE__ */ jsxs(Figure, {
1408
+ size,
1409
+ children: [/* @__PURE__ */ jsx(Ring, {
1410
+ data,
1411
+ pie,
1412
+ thickness
1413
+ }), centerLabel !== void 0 ? /* @__PURE__ */ jsx(Center, { children: centerLabel }) : null]
1414
+ }), legend ? /* @__PURE__ */ jsx(ChartLegend, { data }) : null]
1415
+ });
1416
+ }
1417
+ var Donut = Object.assign(DonutRoot, {
1418
+ Figure,
1419
+ Ring,
1420
+ Center,
1421
+ Legend: ChartLegend
1422
+ });
1423
+ //#endregion
1424
+ //#region src/StackedBar.tsx
1425
+ /** The bare proportion track — compose `<StackedBar.Segment>` children by hand. */
1426
+ function Track({ className, ...rest }) {
1427
+ return /* @__PURE__ */ jsx("div", {
1428
+ className: cn("chart-stack", className),
1429
+ ...rest
1430
+ });
1431
+ }
1432
+ /**
1433
+ * One proportion segment, sized by `flex: var(--value)`. Multi-series by
1434
+ * default: takes its colour from `seriesColor` (SERIES cycle or `datum.color`).
1435
+ */
1436
+ function Segment({ datum, index = 0, value, color, className, style, ...rest }) {
1437
+ const v = datum?.value ?? value ?? 0;
1438
+ const segColor = datum !== void 0 ? seriesColor(datum, index) : color;
1439
+ const vars = { "--value": v };
1440
+ if (segColor !== void 0) vars["--segment-color"] = segColor;
1441
+ const title = datum !== void 0 ? datumTitle(datum) : void 0;
1442
+ return /* @__PURE__ */ jsx("div", {
1443
+ className: cn("chart-segment", className),
1444
+ style: mergeStyle(vars, style),
1445
+ title,
1446
+ ...rest
1447
+ });
1448
+ }
1449
+ /**
1450
+ * Single horizontal proportion bar — a "60% A / 30% B / 10% C" breakdown.
1451
+ * Segments are sized by their flex ratios (no max needed) and coloured from the
1452
+ * SERIES palette by default. Generates an overridable `aria-label`.
1453
+ */
1454
+ function StackedBarRoot({ data, legend, inline, className, "aria-label": ariaLabel, ...rest }) {
1455
+ return /* @__PURE__ */ jsxs("div", {
1456
+ role: "img",
1457
+ className: cn(["chart", inline && "chart-inline"], className),
1458
+ "aria-label": ariaLabel ?? buildAriaLabel("stack", data),
1459
+ ...rest,
1460
+ children: [/* @__PURE__ */ jsx(Track, { children: data.map((d, i) => /* @__PURE__ */ jsx(Segment, {
1461
+ datum: d,
1462
+ index: i
1463
+ }, d.label ?? i)) }), legend ? /* @__PURE__ */ jsx(ChartLegend, { data }) : null]
1464
+ });
1465
+ }
1466
+ var StackedBar = Object.assign(StackedBarRoot, {
1467
+ Track,
1468
+ Segment,
1469
+ Legend: ChartLegend
1470
+ });
1471
+ //#endregion
1196
1472
  //#region src/Dialog.tsx
1197
1473
  var DialogContext = createContext(null);
1198
1474
  function DefaultCloseIcon() {
@@ -2006,6 +2282,6 @@ var Sidebar = Object.assign(SidebarRoot, {
2006
2282
  CollapseToggle: SidebarCollapseToggle
2007
2283
  });
2008
2284
  //#endregion
2009
- export { Accordion, AdminRoot, Alert, AppShell, Badge, BrandTile, Breadcrumbs, Button, ButtonGroup, Card, Checkbox, CodeBlock, Container, Dialog, Field, FileInput, Footer, Indicator, Input, InputGroup, Kbd, Link, Menu, Navbar, Pagination, Progress, PropertyList, Radio, RadioGroup, Select, Sidebar, Spinner, StatCard, Switch, Table, Tabs, Textarea, Tooltip, getPaginationItems, useAppShell, useHotkey };
2285
+ export { Accordion, AdminRoot, Alert, AppShell, Badge, BarChart, BrandTile, Breadcrumbs, Button, ButtonGroup, Card, ChartLegend, Checkbox, CodeBlock, Container, Dialog, Donut, Field, FileInput, Footer, Indicator, Input, InputGroup, Kbd, Link, Menu, Navbar, Pagination, Progress, PropertyList, Radio, RadioGroup, SERIES, Select, Sidebar, Spinner, StackedBar, StatCard, Switch, Table, Tabs, Textarea, Tooltip, getPaginationItems, useAppShell, useHotkey };
2010
2286
 
2011
2287
  //# sourceMappingURL=index.mjs.map