@vuetify/v0 0.0.15 → 0.0.18

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,10 +1,11 @@
1
- import { r as isSelfClosingTag } from "./htmlElements-BYo-fMlZ.mjs";
2
- import { c as isNull, l as isNullOrUndefined, p as isString, r as genId } from "./utilities-C6o-keMm.mjs";
3
- import { A as usePagination, Bt as useContext, G as useSingle, Rt as createContext, S as useProxyModel, V as useLocale, W as createSingleContext, _ as createStepContext, ct as useGroup, dt as createSelectionContext, ft as useSelection, j as createOverflow, k as createPaginationContext, pt as createRegistryContext, st as createGroupContext, v as useStep } from "./composables-CrW3IMUM.mjs";
4
- import { computed, createBlock, createCommentVNode, createPropsRestProxy, createTextVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRef, toValue, unref, useAttrs, useId, useModel, useTemplateRef, vShow, watch, withCtx, withDirectives } from "vue";
1
+ import { r as isSelfClosingTag } from "./htmlElements-CXObxj0V.mjs";
2
+ import { c as isNull, l as isNullOrUndefined, p as isString, r as genId } from "./utilities-JxCe-nF2.mjs";
3
+ import { F as createSelection, N as useProxyModel, Y as createContext, c as useLocale, g as createPagination, k as createGroup, p as createSingle, t as createStep, y as createOverflow, z as useRegistry } from "./useStep-DC_JvZpy.mjs";
4
+ import { t as IN_BROWSER } from "./globals-BGVqrlN7.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";
5
6
 
6
7
  //#region src/components/Atom/Atom.vue
7
- const _sfc_main$25 = /* @__PURE__ */ defineComponent({
8
+ const _sfc_main$27 = /* @__PURE__ */ defineComponent({
8
9
  name: "Atom",
9
10
  __name: "Atom",
10
11
  props: {
@@ -35,11 +36,41 @@ const _sfc_main$25 = /* @__PURE__ */ defineComponent({
35
36
  };
36
37
  }
37
38
  });
38
- var Atom_default = _sfc_main$25;
39
+ var Atom_default = _sfc_main$27;
40
+
41
+ //#endregion
42
+ //#region src/components/Avatar/AvatarRoot.vue
43
+ const [useAvatarRoot, provideAvatarContext] = createContext();
44
+ const _sfc_main$26 = /* @__PURE__ */ defineComponent({
45
+ name: "AvatarRoot",
46
+ __name: "AvatarRoot",
47
+ props: {
48
+ namespace: { default: "v0:avatar" },
49
+ as: { default: "div" },
50
+ renderless: { type: Boolean }
51
+ },
52
+ setup(__props) {
53
+ const selection = createSelection({
54
+ mandatory: "force",
55
+ multiple: false
56
+ });
57
+ provideAvatarContext(__props.namespace, selection);
58
+ return (_ctx, _cache) => {
59
+ return openBlock(), createBlock(unref(Atom_default), {
60
+ as: __props.as,
61
+ renderless: __props.renderless
62
+ }, {
63
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
64
+ _: 3
65
+ }, 8, ["as", "renderless"]);
66
+ };
67
+ }
68
+ });
69
+ var AvatarRoot_default = _sfc_main$26;
39
70
 
40
71
  //#endregion
41
72
  //#region src/components/Avatar/AvatarFallback.vue
42
- const _sfc_main$24 = /* @__PURE__ */ defineComponent({
73
+ const _sfc_main$25 = /* @__PURE__ */ defineComponent({
43
74
  name: "AvatarFallback",
44
75
  __name: "AvatarFallback",
45
76
  props: {
@@ -48,28 +79,27 @@ const _sfc_main$24 = /* @__PURE__ */ defineComponent({
48
79
  renderless: { type: Boolean }
49
80
  },
50
81
  setup(__props) {
51
- const context = useContext(__props.namespace);
82
+ const context = useAvatarRoot(__props.namespace);
52
83
  const ticket = context.register({ type: "fallback" });
53
- onUnmounted(() => {
54
- context.unregister(ticket.id);
55
- });
84
+ const slotProps = toRef(() => ({ isSelected: ticket.isSelected.value }));
85
+ onUnmounted(() => context.unregister(ticket.id));
56
86
  return (_ctx, _cache) => {
57
87
  return unref(ticket).isSelected.value ? (openBlock(), createBlock(unref(Atom_default), {
58
88
  key: 0,
59
89
  as: __props.as,
60
90
  renderless: __props.renderless
61
91
  }, {
62
- default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
92
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
63
93
  _: 3
64
94
  }, 8, ["as", "renderless"])) : createCommentVNode("v-if", true);
65
95
  };
66
96
  }
67
97
  });
68
- var AvatarFallback_default = _sfc_main$24;
98
+ var AvatarFallback_default = _sfc_main$25;
69
99
 
70
100
  //#endregion
71
101
  //#region src/components/Avatar/AvatarImage.vue
72
- const _sfc_main$23 = /* @__PURE__ */ defineComponent({
102
+ const _sfc_main$24 = /* @__PURE__ */ defineComponent({
73
103
  name: "AvatarImage",
74
104
  inheritAttrs: false,
75
105
  __name: "AvatarImage",
@@ -89,7 +119,7 @@ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
89
119
  "namespace"
90
120
  ]);
91
121
  const emit = __emit;
92
- const context = useContext(__props.namespace);
122
+ const context = useAvatarRoot(__props.namespace);
93
123
  const ticket = context.register({
94
124
  priority: __props.priority,
95
125
  type: "image",
@@ -109,62 +139,151 @@ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
109
139
  onUnmounted(() => {
110
140
  context.unregister(ticket.id);
111
141
  });
112
- const bindableProps = toRef(() => ({
113
- onError,
114
- onLoad,
115
- role: "img",
116
- ...props
142
+ const slotProps = toRef(() => ({
143
+ isSelected: ticket.isSelected.value,
144
+ attrs: {
145
+ role: "img",
146
+ onLoad,
147
+ onError,
148
+ ...props
149
+ }
117
150
  }));
118
151
  return (_ctx, _cache) => {
119
- return withDirectives((openBlock(), createBlock(unref(Atom_default), mergeProps({
152
+ return withDirectives((openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
120
153
  as: __props.as,
121
154
  renderless: __props.renderless
122
- }, bindableProps.value), {
123
- default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(bindableProps.value)))]),
155
+ }), {
156
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
124
157
  _: 3
125
158
  }, 16, ["as", "renderless"])), [[vShow, unref(ticket).isSelected.value]]);
126
159
  };
127
160
  }
128
161
  });
129
- var AvatarImage_default = _sfc_main$23;
162
+ var AvatarImage_default = _sfc_main$24;
130
163
 
131
164
  //#endregion
132
- //#region src/components/Avatar/AvatarRoot.vue
133
- const _sfc_main$22 = /* @__PURE__ */ defineComponent({
134
- name: "AvatarRoot",
135
- __name: "AvatarRoot",
136
- props: {
137
- namespace: { default: "v0:avatar" },
138
- as: { default: "div" },
165
+ //#region src/components/Avatar/index.ts
166
+ /**
167
+ * Avatar component with sub-components for building avatars.
168
+ *
169
+ * @see https://0.vuetifyjs.com/components/avatar
170
+ */
171
+ const Avatar = {
172
+ Root: AvatarRoot_default,
173
+ Image: AvatarImage_default,
174
+ Fallback: AvatarFallback_default
175
+ };
176
+
177
+ //#endregion
178
+ //#region src/components/ExpansionPanel/ExpansionPanelRoot.vue
179
+ const [useExpansionPanelRoot, provideExpansionPanelSelection] = createContext();
180
+ const _sfc_main$23 = /* @__PURE__ */ defineComponent({
181
+ name: "ExpansionPanelRoot",
182
+ __name: "ExpansionPanelRoot",
183
+ props: /* @__PURE__ */ mergeModels({
184
+ namespace: { default: "v0:expansion-panel" },
185
+ disabled: {
186
+ type: Boolean,
187
+ default: false
188
+ },
189
+ enroll: {
190
+ type: Boolean,
191
+ default: false
192
+ },
193
+ mandatory: {
194
+ type: [Boolean, String],
195
+ default: false
196
+ },
197
+ multiple: {
198
+ type: Boolean,
199
+ default: false
200
+ },
201
+ as: {},
139
202
  renderless: { type: Boolean }
140
- },
203
+ }, {
204
+ "modelValue": {},
205
+ "modelModifiers": {}
206
+ }),
207
+ emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
141
208
  setup(__props) {
142
- const [, provideAvatarContext] = createSelectionContext({
143
- namespace: __props.namespace,
144
- mandatory: "force",
145
- multiple: false
209
+ const model = useModel(__props, "modelValue");
210
+ const isDisabled = toRef(() => __props.disabled);
211
+ const selection = createSelection({
212
+ disabled: isDisabled,
213
+ enroll: __props.enroll,
214
+ mandatory: __props.mandatory,
215
+ multiple: __props.multiple,
216
+ events: true
146
217
  });
147
- provideAvatarContext();
218
+ useProxyModel(selection, model, { multiple: __props.multiple });
219
+ const slotProps = toRef(() => ({
220
+ isDisabled,
221
+ select: selection.select,
222
+ unselect: selection.unselect,
223
+ toggle: selection.toggle
224
+ }));
225
+ provideExpansionPanelSelection(__props.namespace, selection);
148
226
  return (_ctx, _cache) => {
149
227
  return openBlock(), createBlock(unref(Atom_default), {
150
228
  as: __props.as,
151
229
  renderless: __props.renderless
152
230
  }, {
153
- default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
231
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
154
232
  _: 3
155
233
  }, 8, ["as", "renderless"]);
156
234
  };
157
235
  }
158
236
  });
159
- var AvatarRoot_default = _sfc_main$22;
237
+ var ExpansionPanelRoot_default = _sfc_main$23;
160
238
 
161
239
  //#endregion
162
- //#region src/components/Avatar/index.ts
163
- const Avatar = {
164
- Fallback: AvatarFallback_default,
165
- Image: AvatarImage_default,
166
- Root: AvatarRoot_default
167
- };
240
+ //#region src/components/ExpansionPanel/ExpansionPanelItem.vue
241
+ const [useExpansionPanelItem, provideExpansionPanelItem] = createContext({ suffix: "item" });
242
+ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
243
+ name: "ExpansionPanelItem",
244
+ __name: "ExpansionPanelItem",
245
+ props: {
246
+ id: {},
247
+ value: {},
248
+ disabled: {},
249
+ namespace: { default: "v0:expansion-panel" },
250
+ as: {},
251
+ renderless: { type: Boolean }
252
+ },
253
+ setup(__props) {
254
+ const selection = useExpansionPanelRoot(__props.namespace);
255
+ const ticket = selection.register({
256
+ id: __props.id,
257
+ value: __props.value,
258
+ disabled: __props.disabled
259
+ });
260
+ const headerId = toRef(() => `${ticket.id}-header`);
261
+ const contentId = toRef(() => `${ticket.id}-content`);
262
+ const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(selection.disabled));
263
+ const slotProps = toRef(() => ({
264
+ isSelected: ticket.isSelected.value,
265
+ isDisabled: isDisabled.value,
266
+ attrs: { "data-selected": ticket.isSelected.value || void 0 }
267
+ }));
268
+ onBeforeUnmount(() => selection.unregister(ticket.id));
269
+ provideExpansionPanelItem(__props.namespace, {
270
+ ticket,
271
+ headerId,
272
+ contentId,
273
+ isDisabled
274
+ });
275
+ return (_ctx, _cache) => {
276
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
277
+ as: __props.as,
278
+ renderless: __props.renderless
279
+ }), {
280
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
281
+ _: 3
282
+ }, 16, ["as", "renderless"]);
283
+ };
284
+ }
285
+ });
286
+ var ExpansionPanelItem_default = _sfc_main$22;
168
287
 
169
288
  //#endregion
170
289
  //#region src/components/ExpansionPanel/ExpansionPanelActivator.vue
@@ -172,62 +291,45 @@ const _sfc_main$21 = /* @__PURE__ */ defineComponent({
172
291
  name: "ExpansionPanelActivator",
173
292
  __name: "ExpansionPanelActivator",
174
293
  props: {
175
- itemNamespace: { default: "v0:expansion-panel-item" },
294
+ namespace: { default: "v0:expansion-panel" },
176
295
  as: { default: "button" },
177
296
  renderless: { type: Boolean }
178
297
  },
179
298
  setup(__props) {
180
- const context = useContext(__props.itemNamespace);
299
+ const item = useExpansionPanelItem(__props.namespace);
181
300
  function onKeydown(e) {
182
301
  if (e.key === "Enter" || e.key === " ") {
183
302
  e.preventDefault();
184
- context.ticket.toggle();
303
+ item.ticket.toggle();
185
304
  }
186
305
  }
187
306
  const slotProps = toRef(() => ({
188
- "id": context.headerId.value,
189
- "role": "button",
190
- "tabindex": context.isDisabled.value ? -1 : 0,
191
- "aria-expanded": context.ticket.isSelected.value,
192
- "aria-controls": context.contentId.value,
193
- "aria-disabled": context.isDisabled.value,
194
- "isSelected": context.ticket.isSelected.value,
195
- "toggle": context.ticket.toggle,
196
- "onClick": context.ticket.toggle,
197
- onKeydown
307
+ isDisabled: item.isDisabled.value,
308
+ isSelected: item.ticket.isSelected.value,
309
+ toggle: item.ticket.toggle,
310
+ attrs: {
311
+ "id": item.headerId.value,
312
+ "role": __props.as === "button" ? void 0 : "button",
313
+ "tabindex": item.isDisabled.value ? -1 : 0,
314
+ "aria-expanded": item.ticket.isSelected.value,
315
+ "aria-controls": item.contentId.value,
316
+ "aria-disabled": item.isDisabled.value,
317
+ "data-disabled": item.isDisabled.value || void 0,
318
+ "data-selected": item.ticket.isSelected.value || void 0,
319
+ "disabled": __props.as === "button" ? item.isDisabled.value : void 0,
320
+ "type": __props.as === "button" ? "button" : void 0,
321
+ "onClick": item.ticket.toggle,
322
+ onKeydown
323
+ }
198
324
  }));
199
- const isExpanded = toRef(() => context.ticket.isSelected.value);
200
- const isDisabled = toRef(() => context.isDisabled.value);
201
325
  return (_ctx, _cache) => {
202
- return openBlock(), createBlock(unref(Atom_default), {
203
- id: slotProps.value.id,
204
- "aria-controls": slotProps.value["aria-controls"],
205
- "aria-disabled": slotProps.value["aria-disabled"],
206
- "aria-expanded": slotProps.value["aria-expanded"],
326
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
207
327
  as: __props.as,
208
- "data-disabled": isDisabled.value ? "" : void 0,
209
- "data-expanded": isExpanded.value ? "" : void 0,
210
- renderless: __props.renderless,
211
- role: slotProps.value.role,
212
- tabindex: slotProps.value.tabindex,
213
- onClick: unref(context).ticket.toggle,
214
- onKeydown
215
- }, {
328
+ renderless: __props.renderless
329
+ }), {
216
330
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
217
331
  _: 3
218
- }, 8, [
219
- "id",
220
- "aria-controls",
221
- "aria-disabled",
222
- "aria-expanded",
223
- "as",
224
- "data-disabled",
225
- "data-expanded",
226
- "renderless",
227
- "role",
228
- "tabindex",
229
- "onClick"
230
- ]);
332
+ }, 16, ["as", "renderless"]);
231
333
  };
232
334
  }
233
335
  });
@@ -239,97 +341,87 @@ const _sfc_main$20 = /* @__PURE__ */ defineComponent({
239
341
  name: "ExpansionPanelContent",
240
342
  __name: "ExpansionPanelContent",
241
343
  props: {
242
- itemNamespace: { default: "v0:expansion-panel-item" },
344
+ namespace: { default: "v0:expansion-panel" },
243
345
  as: { default: "div" },
244
346
  renderless: { type: Boolean }
245
347
  },
246
348
  setup(__props) {
247
- const context = useContext(__props.itemNamespace);
349
+ const item = useExpansionPanelItem(__props.namespace);
248
350
  const slotProps = toRef(() => ({
249
- "id": context.contentId.value,
250
- "role": "region",
251
- "aria-labelledby": context.headerId.value,
252
- "isSelected": context.ticket.isSelected.value
351
+ isSelected: item.ticket.isSelected.value,
352
+ attrs: {
353
+ "data-selected": item.ticket.isSelected.value,
354
+ "id": item.contentId.value,
355
+ "role": "region",
356
+ "aria-labelledby": item.headerId.value,
357
+ "hidden": !item.ticket.isSelected.value
358
+ }
253
359
  }));
254
- const isExpanded = toRef(() => context.ticket.isSelected.value);
255
360
  return (_ctx, _cache) => {
256
- return openBlock(), createBlock(unref(Atom_default), {
257
- id: slotProps.value.id,
258
- "aria-labelledby": slotProps.value["aria-labelledby"],
361
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
259
362
  as: __props.as,
260
- "data-expanded": isExpanded.value ? "" : void 0,
261
- renderless: __props.renderless,
262
- role: slotProps.value.role
263
- }, {
363
+ renderless: __props.renderless
364
+ }), {
264
365
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
265
366
  _: 3
266
- }, 8, [
267
- "id",
268
- "aria-labelledby",
269
- "as",
270
- "data-expanded",
271
- "renderless",
272
- "role"
273
- ]);
367
+ }, 16, ["as", "renderless"]);
274
368
  };
275
369
  }
276
370
  });
