@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,92 @@
1
+ # AspectRatio
2
+
3
+ **Category:** layout
4
+ **Description:** Constrains content to a fixed width-to-height ratio
5
+
6
+ ## When to use
7
+
8
+ - Reserving a stable box for media that loads asynchronously, avoiding layout shift
9
+ - Embedding responsive iframes (video, maps) at a known proportion
10
+ - Keeping thumbnails or covers uniform across a grid
11
+
12
+ ## When NOT to use
13
+
14
+ - Content whose height should grow with text — let it size naturally
15
+ - A single fixed-pixel image where width and height are already known
16
+
17
+ ## Anti-patterns
18
+
19
+ ### A fixed ratio clips or distorts content that needs variable height
20
+
21
+ **Bad:** `Wrapping text content that must expand to fit its lines`
22
+ **Good:** `Reserve AspectRatio for media; let prose flow at its intrinsic height`
23
+ **Why:** A fixed ratio clips or distorts content that needs variable height
24
+
25
+ ## Related components
26
+
27
+ - **Card** (contained-by): Commonly holds a cover image inside a Card media region
28
+
29
+ ## Accessibility rationale
30
+
31
+ Purely presentational wrapper with no role; the inner media element carries its own semantics and alt text
32
+
33
+ ## Props
34
+
35
+ | Name | Type | Required | Default | Description |
36
+ | ---------- | ----------- | -------- | ------- | -------------------------------------------------------------------- |
37
+ | `ratio` | `number` | No | 16 / 9 | Width-to-height ratio applied via the CSS aspect-ratio property |
38
+ | `children` | `ReactNode` | No | — | Content to fill the ratio box (typically an image, video, or iframe) |
39
+
40
+ ## Tokens
41
+
42
+ - `--cascivo-aspect-ratio`
43
+
44
+ ## Examples
45
+
46
+ ### Image at 16:9
47
+
48
+ ```jsx
49
+ <AspectRatio ratio={16 / 9}>
50
+ <img src="/cover.jpg" alt="Cover" />
51
+ </AspectRatio>
52
+ ```
53
+
54
+ ### Square
55
+
56
+ ```jsx
57
+ <AspectRatio ratio={1}>
58
+ <img src="/avatar.jpg" alt="Avatar" />
59
+ </AspectRatio>
60
+ ```
61
+
62
+ ## Boundaries
63
+
64
+ | Area | Level | Note |
65
+ | ------------ | -------- | ---------------------------------------------------------------- |
66
+ | ratio | flexible | Any positive number; common values are 16/9, 4/3, 1, 3/2 |
67
+ | child sizing | strict | The single child is stretched to fill; provide one media element |
68
+
69
+ ## AI context prompt
70
+
71
+ Copy this into an LLM context bar before editing this component:
72
+
73
+ ```text
74
+ I am modifying the cascivo AspectRatio component (layout). Constrains content to a fixed width-to-height ratio
75
+
76
+ Architecture constraints — follow exactly:
77
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
78
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
79
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
80
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
81
+ - CSS logical properties only (RTL-safe).
82
+
83
+ AspectRatio is strictly bound to these tokens — use only these, do not invent token names:
84
+ --cascivo-aspect-ratio
85
+
86
+ Accessibility: role "none", WCAG 2.2-AA. Keep it AA.
87
+
88
+ Do not change (strict): child sizing — The single child is stretched to fill; provide one media element
89
+ Flexible: ratio.
90
+
91
+ Do not invent props, tokens, or global viewport media queries.
92
+ ```
@@ -0,0 +1,111 @@
1
+ # AvatarGroup
2
+
3
+ **Category:** display
4
+ **Description:** Overlapping stack of avatars with a max cap and an i18n-labelled +N overflow chip
5
+
6
+ ## When to use
7
+
8
+ - Showing several people compactly as an overlapping stack (collaborators, attendees, reviewers)
9
+ - Capping a long list of avatars with a +N overflow chip
10
+ - A facepile in a card header, table cell, or activity row
11
+
12
+ ## When NOT to use
13
+
14
+ - A single identity with a name — use User or Avatar
15
+ - A selectable list of people — use a list/menu with checkboxes
16
+
17
+ ## Anti-patterns
18
+
19
+ ### Without a max the row grows unbounded; a cap plus total keeps it compact and accurate
20
+
21
+ **Bad:** `<AvatarGroup>{hundredsOfAvatars}</AvatarGroup> with no max`
22
+ **Good:** `<AvatarGroup max={5} total={120}>{avatars}</AvatarGroup>`
23
+ **Why:** Without a max the row grows unbounded; a cap plus total keeps it compact and accurate
24
+
25
+ ## Related components
26
+
27
+ - **Avatar** (contains): AvatarGroup arranges Avatar children and adds an overflow chip
28
+ - **User** (alternative): Use User for a single labelled identity row
29
+
30
+ ## Accessibility rationale
31
+
32
+ The stack is a labelled group; the +N chip carries an i18n-defaulted aria-label ("{count} more") so the hidden count is announced, not conveyed by the chip text alone
33
+
34
+ ## Props
35
+
36
+ | Name | Type | Required | Default | Description |
37
+ | --------- | ---------------------- | -------- | ------- | -------------------------------------------------------------------------- |
38
+ | `max` | `number` | No | — | Cap the number of visible avatars |
39
+ | `total` | `number` | No | — | Override the total count used for the +N chip |
40
+ | `spacing` | `'sm' \| 'md' \| 'lg'` | No | md | Spacing between items. |
41
+ | `isGrid` | `boolean` | No | false | When true, lays the avatars out in a grid instead of an overlapping stack. |
42
+ | `labels` | `AvatarGroupLabels` | No | — | Overrides for the component’s user-visible strings (i18n). |
43
+
44
+ ## Tokens
45
+
46
+ - `--cascivo-color-surface`
47
+ - `--cascivo-color-text-muted`
48
+ - `--cascivo-space-2`
49
+ - `--cascivo-text-xs`
50
+
51
+ ## Examples
52
+
53
+ ### Basic
54
+
55
+ ```jsx
56
+ <AvatarGroup>
57
+ <Avatar fallback="A" />
58
+ <Avatar fallback="B" />
59
+ <Avatar fallback="C" />
60
+ </AvatarGroup>
61
+ ```
62
+
63
+ ### With max
64
+
65
+ ```jsx
66
+ <AvatarGroup max={3}>
67
+ {users.map((u) => (
68
+ <Avatar key={u.id} src={u.src} alt={u.name} />
69
+ ))}
70
+ </AvatarGroup>
71
+ ```
72
+
73
+ ### Grid
74
+
75
+ ```jsx
76
+ <AvatarGroup isGrid max={8}>
77
+ {avatars}
78
+ </AvatarGroup>
79
+ ```
80
+
81
+ ## Boundaries
82
+
83
+ | Area | Level | Note |
84
+ | -------------- | -------- | -------------------------------------------------------------------------------- |
85
+ | spacing | flexible | Pick the overlap that fits the surrounding density |
86
+ | overflow label | strict | The +N label must come from i18n (builtin.avatarGroup.more or a labels override) |
87
+
88
+ ## AI context prompt
89
+
90
+ Copy this into an LLM context bar before editing this component:
91
+
92
+ ```text
93
+ I am modifying the cascivo AvatarGroup component (display). Overlapping stack of avatars with a max cap and an i18n-labelled +N overflow chip
94
+
95
+ Architecture constraints — follow exactly:
96
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
97
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
98
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
99
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
100
+ - CSS logical properties only (RTL-safe).
101
+
102
+ AvatarGroup is strictly bound to these tokens — use only these, do not invent token names:
103
+ --cascivo-color-surface, --cascivo-color-text-muted, --cascivo-space-2, --cascivo-text-xs
104
+
105
+ Accessibility: role "group", WCAG 2.2-AA. Keep it AA.
106
+
107
+ Do not change (strict): overflow label — The +N label must come from i18n (builtin.avatarGroup.more or a labels override)
108
+ Flexible: spacing.
109
+
110
+ Do not invent props, tokens, or global viewport media queries.
111
+ ```
@@ -0,0 +1,100 @@
1
+ # Avatar
2
+
3
+ **Category:** display
4
+ **Description:** Displays a user image with initials fallback
5
+
6
+ ## When to use
7
+
8
+ - Representing a person or entity with a thumbnail image and initials fallback
9
+ - Showing presence/status alongside an identity (status prop)
10
+ - Compactly identifying authors in lists, comments, and headers
11
+
12
+ ## When NOT to use
13
+
14
+ - Decorative imagery unrelated to identity — use a plain <img>
15
+ - A generic icon or logo with no person/entity meaning
16
+
17
+ ## Anti-patterns
18
+
19
+ ### Without alt/fallback the identity is invisible to assistive tech and breaks on image load failure
20
+
21
+ **Bad:** `<Avatar src="/logo.png" /> with no alt and no fallback`
22
+ **Good:** `<Avatar src="/jane.jpg" alt="Jane Doe" fallback="JD" />`
23
+ **Why:** Without alt/fallback the identity is invisible to assistive tech and breaks on image load failure
24
+
25
+ ## Related components
26
+
27
+ - **Status** (alternative): Use Status for a standalone state dot not attached to an identity
28
+
29
+ ## Accessibility rationale
30
+
31
+ role="img" with alt names the person; on image error it falls back to initials so the identity survives; the status dot carries an accessible label rather than relying on color alone
32
+
33
+ ## Props
34
+
35
+ | Name | Type | Required | Default | Description |
36
+ | ---------- | -------------------------------------- | -------- | ------- | ----------------------------------------------------- |
37
+ | `src` | `string` | No | — | Image source URL. |
38
+ | `alt` | `string` | No | — | Alternative text describing the image. |
39
+ | `fallback` | `string` | No | — | Initials shown when no image is available |
40
+ | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | No | md | Visual size of the component (e.g. 'sm', 'md', 'lg'). |
41
+ | `status` | `'online' \| 'offline' \| 'busy'` | No | — | Status state. |
42
+
43
+ ## Tokens
44
+
45
+ - `--cascivo-color-accent-subtle`
46
+ - `--cascivo-color-success`
47
+ - `--cascivo-color-destructive`
48
+ - `--cascivo-radius-full`
49
+
50
+ ## Examples
51
+
52
+ ### Image
53
+
54
+ ```jsx
55
+ <Avatar src="/jane.jpg" alt="Jane Doe" />
56
+ ```
57
+
58
+ ### Fallback
59
+
60
+ ```jsx
61
+ <Avatar fallback="JD" alt="Jane Doe" />
62
+ ```
63
+
64
+ ### With status
65
+
66
+ ```jsx
67
+ <Avatar fallback="JD" status="online" />
68
+ ```
69
+
70
+ ## Boundaries
71
+
72
+ | Area | Level | Note |
73
+ | ----------- | -------- | ----------------------------------------------------------------------- |
74
+ | size | flexible | Pick the size that fits the surrounding density |
75
+ | token names | strict | Fallback and status colors must resolve to --cascivo-\* semantic tokens |
76
+
77
+ ## AI context prompt
78
+
79
+ Copy this into an LLM context bar before editing this component:
80
+
81
+ ```text
82
+ I am modifying the cascivo Avatar component (display). Displays a user image with initials fallback
83
+
84
+ Architecture constraints — follow exactly:
85
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
86
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
87
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
88
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
89
+ - CSS logical properties only (RTL-safe).
90
+
91
+ Avatar is strictly bound to these tokens — use only these, do not invent token names:
92
+ --cascivo-color-accent-subtle, --cascivo-color-success, --cascivo-color-destructive, --cascivo-radius-full
93
+
94
+ Accessibility: role "img", WCAG 2.2-AA. Keep it AA.
95
+
96
+ Do not change (strict): token names — Fallback and status colors must resolve to --cascivo-* semantic tokens
97
+ Flexible: size.
98
+
99
+ Do not invent props, tokens, or global viewport media queries.
100
+ ```
@@ -0,0 +1,119 @@
1
+ # Badge
2
+
3
+ **Category:** display
4
+ **Description:** Small status label or category indicator
5
+
6
+ ## When to use
7
+
8
+ - Labeling an item with a short, static status or category (e.g. "New", "Beta")
9
+ - Annotating an element with a count or state that is not interactive
10
+
11
+ ## When NOT to use
12
+
13
+ - A removable or interactive chip (filters, selections) — use Tag
14
+ - A standalone system state with a colored dot — use Status
15
+
16
+ ## Anti-patterns
17
+
18
+ ### Badge is a non-interactive label; interactive/removable labels belong to Tag with proper button semantics
19
+
20
+ **Bad:** `<Badge onClick={removeFilter}>Active</Badge>`
21
+ **Good:** `<Tag onDismiss={removeFilter}>Active</Tag>`
22
+ **Why:** Badge is a non-interactive label; interactive/removable labels belong to Tag with proper button semantics
23
+
24
+ ## Related components
25
+
26
+ - **Tag** (alternative): Tag is the interactive, dismissible counterpart
27
+ - **Status** (alternative): Status pairs a colored dot with a label for live system state
28
+
29
+ ## Accessibility rationale
30
+
31
+ role="status" lets assistive tech expose the label as state; meaning is reinforced by text, never by color alone
32
+
33
+ ## Props
34
+
35
+ | Name | Type | Required | Default | Description |
36
+ | --------- | ---------------------------------------------------------------------------------- | -------- | ------- | ----------------------------------------------------- |
37
+ | `variant` | `'default' \| 'secondary' \| 'success' \| 'warning' \| 'destructive' \| 'outline'` | No | default | Selects the visual style variant. |
38
+ | `size` | `'sm' \| 'md'` | No | md | Visual size of the component (e.g. 'sm', 'md', 'lg'). |
39
+
40
+ ## Tokens
41
+
42
+ - `--cascivo-font-sans`
43
+ - `--cascivo-font-medium`
44
+ - `--cascivo-radius-badge`
45
+ - `--cascivo-space-1`
46
+ - `--cascivo-space-2`
47
+ - `--cascivo-space-3`
48
+ - `--cascivo-text-xs`
49
+ - `--cascivo-leading-normal`
50
+ - `--cascivo-color-accent`
51
+ - `--cascivo-color-text-on-accent`
52
+ - `--cascivo-color-bg-subtle`
53
+ - `--cascivo-color-text`
54
+ - `--cascivo-color-border`
55
+ - `--cascivo-color-border-strong`
56
+ - `--cascivo-color-success-subtle`
57
+ - `--cascivo-color-success-foreground`
58
+ - `--cascivo-color-warning-subtle`
59
+ - `--cascivo-color-warning-foreground`
60
+ - `--cascivo-color-destructive-subtle`
61
+ - `--cascivo-color-destructive-foreground`
62
+ - `--cascivo-color-primary`
63
+ - `--cascivo-color-primary-content`
64
+ - `--cascivo-color-info`
65
+ - `--cascivo-color-info-content`
66
+ - `--cascivo-color-error`
67
+ - `--cascivo-color-error-content`
68
+
69
+ ## Examples
70
+
71
+ ### Default
72
+
73
+ ```jsx
74
+ <Badge>New</Badge>
75
+ ```
76
+
77
+ ### Success
78
+
79
+ ```jsx
80
+ <Badge variant="success">Active</Badge>
81
+ ```
82
+
83
+ ### Destructive
84
+
85
+ ```jsx
86
+ <Badge variant="destructive">Deprecated</Badge>
87
+ ```
88
+
89
+ ## Boundaries
90
+
91
+ | Area | Level | Note |
92
+ | ----------- | -------- | ------------------------------------------------------------------------------ |
93
+ | variant | flexible | Choose the variant that matches the semantic meaning |
94
+ | token names | strict | Colors and radius must resolve to --cascivo-\* tokens (--cascivo-radius-badge) |
95
+
96
+ ## AI context prompt
97
+
98
+ Copy this into an LLM context bar before editing this component:
99
+
100
+ ```text
101
+ I am modifying the cascivo Badge component (display). Small status label or category indicator
102
+
103
+ Architecture constraints — follow exactly:
104
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
105
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
106
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
107
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
108
+ - CSS logical properties only (RTL-safe).
109
+
110
+ Badge is strictly bound to these tokens — use only these, do not invent token names:
111
+ --cascivo-font-sans, --cascivo-font-medium, --cascivo-radius-badge, --cascivo-space-1, --cascivo-space-2, --cascivo-space-3, --cascivo-text-xs, --cascivo-leading-normal, --cascivo-color-accent, --cascivo-color-text-on-accent, --cascivo-color-bg-subtle, --cascivo-color-text, --cascivo-color-border, --cascivo-color-border-strong, --cascivo-color-success-subtle, --cascivo-color-success-foreground, --cascivo-color-warning-subtle, --cascivo-color-warning-foreground, --cascivo-color-destructive-subtle, --cascivo-color-destructive-foreground, --cascivo-color-primary, --cascivo-color-primary-content, --cascivo-color-info, --cascivo-color-info-content, --cascivo-color-error, --cascivo-color-error-content
112
+
113
+ Accessibility: role "status", WCAG 2.2-AA. Keep it AA.
114
+
115
+ Do not change (strict): token names — Colors and radius must resolve to --cascivo-* tokens (--cascivo-radius-badge)
116
+ Flexible: variant.
117
+
118
+ Do not invent props, tokens, or global viewport media queries.
119
+ ```
@@ -0,0 +1,66 @@
1
+ # ConsoleApp
2
+
3
+ **Category:** display
4
+ **Description:** Carbon-parity console shell: ShellHeader + icon-rail SideNav + HeaderPanel notifications/switcher + collapsible aside + main content.
5
+
6
+ ## When to use
7
+
8
+ - A Carbon-parity console shell with icon-rail nav, header panels, and aside
9
+ - Admin or operations consoles needing dense, app-like navigation
10
+
11
+ ## When NOT to use
12
+
13
+ - A simpler sidebar app — use SidebarApp
14
+ - A bare shell to fully customise — use AppShell
15
+
16
+ ## Related components
17
+
18
+ - **SidebarApp** (alternative): Use for a lighter, less dense sidebar app frame
19
+ - **AppShell** (alternative): Use the bare shell to compose custom console chrome
20
+
21
+ ## Accessibility rationale
22
+
23
+ Provides header, navigation, and complementary landmarks for screen reader orientation.
24
+
25
+ ## Tokens
26
+
27
+ - `--cascivo-shell-header-block-size`
28
+ - `--cascivo-shell-panel-inline-size`
29
+ - `--cascivo-shell-aside-inline-size`
30
+ - `--cascivo-color-border`
31
+ - `--cascivo-color-surface`
32
+ - `--cascivo-color-scrim`
33
+ - `--cascivo-motion-enter`
34
+ - `--cascivo-motion-exit`
35
+
36
+ ## Examples
37
+
38
+ ### Default
39
+
40
+ Full console shell demo
41
+
42
+ ```jsx
43
+ <ConsoleApp />
44
+ ```
45
+
46
+ ## AI context prompt
47
+
48
+ Copy this into an LLM context bar before editing this component:
49
+
50
+ ```text
51
+ I am modifying the cascivo ConsoleApp component (display). Carbon-parity console shell: ShellHeader + icon-rail SideNav + HeaderPanel notifications/switcher + collapsible aside + main content.
52
+
53
+ Architecture constraints — follow exactly:
54
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
55
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
56
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
57
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
58
+ - CSS logical properties only (RTL-safe).
59
+
60
+ ConsoleApp is strictly bound to these tokens — use only these, do not invent token names:
61
+ --cascivo-shell-header-block-size, --cascivo-shell-panel-inline-size, --cascivo-shell-aside-inline-size, --cascivo-color-border, --cascivo-color-surface, --cascivo-color-scrim, --cascivo-motion-enter, --cascivo-motion-exit
62
+
63
+ Accessibility: role "generic", WCAG 2.1-AA, keyboard: Escape/Tab. Keep it AA.
64
+
65
+ Do not invent props, tokens, or global viewport media queries.
66
+ ```
@@ -0,0 +1,61 @@
1
+ # DashboardCharts
2
+
3
+ **Category:** display
4
+ **Description:** Dashboard layout with KPI tiles, line chart, bar chart, and pie chart.
5
+
6
+ ## When to use
7
+
8
+ - A prebuilt dashboard with KPI tiles, line, bar, and pie charts
9
+ - Quickly demonstrating or scaffolding an analytics overview
10
+
11
+ ## When NOT to use
12
+
13
+ - You only need the layout frame — use DashboardLayout
14
+ - A single metric display — use a Kpi card
15
+
16
+ ## Related components
17
+
18
+ - **DashboardLayout** (contained-by): Composes the dashboard layout frame
19
+ - **StatsCards** (alternative): Use when you only need the KPI tile row
20
+
21
+ ## Accessibility rationale
22
+
23
+ Charts within render with role="img" and titled labels for screen readers.
24
+
25
+ ## Props
26
+
27
+ | Name | Type | Required | Default | Description |
28
+ | ----------- | -------- | -------- | ------- | ------------------------------------------------------------------------ |
29
+ | `className` | `string` | No | — | Additional CSS class names merged onto the root DashboardLayout element. |
30
+
31
+ ## Examples
32
+
33
+ ### Default
34
+
35
+ Charts dashboard demo
36
+
37
+ ```jsx
38
+ <DashboardCharts />
39
+ ```
40
+
41
+ ## AI context prompt
42
+
43
+ Copy this into an LLM context bar before editing this component:
44
+
45
+ ```text
46
+ I am modifying the cascivo DashboardCharts component (display). Dashboard layout with KPI tiles, line chart, bar chart, and pie chart.
47
+
48
+ Architecture constraints — follow exactly:
49
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
50
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
51
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
52
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
53
+ - CSS logical properties only (RTL-safe).
54
+
55
+ DashboardCharts is strictly bound to these tokens — use only these, do not invent token names:
56
+ none declared
57
+
58
+ Accessibility: role "generic", WCAG 2.1-AA. Keep it AA.
59
+
60
+ Do not invent props, tokens, or global viewport media queries.
61
+ ```
@@ -0,0 +1,60 @@
1
+ # EmptyDashboard
2
+
3
+ **Category:** display
4
+ **Description:** Dashboard page showing an empty state with a call-to-action button.
5
+
6
+ ## When to use
7
+
8
+ - A first-run or zero-data dashboard with an empty state and primary CTA
9
+ - Guiding users to create their first item
10
+
11
+ ## When NOT to use
12
+
13
+ - Data already exists — use DashboardCharts or DashboardLayout
14
+ - A generic empty state inside a component — use an inline EmptyState
15
+
16
+ ## Related components
17
+
18
+ - **DashboardCharts** (alternative): Use once the dashboard has data to display
19
+
20
+ ## Accessibility rationale
21
+
22
+ Provides a main landmark with a clear heading and actionable CTA.
23
+
24
+ ## Props
25
+
26
+ | Name | Type | Required | Default | Description |
27
+ | -------------- | ------------ | -------- | ------- | -------------------------- |
28
+ | `onCreateItem` | `() => void` | No | — | Create item button handler |
29
+
30
+ ## Examples
31
+
32
+ ### Default
33
+
34
+ Empty dashboard
35
+
36
+ ```jsx
37
+ <EmptyDashboard />
38
+ ```
39
+
40
+ ## AI context prompt
41
+
42
+ Copy this into an LLM context bar before editing this component:
43
+
44
+ ```text
45
+ I am modifying the cascivo EmptyDashboard component (display). Dashboard page showing an empty state with a call-to-action button.
46
+
47
+ Architecture constraints — follow exactly:
48
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
49
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
50
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
51
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
52
+ - CSS logical properties only (RTL-safe).
53
+
54
+ EmptyDashboard is strictly bound to these tokens — use only these, do not invent token names:
55
+ none declared
56
+
57
+ Accessibility: role "generic", WCAG 2.1-AA. Keep it AA.
58
+
59
+ Do not invent props, tokens, or global viewport media queries.
60
+ ```
@@ -0,0 +1,60 @@
1
+ # LoginPage
2
+
3
+ **Category:** display
4
+ **Description:** Authentication login page with email and password form.
5
+
6
+ ## When to use
7
+
8
+ - A complete login page with email and password form
9
+ - Standing up authentication quickly with validation built in
10
+
11
+ ## When NOT to use
12
+
13
+ - You only need the centered auth frame — use AuthLayout
14
+ - A multi-step signup or onboarding flow
15
+
16
+ ## Related components
17
+
18
+ - **AuthLayout** (contained-by): Renders inside the centered auth layout
19
+
20
+ ## Accessibility rationale
21
+
22
+ Form fields are labeled and validation messages are associated for screen readers.
23
+
24
+ ## Props
25
+
26
+ | Name | Type | Required | Default | Description |
27
+ | ---------- | ------------------------------- | -------- | ------- | --------------------------------------- |
28
+ | `onSubmit` | `(values: LoginValues) => void` | No | — | Called with valid form values on submit |
29
+
30
+ ## Examples
31
+
32
+ ### Default
33
+
34
+ Login page
35
+
36
+ ```jsx
37
+ <LoginPage />
38
+ ```
39
+
40
+ ## AI context prompt
41
+
42
+ Copy this into an LLM context bar before editing this component:
43
+
44
+ ```text
45
+ I am modifying the cascivo LoginPage component (display). Authentication login page with email and password form.
46
+
47
+ Architecture constraints — follow exactly:
48
+ - Signals only (useSignal/useComputed/useSignalEffect from @cascivo/core). Never useState/useEffect/useContext/useReducer.
49
+ - Style only through --cascivo-* custom properties. No Tailwind, no inline styles, no CSS-in-JS.
50
+ - Responsive via @container queries on the canonical scale (30rem/40rem/64rem/80rem). Do not use global viewport @media breakpoints.
51
+ - Visual states (hover/focus/active/disabled) via CSS pseudo-classes, not JS.
52
+ - CSS logical properties only (RTL-safe).
53
+
54
+ LoginPage is strictly bound to these tokens — use only these, do not invent token names:
55
+ none declared
56
+
57
+ Accessibility: role "generic", WCAG 2.1-AA. Keep it AA.
58
+
59
+ Do not invent props, tokens, or global viewport media queries.
60
+ ```