@ctrl-ui/react 0.8.11 → 0.8.12

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.
Files changed (75) hide show
  1. package/dist/action-bar.js +2 -2
  2. package/dist/activity.js +1 -1
  3. package/dist/blocks/design-canvas-inspector.js +2 -2
  4. package/dist/blocks/design-canvas.js +2 -2
  5. package/dist/blocks/discussion.js +1 -1
  6. package/dist/blocks/file-explorer.js +2 -2
  7. package/dist/blocks/settings.js +3 -3
  8. package/dist/chat-composer-editor/extensions/mention.js +1 -1
  9. package/dist/chat-composer.js +1 -1
  10. package/dist/chat-layout.js +1 -1
  11. package/dist/context.js +1 -1
  12. package/dist/dynamic-notification.js +1 -1
  13. package/dist/email/theme.js +1 -1
  14. package/dist/filter-bar/parts.js +1 -1
  15. package/dist/filter-bar.js +1 -1
  16. package/dist/inline-citation.js +1 -1
  17. package/dist/knob-contracts/tabs-knobs.d.ts +1 -1
  18. package/dist/knob-contracts/tabs-knobs.js +2 -0
  19. package/dist/lib/phone-input-format.js +1 -1
  20. package/dist/styles/index.css +1 -0
  21. package/dist/styles/recipes/badge.css +1 -0
  22. package/dist/styles/recipes/button.css +20 -4
  23. package/dist/styles/recipes/code.css +0 -15
  24. package/dist/styles/recipes/field.css +15 -2
  25. package/dist/styles/recipes/scroll-area.css +5 -5
  26. package/dist/styles/recipes/tabs-motion.css +99 -0
  27. package/dist/styles/recipes/tabs.css +32 -108
  28. package/dist/ui/alert-dialog.js +1 -1
  29. package/dist/ui/alert.js +1 -1
  30. package/dist/ui/autocomplete.js +1 -1
  31. package/dist/ui/breadcrumb.js +1 -1
  32. package/dist/ui/button.d.ts +6 -3
  33. package/dist/ui/button.js +10 -6
  34. package/dist/ui/card.js +1 -1
  35. package/dist/ui/code-diff.js +1 -1
  36. package/dist/ui/code.js +2 -2
  37. package/dist/ui/collapsible.js +1 -1
  38. package/dist/ui/color-picker.js +1 -1
  39. package/dist/ui/combobox.js +1 -1
  40. package/dist/ui/context-menu.js +1 -1
  41. package/dist/ui/dialog.js +1 -1
  42. package/dist/ui/drawer.js +1 -1
  43. package/dist/ui/dropdown-menu.js +1 -1
  44. package/dist/ui/emoji-icon-picker.js +1 -1
  45. package/dist/ui/emoji-picker.js +1 -1
  46. package/dist/ui/empty.js +1 -1
  47. package/dist/ui/hover-card.js +1 -1
  48. package/dist/ui/icon-picker.js +1 -1
  49. package/dist/ui/input-group.js +1 -1
  50. package/dist/ui/item.js +1 -1
  51. package/dist/ui/menubar.js +1 -1
  52. package/dist/ui/morphing-panel.js +1 -1
  53. package/dist/ui/navigation-menu.js +1 -1
  54. package/dist/ui/phone-input.js +2 -2
  55. package/dist/ui/popover.js +1 -1
  56. package/dist/ui/rich-tooltip.js +1 -1
  57. package/dist/ui/select.js +1 -1
  58. package/dist/ui/sheet.js +1 -1
  59. package/dist/ui/sidebar-menu.js +1 -1
  60. package/dist/ui/sidebar-provider.js +2 -2
  61. package/dist/ui/sidebar-resize-rail.js +1 -1
  62. package/dist/ui/sidebar.js +1 -1
  63. package/dist/ui/tabs.d.ts +4 -0
  64. package/dist/ui/tabs.js +11 -1
  65. package/dist/ui/timeline.js +1 -1
  66. package/dist/ui/toast.js +1 -1
  67. package/dist/ui/toggle.d.ts +1 -1
  68. package/dist/ui/toggle.js +2 -1
  69. package/dist/ui/toolbar.d.ts +1 -1
  70. package/dist/ui/toolbar.js +1 -1
  71. package/dist/ui/tooltip.js +1 -1
  72. package/dist/ui/tree.js +1 -1
  73. package/dist/ui/trigger-menu.js +1 -1
  74. package/dist/user-ask.js +2 -2
  75. package/package.json +1 -1