277
371
  var ExpansionPanelContent_default = _sfc_main$20;
278
372
 
279
373
  //#endregion
280
- //#region src/components/ExpansionPanel/ExpansionPanelItem.vue
374
+ //#region src/components/ExpansionPanel/ExpansionPanelHeader.vue
281
375
  const _sfc_main$19 = /* @__PURE__ */ defineComponent({
282
- name: "ExpansionPanelItem",
283
- __name: "ExpansionPanelItem",
376
+ name: "ExpansionPanelHeader",
377
+ __name: "ExpansionPanelHeader",
284
378
  props: {
285
- id: {},
286
- value: {},
287
- disabled: {},
288
379
  namespace: { default: "v0:expansion-panel" },
289
- itemNamespace: { default: "v0:expansion-panel-item" },
290
- as: {},
380
+ as: { default: "h3" },
291
381
  renderless: { type: Boolean }
292
382
  },
293
383
  setup(__props) {
294
- const expansion = useSelection(__props.namespace);
295
- const ticket = expansion.register({
296
- id: __props.id,
297
- value: __props.value,
298
- disabled: __props.disabled
299
- });
300
- const headerId = toRef(() => `${ticket.id}-header`);
301
- const contentId = toRef(() => `${ticket.id}-content`);
302
- const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(expansion.disabled));
303
- const [, provideItemContext] = createContext(__props.itemNamespace);
304
- provideItemContext({
305
- ticket,
306
- headerId,
307
- contentId,
308
- isDisabled
309
- });
310
- onUnmounted(() => {
311
- expansion.unregister(ticket.id);
312
- });
384
+ const item = useExpansionPanelItem(__props.namespace);
385
+ const slotProps = toRef(() => ({
386
+ isSelected: item.ticket.isSelected.value,
387
+ attrs: { "data-selected": item.ticket.isSelected.value || void 0 }
388
+ }));
313
389
  return (_ctx, _cache) => {
314
- return openBlock(), createBlock(unref(Atom_default), {
390
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
315
391
  as: __props.as,
316
392
  renderless: __props.renderless
317
- }, {
318
- default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
393
+ }), {
394
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
319
395
  _: 3
320
- }, 8, ["as", "renderless"]);
396
+ }, 16, ["as", "renderless"]);
321
397
  };
322
398
  }
323
399
  });
324
- var ExpansionPanelItem_default = _sfc_main$19;
400
+ var ExpansionPanelHeader_default = _sfc_main$19;
325
401
 
