@devalok/shilp-sutra 0.55.1 → 0.56.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 (64) hide show
  1. package/BREAKING.json +13 -0
  2. package/MIGRATION.md +56 -0
  3. package/README.md +16 -1
  4. package/dist/_chunks/badge-group.js +45 -45
  5. package/dist/_chunks/emoji-suggestion.js +32 -30
  6. package/dist/_chunks/emoji-suggestion.js.map +1 -1
  7. package/dist/_chunks/mention-suggestion.js +35 -34
  8. package/dist/_chunks/mention-suggestion.js.map +1 -1
  9. package/dist/_chunks/primitives-internal.js +437 -537
  10. package/dist/_chunks/primitives-internal.js.map +1 -1
  11. package/dist/composed/content-card.js +18 -18
  12. package/dist/composed/extensions/emoji-node.js +8 -7
  13. package/dist/composed/extensions/emoji-node.js.map +1 -1
  14. package/dist/composed/rich-chat-input.js +535 -526
  15. package/dist/composed/rich-chat-input.js.map +1 -1
  16. package/dist/composed/rich-text-editor.js +201 -193
  17. package/dist/composed/rich-text-editor.js.map +1 -1
  18. package/dist/ui/alert.js +29 -29
  19. package/dist/ui/avatar.js +42 -42
  20. package/dist/ui/banner.js +25 -25
  21. package/dist/ui/button.js +31 -31
  22. package/dist/ui/button.js.map +1 -1
  23. package/dist/ui/card.js +39 -39
  24. package/dist/ui/combobox.js +135 -135
  25. package/dist/ui/combobox.js.map +1 -1
  26. package/dist/ui/dot.js +13 -13
  27. package/dist/ui/input.js +25 -25
  28. package/dist/ui/lib/utils.js +2 -1
  29. package/dist/ui/lib/utils.js.map +1 -1
  30. package/dist/ui/number-input.js +36 -36
  31. package/dist/ui/progress.js +55 -55
  32. package/dist/ui/select.js +58 -58
  33. package/dist/ui/sheet.js +46 -46
  34. package/dist/ui/sidebar.js +128 -128
  35. package/dist/ui/sidebar.js.map +1 -1
  36. package/dist/ui/skeleton.js +39 -39
  37. package/dist/ui/slider.js +18 -18
  38. package/dist/ui/surface.js +9 -9
  39. package/dist/ui/tabs.js +47 -47
  40. package/dist/ui/text.js +8 -8
  41. package/dist/ui/textarea.js +12 -12
  42. package/dist/ui/toggle.js +12 -12
  43. package/docs/recipes/install-astro.md +2 -2
  44. package/docs/recipes/install-next-app-router.md +2 -2
  45. package/docs/recipes/install-remix.md +2 -2
  46. package/docs/recipes/install-tanstack-start.md +2 -2
  47. package/docs/recipes/install-vite.md +2 -2
  48. package/docs/recipes/troubleshoot.md +26 -5
  49. package/llms.txt +1 -1
  50. package/mcp-manifest.json +24 -3
  51. package/package.json +38 -11
  52. package/skill/SKILL.md +1 -1
  53. package/skill/references/components.md +1 -1
  54. package/skill/references/setup-astro.md +2 -2
  55. package/skill/references/setup-next-app-router.md +2 -2
  56. package/skill/references/setup-remix.md +2 -2
  57. package/skill/references/setup-tanstack-start.md +2 -2
  58. package/skill/references/setup-vite.md +2 -2
  59. package/skill/references/troubleshoot.md +26 -5
  60. package/dist/_chunks/tiptap.js +0 -18809
  61. package/dist/_chunks/tiptap.js.map +0 -1
  62. package/dist/_chunks/vendor-utils.js +0 -1766
  63. package/dist/_chunks/vendor-utils.js.map +0 -1
  64. package/scripts/welcome.mjs +0 -312
package/dist/ui/text.js CHANGED
@@ -1,8 +1,8 @@
1
- import { cva as e } from "../_chunks/vendor-utils.js";
2
- import { cn as t } from "./lib/utils.js";
3
- import * as n from "react";
1
+ import { cn as e } from "./lib/utils.js";
2
+ import * as t from "react";
3
+ import { cva as n } from "class-variance-authority";
4
4
  //#region src/ui/text.tsx
