@devalok/shilp-sutra 0.44.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/AGENTS.md +13 -11
  2. package/BREAKING.json +209 -27
  3. package/MIGRATION.md +34 -0
  4. package/README.md +12 -0
  5. package/dist/_chunks/badge-group.js +1 -0
  6. package/dist/_chunks/badge-group.js.map +1 -1
  7. package/dist/_chunks/block-shell.js +25 -0
  8. package/dist/_chunks/block-shell.js.map +1 -0
  9. package/dist/_chunks/chat.js +4 -2
  10. package/dist/_chunks/chat.js.map +1 -1
  11. package/dist/_chunks/document-preview.js +1 -1
  12. package/dist/_chunks/image-preview.js +4 -4
  13. package/dist/_chunks/shared.js +65 -78
  14. package/dist/_chunks/shared.js.map +1 -1
  15. package/dist/_chunks/success.js +108 -106
  16. package/dist/_chunks/success.js.map +1 -1
  17. package/dist/ai/blocks/block-shell.d.ts +19 -0
  18. package/dist/ai/blocks/block-shell.d.ts.map +1 -0
  19. package/dist/ai/blocks/block-table.d.ts.map +1 -1
  20. package/dist/ai/blocks/confirm.d.ts.map +1 -1
  21. package/dist/ai/blocks/error.d.ts.map +1 -1
  22. package/dist/ai/blocks/error.js +5 -5
  23. package/dist/ai/blocks/error.js.map +1 -1
  24. package/dist/ai/blocks/success.d.ts.map +1 -1
  25. package/dist/ai/blocks/text.d.ts.map +1 -1
  26. package/dist/ai/blocks/text.js +4 -3
  27. package/dist/ai/blocks/text.js.map +1 -1
  28. package/dist/composed/activity-feed.d.ts.map +1 -1
  29. package/dist/composed/activity-feed.js +14 -12
  30. package/dist/composed/activity-feed.js.map +1 -1
  31. package/dist/composed/file-preview/audio-preview.d.ts.map +1 -1
  32. package/dist/composed/file-preview/shared.d.ts +10 -0
  33. package/dist/composed/file-preview/shared.d.ts.map +1 -1
  34. package/dist/composed/file-preview/video-preview.d.ts.map +1 -1
  35. package/dist/composed/file-preview.js +149 -188
  36. package/dist/composed/file-preview.js.map +1 -1
  37. package/dist/composed/master-detail.d.ts.map +1 -1
  38. package/dist/composed/master-detail.js +13 -4
  39. package/dist/composed/master-detail.js.map +1 -1
  40. package/dist/composed/schedule-view.d.ts.map +1 -1
  41. package/dist/composed/schedule-view.js +52 -39
  42. package/dist/composed/schedule-view.js.map +1 -1
  43. package/dist/shell/notification-preferences.d.ts.map +1 -1
  44. package/dist/shell/notification-preferences.js +115 -114
  45. package/dist/shell/notification-preferences.js.map +1 -1
  46. package/dist/ui/badge-group.d.ts.map +1 -1
  47. package/dist/ui/card.d.ts +66 -16
  48. package/dist/ui/card.d.ts.map +1 -1
  49. package/dist/ui/card.js +85 -60
  50. package/dist/ui/card.js.map +1 -1
  51. package/dist/ui/chat/message.d.ts.map +1 -1
  52. package/dist/ui/color-input.d.ts.map +1 -1
  53. package/dist/ui/color-input.js +18 -18
  54. package/dist/ui/color-input.js.map +1 -1
  55. package/dist/ui/data-table-body.d.ts.map +1 -1
  56. package/dist/ui/data-table-body.js +94 -64
  57. package/dist/ui/data-table-body.js.map +1 -1
  58. package/dist/ui/data-table-card.d.ts.map +1 -1
  59. package/dist/ui/data-table-card.js +50 -43
  60. package/dist/ui/data-table-card.js.map +1 -1
  61. package/dist/ui/data-table-context.d.ts +0 -4
  62. package/dist/ui/data-table-context.d.ts.map +1 -1
  63. package/dist/ui/data-table-context.js +8 -12
  64. package/dist/ui/data-table-context.js.map +1 -1
  65. package/dist/ui/data-table-header.d.ts.map +1 -1
  66. package/dist/ui/data-table-header.js +2 -2
  67. package/dist/ui/data-table-header.js.map +1 -1
  68. package/dist/ui/data-table.d.ts.map +1 -1
  69. package/dist/ui/data-table.js +185 -182
  70. package/dist/ui/data-table.js.map +1 -1
  71. package/dist/ui/index.d.ts +3 -2
  72. package/dist/ui/index.d.ts.map +1 -1
  73. package/dist/ui/index.js +59 -58
  74. package/dist/ui/index.js.map +1 -1
  75. package/dist/ui/segmented-control.js +4 -4
  76. package/dist/ui/segmented-control.js.map +1 -1
  77. package/dist/ui/separator.d.ts +6 -5
  78. package/dist/ui/separator.d.ts.map +1 -1
  79. package/dist/ui/separator.js +7 -10
  80. package/dist/ui/separator.js.map +1 -1
  81. package/dist/ui/split-button.d.ts.map +1 -1
  82. package/dist/ui/split-button.js +62 -129
  83. package/dist/ui/split-button.js.map +1 -1
  84. package/dist/ui/stat-card.d.ts +7 -0
  85. package/dist/ui/stat-card.d.ts.map +1 -1
  86. package/dist/ui/stat-card.js +144 -126
  87. package/dist/ui/stat-card.js.map +1 -1
  88. package/dist/ui/table-row-link.d.ts +45 -0
  89. package/dist/ui/table-row-link.d.ts.map +1 -0
  90. package/dist/ui/table-row-link.js +16 -0
  91. package/dist/ui/table-row-link.js.map +1 -0
  92. package/dist/ui/table.d.ts +49 -5
  93. package/dist/ui/table.d.ts.map +1 -1
  94. package/dist/ui/table.js +39 -29
  95. package/dist/ui/table.js.map +1 -1
  96. package/dist/ui/toast-types.d.ts +10 -0
  97. package/dist/ui/toast-types.d.ts.map +1 -1
  98. package/dist/ui/toast.d.ts +6 -2
  99. package/dist/ui/toast.d.ts.map +1 -1
  100. package/dist/ui/toast.js +56 -54
  101. package/dist/ui/toast.js.map +1 -1
  102. package/docs/components/composed/content-card.md +2 -0
  103. package/docs/components/ui/button.md +3 -3
  104. package/docs/components/ui/card.md +27 -10
  105. package/docs/components/ui/color-input.md +2 -2
  106. package/docs/components/ui/data-table.md +8 -1
  107. package/docs/components/ui/segmented-control.md +2 -2
  108. package/docs/components/ui/separator.md +3 -1
  109. package/docs/components/ui/split-button.md +3 -0
  110. package/docs/components/ui/stat-card.md +10 -2
  111. package/docs/components/ui/table-row-link.md +41 -0
  112. package/docs/components/ui/table.md +69 -0
  113. package/docs/components/ui/toast.md +10 -6
  114. package/docs/recipes/install-next-app-router.md +1 -1
  115. package/docs/recipes/troubleshoot.md +1 -1
  116. package/llms.txt +159 -781
  117. package/make-kit/components/card.md +54 -16
  118. package/make-kit/components/table.md +45 -7
  119. package/make-kit/foundations/spacing.md +3 -1
  120. package/make-kit/foundations/surfaces.md +1 -1
  121. package/mcp-manifest.json +12349 -0
  122. package/mcp-manifest.schema.json +232 -0
  123. package/package.json +8 -3
  124. package/skill/README.md +0 -1
  125. package/skill/SKILL.md +9 -8
  126. package/skill/references/components.md +159 -781
  127. package/skill/references/setup-next-app-router.md +1 -1
  128. package/skill/references/troubleshoot.md +1 -1
  129. package/llms-full.txt +0 -7198
  130. package/llms-quick.txt +0 -251
  131. package/skill/references/components-full.md +0 -7200