326
402
  //#endregion
327
- //#region src/components/ExpansionPanel/ExpansionPanelRoot.vue
403
+ //#region src/components/ExpansionPanel/index.ts
404
+ /**
405
+ * ExpansionPanel component with sub-components for building expansion panels.
406
+ *
407
+ * @see https://0.vuetifyjs.com/components/expansion-panels
408
+ */
409
+ const ExpansionPanel = {
410
+ Root: ExpansionPanelRoot_default,
411
+ Item: ExpansionPanelItem_default,
412
+ Header: ExpansionPanelHeader_default,
413
+ Activator: ExpansionPanelActivator_default,
414
+ Content: ExpansionPanelContent_default
415
+ };
416
+
417
+ //#endregion
418
+ //#region src/components/Group/GroupRoot.vue
419
+ const [useGroupRoot, provideGroupRoot] = createContext();
328
420
  const _sfc_main$18 = /* @__PURE__ */ defineComponent({
329
- name: "ExpansionPanelRoot",
330
- __name: "ExpansionPanelRoot",
421
+ name: "GroupRoot",
422
+ __name: "GroupRoot",
331
423
  props: /* @__PURE__ */ mergeModels({
332
- namespace: { default: "v0:expansion-panel" },
424
+ namespace: { default: "v0:group" },
333
425
  disabled: {
334
426
  type: Boolean,
335
427
  default: false
@@ -341,13 +433,7 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
341
433
  mandatory: {
342
434
  type: [Boolean, String],
343
435
  default: false
344
- },
345
- multiple: {
346
- type: Boolean,
347
- default: false
348
- },
349
- as: {},
350
- renderless: { type: Boolean }
436
+ }
351
437
  }, {
352
438
  "modelValue": {},
353
439
  "modelModifiers": {}
@@ -355,60 +441,33 @@ const _sfc_main$18 = /* @__PURE__ */ defineComponent({
355
441
  emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
356
442
  setup(__props) {
357
443
  const model = useModel(__props, "modelValue");
358
- const [, provideExpansionControl, context] = createSelectionContext({
359
- namespace: __props.namespace,
444
+ const group = createGroup({
360
445
  disabled: toRef(() => __props.disabled),
361
446
  enroll: __props.enroll,
362
447
  mandatory: __props.mandatory,
363
- multiple: __props.multiple,
364
448
  events: true
365
449
  });
366
- const bindableProps = computed(() => ({
367
- disabled: toValue(context.disabled),
368
- multiple: __props.multiple,
369
- select: context.select,
370
- unselect: context.unselect,
371
- toggle: context.toggle,
372
- ariaMultiselectable: __props.multiple
450
+ useProxyModel(group, model, { multiple: true });
451
+ provideGroupRoot(__props.namespace, group);
452
+ const slotProps = toRef(() => ({
453
+ isDisabled: toValue(group.disabled),
454
+ isNoneSelected: group.isNoneSelected.value,
455
+ isAllSelected: group.isAllSelected.value,
456
+ isMixed: group.isMixed.value,
457
+ select: group.select,
458
+ unselect: group.unselect,
459
+ toggle: group.toggle,
460
+ selectAll: group.selectAll,
461
+ unselectAll: group.unselectAll,
462
+ toggleAll: group.toggleAll,
463
+ attrs: { "aria-multiselectable": true }
373
464
  }));
374
- useProxyModel(context, model, { multiple: __props.multiple });
375
- provideExpansionControl(context);
376
465
  return (_ctx, _cache) => {
377
- return openBlock(), createBlock(unref(Atom_default), {
378
- "aria-multiselectable": bindableProps.value.ariaMultiselectable,
379
- as: __props.as,
380
- disabled: bindableProps.value.disabled,
381
- multiple: bindableProps.value.multiple,
382
- renderless: __props.renderless,
383
- select: bindableProps.value.select,
384
- toggle: bindableProps.value.toggle,
385
- unselect: bindableProps.value.unselect
386
- }, {
387
- default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(bindableProps.value)))]),
388
- _: 3
389
- }, 8, [
390
- "aria-multiselectable",
391
- "as",
392
- "disabled",
393
- "multiple",
394
- "renderless",
395
- "select",
396
- "toggle",
397
- "unselect"
398
- ]);
466
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
399
467
  };
400
468
  }
401
469
  });
402
- var ExpansionPanelRoot_default = _sfc_main$18;
403
-
404
- //#endregion
405
- //#region src/components/ExpansionPanel/index.ts
406
- const ExpansionPanel = {
407
- Root: ExpansionPanelRoot_default,
408
- Item: ExpansionPanelItem_default,
409
- Activator: ExpansionPanelActivator_default,
410
- Content: ExpansionPanelContent_default
411
- };
470
+ var GroupRoot_default = _sfc_main$18;
412
471
 
413
472
  //#endregion
414
473
  //#region src/components/Group/GroupItem.vue
@@ -416,15 +475,15 @@ const _sfc_main$17 = /* @__PURE__ */ defineComponent({
416
475
  name: "GroupItem",
417
476
  __name: "GroupItem",
418
477
  props: {
419
- label: {},
420
478
  id: {},
479
+ label: {},
480
+ value: {},
421
481
  disabled: {},
422
482
  indeterminate: { default: false },
423
- value: {},
424
483
  namespace: { default: "v0:group" }
425
484
  },
426
485
  setup(__props) {
427
- const group = useGroup(__props.namespace);
486
+ const group = useGroupRoot(__props.namespace);
428
487
  const ticket = group.register({
429
488
  id: __props.id,
430
489
  value: __props.value,
@@ -435,83 +494,41 @@ const _sfc_main$17 = /* @__PURE__ */ defineComponent({
435
494
  onUnmounted(() => {
436
495
  group.unregister(ticket.id);
437
496
  });
497
+ const slotProps = toRef(() => ({
498
+ id: String(ticket.id),
499
+ label: __props.label,
500
+ value: __props.value,
501
+ isSelected: toValue(ticket.isSelected),
502
+ isMixed: toValue(ticket.isMixed),
503
+ isDisabled: toValue(isDisabled),
504
+ select: ticket.select,
505
+ unselect: ticket.unselect,
506
+ toggle: ticket.toggle,
507
+ mix: ticket.mix,
508
+ unmix: ticket.unmix,
509
+ attrs: {
510
+ "role": "checkbox",
511
+ "aria-checked": toValue(ticket.isMixed) ? "mixed" : toValue(ticket.isSelected),
512
+ "aria-disabled": toValue(isDisabled),
513
+ "data-selected": toValue(ticket.isSelected) || void 0,
514
+ "data-disabled": toValue(isDisabled) || void 0,
515
+ "data-mixed": toValue(ticket.isMixed) || void 0
516
+ }
517
+ }));
438
518
  return (_ctx, _cache) => {
439
- return renderSlot(_ctx.$slots, "default", {
440
- id: String(unref(ticket).id),
441
- ariaDisabled: toValue(isDisabled.value),
442
- ariaSelected: toValue(unref(ticket).isSelected),
443
- disabled: toValue(isDisabled.value),
444
- isMixed: toValue(unref(ticket).isMixed),
445
- isSelected: toValue(unref(ticket).isSelected),
446
- label: __props.label,
447
- mix: unref(ticket).mix,
448
- select: unref(ticket).select,
449
- toggle: unref(ticket).toggle,
450
- unmix: unref(ticket).unmix,
451
- unselect: unref(ticket).unselect,
452
- value: __props.value
453
- });
519
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
454
520
  };
455
521
  }
456
522
  });
457
523
  var GroupItem_default = _sfc_main$17;
458
524
 
459
- //#endregion
460
- //#region src/components/Group/GroupRoot.vue
461
- const _sfc_main$16 = /* @__PURE__ */ defineComponent({
462
- name: "GroupRoot",
463
- __name: "GroupRoot",
464
- props: /* @__PURE__ */ mergeModels({
465
- namespace: { default: "v0:group" },
466
- disabled: {
467
- type: Boolean,
468
- default: false
469
- },
470
- enroll: {
471
- type: Boolean,
472
- default: false
473
- },
474
- mandatory: {
475
- type: [Boolean, String],
476
- default: false
477
- }
478
- }, {
479
- "modelValue": {},
480
- "modelModifiers": {}
481
- }),
482
- emits: ["update:modelValue"],
483
- setup(__props) {
484
- const model = useModel(__props, "modelValue");
485
- const [, provideGroupControl, context] = createGroupContext({
486
- namespace: __props.namespace,
487
- disabled: toRef(() => __props.disabled),
488
- enroll: __props.enroll,
489
- mandatory: __props.mandatory,
490
- events: true
491
- });
492
- useProxyModel(context, model, { multiple: true });
493
- provideGroupControl(context);
494
- return (_ctx, _cache) => {
495
- return renderSlot(_ctx.$slots, "default", {
496
- ariaMultiselectable: true,
497
- disabled: toValue(unref(context).disabled),
498
- isAllSelected: unref(context).isAllSelected.value,
499
- isMixed: unref(context).isMixed.value,
500
- isNoneSelected: unref(context).isNoneSelected.value,
501
- select: unref(context).select,
502
- selectAll: unref(context).selectAll,
503
- toggle: unref(context).toggle,
504
- toggleAll: unref(context).toggleAll,
505
- unselect: unref(context).unselect,
506
- unselectAll: unref(context).unselectAll
507
- });
508
- };
509
- }
510
- });
511
- var GroupRoot_default = _sfc_main$16;
512
-
513
525
  //#endregion
514
526
  //#region src/components/Group/index.ts
527
+ /**
528
+ * Group component with sub-components for multi-selection.
529
+ *
530
+ * @see https://0.vuetifyjs.com/components/group
531
+ */
515
532
  const Group = {
516
533
  Root: GroupRoot_default,
517
534
  Item: GroupItem_default
@@ -519,13 +536,10 @@ const Group = {
519
536
 
520
537
  //#endregion
521
538
  //#region src/components/Pagination/PaginationRoot.vue
522
- function usePaginationControls(namespace) {
523
- return useContext(`${namespace}:controls`);
524
- }
525
- function usePaginationItems(namespace) {
526
- return useContext(`${namespace}:items`);
527
- }
528
- const _sfc_main$15 = /* @__PURE__ */ defineComponent({
539
+ const [usePaginationRoot, providePaginationRoot] = createContext();
540
+ const [usePaginationControls, providePaginationControls] = createContext({ suffix: "controls" });
541
+ const [usePaginationItems, providePaginationItems] = createContext({ suffix: "items" });
542
+ const _sfc_main$16 = /* @__PURE__ */ defineComponent({
529
543
  name: "PaginationRoot",
530
544
  __name: "PaginationRoot",
531
545
  props: /* @__PURE__ */ mergeModels({
@@ -546,18 +560,19 @@ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
546
560
  emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
547
561
  setup(__props) {
548
562
  const page = useModel(__props, "modelValue");
563
+ const locale = useLocale();
564
+ const controls = useRegistry();
565
+ const items = useRegistry();
566
+ const atom = useTemplateRef("atom");
549
567
  const itemWidth = shallowRef(0);
550
568
  const itemGap = shallowRef(0);
551
- const atom = useTemplateRef("atom");
552
- const locale = useLocale();
553
- const [, provideControlContext, controls] = createRegistryContext({ namespace: `${__props.namespace}:controls` });
554
- const [, provideItemContext, items] = createRegistryContext({ namespace: `${__props.namespace}:items` });
555
569
  const overflow = createOverflow({
556
570
  container: () => atom.value?.element,
557
571
  itemWidth,
558
572
  gap: itemGap
559
573
  });
560
574
  watch([() => items.size, () => overflow.width.value], () => {
575
+ if (!IN_BROWSER) return;
561
576
  const el = items.seek("first")?.value;
562
577
  const root = overflow.container.value;
563
578
  if (!el || !root) return;
@@ -568,24 +583,21 @@ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
568
583
  itemWidth.value = el.offsetWidth + marginX;
569
584
  itemGap.value = gapX;
570
585
  }, { flush: "post" });
571
- const visible = computed(() => {
572
- const totalCap = overflow.capacity.value;
573
- if (totalCap === Infinity) return __props.totalVisible ?? Infinity;
574
- const pageCap = Math.max(0, totalCap - controls.size);
575
- const noVisible = /* @__PURE__ */ isNullOrUndefined(__props.totalVisible);
576
- if (pageCap > 0) return noVisible ? pageCap : Math.min(__props.totalVisible, pageCap);
577
- return noVisible ? 1 : __props.totalVisible;
578
- });
579
- const [, providePaginationContext, pagination] = createPaginationContext({
580
- namespace: __props.namespace,
586
+ const pagination = createPagination({
581
587
  page,
582
- visible,
588
+ visible: computed(() => {
589
+ const totalCap = overflow.capacity.value;
590
+ if (totalCap === Infinity) return __props.totalVisible ?? 7;
591
+ const pageCap = Math.max(0, totalCap - controls.size);
592
+ const noVisible = /* @__PURE__ */ isNullOrUndefined(__props.totalVisible);
593
+ if (pageCap > 0) return noVisible ? pageCap : Math.min(__props.totalVisible, pageCap);
594
+ return noVisible ? 1 : __props.totalVisible;
595
+ }),
583
596
  ellipsis: __props.ellipsis,
584
597
  size: () => __props.size,
585
598
  itemsPerPage: () => __props.itemsPerPage
586
599
  });
587
600
  const slotProps = toRef(() => ({
588
- ariaLabel: locale.t("Pagination.label", void 0, "Pagination"),
589
601
  page: pagination.page.value,
590
602
  size: pagination.size,
591
603
  pages: pagination.pages,
@@ -599,34 +611,34 @@ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
599
611
  last: pagination.last,
600
612
  next: pagination.next,
601
613
  prev: pagination.prev,
602
- select: pagination.select
614
+ select: pagination.select,
615
+ attrs: {
616
+ "aria-label": locale.t("Pagination.label", void 0, "Pagination"),
617
+ "role": __props.as === "nav" ? void 0 : "navigation"
618
+ }
603
619
  }));
604
- providePaginationContext();
605
- provideControlContext();
606
- provideItemContext();
620
+ providePaginationRoot(__props.namespace, pagination);
621
+ providePaginationControls(__props.namespace, controls);
622
+ providePaginationItems(__props.namespace, items);
607
623
  return (_ctx, _cache) => {
608
- return openBlock(), createBlock(unref(Atom_default), {
624
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
609
625
  ref_key: "atom",
610
- ref: atom,
611
- "aria-label": slotProps.value.ariaLabel,
626
+ ref: atom
627
+ }, slotProps.value.attrs, {
612
628
  as: __props.as,
613
629
  renderless: __props.renderless
614
- }, {
630
+ }), {
615
631
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
616
632
  _: 3
617
- }, 8, [
618
- "aria-label",
619
- "as",
620
- "renderless"
621
- ]);
633
+ }, 16, ["as", "renderless"]);
622
634
  };
623
635
  }
624
636
  });
625
- var PaginationRoot_default = _sfc_main$15;
637
+ var PaginationRoot_default = _sfc_main$16;
626
638
 
627
639
  //#endregion
628
640
  //#region src/components/Pagination/PaginationEllipsis.vue
629
- const _sfc_main$14 = /* @__PURE__ */ defineComponent({
641
+ const _sfc_main$15 = /* @__PURE__ */ defineComponent({
630
642
  name: "PaginationEllipsis",
631
643
  __name: "PaginationEllipsis",
632
644
  props: {
@@ -637,7 +649,7 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
637
649
  renderless: { type: Boolean }
638
650
  },
639
651
  setup(__props) {
640
- const pagination = usePagination(__props.namespace);
652
+ const pagination = usePaginationRoot(__props.namespace);
641
653
  const items = usePaginationItems(__props.namespace);
642
654
  const atom = useTemplateRef("atom");
643
655
  watch(() => atom.value?.element, (el) => {
@@ -647,35 +659,31 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
647
659
  value: el
648
660
  });
649
661
  }, { immediate: true });
650
- onBeforeUnmount(() => items.unregister(__props.id));
651
662
  const resolvedEllipsis = toRef(() => __props.ellipsis ?? pagination.ellipsis);
652
663
  const slotProps = toRef(() => ({
653
- ariaHidden: "true",
654
- ellipsis: resolvedEllipsis.value
664
+ ellipsis: resolvedEllipsis.value,
665
+ attrs: { "aria-hidden": "true" }
655
666
  }));
667
+ onBeforeUnmount(() => items.unregister(__props.id));
656
668
  return (_ctx, _cache) => {
657
- return openBlock(), createBlock(unref(Atom_default), {
669
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
658
670
  ref_key: "atom",
659
- ref: atom,
660
- "aria-hidden": slotProps.value.ariaHidden,
671
+ ref: atom
672
+ }, slotProps.value.attrs, {
661
673
  as: __props.as,
662
674
  renderless: __props.renderless
663
- }, {
675
+ }), {
664
676
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)), () => [createTextVNode(toDisplayString(resolvedEllipsis.value), 1)])]),
665
677
  _: 3
666
- }, 8, [
667
- "aria-hidden",
668
- "as",
669
- "renderless"
670
- ]);
678
+ }, 16, ["as", "renderless"]);
671
679
  };
672
680
  }
673
681
  });
674
- var PaginationEllipsis_default = _sfc_main$14;
682
+ var PaginationEllipsis_default = _sfc_main$15;
675
683
 
676
684
  //#endregion
677
685
  //#region src/components/Pagination/PaginationFirst.vue
678
- const _sfc_main$13 = /* @__PURE__ */ defineComponent({
686
+ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
679
687
  name: "PaginationFirst",
680
688
  __name: "PaginationFirst",
681
689
  props: {
@@ -687,7 +695,7 @@ const _sfc_main$13 = /* @__PURE__ */ defineComponent({
687
695
  },
688
696
  setup(__props) {
689
697
  const locale = useLocale();
690
- const pagination = usePagination(__props.namespace);
698
+ const pagination = usePaginationRoot(__props.namespace);
691
699
  const controls = usePaginationControls(__props.namespace);
692
700
  const atom = useTemplateRef("atom");
693
701
  watch(() => atom.value?.element, (el) => {
@@ -697,50 +705,44 @@ const _sfc_main$13 = /* @__PURE__ */ defineComponent({
697
705
  value: el
698
706
  });
699
707
  }, { immediate: true });
700
- onBeforeUnmount(() => controls.unregister(__props.id));
701
708
  const isDisabled = toRef(() => __props.disabled || pagination.isFirst.value);
702
- function onClick() {
709
+ function first() {
703
710
  if (isDisabled.value) return;
704
711
  pagination.first();
705
712
  }
706
713
  const slotProps = toRef(() => ({
707
- ariaLabel: locale.t("Pagination.first", void 0, "Go to first page"),
708
- disabled: isDisabled.value,
709
- onClick
714
+ isDisabled: isDisabled.value,
715
+ first,
716
+ attrs: {
717
+ "aria-label": locale.t("Pagination.first", void 0, "Go to first page"),
718
+ "aria-disabled": isDisabled.value,
719
+ "data-disabled": isDisabled.value || void 0,
720
+ "disabled": __props.as === "button" ? isDisabled.value : void 0,
721
+ "tabindex": isDisabled.value ? -1 : 0,
722
+ "type": __props.as === "button" ? "button" : void 0,
723
+ "onClick": first
724
+ }
710
725
  }));
726
+ onBeforeUnmount(() => controls.unregister(__props.id));
711
727
  return (_ctx, _cache) => {
712
- return openBlock(), createBlock(unref(Atom_default), {
728
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
713
729
  ref_key: "atom",
714
- ref: atom,
715
- "aria-disabled": slotProps.value.disabled,
716
- "aria-label": slotProps.value.ariaLabel,
730
+ ref: atom
731
+ }, slotProps.value.attrs, {
717
732
  as: __props.as,
718
- "data-disabled": slotProps.value.disabled || void 0,
719
- disabled: __props.as === "button" ? slotProps.value.disabled : void 0,
720
- renderless: __props.renderless,
721
- type: __props.as === "button" ? "button" : void 0,
722
- onClick: slotProps.value.onClick
723
- }, {
733
+ renderless: __props.renderless
734
+ }), {
724
735
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
725
736
  _: 3
726
- }, 8, [
727
- "aria-disabled",
728
- "aria-label",
729
- "as",
730
- "data-disabled",
731
- "disabled",
732
- "renderless",
733
- "type",
734
- "onClick"
735
- ]);
737
+ }, 16, ["as", "renderless"]);
736
738
  };
737
739
  }
738
740
  });
739
- var PaginationFirst_default = _sfc_main$13;
741
+ var PaginationFirst_default = _sfc_main$14;
740
742
 
741
743
  //#endregion
742
744
  //#region src/components/Pagination/PaginationItem.vue
743
- const _sfc_main$12 = /* @__PURE__ */ defineComponent({
745
+ const _sfc_main$13 = /* @__PURE__ */ defineComponent({
744
746
  name: "PaginationItem",
745
747
  __name: "PaginationItem",
746
748
  props: {
@@ -756,7 +758,7 @@ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
756
758
  },
757
759
  setup(__props) {
758
760
  const locale = useLocale();
759
- const pagination = usePagination(__props.namespace);
761
+ const pagination = usePaginationRoot(__props.namespace);
760
762
  const items = usePaginationItems(__props.namespace);
761
763
  const atom = useTemplateRef("atom");
762
764
  watch(() => atom.value?.element, (el) => {
@@ -766,59 +768,51 @@ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
766
768
  value: el
767
769
  });
768
770
  }, { immediate: true });
769
- onBeforeUnmount(() => items.unregister(__props.id));
770
771
  const isSelected = toRef(() => pagination.page.value === __props.value);
771
772
  const ariaLabel = toRef(() => {
772
773
  return isSelected.value ? locale.t("Pagination.currentPage", { page: __props.value }, `Page ${__props.value}, current page`) : locale.t("Pagination.goToPage", { page: __props.value }, `Go to page ${__props.value}`);
773
- });
774
- const slotProps = toRef(() => ({
775
- ariaLabel: ariaLabel.value,
776
- ariaCurrent: isSelected.value ? "page" : void 0,
777
- page: __props.value,
778
- isSelected: isSelected.value,
779
- dataSelected: isSelected.value,
780
- disabled: __props.disabled,
781
- select
782
- }));
774
+ });
783
775
  function select() {
784
776
  if (__props.disabled) return;
785
777
  pagination.select(__props.value);
786
778
  }
779
+ const slotProps = toRef(() => ({
780
+ page: __props.value,
781
+ isSelected: isSelected.value,
782
+ isDisabled: __props.disabled,
783
+ select,
784
+ attrs: {
785
+ "aria-label": ariaLabel.value,
786
+ "aria-current": isSelected.value ? "page" : void 0,
787
+ "aria-disabled": __props.disabled,
788
+ "data-selected": isSelected.value || void 0,
789
+ "data-disabled": __props.disabled || void 0,
790
+ "disabled": __props.as === "button" ? __props.disabled : void 0,
791
+ "tabindex": __props.disabled ? -1 : 0,
792
+ "type": __props.as === "button" ? "button" : void 0,
793
+ "onClick": select
794
+ }
795
+ }));
796
+ onBeforeUnmount(() => items.unregister(__props.id));
787
797
  return (_ctx, _cache) => {
788
- return openBlock(), createBlock(unref(Atom_default), {
798
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
789
799
  ref_key: "atom",
790
- ref: atom,
791
- "aria-current": slotProps.value.ariaCurrent,
792
- "aria-label": slotProps.value.ariaLabel,
800
+ ref: atom
801
+ }, slotProps.value.attrs, {
793
802
  as: __props.as,
794
- "data-disabled": slotProps.value.disabled || void 0,
795
- "data-selected": slotProps.value.dataSelected || void 0,
796
- disabled: __props.as === "button" ? slotProps.value.disabled : void 0,
797
- renderless: __props.renderless,
798
- type: __props.as === "button" ? "button" : void 0,
799
- onClick: slotProps.value.select
800
- }, {
801
- default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
803
+ renderless: __props.renderless
804
+ }), {
805
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)), () => [createTextVNode(toDisplayString(__props.value), 1)])]),
802
806
  _: 3
803
- }, 8, [
804
- "aria-current",
805
- "aria-label",
806
- "as",
807
- "data-disabled",
808
- "data-selected",
809
- "disabled",
810
- "renderless",
811
- "type",
812
- "onClick"
813
- ]);
807
+ }, 16, ["as", "renderless"]);
814
808
  };
