@devalok/shilp-sutra 0.52.0 → 0.53.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.
- package/MIGRATION.md +6 -0
- package/dist/_chunks/motion-provider.js +7 -6
- package/dist/_chunks/motion-provider.js.map +1 -1
- package/dist/_chunks/success.js +53 -53
- package/dist/ai/command-bar.js +158 -158
- package/dist/ai/command-bar.js.map +1 -1
- package/dist/ai/conversation.js +5 -5
- package/dist/composed/command-palette.js +17 -17
- package/dist/composed/command-palette.js.map +1 -1
- package/dist/composed/priority-indicator.d.ts +15 -6
- package/dist/composed/priority-indicator.d.ts.map +1 -1
- package/dist/composed/priority-indicator.js +37 -88
- package/dist/composed/priority-indicator.js.map +1 -1
- package/dist/composed/schedule-view.d.ts +17 -2
- package/dist/composed/schedule-view.d.ts.map +1 -1
- package/dist/composed/schedule-view.js +163 -64
- package/dist/composed/schedule-view.js.map +1 -1
- package/dist/motion/motion-provider.d.ts.map +1 -1
- package/dist/shell/bottom-navbar.d.ts +32 -6
- package/dist/shell/bottom-navbar.d.ts.map +1 -1
- package/dist/shell/bottom-navbar.js +156 -129
- package/dist/shell/bottom-navbar.js.map +1 -1
- package/dist/tokens/primitives.css +6 -2
- package/dist/tokens/utilities.css +6 -0
- package/dist/ui/autocomplete.d.ts +34 -32
- package/dist/ui/autocomplete.d.ts.map +1 -1
- package/dist/ui/autocomplete.js +115 -110
- package/dist/ui/autocomplete.js.map +1 -1
- package/dist/ui/combobox.js +4 -4
- package/dist/ui/index.js +30 -30
- package/dist/ui/search-input.js +4 -4
- package/dist/ui/sidebar.js +7 -7
- package/docs/components/composed/priority-indicator.md +22 -11
- package/docs/components/composed/schedule-view.md +20 -5
- package/docs/components/shell/bottom-navbar.md +24 -5
- package/docs/components/ui/autocomplete.md +26 -10
- package/llms.txt +1 -1
- package/mcp-manifest.json +179 -26
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
- package/skill/references/components.md +1 -1
package/MIGRATION.md
CHANGED
|
@@ -4,6 +4,12 @@ This page indexes all breaking changes across `@devalok/shilp-sutra` versions. F
|
|
|
4
4
|
|
|
5
5
|
> **Upgrading from < 0.36?** Start here, then read each intermediate version section. Breaking changes stack — skipping versions means stacking migrations.
|
|
6
6
|
|
|
7
|
+
## v0.53.0 — additive (no migration required)
|
|
8
|
+
|
|
9
|
+
Nothing breaks at the TypeScript level; this release is additive.
|
|
10
|
+
|
|
11
|
+
> Auto-stubbed by `version-packages` so the release audit's MIGRATION-section gate can't block. If any behavioral or visual change needs consumer action, replace this stub with the specifics on the Version Packages PR before publishing.
|
|
12
|
+
|
|
7
13
|
## v0.52.0 — additive (no migration required)
|
|
8
14
|
|
|
9
15
|
Nothing breaks at the TypeScript level; this release is additive.
|
|
@@ -4,11 +4,7 @@ import * as n from "react";
|
|
|
4
4
|
import { jsx as r } from "react/jsx-runtime";
|
|
5
5
|
import { MotionConfig as i, useReducedMotion as a } from "framer-motion";
|
|
6
6
|
//#region src/motion/motion-provider.tsx
|
|
7
|
-
var o = n.createContext(
|
|
8
|
-
springs: e,
|
|
9
|
-
tweens: t,
|
|
10
|
-
reducedMotion: !1
|
|
11
|
-
});
|
|
7
|
+
var o = n.createContext(null);
|
|
12
8
|
function s({ children: s, reducedMotion: c = "user" }) {
|
|
13
9
|
let l = a() ?? !1, u = c === "user" ? l : c, d = n.useMemo(() => ({
|
|
14
10
|
springs: e,
|
|
@@ -24,7 +20,12 @@ function s({ children: s, reducedMotion: c = "user" }) {
|
|
|
24
20
|
});
|
|
25
21
|
}
|
|
26
22
|
function c() {
|
|
27
|
-
|
|
23
|
+
let r = n.useContext(o), i = a() ?? !1;
|
|
24
|
+
return r || {
|
|
25
|
+
springs: e,
|
|
26
|
+
tweens: t,
|
|
27
|
+
reducedMotion: i
|
|
28
|
+
};
|
|
28
29
|
}
|
|
29
30
|
//#endregion
|
|
30
31
|
export { s as MotionProvider, c as useMotion };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motion-provider.js","names":[],"sources":["../../src/motion/motion-provider.tsx"],"sourcesContent":["'use client'\n\nimport { MotionConfig, useReducedMotion as useFMReducedMotion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { springs, tweens } from '../ui/lib/motion'\n\ntype ReducedMotionMode = 'user' | boolean\n\ntype MotionContextValue = {\n springs: typeof springs\n tweens: typeof tweens\n reducedMotion: boolean\n}\n\nconst MotionContext = React.createContext<MotionContextValue>(
|
|
1
|
+
{"version":3,"file":"motion-provider.js","names":[],"sources":["../../src/motion/motion-provider.tsx"],"sourcesContent":["'use client'\n\nimport { MotionConfig, useReducedMotion as useFMReducedMotion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { springs, tweens } from '../ui/lib/motion'\n\ntype ReducedMotionMode = 'user' | boolean\n\ntype MotionContextValue = {\n springs: typeof springs\n tweens: typeof tweens\n reducedMotion: boolean\n}\n\n// `null` default = \"no MotionProvider mounted\". `useMotion()` detects this and\n// falls back to the OS `prefers-reduced-motion` setting, so components respect\n// reduced motion out of the box — a provider is an override, not a requirement.\nconst MotionContext = React.createContext<MotionContextValue | null>(null)\n\ntype MotionProviderProps = {\n children: React.ReactNode\n /** 'user' = detect OS preference, true = force off, false = force on */\n reducedMotion?: ReducedMotionMode\n}\n\nfunction MotionProvider({ children, reducedMotion = 'user' }: MotionProviderProps) {\n const osPreference = useFMReducedMotion() ?? false\n const isReduced = reducedMotion === 'user' ? osPreference : reducedMotion\n\n const value = React.useMemo<MotionContextValue>(\n () => ({ springs, tweens, reducedMotion: isReduced }),\n [isReduced],\n )\n\n return (\n <MotionContext.Provider value={value}>\n <MotionConfig reducedMotion={reducedMotion === 'user' ? 'user' : reducedMotion ? 'always' : 'never'}>\n {children}\n </MotionConfig>\n </MotionContext.Provider>\n )\n}\n\nfunction useMotion(): MotionContextValue {\n const ctx = React.useContext(MotionContext)\n // Always called (hook order stable); only used when no provider is mounted.\n const osPreference = useFMReducedMotion() ?? false\n if (ctx) return ctx\n return { springs, tweens, reducedMotion: osPreference }\n}\n\nexport { MotionProvider, type MotionProviderProps,useMotion }\n"],"mappings":";;;;;AAkBA,IAAM,IAAgB,EAAM,cAAyC,IAAI;AAQzE,SAAS,EAAe,EAAE,aAAU,mBAAgB,UAA+B;CACjF,IAAM,IAAe,EAAmB,KAAK,IACvC,IAAY,MAAkB,SAAS,IAAe,GAEtD,IAAQ,EAAM,eACX;EAAE;EAAS;EAAQ,eAAe;CAAU,IACnD,CAAC,CAAS,CACZ;CAEA,OACE,kBAAC,EAAc,UAAf;EAA+B;YAC7B,kBAAC,GAAD;GAAc,eAAe,MAAkB,SAAS,SAAS,IAAgB,WAAW;GACzF;EACW,CAAA;CACQ,CAAA;AAE5B;AAEA,SAAS,IAAgC;CACvC,IAAM,IAAM,EAAM,WAAW,CAAa,GAEpC,IAAe,EAAmB,KAAK;CAE7C,OADI,KACG;EAAE;EAAS;EAAQ,eAAe;CAAa;AACxD"}
|
package/dist/_chunks/success.js
CHANGED
|
@@ -3,14 +3,14 @@ import { durations as e, springs as t, tweens as n } from "../ui/lib/motion.js";
|
|
|
3
3
|
import { cn as r } from "../ui/lib/utils.js";
|
|
4
4
|
import { Icon as i } from "../ui/icon.js";
|
|
5
5
|
import { Alert as a } from "../ui/alert.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
6
|
+
import { useMotion as o } from "./motion-provider.js";
|
|
7
|
+
import { Skeleton as s } from "../ui/skeleton.js";
|
|
8
|
+
import { BadgeCompound as c } from "./badge-group.js";
|
|
9
|
+
import { Button as l } from "../ui/button.js";
|
|
10
|
+
import { Collapsible as u, CollapsibleContent as d, CollapsibleTrigger as f } from "../ui/collapsible.js";
|
|
11
|
+
import { Table as p, TableBody as m, TableCaption as h, TableCell as g, TableHead as _, TableHeader as v, TableRow as y } from "../ui/table.js";
|
|
12
|
+
import { Separator as b } from "../ui/separator.js";
|
|
13
|
+
import { StatCard as x } from "../ui/stat-card.js";
|
|
14
14
|
import { BlockShell as S } from "./block-shell.js";
|
|
15
15
|
import * as C from "react";
|
|
16
16
|
import { jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
@@ -21,14 +21,14 @@ function A(e, t) {
|
|
|
21
21
|
if (t.variant === "badge") {
|
|
22
22
|
if (e && typeof e == "object" && "label" in e) {
|
|
23
23
|
let t = e;
|
|
24
|
-
return /* @__PURE__ */ w(
|
|
24
|
+
return /* @__PURE__ */ w(c, {
|
|
25
25
|
variant: "subtle",
|
|
26
26
|
size: "sm",
|
|
27
27
|
color: t.color,
|
|
28
28
|
children: t.label
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
-
return /* @__PURE__ */ w(
|
|
31
|
+
return /* @__PURE__ */ w(c, {
|
|
32
32
|
variant: "subtle",
|
|
33
33
|
size: "sm",
|
|
34
34
|
children: String(e ?? "")
|
|
@@ -45,38 +45,38 @@ function j(e, t, n) {
|
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
var M = C.memo(function({ data: e, confidence: n }) {
|
|
48
|
-
let { reducedMotion: i } =
|
|
49
|
-
e.sortable && (a === t ?
|
|
48
|
+
let { reducedMotion: i } = o(), [a, s] = C.useState(null), [c, l] = C.useState(null), u = C.useCallback((t) => {
|
|
49
|
+
e.sortable && (a === t ? c === "asc" ? l("desc") : c === "desc" && (s(null), l(null)) : (s(t), l("asc")));
|
|
50
50
|
}, [
|
|
51
51
|
e.sortable,
|
|
52
52
|
a,
|
|
53
|
-
|
|
54
|
-
]),
|
|
53
|
+
c
|
|
54
|
+
]), d = e.columns ?? [], f = j(e.rows ?? [], a, c);
|
|
55
55
|
return /* @__PURE__ */ w(S, {
|
|
56
56
|
confidence: n,
|
|
57
57
|
className: "overflow-x-auto",
|
|
58
|
-
children: /* @__PURE__ */ T(
|
|
59
|
-
e.caption && /* @__PURE__ */ w(
|
|
60
|
-
/* @__PURE__ */ w(
|
|
61
|
-
let n = a === t.key, i = e.sortable ? n ?
|
|
62
|
-
return /* @__PURE__ */ w(
|
|
58
|
+
children: /* @__PURE__ */ T(p, { children: [
|
|
59
|
+
e.caption && /* @__PURE__ */ w(h, { children: e.caption }),
|
|
60
|
+
/* @__PURE__ */ w(v, { children: /* @__PURE__ */ w(y, { children: d.map((t) => {
|
|
61
|
+
let n = a === t.key, i = e.sortable ? n ? c === "asc" ? "ascending" : "descending" : "none" : void 0;
|
|
62
|
+
return /* @__PURE__ */ w(_, {
|
|
63
63
|
role: "columnheader",
|
|
64
64
|
className: r(t.variant === "number" && "text-right", e.sortable && "cursor-pointer select-none"),
|
|
65
65
|
tabIndex: e.sortable ? 0 : void 0,
|
|
66
|
-
onClick: e.sortable ? () =>
|
|
66
|
+
onClick: e.sortable ? () => u(t.key) : void 0,
|
|
67
67
|
onKeyDown: e.sortable ? (e) => {
|
|
68
|
-
(e.key === "Enter" || e.key === " ") && (e.preventDefault(),
|
|
68
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), u(t.key));
|
|
69
69
|
} : void 0,
|
|
70
70
|
"aria-sort": i,
|
|
71
71
|
children: /* @__PURE__ */ T("span", {
|
|
72
72
|
className: "inline-flex items-center gap-1",
|
|
73
73
|
children: [
|
|
74
74
|
t.label,
|
|
75
|
-
n &&
|
|
75
|
+
n && c === "asc" && /* @__PURE__ */ w("span", {
|
|
76
76
|
"aria-hidden": "true",
|
|
77
77
|
children: "▲"
|
|
78
78
|
}),
|
|
79
|
-
n &&
|
|
79
|
+
n && c === "desc" && /* @__PURE__ */ w("span", {
|
|
80
80
|
"aria-hidden": "true",
|
|
81
81
|
children: "▼"
|
|
82
82
|
})
|
|
@@ -84,7 +84,7 @@ var M = C.memo(function({ data: e, confidence: n }) {
|
|
|
84
84
|
})
|
|
85
85
|
}, t.key);
|
|
86
86
|
}) }) }),
|
|
87
|
-
/* @__PURE__ */ w(
|
|
87
|
+
/* @__PURE__ */ w(m, { children: f.map((e, n) => {
|
|
88
88
|
let a = typeof e.id == "string" || typeof e.id == "number" ? String(e.id) : `row-${n}`;
|
|
89
89
|
return /* @__PURE__ */ w(i ? "tr" : k.tr, {
|
|
90
90
|
className: "hover:bg-surface-raised-hover transition-colors",
|
|
@@ -102,7 +102,7 @@ var M = C.memo(function({ data: e, confidence: n }) {
|
|
|
102
102
|
delay: n * .03
|
|
103
103
|
}
|
|
104
104
|
},
|
|
105
|
-
children:
|
|
105
|
+
children: d.map((t) => /* @__PURE__ */ w(g, {
|
|
106
106
|
className: r("text-body-sm py-ds-02b px-ds-04", t.variant === "number" && "text-right tabular-nums font-medium"),
|
|
107
107
|
children: A(e[t.key], t)
|
|
108
108
|
}, t.key))
|
|
@@ -129,27 +129,27 @@ var N = C.memo(function({ data: e, confidence: t, onAction: n }) {
|
|
|
129
129
|
}),
|
|
130
130
|
/* @__PURE__ */ T("div", {
|
|
131
131
|
className: "flex items-center gap-3",
|
|
132
|
-
children: [/* @__PURE__ */ w(
|
|
132
|
+
children: [/* @__PURE__ */ w(l, {
|
|
133
133
|
variant: "solid",
|
|
134
134
|
color: e.destructive ? "error" : void 0,
|
|
135
135
|
onClick: r,
|
|
136
136
|
children: e.label
|
|
137
|
-
}), /* @__PURE__ */ w(
|
|
137
|
+
}), /* @__PURE__ */ w(l, {
|
|
138
138
|
variant: "ghost",
|
|
139
139
|
onClick: i,
|
|
140
140
|
children: "Cancel"
|
|
141
141
|
})]
|
|
142
142
|
}),
|
|
143
|
-
e.rationale && /* @__PURE__ */ T(
|
|
143
|
+
e.rationale && /* @__PURE__ */ T(u, {
|
|
144
144
|
className: "mt-3",
|
|
145
|
-
children: [/* @__PURE__ */ w(
|
|
145
|
+
children: [/* @__PURE__ */ w(f, {
|
|
146
146
|
asChild: !0,
|
|
147
147
|
children: /* @__PURE__ */ w("button", {
|
|
148
148
|
type: "button",
|
|
149
149
|
className: "text-caption text-surface-fg-subtle underline cursor-pointer",
|
|
150
150
|
children: "Why this action?"
|
|
151
151
|
})
|
|
152
|
-
}), /* @__PURE__ */ w(
|
|
152
|
+
}), /* @__PURE__ */ w(d, { children: /* @__PURE__ */ w("p", {
|
|
153
153
|
className: "text-body-sm text-surface-fg-muted mt-2 p-3 bg-surface-raised rounded-surface",
|
|
154
154
|
children: e.rationale
|
|
155
155
|
}) })]
|
|
@@ -161,13 +161,13 @@ N.displayName = "ConfirmBlock";
|
|
|
161
161
|
//#endregion
|
|
162
162
|
//#region src/ai/blocks/divider.tsx
|
|
163
163
|
var P = C.memo(function(e) {
|
|
164
|
-
let { reducedMotion: t } =
|
|
165
|
-
return t ? /* @__PURE__ */ w(
|
|
164
|
+
let { reducedMotion: t } = o();
|
|
165
|
+
return t ? /* @__PURE__ */ w(b, {}) : /* @__PURE__ */ w(k.div, {
|
|
166
166
|
initial: { scaleX: 0 },
|
|
167
167
|
animate: { scaleX: 1 },
|
|
168
168
|
style: { originX: .5 },
|
|
169
169
|
transition: n.elegant,
|
|
170
|
-
children: /* @__PURE__ */ w(
|
|
170
|
+
children: /* @__PURE__ */ w(b, {})
|
|
171
171
|
});
|
|
172
172
|
});
|
|
173
173
|
P.displayName = "DividerBlock";
|
|
@@ -227,7 +227,7 @@ function L({ status: e }) {
|
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
var R = C.memo(function({ data: t }) {
|
|
230
|
-
let { reducedMotion: n } =
|
|
230
|
+
let { reducedMotion: n } = o(), i = n;
|
|
231
231
|
if (t.lines != null) {
|
|
232
232
|
let e = Math.max(1, t.lines);
|
|
233
233
|
return /* @__PURE__ */ T("div", {
|
|
@@ -235,7 +235,7 @@ var R = C.memo(function({ data: t }) {
|
|
|
235
235
|
"aria-busy": "true",
|
|
236
236
|
"aria-label": "Loading",
|
|
237
237
|
className: "flex flex-col gap-2",
|
|
238
|
-
children: [Array.from({ length: e }).map((t, n) => /* @__PURE__ */ w(
|
|
238
|
+
children: [Array.from({ length: e }).map((t, n) => /* @__PURE__ */ w(s, {
|
|
239
239
|
animation: "shimmer",
|
|
240
240
|
className: r("h-4", n === e - 1 ? "w-3/5" : "w-full")
|
|
241
241
|
}, n)), /* @__PURE__ */ w("span", {
|
|
@@ -285,7 +285,7 @@ R.displayName = "LoadingBlock";
|
|
|
285
285
|
//#endregion
|
|
286
286
|
//#region src/ai/blocks/stat-row.tsx
|
|
287
287
|
var z = C.memo(function({ data: e }) {
|
|
288
|
-
let { reducedMotion: n } =
|
|
288
|
+
let { reducedMotion: n } = o(), r = e.stats ?? [];
|
|
289
289
|
return r.length === 0 ? null : /* @__PURE__ */ w("div", {
|
|
290
290
|
className: "flex flex-wrap gap-ds-05",
|
|
291
291
|
children: r.map((e, r) => {
|
|
@@ -295,7 +295,7 @@ var z = C.memo(function({ data: e }) {
|
|
|
295
295
|
} : void 0;
|
|
296
296
|
return n ? /* @__PURE__ */ w("div", {
|
|
297
297
|
className: "flex-1 min-w-[140px]",
|
|
298
|
-
children: /* @__PURE__ */ w(
|
|
298
|
+
children: /* @__PURE__ */ w(x, {
|
|
299
299
|
label: e.label,
|
|
300
300
|
value: e.value,
|
|
301
301
|
delta: i
|
|
@@ -311,7 +311,7 @@ var z = C.memo(function({ data: e }) {
|
|
|
311
311
|
...t.responsive,
|
|
312
312
|
delay: r * .08
|
|
313
313
|
},
|
|
314
|
-
children: /* @__PURE__ */ w(
|
|
314
|
+
children: /* @__PURE__ */ w(x, {
|
|
315
315
|
label: e.label,
|
|
316
316
|
value: e.value,
|
|
317
317
|
delta: i
|
|
@@ -324,20 +324,20 @@ z.displayName = "StatRowBlock";
|
|
|
324
324
|
//#endregion
|
|
325
325
|
//#region src/ai/blocks/success.tsx
|
|
326
326
|
var B = 5e3, V = C.memo(function({ data: e, blockId: t, confidence: n, onAction: r }) {
|
|
327
|
-
let { reducedMotion: i } =
|
|
327
|
+
let { reducedMotion: i } = o(), s = i, c = e.undoTimeout ?? B, [u, d] = C.useState(c), [f, p] = C.useState(!!e.undoable);
|
|
328
328
|
C.useEffect(() => {
|
|
329
329
|
if (!e.undoable) return;
|
|
330
330
|
let t = setInterval(() => {
|
|
331
|
-
|
|
331
|
+
d((e) => {
|
|
332
332
|
let n = e - 100;
|
|
333
|
-
return n <= 0 ? (clearInterval(t),
|
|
333
|
+
return n <= 0 ? (clearInterval(t), p(!1), 0) : n;
|
|
334
334
|
});
|
|
335
335
|
}, 100);
|
|
336
336
|
return () => clearInterval(t);
|
|
337
|
-
}, [e.undoable,
|
|
338
|
-
let
|
|
337
|
+
}, [e.undoable, c]);
|
|
338
|
+
let m = C.useCallback(() => {
|
|
339
339
|
r?.(t || "unknown", "undo");
|
|
340
|
-
}, [t, r]),
|
|
340
|
+
}, [t, r]), h = Math.ceil(u / 1e3), g = 2 * Math.PI * 9;
|
|
341
341
|
return /* @__PURE__ */ T(S, {
|
|
342
342
|
confidence: n,
|
|
343
343
|
children: [/* @__PURE__ */ w(a, {
|
|
@@ -345,13 +345,13 @@ var B = 5e3, V = C.memo(function({ data: e, blockId: t, confidence: n, onAction:
|
|
|
345
345
|
variant: "subtle",
|
|
346
346
|
title: e.title,
|
|
347
347
|
children: e.message
|
|
348
|
-
}),
|
|
348
|
+
}), f && e.undoable && /* @__PURE__ */ w("div", {
|
|
349
349
|
className: "mt-2 flex items-center gap-2",
|
|
350
|
-
children: /* @__PURE__ */ w(
|
|
350
|
+
children: /* @__PURE__ */ w(l, {
|
|
351
351
|
variant: "ghost",
|
|
352
352
|
size: "sm",
|
|
353
|
-
onClick:
|
|
354
|
-
"aria-label": `Undo action, ${
|
|
353
|
+
onClick: m,
|
|
354
|
+
"aria-label": `Undo action, ${h} seconds remaining`,
|
|
355
355
|
children: /* @__PURE__ */ T("span", {
|
|
356
356
|
className: "flex items-center gap-1.5",
|
|
357
357
|
children: [/* @__PURE__ */ T("svg", {
|
|
@@ -375,11 +375,11 @@ var B = 5e3, V = C.memo(function({ data: e, blockId: t, confidence: n, onAction:
|
|
|
375
375
|
fill: "none",
|
|
376
376
|
stroke: "currentColor",
|
|
377
377
|
strokeWidth: 2,
|
|
378
|
-
strokeDasharray:
|
|
379
|
-
initial:
|
|
380
|
-
animate: { strokeDashoffset:
|
|
381
|
-
transition:
|
|
382
|
-
duration:
|
|
378
|
+
strokeDasharray: g,
|
|
379
|
+
initial: s ? void 0 : { strokeDashoffset: 0 },
|
|
380
|
+
animate: { strokeDashoffset: g },
|
|
381
|
+
transition: s ? { duration: 0 } : {
|
|
382
|
+
duration: c / 1e3,
|
|
383
383
|
ease: "linear"
|
|
384
384
|
}
|
|
385
385
|
})]
|