@devalok/shilp-sutra 0.11.0 → 0.12.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.
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { jsx as e } from "react/jsx-runtime";
3
- import { C as r, b as n } from "./primitives.js";
3
+ import { C as r, b as d } from "./primitives.js";
4
4
  import { IconMinus as m, IconCheck as l } from "@tabler/icons-react";
5
- import * as b from "react";
6
- import { c as f } from "./utils.js";
7
- const h = b.forwardRef(({ className: o, error: i, indeterminate: a, checked: s, ...c }, d) => {
5
+ import * as f from "react";
6
+ import { c as b } from "./utils.js";
7
+ const h = f.forwardRef(({ className: i, error: o, indeterminate: a, checked: s, ...c }, n) => {
8
8
  const t = a ? "indeterminate" : s;
9
- return e(r, { ref: d, checked: t, className: f("peer h-ico-md w-ico-md shrink-0 rounded-ds-sm", "border border-border-strong", "bg-field", "transition-colors duration-fast-01", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2", "disabled:cursor-not-allowed disabled:opacity-[0.38]", "data-[state=checked]:bg-interactive data-[state=checked]:border-interactive data-[state=checked]:text-text-on-color", "data-[state=indeterminate]:bg-interactive data-[state=indeterminate]:border-interactive data-[state=indeterminate]:text-text-on-color", i && "border-border-error", o), ...c, children: e(n, { className: "flex items-center justify-center text-current", children: t === "indeterminate" ? e(m, { className: "h-ico-sm w-ico-sm" }) : e(l, { className: "h-ico-sm w-ico-sm" }) }) });
9
+ return e(r, { ref: n, checked: t, className: b("peer flex items-center justify-center h-ico-md w-ico-md shrink-0 rounded-ds-sm", "border border-border-strong", "bg-field", "transition-colors duration-fast-01", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2", "disabled:cursor-not-allowed disabled:opacity-[0.38]", "data-[state=checked]:bg-interactive data-[state=checked]:border-interactive data-[state=checked]:text-text-on-color", "data-[state=indeterminate]:bg-interactive data-[state=indeterminate]:border-interactive data-[state=indeterminate]:text-text-on-color", o && "border-border-error", i), ...c, children: e(d, { className: "flex items-center justify-center text-current", children: t === "indeterminate" ? e(m, { className: "h-ico-sm w-ico-sm" }) : e(l, { className: "h-3 w-3" }) }) });
10
10
  });
11
11
  h.displayName = r.displayName;
12
12
  export {
@@ -15,11 +15,11 @@ import { T as $, a as P, b as W, c as U } from "./tooltip.js";
15
15
  const X = z([
16
16
  "flex w-full font-sans",
17
17
  "bg-field text-text-primary",
18
- "border border-border rounded-ds-md",
18
+ "border border-border-subtle rounded-ds-md",
19
19
  "placeholder:text-text-placeholder",
20
20
  "hover:bg-field-hover",
21
21
  "transition-colors duration-fast-01",
22
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:border-border-interactive",
22
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus/50 focus-visible:border-border-subtle",
23
23
  "disabled:cursor-not-allowed disabled:opacity-[0.38]",
24
24
  "read-only:bg-layer-02 read-only:cursor-default"
25
25
  ], {
@@ -32,7 +32,7 @@ const X = z([
32
32
  },
33
33
  defaultVariants: { size: "md" }
34
34
  }), T = B.forwardRef(({ className: a, type: e, state: t, size: d, startIcon: s, endIcon: n, ...c }, f) => {
35
- const l = K(), u = t ?? (l.state === "helper" ? void 0 : l.state), p = c["aria-describedby"] ?? l.helperTextId, g = c["aria-required"] ?? l.required, y = r("input", { type: e, className: i(X({ size: d }), s && "pl-ds-08", n && "pr-ds-08", u === "error" && "border-border-error focus-visible:ring-error", u === "warning" && "border-border-warning focus-visible:ring-warning", u === "success" && "border-border-success focus-visible:ring-success", a), "aria-invalid": u === "error" || void 0, "aria-describedby": p, "aria-required": g || void 0, ref: f, ...c });
35
+ const l = K(), u = t ?? (l.state === "helper" ? void 0 : l.state), b = c["aria-describedby"] ?? l.helperTextId, g = c["aria-required"] ?? l.required, y = r("input", { type: e, className: i(X({ size: d }), s && "pl-ds-07", n && "pr-ds-07", u === "error" && "border-border-error focus-visible:ring-error", u === "warning" && "border-border-warning focus-visible:ring-warning", u === "success" && "border-border-success focus-visible:ring-success", a), "aria-invalid": u === "error" || void 0, "aria-describedby": b, "aria-required": g || void 0, ref: f, ...c });
36
36
  return !s && !n ? y : x("div", { className: "relative flex items-center w-full", children: [s && r("span", { className: "absolute left-ds-03 flex items-center text-text-secondary pointer-events-none [&>svg]:h-ico-sm [&>svg]:w-ico-sm", children: s }), y, n && r("span", { className: "absolute right-ds-03 flex items-center text-text-secondary pointer-events-none [&>svg]:h-ico-sm [&>svg]:w-ico-sm", children: n })] });
37
37
  });
38
38
  T.displayName = "Input";
@@ -55,18 +55,18 @@ const te = o(
55
55
  children: n,
56
56
  ...c
57
57
  }, f) => {
58
- const l = G(), [u, p] = _(!1), [g, y] = _(a), h = e ?? g, w = C(
59
- (b) => {
60
- const m = typeof b == "function" ? b(h) : b;
58
+ const l = G(), [u, b] = _(!1), [g, y] = _(a), h = e ?? g, w = C(
59
+ (p) => {
60
+ const m = typeof p == "function" ? p(h) : p;
61
61
  t ? t(m) : y(m), document.cookie = `${Y}=${m}; path=/; max-age=${J}`;
62
62
  },
63
63
  [t, h]
64
- ), S = C(() => l ? p((b) => !b) : w((b) => !b), [l, w, p]);
64
+ ), S = C(() => l ? b((p) => !p) : w((p) => !p), [l, w, b]);
65
65
  j(() => {
66
- const b = (m) => {
66
+ const p = (m) => {
67
67
  m.key === ae && (m.metaKey || m.ctrlKey) && (m.preventDefault(), S());
68
68
  };
69
- return window.addEventListener("keydown", b), () => window.removeEventListener("keydown", b);
69
+ return window.addEventListener("keydown", p), () => window.removeEventListener("keydown", p);
70
70
  }, [S]);
71
71
  const M = h ? "expanded" : "collapsed", D = E(
72
72
  () => ({
@@ -75,7 +75,7 @@ const te = o(
75
75
  setOpen: w,
76
76
  isMobile: l,
77
77
  openMobile: u,
78
- setOpenMobile: p,
78
+ setOpenMobile: b,
79
79
  toggleSidebar: S
80
80
  }),
81
81
  [
@@ -84,7 +84,7 @@ const te = o(
84
84
  w,
85
85
  l,
86
86
  u,
87
- p,
87
+ b,
88
88
  S
89
89
  ]
90
90
  );
@@ -117,7 +117,7 @@ const re = o(
117
117
  children: s,
118
118
  ...n
119
119
  }, c) => {
120
- const { isMobile: f, state: l, openMobile: u, setOpenMobile: p } = N();
120
+ const { isMobile: f, state: l, openMobile: u, setOpenMobile: b } = N();
121
121
  return t === "none" ? /* @__PURE__ */ r(
122
122
  "div",
123
123
  {
@@ -129,7 +129,7 @@ const re = o(
129
129
  ...n,
130
130
  children: s
131
131
  }
132
- ) : f ? /* @__PURE__ */ r(V, { open: u, onOpenChange: p, ...n, children: /* @__PURE__ */ r(
132
+ ) : f ? /* @__PURE__ */ r(V, { open: u, onOpenChange: b, ...n, children: /* @__PURE__ */ r(
133
133
  F,
134
134
  {
135
135
  "data-sidebar": "sidebar",
@@ -317,7 +317,7 @@ const ue = o(
317
317
  )
318
318
  );
319
319
  ue.displayName = "SidebarContent";
320
- const pe = o(
320
+ const be = o(
321
321
  ({ className: a, ...e }, t) => /* @__PURE__ */ r(
322
322
  "div",
323
323
  {
@@ -328,8 +328,8 @@ const pe = o(
328
328
  }
329
329
  )
330
330
  );
331
- pe.displayName = "SidebarGroup";
332
- const be = o(({ className: a, asChild: e = !1, ...t }, d) => /* @__PURE__ */ r(
331
+ be.displayName = "SidebarGroup";
332
+ const pe = o(({ className: a, asChild: e = !1, ...t }, d) => /* @__PURE__ */ r(
333
333
  e ? v : "div",
334
334
  {
335
335
  ref: d,
@@ -342,7 +342,7 @@ const be = o(({ className: a, asChild: e = !1, ...t }, d) => /* @__PURE__ */ r(
342
342
  ...t
343
343
  }
344
344
  ));
345
- be.displayName = "SidebarGroupLabel";
345
+ pe.displayName = "SidebarGroupLabel";
346
346
  const me = o(({ className: a, asChild: e = !1, ...t }, d) => /* @__PURE__ */ r(
347
347
  e ? v : "button",
348
348
  {
@@ -423,7 +423,7 @@ const xe = z(
423
423
  className: n,
424
424
  ...c
425
425
  }, f) => {
426
- const l = a ? v : "button", { isMobile: u, state: p } = N(), g = /* @__PURE__ */ r(
426
+ const l = a ? v : "button", { isMobile: u, state: b } = N(), g = /* @__PURE__ */ r(
427
427
  l,
428
428
  {
429
429
  ref: f,
@@ -443,7 +443,7 @@ const xe = z(
443
443
  {
444
444
  side: "right",
445
445
  align: "center",
446
- hidden: p !== "collapsed" || u,
446
+ hidden: b !== "collapsed" || u,
447
447
  ...s
448
448
  }
449
449
  )
@@ -567,8 +567,8 @@ export {
567
567
  ne as a,
568
568
  ce as b,
569
569
  ue as c,
570
- pe as d,
571
- be as e,
570
+ be as d,
571
+ pe as e,
572
572
  me as f,
573
573
  fe as g,
574
574
  ge as h,
@@ -1,14 +1,17 @@
1
- import { g as s, h as t } from "./vendor-utils.js";
2
- const n = t({
1
+ import { g as d, h as e } from "./vendor-utils.js";
2
+ const t = e({
3
3
  extend: {
4
+ theme: {
5
+ spacing: ["ds-01", "ds-02", "ds-02b", "ds-03", "ds-04", "ds-05", "ds-05b", "ds-06", "ds-06b", "ds-07", "ds-08", "ds-09", "ds-10", "ds-11", "ds-12", "ds-13"]
6
+ },
4
7
  classGroups: {
5
8
  "font-size": [{ "text-ds": ["xs", "sm", "md"] }]
6
9
  }
7
10
  }
8
11
  });
9
- function o(...e) {
10
- return n(s(e));
12
+ function r(...s) {
13
+ return t(d(s));
11
14
  }
12
15
  export {
13
- o as c
16
+ r as c
14
17
  };
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
3
3
  import * as u from "react";
4
4
  import { e as w } from "../_chunks/vendor-utils.js";
5
- import { c as d } from "../_chunks/utils.js";
5
+ import { c as i } from "../_chunks/utils.js";
6
6
  import { A, a as T, b as C } from "../_chunks/avatar.js";
7
7
  import { T as I, a as f, b as p, c as h } from "../_chunks/tooltip.js";
8
8
  import { getInitials as j } from "./lib/string-utils.js";
9
- const x = w(
9
+ const v = w(
10
10
  "shrink-0 overflow-hidden rounded-ds-full border-2 border-layer-01",
11
11
  {
12
12
  variants: {
@@ -21,34 +21,34 @@ const x = w(
21
21
  }
22
22
  }
23
23
  ), z = u.forwardRef(
24
- ({ users: s, max: l = 4, size: o, showTooltip: b = !0, className: v, ...g }, y) => {
25
- const i = s.slice(0, l), m = s.length - l, n = {
24
+ ({ users: r, max: l = 4, size: d, showTooltip: b = !0, className: x, ...g }, y) => {
25
+ const o = r.slice(0, l), m = r.length - l, n = {
26
26
  sm: "-ml-ds-02b",
27
27
  md: "-ml-ds-03",
28
28
  lg: "-ml-ds-04"
29
- }[o ?? "md"];
30
- return /* @__PURE__ */ e(I, { children: /* @__PURE__ */ r(
29
+ }[d ?? "md"];
30
+ return /* @__PURE__ */ e(I, { children: /* @__PURE__ */ s(
31
31
  "div",
32
32
  {
33
33
  ref: y,
34
- className: d("flex items-center", v),
34
+ className: i("flex items-center", x),
35
35
  ...g,
36
36
  children: [
37
- i.map((a, t) => {
38
- const N = j(a.name), c = /* @__PURE__ */ r(
37
+ o.map((a, t) => {
38
+ const N = j(a.name), c = /* @__PURE__ */ s(
39
39
  A,
40
40
  {
41
- className: d(
42
- x({ size: o }),
41
+ className: i(
42
+ v({ size: d }),
43
43
  t > 0 && n
44
44
  ),
45
- style: { zIndex: i.length - t },
45
+ style: { zIndex: o.length - t },
46
46
  children: [
47
47
  a.image && /* @__PURE__ */ e(T, { src: a.image, alt: a.name }),
48
48
  /* @__PURE__ */ e(
49
49
  C,
50
50
  {
51
- className: "bg-field font-body font-semibold text-text-on-color",
51
+ className: "font-body font-semibold",
52
52
  children: N
53
53
  }
54
54
  )
@@ -56,7 +56,7 @@ const x = w(
56
56
  },
57
57
  t
58
58
  );
59
- return b ? /* @__PURE__ */ r(f, { children: [
59
+ return b ? /* @__PURE__ */ s(f, { children: [
60
60
  /* @__PURE__ */ e(p, { asChild: !0, children: c }),
61
61
  /* @__PURE__ */ e(
62
62
  h,
@@ -68,14 +68,14 @@ const x = w(
68
68
  )
69
69
  ] }, t) : c;
70
70
  }),
71
- m > 0 && /* @__PURE__ */ r(f, { children: [
72
- /* @__PURE__ */ e(p, { asChild: !0, children: /* @__PURE__ */ r(
71
+ m > 0 && /* @__PURE__ */ s(f, { children: [
72
+ /* @__PURE__ */ e(p, { asChild: !0, children: /* @__PURE__ */ s(
73
73
  "div",
74
74
  {
75
- className: d(
76
- x({ size: o }),
75
+ className: i(
76
+ v({ size: d }),
77
77
  n,
78
- "flex cursor-default items-center justify-center bg-layer-03 font-body font-semibold text-text-on-color"
78
+ "flex cursor-default items-center justify-center bg-interactive-subtle font-body font-semibold text-interactive"
79
79
  ),
80
80
  style: { zIndex: 0 },
81
81
  children: [
@@ -89,7 +89,7 @@ const x = w(
89
89
  {
90
90
  className: "border-border bg-layer-01 text-text-primary",
91
91
  sideOffset: 6,
92
- children: /* @__PURE__ */ e("div", { className: "flex flex-col gap-ds-01", children: s.slice(l).map((a, t) => /* @__PURE__ */ e("p", { className: "text-ds-sm", children: a.name }, t)) })
92
+ children: /* @__PURE__ */ e("div", { className: "flex flex-col gap-ds-01", children: r.slice(l).map((a, t) => /* @__PURE__ */ e("p", { className: "text-ds-sm", children: a.name }, t)) })
93
93
  }
94
94
  )
95
95
  ] })
@@ -1,4 +1,4 @@
1
- const r = {
1
+ const a = {
2
2
  /**
3
3
  * Dark mode uses the `.dark` class strategy. If your app uses `darkMode: 'media'`,
4
4
  * set it explicitly in your own tailwind.config — your config takes precedence.
@@ -85,6 +85,7 @@ const r = {
85
85
  "ds-05": "var(--spacing-05)",
86
86
  "ds-05b": "var(--spacing-05b)",
87
87
  "ds-06": "var(--spacing-06)",
88
+ "ds-06b": "var(--spacing-06b)",
88
89
  "ds-07": "var(--spacing-07)",
89
90
  "ds-08": "var(--spacing-08)",
90
91
  "ds-09": "var(--spacing-09)",
@@ -288,6 +289,43 @@ const r = {
288
289
  "caret-blink": {
289
290
  "0%,70%,100%": { opacity: "1" },
290
291
  "20%,50%": { opacity: "0" }
292
+ },
293
+ "fade-in": {
294
+ "0%": { opacity: "0" },
295
+ "100%": { opacity: "1" }
296
+ },
297
+ "fade-out": {
298
+ "0%": { opacity: "1" },
299
+ "100%": { opacity: "0" }
300
+ },
301
+ "slide-up": {
302
+ "0%": { opacity: "0", transform: "translateY(8px)" },
303
+ "100%": { opacity: "1", transform: "translateY(0)" }
304
+ },
305
+ "slide-right": {
306
+ "0%": { opacity: "0", transform: "translateX(20px)" },
307
+ "100%": { opacity: "1", transform: "translateX(0)" }
308
+ },
309
+ "scale-in": {
310
+ "0%": { opacity: "0", transform: "scale(0.96)" },
311
+ "100%": { opacity: "1", transform: "scale(1)" }
312
+ },
313
+ "scale-out": {
314
+ "0%": { opacity: "1", transform: "scale(1)" },
315
+ "100%": { opacity: "0", transform: "scale(0.96)" }
316
+ },
317
+ "glow-pulse": {
318
+ "0%, 100%": { boxShadow: "0 0 0 0 rgba(99, 102, 241, 0)" },
319
+ "50%": { boxShadow: "0 0 8px 2px rgba(99, 102, 241, 0.15)" }
320
+ },
321
+ "scale-bounce": {
322
+ "0%": { transform: "scale(0.85)" },
323
+ "60%": { transform: "scale(1.04)" },
324
+ "100%": { transform: "scale(1)" }
325
+ },
326
+ lift: {
327
+ "0%": { transform: "scale(1) translateY(0)" },
328
+ "100%": { transform: "scale(1.03) translateY(-2px)" }
291
329
  }
292
330
  },
293
331
  animation: {
@@ -296,7 +334,16 @@ const r = {
296
334
  shake: "shake 1s var(--ease-productive-standard) infinite",
297
335
  "progress-indeterminate": "progress-indeterminate var(--duration-slow-02) var(--ease-productive-standard) infinite",
298
336
  "skeleton-shimmer": "skeleton-shimmer var(--duration-slow-02) var(--ease-linear) infinite",
299
- "caret-blink": "caret-blink 1.25s ease-out infinite"
337
+ "caret-blink": "caret-blink 1.25s ease-out infinite",
338
+ "fade-in": "fade-in var(--duration-moderate-02) var(--ease-expressive-entrance) both",
339
+ "fade-out": "fade-out var(--duration-moderate-01) var(--ease-expressive-exit) both",
340
+ "slide-up": "slide-up var(--duration-moderate-02) var(--ease-expressive-entrance) both",
341
+ "slide-right": "slide-right var(--duration-moderate-02) var(--ease-expressive-entrance) both",
342
+ "scale-in": "scale-in var(--duration-moderate-02) var(--ease-expressive-entrance) both",
343
+ "scale-out": "scale-out var(--duration-moderate-01) var(--ease-expressive-exit) both",
344
+ "glow-pulse": "glow-pulse var(--duration-slow-01) var(--ease-expressive-standard) 1",
345
+ "scale-bounce": "scale-bounce var(--duration-moderate-02) var(--ease-bounce) both",
346
+ lift: "lift var(--duration-moderate-02) var(--ease-expressive-entrance) both"
300
347
  },
301
348
  backgroundImage: {
302
349
  "gradient-brand": "var(--gradient-brand-light)",
@@ -341,7 +388,19 @@ const r = {
341
388
  tooltip: "var(--z-tooltip)"
342
389
  }
343
390
  }
344
- }
391
+ },
392
+ plugins: [
393
+ function({ addUtilities: r }) {
394
+ r({
395
+ ".delay-stagger": {
396
+ animationDelay: "calc(var(--stagger-index, 0) * 30ms)"
397
+ },
398
+ ".delay-stagger-50": {
399
+ animationDelay: "calc(var(--stagger-index, 0) * 50ms)"
400
+ }
401
+ });
402
+ }
403
+ ]
345
404
  };
346
- module.exports = r;
405
+ module.exports = a;
347
406
  module.exports.default = module.exports;
@@ -1 +1 @@
1
- {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/tailwind/preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,QAAA,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CA0V3B,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/tailwind/preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,QAAA,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CAqZ3B,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -1,4 +1,4 @@
1
- const r = {
1
+ const a = {
2
2
  /**
3
3
  * Dark mode uses the `.dark` class strategy. If your app uses `darkMode: 'media'`,
4
4
  * set it explicitly in your own tailwind.config — your config takes precedence.
@@ -85,6 +85,7 @@ const r = {
85
85
  "ds-05": "var(--spacing-05)",
86
86
  "ds-05b": "var(--spacing-05b)",
87
87
  "ds-06": "var(--spacing-06)",
88
+ "ds-06b": "var(--spacing-06b)",
88
89
  "ds-07": "var(--spacing-07)",
89
90
  "ds-08": "var(--spacing-08)",
90
91
  "ds-09": "var(--spacing-09)",
@@ -288,6 +289,43 @@ const r = {
288
289
  "caret-blink": {
289
290
  "0%,70%,100%": { opacity: "1" },
290
291
  "20%,50%": { opacity: "0" }
292
+ },
293
+ "fade-in": {
294
+ "0%": { opacity: "0" },
295
+ "100%": { opacity: "1" }
296
+ },
297
+ "fade-out": {
298
+ "0%": { opacity: "1" },
299
+ "100%": { opacity: "0" }
300
+ },
301
+ "slide-up": {
302
+ "0%": { opacity: "0", transform: "translateY(8px)" },
303
+ "100%": { opacity: "1", transform: "translateY(0)" }
304
+ },
305
+ "slide-right": {
306
+ "0%": { opacity: "0", transform: "translateX(20px)" },
307
+ "100%": { opacity: "1", transform: "translateX(0)" }
308
+ },
309
+ "scale-in": {
310
+ "0%": { opacity: "0", transform: "scale(0.96)" },
311
+ "100%": { opacity: "1", transform: "scale(1)" }
312
+ },
313
+ "scale-out": {
314
+ "0%": { opacity: "1", transform: "scale(1)" },
315
+ "100%": { opacity: "0", transform: "scale(0.96)" }
316
+ },
317
+ "glow-pulse": {
318
+ "0%, 100%": { boxShadow: "0 0 0 0 rgba(99, 102, 241, 0)" },
319
+ "50%": { boxShadow: "0 0 8px 2px rgba(99, 102, 241, 0.15)" }
320
+ },
321
+ "scale-bounce": {
322
+ "0%": { transform: "scale(0.85)" },
323
+ "60%": { transform: "scale(1.04)" },
324
+ "100%": { transform: "scale(1)" }
325
+ },
326
+ lift: {
327
+ "0%": { transform: "scale(1) translateY(0)" },
328
+ "100%": { transform: "scale(1.03) translateY(-2px)" }
291
329
  }
292
330
  },
293
331
  animation: {
@@ -296,7 +334,16 @@ const r = {
296
334
  shake: "shake 1s var(--ease-productive-standard) infinite",
297
335
  "progress-indeterminate": "progress-indeterminate var(--duration-slow-02) var(--ease-productive-standard) infinite",
298
336
  "skeleton-shimmer": "skeleton-shimmer var(--duration-slow-02) var(--ease-linear) infinite",
299
- "caret-blink": "caret-blink 1.25s ease-out infinite"
337
+ "caret-blink": "caret-blink 1.25s ease-out infinite",
338
+ "fade-in": "fade-in var(--duration-moderate-02) var(--ease-expressive-entrance) both",
339
+ "fade-out": "fade-out var(--duration-moderate-01) var(--ease-expressive-exit) both",
340
+ "slide-up": "slide-up var(--duration-moderate-02) var(--ease-expressive-entrance) both",
341
+ "slide-right": "slide-right var(--duration-moderate-02) var(--ease-expressive-entrance) both",
342
+ "scale-in": "scale-in var(--duration-moderate-02) var(--ease-expressive-entrance) both",
343
+ "scale-out": "scale-out var(--duration-moderate-01) var(--ease-expressive-exit) both",
344
+ "glow-pulse": "glow-pulse var(--duration-slow-01) var(--ease-expressive-standard) 1",
345
+ "scale-bounce": "scale-bounce var(--duration-moderate-02) var(--ease-bounce) both",
346
+ lift: "lift var(--duration-moderate-02) var(--ease-expressive-entrance) both"
300
347
  },
301
348
  backgroundImage: {
302
349
  "gradient-brand": "var(--gradient-brand-light)",
@@ -341,8 +388,20 @@ const r = {
341
388
  tooltip: "var(--z-tooltip)"
342
389
  }
343
390
  }
344
- }
391
+ },
392
+ plugins: [
393
+ function({ addUtilities: r }) {
394
+ r({
395
+ ".delay-stagger": {
396
+ animationDelay: "calc(var(--stagger-index, 0) * 30ms)"
397
+ },
398
+ ".delay-stagger-50": {
399
+ animationDelay: "calc(var(--stagger-index, 0) * 50ms)"
400
+ }
401
+ });
402
+ }
403
+ ]
345
404
  };
346
405
  export {
347
- r as default
406
+ a as default
348
407
  };
@@ -173,6 +173,7 @@
173
173
  --spacing-05: 16px;
174
174
  --spacing-05b: 20px;
175
175
  --spacing-06: 24px;
176
+ --spacing-06b: 28px;
176
177
  --spacing-07: 32px;
177
178
  --spacing-08: 40px;
178
179
  --spacing-09: 48px;
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  import { jsx as e } from "react/jsx-runtime";
3
- import { C as r, b as n } from "../_chunks/primitives.js";
3
+ import { C as r, b as d } from "../_chunks/primitives.js";
4
4
  import { IconMinus as m, IconCheck as l } from "@tabler/icons-react";
5
5
  import * as b from "react";
6
6
  import { c as f } from "../_chunks/utils.js";
7
- const h = b.forwardRef(({ className: o, error: i, indeterminate: a, checked: s, ...c }, d) => {
7
+ const h = b.forwardRef(({ className: i, error: o, indeterminate: a, checked: s, ...c }, n) => {
8
8
  const t = a ? "indeterminate" : s;
9
9
  return /* @__PURE__ */ e(
10
10
  r,
11
11
  {
12
- ref: d,
12
+ ref: n,
13
13
  checked: t,
14
14
  className: f(
15
- "peer h-ico-md w-ico-md shrink-0 rounded-ds-sm",
15
+ "peer flex items-center justify-center h-ico-md w-ico-md shrink-0 rounded-ds-sm",
16
16
  "border border-border-strong",
17
17
  "bg-field",
18
18
  "transition-colors duration-fast-01",
@@ -20,11 +20,11 @@ const h = b.forwardRef(({ className: o, error: i, indeterminate: a, checked: s,
20
20
  "disabled:cursor-not-allowed disabled:opacity-[0.38]",
21
21
  "data-[state=checked]:bg-interactive data-[state=checked]:border-interactive data-[state=checked]:text-text-on-color",
22
22
  "data-[state=indeterminate]:bg-interactive data-[state=indeterminate]:border-interactive data-[state=indeterminate]:text-text-on-color",
23
- i && "border-border-error",
24
- o
23
+ o && "border-border-error",
24
+ i
25
25
  ),
26
26
  ...c,
27
- children: /* @__PURE__ */ e(n, { className: "flex items-center justify-center text-current", children: t === "indeterminate" ? /* @__PURE__ */ e(m, { className: "h-ico-sm w-ico-sm" }) : /* @__PURE__ */ e(l, { className: "h-ico-sm w-ico-sm" }) })
27
+ children: /* @__PURE__ */ e(d, { className: "flex items-center justify-center text-current", children: t === "indeterminate" ? /* @__PURE__ */ e(m, { className: "h-ico-sm w-ico-sm" }) : /* @__PURE__ */ e(l, { className: "h-3 w-3" }) })
28
28
  }
29
29
  );
30
30
  });
package/dist/ui/input.js CHANGED
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  import { jsx as o, jsxs as f } from "react/jsx-runtime";
3
- import * as v from "react";
4
- import { e as p } from "../_chunks/vendor-utils.js";
3
+ import * as p from "react";
4
+ import { e as v } from "../_chunks/vendor-utils.js";
5
5
  import { c as x } from "../_chunks/utils.js";
6
6
  import { u as g } from "../_chunks/form.js";
7
- const h = p(
7
+ const h = v(
8
8
  [
9
9
  "flex w-full font-sans",
10
10
  "bg-field text-text-primary",
11
- "border border-border rounded-ds-md",
11
+ "border border-border-subtle rounded-ds-md",
12
12
  "placeholder:text-text-placeholder",
13
13
  "hover:bg-field-hover",
14
14
  "transition-colors duration-fast-01",
15
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:border-border-interactive",
15
+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus/50 focus-visible:border-border-subtle",
16
16
  "disabled:cursor-not-allowed disabled:opacity-[0.38]",
17
17
  "read-only:bg-layer-02 read-only:cursor-default"
18
18
  ],
@@ -26,7 +26,7 @@ const h = p(
26
26
  },
27
27
  defaultVariants: { size: "md" }
28
28
  }
29
- ), y = v.forwardRef(
29
+ ), y = p.forwardRef(
30
30
  ({ className: d, type: l, state: n, size: c, startIcon: e, endIcon: r, ...t }, u) => {
31
31
  const s = g(), i = n ?? (s.state === "helper" ? void 0 : s.state), b = t["aria-describedby"] ?? s.helperTextId, m = t["aria-required"] ?? s.required, a = /* @__PURE__ */ o(
32
32
  "input",
@@ -34,8 +34,8 @@ const h = p(
34
34
  type: l,
35
35
  className: x(
36
36
  h({ size: c }),
37
- e && "pl-ds-08",
38
- r && "pr-ds-08",
37
+ e && "pl-ds-07",
38
+ r && "pr-ds-07",
39
39
  i === "error" && "border-border-error focus-visible:ring-error",
40
40
  i === "warning" && "border-border-warning focus-visible:ring-warning",
41
41
  i === "success" && "border-border-success focus-visible:ring-success",
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ui/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAW5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ui/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAc5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -1,14 +1,17 @@
1
- import { h as s, g as t } from "../../_chunks/vendor-utils.js";
2
- const n = s({
1
+ import { h as d, g as e } from "../../_chunks/vendor-utils.js";
2
+ const t = d({
3
3
  extend: {
4
+ theme: {
5
+ spacing: ["ds-01", "ds-02", "ds-02b", "ds-03", "ds-04", "ds-05", "ds-05b", "ds-06", "ds-06b", "ds-07", "ds-08", "ds-09", "ds-10", "ds-11", "ds-12", "ds-13"]
6
+ },
4
7
  classGroups: {
5
8
  "font-size": [{ "text-ds": ["xs", "sm", "md"] }]
6
9
  }
7
10
  }
8
11
  });
9
- function o(...e) {
10
- return n(t(e));
12
+ function r(...s) {
13
+ return t(e(s));
11
14
  }
12
15
  export {
13
- o as cn
16
+ r as cn
14
17
  };
package/llms-full.txt CHANGED
@@ -5,7 +5,7 @@
5
5
  > All variant values and props verified from source CVA definitions.
6
6
  >
7
7
  > Package: @devalok/shilp-sutra
8
- > Version: 0.10.0
8
+ > Version: 0.12.0
9
9
 
10
10
  ---
11
11
 
@@ -594,6 +594,7 @@ Note: getFormFieldA11y() was removed in favor of useFormField() hook.
594
594
  - HTML native "size" attribute is excluded — use CSS width instead
595
595
  - state="error" sets aria-invalid automatically
596
596
  - Inside FormField: auto-inherits state, aria-describedby, aria-required from context (explicit props override)
597
+ - Resting border is border-subtle (soft); focus ring is ring-1 at 50% opacity (v0.12.0)
597
598
 
598
599
  ## InputOTP
599
600
  - Import: @devalok/shilp-sutra/ui/input-otp
package/llms.txt CHANGED
@@ -4,6 +4,11 @@
4
4
  > Built on the same primitives as shadcn/ui but with key API differences.
5
5
  > Read this file BEFORE writing any UI code. Do NOT guess from shadcn/ui knowledge.
6
6
 
7
+ ## CHANGES (v0.12.0)
8
+ - Input: Softer resting border (border-subtle instead of border), subtler focus ring (ring-1 ring-focus/50 instead of ring-2 ring-focus)
9
+ - Tailwind preset: 9 animation keyframes + utilities (fade-in, fade-out, slide-up, slide-right, scale-in, scale-out, glow-pulse, scale-bounce, lift)
10
+ - Tailwind preset: Stagger plugins — .delay-stagger (30ms × --stagger-index), .delay-stagger-50 (50ms × --stagger-index)
11
+
7
12
  ## BREAKING CHANGES (v0.11.0 — dark mode)
8
13
  - Dark mode interactive colors shifted: --color-interactive pink-400→pink-500, --color-interactive-hover pink-300→pink-600, --color-interactive-active pink-200→pink-700, --color-interactive-subtle pink-950→pink-1000
9
14
  - Dark mode text status colors shifted: --color-text-error red-200→red-300, --color-text-success green-200→green-300, --color-text-warning yellow-200→yellow-300, --color-text-link blue-200→blue-300, --color-text-brand pink-300→pink-400
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devalok/shilp-sutra",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Devalok Design System — tokens, components, and patterns for Next.js",
5
5
  "license": "MIT",
6
6
  "type": "module",