815
809
  }
816
810
  });
817
- var PaginationItem_default = _sfc_main$12;
811
+ var PaginationItem_default = _sfc_main$13;
818
812
 
819
813
  //#endregion
820
814
  //#region src/components/Pagination/PaginationLast.vue
821
- const _sfc_main$11 = /* @__PURE__ */ defineComponent({
815
+ const _sfc_main$12 = /* @__PURE__ */ defineComponent({
822
816
  name: "PaginationLast",
823
817
  __name: "PaginationLast",
824
818
  props: {
@@ -830,7 +824,7 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
830
824
  },
831
825
  setup(__props) {
832
826
  const locale = useLocale();
833
- const pagination = usePagination(__props.namespace);
827
+ const pagination = usePaginationRoot(__props.namespace);
834
828
  const controls = usePaginationControls(__props.namespace);
835
829
  const atom = useTemplateRef("atom");
836
830
  watch(() => atom.value?.element, (el) => {
@@ -840,50 +834,44 @@ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
840
834
  value: el
841
835
  });
842
836
  }, { immediate: true });
843
- onBeforeUnmount(() => controls.unregister(__props.id));
844
837
  const isDisabled = toRef(() => __props.disabled || pagination.isLast.value);
845
- function onClick() {
838
+ function last() {
846
839
  if (isDisabled.value) return;
847
840
  pagination.last();
848
841
  }
849
842
  const slotProps = toRef(() => ({
850
- ariaLabel: locale.t("Pagination.last", void 0, "Go to last page"),
851
- disabled: isDisabled.value,
852
- onClick
843
+ isDisabled: isDisabled.value,
844
+ last,
845
+ attrs: {
846
+ "aria-label": locale.t("Pagination.last", void 0, "Go to last page"),
847
+ "aria-disabled": isDisabled.value,
848
+ "data-disabled": isDisabled.value || void 0,
849
+ "disabled": __props.as === "button" ? isDisabled.value : void 0,
850
+ "tabindex": isDisabled.value ? -1 : 0,
851
+ "type": __props.as === "button" ? "button" : void 0,
852
+ "onClick": last
853
+ }
853
854
  }));
855
+ onBeforeUnmount(() => controls.unregister(__props.id));
854
856
  return (_ctx, _cache) => {
855
- return openBlock(), createBlock(unref(Atom_default), {
857
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
856
858
  ref_key: "atom",
857
- ref: atom,
858
- "aria-disabled": slotProps.value.disabled,
859
- "aria-label": slotProps.value.ariaLabel,
859
+ ref: atom
860
+ }, slotProps.value.attrs, {
860
861
  as: __props.as,
861
- "data-disabled": slotProps.value.disabled || void 0,
862
- disabled: __props.as === "button" ? slotProps.value.disabled : void 0,
863
- renderless: __props.renderless,
864
- type: __props.as === "button" ? "button" : void 0,
865
- onClick: slotProps.value.onClick
866
- }, {
862
+ renderless: __props.renderless
863
+ }), {
867
864
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
868
865
  _: 3
869
- }, 8, [
870
- "aria-disabled",
871
- "aria-label",
872
- "as",
873
- "data-disabled",
874
- "disabled",
875
- "renderless",
876
- "type",
877
- "onClick"
878
- ]);
866
+ }, 16, ["as", "renderless"]);
879
867
  };
880
868
  }
