@justanarthur/modo-ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +18 -15
  2. package/dist/blocks/sidebar-app/index.js +6 -6
  3. package/dist/components/{inputs → AI}/input-message/index.js +2 -2
  4. package/dist/components/AI/thinking-indicator/index.js +13 -0
  5. package/dist/components/accordion/index.js +28 -0
  6. package/dist/components/card/index.js +2 -2
  7. package/dist/components/{inputs/input-copy → copy}/index.d.ts +7 -7
  8. package/dist/components/copy/index.js +16 -0
  9. package/dist/components/inputs/checkbox/index.d.ts +62 -0
  10. package/dist/components/inputs/{checkbox-group → checkbox}/index.js +7 -6
  11. package/dist/components/inputs/color-picker/index.js +2 -2
  12. package/dist/components/inputs/combobox/index.d.ts +1 -1
  13. package/dist/components/inputs/combobox/index.js +2 -2
  14. package/dist/components/inputs/date-time/calendar/index.js +3 -3
  15. package/dist/components/inputs/date-time/date-picker/index.js +5 -5
  16. package/dist/components/inputs/date-time/date-range-picker/index.js +4 -4
  17. package/dist/components/inputs/date-time/duration-picker/index.js +4 -4
  18. package/dist/components/inputs/date-time/month-picker/index.js +3 -3
  19. package/dist/components/inputs/date-time/time-picker/index.js +4 -4
  20. package/dist/components/inputs/{radio-group → radio}/index.d.ts +30 -30
  21. package/dist/components/inputs/{radio-group → radio}/index.js +7 -6
  22. package/dist/components/inputs/search/index.js +3 -3
  23. package/dist/components/inputs/select/index.js +2 -2
  24. package/dist/components/inputs/switch/index.d.ts +27 -6
  25. package/dist/components/inputs/switch/index.js +8 -1
  26. package/dist/components/navigation/sidebar/index.js +3 -3
  27. package/dist/components/navigation/tabs/index.js +2 -2
  28. package/dist/components/navigation/tabs-subtle/index.js +2 -2
  29. package/dist/components/overlays/command/index.js +2 -2
  30. package/dist/components/overlays/context-menu/index.js +3 -3
  31. package/dist/components/overlays/dropdown/index.d.ts +2 -2
  32. package/dist/components/overlays/dropdown/index.js +2 -2
  33. package/dist/components/table/index.js +2 -2
  34. package/dist/index.d.ts +807 -774
  35. package/dist/index.js +51 -48
  36. package/dist/primitives/fluid-hover/index.js +2 -2
  37. package/dist/primitives/morph/index.d.ts +2 -2
  38. package/dist/primitives/sizes/index.d.ts +2 -2
  39. package/dist/shared/{components-1rfwbyyc.js → components-1z6tdadk.js} +1 -1
  40. package/dist/shared/{components-7x9kawxv.js → components-27nnvrwe.js} +1 -1
  41. package/dist/shared/{components-njzgqdwy.js → components-2n3whx7z.js} +2 -2
  42. package/dist/shared/{components-v7wtz8hk.js → components-2nhgyh31.js} +3 -3
  43. package/dist/shared/{components-4cnjmgex.js → components-3fbbvq5j.js} +1 -1
  44. package/dist/shared/{components-asr5pg50.js → components-8snj490h.js} +106 -9
  45. package/dist/shared/{components-1xekx2hx.js → components-ar66gnt0.js} +1 -1
  46. package/dist/shared/{components-3wk0w46f.js → components-b3c5et5b.js} +1 -1
  47. package/dist/shared/{components-ez65vtbq.js → components-bshdmf75.js} +2 -2
  48. package/dist/shared/{components-yh3kwdhr.js → components-d6xtjht3.js} +3 -3
  49. package/dist/shared/{components-ytb2tefr.js → components-hyq23phv.js} +39 -20
  50. package/dist/shared/{components-cbxjn9p8.js → components-k809mbn0.js} +2 -2
  51. package/dist/shared/{components-q4daerx0.js → components-mjthm1kf.js} +1 -1
  52. package/dist/shared/{components-ny774h8p.js → components-pbmqctfa.js} +15 -8
  53. package/dist/shared/{components-7ans7ce5.js → components-re6rs21k.js} +2 -2
  54. package/dist/shared/{components-1j9791sn.js → components-s083f38z.js} +5 -5
  55. package/dist/shared/components-ta7shw28.js +19 -0
  56. package/dist/shared/{components-66mv71kx.js → components-xxvdw7k1.js} +1 -1
  57. package/dist/styles.css +1 -1
  58. package/package.json +1 -1
  59. package/dist/components/inputs/checkbox-group/index.d.ts +0 -50
  60. package/dist/components/inputs/input-copy/index.js +0 -16
  61. package/dist/components/navigation/accordion/index.js +0 -28
  62. package/dist/components/thinking-indicator/index.js +0 -13
  63. /package/dist/components/{inputs → AI}/input-message/index.d.ts +0 -0
  64. /package/dist/components/{thinking-indicator → AI/thinking-indicator}/index.d.ts +0 -0
  65. /package/dist/components/{navigation/accordion → accordion}/index.d.ts +0 -0
  66. /package/dist/shared/{components-0ke6xada.js → components-1434p1mh.js} +0 -0
  67. /package/dist/shared/{components-h2dpcwgc.js → components-2dxkv6zm.js} +0 -0
  68. /package/dist/shared/{components-8fpr3s4p.js → components-39vmfq9s.js} +0 -0
  69. /package/dist/shared/{components-3gae8nta.js → components-8ey44d79.js} +0 -0
  70. /package/dist/shared/{components-nh8tma1n.js → components-a86dytt0.js} +0 -0
  71. /package/dist/shared/{components-v6xp325t.js → components-dk0gjr5a.js} +0 -0
  72. /package/dist/shared/{components-62ybc7t2.js → components-frw34b65.js} +0 -0
  73. /package/dist/shared/{components-9jvzzvt1.js → components-gz8zf3ec.js} +0 -0
  74. /package/dist/shared/{components-tqvarbfv.js → components-hw9yk32z.js} +0 -0
  75. /package/dist/shared/{components-apdwtweq.js → components-jbbmdr74.js} +0 -0
  76. /package/dist/shared/{components-3k8xpnpq.js → components-jthe1pwb.js} +0 -0
  77. /package/dist/shared/{components-ca2c898n.js → components-nb87fjy4.js} +0 -0
