@vuetify/v0 0.0.24-beta.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +2 -2
  2. package/dist/adapter-L4Php1_S.d.mts +97 -0
  3. package/dist/browser/index.js +1318 -842
  4. package/dist/components/index.d.mts +4 -4
  5. package/dist/components/index.mjs +6 -6
  6. package/dist/{components-Dd4KKVtk.mjs → components-V4KaMfn-.mjs} +442 -117
  7. package/dist/composables/index.d.mts +5 -4
  8. package/dist/composables/index.mjs +4 -4
  9. package/dist/constants/index.d.mts +1 -1
  10. package/dist/constants/index.mjs +3 -3
  11. package/dist/date/index.d.mts +124 -0
  12. package/dist/date/index.mjs +7514 -0
  13. package/dist/{globals-CiCJWcbb.mjs → globals-CgcVstn0.mjs} +1 -1
  14. package/dist/{index-CAEB2sxS.d.mts → index-CSjKBMhp.d.mts} +738 -349
  15. package/dist/{index-C8YcMooA.d.mts → index-CoO8LW8o.d.mts} +13 -9
  16. package/dist/{index-DYSwiS9k.d.mts → index-DlxrzbvZ.d.mts} +21 -1
  17. package/dist/{index-rcTqb9U3.d.mts → index-DsiFkTD8.d.mts} +662 -306
  18. package/dist/{index-Bby5ljat.d.mts → index-t-t6sAn3.d.mts} +222 -41
  19. package/dist/index.d.mts +8 -7
  20. package/dist/index.mjs +7 -7
  21. package/dist/json/attributes.json +104 -0
  22. package/dist/json/importMap.json +20 -0
  23. package/dist/json/tags.json +46 -0
  24. package/dist/json/web-types.json +309 -9
  25. package/dist/types/index.d.mts +2 -2
  26. package/dist/{useClickOutside-BfEvdnA4.mjs → useClickOutside-Cj8CguMD.mjs} +844 -699
  27. package/dist/utilities/index.d.mts +3 -3
  28. package/dist/utilities/index.mjs +2 -2
  29. package/dist/{utilities-9i1hJnMd.mjs → utilities-B58TiS_S.mjs} +41 -34
  30. package/package.json +21 -3
  31. /package/dist/{constants-3l8TGg5J.mjs → constants-DHKqjdjH.mjs} +0 -0
  32. /package/dist/{htmlElements-CXObxj0V.mjs → htmlElements-DO9n35bD.mjs} +0 -0
  33. /package/dist/{index-DMQJJUrv.d.mts → index-cPmI99rd.d.mts} +0 -0
@@ -1,7 +1,10 @@
1
- import { a as MaybeArray, i as ID } from "./index-DYSwiS9k.mjs";
2
- import { B as RegistryTicket, I as RegistryContext, L as RegistryContextOptions, M as SelectionTicket, S as GroupContext, T as GroupTicket, U as ContextTrinity, c as SingleContext, d as SingleTicket, k as SelectionContext, u as SingleOptions, z as RegistryOptions } from "./index-Bby5ljat.mjs";
3
- import { App, ComputedRef, InjectionKey, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef, UnwrapNestedRefs, WatchSource } from "vue";
4
- import { Temporal } from "@js-temporal/polyfill";
1
+ import { a as ID, o as MaybeArray } from "./index-DlxrzbvZ.mjs";
2
+ import { B as RegistryContext, D as GroupTicket, E as GroupOptions, F as SelectionTicket, M as SelectionContext, O as GroupTicketInput, T as GroupContextOptions, U as RegistryOptions, V as RegistryContextOptions, W as RegistryTicket, d as SingleOptions, f as SingleTicket, l as SingleContext, p as SingleTicketInput, q as ContextTrinity, w as GroupContext } from "./index-t-t6sAn3.mjs";
3
+ import { t as DateAdapter } from "./adapter-L4Php1_S.mjs";
4
+ import { App, ComputedRef, InjectionKey, MaybeRef, MaybeRefOrGetter, Reactive, Ref, ShallowRef, UnwrapNestedRefs, WatchSource } from "vue";
5
+ import { IFlagsmith, IInitConfig } from "flagsmith";
6
+ import { LDClient } from "launchdarkly-js-client-sdk";
7
+ import { PostHog } from "posthog-js";
5
8
 
6
9
  //#region src/composables/createContext/index.d.ts
7
10
 
