@vuetify/v0 0.0.22 → 0.0.23

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.
@@ -1,8 +1,8 @@
1
1
  import { r as isSelfClosingTag } from "./htmlElements-CXObxj0V.mjs";
2
- import { a as genId, d as isNullOrUndefined, h as isString, u as isNull } from "./utilities-CKvM4p7S.mjs";
3
- import { E as useProxyModel, F as createOverflow, Ft as createRegistry, Kt as createContext, M as createPagination, Mt as createSelection, Y as useLocale, Z as createSingle, _t as createGroup, b as createStep, o as useToggleScope, t as useClickOutside } from "./useClickOutside-bbFXLr1p.mjs";
4
- import { t as IN_BROWSER } from "./globals-B0yp-n-D.mjs";
5
- import { computed, createBlock, createCommentVNode, createPropsRestProxy, createTextVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeProps, onBeforeUnmount, onMounted, onUnmounted, openBlock, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRef, toValue, unref, useAttrs, useId, useModel, useTemplateRef, vShow, watch, withCtx, withDirectives } from "vue";
2
+ import { a as genId, d as isNullOrUndefined, h as isString, p as isObject, u as isNull } from "./utilities-9i1hJnMd.mjs";
3
+ import { $t as createContext, Ht as createRegistry, Nt as useProxyModel, P as createOverflow, Pt as createGroup, b as createStep, bt as createSingle, ht as useLocale, j as createPagination, o as useToggleScope, t as useClickOutside, zt as createSelection } from "./useClickOutside-B47X8X6-.mjs";
4
+ import { t as IN_BROWSER } from "./globals-WKdFmgwy.mjs";
5
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createPropsRestProxy, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeProps, onBeforeUnmount, onMounted, onUnmounted, openBlock, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRef, toValue, unref, useAttrs, useId, useModel, useTemplateRef, vShow, watch, withCtx, withDirectives } from "vue";
6
6
 
7
7
  //#region src/components/Atom/Atom.vue
8
8
  /**
@@ -26,7 +26,7 @@ import { computed, createBlock, createCommentVNode, createPropsRestProxy, create
26
26
  * serving as the foundation for all other components that need polymorphic
27
27
  * rendering capabilities.
28
28
  */