@@ -0,0 +1,232 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://shilp-sutra.devalok.in/mcp-manifest.schema.json",
4
+ "title": "shilp-sutra MCP manifest",
5
+ "description": "Machine-readable component/token reference emitted at build time and shipped in the npm tarball from 0.45.0. The hosted docs MCP server extracts this file from published tarballs and serves slices of it — it never parses markdown. Prop shape mirrors react-docgen/Storybook ArgTypes so AI agents consume it zero-shot. Authored standard: docs/specs/mcp-manifest-standard.md.",
6
+ "type": "object",
7
+ "required": ["manifestVersion", "package", "packageVersion", "components", "tokens"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "$schema": { "type": "string" },
11
+ "manifestVersion": {
12
+ "type": "string",
13
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
14
+ "description": "Semver of the manifest FORMAT (this standard), not the package. The MCP server declares a supported range; mismatch is an explicit error, never a silent misparse."
15
+ },
16
+ "package": {
17
+ "type": "string",
18
+ "examples": ["@devalok/shilp-sutra"]
19
+ },
20
+ "packageVersion": {
21
+ "type": "string",
22
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
23
+ "description": "Must equal package.json version at build time — enforced by pre-publish audit gate."
24
+ },
25
+ "generatedAt": {
26
+ "type": "string",
27
+ "description": "ISO 8601 build timestamp."
28
+ },
29
+ "components": {
30
+ "type": "object",
31
+ "description": "Every published component, keyed by kebab-name. Coverage must equal the component scan in build-component-docs.mjs — a missing entry fails the audit gate.",
32
+ "patternProperties": {
33
+ "^[a-z][a-z0-9-]*$": { "$ref": "#/$defs/component" }
34
+ },
35
+ "additionalProperties": false
36
+ },
37
+ "tokens": {
38
+ "type": "object",
39
+ "description": "Design-token reference by category, extracted from src/tokens/*.css.",
40
+ "properties": {
41
+ "color": { "$ref": "#/$defs/tokenList" },
42
+ "spacing": { "$ref": "#/$defs/tokenList" },
43
+ "typography": { "$ref": "#/$defs/tokenList" },
44
+ "radius": { "$ref": "#/$defs/tokenList" },
45
+ "shadow": { "$ref": "#/$defs/tokenList" },
46
+ "motion": { "$ref": "#/$defs/tokenList" },
47
+ "z": { "$ref": "#/$defs/tokenList" }
48
+ },
49
+ "additionalProperties": false
50
+ }
51
+ },
52
+ "$defs": {
53
+ "component": {
54
+ "type": "object",
55
+ "required": ["displayName", "tier", "import", "serverSafe", "description", "props", "composition", "docPath"],
56
+ "additionalProperties": false,
57
+ "properties": {
58
+ "displayName": { "type": "string", "examples": ["Button"] },
59
+ "tier": { "enum": ["ui", "composed", "shell", "ai"] },
60
+ "import": { "type": "string", "examples": ["@devalok/shilp-sutra/ui/button"] },
61
+ "serverSafe": { "type": "boolean" },
62
+ "description": { "type": "string", "description": "One-line purpose." },
63
+ "props": {
64
+ "type": "object",
65
+ "description": "react-docgen convention: object keyed by prop name.",
66
+ "additionalProperties": { "$ref": "#/$defs/prop" }
67
+ },
68
+ "defaults": {
69
+ "type": "object",
70
+ "description": "Convenience mirror of each prop's defaultValue for props with defaults (from the doc's Defaults section).",
71
+ "additionalProperties": { "type": ["string", "number", "boolean"] }
72
+ },
73
+ "examples": {
74
+ "type": "array",
75
+ "items": { "type": "string" },
76
+ "description": "Verbatim JSX snippets from the doc's Example section."
77
+ },
78
+ "composition": { "$ref": "#/$defs/composition" },
79
+ "gotchas": {
80
+ "type": "array",
81
+ "items": { "type": "string" },
82
+ "description": "Known-misuse bullets, verbatim, DO-NOT phrasing preferred."
83
+ },
84
+ "changes": {
85
+ "type": "array",
86
+ "items": {
87
+ "type": "object",
88
+ "required": ["version", "summary"],
89
+ "additionalProperties": false,
90
+ "properties": {
91
+ "version": { "type": "string" },
92
+ "summary": { "type": "string" }
93
+ }
94
+ },
95
+ "description": "Per-component change history from the doc's Changes section, newest first."
96
+ },
97
+ "storybook": { "type": "string", "description": "Published Storybook docs URL for this component." },
98
+ "docPath": {
99
+ "type": "string",
100
+ "description": "Tarball-relative path to the human/fallback markdown doc.",
101
+ "examples": ["docs/components/ui/button.md"]
102
+ }
103
+ }
104
+ },
105
+ "prop": {
106
+ "type": "object",
107
+ "required": ["type", "required"],
108
+ "additionalProperties": false,
109
+ "description": "react-docgen/ArgTypes shape: { type: { name, value?, raw? }, required, defaultValue?, description? }.",
110
+ "properties": {
111
+ "type": {
112
+ "type": "object",
113
+ "required": ["name"],
114
+ "additionalProperties": false,
115
+ "properties": {
116
+ "name": {
117
+ "enum": ["enum", "boolean", "string", "number", "function", "ReactNode", "ReactElement", "object", "union"]
118
+ },
119
+ "value": {
120
+ "type": "array",
121
+ "items": { "type": ["string", "number", "boolean"] },
122
+ "description": "Enum members when type.name is 'enum'."
123
+ },
124
+ "raw": {
125
+ "type": "string",
126
+ "description": "Literal TypeScript type text for unions/functions/objects that enum members can't express.",
127
+ "examples": ["boolean | 'ambient' | 'working' | 'urgent'", "(e: MouseEvent) => Promise<void>"]
128
+ }
129
+ }
130
+ },
131
+ "required": { "type": "boolean" },
132
+ "defaultValue": { "type": ["string", "number", "boolean"] },
133
+ "description": { "type": "string" }
134
+ }
135
+ },
136
+ "composition": {
137
+ "type": "object",
138
+ "additionalProperties": false,
139
+ "description": "Design-intent layer — how this component composes. Not extractable from CVA; authored via tagged bullets in the doc's Composability section (see standard §1.3/§2).",
140
+ "properties": {
141
+ "parts": {
142
+ "type": "array",
143
+ "items": {
144
+ "type": "object",
145
+ "required": ["name"],
146
+ "additionalProperties": false,
147
+ "properties": {
148
+ "name": { "type": "string", "examples": ["CardHeader"] },
149
+ "slot": { "type": "string", "description": "Position contract within the parent.", "examples": ["top"] },
150
+ "required": { "type": "boolean" },
151
+ "description": { "type": "string" }
152
+ }
153
+ },
154
+ "description": "Compound subcomponents this component exports."
155
+ },
156
+ "slots": {
157
+ "type": "array",
158
+ "items": {
159
+ "type": "object",
160
+ "required": ["name"],
161
+ "additionalProperties": false,
162
+ "properties": {
163
+ "name": { "type": "string", "examples": ["children"] },
164
+ "accepts": { "type": "array", "items": { "type": "string" } },
165
+ "description": { "type": "string" }
166
+ }
167
+ },
168
+ "description": "Named children positions and what they accept."
169
+ },
170
+ "composesWith": {
171
+ "type": "array",
172
+ "items": {
173
+ "type": "object",
174
+ "required": ["component", "relation"],
175
+ "additionalProperties": false,
176
+ "properties": {
177
+ "component": { "type": "string", "description": "kebab-name of the related component." },
178
+ "relation": {
179
+ "enum": ["specializes", "contains", "pairs", "provides-context", "consumes-context", "alternative-to"],
180
+ "description": "Closed vocabulary. 'specializes' = builds ON the target instead of re-rolling it (StatCard specializes Card)."
181
+ },
182
+ "description": { "type": "string" }
183
+ }
184
+ }
185
+ },
186
+ "containedBy": {
187
+ "type": "array",
188
+ "items": { "type": "string" },
189
+ "description": "kebab-names (or 'page') where this component legitimately lives."
190
+ },
191
+ "contexts": {
192
+ "type": "array",
193
+ "items": {
194
+ "type": "object",
195
+ "required": ["name", "effect"],
196
+ "additionalProperties": false,
197
+ "properties": {
198
+ "name": { "type": "string", "examples": ["ButtonGroup"] },
199
+ "effect": { "type": "string", "examples": ["inherits variant/color/size; position-aware radius"] }
200
+ }
201
+ },
202
+ "description": "React contexts consumed or provided that change rendered behavior."
203
+ },
204
+ "antiPatterns": {
205
+ "type": "array",
206
+ "items": { "type": "string" },
207
+ "description": "Known composition misuse, DO-NOT phrasing with the correct alternative."
208
+ },
209
+ "notes": {
210
+ "type": "array",
211
+ "items": { "type": "string" },
212
+ "description": "Untagged Composability prose bullets carried over verbatim — lets existing docs parse before incremental tagging."
213
+ }
214
+ }
215
+ },
216
+ "tokenList": {
217
+ "type": "array",
218
+ "items": {
219
+ "type": "object",
220
+ "required": ["name"],
221
+ "additionalProperties": false,
222
+ "properties": {
223
+ "name": { "type": "string", "description": "CSS custom property.", "examples": ["--spacing-ds-03"] },
224
+ "utility": { "type": "string", "description": "Tailwind utility it generates, if any.", "examples": ["p-ds-03"] },
225
+ "value": { "type": "string", "description": "Resolved value (light mode where dual)." },
226
+ "darkValue": { "type": "string", "description": "Dark-mode value when it differs." },
227
+ "usage": { "type": "string", "description": "One-line when-to-use." }
228
+ }
229
+ }
230
+ }
231
+ }
232
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devalok/shilp-sutra",
3
- "version": "0.44.0",
3
+ "version": "0.45.0",
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>",
@@ -432,6 +432,11 @@
432
432
  "import": "./dist/ui/tooltip.js",