package/dist/index.js CHANGED
@@ -98,7 +98,7 @@ import {
98
98
  SidebarMenuSubButton2,
99
99
  Sidebar2,
100
100
  SidebarContent2
101
- } from "./shared/components-ca2c898n.js";
101
+ } from "./shared/components-nb87fjy4.js";
102
102
  import"./shared/components-chacnk61.js";
103
103
  import {
104
104
  FluidHoverHighlight2
@@ -126,10 +126,24 @@ import {
126
126
  DropdownContent2,
127
127
  DropdownLabel2,
128
128
  DropdownSeparator2
129
- } from "./shared/components-nh8tma1n.js";
129
+ } from "./shared/components-a86dytt0.js";
130
130
  import {
131
131
  SidebarApp2
132
- } from "./shared/components-njzgqdwy.js";
132
+ } from "./shared/components-2n3whx7z.js";
133
+ import {
134
+ FileThumbnail2,
135
+ InputMessage2
136
+ } from "./shared/components-d6xtjht3.js";
137
+ import {
138
+ ThinkingIndicator2
139
+ } from "./shared/components-27nnvrwe.js";
140
+ import {
141
+ AccordionGroup2,
142
+ Accordion2,
143
+ AccordionItem2,
144
+ AccordionTrigger2,
145
+ AccordionContent2
146
+ } from "./shared/components-b3c5et5b.js";
133
147
  import {
134
148
  badgeColors2,
135
149
  badgeVariants2,
@@ -149,11 +163,15 @@ import {
149
163
  CardEyebrow2,
150
164
  CardFeature2,
151
165
  CardButton2
152
- } from "./shared/components-apdwtweq.js";
166
+ } from "./shared/components-jbbmdr74.js";
167
+ import {
168
+ Copy2
169
+ } from "./shared/components-s083f38z.js";
170
+ import"./shared/components-ta7shw28.js";
153
171
  import {
154
172
  CheckboxGroup2,
155
- CheckboxItem2
156
- } from "./shared/components-ytb2tefr.js";
173
+ Checkbox2
174
+ } from "./shared/components-hyq23phv.js";
157
175
  import {
158
176
  Slider2,
159
177
  SliderComfortable2
@@ -166,7 +184,7 @@ import {
166
184
  ColorSwatch2,
167
185
  ColorPicker2,
168
186
  ColorPickerPopover2
169
- } from "./shared/components-3k8xpnpq.js";
187
+ } from "./shared/components-jthe1pwb.js";
170
188
  import {
171
189
  Combobox2,
172
190
  ComboboxInput2,
@@ -175,44 +193,37 @@ import {
175
193
  ComboboxList2,
176
194
  ComboboxItem2,
177
195
  ComboboxEmpty2
178
- } from "./shared/components-3gae8nta.js";
179
- import"./shared/components-9jvzzvt1.js";
196
+ } from "./shared/components-8ey44d79.js";
197
+ import"./shared/components-gz8zf3ec.js";
180
198
  import {
181
199
  Calendar2
182
- } from "./shared/components-1rfwbyyc.js";
200
+ } from "./shared/components-1z6tdadk.js";
183
201
  import {
184
202
  Input2,
185
203
  Label2,
186
204
  InputGroup2
187
205
  } from "./shared/components-gvr9w41t.js";