@@ -1,6 +1,8 @@
1
1
  @layer components {
2
2
  :where([data-control-family="tabs"][data-slot="root"]) {
3
3
  position: relative;
4
+ display: flex;
5
+ flex-direction: column;
4
6
  --cui-tabs-trigger-radius: var(--radius-control);
5
7
  --cui-tabs-list-padding: calc(var(--spacing) * 1);
6
8
  --cui-tabs-list-radius: calc(
@@ -11,6 +13,8 @@
11
13
  --cui-tabs-list-shadow: inset 0 0 0 var(--control-rim-width) var(--control-rim), var(--shadow-inset);
12
14
  --cui-tabs-list-backdrop-filter: none;
13
15
  --cui-tabs-indicator-background: var(--background);
16
+ --cui-tabs-surface-background: var(--background);
17
+ --cui-tabs-surface-radius: var(--radius-panel);
14
18
  --cui-tabs-foreground: var(--muted-foreground);
15
19
  --cui-tabs-active-foreground: var(--foreground);
16
20
  --cui-tabs-hover-foreground: var(--foreground);
@@ -20,7 +24,7 @@
20
24
  }
21
25
 
22
26
  :where([data-control-family="tabs"][data-slot="root"][data-orientation="vertical"]) {
23
- display: flex;
27
+ flex-direction: row;
24
28
  gap: calc(var(--spacing) * 4);
25
29
  }
26
30
 
@@ -106,15 +110,14 @@
106
110
 
107
111
  :where([data-control-family="tabs"][data-slot="list"][data-variant="browser"]) {
108
112
  --_tabs-browser-corner-double: calc(var(--_tabs-trigger-radius-fit) + var(--_tabs-trigger-radius-fit));
109
- --_tabs-browser-inset: calc(var(--_tabs-trigger-radius-fit) + var(--radius-panel));
113
+ --_tabs-browser-inset: calc(var(--_tabs-trigger-radius-fit) + var(--cui-tabs-surface-radius));
110
114
  min-height: calc(var(--_tabs-trigger-h) + var(--cui-tabs-list-padding));
111
115
  width: auto;
112
116
  align-items: flex-end;
113
117
  isolation: isolate;
114
118
  z-index: 1;
115
119
  --cui-tabs-list-background: transparent;
116
- --cui-tabs-list-shadow: inset 0 -1px 0 var(--cui-tabs-border-color);
117
- --cui-tabs-indicator-background: var(--background);
120
+ --cui-tabs-list-shadow: inset 0 calc(-1 * var(--cui-tabs-border-width)) 0 var(--cui-tabs-border-color);
118
121
  --cui-tabs-active-foreground: var(--foreground);
119
122
  border-radius: var(--cui-tabs-list-radius) var(--cui-tabs-list-radius) 0 0;
120
123
  }
@@ -133,7 +136,7 @@
133
136
  border: var(--cui-tabs-border-width) solid var(--cui-tabs-border-color);
134
137
  border-bottom: none;
135
138
  border-radius: var(--_tabs-trigger-radius-fit) var(--_tabs-trigger-radius-fit) 0 0;
136
- background: var(--cui-tabs-indicator-background);
139
+ background: var(--cui-tabs-surface-background);
137
140
  }
138
141
 
139
142
  :where([data-control-family="tabs"][data-slot="list"][data-variant="browser"] [data-slot="indicator"])::after {
@@ -146,17 +149,17 @@
146
149
  circle at 0 -1px,
147
150
  transparent calc(var(--_tabs-trigger-radius-fit) - 0.5px),
148
151
  var(--cui-tabs-border-color) var(--_tabs-trigger-radius-fit) calc(var(--_tabs-trigger-radius-fit) + 0.5px),
149
- var(--cui-tabs-indicator-background) calc(var(--_tabs-trigger-radius-fit) + 1px)
152
+ var(--cui-tabs-surface-background) calc(var(--_tabs-trigger-radius-fit) + 1px)
150
153
  )
151
154
  left / calc(var(--_tabs-trigger-radius-fit) + 1px) 100% no-repeat,
152
155
  radial-gradient(
153
156
  circle at 100% -1px,
154
157
  transparent calc(var(--_tabs-trigger-radius-fit) - 0.5px),
155
158
  var(--cui-tabs-border-color) var(--_tabs-trigger-radius-fit) calc(var(--_tabs-trigger-radius-fit) + 0.5px),
156
- var(--cui-tabs-indicator-background) calc(var(--_tabs-trigger-radius-fit) + 1px)
159
+ var(--cui-tabs-surface-background) calc(var(--_tabs-trigger-radius-fit) + 1px)
157
160
  )
158
161
  right / calc(var(--_tabs-trigger-radius-fit) + 1px) 100% no-repeat,
159
- linear-gradient(var(--cui-tabs-indicator-background) 0 0) center / calc(100% - var(--_tabs-browser-corner-double)) 100% no-repeat;
162
+ linear-gradient(var(--cui-tabs-surface-background) 0 0) center / calc(100% - var(--_tabs-browser-corner-double)) 100% no-repeat;
160
163
  }