433
433
  "default": "./dist/ui/tooltip.js"
434
434
  },
435
+ "./ui/truncated-text": {
436
+ "types": "./dist/ui/truncated-text.d.ts",
437
+ "import": "./dist/ui/truncated-text.js",
438
+ "default": "./dist/ui/truncated-text.js"
439
+ },
435
440
  "./ui/visually-hidden": {
436
441
  "types": "./dist/ui/visually-hidden.d.ts",
437
442
  "import": "./dist/ui/visually-hidden.js",
@@ -812,8 +817,8 @@
812
817
  "MIGRATION.md",
813
818
  "README.md",
814
819
  "llms.txt",
815
- "llms-quick.txt",
816
- "llms-full.txt"
820
+ "mcp-manifest.json",
821
+ "mcp-manifest.schema.json"
817
822
  ],
818
823
  "agents": {
819
824
  "skills": [
package/skill/README.md CHANGED
@@ -19,7 +19,6 @@ shilp-sutra/
19
19
  ├── LICENSE # MIT
20
20
  └── references/
21
21
  ├── components.md # Concise component cheatsheet (~660 lines)
22
- ├── components-full.md # Exhaustive per-component reference (~6900 lines)
23
22
  ├── setup-next-app-router.md # Next.js (App Router) install playbook
24
23
  ├── setup-next-pages.md # Next.js (Pages Router) install playbook
25
24
  ├── setup-vite.md # Vite + React install playbook
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.44.0"
6
+ version: "0.45.0"
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
@@ -29,7 +29,7 @@ Q1. Is @devalok/shilp-sutra already installed?
29
29
  YES → continue
30
30
 
31
31
  Q2. What does the user want to do?
32
- a) Add or use a component → references/components.md (skim), then components-full.md (deep)
32
+ a) Add or use a component → references/components.md (router), then the per-component doc at node_modules/@devalok/shilp-sutra/docs/components/<tier>/<name>.md (deep)
33
33
  b) Change colors/fonts/radius → references/customize-brand.md
