@ctrl-ui/react 0.8.11 → 0.8.13

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 (80) 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 +21 -4
  23. package/dist/styles/recipes/code.css +0 -15
  24. package/dist/styles/recipes/field.css +15 -2
  25. package/dist/styles/recipes/resizable.css +0 -26
  26. package/dist/styles/recipes/scroll-area.css +6 -6
  27. package/dist/styles/recipes/sidebar-menu.css +22 -8
  28. package/dist/styles/recipes/sidebar-parts.css +11 -7
  29. package/dist/styles/recipes/sidebar.css +1 -1
  30. package/dist/styles/recipes/tabs-motion.css +99 -0
  31. package/dist/styles/recipes/tabs.css +36 -108
  32. package/dist/ui/alert-dialog.js +1 -1
  33. package/dist/ui/alert.js +1 -1
  34. package/dist/ui/autocomplete.js +1 -1
  35. package/dist/ui/breadcrumb.js +1 -1
  36. package/dist/ui/button.d.ts +6 -3
  37. package/dist/ui/button.js +10 -6
  38. package/dist/ui/card.js +1 -1
  39. package/dist/ui/code-diff.js +1 -1
  40. package/dist/ui/code.js +2 -2
  41. package/dist/ui/collapsible.js +1 -1
  42. package/dist/ui/color-picker.js +1 -1
  43. package/dist/ui/combobox.js +1 -1
  44. package/dist/ui/context-menu.js +1 -1
  45. package/dist/ui/dialog.js +1 -1
  46. package/dist/ui/drawer.js +1 -1
  47. package/dist/ui/dropdown-menu.js +1 -1
  48. package/dist/ui/emoji-icon-picker.js +1 -1
  49. package/dist/ui/emoji-picker.js +1 -1
  50. package/dist/ui/empty.js +1 -1
  51. package/dist/ui/hover-card.js +1 -1
  52. package/dist/ui/icon-picker.js +1 -1
  53. package/dist/ui/input-group.js +1 -1
  54. package/dist/ui/item.js +1 -1
  55. package/dist/ui/menubar.js +1 -1
  56. package/dist/ui/morphing-panel.js +1 -1
  57. package/dist/ui/navigation-menu.js +1 -1
  58. package/dist/ui/phone-input.js +2 -2
  59. package/dist/ui/popover.js +1 -1
  60. package/dist/ui/resizable.js +34 -1
  61. package/dist/ui/rich-tooltip.js +1 -1
  62. package/dist/ui/select.js +1 -1
  63. package/dist/ui/sheet.js +1 -1
  64. package/dist/ui/sidebar-menu.js +4 -3
  65. package/dist/ui/sidebar-provider.js +2 -2
  66. package/dist/ui/sidebar-resize-rail.js +1 -1
  67. package/dist/ui/sidebar.js +1 -1
  68. package/dist/ui/tabs.d.ts +4 -0
  69. package/dist/ui/tabs.js +11 -1
  70. package/dist/ui/timeline.js +1 -1
  71. package/dist/ui/toast.js +1 -1
  72. package/dist/ui/toggle.d.ts +1 -1
  73. package/dist/ui/toggle.js +2 -1
  74. package/dist/ui/toolbar.d.ts +1 -1
  75. package/dist/ui/toolbar.js +1 -1
  76. package/dist/ui/tooltip.js +1 -1
  77. package/dist/ui/tree.js +1 -1
  78. package/dist/ui/trigger-menu.js +1 -1
  79. package/dist/user-ask.js +2 -2
  80. 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
 
@@ -89,6 +93,10 @@
89
93
  font-weight: var(--font-weight-medium);
90
94
  }
91
95
 
96
+ :where([data-control-family="tabs"][data-slot="list"]:not([data-orientation="vertical"], [data-variant="browser"]) [data-slot="tab"]) {
97
+ flex-grow: 1;
98
+ }
99
+
92
100
  @media (hover: hover) {
93
101
  :where([data-control-family="tabs"][data-slot="tab"]:hover:not([data-disabled])) {
94
102
  color: var(--cui-tabs-hover-foreground);
@@ -106,15 +114,14 @@
106
114
 
107
115
  :where([data-control-family="tabs"][data-slot="list"][data-variant="browser"]) {
108
116
  --_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));
117
+ --_tabs-browser-inset: calc(var(--_tabs-trigger-radius-fit) + var(--cui-tabs-surface-radius));
110
118
  min-height: calc(var(--_tabs-trigger-h) + var(--cui-tabs-list-padding));
111
119
  width: auto;
112
120
  align-items: flex-end;
113
121
  isolation: isolate;
114
122
  z-index: 1;
115
123
  --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);
