@agentero/design-system 0.32.1 → 0.32.2

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.
@@ -594,7 +594,7 @@
594
594
  <main>
595
595
  <div class="wrap">
596
596
  <div class="note ok" style="margin-bottom: 16px;">
597
- Using <code>react-component-meta</code>. Generation took <strong>4.0s</strong>.
597
+ Using <code>react-component-meta</code>. Generation took <strong>4.9s</strong>.
598
598
  </div>
599
599
  <h2 class="section-title">Components</h2>
600
600
  <div class="grid" role="list">
@@ -1562,7 +1562,7 @@ variant?: &quot;circle&quot; | &quot;square&quot; | &quot;pillow&quot; | &quot;p
1562
1562
  <div class="row">
1563
1563
  <span class="ex-name">Imports</span>
1564
1564
  </div>
1565
- <pre><code>import { Avatar } from "@agentero/design-system";</code></pre>
1565
+ <pre><code>import { Avatar, Button } from "@agentero/design-system";</code></pre>
1566
1566
  </div>
1567
1567
 
1568
1568
 
@@ -1225,7 +1225,7 @@
1225
1225
  "summary": "All avatar shapes with a profile image"
1226
1226
  }
1227
1227
  ],
1228
- "import": "import { Avatar } from \"@agentero/design-system\";"
1228
+ "import": "import { Avatar, Button } from \"@agentero/design-system\";"
1229
1229
  },
1230
1230
  "components-button": {
1231
1231
  "id": "components-button",
@@ -9590,6 +9590,6 @@
9590
9590
  },
9591
9591
  "meta": {
9592
9592
  "docgen": "react-component-meta",
9593
- "durationMs": 3999
9593
+ "durationMs": 4877
9594
9594
  }
