@devalok/shilp-sutra 0.10.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
  };
@@ -16,6 +16,7 @@
16
16
  --pink-800: #6e1433;
17
17
  --pink-900: #4d0a1c;
18
18
  --pink-950: #2a0510;
19
+ --pink-1000: #150208;
19
20
 
20
21
  /* ── Purple scale — secondary accent ────────────────────────── */
21
22
  --purple-50: #f8f6fc;