881
869
  });
882
- var PaginationLast_default = _sfc_main$11;
870
+ var PaginationLast_default = _sfc_main$12;
883
871
 
884
872
  //#endregion
885
873
  //#region src/components/Pagination/PaginationNext.vue
886
- const _sfc_main$10 = /* @__PURE__ */ defineComponent({
874
+ const _sfc_main$11 = /* @__PURE__ */ defineComponent({
887
875
  name: "PaginationNext",
888
876
  __name: "PaginationNext",
889
877
  props: {
@@ -895,7 +883,7 @@ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
895
883
  },
896
884
  setup(__props) {
897
885
  const locale = useLocale();
898
- const pagination = usePagination(__props.namespace);
886
+ const pagination = usePaginationRoot(__props.namespace);
899
887
  const controls = usePaginationControls(__props.namespace);
900
888
  const atom = useTemplateRef("atom");
901
889
  watch(() => atom.value?.element, (el) => {
@@ -905,50 +893,44 @@ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
905
893
  value: el
906
894
  });
907
895
  }, { immediate: true });
908
- onBeforeUnmount(() => controls.unregister(__props.id));
909
896
  const isDisabled = toRef(() => __props.disabled || pagination.isLast.value);
910
- function onClick() {
897
+ function next() {
911
898
  if (isDisabled.value) return;
912
899
  pagination.next();
913
900
  }
914
901
  const slotProps = toRef(() => ({
915
- ariaLabel: locale.t("Pagination.next", void 0, "Go to next page"),
916
- disabled: isDisabled.value,
917
- onClick
902
+ isDisabled: isDisabled.value,
903
+ next,
904
+ attrs: {
905
+ "aria-label": locale.t("Pagination.next", void 0, "Go to next page"),
906
+ "aria-disabled": isDisabled.value,
907
+ "data-disabled": isDisabled.value || void 0,
908
+ "disabled": __props.as === "button" ? isDisabled.value : void 0,
909
+ "tabindex": isDisabled.value ? -1 : 0,
910
+ "type": __props.as === "button" ? "button" : void 0,
911
+ "onClick": next
912
+ }
918
913
  }));
914
+ onBeforeUnmount(() => controls.unregister(__props.id));
919
915
  return (_ctx, _cache) => {
920
- return openBlock(), createBlock(unref(Atom_default), {
916
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
921
917
  ref_key: "atom",
922
- ref: atom,
923
- "aria-disabled": slotProps.value.disabled,
924
- "aria-label": slotProps.value.ariaLabel,
918
+ ref: atom
919
+ }, slotProps.value.attrs, {
925
920
  as: __props.as,
926
- "data-disabled": slotProps.value.disabled || void 0,
927
- disabled: __props.as === "button" ? slotProps.value.disabled : void 0,
928
- renderless: __props.renderless,
929
- type: __props.as === "button" ? "button" : void 0,
930
- onClick: slotProps.value.onClick
931
- }, {
921
+ renderless: __props.renderless
922
+ }), {
932
923
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
933
924
  _: 3
934
- }, 8, [
935
- "aria-disabled",
936
- "aria-label",
937
- "as",
938
- "data-disabled",
939
- "disabled",
940
- "renderless",
941
- "type",
942
- "onClick"
943
- ]);
925
+ }, 16, ["as", "renderless"]);
944
926
  };
945
927
  }