188
206
  import"./shared/components-7btqt08d.js";
189
- import"./shared/components-q4daerx0.js";
207
+ import"./shared/components-mjthm1kf.js";
190
208
  import {
191
209
  DatePicker2
192
- } from "./shared/components-v7wtz8hk.js";
210
+ } from "./shared/components-2nhgyh31.js";
193
211
  import {
194
212
  DateRangePicker2
195
- } from "./shared/components-cbxjn9p8.js";
213
+ } from "./shared/components-k809mbn0.js";
196
214
  import {
197
215
  DurationPicker2
198
- } from "./shared/components-7ans7ce5.js";
216
+ } from "./shared/components-re6rs21k.js";
199
217
  import {
200
218
  MonthPicker2
201
- } from "./shared/components-4cnjmgex.js";
219
+ } from "./shared/components-3fbbvq5j.js";
202
220
  import {
203
221
  TimePicker2
204
- } from "./shared/components-ez65vtbq.js";
205
- import {
206
- InputCopy2
207
- } from "./shared/components-1j9791sn.js";
208
- import {
209
- FileThumbnail2,
210
- InputMessage2
211
- } from "./shared/components-yh3kwdhr.js";
222
+ } from "./shared/components-bshdmf75.js";
212
223
  import {
213
224
  RadioGroup2,
214
- RadioItem2
215
- } from "./shared/components-ny774h8p.js";
225
+ Radio2
226
+ } from "./shared/components-pbmqctfa.js";
216
227
  import {
217
228
  CommandListRoot2,
218
229
  CommandShortcut2,
@@ -221,10 +232,10 @@ import {
221
232
  CommandTrigger2,
222
233
  CommandContent2,
223
234
  Command2
224
- } from "./shared/components-8fpr3s4p.js";
235
+ } from "./shared/components-39vmfq9s.js";
225
236
  import {
226
237
  Search2
227
- } from "./shared/components-66mv71kx.js";
238
+ } from "./shared/components-xxvdw7k1.js";
228
239
  import {
229
240
  Select2,
230
241
  triggerVariants2,
@@ -234,28 +245,22 @@ import {
234
245
  SelectGroup2,
235
246
  SelectLabel2,
236
247
  SelectSeparator2
237
- } from "./shared/components-62ybc7t2.js";
238
- import {
239
- Switch2
240
- } from "./shared/components-asr5pg50.js";
248
+ } from "./shared/components-frw34b65.js";
241
249
  import {
242
- AccordionGroup2,
243
- Accordion2,
244
- AccordionItem2,
245
- AccordionTrigger2,
246
- AccordionContent2
247
- } from "./shared/components-3wk0w46f.js";
250
+ Switch2,
251
+ SwitchGroup2
252
+ } from "./shared/components-8snj490h.js";
248
253
  import {
249
254
  Tabs2,
250
255
  TabsList2,
251
256
  TabItem2,
252
257
  TabPanel2
253
- } from "./shared/components-tqvarbfv.js";
258
+ } from "./shared/components-hw9yk32z.js";
254
259
  import {
255
260
  TabsSubtle2,
256
261
  TabsSubtleItem2,
257
262
  TabsSubtlePanel2
258
- } from "./shared/components-v6xp325t.js";
263
+ } from "./shared/components-dk0gjr5a.js";
259
264
  import {
260
265
  AlertDialogContent2,
261
266
  AlertDialog2
@@ -264,7 +269,7 @@ import {
264
269
  ContextMenuItem2,
265
270
  ContextMenuContent2,
266
271
  ContextMenu2
267
- } from "./shared/components-1xekx2hx.js";
272
+ } from "./shared/components-ar66gnt0.js";
268
273
  import {
269
274
  PopoverTrigger2,
270
275
  PopoverClose2,
@@ -290,10 +295,7 @@ import {
290
295
  TableRow2,
291
296
  TableHead2,
292
297
  TableCell2
293
- } from "./shared/components-0ke6xada.js";
294
- import {
295
- ThinkingIndicator2
296
- } from "./shared/components-7x9kawxv.js";
298
+ } from "./shared/components-1434p1mh.js";
297
299
  import {
298
300
  Code2
299
301
  } from "./shared/components-s2bz1xpk.js";