161
164
 
162
165
  :where([data-control-family="tabs"][data-slot="list"][data-single="true"]) {
@@ -179,104 +182,6 @@
179
182
  outline-style: none;
180
183
  }
181
184
 
182
- @supports ((anchor-name: --aui-slide-panel) and (anchor-scope: --aui-slide-panel)) {
183
- :where([data-control-family="tabs"][data-slot="panel"][data-slide="panel"][inert][data-slide-exiting][data-ending-style]) {
184
- display: block;
185
- position: absolute;
186
- top: var(--_tabs-panel-top);
187
- left: var(--_tabs-panel-left);
188
- right: auto;
189
- bottom: auto;
190
- width: var(--_tabs-panel-width);
191
- height: var(--_tabs-panel-height);
192
- margin: 0;
193
- overflow: clip;
194
- animation: aui-slide-exit-hold var(--duration-slow) var(--ease-emphasized) both;
195
- }
196
-
197
- @supports (height: anchor-size(height)) {
198
- :where([data-control-family="tabs"][data-slot="panel"][data-slide="panel"][inert][data-slide-exiting][data-ending-style]) {
199
- height: anchor-size(height);
200
- }
201
- }
202
-
203
- :where(
204
- [data-control-family="tabs"][data-slot="panel"][data-slide="panel"][inert][data-ending-style][data-activation-direction="right"]
205
- ) {
206
- translate: -100% 0;
207
- }
208
-
209
- :where(
210
- [data-control-family="tabs"][data-slot="panel"][data-slide="panel"][inert][data-ending-style][data-activation-direction="left"]
211
- ) {
212
- translate: 100% 0;
213
- }
214
-
215
- :where(
216
- [data-control-family="tabs"][data-slot="panel"][data-slide="panel"][inert][data-ending-style][data-activation-direction="down"]
217
- ) {
218
- translate: 0 -100%;
219
- }
220
-
221
- :where([data-control-family="tabs"][data-slot="panel"][data-slide="panel"][inert][data-ending-style][data-activation-direction="up"]) {
222
- translate: 0 100%;
223
- }
224
-
225
- :where(
226
- [data-control-family="tabs"][data-slot="root"]:has(> [data-slot="panel"][data-starting-style])
227
- > [data-slot="panel"][inert][data-ending-style]
228
- ) {
229
- translate: 0 0;
230
- transition: none;
231
- }
232
-
233
- :where([data-control-family="tabs"][data-slot="panel"][data-slide="panel"][data-starting-style]) {
234
- transition: none;
235
- }
236
-
237
- :where([data-control-family="tabs"][data-slot="root"][data-slide-starting] > [data-slot="panel"][data-slide="panel"]) {
238
- transition: none;
239
- }
240
-
241
- :where([data-control-family="tabs"][data-slot="root"][data-slide-starting] > [data-slot="panel"][inert]) {
242
- translate: 0 0;
243
- }
244
-
245
- :where(
246
- [data-control-family="tabs"][data-slot="root"][data-slide-starting]
247
- > [data-slot="panel"]:not([inert])[data-activation-direction="right"]
248
- ) {
249
- translate: 100% 0;
250
- }
251
-
252
- :where(
253
- [data-control-family="tabs"][data-slot="root"][data-slide-starting]
254
- > [data-slot="panel"]:not([inert])[data-activation-direction="left"]
255
- ) {
256
- translate: -100% 0;
257
- }
258
-
259
- :where(
260
- [data-control-family="tabs"][data-slot="root"][data-slide-starting]
261
- > [data-slot="panel"]:not([inert])[data-activation-direction="down"]
262
- ) {
263
- translate: 0 100%;
264
- }
265
-
266
- :where(
267
- [data-control-family="tabs"][data-slot="root"][data-slide-starting]
268
- > [data-slot="panel"]:not([inert])[data-activation-direction="up"]
269
- ) {
270
- translate: 0 -100%;
271
- }
272
-
273
- @supports (height: calc-size(auto, size)) {
274
- :where([data-control-family="tabs"][data-slot="root"][data-slide-starting] > [data-slot="panel"][data-slide="panel"]:not([inert])) {
275
- height: var(--aui-slide-prev-height, calc-size(auto, size));
276
- }
277
- }
278
- }
279
-
280
185
  :where([data-control-family="tabs"][data-slot="root"][data-orientation="vertical"] > [data-slot="panel"]) {
281
186
  min-width: 0;
282
187
  flex: 1;
@@ -291,11 +196,18 @@
291
196
  :where([data-control-family="tabs"][data-slot="list"][data-variant="browser"] ~ [data-slot="panel"]) {
292
197
  border: var(--cui-tabs-border-width) solid var(--cui-tabs-border-color);
293
198
  border-top: none;
294
- border-radius: 0 0 var(--radius-panel) var(--radius-panel);
295
- background: var(--cui-tabs-indicator-background);
199
+ border-radius: 0 0 var(--cui-tabs-surface-radius) var(--cui-tabs-surface-radius);
200
+ background: var(--cui-tabs-surface-background);
296
201
  padding: calc(var(--spacing) * 4);
297
202
  }
298
203
 
204
+ :where([data-control-family="tabs"][data-slot="surface"]) {
205
+ min-width: 0;
206
+ border: var(--cui-tabs-border-width) solid var(--cui-tabs-border-color);
207
+ border-radius: var(--cui-tabs-surface-radius);
208
+ background: var(--cui-tabs-surface-background);
209
+ }
210
+
299
211
  :where([data-control-family="tabs"][data-slot="list"][data-variant="browser"] [data-control-family="tabs"][data-slot="tab"]) {
300
212
  border-top-left-radius: var(--_tabs-trigger-radius-fit);
301
213
  border-top-right-radius: var(--_tabs-trigger-radius-fit);
@@ -320,6 +232,18 @@
320
232
  }
321
233
  }