34
34
  c) Server Components / Next.js → references/server-components.md
35
35
  d) Something is broken → references/troubleshoot.md
@@ -67,7 +67,7 @@ These are non-negotiable. Violating any of them produces runtime errors that loo
67
67
  4. **Prefer per-component imports — they keep RSC bundles small and avoid peer-dep cliffs.** `@devalok/shilp-sutra/ui/text` is server-safe and pulls only its own peers. The barrel `@devalok/shilp-sutra/ui` re-exports every component (including ones with hard peer deps like `input-otp`), so it forces those peers to install even when unused. With all peers installed the barrel also works in RSC (per-component `"use client"` is honoured), but the client bundle is larger. Prefer per-component for new code; existing barrel usage is not an emergency. See `references/server-components.md`.
68
68
  5. **Spacing uses the `--spacing-ds-*` namespace** (`p-ds-04`, `gap-ds-03`); typography uses `text-ds-body-md`. These **coexist with** Tailwind 4's numeric scale (`p-4`, `gap-2`) by design — both valid. Pick `p-ds-*` for values that should track DS theme changes, `p-N` for one-off layout. Do NOT mass-codemod `p-4` → `p-ds-04`. **Cadence when building layouts:** pick a 3-tier scale, not every adjacent token — `ds-03` (related: label↔field), `ds-05` (grouped: between field-groups), `ds-07` (section: between blocks), optional `ds-08`+ (hero). 3-4 distinct gaps per surface; 5+ reads muddy. Anti-pattern: `ds-02` + `ds-04` as different signals on one surface — they collapse. The squint test must still reveal grouping.
