@leracherry/chartmd 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,6 +13,46 @@ npm install @leracherry/chartmd react-markdown
13
13
 
14
14
  React is a peer dependency. No browser charting library is required.
15
15
 
16
+ ## Appearance
17
+
18
+ Version 0.2 uses thin strokes, small markers, inherited typography and colour,
19
+ and evenly spaced numeric ticks. The chart background is transparent.
20
+
21
+ ### Six line styles
22
+
23
+ Every series receives a matching line and marker in both the plot and legend.
24
+ Styles repeat after six series; there is no hard series limit, but two to six
25
+ series are recommended for readability. Legends wrap into rows of three.
26
+
27
+ ![Six line and marker styles](https://raw.githubusercontent.com/leracherry/chart.md/main/docs/chart-styles.png)
28
+
29
+ 1. Solid line with circles
30
+ 2. Dashed line with squares
31
+ 3. Dotted line with diamonds
32
+ 4. Dash-dot line with triangles
33
+ 5. Long dashes with plus markers
34
+ 6. Short dashes with cross markers
35
+
36
+ ### Optional paper grid
37
+
38
+ Add `grid: paper` inside the chart fence for a faint square grid. The squares
39
+ are decorative; axis labels define the measurement scale. Use `grid: none` for
40
+ an uncluttered plot, or `grid: horizontal` for the default horizontal guides.
41
+
42
+ ![Paper grid](https://raw.githubusercontent.com/leracherry/chart.md/main/docs/chart-paper.png)
43
+
44
+ ![Chart without grid](https://raw.githubusercontent.com/leracherry/chart.md/main/docs/chart-none.png)
45
+
46
+ ### Dark documents
47
+
48
+ The same component follows the document's text colour; no separate chart palette
49
+ or filled chart background is needed.
50
+
51
+ ![Dark document theme](https://raw.githubusercontent.com/leracherry/chart.md/main/docs/chart-dark.png)
52
+
53
+ The previews above are rasterized output from the package's actual React
54
+ component and stylesheet. The white/dark page backgrounds belong to the previews.
55
+
16
56
  ## Quick start
17
57
 
18
58
  Write a fenced `chart` block anywhere in your Markdown:
@@ -49,6 +89,9 @@ export function Article({ source }: { source: string }) {
49
89
  `remarkChart` parses and validates chart fences. `chartComponents` renders the
50
90
  result as accessible, server-renderable SVG.
51
91
 
92
+ See [examples/chart-page.md](examples/chart-page.md) for a complete Markdown
93
+ page with prose, a chart, and follow-up notes.
94
+
52
95
  ## Syntax
53
96
 
54
97
  The first table column supplies the labels. Every remaining column becomes a
@@ -60,6 +103,7 @@ numeric series.
60
103
  | `title` | No | Accessible chart title and visible heading |
61
104
  | `x` | No | Horizontal-axis label |
62
105
  | `y` | No | Vertical-axis label |
106
+ | `grid` | No | `horizontal` (default), `paper`, or `none` |
63
107
 
64
108
  Values may be positive, negative, or zero. Table rows require the same number
65
109
  of cells as the header, and series names must be unique. Invalid input fails
@@ -92,8 +136,10 @@ one-colour and are distinguished with opacity and dash patterns.
92
136
  .markdown-body {
93
137
  color: #24292f;
94
138
  --chartmd-color: currentColor;
95
- --chartmd-grid-opacity: 0.14;
96
- --chartmd-muted-opacity: 0.68;
139
+ --chartmd-grid-opacity: 0.1;
140
+ --chartmd-muted-opacity: 0.8;
141
+ --chartmd-paper-opacity: 0.07;
142
+ --chartmd-line-width: 1.75;
97
143
  }
98
144
 
99
145
  @media (prefers-color-scheme: dark) {
@@ -118,12 +164,28 @@ const definition = parseChart(chartSource);
118
164
  return <Chart definition={definition} />;
119
165
  ```
120
166
 
167
+ Use `locale` and standard `Intl.NumberFormat` options for number presentation:
168
+
169
+ ```tsx
170
+ <Chart
171
+ definition={definition}
172
+ locale="en-GB"
173
+ numberFormat={{ style: 'percent', maximumFractionDigits: 1 }}
174
+ />
175
+ ```
176
+
177
+ Percentage formatting expects fractions (`0.25` becomes `25%`). Accessible
178
+ descriptions retain exact source values. Rendered values must be finite and
179
+ within ±1e12; nonzero magnitudes must be at least 1e-12. Small default values use
180
+ scientific notation. Labels are plain text; Markdown emphasis inside cells is not parsed.
181
+
121
182
  ## API
122
183
 
123
184
  - `remarkChart` — Remark-compatible Markdown AST plugin.
124
185
  - `chartComponents` — component map for `react-markdown`.
125
186
  - `Chart` — responsive and accessible React SVG component.
126
187
  - `parseChart` — parser for a chart fence body.
188
+ - `lineStyles` — six built-in dash and marker combinations, in series order.
127
189
  - `ChartDefinition`, `ChartSeries`, and `ChartType` — TypeScript types.
128
190
 
129
191
  The renderer uses no canvas, network request, generated image, or client-side
@@ -139,8 +201,15 @@ pnpm install
139
201
  pnpm check
140
202
  ```
141
203
 
142
- Run `node scripts/render-readme-preview.mjs` after building to regenerate the
143
- SVG source used for the README preview.
204
+ Generate previews with the real renderer (PNG conversion requires `rsvg-convert`):
205
+
206
+ ```sh
207
+ pnpm build
208
+ node scripts/render-readme-preview.mjs /tmp/chart.svg paper
209
+ rsvg-convert --width 1440 --background-color white /tmp/chart.svg -o docs/chart-paper.png
210
+ ```
211
+
212
+ Available preview variants: `horizontal`, `paper`, `none`, `styles`, and `dark`.
144
213
 
145
214
  ## License
146
215
 
package/ROADMAP.md CHANGED
@@ -21,6 +21,13 @@ Exit criteria: a consumer can install `@leracherry/chartmd` and
21
21
  `react-markdown`, paste the README example, and render a chart without
22
22
  configuration or another charting library.
23
23
 
24
+ ## 0.2 — Document presentation (implemented)
25
+
26
+ - Six consistent line and marker styles with wrapping legends.
27
+ - Transparent, horizontal-grid, and optional paper-grid presentation.
28
+ - Readable tick intervals, exact accessible values, and locale/number formatting.
29
+ - Rendered documentation images for default, paper, no-grid, dark, and six-series views.
30
+
24
31
  ## Milestone 2 — Markdown ecosystem coverage
25
32
 
26
33
  - Compatibility fixtures for Unified/Remark pipelines beyond `react-markdown`.
@@ -34,7 +41,7 @@ Remark-based React rendering paths.
34
41
  ## Milestone 3 — Custom rendering without theme drift
35
42
 
36
43
  - Component overrides for marks, labels, legends, and tooltips.
37
- - Locale-aware number formatting.
44
+ - Additional formatting hooks for Markdown integrations.
38
45
  - Explicit colour opt-in for teams that need multi-colour series, while keeping
39
46
  one-colour inheritance as the default.
40
47
  - Visual regression suite for light, dark, narrow, and high-contrast layouts.
package/dist/chart.d.ts CHANGED
@@ -1,15 +1,42 @@
1
1
  import { type HTMLAttributes, type SVGProps } from 'react';
2
2
  import type { ChartDefinition } from './types.js';
3
+ export declare const lineStyles: readonly [{
4
+ readonly name: "Solid · circle";
5
+ readonly dash: "";
6
+ readonly shape: "circle";
7
+ }, {
8
+ readonly name: "Dashed · square";
9
+ readonly dash: "7 4";
10
+ readonly shape: "square";
11
+ }, {
12
+ readonly name: "Dotted · diamond";
13
+ readonly dash: "1 4";
14
+ readonly shape: "diamond";
15
+ }, {
16
+ readonly name: "Dash-dot · triangle";
17
+ readonly dash: "8 4 1 4";
18
+ readonly shape: "triangle";
19
+ }, {
20
+ readonly name: "Long dash · plus";
21
+ readonly dash: "12 5";
22
+ readonly shape: "plus";
23
+ }, {
24
+ readonly name: "Short dash · cross";
25
+ readonly dash: "3 3";
26
+ readonly shape: "cross";
27
+ }];
3
28
  export interface ChartProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {
4
29
  definition?: ChartDefinition;
5
30
  'data-chart'?: string;
31
+ locale?: string;
32
+ numberFormat?: Intl.NumberFormatOptions;
6
33
  }
7
- export declare function Chart({ definition: suppliedDefinition, 'data-chart': serializedDefinition, className, style, ...svgProps }: ChartProps): import("react/jsx-runtime").JSX.Element;
34
+ export declare function Chart({ definition: supplied, 'data-chart': serialized, locale, numberFormat, className, style, ...props }: ChartProps): import("react/jsx-runtime").JSX.Element;
8
35
  interface ChartContainerProps extends HTMLAttributes<HTMLDivElement> {
9
36
  node?: unknown;
10
37
  'data-chart'?: string;
11
38
  }
12
- declare function ChartContainer({ node, 'data-chart': serializedDefinition, children, ...props }: ChartContainerProps): import("react/jsx-runtime").JSX.Element;
39
+ declare function ChartContainer({ node, 'data-chart': serialized, children, ...props }: ChartContainerProps): import("react/jsx-runtime").JSX.Element;
13
40
  export declare const chartComponents: {
14
41
  div: typeof ChartContainer;
15
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,QAAQ,EACd,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AASlD,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3E,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAwBD,wBAAgB,KAAK,CAAC,EACpB,UAAU,EAAE,kBAAkB,EAC9B,YAAY,EAAE,oBAAoB,EAClC,SAAS,EACT,KAAK,EACL,GAAG,QAAQ,EACZ,EAAE,UAAU,2CA+MZ;AA+BD,UAAU,mBAAoB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAClE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,iBAAS,cAAc,CAAC,EACtB,IAAI,EACJ,YAAY,EAAE,oBAAoB,EAClC,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,mBAAmB,2CAMrB;AAED,eAAO,MAAM,eAAe;;CAE3B,CAAC"}
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;EAOb,CAAC;AACX,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3E,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;CACzC;AA6DD,wBAAgB,KAAK,CAAC,EACpB,UAAU,EAAE,QAAQ,EACpB,YAAY,EAAE,UAAU,EACxB,MAAa,EACb,YAAY,EACZ,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,UAAU,2CA+OZ;AACD,UAAU,mBAAoB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAClE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,iBAAS,cAAc,CAAC,EACtB,IAAI,EACJ,YAAY,EAAE,UAAU,EACxB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,mBAAmB,2CAOrB;AACD,eAAO,MAAM,eAAe;;CAA0B,CAAC"}
package/dist/chart.js CHANGED
@@ -1,116 +1,97 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useId, } from 'react';
3
- const width = 720;
4
- const height = 420;
5
- const margin = { top: 54, right: 24, bottom: 76, left: 72 };
6
- const plotWidth = width - margin.left - margin.right;
7
- const plotHeight = height - margin.top - margin.bottom;
8
- const dashPatterns = ['', '8 5', '2 4', '10 4 2 4', '1 4'];
9
- function formatNumber(value) {
10
- return new Intl.NumberFormat('en', {
11
- maximumFractionDigits: 2,
12
- notation: Math.abs(value) >= 10_000 ? 'compact' : 'standard',
13
- }).format(value);
14
- }
15
- function getDomain(definition) {
16
- const values = definition.series.flatMap((series) => series.values);
17
- let minimum = Math.min(0, ...values);
18
- let maximum = Math.max(0, ...values);
19
- if (minimum === maximum)
20
- maximum = minimum + 1;
21
- const padding = (maximum - minimum) * 0.08;
22
- if (minimum < 0)
23
- minimum -= padding;
24
- if (maximum > 0)
25
- maximum += padding;
26
- return [minimum, maximum];
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useId } from 'react';
3
+ export const lineStyles = [
4
+ { name: 'Solid · circle', dash: '', shape: 'circle' },
5
+ { name: 'Dashed · square', dash: '7 4', shape: 'square' },
6
+ { name: 'Dotted · diamond', dash: '1 4', shape: 'diamond' },
7
+ { name: 'Dash-dot · triangle', dash: '8 4 1 4', shape: 'triangle' },
8
+ { name: 'Long dash · plus', dash: '12 5', shape: 'plus' },
9
+ { name: 'Short dash · cross', dash: '3 3', shape: 'cross' },
10
+ ];
11
+ function validate(value) {
12
+ if (!value || typeof value !== 'object')
13
+ throw new Error('Invalid chart definition');
14
+ const d = value;
15
+ if (!['bar', 'line'].includes(d.type) ||
16
+ !Array.isArray(d.labels) ||
17
+ !d.labels.length ||
18
+ !d.labels.every((v) => typeof v === 'string') ||
19
+ !Array.isArray(d.series) ||
20
+ !d.series.length ||
21
+ !d.series.every((s) => s &&
22
+ typeof s.name === 'string' &&
23
+ Array.isArray(s.values) &&
24
+ s.values.length === d.labels.length &&
25
+ s.values.every((v) => Number.isFinite(v) &&
26
+ Math.abs(v) <= 1e12 &&
27
+ (v === 0 || Math.abs(v) >= 1e-12))) ||
28
+ [d.title, d.x, d.y].some((v) => v !== undefined && typeof v !== 'string') ||
29
+ (d.grid !== undefined && !['horizontal', 'paper', 'none'].includes(d.grid)))
30
+ throw new Error('Invalid chart definition');
27
31
  }
28
- function seriesOpacity(index) {
29
- return Math.max(0.38, 0.94 - index * 0.14);
32
+ function Marker({ index, x, y }) {
33
+ const shape = lineStyles[index % 6].shape;
34
+ return (_jsxs("g", { transform: `translate(${x} ${y})`, className: "chartmd__marker", "data-marker": shape, children: [shape === 'circle' && _jsx("circle", { r: "3" }), shape === 'square' && _jsx("rect", { x: "-3", y: "-3", width: "6", height: "6" }), shape === 'diamond' && _jsx("path", { d: "M0 -4 4 0 0 4 -4 0Z" }), shape === 'triangle' && _jsx("path", { d: "M0 -4 4 3 -4 3Z" }), shape === 'plus' && (_jsx("path", { d: "M-4 0H4M0 -4V4", fill: "none", stroke: "currentColor", strokeWidth: "1.5" })), shape === 'cross' && (_jsx("path", { d: "M-3 -3 3 3M-3 3 3 -3", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }))] }));
30
35
  }
31
- export function Chart({ definition: suppliedDefinition, 'data-chart': serializedDefinition, className, style, ...svgProps }) {
32
- const definition = suppliedDefinition ?? parseSerialized(serializedDefinition);
33
- const titleId = `chartmd-title-${useId().replaceAll(':', '')}`;
34
- const descriptionId = `${titleId}-description`;
35
- const [minimum, maximum] = getDomain(definition);
36
- const y = (value) => {
37
- return margin.top + ((maximum - value) / (maximum - minimum)) * plotHeight;
38
- };
39
- const zeroY = y(0);
40
- const categoryWidth = plotWidth / definition.labels.length;
41
- const title = definition.title ?? `${definition.type === 'bar' ? 'Bar' : 'Line'} chart`;
42
- const description = definition.series
43
- .map((series) => {
44
- const values = definition.labels.map((label, index) => `${label}: ${formatNumber(series.values[index] ?? 0)}`);
45
- return `${series.name}. ${values.join(', ')}`;
46
- })
47
- .join('. ');
48
- const mergedStyle = {
49
- color: 'var(--chartmd-color, currentColor)',
50
- ...style,
36
+ export function Chart({ definition: supplied, 'data-chart': serialized, locale = 'en', numberFormat, className, style, ...props }) {
37
+ const definition = supplied ?? JSON.parse(serialized ?? 'null');
38
+ validate(definition);
39
+ const d = definition;
40
+ const id = `chartmd-${useId().replaceAll(':', '')}`;
41
+ const formatter = new Intl.NumberFormat(locale, {
42
+ maximumFractionDigits: 2,
43
+ ...numberFormat,
44
+ });
45
+ const format = (v) => {
46
+ if (!numberFormat && v !== 0 && Math.abs(v) < 0.01) {
47
+ return new Intl.NumberFormat(locale, {
48
+ notation: 'scientific',
49
+ maximumFractionDigits: 2,
50
+ }).format(v);
51
+ }
52
+ return formatter.format(Object.is(v, -0) ? 0 : v);
51
53
  };
52
- return (_jsxs("svg", { ...svgProps, className: ['chartmd', className].filter(Boolean).join(' '), style: mergedStyle, viewBox: `0 0 ${width} ${height}`, role: "img", "aria-labelledby": `${titleId} ${descriptionId}`, xmlns: "http://www.w3.org/2000/svg", children: [_jsx("title", { id: titleId, children: title }), _jsx("desc", { id: descriptionId, children: description }), definition.title && (_jsx("text", { className: "chartmd__title", x: margin.left, y: 25, fontSize: 20, children: definition.title })), Array.from({ length: 5 }, (_, index) => {
53
- const value = minimum + ((maximum - minimum) * index) / 4;
54
- const gridY = y(value);
55
- return (_jsxs("g", { children: [_jsx("line", { className: "chartmd__grid", x1: margin.left, x2: width - margin.right, y1: gridY, y2: gridY, stroke: "currentColor" }), _jsx("text", { className: "chartmd__label", x: margin.left - 10, y: gridY + 4, textAnchor: "end", fontSize: 12, children: formatNumber(value) })] }, index));
56
- }), _jsx("line", { className: "chartmd__axis", x1: margin.left, x2: width - margin.right, y1: zeroY, y2: zeroY, stroke: "currentColor" }), definition.type === 'bar'
57
- ? definition.labels.flatMap((label, labelIndex) => {
58
- const groupWidth = categoryWidth * 0.72;
59
- const barWidth = groupWidth / definition.series.length;
60
- const groupX = margin.left + labelIndex * categoryWidth + categoryWidth * 0.14;
61
- return definition.series.map((series, seriesIndex) => {
62
- const value = series.values[labelIndex] ?? 0;
63
- const valueY = y(value);
64
- return (_jsx("rect", { x: groupX + seriesIndex * barWidth + 1, y: Math.min(zeroY, valueY), width: Math.max(1, barWidth - 2), height: Math.max(1, Math.abs(zeroY - valueY)), fill: "currentColor", opacity: seriesOpacity(seriesIndex), rx: 2, children: _jsx("title", { children: `${label}, ${series.name}: ${formatNumber(value)}` }) }, `${label}-${series.name}`));
65
- });
66
- })
67
- : definition.series.map((series, seriesIndex) => {
68
- const points = series.values
69
- .map((value, index) => {
70
- const x = margin.left + categoryWidth * (index + 0.5);
71
- return `${x},${y(value)}`;
72
- })
73
- .join(' ');
74
- return (_jsxs("g", { opacity: seriesOpacity(seriesIndex), children: [_jsx("polyline", { points: points, fill: "none", stroke: "currentColor", strokeWidth: 3, strokeLinejoin: "round", strokeLinecap: "round", strokeDasharray: dashPatterns[seriesIndex % dashPatterns.length] }), series.values.map((value, index) => {
75
- const label = definition.labels[index] ?? '';
76
- return (_jsx("circle", { cx: margin.left + categoryWidth * (index + 0.5), cy: y(value), r: 4, fill: "currentColor", children: _jsx("title", { children: `${label}, ${series.name}: ${formatNumber(value)}` }) }, label));
77
- })] }, series.name));
78
- }), definition.labels.map((label, index) => (_jsxs("text", { className: "chartmd__label", x: margin.left + categoryWidth * (index + 0.5), y: height - margin.bottom + 22, textAnchor: "middle", fontSize: 12, children: [label.length > 14 ? `${label.slice(0, 13)}…` : label, _jsx("title", { children: label })] }, label))), definition.x && (_jsx("text", { className: "chartmd__label", x: margin.left + plotWidth / 2, y: height - 12, textAnchor: "middle", fontSize: 13, children: definition.x })), definition.y && (_jsx("text", { className: "chartmd__label", transform: `translate(16 ${margin.top + plotHeight / 2}) rotate(-90)`, textAnchor: "middle", fontSize: 13, children: definition.y })), definition.series.length > 1 &&
79
- definition.series.map((series, index) => (_jsxs("g", { transform: `translate(${margin.left + index * 130} ${height - 34})`, opacity: seriesOpacity(index), children: [definition.type === 'bar' ? (_jsx("rect", { width: 16, height: 10, y: -9, rx: 2, fill: "currentColor" })) : (_jsx("line", { x1: 0, x2: 18, y1: -4, y2: -4, stroke: "currentColor", strokeWidth: 3, strokeDasharray: dashPatterns[index % dashPatterns.length] })), _jsx("text", { className: "chartmd__legend", x: 24, fontSize: 12, children: series.name })] }, series.name)))] }));
80
- }
81
- function parseSerialized(value) {
82
- if (!value)
83
- throw new Error('Chart requires a definition');
84
- const parsed = JSON.parse(value);
85
- if (!isChartDefinition(parsed)) {
86
- throw new Error('Chart received an invalid definition');
87
- }
88
- return parsed;
89
- }
90
- function isChartDefinition(value) {
91
- if (!value || typeof value !== 'object')
92
- return false;
93
- const candidate = value;
94
- return ((candidate.type === 'bar' || candidate.type === 'line') &&
95
- Array.isArray(candidate.labels) &&
96
- candidate.labels.every((label) => typeof label === 'string') &&
97
- Array.isArray(candidate.series) &&
98
- candidate.series.length > 0 &&
99
- candidate.series.every((series) => {
100
- return (typeof series?.name === 'string' &&
101
- Array.isArray(series.values) &&
102
- series.values.length === candidate.labels?.length &&
103
- series.values.every(Number.isFinite));
104
- }));
54
+ let low = 0;
55
+ let high = 0;
56
+ for (const s of d.series)
57
+ for (const v of s.values) {
58
+ low = Math.min(low, v);
59
+ high = Math.max(high, v);
60
+ }
61
+ const rough = (high - low || 1) / 5;
62
+ const power = 10 ** Math.floor(Math.log10(rough));
63
+ const step = ([1, 2, 5, 10].find((n) => n * power >= rough) ?? 10) * power;
64
+ low = Math.floor(low / step) * step;
65
+ high = Math.ceil(high / step) * step;
66
+ if (high === low)
67
+ high = low + step;
68
+ const ticks = Array.from({ length: Math.round((high - low) / step) + 1 }, (_, i) => low + i * step);
69
+ const width = 720;
70
+ const left = Math.max(72, Math.min(200, Math.max(...ticks.map((v) => format(v).length)) * 7 + 28));
71
+ const top = d.title ? 52 : 24;
72
+ const bottom = 300;
73
+ const plotWidth = width - left - 24;
74
+ const category = plotWidth / d.labels.length;
75
+ const x = (i) => left + category * (i + 0.5);
76
+ const y = (v) => bottom - ((v - low) / (high - low)) * (bottom - top);
77
+ const legendTop = bottom + (d.x ? 70 : 48);
78
+ const height = legendTop +
79
+ (d.series.length > 1 ? Math.ceil(d.series.length / 3) * 26 : 0) +
80
+ 14;
81
+ const title = d.title ?? `${d.type === 'line' ? 'Line' : 'Bar'} chart`;
82
+ const shorten = (v, length) => v.length > length ? `${v.slice(0, length - 1)}…` : v;
83
+ const stride = Math.max(1, Math.ceil(d.labels.length / 8));
84
+ return (_jsxs("svg", { ...props, className: ['chartmd', className].filter(Boolean).join(' '), style: style, viewBox: `0 0 ${width} ${height}`, role: "img", "aria-labelledby": `${id}-title ${id}-desc`, xmlns: "http://www.w3.org/2000/svg", children: [_jsx("title", { id: `${id}-title`, children: title }), _jsx("desc", { id: `${id}-desc`, children: d.series
85
+ .map((s) => `${s.name}. ${d.labels.map((label, i) => `${label}: ${s.values[i]}`).join(', ')}`)
86
+ .join('. ') }), _jsx("defs", { children: _jsx("pattern", { id: `${id}-paper`, width: "16", height: "16", patternUnits: "userSpaceOnUse", x: left, y: top, children: _jsx("path", { d: "M16 0H0V16", fill: "none", stroke: "currentColor", strokeWidth: "0.5" }) }) }), d.title && (_jsxs("text", { className: "chartmd__title", x: left, y: "24", children: [shorten(d.title, 65), _jsx("title", { children: d.title })] })), d.grid === 'paper' && (_jsx("rect", { className: "chartmd__paper", x: left, y: top, width: plotWidth, height: bottom - top, fill: `url(#${id}-paper)` })), ticks.map((value, i) => (_jsxs("g", { children: [d.grid !== 'none' && (_jsx("line", { className: "chartmd__grid", x1: left, x2: width - 24, y1: y(value), y2: y(value) })), _jsx("text", { className: "chartmd__label chartmd__number", x: left - 10, y: y(value) + 4, textAnchor: "end", children: format(value) })] }, i))), _jsx("line", { className: "chartmd__axis", x1: left, x2: width - 24, y1: y(0), y2: y(0) }), d.series.map((s, si) => (_jsx("g", { children: d.type === 'line' ? (_jsxs(_Fragment, { children: [_jsx("polyline", { className: "chartmd__line", points: s.values.map((v, i) => `${x(i)},${y(v)}`).join(' '), strokeDasharray: lineStyles[si % 6].dash }), s.values.map((v, i) => (_jsxs("g", { children: [_jsx("title", { children: `${d.labels[i]}, ${s.name}: ${format(v)}` }), _jsx(Marker, { index: si, x: x(i), y: y(v) })] }, i)))] })) : (s.values.map((v, i) => {
87
+ const bw = (category * 0.72) / d.series.length;
88
+ return (_jsx("rect", { x: left + category * i + category * 0.14 + bw * si, y: Math.min(y(v), y(0)), width: Math.max(0, bw - 2), height: Math.abs(y(v) - y(0)), fill: "currentColor", opacity: Math.max(0.4, 0.9 - si * 0.1), children: _jsx("title", { children: `${d.labels[i]}, ${s.name}: ${format(v)}` }) }, i));
89
+ })) }, si))), d.labels.map((label, i) => i % stride === 0 && (_jsxs("text", { className: "chartmd__label", x: x(i), y: bottom + 23, textAnchor: "middle", children: [shorten(label, 12), _jsx("title", { children: label })] }, i))), d.x && (_jsx("text", { className: "chartmd__label", x: left + plotWidth / 2, y: bottom + 46, textAnchor: "middle", children: d.x })), d.y && (_jsx("text", { className: "chartmd__label", transform: `translate(16 ${(top + bottom) / 2}) rotate(-90)`, textAnchor: "middle", children: d.y })), d.series.length > 1 &&
90
+ d.series.map((s, si) => (_jsxs("g", { transform: `translate(${left + ((si % 3) * plotWidth) / 3} ${legendTop + Math.floor(si / 3) * 26})`, children: [d.type === 'line' ? (_jsxs(_Fragment, { children: [_jsx("line", { className: "chartmd__line", x1: "0", x2: "28", strokeDasharray: lineStyles[si % 6].dash }), _jsx(Marker, { index: si, x: 14, y: 0 })] })) : (_jsx("rect", { x: "0", y: "-4", width: "24", height: "8", fill: "currentColor", opacity: Math.max(0.4, 0.9 - si * 0.1) })), _jsxs("text", { className: "chartmd__label", x: "38", y: "4", children: [shorten(s.name, 18), _jsx("title", { children: s.name })] })] }, si)))] }));
105
91
  }
106
- function ChartContainer({ node, 'data-chart': serializedDefinition, children, ...props }) {
92
+ function ChartContainer({ node, 'data-chart': serialized, children, ...props }) {
107
93
  void node;
108
- if (serializedDefinition) {
109
- return _jsx(Chart, { "data-chart": serializedDefinition });
110
- }
111
- return _jsx("div", { ...props, children: children });
94
+ return serialized ? (_jsx(Chart, { "data-chart": serialized })) : (_jsx("div", { ...props, children: children }));
112
95
  }
113
- export const chartComponents = {
114
- div: ChartContainer,
115
- };
96
+ export const chartComponents = { div: ChartContainer };
116
97
  //# sourceMappingURL=chart.js.map
package/dist/chart.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { Chart, chartComponents, type ChartProps } from './chart.js';
1
+ export { Chart, chartComponents, lineStyles, type ChartProps, } from './chart.js';
2
2
  export { parseChart } from './parser.js';
3
3
  export { remarkChart } from './remark.js';
4
4
  export { ChartSyntaxError, type ChartDefinition, type ChartSeries, type ChartType, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,eAAe,EACf,UAAU,EACV,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Chart, chartComponents } from './chart.js';
1
+ export { Chart, chartComponents, lineStyles, } from './chart.js';
2
2
  export { parseChart } from './parser.js';
3
3
  export { remarkChart } from './remark.js';
4
4
  export { ChartSyntaxError, } from './types.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAmB,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,gBAAgB,GAIjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,eAAe,EACf,UAAU,GAEX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,gBAAgB,GAIjB,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAiDpB,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA4H1D"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAiDpB,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAoI1D"}
package/dist/parser.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ChartSyntaxError, } from './types.js';
2
- const metadataKeys = new Set(['type', 'title', 'x', 'y']);
2
+ const metadataKeys = new Set(['type', 'title', 'x', 'y', 'grid']);
3
3
  const separatorCell = /^:?-{3,}:?$/;
4
4
  function splitRow(row, line) {
5
5
  const trimmed = row.trim();
@@ -131,6 +131,12 @@ export function parseChart(source) {
131
131
  definition.x = metadata.x;
132
132
  if (metadata.y)
133
133
  definition.y = metadata.y;
134
+ if (metadata.grid) {
135
+ if (!['horizontal', 'paper', 'none'].includes(metadata.grid)) {
136
+ throw new ChartSyntaxError('grid must be “horizontal”, “paper”, or “none”');
137
+ }
138
+ definition.grid = metadata.grid;
139
+ }
134
140
  return definition;
135
141
  }
136
142
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -8,6 +8,7 @@ export interface ChartDefinition {
8
8
  title?: string;
9
9
  x?: string;
10
10
  y?: string;
11
+ grid?: 'horizontal' | 'paper' | 'none';
11
12
  labels: string[];
12
13
  series: ChartSeries[];
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAKvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IAJf,IAAI,SAAsB;gBAGjC,OAAO,EAAE,MAAM,EACN,IAAI,CAAC,EAAE,MAAM,YAAA;CAIzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAKvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IAJf,IAAI,SAAsB;gBAGjC,OAAO,EAAE,MAAM,EACN,IAAI,CAAC,EAAE,MAAM,YAAA;CAIzB"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAK9B;IAJF,IAAI,GAAG,kBAAkB,CAAC;IAEnC,YACE,OAAe,EACN,IAAa;QAEtB,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAFxD,SAAI,GAAJ,IAAI,CAAS;IAGxB,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAK9B;IAJF,IAAI,GAAG,kBAAkB,CAAC;IAEnC,YACE,OAAe,EACN,IAAa;QAEtB,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAFxD,SAAI,GAAJ,IAAI,CAAS;IAGxB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leracherry/chartmd",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Markdown-native charts for React, styled by your Markdown theme.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.17.1",
package/style.css CHANGED
@@ -3,27 +3,44 @@
3
3
  inline-size: 100%;
4
4
  max-inline-size: 100%;
5
5
  block-size: auto;
6
- overflow: visible;
7
6
  color: var(--chartmd-color, currentColor);
8
- font: inherit;
7
+ font-family: inherit;
8
+ background: transparent;
9
+ }
10
+ .chartmd__line {
11
+ fill: none;
12
+ stroke: currentColor;
13
+ stroke-width: var(--chartmd-line-width, 1.75);
14
+ stroke-linejoin: round;
15
+ stroke-linecap: round;
16
+ }
17
+ .chartmd__marker {
18
+ fill: currentColor;
19
+ }
20
+ .chartmd__grid,
21
+ .chartmd__axis {
22
+ stroke: currentColor;
23
+ stroke-width: 0.75;
9
24
  }
10
-
11
25
  .chartmd__grid {
12
- opacity: var(--chartmd-grid-opacity, 0.14);
26
+ opacity: var(--chartmd-grid-opacity, 0.1);
13
27
  }
14
-
15
- .chartmd__axis,
16
- .chartmd__label,
17
- .chartmd__legend,
18
- .chartmd__title {
28
+ .chartmd__axis {
29
+ opacity: 0.35;
30
+ }
31
+ .chartmd__paper {
32
+ opacity: var(--chartmd-paper-opacity, 0.07);
33
+ }
34
+ .chartmd__label {
19
35
  fill: currentColor;
36
+ opacity: var(--chartmd-muted-opacity, 0.8);
37
+ font-size: 12px;
20
38
  }
21
-
22
- .chartmd__label,
23
- .chartmd__legend {
24
- opacity: var(--chartmd-muted-opacity, 0.68);
39
+ .chartmd__number {
40
+ font-variant-numeric: tabular-nums;
25
41
  }
26
-
27
42
  .chartmd__title {
28
- font-weight: 600;
43
+ fill: currentColor;
44
+ font-size: 17px;
45
+ font-weight: 500;
29
46
  }