322
234
 
235
+ @property --cui-tabs-surface-background {
236
+ syntax: "<color>";
237
+ inherits: true;
238
+ initial-value: transparent;
239
+ }
240
+
241
+ @property --cui-tabs-surface-radius {
242
+ syntax: "<length>";
243
+ inherits: true;
244
+ initial-value: 0px;
245
+ }
246
+
323
247
  @property --cui-tabs-trigger-radius {
324
248
  syntax: "<length-percentage>";
325
249
  inherits: true;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { Button } from "./button.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
package/dist/ui/alert.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
- import { jsx } from "react/jsx-runtime";
4
3
  import { useRender } from "@base-ui/react/use-render";
4
+ import { jsx } from "react/jsx-runtime";
5
5
  //#region src/ui/alert.tsx
6
6
  const alertVariants = ["default", "destructive"];
7
7
  function Alert({ variant = "default", className, ...props }) {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { ScrollArea } from "./scroll-area.js";
6
6
  import { popupItemStructureClasses } from "../surface-variants.js";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
+ import { useRender } from "@base-ui/react/use-render";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { ChevronRight, MoreHorizontal } from "lucide-react";
5
- import { useRender } from "@base-ui/react/use-render";
6
6
  //#region src/ui/breadcrumb.tsx
7
7
  function Breadcrumb({ className, ...props }) {
8
8
  return /* @__PURE__ */ jsx("nav", {
@@ -9,6 +9,8 @@ export type ButtonTone = ControlTone;
9
9
  export declare const ButtonTrackContext: import("react").Context<boolean>;
10
10
  export declare const buttonShapes: readonly ["default", "circle"];
11
11
  export type ButtonShape = (typeof buttonShapes)[number];
12
+ export declare const buttonLayouts: readonly ["inline", "stacked"];
13
+ export type ButtonLayout = (typeof buttonLayouts)[number];
12
14
  export type ButtonAppearanceProps = {
13
15
  variant?: ButtonVariant;
14
16
  size?: ButtonSize;
@@ -16,6 +18,7 @@ export type ButtonAppearanceProps = {
16
18
  active?: boolean;
17
19
  iconOnly?: boolean;
18
20
  shape?: ButtonShape;
21
+ layout?: ButtonLayout;
19
22
  style?: CSSProperties & ButtonKnobStyle;
20
23
  };
21
24
  export type ButtonProps = ComponentProps<"button"> & ButtonAppearanceProps & {
@@ -32,7 +35,7 @@ export type ButtonLabelProps = ComponentProps<"label"> & ButtonAppearanceProps;
32
35
  export declare const buttonStructureClasses = "isolate inline-flex shrink-0 items-center justify-center overflow-visible whitespace-nowrap";
33
36
  export declare const buttonTrackStructureClasses = "data-[track=hover]:relative data-[track=hover]:isolate [&_[data-track-item]]:[isolation:auto]";
34
37
  export declare const buttonContentClasses = "relative z-[1] inline-flex min-w-0 items-center justify-center gap-[inherit]";
35
- export declare function Button({ variant, size, tone, active, iconOnly, shape, type, disabled, render, nativeButton, className, children, ...props }: ButtonProps): import("react").JSX.Element;
36
- export declare function ButtonLink({ variant, size, tone, active, iconOnly, shape, render, className, children, ...props }: ButtonLinkProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
37
- export declare function ButtonLabel({ variant, size, tone, active, iconOnly, shape, className, children, ...props }: ButtonLabelProps): import("react").JSX.Element;
38
+ export declare function Button({ variant, size, tone, active, iconOnly, shape, layout, type, disabled, render, nativeButton, className, children, ...props }: ButtonProps): import("react").JSX.Element;
39
+ export declare function ButtonLink({ variant, size, tone, active, iconOnly, shape, layout, render, className, children, ...props }: ButtonLinkProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
40
+ export declare function ButtonLabel({ variant, size, tone, active, iconOnly, shape, layout, className, children, ...props }: ButtonLabelProps): import("react").JSX.Element;
38
41
  //#endregion
package/dist/ui/button.js CHANGED
@@ -1,14 +1,15 @@
1
1
  "use client";
2
- import { skinAdornment } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { skinAdornment } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { Children, Fragment, createContext, isValidElement, useContext } from "react";
6
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
6
  import { Button as Button$1 } from "@base-ui/react/button";
8
7
  import { useRender } from "@base-ui/react/use-render";
8
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/ui/button.tsx
10
10
  const ButtonTrackContext = createContext(false);
11
11
  const buttonShapes = ["default", "circle"];
12
+ const buttonLayouts = ["inline", "stacked"];
12
13
  const buttonStructureClasses = "isolate inline-flex shrink-0 items-center justify-center overflow-visible whitespace-nowrap";
13
14
  const buttonTrackStructureClasses = "data-[track=hover]:relative data-[track=hover]:isolate [&_[data-track-item]]:[isolation:auto]";
14
15
  const buttonContentClasses = "relative z-[1] inline-flex min-w-0 items-center justify-center gap-[inherit]";
@@ -36,7 +37,7 @@ function ButtonBody({ layer, wrap = true, children }) {
36
37
  const content = wrapButtonText(children);
37
38
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [layer, wrapsContent ? /* @__PURE__ */ jsx(ButtonContent, { children: content }) : content] });
38
39
  }
39
- function Button({ variant = "quiet", size = "sm", tone = "neutral", active = false, iconOnly = false, shape = "default", type = "button", disabled, render, nativeButton, className, children, ...props }) {
40
+ function Button({ variant = "quiet", size = "sm", tone = "neutral", active = false, iconOnly = false, shape = "default", layout = "inline", type = "button", disabled, render, nativeButton, className, children, ...props }) {
40
41
  const skin = useSkin();
41
42
  const layer = skinAdornment(skin, "button", "layer", {
42
43
  variant,
@@ -54,6 +55,7 @@ function Button({ variant = "quiet", size = "sm", tone = "neutral", active = fal
54
55
  "data-active": active ? "true" : void 0,
55
56
  "data-icon-only": iconOnly ? "true" : void 0,
56
57
  "data-shape": shape,
58
+ "data-layout": layout,
57
59
  "data-variant": variant,
58
60
  "data-tone": tone,
59
61
  "data-size": size,
@@ -68,7 +70,7 @@ function Button({ variant = "quiet", size = "sm", tone = "neutral", active = fal
68
70
  })
69
71
  });
70
72
  }
71
- function ButtonLink({ variant = "quiet", size = "sm", tone = "neutral", active = false, iconOnly = false, shape = "default", render, className, children, ...props }) {
73
+ function ButtonLink({ variant = "quiet", size = "sm", tone = "neutral", active = false, iconOnly = false, shape = "default", layout = "inline", render, className, children, ...props }) {
72
74
  const skin = useSkin();
73
75
  const tracksHover = useContext(ButtonTrackContext);
74
76
  return useRender({
@@ -84,6 +86,7 @@ function ButtonLink({ variant = "quiet", size = "sm", tone = "neutral", active =
84
86
  "data-active": active ? "true" : void 0,
85
87
  "data-icon-only": iconOnly ? "true" : void 0,
86
88
  "data-shape": shape,
89
+ "data-layout": layout,
87
90
  "data-variant": variant,
88
91
  "data-tone": tone,
89
92
  "data-size": size,
@@ -98,7 +101,7 @@ function ButtonLink({ variant = "quiet", size = "sm", tone = "neutral", active =
98
101
  }
99
102
  });
100
103
  }
101
- function ButtonLabel({ variant = "quiet", size = "sm", tone = "neutral", active = false, iconOnly = false, shape = "default", className, children, ...props }) {
104
+ function ButtonLabel({ variant = "quiet", size = "sm", tone = "neutral", active = false, iconOnly = false, shape = "default", layout = "inline", className, children, ...props }) {
102
105
  const skin = useSkin();
103
106
  const tracksHover = useContext(ButtonTrackContext);
104
107
  return /* @__PURE__ */ jsx("label", {
@@ -111,6 +114,7 @@ function ButtonLabel({ variant = "quiet", size = "sm", tone = "neutral", active
111
114
  "data-active": active ? "true" : void 0,
112
115
  "data-icon-only": iconOnly ? "true" : void 0,
113
116
  "data-shape": shape,
117
+ "data-layout": layout,
114
118
  "data-variant": variant,
115
119
  "data-tone": tone,
116
120
  "data-size": size,
@@ -125,4 +129,4 @@ function ButtonLabel({ variant = "quiet", size = "sm", tone = "neutral", active
125
129
  });
126
130
  }
127
131
  //#endregion
128
- export { Button, ButtonLabel, ButtonLink, ButtonTrackContext, buttonContentClasses, buttonShapes, buttonStructureClasses, buttonTrackStructureClasses };
132
+ export { Button, ButtonLabel, ButtonLink, ButtonTrackContext, buttonContentClasses, buttonLayouts, buttonShapes, buttonStructureClasses, buttonTrackStructureClasses };
package/dist/ui/card.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
- import { jsx } from "react/jsx-runtime";
4
3
  import { useRender } from "@base-ui/react/use-render";
4
+ import { jsx } from "react/jsx-runtime";
5
5
  //#region src/ui/card.tsx
6
6
  function Card({ variant = "default", className, ...props }) {
7
7
  return /* @__PURE__ */ jsx("div", {
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
- import { highlightToTokens, mergeCodeTokenLineWithEmphasis } from "../lib/code-tokens.js";
4
3
  import { ScrollArea } from "./scroll-area.js";
4
+ import { highlightToTokens, mergeCodeTokenLineWithEmphasis } from "../lib/code-tokens.js";
5
5
  import { CodeCopy, CodeFloatingCopy, CodeTokenLine } from "./code.js";
6
6
  import { buildDiffFromFiles, buildDiffFromPatch, diffRunEnd } from "../lib/diff.js";
7
7
  import { useEffect, useMemo, useRef, useState } from "react";
package/dist/ui/code.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use client";
2
+ import { useCopyToClipboard } from "../hooks/use-copy-to-clipboard.js";
2
3
  import { cn } from "../lib/cn.js";
3
4
  import { Button } from "./button.js";
4
5
  import { LiveStatus } from "./live-status.js";
5
- import { useCopyToClipboard } from "../hooks/use-copy-to-clipboard.js";
6
- import { highlightToTokens } from "../lib/code-tokens.js";
7
6
  import { ScrollArea } from "./scroll-area.js";
7
+ import { highlightToTokens } from "../lib/code-tokens.js";
8
8
  import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
9
9
  import { Children, createContext, isValidElement, useContext, useEffect, useMemo, useRef, useState } from "react";
10
10
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
- import { jsx } from "react/jsx-runtime";
4
3
  import { useRender } from "@base-ui/react/use-render";
4
+ import { jsx } from "react/jsx-runtime";
5
5
  import { Collapsible as Collapsible$1 } from "@base-ui/react/collapsible";
6
6
  //#region src/ui/collapsible.tsx
7
7
  function CollapsibleTriggerElement({ triggerProps, open, render, className, children }) {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { Button } from "./button.js";
6
6
  import { Input } from "./input.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { ScrollArea } from "./scroll-area.js";
6
6
  import { popupItemStructureClasses } from "../surface-variants.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { popupItemStructureClasses } from "../surface-variants.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
package/dist/ui/dialog.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute, skinAdornment } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute, skinAdornment } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { Button } from "./button.js";
6
6
  import { PopupCloseButton } from "../popup-parts.js";
package/dist/ui/drawer.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { createContext, useContext } from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { popupItemStructureClasses } from "../surface-variants.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { PopoverViewport } from "./popover.js";
3
- import { Tabs, TabsList, TabsPanel, TabsTab } from "./tabs.js";
4
3
  import { EmojiPicker } from "./emoji-picker.js";
5
4
  import { IconPicker } from "./icon-picker.js";
5
+ import { Tabs, TabsList, TabsPanel, TabsTab } from "./tabs.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/ui/emoji-icon-picker.tsx
8
8
  function EmojiIconPicker({ children, defaultValue = "emoji", ...props }) {
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { Spinner } from "./spinner.js";
4
+ import { Toolbar } from "@base-ui/react/toolbar";
4
5
  import { createContext, useContext, useImperativeHandle, useRef, useState } from "react";
5
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
7
  import { FlagIcon, HandIcon, HashIcon, HeartIcon, LeafIcon, LightbulbIcon, PizzaIcon, PlaneIcon, SearchIcon, SmileIcon, VolleyballIcon } from "lucide-react";
7
- import { Toolbar } from "@base-ui/react/toolbar";
8
8
  import { EmojiPicker as EmojiPicker$1, defaultEmojiDataResolver } from "frimousse";
9
9
  //#region src/ui/emoji-picker.tsx
10
10
  const EmojiPickerContext = createContext(null);
package/dist/ui/empty.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
- import { jsx } from "react/jsx-runtime";
4
3
  import { useRender } from "@base-ui/react/use-render";
4
+ import { jsx } from "react/jsx-runtime";
5
5
  //#region src/ui/empty.tsx
6
6
  function Empty({ className, ...props }) {
7
7
  return /* @__PURE__ */ jsx("div", {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { PreviewCard } from "@base-ui/react/preview-card";
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { Input } from "./input.js";
4
+ import { Toolbar } from "@base-ui/react/toolbar";
4
5
  import { createContext, useContext, useRef, useState } from "react";
5
6
  import { jsx } from "react/jsx-runtime";
6
- import { Toolbar } from "@base-ui/react/toolbar";
7
7
  import { Radio } from "@base-ui/react/radio";
8
8
  import { RadioGroup } from "@base-ui/react/radio-group";
9
9
  //#region src/ui/icon-picker.tsx
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { createContext, use } from "react";
4
- import { jsx } from "react/jsx-runtime";
5
4
  import { useRender } from "@base-ui/react/use-render";
5
+ import { jsx } from "react/jsx-runtime";
6
6
  //#region src/ui/input-group.tsx
7
7
  const InputGroupSurfaceContext = createContext(false);
8
8
  function useIsInsideInputGroup() {
package/dist/ui/item.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
3
  import { Separator } from "./separator.js";
4
- import { jsx } from "react/jsx-runtime";
5
4
  import { useRender } from "@base-ui/react/use-render";
5
+ import { jsx } from "react/jsx-runtime";
6
6
  //#region src/ui/item.tsx
7
7
  const itemVariants = [
8
8
  "default",
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { popupItemStructureClasses } from "../surface-variants.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/cn.js";
3
- import { jsx } from "react/jsx-runtime";
4
3
  import { useRender } from "@base-ui/react/use-render";
4
+ import { jsx } from "react/jsx-runtime";
5
5
  import { Collapsible } from "@base-ui/react/collapsible";
6
6
  //#region src/ui/morphing-panel.tsx
7
7
  function MorphingPanelTriggerElement({ triggerProps, open, render, className, children }) {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { NavigationMenu as NavigationMenu$1 } from "@base-ui/react/navigation-menu";
@@ -3,12 +3,12 @@ import { cn } from "../lib/cn.js";
3
3
  import { Popover, PopoverContent, PopoverTrigger } from "./popover.js";
4
4
  import { InputGroup, InputGroupAddon } from "./input-group.js";
5
5
  import { Input } from "./input.js";
6
- import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "./command.js";
7
6
  import { normalizePhoneInputText, normalizePhoneInputValue } from "../lib/phone-input-format.js";
7
+ import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "./command.js";
8
8
  import { useState } from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
- import flags from "react-phone-number-input/flags";
11
10
  import PhoneNumberInput, { getCountryCallingCode, parsePhoneNumber } from "react-phone-number-input/max";
11
+ import flags from "react-phone-number-input/flags";
12
12
  //#region src/ui/phone-input.tsx
13
13
  const FLAG_COMPONENTS = flags;
14
14
  const PhoneNumberInputWithRef = PhoneNumberInput;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { useImperativeHandle, useLayoutEffect, useRef } from "react";
6
6
  import { jsx } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { prefersReducedMotion } from "../lib/motion.js";
6
6
  import { PopupArrowShape } from "../popup-parts.js";
package/dist/ui/select.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { Button } from "./button.js";
6
6
  import { ScrollArea } from "./scroll-area.js";
package/dist/ui/sheet.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { controlEffectsAttribute } from "../skin.js";
3
2
  import { cn } from "../lib/cn.js";
3
+ import { controlEffectsAttribute } from "../skin.js";
4
4
  import { useSkin } from "../skin-provider.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { Dialog } from "@base-ui/react/dialog";
@@ -5,8 +5,8 @@ import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
5
5
  import { SidebarSurfaceContext, useSidebar } from "./sidebar-provider.js";
6
6
  import { TrackHighlight } from "../extensions/track-highlight.js";
7
7
  import { createContext, useContext, useRef, useState } from "react";
8
- import { jsx, jsxs } from "react/jsx-runtime";
9
8
  import { useRender } from "@base-ui/react/use-render";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
10
  //#region src/ui/sidebar-menu.tsx
11
11
  const sidebarMenuButtonVariants = ["default", "outline"];
12
12
  const sidebarMenuButtonSizes = [