69
69
  6. **Bare `shadow` does not exist in Tailwind 4.** Use `shadow-raised`, `shadow-overlay`, `shadow-floating`. Bare `rounded` is fine (maps to `--radius`); `rounded-ds-lg` etc. for sized variants.
70
- 7. **Do not invent variant names.** CVA source files at `node_modules/@devalok/shilp-sutra/dist/ui/*.d.ts` (or `packages/core/src/ui/*.tsx` in the DS repo) are authoritative. When in doubt, check `references/components-full.md` for the enumerated list. If you guess a variant that doesn't exist, the prop is silently dropped and the default applies.
70
+ 7. **Do not invent variant names.** CVA source files at `node_modules/@devalok/shilp-sutra/dist/ui/*.d.ts` (or `packages/core/src/ui/*.tsx` in the DS repo) are authoritative. When in doubt, check `node_modules/@devalok/shilp-sutra/mcp-manifest.json` (props as JSON) or the per-component doc for the enumerated list. If you guess a variant that doesn't exist, the prop is silently dropped and the default applies.
71
71
  8. **Default `variant="soft"` over `variant="outline"` for non-primary Button actions.** Soft (tinted bg + tinted text, no border) reads warmer in data-dense UIs. Use outline only when soft would disappear on a colored background or when a primary/secondary hierarchy needs a visible border.
