@devalok/shilp-sutra 0.55.0 → 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 (74) 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/tokens/primitives.css +6 -1
  19. package/dist/tokens/semantic.css +1 -1
  20. package/dist/ui/alert.js +29 -29
  21. package/dist/ui/avatar.js +42 -42
  22. package/dist/ui/banner.js +25 -25
  23. package/dist/ui/button.js +31 -31
  24. package/dist/ui/button.js.map +1 -1
  25. package/dist/ui/card.js +39 -39
  26. package/dist/ui/checkbox.d.ts.map +1 -1
  27. package/dist/ui/checkbox.js +1 -0
  28. package/dist/ui/checkbox.js.map +1 -1
  29. package/dist/ui/combobox.js +135 -135
  30. package/dist/ui/combobox.js.map +1 -1
  31. package/dist/ui/dot.js +13 -13
  32. package/dist/ui/input.js +25 -25
  33. package/dist/ui/lib/utils.js +2 -1
  34. package/dist/ui/lib/utils.js.map +1 -1
  35. package/dist/ui/number-input.js +36 -36
  36. package/dist/ui/progress.js +55 -55
  37. package/dist/ui/select.js +58 -58
  38. package/dist/ui/sheet.js +46 -46
  39. package/dist/ui/sidebar.js +128 -128
  40. package/dist/ui/sidebar.js.map +1 -1
  41. package/dist/ui/skeleton.js +39 -39
  42. package/dist/ui/slider.d.ts.map +1 -1
  43. package/dist/ui/slider.js +18 -17
  44. package/dist/ui/slider.js.map +1 -1
  45. package/dist/ui/surface.js +9 -9
  46. package/dist/ui/switch.d.ts.map +1 -1
  47. package/dist/ui/switch.js +1 -0
  48. package/dist/ui/switch.js.map +1 -1
  49. package/dist/ui/tabs.js +47 -47
  50. package/dist/ui/text.js +8 -8
  51. package/dist/ui/textarea.js +12 -12
  52. package/dist/ui/toggle.js +12 -12
  53. package/docs/recipes/install-astro.md +2 -2
  54. package/docs/recipes/install-next-app-router.md +2 -2
  55. package/docs/recipes/install-remix.md +2 -2
  56. package/docs/recipes/install-tanstack-start.md +2 -2
  57. package/docs/recipes/install-vite.md +2 -2
  58. package/docs/recipes/troubleshoot.md +26 -5
  59. package/llms.txt +1 -1
  60. package/mcp-manifest.json +24 -3
  61. package/package.json +39 -11
  62. package/skill/SKILL.md +1 -1
  63. package/skill/references/components.md +1 -1
  64. package/skill/references/setup-astro.md +2 -2
  65. package/skill/references/setup-next-app-router.md +2 -2
  66. package/skill/references/setup-remix.md +2 -2
  67. package/skill/references/setup-tanstack-start.md +2 -2
  68. package/skill/references/setup-vite.md +2 -2
  69. package/skill/references/troubleshoot.md +26 -5
  70. package/dist/_chunks/tiptap.js +0 -18809
  71. package/dist/_chunks/tiptap.js.map +0 -1
  72. package/dist/_chunks/vendor-utils.js +0 -1766
  73. package/dist/_chunks/vendor-utils.js.map +0 -1
  74. package/scripts/welcome.mjs +0 -312
package/dist/ui/tabs.js CHANGED
@@ -1,43 +1,43 @@
1
1
  "use client";
