@cascivo/mcp 0.2.0 → 0.3.4

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 -23
  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 +3 -1
  197. package/dist/index.d.mts.map +1 -1
  198. package/dist/index.mjs +73 -32
  199. package/dist/index.mjs.map +1 -1
  200. package/dist/marketplace.json +70 -0
  201. package/dist/registry.json +2832 -358
  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 -23
@@ -0,0 +1,69 @@
1
+ # Sparkline
2
+
3
+ **Category:** chart
4
+ **Description:** Compact inline sparkline for embedding trend data in dashboards or KPI cards.
5
+
6
+ ## When to use
7
+
8
+ - Embedding a compact micro-trend inline in text, tables, or KPI cards
9
+ - Conveying direction at a glance where a full chart would be too large
10
+
11
+ ## When NOT to use
12
+
13
+ - Reading precise values or axes are needed — use LineChart
14
+ - As a standalone primary chart with its own panel
15
+
16
+ ## Related components
17
+
18
+ - **LineChart** (alternative): Use as a full chart when axes and tooltips are needed
19
+ - **Kpi** (contained-by): Commonly embedded inside a KPI card as a trend indicator
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
+ | `data` | `number[]` | Yes | — | Array of numeric values |
30
+ | `label` | `string` | Yes | — | Accessible label |
31
+ | `width` | `number` | No | 80 | Width of the component. |
32
+ | `height` | `number` | No | 32 | Height of the component. |
33
+ | `color` | `string` | No | — | Stroke color (CSS value) |
34
+ | `endDot` | `boolean` | No | — | Show dot at last data point |
35
+
36
+ ## Tokens
37
+
38
+ - `--cascivo-chart-1`
39
+
40
+ ## Examples
41
+
42
+ ### Inline sparkline
43
+
44
+ ```jsx
45
+ import { Sparkline } from '@cascivo/charts'
46
+ ;<Sparkline data={[10, 20, 15, 30, 25]} label="Trend" endDot />
47
+ ```
48
+
49
+ ## AI context prompt
50
+
51
+ Copy this into an LLM context bar before editing this component:
52
+
53
+ ```text
54
+ I am modifying the cascivo Sparkline component (chart). Compact inline sparkline for embedding trend data in dashboards or KPI cards.
55
+
56
+ Architecture constraints — follow exactly:
57
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
58
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
59
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
60
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
61
+ - CSS logical properties only (RTL-safe).
62
+
63
+ Sparkline is strictly bound to these tokens — use only these, do not invent token names:
64
+ --cascivo-chart-1
65
+
66
+ Accessibility: role "img", WCAG 2.1-AA. Keep it AA.
67
+
68
+ Do not invent props, tokens, or global viewport media queries.
69
+ ```
@@ -0,0 +1,88 @@
1
+ # Stream
2
+
3
+ **Category:** chart
4
+ **Description:** Streamgraph — stacked areas on a centered (silhouette) flowing baseline.
5
+
6
+ ## When to use
7
+
8
+ - Showing how several series ebb and flow over time as proportions of a whole
9
+ - An organic, aesthetic alternative to a stacked area chart
10
+
11
+ ## When NOT to use
12
+
13
+ - Reading precise values — use LineChart or AreaChart
14
+ - Few categories with exact comparison — use BarChart
15
+
16
+ ## Related components
17
+
18
+ - **AreaChart** (alternative): Use a zero-baseline stacked area for precise reading
19
+
20
+ ## Accessibility rationale
21
+
22
+ Renders role="img" with a title and a fallback data table.
23
+
24
+ ## Props
25
+
26
+ | Name | Type | Required | Default | Description |
27
+ | ------------- | ------------------------ | -------- | ---------- | --------------------------------------------------------------------- |
28
+ | `series` | `StreamSeries[]` | Yes | — | Series, each with values[] aligned to categories. |
29
+ | `categories` | `(string \| number)[]` | Yes | — | X-axis labels aligned with each series values. |
30
+ | `title` | `string` | Yes | — | Title text for the component. |
31
+ | `description` | `string` | No | — | Supporting description text. |
32
+ | `offset` | `'silhouette' \| 'zero'` | No | silhouette | silhouette centers the stack (streamgraph); zero is a baseline stack. |
33
+ | `curve` | `Curve` | No | basis | Interpolation curve. |
34
+ | `width` | `number` | No | — | Width of the component. |
35
+ | `height` | `number` | No | 300 | Height of the component. |
36
+ | `legend` | `boolean` | No | — | Whether to show the legend. |
37
+ | `tooltip` | `boolean` | No | — | Whether to show tooltips on hover. |
38
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
39
+ | `plain` | `boolean` | No | false | When true, renders a minimal variant without chart chrome. |
40
+
41
+ ## Tokens
42
+
43
+ - `--cascivo-chart-1`
44
+ - `--cascivo-chart-2`
45
+ - `--cascivo-chart-3`
46
+ - `--cascivo-chart-4`
47
+ - `--cascivo-chart-5`
48
+ - `--cascivo-chart-6`
49
+ - `--cascivo-chart-7`
50
+ - `--cascivo-chart-8`
51
+
52
+ ## Examples
53
+
54
+ ### Streamgraph
55
+
56
+ ```jsx
57
+ import { Stream } from '@cascivo/charts'
58
+ ;<Stream
59
+ title="Topics over time"
60
+ categories={['Jan', 'Feb', 'Mar', 'Apr']}
61
+ series={[
62
+ { id: 'a', label: 'A', values: [4, 6, 5, 8] },
63
+ { id: 'b', label: 'B', values: [2, 3, 7, 4] },
64
+ ]}
65
+ />
66
+ ```
67
+
68
+ ## AI context prompt
69
+
70
+ Copy this into an LLM context bar before editing this component:
71
+
72
+ ```text
73
+ I am modifying the cascivo Stream component (chart). Streamgraph — stacked areas on a centered (silhouette) flowing baseline.
74
+
75
+ Architecture constraints — follow exactly:
76
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
77
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
78
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
79
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
80
+ - CSS logical properties only (RTL-safe).
81
+
82
+ Stream is strictly bound to these tokens — use only these, do not invent token names:
83
+ --cascivo-chart-1, --cascivo-chart-2, --cascivo-chart-3, --cascivo-chart-4, --cascivo-chart-5, --cascivo-chart-6, --cascivo-chart-7, --cascivo-chart-8
84
+
85
+ Accessibility: role "img", WCAG 2.1-AA, keyboard: Tab (focus chart)/ArrowLeft/ArrowRight (navigate)/Escape (clear focus). Keep it AA.
86
+
87
+ Do not invent props, tokens, or global viewport media queries.
88
+ ```
@@ -0,0 +1,93 @@
1
+ # Sunburst
2
+
3
+ **Category:** chart
4
+ **Description:** Radial hierarchy — concentric rings where each node is an annular segment sized by value.
5
+
6
+ ## When to use
7
+
8
+ - Showing a part-of-whole hierarchy across multiple levels
9
+ - A radial alternative to a Treemap for nested proportions
10
+
11
+ ## When NOT to use
12
+
13
+ - A flat set of proportions — use PieChart
14
+ - Precise leaf comparison — use a Treemap or bars
15
+
16
+ ## Related components
17
+
18
+ - **Treemap** (alternative): Use the rectilinear layout for dense leaves
19
+
20
+ ## Accessibility rationale
21
+
22
+ Renders role="img" with a title and a fallback path/value table.
23
+
24
+ ## Props
25
+
26
+ | Name | Type | Required | Default | Description |
27
+ | ------------- | ---------- | -------- | ------- | ----------------------------------------------------------------- |
28
+ | `data` | `HierNode` | Yes | — | Root of the tree; leaves carry value, parents sum their children. |
29
+ | `title` | `string` | Yes | — | Title text for the component. |
30
+ | `description` | `string` | No | — | Supporting description text. |
31
+ | `size` | `number` | No | — | Square shorthand (width === height). |
32
+ | `width` | `number` | No | — | Width of the component. |
33
+ | `height` | `number` | No | 300 | Height of the component. |
34
+ | `tooltip` | `boolean` | No | — | Whether to show tooltips on hover. |
35
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
36
+ | `plain` | `boolean` | No | false | When true, renders a minimal variant without chart chrome. |
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
+ ### Sunburst
52
+
53
+ ```jsx
54
+ import { Sunburst } from '@cascivo/charts'
55
+ ;<Sunburst
56
+ title="Disk usage"
57
+ data={{
58
+ label: 'root',
59
+ children: [
60
+ {
61
+ label: 'src',
62
+ children: [
63
+ { label: 'app', value: 40 },
64
+ { label: 'lib', value: 25 },
65
+ ],
66
+ },
67
+ { label: 'docs', value: 15 },
68
+ ],
69
+ }}
70
+ />
71
+ ```
72
+
73
+ ## AI context prompt
74
+
75
+ Copy this into an LLM context bar before editing this component:
76
+
77
+ ```text
78
+ I am modifying the cascivo Sunburst component (chart). Radial hierarchy — concentric rings where each node is an annular segment sized by value.
79
+
80
+ Architecture constraints — follow exactly:
81
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
82
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
83
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
84
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
85
+ - CSS logical properties only (RTL-safe).
86
+
87
+ Sunburst is strictly bound to these tokens — use only these, do not invent token names:
88
+ --cascivo-chart-1, --cascivo-chart-2, --cascivo-chart-3, --cascivo-chart-4, --cascivo-chart-5, --cascivo-chart-6, --cascivo-chart-7, --cascivo-chart-8
89
+
90
+ Accessibility: role "img", WCAG 2.1-AA, keyboard: Tab (focus chart)/ArrowLeft/ArrowRight (navigate nodes)/Escape (clear focus). Keep it AA.
91
+
92
+ Do not invent props, tokens, or global viewport media queries.
93
+ ```
@@ -0,0 +1,84 @@
1
+ # Treemap
2
+
3
+ **Category:** chart
4
+ **Description:** Squarified treemap for visualizing part-to-whole hierarchical data.
5
+
6
+ ## When to use
7
+
8
+ - Showing part-to-whole proportions across many segments in a compact area
9
+ - Visualising hierarchical magnitude where slice size encodes value
10
+
11
+ ## When NOT to use
12
+
13
+ - Few segments where a simple split reads better — use PieChart for ≤5
14
+ - Precise value comparison — area encoding is approximate
15
+
16
+ ## Related components
17
+
18
+ - **PieChart** (alternative): Use for part-of-whole with five or fewer flat segments
19
+ - **Heatmap** (alternative): Use for magnitude across a two-dimensional grid
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
+ | `data` | `{ id: string; label: string; value: number }[]` | Yes | — | The hierarchical data to render as nested rectangles. |
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 treemap
51
+
52
+ ```jsx
53
+ import { Treemap } from '@cascivo/charts'
54
+
55
+ const data = [
56
+ {id:'a',label:'Alpha',value:40},
57
+ {id:'b',label:'Beta',value:25},
58
+ {id:'c',label:'Gamma',value:20},
59
+ {id:'d',label:'Delta',value:15},
60
+ ]
61
+ <Treemap data={data} title="Market share" />
62
+ ```
63
+
64
+ ## AI context prompt
65
+
66
+ Copy this into an LLM context bar before editing this component:
67
+
68
+ ```text
69
+ I am modifying the cascivo Treemap component (chart). Squarified treemap for visualizing part-to-whole hierarchical data.
70
+
71
+ Architecture constraints — follow exactly:
72
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
73
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
74
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
75
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
76
+ - CSS logical properties only (RTL-safe).
77
+
78
+ Treemap is strictly bound to these tokens — use only these, do not invent token names:
79
+ --cascivo-chart-1, --cascivo-chart-2, --cascivo-chart-3, --cascivo-chart-4, --cascivo-chart-5, --cascivo-chart-6, --cascivo-chart-7, --cascivo-chart-8
80
+
81
+ Accessibility: role "img", WCAG 2.1-AA. Keep it AA.
82
+
83
+ Do not invent props, tokens, or global viewport media queries.
84
+ ```
@@ -0,0 +1,116 @@
1
+ # ChatBubble
2
+
3
+ **Category:** display
4
+ **Description:** Message bubble for chat and messaging UIs with avatar, name, and timestamp support
5
+
6
+ ## When to use
7
+
8
+ - Chat UIs and messaging features showing conversation history
9
+ - Comment threads with a bubble-style layout
10
+ - Customer support widgets displaying agent and user messages
11
+
12
+ ## When NOT to use
13
+
14
+ - General content cards without a conversational context — use Card
15
+ - Inline comments that do not need a bubble visual treatment
16
+
17
+ ## Anti-patterns
18
+
19
+ ### ChatBubble implies a back-and-forth conversation; use Card for standalone content pieces
20
+
21
+ **Bad:** `Using ChatBubble for notification cards or feed items`
22
+ **Good:** `<Card> or <Alert> for non-conversational content`
23
+ **Why:** ChatBubble implies a back-and-forth conversation; use Card for standalone content pieces
24
+
25
+ ## Related components
26
+
27
+ - **Card** (alternative): Use for general content display that is not part of a conversation
28
+ - **Avatar** (pairs-with): Pass an Avatar as the avatar prop to identify the message sender
29
+
30
+ ## Accessibility rationale
31
+
32
+ Pure layout component with role="none". Wrap a list of ChatBubble elements in an element with role="log" and aria-live="polite" to announce new messages to screen readers.
33
+
34
+ ## Props
35
+
36
+ | Name | Type | Required | Default | Description |
37
+ | ----------- | ------------------ | -------- | ------- | -------------------------------------------------------- |
38
+ | `children` | `React.ReactNode` | Yes | — | Content rendered inside the component. |
39
+ | `side` | `'start' \| 'end'` | No | start | Edge the component is anchored to. |
40
+ | `avatar` | `React.ReactNode` | No | — | Avatar element shown beside the message. |
41
+ | `name` | `string` | No | — | Display name of the message sender. |
42
+ | `time` | `string` | No | — | Timestamp text shown with the message. |
43
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root element. |
44
+
45
+ ## Tokens
46
+
47
+ - `--cascivo-color-surface`
48
+ - `--cascivo-color-text`
49
+ - `--cascivo-color-text-muted`
50
+ - `--cascivo-color-text-subtle`
51
+ - `--cascivo-color-accent`
52
+ - `--cascivo-color-accent-content`
53
+ - `--cascivo-radius-overlay`
54
+ - `--cascivo-radius-indicator`
55
+
56
+ ## Examples
57
+
58
+ ### Incoming message
59
+
60
+ Message from another user, aligned to the start
61
+
62
+ ```jsx
63
+ <ChatBubble side="start" name="Alice" time="10:42 AM">
64
+ Hey, how are you?
65
+ </ChatBubble>
66
+ ```
67
+
68
+ ### Outgoing message
69
+
70
+ Current user message, aligned to the end with accent background
71
+
72
+ ```jsx
73
+ <ChatBubble side="end" time="10:43 AM">
74
+ Doing great, thanks!
75
+ </ChatBubble>
76
+ ```
77
+
78
+ ### With avatar
79
+
80
+ Message with an avatar beside the bubble
81
+
82
+ ```jsx
83
+ <ChatBubble side="start" avatar={<Avatar src="/alice.png" size="sm" />} name="Alice">
84
+ See you tomorrow!
85
+ </ChatBubble>
86
+ ```
87
+
88
+ ## Boundaries
89
+
90
+ | Area | Level | Note |
91
+ | ------------ | -------- | ------------------------------------------------------------------------- |
92
+ | avatar slot | flexible | Accepts any ReactNode — Avatar, initials, icon, or nothing |
93
+ | body content | flexible | children accepts rich content including images, links, and formatted text |
94
+
95
+ ## AI context prompt
96
+
97
+ Copy this into an LLM context bar before editing this component:
98
+
99
+ ```text
100
+ I am modifying the cascivo ChatBubble component (display). Message bubble for chat and messaging UIs with avatar, name, and timestamp support
101
+
102
+ Architecture constraints — follow exactly:
103
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
104
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
105
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
106
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
107
+ - CSS logical properties only (RTL-safe).
108
+
109
+ ChatBubble is strictly bound to these tokens — use only these, do not invent token names:
110
+ --cascivo-color-surface, --cascivo-color-text, --cascivo-color-text-muted, --cascivo-color-text-subtle, --cascivo-color-accent, --cascivo-color-accent-content, --cascivo-radius-overlay, --cascivo-radius-indicator
111
+
112
+ Accessibility: role "none", WCAG 2.2-AA. Keep it AA.
113
+ Flexible: avatar slot, body content.
114
+
115
+ Do not invent props, tokens, or global viewport media queries.
116
+ ```
@@ -0,0 +1,104 @@
1
+ # CheckboxCard
2
+
3
+ **Category:** inputs
4
+ **Description:** Multi-selectable card backed by a native checkbox. Use multiple independent CheckboxCards for multi-select scenarios.
5
+
6
+ ## When to use
7
+
8
+ - Multi-select where each option needs a title and supporting description (feature toggles, add-ons)
9
+ - Presenting selectable options as larger, scannable click targets rather than a dense checkbox list
10
+
11
+ ## When NOT to use
12
+
13
+ - A simple labelled boolean in a form — use Checkbox
14
+ - Choosing exactly one option from a set — use RadioCard or Radio
15
+
16
+ ## Anti-patterns
17
+
18
+ ### Each CheckboxCard is an independent native checkbox — nothing enforces a single selection across them
19
+
20
+ **Bad:** `Using CheckboxCard for mutually exclusive options`
21
+ **Good:** `Use RadioCard so only one can be selected`
22
+ **Why:** Each CheckboxCard is an independent native checkbox — nothing enforces a single selection across them
23
+
24
+ ### The description is a single supporting line; long content breaks the card layout and scannability
25
+
26
+ **Bad:** `Cramming a paragraph of marketing copy into description`
27
+ **Good:** `undefined`
28
+ **Why:** The description is a single supporting line; long content breaks the card layout and scannability
29
+
30
+ ## Related components
31
+
32
+ - **Checkbox** (alternative): Use the plain checkbox when a title/description card is overkill
33
+ - **RadioCard** (alternative): Use for single-select card groups
34
+
35
+ ## Accessibility rationale
36
+
37
+ Backed by a native <input type="checkbox"> inside a <label>, so the entire card is clickable and role, checked state, Space activation, and label association come from the platform; the SVG glyph is aria-hidden as it is purely decorative
38
+
39
+ ## Props
40
+
41
+ | Name | Type | Required | Default | Description |
42
+ | ----------------- | ---------------------------- | -------- | ------- | ------------------------ |
43
+ | `title` | `ReactNode` | Yes | — | Card title |
44
+ | `description` | `ReactNode` | No | — | Optional description |
45
+ | `checked` | `boolean` | No | — | Controlled checked state |
46
+ | `defaultChecked` | `boolean` | No | — | Uncontrolled default |
47
+ | `onCheckedChange` | `(checked: boolean) => void` | No | — | Change callback |
48
+ | `disabled` | `boolean` | No | — | Disables the card |
49
+
50
+ ## Tokens
51
+
52
+ - `--cascivo-color-accent`
53
+ - `--cascivo-color-border`
54
+ - `--cascivo-radius-surface`
55
+
56
+ ## Examples
57
+
58
+ ### Feature toggles
59
+
60
+ Multi-select feature toggles
61
+
62
+ ```jsx
63
+ <div style={{ display: 'grid', gap: 12 }}>
64
+ <CheckboxCard
65
+ title="Automated backups"
66
+ description="Daily snapshots, 30-day retention"
67
+ defaultChecked
68
+ />
69
+ <CheckboxCard title="Monitoring" description="Metrics + alerting" />
70
+ <CheckboxCard title="Audit log" description="Requires Team plan" disabled />
71
+ </div>
72
+ ```
73
+
74
+ ## Boundaries
75
+
76
+ | Area | Level | Note |
77
+ | -------------------------- | -------- | --------------------------------------------------------------------------------------------------- |
78
+ | controlled vs uncontrolled | flexible | Supports both checked + onCheckedChange and defaultChecked |
79
+ | token names | strict | Card styling resolves to --cascivo-color-accent / --cascivo-color-border / --cascivo-radius-surface |
80
+
81
+ ## AI context prompt
82
+
83
+ Copy this into an LLM context bar before editing this component:
84
+
85
+ ```text
86
+ I am modifying the cascivo CheckboxCard component (inputs). Multi-selectable card backed by a native checkbox. Use multiple independent CheckboxCards for multi-select scenarios.
87
+
88
+ Architecture constraints — follow exactly:
89
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
90
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
91
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
92
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
93
+ - CSS logical properties only (RTL-safe).
94
+
95
+ CheckboxCard is strictly bound to these tokens — use only these, do not invent token names:
96
+ --cascivo-color-accent, --cascivo-color-border, --cascivo-radius-surface
97
+
98
+ Accessibility: role "checkbox", WCAG 2.2-AA, keyboard: Space. Keep it AA.
99
+
100
+ Do not change (strict): token names — Card styling resolves to --cascivo-color-accent / --cascivo-color-border / --cascivo-radius-surface
101
+ Flexible: controlled vs uncontrolled.
102
+
103
+ Do not invent props, tokens, or global viewport media queries.
104
+ ```
@@ -0,0 +1,104 @@
1
+ # Checkbox
2
+
3
+ **Category:** inputs
4
+ **Description:** Binary toggle for forms, with indeterminate support
5
+
6
+ ## When to use
7
+
8
+ - Selecting zero or more options from a list where each choice is independent
9
+ - A single opt-in within a form (accept terms, subscribe) submitted alongside other fields
10
+ - A "select all" control that needs an indeterminate (partial) state
11
+
12
+ ## When NOT to use
13
+
14
+ - A binary setting that applies immediately on change — use Toggle
15
+ - Choosing exactly one option from a mutually exclusive set — use Radio
16
+
17
+ ## Anti-patterns
18
+
19
+ ### Checkbox signals a form value to be submitted; Toggle signals an immediate on/off state change
20
+
21
+ **Bad:** `<Checkbox label="Dark mode" /> that flips a setting live`
22
+ **Good:** `<Toggle label="Dark mode" />`
23
+ **Why:** Checkbox signals a form value to be submitted; Toggle signals an immediate on/off state change
24
+
25
+ ### Independent checkboxes let the user select both or neither, which a single exclusive choice should not allow
26
+
27
+ **Bad:** `Two checkboxes for one either/or choice`
28
+ **Good:** `Use Radio for mutually exclusive options`
29
+ **Why:** Independent checkboxes let the user select both or neither, which a single exclusive choice should not allow
30
+
31
+ ## Related components
32
+
33
+ - **Toggle** (alternative): Use for immediate binary settings rather than form values
34
+ - **Radio** (alternative): Use for selecting exactly one from a mutually exclusive set
35
+ - **CheckboxCard** (alternative): Use the card variant when each option needs a title plus description
36
+
37
+ ## Accessibility rationale
38
+
39
+ Renders a native <input type="checkbox"> wrapped in a <label>, so role, checked/indeterminate state, Space activation, and label association come from the platform; the indeterminate visual is set on the DOM node since it is a property not an attribute
40
+
41
+ ## Props
42
+
43
+ | Name | Type | Required | Default | Description |
44
+ | --------------- | -------------------------------------------- | -------- | ------- | ------------------------------------------------------------------ |
45
+ | `label` | `string` | No | — | Text label for the control. |
46
+ | `checked` | `boolean` | No | — | Whether the control is checked (controlled). |
47
+ | `indeterminate` | `boolean` | No | false | When true, renders the mixed/indeterminate state. |
48
+ | `disabled` | `boolean` | No | false | When true, disables the control and removes it from the tab order. |
49
+ | `onChange` | `React.ChangeEventHandler<HTMLInputElement>` | No | — | Called when the value changes. |
50
+
51
+ ## Tokens
52
+
53
+ - `--cascivo-color-surface`
54
+ - `--cascivo-color-accent`
55
+ - `--cascivo-color-border-strong`
56
+ - `--cascivo-color-text-on-accent`
57
+ - `--cascivo-radius-sm`
58
+ - `--cascivo-focus-ring`
59
+
60
+ ## Examples
61
+
62
+ ### With label
63
+
64
+ ```jsx
65
+ <Checkbox label="Accept terms" />
66
+ ```
67
+
68
+ ### Indeterminate
69
+
70
+ ```jsx
71
+ <Checkbox label="Select all" indeterminate />
72
+ ```
73
+
74
+ ## Boundaries
75
+
76
+ | Area | Level | Note |
77
+ | ------------------ | -------- | --------------------------------------------------------------------------------------- |
78
+ | native input props | flexible | Spreads InputHTMLAttributes — name, value, required, checked, onChange all pass through |
79
+ | token names | strict | Control styling resolves to semantic --cascivo-color-\* / --cascivo-radius-sm tokens |
80
+
81
+ ## AI context prompt
82
+
83
+ Copy this into an LLM context bar before editing this component:
84
+
85
+ ```text
86
+ I am modifying the cascivo Checkbox component (inputs). Binary toggle for forms, with indeterminate support
87
+
88
+ Architecture constraints — follow exactly:
89
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
90
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
91
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
92
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
93
+ - CSS logical properties only (RTL-safe).
94
+
95
+ Checkbox is strictly bound to these tokens — use only these, do not invent token names:
96
+ --cascivo-color-surface, --cascivo-color-accent, --cascivo-color-border-strong, --cascivo-color-text-on-accent, --cascivo-radius-sm, --cascivo-focus-ring
97
+
98
+ Accessibility: role "checkbox", WCAG 2.2-AA, keyboard: Space. Keep it AA.
99
+
100
+ Do not change (strict): token names — Control styling resolves to semantic --cascivo-color-* / --cascivo-radius-sm tokens
101
+ Flexible: native input props.
102
+
103
+ Do not invent props, tokens, or global viewport media queries.
104
+ ```