@@ -454,246 +457,41 @@ interface UseClickOutsideReturn {
454
457
  */
455
458
  declare function useClickOutside(target: MaybeArray<ClickOutsideTarget>, handler: (event: PointerEvent | FocusEvent) => void, options?: UseClickOutsideOptions): UseClickOutsideReturn;
456
459
  //#endregion
457
- //#region src/composables/useDate/adapters/adapter.d.ts
458
- interface DateAdapter<T = Temporal.PlainDateTime> {
459
- /** Current locale for formatting */
460
- locale?: string;
461
- /** Create a date from various input types */
462
- date: (value?: unknown) => T | null;
463
- /** Convert to JavaScript Date object */
464
- toJsDate: (value: T) => Date;
465
- /** Parse ISO 8601 string */
466
- parseISO: (date: string) => T;
467
- /** Convert to ISO 8601 string */
468
- toISO: (date: T) => string;
469
- /** Parse date string with custom format */
470
- parse: (value: string, format: string) => T | null;
471
- /** Check if value is a valid date (type predicate for narrowing) */
472
- isValid: (date: unknown) => date is T;
473
- /** Check if value is null (type predicate for narrowing) */
474
- isNull: (value: T | null) => value is null;
475
- /** Get current locale code */
476
- getCurrentLocaleCode: () => string;
477
- /** Check if current locale uses 12-hour cycle */
478
- is12HourCycleInCurrentLocale: () => boolean;
479
- /** Format date using preset format key */
480
- format: (date: T, formatString: string) => string;
481
- /** Format date using custom format string */
482
- formatByString: (date: T, formatString: string) => string;
483
- /** Get helper text for format string (e.g., "mm/dd/yyyy") */
484
- getFormatHelperText: (format: string) => string;
485
- /** Format number according to locale */
486
- formatNumber: (numberToFormat: string) => string;
487
- /** Get meridiem text (AM/PM) for locale */
488
- getMeridiemText: (ampm: 'am' | 'pm') => string;
489
- startOfDay: (date: T) => T;
490
- endOfDay: (date: T) => T;
491
- /** @param firstDayOfWeek - 0=Sunday, 1=Monday, etc. */
492
- startOfWeek: (date: T, firstDayOfWeek?: number) => T;
493
- /** @param firstDayOfWeek - 0=Sunday, 1=Monday, etc. */
494
- endOfWeek: (date: T, firstDayOfWeek?: number) => T;
495
- startOfMonth: (date: T) => T;
496
- endOfMonth: (date: T) => T;
497
- startOfYear: (date: T) => T;
498
- endOfYear: (date: T) => T;
499
- addSeconds: (date: T, amount: number) => T;
500
- addMinutes: (date: T, amount: number) => T;
501
- addHours: (date: T, amount: number) => T;
502
- addDays: (date: T, amount: number) => T;
503
- addWeeks: (date: T, amount: number) => T;
504
- addMonths: (date: T, amount: number) => T;
505
- addYears: (date: T, amount: number) => T;
506
- isAfter: (date: T, comparing: T) => boolean;
507
- isAfterDay: (date: T, comparing: T) => boolean;
508
- isAfterMonth: (date: T, comparing: T) => boolean;
509
- isAfterYear: (date: T, comparing: T) => boolean;
510
- isBefore: (date: T, comparing: T) => boolean;
511
- isBeforeDay: (date: T, comparing: T) => boolean;
512
- isBeforeMonth: (date: T, comparing: T) => boolean;
513
- isBeforeYear: (date: T, comparing: T) => boolean;
514
- isEqual: (date: T, comparing: T) => boolean;
515
- isSameDay: (date: T, comparing: T) => boolean;
516
- isSameMonth: (date: T, comparing: T) => boolean;
517
- isSameYear: (date: T, comparing: T) => boolean;
518
- isSameHour: (date: T, comparing: T) => boolean;
519
- isWithinRange: (date: T, range: [T, T]) => boolean;
520
- getYear: (date: T) => number;
521
- getMonth: (date: T) => number;
522
- getDate: (date: T) => number;
523
- getHours: (date: T) => number;
524
- getMinutes: (date: T) => number;
525
- getSeconds: (date: T) => number;
526
- /** @param comparing - Can be T or ISO string */
527
- getDiff: (date: T, comparing: T | string, unit?: string) => number;
528
- /** @param minimalDays - Minimum days in first week for it to count as week 1 */
529
- getWeek: (date: T, firstDayOfWeek?: number, minimalDays?: number) => number;
530
- /** Get number of days in the month */
531
- getDaysInMonth: (date: T) => number;
532
- setYear: (date: T, year: number) => T;
533
- setMonth: (date: T, month: number) => T;
534
- setDate: (date: T, day: number) => T;
535
- setHours: (date: T, hours: number) => T;
536
- setMinutes: (date: T, minutes: number) => T;
537
- setSeconds: (date: T, seconds: number) => T;
538
- getWeekdays: (firstDayOfWeek?: number, weekdayFormat?: 'long' | 'short' | 'narrow') => string[];
539
- getWeekArray: (date: T, firstDayOfWeek?: number) => T[][];
540
- /** Get array of months in a year (12 dates, one for each month) */
541
- getMonthArray: (date: T) => T[];
542
- /** Get array of years between start and end dates */
543
- getYearRange: (start: T, end: T) => T[];
544
- getNextMonth: (date: T) => T;
545
- getPreviousMonth: (date: T) => T;
546
- /** Merge date from one value with time from another */
547
- mergeDateAndTime: (date: T, time: T) => T;
548
- }
549
- //#endregion
550
- //#region src/composables/useDate/adapters/v0.d.ts
551
- type PlainDateTime = Temporal.PlainDateTime;
552
- declare class Vuetify0DateAdapter implements DateAdapter<PlainDateTime> {
553
- private _locale;
554
- /** Cache for Intl.DateTimeFormat instances, keyed by locale + options */
555
- private formatCache;
556
- /** Cache for Intl.NumberFormat instances, keyed by locale */
557
- private numberFormatCache;
558
- constructor(locale?: string);
559
- /** Current locale. Setting a new locale clears format caches. */
560
- get locale(): string;
561
- set locale(value: string);
562
- /**
563
- * Create a date from various input types.
564
- *
565
- * @param value - Date value (PlainDateTime, PlainDate, ZonedDateTime, Date, ISO string, timestamp)
566
- * @returns PlainDateTime or null if invalid
567
- *
568
- * @remarks
569
- * **SSR Safety:** When called without arguments:
570
- * - Browser: Returns current time via `Temporal.Now.plainDateTimeISO()`
571
- * - Server: Returns epoch (1970-01-01T00:00:00) for deterministic rendering
572
- *
573
- * For SSR apps needing current time, pass `Date.now()` explicitly and handle
574
- * hydration via `<ClientOnly>` (Nuxt) or `v-if` + `onMounted` pattern.
575
- */
576
- date(value?: unknown): PlainDateTime | null;
577
- toJsDate(value: PlainDateTime): Date;
578
- parseISO(dateString: string): PlainDateTime;
579
- toISO(date: PlainDateTime): string;
580
- /**
581
- * Parses a date string into a PlainDateTime.
582
- *
583
- * **Known limitation**: The `format` parameter is currently ignored.
584
- * Temporal API doesn't provide built-in format parsing, and implementing
585
- * full format string parsing (e.g., 'MM/DD/YYYY') would require a
586
- * substantial custom parser. This method delegates to `date()` which
587
- * handles ISO 8601 strings and common formats.
588
- *
589
- * For custom format parsing, consider using a library like date-fns or
590
- * luxon with a custom adapter.
591
- *
592
- * @param value - The date string to parse
593
- * @param _format - Format hint (currently ignored)
594
- * @returns Parsed PlainDateTime or null if invalid
595
- */
596
- parse(value: string, _format: string): PlainDateTime | null;
597
- isValid(date: unknown): date is PlainDateTime;
598
- isNull(value: PlainDateTime | null): value is null;
599
- getCurrentLocaleCode(): string;
600
- is12HourCycleInCurrentLocale(): boolean;
601
- format(date: PlainDateTime, formatString: string): string;
602
- formatByString(date: PlainDateTime, formatString: string): string;
603
- getFormatHelperText(format: string): string;
604
- formatNumber(numberToFormat: string): string;
605
- getMeridiemText(ampm: 'am' | 'pm'): string;
606
- startOfDay(date: PlainDateTime): PlainDateTime;
607
- endOfDay(date: PlainDateTime): PlainDateTime;
608
- startOfWeek(date: PlainDateTime, firstDayOfWeek?: number): PlainDateTime;
609
- endOfWeek(date: PlainDateTime, firstDayOfWeek?: number): PlainDateTime;
610
- startOfMonth(date: PlainDateTime): PlainDateTime;
611
- endOfMonth(date: PlainDateTime): PlainDateTime;
612
- startOfYear(date: PlainDateTime): PlainDateTime;
613
- endOfYear(date: PlainDateTime): PlainDateTime;
614
- addSeconds(date: PlainDateTime, amount: number): PlainDateTime;
615
- addMinutes(date: PlainDateTime, amount: number): PlainDateTime;
616
- addHours(date: PlainDateTime, amount: number): PlainDateTime;
617
- addDays(date: PlainDateTime, amount: number): PlainDateTime;
618
- addWeeks(date: PlainDateTime, amount: number): PlainDateTime;
619
- addMonths(date: PlainDateTime, amount: number): PlainDateTime;
620
- addYears(date: PlainDateTime, amount: number): PlainDateTime;
621
- isAfter(date: PlainDateTime, comparing: PlainDateTime): boolean;
622
- isAfterDay(date: PlainDateTime, comparing: PlainDateTime): boolean;
623
- isAfterMonth(date: PlainDateTime, comparing: PlainDateTime): boolean;
624
- isAfterYear(date: PlainDateTime, comparing: PlainDateTime): boolean;
625
- isBefore(date: PlainDateTime, comparing: PlainDateTime): boolean;
626
- isBeforeDay(date: PlainDateTime, comparing: PlainDateTime): boolean;
627
- isBeforeMonth(date: PlainDateTime, comparing: PlainDateTime): boolean;
628
- isBeforeYear(date: PlainDateTime, comparing: PlainDateTime): boolean;
629
- isEqual(date: PlainDateTime, comparing: PlainDateTime): boolean;
630
- isSameDay(date: PlainDateTime, comparing: PlainDateTime): boolean;
631
- isSameMonth(date: PlainDateTime, comparing: PlainDateTime): boolean;
632
- isSameYear(date: PlainDateTime, comparing: PlainDateTime): boolean;
633
- isSameHour(date: PlainDateTime, comparing: PlainDateTime): boolean;
634
- isWithinRange(date: PlainDateTime, [start, end]: [PlainDateTime, PlainDateTime]): boolean;
635
- getYear(date: PlainDateTime): number;
636
- getMonth(date: PlainDateTime): number;
637
- getDate(date: PlainDateTime): number;
638
- getHours(date: PlainDateTime): number;
639
- getMinutes(date: PlainDateTime): number;
640
- getSeconds(date: PlainDateTime): number;
641
- getDiff(date: PlainDateTime, comparing: PlainDateTime | string, unit?: string): number;
642
- getWeek(date: PlainDateTime, firstDayOfWeek?: number, minimalDays?: number): number;
643
- getDaysInMonth(date: PlainDateTime): number;
644
- setYear(date: PlainDateTime, year: number): PlainDateTime;
645
- setMonth(date: PlainDateTime, month: number): PlainDateTime;
646
- setDate(date: PlainDateTime, day: number): PlainDateTime;
647
- setHours(date: PlainDateTime, hours: number): PlainDateTime;
648
- setMinutes(date: PlainDateTime, minutes: number): PlainDateTime;
649
- setSeconds(date: PlainDateTime, seconds: number): PlainDateTime;
650
- getWeekdays(firstDayOfWeek?: number, format?: 'long' | 'short' | 'narrow'): string[];
651
- getWeekArray(date: PlainDateTime, firstDayOfWeek?: number): PlainDateTime[][];
652
- getMonthArray(date: PlainDateTime): PlainDateTime[];
653
- getYearRange(start: PlainDateTime, end: PlainDateTime): PlainDateTime[];
654
- getNextMonth(date: PlainDateTime): PlainDateTime;
655
- getPreviousMonth(date: PlainDateTime): PlainDateTime;
656
- mergeDateAndTime(date: PlainDateTime, time: PlainDateTime): PlainDateTime;
657
- /**
658
- * Gets a cached Intl.DateTimeFormat instance or creates one if not cached.
659
- * Cache is limited to MAX_CACHE_SIZE entries to prevent memory leaks.
660
- */
661
- private getFormatter;
662
- /**
663
- * Gets a cached Intl.NumberFormat instance or creates one if not cached.
664
- * Cache is limited to MAX_CACHE_SIZE entries to prevent memory leaks.
665
- */
666
- private getNumberFormatter;
667
- }
668
- //#endregion
669
460
  //#region src/composables/useDate/index.d.ts
670
- /** The default date type when using Vuetify0DateAdapter */
671
- type DefaultDateType = Temporal.PlainDateTime;
672
- interface DateContext<Z = DefaultDateType> {
461
+ interface DateContext<Z> {
673
462
  /** The date adapter instance */
674
463
  adapter: DateAdapter<Z>;
675
464
  /** Current locale (reactive, synced with useLocale if available) */
676
465
  locale: ComputedRef<string | undefined>;
677
466
  }
678
467
  /** Options for date composables */
679
- interface DateOptions<Z = DefaultDateType> {
680
- /** Custom date adapter instance (defaults to Vuetify0DateAdapter) */
681
- adapter?: DateAdapter<Z>;
468
+ interface DateOptions<Z> {
469
+ /**
470
+ * Date adapter instance.
471
+ *
472
+ * @example
473
+ * ```ts
474
+ * import { Vuetify0DateAdapter } from '@vuetify/v0/date'
475
+ * createDate({ adapter: new Vuetify0DateAdapter() })
476
+ * ```
477
+ */
478
+ adapter: DateAdapter<Z>;
682
479
  /** Locale for formatting (defaults to useLocale's selected locale or 'en-US') */
683
480
  locale?: string;
684
481
  /** Short locale codes mapped to full Intl locale strings (e.g., { en: 'en-US' }) */
685
482
  locales?: Record<string, string>;
686
483
  }
687
484
  /** Context options with namespace */
688
- interface DateContextOptions<Z = DefaultDateType> extends DateOptions<Z> {
485
+ interface DateContextOptions<Z> extends DateOptions<Z> {
689
486
  namespace?: string;
690
487
  }
691
488
  /** Plugin options */
692
- interface DatePluginOptions<Z = DefaultDateType> extends DateContextOptions<Z> {}
489
+ interface DatePluginOptions<Z> extends DateContextOptions<Z> {}
693
490
  /**
694
491
  * Creates a new date context.
695
492
  *
696
- * @param options Optional adapter and locale configuration.
493
+ * @param options Adapter and locale configuration.
494
+ * @template Z The date type used by the adapter.
697
495
  * @template E The date context type.
698
496
  * @returns A date context.
699
497
  *
@@ -701,28 +499,24 @@ interface DatePluginOptions<Z = DefaultDateType> extends DateContextOptions<Z> {
701
499
  *
702
500
  * @example
703
501
  * ```ts
704
- * const { adapter } = createDate()
705
- * const today = adapter.date() // Temporal.PlainDateTime
502
+ * import { Vuetify0DateAdapter } from '@vuetify/v0/date'
706
503
  *
707
- * // With locale options
708
- * const { adapter: deAdapter } = createDate({ locale: 'de-DE' })
504
+ * const { adapter } = createDate({ adapter: new Vuetify0DateAdapter() })
505
+ * const today = adapter.date()
709
506
  *
710
- * // With custom adapter
711
- * const { adapter } = createDate({ adapter: new DateFnsAdapter() })
507
+ * // With locale options
508
+ * const { adapter } = createDate({
509
+ * adapter: new Vuetify0DateAdapter(),
510
+ * locale: 'de-DE',
511
+ * })
712
512
  * ```
713
513
  */
714
- declare function createDate<Z = DefaultDateType, E extends DateContext<Z> = DateContext<Z>>(options?: DateOptions<Z>): E;
715
- /**
716
- * Creates a fallback date context for when useDate is called outside of a Vue component.
717
- *
718
- * @returns A fallback date context with Vuetify0DateAdapter.
719
- * @internal
720
- */
721
- declare function createDateFallback(): DateContext<DefaultDateType>;
514
+ declare function createDate<Z, E extends DateContext<Z> = DateContext<Z>>(options: DateOptions<Z>): E;
722
515
  /**
723
516
  * Creates a new date context trinity.
724
517
  *
725
- * @param options Optional adapter, locale, and namespace configuration.
518
+ * @param options Adapter, locale, and namespace configuration.
519
+ * @template Z The date type used by the adapter.
726
520
  * @template E The date context type.
727
521
  * @returns A trinity [useContext, provideContext, defaultContext].
728
522
  *
@@ -730,22 +524,20 @@ declare function createDateFallback(): DateContext<DefaultDateType>;
730
524
  *
731
525
  * @example
732
526
  * ```ts
733
- * const [useAppDate, provideAppDate] = createDateContext({
734
- * namespace: 'app:date',
735
- * })
527
+ * import { Vuetify0DateAdapter } from '@vuetify/v0/date'
736
528
  *
737
- * // With custom adapter
738
529
  * const [useAppDate, provideAppDate] = createDateContext({
739
- * adapter: new DateFnsAdapter(),
530
+ * adapter: new Vuetify0DateAdapter(),
740
531
  * namespace: 'app:date',
741
532
  * })
742
533
  * ```
743
534
  */
744
- declare function createDateContext<Z = DefaultDateType, E extends DateContext<Z> = DateContext<Z>>(options?: DateContextOptions<Z>): ContextTrinity<E>;
535
+ declare function createDateContext<Z, E extends DateContext<Z> = DateContext<Z>>(options: DateContextOptions<Z>): ContextTrinity<E>;
745
536
  /**
746
537
  * Creates a new date plugin.
747
538
  *
748
- * @param options Optional adapter, locale, and namespace configuration.
539
+ * @param options Adapter, locale, and namespace configuration.
540
+ * @template Z The date type used by the adapter.
749
541
  * @template E The date context type.
750
542
  * @returns A Vue plugin.
751
543
  *
@@ -753,30 +545,42 @@ declare function createDateContext<Z = DefaultDateType, E extends DateContext<Z>
753
545
  *
754
546
  * @example
755
547
  * ```ts
756
- * const app = createApp(App)
757
- * app.use(createDatePlugin())
548
+ * import { Vuetify0DateAdapter } from '@vuetify/v0/date'
758
549
  *
759
- * // With options
760
- * app.use(createDatePlugin({ locale: 'de-DE' }))
550
+ * const app = createApp(App)
551
+ * app.use(createDatePlugin({ adapter: new Vuetify0DateAdapter() }))
761
552
  *
762
- * // With custom adapter
763
- * app.use(createDatePlugin({ adapter: new DateFnsAdapter() }))
553
+ * // With locale options
554
+ * app.use(createDatePlugin({
555
+ * adapter: new Vuetify0DateAdapter(),
556
+ * locale: 'de-DE',
557
+ * }))
764
558
  * ```
765
559
  */
766
- declare function createDatePlugin<Z = DefaultDateType, E extends DateContext<Z> = DateContext<Z>>(options?: DatePluginOptions<Z>): Plugin;
560
+ declare function createDatePlugin<Z, E extends DateContext<Z> = DateContext<Z>>(options: DatePluginOptions<Z>): Plugin;
767
561
  /**
768
562
  * Returns the current date context.
769
563
  *
770
- * When called inside a component with a provided date context (via plugin or provider),
771
- * returns that context. Otherwise, returns a fallback context with Vuetify0DateAdapter.
564
+ * Requires `createDatePlugin` to be installed with an adapter.
772
565
  *
773
566
  * @param namespace The namespace to look up (defaults to 'v0:date').
567
+ * @template Z The date type used by the adapter.
774
568
  * @template E The date context type.
775
569
  * @returns The current date context.
570
+ * @throws If called outside a component or without a date plugin installed.
776
571
  *
777
572
  * @see https://0.vuetifyjs.com/composables/plugins/use-date
778
573
  *
779
574
  * @example
575
+ * ```ts
576
+ * // main.ts
577
+ * import { Vuetify0DateAdapter } from '@vuetify/v0/date'
578
+ * import { createDatePlugin } from '@vuetify/v0'
579
+ *
580
+ * app.use(createDatePlugin({ adapter: new Vuetify0DateAdapter() }))
581
+ * ```
582
+ *
583
+ * @example
780
584
  * ```vue
781
585
  * <script setup lang="ts">
782
586
  * import { useDate } from '@vuetify/v0'
@@ -786,7 +590,7 @@ declare function createDatePlugin<Z = DefaultDateType, E extends DateContext<Z>
786
590
  * </script>
787
591
  * ```
788
592
  */
789
- declare function useDate<Z = DefaultDateType, E extends DateContext<Z> = DateContext<Z>>(namespace?: string): E;
593
+ declare function useDate<Z, E extends DateContext<Z> = DateContext<Z>>(namespace?: string): E;
790
594
  //#endregion
791
595
  //#region src/composables/useEventListener/index.d.ts
792
596
  type CleanupFunction = () => void;
@@ -1026,18 +830,108 @@ declare function createTokensContext<Z extends TokenTicket = TokenTicket, E exte
1026
830
  */
1027
831
  declare function useTokens<Z extends TokenTicket = TokenTicket, E extends TokenContext<Z> = TokenContext<Z>>(namespace?: string): E;
1028
832
  //#endregion
833
+ //#region src/composables/useFeatures/adapters/generic/index.d.ts
834
+ type FeaturesAdapterValue = boolean | {
835
+ $value?: boolean;
836
+ $variation?: unknown;
837
+ };
838
+ type FeaturesAdapterFlags = Record<ID, FeaturesAdapterValue>;
839
+ interface FeaturesAdapterInterface {
840
+ /**
841
+ * Initialize the adapter and return initial flags.
842
+ *
843
+ * @param onUpdate Callback invoked when flags change.
844
+ * @returns Initial feature flags.
845
+ *
846
+ * @remarks Called during plugin setup. Sets up change listeners
847
+ * and returns the initial flag values.
848
+ */
849
+ setup: (onUpdate: (flags: FeaturesAdapterFlags) => void) => FeaturesAdapterFlags;
850
+ /**
851
+ * Cleanup adapter resources.
852
+ *
853
+ * @remarks Called when the plugin is disposed.
854
+ */
855
+ dispose?: () => void;
856
+ }
857
+ declare abstract class FeaturesAdapter implements FeaturesAdapterInterface {
858
+ abstract setup(onUpdate: (flags: FeaturesAdapterFlags) => void): FeaturesAdapterFlags;
859
+ }
860
+ //#endregion
861
+ //#region src/composables/useFeatures/adapters/flagsmith/index.d.ts
862
+ declare class FlagsmithFeatureAdapter implements FeaturesAdapterInterface {
863
+ private client;
864
+ private options;
865
+ constructor(client: IFlagsmith | undefined, options: IInitConfig);
866
+ setup(onUpdate: (flags: FeaturesAdapterFlags) => void): FeaturesAdapterFlags;
867
+ dispose(): void;
868
+ private disposeFn;
869
+ }
870
+ //#endregion
871
+ //#region src/composables/useFeatures/adapters/launchdarkly/index.d.ts
872
+ declare class LaunchDarklyFeatureAdapter implements FeaturesAdapterInterface {
873
+ private client;
874
+ constructor(client: LDClient);
875
+ setup(onUpdate: (flags: FeaturesAdapterFlags) => void): FeaturesAdapterFlags;
876
+ dispose(): void;
877
+ private disposeFn;
878
+ }
879
+ //#endregion
880
+ //#region src/composables/useFeatures/adapters/posthog/index.d.ts
881
+ declare class PostHogFeatureAdapter implements FeaturesAdapterInterface {
882
+ private client;
883
+ constructor(client: PostHog);
884
+ setup(onUpdate: (flags: FeaturesAdapterFlags) => void): FeaturesAdapterFlags;
885
+ dispose(): void;
886
+ private disposeFn;
887
+ }
888
+ //#endregion
1029
889
  //#region src/composables/useFeatures/index.d.ts
1030
- interface FeatureTicket extends GroupTicket<TokenValue> {}
1031
- interface FeatureContext<Z extends FeatureTicket = FeatureTicket> extends GroupContext<Z> {
890
+ /**
891
+ * Input type for feature tickets - what users provide to register().
892
+ */
893
+ interface FeatureTicketInput extends GroupTicketInput {}
894
+ /**
895
+ * Output type for feature tickets - what users receive from get().
896
+ */
897
+ type FeatureTicket<Z extends FeatureTicketInput = FeatureTicketInput> = GroupTicket<Z>;
898
+ interface FeatureContext<Z extends FeatureTicketInput = FeatureTicketInput, E extends FeatureTicket<Z> = FeatureTicket<Z>> extends Omit<GroupContext<Z, E>, 'register'> {
899
+ /**
900
+ * Get the variation value of a feature, or a fallback if not set.
901
+ *
902
+ * @param id The feature ID.
903
+ * @param fallback The fallback value if the feature has no variation.
904
+ */
1032
905
  variation: (id: ID, fallback?: unknown) => unknown;
906
+ /**
907
+ * Sync feature flags from an external source.
908
+ *
909
+ * @param flags The flags to sync, typically from an adapter.
910
+ *
911
+ * @remarks This updates existing flags and registers new ones.
912
+ * Use this when adapter flags change to update the registry.
913
+ */
914
+ sync: (flags: FeaturesAdapterFlags) => void;
915
+ /** Register a feature (accepts input type, returns output type) */
916
+ register: (registration?: Partial<Z>) => E;
1033
917
  }
1034
918
  interface FeatureOptions extends RegistryOptions {
919
+ /**
920
+ * Static feature flags to register.
921
+ */
1035
922
  features?: Record<ID, boolean | TokenCollection>;
1036
923
  }
1037
924
  interface FeatureContextOptions extends FeatureOptions {
1038
925
  namespace?: string;
1039
926
  }
1040
- interface FeaturePluginOptions extends FeatureContextOptions {}
927
+ interface FeaturePluginOptions extends FeatureContextOptions {
928
+ /**
929
+ * Feature flag adapter for external services.
930
+ *
931
+ * @remarks Adapters provide dynamic flag values from external services.
932
+ */
933
+ adapter?: MaybeArray<FeaturesAdapterInterface>;
934
+ }
1041
935
  /**
1042
936
  * Creates a new features instance.
1043
937
  *
@@ -1061,7 +955,7 @@ interface FeaturePluginOptions extends FeatureContextOptions {}
1061
955
  * })
1062
956
  * ```
1063
957
  */
1064
- declare function createFeatures<Z extends FeatureTicket = FeatureTicket, E extends FeatureContext<Z> = FeatureContext<Z>>(_options?: FeatureOptions): E;
958
+ declare function createFeatures<Z extends FeatureTicketInput = FeatureTicketInput, E extends FeatureTicket<Z> = FeatureTicket<Z>, R extends FeatureContext<Z, E> = FeatureContext<Z, E>>(_options?: FeatureOptions): R;
1065
959
  /**
1066
960
  * Creates a new features context.
1067
961
  *
@@ -1085,7 +979,7 @@ declare function createFeatures<Z extends FeatureTicket = FeatureTicket, E exten
1085
979
  * })
1086
980
  * ```
1087
981
  */
1088
- declare function createFeaturesContext<Z extends FeatureTicket = FeatureTicket, E extends FeatureContext<Z> = FeatureContext<Z>>(_options?: FeatureContextOptions): ContextTrinity<E>;
982
+ declare function createFeaturesContext<Z extends FeatureTicketInput = FeatureTicketInput, E extends FeatureTicket<Z> = FeatureTicket<Z>, R extends FeatureContext<Z, E> = FeatureContext<Z, E>>(_options?: FeatureContextOptions): ContextTrinity<R>;
1089
983
  /**
1090
984
  * Creates a new features plugin.
1091
985
  *
@@ -1116,7 +1010,7 @@ declare function createFeaturesContext<Z extends FeatureTicket = FeatureTicket,
1116
1010
  * app.mount('#app')
1117
1011
  * ```
1118
1012
  */
1119
- declare function createFeaturesPlugin<Z extends FeatureTicket = FeatureTicket, E extends FeatureContext<Z> = FeatureContext<Z>>(_options?: FeaturePluginOptions): Plugin;
1013
+ declare function createFeaturesPlugin<Z extends FeatureTicketInput = FeatureTicketInput, E extends FeatureTicket<Z> = FeatureTicket<Z>, R extends FeatureContext<Z, E> = FeatureContext<Z, E>>(_options?: FeaturePluginOptions): Plugin;
1120
1014
  /**
1121
1015
  * Returns the current features instance.
1122
1016
  *
@@ -1142,7 +1036,7 @@ declare function createFeaturesPlugin<Z extends FeatureTicket = FeatureTicket, E
1142
1036
  * </template>
1143
1037
  * ```
1144
1038
  */
1145
- declare function useFeatures<Z extends FeatureTicket = FeatureTicket, E extends FeatureContext<Z> = FeatureContext<Z>>(namespace?: string): E;
1039
+ declare function useFeatures<Z extends FeatureTicketInput = FeatureTicketInput, E extends FeatureTicket<Z> = FeatureTicket<Z>, R extends FeatureContext<Z, E> = FeatureContext<Z, E>>(namespace?: string): R;
1146
1040
  //#endregion
1147
1041
  //#region src/composables/useFilter/index.d.ts
1148
1042
  type Primitive = string | number | boolean;
@@ -1286,7 +1180,27 @@ declare function useFilterContext<Z extends FilterItem = FilterItem, E extends F
1286
1180
  type FormValidationResult = string | true | Promise<string | true>;
1287
1181
  type FormValidationRule = (value: unknown) => FormValidationResult;
1288
1182
  type FormValue = Ref<unknown> | ShallowRef<unknown>;
1289
- interface FormTicket<V = unknown> extends RegistryTicket<V> {
1183
+ /**
1184
+ * Input type for form tickets - what users provide to register().
1185
+ * Extend this interface to add custom properties.
1186
+ *
1187
+ * @template V The type of the field value.
1188
+ */
1189
+ interface FormTicketInput<V = unknown> extends RegistryTicket<V> {
1190
+ /** Validation rules for this field */
1191
+ rules?: FormValidationRule[];
1192
+ /** When validation should trigger (inherits from form if not set) */
1193
+ validateOn?: 'submit' | 'change' | string;
1194
+ /** Whether this field is disabled */
1195
+ disabled?: boolean;
1196
+ }
1197
+ /**
1198
+ * Output type for form tickets - what users receive from get().
1199
+ * Includes all input properties plus validation state and methods.
1200
+ *
1201
+ * @template Z The input ticket type that extends FormTicketInput.
1202
+ */
1203
+ type FormTicket<Z extends FormTicketInput = FormTicketInput> = Z & {
1290
1204
  validate: (silent?: boolean) => Promise<boolean>;
1291
1205
  reset: () => void;
1292
1206
  validateOn: 'submit' | 'change' | string;
@@ -1296,8 +1210,16 @@ interface FormTicket<V = unknown> extends RegistryTicket<V> {
1296
1210
  isPristine: ShallowRef<boolean>;
1297
1211
  isValid: ShallowRef<boolean | null>;
1298
1212
  isValidating: ShallowRef<boolean>;
1299
- }
1300
- interface FormContext<Z extends FormTicket = FormTicket> extends RegistryContext<Z> {
1213
+ };
1214
+ /**
1215
+ * Context for managing form field collections with validation.
1216
+ *
1217
+ * @template Z The input ticket type.
1218
+ * @template E The output ticket type.
1219
+ */
1220
+ interface FormContext<Z extends FormTicketInput = FormTicketInput, E extends FormTicket<Z> = FormTicket<Z>> extends Omit<RegistryContext<E>, 'register' | 'onboard'> {
1221
+ register: (registration: Partial<Z>) => E;
1222
+ onboard: (registrations: Partial<Z>[]) => E[];
1301
1223
  submit: (id?: ID | ID[]) => Promise<boolean>;
1302
1224
  reset: () => void;
1303
1225
  validateOn: 'submit' | 'change' | string;
@@ -1340,7 +1262,7 @@ interface FormContextOptions extends RegistryOptions {
1340
1262
  * form.reset()
1341
1263
  * ```
1342
1264
  */
1343
- declare function createForm<Z extends FormTicket = FormTicket, E extends FormContext<Z> = FormContext<Z>>(options?: FormOptions): E;
1265
+ declare function createForm<Z extends FormTicketInput = FormTicketInput, E extends FormTicket<Z> = FormTicket<Z>, R extends FormContext<Z, E> = FormContext<Z, E>>(options?: FormOptions): R;
1344
1266
  /**
1345
1267
  * Creates a new form context.
1346
1268
  *
@@ -1372,7 +1294,7 @@ declare function createForm<Z extends FormTicket = FormTicket, E extends FormCon
1372
1294
  * form.register({ id: 'field', value: ref(''), rules: [...] })
1373
1295
  * ```
1374
1296
  */
1375
- declare function createFormContext<Z extends FormTicket = FormTicket, E extends FormContext<Z> = FormContext<Z>>(_options?: FormContextOptions): ContextTrinity<E>;
1297
+ declare function createFormContext<Z extends FormTicketInput = FormTicketInput, E extends FormTicket<Z> = FormTicket<Z>, R extends FormContext<Z, E> = FormContext<Z, E>>(_options?: FormContextOptions): ContextTrinity<R>;
1376
1298
  /**
1377
1299
  * Returns the current form instance.
1378
1300
  *
@@ -1396,7 +1318,7 @@ declare function createFormContext<Z extends FormTicket = FormTicket, E extends
1396
1318
  * </template>
1397
1319
  * ```
1398
1320
  */
1399
- declare function useForm<Z extends FormTicket = FormTicket, E extends FormContext<Z> = FormContext<Z>>(namespace?: string): E;
1321
+ declare function useForm<Z extends FormTicketInput = FormTicketInput, E extends FormTicket<Z> = FormTicket<Z>, R extends FormContext<Z, E> = FormContext<Z, E>>(namespace?: string): R;
1400
1322
  //#endregion
1401
1323
  //#region src/composables/useHotkey/index.d.ts
1402
1324
  interface UseHotkeyOptions {
@@ -1490,8 +1412,14 @@ declare function useHotkey(keys: MaybeRefOrGetter<string | undefined>, callback:
1490
1412
  //#endregion
1491
1413
  //#region src/composables/useHydration/index.d.ts
1492
1414
  interface HydrationContext {
1415
+ /** True when root component has mounted (hydration complete) */
1493
1416
  isHydrated: Readonly<ShallowRef<boolean>>;
1417
+ /** True after first tick post-hydration (safe for animations after state restoration) */
1418
+ isSettled: Readonly<ShallowRef<boolean>>;
1419
+ /** Mark hydration as complete */
1494
1420
  hydrate: () => void;
1421
+ /** Mark as settled (called automatically after nextTick post-hydration) */
1422
+ settle: () => void;
1495
1423
  }
1496
1424
  interface HydrationOptions {}
1497
1425
  interface HydrationContextOptions extends HydrationOptions {
@@ -1572,20 +1500,22 @@ declare function createHydrationPlugin<E extends HydrationContext = HydrationCon
1572
1500
  * <script setup lang="ts">
1573
1501
  * import { useHydration } from '@vuetify/v0'
1574
1502
  *
1575
- * const hydration = useHydration()
1503
+ * const { isHydrated, isSettled } = useHydration()
1504
+ *
1505
+ * // Use isSettled to gate animations after state restoration
1506
+ * const transition = computed(() => isSettled.value ? 'fade' : undefined)
1576
1507
  * </script>
1577
1508
  *
1578
1509
  * <template>
1579
- * <div>
1580
- * <p>Is hydrated: {{ hydration.isHydrated.value }}</p>
1581
- * </div>
1510
+ * <Transition :name="transition">
1511
+ * <div v-if="show">Animates only after hydration settles</div>
1512
+ * </Transition>
1582
1513
  * </template>
1583
1514
  * ```
1584
1515
  */
1585
1516
  declare function useHydration<E extends HydrationContext = HydrationContext>(namespace?: string): E;
1586
1517
  //#endregion
1587
1518
  //#region src/composables/useIntersectionObserver/index.d.ts
1588
- type MaybeRef$1<T> = T | Ref<T> | Readonly<Ref<T>> | ShallowRef<T> | Readonly<ShallowRef<T>>;
1589
1519
  interface IntersectionObserverEntry {
1590
1520
  boundingClientRect: DOMRectReadOnly;
1591
1521
  intersectionRatio: number;
@@ -1667,7 +1597,7 @@ interface UseIntersectionObserverReturn {
1667
1597
  * resume()
1668
1598
  * ```
1669
1599
  */
1670
- declare function useIntersectionObserver(target: MaybeRef$1<Element | null | undefined>, callback: (entries: IntersectionObserverEntry[]) => void, options?: IntersectionObserverOptions): UseIntersectionObserverReturn;
1600
+ declare function useIntersectionObserver(target: MaybeRef<Element | null | undefined>, callback: (entries: IntersectionObserverEntry[]) => void, options?: IntersectionObserverOptions): UseIntersectionObserverReturn;
1671
1601
  interface UseElementIntersectionReturn extends UseIntersectionObserverReturn {
1672
1602
  /**
1673
1603
  * The intersection ratio (0.0 to 1.0) indicating how much of the element is visible
@@ -1702,7 +1632,7 @@ interface UseElementIntersectionReturn extends UseIntersectionObserverReturn {
1702
1632
  * })
1703
1633
  * ```
1704
1634
  */
1705
- declare function useElementIntersection(target: MaybeRef$1<Element | null | undefined>, options?: IntersectionObserverOptions): UseElementIntersectionReturn;
1635
+ declare function useElementIntersection(target: MaybeRef<Element | null | undefined>, options?: IntersectionObserverOptions): UseElementIntersectionReturn;
1706
1636
  //#endregion
1707
1637
  //#region src/composables/useLazy/index.d.ts
1708
1638
  interface LazyOptions {
@@ -1797,8 +1727,15 @@ declare class Vuetify0LocaleAdapter implements LocaleAdapter {
1797
1727
  //#endregion
1798
1728
  //#region src/composables/useLocale/index.d.ts
1799
1729
  type LocaleRecord = TokenCollection;
1800
- type LocaleTicket = SingleTicket;
1801
- interface LocaleContext<Z extends LocaleTicket> extends SingleContext<Z> {
1730
+ /**
1731
+ * Input type for locale tickets - what users provide to register().
1732
+ */
1733
+ interface LocaleTicketInput extends SingleTicketInput {}
1734
+ /**
1735
+ * Output type for locale tickets - what users receive from get().
1736
+ */
1737
+ type LocaleTicket<Z extends LocaleTicketInput = LocaleTicketInput> = SingleTicket<Z>;
1738
+ interface LocaleContext<Z extends LocaleTicketInput = LocaleTicketInput, E extends LocaleTicket<Z> = LocaleTicket<Z>> extends Omit<SingleContext<Z, E>, 'register'> {
1802
1739
  /**
1803
1740
  * Translate a message key with optional parameters and fallback.
1804
1741
  *
@@ -1823,6 +1760,8 @@ interface LocaleContext<Z extends LocaleTicket> extends SingleContext<Z> {
1823
1760
  */
1824
1761
  t: (key: string, params?: Record<string, unknown>, fallback?: string) => string;
1825
1762
  n: (value: number) => string;
1763
+ /** Register a locale (accepts input type, returns output type) */
1764
+ register: (registration?: Partial<Z>) => E;
1826
1765
  }
1827
1766
  interface LocaleOptions<Z extends LocaleRecord = LocaleRecord> extends SingleOptions {
1828
1767
  adapter?: LocaleAdapter;
@@ -1844,8 +1783,8 @@ interface LocalePluginOptions extends LocaleContextOptions {}
1844
1783
  *
1845
1784
  * @see https://0.vuetifyjs.com/composables/plugins/use-locale
1846
1785
  */
1847
- declare function createLocale<Z extends LocaleTicket = LocaleTicket, E extends LocaleContext<Z> = LocaleContext<Z>>(_options?: LocaleOptions): E;
1848
- declare function createLocaleFallback<Z extends LocaleTicket = LocaleTicket, E extends LocaleContext<Z> = LocaleContext<Z>>(): E;
1786
+ declare function createLocale<Z extends LocaleTicketInput = LocaleTicketInput, E extends LocaleTicket<Z> = LocaleTicket<Z>, R extends LocaleContext<Z, E> = LocaleContext<Z, E>>(_options?: LocaleOptions): R;
1787
+ declare function createLocaleFallback<Z extends LocaleTicketInput = LocaleTicketInput, E extends LocaleTicket<Z> = LocaleTicket<Z>, R extends LocaleContext<Z, E> = LocaleContext<Z, E>>(): R;
1849
1788
  /**
1850
1789
  * Creates a new locale context.
1851
1790
  *
@@ -1876,7 +1815,7 @@ declare function createLocaleFallback<Z extends LocaleTicket = LocaleTicket, E e
1876
1815
  * locale.select('es')
1877
1816
  * ```
1878
1817
  */
1879
- declare function createLocaleContext<Z extends LocaleTicket = LocaleTicket, E extends LocaleContext<Z> = LocaleContext<Z>>(_options?: LocaleContextOptions): ContextTrinity<E>;
1818
+ declare function createLocaleContext<Z extends LocaleTicketInput = LocaleTicketInput, E extends LocaleTicket<Z> = LocaleTicket<Z>, R extends LocaleContext<Z, E> = LocaleContext<Z, E>>(_options?: LocaleContextOptions): ContextTrinity<R>;
1880
1819
  /**
1881
1820
  * Creates a new locale plugin.
1882
1821
  *
@@ -1889,7 +1828,7 @@ declare function createLocaleContext<Z extends LocaleTicket = LocaleTicket, E ex
1889
1828
  *
1890
1829
  * @see https://0.vuetifyjs.com/composables/plugins/use-locale
1891
1830
  */
1892
- declare function createLocalePlugin<Z extends LocaleTicket = LocaleTicket, E extends LocaleContext<Z> = LocaleContext<Z>>(_options?: LocalePluginOptions): Plugin;
1831
+ declare function createLocalePlugin<Z extends LocaleTicketInput = LocaleTicketInput, E extends LocaleTicket<Z> = LocaleTicket<Z>, R extends LocaleContext<Z, E> = LocaleContext<Z, E>>(_options?: LocalePluginOptions): Plugin;
1893
1832
  /**
1894
1833
  * Returns the current locale instance.
1895
1834
  *
@@ -1897,7 +1836,7 @@ declare function createLocalePlugin<Z extends LocaleTicket = LocaleTicket, E ext
1897
1836
  *
1898
1837
  * @see https://0.vuetifyjs.com/composables/plugins/use-locale
1899
1838
  */
1900
- declare function useLocale<Z extends LocaleTicket = LocaleTicket, E extends LocaleContext<Z> = LocaleContext<Z>>(namespace?: string): E;
1839
+ declare function useLocale<Z extends LocaleTicketInput = LocaleTicketInput, E extends LocaleTicket<Z> = LocaleTicket<Z>, R extends LocaleContext<Z, E> = LocaleContext<Z, E>>(namespace?: string): R;
1901
1840
  //#endregion
1902
1841
  //#region src/composables/useLogger/adapters/adapter.d.ts
1903
1842
  interface LoggerAdapter {
@@ -2248,7 +2187,364 @@ interface UseMutationObserverReturn {
2248
2187
  * resume()
2249
2188
  * ```
2250
2189
  */
2251
- declare function useMutationObserver(target: Ref<Element | null | undefined>, callback: (entries: MutationObserverRecord[]) => void, options?: UseMutationObserverOptions): UseMutationObserverReturn;
2190
+ declare function useMutationObserver(target: MaybeRef<Element | null | undefined>, callback: (entries: MutationObserverRecord[]) => void, options?: UseMutationObserverOptions): UseMutationObserverReturn;
2191
+ //#endregion
2192
+ //#region src/composables/createNested/types.d.ts
2193
+ /**
2194
+ * Input type for nested tickets - what users provide to register().
2195
+ * Extend this interface to add custom properties.
2196
+ *
2197
+ * @template V The type of the ticket value.
2198
+ */
2199
+ interface NestedTicketInput<V = unknown> extends GroupTicketInput<V> {
2200
+ /** ID of the parent ticket, or undefined if this is a root item */
2201
+ parentId?: ID;
2202
+ }
2203
+ /**
2204
+ * Output type for nested tickets - what users receive from get().
2205
+ * Includes all input properties plus tree traversal and state methods.
2206
+ *
2207
+ * @template Z The input ticket type that extends NestedTicketInput.
2208
+ */
2209
+ type NestedTicket<Z extends NestedTicketInput = NestedTicketInput> = GroupTicket<Z> & {
2210
+ /** ID of the parent ticket, or undefined if this is a root item */
2211
+ parentId: ID | undefined;
2212
+ /** Whether this ticket is currently open/expanded */
2213
+ isOpen: Readonly<Ref<boolean>>;
2214
+ /** Whether this ticket is a leaf node (has no children) */
2215
+ isLeaf: Readonly<Ref<boolean>>;
2216
+ /** Depth in tree (0 = root) */
2217
+ depth: Readonly<Ref<number>>;
2218
+ /** Open/expand this ticket */
2219
+ open: () => void;
2220
+ /** Close/collapse this ticket */
2221
+ close: () => void;
2222
+ /** Flip this ticket's open/closed state */
2223
+ flip: () => void;
2224
+ /** Reveal this ticket by opening all ancestors */
2225
+ reveal: () => void;
2226
+ /** Get path from root to self (includes self) */
2227
+ getPath: () => ID[];
2228
+ /** Get ancestors excluding self */
2229
+ getAncestors: () => ID[];
2230
+ /** Get all descendants */
2231
+ getDescendants: () => ID[];
2232
+ /** Check if this ticket is an ancestor of the given ID */
2233
+ isAncestorOf: (descendantId: ID) => boolean;
2234
+ /** Check if this ticket has the given ID as an ancestor */
2235
+ hasAncestor: (ancestorId: ID) => boolean;
2236
+ /** Get sibling IDs (including self) */
2237
+ siblings: () => ID[];
2238
+ /** Get 1-indexed position among siblings (for aria-posinset) */
2239
+ position: () => number;
2240
+ };
2241
+ /**
2242
+ * Minimal context interface for open strategy callbacks.
2243
+ * Only exposes the state needed for open/close operations.
2244
+ */
2245
+ interface OpenStrategyContext {
2246
+ /** Set of currently opened item IDs (mutable for strategy control) */
2247
+ openedIds: Reactive<Set<ID>>;
2248
+ /** Map of parent IDs to child ID arrays (readonly - use for traversal only) */
2249
+ readonly children: ReadonlyMap<ID, readonly ID[]>;
2250
+ /** Map of child IDs to parent IDs (readonly - use for traversal only) */
2251
+ readonly parents: ReadonlyMap<ID, ID | undefined>;
2252
+ }
2253
+ /**
2254
+ * Strategy interface for controlling how items are opened.
2255
+ *
2256
+ * @remarks
2257
+ * Strategies define the behavior when an item is opened:
2258
+ * - Single: Only one item open at a time
2259
+ * - Multiple: Multiple items can be open
2260
+ * - Custom: Implement your own logic
2261
+ */
2262
+ interface OpenStrategy {
2263
+ /** Called when an item is opened */
2264
+ onOpen?: (id: ID, context: OpenStrategyContext) => void;
2265
+ /** Called when an item is closed */
2266
+ onClose?: (id: ID, context: OpenStrategyContext) => void;
2267
+ }
2268
+ /**
2269
+ * Registration input for nested items.
2270
+ * Allows inline children definition for easier tree construction.
2271
+ *
2272
+ * @template Z The input ticket type that extends NestedTicketInput.
2273
+ */
2274
+ type NestedRegistration<Z extends NestedTicketInput = NestedTicketInput> = Partial<Z> & {
2275
+ /** Inline children to register with this item as parent */
2276
+ children?: NestedRegistration<Z>[];
2277
+ };
2278
+ /**
2279
+ * Context for managing nested/hierarchical item collections.
2280
+ *
2281
+ * @template Z The input ticket type.
2282
+ * @template E The output ticket type.
2283
+ *
2284
+ * @remarks
2285
+ * Extends GroupContext with parent-child relationship tracking, open/close state,
2286
+ * and hierarchical traversal methods. Perfect for tree structures, nested menus,
2287
+ * file explorers, and organizational charts.
2288
+ */
2289
+ interface NestedContext<Z extends NestedTicketInput = NestedTicketInput, E extends NestedTicket<Z> = NestedTicket<Z>> extends Omit<GroupContext<Z, E>, 'register' | 'onboard' | 'select' | 'unselect' | 'toggle'> {
2290
+ /** Map of parent IDs to arrays of child IDs. Use register/unregister to modify. */
2291
+ readonly children: ReadonlyMap<ID, readonly ID[]>;
2292
+ /** Map of child IDs to their parent ID (or undefined for roots). Use register/unregister to modify. */
2293
+ readonly parents: ReadonlyMap<ID, ID | undefined>;
2294
+ /** Reactive Set of opened/expanded item IDs. Use open/close/flip to modify. */
2295
+ readonly openedIds: Reactive<Set<ID>>;
2296
+ /** Computed Set of opened/expanded item instances */
2297
+ openedItems: ComputedRef<Set<E>>;
2298
+ /** Open/expand one or more items by ID */
2299
+ open: (ids: ID | ID[]) => void;
2300
+ /** Close/collapse one or more items by ID */
2301
+ close: (ids: ID | ID[]) => void;
2302
+ /** Flip one or more items' open/closed state by ID */
2303
+ flip: (ids: ID | ID[]) => void;
2304
+ /** Check if an item is open by ID */
2305
+ opened: (id: ID) => boolean;
2306
+ /** Open node(s) and their immediate non-leaf children */
2307
+ unfold: (ids: ID | ID[]) => void;
2308
+ /** Reveal node(s) by opening all ancestors (makes node visible without opening it) */
2309
+ reveal: (ids: ID | ID[]) => void;
2310
+ /** Fully expand node(s) and all their non-leaf descendants */
2311
+ expand: (ids: ID | ID[]) => void;
2312
+ /** Expand all non-leaf nodes */
2313
+ expandAll: () => void;
2314
+ /** Collapse all nodes */
2315
+ collapseAll: () => void;
2316
+ /** Convert tree to flat array with parentId references */
2317
+ toFlat: () => Array<{
2318
+ id: ID;
2319
+ parentId: ID | undefined;
2320
+ value: unknown;
2321
+ }>;
2322
+ /** Get the path from root to the specified item (inclusive) */
2323
+ getPath: (id: ID) => ID[];
2324
+ /** Get all descendants of an item */
2325
+ getDescendants: (id: ID) => ID[];
2326
+ /** Get all ancestors of an item (excluding self) */
2327
+ getAncestors: (id: ID) => ID[];
2328
+ /** Check if an item is a leaf node */
2329
+ isLeaf: (id: ID) => boolean;
2330
+ /** Get the depth level of an item in the tree */
2331
+ getDepth: (id: ID) => number;
2332
+ /** Check if ancestorId is an ancestor of descendantId */
2333
+ isAncestorOf: (ancestorId: ID, descendantId: ID) => boolean;
2334
+ /** Check if id has ancestorId as an ancestor (semantic alias for isAncestorOf) */
2335
+ hasAncestor: (id: ID, ancestorId: ID) => boolean;
2336
+ /** Get sibling IDs (including self). For roots, returns all root IDs. */
2337
+ siblings: (id: ID) => ID[];
2338
+ /** Get 1-indexed position among siblings (for aria-posinset). Returns 0 if not found. */
2339
+ position: (id: ID) => number;
2340
+ /** Computed array of root items (items with no parent) */
2341
+ roots: ComputedRef<E[]>;
2342
+ /** Computed array of leaf items (items with no children) */
2343
+ leaves: ComputedRef<E[]>;
2344
+ /** Strategy controlling how items are opened */
2345
+ openStrategy: OpenStrategy;
2346
+ /** Select item(s) and all descendants, updating ancestor mixed states */
2347
+ select: (ids: ID | ID[]) => void;
2348
+ /** Unselect item(s) and all descendants, updating ancestor mixed states */
2349
+ unselect: (ids: ID | ID[]) => void;
2350
+ /** Toggle selection with cascading behavior */
2351
+ toggle: (ids: ID | ID[]) => void;
2352
+ /** Register a node with optional inline children (accepts input type, returns output type) */
2353
+ register: (registration?: NestedRegistration<Z>) => E;
2354
+ /** Batch register nodes with optional inline children */
2355
+ onboard: (registrations: NestedRegistration<Z>[]) => E[];
2356
+ /** Unregister a node, optionally cascading to descendants */
2357
+ unregister: (id: ID, cascade?: boolean) => void;
2358
+ /** Offboard multiple nodes, optionally cascading */
2359
+ offboard: (ids: ID[], cascade?: boolean) => void;
2360
+ /** Clear all nodes and nested state (children, parents, openedIds) */
2361
+ clear: () => void;
2362
+ }
2363
+ /**
2364
+ * Open mode for nested items.
2365
+ * - `'multiple'` (default): Multiple nodes can be open simultaneously
2366
+ * - `'single'`: Only one node can be open at a time (accordion behavior)
2367
+ */
2368
+ type NestedOpenMode = 'single' | 'multiple';
2369
+ /**
2370
+ * Selection mode for nested items.
2371
+ * - `'cascade'` (default): Selecting a parent selects all descendants; ancestors show mixed state
2372
+ * - `'independent'`: Each node is selected independently, no cascading
2373
+ * - `'leaf'`: Only leaf nodes can be selected; selecting parent selects all leaf descendants
2374
+ */
2375
+ type NestedSelectionMode = 'cascade' | 'independent' | 'leaf';
2376
+ /**
2377
+ * Options for creating a nested instance.
2378
+ */
2379
+ interface NestedOptions extends GroupOptions {
2380
+ /**
2381
+ * Controls how nodes expand/collapse.
2382
+ * - `'multiple'` (default): Multiple nodes can be open simultaneously
2383
+ * - `'single'`: Only one node open at a time (accordion behavior)
2384
+ */
2385
+ open?: NestedOpenMode;
2386
+ /**
2387
+ * When true, parent nodes automatically open when children are registered.
2388
+ * Similar to `enroll` in selection composables but for open state.
2389
+ */
2390
+ openAll?: boolean;
2391
+ /**
2392
+ * When true, opening a node also opens all its ancestors.
2393
+ * Ensures the opened node is always visible in the tree.
2394
+ */
2395
+ reveal?: boolean;
2396
+ /**
2397
+ * Controls how selection cascades through the hierarchy.
2398
+ * - `'cascade'` (default): Selecting parent selects descendants; ancestors show mixed state
2399
+ * - `'independent'`: Each node selected independently
2400
+ * - `'leaf'`: Only leaf nodes selectable; parent selection selects leaf descendants
2401
+ */
2402
+ selection?: NestedSelectionMode;
2403
+ /**
2404
+ * Advanced: Custom strategy for open behavior.
2405
+ * Overrides `open` option if provided.
2406
+ * @deprecated Use `open` option for simple cases
2407
+ */
2408
+ openStrategy?: OpenStrategy;
2409
+ }
2410
+ /**
2411
+ * Options for creating a nested context.
2412
+ */
2413
+ interface NestedContextOptions extends GroupContextOptions {
2414
+ /**
2415
+ * Controls how nodes expand/collapse.
2416
+ * - `'multiple'` (default): Multiple nodes can be open simultaneously
2417
+ * - `'single'`: Only one node open at a time (accordion behavior)
2418
+ */
2419
+ open?: NestedOpenMode;
2420
+ /**
2421
+ * When true, parent nodes automatically open when children are registered.
2422
+ * Similar to `enroll` in selection composables but for open state.
2423
+ */
2424
+ openAll?: boolean;
2425
+ /**
2426
+ * When true, opening a node also opens all its ancestors.
2427
+ * Ensures the opened node is always visible in the tree.
2428
+ */
2429
+ reveal?: boolean;
2430
+ /**
2431
+ * Controls how selection cascades through the hierarchy.
2432
+ * - `'cascade'` (default): Selecting parent selects descendants; ancestors show mixed state
2433
+ * - `'independent'`: Each node selected independently
2434
+ * - `'leaf'`: Only leaf nodes selectable; parent selection selects leaf descendants
2435
+ */
2436
+ selection?: NestedSelectionMode;
2437
+ /**
2438
+ * Advanced: Custom strategy for open behavior.
2439
+ * Overrides `open` option if provided.
2440
+ * @deprecated Use `open` option for simple cases
2441
+ */
2442
+ openStrategy?: OpenStrategy;
2443
+ }
2444
+ //#endregion
2445
+ //#region src/composables/createNested/strategies.d.ts
2446
+ /**
2447
+ * Multiple open strategy: allows multiple nodes to be open simultaneously.
2448
+ *
2449
+ * @remarks
2450
+ * Perfect for tree views, file explorers, and nested menus where users expect
2451
+ * to keep multiple sections expanded at once.
2452
+ *
2453
+ * @example
2454
+ * ```ts
2455
+ * const tree = createNested({ openStrategy: multipleOpenStrategy })
2456
+ * tree.open('node-1')
2457
+ * tree.open('node-2')
2458
+ * // Both nodes are now open
2459
+ * ```
2460
+ */
2461
+ declare const multipleOpenStrategy: OpenStrategy;
2462
+ /**
2463
+ * Single open strategy: only one node can be open at a time (accordion behavior).
2464
+ *
2465
+ * @remarks
2466
+ * Perfect for accordions, single-select navigation, and contexts where only
2467
+ * one section should be visible at a time.
2468
+ *
2469
+ * @example
2470
+ * ```ts
2471
+ * const tree = createNested({ openStrategy: singleOpenStrategy })
2472
+ * tree.open('node-1') // node-1 opens
2473
+ * tree.open('node-2') // node-1 closes, node-2 opens
2474
+ * ```
2475
+ */
2476
+ declare const singleOpenStrategy: OpenStrategy;
2477
+ //#endregion
2478
+ //#region src/composables/createNested/index.d.ts
2479
+ /**
2480
+ * Creates a new nested tree instance with hierarchical management.
2481
+ *
2482
+ * Extends `createGroup` to support parent-child relationships, tree traversal,
2483
+ * and open/close state management. Perfect for tree views, nested navigation,
2484
+ * and hierarchical data structures.
2485
+ *
2486
+ * @param options The options for the nested instance.
2487
+ * @template Z The type of the nested ticket.
2488
+ * @template E The type of the nested context.
2489
+ * @returns A new nested instance with tree management capabilities.
2490
+ *
2491
+ * @remarks
2492
+ * **Key Differences from `createGroup`:**
2493
+ * - `register()` accepts `parentId` for establishing parent-child relationships
2494
+ * - `unregister()` accepts optional `cascade` parameter for cascading deletions
2495
+ * - Adds tree traversal methods: `getPath()`, `getAncestors()`, `getDescendants()`
2496
+ * - Adds computed properties: `roots`, `leaves`, `isLeaf()`, `getDepth()`
2497
+ * - Adds open state management: `open()`, `close()`, `flip()`, `opened()`
2498
+ *
2499
+ * @see https://0.vuetifyjs.com/composables/selection/use-nested
2500
+ *
2501
+ * @example
2502
+ * ```ts
2503
+ * import { createNested } from '@vuetify/v0'
2504
+ *
2505
+ * const tree = createNested()
2506
+ *
2507
+ * const root = tree.register({ id: 'root', value: 'Root' })
2508
+ * const child1 = tree.register({ id: 'child-1', value: 'Child 1', parentId: 'root' })
2509
+ * const child2 = tree.register({ id: 'child-2', value: 'Child 2', parentId: 'root' })
2510
+ *
2511
+ * console.log(tree.getPath('child-1')) // ['root', 'child-1']
2512
+ * console.log(tree.getDescendants('root')) // ['child-1', 'child-2']
2513
+ * console.log(tree.isLeaf('child-2')) // true
2514
+ *
2515
+ * tree.open('root')
2516
+ * console.log(tree.opened('root')) // true
2517
+ * ```
2518
+ */
2519
+ declare function createNested<Z extends NestedTicketInput = NestedTicketInput, E extends NestedTicket<Z> = NestedTicket<Z>, R extends NestedContext<Z, E> = NestedContext<Z, E>>(_options?: NestedOptions): R;
2520
+ /**
2521
+ * Creates a new nested context with provide/inject pattern.
2522
+ *
2523
+ * @param options The options for the nested context.
2524
+ * @returns A trinity tuple [useNested, provideNested, defaultNested]
2525
+ *
2526
+ * @see https://0.vuetifyjs.com/composables/selection/use-nested
2527
+ *
2528
+ * @example
2529
+ * ```ts
2530
+ * import { createNestedContext } from '@vuetify/v0'
2531
+ *
2532
+ * export const [useTree, provideTree, tree] = createNestedContext()
2533
+ *
2534
+ * // In parent: provideTree()
2535
+ * // In child: const tree = useTree()
2536
+ * ```
2537
+ */
2538
+ declare function createNestedContext<Z extends NestedTicketInput = NestedTicketInput, E extends NestedTicket<Z> = NestedTicket<Z>, R extends NestedContext<Z, E> = NestedContext<Z, E>>(_options?: NestedContextOptions): ContextTrinity<R>;
2539
+ /**
2540
+ * Returns the current nested instance from context.
2541
+ *
2542
+ * @param namespace The namespace for the nested context. Defaults to `'v0:nested'`.
2543
+ * @returns The current nested instance.
2544
+ *
2545
+ * @see https://0.vuetifyjs.com/composables/selection/use-nested
2546
+ */
2547
+ declare function useNested<Z extends NestedTicketInput = NestedTicketInput, E extends NestedTicket<Z> = NestedTicket<Z>, R extends NestedContext<Z, E> = NestedContext<Z, E>>(namespace?: string): R;
2252
2548
  //#endregion
2253
2549
  //#region src/composables/useOverflow/index.d.ts
2254
2550
  interface OverflowOptions {
@@ -2582,7 +2878,13 @@ interface ProxyRegistryContext<Z extends RegistryTicket = RegistryTicket> {
2582
2878
  declare function useProxyRegistry<Z extends RegistryTicket = RegistryTicket>(registry: RegistryContext<Z>, options?: ProxyRegistryOptions): ProxyRegistryContext<Z>;
2583
2879
  //#endregion
2584
2880
  //#region src/composables/createQueue/index.d.ts
2585
- interface QueueTicket<V = unknown> extends RegistryTicket<V> {
2881
+ /**
2882
+ * Input type for queue tickets - what users provide to register().
2883
+ * Extend this interface to add custom properties.
2884
+ *
2885
+ * @template V The type of the ticket value.
2886
+ */
2887
+ interface QueueTicketInput<V = unknown> extends RegistryTicket<V> {
2586
2888
  /**
2587
2889
  * Timeout in milliseconds
2588
2890
  *
@@ -2592,6 +2894,18 @@ interface QueueTicket<V = unknown> extends RegistryTicket<V> {
2592
2894
  * - If a number: Ticket will be automatically removed after the specified milliseconds
2593
2895
  */
2594
2896
  timeout?: number;
2897
+ }
2898
+ /**
2899
+ * Output type for queue tickets - what users receive from get().
2900
+ * Includes all input properties plus queue state and methods.
2901
+ *
2902
+ * @template Z The input ticket type that extends QueueTicketInput.
2903
+ */
2904
+ type QueueTicket<Z extends QueueTicketInput = QueueTicketInput> = Z & {
2905
+ /**
2906
+ * Timeout in milliseconds (resolved from input or default)
2907
+ */
2908
+ timeout?: number;
2595
2909
  /**
2596
2910
  * Whether the timeout is currently paused
2597
2911
  *
@@ -2608,10 +2922,16 @@ interface QueueTicket<V = unknown> extends RegistryTicket<V> {
2608
2922
  * Equivalent to calling `queue.unregister(ticket.id)`
2609
2923
  */
2610
2924
  dismiss: () => void;
2611
- }
2612
- interface QueueContext<Z extends QueueTicket = QueueTicket> extends RegistryContext<Z> {
2925
+ };
2926
+ /**
2927
+ * Context for managing queue collections with timeout support.
2928
+ *
2929
+ * @template Z The input ticket type.
2930
+ * @template E The output ticket type.
2931
+ */
2932
+ interface QueueContext<Z extends QueueTicketInput = QueueTicketInput, E extends QueueTicket<Z> = QueueTicket<Z>> extends Omit<RegistryContext<E>, 'register' | 'unregister' | 'offboard'> {
2613
2933
  /**
2614
- * Register a new ticket in the queue
2934
+ * Register a new ticket in the queue (accepts input type, returns output type)
2615
2935
  *
2616
2936
  * @param ticket The partial ticket data to register
2617
2937
  * @remarks
@@ -2639,7 +2959,7 @@ interface QueueContext<Z extends QueueTicket = QueueTicket> extends RegistryCont
2639
2959
  * const ticket3 = queue.register({ value: 'Persistent', timeout: -1 })
2640
2960
  * ```
2641
2961
  */
2642
- register: (ticket?: Partial<Z>) => Z;
2962
+ register: (ticket?: Partial<Z>) => E;
2643
2963
  /**
2644
2964
  * Unregister a ticket from the queue
2645
2965
  *
@@ -2668,7 +2988,7 @@ interface QueueContext<Z extends QueueTicket = QueueTicket> extends RegistryCont
2668
2988
  * console.log(removed?.value) // 'First'
2669
2989
  * ```
2670
2990
  */
2671
- unregister: (id?: ID) => Z | undefined;
2991
+ unregister: (id?: ID) => E | undefined;
2672
2992
  /**
2673
2993
  * Pause the timeout of the first ticket in the queue
2674
2994
  *
@@ -2693,7 +3013,7 @@ interface QueueContext<Z extends QueueTicket = QueueTicket> extends RegistryCont
2693
3013
  * console.log(paused?.isPaused) // true
2694
3014
  * ```
2695
3015
  */
2696
- pause: () => Z | undefined;
3016
+ pause: () => E | undefined;
2697
3017
  /**
2698
3018
  * Resume the timeout of the first paused ticket in the queue
2699
3019
  *
@@ -2719,7 +3039,7 @@ interface QueueContext<Z extends QueueTicket = QueueTicket> extends RegistryCont
2719
3039
  * console.log(resumed?.isPaused) // false
2720
3040
  * ```
2721
3041
  */
2722
- resume: () => Z | undefined;
3042
+ resume: () => E | undefined;
2723
3043
  /**
2724
3044
  * Clear the entire queue
2725
3045
  *
@@ -2773,6 +3093,10 @@ interface QueueContext<Z extends QueueTicket = QueueTicket> extends RegistryCont
2773
3093
  * ```
2774
3094
  */
2775
3095
  dispose: () => void;
3096
+ /**
3097
+ * Batch unregister tickets from the queue
3098
+ */
3099
+ offboard: (ids: ID[]) => void;
2776
3100
  }
2777
3101
  interface QueueOptions extends RegistryOptions {
2778
3102
  /**
@@ -2819,7 +3143,7 @@ interface QueueContextOptions extends QueueOptions {
2819
3143
  * console.log(queue.size) // 2
2820
3144
  * ```
2821
3145
  */
2822
- declare function createQueue<Z extends QueueTicket = QueueTicket, E extends QueueContext<Z> = QueueContext<Z>>(_options?: QueueOptions): E;
3146
+ declare function createQueue<Z extends QueueTicketInput = QueueTicketInput, E extends QueueTicket<Z> = QueueTicket<Z>, R extends QueueContext<Z, E> = QueueContext<Z, E>>(_options?: QueueOptions): R;
2823
3147
  /**
2824
3148
  * Creates a new queue context.
2825
3149
  *
@@ -2839,7 +3163,7 @@ declare function createQueue<Z extends QueueTicket = QueueTicket, E extends Queu
2839
3163
  * })
2840
3164
  * ```
2841
3165
  */
2842
- declare function createQueueContext<Z extends QueueTicket = QueueTicket, E extends QueueContext<Z> = QueueContext<Z>>(_options?: QueueContextOptions): ContextTrinity<E>;
3166
+ declare function createQueueContext<Z extends QueueTicketInput = QueueTicketInput, E extends QueueTicket<Z> = QueueTicket<Z>, R extends QueueContext<Z, E> = QueueContext<Z, E>>(_options?: QueueContextOptions): ContextTrinity<R>;
2843
3167
  /**
2844
3168
  * Returns the current queue instance.
2845
3169
  *
@@ -2857,7 +3181,7 @@ declare function createQueueContext<Z extends QueueTicket = QueueTicket, E exten
2857
3181
  * </script>
2858
3182
  * ```
2859
3183
  */
2860
- declare function useQueue<Z extends QueueTicket = QueueTicket, E extends QueueContext<Z> = QueueContext<Z>>(namespace?: string): E;
3184
+ declare function useQueue<Z extends QueueTicketInput = QueueTicketInput, E extends QueueTicket<Z> = QueueTicket<Z>, R extends QueueContext<Z, E> = QueueContext<Z, E>>(namespace?: string): R;
2861
3185
  //#endregion
2862
3186
  //#region src/composables/useResizeObserver/index.d.ts
2863
3187
  interface ResizeObserverEntry {
@@ -2937,7 +3261,7 @@ interface UseResizeObserverReturn {
2937
3261
  * resume()
2938
3262
  * ```
2939
3263
  */
2940
- declare function useResizeObserver(target: Ref<Element | null | undefined>, callback: (entries: ResizeObserverEntry[]) => void, options?: ResizeObserverOptions): UseResizeObserverReturn;
3264
+ declare function useResizeObserver(target: MaybeRef<Element | null | undefined>, callback: (entries: ResizeObserverEntry[]) => void, options?: ResizeObserverOptions): UseResizeObserverReturn;
2941
3265
  interface UseElementSizeReturn extends UseResizeObserverReturn {
2942
3266
  /**
2943
3267
  * The width of the element in pixels
@@ -2971,7 +3295,7 @@ interface UseElementSizeReturn extends UseResizeObserverReturn {
2971
3295
  * })
2972
3296
  * ```
2973
3297
  */
2974
- declare function useElementSize(target: Ref<Element | null | undefined>): UseElementSizeReturn;
3298
+ declare function useElementSize(target: MaybeRef<Element | null | undefined>): UseElementSizeReturn;
2975
3299
  //#endregion
2976
3300
  //#region src/composables/useStorage/adapters/adapter.d.ts
2977
3301
  interface StorageAdapter$1 {
@@ -3160,7 +3484,31 @@ type ThemeRecord = {
3160
3484
  lazy?: boolean;
3161
3485
  colors: ThemeColors;
3162
3486
  };
3163
- interface ThemeTicket extends SingleTicket<ThemeColors> {
3487
+ /**
3488
+ * Input type for theme tickets - what users provide to register().
3489
+ * Extend this interface to add custom properties.
3490
+ */
3491
+ interface ThemeTicketInput extends SingleTicketInput<ThemeColors> {
3492
+ /**
3493
+ * Indicates whether the theme is dark or light.
3494
+ *
3495
+ * @remarks Defaults to `false` (light theme).
3496
+ */
3497
+ dark?: boolean;
3498
+ /**
3499
+ * Indicates whether the theme should be loaded lazily.
3500
+ *
3501
+ * @remarks Defaults to `false`.
3502
+ */
3503
+ lazy?: boolean;
3504
+ }
3505
+ /**
3506
+ * Output type for theme tickets - what users receive from get().
3507
+ * Includes all input properties plus guaranteed dark/lazy values.
3508
+ *
3509
+ * @template Z The input ticket type that extends ThemeTicketInput.
3510
+ */
3511
+ type ThemeTicket<Z extends ThemeTicketInput = ThemeTicketInput> = SingleTicket<Z> & {
3164
3512
  /**
3165
3513
  * Indicates whether the theme is dark or light.
3166
3514
  *
@@ -3173,8 +3521,14 @@ interface ThemeTicket extends SingleTicket<ThemeColors> {
3173
3521
  * @remarks Defaults to `false`.
3174
3522
  */
3175
3523
  lazy: boolean;
3176
- }
3177
- interface ThemeContext<Z extends ThemeTicket> extends SingleContext<Z> {
3524
+ };
3525
+ /**
3526
+ * Context for managing theme collections.
3527
+ *
3528
+ * @template Z The input ticket type.
3529
+ * @template E The output ticket type.
3530
+ */
3531
+ interface ThemeContext<Z extends ThemeTicketInput = ThemeTicketInput, E extends ThemeTicket<Z> = ThemeTicket<Z>> extends Omit<SingleContext<Z, E>, 'register'> {
3178
3532
  /**
3179
3533
  * A computed reference to the resolved colors of the current theme.
3180
3534
  *
@@ -3226,6 +3580,8 @@ interface ThemeContext<Z extends ThemeTicket> extends SingleContext<Z> {
3226
3580
  * ```
3227
3581
  */
3228
3582
  cycle: (themes?: ID[]) => void;
3583
+ /** Register a theme (accepts input type, returns output type) */
3584
+ register: (registration?: Partial<Z>) => E;
3229
3585
  }
3230
3586
  interface ThemeOptions<Z extends ThemeRecord = ThemeRecord> extends RegistryOptions {
3231
3587
  /**
@@ -3291,7 +3647,7 @@ interface ThemePluginOptions extends ThemeContextOptions {}
3291
3647
  * })
3292
3648
  * ```
3293
3649
  */
3294
- declare function createTheme<Z extends ThemeTicket = ThemeTicket, E extends ThemeContext<Z> = ThemeContext<Z>>(_options?: ThemeOptions): E;
3650
+ declare function createTheme<Z extends ThemeTicketInput = ThemeTicketInput, E extends ThemeTicket<Z> = ThemeTicket<Z>, R extends ThemeContext<Z, E> = ThemeContext<Z, E>>(_options?: ThemeOptions): R;
3295
3651
  /**
3296
3652
  * Creates a new theme context trinity.
3297
3653
  *
@@ -3326,7 +3682,7 @@ declare function createTheme<Z extends ThemeTicket = ThemeTicket, E extends Them
3326
3682
  * })
3327
3683
  * ```
3328
3684
  */
3329
- declare function createThemeContext<Z extends ThemeTicket = ThemeTicket, E extends ThemeContext<Z> = ThemeContext<Z>>(_options?: ThemeContextOptions): ContextTrinity<E>;
3685
+ declare function createThemeContext<Z extends ThemeTicketInput = ThemeTicketInput, E extends ThemeTicket<Z> = ThemeTicket<Z>, R extends ThemeContext<Z, E> = ThemeContext<Z, E>>(_options?: ThemeContextOptions): ContextTrinity<R>;
3330
3686
  /**
3331
3687
  * Creates a new theme plugin.
3332
3688
  *
@@ -3368,7 +3724,7 @@ declare function createThemeContext<Z extends ThemeTicket = ThemeTicket, E exten
3368
3724
  * app.mount('#app')
3369
3725
  * ```
3370
3726
  */
3371
- declare function createThemePlugin<Z extends ThemeTicket = ThemeTicket, E extends ThemeContext<Z> = ThemeContext<Z>>(_options?: ThemePluginOptions): Plugin;
3727
+ declare function createThemePlugin<Z extends ThemeTicketInput = ThemeTicketInput, E extends ThemeTicket<Z> = ThemeTicket<Z>, R extends ThemeContext<Z, E> = ThemeContext<Z, E>>(_options?: ThemePluginOptions): Plugin;
3372
3728
  /**
3373
3729
  * Returns the current theme instance.
3374
3730
  *
@@ -3392,7 +3748,7 @@ declare function createThemePlugin<Z extends ThemeTicket = ThemeTicket, E extend
3392
3748
  * </template>
3393
3749
  * ```
3394
3750
  */
3395
- declare function useTheme<Z extends ThemeTicket = ThemeTicket, E extends ThemeContext<Z> = ThemeContext<Z>>(namespace?: string): E;
3751
+ declare function useTheme<Z extends ThemeTicketInput = ThemeTicketInput, E extends ThemeTicket<Z> = ThemeTicket<Z>, R extends ThemeContext<Z, E> = ThemeContext<Z, E>>(namespace?: string): R;
3396
3752
  //#endregion
3397
3753
  //#region src/composables/createTimeline/index.d.ts
3398
3754
  interface TimelineContext<Z extends TimelineTicket> extends RegistryContext<Z> {
@@ -3902,4 +4258,4 @@ interface VirtualContext<T = unknown> {
3902
4258
  */
3903
4259
  declare function useVirtual<T = unknown>(items: Ref<readonly T[]>, _options?: VirtualOptions): VirtualContext<T>;
3904
4260
  //#endregion
3905
- export { createQueue as $, FeatureOptions as $n, createPlugin as $r, createLocaleContext as $t, Vuetify0ThemeAdapter as A, FormOptions as An, createDatePlugin as Ar, usePrefersContrast as At, StorageAdapter as B, FilterFunction as Bn, BreakpointName as Br, useLogger as Bt, ThemePluginOptions as C, useHydration as Cn, DateContext as Cr, useOverflow as Ct, createThemeContext as D, useHotkey as Dn, createDate as Dr, useMutationObserver as Dt, createTheme as E, UseHotkeyReturn as En, DatePluginOptions as Er, UseMutationObserverReturn as Et, StoragePluginOptions as F, createForm as Fn, ClickOutsideIgnoreTarget as Fr, LoggerOptions as Ft, UseElementSizeReturn as G, FilterResult as Gn, createBreakpoints as Gr, LoggerAdapter as Gt, MemoryAdapter as H, FilterMode as Hn, BreakpointsContextOptions as Hr, Vuetify0LoggerAdapter as Ht, createStorage as I, createFormContext as In, ClickOutsideTarget as Ir, LoggerPluginOptions as It, useResizeObserver as J, createFilterContext as Jn, useBreakpoints as Jr, LocaleOptions as Jt, UseResizeObserverReturn as K, Primitive as Kn, createBreakpointsContext as Kr, LocaleContext as Kt, createStorageContext as L, useForm as Ln, UseClickOutsideOptions as Lr, createLogger as Lt, StorageContext as M, FormValidationResult as Mn, Vuetify0DateAdapter as Mr, usePrefersReducedMotion as Mt, StorageContextOptions as N, FormValidationRule as Nn, DateAdapter as Nr, LoggerContext as Nt, createThemePlugin as O, FormContext as On, createDateContext as Or, MediaQueryContext as Ot, StorageOptions as P, FormValue as Pn, ClickOutsideElement as Pr, LoggerContextOptions as Pt, QueueTicket as Q, FeatureContextOptions as Qn, PluginOptions as Qr, createLocale as Qt, createStoragePlugin as R, FilterContext as Rn, UseClickOutsideReturn as Rr, createLoggerContext as Rt, ThemeOptions as S, createHydrationPlugin as Sn, useWindowEventListener as Sr, createOverflowContext as St, ThemeTicket as T, UseHotkeyOptions as Tn, DateOptions as Tr, UseMutationObserverOptions as Tt, ResizeObserverEntry as U, FilterOptions as Un, BreakpointsOptions as Ur, PinoLoggerAdapter as Ut, StorageType as V, FilterItem as Vn, BreakpointsContext as Vr, LogLevel as Vt, ResizeObserverOptions as W, FilterQuery as Wn, BreakpointsPluginOptions as Wr, ConsolaLoggerAdapter as Wt, QueueContextOptions as X, useFilterContext as Xn, toArray as Xr, LocaleRecord as Xt, QueueContext as Y, useFilter as Yn, toReactive as Yr, LocalePluginOptions as Yt, QueueOptions as Z, FeatureContext as Zn, Plugin as Zr, LocaleTicket as Zt, useTimeline as _, HydrationOptions as _n, useTokens as _r, PermissionAdapterInterface as _t, VirtualItem as a, LazyContext as an, useFeatures as ar, ProxyModelOptions as at, ThemeContext as b, createHydration as bn, useDocumentEventListener as br, OverflowOptions as bt, useVirtual as c, IntersectionObserverEntry as cn, TokenCollection as cr, PermissionContextOptions as ct, TimelineContext as d, UseElementIntersectionReturn as dn, TokenOptions as dr, PermissionTicket as dt, ContextKey as ei, createLocaleFallback as en, FeaturePluginOptions as er, createQueueContext as et, TimelineContextOptions as f, UseIntersectionObserverReturn as fn, TokenPrimitive as fr, createPermissions as ft, createTimelineContext as g, HydrationContextOptions as gn, createTokensContext as gr, PermissionAdapter as gt, createTimeline as h, HydrationContext as hn, createTokens as hr, usePermissions as ht, VirtualDirection as i, useContext as ii, LocaleAdapter as in, createFeaturesPlugin as ir, useProxyRegistry as it, ThemeAdapter as j, FormTicket as jn, useDate as jr, usePrefersDark as jt, useTheme as k, FormContextOptions as kn, createDateFallback as kr, useMediaQuery as kt, ToggleScopeControls as l, IntersectionObserverOptions as ln, TokenContext as lr, PermissionOptions as lt, TimelineTicket as m, useIntersectionObserver as mn, TokenValue as mr, createPermissionsPlugin as mt, VirtualAnchor as n, createContext as ni, useLocale as nn, createFeatures as nr, ProxyRegistryContext as nt, VirtualOptions as o, LazyOptions as on, FlatTokenCollection as or, useProxyModel as ot, TimelineOptions as p, useElementIntersection as pn, TokenTicket as pr, createPermissionsContext as pt, useElementSize as q, createFilter as qn, createBreakpointsPlugin as qr, LocaleContextOptions as qt, VirtualContext as r, provideContext as ri, Vuetify0LocaleAdapter as rn, createFeaturesContext as rr, ProxyRegistryOptions as rt, VirtualState as s, useLazy as sn, TokenAlias as sr, PermissionContext as st, ScrollToOptions as t, CreateContextOptions as ti, createLocalePlugin as tn, FeatureTicket as tr, useQueue as tt, useToggleScope as u, MaybeRef$1 as un, TokenContextOptions as ur, PermissionPluginOptions as ut, Colors as v, HydrationPluginOptions as vn, CleanupFunction as vr, OverflowContext as vt, ThemeRecord as w, PlatformContext as wn, DateContextOptions as wr, MutationObserverRecord as wt, ThemeContextOptions as x, createHydrationContext as xn, useEventListener as xr, createOverflow as xt, ThemeColors as y, createFallbackHydration as yn, EventHandler as yr, OverflowContextOptions as yt, useStorage as z, FilterContextOptions as zn, useClickOutside as zr, createLoggerPlugin as zt };
4261
+ export { QueueTicket as $, createForm as $n, createDate as $r, LoggerPluginOptions as $t, useTheme as A, useElementIntersection as An, FeaturesAdapterInterface as Ar, singleOpenStrategy as At, useStorage as B, useHydration as Bn, TokenValue as Br, OpenStrategyContext as Bt, ThemePluginOptions as C, ContextKey as Ci, LazyContext as Cn, createFeaturesPlugin as Cr, createOverflow as Ct, createTheme as D, useContext as Di, IntersectionObserverOptions as Dn, FlagsmithFeatureAdapter as Dr, createNestedContext as Dt, ThemeTicketInput as E, provideContext as Ei, IntersectionObserverEntry as En, LaunchDarklyFeatureAdapter as Er, createNested as Et, StorageOptions as F, HydrationPluginOptions as Fn, TokenContext as Fr, NestedRegistration as Ft, ResizeObserverOptions as G, FormContext as Gn, EventHandler as Gr, MediaQueryContext as Gt, StorageType as H, UseHotkeyOptions as Hn, createTokensContext as Hr, UseMutationObserverOptions as Ht, StoragePluginOptions as I, createFallbackHydration as In, TokenContextOptions as Ir, NestedSelectionMode as It, useElementSize as J, FormTicket as Jn, useWindowEventListener as Jr, usePrefersDark as Jt, UseElementSizeReturn as K, FormContextOptions as Kn, useDocumentEventListener as Kr, useMediaQuery as Kt, createStorage as L, createHydration as Ln, TokenOptions as Lr, NestedTicket as Lt, ThemeAdapter as M, HydrationContext as Mn, FlatTokenCollection as Mr, NestedContextOptions as Mt, StorageContext as N, HydrationContextOptions as Nn, TokenAlias as Nr, NestedOpenMode as Nt, createThemeContext as O, UseElementIntersectionReturn as On, FeaturesAdapter as Or, useNested as Ot, StorageContextOptions as P, HydrationOptions as Pn, TokenCollection as Pr, NestedOptions as Pt, QueueOptions as Q, FormValue as Qn, DatePluginOptions as Qr, LoggerOptions as Qt, createStorageContext as R, createHydrationContext as Rn, TokenPrimitive as Rr, NestedTicketInput as Rt, ThemeOptions as S, createPlugin as Si, LocaleAdapter as Sn, createFeaturesContext as Sr, OverflowOptions as St, ThemeTicket as T, createContext as Ti, useLazy as Tn, PostHogFeatureAdapter as Tr, useOverflow as Tt, MemoryAdapter as U, UseHotkeyReturn as Un, useTokens as Ur, UseMutationObserverReturn as Ut, StorageAdapter as V, PlatformContext as Vn, createTokens as Vr, MutationObserverRecord as Vt, ResizeObserverEntry as W, useHotkey as Wn, CleanupFunction as Wr, useMutationObserver as Wt, QueueContext as X, FormValidationResult as Xn, DateContextOptions as Xr, LoggerContext as Xt, useResizeObserver as Y, FormTicketInput as Yn, DateContext as Yr, usePrefersReducedMotion as Yt, QueueContextOptions as Z, FormValidationRule as Zn, DateOptions as Zr, LoggerContextOptions as Zt, useTimeline as _, useBreakpoints as _i, createLocaleContext as _n, FeatureOptions as _r, usePermissions as _t, VirtualItem as a, ClickOutsideTarget as ai, Vuetify0LoggerAdapter as an, FilterItem as ar, ProxyRegistryOptions as at, ThemeContext as b, Plugin as bi, useLocale as bn, FeatureTicketInput as br, OverflowContext as bt, useVirtual as c, useClickOutside as ci, LoggerAdapter as cn, FilterQuery as cr, useProxyModel as ct, TimelineContext as d, BreakpointsContextOptions as di, LocaleOptions as dn, createFilter as dr, PermissionOptions as dt, createDateContext as ei, createLogger as en, createFormContext as er, QueueTicketInput as et, TimelineContextOptions as f, BreakpointsOptions as fi, LocalePluginOptions as fn, createFilterContext as fr, PermissionPluginOptions as ft, createTimelineContext as g, createBreakpointsPlugin as gi, createLocale as gn, FeatureContextOptions as gr, createPermissionsPlugin as gt, createTimeline as h, createBreakpointsContext as hi, LocaleTicketInput as hn, FeatureContext as hr, createPermissionsContext as ht, VirtualDirection as i, ClickOutsideIgnoreTarget as ii, LogLevel as in, FilterFunction as ir, ProxyRegistryContext as it, Vuetify0ThemeAdapter as j, useIntersectionObserver as jn, FeaturesAdapterValue as jr, NestedContext as jt, createThemePlugin as k, UseIntersectionObserverReturn as kn, FeaturesAdapterFlags as kr, multipleOpenStrategy as kt, ToggleScopeControls as l, BreakpointName as li, LocaleContext as ln, FilterResult as lr, PermissionContext as lt, TimelineTicket as m, createBreakpoints as mi, LocaleTicket as mn, useFilterContext as mr, createPermissions as mt, VirtualAnchor as n, useDate as ni, createLoggerPlugin as nn, FilterContext as nr, createQueueContext as nt, VirtualOptions as o, UseClickOutsideOptions as oi, PinoLoggerAdapter as on, FilterMode as or, useProxyRegistry as ot, TimelineOptions as p, BreakpointsPluginOptions as pi, LocaleRecord as pn, useFilter as pr, PermissionTicket as pt, UseResizeObserverReturn as q, FormOptions as qn, useEventListener as qr, usePrefersContrast as qt, VirtualContext as r, ClickOutsideElement as ri, useLogger as rn, FilterContextOptions as rr, useQueue as rt, VirtualState as s, UseClickOutsideReturn as si, ConsolaLoggerAdapter as sn, FilterOptions as sr, ProxyModelOptions as st, ScrollToOptions as t, createDatePlugin as ti, createLoggerContext as tn, useForm as tr, createQueue as tt, useToggleScope as u, BreakpointsContext as ui, LocaleContextOptions as un, Primitive as ur, PermissionContextOptions as ut, Colors as v, toReactive as vi, createLocaleFallback as vn, FeaturePluginOptions as vr, PermissionAdapter as vt, ThemeRecord as w, CreateContextOptions as wi, LazyOptions as wn, useFeatures as wr, createOverflowContext as wt, ThemeContextOptions as x, PluginOptions as xi, Vuetify0LocaleAdapter as xn, createFeatures as xr, OverflowContextOptions as xt, ThemeColors as y, toArray as yi, createLocalePlugin as yn, FeatureTicket as yr, PermissionAdapterInterface as yt, createStoragePlugin as z, createHydrationPlugin as zn, TokenTicket as zr, OpenStrategy as zt };