@devalok/shilp-sutra 0.48.0 → 0.49.1

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 (261) hide show
  1. package/BREAKING.json +32 -0
  2. package/MIGRATION.md +891 -881
  3. package/dist/_chunks/badge-group.js +52 -65
  4. package/dist/_chunks/badge-group.js.map +1 -1
  5. package/dist/_chunks/block-shell.js +1 -1
  6. package/dist/_chunks/chart-container.js +1 -1
  7. package/dist/_chunks/chat.js +4 -4
  8. package/dist/_chunks/chat.js.map +1 -1
  9. package/dist/_chunks/colors.js +2 -2
  10. package/dist/_chunks/document-preview.js +4 -4
  11. package/dist/_chunks/emoji-suggestion.js +5 -5
  12. package/dist/_chunks/emoji-suggestion.js.map +1 -1
  13. package/dist/_chunks/emoji.js +1 -1
  14. package/dist/_chunks/field-state.js +8 -0
  15. package/dist/_chunks/field-state.js.map +1 -0
  16. package/dist/_chunks/grid-lines.js +1 -1
  17. package/dist/_chunks/image-preview.js +7 -7
  18. package/dist/_chunks/keybinding.js +1 -1
  19. package/dist/_chunks/link-context.js +1 -1
  20. package/dist/_chunks/mention-suggestion.js +2 -2
  21. package/dist/_chunks/mention.js +1 -1
  22. package/dist/_chunks/motion-provider.js +1 -1
  23. package/dist/_chunks/normalize-icon.js +1 -1
  24. package/dist/_chunks/oauth-button.js +2 -2
  25. package/dist/_chunks/popover.js +55 -52
  26. package/dist/_chunks/popover.js.map +1 -1
  27. package/dist/_chunks/primitives.js +155 -155
  28. package/dist/_chunks/primitives.js.map +1 -1
  29. package/dist/_chunks/shared.js +5 -5
  30. package/dist/_chunks/success.js +4 -4
  31. package/dist/_chunks/tiptap.js +8 -8
  32. package/dist/_chunks/tooltip.js +1 -1
  33. package/dist/_chunks/tree-view.js +2 -2
  34. package/dist/_chunks/use-calendar.js +2 -2
  35. package/dist/_chunks/use-calendar.js.map +1 -1
  36. package/dist/_chunks/use-controllable-open.js +15 -0
  37. package/dist/_chunks/use-controllable-open.js.map +1 -0
  38. package/dist/_chunks/vendor-client.js +1 -1
  39. package/dist/_chunks/vendor-utils.js +1 -1
  40. package/dist/ai/block-renderer.js +7 -7
  41. package/dist/ai/blocks/error.js +1 -1
  42. package/dist/ai/blocks/index.js +2 -2
  43. package/dist/ai/blocks/text.js +1 -1
  44. package/dist/ai/command-bar.js +6 -6
  45. package/dist/ai/conversation.js +2 -2
  46. package/dist/ai/index.js +3 -3
  47. package/dist/composed/avatar-group.js +1 -1
  48. package/dist/composed/bulk-action-bar.js +1 -1
  49. package/dist/composed/command-palette.js +9 -9
  50. package/dist/composed/command-palette.js.map +1 -1
  51. package/dist/composed/confirm-dialog.js +3 -3
  52. package/dist/composed/confirm-dialog.js.map +1 -1
  53. package/dist/composed/content-card.js +1 -1
  54. package/dist/composed/date-picker/index.js +13 -13
  55. package/dist/composed/date-picker/index.js.map +1 -1
  56. package/dist/composed/emoji-picker.js +4 -4
  57. package/dist/composed/empty-state.js +1 -1
  58. package/dist/composed/error-boundary.js +1 -1
  59. package/dist/composed/error-boundary.js.map +1 -1
  60. package/dist/composed/extensions/emoji-node.js +1 -1
  61. package/dist/composed/extensions/emoji-suggestion.js +1 -1
  62. package/dist/composed/file-preview.js +14 -14
  63. package/dist/composed/filter-bar.js +1 -1
  64. package/dist/composed/index.d.ts +3 -1
  65. package/dist/composed/index.d.ts.map +1 -1
  66. package/dist/composed/index.js +4 -3
  67. package/dist/composed/loading-skeleton.js +15 -15
  68. package/dist/composed/loading-skeleton.js.map +1 -1
  69. package/dist/composed/multi-select-popover.js +3 -3
  70. package/dist/composed/page-header.d.ts.map +1 -1
  71. package/dist/composed/page-header.js +32 -45
  72. package/dist/composed/page-header.js.map +1 -1
  73. package/dist/composed/page-skeletons.js +19 -19
  74. package/dist/composed/page-skeletons.js.map +1 -1
  75. package/dist/composed/priority-indicator.js +1 -1
  76. package/dist/composed/responsive-modal.d.ts +39 -0
  77. package/dist/composed/responsive-modal.d.ts.map +1 -0
  78. package/dist/composed/responsive-modal.js +212 -0
  79. package/dist/composed/responsive-modal.js.map +1 -0
  80. package/dist/composed/rich-chat-input.js +445 -445
  81. package/dist/composed/rich-chat-input.js.map +1 -1
  82. package/dist/composed/rich-text-editor.js +29 -29
  83. package/dist/composed/rich-text-editor.js.map +1 -1
  84. package/dist/composed/schedule-view.d.ts +1 -1
  85. package/dist/composed/schedule-view.d.ts.map +1 -1
  86. package/dist/composed/schedule-view.js +48 -54
  87. package/dist/composed/schedule-view.js.map +1 -1
  88. package/dist/composed/status-badge.d.ts +13 -11
  89. package/dist/composed/status-badge.d.ts.map +1 -1
  90. package/dist/composed/status-badge.js +54 -130
  91. package/dist/composed/status-badge.js.map +1 -1
  92. package/dist/motion/index.js +2 -2
  93. package/dist/shell/bottom-navbar.js +3 -3
  94. package/dist/shell/bottom-navbar.js.map +1 -1
  95. package/dist/shell/index.js +2 -2
  96. package/dist/shell/link-context.js +2 -2
  97. package/dist/shell/notification-center.js +3 -3
  98. package/dist/shell/sidebar.js +2 -2
  99. package/dist/shell/top-bar.js +2 -2
  100. package/dist/shell/top-bar.js.map +1 -1
  101. package/dist/tokens/semantic.css +8 -1
  102. package/dist/ui/accordion.js +11 -11
  103. package/dist/ui/alert-dialog.js +34 -34
  104. package/dist/ui/alert.js +1 -1
  105. package/dist/ui/aspect-ratio.js +1 -1
  106. package/dist/ui/autocomplete.js +7 -7
  107. package/dist/ui/avatar.d.ts.map +1 -1
  108. package/dist/ui/avatar.js +84 -79
  109. package/dist/ui/avatar.js.map +1 -1
  110. package/dist/ui/badge-group.js +1 -1
  111. package/dist/ui/badge.d.ts.map +1 -1
  112. package/dist/ui/badge.js +1 -1
  113. package/dist/ui/banner.js +1 -1
  114. package/dist/ui/breadcrumb.d.ts +0 -1
  115. package/dist/ui/breadcrumb.d.ts.map +1 -1
  116. package/dist/ui/breadcrumb.js +58 -35
  117. package/dist/ui/breadcrumb.js.map +1 -1
  118. package/dist/ui/button.js +3 -3
  119. package/dist/ui/card.js +1 -1
  120. package/dist/ui/charts/area-chart.js +6 -6
  121. package/dist/ui/charts/bar-chart.js +6 -6
  122. package/dist/ui/charts/chart-container.js +1 -1
  123. package/dist/ui/charts/gauge-chart.js +2 -2
  124. package/dist/ui/charts/index.js +2 -2
  125. package/dist/ui/charts/line-chart.js +6 -6
  126. package/dist/ui/charts/pie-chart.js +5 -5
  127. package/dist/ui/charts/radar-chart.js +5 -5
  128. package/dist/ui/charts/sparkline.js +2 -2
  129. package/dist/ui/chat/index.js +2 -2
  130. package/dist/ui/checkbox.d.ts +4 -2
  131. package/dist/ui/checkbox.d.ts.map +1 -1
  132. package/dist/ui/checkbox.js +33 -28
  133. package/dist/ui/checkbox.js.map +1 -1
  134. package/dist/ui/collapsible.js +5 -5
  135. package/dist/ui/color-input.js +4 -4
  136. package/dist/ui/combobox.d.ts +3 -0
  137. package/dist/ui/combobox.d.ts.map +1 -1
  138. package/dist/ui/combobox.js +137 -132
  139. package/dist/ui/combobox.js.map +1 -1
  140. package/dist/ui/context-menu.js +32 -32
  141. package/dist/ui/dialog.d.ts.map +1 -1
  142. package/dist/ui/dialog.js +49 -46
  143. package/dist/ui/dialog.js.map +1 -1
  144. package/dist/ui/dot.d.ts +38 -0
  145. package/dist/ui/dot.d.ts.map +1 -0
  146. package/dist/ui/dot.js +92 -0
  147. package/dist/ui/dot.js.map +1 -0
  148. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  149. package/dist/ui/dropdown-menu.js +81 -76
  150. package/dist/ui/dropdown-menu.js.map +1 -1
  151. package/dist/ui/hover-card.js +6 -6
  152. package/dist/ui/icon-button.js +1 -1
  153. package/dist/ui/index.d.ts +3 -2
  154. package/dist/ui/index.d.ts.map +1 -1
  155. package/dist/ui/index.js +67 -67
  156. package/dist/ui/index.js.map +1 -1
  157. package/dist/ui/input-otp.js +1 -1
  158. package/dist/ui/input-otp.js.map +1 -1
  159. package/dist/ui/input.d.ts +4 -2
  160. package/dist/ui/input.d.ts.map +1 -1
  161. package/dist/ui/input.js +39 -38
  162. package/dist/ui/input.js.map +1 -1
  163. package/dist/ui/label.js +1 -1
  164. package/dist/ui/lib/field-state.d.ts +21 -0
  165. package/dist/ui/lib/field-state.d.ts.map +1 -0
  166. package/dist/ui/lib/use-controllable-open.d.ts +32 -0
  167. package/dist/ui/lib/use-controllable-open.d.ts.map +1 -0
  168. package/dist/ui/lib/utils.js +4 -4
  169. package/dist/ui/link.js +1 -1
  170. package/dist/ui/menubar.js +53 -53
  171. package/dist/ui/navigation-menu.js +27 -27
  172. package/dist/ui/number-input.d.ts +4 -2
  173. package/dist/ui/number-input.d.ts.map +1 -1
  174. package/dist/ui/number-input.js +52 -51
  175. package/dist/ui/number-input.js.map +1 -1
  176. package/dist/ui/oauth-button/index.js +2 -2
  177. package/dist/ui/pagination.js +1 -1
  178. package/dist/ui/popover.d.ts.map +1 -1
  179. package/dist/ui/popover.js +2 -2
  180. package/dist/ui/progress.d.ts +66 -42
  181. package/dist/ui/progress.d.ts.map +1 -1
  182. package/dist/ui/progress.js +144 -40
  183. package/dist/ui/progress.js.map +1 -1
  184. package/dist/ui/radio.d.ts +6 -2
  185. package/dist/ui/radio.d.ts.map +1 -1
  186. package/dist/ui/radio.js +44 -33
  187. package/dist/ui/radio.js.map +1 -1
  188. package/dist/ui/segmented-control.js +1 -1
  189. package/dist/ui/select.d.ts +1 -1
  190. package/dist/ui/select.d.ts.map +1 -1
  191. package/dist/ui/select.js +56 -55
  192. package/dist/ui/select.js.map +1 -1
  193. package/dist/ui/separator.js +2 -2
  194. package/dist/ui/separator.js.map +1 -1
  195. package/dist/ui/sheet.d.ts.map +1 -1
  196. package/dist/ui/sheet.js +56 -53
  197. package/dist/ui/sheet.js.map +1 -1
  198. package/dist/ui/sidebar.js +6 -6
  199. package/dist/ui/sidebar.js.map +1 -1
  200. package/dist/ui/skeleton.js +1 -1
  201. package/dist/ui/slider.js +8 -8
  202. package/dist/ui/slider.js.map +1 -1
  203. package/dist/ui/split-button.js +3 -3
  204. package/dist/ui/stat-card.d.ts.map +1 -1
  205. package/dist/ui/stat-card.js +123 -126
  206. package/dist/ui/stat-card.js.map +1 -1
  207. package/dist/ui/stat-flash.js +1 -1
  208. package/dist/ui/stepper.js +1 -1
  209. package/dist/ui/surface.js +2 -2
  210. package/dist/ui/switch.d.ts +3 -1
  211. package/dist/ui/switch.d.ts.map +1 -1
  212. package/dist/ui/switch.js +32 -27
  213. package/dist/ui/switch.js.map +1 -1
  214. package/dist/ui/table-row-link.js +1 -1
  215. package/dist/ui/tabs.js +13 -13
  216. package/dist/ui/text.js +1 -1
  217. package/dist/ui/textarea.d.ts +3 -3
  218. package/dist/ui/textarea.d.ts.map +1 -1
  219. package/dist/ui/textarea.js +19 -18
  220. package/dist/ui/textarea.js.map +1 -1
  221. package/dist/ui/toast.js +2 -2
  222. package/dist/ui/toast.js.map +1 -1
  223. package/dist/ui/toggle-group.js +1 -1
  224. package/dist/ui/toggle.js +2 -2
  225. package/dist/ui/tooltip.d.ts.map +1 -1
  226. package/dist/ui/tooltip.js +37 -34
  227. package/dist/ui/tooltip.js.map +1 -1
  228. package/dist/ui/tree-view/index.js +2 -2
  229. package/docs/components/ai/ai-command-provider.md +46 -0
  230. package/docs/components/ai/block-renderer.md +59 -0
  231. package/docs/components/ai/command-bar.md +78 -0
  232. package/docs/components/ai/conversation.md +59 -0
  233. package/docs/components/ai/devadoot-icon.md +41 -0
  234. package/docs/components/composed/page-header.md +1 -1
  235. package/docs/components/composed/responsive-modal.md +66 -0
  236. package/docs/components/composed/schedule-view.md +6 -2
  237. package/docs/components/ui/breadcrumb.md +1 -1
  238. package/docs/components/ui/checkbox.md +4 -1
  239. package/docs/components/ui/combobox.md +4 -0
  240. package/docs/components/ui/dot.md +61 -0
  241. package/docs/components/ui/progress.md +54 -16
  242. package/docs/components/ui/radio.md +6 -2
  243. package/docs/components/ui/select.md +9 -5
  244. package/docs/components/ui/switch.md +4 -1
  245. package/docs/components/ui/table.md +2 -1
  246. package/llms.txt +11 -3
  247. package/make-kit/components/form.md +2 -2
  248. package/make-kit/components/icon.md +2 -2
  249. package/make-kit/components/overview.md +2 -2
  250. package/make-kit/components/select.md +1 -1
  251. package/make-kit/components/table.md +1 -1
  252. package/mcp-manifest.json +2656 -1068
  253. package/mcp-manifest.schema.json +18 -0
  254. package/package.json +11 -6
  255. package/skill/SKILL.md +1 -1
  256. package/skill/references/components.md +11 -3
  257. package/dist/ui/status-dot.d.ts +0 -27
  258. package/dist/ui/status-dot.d.ts.map +0 -1
  259. package/dist/ui/status-dot.js +0 -68
  260. package/dist/ui/status-dot.js.map +0 -1
  261. package/docs/components/ui/status-dot.md +0 -35
