@cascivo/mcp 0.1.8 → 0.3.3

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.
Files changed (205) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +53 -22
  3. package/dist/context/accordion.md +93 -0
  4. package/dist/context/action-sheet.md +117 -0
  5. package/dist/context/alert-dialog.md +122 -0
  6. package/dist/context/alert.md +110 -0
  7. package/dist/context/app-shell.md +98 -0
  8. package/dist/context/aspect-ratio.md +92 -0
  9. package/dist/context/avatar-group.md +111 -0
  10. package/dist/context/avatar.md +100 -0
  11. package/dist/context/badge.md +119 -0
  12. package/dist/context/block/console-app.md +66 -0
  13. package/dist/context/block/dashboard-charts.md +61 -0
  14. package/dist/context/block/empty-dashboard.md +60 -0
  15. package/dist/context/block/login-page.md +60 -0
  16. package/dist/context/block/notification-center.md +61 -0
  17. package/dist/context/block/page-with-breadcrumb.md +54 -0
  18. package/dist/context/block/settings-form-page.md +60 -0
  19. package/dist/context/block/sidebar-app.md +55 -0
  20. package/dist/context/block/stats-cards.md +61 -0
  21. package/dist/context/block/users-table-page.md +61 -0
  22. package/dist/context/blockquote.md +95 -0
  23. package/dist/context/bottom-sheet.md +112 -0
  24. package/dist/context/breadcrumb.md +106 -0
  25. package/dist/context/button-group.md +100 -0
  26. package/dist/context/button.md +117 -0
  27. package/dist/context/calendar.md +118 -0
  28. package/dist/context/card.md +90 -0
  29. package/dist/context/carousel.md +101 -0
  30. package/dist/context/chart/area-chart.md +99 -0
  31. package/dist/context/chart/bar-chart.md +114 -0
  32. package/dist/context/chart/boxplot.md +82 -0
  33. package/dist/context/chart/bubble-chart.md +80 -0
  34. package/dist/context/chart/bullet.md +75 -0
  35. package/dist/context/chart/calendar.md +79 -0
  36. package/dist/context/chart/candlestick.md +104 -0
  37. package/dist/context/chart/combo-chart.md +78 -0
  38. package/dist/context/chart/funnel.md +87 -0
  39. package/dist/context/chart/gauge.md +87 -0
  40. package/dist/context/chart/heatmap.md +77 -0
  41. package/dist/context/chart/histogram.md +74 -0
  42. package/dist/context/chart/kpi.md +70 -0
  43. package/dist/context/chart/line-chart.md +113 -0
  44. package/dist/context/chart/meter.md +71 -0
  45. package/dist/context/chart/pie-chart.md +126 -0
  46. package/dist/context/chart/polar.md +92 -0
  47. package/dist/context/chart/radar.md +81 -0
  48. package/dist/context/chart/radial-bar.md +96 -0
  49. package/dist/context/chart/sankey.md +89 -0
  50. package/dist/context/chart/scatter-chart.md +90 -0
  51. package/dist/context/chart/sparkline.md +69 -0
  52. package/dist/context/chart/stream.md +88 -0
  53. package/dist/context/chart/sunburst.md +93 -0
  54. package/dist/context/chart/treemap.md +84 -0
  55. package/dist/context/chat-bubble.md +116 -0
  56. package/dist/context/checkbox-card.md +104 -0
  57. package/dist/context/checkbox.md +104 -0
  58. package/dist/context/code-snippet.md +118 -0
  59. package/dist/context/code.md +103 -0
  60. package/dist/context/collapsible.md +104 -0
  61. package/dist/context/color-picker.md +101 -0
  62. package/dist/context/combobox.md +125 -0
  63. package/dist/context/command-menu.md +121 -0
  64. package/dist/context/comparison.md +117 -0
  65. package/dist/context/contained-list.md +103 -0
  66. package/dist/context/context-menu.md +103 -0
  67. package/dist/context/copy-button.md +106 -0
  68. package/dist/context/data-list.md +99 -0
  69. package/dist/context/data-table.md +149 -0
  70. package/dist/context/date-picker.md +116 -0
  71. package/dist/context/date-range-picker.md +113 -0
  72. package/dist/context/dock.md +117 -0
  73. package/dist/context/drawer.md +111 -0
  74. package/dist/context/dropdown.md +96 -0
  75. package/dist/context/editable.md +101 -0
  76. package/dist/context/editor/code-editor.md +146 -0
  77. package/dist/context/editor/highlight.md +74 -0
  78. package/dist/context/empty-state.md +101 -0
  79. package/dist/context/fab.md +128 -0
  80. package/dist/context/field.md +118 -0
  81. package/dist/context/file-uploader.md +121 -0
  82. package/dist/context/filter.md +129 -0
  83. package/dist/context/flow/flow-background.md +103 -0
  84. package/dist/context/flow/flow-canvas.md +82 -0
  85. package/dist/context/flow/flow-controls.md +84 -0
  86. package/dist/context/flow/flow-edge.md +128 -0
  87. package/dist/context/flow/flow-handle.md +83 -0
  88. package/dist/context/flow/flow-minimap.md +89 -0
  89. package/dist/context/flow/flow-node.md +97 -0
  90. package/dist/context/flow/flow-panel.md +75 -0
  91. package/dist/context/flow/flow-story.md +145 -0
  92. package/dist/context/flow/flow.md +139 -0
  93. package/dist/context/form.md +104 -0
  94. package/dist/context/header-panel.md +96 -0
  95. package/dist/context/header.md +104 -0
  96. package/dist/context/heading.md +107 -0
  97. package/dist/context/hover-card.md +108 -0
  98. package/dist/context/icon-button.md +115 -0
  99. package/dist/context/image.md +115 -0
  100. package/dist/context/indicator.md +95 -0
  101. package/dist/context/inline-loading.md +101 -0
  102. package/dist/context/input-group.md +122 -0
  103. package/dist/context/input.md +101 -0
  104. package/dist/context/item.md +109 -0
  105. package/dist/context/join.md +97 -0
  106. package/dist/context/kbd.md +100 -0
  107. package/dist/context/label.md +117 -0
  108. package/dist/context/layout/app-shell.md +85 -0
  109. package/dist/context/layout/auth-layout.md +74 -0
  110. package/dist/context/layout/auto-grid.md +69 -0
  111. package/dist/context/layout/center.md +67 -0
  112. package/dist/context/layout/columns.md +70 -0
  113. package/dist/context/layout/dashboard-layout.md +68 -0
  114. package/dist/context/layout/grid.md +70 -0
  115. package/dist/context/layout/masonry.md +70 -0
  116. package/dist/context/layout/page-header.md +75 -0
  117. package/dist/context/layout/section.md +69 -0
  118. package/dist/context/layout/settings-layout.md +68 -0
  119. package/dist/context/layout/spacer.md +64 -0
  120. package/dist/context/layout/split-view.md +71 -0
  121. package/dist/context/layout/stack.md +93 -0
  122. package/dist/context/link.md +112 -0
  123. package/dist/context/list.md +109 -0
  124. package/dist/context/log-viewer.md +124 -0
  125. package/dist/context/menu-button.md +137 -0
  126. package/dist/context/menu.md +108 -0
  127. package/dist/context/menubar.md +92 -0
  128. package/dist/context/modal.md +96 -0
  129. package/dist/context/multi-select.md +104 -0
  130. package/dist/context/native-select.md +118 -0
  131. package/dist/context/navigation-menu.md +95 -0
  132. package/dist/context/notification.md +116 -0
  133. package/dist/context/number-input.md +117 -0
  134. package/dist/context/otp-input.md +98 -0
  135. package/dist/context/overflow-menu.md +107 -0
  136. package/dist/context/pagination.md +123 -0
  137. package/dist/context/password-input.md +100 -0
  138. package/dist/context/popover.md +108 -0
  139. package/dist/context/progress-bar.md +107 -0
  140. package/dist/context/progress-circle.md +101 -0
  141. package/dist/context/progress-indicator.md +105 -0
  142. package/dist/context/progress.md +109 -0
  143. package/dist/context/prose.md +110 -0
  144. package/dist/context/pull-to-refresh.md +101 -0
  145. package/dist/context/qr-code.md +101 -0
  146. package/dist/context/radial-progress.md +117 -0
  147. package/dist/context/radio-card.md +95 -0
  148. package/dist/context/radio.md +94 -0
  149. package/dist/context/rating-group.md +97 -0
  150. package/dist/context/relative-time.md +90 -0
  151. package/dist/context/resizable.md +102 -0
  152. package/dist/context/scroll-area.md +101 -0
  153. package/dist/context/search.md +113 -0
  154. package/dist/context/section/cta.md +83 -0
  155. package/dist/context/section/feature-grid.md +98 -0
  156. package/dist/context/section/hero.md +101 -0
  157. package/dist/context/section/media-masonry.md +77 -0
  158. package/dist/context/section/page-footer.md +101 -0
  159. package/dist/context/section/stats-band.md +81 -0
  160. package/dist/context/segmented-control.md +101 -0
  161. package/dist/context/select.md +101 -0
  162. package/dist/context/separator.md +88 -0
  163. package/dist/context/sheet.md +100 -0
  164. package/dist/context/shell-header.md +105 -0
  165. package/dist/context/side-nav.md +134 -0
  166. package/dist/context/skeleton.md +101 -0
  167. package/dist/context/skip-nav.md +103 -0
  168. package/dist/context/slider.md +98 -0
  169. package/dist/context/spinner.md +89 -0
  170. package/dist/context/stack.md +96 -0
  171. package/dist/context/stat.md +101 -0
  172. package/dist/context/status.md +105 -0
  173. package/dist/context/steps.md +124 -0
  174. package/dist/context/structured-list.md +107 -0
  175. package/dist/context/swap.md +100 -0
  176. package/dist/context/swipe-item.md +110 -0
  177. package/dist/context/switcher.md +97 -0
  178. package/dist/context/tabs.md +93 -0
  179. package/dist/context/tag.md +110 -0
  180. package/dist/context/tags-input.md +94 -0
  181. package/dist/context/text.md +111 -0
  182. package/dist/context/textarea.md +98 -0
  183. package/dist/context/tile.md +116 -0
  184. package/dist/context/time-picker.md +102 -0
  185. package/dist/context/timeline.md +93 -0
  186. package/dist/context/toast.md +91 -0
  187. package/dist/context/toc.md +110 -0
  188. package/dist/context/toggle-group.md +118 -0
  189. package/dist/context/toggle.md +103 -0
  190. package/dist/context/toggletip.md +119 -0
  191. package/dist/context/tooltip.md +92 -0
  192. package/dist/context/tree-view.md +107 -0
  193. package/dist/context/user.md +100 -0
  194. package/dist/context/visually-hidden.md +90 -0
  195. package/dist/context.json +22456 -0
  196. package/dist/index.d.mts +5 -2
  197. package/dist/index.d.mts.map +1 -1
  198. package/dist/index.mjs +374 -64
  199. package/dist/index.mjs.map +1 -1
  200. package/dist/marketplace.json +70 -0
  201. package/dist/registry.json +5622 -786
  202. package/dist/tokens.catalog.json +2375 -0
  203. package/dist/tokens.variants.json +3291 -0
  204. package/package.json +4 -3
  205. package/readme.body.md +53 -22
