@devalok/shilp-sutra 0.21.0 → 0.22.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/dist/_chunks/use-calendar.js +115 -115
- package/dist/_chunks/vendor-utils.js +1230 -1178
- package/dist/composed/activity-feed.d.ts.map +1 -1
- package/dist/composed/activity-feed.js +78 -78
- package/dist/composed/avatar-group.d.ts +2 -2
- package/dist/composed/avatar-group.d.ts.map +1 -1
- package/dist/composed/avatar-group.js +87 -117
- package/dist/composed/command-palette.js +50 -50
- package/dist/composed/content-card.js +10 -10
- package/dist/composed/empty-state.d.ts.map +1 -1
- package/dist/composed/empty-state.js +58 -48
- package/dist/composed/global-loading.d.ts.map +1 -1
- package/dist/composed/global-loading.js +11 -10
- package/dist/composed/loading-skeleton.d.ts.map +1 -1
- package/dist/composed/loading-skeleton.js +32 -29
- package/dist/composed/member-picker.d.ts.map +1 -1
- package/dist/composed/member-picker.js +28 -17
- package/dist/composed/page-header.js +25 -25
- package/dist/composed/priority-indicator.d.ts.map +1 -1
- package/dist/composed/priority-indicator.js +60 -36
- package/dist/composed/rich-text-editor.js +104 -104
- package/dist/composed/schedule-view.d.ts.map +1 -1
- package/dist/composed/schedule-view.js +52 -44
- package/dist/composed/status-badge.js +16 -16
- package/dist/shell/bottom-navbar.d.ts.map +1 -1
- package/dist/shell/bottom-navbar.js +35 -31
- package/dist/shell/notification-center.d.ts.map +1 -1
- package/dist/shell/notification-center.js +119 -111
- package/dist/shell/sidebar.js +2 -2
- package/dist/shell/top-bar.js +9 -9
- package/dist/tailwind/index.cjs +30 -3
- package/dist/tailwind/preset.d.ts.map +1 -1
- package/dist/tailwind/preset.js +30 -3
- package/dist/tokens/semantic.css +10 -10
- package/dist/tokens/typography-semantic.css +3 -3
- package/dist/ui/accordion.js +22 -22
- package/dist/ui/alert.js +8 -8
- package/dist/ui/avatar.d.ts.map +1 -1
- package/dist/ui/avatar.js +72 -86
- package/dist/ui/badge.js +5 -5
- package/dist/ui/banner.js +18 -18
- package/dist/ui/breadcrumb.js +23 -23
- package/dist/ui/button.js +22 -22
- package/dist/ui/card.js +16 -16
- package/dist/ui/checkbox.d.ts.map +1 -1
- package/dist/ui/checkbox.js +72 -25
- package/dist/ui/chip.js +14 -14
- package/dist/ui/code.js +9 -9
- package/dist/ui/combobox.d.ts.map +1 -1
- package/dist/ui/combobox.js +46 -45
- package/dist/ui/dialog.js +17 -17
- package/dist/ui/dropdown-menu.js +22 -22
- package/dist/ui/form.d.ts.map +1 -1
- package/dist/ui/form.js +35 -29
- package/dist/ui/input.js +20 -20
- package/dist/ui/label.js +15 -15
- package/dist/ui/lib/motion.d.ts.map +1 -1
- package/dist/ui/lib/motion.js +2 -2
- package/dist/ui/link.js +14 -14
- package/dist/ui/number-input.js +36 -36
- package/dist/ui/pagination.js +14 -14
- package/dist/ui/progress.js +6 -6
- package/dist/ui/radio.d.ts.map +1 -1
- package/dist/ui/radio.js +24 -12
- package/dist/ui/search-input.d.ts.map +1 -1
- package/dist/ui/search-input.js +25 -19
- package/dist/ui/select.js +15 -15
- package/dist/ui/separator.d.ts +10 -2
- package/dist/ui/separator.d.ts.map +1 -1
- package/dist/ui/separator.js +16 -15
- package/dist/ui/sheet.js +7 -7
- package/dist/ui/sidebar.d.ts +1 -1
- package/dist/ui/sidebar.d.ts.map +1 -1
- package/dist/ui/sidebar.js +22 -22
- package/dist/ui/skeleton.js +5 -5
- package/dist/ui/slider.js +7 -7
- package/dist/ui/stat-card.js +19 -19
- package/dist/ui/switch.d.ts.map +1 -1
- package/dist/ui/switch.js +14 -13
- package/dist/ui/tabs.d.ts.map +1 -1
- package/dist/ui/tabs.js +60 -51
- package/dist/ui/textarea.js +15 -15
- package/dist/ui/toast.js +1 -1
- package/dist/ui/toggle.js +5 -5
- package/dist/ui/tooltip.d.ts +0 -4
- package/dist/ui/tooltip.d.ts.map +1 -1
- package/dist/ui/tooltip.js +24 -24
- package/docs/components/ui/avatar.md +3 -0
- package/docs/components/ui/button.md +5 -0
- package/docs/components/ui/checkbox.md +5 -0
- package/docs/components/ui/dropdown-menu.md +3 -0
- package/docs/components/ui/separator.md +3 -0
- package/docs/components/ui/tooltip.md +5 -0
- package/llms-full.txt +25 -1
- package/llms.txt +20 -0
- package/package.json +1 -1
package/dist/ui/switch.js
CHANGED
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import * as
|
|
4
|
-
import { am as i, an as
|
|
2
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
3
|
+
import * as a from "react";
|
|
4
|
+
import { am as i, an as p } from "../_chunks/primitives.js";
|
|
5
5
|
import { springs as g } from "./lib/motion.js";
|
|
6
6
|
import { cn as h } from "./lib/utils.js";
|
|
7
7
|
import { m as w } from "../_chunks/framer.js";
|
|
8
|
-
const v =
|
|
9
|
-
const [m, f] =
|
|
10
|
-
(
|
|
11
|
-
r === void 0 && f(
|
|
8
|
+
const v = a.forwardRef(({ className: n, error: d, checked: r, defaultChecked: t, onCheckedChange: e, ...c }, l) => {
|
|
9
|
+
const [m, f] = a.useState(t ?? !1), b = r !== void 0 ? r : m, u = a.useCallback(
|
|
10
|
+
(o) => {
|
|
11
|
+
r === void 0 && f(o), e == null || e(o);
|
|
12
12
|
},
|
|
13
|
-
[r,
|
|
13
|
+
[r, e]
|
|
14
14
|
);
|
|
15
|
-
return /* @__PURE__ */
|
|
15
|
+
return /* @__PURE__ */ s(
|
|
16
16
|
i,
|
|
17
17
|
{
|
|
18
18
|
className: h(
|
|
19
|
-
"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-ds-full border-2 border-surface-border-strong shadow-01 transition-colors duration-fast-01 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-action-disabled data-[state=checked]:border-transparent data-[state=checked]:bg-accent-9 data-[state=unchecked]:bg-surface-border-strong",
|
|
19
|
+
"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-ds-full border-2 border-surface-border-strong shadow-01 transition-colors duration-fast-01 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-action-disabled data-[state=checked]:border-transparent data-[state=checked]:bg-accent-9 data-[state=unchecked]:bg-surface-border-strong data-[state=unchecked]:hover:bg-surface-4",
|
|
20
20
|
d && "border-error-7 data-[state=checked]:bg-error-9",
|
|
21
21
|
n
|
|
22
22
|
),
|
|
23
23
|
checked: r,
|
|
24
|
-
defaultChecked:
|
|
25
|
-
onCheckedChange:
|
|
24
|
+
defaultChecked: t,
|
|
25
|
+
onCheckedChange: u,
|
|
26
26
|
...c,
|
|
27
27
|
ref: l,
|
|
28
|
-
children: /* @__PURE__ */
|
|
28
|
+
children: /* @__PURE__ */ s(p, { asChild: !0, children: /* @__PURE__ */ s(
|
|
29
29
|
w.span,
|
|
30
30
|
{
|
|
31
31
|
className: "pointer-events-none block h-ico-md w-ico-md rounded-ds-full bg-accent-fg shadow-02 ring-0",
|
|
32
32
|
animate: { x: b ? 20 : 0 },
|
|
33
|
+
whileTap: { scale: 0.85 },
|
|
33
34
|
transition: g.snappy
|
|
34
35
|
}
|
|
35
36
|
) })
|
package/dist/ui/tabs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/ui/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAQjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,QAAA,MAAM,IAAI,mJAgCR,CAAA;AAGF,0EAA0E;AAC1E,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAQjF,QAAA,MAAM,gBAAgB;;8EASpB,CAAA;AAEF,QAAA,MAAM,mBAAmB;;8EAmBxB,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,aACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,EAC/D,YAAY,CAAC,OAAO,gBAAgB,CAAC;CAAG;AAE5C,QAAA,MAAM,QAAQ,sFAqBZ,CAAA;AAGF,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,EAClE,YAAY,CAAC,OAAO,mBAAmB,CAAC;CAAG;AAE/C,QAAA,MAAM,WAAW,4FAmCf,CAAA;AAGF,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/ui/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,aAAa,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAQjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,QAAA,MAAM,IAAI,mJAgCR,CAAA;AAGF,0EAA0E;AAC1E,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAQjF,QAAA,MAAM,gBAAgB;;8EASpB,CAAA;AAEF,QAAA,MAAM,mBAAmB;;8EAmBxB,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,aACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,EAC/D,YAAY,CAAC,OAAO,gBAAgB,CAAC;CAAG;AAE5C,QAAA,MAAM,QAAQ,sFAqBZ,CAAA;AAGF,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,EAClE,YAAY,CAAC,OAAO,mBAAmB,CAAC;CAAG;AAE/C,QAAA,MAAM,WAAW,4FAmCf,CAAA;AAGF,QAAA,MAAM,WAAW,0JAoBf,CAAA;AAGF,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;AAE3F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA"}
|
package/dist/ui/tabs.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as s, jsxs as N } from "react/jsx-runtime";
|
|
3
|
-
import { aS as
|
|
3
|
+
import { aS as h, aT as v, aU as b, aV as p } from "../_chunks/primitives.js";
|
|
4
4
|
import * as t from "react";
|
|
5
|
-
import { ag as
|
|
6
|
-
import { cn as
|
|
7
|
-
import { springs as
|
|
8
|
-
import { L as
|
|
9
|
-
const x = t.createContext(void 0), I = t.forwardRef(({ value:
|
|
10
|
-
const [
|
|
5
|
+
import { ag as g } from "../_chunks/vendor-utils.js";
|
|
6
|
+
import { cn as u } from "./lib/utils.js";
|
|
7
|
+
import { springs as m, tweens as T } from "./lib/motion.js";
|
|
8
|
+
import { L as w, m as f } from "../_chunks/framer.js";
|
|
9
|
+
const x = t.createContext(void 0), I = t.forwardRef(({ value: a, defaultValue: i, onValueChange: e, ...n }, r) => {
|
|
10
|
+
const [o, c] = t.useState(a ?? i ?? "");
|
|
11
11
|
t.useEffect(() => {
|
|
12
|
-
|
|
13
|
-
}, [
|
|
12
|
+
a !== void 0 && c(a);
|
|
13
|
+
}, [a]);
|
|
14
14
|
const d = t.useCallback(
|
|
15
15
|
(l) => {
|
|
16
|
-
c(l),
|
|
16
|
+
c(l), e == null || e(l);
|
|
17
17
|
},
|
|
18
|
-
[
|
|
18
|
+
[e]
|
|
19
19
|
);
|
|
20
|
-
return /* @__PURE__ */ s(x.Provider, { value:
|
|
21
|
-
|
|
20
|
+
return /* @__PURE__ */ s(x.Provider, { value: o, children: /* @__PURE__ */ s(
|
|
21
|
+
h,
|
|
22
22
|
{
|
|
23
|
-
ref:
|
|
24
|
-
value:
|
|
25
|
-
defaultValue:
|
|
23
|
+
ref: r,
|
|
24
|
+
value: a,
|
|
25
|
+
defaultValue: a === void 0 ? i : void 0,
|
|
26
26
|
onValueChange: d,
|
|
27
|
-
...
|
|
27
|
+
...n
|
|
28
28
|
}
|
|
29
29
|
) });
|
|
30
30
|
});
|
|
@@ -32,7 +32,7 @@ I.displayName = "Tabs";
|
|
|
32
32
|
const y = t.createContext({
|
|
33
33
|
variant: "line",
|
|
34
34
|
layoutId: "tab-indicator"
|
|
35
|
-
}),
|
|
35
|
+
}), C = g("inline-flex items-center", {
|
|
36
36
|
variants: {
|
|
37
37
|
variant: {
|
|
38
38
|
line: "border-b border-surface-border-strong w-full gap-0",
|
|
@@ -40,7 +40,7 @@ const y = t.createContext({
|
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
defaultVariants: { variant: "line" }
|
|
43
|
-
}),
|
|
43
|
+
}), L = g(
|
|
44
44
|
"relative inline-flex items-center justify-center gap-ds-02 whitespace-nowrap font-sans text-ds-md font-medium transition-colors duration-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-1 disabled:pointer-events-none disabled:opacity-action-disabled",
|
|
45
45
|
{
|
|
46
46
|
variants: {
|
|
@@ -59,67 +59,76 @@ const y = t.createContext({
|
|
|
59
59
|
},
|
|
60
60
|
defaultVariants: { variant: "line" }
|
|
61
61
|
}
|
|
62
|
-
),
|
|
63
|
-
const
|
|
64
|
-
() => ({ variant:
|
|
65
|
-
[
|
|
62
|
+
), R = t.forwardRef(({ className: a, variant: i, ...e }, n) => {
|
|
63
|
+
const r = i ?? "line", o = t.useId(), c = t.useMemo(
|
|
64
|
+
() => ({ variant: r, layoutId: `tab-indicator-${o}` }),
|
|
65
|
+
[r, o]
|
|
66
66
|
);
|
|
67
|
-
return /* @__PURE__ */ s(y.Provider, { value: c, children: /* @__PURE__ */ s(
|
|
67
|
+
return /* @__PURE__ */ s(y.Provider, { value: c, children: /* @__PURE__ */ s(w, { children: /* @__PURE__ */ s(
|
|
68
68
|
v,
|
|
69
69
|
{
|
|
70
|
-
ref:
|
|
71
|
-
className:
|
|
72
|
-
...
|
|
70
|
+
ref: n,
|
|
71
|
+
className: u(C({ variant: r }), a),
|
|
72
|
+
...e
|
|
73
73
|
}
|
|
74
74
|
) }) });
|
|
75
75
|
});
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
const
|
|
76
|
+
R.displayName = v.displayName;
|
|
77
|
+
const V = t.forwardRef(({ className: a, variant: i, children: e, ...n }, r) => {
|
|
78
|
+
const o = t.useContext(y), c = t.useContext(x), d = i ?? o.variant, l = n.value === c;
|
|
79
79
|
return /* @__PURE__ */ N(
|
|
80
80
|
b,
|
|
81
81
|
{
|
|
82
|
-
ref:
|
|
83
|
-
className:
|
|
84
|
-
...
|
|
82
|
+
ref: r,
|
|
83
|
+
className: u(L({ variant: d }), a),
|
|
84
|
+
...n,
|
|
85
85
|
children: [
|
|
86
86
|
d === "contained" && l && /* @__PURE__ */ s(
|
|
87
|
-
|
|
87
|
+
f.span,
|
|
88
88
|
{
|
|
89
|
-
layoutId: `${
|
|
89
|
+
layoutId: `${o.layoutId}-contained`,
|
|
90
90
|
className: "absolute inset-0 rounded-ds-md bg-surface-1 shadow-01",
|
|
91
|
-
transition:
|
|
91
|
+
transition: m.smooth
|
|
92
92
|
}
|
|
93
93
|
),
|
|
94
|
-
/* @__PURE__ */ s("span", { className: "relative z-[1] inline-flex items-center gap-ds-02", children:
|
|
94
|
+
/* @__PURE__ */ s("span", { className: "relative z-[1] inline-flex items-center gap-ds-02", children: e }),
|
|
95
95
|
d === "line" && l && /* @__PURE__ */ s(
|
|
96
|
-
|
|
96
|
+
f.span,
|
|
97
97
|
{
|
|
98
|
-
layoutId: `${
|
|
98
|
+
layoutId: `${o.layoutId}-line`,
|
|
99
99
|
className: "absolute bottom-0 left-0 right-0 h-0.5 bg-accent-9",
|
|
100
|
-
transition:
|
|
100
|
+
transition: m.smooth
|
|
101
101
|
}
|
|
102
102
|
)
|
|
103
103
|
]
|
|
104
104
|
}
|
|
105
105
|
);
|
|
106
106
|
});
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
|
|
107
|
+
V.displayName = b.displayName;
|
|
108
|
+
const j = t.forwardRef(({ className: a, children: i, ...e }, n) => /* @__PURE__ */ s(
|
|
109
|
+
p,
|
|
110
110
|
{
|
|
111
|
-
ref:
|
|
112
|
-
className:
|
|
111
|
+
ref: n,
|
|
112
|
+
className: u(
|
|
113
113
|
"mt-ds-05 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2",
|
|
114
|
-
|
|
114
|
+
a
|
|
115
115
|
),
|
|
116
|
-
...
|
|
116
|
+
...e,
|
|
117
|
+
children: /* @__PURE__ */ s(
|
|
118
|
+
f.div,
|
|
119
|
+
{
|
|
120
|
+
initial: { opacity: 0 },
|
|
121
|
+
animate: { opacity: 1 },
|
|
122
|
+
transition: T.fade,
|
|
123
|
+
children: i
|
|
124
|
+
}
|
|
125
|
+
)
|
|
117
126
|
}
|
|
118
127
|
));
|
|
119
|
-
|
|
128
|
+
j.displayName = p.displayName;
|
|
120
129
|
export {
|
|
121
130
|
I as Tabs,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
131
|
+
j as TabsContent,
|
|
132
|
+
R as TabsList,
|
|
133
|
+
V as TabsTrigger
|
|
125
134
|
};
|
package/dist/ui/textarea.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as c } from "react/jsx-runtime";
|
|
3
|
-
import * as
|
|
4
|
-
import { ag as
|
|
5
|
-
import { cn as
|
|
3
|
+
import * as u from "react";
|
|
4
|
+
import { ag as l } from "../_chunks/vendor-utils.js";
|
|
5
|
+
import { cn as f } from "./lib/utils.js";
|
|
6
6
|
import { motionProps as m } from "./lib/motion.js";
|
|
7
7
|
import { useFormField as b } from "./form.js";
|
|
8
|
-
import { m as
|
|
9
|
-
const
|
|
8
|
+
import { m as p } from "../_chunks/framer.js";
|
|
9
|
+
const x = l(
|
|
10
10
|
[
|
|
11
|
-
"flex w-full font-sans resize-y",
|
|
11
|
+
"flex w-full font-sans resize-y cursor-ns-resize",
|
|
12
12
|
"bg-surface-3 text-surface-fg",
|
|
13
13
|
"border border-surface-border-strong rounded-ds-md",
|
|
14
14
|
"placeholder:text-surface-fg-subtle",
|
|
15
15
|
"hover:bg-surface-4",
|
|
16
|
-
"transition-colors duration-fast-01",
|
|
16
|
+
"transition-colors duration-fast-01 ease-productive-standard",
|
|
17
17
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:border-accent-7",
|
|
18
18
|
"disabled:cursor-not-allowed disabled:opacity-action-disabled",
|
|
19
19
|
"read-only:bg-surface-2 read-only:cursor-default"
|
|
@@ -28,21 +28,21 @@ const p = f(
|
|
|
28
28
|
},
|
|
29
29
|
defaultVariants: { size: "md" }
|
|
30
30
|
}
|
|
31
|
-
), g =
|
|
32
|
-
({ className:
|
|
33
|
-
const r = b(), e =
|
|
31
|
+
), g = u.forwardRef(
|
|
32
|
+
({ className: a, state: i, size: o, ...s }, t) => {
|
|
33
|
+
const r = b(), e = i ?? (r.state === "helper" ? void 0 : r.state), d = s["aria-describedby"] ?? r.helperTextId, n = s["aria-required"] ?? r.required;
|
|
34
34
|
return /* @__PURE__ */ c(
|
|
35
|
-
|
|
35
|
+
p.textarea,
|
|
36
36
|
{
|
|
37
37
|
"aria-invalid": e === "error" || void 0,
|
|
38
38
|
"aria-describedby": d,
|
|
39
39
|
"aria-required": n || void 0,
|
|
40
|
-
className:
|
|
41
|
-
|
|
40
|
+
className: f(
|
|
41
|
+
x({ size: o }),
|
|
42
42
|
e === "error" && "border-error-7 focus-visible:ring-error-7",
|
|
43
43
|
e === "warning" && "border-warning-7 focus-visible:ring-warning-7",
|
|
44
44
|
e === "success" && "border-success-7 focus-visible:ring-success-7",
|
|
45
|
-
|
|
45
|
+
a
|
|
46
46
|
),
|
|
47
47
|
ref: t,
|
|
48
48
|
...m(s)
|
|
@@ -53,5 +53,5 @@ const p = f(
|
|
|
53
53
|
g.displayName = "Textarea";
|
|
54
54
|
export {
|
|
55
55
|
g as Textarea,
|
|
56
|
-
|
|
56
|
+
x as textareaVariants
|
|
57
57
|
};
|
package/dist/ui/toast.js
CHANGED
|
@@ -149,7 +149,7 @@ function I({
|
|
|
149
149
|
{
|
|
150
150
|
type: "button",
|
|
151
151
|
onClick: r.onClick,
|
|
152
|
-
className: "text-ds-sm font-medium text-accent-11 underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:rounded-ds-sm",
|
|
152
|
+
className: "text-ds-sm font-medium text-accent-11 underline-offset-2 hover:underline hover:bg-surface-3 rounded-ds-sm px-ds-02 py-ds-01 transition-[color,background-color] duration-fast-01 ease-productive-standard focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:rounded-ds-sm",
|
|
153
153
|
children: r.label
|
|
154
154
|
}
|
|
155
155
|
),
|
package/dist/ui/toggle.js
CHANGED
|
@@ -7,12 +7,12 @@ import { springs as m, motionProps as c } from "./lib/motion.js";
|
|
|
7
7
|
import { cn as f } from "./lib/utils.js";
|
|
8
8
|
import { m as l } from "../_chunks/framer.js";
|
|
9
9
|
const p = l.create(t), g = d(
|
|
10
|
-
"inline-flex items-center justify-center gap-ds-03 rounded-ds-md font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-action-disabled data-[state=on]:bg-accent-2 data-[state=on]:text-accent-11",
|
|
10
|
+
"inline-flex items-center justify-center gap-ds-03 rounded-ds-md font-medium transition-colors duration-fast-01 ease-productive-standard focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-action-disabled data-[state=on]:bg-accent-2 data-[state=on]:text-accent-11",
|
|
11
11
|
{
|
|
12
12
|
variants: {
|
|
13
13
|
variant: {
|
|
14
14
|
default: "bg-transparent hover:bg-surface-3 text-surface-fg-muted",
|
|
15
|
-
outline: "border border-surface-border-strong bg-transparent hover:bg-surface-3"
|
|
15
|
+
outline: "border border-surface-border-strong bg-transparent hover:bg-surface-3 hover:border-surface-border-strong"
|
|
16
16
|
},
|
|
17
17
|
size: {
|
|
18
18
|
sm: "h-ds-sm px-ds-03 text-ds-sm",
|
|
@@ -25,14 +25,14 @@ const p = l.create(t), g = d(
|
|
|
25
25
|
size: "md"
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
), u = n.forwardRef(({ className: e, variant: s, size:
|
|
28
|
+
), u = n.forwardRef(({ className: e, variant: s, size: o, ...a }, r) => /* @__PURE__ */ i(
|
|
29
29
|
p,
|
|
30
30
|
{
|
|
31
31
|
ref: r,
|
|
32
32
|
whileTap: { scale: 0.95 },
|
|
33
33
|
transition: m.snappy,
|
|
34
|
-
className: f(g({ variant: s, size:
|
|
35
|
-
...c(
|
|
34
|
+
className: f(g({ variant: s, size: o }), e),
|
|
35
|
+
...c(a)
|
|
36
36
|
}
|
|
37
37
|
));
|
|
38
38
|
u.displayName = t.displayName;
|
package/dist/ui/tooltip.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import * as TooltipPrimitive from '../primitives/react-tooltip';
|
|
4
|
-
/**
|
|
5
|
-
* Explicit TooltipProvider — wrap your app root for shared delay/skip behavior.
|
|
6
|
-
* If you don't add one, each Tooltip auto-creates its own provider.
|
|
7
|
-
*/
|
|
8
4
|
declare const TooltipProvider: React.FC<React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider>>;
|
|
9
5
|
declare const Tooltip: React.FC<React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>>;
|
|
10
6
|
declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
package/dist/ui/tooltip.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/ui/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/ui/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,2BAA2B,CAAA;AAU7D,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAS/F,CAAA;AAmBD,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CA2BnF,CAAA;AAGD,QAAA,MAAM,cAAc,gHAA2B,CAAA;AAW/C,QAAA,MAAM,cAAc,gKAoClB,CAAA;AAGF,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAEjG,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
|
package/dist/ui/tooltip.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as t, Fragment as
|
|
2
|
+
import { jsx as t, Fragment as y } from "react/jsx-runtime";
|
|
3
3
|
import * as o from "react";
|
|
4
|
-
import { aK as
|
|
4
|
+
import { aK as h, aL as f, aM as P, aN as u, aO as T } from "../_chunks/primitives.js";
|
|
5
5
|
import { cn as C } from "./lib/utils.js";
|
|
6
6
|
import { tweens as g, springs as N } from "./lib/motion.js";
|
|
7
7
|
import { A as b, m as w } from "../_chunks/framer.js";
|
|
8
|
-
const
|
|
8
|
+
const d = o.createContext(!1), F = ({
|
|
9
9
|
children: e,
|
|
10
10
|
...s
|
|
11
|
-
}) => /* @__PURE__ */ t(d.Provider, { value: !0, children: /* @__PURE__ */ t(
|
|
12
|
-
function
|
|
13
|
-
return o.useContext(d) ? /* @__PURE__ */ t(
|
|
11
|
+
}) => /* @__PURE__ */ t(d.Provider, { value: !0, children: /* @__PURE__ */ t(u, { ...s, children: e }) });
|
|
12
|
+
function M({ children: e }) {
|
|
13
|
+
return o.useContext(d) ? /* @__PURE__ */ t(y, { children: e }) : /* @__PURE__ */ t(d.Provider, { value: !0, children: /* @__PURE__ */ t(u, { delayDuration: 300, children: e }) });
|
|
14
14
|
}
|
|
15
|
-
const m = o.createContext({ open: !1 }),
|
|
15
|
+
const m = o.createContext({ open: !1 }), A = ({
|
|
16
16
|
open: e,
|
|
17
17
|
defaultOpen: s,
|
|
18
18
|
onOpenChange: r,
|
|
19
19
|
...n
|
|
20
20
|
}) => {
|
|
21
|
-
const [
|
|
21
|
+
const [l, c] = o.useState(s ?? !1), a = e !== void 0, i = a ? e : l, v = o.useCallback(
|
|
22
22
|
(p) => {
|
|
23
|
-
a ||
|
|
23
|
+
a || c(p), r == null || r(p);
|
|
24
24
|
},
|
|
25
25
|
[a, r]
|
|
26
|
-
),
|
|
27
|
-
return /* @__PURE__ */ t(
|
|
26
|
+
), x = o.useMemo(() => ({ open: i }), [i]);
|
|
27
|
+
return /* @__PURE__ */ t(M, { children: /* @__PURE__ */ t(m.Provider, { value: x, children: /* @__PURE__ */ t(T, { open: i, onOpenChange: v, ...n }) }) });
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
const K =
|
|
29
|
+
A.displayName = "Tooltip";
|
|
30
|
+
const K = P, R = {
|
|
31
31
|
top: { y: 4 },
|
|
32
32
|
bottom: { y: -4 },
|
|
33
33
|
left: { x: 4 },
|
|
34
34
|
right: { x: -4 }
|
|
35
|
-
},
|
|
36
|
-
const { open: a } = o.useContext(m), i =
|
|
37
|
-
return /* @__PURE__ */ t(b, { children: a && /* @__PURE__ */ t(
|
|
35
|
+
}, I = o.forwardRef(({ className: e, sideOffset: s = 4, side: r = "top", children: n, ...l }, c) => {
|
|
36
|
+
const { open: a } = o.useContext(m), i = R[r] ?? {};
|
|
37
|
+
return /* @__PURE__ */ t(b, { children: a && /* @__PURE__ */ t(h, { forceMount: !0, children: /* @__PURE__ */ t(
|
|
38
38
|
f,
|
|
39
39
|
{
|
|
40
|
-
ref:
|
|
40
|
+
ref: c,
|
|
41
41
|
forceMount: !0,
|
|
42
|
-
asChild: !0,
|
|
43
42
|
sideOffset: s,
|
|
44
43
|
side: r,
|
|
45
|
-
...
|
|
44
|
+
...l,
|
|
45
|
+
asChild: !0,
|
|
46
46
|
children: /* @__PURE__ */ t(
|
|
47
47
|
w.div,
|
|
48
48
|
{
|
|
@@ -51,7 +51,7 @@ const K = h, I = {
|
|
|
51
51
|
exit: { opacity: 0, scale: 0.95, ...i },
|
|
52
52
|
transition: { ...N.snappy, opacity: g.fade },
|
|
53
53
|
className: C(
|
|
54
|
-
"z-tooltip overflow-hidden rounded-ds-md bg-surface-fg px-ds-04 py-ds-02b text-ds-sm text-
|
|
54
|
+
"z-tooltip overflow-hidden rounded-ds-md bg-surface-fg px-ds-04 py-ds-02b text-ds-sm text-surface-1 shadow-02",
|
|
55
55
|
e
|
|
56
56
|
),
|
|
57
57
|
children: n
|
|
@@ -60,10 +60,10 @@ const K = h, I = {
|
|
|
60
60
|
}
|
|
61
61
|
) }) });
|
|
62
62
|
});
|
|
63
|
-
|
|
63
|
+
I.displayName = f.displayName;
|
|
64
64
|
export {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
A as Tooltip,
|
|
66
|
+
I as TooltipContent,
|
|
67
|
+
F as TooltipProvider,
|
|
68
68
|
K as TooltipTrigger
|
|
69
69
|
};
|
|
@@ -39,6 +39,9 @@
|
|
|
39
39
|
- Online status dot pulses with a CSS animation
|
|
40
40
|
|
|
41
41
|
## Changes
|
|
42
|
+
### v0.22.0
|
|
43
|
+
- **Fixed** Fallback always rendered `rounded-ds-full` regardless of `shape` prop. Now uses `AvatarShapeContext` to inherit the correct border-radius from `shape="square"` or `shape="rounded"`.
|
|
44
|
+
|
|
42
45
|
### v0.21.0
|
|
43
46
|
- **Added** `ring` prop with semantic role colors (`lead`, `admin`, `client`)
|
|
44
47
|
- **Added** `badge` prop for numeric, dot, or custom ReactNode overlay at top-right
|
|
@@ -36,6 +36,11 @@
|
|
|
36
36
|
- onClickAsync overrides onClick and loading when active
|
|
37
37
|
|
|
38
38
|
## Changes
|
|
39
|
+
### v0.22.0
|
|
40
|
+
- **Changed** Active/pressed scale from `0.97` to `0.95` for snappier press feedback.
|
|
41
|
+
- **Fixed** Ghost/outline hover not fading — `transition-transform` in base overrode `transition-colors` from variant. Combined into single `transition-[color,background-color,border-color,box-shadow,transform]`.
|
|
42
|
+
- **Added** `disabled:cursor-not-allowed` to button base (was missing).
|
|
43
|
+
|
|
39
44
|
### v0.18.0
|
|
40
45
|
- **Added** `onClickAsync` prop — promise-driven loading -> success/error state machine
|
|
41
46
|
- **Added** `asyncFeedbackDuration` prop (default 1500ms)
|
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
- indeterminate overrides checked visually
|
|
24
24
|
|
|
25
25
|
## Changes
|
|
26
|
+
### v0.22.0
|
|
27
|
+
- **Changed** Check indicator animation from scale-bounce to path-draw (stroke draws progressively). Indeterminate dash also draws in.
|
|
28
|
+
- **Fixed** Uncontrolled checkbox never showed checkmark — `checked` from props was `undefined`, so `isActive` was always `false`. Now tracks internal state.
|
|
29
|
+
- **Added** Hover state on unchecked checkbox (subtle background highlight).
|
|
30
|
+
|
|
26
31
|
### v0.18.0
|
|
27
32
|
- **Changed** Bouncy check indicator animation migrated to Framer Motion
|
|
28
33
|
- **Fixed** Icon sizing uses design tokens consistently
|
|
@@ -35,6 +35,9 @@
|
|
|
35
35
|
- Use `asChild` on DropdownMenuTrigger to render your own button element
|
|
36
36
|
|
|
37
37
|
## Changes
|
|
38
|
+
### v0.22.0
|
|
39
|
+
- **Added** Hover state on `DropdownMenuItem` — was completely missing. Items now show `bg-surface-3` on hover with `ease-productive-standard` transition.
|
|
40
|
+
|
|
38
41
|
### v0.18.0
|
|
39
42
|
- **Added** `DropdownMenuContentProps`, `DropdownMenuItemProps` type exports
|
|
40
43
|
|
|
@@ -22,6 +22,9 @@
|
|
|
22
22
|
- When decorative is true, the separator is hidden from screen readers
|
|
23
23
|
|
|
24
24
|
## Changes
|
|
25
|
+
### v0.22.0
|
|
26
|
+
- **Added** `variant` prop: `"gradient"` (fades both edges), `"gradient-left"` (fades left), `"gradient-right"` (fades right). Default behavior unchanged.
|
|
27
|
+
|
|
25
28
|
### v0.4.2
|
|
26
29
|
- **Added** `SeparatorProps` type export
|
|
27
30
|
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
- TooltipProvider is REQUIRED — without it, tooltips won't show
|
|
25
25
|
|
|
26
26
|
## Changes
|
|
27
|
+
### v0.22.0
|
|
28
|
+
- **Added** Auto-provider: `<Tooltip>` now auto-wraps with `<TooltipProvider>` when no ancestor provider exists. No more "tooltip doesn't appear" issues.
|
|
29
|
+
- **Fixed** Content children not rendering — `motion.div` was self-closing (`/>`), so children were never passed through.
|
|
30
|
+
- **Fixed** Text invisible in dark mode — `text-accent-fg` resolves to same value as `bg-surface-fg` in dark mode. Changed to `text-surface-1`.
|
|
31
|
+
|
|
27
32
|
### v0.18.0
|
|
28
33
|
- **Changed** Migrated to Framer Motion for enter/exit animations
|
|
29
34
|
- **Added** `TooltipContentProps` type export
|
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.
|
|
8
|
+
> Version: 0.22.0
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -358,6 +358,9 @@ Note: getFormFieldA11y() was removed in favor of useFormField() hook.
|
|
|
358
358
|
- Online status dot pulses with a CSS animation
|
|
359
359
|
|
|
360
360
|
## Changes
|
|
361
|
+
### v0.22.0
|
|
362
|
+
- **Fixed** Fallback always rendered `rounded-ds-full` regardless of `shape` prop. Now uses `AvatarShapeContext` to inherit the correct border-radius from `shape="square"` or `shape="rounded"`.
|
|
363
|
+
|
|
361
364
|
### v0.21.0
|
|
362
365
|
- **Added** `ring` prop with semantic role colors (`lead`, `admin`, `client`)
|
|
363
366
|
- **Added** `badge` prop for numeric, dot, or custom ReactNode overlay at top-right
|
|
@@ -531,6 +534,11 @@ Note: getFormFieldA11y() was removed in favor of useFormField() hook.
|
|
|
531
534
|
- onClickAsync overrides onClick and loading when active
|
|
532
535
|
|
|
533
536
|
## Changes
|
|
537
|
+
### v0.22.0
|
|
538
|
+
- **Changed** Active/pressed scale from `0.97` to `0.95` for snappier press feedback.
|
|
539
|
+
- **Fixed** Ghost/outline hover not fading — `transition-transform` in base overrode `transition-colors` from variant. Combined into single `transition-[color,background-color,border-color,box-shadow,transform]`.
|
|
540
|
+
- **Added** `disabled:cursor-not-allowed` to button base (was missing).
|
|
541
|
+
|
|
534
542
|
### v0.18.0
|
|
535
543
|
- **Added** `onClickAsync` prop — promise-driven loading -> success/error state machine
|
|
536
544
|
- **Added** `asyncFeedbackDuration` prop (default 1500ms)
|
|
@@ -696,6 +704,11 @@ import { BarChart } from '@devalok/shilp-sutra/ui/charts'
|
|
|
696
704
|
- indeterminate overrides checked visually
|
|
697
705
|
|
|
698
706
|
## Changes
|
|
707
|
+
### v0.22.0
|
|
708
|
+
- **Changed** Check indicator animation from scale-bounce to path-draw (stroke draws progressively). Indeterminate dash also draws in.
|
|
709
|
+
- **Fixed** Uncontrolled checkbox never showed checkmark — `checked` from props was `undefined`, so `isActive` was always `false`. Now tracks internal state.
|
|
710
|
+
- **Added** Hover state on unchecked checkbox (subtle background highlight).
|
|
711
|
+
|
|
699
712
|
### v0.18.0
|
|
700
713
|
- **Changed** Bouncy check indicator animation migrated to Framer Motion
|
|
701
714
|
- **Fixed** Icon sizing uses design tokens consistently
|
|
@@ -1203,6 +1216,9 @@ import { DataTableToolbar } from '@devalok/shilp-sutra/ui/data-table-toolbar'
|
|
|
1203
1216
|
- Use `asChild` on DropdownMenuTrigger to render your own button element
|
|
1204
1217
|
|
|
1205
1218
|
## Changes
|
|
1219
|
+
### v0.22.0
|
|
1220
|
+
- **Added** Hover state on `DropdownMenuItem` — was completely missing. Items now show `bg-surface-3` on hover with `ease-productive-standard` transition.
|
|
1221
|
+
|
|
1206
1222
|
### v0.18.0
|
|
1207
1223
|
- **Added** `DropdownMenuContentProps`, `DropdownMenuItemProps` type exports
|
|
1208
1224
|
|
|
@@ -1955,6 +1971,9 @@ import { DataTableToolbar } from '@devalok/shilp-sutra/ui/data-table-toolbar'
|
|
|
1955
1971
|
- When decorative is true, the separator is hidden from screen readers
|
|
1956
1972
|
|
|
1957
1973
|
## Changes
|
|
1974
|
+
### v0.22.0
|
|
1975
|
+
- **Added** `variant` prop: `"gradient"` (fades both edges), `"gradient-left"` (fades left), `"gradient-right"` (fades right). Default behavior unchanged.
|
|
1976
|
+
|
|
1958
1977
|
### v0.4.2
|
|
1959
1978
|
- **Added** `SeparatorProps` type export
|
|
1960
1979
|
|
|
@@ -2816,6 +2835,11 @@ export default function RootLayout({ children }) {
|
|
|
2816
2835
|
- TooltipProvider is REQUIRED — without it, tooltips won't show
|
|
2817
2836
|
|
|
2818
2837
|
## Changes
|
|
2838
|
+
### v0.22.0
|
|
2839
|
+
- **Added** Auto-provider: `<Tooltip>` now auto-wraps with `<TooltipProvider>` when no ancestor provider exists. No more "tooltip doesn't appear" issues.
|
|
2840
|
+
- **Fixed** Content children not rendering — `motion.div` was self-closing (`/>`), so children were never passed through.
|
|
2841
|
+
- **Fixed** Text invisible in dark mode — `text-accent-fg` resolves to same value as `bg-surface-fg` in dark mode. Changed to `text-surface-1`.
|
|
2842
|
+
|
|
2819
2843
|
### v0.18.0
|
|
2820
2844
|
- **Changed** Migrated to Framer Motion for enter/exit animations
|
|
2821
2845
|
- **Added** `TooltipContentProps` type export
|
package/llms.txt
CHANGED
|
@@ -85,6 +85,26 @@
|
|
|
85
85
|
- Dark mode: algorithmically derived (OKLCH curves), NOT hex overrides. Surfaces lighten with elevation.
|
|
86
86
|
- If you reference --pink-500 etc directly, migrate: 50→1, 100→2, 200→3, 300→4, 400→5, 500→7, 600→8, 700→9, 800→10, 900→11, 950→12
|
|
87
87
|
|
|
88
|
+
## v0.22.0 — UI Polish & Micro-Refinement
|
|
89
|
+
|
|
90
|
+
**Shadows**: All shadow tokens now use 3-layer stacks. Visual change only — same token names.
|
|
91
|
+
|
|
92
|
+
**Transitions**: All CSS transitions use `ease-productive-standard` easing. Tween presets aligned: `tweens.fade` = 0.11s, `tweens.colorShift` = 0.07s.
|
|
93
|
+
|
|
94
|
+
**New Tailwind utilities**:
|
|
95
|
+
- `.focus-ring` / `.focus-ring-inset` / `.focus-ring-sm` — consistent keyboard focus styling
|
|
96
|
+
- `.tabular-nums` — aligned numbers via `font-variant-numeric: tabular-nums`
|
|
97
|
+
|
|
98
|
+
**Separator**: New `variant` prop — `"gradient" | "gradient-left" | "gradient-right"`. Default unchanged.
|
|
99
|
+
|
|
100
|
+
**Checkbox**: Path-draw animation (stroke draws progressively). Uncontrolled usage now works.
|
|
101
|
+
|
|
102
|
+
**Tooltip**: Auto-wraps with `<TooltipProvider>` — no manual provider needed. Text color fixed for dark mode.
|
|
103
|
+
|
|
104
|
+
**Avatar fallback**: Now respects `shape` prop (was always circle).
|
|
105
|
+
|
|
106
|
+
**New hover states**: Checkbox, Radio, Switch track, Select items, DropdownMenu items, Combobox trigger.
|
|
107
|
+
|
|
88
108
|
## Install & Setup
|
|
89
109
|
|
|
90
110
|
pnpm add @devalok/shilp-sutra
|