2
2
  import { springs as e, tweens 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 { Content as i, List as a, Root2 as o, Trigger as s } from "../_chunks/primitives/react-tabs.js";
6
- import * as c from "react";
7
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
8
- import { LayoutGroup as d, motion as f } from "framer-motion";
3
+ import { cn as n } from "./lib/utils.js";
4
+ import { Content as r, List as i, Root2 as a, Trigger as o } from "../_chunks/primitives/react-tabs.js";
5
+ import * as s from "react";
6
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
+ import { LayoutGroup as u, motion as d } from "framer-motion";
8
+ import { cva as f } from "class-variance-authority";
9
9
  //#region src/ui/tabs.tsx
10
- var p = c.createContext(void 0), m = c.createContext("horizontal"), h = c.forwardRef(({ value: e, defaultValue: t, onValueChange: n, orientation: i, ...a }, s) => {
11
- let [u, d] = c.useState(e ?? t ?? "");
12
- c.useEffect(() => {
10
+ var p = s.createContext(void 0), m = s.createContext("horizontal"), h = s.forwardRef(({ value: e, defaultValue: t, onValueChange: r, orientation: i, ...o }, l) => {
11
+ let [u, d] = s.useState(e ?? t ?? "");
12
+ s.useEffect(() => {
13
13
  e !== void 0 && d(e);
14
14
  }, [e]);
15
- let f = c.useCallback((e) => {
16
- d(e), n?.(e);
17
- }, [n]), h = i ?? "horizontal";
18
- return /* @__PURE__ */ l(p.Provider, {
15
+ let f = s.useCallback((e) => {
16
+ d(e), r?.(e);
17
+ }, [r]), h = i ?? "horizontal";
18
+ return /* @__PURE__ */ c(p.Provider, {
19
19
  value: u,
20
- children: /* @__PURE__ */ l(m.Provider, {
20
+ children: /* @__PURE__ */ c(m.Provider, {
21
21
  value: h,
22
- children: /* @__PURE__ */ l(o, {
23
- ref: s,
22
+ children: /* @__PURE__ */ c(a, {
23
+ ref: l,
24
24
  value: e,
25
25
  defaultValue: e === void 0 ? t : void 0,
26
26
  onValueChange: f,
27
27
  orientation: i,
28
- ...a,
29
- className: r(h === "vertical" && "flex flex-row gap-ds-05", a.className)
28
+ ...o,
29
+ className: n(h === "vertical" && "flex flex-row gap-ds-05", o.className)
30
30
  })
31
31
  })
32
32
  });
33
33
  });
34
34
  h.displayName = "Tabs";
35
- var g = c.createContext({
35
+ var g = s.createContext({
36
36
  variant: "line",
37
37
  size: "md",
38
38
  color: "accent",
39
39
  layoutId: "tab-indicator"
40
- }), _ = n("inline-flex items-center", {
40
+ }), _ = f("inline-flex items-center", {
41
41
  variants: {
42
42
  variant: {
43
43
  line: "border-b border-surface-border-strong w-full gap-0",
@@ -67,7 +67,7 @@ var g = c.createContext({
67
67
  size: "md",
68
68
  orientation: "horizontal"
69
69
  }
70
- }), v = n("relative inline-flex items-center justify-center gap-ds-02 whitespace-nowrap font-sans font-medium transition-colors duration-100 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-1 disabled:pointer-events-none disabled:opacity-action-disabled", {
70
+ }), v = f("relative inline-flex items-center justify-center gap-ds-02 whitespace-nowrap font-sans font-medium transition-colors duration-100 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-1 disabled:pointer-events-none disabled:opacity-action-disabled", {
71
71
  variants: {
72
72
  variant: {
73
73
  line: ["-mb-px", "text-surface-fg-muted hover:text-surface-fg"],
@@ -87,8 +87,8 @@ var g = c.createContext({
87
87
  variant: "line",
88
88
  size: "md"
89
89
  }
90
- }), y = c.forwardRef(({ className: e, variant: t, size: n, color: i, ...o }, s) => {
91
- let u = c.useContext(m), f = t ?? "line", p = n ?? "md", h = i ?? "accent", v = c.useId(), y = c.useMemo(() => ({
90
+ }), y = s.forwardRef(({ className: e, variant: t, size: r, color: a, ...o }, l) => {
91
+ let d = s.useContext(m), f = t ?? "line", p = r ?? "md", h = a ?? "accent", v = s.useId(), y = s.useMemo(() => ({
92
92
  variant: f,
93
93
  size: p,
94
94
  color: h,
@@ -99,68 +99,68 @@ var g = c.createContext({
99
99
  h,
100
100
  v
101
101
  ]);
102
- return /* @__PURE__ */ l(g.Provider, {
102
+ return /* @__PURE__ */ c(g.Provider, {
103
103
  value: y,
104
- children: /* @__PURE__ */ l(d, { children: /* @__PURE__ */ l(a, {
105
- ref: s,
106
- className: r(_({
104
+ children: /* @__PURE__ */ c(u, { children: /* @__PURE__ */ c(i, {
105
+ ref: l,
106
+ className: n(_({
107
107
  variant: f,
108
108
  size: p,
109
- orientation: u
109
+ orientation: d
110
110
  }), e),
111
111
  ...o
112
112
  }) })
113
113
  });
114
114
  });
115
- y.displayName = a.displayName;
115
+ y.displayName = i.displayName;
116
116
  var b = {
117
117
  accent: "data-[state=active]:text-accent-11",
118
118
  neutral: "data-[state=active]:text-surface-fg"
119
119
  }, x = {
120
120
  accent: "bg-accent-9",
121
121
  neutral: "bg-surface-fg"
122
- }, S = c.forwardRef(({ className: t, variant: n, children: i, ...a }, o) => {
123
- let d = c.useContext(g), h = c.useContext(p), _ = c.useContext(m), y = n ?? d.variant, S = d.size, C = d.color, w = a.value === h, T = _ === "vertical";
124
- return /* @__PURE__ */ u(s, {
125
- ref: o,
126
- className: r(v({
122
+ }, S = s.forwardRef(({ className: t, variant: r, children: i, ...a }, u) => {
123
+ let f = s.useContext(g), h = s.useContext(p), _ = s.useContext(m), y = r ?? f.variant, S = f.size, C = f.color, w = a.value === h, T = _ === "vertical";
124
+ return /* @__PURE__ */ l(o, {
125
+ ref: u,
126
+ className: n(v({
127
127
  variant: y,
128
128
  size: S
129
129
  }), y === "line" && b[C], T && "w-full justify-start", y === "line" && T && "-ml-px -mb-0", t),
130
130
  ...a,
131
131
  children: [
132
- y === "contained" && w && /* @__PURE__ */ l(f.span, {
133
- layoutId: `${d.layoutId}-contained`,
132
+ y === "contained" && w && /* @__PURE__ */ c(d.span, {
133
+ layoutId: `${f.layoutId}-contained`,
134
134
  className: "absolute inset-0 rounded-control bg-surface-overlay shadow-raised",
135
135
  transition: e.smooth
136
136
  }),
137
- /* @__PURE__ */ l("span", {
137
+ /* @__PURE__ */ c("span", {
138
138
  className: "relative z-[1] inline-flex min-w-0 items-center gap-ds-02",
139
- children: /* @__PURE__ */ l("span", {
139
+ children: /* @__PURE__ */ c("span", {
140
140
  className: "truncate",
141
141
  children: i
142
142
  })
143
143
  }),
144
- y === "line" && w && /* @__PURE__ */ l(f.span, {
145
- layoutId: `${d.layoutId}-line`,
146
- className: r("absolute", T ? "left-0 top-0 bottom-0 w-0.5" : "bottom-0 left-0 right-0 h-0.5", x[C]),
144
+ y === "line" && w && /* @__PURE__ */ c(d.span, {
145
+ layoutId: `${f.layoutId}-line`,
146
+ className: n("absolute", T ? "left-0 top-0 bottom-0 w-0.5" : "bottom-0 left-0 right-0 h-0.5", x[C]),
147
147
  transition: e.smooth
148
148
  })
149
149
  ]
150
150
  });
151
151
  });
152
- S.displayName = s.displayName;
153
- var C = c.forwardRef(({ className: e, children: n, ...a }, o) => /* @__PURE__ */ l(i, {
152
+ S.displayName = o.displayName;
153
+ var C = s.forwardRef(({ className: e, children: i, ...a }, o) => /* @__PURE__ */ c(r, {
154
154
  ref: o,
155
- className: r("ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", c.useContext(m) === "vertical" ? "mt-0 flex-1 min-w-0" : "mt-ds-05", e),
155
+ className: n("ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2", s.useContext(m) === "vertical" ? "mt-0 flex-1 min-w-0" : "mt-ds-05", e),
156
156
  ...a,
157
- children: /* @__PURE__ */ l(f.div, {
157
+ children: /* @__PURE__ */ c(d.div, {
158
158
  initial: { opacity: 0 },
159
159
  animate: { opacity: 1 },
160
160
  transition: t.fade,
161
- children: n
161
+ children: i
162
162
  })
163
163
  }));
164
- C.displayName = i.displayName;
164
+ C.displayName = r.displayName;
165
165
  //#endregion
166
166
  export { h as Tabs, C as TabsContent, y as TabsList, S as TabsTrigger };
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.0.
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.0",
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.0",
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
  ".": {
@@ -65,6 +65,7 @@
65
65
  },
66
66
  "./css": "./dist/tokens/shilp-sutra.css",
67
67
  "./tokens": "./dist/tokens/index.css",
68
+ "./package.json": "./package.json",
68
69
  "./BREAKING.json": "./BREAKING.json",
69
70
  "./BREAKING.schema.json": "./BREAKING.schema.json",
70
71
  "./ui": {
@@ -835,7 +836,6 @@
835
836
  "fonts",
836
837
  "make-kit",
837
838
  "skill",
838
- "scripts/welcome.mjs",
839
839
  "AGENTS.md",
840
840
  "BREAKING.json",
841
841
  "BREAKING.schema.json",
@@ -858,8 +858,16 @@
858
858
  "@tanstack/react-table": "^8.0.0",
859
859
  "@tanstack/react-virtual": "^3.0.0",
860
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",
861
868
  "@tiptap/pm": "^3.28.0",
862
869
  "@tiptap/react": "^3.28.0",
870
+ "@tiptap/starter-kit": "^3.28.0",
863
871
  "@tiptap/suggestion": "^3.28.0",
864
872
  "d3-array": "^3.0.0",
865
873
  "d3-axis": "^3.0.0",
@@ -893,12 +901,36 @@
893
901
  "@tiptap/core": {
894
902
  "optional": true
895
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
+ },
896
925
  "@tiptap/pm": {
897
926
  "optional": true
898
927
  },
899
928
  "@tiptap/react": {
900
929
  "optional": true
901
930
  },
931
+ "@tiptap/starter-kit": {
932
+ "optional": true
933
+ },
902
934
  "@tiptap/suggestion": {
903
935
  "optional": true
904
936
  },
@@ -973,13 +1005,12 @@
973
1005
  "@tiptap/extension-text-align": "^3.28.0",
974
1006
  "@tiptap/extensions": "^3.28.0",
975
1007
  "@tiptap/markdown": "^3.28.0",
1008
+ "@tiptap/pm": "^3.28.0",
976
1009
  "@tiptap/react": "^3.28.0",
977
1010
  "@tiptap/starter-kit": "^3.28.0",
978
1011
  "@tiptap/suggestion": "^3.28.0",
979
1012
  "@types/react-syntax-highlighter": "^15.5.13",
980
1013
  "aria-hidden": "^1.2.6",
981
- "class-variance-authority": "^0.7.1",
982
- "clsx": "^2.1.1",
983
1014
  "d3-array": "^3.2.4",
984
1015
  "d3-axis": "^3.0.0",
985
1016
  "d3-format": "^3.1.2",
@@ -995,7 +1026,6 @@
995
1026
  "framer-motion": "^12.42.2",
996
1027
  "frimousse": "^0.3.0",
997
1028
  "input-otp": "^1.4.2",
998
- "prosemirror-state": "^1.4.4",
999
1029
  "react-colorful": "^5.8.0",
1000
1030
  "react-markdown": "^10.1.0",
1001
1031
  "react-pdf": "^10.4.1",
@@ -1003,8 +1033,7 @@
1003
1033
  "react-syntax-highlighter": "^16.1.1",
1004
1034
  "react-zoom-pan-pinch": "^4.0.3",
1005
1035
  "remark-gfm": "^4.0.1",
1006
- "sonner": "^2.0.7",
1007
- "tailwind-merge": "^3.6.0"
1036
+ "sonner": "^2.0.7"
1008
1037
  },
1009
1038
  "scripts": {
1010
1039
  "build": "vite build && node scripts/post-build.mjs",
@@ -1017,7 +1046,6 @@
1017
1046
  "typecheck": "tsc --noEmit",
1018
1047
  "lint": "eslint src/",
1019
1048
  "test": "vitest run",
1020
- "test:coverage": "vitest run --coverage",
1021
- "postinstall": "node scripts/welcome.mjs || true"
1049
+ "test:coverage": "vitest run --coverage"
1022
1050
  }
1023
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.0"
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.0.
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