9595
9595
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentero/design-system",
3
- "version": "0.32.1",
3
+ "version": "0.32.2",
4
4
  "description": "A React component library built with Tailwind CSS v4 and Radix UI primitives",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -35,7 +35,7 @@ var d = ({ className: r, children: s, asChild: c, ...l }) => /* @__PURE__ */ a(u
35
35
  d.displayName = "Accordion.Trigger";
36
36
  var f = ({ className: t, children: r, ...i }) => /* @__PURE__ */ a(n.Content, {
37
37
  "data-slot": "accordion-content",
38
- className: e("overflow-hidden px-4 text-sm", "motion-safe:data-[state=open]:animate-[accordionDown_200ms_ease-out]", "motion-safe:data-[state=closed]:animate-[accordionUp_200ms_ease-out]", t),
38
+ className: e("overflow-hidden px-4 text-sm", "motion-safe:data-[state=open]:animate-accordion-down", "motion-safe:data-[state=closed]:animate-accordion-up", t),
39
39
  ...i,
40
40
  children: /* @__PURE__ */ a("div", {
41
41
  className: "pb-4",
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { cn as e } from "../../lib/utils.js";
3
3
  import { tv as t } from "tailwind-variants";
4
- import { createContext as n, use as r } from "react";
5
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
- import * as o from "@radix-ui/react-avatar";
4
+ import { createContext as n, use as r, useState as i } from "react";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
+ import * as s from "@radix-ui/react-avatar";
7
7
  //#region src/avatar/avatar.tsx
8
- var s = t({
8
+ var c = t({
9
9
  slots: {
10
10
  root: [
11
11
  "flex items-center justify-center align-middle",
@@ -17,7 +17,7 @@ var s = t({
17
17
  "border-[var(--avatar-border-color,var(--color-border-default-base-primary))]",
18
18
  "h-fit w-fit"
19
19
  ],
20
- image: ["flex object-cover box-border h-full vertical-align-middle w-full"],
20
+ image: ["flex object-cover box-border h-full vertical-align-middle w-full", "data-loaded-late:transition-opacity data-loaded-late:duration-200 data-loaded-late:starting:opacity-0"],
21
21
  fallback: ["uppercase", "[&_svg]:size-[1.5em] [&_svg]:fill-neutral-500"]
22
22
  },
23
23
  variants: {
@@ -126,58 +126,63 @@ var s = t({
126
126
  variant: "circle",
127
127
  type: "photo"
128
128
  }
129
- }), c = n(null), l = () => {
130
- let e = r(c);
129
+ }), l = n(null), u = () => {
130
+ let e = r(l);
131
131
  if (!e) throw Error("useAvatar must be used within an AvatarProvider");
132
132
  return e;
133
- }, u = ({ size: t, variant: n, type: r, ...a }) => {
134
- let l = s({
133
+ }, d = ({ size: t, variant: n, type: r, ...i }) => {
134
+ let o = c({
135
135
  size: t,
136
136
  variant: n,
137
137
  type: r
138
138
  });
139
- return /* @__PURE__ */ i(c, {
139
+ return /* @__PURE__ */ a(l, {
140
140
  value: {
141
141
  size: t,
142
142
  variant: n,
143
143
  type: r,
144
- slotsStyles: l
144
+ slotsStyles: o
145
145
  },
146
- children: /* @__PURE__ */ i(o.Root, {
147
- ...a,
148
- className: e(l.root(), a.className)
146
+ children: /* @__PURE__ */ a(s.Root, {
147
+ ...i,
148
+ className: e(o.root(), i.className)
149
149
  })
150
150
  });
151
- }, d = (t) => {
152
- let { slotsStyles: n } = l();
153
- return /* @__PURE__ */ i(o.Image, {
154
- ...t,
155
- className: e(n.image(), t.className)
151
+ }, f = ({ onLoadingStatusChange: t, ...n }) => {
152
+ let { slotsStyles: r } = u(), [o, c] = i(!1);
153
+ return /* @__PURE__ */ a(s.Image, {
154
+ ...n,
155
+ "data-loaded-late": o || void 0,
156
+ onLoadingStatusChange: (e) => {
157
+ e === "loading" && c(!0), t?.(e);
158
+ },
159
+ className: e(r.image(), n.className)
156
160
  });
157
- }, f = (t) => {
158
- let { slotsStyles: n } = l();
159
- return /* @__PURE__ */ i(o.Fallback, {
161
+ }, p = (t) => {
162
+ let { slotsStyles: n } = u();
163
+ return /* @__PURE__ */ a(s.Fallback, {
160
164
  ...t,
161
165
  className: e(n.fallback(), t.className)
162
166
  });
163
- }, p = ({ alt: e, src: t, fallback: n, colorize: r, size: o, variant: s, type: c, ref: l, ...p }) => {
164
- let m = r ? g(r) : void 0;
165
- return /* @__PURE__ */ a(u, {
166
- ...p,
167
- ref: l,
168
- size: o,
169
- variant: s,
170
- type: c,
167
+ }, m = ({ alt: e, src: t, fallback: n, colorize: r, size: s, variant: c, type: l, ref: u, ...m }) => {
168
+ let h = r ? _(r) : void 0, [g, v] = i(!1);
169
+ return /* @__PURE__ */ o(d, {
170
+ ...m,
171
+ ref: u,
172
+ size: s,
173
+ variant: c,
174
+ type: l,
171
175
  style: {
172
- ...m,
173
- ...p.style
176
+ ...h,
177
+ ...m.style
174
178
  },
175
- children: [/* @__PURE__ */ i(d, {
179
+ children: [/* @__PURE__ */ a(f, {
176
180
  alt: e,
177
- src: t
178
- }), /* @__PURE__ */ i(f, { children: n })]
181
+ src: t,
182
+ onLoadingStatusChange: (e) => v(e === "error")
183
+ }), (!t || g) && /* @__PURE__ */ a(p, { children: n })]
179
184
  });
180
- }, m = [
185
+ }, h = [
181
186
  {
182
187
  dark: "#434343",
183
188
  light: "#e3e3e3"
@@ -214,15 +219,15 @@ var s = t({
214
219
  dark: "#0f8a2a",
215
220
  light: "#d1fada"
216
221
  }
217
- ], h = (e) => {
222
+ ], g = (e) => {
218
223
  let t = e.split("").reduce((e, t, n) => {
219
224
  let r = 1;
220
225
  for (let e = 0; e < n; e++) r *= 26;
221
226
  return e + (t.charCodeAt(0) - 97 + 1) * r;
222
227
  }, 0);
223
- return m[(t < 0 ? -t : t) % m.length];
224
- }, g = (e) => {
225
- let { dark: t, light: n } = h(e);
228
+ return h[(t < 0 ? -t : t) % h.length];
229
+ }, _ = (e) => {
230
+ let { dark: t, light: n } = g(e);
226
231
  return {
227
232
  color: t,
228
233
  backgroundColor: n,
@@ -230,4 +235,4 @@ var s = t({
230
235
  };
231
236
  };
232
237
  //#endregion
233
- export { p as Avatar, s as avatarRecipe, l as useAvatar };
238
+ export { m as Avatar, c as avatarRecipe, u as useAvatar };
@@ -245,7 +245,7 @@ var c = t({
245
245
  }), l = () => /* @__PURE__ */ i("span", {
246
246
  "aria-label": "loading",
247
247
  role: "status",
248
- className: e("absolute inset-0 grid place-items-center", "rounded-[inherit] bg-inherit", "before:content-[\"\"] before:block before:size-[1em]", "before:border-2 before:border-solid before:rounded-full", "before:border-current before:border-t-transparent", "before:animate-spin before:[animation-duration:0.5s]")
248
+ className: e("absolute inset-0 grid place-items-center", "rounded-[inherit] bg-inherit", "transition-opacity duration-150 starting:opacity-0", "before:content-[\"\"] before:block before:size-[1em]", "before:border-2 before:border-solid before:rounded-full", "before:border-current before:border-t-transparent", "before:animate-spin before:[animation-duration:0.5s]")
249
249
  }), u = ({ children: t, asChild: u, variant: d, size: f, status: p, loading: m, rounded: h, align: g, fitContent: _, disabled: v, iconOnly: y, ref: b, className: x, ...S }) => {
250
250
  let C = u ? !!y : n.toArray(t).every((e) => r(e)), w = v || m;
251
251
  process.env.NODE_ENV !== "production" && (m && d === "link" && console.warn("Button with variant link and loading is not supported"), C && d === "link" && console.warn("Button with no text and variant link is not supported. Use it with variant tertiary instead"), u && y && r(t) && n.toArray(t.props.children).some((e) => !r(e)) && console.warn("Button with asChild and iconOnly should only contain icon children; text found inside the wrapper element"));
@@ -8,7 +8,7 @@ var s = r({ slots: {
8
8
  root: [
9
9
  "group/checkbox box-border inline-flex size-4 shrink-0 appearance-none items-center justify-center rounded-sm",
10
10
  "border border-solid border-border-input-default bg-bg-input-normal",
11
- "cursor-pointer transition-colors duration-200 ease-in-out",
11
+ "cursor-pointer transition-colors duration-150",
12
12
  "data-[state=checked]:border-bg-checkbox-selected data-[state=checked]:bg-bg-checkbox-selected",
13
13
  "data-[state=indeterminate]:border-bg-checkbox-selected data-[state=indeterminate]:bg-bg-checkbox-selected",
14
14
  "outline-solid outline-2 outline-offset-2 outline-transparent",
@@ -39,7 +39,7 @@ var v = u({ slots: {
39
39
  indicator: [
40
40
  "mr-2 flex size-4 shrink-0 items-center justify-center rounded-sm",
41
41
  "border border-border-input-default bg-bg-input-normal",
42
- "text-text-default-base-inverse-primary transition-colors duration-200 ease-in-out",
42
+ "text-text-default-base-inverse-primary transition-colors duration-150",
43
43
  "data-selected:border-bg-checkbox-selected data-selected:bg-bg-checkbox-selected",
44
44
  "[&>svg]:hidden data-selected:[&>svg]:block",
45
45
  "group-data-disabled/item:border-border-checkbox-disabled",
@@ -42,7 +42,7 @@ var y = ({ children: e }) => /* @__PURE__ */ d("div", {
42
42
  });
43
43
  y.displayName = "DataTable.ToolBar";
44
44
  var b = a({
45
- base: "size-4 transition-transform duration-200",
45
+ base: "size-4 transition-transform duration-200 motion-reduce:transition-none",
46
46
  variants: { direction: {
47
47
  asc: "",
48
48
  desc: "rotate-180",
@@ -20,16 +20,13 @@ var c = a.Portal, l = n({
20
20
  "z-(--z-index-top-layer) flex flex-col rounded-lg bg-bg-default-base-primary p-1 shadow-xl",
21
21
  "border border-border-default-base-primary",
22
22
  "will-change-[transform,opacity]",
23
- "data-[state=open]:animate-[dropdownSlideIn_200ms_ease-out]",
24
- "data-[state=closed]:animate-[dropdownSlideOut_150ms_ease-in]",
25
- "data-[side=bottom]:origin-top",
26
- "data-[side=left]:origin-right",
27
- "data-[side=right]:origin-left",
28
- "data-[side=top]:origin-bottom",
29
- "data-[side=bottom]:animate-[dropdownSlideInFromTop_200ms_ease-out]",
30
- "data-[side=left]:animate-[dropdownSlideInFromRight_200ms_ease-out]",
31
- "data-[side=right]:animate-[dropdownSlideInFromLeft_200ms_ease-out]",
32
- "data-[side=top]:animate-[dropdownSlideInFromBottom_200ms_ease-out]"
23
+ "origin-(--radix-dropdown-menu-content-transform-origin)",
24
+ "data-[state=open]:data-[side=bottom]:animate-dropdown-slide-in-from-top",
25
+ "data-[state=open]:data-[side=left]:animate-dropdown-slide-in-from-right",
26
+ "data-[state=open]:data-[side=right]:animate-dropdown-slide-in-from-left",
27
+ "data-[state=open]:data-[side=top]:animate-dropdown-slide-in-from-bottom",
28
+ "data-[state=closed]:animate-dropdown-slide-out",
29
+ "motion-reduce:animate-none!"
33
30
  ],
34
31
  variants: { hasTriggerWidth: { true: "w-[var(--radix-dropdown-menu-trigger-width)]" } }
35
32
  }), u = ({ className: e, hasTriggerWidth: t = !1, sideOffset: n = 8, ...i }) => /* @__PURE__ */ r(a.Content, {
@@ -44,7 +41,7 @@ var c = a.Portal, l = n({
44
41
  u.displayName = "DropdownMenu.Content";
45
42
  var d = ({ className: t, ...n }) => /* @__PURE__ */ r(a.Item, {
46
43
  "data-slot": "dropdown-menu-item",
47
- className: e("flex items-center gap-2 bg-bg-default-base-primary px-3 py-1.75 text-sm text-text-default-base-primary", "cursor-pointer rounded-md no-underline transition-colors outline-none", "min-w-40", "data-highlighted:bg-bg-default-base-primary-hover", "data-disabled:pointer-events-none data-disabled:cursor-not-allowed", "data-disabled:text-text-default-disable-primary", "data-disabled:active:bg-bg-default-base-primary", "[&>svg]:h-6", "[&_path]:fill-icon-default-base-tertiary", t),
44
+ className: e("flex items-center gap-2 bg-bg-default-base-primary px-3 py-1.75 text-sm text-text-default-base-primary", "cursor-pointer rounded-md no-underline outline-none", "min-w-40", "data-highlighted:bg-bg-default-base-primary-hover", "data-disabled:pointer-events-none data-disabled:cursor-not-allowed", "data-disabled:text-text-default-disable-primary", "data-disabled:active:bg-bg-default-base-primary", "[&>svg]:h-6", "[&_path]:fill-icon-default-base-tertiary", t),
48
45
  ...n
49
46
  });
50
47
  d.displayName = "DropdownMenu.Item";
@@ -67,7 +64,7 @@ var m = (e) => /* @__PURE__ */ r(a.Sub, {
67
64
  m.displayName = "DropdownMenu.Sub";
68
65
  var h = ({ className: n, children: o, ...s }) => /* @__PURE__ */ i(a.SubTrigger, {
69
66
  "data-slot": "dropdown-menu-sub-trigger",
70
- className: e("flex items-center gap-2 bg-bg-default-base-primary px-3 py-1.75 text-sm text-text-default-base-primary", "cursor-pointer rounded-md no-underline transition-colors outline-none", "min-w-40", "data-highlighted:bg-bg-default-base-primary-hover", "data-[state=open]:bg-bg-default-base-primary-hover", "data-disabled:pointer-events-none data-disabled:cursor-not-allowed", "data-disabled:text-text-default-disable-primary", "[&>svg]:h-6", "[&_path]:fill-icon-default-base-tertiary", n),
67
+ className: e("flex items-center gap-2 bg-bg-default-base-primary px-3 py-1.75 text-sm text-text-default-base-primary", "cursor-pointer rounded-md no-underline outline-none", "min-w-40", "data-highlighted:bg-bg-default-base-primary-hover", "data-[state=open]:bg-bg-default-base-primary-hover", "data-disabled:pointer-events-none data-disabled:cursor-not-allowed", "data-disabled:text-text-default-disable-primary", "[&>svg]:h-6", "[&_path]:fill-icon-default-base-tertiary", n),
71
68
  ...s,
72
69
  children: [o, /* @__PURE__ */ r(t, { className: "ml-auto h-4 w-4 [&>path]:fill-icon-default-base-tertiary" })]
73
70
  });
@@ -76,16 +73,13 @@ var g = n({ base: [
76
73
  "z-(--z-index-top-layer) flex flex-col rounded-lg bg-bg-default-base-primary p-1 shadow-xl",
77
74
  "border border-border-default-base-primary",
78
75
  "will-change-[transform,opacity]",
79
- "data-[state=open]:animate-[dropdownSlideIn_200ms_ease-out]",
80
- "data-[state=closed]:animate-[dropdownSlideOut_150ms_ease-in]",
81
- "data-[side=bottom]:origin-top",
82
- "data-[side=left]:origin-right",
83
- "data-[side=right]:origin-left",
84
- "data-[side=top]:origin-bottom",
85
- "data-[side=bottom]:animate-[dropdownSlideInFromTop_200ms_ease-out]",
86
- "data-[side=left]:animate-[dropdownSlideInFromRight_200ms_ease-out]",
87
- "data-[side=right]:animate-[dropdownSlideInFromLeft_200ms_ease-out]",
88
- "data-[side=top]:animate-[dropdownSlideInFromBottom_200ms_ease-out]"
76
+ "origin-(--radix-dropdown-menu-content-transform-origin)",
77
+ "data-[state=open]:data-[side=bottom]:animate-dropdown-slide-in-from-top",
78
+ "data-[state=open]:data-[side=left]:animate-dropdown-slide-in-from-right",
79
+ "data-[state=open]:data-[side=right]:animate-dropdown-slide-in-from-left",
80
+ "data-[state=open]:data-[side=top]:animate-dropdown-slide-in-from-bottom",
81
+ "data-[state=closed]:animate-dropdown-slide-out",
82
+ "motion-reduce:animate-none!"
89
83
  ] }), _ = ({ className: e, sideOffset: t = 2, alignOffset: n = -5, ...i }) => /* @__PURE__ */ r(a.SubContent, {
90
84
  "data-slot": "dropdown-menu-sub-content",
91
85
  sideOffset: t,
@@ -20,10 +20,10 @@ var s = i.Portal, c = t({ base: [
20
20
  "will-change-[transform,opacity]",
21
21
  "data-[side=bottom]:origin-top data-[side=left]:origin-right",
22
22
  "data-[side=right]:origin-left data-[side=top]:origin-bottom",
23
- "transition-[opacity,transform] duration-200 ease-out",
23
+ "transition-[opacity,transform] duration-200 ease-out-quint",
24
24
  "starting:opacity-0 starting:[transform:scale(0.9)]",
25
25
  "data-[state=closed]:opacity-0 data-[state=closed]:[transform:scale(0.9)]",
26
- "data-[state=closed]:duration-150 data-[state=closed]:ease-in",
26
+ "data-[state=closed]:duration-150",
27
27
  "data-[state=closed]:animate-presence-hold",
28
28
  "motion-reduce:transition-none motion-reduce:animate-none!"
29
29
  ] }), l = ({ className: e, sideOffset: t = 8, collisionPadding: r = 8, ...a }) => /* @__PURE__ */ n(i.Content, {
@@ -7,7 +7,7 @@ import * as i from "@radix-ui/react-progress";
7
7
  var a = e({ slots: {
8
8
  root: "flex flex-col gap-2",
9
9
  track: "relative h-2 w-full overflow-hidden rounded-sm bg-neutrals-200 text-neutrals-900",
10
- indicator: "size-full bg-current transition-transform duration-600 ease-in-out motion-reduce:transition-none",
10
+ indicator: "size-full bg-current transition-transform duration-300 ease-in-out motion-reduce:transition-none",
11
11
  labelRow: "flex items-center justify-between gap-2",
12
12
  label: "text-sm text-text-default-base-primary",
13
13
  value: "text-base text-text-default-base-primary"
@@ -15,7 +15,7 @@ var o = t({
15
15
  "focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring-button-primary",
16
16
  "disabled:cursor-not-allowed disabled:bg-slate-100"
17
17
  ],
18
- thumb: "block translate-x-0 rounded-full bg-bg-default-base-primary shadow-sm transition-transform",
18
+ thumb: "block translate-x-0 rounded-full bg-bg-default-base-primary shadow-sm transition-transform motion-reduce:transition-none",
19
19
  label: ["cursor-pointer text-sm text-text-default-base-primary select-none", "peer-disabled:cursor-not-allowed peer-disabled:opacity-50"]
20
20
  },
21
21
  variants: {
@@ -140,7 +140,7 @@ var x = r({
140
140
  });
141
141
  };
142
142
  S.displayName = "Table.Cell";
143
- var C = r({ base: "relative z-[1] [&>svg]:shrink-0 [&>svg]:transition-transform [&>svg]:duration-200 data-[state=open]:[&>svg]:rotate-180" }), w = ({ toggleExpanded: r, isExpanded: i, className: a, ...s }) => /* @__PURE__ */ o(t, {
143
+ var C = r({ base: "relative z-[1] [&>svg]:shrink-0 [&>svg]:transition-transform [&>svg]:duration-200 data-[state=open]:[&>svg]:rotate-180 motion-reduce:[&>svg]:transition-none" }), w = ({ toggleExpanded: r, isExpanded: i, className: a, ...s }) => /* @__PURE__ */ o(t, {
144
144
  variant: "ghost",
145
145
  onClick: r,
146
146
  className: e(C(), a),
package/src/tabs/tabs.js CHANGED
@@ -24,8 +24,8 @@ var o = t({
24
24
  list: "w-full gap-6 border-b border-border-default-base-primary bg-bg-default-base-primary px-4",
25
25
  trigger: [
26
26
  "grid h-10 content-center text-text-default-base-tertiary",
27
- "before:absolute before:inset-x-0 before:bottom-0 before:h-0.5 before:origin-bottom before:scale-y-0 before:bg-text-button-secondary-enable before:transition-transform before:duration-200 before:will-change-transform before:content-['']",
28
- "data-[state=active]:before:scale-y-100"
27
+ "before:absolute before:inset-x-0 before:bottom-0 before:h-0.5 before:bg-text-button-secondary-enable before:opacity-0 before:transition-opacity before:duration-150 before:content-['']",
28
+ "data-[state=active]:before:opacity-100"
29
29
  ]
30
30
  },
31
31
  enclosed: {
@@ -8,10 +8,10 @@ var i = e({ base: [
8
8
  "rounded-sm border border-border-default-base-primary bg-bg-default-base-primary shadow-sm",
9
9
  "text-xs text-pretty text-text-default-base-secondary select-none",
10
10
  "will-change-[transform,opacity]",
11
- "data-[side=bottom]:animate-tooltip-slide-in-from-top",
12
- "data-[side=top]:animate-tooltip-slide-in-from-bottom",
13
- "data-[side=left]:animate-tooltip-slide-in-from-right",
14
- "data-[side=right]:animate-tooltip-slide-in-from-left",
11
+ "data-[state=delayed-open]:data-[side=bottom]:animate-tooltip-slide-in-from-top",
12
+ "data-[state=delayed-open]:data-[side=top]:animate-tooltip-slide-in-from-bottom",
13
+ "data-[state=delayed-open]:data-[side=left]:animate-tooltip-slide-in-from-right",
14
+ "data-[state=delayed-open]:data-[side=right]:animate-tooltip-slide-in-from-left",
15
15
  "motion-reduce:animate-none!"
16
16
  ] }), a = ({ children: e, content: a, side: o = "top", align: s, sideOffset: c = 4, asChild: l = !1, hideWhenDetached: u, delayDuration: d = 0, open: f, defaultOpen: p, onOpenChange: m, className: h }) => /* @__PURE__ */ t(r.Provider, {
17
17
  delayDuration: d,
package/theme/base.css CHANGED
@@ -782,6 +782,10 @@
782
782
 
783
783
  --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
784
784
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
785
+ /* Strong ease-out for surfaces entering and leaving. The built-in ease-out is
786
+ * too flat to read at 150–200ms, and ease-in holds back the first frames of
787
+ * an exit, which is the part people watch. */
788
+ --ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
785
789
  --ease-in: cubic-bezier(0.4, 0, 1, 1);
786
790
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
787
791
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
@@ -790,29 +794,31 @@
790
794
  * ANIMATIONS
791
795
  * ======================================== */
792
796
 
793
- --animate-cmd-overlay-in: cmd-overlay-in 200ms cubic-bezier(0.23, 1, 0.32, 1);
794
- --animate-cmd-overlay-out: cmd-overlay-out 150ms ease-in forwards;
795
- --animate-cmd-content-in: cmd-content-in 200ms cubic-bezier(0.23, 1, 0.32, 1);
796
- --animate-cmd-content-out: cmd-content-out 150ms ease-in forwards;
797
+ --animate-cmd-overlay-in: cmd-overlay-in 200ms var(--ease-out-quint);
798
+ --animate-cmd-overlay-out: cmd-overlay-out 150ms var(--ease-out-quint) forwards;
799
+ --animate-cmd-content-in: cmd-content-in 200ms var(--ease-out-quint);
800
+ --animate-cmd-content-out: cmd-content-out 150ms var(--ease-out-quint) forwards;
797
801
  --animate-fade-in: fadeIn 0.3s forwards;
798
- --animate-dropdown-slide-in: dropdownSlideIn 200ms ease-out;
799
- --animate-dropdown-slide-out: dropdownSlideOut 150ms ease-in;
802
+ --animate-dropdown-slide-in: dropdownSlideIn 200ms var(--ease-out-quint);
803
+ --animate-dropdown-slide-out: dropdownSlideOut 150ms var(--ease-out-quint);
800
804
  /* Radix Presence unmounts as soon as a node's CSS animation ends, so a node
801
805
  * whose exit is driven by a transition needs a placeholder animation to hold
802
806
  * it mounted. Keep the duration in sync with any exit transition using it. */
803
807
  --animate-presence-hold: presenceHold 150ms linear;
804
- --animate-dropdown-slide-in-from-top: dropdownSlideInFromTop 200ms ease-out;
805
- --animate-dropdown-slide-in-from-bottom: dropdownSlideInFromBottom 200ms ease-out;
806
- --animate-dropdown-slide-in-from-left: dropdownSlideInFromLeft 200ms ease-out;
807
- --animate-dropdown-slide-in-from-right: dropdownSlideInFromRight 200ms ease-out;
808
- --animate-modal-overlay-in: modalOverlayIn 200ms ease-out;
809
- --animate-modal-overlay-out: modalOverlayOut 150ms ease-in forwards;
810
- --animate-modal-content-in: modalContentIn 200ms ease-out;
811
- --animate-modal-content-out: modalContentOut 150ms ease-in forwards;
812
- --animate-tooltip-slide-in-from-top: tooltipSlideInFromTop 200ms ease-out;
813
- --animate-tooltip-slide-in-from-bottom: tooltipSlideInFromBottom 200ms ease-out;
814
- --animate-tooltip-slide-in-from-left: tooltipSlideInFromLeft 200ms ease-out;
815
- --animate-tooltip-slide-in-from-right: tooltipSlideInFromRight 200ms ease-out;
808
+ --animate-dropdown-slide-in-from-top: dropdownSlideInFromTop 200ms var(--ease-out-quint);
809
+ --animate-dropdown-slide-in-from-bottom: dropdownSlideInFromBottom 200ms var(--ease-out-quint);
810
+ --animate-dropdown-slide-in-from-left: dropdownSlideInFromLeft 200ms var(--ease-out-quint);
811
+ --animate-dropdown-slide-in-from-right: dropdownSlideInFromRight 200ms var(--ease-out-quint);
812
+ --animate-modal-overlay-in: modalOverlayIn 200ms var(--ease-out-quint);
813
+ --animate-modal-overlay-out: modalOverlayOut 150ms var(--ease-out-quint) forwards;
814
+ --animate-modal-content-in: modalContentIn 200ms var(--ease-out-quint);
815
+ --animate-modal-content-out: modalContentOut 150ms var(--ease-out-quint) forwards;
816
+ --animate-tooltip-slide-in-from-top: tooltipSlideInFromTop 150ms var(--ease-out-quint);
817
+ --animate-tooltip-slide-in-from-bottom: tooltipSlideInFromBottom 150ms var(--ease-out-quint);
818
+ --animate-tooltip-slide-in-from-left: tooltipSlideInFromLeft 150ms var(--ease-out-quint);
819
+ --animate-tooltip-slide-in-from-right: tooltipSlideInFromRight 150ms var(--ease-out-quint);
820
+ --animate-accordion-down: accordionDown 200ms var(--ease-out-quint);
821
+ --animate-accordion-up: accordionUp 200ms var(--ease-out-quint);
816
822
 
817
823
  /* ========================================
818
824
  * Z-INDEX