29
- const _sfc_main$33 = /* @__PURE__ */ defineComponent({
29
+ const _sfc_main$42 = /* @__PURE__ */ defineComponent({
30
30
  name: "Atom",
31
31
  __name: "Atom",
32
32
  props: {
@@ -57,12 +57,12 @@ const _sfc_main$33 = /* @__PURE__ */ defineComponent({
57
57
  };
58
58
  }
59
59
  });
60
- var Atom_default = _sfc_main$33;
60
+ var Atom_default = _sfc_main$42;
61
61
 
62
62
  //#endregion
63
63
  //#region src/components/Avatar/AvatarRoot.vue
64
64
  const [useAvatarRoot, provideAvatarContext] = createContext();
65
- const _sfc_main$32 = /* @__PURE__ */ defineComponent({
65
+ const _sfc_main$41 = /* @__PURE__ */ defineComponent({
66
66
  name: "AvatarRoot",
67
67
  __name: "AvatarRoot",
68
68
  props: {
@@ -87,11 +87,11 @@ const _sfc_main$32 = /* @__PURE__ */ defineComponent({
87
87
  };
88
88
  }
89
89
  });
90
- var AvatarRoot_default = _sfc_main$32;
90
+ var AvatarRoot_default = _sfc_main$41;
91
91
 
92
92
  //#endregion
93
93
  //#region src/components/Avatar/AvatarFallback.vue
94
- const _sfc_main$31 = /* @__PURE__ */ defineComponent({
94
+ const _sfc_main$40 = /* @__PURE__ */ defineComponent({
95
95
  name: "AvatarFallback",
96
96
  __name: "AvatarFallback",
97
97
  props: {
@@ -116,11 +116,11 @@ const _sfc_main$31 = /* @__PURE__ */ defineComponent({
116
116
  };
117
117
  }
118
118
  });
119
- var AvatarFallback_default = _sfc_main$31;
119
+ var AvatarFallback_default = _sfc_main$40;
120
120
 
121
121
  //#endregion
122
122
  //#region src/components/Avatar/AvatarImage.vue
123
- const _sfc_main$30 = /* @__PURE__ */ defineComponent({
123
+ const _sfc_main$39 = /* @__PURE__ */ defineComponent({
124
124
  name: "AvatarImage",
125
125
  inheritAttrs: false,
126
126
  __name: "AvatarImage",
@@ -180,7 +180,7 @@ const _sfc_main$30 = /* @__PURE__ */ defineComponent({
180
180
  };
181
181
  }
182
182
  });
183
- var AvatarImage_default = _sfc_main$30;
183
+ var AvatarImage_default = _sfc_main$39;
184
184
 
185
185
  //#endregion
186
186
  //#region src/components/Avatar/index.ts
@@ -195,10 +195,436 @@ const Avatar = {
195
195
  Fallback: AvatarFallback_default
196
196
  };
197
197
 
198
+ //#endregion
199
+ //#region src/components/Checkbox/CheckboxGroup.vue
200
+ const [useCheckboxGroup, provideCheckboxGroup] = createContext();
201
+ const _sfc_main$38 = /* @__PURE__ */ defineComponent({
202
+ name: "CheckboxGroup",
203
+ __name: "CheckboxGroup",
204
+ props: /* @__PURE__ */ mergeModels({
205
+ namespace: { default: "v0:checkbox:group" },
206
+ disabled: {
207
+ type: Boolean,
208
+ default: false
209
+ },
210
+ enroll: {
211
+ type: Boolean,
212
+ default: false
213
+ },
214
+ mandatory: {
215
+ type: [Boolean, String],
216
+ default: false
217
+ },
218
+ label: {},
219
+ ariaLabelledby: {},
220
+ ariaDescribedby: {},
221
+ as: { default: "div" },
222
+ renderless: { type: Boolean }
223
+ }, {
224
+ "modelValue": {},
225
+ "modelModifiers": {}
226
+ }),
227
+ emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
228
+ setup(__props) {
229
+ const model = useModel(__props, "modelValue");
230
+ const group = createGroup({
231
+ disabled: toRef(() => __props.disabled),
232
+ enroll: __props.enroll,
233
+ mandatory: __props.mandatory,
234
+ events: true
235
+ });
236
+ useProxyModel(group, model, { multiple: true });
237
+ provideCheckboxGroup(__props.namespace, group);
238
+ const slotProps = toRef(() => ({
239
+ isDisabled: toValue(group.disabled),
240
+ isNoneSelected: group.isNoneSelected.value,
241
+ isAllSelected: group.isAllSelected.value,
242
+ isMixed: group.isMixed.value,
243
+ select: group.select,
244
+ unselect: group.unselect,
245
+ toggle: group.toggle,
246
+ selectAll: group.selectAll,
247
+ unselectAll: group.unselectAll,
248
+ toggleAll: group.toggleAll,
249
+ attrs: {
250
+ "role": "group",
251
+ "aria-label": __props.label || void 0,
252
+ "aria-labelledby": __props.ariaLabelledby || void 0,
253
+ "aria-describedby": __props.ariaDescribedby || void 0
254
+ }
255
+ }));
256
+ return (_ctx, _cache) => {
257
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
258
+ as: __props.as,
259
+ renderless: __props.renderless
260
+ }), {
261
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
262
+ _: 3
263
+ }, 16, ["as", "renderless"]);
264
+ };
265
+ }
266
+ });
267
+ var CheckboxGroup_default = _sfc_main$38;
268
+
269
+ //#endregion
270
+ //#region src/components/Checkbox/CheckboxRoot.vue
271
+ const [useCheckboxRoot, provideCheckboxRoot] = createContext();
272
+ const _sfc_main$37 = /* @__PURE__ */ defineComponent({
273
+ name: "CheckboxRoot",
274
+ inheritAttrs: false,
275
+ __name: "CheckboxRoot",
276
+ props: /* @__PURE__ */ mergeModels({
277
+ id: { default: () => /* @__PURE__ */ genId() },
278
+ label: {},
279
+ value: {},
280
+ name: {},
281
+ form: {},
282
+ disabled: { default: false },
283
+ indeterminate: { default: false },
284
+ namespace: { default: "v0:checkbox:root" },
285
+ groupNamespace: { default: "v0:checkbox:group" },
286
+ ariaLabelledby: {},
287
+ ariaDescribedby: {},
288
+ ariaInvalid: { type: Boolean },
289
+ as: { default: "button" },
290
+ renderless: { type: Boolean }
291
+ }, {
292
+ "modelValue": { type: Boolean },
293
+ "modelModifiers": {}
294
+ }),
295
+ emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
296
+ setup(__props) {
297
+ const attrs = useAttrs();
298
+ let group = null;
299
+ try {
300
+ group = useCheckboxGroup(__props.groupNamespace);
301
+ } catch {}
302
+ const model = useModel(__props, "modelValue");
303
+ const ticket = group?.register({
304
+ id: __props.id,
305
+ value: __props.value,
306
+ disabled: __props.disabled,
307
+ indeterminate: __props.indeterminate
308
+ });
309
+ const isChecked = toRef(() => ticket ? toValue(ticket.isSelected) : model.value ?? false);
310
+ const isMixed = toRef(() => ticket ? toValue(ticket.isMixed) : toValue(__props.indeterminate) ?? false);
311
+ const isDisabled = toRef(() => group && ticket ? toValue(ticket.disabled) || toValue(group.disabled) : toValue(__props.disabled) ?? false);
312
+ const dataState = toRef(() => isMixed.value ? "indeterminate" : isChecked.value ? "checked" : "unchecked");
313
+ function toggle() {
314
+ if (isDisabled.value) return;
315
+ if (ticket) ticket.toggle();
316
+ else model.value = !model.value;
317
+ }
318
+ function select() {
319
+ if (isDisabled.value) return;
320
+ if (ticket) ticket.select();
321
+ else model.value = true;
322
+ }
323
+ function unselect() {
324
+ if (isDisabled.value) return;
325
+ if (ticket) ticket.unselect();
326
+ else model.value = false;
327
+ }
328
+ function mix() {
329
+ if (isDisabled.value || !ticket) return;
330
+ ticket.mix();
331
+ }
332
+ function unmix() {
333
+ if (isDisabled.value || !ticket) return;
334
+ ticket.unmix();
335
+ }
336
+ function onClick() {
337
+ toggle();
338
+ }
339
+ function onKeydown(e) {
340
+ if (e.key !== " ") return;
341
+ e.preventDefault();
342
+ toggle();
343
+ }
344
+ onUnmounted(() => {
345
+ if (!ticket || !group) return;
346
+ group.unregister(ticket.id);
347
+ });
348
+ const context = {
349
+ id: __props.id,
350
+ label: __props.label,
351
+ value: __props.value,
352
+ name: __props.name,
353
+ form: __props.form,
354
+ isChecked,
355
+ isMixed,
356
+ isDisabled,
357
+ select,
358
+ unselect,
359
+ toggle,
360
+ mix,
361
+ unmix
362
+ };
363
+ provideCheckboxRoot(__props.namespace, context);
364
+ const slotProps = toRef(() => ({
365
+ id: __props.id,
366
+ label: __props.label,
367
+ value: __props.value,
368
+ isChecked: isChecked.value,
369
+ isMixed: isMixed.value,
370
+ isDisabled: isDisabled.value,
371
+ select,
372
+ unselect,
373
+ toggle,
374
+ mix,
375
+ unmix,
376
+ attrs: {
377
+ "type": __props.as === "button" ? "button" : void 0,
378
+ "role": "checkbox",
379
+ "aria-checked": isMixed.value ? "mixed" : isChecked.value,
380
+ "aria-disabled": isDisabled.value || void 0,
381
+ "aria-label": __props.label || void 0,
382
+ "aria-labelledby": __props.ariaLabelledby || void 0,
383
+ "aria-describedby": __props.ariaDescribedby || void 0,
384
+ "aria-invalid": __props.ariaInvalid || void 0,
385
+ "tabindex": isDisabled.value ? void 0 : 0,
386
+ "data-state": dataState.value,
387
+ "data-disabled": isDisabled.value ? true : void 0
388
+ }
389
+ }));
390
+ return (_ctx, _cache) => {
391
+ return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(Atom_default), mergeProps({
392
+ ...unref(attrs),
393
+ ...slotProps.value.attrs
394
+ }, {
395
+ as: __props.as,
396
+ renderless: __props.renderless,
397
+ onClick,
398
+ onKeydown
399
+ }), {
400
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
401
+ _: 3
402
+ }, 16, ["as", "renderless"]), __props.name ? (openBlock(), createBlock(CheckboxHiddenInput_default, { key: 0 })) : createCommentVNode("v-if", true)], 64);
403
+ };
404
+ }
405
+ });
406
+ var CheckboxRoot_default = _sfc_main$37;
407
+
408
+ //#endregion
409
+ //#region src/components/Checkbox/CheckboxHiddenInput.vue
410
+ const _hoisted_1$1 = [
411
+ "checked",
412
+ "disabled",
413
+ "form",
414
+ "name",
415
+ "value"
416
+ ];
417
+ const visuallyHiddenStyle$1 = {
418
+ position: "absolute",
419
+ width: "1px",
420
+ height: "1px",
421
+ padding: "0",
422
+ margin: "-1px",
423
+ overflow: "hidden",
424
+ clip: "rect(0, 0, 0, 0)",
425
+ whiteSpace: "nowrap",
426
+ border: "0"
427
+ };
428
+ const _sfc_main$36 = /* @__PURE__ */ defineComponent({
429
+ name: "CheckboxHiddenInput",
430
+ __name: "CheckboxHiddenInput",
431
+ props: {
432
+ namespace: { default: "v0:checkbox:root" },
433
+ name: {},
434
+ value: {},
435
+ form: {}
436
+ },
437
+ setup(__props) {
438
+ const root = useCheckboxRoot(__props.namespace);
439
+ const name = toRef(() => __props.name ?? root.name);
440
+ const form = toRef(() => __props.form ?? root.form);
441
+ const value = toRef(() => {
442
+ const v = __props.value ?? root.value ?? "on";
443
+ if (/* @__PURE__ */ isNullOrUndefined(v)) return "on";
444
+ if (/* @__PURE__ */ isObject(v)) return JSON.stringify(v);
445
+ return String(v);
446
+ });
447
+ const isChecked = root.isChecked;
448
+ const isDisabled = root.isDisabled;
449
+ return (_ctx, _cache) => {
450
+ return openBlock(), createElementBlock("input", {
451
+ checked: unref(isChecked),
452
+ disabled: unref(isDisabled),
453
+ form: form.value,
454
+ inert: "",
455
+ name: name.value,
456
+ style: visuallyHiddenStyle$1,
457
+ tabindex: "-1",
458
+ type: "checkbox",
459
+ value: value.value
460
+ }, null, 8, _hoisted_1$1);
461
+ };
462
+ }
463
+ });
464
+ var CheckboxHiddenInput_default = _sfc_main$36;
465
+
466
+ //#endregion
467
+ //#region src/components/Checkbox/CheckboxIndicator.vue
468
+ const _sfc_main$35 = /* @__PURE__ */ defineComponent({
469
+ name: "CheckboxIndicator",
470
+ __name: "CheckboxIndicator",
471
+ props: {
472
+ namespace: { default: "v0:checkbox:root" },
473
+ as: { default: "span" },
474
+ renderless: { type: Boolean }
475
+ },
476
+ setup(__props) {
477
+ const root = useCheckboxRoot(__props.namespace);
478
+ const isChecked = toRef(() => toValue(root.isChecked));
479
+ const isMixed = toRef(() => toValue(root.isMixed));
480
+ const isVisible = toRef(() => isChecked.value || isMixed.value);
481
+ const dataState = toRef(() => isMixed.value ? "indeterminate" : isChecked.value ? "checked" : "unchecked");
482
+ const slotProps = toRef(() => ({
483
+ isChecked: isChecked.value,
484
+ isMixed: isMixed.value,
485
+ attrs: {
486
+ "data-state": dataState.value,
487
+ "style": { visibility: isVisible.value ? "visible" : "hidden" }
488
+ }
489
+ }));
490
+ return (_ctx, _cache) => {
491
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
492
+ as: __props.as,
493
+ renderless: __props.renderless
494
+ }), {
495
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
496
+ _: 3
497
+ }, 16, ["as", "renderless"]);
498
+ };
499
+ }
500
+ });
501
+ var CheckboxIndicator_default = _sfc_main$35;
502
+
503
+ //#endregion
504
+ //#region src/components/Checkbox/CheckboxSelectAll.vue
505
+ const _sfc_main$34 = /* @__PURE__ */ defineComponent({
506
+ name: "CheckboxSelectAll",
507
+ inheritAttrs: false,
508
+ __name: "CheckboxSelectAll",
509
+ props: {
510
+ label: {},
511
+ disabled: { type: Boolean },
512
+ namespace: {},
513
+ groupNamespace: {},
514
+ ariaLabelledby: {},
515
+ ariaDescribedby: {},
516
+ as: {},
517
+ renderless: { type: Boolean }
518
+ },
519
+ setup(__props) {
520
+ const attrs = useAttrs();
521
+ const props = __props;
522
+ const { as = "button", renderless, label, namespace = "v0:checkbox:root", groupNamespace = "v0:checkbox:group" } = props;
523
+ const group = useCheckboxGroup(groupNamespace);
524
+ const id = /* @__PURE__ */ genId();
525
+ const isAllSelected = toRef(() => group.isAllSelected.value);
526
+ const isMixed = toRef(() => group.isMixed.value);
527
+ const isDisabled = toRef(() => toValue(props.disabled) || toValue(group.disabled));
528
+ const dataState = toRef(() => isMixed.value ? "indeterminate" : isAllSelected.value ? "checked" : "unchecked");
529
+ function onClick() {
530
+ if (isDisabled.value) return;
531
+ group.toggleAll();
532
+ }
533
+ function onKeydown(e) {
534
+ if (e.key !== " ") return;
535
+ e.preventDefault();
536
+ if (isDisabled.value) return;
537
+ group.toggleAll();
538
+ }
539
+ provideCheckboxRoot(namespace, {
540
+ id,
541
+ label,
542
+ value: void 0,
543
+ name: void 0,
544
+ form: void 0,
545
+ isChecked: isAllSelected,
546
+ isMixed,
547
+ isDisabled,
548
+ select: group.selectAll,
549
+ unselect: group.unselectAll,
550
+ toggle: group.toggleAll,
551
+ mix: () => {},
552
+ unmix: () => {}
553
+ });
554
+ const slotProps = toRef(() => ({
555
+ label,
556
+ isAllSelected: isAllSelected.value,
557
+ isMixed: isMixed.value,
558
+ isDisabled: isDisabled.value,
559
+ selectAll: group.selectAll,
560
+ unselectAll: group.unselectAll,
561
+ toggleAll: group.toggleAll,
562
+ attrs: {
563
+ "type": as === "button" ? "button" : void 0,
564
+ "role": "checkbox",
565
+ "aria-checked": isMixed.value ? "mixed" : isAllSelected.value,
566
+ "aria-disabled": isDisabled.value || void 0,
567
+ "aria-label": label || void 0,
568
+ "aria-labelledby": props.ariaLabelledby || void 0,
569
+ "aria-describedby": props.ariaDescribedby || void 0,
570
+ "tabindex": isDisabled.value ? void 0 : 0,
571
+ "data-state": dataState.value,
572
+ "data-disabled": isDisabled.value ? true : void 0
573
+ }
574
+ }));
575
+ return (_ctx, _cache) => {
576
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
577
+ ...unref(attrs),
578
+ ...slotProps.value.attrs
579
+ }, {
580
+ as: unref(as),
581
+ renderless: unref(renderless),
582
+ onClick,
583
+ onKeydown
584
+ }), {
585
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
586
+ _: 3
587
+ }, 16, ["as", "renderless"]);
588
+ };
589
+ }
590
+ });
591
+ var CheckboxSelectAll_default = _sfc_main$34;
592
+
593
+ //#endregion
594
+ //#region src/components/Checkbox/index.ts
595
+ /**
596
+ * Checkbox component with sub-components for checkbox controls.
597
+ *
598
+ * @see https://0.vuetifyjs.com/components/forms/checkbox
599
+ *
600
+ * @example
601
+ * ```vue
602
+ * <script lang="ts" setup>
603
+ * import { Checkbox } from '@vuetify/v0'
604
+ * <\/script>
605
+ *
606
+ * <template>
607
+ * <label>
608
+ * <Checkbox.Root>
609
+ * <Checkbox.Indicator>✓</Checkbox.Indicator>
610
+ * </Checkbox.Root>
611
+ * I agree to terms
612
+ * </label>
613
+ * </template>
614
+ * ```
615
+ */
616
+ const Checkbox = {
617
+ Group: CheckboxGroup_default,
618
+ HiddenInput: CheckboxHiddenInput_default,
619
+ Indicator: CheckboxIndicator_default,
620
+ Root: CheckboxRoot_default,
621
+ SelectAll: CheckboxSelectAll_default
622
+ };
623
+
198
624
  //#endregion