72
72
 
73
73
  ## Surface layering (when building cards, panels, dialogs)
@@ -89,8 +89,8 @@ Putting `bg-surface-base` on a card is a bug — cards belong on `surface-raised
89
89
 
90
90
  ## Adding a component
91
91
 
92
- 1. Skim `references/components.md` — the concise cheatsheet, ~660 lines. Tells you what exists, what variants ship, what the common gotchas are.
93
- 2. If `components.md` does not have enough detail (you need full prop tables, every variant, every example), open `references/components-full.md`.
92
+ 1. Skim `references/components.md` — the router. Tells you what exists and where each component's full doc lives.
93
+ 2. If `components.md` does not have enough detail (you need full prop tables, every variant, every example), open the per-component doc at `node_modules/@devalok/shilp-sutra/docs/components/<tier>/<name>.md`, or read the component's entry in `node_modules/@devalok/shilp-sutra/mcp-manifest.json`.
94
94
  3. Import from the per-component entry: `import { Button } from "@devalok/shilp-sutra/ui/button"`. The barrel `@devalok/shilp-sutra/ui` works in client-only contexts but is heavier — prefer per-component.
95
95
  4. Use **semantic tokens** for color (`text-foreground`, `bg-surface-2`, `border-border-default`). Never raw OKLCH values, never `text-white`.
96
96
  5. Compose with primitives the package already ships. Do not rebuild Dialog/Popover/Combobox from scratch.
@@ -140,13 +140,14 @@ Do not guess — most of these failures look identical from the outside but have
140
140
  ## Browsing the system
141
141
 
142
142
  - **Storybook** (live previews, every story, MCP server available when running locally): https://devalok-design.github.io/shilp-sutra/
143
- - **Component reference (this skill)**: `references/components.md` (cheatsheet) and `references/components-full.md` (full API).
143
+ - **Component reference (this skill)**: `references/components.md` (router); full API per component via `docs/components/` or `mcp-manifest.json` in the installed package.
144
144
  - **Source**: https://github.com/devalok-design/shilp-sutra — `packages/core/src/ui/*.tsx` are the CVA sources of truth.
145
145
 
146
146
  When the package is installed locally, the same content also ships in the npm tarball:
147
147
 
148
- - `node_modules/@devalok/shilp-sutra/llms.txt` — cheatsheet
149
- - `node_modules/@devalok/shilp-sutra/llms-full.txt` — full reference
148
+ - `node_modules/@devalok/shilp-sutra/llms.txt` — router (what exists + where to get detail)
149
+ - `node_modules/@devalok/shilp-sutra/docs/components/<tier>/<name>.md` — per-component reference
150
+ - `node_modules/@devalok/shilp-sutra/mcp-manifest.json` — machine-readable props/tokens/composition
150
151
  - `node_modules/@devalok/shilp-sutra/docs/recipes/` — setup recipes
151
152
  - `node_modules/@devalok/shilp-sutra/skill/` — this skill (offline-installable)
152
153