946
928
  });
947
- var PaginationNext_default = _sfc_main$10;
929
+ var PaginationNext_default = _sfc_main$11;
948
930
 
949
931
  //#endregion
950
932
  //#region src/components/Pagination/PaginationPrev.vue
951
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
933
+ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
952
934
  name: "PaginationPrev",
953
935
  __name: "PaginationPrev",
954
936
  props: {
@@ -960,7 +942,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
960
942
  },
961
943
  setup(__props) {
962
944
  const locale = useLocale();
963
- const pagination = usePagination(__props.namespace);
945
+ const pagination = usePaginationRoot(__props.namespace);
964
946
  const controls = usePaginationControls(__props.namespace);
965
947
  const atom = useTemplateRef("atom");
966
948
  watch(() => atom.value?.element, (el) => {
@@ -970,49 +952,94 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
970
952
  value: el
971
953
  });
972
954
  }, { immediate: true });
973
- onBeforeUnmount(() => controls.unregister(__props.id));
974
955
  const isDisabled = toRef(() => __props.disabled || pagination.isFirst.value);
975
- function onClick() {
956
+ function prev() {
976
957
  if (isDisabled.value) return;
977
958
  pagination.prev();
978
959
  }
979
960
  const slotProps = toRef(() => ({
980
- ariaLabel: locale.t("Pagination.prev", void 0, "Go to previous page"),
981
- disabled: isDisabled.value,
982
- onClick
961
+ isDisabled: isDisabled.value,
962
+ prev,
963
+ attrs: {
964
+ "aria-label": locale.t("Pagination.prev", void 0, "Go to previous page"),
965
+ "aria-disabled": isDisabled.value,
966
+ "data-disabled": isDisabled.value || void 0,
967
+ "disabled": __props.as === "button" ? isDisabled.value : void 0,
968
+ "tabindex": isDisabled.value ? -1 : 0,
969
+ "type": __props.as === "button" ? "button" : void 0,
970
+ "onClick": prev
971
+ }
983
972
  }));
973
+ onBeforeUnmount(() => controls.unregister(__props.id));
984
974
  return (_ctx, _cache) => {
985
- return openBlock(), createBlock(unref(Atom_default), {
975
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
986
976
  ref_key: "atom",
987
- ref: atom,
988
- "aria-disabled": slotProps.value.disabled,
989
- "aria-label": slotProps.value.ariaLabel,
977
+ ref: atom
978
+ }, slotProps.value.attrs, {
990
979
  as: __props.as,
991
- "data-disabled": slotProps.value.disabled || void 0,
992
- disabled: __props.as === "button" ? slotProps.value.disabled : void 0,
993
- renderless: __props.renderless,
994
- type: __props.as === "button" ? "button" : void 0,
995
- onClick: slotProps.value.onClick
996
- }, {
980
+ renderless: __props.renderless
981
+ }), {
997
982
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
998
983
  _: 3
999
- }, 8, [
1000
- "aria-disabled",
1001
- "aria-label",
1002
- "as",
1003
- "data-disabled",
1004
- "disabled",
1005
- "renderless",
1006
- "type",
1007
- "onClick"
1008
- ]);
984
+ }, 16, ["as", "renderless"]);
985
+ };
986
+ }
987
+ });
988
+ var PaginationPrev_default = _sfc_main$10;
989
+
990
+ //#endregion
991
+ //#region src/components/Pagination/PaginationStatus.vue
992
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
993
+ name: "PaginationStatus",
994
+ __name: "PaginationStatus",
995
+ props: {
996
+ namespace: { default: "v0:pagination" },
997
+ as: { default: "div" },
998
+ renderless: { type: Boolean }
999
+ },
1000
+ setup(__props) {
1001
+ const locale = useLocale();
1002
+ const pagination = usePaginationRoot(__props.namespace);
1003
+ const text = shallowRef("");
1004
+ watch(() => pagination.page.value, (page, prevPage) => {
1005
+ if (prevPage === void 0) return;
1006
+ setTimeout(() => {
1007
+ text.value = locale.t("Pagination.status", {
1008
+ page,
1009
+ pages: pagination.pages
1010
+ }, `Page ${page} of ${pagination.pages}`);
1011
+ }, 100);
1012
+ });
1013
+ const slotProps = toRef(() => ({
1014
+ page: pagination.page.value,
1015
+ pages: pagination.pages,
1016
+ text: text.value,
1017
+ attrs: {
1018
+ "aria-atomic": true,
1019
+ "aria-live": "polite",
1020
+ "role": "status"
1021
+ }
1022
+ }));
1023
+ return (_ctx, _cache) => {
1024
+ return openBlock(), createBlock(unref(Atom_default), mergeProps(slotProps.value.attrs, {
1025
+ as: __props.as,
1026
+ renderless: __props.renderless
1027
+ }), {
1028
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)), () => [createTextVNode(toDisplayString(text.value), 1)])]),
1029
+ _: 3
1030
+ }, 16, ["as", "renderless"]);
1009
1031
  };
1010
1032
  }
1011
1033
  });
1012
- var PaginationPrev_default = _sfc_main$9;
1034
+ var PaginationStatus_default = _sfc_main$9;
1013
1035
 
1014
1036
  //#endregion
1015
1037
  //#region src/components/Pagination/index.ts
1038
+ /**
1039
+ * Pagination component with sub-components for building pagination controls.
1040
+ *
1041
+ * @see https://0.vuetifyjs.com/components/pagination
1042
+ */
1016
1043
  const Pagination = {
1017
1044
  Root: PaginationRoot_default,
1018
1045
  Item: PaginationItem_default,
@@ -1020,7 +1047,8 @@ const Pagination = {
1020
1047
  Prev: PaginationPrev_default,
1021
1048
  Ellipsis: PaginationEllipsis_default,
1022
1049
  Next: PaginationNext_default,
1023
- Last: PaginationLast_default
1050
+ Last: PaginationLast_default,
1051
+ Status: PaginationStatus_default
1024
1052
  };
1025
1053
 
1026
1054
  //#endregion
@@ -1048,24 +1076,24 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
1048
1076
  function toggle() {
1049
1077
  isSelected.value = !isSelected.value;
1050
1078
  }
1051
- const bindableProps = toRef(() => ({
1052
- id,
1053
- isSelected,
1054
- toggle
1055
- }));
1056
1079
  providePopoverContext({
1057
1080
  isSelected,
1058
1081
  toggle,
1059
- id: id.value
1082
+ id: toValue(id)
1060
1083
  });
1084
+ const slotProps = toRef(() => ({
1085
+ id: toValue(id),
1086
+ isSelected: isSelected.value,
1087
+ toggle
1088
+ }));
1061
1089
  return (_ctx, _cache) => {
1062
- return openBlock(), createBlock(unref(Atom_default), mergeProps({
1090
+ return openBlock(), createBlock(unref(Atom_default), {
1063
1091
  as: __props.as,
1064
- renderless: __props.renderless
1065
- }, bindableProps.value), {
1066
- default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(bindableProps.value)))]),
1092
+ renderless: ""
1093
+ }, {
1094
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
1067
1095
  _: 3
1068
- }, 16, ["as", "renderless"]);
1096
+ }, 8, ["as"]);
1069
1097
  };
1070
1098
  }
1071
1099
  });
@@ -1085,24 +1113,23 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1085
1113
  const props = createPropsRestProxy(__props, ["as"]);
1086
1114
  const context = usePopoverContext();
1087
1115
  const popovertarget = toRef(() => props.target ?? context.id);
1088
- const style = toRef(() => ({ anchorName: `--${popovertarget.value}` }));
1116
+ const style = toRef(() => ({ anchorName: `--${toValue(popovertarget)}` }));
1117
+ const slotProps = toRef(() => ({
1118
+ isOpen: context.isSelected.value,
1119
+ attrs: {
1120
+ "popovertarget": toValue(popovertarget),
1121
+ "type": __props.as === "button" ? "button" : void 0,
1122
+ "data-popover-open": context.isSelected.value ? "" : void 0
1123
+ }
1124
+ }));
1089
1125
  return (_ctx, _cache) => {
1090
- return openBlock(), createBlock(unref(Atom_default), {
1126
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
1091
1127
  as: __props.as,
1092
- "data-popover-open": unref(context).isSelected.value ? "" : void 0,
1093
- popovertarget: popovertarget.value,
1094
- style: normalizeStyle(style.value),
1095
- type: __props.as === "button" ? "button" : void 0
1096
- }, {
1097
- default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1128
+ style: style.value
1129
+ }, slotProps.value.attrs), {
1130
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
1098
1131
  _: 3
1099
- }, 8, [
1100
- "as",
1101
- "data-popover-open",
1102
- "popovertarget",
1103
- "style",
1104
- "type"
1105
- ]);
1132
+ }, 16, ["as", "style"]);
1106
1133
  };
1107
1134
  }
1108
1135
  });
@@ -1129,7 +1156,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1129
1156
  const id = toRef(() => props.id ?? context.id);