@@ -70,6 +70,24 @@
70
70
  "description": "Convenience mirror of each prop's defaultValue for props with defaults (from the doc's Defaults section).",
71
71
  "additionalProperties": { "type": ["string", "number", "boolean"] }
72
72
  },
73
+ "subComponents": {
74
+ "type": "object",
75
+ "description": "Props owned by compound subcomponents, parsed from `### Subpart` headings inside the doc's Props section. Keeps a child's props OFF the root entry: a `numeric` prop belonging to TableCell must not read as a prop of <Table>, or an agent writes `<Table numeric>` and hits TS2322 (#132). Keyed by subcomponent display name.",
76
+ "patternProperties": {
77
+ "^[A-Za-z][A-Za-z0-9.]*$": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "properties": {
81
+ "note": { "type": "string", "description": "Parenthetical from the subpart heading — e.g. a separate import path for a subcomponent shipped under its own subpath export." },
82
+ "props": {
83
+ "type": "object",
84
+ "additionalProperties": { "$ref": "#/$defs/prop" }
85
+ }
86
+ }
87
+ }
88
+ },
89
+ "additionalProperties": false
90
+ },
73
91
  "examples": {
74
92
  "type": "array",
75
93
  "items": { "type": "string" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devalok/shilp-sutra",
3
- "version": "0.48.0",
3
+ "version": "0.49.1",
4
4
  "description": "Devalok Design System — accessible React components, OKLCH design tokens, and Tailwind 4 CSS-first setup. Ships with AI-agent setup recipes.",
5
5
  "license": "MIT",
6
6
  "author": "Devalok Design & Strategy Studios <shilp-sutra@devalok.in>",
@@ -204,6 +204,11 @@
204
204
  "import": "./dist/ui/devalok-grain.js",
205
205
  "default": "./dist/ui/devalok-grain.js"
206
206
  },
207
+ "./ui/dot": {
208
+ "types": "./dist/ui/dot.d.ts",
209
+ "import": "./dist/ui/dot.js",
210
+ "default": "./dist/ui/dot.js"
211
+ },
207
212
  "./ui/dropdown-menu": {
208
213
  "types": "./dist/ui/dropdown-menu.d.ts",
209
214
  "import": "./dist/ui/dropdown-menu.js",
@@ -369,11 +374,6 @@
369
374
  "import": "./dist/ui/stat-card.js",
370
375
  "default": "./dist/ui/stat-card.js"
371
376
  },
372
- "./ui/status-dot": {
373
- "types": "./dist/ui/status-dot.d.ts",
374
- "import": "./dist/ui/status-dot.js",
375
- "default": "./dist/ui/status-dot.js"
376
- },
377
377
  "./ui/stepper": {
378
378
  "types": "./dist/ui/stepper.d.ts",
379
379
  "import": "./dist/ui/stepper.js",
@@ -639,6 +639,11 @@
639
639
  "import": "./dist/composed/priority-indicator.js",
640
640
  "default": "./dist/composed/priority-indicator.js"
641
641
  },
642
+ "./composed/responsive-modal": {
643
+ "types": "./dist/composed/responsive-modal.d.ts",
644
+ "import": "./dist/composed/responsive-modal.js",
645
+ "default": "./dist/composed/responsive-modal.js"
646
+ },
642
647
  "./composed/rich-text-editor": {
643
648
  "types": "./dist/composed/rich-text-editor.d.ts",
644
649
  "import": "./dist/composed/rich-text-editor.js",
package/skill/SKILL.md CHANGED
@@ -3,7 +3,7 @@ name: shilp-sutra
3
3
  description: Add, configure, and use components from Devalok's shilp-sutra design system (@devalok/shilp-sutra) — a Tailwind 4 + React 19 + CVA library with 110+ accessible components, OKLCH design tokens, framer-motion animations, and per-component RSC-safe entry points. Use this skill whenever the user mentions shilp-sutra, Devalok, the @devalok npm scope, or asks to install/add/style/theme UI in any React project that already depends on the package — even if they don't name it explicitly. Use it instead of generic shadcn/ui, MUI, or Chakra knowledge when shilp-sutra is in the project. Covers Next.js (App + Pages), Vite, Astro, Remix, TanStack Start setup playbooks; component API and variant reference; brand token customization; Server Component import patterns; and a troubleshoot tree for the thirteen most common breakages.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.48.0"
6
+ version: "0.49.1"
7
7
  author: Devalok Design & Strategy Studios
8
8
  homepage: https://github.com/devalok-design/shilp-sutra
9
9
  npm: https://www.npmjs.com/package/@devalok/shilp-sutra
@@ -2,7 +2,7 @@
2
2
 
3
3
  # @devalok/shilp-sutra
4
4
 
5
- > Radix UI + Tailwind 4 (CSS-first) + CVA design system for Devalok apps, v0.48.0.
5
+ > Radix UI + Tailwind 4 (CSS-first) + CVA design system for Devalok apps, v0.49.1.
6
6
  > Built on the same primitives as shadcn/ui but with DIFFERENT prop APIs — never guess from shadcn knowledge; verify every prop.
7
7
  > This file is a ROUTER: it tells you what exists and where to get details. Do not look for prop tables here — fetch them per component (MCP tool or per-component doc file below).
8
8
 
@@ -67,6 +67,7 @@ Format: `[name](doc path): summary`. Import paths follow `@devalok/shilp-sutra/<
67
67
  - [data-table-toolbar](docs/components/ui/data-table-toolbar.md)
68
68
  - [devalok-grain](docs/components/ui/devalok-grain.md)
69
69
  - [dialog](docs/components/ui/dialog.md)
70
+ - [dot](docs/components/ui/dot.md): A small semantic status/indicator dot — the low-level primitive behind status pills, presence indicators, legend swatches, and `StatusDot`
70
71
  - [dropdown-menu](docs/components/ui/dropdown-menu.md)
71
72
  - [file-upload](docs/components/ui/file-upload.md)
72
73
  - [form](docs/components/ui/form.md)
@@ -85,7 +86,7 @@ Format: `[name](doc path): summary`. Import paths follow `@devalok/shilp-sutra/<
85
86
  - [oauth-button](docs/components/ui/oauth-button.md)
86
87
  - [pagination](docs/components/ui/pagination.md)
87
88
  - [popover](docs/components/ui/popover.md)
88
- - [progress](docs/components/ui/progress.md)
89
+ - [progress](docs/components/ui/progress.md): A linear progress bar
89
90
  - [progress-ring](docs/components/ui/progress-ring.md)
90
91
  - [radio](docs/components/ui/radio.md)
91
92
  - [search-input](docs/components/ui/search-input.md)
@@ -100,7 +101,6 @@ Format: `[name](doc path): summary`. Import paths follow `@devalok/shilp-sutra/<
100
101
  - [stack](docs/components/ui/stack.md)
101
102
  - [stat-card](docs/components/ui/stat-card.md)
102
103
  - [stat-flash](docs/components/ui/stat-flash.md)
103
- - [status-dot](docs/components/ui/status-dot.md)
104
104
  - [stepper](docs/components/ui/stepper.md)
105
105
  - [surface](docs/components/ui/surface.md): The low-level elevated container primitive
106
106
  - [switch](docs/components/ui/switch.md)
@@ -143,6 +143,7 @@ Format: `[name](doc path): summary`. Import paths follow `@devalok/shilp-sutra/<
143
143
  - [page-header](docs/components/composed/page-header.md)
144
144
  - [page-skeletons](docs/components/composed/page-skeletons.md): Exports: DashboardSkeleton, ProjectListSkeleton, TaskDetailSkeleton
145
145
  - [priority-indicator](docs/components/composed/priority-indicator.md)
146
+ - [responsive-modal](docs/components/composed/responsive-modal.md)
146
147
  - [rich-chat-input](docs/components/composed/rich-chat-input.md): Compact rich text chat input for unified human+AI workspaces
147
148
  - [rich-text-editor](docs/components/composed/rich-text-editor.md): Exports: RichTextEditor, RichTextViewer
148
149
  - [schedule-view](docs/components/composed/schedule-view.md)
@@ -159,6 +160,13 @@ Format: `[name](doc path): summary`. Import paths follow `@devalok/shilp-sutra/<
159
160
  - [sidebar](docs/components/shell/sidebar.md)
160
161
  - [top-bar](docs/components/shell/top-bar.md)
161
162
 
163
+ ### ai
164
+ - [ai-command-provider](docs/components/ai/ai-command-provider.md): Context provider for the AI command system
165
+ - [block-renderer](docs/components/ai/block-renderer.md): Renders an ordered list of typed AI "blocks" — the structured chunks an assistant/ server emits instead of plain text
166
+ - [command-bar](docs/components/ai/command-bar.md): A unified AI command input with three layout variants
167
+ - [conversation](docs/components/ai/conversation.md): A scrollable AI conversation thread: user + assistant turns, streaming processing steps, an agent header, and structured content blocks (rendered via BlockRenderer) with confirm/cancel/undo action support
168
+ - [devadoot-icon](docs/components/ai/devadoot-icon.md): The animated Devalok chakra glyph — the visual identity for the AI command system
169
+
162
170
  ## Tokens
163
171
 
164
172
  Categories: color, spacing (`ds-01`…), typography (`text-ds-*`), radius (`rounded-ds-*`), shadow (`shadow-raised`/`shadow-overlay`/…), motion, z-layers. Full reference: `get_tokens(category)` via MCP, or the `tokens` object in `mcp-manifest.json`.
@@ -1,27 +0,0 @@
1
- "use client";
2
- import * as React from 'react';
3
- type Status = 'healthy' | 'warning' | 'critical' | 'neutral' | 'inactive';
4
- /**
5
- * A semantic health/presence indicator dot with optional pulse animation and inline label.
6
- *
7
- * @example
8
- * <StatusDot status="healthy" />
9
- * <StatusDot status="critical" label="Service down" pulse />
10
- * <StatusDot status="warning" size="lg" label="Elevated load" />
11
- */
12
- export interface StatusDotProps extends React.HTMLAttributes<HTMLSpanElement> {
13
- status: Status;
14
- /** @default 'md' */
15
- size?: 'sm' | 'md' | 'lg';
16
- /** @default 'filled' */
17
- variant?: 'filled' | 'ring';
18
- /** Pulse animation. Defaults to true for 'healthy', false for others. */
19
- pulse?: boolean;
20
- /** Inline label text rendered after the dot */
21
- label?: string;
22
- labelClassName?: string;
23
- }
24
- declare const StatusDot: React.ForwardRefExoticComponent<StatusDotProps & React.RefAttributes<HTMLSpanElement>>;
25
- export { StatusDot };
26
- export type { Status as StatusDotStatus };
27
- //# sourceMappingURL=status-dot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-dot.d.ts","sourceRoot":"","sources":["../../src/ui/status-dot.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;AAwCzE;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACzB,wBAAwB;IACxB,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IAC3B,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,QAAA,MAAM,SAAS,wFAmCd,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA;AACpB,YAAY,EAAE,MAAM,IAAI,eAAe,EAAE,CAAA"}
@@ -1,68 +0,0 @@
1
- "use client";
2
- import { cn as e } from "./lib/utils.js";
3
- import * as t from "react";
4
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
- //#region src/ui/status-dot.tsx
6
- var i = {
7
- healthy: "bg-success-9",
8
- warning: "bg-warning-9",
9
- critical: "bg-error-9",
10
- neutral: "bg-neutral-8",
11
- inactive: "bg-neutral-6"
12
- }, a = {
13
- healthy: "text-success-11",
14
- warning: "text-warning-11",
15
- critical: "text-error-11",
16
- neutral: "text-surface-fg-muted",
17
- inactive: "text-surface-fg-subtle"
18
- }, o = {
19
- healthy: "border-success-9",
20
- warning: "border-warning-9",
21
- critical: "border-error-9",
22
- neutral: "border-neutral-8",
23
- inactive: "border-neutral-6"
24
- }, s = {
25
- healthy: "bg-success-9/40",
26
- warning: "bg-warning-9/40",
27
- critical: "bg-error-9/40",
28
- neutral: "bg-neutral-8/40",
29
- inactive: "bg-neutral-6/40"
30
- }, c = {
31
- sm: {
32
- dot: "h-1.5 w-1.5",
33
- pulse: "h-1.5 w-1.5",
34
- text: "text-ds-xs"
35
- },
36
- md: {
37
- dot: "h-2 w-2",
38
- pulse: "h-2 w-2",
39
- text: "text-ds-sm"
40
- },
41
- lg: {
42
- dot: "h-2.5 w-2.5",
43
- pulse: "h-2.5 w-2.5",
44
- text: "text-ds-sm"
45
- }
46
- }, l = t.forwardRef(({ status: t, size: l = "md", variant: u = "filled", pulse: d, label: f, labelClassName: p, className: m, "aria-label": h, ...g }, _) => {
47
- let v = d ?? t === "healthy", y = c[l], b = f ? `${f} \u2014 ${t}` : `Status: ${t}`, x = u === "ring" ? e("relative inline-flex rounded-pill border-[1.5px]", y.dot, o[t], "bg-transparent") : e("relative inline-flex rounded-pill", y.dot, i[t]);
48
- return /* @__PURE__ */ r("span", {
49
- ref: _,
50
- role: "status",
51
- "aria-label": h ?? b,
52
- className: e("inline-flex items-center gap-ds-02", m),
53
- ...g,
54
- children: [/* @__PURE__ */ r("span", {
55
- className: "relative inline-flex shrink-0",
56
- children: [v && /* @__PURE__ */ n("span", {
57
- "data-pulse": "",
58
- className: e("absolute inline-flex rounded-pill animate-ping motion-reduce:animate-none", y.pulse, s[t])
59
- }), /* @__PURE__ */ n("span", { className: x })]
60
- }), f && /* @__PURE__ */ n("span", {
61
- className: e(y.text, a[t], "font-sans", p),
62
- children: f
63
- })]
64
- });
65
- });
66
- l.displayName = "StatusDot";
67
- //#endregion
68
- export { l as StatusDot };
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-dot.js","names":[],"sources":["../../src/ui/status-dot.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { cn } from './lib/utils'\n\ntype Status = 'healthy' | 'warning' | 'critical' | 'neutral' | 'inactive'\n\nconst dotColorMap: Record<Status, string> = {\n healthy: 'bg-success-9',\n warning: 'bg-warning-9',\n critical: 'bg-error-9',\n neutral: 'bg-neutral-8',\n inactive: 'bg-neutral-6',\n}\n\nconst textColorMap: Record<Status, string> = {\n healthy: 'text-success-11',\n warning: 'text-warning-11',\n critical: 'text-error-11',\n neutral: 'text-surface-fg-muted',\n inactive: 'text-surface-fg-subtle',\n}\n\nconst ringBorderColorMap: Record<Status, string> = {\n healthy: 'border-success-9',\n warning: 'border-warning-9',\n critical: 'border-error-9',\n neutral: 'border-neutral-8',\n inactive: 'border-neutral-6',\n}\n\nconst pulseColorMap: Record<Status, string> = {\n healthy: 'bg-success-9/40',\n warning: 'bg-warning-9/40',\n critical: 'bg-error-9/40',\n neutral: 'bg-neutral-8/40',\n inactive: 'bg-neutral-6/40',\n}\n\nconst sizeMap = {\n sm: { dot: 'h-1.5 w-1.5', pulse: 'h-1.5 w-1.5', text: 'text-ds-xs' },\n md: { dot: 'h-2 w-2', pulse: 'h-2 w-2', text: 'text-ds-sm' },\n lg: { dot: 'h-2.5 w-2.5', pulse: 'h-2.5 w-2.5', text: 'text-ds-sm' },\n} as const\n\n/**\n * A semantic health/presence indicator dot with optional pulse animation and inline label.\n *\n * @example\n * <StatusDot status=\"healthy\" />\n * <StatusDot status=\"critical\" label=\"Service down\" pulse />\n * <StatusDot status=\"warning\" size=\"lg\" label=\"Elevated load\" />\n */\nexport interface StatusDotProps extends React.HTMLAttributes<HTMLSpanElement> {\n status: Status\n /** @default 'md' */\n size?: 'sm' | 'md' | 'lg'\n /** @default 'filled' */\n variant?: 'filled' | 'ring'\n /** Pulse animation. Defaults to true for 'healthy', false for others. */\n pulse?: boolean\n /** Inline label text rendered after the dot */\n label?: string\n labelClassName?: string\n}\n\nconst StatusDot = React.forwardRef<HTMLSpanElement, StatusDotProps>(\n ({ status, size = 'md', variant = 'filled', pulse, label, labelClassName, className, 'aria-label': ariaLabelProp, ...props }, ref) => {\n const shouldPulse = pulse ?? status === 'healthy'\n const s = sizeMap[size]\n const autoAriaLabel = label ? `${label} \\u2014 ${status}` : `Status: ${status}`\n\n const dotClasses = variant === 'ring'\n ? cn('relative inline-flex rounded-pill border-[1.5px]', s.dot, ringBorderColorMap[status], 'bg-transparent')\n : cn('relative inline-flex rounded-pill', s.dot, dotColorMap[status])\n\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={ariaLabelProp ?? autoAriaLabel}\n className={cn('inline-flex items-center gap-ds-02', className)}\n {...props}\n >\n <span className=\"relative inline-flex shrink-0\">\n {shouldPulse && (\n <span\n data-pulse=\"\"\n className={cn('absolute inline-flex rounded-pill animate-ping motion-reduce:animate-none', s.pulse, pulseColorMap[status])}\n />\n )}\n <span className={dotClasses} />\n </span>\n {label && (\n <span className={cn(s.text, textColorMap[status], 'font-sans', labelClassName)}>\n {label}\n </span>\n )}\n </span>\n )\n },\n)\nStatusDot.displayName = 'StatusDot'\n\nexport { StatusDot }\nexport type { Status as StatusDotStatus }\n"],"mappings":";;;;;AAQA,IAAM,IAAsC;CAC1C,SAAS;CACT,SAAS;CACT,UAAU;CACV,SAAS;CACT,UAAU;CACX,EAEK,IAAuC;CAC3C,SAAS;CACT,SAAS;CACT,UAAU;CACV,SAAS;CACT,UAAU;CACX,EAEK,IAA6C;CACjD,SAAS;CACT,SAAS;CACT,UAAU;CACV,SAAS;CACT,UAAU;CACX,EAEK,IAAwC;CAC5C,SAAS;CACT,SAAS;CACT,UAAU;CACV,SAAS;CACT,UAAU;CACX,EAEK,IAAU;CACd,IAAI;EAAE,KAAK;EAAe,OAAO;EAAe,MAAM;EAAc;CACpE,IAAI;EAAE,KAAK;EAAW,OAAO;EAAW,MAAM;EAAc;CAC5D,IAAI;EAAE,KAAK;EAAe,OAAO;EAAe,MAAM;EAAc;CACrE,EAuBK,IAAY,EAAM,YACrB,EAAE,WAAQ,UAAO,MAAM,aAAU,UAAU,UAAO,UAAO,mBAAgB,cAAW,cAAc,GAAe,GAAG,KAAS,MAAQ;CACpI,IAAM,IAAc,KAAS,MAAW,WAClC,IAAI,EAAQ,IACZ,IAAgB,IAAQ,GAAG,EAAM,UAAU,MAAW,WAAW,KAEjE,IAAa,MAAY,SAC3B,EAAG,oDAAoD,EAAE,KAAK,EAAmB,IAAS,iBAAiB,GAC3G,EAAG,qCAAqC,EAAE,KAAK,EAAY,GAAQ;AAEvE,QACE,kBAAC,QAAD;EACO;EACL,MAAK;EACL,cAAY,KAAiB;EAC7B,WAAW,EAAG,sCAAsC,EAAU;EAC9D,GAAI;YALN,CAOE,kBAAC,QAAD;GAAM,WAAU;aAAhB,CACG,KACC,kBAAC,QAAD;IACE,cAAW;IACX,WAAW,EAAG,6EAA6E,EAAE,OAAO,EAAc,GAAQ;IAC1H,CAAA,EAEJ,kBAAC,QAAD,EAAM,WAAW,GAAc,CAAA,CAC1B;MACN,KACC,kBAAC,QAAD;GAAM,WAAW,EAAG,EAAE,MAAM,EAAa,IAAS,aAAa,EAAe;aAC3E;GACI,CAAA,CAEJ;;EAGZ;AACD,EAAU,cAAc"}
@@ -1,35 +0,0 @@
1
- # StatusDot
2
-
3
- - Import: @devalok/shilp-sutra/ui/status-dot
4
- - Server-safe: Yes
5
- - Category: ui
6
-
7
- ## Props
8
- status: "healthy" | "warning" | "critical" | "neutral" | "inactive"
9
- size: "sm" | "md" | "lg"
10
- pulse: boolean (ping animation; defaults to true for "healthy", false for others)
11
- label: string (inline text rendered after the dot)
12
- labelClassName: string (extra classes on the label span)
13
-
14
- ## Defaults
15
- size="md", pulse={status === "healthy"}
16
-
17
- ## Example
18
- ```jsx
19
- <StatusDot status="healthy" />
20
- <StatusDot status="critical" label="Service down" pulse />
21
- <StatusDot status="warning" size="lg" label="Elevated load" />
22
- ```
23
-
24
- ## Composability
25
- - **Server-safe presentational dot** — simple status indicator, pairs with inline text.
26
- - **Status semantics map to color:** healthy=success, warning=warning, critical=error, neutral=muted surface, inactive=dimmed. The pulse animation calls attention to "healthy" by default (active presence); you can flip it for other statuses by setting pulse explicitly.
27
- - **StatusDot vs BadgeIndicator vs StatusBadge:**
28
- - StatusDot = tiny presence/status indicator with optional inline label (e.g. "Service online")
29
- - BadgeIndicator = overlay on another element (notification dot on a bell icon)
30
- - StatusBadge (composed) = full pill-style badge with colored bg and label text (e.g. ticket status)
31
- - **Label composability:** If you pass `label`, it renders inline after the dot. Use `labelClassName` for custom typography (e.g. font-mono for status codes).
32
-
33
- ## Gotchas
34
- - The `pulse` prop auto-enables for "healthy" status — pass `pulse={false}` to suppress
35
- - Status type is exported as `StatusDotStatus` if you need it in consumer code