@squirkle-ui/charts 0.0.0-stage → 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/components/ChartFrame.vue","../../src/utils.ts","../../src/components/SqLineChart.vue","../../src/components/SqBarChart.vue","../../src/components/SqDonutChart.vue","../../src/components/SqSparkline.vue","../../src/index.ts"],"sourcesContent":["<template>\n <figure class=\"sq-chart sq-surface\" :class=\"{ 'sq-chart--flat': flat }\">\n <SqShape v-if=\"!flat\" />\n <figcaption v-if=\"title || subtitle\" class=\"sq-chart__caption\">\n <div v-if=\"title\" class=\"sq-chart__title\">{{ title }}</div>\n <div v-if=\"subtitle\" class=\"sq-chart__subtitle\">{{ subtitle }}</div>\n </figcaption>\n <div v-if=\"legend.length > 1\" class=\"sq-chart__legend\" role=\"list\">\n <span v-for=\"(l, i) in legend\" :key=\"l.name\" class=\"sq-chart__legend-item\" role=\"listitem\">\n <span class=\"sq-chart__swatch\" :style=\"{ background: l.color }\"></span>{{ l.name }}\n </span>\n </div>\n <slot />\n <table class=\"sq-sr-only\">\n <caption>{{ title || 'Chart data' }}</caption>\n <thead><tr><th v-for=\"h in table.head\" :key=\"h\">{{ h }}</th></tr></thead>\n <tbody><tr v-for=\"(r, i) in table.rows\" :key=\"i\"><td v-for=\"(c, j) in r\" :key=\"j\">{{ c }}</td></tr></tbody>\n </table>\n </figure>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from 'vue'\nimport { SqShape } from '@squirkle-ui/ui'\n\n/** Card, caption, legend and an accessible data table shared by every chart (internal). */\nexport default defineComponent({\n name: 'SqChartFrame',\n components: { SqShape },\n props: {\n title: { type: String, default: undefined },\n subtitle: { type: String, default: undefined },\n flat: Boolean,\n legend: { type: Array as PropType<{ name: string; color: string }[]>, default: () => [] },\n table: { type: Object as PropType<{ head: string[]; rows: (string | number)[][] }>, default: () => ({ head: [], rows: [] }) },\n },\n})\n</script>\n","import { onBeforeUnmount, onMounted, ref, type Ref } from 'vue'\nimport { niceTicks } from '@squirkle-ui/core'\n\nexport interface DonutDatum { label: string; value: number; color?: string }\n\nexport interface Series { name: string; data: (number | null)[]; color?: string }\n\n/** Validated categorical order (dataviz reference palette); slots are CSS vars so light/dark swap via theme. */\nexport const seriesColor = (i: number, override?: string) => override ?? `var(--sq-series-${(i % 8) + 1})`\n\nexport function useSize(el: Ref<HTMLElement | null>, fallbackHeight: number) {\n const width = ref(600)\n const height = ref(fallbackHeight)\n let ro: ResizeObserver | undefined\n onMounted(() => {\n const measure = () => {\n if (!el.value) return\n width.value = el.value.clientWidth || 600\n height.value = el.value.clientHeight || fallbackHeight\n }\n measure()\n if (typeof ResizeObserver !== 'undefined' && el.value) { ro = new ResizeObserver(measure); ro.observe(el.value) }\n })\n onBeforeUnmount(() => ro?.disconnect())\n return { width, height }\n}\n\nexport function linearScale(d0: number, d1: number, r0: number, r1: number) {\n const k = d1 === d0 ? 0 : (r1 - r0) / (d1 - d0)\n return (v: number) => r0 + (v - d0) * k\n}\n\nexport function yDomain(values: number[], zero = true) {\n let min = Math.min(...values)\n let max = Math.max(...values)\n if (zero) { min = Math.min(0, min); max = Math.max(0, max) }\n if (!isFinite(min) || !isFinite(max)) return { ticks: [0, 1], min: 0, max: 1 }\n if (min === max) max = min + 1\n const ticks = niceTicks(min, max, 5)\n return { ticks, min: ticks[0], max: ticks[ticks.length - 1] }\n}\n\n/** Monotone cubic (Fritsch–Carlson) path through points — smooth without overshoot. */\nexport function smoothPath(pts: [number, number][]): string {\n if (pts.length < 2) return pts.length ? `M${pts[0][0]},${pts[0][1]}` : ''\n const n = pts.length\n const dx: number[] = []\n const m: number[] = []\n for (let i = 0; i < n - 1; i++) {\n dx.push(pts[i + 1][0] - pts[i][0])\n m.push((pts[i + 1][1] - pts[i][1]) / (dx[i] || 1))\n }\n const t = [m[0]]\n for (let i = 1; i < n - 1; i++) t.push(m[i - 1] * m[i] <= 0 ? 0 : (3 * (dx[i - 1] + dx[i])) / ((2 * dx[i] + dx[i - 1]) / m[i - 1] + (dx[i] + 2 * dx[i - 1]) / m[i]))\n t.push(m[n - 2])\n let d = `M${pts[0][0]},${pts[0][1]}`\n for (let i = 0; i < n - 1; i++) {\n const h = dx[i] / 3\n d += ` C${pts[i][0] + h},${pts[i][1] + t[i] * h} ${pts[i + 1][0] - h},${pts[i + 1][1] - t[i + 1] * h} ${pts[i + 1][0]},${pts[i + 1][1]}`\n }\n return d\n}\n\nexport const compact = (v: number, locale = 'en-US') => new Intl.NumberFormat(locale, { notation: 'compact', maximumFractionDigits: 1 }).format(v)\n\n/** Bar with squircle-rounded data end (top for positive, bottom for negative), square at the baseline. */\nexport function barPath(x: number, y: number, w: number, h: number, r: number, horizontal = false, negative = false): string {\n if (w <= 0 || h <= 0) return ''\n const rr = Math.min(r, (horizontal ? h : w) / 2, horizontal ? w : h)\n const k = rr * 0.45 // control distance → superellipse-like corner\n if (horizontal) {\n if (negative) return `M${x + w},${y} H${x + rr} C${x + rr - k},${y} ${x},${y + rr - k} ${x},${y + rr} V${y + h - rr} C${x},${y + h - rr + k} ${x + rr - k},${y + h} ${x + rr},${y + h} H${x + w} Z`\n return `M${x},${y} H${x + w - rr} C${x + w - rr + k},${y} ${x + w},${y + rr - k} ${x + w},${y + rr} V${y + h - rr} C${x + w},${y + h - rr + k} ${x + w - rr + k},${y + h} ${x + w - rr},${y + h} H${x} Z`\n }\n if (negative) return `M${x},${y} H${x + w} V${y + h - rr} C${x + w},${y + h - rr + k} ${x + w - rr + k},${y + h} ${x + w - rr},${y + h} H${x + rr} C${x + rr - k},${y + h} ${x},${y + h - rr + k} ${x},${y + h - rr} Z`\n return `M${x},${y + h} V${y + rr} C${x},${y + rr - k} ${x + rr - k},${y} ${x + rr},${y} H${x + w - rr} C${x + w - rr + k},${y} ${x + w},${y + rr - k} ${x + w},${y + rr} V${y + h} Z`\n}\n","<template>\n <ChartFrame :title=\"title\" :subtitle=\"subtitle\" :flat=\"flat\" :legend=\"legend\" :table=\"table\">\n <div ref=\"box\" class=\"sq-chart__plot\" :style=\"{ height: height + 'px' }\" @pointermove=\"onMove\" @pointerleave=\"hover = -1\">\n <svg :width=\"w\" :height=\"height\" role=\"img\" :aria-label=\"title || 'Line chart'\">\n <g class=\"sq-chart__grid\">\n <line v-for=\"t in y.ticks\" :key=\"'g' + t\" :x1=\"pad.l\" :x2=\"w - pad.r\" :y1=\"sy(t)\" :y2=\"sy(t)\" />\n </g>\n <g class=\"sq-chart__axis\">\n <text v-for=\"t in y.ticks\" :key=\"'y' + t\" :x=\"pad.l - 8\" :y=\"sy(t)\" text-anchor=\"end\" dominant-baseline=\"middle\">{{ fmt(t) }}</text>\n <text v-for=\"(l, i) in labels\" v-show=\"showLabel(i)\" :key=\"'x' + i\" :x=\"sx(i)\" :y=\"height - 6\" text-anchor=\"middle\">{{ l }}</text>\n </g>\n <g v-for=\"(s, si) in paths\" :key=\"s.name\">\n <path v-if=\"area\" :d=\"s.area\" :fill=\"s.color\" class=\"sq-chart__area\" />\n <path :d=\"s.line\" :stroke=\"s.color\" class=\"sq-chart__line\" />\n </g>\n <line v-if=\"hover >= 0\" class=\"sq-chart__crosshair\" :x1=\"sx(hover)\" :x2=\"sx(hover)\" :y1=\"pad.t\" :y2=\"height - pad.b\" />\n <g v-if=\"hover >= 0\">\n <circle v-for=\"s in paths\" v-show=\"s.pts[hover] && s.pts[hover][1] != null\" :key=\"'p' + s.name\" :cx=\"sx(hover)\" :cy=\"s.pts[hover] ? s.pts[hover][1] ?? 0 : 0\" r=\"4.5\" :fill=\"s.color\" class=\"sq-chart__dot\" />\n </g>\n <g v-if=\"points && hover < 0\">\n <g v-for=\"s in paths\" :key=\"'pp' + s.name\">\n <circle v-for=\"(p, i) in s.pts\" v-show=\"p[1] != null\" :key=\"i\" :cx=\"p[0]\" :cy=\"p[1] ?? 0\" r=\"4\" :fill=\"s.color\" class=\"sq-chart__dot\" />\n </g>\n </g>\n </svg>\n <div v-if=\"hover >= 0\" class=\"sq-chart__tooltip sq-squircle\" :style=\"tipStyle\">\n <div class=\"sq-chart__tooltip-title\">{{ labels[hover] }}</div>\n <div v-for=\"(s, i) in series\" :key=\"s.name\" class=\"sq-chart__tooltip-row\"><span class=\"sq-chart__swatch\" :style=\"{ background: colorOf(i) }\"></span>{{ s.name }}<b>{{ fmtCell(s.data[hover]) }}</b></div>\n </div>\n </div>\n </ChartFrame>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, type PropType } from 'vue'\nimport ChartFrame from './ChartFrame.vue'\nimport { compact, linearScale, seriesColor, smoothPath, useSize, yDomain, type Series } from '../utils'\n\n/** Line / area chart with crosshair tooltip. One y-axis only (by design). */\nexport default defineComponent({\n name: 'SqLineChart',\n components: { ChartFrame },\n props: {\n labels: { type: Array as PropType<string[]>, default: () => [] },\n series: { type: Array as PropType<Series[]>, default: () => [] },\n title: { type: String, default: undefined },\n subtitle: { type: String, default: undefined },\n height: { type: Number, default: 260 },\n area: Boolean,\n smooth: { type: Boolean, default: true },\n points: Boolean,\n /** Start y at zero (recommended for areas). */\n zero: { type: Boolean, default: true },\n flat: Boolean,\n format: { type: Function as PropType<(v: number) => string>, default: undefined },\n },\n setup(props) {\n const box = ref<HTMLElement | null>(null)\n const { width: w } = useSize(box, props.height)\n const pad = { t: 12, r: 16, b: 26, l: 44 }\n const hover = ref(-1)\n const y = computed(() => yDomain(props.series.flatMap((s) => s.data.filter((v): v is number => v != null)), props.zero || props.area))\n const sy = computed(() => linearScale(y.value.min, y.value.max, props.height - pad.b, pad.t))\n const sx = computed(() => {\n const n = Math.max(1, props.labels.length - 1)\n return (i: number) => pad.l + ((w.value - pad.l - pad.r) * i) / n\n })\n const colorOf = (i: number) => seriesColor(i, props.series[i]?.color)\n const fmt = (v: number) => (props.format ? props.format(v) : compact(v))\n const fmtCell = (v: number | null | undefined) => (v == null ? '–' : fmt(v))\n const paths = computed(() =>\n props.series.map((s, i) => {\n const pts = s.data.map((v, k) => [sx.value(k), v == null ? null : sy.value(v)] as [number, number | null])\n const valid = pts.filter((p): p is [number, number] => p[1] != null)\n const line = props.smooth ? smoothPath(valid) : valid.map((p, k) => `${k ? 'L' : 'M'}${p[0]},${p[1]}`).join(' ')\n const base = sy.value(Math.max(y.value.min, 0))\n const area = valid.length ? `${line} L${valid[valid.length - 1][0]},${base} L${valid[0][0]},${base} Z` : ''\n return { name: s.name, color: colorOf(i), pts, line, area }\n }),\n )\n const showLabel = (i: number) => {\n const n = props.labels.length\n const every = Math.ceil(n / Math.max(2, Math.floor((w.value - pad.l) / 64)))\n return i % every === 0 || i === n - 1\n }\n const onMove = (e: PointerEvent) => {\n const r = box.value!.getBoundingClientRect()\n const n = props.labels.length\n if (!n) return\n const i = Math.round(((e.clientX - r.left - pad.l) / (w.value - pad.l - pad.r)) * (n - 1))\n hover.value = Math.max(0, Math.min(n - 1, i))\n }\n const tipStyle = computed(() => {\n const x = sx.value(hover.value)\n return x > w.value / 2 ? { right: `${w.value - x + 12}px`, top: '8px' } : { left: `${x + 12}px`, top: '8px' }\n })\n const legend = computed(() => props.series.map((s, i) => ({ name: s.name, color: colorOf(i) })))\n const table = computed(() => ({ head: ['', ...props.series.map((s) => s.name)], rows: props.labels.map((l, k) => [l, ...props.series.map((s) => s.data[k] ?? '')]) }))\n return { fmtCell, box, w, pad, hover, y, sy, sx, paths, colorOf, fmt, showLabel, onMove, tipStyle, legend, table }\n },\n})\n</script>\n","<template>\n <ChartFrame :title=\"title\" :subtitle=\"subtitle\" :flat=\"flat\" :legend=\"legend\" :table=\"table\">\n <div ref=\"box\" class=\"sq-chart__plot\" :style=\"{ height: height + 'px' }\" @pointerleave=\"hover = null\">\n <svg :width=\"w\" :height=\"height\" role=\"img\" :aria-label=\"title || 'Bar chart'\">\n <g class=\"sq-chart__grid\">\n <line v-for=\"t in y.ticks\" :key=\"'g' + t\" v-bind=\"gridLine(t)\" />\n </g>\n <g class=\"sq-chart__axis\">\n <text v-for=\"t in y.ticks\" :key=\"'y' + t\" v-bind=\"valueTick(t)\">{{ fmt(t) }}</text>\n <text v-for=\"(l, i) in labels\" :key=\"'x' + i\" v-bind=\"catTick(i)\">{{ l }}</text>\n </g>\n <path\n v-for=\"b in bars\"\n :key=\"b.key\"\n :d=\"b.d\"\n :fill=\"b.color\"\n class=\"sq-chart__bar\"\n :class=\"{ 'sq-chart__bar--dim': hover && hover.cat !== b.cat }\"\n @pointerenter=\"hover = { cat: b.cat, x: b.cx, y: b.cy }\"\n />\n </svg>\n <div v-if=\"hover\" class=\"sq-chart__tooltip sq-squircle\" :style=\"tipStyle\">\n <div class=\"sq-chart__tooltip-title\">{{ labels[hover.cat] }}</div>\n <div v-for=\"(s, i) in series\" :key=\"s.name\" class=\"sq-chart__tooltip-row\"><span class=\"sq-chart__swatch\" :style=\"{ background: colorOf(i) }\"></span>{{ s.name }}<b>{{ fmtCell(s.data[hover.cat]) }}</b></div>\n </div>\n </div>\n </ChartFrame>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, type PropType } from 'vue'\nimport ChartFrame from './ChartFrame.vue'\nimport { barPath, compact, linearScale, seriesColor, useSize, yDomain, type Series } from '../utils'\n\n/** Grouped or stacked bars with squircle data-ends, vertical or horizontal. */\nexport default defineComponent({\n name: 'SqBarChart',\n components: { ChartFrame },\n props: {\n labels: { type: Array as PropType<string[]>, default: () => [] },\n series: { type: Array as PropType<Series[]>, default: () => [] },\n title: { type: String, default: undefined },\n subtitle: { type: String, default: undefined },\n height: { type: Number, default: 260 },\n stacked: Boolean,\n horizontal: Boolean,\n radius: { type: Number, default: 6 },\n flat: Boolean,\n format: { type: Function as PropType<(v: number) => string>, default: undefined },\n },\n setup(props) {\n const box = ref<HTMLElement | null>(null)\n const { width: w } = useSize(box, props.height)\n const pad = computed(() => (props.horizontal ? { t: 8, r: 16, b: 24, l: 84 } : { t: 12, r: 16, b: 26, l: 44 }))\n const hover = ref<{ cat: number; x: number; y: number } | null>(null)\n const colorOf = (i: number) => seriesColor(i, props.series[i]?.color)\n const fmt = (v: number) => (props.format ? props.format(v) : compact(v))\n const fmtCell = (v: number | null | undefined) => (v == null ? '–' : fmt(v))\n const y = computed(() => {\n const vals = props.stacked\n ? props.labels.flatMap((_, k) => {\n let pos = 0\n let neg = 0\n for (const s of props.series) { const v = s.data[k] ?? 0; v >= 0 ? (pos += v) : (neg += v) }\n return [pos, neg]\n })\n : props.series.flatMap((s) => s.data.filter((v): v is number => v != null))\n return yDomain(vals, true)\n })\n // value axis → pixel along the value direction\n const sv = computed(() => (props.horizontal ? linearScale(y.value.min, y.value.max, pad.value.l, w.value - pad.value.r) : linearScale(y.value.min, y.value.max, props.height - pad.value.b, pad.value.t)))\n const band = computed(() => {\n const n = Math.max(1, props.labels.length)\n const len = props.horizontal ? props.height - pad.value.t - pad.value.b : w.value - pad.value.l - pad.value.r\n const step = len / n\n return { step, inner: step * 0.72, start: props.horizontal ? pad.value.t : pad.value.l }\n })\n const bars = computed(() => {\n const out: { key: string; d: string; color: string; cat: number; cx: number; cy: number }[] = []\n const gap = 2\n const zero = sv.value(0)\n props.labels.forEach((_, k) => {\n const c0 = band.value.start + band.value.step * k + (band.value.step - band.value.inner) / 2\n let pos = 0\n let neg = 0\n const n = props.series.length\n props.series.forEach((s, i) => {\n const v = s.data[k]\n if (v == null) return\n let a: number\n let b: number\n let c: number\n let thick: number\n if (props.stacked) {\n const from = v >= 0 ? pos : neg\n const to = from + v\n v >= 0 ? (pos = to) : (neg = to)\n a = sv.value(from)\n b = sv.value(to)\n c = c0\n thick = band.value.inner\n } else {\n a = zero\n b = sv.value(v)\n thick = Math.max(1, (band.value.inner - gap * (n - 1)) / n)\n c = c0 + i * (thick + gap)\n }\n const lo = Math.min(a, b)\n const len = Math.abs(b - a) - (props.stacked ? gap : 0)\n const top = props.stacked ? props.series.slice(i + 1).every((x) => (x.data[k] ?? 0) === 0 || Math.sign(x.data[k] ?? 0) !== Math.sign(v)) : true\n const r = top ? props.radius : 0\n const d = props.horizontal\n ? barPath(v >= 0 ? lo : lo + (props.stacked ? gap : 0), c, Math.max(0, len), thick, r, true, v < 0)\n : barPath(c, v >= 0 ? lo + (props.stacked ? gap : 0) : lo, thick, Math.max(0, len), r, false, v < 0)\n out.push({ key: `${k}-${i}`, d, color: colorOf(i), cat: k, cx: props.horizontal ? Math.max(a, b) : c + thick / 2, cy: props.horizontal ? c : Math.min(a, b) })\n })\n })\n return out\n })\n const gridLine = (t: number) => (props.horizontal ? { x1: sv.value(t), x2: sv.value(t), y1: pad.value.t, y2: props.height - pad.value.b } : { x1: pad.value.l, x2: w.value - pad.value.r, y1: sv.value(t), y2: sv.value(t) })\n const valueTick = (t: number) => (props.horizontal ? { x: sv.value(t), y: props.height - 6, 'text-anchor': 'middle' } : { x: pad.value.l - 8, y: sv.value(t), 'text-anchor': 'end', 'dominant-baseline': 'middle' })\n const catTick = (i: number) => {\n const mid = band.value.start + band.value.step * (i + 0.5)\n return props.horizontal ? { x: pad.value.l - 8, y: mid, 'text-anchor': 'end', 'dominant-baseline': 'middle' } : { x: mid, y: props.height - 6, 'text-anchor': 'middle' }\n }\n const tipStyle = computed(() => {\n const h = hover.value\n if (!h) return {}\n return h.x > w.value / 2 ? { right: `${w.value - h.x + 10}px`, top: `${Math.max(4, h.y - 10)}px` } : { left: `${h.x + 10}px`, top: `${Math.max(4, h.y - 10)}px` }\n })\n const legend = computed(() => props.series.map((s, i) => ({ name: s.name, color: colorOf(i) })))\n const table = computed(() => ({ head: ['', ...props.series.map((s) => s.name)], rows: props.labels.map((l, k) => [l, ...props.series.map((s) => s.data[k] ?? '')]) }))\n return { fmtCell, box, w, hover, y, bars, gridLine, valueTick, catTick, colorOf, fmt, tipStyle, legend, table }\n },\n})\n</script>\n","<template>\n <ChartFrame :title=\"title\" :subtitle=\"subtitle\" :flat=\"flat\" :legend=\"legend\" :table=\"table\">\n <div class=\"sq-chart__donut\" :style=\"{ height: size + 'px' }\">\n <svg :width=\"size\" :height=\"size\" :viewBox=\"`0 0 ${size} ${size}`\" role=\"img\" :aria-label=\"title || 'Donut chart'\" @pointerleave=\"hover = -1\">\n <path\n v-for=\"(a, i) in arcs\"\n :key=\"a.label\"\n :d=\"a.d\"\n :fill=\"a.color\"\n class=\"sq-chart__arc\"\n :class=\"{ 'sq-chart__arc--dim': hover >= 0 && hover !== i }\"\n @pointerenter=\"hover = i\"\n />\n </svg>\n <div class=\"sq-chart__donut-center\">\n <slot name=\"center\" :hover=\"hover >= 0 ? data[hover] : null\" :total=\"total\">\n <div class=\"sq-chart__donut-value\">{{ hover >= 0 ? fmt(data[hover].value) : fmt(total) }}</div>\n <div class=\"sq-chart__donut-label\">{{ hover >= 0 ? data[hover].label : totalLabel }}</div>\n </slot>\n </div>\n </div>\n </ChartFrame>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, type PropType } from 'vue'\nimport ChartFrame from './ChartFrame.vue'\nimport { compact, seriesColor, type DonutDatum } from '../utils'\n\n/** Pie / donut with a 2px surface gap between segments; legend always shown for 2+ segments. */\nexport default defineComponent({\n name: 'SqDonutChart',\n components: { ChartFrame },\n props: {\n data: { type: Array as PropType<DonutDatum[]>, default: () => [] },\n title: { type: String, default: undefined },\n subtitle: { type: String, default: undefined },\n size: { type: Number, default: 220 },\n /** Ring thickness as a fraction of the radius; 1 = pie. */\n thickness: { type: Number, default: 0.34 },\n totalLabel: { type: String, default: 'Total' },\n flat: Boolean,\n format: { type: Function as PropType<(v: number) => string>, default: undefined },\n },\n setup(props) {\n const hover = ref(-1)\n const total = computed(() => props.data.reduce((s, d) => s + Math.max(0, d.value), 0))\n const fmt = (v: number) => (props.format ? props.format(v) : compact(v))\n const arcs = computed(() => {\n const c = props.size / 2\n const R = c - 4\n const r = R * (1 - props.thickness)\n const gap = props.data.length > 1 ? 2 / R : 0\n let a0 = -Math.PI / 2\n return props.data.map((d, i) => {\n const sweep = total.value ? (Math.max(0, d.value) / total.value) * Math.PI * 2 : 0\n const s = a0 + gap / 2\n const e = a0 + sweep - gap / 2\n a0 += sweep\n const large = e - s > Math.PI ? 1 : 0\n const p = (rad: number, ang: number) => `${c + rad * Math.cos(ang)},${c + rad * Math.sin(ang)}`\n const dPath = e <= s ? '' : r > 0\n ? `M${p(R, s)} A${R},${R} 0 ${large} 1 ${p(R, e)} L${p(r, e)} A${r},${r} 0 ${large} 0 ${p(r, s)} Z`\n : `M${c},${c} L${p(R, s)} A${R},${R} 0 ${large} 1 ${p(R, e)} Z`\n return { label: d.label, color: seriesColor(i, d.color), d: dPath }\n })\n })\n const legend = computed(() => props.data.map((d, i) => ({ name: `${d.label} · ${total.value ? Math.round((d.value / total.value) * 100) : 0}%`, color: seriesColor(i, d.color) })))\n const table = computed(() => ({ head: ['Label', 'Value'], rows: props.data.map((d) => [d.label, d.value]) }))\n return { hover, total, fmt, arcs, legend, table }\n },\n})\n</script>\n","<template>\n <svg ref=\"el\" class=\"sq-sparkline\" :width=\"width\" :height=\"height\" :viewBox=\"`0 0 ${width} ${height}`\" role=\"img\" :aria-label=\"label\">\n <path v-if=\"fill\" :d=\"areaD\" :fill=\"stroke\" class=\"sq-sparkline__area\" />\n <path :d=\"lineD\" :stroke=\"stroke\" class=\"sq-sparkline__line\" />\n <circle v-if=\"pts.length\" :cx=\"pts[pts.length - 1][0]\" :cy=\"pts[pts.length - 1][1]\" r=\"2.5\" :fill=\"stroke\" />\n </svg>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, type PropType } from 'vue'\nimport { colorValue } from '@squirkle-ui/ui'\nimport { smoothPath } from '../utils'\n\n/** Inline trend line for stat tiles and table cells (no axes, no tooltip). */\nexport default defineComponent({\n name: 'SqSparkline',\n props: {\n data: { type: Array as PropType<number[]>, default: () => [] },\n width: { type: Number, default: 120 },\n height: { type: Number, default: 32 },\n color: { type: String, default: 'primary' },\n fill: Boolean,\n label: { type: String, default: 'Trend' },\n },\n setup(props) {\n const pts = computed<[number, number][]>(() => {\n const d = props.data\n if (!d.length) return []\n const min = Math.min(...d)\n const max = Math.max(...d)\n const span = max - min || 1\n return d.map((v, i) => [3 + ((props.width - 6) * i) / Math.max(1, d.length - 1), 3 + (props.height - 6) * (1 - (v - min) / span)])\n })\n const lineD = computed(() => smoothPath(pts.value))\n const areaD = computed(() => (pts.value.length ? `${lineD.value} L${pts.value[pts.value.length - 1][0]},${props.height} L${pts.value[0][0]},${props.height} Z` : ''))\n return { pts, lineD, areaD, stroke: computed(() => colorValue(props.color)) }\n },\n})\n</script>\n","import './styles.css'\nimport SqLineChart from './components/SqLineChart.vue'\nimport SqBarChart from './components/SqBarChart.vue'\nimport SqDonutChart from './components/SqDonutChart.vue'\nimport SqSparkline from './components/SqSparkline.vue'\n\nexport { SqLineChart, SqBarChart, SqDonutChart, SqSparkline }\nexport { seriesColor, smoothPath, barPath, type Series, type DonutDatum } from './utils'\nexport const componentNames = ['SqLineChart', 'SqBarChart', 'SqDonutChart', 'SqSparkline'] as const\n"],"names":["defineComponent","SqShape","_hoisted_5","_openBlock","_createElementBlock","_normalizeClass","_createBlock","_createCommentVNode","_hoisted_1","_hoisted_2","_toDisplayString","_hoisted_3","_hoisted_4","_Fragment","_renderList","_createElementVNode","_normalizeStyle","_renderSlot","ref","onMounted","onBeforeUnmount","niceTicks","computed","_vShow","_mergeProps","colorValue"],"mappings":"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"}