1130
1157
  const style = toRef(() => ({
1131
1158
  positionArea: __props.positionArea,
1132
- positionAnchor: `--${id.value}`,
1159
+ positionAnchor: `--${toValue(id)}`,
1133
1160
  positionTry: __props.positionTry
1134
1161
  }));
1135
1162
  onMounted(() => {
@@ -1145,18 +1172,22 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1145
1172
  context.isSelected.value = e.newState === "open";
1146
1173
  emit("beforetoggle", e);
1147
1174
  }
1175
+ const slotProps = toRef(() => ({
1176
+ isOpen: context.isSelected.value,
1177
+ attrs: {
1178
+ id: toValue(id),
1179
+ popover: ""
1180
+ }
1181
+ }));
1148
1182
  return (_ctx, _cache) => {
1149
- return openBlock(), createBlock(unref(Atom_default), {
1150
- id: id.value,
1183
+ return openBlock(), createBlock(unref(Atom_default), mergeProps({
1151
1184
  ref_key: "ref",
1152
1185
  ref: ref$1,
1153
- popover: "",
1154
- style: normalizeStyle(style.value),
1155
- onBeforetoggle: onBeforeToggle
1156
- }, {
1157
- default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1186
+ style: style.value
1187
+ }, slotProps.value.attrs, { onBeforetoggle: onBeforeToggle }), {
1188
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)))]),
1158
1189
  _: 3
1159
- }, 8, ["id", "style"]);
1190
+ }, 16, ["style"]);
1160
1191
  };
1161
1192
  }
1162
1193
  });
@@ -1164,56 +1195,21 @@ var PopoverContent_default = _sfc_main$6;
1164
1195
 
1165
1196
  //#endregion
1166
1197
  //#region src/components/Popover/index.ts
1198
+ /**
1199
+ * Popover component with sub-components for building popovers.
1200
+ *
1201
+ * @see https://0.vuetifyjs.com/components/popover
1202
+ */
1167
1203
  const Popover = {
1168
1204
  Root: PopoverRoot_default,
1169
1205
  Anchor: PopoverAnchor_default,
1170
1206
  Content: PopoverContent_default
1171
1207
  };
1172
1208
 
1173
- //#endregion
1174
- //#region src/components/Selection/SelectionItem.vue
1175
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1176
- name: "SelectionItem",
1177
- __name: "SelectionItem",
1178
- props: {
1179
- label: {},
1180
- id: {},
1181
- disabled: {},
1182
- value: {},
1183
- namespace: { default: "v0:selection" }
1184
- },
1185
- setup(__props) {
1186
- const selection = useSelection(__props.namespace);
1187
- const ticket = selection.register({
1188
- id: __props.id,
1189
- value: __props.value,
1190
- disabled: __props.disabled
1191
- });
1192
- const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(selection.disabled));
1193
- onUnmounted(() => {
1194
- selection.unregister(ticket.id);
1195
- });
1196
- return (_ctx, _cache) => {
1197
- return renderSlot(_ctx.$slots, "default", {
1198
- id: String(unref(ticket).id),
1199
- ariaDisabled: toValue(isDisabled.value),
1200
- ariaSelected: toValue(unref(ticket).isSelected),
1201
- disabled: toValue(isDisabled.value),
1202
- isSelected: toValue(unref(ticket).isSelected),
1203
- label: __props.label,
1204
- select: unref(ticket).select,
1205
- toggle: unref(ticket).toggle,
1206
- unselect: unref(ticket).unselect,
1207
- value: __props.value
1208
- });
1209
- };
1210
- }
1211
- });
1212
- var SelectionItem_default = _sfc_main$5;
1213
-
1214
1209
  //#endregion
1215
1210
  //#region src/components/Selection/SelectionRoot.vue
1216
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1211
+ const [useSelectionRoot, provideSelectionRoot] = createContext();
1212
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1217
1213
  name: "SelectionRoot",
1218
1214
  __name: "SelectionRoot",
1219
1215
  props: /* @__PURE__ */ mergeModels({
@@ -1238,84 +1234,95 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1238
1234
  "modelValue": {},
1239
1235
  "modelModifiers": {}
1240
1236
  }),
1241
- emits: ["update:modelValue"],
1237
+ emits: /* @__PURE__ */ mergeModels(["update:model-value"], ["update:modelValue"]),
1242
1238
  setup(__props) {
1243
1239
  const model = useModel(__props, "modelValue");
1244
- const [, provideSelectionControl, context] = createSelectionContext({
1245
- namespace: __props.namespace,
1240
+ const selection = createSelection({
1246
1241
  disabled: toRef(() => __props.disabled),
1247
1242
  enroll: __props.enroll,
1248
1243
  mandatory: __props.mandatory,
1249
1244
  multiple: __props.multiple,
1250
1245
  events: true
1251
1246
  });
1252
- useProxyModel(context, model, { multiple: __props.multiple });
1253
- provideSelectionControl(context);
1247
+ useProxyModel(selection, model, { multiple: __props.multiple });
1248
+ provideSelectionRoot(__props.namespace, selection);
1249
+ const slotProps = toRef(() => ({
1250
+ isDisabled: toValue(selection.disabled),
1251
+ multiple: __props.multiple,
1252
+ select: selection.select,
1253
+ unselect: selection.unselect,
1254
+ toggle: selection.toggle,
1255
+ attrs: { "aria-multiselectable": __props.multiple }
1256
+ }));
1254
1257
  return (_ctx, _cache) => {
1255
- return renderSlot(_ctx.$slots, "default", {
1256
- ariaMultiselectable: __props.multiple,
1257
- disabled: toValue(unref(context).disabled),
1258
- multiple: __props.multiple,
1259
- select: unref(context).select,
1260
- toggle: unref(context).toggle,
1261
- unselect: unref(context).unselect
1262
- });
1258
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
1263
1259
  };
1264
1260
  }
1265
1261
  });
1266
- var SelectionRoot_default = _sfc_main$4;
1267
-
1268
- //#endregion
1269
- //#region src/components/Selection/index.ts
1270
- const Selection = {
1271
- Root: SelectionRoot_default,
1272
- Item: SelectionItem_default
1273
- };
1262
+ var SelectionRoot_default = _sfc_main$5;
1274
1263
 
1275
1264
  //#endregion
1276
- //#region src/components/Single/SingleItem.vue
1277
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1278
- name: "SingleItem",
1279
- __name: "SingleItem",
1265
+ //#region src/components/Selection/SelectionItem.vue
1266
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1267
+ name: "SelectionItem",
1268
+ __name: "SelectionItem",
1280
1269
  props: {
1281
- label: {},
1282
1270
  id: {},
1283
- disabled: {},
1271
+ label: {},
1284
1272
  value: {},
1285
- namespace: { default: "v0:single" }
1273
+ disabled: {},
1274
+ namespace: { default: "v0:selection" }
1286
1275
  },
1287
1276
  setup(__props) {
1288
- const single = useSingle(__props.namespace);
1289
- const ticket = single.register({
1277
+ const selection = useSelectionRoot(__props.namespace);
1278
+ const ticket = selection.register({
1290
1279
  id: __props.id,
1291
1280
  value: __props.value,
1292
1281
  disabled: __props.disabled
1293
1282
  });
1294
- const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(single.disabled));
1283
+ const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(selection.disabled));
1295
1284
  onUnmounted(() => {
1296
- single.unregister(ticket.id);
1285
+ selection.unregister(ticket.id);
1297
1286
  });
1287
+ const slotProps = toRef(() => ({
1288
+ id: String(ticket.id),
1289
+ label: __props.label,
1290
+ value: __props.value,
1291
+ isSelected: toValue(ticket.isSelected),
1292
+ isDisabled: toValue(isDisabled),
1293
+ select: ticket.select,
1294
+ unselect: ticket.unselect,
1295
+ toggle: ticket.toggle,
1296
+ attrs: {
1297
+ "aria-selected": toValue(ticket.isSelected),
1298
+ "aria-disabled": toValue(isDisabled),
1299
+ "data-selected": toValue(ticket.isSelected) || void 0,
1300
+ "data-disabled": toValue(isDisabled) || void 0
1301
+ }
1302
+ }));
1298
1303
  return (_ctx, _cache) => {
1299
- return renderSlot(_ctx.$slots, "default", {
1300
- id: String(unref(ticket).id),
1301
- ariaDisabled: toValue(isDisabled.value),
1302
- ariaSelected: toValue(unref(ticket).isSelected),
1303
- disabled: toValue(isDisabled.value),
1304
- isSelected: toValue(unref(ticket).isSelected),
1305
- label: __props.label,
1306
- select: unref(ticket).select,
1307
- toggle: unref(ticket).toggle,
1308
- unselect: unref(ticket).unselect,
1309
- value: __props.value
1310
- });
1304
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
1311
1305
  };
1312
1306
  }
1313
1307
  });
1314
- var SingleItem_default = _sfc_main$3;
1308
+ var SelectionItem_default = _sfc_main$4;
1309
+
1310
+ //#endregion
1311
+ //#region src/components/Selection/index.ts
1312
+ /**
1313
+ * Selection component with sub-components for managing item selection state.
1314
+ *
1315
+ * @see https://0.vuetifyjs.com/components/selection
1316
+ */
1317
+ const Selection = {
1318
+ Root: SelectionRoot_default,
1319
+ Item: SelectionItem_default
1320
+ };
1315
1321
 
1316
1322
  //#endregion
1317
1323
  //#region src/components/Single/SingleRoot.vue
1318
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1324
+ const [useSingleRoot, provideSingleRoot] = createContext();
1325
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1319
1326
  name: "SingleRoot",
1320
1327
  __name: "SingleRoot",