@@ -301,7 +303,7 @@ import"./shared/components-vfbhxf5r.js";
301
303
  import {
302
304
  FluidHoverItem2,
303
305
  FluidHover2
304
- } from "./shared/components-h2dpcwgc.js";
306
+ } from "./shared/components-2dxkv6zm.js";
305
307
  import {
306
308
  Morph2
307
309
  } from "./shared/components-39jq9va1.js";
@@ -336,8 +338,8 @@ export {
336
338
  CardImage2 as CardImage,
337
339
  CardMedia2 as CardMedia,
338
340
  CardTitle2 as CardTitle,
341
+ Checkbox2 as Checkbox,
339
342
  CheckboxGroup2 as CheckboxGroup,
340
- CheckboxItem2 as CheckboxItem,
341
343
  Code2 as Code,
342
344
  ColorPicker2 as ColorPicker,
343
345
  ColorPickerPopover2 as ColorPickerPopover,
@@ -361,6 +363,7 @@ export {
361
363
  ContextMenu2 as ContextMenu,
362
364
  ContextMenuContent2 as ContextMenuContent,
363
365
  ContextMenuItem2 as ContextMenuItem,
366
+ Copy2 as Copy,
364
367
  DatePicker2 as DatePicker,
365
368
  DateRangePicker2 as DateRangePicker,
366
369
  Dialog2 as Dialog,
@@ -388,7 +391,6 @@ export {
388
391
  FluidHoverItem2 as FluidHoverItem,
389
392
  IconProvider2 as IconProvider,
390
393
  Input2 as Input,
391
- InputCopy2 as InputCopy,
392
394
  InputGroup2 as InputGroup,
393
395
  InputMessage2 as InputMessage,
394
396
  Label2 as Label,
@@ -406,8 +408,8 @@ export {
406
408
  PreviewCard2 as PreviewCard,
407
409
  PreviewCardContent2 as PreviewCardContent,
408
410
  PreviewCardTrigger2 as PreviewCardTrigger,
411
+ Radio2 as Radio,
409
412
  RadioGroup2 as RadioGroup,
410
- RadioItem2 as RadioItem,
411
413
  SIDEBAR_COOKIE_MAX_AGE2 as SIDEBAR_COOKIE_MAX_AGE,
412
414
  SIDEBAR_COOKIE_NAME2 as SIDEBAR_COOKIE_NAME,
413
415
  SIDEBAR_KEYBOARD_SHORTCUT2 as SIDEBAR_KEYBOARD_SHORTCUT,
@@ -462,6 +464,7 @@ export {
462
464
  SliderComfortable2 as SliderComfortable,
463
465
  SurfaceProvider2 as SurfaceProvider,
464
466
  Switch2 as Switch,
467
+ SwitchGroup2 as SwitchGroup,
465
468
  TabItem2 as TabItem,
466
469
  TabPanel2 as TabPanel,
467
470
  Table2 as Table,
@@ -2,15 +2,15 @@ import {
2
2
  FluidHoverItem2,
3
3
  FluidHover2,
4
4
  fluid_hover_default
5
- } from "../../shared/components-h2dpcwgc.js";
5
+ } from "../../shared/components-2dxkv6zm.js";
6
6
  import {
7
7
  FluidHoverHighlight2
8
8
  } from "../../shared/components-kvr7f9hy.js";
9
+ import"../../shared/components-chacnk61.js";
9
10
  import {
10
11
  useFluidHover2,
11
12
  useRegisterFluidHoverItem2
12
13
  } from "../../shared/components-59efxjd9.js";
13
- import"../../shared/components-chacnk61.js";
14
14
  import"../../shared/components-hqeq3w9q.js";
15
15
  import"../../shared/components-men63rwj.js";
16
16
  import"../../shared/components-cv16mryv.js";
@@ -85,7 +85,7 @@ type Element_12xgc2 = JSX_1kxb2["Element"];
85
85
  * ## Liquid indicators
86
86
  *
87
87
  * The same goo moves everything that travels between items: the active tab
88
- * of Tabs and TabsSubtle, the Switch thumb, RadioGroup's selection and the
88
+ * of Tabs and TabsSubtle, the Switch thumb, Radio.Group's selection and the
89
89
  * fluid hover highlight of every list (Select, Dropdown, Combobox, Card,
90
90
  * Accordion, FluidHover). The indicator springs to its new item and leaves
91
91
  * a blob behind. The blob lingers for a third of the spring, then follows
@@ -93,7 +93,7 @@ type Element_12xgc2 = JSX_1kxb2["Element"];
93
93
  * stretched drop that lets go. A long move tears it into a drop and a
94
94
  * droplet that catches up and is absorbed.
95
95
  *
96
- * Merged selections (CheckboxGroup, a multiple Dropdown) melt the same way:
96
+ * Merged selections (Checkbox.Group, a multiple Dropdown) melt the same way:
97
97
  * a checked row grows out of its center and flows into its checked
98
98
  * neighbours, and an unchecked one pinches off and shrinks away.
99
99
  *
@@ -104,8 +104,8 @@ type Element_12xgc = JSX_1kxb["Element"];
104
104
  * `SizeProvider` and every sized component inside follows — menus included,
105
105
  * since React context crosses portals. Precedence is explicit `size` prop on
106
106
  * the component > nearest `SizeProvider` > `'default'`. Button, Badge,
107
- * Select, Tabs, TabsSubtle, Dropdown, CheckboxGroup, RadioGroup, Input,
108
- * InputGroup, InputCopy, InputMessage, Table, Switch, Slider, Accordion, Card,
107
+ * Select, Tabs, TabsSubtle, Dropdown, Checkbox, Radio, Input,
108
+ * InputGroup, Copy, InputMessage, Table, Switch, Slider, Accordion, Card,
109
109
  * ColorPicker, ThinkingIndicator, Calendar and the date and time pickers all
110
110
  * take that per-component `size`. Type follows the ladder too: compact drops
111
111
  * each type role one notch.
@@ -3,7 +3,7 @@ import {
3
3
  fieldLabel,
4
4
  dividedColumns,
5
5
  ScrollColumn
6
- } from "./components-9jvzzvt1.js";
6
+ } from "./components-gz8zf3ec.js";
7
7
  import {
8
8
  cn2
9
9
  } from "./components-ezxhrmer.js";
@@ -17,7 +17,7 @@ import {
17
17
  spring2
18
18
  } from "./components-1v7rxytx.js";
19
19
 
20
- // components/thinking-indicator/index.tsx
20
+ // components/AI/thinking-indicator/index.tsx
21
21
  import { AnimatePresence, motion } from "motion/react";
22
22
  import { forwardRef, useEffect, useId, useState } from "react";
23
23
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -23,13 +23,13 @@ import {
23
23
  SidebarMenuItem2,
24
24
  SidebarMenuButton2,
25
25
  sidebar_default
26
- } from "./components-ca2c898n.js";
26
+ } from "./components-nb87fjy4.js";
27
27
  import {
28
28
  MenuItem2,
29
29
  DropdownMenu2,
30
30
  DropdownTrigger2,
31
31
  DropdownContent2
32
- } from "./components-nh8tma1n.js";
32
+ } from "./components-a86dytt0.js";
33
33
 
34
34
  // blocks/sidebar-app/index.tsx
35
35
  import { useState } from "react";
@@ -3,20 +3,20 @@ import {
3
3
  hourCycleOf,
4
4
  parseDateText,
5
5
  parseTimeText
6
- } from "./components-9jvzzvt1.js";
6
+ } from "./components-gz8zf3ec.js";
7
7
  import {
8
8
  useControllableState
9
9
  } from "./components-n7mjr357.js";
