@jcdecor/vue 0.1.0 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/charts.js +97 -74
- package/dist/charts.js.map +1 -1
- package/dist/chat/ChatComposer.d.ts +14 -0
- package/dist/chat/ChatMessage.d.ts +4 -0
- package/dist/chat/ChatThread.d.ts +8 -0
- package/dist/chat/ConversationList.d.ts +8 -0
- package/dist/chat/types.d.ts +2 -0
- package/dist/chat.js +97 -55
- package/dist/chat.js.map +1 -1
- package/dist/components/PageHeader/PageHeader.d.ts +10 -29
- package/dist/components/PageHeader/PageHeader.types.d.ts +55 -0
- package/dist/components/PageHeader/PageHeader.vars.d.ts +2 -0
- package/dist/components/PageHeader/PageHeader.vue.d.ts +43 -0
- package/dist/components/TopNav/TopNav.types.d.ts +10 -2
- package/dist/components/TopNav/TopNav.vue.d.ts +2 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.js +634 -565
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme/themeDefaults.d.ts +27 -2
- package/dist/themeDefaults-C4raY1h-.js +52 -0
- package/dist/themeDefaults-C4raY1h-.js.map +1 -0
- package/package.json +1 -1
- package/dist/themeDefaults-Ckd05FUY.js +0 -29
- package/dist/themeDefaults-Ckd05FUY.js.map +0 -1
package/dist/charts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.js","names":["camelize","MLineChart","MAreaChart","MBarChart","MCompositeChart","MRadarChart","MDonutChart","MPieChart","MSparkline","MScatterChart","MBubbleChart","MFunnelChart","MRadialBarChart","MBarsList","MHeatmap","MMatrixChart","MGaugeChart","MWaffleChart","MTreemap","MSankeyChart","MCandlestickChart","Card","Card$1","radius","ramps","chartColors","fontFamily","chartPalette","semantic","formatNumber","Kicker","AreaChart$1","BarChart$1","BarsList$1","BubbleChart$1","CandlestickChart$1","CompositeChart$1","DonutChart$1","FunnelChart$1","GaugeChart$1","Heatmap$1","LineChart$1","MatrixChart$1","PieChart$1","RadarChart$1","RadialBarChart$1","SankeyChart$1","ScatterChart$1","Sparkline$1","Treemap$1","WaffleChart$1","isPlainObject","value","mergeChartOptions","source","target","result","key","createJcEChartsTheme","s","scheme","axis","label","options","paletteColor","index","withPalette","items","item","ptBRValueFormatter","JC_CHART_VAR","MANTINE_COLOR_VAR","THEME_COLOR","primaryShadeFor","shade","theme","resolveChartColor","color","chartVar","colors","mantineVar","themeColor","tuple","paletteHex","useJcChartColors","useMantineTheme","computedScheme","useComputedColorScheme","computed","tokens","palette","resolve","camelize$1","letter","BOOLEAN_PROPS","isBooleanProp","normalizeAttrs","out","attrs","name","definedEntries","props","asArray","asString","asFormatter","defineJcChart","defineComponent","spec","c","outerTheme","inject","THEME_KEY","toValue","chart","ref","expose","option","heightAlias","input","ctx","h","base","slots","gridChartProps","merged","defaults","text","t","grid","format","splitLine","categoryAxis","valueAxis","vertical","resolveRefs","fallback","itemTooltipProps","sequentialColors","LineChart","AreaChart","barRadius","barProps","custom","stacked","r","BarChart","CompositeChart","RadarChart","radialProps","DonutChart","PieChart","Sparkline","trend","ScatterChart","BubbleChart","FunnelChart","RadialBarChart","BarsList","Heatmap","MatrixChart","GaugeChart","section","WaffleChart","Treemap","SankeyChart","withNodeColors","nodes","node","CandlestickChart","nodeProp","ChartCard","onPeriod","emit","kicker","resolveNode","description","actions","periods","heading","hasNode","Text","controls","Group","SegmentedControl","ChartLegend","ChartTooltip"],"sources":["../src/charts/echartsTheme.ts","../src/charts/palette.ts","../src/charts/charts.ts","../src/charts/ChartCard.ts"],"sourcesContent":["import { chartColors, fontFamily, radius, semantic } from '../theme/tokens';\nimport type { ChartColorScheme } from './palette';\n\n/** Objeto de tema do ECharts (o mesmo formato de `echarts.registerTheme`). */\nexport type JcEChartsTheme = Record<string, unknown>;\n\nexport interface JcEChartsThemeOptions {\n /** Raio das barras (`itemStyle.borderRadius` do ECharts). Omitido = barras retas. */\n barRadius?: number | number[];\n}\n\ntype PlainObject = Record<string, unknown>;\n\nconst isPlainObject = (value: unknown): value is PlainObject =>\n !!value && typeof value === 'object' && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;\n\n/** Mescla profunda de objetos simples: `source` vence; arrays e funções são substituídos. */\nexport function mergeChartOptions<T extends PlainObject>(target: T, source: unknown): T {\n if (!isPlainObject(source)) return target;\n const result: PlainObject = { ...target };\n for (const [key, value] of Object.entries(source)) {\n if (value === undefined) continue;\n result[key] = isPlainObject(value) && isPlainObject(result[key]) ? mergeChartOptions(result[key] as PlainObject, value) : value;\n }\n return result as T;\n}\n\n/**\n * Tema do ECharts com os tokens JC Decor para o esquema `scheme`.\n * Os gráficos do Mantine Vue desenham em canvas, onde variáveis CSS (`--ds-*`) não chegam:\n * textos, eixos, grade, legenda e tooltip recebem aqui os hex do tema claro/escuro.\n * Valores definidos explicitamente nas opções do gráfico continuam tendo prioridade.\n * Também serve para quem usa `vue-echarts` direto: `provide(THEME_KEY, createJcEChartsTheme('dark'))`.\n */\nexport function createJcEChartsTheme(scheme: ChartColorScheme, options: JcEChartsThemeOptions = {}): JcEChartsTheme {\n const s = semantic[scheme];\n const axis = {\n axisLine: { lineStyle: { color: s.borderSoft } },\n axisTick: { show: false, lineStyle: { color: s.borderSoft } },\n axisLabel: { color: s.text3 },\n splitLine: { lineStyle: { color: s.borderSoft, type: [4, 4] } },\n nameTextStyle: { color: s.text3 },\n };\n const label = { color: s.text2 };\n\n return {\n color: [...chartColors[scheme]],\n backgroundColor: 'transparent',\n // Só a fonte: cor global quebraria o contraste automático dos rótulos internos (pizza, funil, treemap)\n textStyle: { fontFamily },\n title: { textStyle: { color: s.text }, subtextStyle: { color: s.text3 } },\n legend: {\n textStyle: { color: s.text2 },\n inactiveColor: s.border,\n pageTextStyle: { color: s.text3 },\n pageIconColor: s.text2,\n pageIconInactiveColor: s.border,\n },\n // Mesmo visual do `.mantine-ChartTooltip-tooltip` do global.css (o tooltip do ECharts é HTML com estilo inline)\n tooltip: {\n backgroundColor: s.surface,\n borderColor: s.borderSoft,\n borderWidth: 1,\n padding: [8, 12],\n textStyle: { color: s.text, fontFamily, fontSize: 13 },\n extraCssText: `box-shadow: ${s.shadowMd}; border-radius: ${radius.sm};`,\n axisPointer: {\n lineStyle: { color: s.border },\n crossStyle: { color: s.border },\n shadowStyle: { color: s.primarySoft },\n },\n },\n categoryAxis: axis,\n valueAxis: axis,\n logAxis: axis,\n timeAxis: axis,\n // `radar` vale para o componente (eixos/grade) e para a série (preenchimento 25%)\n radar: {\n axisName: { color: s.text2 },\n axisLine: { lineStyle: { color: s.borderSoft } },\n splitLine: { lineStyle: { color: s.borderSoft } },\n splitArea: { show: false },\n areaStyle: { opacity: 0.25 },\n lineStyle: { width: 2 },\n },\n // Rótulos de valor ficam fora da barra/ponto (top/right): texto do tema, não preto fixo\n bar: { label, ...(options.barRadius !== undefined && { itemStyle: { borderRadius: options.barRadius } }) },\n line: { label },\n scatter: { label },\n gauge: { detail: { color: s.text }, title: { color: s.text3 } },\n sankey: { label, lineStyle: { color: 'source', opacity: 0.35 } },\n treemap: { breadcrumb: { itemStyle: { color: s.surface2, borderColor: s.borderSoft, textStyle: { color: s.text2 } } } },\n visualMap: { textStyle: { color: s.text3 } },\n calendar: {\n itemStyle: { color: s.surface2, borderColor: s.surface },\n splitLine: { show: false },\n dayLabel: { color: s.text3 },\n monthLabel: { color: s.text3 },\n yearLabel: { show: false },\n },\n dataZoom: { textStyle: { color: s.text3 }, borderColor: s.borderSoft },\n };\n}\n","import { computed, type ComputedRef } from 'vue';\nimport { useComputedColorScheme, useMantineTheme, type MantineTheme } from '@mantine-vue/core';\nimport { chartColors, chartPalette, semantic } from '../theme/tokens';\nimport { formatNumber } from '../utils/format';\n\nexport { chartColors, chartPalette };\n\nexport type ChartColorScheme = 'light' | 'dark';\n\n/** Tokens semânticos de um esquema (`semantic.light` / `semantic.dark`) como strings. */\nexport type ChartSchemeTokens = { [K in keyof (typeof semantic)['light']]: string };\n\n/** Parte do tema Mantine que o resolvedor de cores usa. */\nexport type ChartColorTheme = Pick<MantineTheme, 'colors' | 'primaryShade'> & Partial<Pick<MantineTheme, 'white' | 'black'>>;\n\n/** Cor da série `index` na paleta da marca (cicla quando acaba). Devolve `var(--jc-chart-N)`. */\nexport function paletteColor(index: number) {\n return chartPalette[index % chartPalette.length];\n}\n\n/** Preenche `color` das séries que não definiram cor, na ordem da paleta JC. */\nexport function withPalette<T extends { color?: string }>(items: T[]): (T & { color: string })[] {\n return items.map((item, index) => ({ ...item, color: item.color ?? paletteColor(index) }));\n}\n\n/** Formatador padrão dos gráficos: números pt-BR (54.959). */\nexport const ptBRValueFormatter = (value: number) => formatNumber(value);\n\nconst JC_CHART_VAR = /^var\\(\\s*--jc-chart-(\\d+)\\s*(?:,[^)]*)?\\)$/;\nconst MANTINE_COLOR_VAR = /^var\\(\\s*--mantine-color-([a-z][\\w]*)-(\\d)\\s*\\)$/i;\nconst THEME_COLOR = /^([a-z][\\w]*)(?:\\.(\\d))?$/i;\n\nfunction primaryShadeFor(theme: ChartColorTheme, scheme: ChartColorScheme): number {\n const shade = theme.primaryShade;\n return typeof shade === 'number' ? shade : (shade?.[scheme] ?? 6);\n}\n\n/**\n * Converte qualquer cor aceita pelos wrappers em um valor que o canvas do ECharts entende\n * (o canvas não lê variáveis CSS nem nomes do tema JC):\n * - `undefined`/vazio → `undefined`\n * - `var(--jc-chart-N)` (ou `chartPalette[i]`) → `chartColors[scheme][N-1]`\n * - `horizon`, `horizon.6`, aliases (`blue`, `green`…) → hex de `theme.colors`;\n * sem tom usa o `primaryShade` do esquema (6 no claro, 4 no escuro)\n * - `var(--mantine-color-horizon-6)` → hex de `theme.colors`\n * - `white` / `black` → `theme.white` / `theme.black`\n * - qualquer outra coisa (hex, rgb, hsl, nomes CSS) passa intacta\n */\nexport function resolveChartColor(\n color: string | null | undefined,\n theme: ChartColorTheme,\n scheme: ChartColorScheme,\n): string | undefined {\n if (typeof color !== 'string') return undefined;\n const value = color.trim();\n if (!value) return undefined;\n\n const chartVar = JC_CHART_VAR.exec(value);\n if (chartVar) {\n const colors = chartColors[scheme];\n const index = Number(chartVar[1]) - 1;\n return index >= 0 ? colors[index % colors.length] : value;\n }\n\n const mantineVar = MANTINE_COLOR_VAR.exec(value);\n if (mantineVar) return theme.colors[mantineVar[1]]?.[Number(mantineVar[2])] ?? value;\n\n if (value === 'white' && theme.white) return theme.white;\n if (value === 'black' && theme.black) return theme.black;\n\n const themeColor = THEME_COLOR.exec(value);\n if (themeColor) {\n const tuple = theme.colors[themeColor[1]];\n if (tuple) return tuple[themeColor[2] !== undefined ? Number(themeColor[2]) : primaryShadeFor(theme, scheme)] ?? value;\n }\n\n return value;\n}\n\n/** Hex da paleta da marca para o esquema (`index` cicla). */\nexport function paletteHex(index: number, scheme: ChartColorScheme) {\n const colors = chartColors[scheme];\n return colors[index % colors.length];\n}\n\nexport interface JcChartColors {\n /** Esquema efetivo (claro/escuro) */\n scheme: ComputedRef<ChartColorScheme>;\n /** Tokens semânticos do esquema atual (texto, superfície, bordas…) */\n tokens: ComputedRef<ChartSchemeTokens>;\n /** Paleta da marca em hex para o esquema atual */\n palette: ComputedRef<readonly string[]>;\n /** `resolveChartColor` no tema e esquema atuais */\n resolve: (color: string | null | undefined) => string | undefined;\n /** Hex da cor `index` da paleta no esquema atual */\n color: (index: number) => string;\n /** Como `withPalette`, mas já com todas as cores resolvidas para hex */\n withPalette: <T extends { color?: string }>(items: T[] | undefined | null) => (T & { color: string })[];\n}\n\n/**\n * Cores dos gráficos reativas ao tema: lê `useMantineTheme()` + `useComputedColorScheme()`,\n * então quem usar `resolve`/`palette` dentro de um render recolore ao alternar claro/escuro.\n * Precisa estar dentro do `JcProvider` (ou `MantineProvider`).\n */\nexport function useJcChartColors(): JcChartColors {\n const theme = useMantineTheme();\n const computedScheme = useComputedColorScheme('light');\n const scheme = computed<ChartColorScheme>(() => (computedScheme.value === 'dark' ? 'dark' : 'light'));\n const tokens = computed<ChartSchemeTokens>(() => semantic[scheme.value]);\n const palette = computed<readonly string[]>(() => chartColors[scheme.value]);\n const resolve = (color: string | null | undefined) => resolveChartColor(color, theme.value, scheme.value);\n const color = (index: number) => paletteHex(index, scheme.value);\n return {\n scheme,\n tokens,\n palette,\n resolve,\n color,\n withPalette: (items) => (items ?? []).map((item, index) => ({ ...item, color: resolve(item.color) ?? color(index) })),\n };\n}\n","import {\n computed,\n defineComponent,\n h,\n inject,\n provide,\n ref,\n toValue,\n type Component,\n type ComponentObjectPropsOptions,\n type DefineSetupFnComponent,\n} from 'vue';\nimport { THEME_KEY } from 'vue-echarts';\nimport type { EChartsOption } from 'echarts';\nimport {\n AreaChart as MAreaChart,\n BarChart as MBarChart,\n BarsList as MBarsList,\n BubbleChart as MBubbleChart,\n CandlestickChart as MCandlestickChart,\n CompositeChart as MCompositeChart,\n DonutChart as MDonutChart,\n FunnelChart as MFunnelChart,\n GaugeChart as MGaugeChart,\n Heatmap as MHeatmap,\n LineChart as MLineChart,\n MatrixChart as MMatrixChart,\n PieChart as MPieChart,\n RadarChart as MRadarChart,\n RadialBarChart as MRadialBarChart,\n SankeyChart as MSankeyChart,\n ScatterChart as MScatterChart,\n Sparkline as MSparkline,\n Treemap as MTreemap,\n WaffleChart as MWaffleChart,\n type AreaChartProps as MAreaChartProps,\n type AreaChartSeries,\n type BarChartProps as MBarChartProps,\n type BarChartSeries,\n type BarsListProps as MBarsListProps,\n type BubbleChartProps as MBubbleChartProps,\n type CandlestickChartProps as MCandlestickChartProps,\n type CompositeChartProps as MCompositeChartProps,\n type CompositeChartSeries,\n type DonutChartProps as MDonutChartProps,\n type FunnelChartCell,\n type FunnelChartProps as MFunnelChartProps,\n type GaugeChartProps as MGaugeChartProps,\n type HeatmapProps as MHeatmapProps,\n type LineChartProps as MLineChartProps,\n type LineChartSeries,\n type MatrixChartProps as MMatrixChartProps,\n type PieChartCell,\n type PieChartProps as MPieChartProps,\n type RadarChartProps as MRadarChartProps,\n type RadialBarChartCell,\n type RadialBarChartProps as MRadialBarChartProps,\n type SankeyChartNode,\n type SankeyChartProps as MSankeyChartProps,\n type ScatterChartProps as MScatterChartProps,\n type ScatterChartSeries,\n type SparklineProps as MSparklineProps,\n type TreemapData,\n type TreemapProps as MTreemapProps,\n type WaffleChartCell,\n type WaffleChartProps as MWaffleChartProps,\n type ChartSeries,\n} from '@mantine-vue/charts';\nimport { ramps } from '../theme/tokens';\nimport { createJcEChartsTheme, mergeChartOptions, type JcEChartsThemeOptions } from './echartsTheme';\nimport { ptBRValueFormatter, useJcChartColors, type ChartColorScheme, type ChartSchemeTokens, type JcChartColors } from './palette';\n\n/*\n * Wrappers finos dos gráficos do @mantine-vue/charts (Apache ECharts) com os padrões JC Decor:\n * - séries/fatias sem `color` recebem a paleta da marca (horizon, evergreen, electric…)\n * - TODAS as cores viram hex do esquema atual (o canvas não entende `horizon.6` nem `var(--jc-chart-1)`)\n * e recolorem ao alternar claro/escuro\n * - eixos, grade, legenda e tooltip com os tokens semânticos do esquema (tema do ECharts via `THEME_KEY`)\n * - números formatados em pt-BR; curvas suaves; barras arredondadas (exceto empilhadas)\n * Todas as props do Mantine Vue continuam disponíveis e têm prioridade.\n */\n\ntype Input = Record<string, unknown>;\ntype Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\ntype SeriesWithOptionalColor<S> = Optional<S & { color?: string }, 'color'>;\n\n/** Props comuns dos wrappers JC. */\nexport interface JcChartRootProps {\n /** Alias de `height` (nome usado no @jcdecor/ui React). `height` tem prioridade. */\n h?: number | string;\n}\n\n/** Eventos repassados pelo gráfico do Mantine Vue (parâmetros do ECharts). */\nexport type JcChartEmits = {\n click: (params: unknown) => void;\n dblclick: (params: unknown) => void;\n mouseover: (params: unknown) => void;\n mouseout: (params: unknown) => void;\n legendselectchanged: (params: unknown) => void;\n datazoom: (params: unknown) => void;\n};\n\n/** Métodos expostos via template ref (os mesmos do Mantine Vue). */\nexport interface JcChartExposed {\n getEchartsInstance: () => unknown;\n resize: () => void;\n setOption: (option: EChartsOption) => void;\n}\n\ninterface BuildContext {\n c: JcChartColors;\n t: ChartSchemeTokens;\n scheme: ChartColorScheme;\n}\n\ninterface JcChartSpec {\n /** Props declaradas (reativas) — usadas para o tema por instância; também são repassadas */\n props?: ComponentObjectPropsOptions;\n themeOptions?: (props: Input) => JcEChartsThemeOptions;\n build: (input: Input, ctx: BuildContext) => Input;\n}\n\nconst camelize = (key: string) => key.replace(/-([a-z])/g, (_match, letter: string) => letter.toUpperCase());\n\n/**\n * Props booleanas dos gráficos do Mantine Vue. Como eles não declaram props (leem `attrs`), o atalho\n * de template `<LineChart with-legend />` chega como `''` e o `bool()` interno o ignora — aqui vira `true`.\n */\nconst BOOLEAN_PROPS = new Set(['connectNulls', 'roundCaps', 'autoresize', 'loading']);\nconst isBooleanProp = (key: string) => BOOLEAN_PROPS.has(key) || /^with[A-Z]/.test(key);\n\n/** kebab-case → camelCase (como o Mantine Vue faz), preservando `data-*` e `aria-*`. */\nfunction normalizeAttrs(attrs: Input): Input {\n const out: Input = {};\n for (const [key, value] of Object.entries(attrs)) {\n const name = key.startsWith('data-') || key.startsWith('aria-') ? key : camelize(key);\n out[name] = value === '' && isBooleanProp(name) ? true : value;\n }\n return out;\n}\n\nconst definedEntries = (props: Input) => Object.fromEntries(Object.entries(props).filter(([, value]) => value !== undefined));\nconst asArray = <T = { color?: string }>(value: unknown): T[] | undefined => (Array.isArray(value) ? (value as T[]) : undefined);\nconst asString = (value: unknown) => (typeof value === 'string' ? value : undefined);\nconst asFormatter = (value: unknown) => (typeof value === 'function' ? (value as (value: number) => string) : ptBRValueFormatter);\n\nfunction defineJcChart(name: string, base: Component, spec: JcChartSpec) {\n return defineComponent({\n name: `Jc${name}`,\n inheritAttrs: false,\n props: spec.props ?? {},\n setup(props, { attrs, slots, expose }) {\n const c = useJcChartColors();\n const outerTheme = inject(THEME_KEY, null);\n const theme = computed(() => {\n const own = createJcEChartsTheme(c.scheme.value, spec.themeOptions?.(props as Input));\n // Um tema-objeto fornecido acima (provide(THEME_KEY, …)) vence o tema JC\n return mergeChartOptions(own, toValue(outerTheme));\n });\n provide(THEME_KEY, theme);\n\n const chart = ref<Partial<JcChartExposed>>();\n expose({\n getEchartsInstance: () => chart.value?.getEchartsInstance?.(),\n resize: () => chart.value?.resize?.(),\n setOption: (option: EChartsOption) => chart.value?.setOption?.(option),\n } satisfies JcChartExposed);\n\n return () => {\n const { h: heightAlias, ...input } = { ...definedEntries(props as Input), ...normalizeAttrs(attrs) };\n if (input.height === undefined && heightAlias !== undefined) input.height = heightAlias;\n const ctx: BuildContext = { c, t: c.tokens.value, scheme: c.scheme.value };\n return h(base as any, { ...spec.build(input, ctx), ref: chart }, slots);\n };\n },\n });\n}\n\n/** Eixos com cores do esquema + formatador pt-BR no eixo de valores; props do usuário mesclam por cima. */\nfunction gridChartProps(defaults: Input, input: Input, { c, t }: BuildContext): Input {\n const merged = { ...defaults, ...input };\n const text = c.resolve(asString(input.textColor)) ?? t.text3;\n const grid = c.resolve(asString(input.gridColor)) ?? t.borderSoft;\n const format = asFormatter(merged.valueFormatter);\n const splitLine = { lineStyle: { color: grid } };\n const categoryAxis = { axisLabel: { color: text }, splitLine };\n const valueAxis = { axisLabel: { color: text, formatter: (value: number) => format(value) }, splitLine };\n const vertical = input.orientation === 'vertical';\n return {\n ...merged,\n valueFormatter: format,\n textColor: text,\n gridColor: grid,\n xAxisProps: mergeChartOptions(vertical ? valueAxis : categoryAxis, input.xAxisProps),\n yAxisProps: mergeChartOptions(vertical ? categoryAxis : valueAxis, input.yAxisProps),\n rightYAxisProps: mergeChartOptions(valueAxis, input.rightYAxisProps),\n referenceLines: resolveRefs(input.referenceLines, c, t.text3),\n referenceAreas: resolveRefs(input.referenceAreas, c, t.text3),\n referenceDots: resolveRefs(input.referenceDots, c, t.text3),\n series: c.withPalette(asArray<{ color?: string }>(input.series)),\n };\n}\n\n/** Linhas/áreas/pontos de referência: cor resolvida (padrão: texto-3 do esquema, não o cinza fixo do Mantine). */\nfunction resolveRefs(items: unknown, c: JcChartColors, fallback: string) {\n const list = asArray<{ color?: string }>(items);\n return list?.map((item) => ({ ...item, color: c.resolve(item.color) ?? fallback }));\n}\n\n/** Tooltip de pizza/rosca/funil com o formatador pt-BR (o Mantine Vue só formata os rótulos). */\nfunction itemTooltipProps(input: Input, format: (value: number) => string) {\n return mergeChartOptions({ valueFormatter: (value: unknown) => format(Number(value)) }, input.tooltipProps);\n}\n\nconst sequentialColors: Record<ChartColorScheme, string[]> = {\n light: [ramps.horizon[100], ramps.horizon[300], ramps.horizon[500], ramps.horizon[700]],\n dark: [ramps.horizon[900], ramps.horizon[700], ramps.horizon[500], ramps.horizon[300]],\n};\n\n/* ------------------------------------------------------------------ cartesianos */\n\nexport type LineChartProps = Omit<MLineChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<LineChartSeries>[] };\n\n/** Gráfico de linhas. Padrões: `height` 280, curva `monotone`, traço 2,5, pt-BR. */\nexport const LineChart = defineJcChart('LineChart', MLineChart, {\n build: (input, ctx) => gridChartProps({ height: 280, curveType: 'monotone', strokeWidth: 2.5 }, input, ctx),\n}) as unknown as DefineSetupFnComponent<LineChartProps, JcChartEmits>;\n\nexport type AreaChartProps = Omit<MAreaChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<AreaChartSeries>[] };\n\n/** Gráfico de área. Padrões: `height` 280, curva `monotone`, traço 2,5, preenchimento 25%, pt-BR. */\nexport const AreaChart = defineJcChart('AreaChart', MAreaChart, {\n build: (input, ctx) => gridChartProps({ height: 280, curveType: 'monotone', strokeWidth: 2.5, fillOpacity: 0.25 }, input, ctx),\n}) as unknown as DefineSetupFnComponent<AreaChartProps, JcChartEmits>;\n\nexport type BarChartProps = Omit<MBarChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<BarChartSeries>[] };\n\n/** Raio das barras: `barProps.radius` (como no Recharts) ou 4px no topo/ponta; empilhadas ficam retas. */\nfunction barRadius(props: Input): number | number[] {\n const barProps = props.barProps && typeof props.barProps === 'object' ? (props.barProps as Input) : {};\n const custom = barProps.radius ?? barProps.borderRadius;\n if (Array.isArray(custom)) return custom as number[];\n const stacked = props.type === 'stacked' || props.type === 'percent';\n const r = typeof custom === 'number' ? custom : stacked ? 0 : 4;\n // [sup.-esq., sup.-dir., inf.-dir., inf.-esq.]: arredonda só a ponta da barra\n return props.orientation === 'vertical' ? [0, r, r, 0] : [r, r, 0, 0];\n}\n\n/** Gráfico de barras. Padrões: `height` 280, barras com raio 4 (retas se `stacked`/`percent`), pt-BR. */\nexport const BarChart = defineJcChart('BarChart', MBarChart, {\n props: { type: String, orientation: String, barProps: { type: [Object, Function], default: undefined } },\n themeOptions: (props) => ({ barRadius: barRadius(props) }),\n build: (input, ctx) => gridChartProps({ height: 280 }, input, ctx),\n}) as unknown as DefineSetupFnComponent<BarChartProps, JcChartEmits>;\n\nexport type CompositeChartProps = Omit<MCompositeChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<CompositeChartSeries>[] };\n\n/** Gráfico composto (linha + área + barra). Padrões: `height` 280, curva `monotone`, pt-BR. */\nexport const CompositeChart = defineJcChart('CompositeChart', MCompositeChart, {\n build: (input, ctx) => gridChartProps({ height: 280, curveType: 'monotone' }, input, ctx),\n}) as unknown as DefineSetupFnComponent<CompositeChartProps, JcChartEmits>;\n\nexport type RadarChartProps = Omit<MRadarChartProps, 'series'> & JcChartRootProps & { series: SeriesWithOptionalColor<ChartSeries>[] };\n\n/** Gráfico de radar. Padrões: `height` 300, área preenchida a 25% (tema). */\nexport const RadarChart = defineJcChart('RadarChart', MRadarChart, {\n build: (input, { c }) => ({ height: 300, ...input, series: c.withPalette(asArray(input.series)) }),\n}) as unknown as DefineSetupFnComponent<RadarChartProps, JcChartEmits>;\n\n/* ------------------------------------------------------------------ radiais */\n\nexport type DonutChartProps = Omit<MDonutChartProps, 'data'> & JcChartRootProps & { data: Optional<PieChartCell, 'color'>[] };\n\nfunction radialProps(defaults: Input, input: Input, { c, t }: BuildContext): Input {\n const format = asFormatter(input.valueFormatter);\n return {\n // `size` é tipado no Mantine Vue mas não é usado: vira a altura (padrão 160, como no Mantine React)\n height: typeof input.size === 'number' ? input.size : 160,\n withTooltip: true,\n ...defaults,\n ...input,\n valueFormatter: format,\n tooltipProps: itemTooltipProps(input, format),\n chartLabelColor: c.resolve(asString(input.chartLabelColor)) ?? t.text,\n data: c.withPalette(asArray(input.data)),\n };\n}\n\n/**\n * Gráfico de rosca. Padrões: altura 160 (ou `size`), tooltip, espaço de 2° entre fatias, pt-BR.\n * Atenção: no Mantine Vue `thickness` é o RAIO INTERNO em % (não a espessura em px do React);\n * o padrão 52 reproduz a proporção do anel do @jcdecor/ui (24px num gráfico de 160px).\n */\nexport const DonutChart = defineJcChart('DonutChart', MDonutChart, {\n build: (input, ctx) => radialProps({ paddingAngle: 2, thickness: 52 }, input, ctx),\n}) as unknown as DefineSetupFnComponent<DonutChartProps, JcChartEmits>;\n\nexport type PieChartProps = Omit<MPieChartProps, 'data'> & JcChartRootProps & { data: Optional<PieChartCell, 'color'>[] };\n\n/** Gráfico de pizza. Padrões: altura 160 (ou `size`), tooltip, pt-BR. */\nexport const PieChart = defineJcChart('PieChart', MPieChart, {\n build: (input, ctx) => radialProps({}, input, ctx),\n}) as unknown as DefineSetupFnComponent<PieChartProps, JcChartEmits>;\n\n/* ------------------------------------------------------------------ sparkline */\n\nexport type SparklineProps = MSparklineProps & JcChartRootProps;\n\n/** Minigráfico de tendência. Padrões: `height` 48, cor 1 da paleta, preenchimento 30%, traço 2. */\nexport const Sparkline = defineJcChart('Sparkline', MSparkline, {\n build: (input, { c }) => {\n const trend = input.trendColors as Record<string, string | undefined> | undefined;\n return {\n height: 48,\n curveType: 'monotone',\n fillOpacity: 0.3,\n strokeWidth: 2,\n ...input,\n color: c.resolve(asString(input.color)) ?? c.color(0),\n trendColors: trend && Object.fromEntries(Object.entries(trend).map(([key, color]) => [key, c.resolve(color)])),\n };\n },\n}) as unknown as DefineSetupFnComponent<SparklineProps, JcChartEmits>;\n\n/* ------------------------------------------------------------------ demais gráficos (só paleta + tema) */\n\nexport type ScatterChartProps = Omit<MScatterChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<ScatterChartSeries>[] };\n\n/** Dispersão: séries na paleta da marca, eixos/tooltip do esquema. */\nexport const ScatterChart = defineJcChart('ScatterChart', MScatterChart, {\n build: (input, { c }) => ({ ...input, series: c.withPalette(asArray(input.series)) }),\n}) as unknown as DefineSetupFnComponent<ScatterChartProps, JcChartEmits>;\n\nexport type BubbleChartProps = MBubbleChartProps & JcChartRootProps;\n\n/** Bolhas: cor 1 da paleta por padrão. */\nexport const BubbleChart = defineJcChart('BubbleChart', MBubbleChart, {\n build: (input, { c }) => ({ valueFormatter: ptBRValueFormatter, ...input, color: c.resolve(asString(input.color)) ?? c.color(0) }),\n}) as unknown as DefineSetupFnComponent<BubbleChartProps, JcChartEmits>;\n\nexport type FunnelChartProps = Omit<MFunnelChartProps, 'data'> & JcChartRootProps & { data: Optional<FunnelChartCell, 'color'>[] };\n\n/** Funil: etapas na paleta da marca. */\nexport const FunnelChart = defineJcChart('FunnelChart', MFunnelChart, {\n build: (input, { c }) => ({ valueFormatter: ptBRValueFormatter, ...input, data: c.withPalette(asArray(input.data)) }),\n}) as unknown as DefineSetupFnComponent<FunnelChartProps, JcChartEmits>;\n\nexport type RadialBarChartProps = Omit<MRadialBarChartProps, 'data'> &\n JcChartRootProps & { data: Optional<RadialBarChartCell, 'color'>[] };\n\n/** Barras radiais: itens na paleta da marca. */\nexport const RadialBarChart = defineJcChart('RadialBarChart', MRadialBarChart, {\n build: (input, { c }) => ({ ...input, data: c.withPalette(asArray(input.data)) }),\n}) as unknown as DefineSetupFnComponent<RadialBarChartProps, JcChartEmits>;\n\nexport type BarsListProps = MBarsListProps & JcChartRootProps & { textColor?: string };\n\n/**\n * Lista de barras: `barColor` padrão = cor 1 da paleta, rótulos no texto do esquema, ponta arredondada.\n * Limitação do Mantine Vue: `color`/`textColor` por item são ignorados (todas as barras usam `barColor`).\n */\nexport const BarsList = defineJcChart('BarsList', MBarsList, {\n themeOptions: () => ({ barRadius: [0, 4, 4, 0] }),\n build: (input, { c, t }) => ({\n valueFormatter: ptBRValueFormatter,\n ...input,\n barColor: c.resolve(asString(input.barColor)) ?? c.color(0),\n textColor: c.resolve(asString(input.textColor) ?? asString(input.barTextColor)) ?? t.text2,\n }),\n}) as unknown as DefineSetupFnComponent<BarsListProps, JcChartEmits>;\n\nexport type HeatmapProps = MHeatmapProps & JcChartRootProps;\n\n/** Mapa de calor (calendário): escala sequencial em horizon (clara→escura no claro; o inverso no escuro). */\nexport const Heatmap = defineJcChart('Heatmap', MHeatmap, {\n build: (input, { c, scheme }) => ({\n ...input,\n colors: (asArray<string>(input.colors) ?? sequentialColors[scheme]).map((color) => c.resolve(color) ?? color),\n }),\n}) as unknown as DefineSetupFnComponent<HeatmapProps, JcChartEmits>;\n\nexport type MatrixChartProps = MMatrixChartProps & JcChartRootProps;\n\n/** Matriz de calor: mesma escala sequencial do Heatmap; células vazias na superfície 2. */\nexport const MatrixChart = defineJcChart('MatrixChart', MMatrixChart, {\n build: (input, { c, t, scheme }) => ({\n ...input,\n colors: (asArray<string>(input.colors) ?? sequentialColors[scheme]).map((color) => c.resolve(color) ?? color),\n emptyColor: c.resolve(asString(input.emptyColor)) ?? t.surface2,\n }),\n}) as unknown as DefineSetupFnComponent<MatrixChartProps, JcChartEmits>;\n\nexport type GaugeChartProps = Omit<MGaugeChartProps, 'sections'> &\n JcChartRootProps & { sections?: { value: number; color: string }[] };\n\n/** Medidor: preenchimento na cor 1 da paleta, trilho na borda suave, alvo no texto do esquema, pt-BR. */\nexport const GaugeChart = defineJcChart('GaugeChart', MGaugeChart, {\n build: (input, { c, t }) => ({\n valueFormatter: ptBRValueFormatter,\n ...input,\n filledColor: c.resolve(asString(input.filledColor)) ?? c.color(0),\n trackColor: c.resolve(asString(input.trackColor)) ?? t.borderSoft,\n targetColor: c.resolve(asString(input.targetColor)) ?? t.text,\n sections: asArray<{ color?: string }>(input.sections)?.map((section, index) => ({\n ...section,\n color: c.resolve(section.color) ?? c.color(index),\n })),\n }),\n}) as unknown as DefineSetupFnComponent<GaugeChartProps, JcChartEmits>;\n\nexport type WaffleChartProps = Omit<MWaffleChartProps, 'data'> & JcChartRootProps & { data: Optional<WaffleChartCell, 'color'>[] };\n\n/** Waffle: segmentos na paleta da marca, células vazias na borda suave. */\nexport const WaffleChart = defineJcChart('WaffleChart', MWaffleChart, {\n build: (input, { c, t }) => ({\n ...input,\n data: c.withPalette(asArray(input.data)),\n emptyColor: c.resolve(asString(input.emptyColor)) ?? t.borderSoft,\n }),\n}) as unknown as DefineSetupFnComponent<WaffleChartProps, JcChartEmits>;\n\nexport type TreemapProps = MTreemapProps & JcChartRootProps;\n\n/** Treemap: nós do primeiro nível na paleta da marca (filhos herdam a cor do pai no ECharts). */\nexport const Treemap = defineJcChart('Treemap', MTreemap, {\n build: (input, { c }) => ({ valueFormatter: ptBRValueFormatter, ...input, data: c.withPalette(asArray<TreemapData>(input.data)) }),\n}) as unknown as DefineSetupFnComponent<TreemapProps, JcChartEmits>;\n\nexport type SankeyChartProps = MSankeyChartProps & JcChartRootProps;\n\n/** Sankey: nós na paleta da marca (o Mantine Vue ignora `color` dos nós — aqui vira `itemStyle.color`). */\nexport const SankeyChart = defineJcChart('SankeyChart', MSankeyChart, {\n build: (input, { c }) => {\n const withNodeColors = (nodes: SankeyChartNode[] | undefined) =>\n nodes &&\n c.withPalette(nodes).map((node) => ({\n ...node,\n itemStyle: { color: node.color, ...(node.itemStyle as Input | undefined) },\n }));\n return {\n valueFormatter: ptBRValueFormatter,\n ...input,\n ...(input.nodes !== undefined && { nodes: withNodeColors(asArray(input.nodes)) }),\n ...(input.data !== undefined && { data: withNodeColors(asArray(input.data)) }),\n };\n },\n}) as unknown as DefineSetupFnComponent<SankeyChartProps, JcChartEmits>;\n\nexport type CandlestickChartProps = MCandlestickChartProps & JcChartRootProps;\n\n/** Candlestick: alta em evergreen, baixa em danger (tom do esquema). */\nexport const CandlestickChart = defineJcChart('CandlestickChart', MCandlestickChart, {\n build: (input, { c }) => ({\n ...input,\n upColor: c.resolve(asString(input.upColor) ?? 'evergreen'),\n downColor: c.resolve(asString(input.downColor) ?? 'danger'),\n }),\n}) as unknown as DefineSetupFnComponent<CandlestickChartProps, JcChartEmits>;\n","import { defineComponent, h, type DefineSetupFnComponent, type PropType, type SlotsType, type VNodeChild } from 'vue';\nimport { Group, SegmentedControl, Text, hasNode, resolveNode, type CardProps, type MantineNode } from '@mantine-vue/core';\nimport { Card } from '../theme/themeDefaults';\nimport { Kicker } from '../components/Typography';\n\nexport interface ChartCardProps extends Omit<CardProps, 'title'> {\n /** Sobretítulo (ou slot `kicker`) */\n kicker?: MantineNode;\n /** Título do card (ou slot `title`) */\n title?: MantineNode;\n /** Texto de apoio abaixo do título (ou slot `description`) */\n description?: MantineNode;\n /** Valor em destaque ao lado do título, ex.: total do período (ou slot `value`) */\n value?: MantineNode;\n /** Opções de período (ex.: ['7d', '30d', '90d']) */\n periods?: string[];\n /** Período selecionado — use `v-model:period` */\n period?: string;\n}\n\nexport interface ChartCardSlots {\n /** O gráfico */\n default?: () => VNodeChild;\n kicker?: () => VNodeChild;\n title?: () => VNodeChild;\n description?: () => VNodeChild;\n value?: () => VNodeChild;\n /** Ações extras no cabeçalho */\n actions?: () => VNodeChild;\n}\n\nexport type ChartCardEmits = {\n 'update:period': (period: string) => void;\n periodChange: (period: string) => void;\n};\n\nconst nodeProp = { type: null as unknown as PropType<MantineNode>, default: undefined };\n\n/** Card de gráfico: título, valor em destaque, seletor de período e o gráfico (slot padrão). */\nexport const ChartCard = defineComponent({\n name: 'ChartCard',\n inheritAttrs: false,\n props: {\n kicker: nodeProp,\n title: nodeProp,\n description: nodeProp,\n value: nodeProp,\n periods: { type: Array as PropType<string[]>, default: undefined },\n period: { type: String, default: undefined },\n },\n emits: ['update:period', 'periodChange'],\n setup(props, { attrs, slots, emit }) {\n const onPeriod = (value: unknown) => {\n emit('update:period', String(value));\n emit('periodChange', String(value));\n };\n\n return () => {\n const kicker = resolveNode(props.kicker, slots.kicker);\n const description = resolveNode(props.description, slots.description);\n const value = resolveNode(props.value, slots.value);\n const actions = slots.actions?.();\n const periods = props.periods ?? [];\n\n const heading = h('div', { style: { flex: '1 1 220px', minWidth: 0 } }, [\n hasNode(kicker) ? h(Kicker as any, { mb: 4 }, () => kicker) : null,\n h(Text as any, { fw: 600, fz: 'var(--type-subheadline-lg)', lh: 1.3 }, () => resolveNode(props.title, slots.title)),\n hasNode(description) ? h(Text as any, { fz: 'xs', c: 'var(--ds-text-3)', mt: 2 }, () => description) : null,\n hasNode(value)\n ? h(Text as any, { fw: 700, fz: 'var(--type-headline-md)', mt: 4, style: { fontVariantNumeric: 'tabular-nums' } }, () => value)\n : null,\n ]);\n\n const controls = h(Group as any, { gap: 'xs' }, () => [\n periods.length > 0\n ? h(SegmentedControl as any, {\n size: 'xs',\n data: periods,\n modelValue: props.period,\n 'onUpdate:modelValue': onPeriod,\n })\n : null,\n actions,\n ]);\n\n return h(Card as any, attrs, () => [\n h(Group as any, { justify: 'space-between', align: 'flex-start', mb: 'lg', gap: 'sm' }, () => [heading, controls]),\n slots.default?.(),\n ]);\n };\n },\n}) as unknown as DefineSetupFnComponent<ChartCardProps, ChartCardEmits, SlotsType<ChartCardSlots>>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"charts.js","names":["camelize","MLineChart","MAreaChart","MBarChart","MCompositeChart","MRadarChart","MDonutChart","MPieChart","MSparkline","MScatterChart","MBubbleChart","MFunnelChart","MRadialBarChart","MBarsList","MHeatmap","MMatrixChart","MGaugeChart","MWaffleChart","MTreemap","MSankeyChart","MCandlestickChart","Card","Card$1","radius","ramps","chartColors","fontFamily","chartPalette","semantic","formatNumber","Kicker","AreaChart$1","BarChart$1","BarsList$1","BubbleChart$1","CandlestickChart$1","CompositeChart$1","DonutChart$1","FunnelChart$1","GaugeChart$1","Heatmap$1","LineChart$1","MatrixChart$1","PieChart$1","RadarChart$1","RadialBarChart$1","SankeyChart$1","ScatterChart$1","Sparkline$1","Treemap$1","WaffleChart$1","isPlainObject","value","mergeChartOptions","source","target","result","key","createJcEChartsTheme","s","scheme","axis","label","options","paletteColor","index","withPalette","items","item","ptBRValueFormatter","JC_CHART_VAR","MANTINE_COLOR_VAR","THEME_COLOR","primaryShadeFor","shade","theme","resolveChartColor","color","chartVar","colors","mantineVar","themeColor","tuple","paletteHex","useJcChartColors","useMantineTheme","computedScheme","useComputedColorScheme","computed","tokens","palette","resolve","camelize$1","letter","BOOLEAN_PROPS","isBooleanProp","normalizeAttrs","out","attrs","name","definedEntries","props","asArray","asString","asFormatter","defineJcChart","defineComponent","spec","c","outerTheme","inject","THEME_KEY","toValue","chart","ref","patched","attachPatch","instance","run","onMounted","nextTick","onUpdated","expose","option","heightAlias","input","ctx","h","base","slots","gridChartProps","merged","defaults","text","t","grid","format","splitLine","categoryAxis","valueAxis","vertical","resolveRefs","fallback","itemTooltipProps","sequentialColors","LineChart","AreaChart","series","opacity","barRadius","barProps","custom","stacked","r","BarChart","CompositeChart","RadarChart","radialProps","DonutChart","PieChart","Sparkline","trend","ScatterChart","BubbleChart","FunnelChart","RadialBarChart","BarsList","Heatmap","MatrixChart","GaugeChart","section","WaffleChart","Treemap","SankeyChart","withNodeColors","nodes","node","CandlestickChart","nodeProp","ChartCard","onPeriod","emit","kicker","resolveNode","description","actions","periods","heading","hasNode","Text","controls","Group","SegmentedControl","ChartLegend","ChartTooltip"],"sources":["../src/charts/echartsTheme.ts","../src/charts/palette.ts","../src/charts/charts.ts","../src/charts/ChartCard.ts"],"sourcesContent":["import { chartColors, fontFamily, radius, semantic } from '../theme/tokens';\nimport type { ChartColorScheme } from './palette';\n\n/** Objeto de tema do ECharts (o mesmo formato de `echarts.registerTheme`). */\nexport type JcEChartsTheme = Record<string, unknown>;\n\nexport interface JcEChartsThemeOptions {\n /** Raio das barras (`itemStyle.borderRadius` do ECharts). Omitido = barras retas. */\n barRadius?: number | number[];\n}\n\ntype PlainObject = Record<string, unknown>;\n\nconst isPlainObject = (value: unknown): value is PlainObject =>\n !!value && typeof value === 'object' && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;\n\n/** Mescla profunda de objetos simples: `source` vence; arrays e funções são substituídos. */\nexport function mergeChartOptions<T extends PlainObject>(target: T, source: unknown): T {\n if (!isPlainObject(source)) return target;\n const result: PlainObject = { ...target };\n for (const [key, value] of Object.entries(source)) {\n if (value === undefined) continue;\n result[key] = isPlainObject(value) && isPlainObject(result[key]) ? mergeChartOptions(result[key] as PlainObject, value) : value;\n }\n return result as T;\n}\n\n/**\n * Tema do ECharts com os tokens JC Decor para o esquema `scheme`.\n * Os gráficos do Mantine Vue desenham em canvas, onde variáveis CSS (`--ds-*`) não chegam:\n * textos, eixos, grade, legenda e tooltip recebem aqui os hex do tema claro/escuro.\n * Valores definidos explicitamente nas opções do gráfico continuam tendo prioridade.\n * Também serve para quem usa `vue-echarts` direto: `provide(THEME_KEY, createJcEChartsTheme('dark'))`.\n */\nexport function createJcEChartsTheme(scheme: ChartColorScheme, options: JcEChartsThemeOptions = {}): JcEChartsTheme {\n const s = semantic[scheme];\n const axis = {\n axisLine: { lineStyle: { color: s.borderSoft } },\n axisTick: { show: false, lineStyle: { color: s.borderSoft } },\n axisLabel: { color: s.text3 },\n splitLine: { lineStyle: { color: s.borderSoft, type: [4, 4] } },\n nameTextStyle: { color: s.text3 },\n };\n const label = { color: s.text2 };\n\n return {\n color: [...chartColors[scheme]],\n backgroundColor: 'transparent',\n // Só a fonte: cor global quebraria o contraste automático dos rótulos internos (pizza, funil, treemap)\n textStyle: { fontFamily },\n title: { textStyle: { color: s.text }, subtextStyle: { color: s.text3 } },\n legend: {\n textStyle: { color: s.text2 },\n inactiveColor: s.border,\n pageTextStyle: { color: s.text3 },\n pageIconColor: s.text2,\n pageIconInactiveColor: s.border,\n },\n // Mesmo visual do `.mantine-ChartTooltip-tooltip` do global.css (o tooltip do ECharts é HTML com estilo inline)\n tooltip: {\n backgroundColor: s.surface,\n borderColor: s.borderSoft,\n borderWidth: 1,\n padding: [8, 12],\n textStyle: { color: s.text, fontFamily, fontSize: 13 },\n extraCssText: `box-shadow: ${s.shadowMd}; border-radius: ${radius.sm};`,\n axisPointer: {\n lineStyle: { color: s.border },\n crossStyle: { color: s.border },\n shadowStyle: { color: s.primarySoft },\n },\n },\n categoryAxis: axis,\n valueAxis: axis,\n logAxis: axis,\n timeAxis: axis,\n // `radar` vale para o componente (eixos/grade) e para a série (preenchimento 25%)\n radar: {\n axisName: { color: s.text2 },\n axisLine: { lineStyle: { color: s.borderSoft } },\n splitLine: { lineStyle: { color: s.borderSoft } },\n splitArea: { show: false },\n areaStyle: { opacity: 0.25 },\n lineStyle: { width: 2 },\n },\n // Rótulos de valor ficam fora da barra/ponto (top/right): texto do tema, não preto fixo\n bar: { label, ...(options.barRadius !== undefined && { itemStyle: { borderRadius: options.barRadius } }) },\n line: { label },\n scatter: { label },\n gauge: { detail: { color: s.text }, title: { color: s.text3 } },\n sankey: { label, lineStyle: { color: 'source', opacity: 0.35 } },\n treemap: { breadcrumb: { itemStyle: { color: s.surface2, borderColor: s.borderSoft, textStyle: { color: s.text2 } } } },\n visualMap: { textStyle: { color: s.text3 } },\n calendar: {\n itemStyle: { color: s.surface2, borderColor: s.surface },\n splitLine: { show: false },\n dayLabel: { color: s.text3 },\n monthLabel: { color: s.text3 },\n yearLabel: { show: false },\n },\n dataZoom: { textStyle: { color: s.text3 }, borderColor: s.borderSoft },\n };\n}\n","import { computed, type ComputedRef } from 'vue';\nimport { useComputedColorScheme, useMantineTheme, type MantineTheme } from '@mantine-vue/core';\nimport { chartColors, chartPalette, semantic } from '../theme/tokens';\nimport { formatNumber } from '../utils/format';\n\nexport { chartColors, chartPalette };\n\nexport type ChartColorScheme = 'light' | 'dark';\n\n/** Tokens semânticos de um esquema (`semantic.light` / `semantic.dark`) como strings. */\nexport type ChartSchemeTokens = { [K in keyof (typeof semantic)['light']]: string };\n\n/** Parte do tema Mantine que o resolvedor de cores usa. */\nexport type ChartColorTheme = Pick<MantineTheme, 'colors' | 'primaryShade'> & Partial<Pick<MantineTheme, 'white' | 'black'>>;\n\n/** Cor da série `index` na paleta da marca (cicla quando acaba). Devolve `var(--jc-chart-N)`. */\nexport function paletteColor(index: number) {\n return chartPalette[index % chartPalette.length];\n}\n\n/** Preenche `color` das séries que não definiram cor, na ordem da paleta JC. */\nexport function withPalette<T extends { color?: string }>(items: T[]): (T & { color: string })[] {\n return items.map((item, index) => ({ ...item, color: item.color ?? paletteColor(index) }));\n}\n\n/** Formatador padrão dos gráficos: números pt-BR (54.959). */\nexport const ptBRValueFormatter = (value: number) => formatNumber(value);\n\nconst JC_CHART_VAR = /^var\\(\\s*--jc-chart-(\\d+)\\s*(?:,[^)]*)?\\)$/;\nconst MANTINE_COLOR_VAR = /^var\\(\\s*--mantine-color-([a-z][\\w]*)-(\\d)\\s*\\)$/i;\nconst THEME_COLOR = /^([a-z][\\w]*)(?:\\.(\\d))?$/i;\n\nfunction primaryShadeFor(theme: ChartColorTheme, scheme: ChartColorScheme): number {\n const shade = theme.primaryShade;\n return typeof shade === 'number' ? shade : (shade?.[scheme] ?? 6);\n}\n\n/**\n * Converte qualquer cor aceita pelos wrappers em um valor que o canvas do ECharts entende\n * (o canvas não lê variáveis CSS nem nomes do tema JC):\n * - `undefined`/vazio → `undefined`\n * - `var(--jc-chart-N)` (ou `chartPalette[i]`) → `chartColors[scheme][N-1]`\n * - `horizon`, `horizon.6`, aliases (`blue`, `green`…) → hex de `theme.colors`;\n * sem tom usa o `primaryShade` do esquema (6 no claro, 4 no escuro)\n * - `var(--mantine-color-horizon-6)` → hex de `theme.colors`\n * - `white` / `black` → `theme.white` / `theme.black`\n * - qualquer outra coisa (hex, rgb, hsl, nomes CSS) passa intacta\n */\nexport function resolveChartColor(\n color: string | null | undefined,\n theme: ChartColorTheme,\n scheme: ChartColorScheme,\n): string | undefined {\n if (typeof color !== 'string') return undefined;\n const value = color.trim();\n if (!value) return undefined;\n\n const chartVar = JC_CHART_VAR.exec(value);\n if (chartVar) {\n const colors = chartColors[scheme];\n const index = Number(chartVar[1]) - 1;\n return index >= 0 ? colors[index % colors.length] : value;\n }\n\n const mantineVar = MANTINE_COLOR_VAR.exec(value);\n if (mantineVar) return theme.colors[mantineVar[1]]?.[Number(mantineVar[2])] ?? value;\n\n if (value === 'white' && theme.white) return theme.white;\n if (value === 'black' && theme.black) return theme.black;\n\n const themeColor = THEME_COLOR.exec(value);\n if (themeColor) {\n const tuple = theme.colors[themeColor[1]];\n if (tuple) return tuple[themeColor[2] !== undefined ? Number(themeColor[2]) : primaryShadeFor(theme, scheme)] ?? value;\n }\n\n return value;\n}\n\n/** Hex da paleta da marca para o esquema (`index` cicla). */\nexport function paletteHex(index: number, scheme: ChartColorScheme) {\n const colors = chartColors[scheme];\n return colors[index % colors.length];\n}\n\nexport interface JcChartColors {\n /** Esquema efetivo (claro/escuro) */\n scheme: ComputedRef<ChartColorScheme>;\n /** Tokens semânticos do esquema atual (texto, superfície, bordas…) */\n tokens: ComputedRef<ChartSchemeTokens>;\n /** Paleta da marca em hex para o esquema atual */\n palette: ComputedRef<readonly string[]>;\n /** `resolveChartColor` no tema e esquema atuais */\n resolve: (color: string | null | undefined) => string | undefined;\n /** Hex da cor `index` da paleta no esquema atual */\n color: (index: number) => string;\n /** Como `withPalette`, mas já com todas as cores resolvidas para hex */\n withPalette: <T extends { color?: string }>(items: T[] | undefined | null) => (T & { color: string })[];\n}\n\n/**\n * Cores dos gráficos reativas ao tema: lê `useMantineTheme()` + `useComputedColorScheme()`,\n * então quem usar `resolve`/`palette` dentro de um render recolore ao alternar claro/escuro.\n * Precisa estar dentro do `JcProvider` (ou `MantineProvider`).\n */\nexport function useJcChartColors(): JcChartColors {\n const theme = useMantineTheme();\n const computedScheme = useComputedColorScheme('light');\n const scheme = computed<ChartColorScheme>(() => (computedScheme.value === 'dark' ? 'dark' : 'light'));\n const tokens = computed<ChartSchemeTokens>(() => semantic[scheme.value]);\n const palette = computed<readonly string[]>(() => chartColors[scheme.value]);\n const resolve = (color: string | null | undefined) => resolveChartColor(color, theme.value, scheme.value);\n const color = (index: number) => paletteHex(index, scheme.value);\n return {\n scheme,\n tokens,\n palette,\n resolve,\n color,\n withPalette: (items) => (items ?? []).map((item, index) => ({ ...item, color: resolve(item.color) ?? color(index) })),\n };\n}\n","import {\n computed,\n defineComponent,\n h,\n inject,\n nextTick,\n onMounted,\n onUpdated,\n provide,\n ref,\n toValue,\n type Component,\n type ComponentObjectPropsOptions,\n type DefineSetupFnComponent,\n} from 'vue';\nimport { THEME_KEY } from 'vue-echarts';\nimport type { EChartsOption } from 'echarts';\nimport {\n AreaChart as MAreaChart,\n BarChart as MBarChart,\n BarsList as MBarsList,\n BubbleChart as MBubbleChart,\n CandlestickChart as MCandlestickChart,\n CompositeChart as MCompositeChart,\n DonutChart as MDonutChart,\n FunnelChart as MFunnelChart,\n GaugeChart as MGaugeChart,\n Heatmap as MHeatmap,\n LineChart as MLineChart,\n MatrixChart as MMatrixChart,\n PieChart as MPieChart,\n RadarChart as MRadarChart,\n RadialBarChart as MRadialBarChart,\n SankeyChart as MSankeyChart,\n ScatterChart as MScatterChart,\n Sparkline as MSparkline,\n Treemap as MTreemap,\n WaffleChart as MWaffleChart,\n type AreaChartProps as MAreaChartProps,\n type AreaChartSeries,\n type BarChartProps as MBarChartProps,\n type BarChartSeries,\n type BarsListProps as MBarsListProps,\n type BubbleChartProps as MBubbleChartProps,\n type CandlestickChartProps as MCandlestickChartProps,\n type CompositeChartProps as MCompositeChartProps,\n type CompositeChartSeries,\n type DonutChartProps as MDonutChartProps,\n type FunnelChartCell,\n type FunnelChartProps as MFunnelChartProps,\n type GaugeChartProps as MGaugeChartProps,\n type HeatmapProps as MHeatmapProps,\n type LineChartProps as MLineChartProps,\n type LineChartSeries,\n type MatrixChartProps as MMatrixChartProps,\n type PieChartCell,\n type PieChartProps as MPieChartProps,\n type RadarChartProps as MRadarChartProps,\n type RadialBarChartCell,\n type RadialBarChartProps as MRadialBarChartProps,\n type SankeyChartNode,\n type SankeyChartProps as MSankeyChartProps,\n type ScatterChartProps as MScatterChartProps,\n type ScatterChartSeries,\n type SparklineProps as MSparklineProps,\n type TreemapData,\n type TreemapProps as MTreemapProps,\n type WaffleChartCell,\n type WaffleChartProps as MWaffleChartProps,\n type ChartSeries,\n} from '@mantine-vue/charts';\nimport { ramps } from '../theme/tokens';\nimport { createJcEChartsTheme, mergeChartOptions, type JcEChartsThemeOptions } from './echartsTheme';\nimport { ptBRValueFormatter, useJcChartColors, type ChartColorScheme, type ChartSchemeTokens, type JcChartColors } from './palette';\n\n/*\n * Wrappers finos dos gráficos do @mantine-vue/charts (Apache ECharts) com os padrões JC Decor:\n * - séries/fatias sem `color` recebem a paleta da marca (horizon, evergreen, electric…)\n * - TODAS as cores viram hex do esquema atual (o canvas não entende `horizon.6` nem `var(--jc-chart-1)`)\n * e recolorem ao alternar claro/escuro\n * - eixos, grade, legenda e tooltip com os tokens semânticos do esquema (tema do ECharts via `THEME_KEY`)\n * - números formatados em pt-BR; curvas suaves; barras arredondadas (exceto empilhadas)\n * Todas as props do Mantine Vue continuam disponíveis e têm prioridade.\n */\n\ntype Input = Record<string, unknown>;\ntype Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\ntype SeriesWithOptionalColor<S> = Optional<S & { color?: string }, 'color'>;\n\n/** Props comuns dos wrappers JC. */\nexport interface JcChartRootProps {\n /** Alias de `height` (nome usado no @jcdecor/ui React). `height` tem prioridade. */\n h?: number | string;\n}\n\n/** Eventos repassados pelo gráfico do Mantine Vue (parâmetros do ECharts). */\nexport type JcChartEmits = {\n click: (params: unknown) => void;\n dblclick: (params: unknown) => void;\n mouseover: (params: unknown) => void;\n mouseout: (params: unknown) => void;\n legendselectchanged: (params: unknown) => void;\n datazoom: (params: unknown) => void;\n};\n\n/** Métodos expostos via template ref (os mesmos do Mantine Vue). */\nexport interface JcChartExposed {\n getEchartsInstance: () => unknown;\n resize: () => void;\n setOption: (option: EChartsOption) => void;\n}\n\ninterface BuildContext {\n c: JcChartColors;\n t: ChartSchemeTokens;\n scheme: ChartColorScheme;\n}\n\ninterface JcChartSpec {\n /** Props declaradas (reativas) — usadas para o tema por instância; também são repassadas */\n props?: ComponentObjectPropsOptions;\n themeOptions?: (props: Input) => JcEChartsThemeOptions;\n build: (input: Input, ctx: BuildContext) => Input;\n /** Ajuste na instância ECharts depois de cada renderização (para o que o Mantine Vue não deixa configurar) */\n patch?: (instance: EChartsInstance, props: Input) => void;\n}\n\ntype EChartsInstance = {\n getOption: () => { series?: Array<Record<string, unknown>> };\n setOption: (option: Record<string, unknown>) => void;\n on: (event: string, handler: () => void) => void;\n};\n\nconst camelize = (key: string) => key.replace(/-([a-z])/g, (_match, letter: string) => letter.toUpperCase());\n\n/**\n * Props booleanas dos gráficos do Mantine Vue. Como eles não declaram props (leem `attrs`), o atalho\n * de template `<LineChart with-legend />` chega como `''` e o `bool()` interno o ignora — aqui vira `true`.\n */\nconst BOOLEAN_PROPS = new Set(['connectNulls', 'roundCaps', 'autoresize', 'loading']);\nconst isBooleanProp = (key: string) => BOOLEAN_PROPS.has(key) || /^with[A-Z]/.test(key);\n\n/** kebab-case → camelCase (como o Mantine Vue faz), preservando `data-*` e `aria-*`. */\nfunction normalizeAttrs(attrs: Input): Input {\n const out: Input = {};\n for (const [key, value] of Object.entries(attrs)) {\n const name = key.startsWith('data-') || key.startsWith('aria-') ? key : camelize(key);\n out[name] = value === '' && isBooleanProp(name) ? true : value;\n }\n return out;\n}\n\nconst definedEntries = (props: Input) => Object.fromEntries(Object.entries(props).filter(([, value]) => value !== undefined));\nconst asArray = <T = { color?: string }>(value: unknown): T[] | undefined => (Array.isArray(value) ? (value as T[]) : undefined);\nconst asString = (value: unknown) => (typeof value === 'string' ? value : undefined);\nconst asFormatter = (value: unknown) => (typeof value === 'function' ? (value as (value: number) => string) : ptBRValueFormatter);\n\nfunction defineJcChart(name: string, base: Component, spec: JcChartSpec) {\n return defineComponent({\n name: `Jc${name}`,\n inheritAttrs: false,\n props: spec.props ?? {},\n setup(props, { attrs, slots, expose }) {\n const c = useJcChartColors();\n const outerTheme = inject(THEME_KEY, null);\n const theme = computed(() => {\n const own = createJcEChartsTheme(c.scheme.value, spec.themeOptions?.(props as Input));\n // Um tema-objeto fornecido acima (provide(THEME_KEY, …)) vence o tema JC\n return mergeChartOptions(own, toValue(outerTheme));\n });\n provide(THEME_KEY, theme);\n\n const chart = ref<Partial<JcChartExposed>>();\n\n // O vue-echarts recria a instância ao trocar o tema: liga o patch em cada instância nova (uma vez)\n const patched = new WeakSet<object>();\n const attachPatch = () => {\n const instance = spec.patch && (chart.value?.getEchartsInstance?.() as EChartsInstance | undefined);\n if (!instance || patched.has(instance)) return;\n patched.add(instance);\n const run = () => spec.patch!(instance, { ...(props as Input), ...normalizeAttrs(attrs) });\n instance.on('rendered', run);\n run();\n };\n if (spec.patch) {\n onMounted(() => nextTick(attachPatch));\n onUpdated(() => nextTick(attachPatch));\n }\n expose({\n getEchartsInstance: () => chart.value?.getEchartsInstance?.(),\n resize: () => chart.value?.resize?.(),\n setOption: (option: EChartsOption) => chart.value?.setOption?.(option),\n } satisfies JcChartExposed);\n\n return () => {\n const { h: heightAlias, ...input } = { ...definedEntries(props as Input), ...normalizeAttrs(attrs) };\n if (input.height === undefined && heightAlias !== undefined) input.height = heightAlias;\n const ctx: BuildContext = { c, t: c.tokens.value, scheme: c.scheme.value };\n return h(base as any, { ...spec.build(input, ctx), ref: chart }, slots);\n };\n },\n });\n}\n\n/** Eixos com cores do esquema + formatador pt-BR no eixo de valores; props do usuário mesclam por cima. */\nfunction gridChartProps(defaults: Input, input: Input, { c, t }: BuildContext): Input {\n const merged = { ...defaults, ...input };\n const text = c.resolve(asString(input.textColor)) ?? t.text3;\n const grid = c.resolve(asString(input.gridColor)) ?? t.borderSoft;\n const format = asFormatter(merged.valueFormatter);\n const splitLine = { lineStyle: { color: grid } };\n const categoryAxis = { axisLabel: { color: text }, splitLine };\n const valueAxis = { axisLabel: { color: text, formatter: (value: number) => format(value) }, splitLine };\n const vertical = input.orientation === 'vertical';\n return {\n ...merged,\n valueFormatter: format,\n textColor: text,\n gridColor: grid,\n xAxisProps: mergeChartOptions(vertical ? valueAxis : categoryAxis, input.xAxisProps),\n yAxisProps: mergeChartOptions(vertical ? categoryAxis : valueAxis, input.yAxisProps),\n rightYAxisProps: mergeChartOptions(valueAxis, input.rightYAxisProps),\n referenceLines: resolveRefs(input.referenceLines, c, t.text3),\n referenceAreas: resolveRefs(input.referenceAreas, c, t.text3),\n referenceDots: resolveRefs(input.referenceDots, c, t.text3),\n series: c.withPalette(asArray<{ color?: string }>(input.series)),\n };\n}\n\n/** Linhas/áreas/pontos de referência: cor resolvida (padrão: texto-3 do esquema, não o cinza fixo do Mantine). */\nfunction resolveRefs(items: unknown, c: JcChartColors, fallback: string) {\n const list = asArray<{ color?: string }>(items);\n return list?.map((item) => ({ ...item, color: c.resolve(item.color) ?? fallback }));\n}\n\n/** Tooltip de pizza/rosca/funil com o formatador pt-BR (o Mantine Vue só formata os rótulos). */\nfunction itemTooltipProps(input: Input, format: (value: number) => string) {\n return mergeChartOptions({ valueFormatter: (value: unknown) => format(Number(value)) }, input.tooltipProps);\n}\n\nconst sequentialColors: Record<ChartColorScheme, string[]> = {\n light: [ramps.horizon[100], ramps.horizon[300], ramps.horizon[500], ramps.horizon[700]],\n dark: [ramps.horizon[900], ramps.horizon[700], ramps.horizon[500], ramps.horizon[300]],\n};\n\n/* ------------------------------------------------------------------ cartesianos */\n\nexport type LineChartProps = Omit<MLineChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<LineChartSeries>[] };\n\n/** Gráfico de linhas. Padrões: `height` 280, curva `monotone`, traço 2,5, pt-BR. */\nexport const LineChart = defineJcChart('LineChart', MLineChart, {\n build: (input, ctx) => gridChartProps({ height: 280, curveType: 'monotone', strokeWidth: 2.5 }, input, ctx),\n}) as unknown as DefineSetupFnComponent<LineChartProps, JcChartEmits>;\n\nexport type AreaChartProps = Omit<MAreaChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<AreaChartSeries>[] };\n\n/** Gráfico de área. Padrões: `height` 280, curva `monotone`, traço 2,5, preenchimento 25%, pt-BR. */\nexport const AreaChart = defineJcChart('AreaChart', MAreaChart, {\n props: { fillOpacity: { type: Number, default: undefined } },\n // Contorna bug do @mantine-vue/charts 3.5: `cartesianOption(…, 'area')` grava `areaStyle: undefined` em toda série\n // (área sem preenchimento, e o tema não consegue preencher). Aplica o preenchimento na instância, só onde falta.\n patch: (instance, props) => {\n const series = instance.getOption().series ?? [];\n if (!series.some((s) => s.type === 'line' && !s.areaStyle)) return;\n const opacity = typeof props.fillOpacity === 'number' ? props.fillOpacity : 0.25;\n instance.setOption({ series: series.map((s) => (s.type === 'line' && !s.areaStyle ? { areaStyle: { opacity } } : {})) });\n },\n build: (input, ctx) => gridChartProps({ height: 280, curveType: 'monotone', strokeWidth: 2.5, fillOpacity: 0.25 }, input, ctx),\n}) as unknown as DefineSetupFnComponent<AreaChartProps, JcChartEmits>;\n\nexport type BarChartProps = Omit<MBarChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<BarChartSeries>[] };\n\n/** Raio das barras: `barProps.radius` (como no Recharts) ou 4px no topo/ponta; empilhadas ficam retas. */\nfunction barRadius(props: Input): number | number[] {\n const barProps = props.barProps && typeof props.barProps === 'object' ? (props.barProps as Input) : {};\n const custom = barProps.radius ?? barProps.borderRadius;\n if (Array.isArray(custom)) return custom as number[];\n const stacked = props.type === 'stacked' || props.type === 'percent';\n const r = typeof custom === 'number' ? custom : stacked ? 0 : 4;\n // [sup.-esq., sup.-dir., inf.-dir., inf.-esq.]: arredonda só a ponta da barra\n return props.orientation === 'vertical' ? [0, r, r, 0] : [r, r, 0, 0];\n}\n\n/** Gráfico de barras. Padrões: `height` 280, barras com raio 4 (retas se `stacked`/`percent`), pt-BR. */\nexport const BarChart = defineJcChart('BarChart', MBarChart, {\n props: { type: String, orientation: String, barProps: { type: [Object, Function], default: undefined } },\n themeOptions: (props) => ({ barRadius: barRadius(props) }),\n build: (input, ctx) => gridChartProps({ height: 280 }, input, ctx),\n}) as unknown as DefineSetupFnComponent<BarChartProps, JcChartEmits>;\n\nexport type CompositeChartProps = Omit<MCompositeChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<CompositeChartSeries>[] };\n\n/** Gráfico composto (linha + área + barra). Padrões: `height` 280, curva `monotone`, pt-BR. */\nexport const CompositeChart = defineJcChart('CompositeChart', MCompositeChart, {\n build: (input, ctx) => gridChartProps({ height: 280, curveType: 'monotone' }, input, ctx),\n}) as unknown as DefineSetupFnComponent<CompositeChartProps, JcChartEmits>;\n\nexport type RadarChartProps = Omit<MRadarChartProps, 'series'> & JcChartRootProps & { series: SeriesWithOptionalColor<ChartSeries>[] };\n\n/** Gráfico de radar. Padrões: `height` 300, área preenchida a 25% (tema). */\nexport const RadarChart = defineJcChart('RadarChart', MRadarChart, {\n build: (input, { c }) => ({ height: 300, ...input, series: c.withPalette(asArray(input.series)) }),\n}) as unknown as DefineSetupFnComponent<RadarChartProps, JcChartEmits>;\n\n/* ------------------------------------------------------------------ radiais */\n\nexport type DonutChartProps = Omit<MDonutChartProps, 'data'> & JcChartRootProps & { data: Optional<PieChartCell, 'color'>[] };\n\nfunction radialProps(defaults: Input, input: Input, { c, t }: BuildContext): Input {\n const format = asFormatter(input.valueFormatter);\n return {\n // `size` é tipado no Mantine Vue mas não é usado: vira a altura (padrão 160, como no Mantine React)\n height: typeof input.size === 'number' ? input.size : 160,\n // Como no React: `size` define o quadrado do gráfico (largura também), não só a altura\n ...(typeof input.size === 'number' && { width: input.size }),\n withTooltip: true,\n chartLabelFontSize: 14,\n ...defaults,\n ...input,\n valueFormatter: format,\n tooltipProps: itemTooltipProps(input, format),\n chartLabelColor: c.resolve(asString(input.chartLabelColor)) ?? t.text,\n data: c.withPalette(asArray(input.data)),\n };\n}\n\n/**\n * Gráfico de rosca. Padrões: altura 160 (ou `size`), tooltip, espaço de 2° entre fatias, pt-BR.\n * Atenção: no Mantine Vue `thickness` é o RAIO INTERNO em % (não a espessura em px do React);\n * o padrão 52 reproduz a proporção do anel do @jcdecor/ui (24px num gráfico de 160px).\n */\nexport const DonutChart = defineJcChart('DonutChart', MDonutChart, {\n build: (input, ctx) => radialProps({ paddingAngle: 2, thickness: 52 }, input, ctx),\n}) as unknown as DefineSetupFnComponent<DonutChartProps, JcChartEmits>;\n\nexport type PieChartProps = Omit<MPieChartProps, 'data'> & JcChartRootProps & { data: Optional<PieChartCell, 'color'>[] };\n\n/** Gráfico de pizza. Padrões: altura 160 (ou `size`), tooltip, pt-BR. */\nexport const PieChart = defineJcChart('PieChart', MPieChart, {\n build: (input, ctx) => radialProps({}, input, ctx),\n}) as unknown as DefineSetupFnComponent<PieChartProps, JcChartEmits>;\n\n/* ------------------------------------------------------------------ sparkline */\n\nexport type SparklineProps = MSparklineProps & JcChartRootProps;\n\n/** Minigráfico de tendência. Padrões: `height` 48, cor 1 da paleta, preenchimento 30%, traço 2. */\nexport const Sparkline = defineJcChart('Sparkline', MSparkline, {\n build: (input, { c }) => {\n const trend = input.trendColors as Record<string, string | undefined> | undefined;\n return {\n height: 48,\n curveType: 'monotone',\n fillOpacity: 0.3,\n strokeWidth: 2,\n ...input,\n color: c.resolve(asString(input.color)) ?? c.color(0),\n trendColors: trend && Object.fromEntries(Object.entries(trend).map(([key, color]) => [key, c.resolve(color)])),\n };\n },\n}) as unknown as DefineSetupFnComponent<SparklineProps, JcChartEmits>;\n\n/* ------------------------------------------------------------------ demais gráficos (só paleta + tema) */\n\nexport type ScatterChartProps = Omit<MScatterChartProps, 'series'> &\n JcChartRootProps & { series: SeriesWithOptionalColor<ScatterChartSeries>[] };\n\n/** Dispersão: séries na paleta da marca, eixos/tooltip do esquema. */\nexport const ScatterChart = defineJcChart('ScatterChart', MScatterChart, {\n build: (input, { c }) => ({ ...input, series: c.withPalette(asArray(input.series)) }),\n}) as unknown as DefineSetupFnComponent<ScatterChartProps, JcChartEmits>;\n\nexport type BubbleChartProps = MBubbleChartProps & JcChartRootProps;\n\n/** Bolhas: cor 1 da paleta por padrão. */\nexport const BubbleChart = defineJcChart('BubbleChart', MBubbleChart, {\n build: (input, { c }) => ({ valueFormatter: ptBRValueFormatter, ...input, color: c.resolve(asString(input.color)) ?? c.color(0) }),\n}) as unknown as DefineSetupFnComponent<BubbleChartProps, JcChartEmits>;\n\nexport type FunnelChartProps = Omit<MFunnelChartProps, 'data'> & JcChartRootProps & { data: Optional<FunnelChartCell, 'color'>[] };\n\n/** Funil: etapas na paleta da marca. */\nexport const FunnelChart = defineJcChart('FunnelChart', MFunnelChart, {\n build: (input, { c }) => ({ valueFormatter: ptBRValueFormatter, ...input, data: c.withPalette(asArray(input.data)) }),\n}) as unknown as DefineSetupFnComponent<FunnelChartProps, JcChartEmits>;\n\nexport type RadialBarChartProps = Omit<MRadialBarChartProps, 'data'> &\n JcChartRootProps & { data: Optional<RadialBarChartCell, 'color'>[] };\n\n/** Barras radiais: itens na paleta da marca. */\nexport const RadialBarChart = defineJcChart('RadialBarChart', MRadialBarChart, {\n build: (input, { c }) => ({ ...input, data: c.withPalette(asArray(input.data)) }),\n}) as unknown as DefineSetupFnComponent<RadialBarChartProps, JcChartEmits>;\n\nexport type BarsListProps = MBarsListProps & JcChartRootProps & { textColor?: string };\n\n/**\n * Lista de barras: `barColor` padrão = cor 1 da paleta, rótulos no texto do esquema, ponta arredondada.\n * Limitação do Mantine Vue: `color`/`textColor` por item são ignorados (todas as barras usam `barColor`).\n */\nexport const BarsList = defineJcChart('BarsList', MBarsList, {\n themeOptions: () => ({ barRadius: [0, 4, 4, 0] }),\n build: (input, { c, t }) => ({\n valueFormatter: ptBRValueFormatter,\n ...input,\n barColor: c.resolve(asString(input.barColor)) ?? c.color(0),\n textColor: c.resolve(asString(input.textColor) ?? asString(input.barTextColor)) ?? t.text2,\n }),\n}) as unknown as DefineSetupFnComponent<BarsListProps, JcChartEmits>;\n\nexport type HeatmapProps = MHeatmapProps & JcChartRootProps;\n\n/** Mapa de calor (calendário): escala sequencial em horizon (clara→escura no claro; o inverso no escuro). */\nexport const Heatmap = defineJcChart('Heatmap', MHeatmap, {\n build: (input, { c, scheme }) => ({\n ...input,\n colors: (asArray<string>(input.colors) ?? sequentialColors[scheme]).map((color) => c.resolve(color) ?? color),\n }),\n}) as unknown as DefineSetupFnComponent<HeatmapProps, JcChartEmits>;\n\nexport type MatrixChartProps = MMatrixChartProps & JcChartRootProps;\n\n/** Matriz de calor: mesma escala sequencial do Heatmap; células vazias na superfície 2. */\nexport const MatrixChart = defineJcChart('MatrixChart', MMatrixChart, {\n build: (input, { c, t, scheme }) => ({\n ...input,\n colors: (asArray<string>(input.colors) ?? sequentialColors[scheme]).map((color) => c.resolve(color) ?? color),\n emptyColor: c.resolve(asString(input.emptyColor)) ?? t.surface2,\n }),\n}) as unknown as DefineSetupFnComponent<MatrixChartProps, JcChartEmits>;\n\nexport type GaugeChartProps = Omit<MGaugeChartProps, 'sections'> &\n JcChartRootProps & { sections?: { value: number; color: string }[] };\n\n/** Medidor: preenchimento na cor 1 da paleta, trilho na borda suave, alvo no texto do esquema, pt-BR. */\nexport const GaugeChart = defineJcChart('GaugeChart', MGaugeChart, {\n build: (input, { c, t }) => ({\n valueFormatter: ptBRValueFormatter,\n ...input,\n filledColor: c.resolve(asString(input.filledColor)) ?? c.color(0),\n trackColor: c.resolve(asString(input.trackColor)) ?? t.borderSoft,\n targetColor: c.resolve(asString(input.targetColor)) ?? t.text,\n sections: asArray<{ color?: string }>(input.sections)?.map((section, index) => ({\n ...section,\n color: c.resolve(section.color) ?? c.color(index),\n })),\n }),\n}) as unknown as DefineSetupFnComponent<GaugeChartProps, JcChartEmits>;\n\nexport type WaffleChartProps = Omit<MWaffleChartProps, 'data'> & JcChartRootProps & { data: Optional<WaffleChartCell, 'color'>[] };\n\n/** Waffle: segmentos na paleta da marca, células vazias na borda suave. */\nexport const WaffleChart = defineJcChart('WaffleChart', MWaffleChart, {\n build: (input, { c, t }) => ({\n ...input,\n data: c.withPalette(asArray(input.data)),\n emptyColor: c.resolve(asString(input.emptyColor)) ?? t.borderSoft,\n }),\n}) as unknown as DefineSetupFnComponent<WaffleChartProps, JcChartEmits>;\n\nexport type TreemapProps = MTreemapProps & JcChartRootProps;\n\n/** Treemap: nós do primeiro nível na paleta da marca (filhos herdam a cor do pai no ECharts). */\nexport const Treemap = defineJcChart('Treemap', MTreemap, {\n build: (input, { c }) => ({ valueFormatter: ptBRValueFormatter, ...input, data: c.withPalette(asArray<TreemapData>(input.data)) }),\n}) as unknown as DefineSetupFnComponent<TreemapProps, JcChartEmits>;\n\nexport type SankeyChartProps = MSankeyChartProps & JcChartRootProps;\n\n/** Sankey: nós na paleta da marca (o Mantine Vue ignora `color` dos nós — aqui vira `itemStyle.color`). */\nexport const SankeyChart = defineJcChart('SankeyChart', MSankeyChart, {\n build: (input, { c }) => {\n const withNodeColors = (nodes: SankeyChartNode[] | undefined) =>\n nodes &&\n c.withPalette(nodes).map((node) => ({\n ...node,\n itemStyle: { color: node.color, ...(node.itemStyle as Input | undefined) },\n }));\n return {\n valueFormatter: ptBRValueFormatter,\n ...input,\n ...(input.nodes !== undefined && { nodes: withNodeColors(asArray(input.nodes)) }),\n ...(input.data !== undefined && { data: withNodeColors(asArray(input.data)) }),\n };\n },\n}) as unknown as DefineSetupFnComponent<SankeyChartProps, JcChartEmits>;\n\nexport type CandlestickChartProps = MCandlestickChartProps & JcChartRootProps;\n\n/** Candlestick: alta em evergreen, baixa em danger (tom do esquema). */\nexport const CandlestickChart = defineJcChart('CandlestickChart', MCandlestickChart, {\n build: (input, { c }) => ({\n ...input,\n upColor: c.resolve(asString(input.upColor) ?? 'evergreen'),\n downColor: c.resolve(asString(input.downColor) ?? 'danger'),\n }),\n}) as unknown as DefineSetupFnComponent<CandlestickChartProps, JcChartEmits>;\n","import { defineComponent, h, type DefineSetupFnComponent, type PropType, type SlotsType, type VNodeChild } from 'vue';\nimport { Group, SegmentedControl, Text, hasNode, resolveNode, type CardProps, type MantineNode } from '@mantine-vue/core';\nimport { Card } from '../theme/themeDefaults';\nimport { Kicker } from '../components/Typography';\n\nexport interface ChartCardProps extends Omit<CardProps, 'title'> {\n /** Sobretítulo (ou slot `kicker`) */\n kicker?: MantineNode;\n /** Título do card (ou slot `title`) */\n title?: MantineNode;\n /** Texto de apoio abaixo do título (ou slot `description`) */\n description?: MantineNode;\n /** Valor em destaque ao lado do título, ex.: total do período (ou slot `value`) */\n value?: MantineNode;\n /** Opções de período (ex.: ['7d', '30d', '90d']) */\n periods?: string[];\n /** Período selecionado — use `v-model:period` */\n period?: string;\n}\n\nexport interface ChartCardSlots {\n /** O gráfico */\n default?: () => VNodeChild;\n kicker?: () => VNodeChild;\n title?: () => VNodeChild;\n description?: () => VNodeChild;\n value?: () => VNodeChild;\n /** Ações extras no cabeçalho */\n actions?: () => VNodeChild;\n}\n\nexport type ChartCardEmits = {\n 'update:period': (period: string) => void;\n periodChange: (period: string) => void;\n};\n\nconst nodeProp = { type: null as unknown as PropType<MantineNode>, default: undefined };\n\n/** Card de gráfico: título, valor em destaque, seletor de período e o gráfico (slot padrão). */\nexport const ChartCard = defineComponent({\n name: 'ChartCard',\n inheritAttrs: false,\n props: {\n kicker: nodeProp,\n title: nodeProp,\n description: nodeProp,\n value: nodeProp,\n periods: { type: Array as PropType<string[]>, default: undefined },\n period: { type: String, default: undefined },\n },\n emits: ['update:period', 'periodChange'],\n setup(props, { attrs, slots, emit }) {\n const onPeriod = (value: unknown) => {\n emit('update:period', String(value));\n emit('periodChange', String(value));\n };\n\n return () => {\n const kicker = resolveNode(props.kicker, slots.kicker);\n const description = resolveNode(props.description, slots.description);\n const value = resolveNode(props.value, slots.value);\n const actions = slots.actions?.();\n const periods = props.periods ?? [];\n\n const heading = h('div', { style: { flex: '1 1 220px', minWidth: 0 } }, [\n hasNode(kicker) ? h(Kicker as any, { mb: 4 }, () => kicker) : null,\n h(Text as any, { fw: 600, fz: 'var(--type-subheadline-lg)', lh: 1.3 }, () => resolveNode(props.title, slots.title)),\n hasNode(description) ? h(Text as any, { fz: 'xs', c: 'var(--ds-text-3)', mt: 2 }, () => description) : null,\n hasNode(value)\n ? h(Text as any, { fw: 700, fz: 'var(--type-headline-md)', mt: 4, style: { fontVariantNumeric: 'tabular-nums' } }, () => value)\n : null,\n ]);\n\n const controls = h(Group as any, { gap: 'xs' }, () => [\n periods.length > 0\n ? h(SegmentedControl as any, {\n size: 'xs',\n data: periods,\n modelValue: props.period,\n 'onUpdate:modelValue': onPeriod,\n })\n : null,\n actions,\n ]);\n\n return h(Card as any, attrs, () => [\n h(Group as any, { justify: 'space-between', align: 'flex-start', mb: 'lg', gap: 'sm' }, () => [heading, controls]),\n slots.default?.(),\n ]);\n };\n },\n}) as unknown as DefineSetupFnComponent<ChartCardProps, ChartCardEmits, SlotsType<ChartCardSlots>>;\n"],"mappings":"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"}
|
|
@@ -18,17 +18,31 @@ export interface ChatComposerProps extends BoxProps {
|
|
|
18
18
|
maxRows?: number;
|
|
19
19
|
/** Elementos extras à esquerda (ex.: emoji picker, respostas rápidas). O slot `#leftSection` tem prioridade. */
|
|
20
20
|
leftSection?: MantineNode;
|
|
21
|
+
/** Elementos extras à direita do campo, antes do botão de enviar. O slot `#rightSection` tem prioridade. */
|
|
22
|
+
rightSection?: MantineNode;
|
|
21
23
|
sendLabel?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Uma resposta está em andamento: o envio fica bloqueado (o texto digitado é mantido e o campo
|
|
26
|
+
* continua editável). Com um ouvinte `@stop`, o botão de enviar vira o botão de interromper.
|
|
27
|
+
*/
|
|
28
|
+
loading?: boolean;
|
|
29
|
+
stopLabel?: string;
|
|
30
|
+
/** Bloqueia o envio sem desabilitar o campo (ex.: integração ainda não conectada) */
|
|
31
|
+
sendDisabled?: boolean;
|
|
22
32
|
}
|
|
23
33
|
export type ChatComposerEmits = {
|
|
24
34
|
/** Ao enviar (Enter ou botão). O campo é limpo em seguida. */
|
|
25
35
|
send: (payload: ChatComposerSendPayload) => void;
|
|
26
36
|
/** `v-model` do texto */
|
|
27
37
|
'update:modelValue': (value: string) => void;
|
|
38
|
+
/** Botão de interromper (visível enquanto `loading`) */
|
|
39
|
+
stop: () => void;
|
|
28
40
|
};
|
|
29
41
|
export interface ChatComposerSlots {
|
|
30
42
|
/** Elementos extras à esquerda (ex.: emoji picker, respostas rápidas) */
|
|
31
43
|
leftSection?: () => VNodeChild;
|
|
44
|
+
/** Elementos extras à direita do campo, antes do botão de enviar */
|
|
45
|
+
rightSection?: () => VNodeChild;
|
|
32
46
|
}
|
|
33
47
|
/** Campo de mensagem: Enter envia, Shift+Enter quebra linha, anexos opcionais. */
|
|
34
48
|
export declare const ChatComposer: DefineSetupFnComponent<ChatComposerProps, ChatComposerEmits, SlotsType<ChatComposerSlots>>;
|
|
@@ -17,10 +17,14 @@ export interface ChatMessageProps extends BoxProps {
|
|
|
17
17
|
position?: GroupPosition;
|
|
18
18
|
/** Mensagem de sistema (centralizada) */
|
|
19
19
|
system?: boolean;
|
|
20
|
+
/** `plain` = sem bolha e em largura total (respostas de assistente com markdown/tabelas) @default 'bubble' */
|
|
21
|
+
variant?: 'bubble' | 'plain';
|
|
20
22
|
}
|
|
21
23
|
export interface ChatMessageSlots {
|
|
22
24
|
/** Conteúdo da bolha (texto, links, cards…). Sem conteúdo, a bolha não é renderizada. */
|
|
23
25
|
default?: () => VNodeChild;
|
|
26
|
+
/** Avatar customizado (ex.: ícone do assistente); substitui o avatar do `author` */
|
|
27
|
+
avatar?: () => VNodeChild;
|
|
24
28
|
}
|
|
25
29
|
/** Bolha de mensagem de chat. O slot padrão é o conteúdo da bolha; atributos vão para o Box raiz. */
|
|
26
30
|
export declare const ChatMessage: DefineSetupFnComponent<ChatMessageProps, {}, SlotsType<ChatMessageSlots>>;
|
|
@@ -18,6 +18,8 @@ export interface ChatThreadProps extends ScrollAreaProps {
|
|
|
18
18
|
empty?: MantineNode;
|
|
19
19
|
/** Renderização customizada do conteúdo da bolha. O slot `#content="{ message }"` tem prioridade. */
|
|
20
20
|
renderContent?: (message: ChatMessageData) => VNodeChild;
|
|
21
|
+
/** Conteúdo ao fim da conversa, antes do "digitando" (ex.: status de uma resposta em andamento). O slot `#footer` tem prioridade. */
|
|
22
|
+
footer?: MantineNode;
|
|
21
23
|
/** Altura da área rolável @default '100%' */
|
|
22
24
|
h?: ScrollAreaProps['h'];
|
|
23
25
|
}
|
|
@@ -28,6 +30,12 @@ export interface ChatThreadSlots {
|
|
|
28
30
|
content?: (props: {
|
|
29
31
|
message: ChatMessageData;
|
|
30
32
|
}) => VNodeChild;
|
|
33
|
+
/** Avatar customizado por mensagem (ex.: ícone do assistente) */
|
|
34
|
+
avatar?: (props: {
|
|
35
|
+
message: ChatMessageData;
|
|
36
|
+
}) => VNodeChild;
|
|
37
|
+
/** Conteúdo ao fim da conversa, antes do "digitando" */
|
|
38
|
+
footer?: () => VNodeChild;
|
|
31
39
|
}
|
|
32
40
|
/**
|
|
33
41
|
* Lista rolável de mensagens com separadores de data, agrupamento e auto-scroll.
|
|
@@ -17,6 +17,14 @@ export type ConversationListEmits = {
|
|
|
17
17
|
export interface ConversationListSlots {
|
|
18
18
|
/** Conteúdo quando a lista (ou a busca) fica vazia */
|
|
19
19
|
empty?: () => VNodeChild;
|
|
20
|
+
/** Ícone no lugar do avatar com iniciais (ex.: conversas com um assistente) */
|
|
21
|
+
icon?: (props: {
|
|
22
|
+
conversation: Conversation;
|
|
23
|
+
}) => VNodeChild;
|
|
24
|
+
/** Ações por conversa (ex.: menu renomear/excluir), à direita do item */
|
|
25
|
+
actions?: (props: {
|
|
26
|
+
conversation: Conversation;
|
|
27
|
+
}) => VNodeChild;
|
|
20
28
|
}
|
|
21
29
|
/** Lista de conversas com busca, não lidas, presença e última mensagem. */
|
|
22
30
|
export declare const ConversationList: DefineSetupFnComponent<ConversationListProps, ConversationListEmits, SlotsType<ConversationListSlots>>;
|
package/dist/chat/types.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export interface ChatMessageData {
|
|
|
23
23
|
attachments?: ChatAttachment[];
|
|
24
24
|
/** Mensagem de sistema (centralizada, sem bolha) */
|
|
25
25
|
system?: boolean;
|
|
26
|
+
/** `plain` = sem bolha e em largura total (ex.: respostas longas de assistente com markdown/tabelas) @default 'bubble' */
|
|
27
|
+
variant?: 'bubble' | 'plain';
|
|
26
28
|
}
|
|
27
29
|
export interface Conversation {
|
|
28
30
|
id: string;
|