1321
1328
  props: /* @__PURE__ */ mergeModels({
@@ -1339,79 +1346,90 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1339
1346
  emits: ["update:modelValue"],
1340
1347
  setup(__props) {
1341
1348
  const model = useModel(__props, "modelValue");
1342
- const [, provideSingleControl, context] = createSingleContext({
1343
- namespace: __props.namespace,
1349
+ const single = createSingle({
1344
1350
  disabled: toRef(() => __props.disabled),
1345
1351
  enroll: __props.enroll,
1346
1352
  mandatory: __props.mandatory,
1347
1353
  events: true
1348
1354
  });
1349
- useProxyModel(context, model, { multiple: false });
1350
- provideSingleControl(context);
1355
+ useProxyModel(single, model, { multiple: false });
1356
+ provideSingleRoot(__props.namespace, single);
1357
+ const slotProps = toRef(() => ({
1358
+ isDisabled: toValue(single.disabled),
1359
+ select: single.select,
1360
+ unselect: single.unselect,
1361
+ toggle: single.toggle,
1362
+ attrs: { "aria-multiselectable": false }
1363
+ }));
1351
1364
  return (_ctx, _cache) => {
1352
- return renderSlot(_ctx.$slots, "default", {
1353
- ariaMultiselectable: true,
1354
- disabled: toValue(unref(context).disabled),
1355
- select: unref(context).select,
1356
- toggle: unref(context).toggle,
1357
- unselect: unref(context).unselect
1358
- });
1365
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
1359
1366
  };
1360
1367
  }
1361
1368
  });
1362
- var SingleRoot_default = _sfc_main$2;
1363
-
1364
- //#endregion
1365
- //#region src/components/Single/index.ts
1366
- const Single = {
1367
- Root: SingleRoot_default,
1368
- Item: SingleItem_default
1369
- };
1369
+ var SingleRoot_default = _sfc_main$3;
1370
1370
 
1371
1371
  //#endregion
1372
- //#region src/components/Step/StepItem.vue
1373
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1374
- name: "StepItem",
1375
- __name: "StepItem",
1372
+ //#region src/components/Single/SingleItem.vue
1373
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1374
+ name: "SingleItem",
1375
+ __name: "SingleItem",
1376
1376
  props: {
1377
- label: {},
1378
1377
  id: {},
1379
- disabled: {},
1378
+ label: {},
1380
1379
  value: {},
1381
- namespace: { default: "v0:step" }
1380
+ disabled: {},
1381
+ namespace: { default: "v0:single" }
1382
1382
  },
1383
1383
  setup(__props) {
1384
- const step = useStep(__props.namespace);
1385
- const ticket = step.register({
1384
+ const single = useSingleRoot(__props.namespace);
1385
+ const ticket = single.register({
1386
1386
  id: __props.id,
1387
1387
  value: __props.value,
1388
1388
  disabled: __props.disabled
1389
1389
  });
1390
- const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(step.disabled));
1390
+ const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(single.disabled));
1391
1391
  onUnmounted(() => {
1392
- step.unregister(ticket.id);
1392
+ single.unregister(ticket.id);
1393
1393
  });
1394
+ const slotProps = toRef(() => ({
1395
+ id: String(ticket.id),
1396
+ label: __props.label,
1397
+ value: __props.value,
1398
+ isSelected: toValue(ticket.isSelected),
1399
+ isDisabled: toValue(isDisabled),
1400
+ select: ticket.select,
1401
+ unselect: ticket.unselect,
1402
+ toggle: ticket.toggle,
1403
+ attrs: {
1404
+ "aria-selected": toValue(ticket.isSelected),
1405
+ "aria-disabled": toValue(isDisabled),
1406
+ "data-selected": toValue(ticket.isSelected) || void 0,
1407
+ "data-disabled": toValue(isDisabled) || void 0
1408
+ }
1409
+ }));
1394
1410
  return (_ctx, _cache) => {
1395
- return renderSlot(_ctx.$slots, "default", {
1396
- id: String(unref(ticket).id),
1397
- ariaDisabled: toValue(isDisabled.value),
1398
- ariaSelected: toValue(unref(ticket).isSelected),
1399
- disabled: toValue(isDisabled.value),
1400
- isSelected: toValue(unref(ticket).isSelected),
1401
- label: __props.label,
1402
- select: unref(ticket).select,
1403
- toggle: unref(ticket).toggle,
1404
- unselect: unref(ticket).unselect,
1405
- value: __props.value
1406
- });
1411
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
1407
1412
  };
1408
1413
  }
1409
1414
  });
1410
- var StepItem_default = _sfc_main$1;
1415
+ var SingleItem_default = _sfc_main$2;
1416
+
1417
+ //#endregion
1418
+ //#region src/components/Single/index.ts
1419
+ /**
1420
+ * Single component with sub-components for building single-selection interfaces.
1421
+ *
1422
+ * @see https://0.vuetifyjs.com/components/single
1423
+ */
1424
+ const Single = {
1425
+ Root: SingleRoot_default,
1426
+ Item: SingleItem_default
1427
+ };
1411
1428
 
1412
1429
  //#endregion
1413
1430
  //#region src/components/Step/StepRoot.vue
1414
- const _sfc_main = /* @__PURE__ */ defineComponent({
1431
+ const [useStepRoot, provideStepRoot] = createContext();
1432
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1415
1433
  name: "StepRoot",
1416
1434
  __name: "StepRoot",
1417
1435
  props: /* @__PURE__ */ mergeModels({
@@ -1435,39 +1453,90 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1435
1453
  emits: ["update:modelValue"],
1436
1454
  setup(__props) {
1437
1455
  const model = useModel(__props, "modelValue");
1438
- const [, provideStepControl, context] = createStepContext({
1439
- namespace: __props.namespace,
1456
+ const step = createStep({
1440
1457
  disabled: toRef(() => __props.disabled),
1441
1458
  enroll: __props.enroll,
1442
1459
  mandatory: __props.mandatory,
1443
1460
  events: true
1444
1461
  });
1445
- useProxyModel(context, model, { multiple: false });
1446
- provideStepControl(context);
1462
+ useProxyModel(step, model, { multiple: false });
1463
+ provideStepRoot(__props.namespace, step);
1464
+ const slotProps = toRef(() => ({
1465
+ isDisabled: toValue(step.disabled),
1466
+ first: step.first,
1467
+ last: step.last,
1468
+ next: step.next,
1469
+ prev: step.prev,
1470
+ step: step.step,
1471
+ select: step.select,
1472
+ unselect: step.unselect,
1473
+ toggle: step.toggle,
1474
+ attrs: { "aria-multiselectable": false }
1475
+ }));
1476
+ return (_ctx, _cache) => {
1477
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
1478
+ };
1479
+ }
1480
+ });
1481
+ var StepRoot_default = _sfc_main$1;
1482
+
1483
+ //#endregion
1484
+ //#region src/components/Step/StepItem.vue
1485
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1486
+ name: "StepItem",
1487
+ __name: "StepItem",
1488
+ props: {
1489
+ id: {},
1490
+ label: {},
1491
+ value: {},
1492
+ disabled: {},
1493
+ namespace: { default: "v0:step" }
1494
+ },
1495
+ setup(__props) {
1496
+ const step = useStepRoot(__props.namespace);
1497
+ const ticket = step.register({
1498
+ id: __props.id,
1499
+ value: __props.value,
1500
+ disabled: __props.disabled
1501
+ });
1502
+ const isDisabled = toRef(() => toValue(ticket.disabled) || toValue(step.disabled));
1503
+ onUnmounted(() => {
1504
+ step.unregister(ticket.id);
1505
+ });
1506
+ const slotProps = toRef(() => ({
1507
+ id: String(ticket.id),
1508
+ label: __props.label,
1509
+ value: __props.value,
1510
+ isSelected: toValue(ticket.isSelected),
1511
+ isDisabled: toValue(isDisabled),
1512
+ select: ticket.select,
1513
+ unselect: ticket.unselect,
1514
+ toggle: ticket.toggle,
1515
+ attrs: {
1516
+ "aria-selected": toValue(ticket.isSelected),
1517
+ "aria-disabled": toValue(isDisabled),
1518
+ "data-selected": toValue(ticket.isSelected) || void 0,
1519
+ "data-disabled": toValue(isDisabled) || void 0
1520
+ }
1521
+ }));
1447
1522
  return (_ctx, _cache) => {
1448
- return renderSlot(_ctx.$slots, "default", {
1449
- ariaMultiselectable: true,
1450
- disabled: toValue(unref(context).disabled),
1451
- first: unref(context).first,
1452
- last: unref(context).last,
1453
- next: unref(context).next,
1454
- prev: unref(context).prev,
1455
- select: unref(context).select,
1456
- step: unref(context).step,
1457
- toggle: unref(context).toggle,
1458
- unselect: unref(context).unselect
1459
- });
1523
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps.value)));
1460
1524
  };
1461
1525
  }
1462
1526
  });
1463
- var StepRoot_default = _sfc_main;
1527
+ var StepItem_default = _sfc_main;
1464
1528
 
1465
1529
  //#endregion
1466
1530
  //#region src/components/Step/index.ts
1531
+ /**
1532
+ * Step component with sub-components for building stepper navigation.
1533
+ *
1534
+ * @see https://0.vuetifyjs.com/components/step
1535
+ */
1467
1536
  const Step = {
1468
1537
  Root: StepRoot_default,
1469
1538
  Item: StepItem_default
1470
1539
  };
1471
1540
 
1472
1541
  //#endregion
1473
- export { providePopoverContext as a, usePaginationControls as c, ExpansionPanel as d, Avatar as f, Popover as i, usePaginationItems as l, Single as n, usePopoverContext as o, Atom_default as p, Selection as r, Pagination as s, Step as t, Group as u };
1542
+ export { AvatarImage_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, Avatar 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, providePopoverContext as b, SingleRoot_default as c, Selection as d, AvatarFallback_default as et, SelectionItem_default as f, Popover as g, useSelectionRoot as h, provideStepRoot as i, Atom_default as it, providePaginationControls as j, PaginationEllipsis_default as k, provideSingleRoot as l, provideSelectionRoot as m, StepItem_default as n, provideAvatarContext as nt, Single as o, SelectionRoot_default as p, provideExpansionPanelItem as q, StepRoot_default as r, useAvatarRoot as rt, SingleItem_default as s, Step as t, AvatarRoot_default as tt, useSingleRoot as u, PopoverAnchor_default as v, PaginationPrev_default as w, usePopoverContext as x, PopoverRoot_default as y, GroupRoot_default as z };