124
+ --cui-tabs-list-shadow: inset 0 calc(-1 * var(--cui-tabs-border-width)) 0 var(--cui-tabs-border-color);
118
125
  --cui-tabs-active-foreground: var(--foreground);
119
126
  border-radius: var(--cui-tabs-list-radius) var(--cui-tabs-list-radius) 0 0;
120
127
  }
@@ -133,7 +140,7 @@
133
140
  border: var(--cui-tabs-border-width) solid var(--cui-tabs-border-color);
134
141
  border-bottom: none;
135
142
  border-radius: var(--_tabs-trigger-radius-fit) var(--_tabs-trigger-radius-fit) 0 0;
136
- background: var(--cui-tabs-indicator-background);
143
+ background: var(--cui-tabs-surface-background);
137
144
  }
138
145
 
139
146
  :where([data-control-family="tabs"][data-slot="list"][data-variant="browser"] [data-slot="indicator"])::after {
@@ -146,17 +153,17 @@
146
153
  circle at 0 -1px,
147
154
  transparent calc(var(--_tabs-trigger-radius-fit) - 0.5px),
148
155
  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)
156
+ var(--cui-tabs-surface-background) calc(var(--_tabs-trigger-radius-fit) + 1px)
150
157
  )
151
158
  left / calc(var(--_tabs-trigger-radius-fit) + 1px) 100% no-repeat,
152
159
  radial-gradient(
153
160
  circle at 100% -1px,
154
161
  transparent calc(var(--_tabs-trigger-radius-fit) - 0.5px),
155
162
  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)
163
+ var(--cui-tabs-surface-background) calc(var(--_tabs-trigger-radius-fit) + 1px)
157
164
  )
158
165
  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;
166
+ linear-gradient(var(--cui-tabs-surface-background) 0 0) center / calc(100% - var(--_tabs-browser-corner-double)) 100% no-repeat;
160
167
  }
161
168
 
162
169
  :where([data-control-family="tabs"][data-slot="list"][data-single="true"]) {
@@ -179,104 +186,6 @@
179
186
  outline-style: none;
180
187
  }
181
188
 
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
189
  :where([data-control-family="tabs"][data-slot="root"][data-orientation="vertical"] > [data-slot="panel"]) {
281
190
  min-width: 0;
282
191
  flex: 1;
@@ -291,11 +200,18 @@
291
200
  :where([data-control-family="tabs"][data-slot="list"][data-variant="browser"] ~ [data-slot="panel"]) {
292
201
  border: var(--cui-tabs-border-width) solid var(--cui-tabs-border-color);
293
202
  border-top: none;
294
- border-radius: 0 0 var(--radius-panel) var(--radius-panel);
295
- background: var(--cui-tabs-indicator-background);
203
+ border-radius: 0 0 var(--cui-tabs-surface-radius) var(--cui-tabs-surface-radius);
204
+ background: var(--cui-tabs-surface-background);
296
205
  padding: calc(var(--spacing) * 4);
297
206
  }
298
207
 
208
+ :where([data-control-family="tabs"][data-slot="surface"]) {
209
+ min-width: 0;
210
+ border: var(--cui-tabs-border-width) solid var(--cui-tabs-border-color);
211
+ border-radius: var(--cui-tabs-surface-radius);
212
+ background: var(--cui-tabs-surface-background);
213
+ }
214
+
299
215
  :where([data-control-family="tabs"][data-slot="list"][data-variant="browser"] [data-control-family="tabs"][data-slot="tab"]) {
300
216
  border-top-left-radius: var(--_tabs-trigger-radius-fit);
301
217
  border-top-right-radius: var(--_tabs-trigger-radius-fit);
@@ -320,6 +236,18 @@
320
236
  }
321
237
  }
322
238
 
239
+ @property --cui-tabs-surface-background {
240
+ syntax: "<color>";
241
+ inherits: true;
242
+ initial-value: transparent;
243
+ }
244
+
245
+ @property --cui-tabs-surface-radius {
246
+ syntax: "<length>";
247
+ inherits: true;
248
+ initial-value: 0px;
249
+ }
250
+
323
251
  @property --cui-tabs-trigger-radius {
324
252
  syntax: "<length-percentage>";
325
253
  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", "tile"];
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", "tile"];
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";