raft-ui 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,6 @@
1
- ## [0.0.15](https://github.com/botiverse/rui/compare/v0.0.14...v0.0.15) (2026-07-07)
1
+ ## [0.0.17](https://github.com/botiverse/rui/compare/v0.0.16...v0.0.17) (2026-07-08)
2
2
 
3
3
  ### Features
4
4
 
5
- - **select:** align source comparison parity ([eb03e29](https://github.com/botiverse/rui/commit/eb03e293e058d3a4a73c1dd83338096ad5810169))
5
+ - **chat-shell:** add wip app shell parts ([de3c8f7](https://github.com/botiverse/rui/commit/de3c8f74297f87b3c2eec992aaa957d013072387))
6
+ - **ui:** add optional font stylesheet ([03732a8](https://github.com/botiverse/rui/commit/03732a88b4b1524779de1b6b54fd1e95858422bb))
package/dist/fonts.css ADDED
@@ -0,0 +1,14 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@300..700&family=Hanken+Grotesk:wght@300..700&family=Inter:wght@400;500;600;700&display=swap");
2
+
3
+ :where(:root),
4
+ [data-theme="brutal"] {
5
+ --heading-font: "Hanken Grotesk", system-ui, sans-serif;
6
+ --sans-font: "Hanken Grotesk", system-ui, sans-serif;
7
+ --mono-font: "Geist Mono", ui-monospace, monospace;
8
+ }
9
+
10
+ [data-theme="elegant"] {
11
+ --heading-font: "Inter", system-ui, sans-serif;
12
+ --sans-font: "Geist", system-ui, sans-serif;
13
+ --mono-font: "Geist Mono", ui-monospace, monospace;
14
+ }
package/dist/index.mjs CHANGED
@@ -2418,31 +2418,33 @@ const dropdownMenu = tv({
2418
2418
  shortcut: ["ml-auto"],
2419
2419
  itemCount: ["ml-auto inline-flex min-w-5 justify-center gap-0 px-1 tabular-nums"],
2420
2420
  separator: ["border-t-2"],
2421
- indicator: ["pointer-events-none ml-auto flex size-3 shrink-0 items-center justify-center"]
2421
+ indicator: ["pointer-events-none ml-auto flex size-3 shrink-0 items-center justify-center"],
2422
+ radioLabel: []
2422
2423
  },
2423
2424
  variants: { theme: {
2424
2425
  brutal: {
2425
2426
  trigger: ["data-[popup-open]:translate-x-0 data-[popup-open]:translate-y-0", "data-[popup-open]:hover:translate-x-0 data-[popup-open]:hover:translate-y-0"],
2426
2427
  content: ["border-2 border-black bg-white shadow-lg"],
2427
2428
  item: [
2428
- "py-1.5 font-sans text-sm font-semibold leading-6 text-black hover:bg-brutal-yellow data-[highlighted]:bg-brutal-yellow",
2429
+ "py-2 font-sans text-sm font-bold text-black hover:bg-soft-signal/30 data-[highlighted]:bg-soft-signal/30",
2429
2430
  "data-[disabled]:pointer-events-none data-[disabled]:text-black/30",
2430
- "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:stroke-2 [&_svg_*]:stroke-2 [&_svg:not([class*='size-'])]:size-3.5"
2431
+ "[&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:stroke-2 [&>svg_*]:stroke-2 [&>svg:not([class*='size-'])]:size-3.5"
2431
2432
  ],
2432
2433
  radioItem: [
2433
- "h-9 overflow-hidden font-sans text-sm font-semibold leading-6 text-black",
2434
+ "overflow-hidden py-2 font-sans text-sm font-bold leading-5 text-black",
2434
2435
  "border-b border-black/10 last:border-b-0",
2435
- "hover:bg-brutal-yellow/30 data-[highlighted]:bg-brutal-yellow/30",
2436
+ "hover:bg-soft-signal/30 data-[highlighted]:bg-soft-signal/30",
2436
2437
  "data-[disabled]:pointer-events-none data-[disabled]:text-black/30",
2437
- "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:stroke-2 [&_svg_*]:stroke-2 [&_svg:not([class*='size-'])]:size-3.5"
2438
+ "[&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:stroke-2 [&>svg_*]:stroke-2 [&>svg:not([class*='size-'])]:size-3.5"
2438
2439
  ],
2440
+ radioLabel: ["min-w-0 flex-1 truncate"],
2439
2441
  submenuTrigger: [
2440
- "py-1.5 font-sans text-sm font-semibold leading-6 text-black hover:bg-brutal-yellow data-[highlighted]:bg-brutal-yellow data-[popup-open]:bg-brutal-yellow",
2442
+ "py-2 font-sans text-sm font-bold text-black hover:bg-soft-signal/30 data-[highlighted]:bg-soft-signal/30 data-[popup-open]:bg-soft-signal/30",
2441
2443
  "data-[disabled]:pointer-events-none data-[disabled]:text-black/30",
2442
- "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:stroke-2 [&_svg_*]:stroke-2 [&_svg:not([class*='size-'])]:size-3.5"
2444
+ "[&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:stroke-2 [&>svg_*]:stroke-2 [&>svg:not([class*='size-'])]:size-3.5"
2443
2445
  ],
2444
2446
  label: ["border-b border-black px-3 py-2", "font-sans text-[10px] font-bold uppercase leading-none tracking-wide text-black/60"],
2445
- shortcut: ["font-sans text-sm font-semibold leading-6"],
2447
+ shortcut: ["font-sans text-sm font-medium"],
2446
2448
  itemCount: ["rounded border border-black bg-brutal-pink px-1 py-0.5", "font-sans text-[10px] leading-none font-bold text-white"],
2447
2449
  separator: ["border-black"],
2448
2450
  indicator: []
@@ -2484,6 +2486,7 @@ const dropdownMenu = tv({
2484
2486
  "hover:[&>svg]:text-foreground-strong",
2485
2487
  "data-[highlighted]:[&>svg]:text-foreground-strong"
2486
2488
  ],
2489
+ radioLabel: ["min-w-0 flex-1 truncate"],
2487
2490
  submenuTrigger: [
2488
2491
  "gap-2.5 rounded-sm px-3 py-2 text-[13px] font-medium tracking-[-0.005em]",
2489
2492
  "text-foreground-muted",
@@ -2645,17 +2648,30 @@ function DropdownMenuRadioGroup({ ...props }) {
2645
2648
  });
2646
2649
  }
2647
2650
  function DropdownMenuRadioItem({ className, children, ...props }) {
2648
- const { radioItem, indicator } = dropdownMenu({ theme: useThemeFamily() });
2651
+ const { radioItem, radioLabel, indicator } = dropdownMenu({ theme: useThemeFamily() });
2649
2652
  return /* @__PURE__ */ jsxs(Menu.RadioItem, {
2650
2653
  "data-slot": "dropdown-menu-radio-item",
2651
2654
  className: radioItem({ className }),
2652
2655
  ...props,
2653
- children: [children, /* @__PURE__ */ jsx("span", {
2656
+ children: [renderRadioItemChildren(children, radioLabel()), /* @__PURE__ */ jsx("span", {
2654
2657
  className: indicator(),
2655
2658
  children: /* @__PURE__ */ jsx(Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsx(DropdownMenuCheckIcon, {}) })
2656
2659
  })]
2657
2660
  });
2658
2661
  }
2662
+ function renderRadioItemChildren(children, className) {
2663
+ if (typeof children === "string" || typeof children === "number") return /* @__PURE__ */ jsx("span", {
2664
+ "data-slot": "dropdown-menu-radio-item-label",
2665
+ className,
2666
+ children
2667
+ });
2668
+ if (Array.isArray(children) && children.every((child) => typeof child === "string")) return /* @__PURE__ */ jsx("span", {
2669
+ "data-slot": "dropdown-menu-radio-item-label",
2670
+ className,
2671
+ children
2672
+ });
2673
+ return children;
2674
+ }
2659
2675
  function DropdownMenuRadioItemIndicator({ className, ...props }) {
2660
2676
  return /* @__PURE__ */ jsx(Menu.RadioItemIndicator, {
2661
2677
  "data-slot": "dropdown-menu-radio-item-indicator",
package/dist/styles.css CHANGED
@@ -320,9 +320,9 @@
320
320
  --shadow-brutal: var(--theme-shadow-md);
321
321
  --shadow-brutal-lg: var(--theme-shadow-xl);
322
322
 
323
- --font-heading: var(--heading-font);
324
- --font-sans: var(--sans-font);
325
- --font-mono: var(--mono-font);
323
+ --font-heading: var(--heading-font, system-ui, sans-serif);
324
+ --font-sans: var(--sans-font, system-ui, sans-serif);
325
+ --font-mono: var(--mono-font, ui-monospace, monospace);
326
326
  }
327
327
 
328
328
  :where(:root),
@@ -415,10 +415,6 @@
415
415
  --shadow-brutal-sm: 2px 2px 0px #141111;
416
416
  --shadow-brutal: 4px 4px 0px #141111;
417
417
  --shadow-brutal-lg: 6px 6px 0px #141111;
418
-
419
- --heading-font: "Hanken Grotesk", system-ui, sans-serif;
420
- --sans-font: "Hanken Grotesk", system-ui, sans-serif;
421
- --mono-font: "Geist Mono", ui-monospace, monospace;
422
418
  }
423
419
 
424
420
  [data-theme="elegant"] {
@@ -518,10 +514,6 @@
518
514
  oklch(0.145 0.002 286.131 / 0.031) 0px 18px 24px -12px,
519
515
  oklch(0.145 0.002 286.131 / 0.039) 0px 12px 12px -6px,
520
516
  oklch(0.145 0.002 286.131 / 0.039) 0px 4px 6px -3px;
521
-
522
- --heading-font: "Inter", system-ui, sans-serif;
523
- --sans-font: "Geist", system-ui, sans-serif;
524
- --mono-font: "Geist Mono", ui-monospace, monospace;
525
517
  }
526
518
 
527
519
  @media (prefers-color-scheme: dark) {
package/dist/wip.d.mts CHANGED
@@ -4,6 +4,457 @@ import { useRender } from "@base-ui/react/use-render";
4
4
  import { Toggle } from "@base-ui/react/toggle";
5
5
  import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
6
6
 
7
+ //#region src/components/chat-shell/chat-shell.d.ts
8
+ declare const chatShell: import("tailwind-variants/lite").TVReturnType<{
9
+ theme: {
10
+ brutal: {
11
+ root: string;
12
+ shellRail: string;
13
+ shellSidebar: string;
14
+ shellMain: string;
15
+ shellPanelStack: string;
16
+ mobileBar: string;
17
+ railHeader: string;
18
+ railFooter: string;
19
+ railItem: string[];
20
+ railItemBadge: string;
21
+ railItemIndicator: string;
22
+ sidebarHeader: string;
23
+ sidebarBody: string;
24
+ sidebarFooter: string;
25
+ panelStackItem: string;
26
+ resizeHandle: string;
27
+ };
28
+ elegant: {
29
+ root: string;
30
+ shellRail: string;
31
+ shellSidebar: string;
32
+ shellMain: string;
33
+ shellPanelStack: string;
34
+ mobileBar: string;
35
+ railHeader: string;
36
+ railFooter: string;
37
+ railItem: string[];
38
+ railItemBadge: string;
39
+ railItemIndicator: string;
40
+ sidebarHeader: string;
41
+ sidebarBody: string;
42
+ sidebarFooter: string;
43
+ panelStackItem: string;
44
+ resizeHandle: string;
45
+ };
46
+ };
47
+ presentation: {
48
+ desktop: {};
49
+ mobile: {
50
+ shellRail: string;
51
+ shellSidebar: string;
52
+ shellMain: string;
53
+ shellPanelStack: string;
54
+ mobileBar: string;
55
+ };
56
+ };
57
+ resizable: {
58
+ true: {
59
+ shellSidebar: string;
60
+ panelStackRoot: string;
61
+ };
62
+ false: {};
63
+ };
64
+ open: {
65
+ true: {};
66
+ false: {
67
+ panelStackItem: string;
68
+ };
69
+ };
70
+ }, {
71
+ root: string[];
72
+ shellRail: string[];
73
+ shellSidebar: string[];
74
+ shellMain: string[];
75
+ shellPanelStack: string[];
76
+ mobileBar: string[];
77
+ railRoot: string[];
78
+ railHeader: string[];
79
+ railNav: string[];
80
+ railFooter: string[];
81
+ railItem: string[];
82
+ railItemIcon: string[];
83
+ railItemLabel: string[];
84
+ railItemBadge: string[];
85
+ railItemIndicator: string[];
86
+ sidebarRoot: string[];
87
+ sidebarHeader: string[];
88
+ sidebarBody: string[];
89
+ sidebarSection: string[];
90
+ sidebarList: string[];
91
+ sidebarFooter: string[];
92
+ panelStackRoot: string[];
93
+ panelStackItem: string[];
94
+ panelStackContent: string[];
95
+ resizeHandle: string[];
96
+ }, undefined, {
97
+ theme: {
98
+ brutal: {
99
+ root: string;
100
+ shellRail: string;
101
+ shellSidebar: string;
102
+ shellMain: string;
103
+ shellPanelStack: string;
104
+ mobileBar: string;
105
+ railHeader: string;
106
+ railFooter: string;
107
+ railItem: string[];
108
+ railItemBadge: string;
109
+ railItemIndicator: string;
110
+ sidebarHeader: string;
111
+ sidebarBody: string;
112
+ sidebarFooter: string;
113
+ panelStackItem: string;
114
+ resizeHandle: string;
115
+ };
116
+ elegant: {
117
+ root: string;
118
+ shellRail: string;
119
+ shellSidebar: string;
120
+ shellMain: string;
121
+ shellPanelStack: string;
122
+ mobileBar: string;
123
+ railHeader: string;
124
+ railFooter: string;
125
+ railItem: string[];
126
+ railItemBadge: string;
127
+ railItemIndicator: string;
128
+ sidebarHeader: string;
129
+ sidebarBody: string;
130
+ sidebarFooter: string;
131
+ panelStackItem: string;
132
+ resizeHandle: string;
133
+ };
134
+ };
135
+ presentation: {
136
+ desktop: {};
137
+ mobile: {
138
+ shellRail: string;
139
+ shellSidebar: string;
140
+ shellMain: string;
141
+ shellPanelStack: string;
142
+ mobileBar: string;
143
+ };
144
+ };
145
+ resizable: {
146
+ true: {
147
+ shellSidebar: string;
148
+ panelStackRoot: string;
149
+ };
150
+ false: {};
151
+ };
152
+ open: {
153
+ true: {};
154
+ false: {
155
+ panelStackItem: string;
156
+ };
157
+ };
158
+ }, {
159
+ root: string[];
160
+ shellRail: string[];
161
+ shellSidebar: string[];
162
+ shellMain: string[];
163
+ shellPanelStack: string[];
164
+ mobileBar: string[];
165
+ railRoot: string[];
166
+ railHeader: string[];
167
+ railNav: string[];
168
+ railFooter: string[];
169
+ railItem: string[];
170
+ railItemIcon: string[];
171
+ railItemLabel: string[];
172
+ railItemBadge: string[];
173
+ railItemIndicator: string[];
174
+ sidebarRoot: string[];
175
+ sidebarHeader: string[];
176
+ sidebarBody: string[];
177
+ sidebarSection: string[];
178
+ sidebarList: string[];
179
+ sidebarFooter: string[];
180
+ panelStackRoot: string[];
181
+ panelStackItem: string[];
182
+ panelStackContent: string[];
183
+ resizeHandle: string[];
184
+ }, import("tailwind-variants/lite").TVReturnType<{
185
+ theme: {
186
+ brutal: {
187
+ root: string;
188
+ shellRail: string;
189
+ shellSidebar: string;
190
+ shellMain: string;
191
+ shellPanelStack: string;
192
+ mobileBar: string;
193
+ railHeader: string;
194
+ railFooter: string;
195
+ railItem: string[];
196
+ railItemBadge: string;
197
+ railItemIndicator: string;
198
+ sidebarHeader: string;
199
+ sidebarBody: string;
200
+ sidebarFooter: string;
201
+ panelStackItem: string;
202
+ resizeHandle: string;
203
+ };
204
+ elegant: {
205
+ root: string;
206
+ shellRail: string;
207
+ shellSidebar: string;
208
+ shellMain: string;
209
+ shellPanelStack: string;
210
+ mobileBar: string;
211
+ railHeader: string;
212
+ railFooter: string;
213
+ railItem: string[];
214
+ railItemBadge: string;
215
+ railItemIndicator: string;
216
+ sidebarHeader: string;
217
+ sidebarBody: string;
218
+ sidebarFooter: string;
219
+ panelStackItem: string;
220
+ resizeHandle: string;
221
+ };
222
+ };
223
+ presentation: {
224
+ desktop: {};
225
+ mobile: {
226
+ shellRail: string;
227
+ shellSidebar: string;
228
+ shellMain: string;
229
+ shellPanelStack: string;
230
+ mobileBar: string;
231
+ };
232
+ };
233
+ resizable: {
234
+ true: {
235
+ shellSidebar: string;
236
+ panelStackRoot: string;
237
+ };
238
+ false: {};
239
+ };
240
+ open: {
241
+ true: {};
242
+ false: {
243
+ panelStackItem: string;
244
+ };
245
+ };
246
+ }, {
247
+ root: string[];
248
+ shellRail: string[];
249
+ shellSidebar: string[];
250
+ shellMain: string[];
251
+ shellPanelStack: string[];
252
+ mobileBar: string[];
253
+ railRoot: string[];
254
+ railHeader: string[];
255
+ railNav: string[];
256
+ railFooter: string[];
257
+ railItem: string[];
258
+ railItemIcon: string[];
259
+ railItemLabel: string[];
260
+ railItemBadge: string[];
261
+ railItemIndicator: string[];
262
+ sidebarRoot: string[];
263
+ sidebarHeader: string[];
264
+ sidebarBody: string[];
265
+ sidebarSection: string[];
266
+ sidebarList: string[];
267
+ sidebarFooter: string[];
268
+ panelStackRoot: string[];
269
+ panelStackItem: string[];
270
+ panelStackContent: string[];
271
+ resizeHandle: string[];
272
+ }, undefined, unknown, unknown, undefined>>;
273
+ type HiddenProp = {
274
+ hidden?: boolean;
275
+ };
276
+ type ChatShellVariantProps = Omit<VariantProps<typeof chatShell>, "theme">;
277
+ type ChatShellRootProps = useRender.ComponentProps<"div"> & HiddenProp & Pick<ChatShellVariantProps, "presentation">;
278
+ declare function ChatShellRoot({
279
+ presentation,
280
+ hidden,
281
+ className,
282
+ render,
283
+ ...props
284
+ }: ChatShellRootProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
285
+ type ChatShellRailProps = useRender.ComponentProps<"aside"> & HiddenProp;
286
+ declare function ChatShellRail({
287
+ hidden,
288
+ className,
289
+ render,
290
+ ...props
291
+ }: ChatShellRailProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
292
+ type ChatShellSidebarProps = useRender.ComponentProps<"aside"> & HiddenProp & Pick<ChatShellVariantProps, "resizable">;
293
+ declare function ChatShellSidebar({
294
+ hidden,
295
+ resizable,
296
+ className,
297
+ render,
298
+ ...props
299
+ }: ChatShellSidebarProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
300
+ type ChatShellMainProps = useRender.ComponentProps<"main"> & HiddenProp;
301
+ declare function ChatShellMain({
302
+ hidden,
303
+ className,
304
+ render,
305
+ ...props
306
+ }: ChatShellMainProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
307
+ type ChatShellPanelStackProps = useRender.ComponentProps<"aside"> & HiddenProp & Pick<ChatShellVariantProps, "resizable">;
308
+ declare function ChatShellPanelStack({
309
+ hidden,
310
+ resizable,
311
+ className,
312
+ render,
313
+ ...props
314
+ }: ChatShellPanelStackProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
315
+ type ChatShellMobileBarProps = useRender.ComponentProps<"nav"> & HiddenProp;
316
+ declare function ChatShellMobileBar({
317
+ hidden,
318
+ className,
319
+ render,
320
+ ...props
321
+ }: ChatShellMobileBarProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
322
+ type ChatRailRootProps = useRender.ComponentProps<"div"> & {
323
+ value?: string;
324
+ onValueChange?: (value: string) => void;
325
+ };
326
+ declare function ChatRailRoot({
327
+ value,
328
+ onValueChange,
329
+ className,
330
+ render,
331
+ ...props
332
+ }: ChatRailRootProps): import("react").JSX.Element;
333
+ type ChatRailHeaderProps = useRender.ComponentProps<"div">;
334
+ declare function ChatRailHeader({
335
+ className,
336
+ render,
337
+ ...props
338
+ }: ChatRailHeaderProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
339
+ type ChatRailNavProps = useRender.ComponentProps<"nav">;
340
+ declare function ChatRailNav({
341
+ className,
342
+ render,
343
+ ...props
344
+ }: ChatRailNavProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
345
+ type ChatRailItemProps = Omit<useRender.ComponentProps<"button">, "value"> & {
346
+ value?: string;
347
+ selected?: boolean;
348
+ onSelect?: (value: string) => void;
349
+ };
350
+ declare function ChatRailItem({
351
+ value,
352
+ selected,
353
+ disabled,
354
+ onSelect,
355
+ onClick,
356
+ className,
357
+ render,
358
+ ...props
359
+ }: ChatRailItemProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
360
+ type ChatRailItemIconProps = useRender.ComponentProps<"span">;
361
+ declare function ChatRailItemIcon({
362
+ className,
363
+ render,
364
+ ...props
365
+ }: ChatRailItemIconProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
366
+ type ChatRailItemLabelProps = useRender.ComponentProps<"span">;
367
+ declare function ChatRailItemLabel({
368
+ className,
369
+ render,
370
+ ...props
371
+ }: ChatRailItemLabelProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
372
+ type ChatRailItemBadgeProps = useRender.ComponentProps<"span">;
373
+ declare function ChatRailItemBadge({
374
+ className,
375
+ render,
376
+ ...props
377
+ }: ChatRailItemBadgeProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
378
+ type ChatRailItemIndicatorProps = useRender.ComponentProps<"span">;
379
+ declare function ChatRailItemIndicator({
380
+ className,
381
+ render,
382
+ ...props
383
+ }: ChatRailItemIndicatorProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
384
+ type ChatRailFooterProps = useRender.ComponentProps<"div">;
385
+ declare function ChatRailFooter({
386
+ className,
387
+ render,
388
+ ...props
389
+ }: ChatRailFooterProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
390
+ type ChatSidebarRootProps = useRender.ComponentProps<"div">;
391
+ declare function ChatSidebarRoot({
392
+ className,
393
+ render,
394
+ ...props
395
+ }: ChatSidebarRootProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
396
+ type ChatSidebarHeaderProps = useRender.ComponentProps<"div">;
397
+ declare function ChatSidebarHeader({
398
+ className,
399
+ render,
400
+ ...props
401
+ }: ChatSidebarHeaderProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
402
+ type ChatSidebarBodyProps = useRender.ComponentProps<"div">;
403
+ declare function ChatSidebarBody({
404
+ className,
405
+ render,
406
+ ...props
407
+ }: ChatSidebarBodyProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
408
+ type ChatSidebarSectionProps = useRender.ComponentProps<"section">;
409
+ declare function ChatSidebarSection({
410
+ className,
411
+ render,
412
+ ...props
413
+ }: ChatSidebarSectionProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
414
+ type ChatSidebarListProps = useRender.ComponentProps<"div">;
415
+ declare function ChatSidebarList({
416
+ className,
417
+ render,
418
+ ...props
419
+ }: ChatSidebarListProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
420
+ type ChatSidebarFooterProps = useRender.ComponentProps<"div">;
421
+ declare function ChatSidebarFooter({
422
+ className,
423
+ render,
424
+ ...props
425
+ }: ChatSidebarFooterProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
426
+ type ChatPanelStackRootProps = useRender.ComponentProps<"div"> & Pick<ChatShellVariantProps, "resizable">;
427
+ declare function ChatPanelStackRoot({
428
+ resizable,
429
+ className,
430
+ render,
431
+ ...props
432
+ }: ChatPanelStackRootProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
433
+ type ChatPanelStackItemProps = useRender.ComponentProps<"section"> & Pick<ChatShellVariantProps, "open">;
434
+ declare function ChatPanelStackItem({
435
+ open,
436
+ className,
437
+ render,
438
+ ...props
439
+ }: ChatPanelStackItemProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
440
+ type ChatPanelStackContentProps = useRender.ComponentProps<"div">;
441
+ declare function ChatPanelStackContent({
442
+ className,
443
+ render,
444
+ ...props
445
+ }: ChatPanelStackContentProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
446
+ type ChatPanelResizeHandleProps = useRender.ComponentProps<"div"> & {
447
+ disabled?: boolean;
448
+ orientation?: "vertical" | "horizontal";
449
+ };
450
+ declare function ChatPanelResizeHandle({
451
+ disabled,
452
+ orientation,
453
+ className,
454
+ render,
455
+ ...props
456
+ }: ChatPanelResizeHandleProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
457
+ //#endregion
7
458
  //#region src/components/toggle-group/toggle-group.d.ts
8
459
  declare const toggleGroup: import("tailwind-variants/lite").TVReturnType<{
9
460
  theme: {
@@ -1432,4 +1883,4 @@ declare function MessageReactionPopoverSeparator({
1432
1883
  ...props
1433
1884
  }: MessageReactionPopoverSeparatorProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
1434
1885
  //#endregion
1435
- export { ConversationPreviewCard, ConversationPreviewCardAction, type ConversationPreviewCardActionProps, ConversationPreviewCardAuthor, ConversationPreviewCardAuthorName, type ConversationPreviewCardAuthorNameProps, type ConversationPreviewCardAuthorProps, ConversationPreviewCardAuthorSubtitle, type ConversationPreviewCardAuthorSubtitleProps, ConversationPreviewCardChannel, type ConversationPreviewCardChannelProps, ConversationPreviewCardContent, type ConversationPreviewCardContentProps, ConversationPreviewCardFooter, type ConversationPreviewCardFooterProps, ConversationPreviewCardMeta, type ConversationPreviewCardMetaProps, ConversationPreviewCardPreview, ConversationPreviewCardPreviewAuthor, type ConversationPreviewCardPreviewAuthorProps, ConversationPreviewCardPreviewLeading, type ConversationPreviewCardPreviewLeadingProps, type ConversationPreviewCardPreviewProps, type ConversationPreviewCardProps, ConversationPreviewCardSecondaryPreview, type ConversationPreviewCardSecondaryPreviewProps, ConversationPreviewCardTimestamp, type ConversationPreviewCardTimestampProps, DescriptionAction, type DescriptionActionProps, DescriptionDetails, type DescriptionDetailsProps, DescriptionItem, type DescriptionItemProps, DescriptionList, type DescriptionListProps, DescriptionTerm, type DescriptionTermProps, ListItem, ListItemActionGroup, type ListItemActionGroupProps, ListItemBody, type ListItemBodyProps, ListItemDescription, type ListItemDescriptionProps, ListItemIcon, type ListItemIconProps, ListItemMeta, type ListItemMetaProps, type ListItemProps, ListItemRow, type ListItemRowProps, ListItemTitle, type ListItemTitleProps, MESSAGE_QUICK_REACTIONS, MediaListItem, MediaListItemActionGroup, type MediaListItemActionGroupProps, MediaListItemAside, type MediaListItemAsideProps, MediaListItemBody, type MediaListItemBodyProps, type MediaListItemProps, MediaListItemSubtitle, type MediaListItemSubtitleProps, MediaListItemText, type MediaListItemTextProps, MediaListItemTitle, type MediaListItemTitleProps, MediaListItemVisual, type MediaListItemVisualProps, MessageAttachmentAction, type MessageAttachmentActionProps, MessageAttachmentBody, type MessageAttachmentBodyProps, MessageAttachmentCard, type MessageAttachmentCardProps, MessageAttachmentIcon, type MessageAttachmentIconProps, MessageAttachmentMeta, type MessageAttachmentMetaProps, MessageAttachmentTitle, type MessageAttachmentTitleProps, MessageImageGallery, MessageImageGalleryAction, type MessageImageGalleryActionProps, MessageImageGalleryItem, type MessageImageGalleryItemProps, MessageImageGalleryMedia, type MessageImageGalleryMediaProps, MessageImageGalleryOverlay, type MessageImageGalleryOverlayProps, type MessageImageGalleryProps, MessageImageGalleryRow, type MessageImageGalleryRowProps, MessageItem, MessageItemAttachments, type MessageItemAttachmentsProps, MessageItemAvatarSlot, type MessageItemAvatarSlotProps, MessageItemBadge, type MessageItemBadgeProps, type MessageItemBadgeTone, MessageItemBody, type MessageItemBodyProps, MessageItemContent, type MessageItemContentProps, MessageItemContinuationTime, type MessageItemContinuationTimeProps, MessageItemEmbedded, type MessageItemEmbeddedProps, MessageItemFooter, type MessageItemFooterProps, MessageItemGutter, type MessageItemGutterProps, MessageItemHeader, type MessageItemHeaderProps, MessageItemInlineStatus, type MessageItemInlineStatusProps, MessageItemMeta, type MessageItemMetaProps, MessageItemNotice, type MessageItemNoticeProps, type MessageItemProps, type MessageItemRowState, MessageItemSavedIndicator, type MessageItemSavedIndicatorProps, MessageItemSelectMark, type MessageItemSelectMarkProps, MessageItemSender, type MessageItemSenderProps, MessageItemSenderState, type MessageItemSenderStateProps, MessageItemTime, type MessageItemTimeProps, MessageItemToolbar, MessageItemToolbarButton, type MessageItemToolbarButtonProps, type MessageItemToolbarProps, MessageReactionChip, type MessageReactionChipProps, MessageReactionCount, type MessageReactionCountProps, MessageReactionGlyph, type MessageReactionGlyphProps, MessageReactionPicker, type MessageReactionPickerProps, MessageReactionPopover, MessageReactionPopoverName, type MessageReactionPopoverNameProps, MessageReactionPopoverNameText, type MessageReactionPopoverNameTextProps, MessageReactionPopoverNames, type MessageReactionPopoverNamesProps, type MessageReactionPopoverProps, MessageReactionPopoverSeparator, type MessageReactionPopoverSeparatorProps, MessageReactionQuickButton, type MessageReactionQuickButtonProps, MessageReactionQuickRow, type MessageReactionQuickRowProps, MessageVideoPreview, MessageVideoPreviewAction, type MessageVideoPreviewActionProps, MessageVideoPreviewFallback, type MessageVideoPreviewFallbackProps, MessageVideoPreviewFrame, type MessageVideoPreviewFrameProps, MessageVideoPreviewMedia, type MessageVideoPreviewMediaProps, type MessageVideoPreviewProps, PanelHeader, PanelHeaderActions, type PanelHeaderActionsProps, PanelHeaderContent, type PanelHeaderContentProps, PanelHeaderIcon, type PanelHeaderIconProps, type PanelHeaderProps, PanelHeaderSubtitle, type PanelHeaderSubtitleProps, PanelHeaderSuffix, type PanelHeaderSuffixProps, PanelHeaderTitle, type PanelHeaderTitleProps, PanelHeaderTitleRow, type PanelHeaderTitleRowProps, PanelHeaderVisual, type PanelHeaderVisualProps, PreviewShell, type PreviewShellProps, QuotedMessageCard, QuotedMessageCardAttachments, type QuotedMessageCardAttachmentsProps, QuotedMessageCardAuthor, QuotedMessageCardAuthorName, type QuotedMessageCardAuthorNameProps, type QuotedMessageCardAuthorProps, QuotedMessageCardAuthorSubtitle, type QuotedMessageCardAuthorSubtitleProps, QuotedMessageCardBody, type QuotedMessageCardBodyProps, QuotedMessageCardChannel, type QuotedMessageCardChannelProps, QuotedMessageCardContent, type QuotedMessageCardContentProps, QuotedMessageCardContentWrap, type QuotedMessageCardContentWrapProps, QuotedMessageCardHeader, type QuotedMessageCardHeaderProps, QuotedMessageCardMeta, type QuotedMessageCardMetaProps, type QuotedMessageCardProps, QuotedMessageCardSeparator, type QuotedMessageCardSeparatorProps, QuotedMessageCardTag, type QuotedMessageCardTagProps, QuotedMessageCardThread, type QuotedMessageCardThreadProps, QuotedMessageCardTimestamp, type QuotedMessageCardTimestampProps, QuotedMessageCardUnavailable, type QuotedMessageCardUnavailableProps, SectionHeader, SectionHeaderActions, type SectionHeaderActionsProps, SectionHeaderContent, type SectionHeaderContentProps, SectionHeaderCount, type SectionHeaderCountProps, SectionHeaderIcon, type SectionHeaderIconProps, type SectionHeaderProps, SectionHeaderTitle, type SectionHeaderTitleProps, SectionLabel, type SectionLabelProps, SystemMessageItem, SystemMessageItemContent, type SystemMessageItemContentProps, type SystemMessageItemProps, SystemMessageItemTime, type SystemMessageItemTimeProps, ToggleGroup, ToggleGroupCount, type ToggleGroupCountProps, ToggleGroupItem, type ToggleGroupItemProps, ToggleGroupLabel, type ToggleGroupLabelProps, type ToggleGroupProps };
1886
+ export { ChatPanelResizeHandle, type ChatPanelResizeHandleProps, ChatPanelStackContent, type ChatPanelStackContentProps, ChatPanelStackItem, type ChatPanelStackItemProps, ChatPanelStackRoot, type ChatPanelStackRootProps, ChatRailFooter, type ChatRailFooterProps, ChatRailHeader, type ChatRailHeaderProps, ChatRailItem, ChatRailItemBadge, type ChatRailItemBadgeProps, ChatRailItemIcon, type ChatRailItemIconProps, ChatRailItemIndicator, type ChatRailItemIndicatorProps, ChatRailItemLabel, type ChatRailItemLabelProps, type ChatRailItemProps, ChatRailNav, type ChatRailNavProps, ChatRailRoot, type ChatRailRootProps, ChatShellMain, type ChatShellMainProps, ChatShellMobileBar, type ChatShellMobileBarProps, ChatShellPanelStack, type ChatShellPanelStackProps, ChatShellRail, type ChatShellRailProps, ChatShellRoot, type ChatShellRootProps, ChatShellSidebar, type ChatShellSidebarProps, ChatSidebarBody, type ChatSidebarBodyProps, ChatSidebarFooter, type ChatSidebarFooterProps, ChatSidebarHeader, type ChatSidebarHeaderProps, ChatSidebarList, type ChatSidebarListProps, ChatSidebarRoot, type ChatSidebarRootProps, ChatSidebarSection, type ChatSidebarSectionProps, ConversationPreviewCard, ConversationPreviewCardAction, type ConversationPreviewCardActionProps, ConversationPreviewCardAuthor, ConversationPreviewCardAuthorName, type ConversationPreviewCardAuthorNameProps, type ConversationPreviewCardAuthorProps, ConversationPreviewCardAuthorSubtitle, type ConversationPreviewCardAuthorSubtitleProps, ConversationPreviewCardChannel, type ConversationPreviewCardChannelProps, ConversationPreviewCardContent, type ConversationPreviewCardContentProps, ConversationPreviewCardFooter, type ConversationPreviewCardFooterProps, ConversationPreviewCardMeta, type ConversationPreviewCardMetaProps, ConversationPreviewCardPreview, ConversationPreviewCardPreviewAuthor, type ConversationPreviewCardPreviewAuthorProps, ConversationPreviewCardPreviewLeading, type ConversationPreviewCardPreviewLeadingProps, type ConversationPreviewCardPreviewProps, type ConversationPreviewCardProps, ConversationPreviewCardSecondaryPreview, type ConversationPreviewCardSecondaryPreviewProps, ConversationPreviewCardTimestamp, type ConversationPreviewCardTimestampProps, DescriptionAction, type DescriptionActionProps, DescriptionDetails, type DescriptionDetailsProps, DescriptionItem, type DescriptionItemProps, DescriptionList, type DescriptionListProps, DescriptionTerm, type DescriptionTermProps, ListItem, ListItemActionGroup, type ListItemActionGroupProps, ListItemBody, type ListItemBodyProps, ListItemDescription, type ListItemDescriptionProps, ListItemIcon, type ListItemIconProps, ListItemMeta, type ListItemMetaProps, type ListItemProps, ListItemRow, type ListItemRowProps, ListItemTitle, type ListItemTitleProps, MESSAGE_QUICK_REACTIONS, MediaListItem, MediaListItemActionGroup, type MediaListItemActionGroupProps, MediaListItemAside, type MediaListItemAsideProps, MediaListItemBody, type MediaListItemBodyProps, type MediaListItemProps, MediaListItemSubtitle, type MediaListItemSubtitleProps, MediaListItemText, type MediaListItemTextProps, MediaListItemTitle, type MediaListItemTitleProps, MediaListItemVisual, type MediaListItemVisualProps, MessageAttachmentAction, type MessageAttachmentActionProps, MessageAttachmentBody, type MessageAttachmentBodyProps, MessageAttachmentCard, type MessageAttachmentCardProps, MessageAttachmentIcon, type MessageAttachmentIconProps, MessageAttachmentMeta, type MessageAttachmentMetaProps, MessageAttachmentTitle, type MessageAttachmentTitleProps, MessageImageGallery, MessageImageGalleryAction, type MessageImageGalleryActionProps, MessageImageGalleryItem, type MessageImageGalleryItemProps, MessageImageGalleryMedia, type MessageImageGalleryMediaProps, MessageImageGalleryOverlay, type MessageImageGalleryOverlayProps, type MessageImageGalleryProps, MessageImageGalleryRow, type MessageImageGalleryRowProps, MessageItem, MessageItemAttachments, type MessageItemAttachmentsProps, MessageItemAvatarSlot, type MessageItemAvatarSlotProps, MessageItemBadge, type MessageItemBadgeProps, type MessageItemBadgeTone, MessageItemBody, type MessageItemBodyProps, MessageItemContent, type MessageItemContentProps, MessageItemContinuationTime, type MessageItemContinuationTimeProps, MessageItemEmbedded, type MessageItemEmbeddedProps, MessageItemFooter, type MessageItemFooterProps, MessageItemGutter, type MessageItemGutterProps, MessageItemHeader, type MessageItemHeaderProps, MessageItemInlineStatus, type MessageItemInlineStatusProps, MessageItemMeta, type MessageItemMetaProps, MessageItemNotice, type MessageItemNoticeProps, type MessageItemProps, type MessageItemRowState, MessageItemSavedIndicator, type MessageItemSavedIndicatorProps, MessageItemSelectMark, type MessageItemSelectMarkProps, MessageItemSender, type MessageItemSenderProps, MessageItemSenderState, type MessageItemSenderStateProps, MessageItemTime, type MessageItemTimeProps, MessageItemToolbar, MessageItemToolbarButton, type MessageItemToolbarButtonProps, type MessageItemToolbarProps, MessageReactionChip, type MessageReactionChipProps, MessageReactionCount, type MessageReactionCountProps, MessageReactionGlyph, type MessageReactionGlyphProps, MessageReactionPicker, type MessageReactionPickerProps, MessageReactionPopover, MessageReactionPopoverName, type MessageReactionPopoverNameProps, MessageReactionPopoverNameText, type MessageReactionPopoverNameTextProps, MessageReactionPopoverNames, type MessageReactionPopoverNamesProps, type MessageReactionPopoverProps, MessageReactionPopoverSeparator, type MessageReactionPopoverSeparatorProps, MessageReactionQuickButton, type MessageReactionQuickButtonProps, MessageReactionQuickRow, type MessageReactionQuickRowProps, MessageVideoPreview, MessageVideoPreviewAction, type MessageVideoPreviewActionProps, MessageVideoPreviewFallback, type MessageVideoPreviewFallbackProps, MessageVideoPreviewFrame, type MessageVideoPreviewFrameProps, MessageVideoPreviewMedia, type MessageVideoPreviewMediaProps, type MessageVideoPreviewProps, PanelHeader, PanelHeaderActions, type PanelHeaderActionsProps, PanelHeaderContent, type PanelHeaderContentProps, PanelHeaderIcon, type PanelHeaderIconProps, type PanelHeaderProps, PanelHeaderSubtitle, type PanelHeaderSubtitleProps, PanelHeaderSuffix, type PanelHeaderSuffixProps, PanelHeaderTitle, type PanelHeaderTitleProps, PanelHeaderTitleRow, type PanelHeaderTitleRowProps, PanelHeaderVisual, type PanelHeaderVisualProps, PreviewShell, type PreviewShellProps, QuotedMessageCard, QuotedMessageCardAttachments, type QuotedMessageCardAttachmentsProps, QuotedMessageCardAuthor, QuotedMessageCardAuthorName, type QuotedMessageCardAuthorNameProps, type QuotedMessageCardAuthorProps, QuotedMessageCardAuthorSubtitle, type QuotedMessageCardAuthorSubtitleProps, QuotedMessageCardBody, type QuotedMessageCardBodyProps, QuotedMessageCardChannel, type QuotedMessageCardChannelProps, QuotedMessageCardContent, type QuotedMessageCardContentProps, QuotedMessageCardContentWrap, type QuotedMessageCardContentWrapProps, QuotedMessageCardHeader, type QuotedMessageCardHeaderProps, QuotedMessageCardMeta, type QuotedMessageCardMetaProps, type QuotedMessageCardProps, QuotedMessageCardSeparator, type QuotedMessageCardSeparatorProps, QuotedMessageCardTag, type QuotedMessageCardTagProps, QuotedMessageCardThread, type QuotedMessageCardThreadProps, QuotedMessageCardTimestamp, type QuotedMessageCardTimestampProps, QuotedMessageCardUnavailable, type QuotedMessageCardUnavailableProps, SectionHeader, SectionHeaderActions, type SectionHeaderActionsProps, SectionHeaderContent, type SectionHeaderContentProps, SectionHeaderCount, type SectionHeaderCountProps, SectionHeaderIcon, type SectionHeaderIconProps, type SectionHeaderProps, SectionHeaderTitle, type SectionHeaderTitleProps, SectionLabel, type SectionLabelProps, SystemMessageItem, SystemMessageItemContent, type SystemMessageItemContentProps, type SystemMessageItemProps, SystemMessageItemTime, type SystemMessageItemTimeProps, ToggleGroup, ToggleGroupCount, type ToggleGroupCountProps, ToggleGroupItem, type ToggleGroupItemProps, ToggleGroupLabel, type ToggleGroupLabelProps, type ToggleGroupProps };
package/dist/wip.mjs CHANGED
@@ -1,12 +1,460 @@
1
1
  import { cn } from "./cn.mjs";
2
2
  import { a as tv, n as useThemeFamily } from "./use-theme-Y_h1DKll.mjs";
3
3
  import { Check, MessageSquare } from "lucide-react";
4
+ import { createContext, useContext, useMemo } from "react";
4
5
  import { Button } from "@base-ui/react/button";
5
6
  import { mergeProps } from "@base-ui/react/merge-props";
6
7
  import { useRender } from "@base-ui/react/use-render";
7
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
9
  import { Toggle } from "@base-ui/react/toggle";
9
10
  import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
11
+ //#region src/components/chat-shell/chat-shell.tsx
12
+ const chatShell = tv({
13
+ slots: {
14
+ root: [
15
+ "flex min-h-0 w-full overflow-hidden",
16
+ "font-sans text-foreground",
17
+ "data-[presentation=mobile]:flex-col"
18
+ ],
19
+ shellRail: ["hidden h-full shrink-0 select-none md:flex"],
20
+ shellSidebar: ["hidden min-h-0 shrink-0 flex-col md:flex"],
21
+ shellMain: ["flex min-h-0 min-w-0 flex-1 flex-col"],
22
+ shellPanelStack: ["hidden min-h-0 shrink-0 lg:flex"],
23
+ mobileBar: ["shrink-0 md:hidden"],
24
+ railRoot: ["flex h-full w-full flex-col items-center"],
25
+ railHeader: ["relative flex w-full shrink-0 items-center justify-center"],
26
+ railNav: ["flex min-h-0 flex-1 flex-col items-center gap-1.5 overflow-y-auto py-2"],
27
+ railFooter: ["flex w-full shrink-0 flex-col items-center justify-center gap-1.5"],
28
+ railItem: [
29
+ "relative inline-flex shrink-0 items-center justify-center",
30
+ "outline-none transition-colors",
31
+ "disabled:pointer-events-none disabled:opacity-45",
32
+ "[&_svg]:size-[18px] [&_svg]:shrink-0"
33
+ ],
34
+ railItemIcon: ["relative inline-flex items-center justify-center"],
35
+ railItemLabel: ["sr-only"],
36
+ railItemBadge: ["absolute -right-1 -top-1 inline-flex min-w-4 items-center justify-center", "px-1 text-[10px] font-bold leading-4"],
37
+ railItemIndicator: ["pointer-events-none absolute -right-1 -top-1 size-2.5"],
38
+ sidebarRoot: ["flex h-full min-h-0 w-full flex-col"],
39
+ sidebarHeader: ["flex shrink-0 items-center gap-3"],
40
+ sidebarBody: ["min-h-0 flex-1 overflow-y-auto"],
41
+ sidebarSection: ["px-2"],
42
+ sidebarList: ["space-y-1"],
43
+ sidebarFooter: ["shrink-0"],
44
+ panelStackRoot: ["flex h-full min-h-0 w-full"],
45
+ panelStackItem: ["relative flex h-full min-h-0 shrink-0 flex-col"],
46
+ panelStackContent: ["min-h-0 flex-1 overflow-hidden"],
47
+ resizeHandle: ["absolute inset-y-0 left-0 z-10 w-2 -translate-x-1 cursor-col-resize select-none"]
48
+ },
49
+ variants: {
50
+ theme: {
51
+ brutal: {
52
+ root: "bg-brutal-cream text-black",
53
+ shellRail: "w-16 border-r-2 border-black bg-soft-signal",
54
+ shellSidebar: "w-72 border-r-2 border-black bg-brutal-cream",
55
+ shellMain: "bg-white",
56
+ shellPanelStack: "border-l-2 border-black bg-white",
57
+ mobileBar: "border-t-2 border-black bg-white text-black",
58
+ railHeader: "h-[62px] border-b-2 border-black [@media(max-height:600px)]:h-12",
59
+ railFooter: "min-h-[62px] pb-2 [@media(max-height:600px)]:min-h-12",
60
+ railItem: [
61
+ "size-10 border-2 border-transparent text-black",
62
+ "hover:border-black hover:bg-white",
63
+ "active:border-black active:bg-white active:shadow-xs",
64
+ "data-[selected=true]:border-black data-[selected=true]:bg-white data-[selected=true]:shadow-sm",
65
+ "[@media(max-height:600px)]:size-9"
66
+ ],
67
+ railItemBadge: "border-2 border-black bg-brutal-pink text-black",
68
+ railItemIndicator: "border-2 border-black bg-brutal-red",
69
+ sidebarHeader: "min-h-[62px] border-b-2 border-black bg-brutal-cream px-3",
70
+ sidebarBody: "bg-brutal-cream py-2",
71
+ sidebarFooter: "border-t-2 border-black bg-brutal-cream p-3",
72
+ panelStackItem: "w-80 border-l-2 border-black bg-white first:border-l-0",
73
+ resizeHandle: "hover:bg-black/5"
74
+ },
75
+ elegant: {
76
+ root: "bg-layer-muted text-foreground",
77
+ shellRail: "w-16 border-r border-line-subtle bg-layer-panel",
78
+ shellSidebar: "w-72 border-r border-line-subtle bg-layer-panel",
79
+ shellMain: "bg-layer-panel",
80
+ shellPanelStack: "border-l border-line-subtle bg-layer-panel",
81
+ mobileBar: "border-t border-line-subtle bg-layer-panel text-foreground",
82
+ railHeader: "h-[62px] border-b border-line-subtle",
83
+ railFooter: "min-h-[62px] pb-2",
84
+ railItem: [
85
+ "size-10 rounded-md border border-transparent text-foreground-muted",
86
+ "hover:bg-layer-muted hover:text-foreground-strong",
87
+ "active:bg-layer-muted active:text-foreground-strong",
88
+ "focus-visible:ring-2 focus-visible:ring-line-focus",
89
+ "data-[selected=true]:border-line-subtle data-[selected=true]:bg-layer-muted data-[selected=true]:text-foreground-strong data-[selected=true]:shadow-xs"
90
+ ],
91
+ railItemBadge: "rounded-full bg-accent-400 text-accent-950",
92
+ railItemIndicator: "rounded-full bg-danger-base",
93
+ sidebarHeader: "min-h-[62px] border-b border-line-subtle px-4",
94
+ sidebarBody: "bg-layer-panel py-2",
95
+ sidebarFooter: "border-t border-line-subtle p-3",
96
+ panelStackItem: "w-80 border-l border-line-subtle bg-layer-panel first:border-l-0",
97
+ resizeHandle: "hover:bg-layer-muted"
98
+ }
99
+ },
100
+ presentation: {
101
+ desktop: {},
102
+ mobile: {
103
+ shellRail: "hidden",
104
+ shellSidebar: "flex w-full flex-1 border-r-0 md:flex",
105
+ shellMain: "hidden",
106
+ shellPanelStack: "hidden",
107
+ mobileBar: "flex"
108
+ }
109
+ },
110
+ resizable: {
111
+ true: {
112
+ shellSidebar: "relative",
113
+ panelStackRoot: "relative"
114
+ },
115
+ false: {}
116
+ },
117
+ open: {
118
+ true: {},
119
+ false: { panelStackItem: "hidden" }
120
+ }
121
+ },
122
+ defaultVariants: {
123
+ presentation: "desktop",
124
+ resizable: false,
125
+ open: true
126
+ }
127
+ });
128
+ const ChatRailContext = createContext(null);
129
+ function useChatRail() {
130
+ return useContext(ChatRailContext);
131
+ }
132
+ function ChatShellRoot({ presentation, hidden, className, render, ...props }) {
133
+ const { root } = chatShell({
134
+ theme: useThemeFamily(),
135
+ presentation
136
+ });
137
+ if (hidden) return null;
138
+ return useRender({
139
+ defaultTagName: "div",
140
+ render,
141
+ props: mergeProps({
142
+ "data-slot": "chat-shell-root",
143
+ "data-presentation": presentation ?? "desktop",
144
+ className: root({ className })
145
+ }, props)
146
+ });
147
+ }
148
+ function ChatShellRail({ hidden, className, render, ...props }) {
149
+ const { shellRail } = chatShell({ theme: useThemeFamily() });
150
+ if (hidden) return null;
151
+ return useRender({
152
+ defaultTagName: "aside",
153
+ render,
154
+ props: mergeProps({
155
+ "data-slot": "chat-shell-rail",
156
+ className: shellRail({ className })
157
+ }, props)
158
+ });
159
+ }
160
+ function ChatShellSidebar({ hidden, resizable, className, render, ...props }) {
161
+ const { shellSidebar } = chatShell({
162
+ theme: useThemeFamily(),
163
+ resizable
164
+ });
165
+ if (hidden) return null;
166
+ return useRender({
167
+ defaultTagName: "aside",
168
+ render,
169
+ props: mergeProps({
170
+ "data-slot": "chat-shell-sidebar",
171
+ "data-resizable": resizable ? "true" : void 0,
172
+ className: shellSidebar({ className })
173
+ }, props)
174
+ });
175
+ }
176
+ function ChatShellMain({ hidden, className, render, ...props }) {
177
+ const { shellMain } = chatShell({ theme: useThemeFamily() });
178
+ if (hidden) return null;
179
+ return useRender({
180
+ defaultTagName: "main",
181
+ render,
182
+ props: mergeProps({
183
+ "data-slot": "chat-shell-main",
184
+ className: shellMain({ className })
185
+ }, props)
186
+ });
187
+ }
188
+ function ChatShellPanelStack({ hidden, resizable, className, render, ...props }) {
189
+ const { shellPanelStack } = chatShell({
190
+ theme: useThemeFamily(),
191
+ resizable
192
+ });
193
+ if (hidden) return null;
194
+ return useRender({
195
+ defaultTagName: "aside",
196
+ render,
197
+ props: mergeProps({
198
+ "data-slot": "chat-shell-panel-stack",
199
+ "data-resizable": resizable ? "true" : void 0,
200
+ className: shellPanelStack({ className })
201
+ }, props)
202
+ });
203
+ }
204
+ function ChatShellMobileBar({ hidden, className, render, ...props }) {
205
+ const { mobileBar } = chatShell({ theme: useThemeFamily() });
206
+ if (hidden) return null;
207
+ return useRender({
208
+ defaultTagName: "nav",
209
+ render,
210
+ props: mergeProps({
211
+ "data-slot": "chat-shell-mobile-bar",
212
+ className: mobileBar({ className })
213
+ }, props)
214
+ });
215
+ }
216
+ function ChatRailRoot({ value, onValueChange, className, render, ...props }) {
217
+ const { railRoot } = chatShell();
218
+ const contextValue = useMemo(() => ({
219
+ value,
220
+ onValueChange
221
+ }), [value, onValueChange]);
222
+ const element = useRender({
223
+ defaultTagName: "div",
224
+ render,
225
+ props: mergeProps({
226
+ "data-slot": "chat-rail-root",
227
+ className: railRoot({ className })
228
+ }, props)
229
+ });
230
+ return /* @__PURE__ */ jsx(ChatRailContext.Provider, {
231
+ value: contextValue,
232
+ children: element
233
+ });
234
+ }
235
+ function ChatRailHeader({ className, render, ...props }) {
236
+ const { railHeader } = chatShell({ theme: useThemeFamily() });
237
+ return useRender({
238
+ defaultTagName: "div",
239
+ render,
240
+ props: mergeProps({
241
+ "data-slot": "chat-rail-header",
242
+ className: railHeader({ className })
243
+ }, props)
244
+ });
245
+ }
246
+ function ChatRailNav({ className, render, ...props }) {
247
+ const { railNav } = chatShell();
248
+ return useRender({
249
+ defaultTagName: "nav",
250
+ render,
251
+ props: mergeProps({
252
+ "data-slot": "chat-rail-nav",
253
+ className: railNav({ className })
254
+ }, props)
255
+ });
256
+ }
257
+ function ChatRailItem({ value, selected, disabled, onSelect, onClick, className, render, ...props }) {
258
+ const theme = useThemeFamily();
259
+ const context = useChatRail();
260
+ const isSelected = selected ?? (value !== void 0 && context?.value === value);
261
+ const { railItem } = chatShell({ theme });
262
+ const handleClick = (event) => {
263
+ onClick?.(event);
264
+ if (event.defaultPrevented || disabled || value === void 0) return;
265
+ onSelect?.(value);
266
+ context?.onValueChange?.(value);
267
+ };
268
+ const defaultProps = {
269
+ type: "button",
270
+ disabled,
271
+ onClick: handleClick,
272
+ "aria-pressed": isSelected,
273
+ "data-slot": "chat-rail-item",
274
+ "data-selected": isSelected ? "true" : void 0,
275
+ "data-disabled": disabled ? "true" : void 0,
276
+ className: railItem({ className })
277
+ };
278
+ return useRender({
279
+ render: render ?? /* @__PURE__ */ jsx(Button, {}),
280
+ props: mergeProps(defaultProps, props)
281
+ });
282
+ }
283
+ function ChatRailItemIcon({ className, render, ...props }) {
284
+ const { railItemIcon } = chatShell();
285
+ return useRender({
286
+ defaultTagName: "span",
287
+ render,
288
+ props: mergeProps({
289
+ "data-slot": "chat-rail-item-icon",
290
+ className: railItemIcon({ className })
291
+ }, props)
292
+ });
293
+ }
294
+ function ChatRailItemLabel({ className, render, ...props }) {
295
+ const { railItemLabel } = chatShell();
296
+ return useRender({
297
+ defaultTagName: "span",
298
+ render,
299
+ props: mergeProps({
300
+ "data-slot": "chat-rail-item-label",
301
+ className: railItemLabel({ className })
302
+ }, props)
303
+ });
304
+ }
305
+ function ChatRailItemBadge({ className, render, ...props }) {
306
+ const { railItemBadge } = chatShell({ theme: useThemeFamily() });
307
+ return useRender({
308
+ defaultTagName: "span",
309
+ render,
310
+ props: mergeProps({
311
+ "data-slot": "chat-rail-item-badge",
312
+ className: railItemBadge({ className })
313
+ }, props)
314
+ });
315
+ }
316
+ function ChatRailItemIndicator({ className, render, ...props }) {
317
+ const { railItemIndicator } = chatShell({ theme: useThemeFamily() });
318
+ return useRender({
319
+ defaultTagName: "span",
320
+ render,
321
+ props: mergeProps({
322
+ "data-slot": "chat-rail-item-indicator",
323
+ className: railItemIndicator({ className })
324
+ }, props)
325
+ });
326
+ }
327
+ function ChatRailFooter({ className, render, ...props }) {
328
+ const { railFooter } = chatShell({ theme: useThemeFamily() });
329
+ return useRender({
330
+ defaultTagName: "div",
331
+ render,
332
+ props: mergeProps({
333
+ "data-slot": "chat-rail-footer",
334
+ className: railFooter({ className })
335
+ }, props)
336
+ });
337
+ }
338
+ function ChatSidebarRoot({ className, render, ...props }) {
339
+ const { sidebarRoot } = chatShell();
340
+ return useRender({
341
+ defaultTagName: "div",
342
+ render,
343
+ props: mergeProps({
344
+ "data-slot": "chat-sidebar-root",
345
+ className: sidebarRoot({ className })
346
+ }, props)
347
+ });
348
+ }
349
+ function ChatSidebarHeader({ className, render, ...props }) {
350
+ const { sidebarHeader } = chatShell({ theme: useThemeFamily() });
351
+ return useRender({
352
+ defaultTagName: "div",
353
+ render,
354
+ props: mergeProps({
355
+ "data-slot": "chat-sidebar-header",
356
+ className: sidebarHeader({ className })
357
+ }, props)
358
+ });
359
+ }
360
+ function ChatSidebarBody({ className, render, ...props }) {
361
+ const { sidebarBody } = chatShell({ theme: useThemeFamily() });
362
+ return useRender({
363
+ defaultTagName: "div",
364
+ render,
365
+ props: mergeProps({
366
+ "data-slot": "chat-sidebar-body",
367
+ className: sidebarBody({ className })
368
+ }, props)
369
+ });
370
+ }
371
+ function ChatSidebarSection({ className, render, ...props }) {
372
+ const { sidebarSection } = chatShell();
373
+ return useRender({
374
+ defaultTagName: "section",
375
+ render,
376
+ props: mergeProps({
377
+ "data-slot": "chat-sidebar-section",
378
+ className: sidebarSection({ className })
379
+ }, props)
380
+ });
381
+ }
382
+ function ChatSidebarList({ className, render, ...props }) {
383
+ const { sidebarList } = chatShell();
384
+ return useRender({
385
+ defaultTagName: "div",
386
+ render,
387
+ props: mergeProps({
388
+ "data-slot": "chat-sidebar-list",
389
+ className: sidebarList({ className })
390
+ }, props)
391
+ });
392
+ }
393
+ function ChatSidebarFooter({ className, render, ...props }) {
394
+ const { sidebarFooter } = chatShell({ theme: useThemeFamily() });
395
+ return useRender({
396
+ defaultTagName: "div",
397
+ render,
398
+ props: mergeProps({
399
+ "data-slot": "chat-sidebar-footer",
400
+ className: sidebarFooter({ className })
401
+ }, props)
402
+ });
403
+ }
404
+ function ChatPanelStackRoot({ resizable, className, render, ...props }) {
405
+ const { panelStackRoot } = chatShell({ resizable });
406
+ return useRender({
407
+ defaultTagName: "div",
408
+ render,
409
+ props: mergeProps({
410
+ "data-slot": "chat-panel-stack-root",
411
+ "data-resizable": resizable ? "true" : void 0,
412
+ className: panelStackRoot({ className })
413
+ }, props)
414
+ });
415
+ }
416
+ function ChatPanelStackItem({ open, className, render, ...props }) {
417
+ const { panelStackItem } = chatShell({
418
+ theme: useThemeFamily(),
419
+ open
420
+ });
421
+ return useRender({
422
+ defaultTagName: "section",
423
+ render,
424
+ props: mergeProps({
425
+ "data-slot": "chat-panel-stack-item",
426
+ "data-open": open === false ? "false" : "true",
427
+ className: panelStackItem({ className })
428
+ }, props)
429
+ });
430
+ }
431
+ function ChatPanelStackContent({ className, render, ...props }) {
432
+ const { panelStackContent } = chatShell();
433
+ return useRender({
434
+ defaultTagName: "div",
435
+ render,
436
+ props: mergeProps({
437
+ "data-slot": "chat-panel-stack-content",
438
+ className: panelStackContent({ className })
439
+ }, props)
440
+ });
441
+ }
442
+ function ChatPanelResizeHandle({ disabled, orientation = "vertical", className, render, ...props }) {
443
+ const { resizeHandle } = chatShell({ theme: useThemeFamily() });
444
+ return useRender({
445
+ defaultTagName: "div",
446
+ render,
447
+ props: mergeProps({
448
+ role: "separator",
449
+ "aria-orientation": orientation,
450
+ "aria-disabled": disabled,
451
+ "data-slot": "chat-panel-resize-handle",
452
+ "data-disabled": disabled ? "true" : void 0,
453
+ className: resizeHandle({ className })
454
+ }, props)
455
+ });
456
+ }
457
+ //#endregion
10
458
  //#region src/components/toggle-group/toggle-group.tsx
11
459
  const toggleGroup = tv({
12
460
  slots: {
@@ -635,7 +1083,7 @@ function QuotedMessageCardThread({ className, render, children = "Thread", ...pr
635
1083
  render,
636
1084
  props: mergeProps({
637
1085
  className: thread({ className }),
638
- children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(MessageSquare, {}), children] })
1086
+ children: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(MessageSquare, {}), children] })
639
1087
  }, props),
640
1088
  state: { slot: "quoted-message-card-thread" }
641
1089
  });
@@ -1760,4 +2208,4 @@ function MessageReactionPopoverSeparator({ className, render, ...props }) {
1760
2208
  });
1761
2209
  }
1762
2210
  //#endregion
1763
- export { ConversationPreviewCard, ConversationPreviewCardAction, ConversationPreviewCardAuthor, ConversationPreviewCardAuthorName, ConversationPreviewCardAuthorSubtitle, ConversationPreviewCardChannel, ConversationPreviewCardContent, ConversationPreviewCardFooter, ConversationPreviewCardMeta, ConversationPreviewCardPreview, ConversationPreviewCardPreviewAuthor, ConversationPreviewCardPreviewLeading, ConversationPreviewCardSecondaryPreview, ConversationPreviewCardTimestamp, DescriptionAction, DescriptionDetails, DescriptionItem, DescriptionList, DescriptionTerm, ListItem, ListItemActionGroup, ListItemBody, ListItemDescription, ListItemIcon, ListItemMeta, ListItemRow, ListItemTitle, MESSAGE_QUICK_REACTIONS, MediaListItem, MediaListItemActionGroup, MediaListItemAside, MediaListItemBody, MediaListItemSubtitle, MediaListItemText, MediaListItemTitle, MediaListItemVisual, MessageAttachmentAction, MessageAttachmentBody, MessageAttachmentCard, MessageAttachmentIcon, MessageAttachmentMeta, MessageAttachmentTitle, MessageImageGallery, MessageImageGalleryAction, MessageImageGalleryItem, MessageImageGalleryMedia, MessageImageGalleryOverlay, MessageImageGalleryRow, MessageItem, MessageItemAttachments, MessageItemAvatarSlot, MessageItemBadge, MessageItemBody, MessageItemContent, MessageItemContinuationTime, MessageItemEmbedded, MessageItemFooter, MessageItemGutter, MessageItemHeader, MessageItemInlineStatus, MessageItemMeta, MessageItemNotice, MessageItemSavedIndicator, MessageItemSelectMark, MessageItemSender, MessageItemSenderState, MessageItemTime, MessageItemToolbar, MessageItemToolbarButton, MessageReactionChip, MessageReactionCount, MessageReactionGlyph, MessageReactionPicker, MessageReactionPopover, MessageReactionPopoverName, MessageReactionPopoverNameText, MessageReactionPopoverNames, MessageReactionPopoverSeparator, MessageReactionQuickButton, MessageReactionQuickRow, MessageVideoPreview, MessageVideoPreviewAction, MessageVideoPreviewFallback, MessageVideoPreviewFrame, MessageVideoPreviewMedia, PanelHeader, PanelHeaderActions, PanelHeaderContent, PanelHeaderIcon, PanelHeaderSubtitle, PanelHeaderSuffix, PanelHeaderTitle, PanelHeaderTitleRow, PanelHeaderVisual, PreviewShell, QuotedMessageCard, QuotedMessageCardAttachments, QuotedMessageCardAuthor, QuotedMessageCardAuthorName, QuotedMessageCardAuthorSubtitle, QuotedMessageCardBody, QuotedMessageCardChannel, QuotedMessageCardContent, QuotedMessageCardContentWrap, QuotedMessageCardHeader, QuotedMessageCardMeta, QuotedMessageCardSeparator, QuotedMessageCardTag, QuotedMessageCardThread, QuotedMessageCardTimestamp, QuotedMessageCardUnavailable, SectionHeader, SectionHeaderActions, SectionHeaderContent, SectionHeaderCount, SectionHeaderIcon, SectionHeaderTitle, SectionLabel, SystemMessageItem, SystemMessageItemContent, SystemMessageItemTime, ToggleGroup, ToggleGroupCount, ToggleGroupItem, ToggleGroupLabel };
2211
+ export { ChatPanelResizeHandle, ChatPanelStackContent, ChatPanelStackItem, ChatPanelStackRoot, ChatRailFooter, ChatRailHeader, ChatRailItem, ChatRailItemBadge, ChatRailItemIcon, ChatRailItemIndicator, ChatRailItemLabel, ChatRailNav, ChatRailRoot, ChatShellMain, ChatShellMobileBar, ChatShellPanelStack, ChatShellRail, ChatShellRoot, ChatShellSidebar, ChatSidebarBody, ChatSidebarFooter, ChatSidebarHeader, ChatSidebarList, ChatSidebarRoot, ChatSidebarSection, ConversationPreviewCard, ConversationPreviewCardAction, ConversationPreviewCardAuthor, ConversationPreviewCardAuthorName, ConversationPreviewCardAuthorSubtitle, ConversationPreviewCardChannel, ConversationPreviewCardContent, ConversationPreviewCardFooter, ConversationPreviewCardMeta, ConversationPreviewCardPreview, ConversationPreviewCardPreviewAuthor, ConversationPreviewCardPreviewLeading, ConversationPreviewCardSecondaryPreview, ConversationPreviewCardTimestamp, DescriptionAction, DescriptionDetails, DescriptionItem, DescriptionList, DescriptionTerm, ListItem, ListItemActionGroup, ListItemBody, ListItemDescription, ListItemIcon, ListItemMeta, ListItemRow, ListItemTitle, MESSAGE_QUICK_REACTIONS, MediaListItem, MediaListItemActionGroup, MediaListItemAside, MediaListItemBody, MediaListItemSubtitle, MediaListItemText, MediaListItemTitle, MediaListItemVisual, MessageAttachmentAction, MessageAttachmentBody, MessageAttachmentCard, MessageAttachmentIcon, MessageAttachmentMeta, MessageAttachmentTitle, MessageImageGallery, MessageImageGalleryAction, MessageImageGalleryItem, MessageImageGalleryMedia, MessageImageGalleryOverlay, MessageImageGalleryRow, MessageItem, MessageItemAttachments, MessageItemAvatarSlot, MessageItemBadge, MessageItemBody, MessageItemContent, MessageItemContinuationTime, MessageItemEmbedded, MessageItemFooter, MessageItemGutter, MessageItemHeader, MessageItemInlineStatus, MessageItemMeta, MessageItemNotice, MessageItemSavedIndicator, MessageItemSelectMark, MessageItemSender, MessageItemSenderState, MessageItemTime, MessageItemToolbar, MessageItemToolbarButton, MessageReactionChip, MessageReactionCount, MessageReactionGlyph, MessageReactionPicker, MessageReactionPopover, MessageReactionPopoverName, MessageReactionPopoverNameText, MessageReactionPopoverNames, MessageReactionPopoverSeparator, MessageReactionQuickButton, MessageReactionQuickRow, MessageVideoPreview, MessageVideoPreviewAction, MessageVideoPreviewFallback, MessageVideoPreviewFrame, MessageVideoPreviewMedia, PanelHeader, PanelHeaderActions, PanelHeaderContent, PanelHeaderIcon, PanelHeaderSubtitle, PanelHeaderSuffix, PanelHeaderTitle, PanelHeaderTitleRow, PanelHeaderVisual, PreviewShell, QuotedMessageCard, QuotedMessageCardAttachments, QuotedMessageCardAuthor, QuotedMessageCardAuthorName, QuotedMessageCardAuthorSubtitle, QuotedMessageCardBody, QuotedMessageCardChannel, QuotedMessageCardContent, QuotedMessageCardContentWrap, QuotedMessageCardHeader, QuotedMessageCardMeta, QuotedMessageCardSeparator, QuotedMessageCardTag, QuotedMessageCardThread, QuotedMessageCardTimestamp, QuotedMessageCardUnavailable, SectionHeader, SectionHeaderActions, SectionHeaderContent, SectionHeaderCount, SectionHeaderIcon, SectionHeaderTitle, SectionLabel, SystemMessageItem, SystemMessageItemContent, SystemMessageItemTime, ToggleGroup, ToggleGroupCount, ToggleGroupItem, ToggleGroupLabel };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "raft-ui",
3
- "version": "0.0.15",
3
+ "version": "0.0.17",
4
4
  "description": "React UI components for Raft.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,6 +26,7 @@
26
26
  "types": "./dist/wip.d.mts",
27
27
  "default": "./dist/wip.mjs"
28
28
  },
29
+ "./fonts.css": "./dist/fonts.css",
29
30
  "./styles.css": "./dist/styles.css",
30
31
  "./package.json": "./package.json"
31
32
  },