@@ -0,0 +1,114 @@
1
+ # BarChart
2
+
3
+ **Category:** chart
4
+ **Description:** Bar chart with vertical/horizontal orientation, grouped or stacked modes, and multi-series support.
5
+
6
+ ## When to use
7
+
8
+ - Comparing discrete categorical values across groups
9
+ - Showing grouped or stacked multi-series data per category
10
+
11
+ ## When NOT to use
12
+
13
+ - Showing trends over continuous time — use LineChart
14
+ - Part-of-whole proportions — use PieChart for ≤5 categories
15
+
16
+ ## Related components
17
+
18
+ - **LineChart** (alternative): Use for trends over continuous time
19
+ - **Histogram** (alternative): Use to show the distribution of a continuous variable
20
+
21
+ ## Accessibility rationale
22
+
23
+ Renders with role="img" and requires a title prop for screen reader labeling.
24
+
25
+ ## Props
26
+
27
+ | Name | Type | Required | Default | Description |
28
+ | --------------- | ------------------------------------------------------------------ | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- |
29
+ | `series` | `BarChartSeries<Datum>[]` | Yes | — | Series array. Each series accepts an optional `color` (any CSS color) overriding the positional palette for that series/stacked layer. |
30
+ | `x` | `(d: Datum) => string` | Yes | — | Accessor returning the category label for a datum. |
31
+ | `y` | `(d: Datum) => number` | Yes | — | Accessor returning the numeric value for a datum. |
32
+ | `title` | `string` | Yes | — | Title text for the component. |
33
+ | `description` | `string` | No | — | Supporting description text. |
34
+ | `orientation` | `'vertical' \| 'horizontal'` | No | vertical | Layout orientation of the component. |
35
+ | `mode` | `'grouped' \| 'stacked' \| 'percent'` | No | grouped | 'percent' stacks each category and normalizes it to 100%. |
36
+ | `width` | `number` | No | — | Width of the component. |
37
+ | `height` | `number` | No | 300 | Height of the component. |
38
+ | `xTicks` | `number` | No | — | Approximate number of ticks on the x-axis. |
39
+ | `yTicks` | `number` | No | 5 | Approximate number of ticks on the y-axis. |
40
+ | `xLabelEvery` | `number` | No | — | Show every Nth category label (always the last) to thin a crowded x-axis. |
41
+ | `legend` | `boolean` | No | — | Whether to show the legend. |
42
+ | `tooltip` | `boolean` | No | — | Whether to show tooltips on hover. |
43
+ | `tooltipFormat` | `(p: ChartPoint) => string` | No | — | Custom tooltip formatter. The stacked default lists "label · total" + each non-zero layer in its color. |
44
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
45
+ | `plain` | `boolean` | No | false | Marks only — no axes, grid lines, or legend. For micro/inline charts. |
46
+ | `annotations` | `Annotation[]` | No | — | Reference lines, shaded bands, and markers drawn over the plot (e.g. a target/threshold line). |
47
+ | `labels` | `boolean \| { format?: (v: number) => string; position?: string }` | No | — | Print each value as a label on the mark (collision-aware, decorative/aria-hidden). |
48
+ | `onSelect` | `(point: ChartPoint) => void` | No | — | Fired when a point is clicked or activated (Enter/Space) — for drill-down. |
49
+ | `fill` | `'solid' \| 'gradient' \| 'pattern'` | No | solid | Bar fill style — solid, a gradient, or a pattern. |
50
+ | `patternKind` | `'dots' \| 'lines' \| 'cross'` | No | — | Pattern motif when fill="pattern". |
51
+
52
+ ## Tokens
53
+
54
+ - `--cascivo-chart-1`
55
+ - `--cascivo-chart-2`
56
+ - `--cascivo-chart-3`
57
+ - `--cascivo-chart-4`
58
+ - `--cascivo-chart-5`
59
+ - `--cascivo-chart-6`
60
+ - `--cascivo-chart-7`
61
+ - `--cascivo-chart-8`
62
+
63
+ ## Examples
64
+
65
+ ### Basic bar chart
66
+
67
+ ```jsx
68
+ import { BarChart } from '@cascivo/charts'
69
+
70
+ const series = [{ id: 'a', label: 'Sales', data: [{x:'Jan',y:100},{x:'Feb',y:150}] }]
71
+ <BarChart series={series} x={d => d.x} y={d => d.y} title="Sales" />
72
+ ```
73
+
74
+ ### Stacked bar from row-oriented data
75
+
76
+ ```jsx
77
+ import { BarChart, toStackedSeries } from '@cascivo/charts'
78
+
79
+ // Pivot { label, segments[] } rows into series + x/y. Per-segment color is preserved.
80
+ const rows = [
81
+ { label: 'Mon', segments: [
82
+ { key: 'Done', value: 5, color: 'var(--cascivo-color-success)' },
83
+ { key: 'Blocked', value: 2, color: 'var(--cascivo-color-destructive)' },
84
+ ] },
85
+ { label: 'Tue', segments: [
86
+ { key: 'Done', value: 8, color: 'var(--cascivo-color-success)' },
87
+ { key: 'Blocked', value: 1, color: 'var(--cascivo-color-destructive)' },
88
+ ] },
89
+ ]
90
+ // Tooltip shows "Mon · 7" then each non-zero layer in its color.
91
+ <BarChart mode="stacked" tooltip {...toStackedSeries(rows)} title="Throughput" />
92
+ ```
93
+
94
+ ## AI context prompt
95
+
96
+ Copy this into an LLM context bar before editing this component:
97
+
98
+ ```text
99
+ I am modifying the cascivo BarChart component (chart). Bar chart with vertical/horizontal orientation, grouped or stacked modes, and multi-series support.
100
+
101
+ Architecture constraints — follow exactly:
102
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
103
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
104
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
105
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
106
+ - CSS logical properties only (RTL-safe).
107
+
108
+ BarChart is strictly bound to these tokens — use only these, do not invent token names:
109
+ --cascivo-chart-1, --cascivo-chart-2, --cascivo-chart-3, --cascivo-chart-4, --cascivo-chart-5, --cascivo-chart-6, --cascivo-chart-7, --cascivo-chart-8
110
+
111
+ Accessibility: role "img", WCAG 2.1-AA. Keep it AA.
112
+
113
+ Do not invent props, tokens, or global viewport media queries.
114
+ ```
@@ -0,0 +1,82 @@
1
+ # Boxplot
2
+
3
+ **Category:** chart
4
+ **Description:** Box-and-whisker plot with five-number summary and outlier dots per series.
5
+
6
+ ## When to use
7
+
8
+ - Comparing the distribution spread, median, and quartiles across groups
9
+ - Surfacing outliers and skew in statistical data
10
+
11
+ ## When NOT to use
12
+
13
+ - Showing the full shape of a single distribution — use Histogram
14
+ - Comparing single aggregate values — use BarChart
15
+
16
+ ## Related components
17
+
18
+ - **Histogram** (alternative): Use to show the full frequency shape of one distribution
19
+ - **BarChart** (alternative): Use when only aggregate values matter, not spread
20
+
21
+ ## Accessibility rationale
22
+
23
+ Renders with role="img" and requires a title prop for screen reader labeling.
24
+
25
+ ## Props
26
+
27
+ | Name | Type | Required | Default | Description |
28
+ | ------------- | --------------------------------------------------- | -------- | ------- | --------------------------------------------------------------------- |
29
+ | `series` | `{ id: string; label: string; values: number[] }[]` | Yes | — | Array of series each with raw numeric values |
30
+ | `title` | `string` | Yes | — | Title text for the component. |
31
+ | `description` | `string` | No | — | Supporting description text. |
32
+ | `width` | `number` | No | — | Width of the component. |
33
+ | `height` | `number` | No | 320 | Height of the component. |
34
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
35
+ | `plain` | `boolean` | No | false | Marks only — no axes, grid lines, or legend. For micro/inline charts. |
36
+
37
+ ## Tokens
38
+
39
+ - `--cascivo-chart-1`
40
+ - `--cascivo-chart-2`
41
+ - `--cascivo-chart-3`
42
+ - `--cascivo-chart-4`
43
+ - `--cascivo-chart-5`
44
+ - `--cascivo-chart-6`
45
+ - `--cascivo-chart-7`
46
+ - `--cascivo-chart-8`
47
+
48
+ ## Examples
49
+
50
+ ### Basic boxplot
51
+
52
+ ```jsx
53
+ import { Boxplot } from '@cascivo/charts'
54
+
55
+ const series = [
56
+ { id: 'a', label: 'Group A', values: [1,2,3,4,5,6,7,8,9,10] },
57
+ { id: 'b', label: 'Group B', values: [3,5,6,7,8,8,9,9,10,15] },
58
+ ]
59
+ <Boxplot series={series} title="Comparison" />
60
+ ```
61
+
62
+ ## AI context prompt
63
+
64
+ Copy this into an LLM context bar before editing this component:
65
+
66
+ ```text
67
+ I am modifying the cascivo Boxplot component (chart). Box-and-whisker plot with five-number summary and outlier dots per series.
68
+
69
+ Architecture constraints — follow exactly:
70
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
71
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
72
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
73
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
74
+ - CSS logical properties only (RTL-safe).
75
+
76
+ Boxplot is strictly bound to these tokens — use only these, do not invent token names:
77
+ --cascivo-chart-1, --cascivo-chart-2, --cascivo-chart-3, --cascivo-chart-4, --cascivo-chart-5, --cascivo-chart-6, --cascivo-chart-7, --cascivo-chart-8
78
+
79
+ Accessibility: role "img", WCAG 2.1-AA. Keep it AA.
80
+
81
+ Do not invent props, tokens, or global viewport media queries.
82
+ ```
@@ -0,0 +1,80 @@
1
+ # BubbleChart
2
+
3
+ **Category:** chart
4
+ **Description:** Bubble chart mapping x, y, and size dimensions; radius is area-proportional via sqrt scale.
5
+
6
+ ## When to use
7
+
8
+ - Plotting three dimensions at once — x, y, and a size-encoded magnitude
9
+ - Comparing entities where relative scale matters alongside position
10
+
11
+ ## When NOT to use
12
+
13
+ - Showing only a 2D correlation — use ScatterChart
14
+ - Comparing many small magnitudes where size differences are unreadable
15
+
16
+ ## Related components
17
+
18
+ - **ScatterChart** (alternative): Use when there is no third size dimension to encode
19
+
20
+ ## Accessibility rationale
21
+
22
+ Renders with role="img" and requires a title prop for screen reader labeling.
23
+
24
+ ## Props
25
+
26
+ | Name | Type | Required | Default | Description |
27
+ | ------------- | -------------------------------------------------------------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------- |
28
+ | `series` | `{ name: string; data: { x: number; y: number; size: number }[] }[]` | Yes | — | The data series to plot. |
29
+ | `title` | `string` | Yes | — | Title text for the component. |
30
+ | `description` | `string` | No | — | Supporting description text. |
31
+ | `width` | `number` | No | — | Width of the component. |
32
+ | `height` | `number` | No | 320 | Height of the component. |
33
+ | `tooltip` | `boolean` | No | — | Enable hover/keyboard tooltip |
34
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
35
+ | `plain` | `boolean` | No | false | Marks only — no axes, grid lines, or legend. For micro/inline charts. |
36
+ | `glyph` | `GlyphShape \| ((d, seriesId) => GlyphShape)` | No | — | Point glyph shape (circle/square/diamond/triangle/cross/star) — a fixed shape or a function to encode a category by shape. |
37
+
38
+ ## Tokens
39
+
40
+ - `--cascivo-chart-1`
41
+ - `--cascivo-chart-2`
42
+ - `--cascivo-chart-3`
43
+ - `--cascivo-chart-4`
44
+ - `--cascivo-chart-5`
45
+ - `--cascivo-chart-6`
46
+ - `--cascivo-chart-7`
47
+ - `--cascivo-chart-8`
48
+
49
+ ## Examples
50
+
51
+ ### Basic bubble chart
52
+
53
+ ```jsx
54
+ import { BubbleChart } from '@cascivo/charts'
55
+
56
+ const series = [{ name: 'Group A', data: [{x:1,y:2,size:10},{x:3,y:4,size:30}] }]
57
+ <BubbleChart series={series} title="Bubble" />
58
+ ```
59
+
60
+ ## AI context prompt
61
+
62
+ Copy this into an LLM context bar before editing this component:
63
+
64
+ ```text
65
+ I am modifying the cascivo BubbleChart component (chart). Bubble chart mapping x, y, and size dimensions; radius is area-proportional via sqrt scale.
66
+
67
+ Architecture constraints — follow exactly:
68
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
69
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
70
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
71
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
72
+ - CSS logical properties only (RTL-safe).
73
+
74
+ BubbleChart is strictly bound to these tokens — use only these, do not invent token names:
75
+ --cascivo-chart-1, --cascivo-chart-2, --cascivo-chart-3, --cascivo-chart-4, --cascivo-chart-5, --cascivo-chart-6, --cascivo-chart-7, --cascivo-chart-8
76
+
77
+ Accessibility: role "img", WCAG 2.1-AA, keyboard: Tab (focus chart)/ArrowLeft/ArrowRight (navigate points)/Home/End (first/last point)/Escape (clear focus). Keep it AA.
78
+
79
+ Do not invent props, tokens, or global viewport media queries.
80
+ ```
@@ -0,0 +1,75 @@
1
+ # Bullet
2
+
3
+ **Category:** chart
4
+ **Description:** Bullet chart with background range bands, measure bar, and target tick.
5
+
6
+ ## When to use
7
+
8
+ - Showing a single measure against a target with qualitative range bands
9
+ - Compact dashboard KPIs where space for a full gauge is limited
10
+
11
+ ## When NOT to use
12
+
13
+ - Displaying a metric without a target or comparative range — use Kpi
14
+ - Showing a simple completion or rated value — use Meter
15
+
16
+ ## Related components
17
+
18
+ - **Meter** (alternative): Use for a rated value within a range without a target marker
19
+ - **Kpi** (alternative): Use for a single headline metric with a delta
20
+
21
+ ## Accessibility rationale
22
+
23
+ Renders with role="img" and requires a label prop for screen reader labeling.
24
+
25
+ ## Props
26
+
27
+ | Name | Type | Required | Default | Description |
28
+ | ----------- | ---------- | -------- | ------- | -------------------------------------------------------- |
29
+ | `value` | `number` | Yes | — | Current measure value |
30
+ | `target` | `number` | Yes | — | Target marker value |
31
+ | `ranges` | `number[]` | Yes | — | Qualitative range breakpoints (sorted ascending) |
32
+ | `label` | `string` | Yes | — | Text label for the control. |
33
+ | `min` | `number` | No | 0 | Minimum allowed value. |
34
+ | `max` | `number` | No | — | Domain maximum (defaults to last range) |
35
+ | `width` | `number` | No | 300 | Width of the component. |
36
+ | `height` | `number` | No | 40 | Height of the component. |
37
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
38
+
39
+ ## Tokens
40
+
41
+ - `--cascivo-chart-1`
42
+ - `--cascivo-color-neutral-200`
43
+ - `--cascivo-color-neutral-300`
44
+ - `--cascivo-color-neutral-400`
45
+
46
+ ## Examples
47
+
48
+ ### Basic bullet chart
49
+
50
+ ```jsx
51
+ import { Bullet } from '@cascivo/charts'
52
+ ;<Bullet value={72} target={80} ranges={[40, 70, 100]} label="Revenue %" />
53
+ ```
54
+
55
+ ## AI context prompt
56
+
57
+ Copy this into an LLM context bar before editing this component:
58
+
59
+ ```text
60
+ I am modifying the cascivo Bullet component (chart). Bullet chart with background range bands, measure bar, and target tick.
61
+
62
+ Architecture constraints — follow exactly:
63
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
64
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
65
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
66
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
67
+ - CSS logical properties only (RTL-safe).
68
+
69
+ Bullet is strictly bound to these tokens — use only these, do not invent token names:
70
+ --cascivo-chart-1, --cascivo-color-neutral-200, --cascivo-color-neutral-300, --cascivo-color-neutral-400
71
+
72
+ Accessibility: role "img", WCAG 2.1-AA. Keep it AA.
73
+
74
+ Do not invent props, tokens, or global viewport media queries.
75
+ ```
@@ -0,0 +1,79 @@
1
+ # Calendar
2
+
3
+ **Category:** chart
4
+ **Description:** Calendar heatmap — a week-column grid of day cells colored by value (GitHub-style).
5
+
6
+ ## When to use
7
+
8
+ - Showing a daily value over weeks/months (activity, contributions)
9
+ - Spotting weekly/seasonal patterns at a glance
10
+
11
+ ## When NOT to use
12
+
13
+ - Precise daily values — use a LineChart
14
+ - Non-date categories — use Heatmap
15
+
16
+ ## Related components
17
+
18
+ - **Heatmap** (alternative): Use for arbitrary x/y category grids
19
+
20
+ ## Accessibility rationale
21
+
22
+ Renders role="img" with a title and a fallback day/value table.
23
+
24
+ ## Props
25
+
26
+ | Name | Type | Required | Default | Description |
27
+ | ------------- | ------------------ | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------ |
28
+ | `data` | `CalendarDatum[]` | Yes | — | Days: { day: string \| Date, value }. |
29
+ | `title` | `string` | Yes | — | Title text for the component. |
30
+ | `description` | `string` | No | — | Supporting description text. |
31
+ | `from` | `string \| Date` | No | — | Range start (defaults to min day). |
32
+ | `to` | `string \| Date` | No | — | Range end (defaults to max day). |
33
+ | `width` | `number` | No | — | Width of the component. |
34
+ | `height` | `number` | No | 160 | Height of the component. |
35
+ | `tooltip` | `boolean` | No | — | Whether to show tooltips on hover. |
36
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
37
+ | `plain` | `boolean` | No | false | When true, renders a minimal variant without chart chrome. |
38
+ | `visualMap` | `VisualMapOptions` | No | — | Map day value → CVD-safe colour (continuous or piecewise) via a keyboard-operable legend that filters the visible range. |
39
+
40
+ ## Tokens
41
+
42
+ - `--cascivo-chart-2`
43
+
44
+ ## Examples
45
+
46
+ ### Contribution calendar
47
+
48
+ ```jsx
49
+ import { Calendar } from '@cascivo/charts'
50
+ ;<Calendar
51
+ title="Activity"
52
+ data={[
53
+ { day: '2026-01-01', value: 3 },
54
+ { day: '2026-01-02', value: 7 },
55
+ ]}
56
+ />
57
+ ```
58
+
59
+ ## AI context prompt
60
+
61
+ Copy this into an LLM context bar before editing this component:
62
+
63
+ ```text
64
+ I am modifying the cascivo Calendar component (chart). Calendar heatmap — a week-column grid of day cells colored by value (GitHub-style).
65
+
66
+ Architecture constraints — follow exactly:
67
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
68
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
69
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
70
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
71
+ - CSS logical properties only (RTL-safe).
72
+
73
+ Calendar is strictly bound to these tokens — use only these, do not invent token names:
74
+ --cascivo-chart-2
75
+
76
+ Accessibility: role "img", WCAG 2.1-AA, keyboard: Tab (focus chart)/ArrowLeft/ArrowRight (navigate days)/Escape (clear focus). Keep it AA.
77
+
78
+ Do not invent props, tokens, or global viewport media queries.
79
+ ```
@@ -0,0 +1,104 @@
1
+ # Candlestick
2
+
3
+ **Category:** chart
4
+ **Description:** OHLC financial chart — each period a high–low wick and an open↔close body, coloured up/down.
5
+
6
+ ## When to use
7
+
8
+ - Showing open/high/low/close price movement over time
9
+ - Financial or trading dashboards needing per-period range + direction
10
+
11
+ ## When NOT to use
12
+
13
+ - A single value trend — use LineChart
14
+ - Non-financial categorical data — use BarChart
15
+
16
+ ## Related components
17
+
18
+ - **LineChart** (alternative): Use when only the closing price trend matters
19
+
20
+ ## Accessibility rationale
21
+
22
+ Renders with role="img"; OHLC values are in the fallback table and tooltip.
23
+
24
+ ## Props
25
+
26
+ | Name | Type | Required | Default | Description |
27
+ | ------------- | -------------------- | -------- | ------- | -------------------------------------------------------------------------- |
28
+ | `data` | `CandlestickDatum[]` | Yes | — | One candle per period: { t, open, high, low, close, volume? }. |
29
+ | `title` | `string` | Yes | — | Chart title (also aria-label). |
30
+ | `description` | `string` | No | — | Supporting description text. |
31
+ | `width` | `number` | No | — | Width of the component. |
32
+ | `height` | `number` | No | 320 | Height of the component. |
33
+ | `yTicks` | `number` | No | 5 | Approximate number of ticks on the y-axis. |
34
+ | `upColor` | `string` | No | — | Colour for up candles (close ≥ open). |
35
+ | `downColor` | `string` | No | — | Colour for down candles (close < open). |
36
+ | `volume` | `boolean` | No | false | Render volume bars beneath the candles. |
37
+ | `tooltip` | `boolean` | No | — | Enable hover tooltip (OHLC). |
38
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
39
+ | `plain` | `boolean` | No | false | Marks only — no axes. For micro/inline charts. |
40
+ | `annotations` | `Annotation[]` | No | — | Reference lines/bands/markers over the plot (e.g. a last-price rule). |
41
+ | `brush` | `boolean` | No | — | Keyboard-operable Brush below the plot to subset the candles to a window. |
42
+ | `dataZoom` | `boolean` | No | — | DataZoom slider below the plot — a Brush whose body also pans the window. |
43
+ | `zoom` | `boolean` | No | — | In-plot wheel/drag/keyboard zoom-pan (+/-/0) over the candle index window. |
44
+ | `syncId` | `string` | No | — | Connect charts sharing this id — they mirror the zoom window. |
45
+ | `tooltipMode` | `'item' \| 'axis'` | No | item | item (nearest candle) or axis (crosshair + OHLC at the hovered x). |
46
+
47
+ ## Tokens
48
+
49
+ - `--cascivo-chart-2`
50
+ - `--cascivo-chart-4`
51
+ - `--cascivo-chart-grid`
52
+
53
+ ## Examples
54
+
55
+ ### OHLC price series
56
+
57
+ ```jsx
58
+ import { Candlestick } from '@cascivo/charts'
59
+ ;<Candlestick
60
+ title="ACME daily"
61
+ tooltip
62
+ data={[
63
+ { t: 'Mon', open: 10, high: 14, low: 9, close: 13 },
64
+ { t: 'Tue', open: 13, high: 15, low: 11, close: 11 },
65
+ { t: 'Wed', open: 11, high: 12, low: 8, close: 9 },
66
+ ]}
67
+ />
68
+ ```
69
+
70
+ ### Zoomable with a last-price rule
71
+
72
+ ```jsx
73
+ <Candlestick
74
+ title="ACME daily"
75
+ data={candles}
76
+ volume
77
+ zoom
78
+ dataZoom
79
+ tooltipMode="axis"
80
+ annotations={[{ kind: 'line', axis: 'y', value: lastClose, label: '42.77' }]}
81
+ />
82
+ ```
83
+
84
+ ## AI context prompt
85
+
86
+ Copy this into an LLM context bar before editing this component:
87
+
88
+ ```text
89
+ I am modifying the cascivo Candlestick component (chart). OHLC financial chart — each period a high–low wick and an open↔close body, coloured up/down.
90
+
91
+ Architecture constraints — follow exactly:
92
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
93
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
94
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
95
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
96
+ - CSS logical properties only (RTL-safe).
97
+
98
+ Candlestick is strictly bound to these tokens — use only these, do not invent token names:
99
+ --cascivo-chart-2, --cascivo-chart-4, --cascivo-chart-grid
100
+
101
+ Accessibility: role "img", WCAG 2.1-AA, keyboard: Tab (focus chart)/ArrowLeft/ArrowRight (navigate candles)/+/- (zoom), 0 (reset) when zoom enabled/Escape (clear focus). Keep it AA.
102
+
103
+ Do not invent props, tokens, or global viewport media queries.
104
+ ```
@@ -0,0 +1,78 @@
1
+ # ComboChart
2
+
3
+ **Category:** chart
4
+ **Description:** Combination bar + line chart on shared or dual y-axes.
5
+
6
+ ## When to use
7
+
8
+ - Overlaying two related metrics with different scales (e.g. volume bars + rate line)
9
+ - Pairing categorical totals with a continuous trend on a dual y-axis
10
+
11
+ ## When NOT to use
12
+
13
+ - Both metrics share a scale and type — use BarChart or LineChart
14
+ - More than two series of differing types — clarity breaks down
15
+
16
+ ## Related components
17
+
18
+ - **BarChart** (alternative): Use when all series are categorical comparisons
19
+ - **LineChart** (alternative): Use when all series are trends on one scale
20
+
21
+ ## Accessibility rationale
22
+
23
+ Renders with role="img" and requires a title prop for screen reader labeling.
24
+
25
+ ## Props
26
+
27
+ | Name | Type | Required | Default | Description |
28
+ | ------------- | ------------------------------------ | -------- | ------- | ---------------------------------------------------------------------------------------------- |
29
+ | `bars` | `{ label: string; value: number }[]` | Yes | — | Bar series data |
30
+ | `line` | `{ x: number; y: number }[]` | Yes | — | Line series data points |
31
+ | `title` | `string` | Yes | — | Title text for the component. |
32
+ | `description` | `string` | No | — | Supporting description text. |
33
+ | `secondAxis` | `boolean` | No | — | Render line on a secondary right y-axis |
34
+ | `width` | `number` | No | — | Width of the component. |
35
+ | `height` | `number` | No | 320 | Height of the component. |
36
+ | `tooltip` | `boolean` | No | — | Enable hover/keyboard tooltip |
37
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
38
+ | `plain` | `boolean` | No | false | Marks only — no axes, grid lines, or legend. For micro/inline charts. |
39
+ | `annotations` | `Annotation[]` | No | — | Reference lines, shaded bands, and markers drawn over the plot (e.g. a target/threshold line). |
40
+
41
+ ## Tokens
42
+
43
+ - `--cascivo-chart-1`
44
+ - `--cascivo-chart-2`
45
+
46
+ ## Examples
47
+
48
+ ### Basic combo chart
49
+
50
+ ```jsx
51
+ import { ComboChart } from '@cascivo/charts'
52
+
53
+ const bars = [{label:'Jan',value:100},{label:'Feb',value:120},{label:'Mar',value:90}]
54
+ const line = [{x:0,y:50},{x:1,y:70},{x:2,y:60}]
55
+ <ComboChart bars={bars} line={line} title="Sales vs Target" />
56
+ ```
57
+
58
+ ## AI context prompt
59
+
60
+ Copy this into an LLM context bar before editing this component:
61
+
62
+ ```text
63
+ I am modifying the cascivo ComboChart component (chart). Combination bar + line chart on shared or dual y-axes.
64
+
65
+ Architecture constraints — follow exactly:
66
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
67
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
68
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
69
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
70
+ - CSS logical properties only (RTL-safe).
71
+
72
+ ComboChart is strictly bound to these tokens — use only these, do not invent token names:
73
+ --cascivo-chart-1, --cascivo-chart-2
74
+
75
+ Accessibility: role "img", WCAG 2.1-AA, keyboard: Tab (focus chart)/ArrowLeft/ArrowRight (navigate points)/Home/End (first/last point)/Escape (clear focus). Keep it AA.
76
+
77
+ Do not invent props, tokens, or global viewport media queries.
78
+ ```