10
10
  import {
11
11
  calendar_default
12
- } from "./components-1rfwbyyc.js";
12
+ } from "./components-1z6tdadk.js";
13
13
  import {
14
14
  PickerShell,
15
15
  PickerInput
16
16
  } from "./components-7btqt08d.js";
17
17
  import {
18
18
  TimeColumns
19
- } from "./components-q4daerx0.js";
19
+ } from "./components-mjthm1kf.js";
20
20
 
21
21
  // components/inputs/date-time/date-picker/index.tsx
22
22
  import { endOfMonth, format, set } from "date-fns";
@@ -4,7 +4,7 @@ import {
4
4
  fieldLabel,
5
5
  dividedColumns,
6
6
  ScrollColumn
7
- } from "./components-9jvzzvt1.js";
7
+ } from "./components-gz8zf3ec.js";
8
8
  import {
9
9
  cn2
10
10
  } from "./components-ezxhrmer.js";
@@ -4,20 +4,48 @@ import {
4
4
  import {
5
5
  GooIndicator
6
6
  } from "./components-chacnk61.js";
7
+ import {
8
+ FluidHoverHighlight2
9
+ } from "./components-kvr7f9hy.js";
10
+ import {
11
+ IndexedRows,
12
+ useRowIndex
13
+ } from "./components-ta7shw28.js";
14
+ import {
15
+ useShape
16
+ } from "./components-cv16mryv.js";
7
17
  import {
8
18
  useSize2
9
19
  } from "./components-0sn7ypjw.js";
10
20
  import {
11
21
  useControllableState
12
22
  } from "./components-n7mjr357.js";
23
+ import {
24
+ useFluidHover2,
25
+ useRegisterFluidHoverItem2
26
+ } from "./components-59efxjd9.js";
27
+ import {
28
+ SizeProvider2
29
+ } from "./components-jjw69c4c.js";
13
30
  import {
14
31
  spring2
15
32
  } from "./components-1v7rxytx.js";
16
33
 
17
34
  // components/inputs/switch/index.tsx
18
35
  import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
19
- import { forwardRef, useCallback, useId, useRef, useState } from "react";
36
+ import {
37
+ Children,
38
+ createContext,
39
+ forwardRef,
40
+ isValidElement,
41
+ useCallback,
42
+ useContext,
43
+ useId,
44
+ useRef,
45
+ useState
46
+ } from "react";
20
47
  import { jsx, jsxs } from "react/jsx-runtime";
48
+ var SwitchGroupContext = createContext(null);
21
49
  var METRICS = {
22
50
  default: {
23
51
  trackWidth: 34,
@@ -40,6 +68,8 @@ var THUMB_OFFSET = 2;
40
68
  var DRAG_DEAD_ZONE = 2;
41
69
  var Switch2 = forwardRef(({
42
70
  label,
71
+ description,
72
+ trackSide = "start",
43
73
  checked,
44
74
  defaultChecked = false,
45
75
  onToggle,
@@ -56,6 +86,13 @@ var Switch2 = forwardRef(({
56
86
  onToggle?.();
57
87
  }, [setChecked, onToggle]);
58
88
  const labelId = useId();
89
+ const descriptionId = useId();
90
+ const group = useContext(SwitchGroupContext);
91
+ const index = useRowIndex();
92
+ const rowRef = useRef(null);
93
+ useRegisterFluidHoverItem2(disabled ? undefined : group?.registerItem, index, rowRef);
94
+ const end = trackSide === "end" || !!group;
95
+ const divider = !!group && index < group.count - 1 && group.activeIndex !== index && group.activeIndex !== index + 1;
59
96
  const [hovered, setHovered] = useState(false);
60
97
  const [pressed, setPressed] = useState(false);
61
98
  const sizeClasses = useSize2(size);
@@ -138,8 +175,14 @@ var Switch2 = forwardRef(({
138
175
  pointerStart.current = null;
139
176
  }, [setDragX]);
140
177
  return /* @__PURE__ */ jsxs("div", {
141
- ref,
142
- className: cn2("relative z-10 flex items-center cursor-pointer select-none touch-none", sizeClasses.gap, sizeClasses.px, sizeClasses.variant === "compact" ? "py-1" : "py-2", disabled && "opacity-50 pointer-events-none", className),
178
+ ref: (node) => {
179
+ rowRef.current = node;
180
+ if (typeof ref === "function")
181
+ ref(node);
182
+ else if (ref)
183
+ ref.current = node;
184
+ },
185
+ className: cn2("relative z-10 flex items-center cursor-pointer select-none touch-none", sizeClasses.gap, sizeClasses.px, sizeClasses.variant === "compact" ? "py-1" : "py-2", group && (sizeClasses.variant === "compact" ? "px-3 py-2.5" : "px-4 py-3.5"), disabled && "opacity-50 pointer-events-none", className),
143
186
  onPointerEnter: (e) => {
144
187
  if (e.pointerType === "mouse")
145
188
  setHovered(true);
@@ -159,9 +202,10 @@ var Switch2 = forwardRef(({
159
202
  /* @__PURE__ */ jsx(SwitchPrimitive.Root, {
160
203
  checked: isChecked,
161
204
  "aria-labelledby": labelId,
205
+ "aria-describedby": description ? descriptionId : undefined,
162
206
  disabled,
163
207
  tabIndex: 0,
164
- className: cn2("relative shrink-0 rounded-full outline-none cursor-pointer", "transition-colors duration-fast", "focus-visible:ring-1 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", isChecked ? hovered ? "bg-brand-hover" : "bg-brand" : hovered ? "bg-accent-hover" : "bg-accent"),
208
+ className: cn2("relative shrink-0 rounded-full outline-none cursor-pointer", end && "order-last", "transition-colors duration-fast", "focus-visible:ring-1 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", isChecked ? hovered ? "bg-brand-hover" : "bg-brand" : hovered ? "bg-accent-hover" : "bg-accent"),
165
209
  style: {
166
210
  width: m.trackWidth,
167
211
  height: m.trackHeight
@@ -177,15 +221,68 @@ var Switch2 = forwardRef(({
177
221
  })
178
222
  })
179
223
  }),
180
- /* @__PURE__ */ jsx("span", {
181
- id: labelId,
182
- className: cn2("[text-box:trim-both_cap_alphabetic] transition-[color] duration-fast", sizeClasses.text, isChecked ? "text-foreground" : "text-muted-foreground"),
183
- children: label
224
+ /* @__PURE__ */ jsxs("span", {
225
+ className: cn2("flex min-w-0 flex-col gap-1", end && "flex-1"),
226
+ children: [
227
+ /* @__PURE__ */ jsx("span", {
228
+ id: labelId,
229
+ className: cn2("[text-box:trim-both_cap_alphabetic] transition-[color] duration-fast", sizeClasses.text, description ? "text-foreground weight-medium" : isChecked ? "text-foreground" : "text-muted-foreground"),
230
+ children: label
231
+ }),
232
+ description && /* @__PURE__ */ jsx("span", {
233
+ id: descriptionId,
234
+ className: cn2("leading-relaxed text-muted-foreground", sizeClasses.variant === "compact" ? "text-caption-compact" : "text-caption"),
235
+ children: description
236
+ })
237
+ ]
238
+ }),
239
+ divider && /* @__PURE__ */ jsx("span", {
240
+ "aria-hidden": true,
241
+ className: "pointer-events-none absolute inset-x-0 bottom-0 h-px bg-border/60"
184
242
  })
185
243
  ]
186
244
  });
187
245
  });
188
246
  Switch2.displayName = "Switch";
247
+ var SwitchGroup2 = forwardRef(({ children, size, className, ...props }, ref) => {
248
+ const containerRef = useRef(null);
249
+ const hover = useFluidHover2(containerRef, { gapClick: false });
250
+ const shape = useShape();
251
+ const count = Children.toArray(children).filter(isValidElement).length;
252
+ const group = /* @__PURE__ */ jsx(SwitchGroupContext.Provider, {
253
+ value: { registerItem: hover.registerItem, activeIndex: hover.activeIndex, count },
254
+ children: /* @__PURE__ */ jsxs("fieldset", {
255
+ ref: (node) => {
256
+ containerRef.current = node;
257
+ if (typeof ref === "function")
258
+ ref(node);
259
+ else if (ref)
260
+ ref.current = node;
261
+ },
262
+ onMouseEnter: hover.handlers.onMouseEnter,
263
+ onMouseMove: hover.handlers.onMouseMove,
264
+ onMouseLeave: hover.handlers.onMouseLeave,
265
+ onClick: hover.handlers.onClick,
266
+ className: cn2("relative flex min-w-0 flex-col overflow-hidden border border-border/60 select-none", shape.container, className),
267
+ ...props,
268
+ children: [
269
+ /* @__PURE__ */ jsx(FluidHoverHighlight2, {
270
+ hover,
271
+ className: cn2("z-0", shape.container)
272
+ }),
273
+ /* @__PURE__ */ jsx(IndexedRows, {
274
+ children
275
+ })
276
+ ]
277
+ })
278
+ });
279
+ return size ? /* @__PURE__ */ jsx(SizeProvider2, {
280
+ size,
281
+ children: group
282
+ }) : group;
283
+ });
284
+ SwitchGroup2.displayName = "SwitchGroup";
285
+ Object.assign(Switch2, { Group: SwitchGroup2 });
189
286
  var switch_default = Switch2;
190
287
 
191
- export { Switch2, switch_default };
288
+ export { Switch2, SwitchGroup2, switch_default };
@@ -40,7 +40,7 @@ import {
40
40
  MenuItem2,
41
41
  DropdownLabel2,
42
42
  DropdownSeparator2
43
- } from "./components-nh8tma1n.js";
43
+ } from "./components-a86dytt0.js";
44
44
  import {
45
45
  popupScrollAreaClass,
46
46
  popupViewportClass,
@@ -36,7 +36,7 @@ import {
36
36
  spring2
37
37
  } from "./components-1v7rxytx.js";
38
38
 
39
- // components/navigation/accordion/index.tsx
39
+ // components/accordion/index.tsx
40
40
  import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
41
41
  import { AnimatePresence, animate, motion, useMotionValue, useTransform } from "motion/react";
42
42
  import {
@@ -3,7 +3,7 @@ import {
3
3
  hourCycleOf,
4
4
  parseTimeText,
5
5
  dividedColumns
6
- } from "./components-9jvzzvt1.js";
6
+ } from "./components-gz8zf3ec.js";
7
7
  import {
8
8
  cn2
9
9
  } from "./components-ezxhrmer.js";
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  pad,
19
19
  TimeColumns
20
- } from "./components-q4daerx0.js";
20
+ } from "./components-mjthm1kf.js";
21
21
 
22
22
  // components/inputs/date-time/time-picker/index.tsx
23
23
  import { format, set } from "date-fns";
@@ -37,7 +37,7 @@ import {
37
37
  spring2
38
38
  } from "./components-1v7rxytx.js";
39
39
 
40
- // components/inputs/input-message/index.tsx
40
+ // components/AI/input-message/index.tsx
41
41
  import { AnimatePresence, motion, Reorder, useReducedMotion } from "motion/react";
42
42
  import {
43
43
  forwardRef,
@@ -50,7 +50,7 @@ import {
50
50
  useState as useState2
51
51
  } from "react";
52
52
 
53
- // components/inputs/input-message/file-thumbnail.tsx
53
+ // components/AI/input-message/file-thumbnail.tsx
54
54
  import { useEffect, useState } from "react";
55
55
  import { jsx, jsxs } from "react/jsx-runtime";
56
56
  var pdfjsPromise = null;
@@ -156,7 +156,7 @@ function FileThumbnail2({ file, size, className }) {
156
156
  });
157
157
  }
158
158
 
159
- // components/inputs/input-message/index.tsx
159
+ // components/AI/input-message/index.tsx
160
160
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
161
161
  var useIsoLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect2;
162
162
  function useRegionHeight() {