5
- var r = e("font-sans", {
5
+ var r = n("font-sans", {
6
6
  variants: { variant: {
7
7
  "heading-2xl": "font-display text-[length:var(--typo-heading-2xl-size)] font-[number:var(--typo-heading-2xl-weight)] leading-[var(--typo-heading-2xl-leading)] tracking-[var(--typo-heading-2xl-tracking)]",
8
8
  "heading-xl": "font-display text-[length:var(--typo-heading-xl-size)] font-[number:var(--typo-heading-xl-weight)] leading-[var(--typo-heading-xl-leading)] tracking-[var(--typo-heading-xl-tracking)]",
@@ -47,11 +47,11 @@ var r = e("font-sans", {
47
47
  "label-plain-lg": "span",
48
48
  "label-plain-md": "span",
49
49
  "label-plain-sm": "span"
50
- }, a = n.forwardRef(({ variant: e = "body-md", as: a, className: o, children: s, ...c }, l) => {
51
- let u = a || i[e] || "p";
52
- return n.createElement(u, {
50
+ }, a = t.forwardRef(({ variant: n = "body-md", as: a, className: o, children: s, ...c }, l) => {
51
+ let u = a || i[n] || "p";
52
+ return t.createElement(u, {
53
53
  ref: l,
54
- className: t(r({ variant: e }), o),
54
+ className: e(r({ variant: n }), o),
55
55
  ...c
56
56
  }, s);
57
57
  });
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { motionProps as e } from "./lib/motion.js";
3
- import { cva as t } from "../_chunks/vendor-utils.js";
4
- import { cn as n } from "./lib/utils.js";
5
- import { useFormField as r } from "./form.js";
6
- import { resolveFieldState as i } from "../_chunks/field-state.js";
7
- import * as a from "react";
8
- import { jsx as o } from "react/jsx-runtime";
9
- import { motion as s } from "framer-motion";
3
+ import { cn as t } from "./lib/utils.js";
4
+ import { useFormField as n } from "./form.js";
5
+ import { resolveFieldState as r } from "../_chunks/field-state.js";
6
+ import * as i from "react";
7
+ import { jsx as a } from "react/jsx-runtime";
8
+ import { motion as o } from "framer-motion";
9
+ import { cva as s } from "class-variance-authority";
10
10
  //#region src/ui/textarea.tsx
11
- var c = t([
11
+ var c = s([
12
12
  "flex w-full font-sans resize-y",
13
13
  "bg-surface-raised-hover text-surface-fg",
14
14
  "border border-surface-border-strong rounded-control",
@@ -26,13 +26,13 @@ var c = t([
26
26
  lg: "min-h-[120px] text-body-md px-ds-05 py-ds-04"
27
27
  } },
28
28
  defaultVariants: { size: "md" }
29
- }), l = a.forwardRef(({ className: t, state: a, size: l, ...u }, d) => {
30
- let f = r(), p = i(a, f.state), m = u["aria-describedby"] ?? f.helperTextId, h = u["aria-required"] ?? f.required, g = u.id ?? f.inputId;
31
- return /* @__PURE__ */ o(s.textarea, {
29
+ }), l = i.forwardRef(({ className: i, state: s, size: l, ...u }, d) => {
30
+ let f = n(), p = r(s, f.state), m = u["aria-describedby"] ?? f.helperTextId, h = u["aria-required"] ?? f.required, g = u.id ?? f.inputId;
31
+ return /* @__PURE__ */ a(o.textarea, {
32
32
  "aria-invalid": p === "error" || void 0,
33
33
  "aria-describedby": m,
34
34
  "aria-required": h || void 0,
35
- className: n(c({ size: l }), p === "error" && "border-error-7 focus-visible:ring-error-7", p === "warning" && "border-warning-7 focus-visible:ring-warning-7", p === "success" && "border-success-7 focus-visible:ring-success-7", t),
35
+ className: t(c({ size: l }), p === "error" && "border-error-7 focus-visible:ring-error-7", p === "warning" && "border-warning-7 focus-visible:ring-warning-7", p === "success" && "border-success-7 focus-visible:ring-success-7", i),
36
36
  ref: d,
37
37
  ...e(u),
38
38
  id: g
package/dist/ui/toggle.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { motionProps as e, springs as t } from "./lib/motion.js";
3
- import { cva as n } from "../_chunks/vendor-utils.js";
4
- import { cn as r } from "./lib/utils.js";
5
- import { Root as i } from "../_chunks/primitives/react-toggle.js";
6
- import * as a from "react";
7
- import { jsx as o } from "react/jsx-runtime";
8
- import { motion as s } from "framer-motion";
3
+ import { cn as n } from "./lib/utils.js";
4
+ import { Root as r } from "../_chunks/primitives/react-toggle.js";
5
+ import * as i from "react";
6
+ import { jsx as a } from "react/jsx-runtime";
7
+ import { motion as o } from "framer-motion";
8
+ import { cva as s } from "class-variance-authority";
9
9
  //#region src/ui/toggle.tsx
10
- var c = s.create(i), l = n("inline-flex items-center justify-center gap-ds-03 rounded-control font-medium transition-colors duration-fast-01 ease-productive-standard focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-action-disabled", {
10
+ var c = o.create(r), l = s("inline-flex items-center justify-center gap-ds-03 rounded-control font-medium transition-colors duration-fast-01 ease-productive-standard focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-action-disabled", {
11
11
  variants: {
12
12
  variant: {
13
13
  default: "bg-transparent hover:bg-surface-raised-hover text-surface-fg-muted",
@@ -30,17 +30,17 @@ var c = s.create(i), l = n("inline-flex items-center justify-center gap-ds-03 ro
30
30
  size: "md",
31
31
  color: "accent"
32
32
  }
33
- }), u = a.forwardRef(({ className: n, variant: i, size: a, color: s, ...u }, d) => /* @__PURE__ */ o(c, {
33
+ }), u = i.forwardRef(({ className: r, variant: i, size: o, color: s, ...u }, d) => /* @__PURE__ */ a(c, {
34
34
  ref: d,
35
35
  whileTap: { scale: .95 },
36
36
  transition: t.snappy,
37
- className: r(l({
37
+ className: n(l({
38
38
  variant: i,
39
- size: a,
39
+ size: o,
40
40
  color: s
41
- }), n),
41
+ }), r),
42
42
  ...e(u)
43
43
  }));
44
- u.displayName = i.displayName;
44
+ u.displayName = r.displayName;
45
45
  //#endregion
46
46
  export { u as Toggle, l as toggleVariants };
@@ -38,8 +38,8 @@ Some components ship hard peers as optional. **Install BEFORE first import.**
38
38
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
39
39
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
40
40
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
41
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
42
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
41
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
42
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
43
43
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
44
44
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
45
45
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -51,8 +51,8 @@ Some components depend on third-party libraries that ship as optional peers. **I
51
51
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
52
52
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
53
53
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
54
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
55
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
54
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
55
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
56
56
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
57
57
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
58
58
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -34,8 +34,8 @@ Some components ship hard peers as optional. **Install BEFORE first import.**
34
34
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
35
35
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
36
36
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
37
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
38
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
37
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
38
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
39
39
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
40
40
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
41
41
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -43,8 +43,8 @@ Some components ship hard peers as optional. **Install BEFORE first import.**
43
43
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
44
44
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
45
45
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
46
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
47
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
46
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
47
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
48
48
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
49
49
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
50
50
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -49,8 +49,8 @@ Some components ship hard peers as optional. **Install BEFORE first import.**
49
49
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
50
50
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
51
51
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
52
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
53
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
52
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
53
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
54
54
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
55
55
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
56
56
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -194,17 +194,38 @@ In dev mode, calling `toast()` without a mounted `<Toaster />` logs a one-time c
194
194
 
195
195
  ## Symptom: Build error mentioning `use-sync-external-store`
196
196
 
197
- **Diagnosis:** Should not happen since v0.37.0 `use-sync-external-store` was moved to runtime dependencies and is auto-installed transitively.
197
+ **Diagnosis:** we no longer depend on it at all, as of v0.56.0. Nothing in our `dist` imports it.
198
198
 
199
- **Why this dependency exists at all** (it is a hook built into React 18+, so it looks redundant): we do not use the shim ourselves. It is a TipTap transitive. TipTap's code is bundled into our `dist`, and that bundled chunk imports `use-sync-external-store/shim`. We externalize the shim rather than bundling it, because bundling forced a `createRequire` bridge into our Rollup runtime chunk that broke every Turbopack consumer. Externalized code must be resolvable from the consumer's tree, hence the declaration.
199
+ It was never ours: React 18+ has `useSyncExternalStore` built in and our own code calls it directly. The dependency existed purely because we *bundled* TipTap, and that bundled chunk imported the shim. TipTap is now externalized, so the shim went with it.
200
200
 
201
- If it still happens, install it explicitly:
201
+ If you still see the error, something else in your tree wants it — find out what and install it there:
202
202
 
203
203
  ```bash
204
- pnpm add use-sync-external-store
204
+ pnpm why use-sync-external-store
205
205
  ```
206
206
 
207
- And open an issue at <https://github.com/devalok-design/shilp-sutra/issues> with the resolution graph (`pnpm why use-sync-external-store`) so we can fix the root cause.
207
+ If the trail leads back to `@devalok/shilp-sutra`, that's a bug: open an issue at <https://github.com/devalok-design/shilp-sutra/issues> with that output.
208
+
209
+ ## Symptom: `Cannot find module '@tiptap/core'` (or another `@tiptap/*`) after upgrading to 0.56.0
210
+
211
+ **Diagnosis:** expected, and it is the one breaking change in 0.56.0. We used to bundle TipTap *and* list it as an optional peer — so `RichTextEditor` / `RichChatInput` worked whether or not you installed the peers. It is now externalized, so you must install them.
212
+
213
+ **Why we changed it:** a consumer who *did* follow the peer instructions ended up running two ProseMirror copies. Plugin keys are module-scoped, so the two copies could not see each other's plugins and the editor misbehaved in ways that were near-impossible to debug. It also cut 641 KB from the package for everyone who never touches rich text.
214
+
215
+ **Fix** — install the peers for the component you import (§2a of your framework's install recipe has the exact line):
216
+
217
+ ```bash
218
+ # RichTextEditor
219
+ pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image \
220
+ @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align \
221
+ @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react \
222
+ @tiptap/starter-kit @tiptap/suggestion
223
+
224
+ # RichChatInput — the same list plus date-fns
225
+ pnpm add date-fns
226
+ ```
227
+
228
+ Or ask the docs MCP: `preflight` reports exactly which peers your imports need.
208
229
 
209
230
  ## Symptom: `Cannot find package 'sonner'` when you only imported a hook (or `'react-markdown'` from the AI barrel)
210
231
 
package/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # @devalok/shilp-sutra
2
2
 
3
- > Radix UI + Tailwind 4 (CSS-first) + CVA design system for Devalok apps, v0.55.1.
3
+ > Radix UI + Tailwind 4 (CSS-first) + CVA design system for Devalok apps, v0.56.0.
4
4
  > Built on the same primitives as shadcn/ui but with DIFFERENT prop APIs — never guess from shadcn knowledge; verify every prop.
5
5
  > 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).
6
6
 
package/mcp-manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "./mcp-manifest.schema.json",
3
3
  "manifestVersion": "1.2.0",
4
4
  "package": "@devalok/shilp-sutra",
5
- "packageVersion": "0.55.1",
5
+ "packageVersion": "0.56.0",
6
6
  "components": {
7
7
  "accordion": {
8
8
  "displayName": "Accordion",
@@ -11699,8 +11699,19 @@
11699
11699
  }
11700
11700
  ],
11701
11701
  "peers": [
11702
+ "@tiptap/core",
11703
+ "@tiptap/extension-highlight",
11704
+ "@tiptap/extension-image",
11705
+ "@tiptap/extension-list",
11706
+ "@tiptap/extension-mention",
11707
+ "@tiptap/extension-text-align",
11708
+ "@tiptap/extensions",
11709
+ "@tiptap/markdown",
11702
11710
  "@tiptap/pm",
11703
- "@tiptap/react"
11711
+ "@tiptap/react",
11712
+ "@tiptap/starter-kit",
11713
+ "@tiptap/suggestion",
11714
+ "date-fns"
11704
11715
  ]
11705
11716
  },
11706
11717
  "rich-text-editor": {
@@ -11863,8 +11874,18 @@
11863
11874
  }
11864
11875
  ],
11865
11876
  "peers": [
11877
+ "@tiptap/core",
11878
+ "@tiptap/extension-highlight",
11879
+ "@tiptap/extension-image",
11880
+ "@tiptap/extension-list",
11881
+ "@tiptap/extension-mention",
11882
+ "@tiptap/extension-text-align",
11883
+ "@tiptap/extensions",
11884
+ "@tiptap/markdown",
11866
11885
  "@tiptap/pm",
11867
- "@tiptap/react"
11886
+ "@tiptap/react",
11887
+ "@tiptap/starter-kit",
11888
+ "@tiptap/suggestion"
11868
11889
  ]
11869
11890
  },
11870
11891
  "schedule-view": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devalok/shilp-sutra",
3
- "version": "0.55.1",
3
+ "version": "0.56.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>",
@@ -54,8 +54,8 @@
54
54
  "dependencies": {
55
55
  "class-variance-authority": "^0.7.1",
56
56
  "clsx": "^2.1.1",
57
- "tw-animate-css": "^1.4.0",
58
- "use-sync-external-store": "^1.6.0"
57
+ "tailwind-merge": "^3.6.0",
58
+ "tw-animate-css": "^1.4.0"
59
59
  },
60
60
  "exports": {
61
61
  ".": {
@@ -836,7 +836,6 @@
836
836
  "fonts",
837
837
  "make-kit",
838
838
  "skill",
839
- "scripts/welcome.mjs",
840
839
  "AGENTS.md",
841
840
  "BREAKING.json",
842
841
  "BREAKING.schema.json",
@@ -859,8 +858,16 @@
859
858
  "@tanstack/react-table": "^8.0.0",
860
859
  "@tanstack/react-virtual": "^3.0.0",
861
860
  "@tiptap/core": "^3.28.0",
861
+ "@tiptap/extension-highlight": "^3.28.0",
862
+ "@tiptap/extension-image": "^3.28.0",
863
+ "@tiptap/extension-list": "^3.28.0",
864
+ "@tiptap/extension-mention": "^3.28.0",
865
+ "@tiptap/extension-text-align": "^3.28.0",
866
+ "@tiptap/extensions": "^3.28.0",
867
+ "@tiptap/markdown": "^3.28.0",
862
868
  "@tiptap/pm": "^3.28.0",
863
869
  "@tiptap/react": "^3.28.0",
870
+ "@tiptap/starter-kit": "^3.28.0",
864
871
  "@tiptap/suggestion": "^3.28.0",
865
872
  "d3-array": "^3.0.0",
866
873
  "d3-axis": "^3.0.0",
@@ -894,12 +901,36 @@
894
901
  "@tiptap/core": {
895
902
  "optional": true
896
903
  },
904
+ "@tiptap/extension-highlight": {
905
+ "optional": true
906
+ },
907
+ "@tiptap/extension-image": {
908
+ "optional": true
909
+ },
910
+ "@tiptap/extension-list": {
911
+ "optional": true
912
+ },
913
+ "@tiptap/extension-mention": {
914
+ "optional": true
915
+ },
916
+ "@tiptap/extension-text-align": {
917
+ "optional": true
918
+ },
919
+ "@tiptap/extensions": {
920
+ "optional": true
921
+ },
922
+ "@tiptap/markdown": {
923
+ "optional": true
924
+ },
897
925
  "@tiptap/pm": {
898
926
  "optional": true
899
927
  },
900
928
  "@tiptap/react": {
901
929
  "optional": true
902
930
  },
931
+ "@tiptap/starter-kit": {
932
+ "optional": true
933
+ },
903
934
  "@tiptap/suggestion": {
904
935
  "optional": true
905
936
  },
@@ -974,13 +1005,12 @@
974
1005
  "@tiptap/extension-text-align": "^3.28.0",
975
1006
  "@tiptap/extensions": "^3.28.0",
976
1007
  "@tiptap/markdown": "^3.28.0",
1008
+ "@tiptap/pm": "^3.28.0",
977
1009
  "@tiptap/react": "^3.28.0",
978
1010
  "@tiptap/starter-kit": "^3.28.0",
979
1011
  "@tiptap/suggestion": "^3.28.0",
980
1012
  "@types/react-syntax-highlighter": "^15.5.13",
981
1013
  "aria-hidden": "^1.2.6",
982
- "class-variance-authority": "^0.7.1",
983
- "clsx": "^2.1.1",
984
1014
  "d3-array": "^3.2.4",
985
1015
  "d3-axis": "^3.0.0",
986
1016
  "d3-format": "^3.1.2",
@@ -996,7 +1026,6 @@
996
1026
  "framer-motion": "^12.42.2",
997
1027
  "frimousse": "^0.3.0",
998
1028
  "input-otp": "^1.4.2",
999
- "prosemirror-state": "^1.4.4",
1000
1029
  "react-colorful": "^5.8.0",
1001
1030
  "react-markdown": "^10.1.0",
1002
1031
  "react-pdf": "^10.4.1",
@@ -1004,8 +1033,7 @@
1004
1033
  "react-syntax-highlighter": "^16.1.1",
1005
1034
  "react-zoom-pan-pinch": "^4.0.3",
1006
1035
  "remark-gfm": "^4.0.1",
1007
- "sonner": "^2.0.7",
1008
- "tailwind-merge": "^3.6.0"
1036
+ "sonner": "^2.0.7"
1009
1037
  },
1010
1038
  "scripts": {
1011
1039
  "build": "vite build && node scripts/post-build.mjs",
@@ -1018,7 +1046,6 @@
1018
1046
  "typecheck": "tsc --noEmit",
1019
1047
  "lint": "eslint src/",
1020
1048
  "test": "vitest run",
1021
- "test:coverage": "vitest run --coverage",
1022
- "postinstall": "node scripts/welcome.mjs || true"
1049
+ "test:coverage": "vitest run --coverage"
1023
1050
  }
1024
1051
  }
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.55.1"
6
+ version: "0.56.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
@@ -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.55.1.
5
+ > Radix UI + Tailwind 4 (CSS-first) + CVA design system for Devalok apps, v0.56.0.
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
 
@@ -40,8 +40,8 @@ Some components ship hard peers as optional. **Install BEFORE first import.**
40
40
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
41
41
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
42
42
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
43
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
44
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
43
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
44
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
45
45
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
46
46
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
47
47
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -53,8 +53,8 @@ Some components depend on third-party libraries that ship as optional peers. **I
53
53
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
54
54
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
55
55
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
56
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
57
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
56
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
57
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
58
58
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
59
59
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
60
60
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -36,8 +36,8 @@ Some components ship hard peers as optional. **Install BEFORE first import.**
36
36
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
37
37
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
38
38
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
39
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
40
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
39
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
40
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
41
41
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
42
42
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
43
43
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -45,8 +45,8 @@ Some components ship hard peers as optional. **Install BEFORE first import.**
45
45
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
46
46
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
47
47
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
48
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
49
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
48
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
49
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
50
50
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
51
51
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
52
52
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -51,8 +51,8 @@ Some components ship hard peers as optional. **Install BEFORE first import.**
51
51
  | `@devalok/shilp-sutra/composed/date-picker` | `pnpm add date-fns` |
52
52
  | `@devalok/shilp-sutra/composed/file-preview` | `pnpm add react-pdf react-zoom-pan-pinch` |
53
53
  | `@devalok/shilp-sutra/composed/markdown-viewer` | `pnpm add react-markdown react-syntax-highlighter remark-gfm` |
54
- | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
55
- | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add -D @tiptap/pm @tiptap/react` *(types only the runtime is bundled)* |
54
+ | `@devalok/shilp-sutra/composed/rich-chat-input` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion date-fns` |
55
+ | `@devalok/shilp-sutra/composed/rich-text-editor` | `pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react @tiptap/starter-kit @tiptap/suggestion` |
56
56
  | `@devalok/shilp-sutra/composed/schedule-view` | `pnpm add date-fns` |
57
57
  | `@devalok/shilp-sutra/ui/charts` | `pnpm add d3-axis d3-scale d3-selection d3-shape` |
58
58
  | `@devalok/shilp-sutra/ui/data-table` | `pnpm add @tanstack/react-table @tanstack/react-virtual` |
@@ -196,17 +196,38 @@ In dev mode, calling `toast()` without a mounted `<Toaster />` logs a one-time c
196
196
 
197
197
  ## Symptom: Build error mentioning `use-sync-external-store`
198
198
 
199
- **Diagnosis:** Should not happen since v0.37.0 `use-sync-external-store` was moved to runtime dependencies and is auto-installed transitively.
199
+ **Diagnosis:** we no longer depend on it at all, as of v0.56.0. Nothing in our `dist` imports it.
200
200
 
201
- **Why this dependency exists at all** (it is a hook built into React 18+, so it looks redundant): we do not use the shim ourselves. It is a TipTap transitive. TipTap's code is bundled into our `dist`, and that bundled chunk imports `use-sync-external-store/shim`. We externalize the shim rather than bundling it, because bundling forced a `createRequire` bridge into our Rollup runtime chunk that broke every Turbopack consumer. Externalized code must be resolvable from the consumer's tree, hence the declaration.
201
+ It was never ours: React 18+ has `useSyncExternalStore` built in and our own code calls it directly. The dependency existed purely because we *bundled* TipTap, and that bundled chunk imported the shim. TipTap is now externalized, so the shim went with it.
202
202
 
203
- If it still happens, install it explicitly:
203
+ If you still see the error, something else in your tree wants it — find out what and install it there:
204
204
 
205
205
  ```bash
206
- pnpm add use-sync-external-store
206
+ pnpm why use-sync-external-store
207
207
  ```
208
208
 
209
- And open an issue at <https://github.com/devalok-design/shilp-sutra/issues> with the resolution graph (`pnpm why use-sync-external-store`) so we can fix the root cause.
209
+ If the trail leads back to `@devalok/shilp-sutra`, that's a bug: open an issue at <https://github.com/devalok-design/shilp-sutra/issues> with that output.
210
+
211
+ ## Symptom: `Cannot find module '@tiptap/core'` (or another `@tiptap/*`) after upgrading to 0.56.0
212
+
213
+ **Diagnosis:** expected, and it is the one breaking change in 0.56.0. We used to bundle TipTap *and* list it as an optional peer — so `RichTextEditor` / `RichChatInput` worked whether or not you installed the peers. It is now externalized, so you must install them.
214
+
215
+ **Why we changed it:** a consumer who *did* follow the peer instructions ended up running two ProseMirror copies. Plugin keys are module-scoped, so the two copies could not see each other's plugins and the editor misbehaved in ways that were near-impossible to debug. It also cut 641 KB from the package for everyone who never touches rich text.
216
+
217
+ **Fix** — install the peers for the component you import (§2a of your framework's install recipe has the exact line):
218
+
219
+ ```bash
220
+ # RichTextEditor
221
+ pnpm add @tiptap/core @tiptap/extension-highlight @tiptap/extension-image \
222
+ @tiptap/extension-list @tiptap/extension-mention @tiptap/extension-text-align \
223
+ @tiptap/extensions @tiptap/markdown @tiptap/pm @tiptap/react \
224
+ @tiptap/starter-kit @tiptap/suggestion
225
+
226
+ # RichChatInput — the same list plus date-fns
227
+ pnpm add date-fns
228
+ ```
229
+
230
+ Or ask the docs MCP: `preflight` reports exactly which peers your imports need.
210
231
 
211
232
  ## Symptom: `Cannot find package 'sonner'` when you only imported a hook (or `'react-markdown'` from the AI barrel)
212
233