199
625
  //#region src/components/Dialog/DialogRoot.vue
200
626
  const [useDialogContext, provideDialogContext] = createContext();
201
- const _sfc_main$29 = /* @__PURE__ */ defineComponent({
627
+ const _sfc_main$33 = /* @__PURE__ */ defineComponent({
202
628
  name: "DialogRoot",
203
629
  __name: "DialogRoot",
204
630
  props: /* @__PURE__ */ mergeModels({
@@ -251,11 +677,11 @@ const _sfc_main$29 = /* @__PURE__ */ defineComponent({
251
677
  };
252
678
  }
253
679
  });
254
- var DialogRoot_default = _sfc_main$29;
680
+ var DialogRoot_default = _sfc_main$33;
255
681
 
256
682
  //#endregion
257
683
  //#region src/components/Dialog/DialogClose.vue
258
- const _sfc_main$28 = /* @__PURE__ */ defineComponent({
684
+ const _sfc_main$32 = /* @__PURE__ */ defineComponent({
259
685
  name: "DialogClose",
260
686
  __name: "DialogClose",
261
687
  props: {
@@ -283,11 +709,11 @@ const _sfc_main$28 = /* @__PURE__ */ defineComponent({
283
709
  };
284
710
  }
285
711
  });
286
- var DialogClose_default = _sfc_main$28;
712
+ var DialogClose_default = _sfc_main$32;
287
713
 
288
714
  //#endregion
289
715
  //#region src/components/Dialog/DialogContent.vue
290
- const _sfc_main$27 = /* @__PURE__ */ defineComponent({
716
+ const _sfc_main$31 = /* @__PURE__ */ defineComponent({
291
717
  name: "DialogContent",
292
718
  __name: "DialogContent",
293
719
  props: {
@@ -353,11 +779,11 @@ const _sfc_main$27 = /* @__PURE__ */ defineComponent({
353
779
  };
354
780
  }
355
781
  });
356
- var DialogContent_default = _sfc_main$27;
782
+ var DialogContent_default = _sfc_main$31;
357
783
 
358
784
  //#endregion
359
785
  //#region src/components/Dialog/DialogDescription.vue
360
- const _sfc_main$26 = /* @__PURE__ */ defineComponent({
786
+ const _sfc_main$30 = /* @__PURE__ */ defineComponent({
361
787
  name: "DialogDescription",
362
788
  __name: "DialogDescription",
363
789
  props: {
@@ -376,11 +802,11 @@ const _sfc_main$26 = /* @__PURE__ */ defineComponent({
376
802
  };
377
803
  }
378
804
  });
379
- var DialogDescription_default = _sfc_main$26;
805
+ var DialogDescription_default = _sfc_main$30;
380
806
 
381
807
  //#endregion
382
808
  //#region src/components/Dialog/DialogTitle.vue
383
- const _sfc_main$25 = /* @__PURE__ */ defineComponent({
809
+ const _sfc_main$29 = /* @__PURE__ */ defineComponent({
384
810
  name: "DialogTitle",
385
811
  __name: "DialogTitle",
386
812
  props: {
@@ -399,11 +825,11 @@ const _sfc_main$25 = /* @__PURE__ */ defineComponent({
399
825
  };
400
826
  }
401
827
  });
402
- var DialogTitle_default = _sfc_main$25;
828
+ var DialogTitle_default = _sfc_main$29;
403
829
 
404
830
  //#endregion
405
831
  //#region src/components/Dialog/DialogActivator.vue
406
- const _sfc_main$24 = /* @__PURE__ */ defineComponent({
832
+ const _sfc_main$28 = /* @__PURE__ */ defineComponent({
407
833
  name: "DialogActivator",
408
834
  __name: "DialogActivator",
409
835
  props: {
@@ -433,7 +859,7 @@ const _sfc_main$24 = /* @__PURE__ */ defineComponent({
433
859
  };
434
860
  }
435
861
  });
436
- var DialogActivator_default = _sfc_main$24;
862
+ var DialogActivator_default = _sfc_main$28;
437
863
 
438
864
  //#endregion
439
865
  //#region src/components/Dialog/index.ts
@@ -478,7 +904,7 @@ const Dialog = {
478
904
  //#endregion
479
905
  //#region src/components/ExpansionPanel/ExpansionPanelRoot.vue
480
906
  const [useExpansionPanelRoot, provideExpansionPanelSelection] = createContext();
481
- const _sfc_main$23 = /* @__PURE__ */ defineComponent({
907
+ const _sfc_main$27 = /* @__PURE__ */ defineComponent({
482
908
  name: "ExpansionPanelRoot",
483
909
  __name: "ExpansionPanelRoot",
484
910
  props: /* @__PURE__ */ mergeModels({
@@ -535,12 +961,12 @@ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
535
961
  };
536
962
  }
537
963
  });
538
- var ExpansionPanelRoot_default = _sfc_main$23;
964
+ var ExpansionPanelRoot_default = _sfc_main$27;
539
965
 
540
966
  //#endregion
541
967
  //#region src/components/ExpansionPanel/ExpansionPanelItem.vue
542
968
  const [useExpansionPanelItem, provideExpansionPanelItem] = createContext({ suffix: "item" });
543
- const _sfc_main$22 = /* @__PURE__ */ defineComponent({
969
+ const _sfc_main$26 = /* @__PURE__ */ defineComponent({
544
970
  name: "ExpansionPanelItem",
545
971
  __name: "ExpansionPanelItem",
546
972
  props: {
@@ -584,11 +1010,11 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
584
1010
  };
585
1011
  }
586
1012
  });
587
- var ExpansionPanelItem_default = _sfc_main$22;
1013
+ var ExpansionPanelItem_default = _sfc_main$26;
588
1014
 
589
1015
  //#endregion
590
1016
  //#region src/components/ExpansionPanel/ExpansionPanelActivator.vue
591
- const _sfc_main$21 = /* @__PURE__ */ defineComponent({
1017
+ const _sfc_main$25 = /* @__PURE__ */ defineComponent({
592
1018
  name: "ExpansionPanelActivator",
593
1019
  __name: "ExpansionPanelActivator",
594
1020
  props: {
@@ -634,11 +1060,11 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
634
1060
  };
635
1061
  }
636
1062
  });
637
- var ExpansionPanelActivator_default = _sfc_main$21;
1063
+ var ExpansionPanelActivator_default = _sfc_main$25;
638
1064
 
639
1065
  //#endregion
640
1066
  //#region src/components/ExpansionPanel/ExpansionPanelContent.vue
641
- const _sfc_main$20 = /* @__PURE__ */ defineComponent({
1067
+ const _sfc_main$24 = /* @__PURE__ */ defineComponent({
642
1068
  name: "ExpansionPanelContent",
643
1069
  __name: "ExpansionPanelContent",
644
1070
  props: {
@@ -669,11 +1095,11 @@ const _sfc_main$20 = /* @__PURE__ */ defineComponent({
669
1095
  };
670
1096
  }
671
1097
  });
672
- var ExpansionPanelContent_default = _sfc_main$20;
1098
+ var ExpansionPanelContent_default = _sfc_main$24;
673
1099
 
674
1100
  //#endregion
675
1101
  //#region src/components/ExpansionPanel/ExpansionPanelHeader.vue
676
- const _sfc_main$19 = /* @__PURE__ */ defineComponent({
1102
+ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
677
1103
  name: "ExpansionPanelHeader",
678
1104
  __name: "ExpansionPanelHeader",
679
1105
  props: {
@@ -698,7 +1124,7 @@ const _sfc_main$19 = /* @__PURE__ */ defineComponent({
698
1124
  };
699
1125
  }
700
1126
  });
701
- var ExpansionPanelHeader_default = _sfc_main$19;
1127
+ var ExpansionPanelHeader_default = _sfc_main$23;
702
1128
 
703
1129
  //#endregion
704
1130
  //#region src/components/ExpansionPanel/index.ts
@@ -718,7 +1144,7 @@ const ExpansionPanel = {
718
1144
  //#endregion
719
1145
  //#region src/components/Group/GroupRoot.vue
720
1146
  const [useGroupRoot, provideGroupRoot] = createContext();
721
- const _sfc_main$18 = /* @__PURE__ */ defineComponent({
1147
+ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
722
1148
  name: "GroupRoot",
723
1149
  __name: "GroupRoot",
724
1150
  props: /* @__PURE__ */ mergeModels({
@@ -768,11 +1194,11 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
768
1194
  };
769
1195
  }
770
1196
  });
771
- var GroupRoot_default = _sfc_main$18;
1197
+ var GroupRoot_default = _sfc_main$22;
772
1198
 
773
1199
  //#endregion
774
1200
  //#region src/components/Group/GroupItem.vue
775
- const _sfc_main$17 = /* @__PURE__ */ defineComponent({
1201
+ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
776
1202
  name: "GroupItem",
777
1203
  __name: "GroupItem",
778
1204
  props: {
@@ -821,7 +1247,7 @@ const _sfc_main$17 = /* @__PURE__ */ defineComponent({
821
1247
  };
822
1248
  }
823
1249
  });
824
- var GroupItem_default = _sfc_main$17;
1250
+ var GroupItem_default = _sfc_main$21;
825
1251
 
826
1252
  //#endregion
827
1253
  //#region src/components/Group/index.ts
@@ -840,7 +1266,7 @@ const Group = {
840
1266
  const [usePaginationRoot, providePaginationRoot] = createContext();
841
1267
  const [usePaginationControls, providePaginationControls] = createContext({ suffix: "controls" });
842
1268
  const [usePaginationItems, providePaginationItems] = createContext({ suffix: "items" });
843
- const _sfc_main$16 = /* @__PURE__ */ defineComponent({
1269
+ const _sfc_main$20 = /* @__PURE__ */ defineComponent({
844
1270
  name: "PaginationRoot",
845
1271
  __name: "PaginationRoot",
846
1272
  props: /* @__PURE__ */ mergeModels({
@@ -940,11 +1366,11 @@ const _sfc_main$16 = /* @__PURE__ */ defineComponent({
940
1366
  };
941
1367
  }
942
1368
  });
943
- var PaginationRoot_default = _sfc_main$16;
1369
+ var PaginationRoot_default = _sfc_main$20;
944
1370
 
945
1371
  //#endregion
946
1372
  //#region src/components/Pagination/PaginationEllipsis.vue
947
- const _sfc_main$15 = /* @__PURE__ */ defineComponent({
1373
+ const _sfc_main$19 = /* @__PURE__ */ defineComponent({
948
1374
  name: "PaginationEllipsis",
949
1375
  __name: "PaginationEllipsis",
950
1376
  props: {
@@ -985,11 +1411,11 @@ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
985
1411
  };
986
1412
  }
987
1413
  });
988
- var PaginationEllipsis_default = _sfc_main$15;
1414
+ var PaginationEllipsis_default = _sfc_main$19;
989
1415
 
990
1416
  //#endregion
991
1417
  //#region src/components/Pagination/PaginationFirst.vue
992
- const _sfc_main$14 = /* @__PURE__ */ defineComponent({
1418
+ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
993
1419
  name: "PaginationFirst",
994
1420
  __name: "PaginationFirst",
995
1421
  props: {
@@ -1044,11 +1470,11 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
1044
1470
  };
1045
1471
  }
1046
1472
  });
1047
- var PaginationFirst_default = _sfc_main$14;
1473
+ var PaginationFirst_default = _sfc_main$18;
1048
1474
 
1049
1475
  //#endregion
1050
1476
  //#region src/components/Pagination/PaginationItem.vue
1051
- const _sfc_main$13 = /* @__PURE__ */ defineComponent({
1477
+ const _sfc_main$17 = /* @__PURE__ */ defineComponent({
1052
1478
  name: "PaginationItem",
1053
1479
  __name: "PaginationItem",
1054
1480
  props: {
@@ -1114,11 +1540,11 @@ const _sfc_main$13 = /* @__PURE__ */ defineComponent({
1114
1540
  };
1115
1541
  }
1116
1542
  });
1117
- var PaginationItem_default = _sfc_main$13;
1543
+ var PaginationItem_default = _sfc_main$17;
1118
1544
 
1119
1545
  //#endregion
1120
1546
  //#region src/components/Pagination/PaginationLast.vue
1121
- const _sfc_main$12 = /* @__PURE__ */ defineComponent({
1547
+ const _sfc_main$16 = /* @__PURE__ */ defineComponent({
1122
1548
  name: "PaginationLast",
1123
1549
  __name: "PaginationLast",
1124
1550
  props: {
@@ -1173,11 +1599,11 @@ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
1173
1599
  };
1174
1600
  }
1175
1601
  });
1176
- var PaginationLast_default = _sfc_main$12;
1602
+ var PaginationLast_default = _sfc_main$16;
1177
1603
 
1178
1604
  //#endregion
1179
1605
  //#region src/components/Pagination/PaginationNext.vue
1180
- const _sfc_main$11 = /* @__PURE__ */ defineComponent({
1606
+ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
1181
1607
  name: "PaginationNext",
1182
1608
  __name: "PaginationNext",
1183
1609
  props: {
@@ -1232,11 +1658,11 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
1232
1658
  };
1233
1659
  }
1234
1660
  });
1235
- var PaginationNext_default = _sfc_main$11;
1661
+ var PaginationNext_default = _sfc_main$15;
1236
1662
 
1237
1663
  //#endregion
1238
1664
  //#region src/components/Pagination/PaginationPrev.vue
1239
- const _sfc_main$10 = /* @__PURE__ */ defineComponent({
1665
+ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
1240
1666
  name: "PaginationPrev",
1241
1667
  __name: "PaginationPrev",
1242
1668
  props: {
@@ -1291,11 +1717,11 @@ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
1291
1717
  };
1292
1718
  }
1293
1719
  });
1294
- var PaginationPrev_default = _sfc_main$10;
1720
+ var PaginationPrev_default = _sfc_main$14;
1295
1721
 
1296
1722
  //#endregion
1297
1723
  //#region src/components/Pagination/PaginationStatus.vue
1298
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
1724
+ const _sfc_main$13 = /* @__PURE__ */ defineComponent({
1299
1725
  name: "PaginationStatus",
1300
1726
  __name: "PaginationStatus",
1301
1727
  props: {
@@ -1339,7 +1765,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
1339
1765
  };
1340
1766
  }
1341
1767
  });
1342
- var PaginationStatus_default = _sfc_main$9;
1768
+ var PaginationStatus_default = _sfc_main$13;
1343
1769
 
1344
1770
  //#endregion
1345
1771
  //#region src/components/Pagination/index.ts
@@ -1362,7 +1788,7 @@ const Pagination = {
1362
1788
  //#endregion
1363
1789
  //#region src/components/Popover/PopoverRoot.vue
1364
1790
  const [usePopoverContext, providePopoverContext] = createContext("Popover");
1365
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
1791
+ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
1366
1792
  name: "PopoverRoot",
1367
1793
  __name: "PopoverRoot",
1368
1794
  props: /* @__PURE__ */ mergeModels({
@@ -1405,11 +1831,11 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
1405
1831
  };
1406
1832
  }
1407
1833
  });
1408
- var PopoverRoot_default = _sfc_main$8;
1834
+ var PopoverRoot_default = _sfc_main$12;
1409
1835
 
1410
1836
  //#endregion
1411
1837
  //#region src/components/Popover/PopoverActivator.vue
1412
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1838
+ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
1413
1839
  name: "PopoverActivator",
1414
1840
  __name: "PopoverActivator",
1415
1841
  props: {
@@ -1441,11 +1867,11 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1441
1867
  };
1442
1868
  }
1443
1869
  });
1444
- var PopoverActivator_default = _sfc_main$7;
1870
+ var PopoverActivator_default = _sfc_main$11;
1445
1871
 
1446
1872
  //#endregion
1447
1873
  //#region src/components/Popover/PopoverContent.vue
1448
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1874
+ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
1449
1875
  name: "PopoverContent",
1450
1876
  __name: "PopoverContent",
1451
1877
  props: {
@@ -1463,9 +1889,12 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1463
1889
  const ref$1 = useTemplateRef("ref");
1464
1890
  const id = toRef(() => props.id ?? context.id);
1465
1891
  const style = toRef(() => ({
1466
- positionArea: __props.positionArea,
1467
- positionAnchor: `--${toValue(id)}`,
1468
- positionTry: __props.positionTry
1892
+ "position": "fixed",
1893
+ "margin": "unset",
1894
+ "inset-area": __props.positionArea,
1895
+ "position-area": __props.positionArea,
1896
+ "position-anchor": `--${toValue(id)}`,
1897
+ "position-try-fallbacks": __props.positionTry
1469
1898
  }));
1470
1899
  /* v8 ignore start -- browser popover API */
1471
1900
  onMounted(() => {
@@ -1473,13 +1902,15 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1473
1902
  });
1474
1903
  watch(context.isSelected, (isOpen) => {
1475
1904
  const element = ref$1.value?.element;
1476
- if (!element) return;
1905
+ if (!element || isOpen === element.matches?.(":popover-open")) return;
1477
1906
  if (isOpen) element.showPopover?.();
1478
1907
  else element.hidePopover?.();
1479
1908
  });
1909
+ function onToggle(e) {
1910
+ context.isSelected.value = e.newState === "open";
1911
+ }
1480
1912
  /* v8 ignore stop */
1481
1913
  function onBeforeToggle(e) {
1482
- context.isSelected.value = e.newState === "open";
1483
1914
  emit("beforetoggle", e);
1484
1915
  }
1485
1916
  const slotProps = toRef(() => ({
@@ -1494,14 +1925,17 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1494
1925
  ref_key: "ref",
1495
1926
  ref: ref$1,
1496
1927
  style: style.value
1497
- }, slotProps.value.attrs, { onBeforetoggle: onBeforeToggle }), {
1928
+ }, slotProps.value.attrs, {
1929
+ onBeforetoggle: onBeforeToggle,
1930
+ onToggle
1931
+ }), {
1498
1932
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
1499
1933
  _: 3
1500
1934
  }, 16, ["style"]);
1501
1935
  };
1502
1936
  }
1503
1937
  });
1504
- var PopoverContent_default = _sfc_main$6;
1938
+ var PopoverContent_default = _sfc_main$10;
1505
1939
 
1506
1940
  //#endregion
1507
1941
  //#region src/components/Popover/index.ts
@@ -1516,6 +1950,332 @@ const Popover = {
1516
1950
  Content: PopoverContent_default
1517
1951
  };
1518
1952
 
1953
+ //#endregion
1954
+ //#region src/components/Radio/RadioGroup.vue
1955
+ const [useRadioGroup, provideRadioGroup] = createContext();
1956
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
1957
+ name: "RadioGroup",
1958
+ __name: "RadioGroup",
1959
+ props: /* @__PURE__ */ mergeModels({
1960
+ namespace: { default: "v0:radio:group" },
1961
+ disabled: {
1962
+ type: Boolean,
1963
+ default: false
1964
+ },
1965
+ mandatory: {
1966
+ type: [Boolean, String],
1967
+ default: false
1968
+ },
1969
+ label: {},
1970
+ ariaLabelledby: {},
1971
+ ariaDescribedby: {},
1972
+ ariaRequired: { type: Boolean },
1973
+ name: {},
1974
+ as: { default: "div" },
1975
+ renderless: { type: Boolean }
1976
+ }, {
1977
+ "modelValue": {},
1978
+ "modelModifiers": {}
1979
+ }),
1980
+ emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
1981
+ setup(__props) {
1982
+ const model = useModel(__props, "modelValue");
1983
+ const single = createSingle({
1984
+ disabled: toRef(() => __props.disabled),
1985
+ mandatory: __props.mandatory,
1986
+ events: true
1987
+ });
1988
+ useProxyModel(single, model, { multiple: false });
1989
+ provideRadioGroup(__props.namespace, {
1990
+ ...single,
1991
+ name: __props.name
1992
+ });
1993
+ const slotProps = toRef(() => ({
1994
+ isDisabled: toValue(single.disabled),
1995
+ isNoneSelected: single.selectedIds.size === 0,
1996
+ attrs: {
1997
+ "role": "radiogroup",
1998
+ "aria-label": __props.label || void 0,
1999
+ "aria-labelledby": __props.ariaLabelledby || void 0,
2000
+ "aria-describedby": __props.ariaDescribedby || void 0,
2001
+ "aria-required": __props.ariaRequired || void 0
2002
+ }
2003
+ }));
2004
+ return (_ctx, _cache) => {
2005
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
2006
+ as: __props.as,
2007
+ renderless: __props.renderless
2008
+ }), {
2009
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
2010
+ _: 3
2011
+ }, 16, ["as", "renderless"]);
2012
+ };
2013
+ }
2014
+ });
2015
+ var RadioGroup_default = _sfc_main$9;
2016
+
2017
+ //#endregion
2018
+ //#region src/components/Radio/RadioRoot.vue
2019
+ const [useRadioRoot, provideRadioRoot] = createContext();
2020
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2021
+ name: "RadioRoot",
2022
+ inheritAttrs: false,
2023
+ __name: "RadioRoot",
2024
+ props: {
2025
+ id: { default: () => /* @__PURE__ */ genId() },
2026
+ label: {},
2027
+ value: {},
2028
+ name: {},
2029
+ form: {},
2030
+ disabled: { default: false },
2031
+ namespace: { default: "v0:radio:root" },
2032
+ groupNamespace: { default: "v0:radio:group" },
2033
+ ariaLabelledby: {},
2034
+ ariaDescribedby: {},
2035
+ ariaInvalid: { type: Boolean },
2036
+ as: { default: "button" },
2037
+ renderless: { type: Boolean }
2038
+ },
2039
+ setup(__props) {
2040
+ const attrs = useAttrs();
2041
+ const rootRef = useTemplateRef("root");
2042
+ const group = useRadioGroup(__props.groupNamespace);
2043
+ const name = __props.name ?? group.name;
2044
+ const el = toRef(() => rootRef.value?.element ?? void 0);
2045
+ const ticket = group.register({
2046
+ id: __props.id,
2047
+ value: __props.value,
2048
+ disabled: __props.disabled,
2049
+ el
2050
+ });
2051
+ const isChecked = toRef(() => toValue(ticket.isSelected));
2052
+ const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(group.disabled));
2053
+ const dataState = toRef(() => isChecked.value ? "checked" : "unchecked");
2054
+ const isTabbable = toRef(() => {
2055
+ if (toValue(group.disabled)) return false;
2056
+ if (toValue(ticket.disabled)) return false;
2057
+ if (toValue(ticket.isSelected)) return true;
2058
+ if (group.selectedIds.size > 0) return false;
2059
+ for (const item of group.values()) if (!toValue(item.disabled)) return item.id === __props.id;
2060
+ return false;
2061
+ });
2062
+ function select() {
2063
+ if (isDisabled.value) return;
2064
+ ticket.select();
2065
+ }
2066
+ function onClick() {
2067
+ select();
2068
+ }
2069
+ function onKeydown(e) {
2070
+ if (e.key === " ") {
2071
+ e.preventDefault();
2072
+ select();
2073
+ return;
2074
+ }
2075
+ if (![
2076
+ "ArrowUp",
2077
+ "ArrowDown",
2078
+ "ArrowLeft",
2079
+ "ArrowRight"
2080
+ ].includes(e.key)) return;
2081
+ e.preventDefault();
2082
+ const items = [...group.values()].filter((item) => !toValue(item.disabled));
2083
+ const currentIndex = items.findIndex((item) => item.id === __props.id);
2084
+ if (currentIndex === -1) return;
2085
+ let nextIndex;
2086
+ if (e.key === "ArrowUp" || e.key === "ArrowLeft") nextIndex = currentIndex === 0 ? items.length - 1 : currentIndex - 1;
2087
+ else nextIndex = currentIndex === items.length - 1 ? 0 : currentIndex + 1;
2088
+ const nextItem = items[nextIndex];
2089
+ if (!nextItem) return;
2090
+ nextItem.select();
2091
+ toValue(nextItem.el)?.focus();
2092
+ }
2093
+ onUnmounted(() => {
2094
+ group.unregister(ticket.id);
2095
+ });
2096
+ const context = {
2097
+ id: __props.id,
2098
+ label: __props.label,
2099
+ value: __props.value,
2100
+ name,
2101
+ form: __props.form,
2102
+ isChecked,
2103
+ isDisabled,
2104
+ select
2105
+ };
2106
+ provideRadioRoot(__props.namespace, context);
2107
+ const slotProps = toRef(() => ({
2108
+ id: __props.id,
2109
+ label: __props.label,
2110
+ value: __props.value,
2111
+ isChecked: isChecked.value,
2112
+ isDisabled: isDisabled.value,
2113
+ select,
2114
+ attrs: {
2115
+ "type": __props.as === "button" ? "button" : void 0,
2116
+ "role": "radio",
2117
+ "aria-checked": isChecked.value,
2118
+ "aria-disabled": isDisabled.value || void 0,
2119
+ "aria-label": __props.label || void 0,
2120
+ "aria-labelledby": __props.ariaLabelledby || void 0,
2121
+ "aria-describedby": __props.ariaDescribedby || void 0,
2122
+ "aria-invalid": __props.ariaInvalid || void 0,
2123
+ "tabindex": isTabbable.value ? 0 : -1,
2124
+ "data-state": dataState.value,
2125
+ "data-disabled": isDisabled.value ? true : void 0,
2126
+ "data-radio-id": __props.id
2127
+ }
2128
+ }));
2129
+ return (_ctx, _cache) => {
2130
+ return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(Atom_default), mergeProps({ ref: "root" }, {
2131
+ ...unref(attrs),
2132
+ ...slotProps.value.attrs
2133
+ }, {
2134
+ as: __props.as,
2135
+ renderless: __props.renderless,
2136
+ onClick,
2137
+ onKeydown
2138
+ }), {
2139
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
2140
+ _: 3
2141
+ }, 16, ["as", "renderless"]), unref(name) ? (openBlock(), createBlock(RadioHiddenInput_default, { key: 0 })) : createCommentVNode("v-if", true)], 64);
2142
+ };
2143
+ }
2144
+ });
2145
+ var RadioRoot_default = _sfc_main$8;
2146
+
2147
+ //#endregion
2148
+ //#region src/components/Radio/RadioHiddenInput.vue
2149
+ const _hoisted_1 = [
2150
+ "checked",
2151
+ "disabled",
2152
+ "form",
2153
+ "name",
2154
+ "value"
2155
+ ];
2156
+ const visuallyHiddenStyle = {
2157
+ position: "absolute",
2158
+ width: "1px",
2159
+ height: "1px",
2160
+ padding: "0",
2161
+ margin: "-1px",
2162
+ overflow: "hidden",
2163
+ clip: "rect(0, 0, 0, 0)",
2164
+ whiteSpace: "nowrap",
2165
+ border: "0"
2166
+ };
2167
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2168
+ name: "RadioHiddenInput",
2169
+ __name: "RadioHiddenInput",
2170
+ props: {
2171
+ namespace: { default: "v0:radio:root" },
2172
+ name: {},
2173
+ value: {},
2174
+ form: {}
2175
+ },
2176
+ setup(__props) {
2177
+ const root = useRadioRoot(__props.namespace);
2178
+ const name = toRef(() => __props.name ?? root.name);
2179
+ const form = toRef(() => __props.form ?? root.form);
2180
+ const value = toRef(() => {
2181
+ const v = __props.value ?? root.value ?? "on";
2182
+ if (/* @__PURE__ */ isObject(v)) return JSON.stringify(v);
2183
+ return String(v);
2184
+ });
2185
+ const isChecked = root.isChecked;
2186
+ const isDisabled = root.isDisabled;
2187
+ return (_ctx, _cache) => {
2188
+ return openBlock(), createElementBlock("input", {
2189
+ checked: unref(isChecked),
2190
+ disabled: unref(isDisabled),
2191
+ form: form.value,
2192
+ inert: "",
2193
+ name: name.value,
2194
+ style: visuallyHiddenStyle,
2195
+ tabindex: "-1",
2196
+ type: "radio",
2197
+ value: value.value
2198
+ }, null, 8, _hoisted_1);
2199
+ };
2200
+ }
2201
+ });
2202
+ var RadioHiddenInput_default = _sfc_main$7;
2203
+
2204
+ //#endregion
2205
+ //#region src/components/Radio/RadioIndicator.vue
2206
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2207
+ name: "RadioIndicator",
2208
+ __name: "RadioIndicator",
2209
+ props: {
2210
+ namespace: { default: "v0:radio:root" },
2211
+ as: { default: "span" },
2212
+ renderless: { type: Boolean }
2213
+ },
2214
+ setup(__props) {
2215
+ const root = useRadioRoot(__props.namespace);
2216
+ const isChecked = toRef(() => toValue(root.isChecked));
2217
+ const dataState = toRef(() => isChecked.value ? "checked" : "unchecked");
2218
+ const slotProps = toRef(() => ({
2219
+ isChecked: isChecked.value,
2220
+ attrs: {
2221
+ "data-state": dataState.value,
2222
+ "style": { visibility: isChecked.value ? "visible" : "hidden" }
2223
+ }
2224
+ }));
2225
+ return (_ctx, _cache) => {
2226
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
2227
+ as: __props.as,
2228
+ renderless: __props.renderless
2229
+ }), {
2230
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
2231
+ _: 3
2232
+ }, 16, ["as", "renderless"]);
2233
+ };
2234
+ }
2235
+ });
2236
+ var RadioIndicator_default = _sfc_main$6;
2237
+
2238
+ //#endregion
2239
+ //#region src/components/Radio/index.ts
2240
+ /**
2241
+ * Radio component with sub-components for radio button controls.
2242
+ *
2243
+ * @see https://0.vuetifyjs.com/components/forms/radio
2244
+ *
2245
+ * @example
2246
+ * ```vue
2247
+ * <script lang="ts" setup>
2248
+ * import { Radio } from '@vuetify/v0'
2249
+ * import { ref } from 'vue'
2250
+ *
2251
+ * const selected = ref<string>()
2252
+ * <\/script>
2253
+ *
2254
+ * <template>
2255
+ * <Radio.Group v-model="selected">
2256
+ * <label>
2257
+ * <Radio.Root value="a">
2258
+ * <Radio.Indicator>●</Radio.Indicator>
2259
+ * </Radio.Root>
2260
+ * Option A
2261
+ * </label>
2262
+ * <label>
2263
+ * <Radio.Root value="b">
2264
+ * <Radio.Indicator>●</Radio.Indicator>
2265
+ * </Radio.Root>
2266
+ * Option B
2267
+ * </label>
2268
+ * </Radio.Group>
2269
+ * </template>
2270
+ * ```
2271
+ */
2272
+ const Radio = {
2273
+ Group: RadioGroup_default,
2274
+ HiddenInput: RadioHiddenInput_default,
2275
+ Indicator: RadioIndicator_default,
2276
+ Root: RadioRoot_default
2277
+ };
2278
+
1519
2279
  //#endregion
1520
2280
  //#region src/components/Selection/SelectionRoot.vue
1521
2281
  const [useSelectionRoot, provideSelectionRoot] = createContext();
@@ -1849,4 +2609,4 @@ const Step = {
1849
2609
  };
1850
2610
 
1851
2611
  //#endregion
1852
- export { DialogActivator_default as $, PaginationRoot_default as A, provideGroupRoot as B, PaginationStatus_default as C, PaginationItem_default as D, PaginationLast_default as E, usePaginationItems as F, ExpansionPanelActivator_default as G, ExpansionPanel as H, usePaginationRoot as I, useExpansionPanelItem as J, ExpansionPanelItem_default as K, Group as L, providePaginationItems as M, providePaginationRoot as N, PaginationFirst_default as O, usePaginationControls as P, Dialog as Q, GroupItem_default as R, Pagination as S, PaginationNext_default as T, ExpansionPanelHeader_default as U, useGroupRoot as V, ExpansionPanelContent_default as W, provideExpansionPanelSelection as X, ExpansionPanelRoot_default as Y, useExpansionPanelRoot as Z, PopoverContent_default as _, useStepRoot as a, provideDialogContext as at, providePopoverContext as b, SingleRoot_default as c, AvatarImage_default as ct, Selection as d, provideAvatarContext as dt, DialogTitle_default as et, SelectionItem_default as f, useAvatarRoot as ft, Popover as g, useSelectionRoot as h, provideStepRoot as i, DialogRoot_default as it, providePaginationControls as j, PaginationEllipsis_default as k, provideSingleRoot as l, AvatarFallback_default as lt, provideSelectionRoot as m, StepItem_default as n, DialogContent_default as nt, Single as o, useDialogContext as ot, SelectionRoot_default as p, Atom_default as pt, provideExpansionPanelItem as q, StepRoot_default as r, DialogClose_default as rt, SingleItem_default as s, Avatar as st, Step as t, DialogDescription_default as tt, useSingleRoot as u, AvatarRoot_default as ut, PopoverActivator_default as v, PaginationPrev_default as w, usePopoverContext as x, PopoverRoot_default as y, GroupRoot_default as z };
2612
+ export { ExpansionPanelContent_default as $, usePopoverContext as A, provideAvatarContext as At, providePaginationControls as B, provideRadioGroup as C, CheckboxGroup_default as Ct, PopoverActivator_default as D, AvatarImage_default as Dt, PopoverContent_default as E, Avatar as Et, PaginationLast_default as F, usePaginationRoot as G, providePaginationRoot as H, PaginationItem_default as I, GroupRoot_default as J, Group as K, PaginationFirst_default as L, PaginationStatus_default as M, Atom_default as Mt, PaginationPrev_default as N, PopoverRoot_default as O, AvatarFallback_default as Ot, PaginationNext_default as P, ExpansionPanelHeader_default as Q, PaginationEllipsis_default as R, RadioGroup_default as S, useCheckboxRoot as St, Popover as T, useCheckboxGroup as Tt, usePaginationControls as U, providePaginationItems as V, usePaginationItems as W, useGroupRoot as X, provideGroupRoot as Y, ExpansionPanel as Z, RadioIndicator_default as _, CheckboxSelectAll_default as _t, useStepRoot as a, provideExpansionPanelSelection as at, provideRadioRoot as b, CheckboxRoot_default as bt, SingleRoot_default as c, DialogActivator_default as ct, Selection as d, DialogContent_default as dt, ExpansionPanelActivator_default as et, SelectionItem_default as f, DialogClose_default as ft, Radio as g, Checkbox as gt, useSelectionRoot as h, useDialogContext as ht, provideStepRoot as i, ExpansionPanelRoot_default as it, Pagination as j, useAvatarRoot as jt, providePopoverContext as k, AvatarRoot_default as kt, provideSingleRoot as l, DialogTitle_default as lt, provideSelectionRoot as m, provideDialogContext as mt, StepItem_default as n, provideExpansionPanelItem as nt, Single as o, useExpansionPanelRoot as ot, SelectionRoot_default as p, DialogRoot_default as pt, GroupItem_default as q, StepRoot_default as r, useExpansionPanelItem as rt, SingleItem_default as s, Dialog as st, Step as t, ExpansionPanelItem_default as tt, useSingleRoot as u, DialogDescription_default as ut, RadioHiddenInput_default as v, CheckboxIndicator_default as vt, useRadioGroup as w, provideCheckboxGroup as wt, useRadioRoot as x, provideCheckboxRoot as xt, RadioRoot_default as y, CheckboxHiddenInput_default as yt, PaginationRoot_default as z };