@vuetify/v0 1.0.0-alpha.4 → 1.0.0-alpha.5

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 (131) hide show
  1. package/README.md +2 -0
  2. package/dist/{adapter-C9cR4AcY.mjs → adapter-BFSJsyv7.mjs} +10 -10
  3. package/dist/{adapter-Cr7Bl4la.d.mts → adapter-BO75n0Cn.d.mts} +7 -7
  4. package/dist/{adapter-DgBBe_BW.d.mts → adapter-DDJHLC8K.d.mts} +1 -1
  5. package/dist/adapters-4t-NhR11.mjs +5 -0
  6. package/dist/adapters-BcoA0zCS.mjs +4 -0
  7. package/dist/adapters-BjaPK635.mjs +2 -0
  8. package/dist/{adapters-t6QC-zE8.mjs → adapters-DvG-9z9q.mjs} +1 -1
  9. package/dist/browser/index.js +514 -123
  10. package/dist/components/index.d.mts +2 -2
  11. package/dist/components/index.mjs +1 -1
  12. package/dist/{components-BWxMSWr7.mjs → components-Dn4Kbi0i.mjs} +22 -22
  13. package/dist/composables/index.d.mts +19 -18
  14. package/dist/composables/index.mjs +23 -23
  15. package/dist/{consola-Crr4qbeI.d.mts → consola-CUNHyu8J.d.mts} +1 -1
  16. package/dist/constants/index.d.mts +1 -1
  17. package/dist/constants/index.mjs +1 -1
  18. package/dist/{createDataTable-DDr2yY-A.mjs → createDataTable-H-PuVigU.mjs} +191 -100
  19. package/dist/{createGroup-BSGtfBUE.mjs → createGroup-aHt_kvtU.mjs} +1 -1
  20. package/dist/{createRegistry-Db_juawd.mjs → createRegistry-CWpvSbCe.mjs} +1 -1
  21. package/dist/{createSelection-BeKZMxha.mjs → createSelection-MRyUZyW2.mjs} +1 -1
  22. package/dist/{createSingle-Dms2efxr.mjs → createSingle-BSciC9EJ.mjs} +1 -1
  23. package/dist/{createTokens-B1lwHZvO.mjs → createTokens-CQ9C7GTV.mjs} +2 -2
  24. package/dist/data-table/adapters/client/index.d.mts +1 -1
  25. package/dist/data-table/adapters/client/index.mjs +1 -1
  26. package/dist/data-table/adapters/index.d.mts +4 -4
  27. package/dist/data-table/adapters/index.mjs +5 -5
  28. package/dist/data-table/adapters/server/index.d.mts +1 -1
  29. package/dist/data-table/adapters/server/index.mjs +1 -1
  30. package/dist/data-table/adapters/virtual/index.d.mts +1 -1
  31. package/dist/data-table/adapters/virtual/index.mjs +1 -1
  32. package/dist/data-table/index.d.mts +6 -6
  33. package/dist/data-table/index.mjs +5 -5
  34. package/dist/date/index.d.mts +1 -1
  35. package/dist/date/index.mjs +2 -2
  36. package/dist/features/adapters/flagsmith/index.d.mts +1 -1
  37. package/dist/features/adapters/launchdarkly/index.d.mts +1 -1
  38. package/dist/features/adapters/posthog/index.d.mts +1 -1
  39. package/dist/features/adapters/posthog/index.mjs +1 -1
  40. package/dist/features/index.d.mts +2 -2
  41. package/dist/features/index.mjs +1 -1
  42. package/dist/{flagsmith-ygKMImos.d.mts → flagsmith-Cd44vxff.d.mts} +1 -1
  43. package/dist/{globals-BAe6tA_x.mjs → globals-BRdxsC2M.mjs} +1 -1
  44. package/dist/{index-BA7YU2xY.d.mts → index-BmEu85PI.d.mts} +123 -62
  45. package/dist/{index-Cw04PFVO.d.mts → index-C0ewabdY.d.mts} +1 -167
  46. package/dist/{index-jQPkwo3G.d.mts → index-CJdG9yY1.d.mts} +104 -104
  47. package/dist/index-C_t6t0Z-.d.mts +170 -0
  48. package/dist/{index-BfpLkDR_.d.mts → index-CyUCELZC.d.mts} +207 -9
  49. package/dist/index.d.mts +22 -21
  50. package/dist/index.mjs +25 -25
  51. package/dist/json/web-types.json +1 -1
  52. package/dist/{launchdarkly-BJR4vbbV.d.mts → launchdarkly-De701hkf.d.mts} +1 -1
  53. package/dist/locale/adapters/index.d.mts +2 -2
  54. package/dist/locale/adapters/index.mjs +2 -2
  55. package/dist/locale/adapters/v0/index.d.mts +1 -1
  56. package/dist/locale/adapters/v0/index.mjs +1 -1
  57. package/dist/locale/adapters/vue-i18n/index.d.mts +1 -1
  58. package/dist/locale/index.d.mts +3 -3
  59. package/dist/locale/index.mjs +2 -2
  60. package/dist/logger/adapters/consola/index.d.mts +1 -1
  61. package/dist/logger/adapters/index.d.mts +4 -4
  62. package/dist/logger/adapters/index.mjs +2 -2
  63. package/dist/logger/adapters/pino/index.d.mts +1 -1
  64. package/dist/logger/adapters/v0/index.d.mts +1 -1
  65. package/dist/logger/adapters/v0/index.mjs +1 -1
  66. package/dist/logger/index.d.mts +5 -5
  67. package/dist/logger/index.mjs +2 -2
  68. package/dist/notifications/index.d.mts +1 -1
  69. package/dist/notifications/index.mjs +2 -2
  70. package/dist/palettes/ant/index.d.mts +1 -1
  71. package/dist/palettes/index.d.mts +2 -2
  72. package/dist/palettes/material/index.d.mts +1 -1
  73. package/dist/palettes/md1/index.d.mts +1 -1
  74. package/dist/palettes/md2/index.d.mts +1 -1
  75. package/dist/palettes/radix/index.d.mts +1 -1
  76. package/dist/palettes/tailwind/index.d.mts +1 -1
  77. package/dist/permissions/adapters/index.d.mts +1 -1
  78. package/dist/permissions/adapters/v0/index.d.mts +1 -1
  79. package/dist/permissions/index.d.mts +1 -1
  80. package/dist/permissions/index.mjs +1 -1
  81. package/dist/{pino-NmR7X0s4.d.mts → pino-BaYY_KIN.d.mts} +1 -1
  82. package/dist/{posthog-B3go2aCh.mjs → posthog-0umvvA48.mjs} +1 -1
  83. package/dist/{posthog-CQntUXFO.d.mts → posthog-CIrmvke4.d.mts} +1 -1
  84. package/dist/rules/index.d.mts +1 -1
  85. package/dist/rules/index.mjs +1 -1
  86. package/dist/{server-DQK305lc.d.mts → server-7vjHxjNc.d.mts} +1 -1
  87. package/dist/{server-ZFXbgQoY.mjs → server-BNSiVoMe.mjs} +1 -1
  88. package/dist/storage/adapters/index.d.mts +2 -2
  89. package/dist/storage/adapters/memory/index.d.mts +1 -1
  90. package/dist/storage/index.d.mts +3 -3
  91. package/dist/storage/index.mjs +1 -1
  92. package/dist/theme/adapters/index.d.mts +1 -1
  93. package/dist/theme/adapters/index.mjs +3 -3
  94. package/dist/theme/adapters/unhead/index.d.mts +1 -1
  95. package/dist/theme/adapters/unhead/index.mjs +1 -1
  96. package/dist/theme/adapters/v0/index.d.mts +1 -1
  97. package/dist/theme/adapters/v0/index.mjs +1 -1
  98. package/dist/theme/index.d.mts +1 -1
  99. package/dist/theme/index.mjs +3 -3
  100. package/dist/{unhead-dPyVkgiJ.mjs → unhead-_cXZcx0j.mjs} +1 -1
  101. package/dist/{useClickOutside-B8naChaQ.mjs → useClickOutside-DbOLg1uw.mjs} +322 -17
  102. package/dist/{useFeatures-x2iKp0C8.mjs → useFeatures-Dhnr-Lg2.mjs} +4 -4
  103. package/dist/{useLocale-BUms59Bw.mjs → useLocale-Sh-2sNiG.mjs} +5 -5
  104. package/dist/{useLogger-DPSSa-YR.mjs → useLogger-1_ZeBY12.mjs} +4 -4
  105. package/dist/{useNotifications-BPTmZWQy.mjs → useNotifications-CAVQ7hK6.mjs} +5 -5
  106. package/dist/{usePermissions-CTi-3pBk.mjs → usePermissions-D9Oituwy.mjs} +2 -2
  107. package/dist/{useRules-DNhljkyO.mjs → useRules-DK4AeNeC.mjs} +4 -3
  108. package/dist/{useTheme-3vW3kFNg.mjs → useTheme-FMDQC81h.mjs} +5 -5
  109. package/dist/utilities/index.d.mts +1 -1
  110. package/dist/utilities/index.mjs +1 -1
  111. package/dist/{v0-YJQoTLsp.mjs → v0-C42ssNIy.mjs} +1 -1
  112. package/dist/{v0-DAlKpCR8.mjs → v0-CEfbyyp2.mjs} +1 -1
  113. package/dist/{v0-CotC1PiS.mjs → v0-Ch-O6YVd.mjs} +1 -1
  114. package/dist/{v0-DadOcxFI.mjs → v0-D0imQlSD.mjs} +1 -1
  115. package/dist/{v0-CRGArJim.d.mts → v0-DWZ_N2GG.d.mts} +1 -1
  116. package/dist/{v0-DYsCJPIu.d.mts → v0-QIjffi4E.d.mts} +1 -1
  117. package/dist/{v0-DDELiSI6.d.mts → v0-aYLq6qmT.d.mts} +1 -1
  118. package/dist/{virtual-Dnno49F8.mjs → virtual-Cq5aRp7m.mjs} +1 -1
  119. package/dist/{virtual-BqCRw0ly.d.mts → virtual-CrgGA-o6.d.mts} +1 -1
  120. package/package.json +1 -1
  121. package/dist/adapters-B25KaYU4.mjs +0 -2
  122. package/dist/adapters-BcddLSNs.mjs +0 -4
  123. package/dist/adapters-Dv74Jk6A.mjs +0 -5
  124. /package/dist/{adapter-Dzyrlbz7.d.mts → adapter-B6IrPwib.d.mts} +0 -0
  125. /package/dist/{adapter-o8r-2vUn.d.mts → adapter-BEJXp-ie.d.mts} +0 -0
  126. /package/dist/{adapter-C6JmOyYo.d.mts → adapter-CspReV3g.d.mts} +0 -0
  127. /package/dist/{index-B3-FstpY.d.mts → index-BLaKZq0Y.d.mts} +0 -0
  128. /package/dist/{index-DWfPppPU.d.mts → index-BOn0AAue.d.mts} +0 -0
  129. /package/dist/{index-DewYtDsc.d.mts → index-C6NnIuDv.d.mts} +0 -0
  130. /package/dist/{index-DJQwYeyx.d.mts → index-PvkxPev3.d.mts} +0 -0
  131. /package/dist/{memory-B0w39kno.d.mts → memory-D-JbdKXg.d.mts} +0 -0
@@ -135,7 +135,7 @@ const SUPPORTS_MATCH_MEDIA = IN_BROWSER && "matchMedia" in window && typeof wind
135
135
  const SUPPORTS_OBSERVER = IN_BROWSER && "ResizeObserver" in window;
136
136
  const SUPPORTS_INTERSECTION_OBSERVER = IN_BROWSER && "IntersectionObserver" in window;
137
137
  const SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && "MutationObserver" in window;
138
- const version = "1.0.0-alpha.4";
138
+ const version = "1.0.0-alpha.5";
139
139
  /* v8 ignore next -- build-time constant, __DEV__ short-circuits in tests */
140
140
  const __LOGGER_ENABLED__ = false;
141
141
  //#endregion
@@ -1043,7 +1043,7 @@ function getPersistedStorage() {
1043
1043
  * createPluginContext('v0:logger', options => createLogger(options), {
1044
1044
  * fallback: ns => createFallbackLogger(ns),
1045
1045
  * setup: (context) => {
1046
- * if (__DEV__ && IN_BROWSER) (window as any).__v0Logger__ = context
1046
+ * if (__DEV__ && IN_BROWSER) (window as Window & { __v0Logger__?: typeof context }).__v0Logger__ = context
1047
1047
  * },
1048
1048
  * })
1049
1049
  * ```
@@ -4734,16 +4734,18 @@ function compareValues(a, b, collator) {
4734
4734
  var DataTableAdapter = class {
4735
4735
  /** Create the filter pipeline stage */
4736
4736
  filter(context) {
4737
- const filter = createFilter(Object.keys(context.customColumnFilters).length > 0 && !context.filterOptions.customFilter ? {
4737
+ const filter = createFilter({
4738
4738
  ...context.filterOptions,
4739
- keys: [...context.filterableKeys],
4740
- customFilter: (query, item) => {
4739
+ keys: [...toValue(context.filterableKeys)],
4740
+ customFilter: context.filterOptions.customFilter ?? ((query, item) => {
4741
+ const columnFilters = toValue(context.customColumnFilters);
4742
+ const keys = toValue(context.filterableKeys);
4741
4743
  if (!/* @__PURE__ */ isObject(item)) return false;
4742
4744
  const q = String(/* @__PURE__ */ isArray(query) ? query[0] : query).toLowerCase();
4743
4745
  if (!q) return true;
4744
4746
  const obj = item;
4745
- for (const key of context.filterableKeys) {
4746
- const customFn = context.customColumnFilters[key];
4747
+ for (const key of keys) {
4748
+ const customFn = columnFilters[key];
4747
4749
  if (customFn) {
4748
4750
  if (customFn(obj[key], q)) return true;
4749
4751
  } else {
@@ -4752,10 +4754,7 @@ var DataTableAdapter = class {
4752
4754
  }
4753
4755
  }
4754
4756
  return false;
4755
- }
4756
- } : {
4757
- ...context.filterOptions,
4758
- keys: [...context.filterableKeys]
4757
+ })
4759
4758
  });
4760
4759
  const allItems = toRef(() => toValue(context.items));
4761
4760
  const { items: filteredItems } = filter.apply(context.search, allItems);
@@ -4769,11 +4768,12 @@ var DataTableAdapter = class {
4769
4768
  return computed(() => {
4770
4769
  const entries = sortBy.value;
4771
4770
  if (entries.length === 0) return filteredItems.value;
4771
+ const sorts = toValue(customSorts) ?? {};
4772
4772
  const collator = new Intl.Collator(locale?.value);
4773
4773
  const resolved = entries.map(({ key, direction }) => ({
4774
4774
  parts: key.split("."),
4775
4775
  direction,
4776
- custom: customSorts?.[key]
4776
+ custom: sorts[key]
4777
4777
  }));
4778
4778
  return filteredItems.value.toSorted((a, b) => {
4779
4779
  for (const { parts, direction, custom } of resolved) {
@@ -4867,7 +4867,7 @@ function resolveHeaders(columns) {
4867
4867
  for (const col of cols) if (col.children?.length) {
4868
4868
  const leaves = /* @__PURE__ */ extractLeaves(col.children);
4869
4869
  rows[depth].push({
4870
- key: col.key,
4870
+ id: col.id,
4871
4871
  title: col.title ?? "",
4872
4872
  colspan: leaves.length,
4873
4873
  rowspan: 1,
@@ -4875,7 +4875,7 @@ function resolveHeaders(columns) {
4875
4875
  });
4876
4876
  walk(col.children, depth + 1);
4877
4877
  } else rows[depth].push({
4878
- key: col.key,
4878
+ id: col.id,
4879
4879
  title: col.title ?? "",
4880
4880
  colspan: 1,
4881
4881
  rowspan: maxDepth - depth + 1,
@@ -4976,6 +4976,12 @@ var VirtualDataTableAdapter = class extends DataTableAdapter {
4976
4976
  * reimplementing their logic. Uses createGroup's tri-state for sort direction
4977
4977
  * and delegates the data pipeline (filter, sort, paginate) to an adapter.
4978
4978
  *
4979
+ * Rows and columns are both managed via internal registries. Call
4980
+ * `table.columns.onboard([...])` / `table.columns.register({...})` to add
4981
+ * columns and `table.onboard([...])` / `table.register({...})` for rows.
4982
+ * Row identity is the ticket id (caller-supplied or auto-generated); column
4983
+ * identity is the caller-supplied `id` (required — no auto-generation).
4984
+ *
4979
4985
  * Key features:
4980
4986
  * - Adapter pattern for pipeline strategy (client, server, virtual)
4981
4987
  * - Sort via createGroup tri-state: selected=asc, mixed=desc, unselected=none
@@ -4990,10 +4996,18 @@ var VirtualDataTableAdapter = class extends DataTableAdapter {
4990
4996
  * ```ts
4991
4997
  * import { createDataTable } from '@vuetify/v0'
4992
4998
  *
4993
- * const table = createDataTable({
4994
- * items: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }],
4995
- * columns: [{ key: 'name', title: 'Name', sortable: true }],
4996
- * })
4999
+ * const table = createDataTable<User>()
5000
+ *
5001
+ * table.columns.onboard([
5002
+ * { id: 'name', title: 'Name', sortable: true },
5003
+ * { id: 'email', title: 'Email', filterable: true },
5004
+ * ])
5005
+ *
5006
+ * table.onboard([
5007
+ * { id: 1, value: { id: 1, name: 'Alice', email: 'alice@test.com' } },
5008
+ * { id: 2, value: { id: 2, name: 'Bob', email: 'bob@test.com' } },
5009
+ * ])
5010
+ *
4997
5011
  * table.sort.toggle('name')
4998
5012
  * ```
4999
5013
  */
@@ -5001,43 +5015,53 @@ var VirtualDataTableAdapter = class extends DataTableAdapter {
5001
5015
  * Creates a data table instance with sort controls, selection, and an
5002
5016
  * adapter-driven data pipeline.
5003
5017
  *
5018
+ * Rows and columns are both managed via internal registries. Use
5019
+ * `table.columns.register({ id, ... })` / `table.columns.onboard([...])` to
5020
+ * add columns and `table.register({ id, value })` / `table.onboard([...])`
5021
+ * for rows. Removing entries from the column registry reactively updates
5022
+ * `leaves`, `headers`, the sort group, and the filter pipeline.
5023
+ *
5004
5024
  * Must be called inside a component `setup()` or a Vue effect scope.
5005
5025
  * Calling at module scope in SSR environments causes request state leakage.
5006
5026
  *
5007
- * @param options Data table options
5008
- * @returns Data table context with pipeline stages and controls
5027
+ * @param options Data table options (all optional)
5028
+ * @returns Data table context with pipeline stages, controls, and registry surface
5009
5029
  *
5010
5030
  * @example
5011
5031
  * ```ts
5012
5032
  * import { createDataTable } from '@vuetify/v0'
5013
5033
  *
5014
- * const table = createDataTable({
5015
- * items: users,
5016
- * columns: [
5017
- * { key: 'name', title: 'Name', sortable: true, filterable: true },
5018
- * { key: 'email', title: 'Email', sortable: true, filterable: true },
5019
- * { key: 'age', title: 'Age', sortable: true },
5020
- * ],
5021
- * })
5034
+ * const table = createDataTable<User>()
5035
+ *
5036
+ * table.columns.onboard([
5037
+ * { id: 'name', title: 'Name', sortable: true, filterable: true },
5038
+ * { id: 'email', title: 'Email', sortable: true, filterable: true },
5039
+ * { id: 'age', title: 'Age', sortable: true },
5040
+ * ])
5041
+ *
5042
+ * table.onboard(users.map(value => ({ id: value.id, value })))
5022
5043
  *
5023
- * // Search
5024
5044
  * table.search('john')
5025
5045
  *
5026
- * // Sort
5027
- * table.sort.toggle('name') // asc
5028
- * table.sort.toggle('name') // desc
5029
- * table.sort.toggle('name') // none
5030
- * console.log(table.sort.columns.value) // [{ key: 'name', direction: 'asc' }]
5046
+ * table.sort.toggle('name')
5047
+ * table.sort.toggle('name')
5048
+ * table.sort.toggle('name')
5031
5049
  *
5032
- * // Paginate
5033
5050
  * table.pagination.next()
5034
5051
  *
5035
- * // Select rows
5036
- * table.selection.toggle('user-1')
5052
+ * table.selection.toggle(1)
5037
5053
  * ```
5038
5054
  */
5039
- function createDataTable(options) {
5040
- const { items: _items, columns, itemValue = "id", filter: filterOptions = {}, pagination: paginationOptions = {}, sortMultiple = false, mandate = false, firstSortOrder = "asc", selectStrategy = "page", itemSelectable, groupBy, openAll = false, expandMultiple = true, locale: initialLocale, adapter = new ClientDataTableAdapter() } = options;
5055
+ function createDataTable(options = {}) {
5056
+ const { filter: filterOptions = {}, pagination: paginationOptions = {}, sortMultiple = false, mandate = false, firstSortOrder = "asc", selectStrategy = "page", itemSelectable, groupBy, openAll = false, expandMultiple = true, locale: initialLocale, adapter = new ClientDataTableAdapter() } = options;
5057
+ const registry = createRegistry({
5058
+ events: true,
5059
+ reactive: true
5060
+ });
5061
+ const columns = createRegistry({
5062
+ events: true,
5063
+ reactive: true
5064
+ });
5041
5065
  const _query = shallowRef("");
5042
5066
  function search(value) {
5043
5067
  _query.value = value;
@@ -5048,44 +5072,60 @@ function createDataTable(options) {
5048
5072
  if (!/* @__PURE__ */ isNullOrUndefined(selected)) return String(selected);
5049
5073
  return initialLocale;
5050
5074
  });
5051
- const leaves = /* @__PURE__ */ extractLeaves(columns);
5052
- const headers = toRef(() => /* @__PURE__ */ resolveHeaders(columns));
5053
- const sortable = leaves.filter((col) => col.sortable === true);
5075
+ const leaves = computed(() => /* @__PURE__ */ extractLeaves(columns.values()));
5076
+ const headers = computed(() => /* @__PURE__ */ resolveHeaders(columns.values()));
5077
+ const sortable = computed(() => leaves.value.filter((col) => col.sortable === true));
5054
5078
  const group = createGroup({ multiple: sortMultiple });
5055
- group.onboard(sortable.map((col) => ({
5056
- id: col.key,
5057
- value: col.key
5058
- })));
5059
5079
  const order = shallowReactive([]);
5060
- function toggle(key) {
5061
- if (!group.has(key)) return;
5062
- const isAsc = group.selectedIds.has(key);
5063
- const isDesc = group.mixed(key);
5080
+ watch(sortable, (next) => {
5081
+ const ids = /* @__PURE__ */ new Set();
5082
+ for (const col of next) ids.add(String(col.id));
5083
+ for (const id of group.keys()) {
5084
+ const key = String(id);
5085
+ if (!ids.has(key)) {
5086
+ group.unregister(id);
5087
+ const index = order.indexOf(key);
5088
+ if (index !== -1) order.splice(index, 1);
5089
+ }
5090
+ }
5091
+ for (const id of ids) if (!group.has(id)) group.register({
5092
+ id,
5093
+ value: id
5094
+ });
5095
+ }, {
5096
+ flush: "sync",
5097
+ immediate: true
5098
+ });
5099
+ function toggle(id) {
5100
+ if (!group.has(id)) return;
5101
+ const isAsc = group.selectedIds.has(id);
5102
+ const isDesc = group.mixed(id);
5064
5103
  function clearOthers() {
5065
5104
  if (!sortMultiple) {
5105
+ group.unselectAll();
5066
5106
  group.mixedIds.clear();
5067
5107
  order.length = 0;
5068
5108
  }
5069
5109
  }
5070
5110
  function setAsc() {
5071
- group.unmix(key);
5072
- group.select(key);
5111
+ group.unmix(id);
5112
+ group.select(id);
5073
5113
  }
5074
5114
  function setDesc() {
5075
- group.unselect(key);
5076
- group.mix(key);
5115
+ group.unselect(id);
5116
+ group.mix(id);
5077
5117
  }
5078
5118
  function setNone() {
5079
- group.unselect(key);
5080
- group.unmix(key);
5081
- const index = order.indexOf(key);
5119
+ group.unselect(id);
5120
+ group.unmix(id);
5121
+ const index = order.indexOf(id);
5082
5122
  if (index !== -1) order.splice(index, 1);
5083
5123
  }
5084
5124
  if (!isAsc && !isDesc) {
5085
5125
  clearOthers();
5086
5126
  if (firstSortOrder === "desc") setDesc();
5087
5127
  else setAsc();
5088
- order.push(key);
5128
+ order.push(id);
5089
5129
  } else if (isAsc) if (firstSortOrder === "desc" && !mandate) setNone();
5090
5130
  else setDesc();
5091
5131
  else if (firstSortOrder === "asc" && !mandate) setNone();
@@ -5093,23 +5133,23 @@ function createDataTable(options) {
5093
5133
  }
5094
5134
  const sortBy = computed(() => {
5095
5135
  const result = [];
5096
- for (const key of order) if (group.selectedIds.has(key)) result.push({
5097
- key,
5136
+ for (const id of order) if (group.selectedIds.has(id)) result.push({
5137
+ key: id,
5098
5138
  direction: "asc"
5099
5139
  });
5100
- else if (group.mixed(key)) result.push({
5101
- key,
5140
+ else if (group.mixed(id)) result.push({
5141
+ key: id,
5102
5142
  direction: "desc"
5103
5143
  });
5104
5144
  return result;
5105
5145
  });
5106
- function direction(key) {
5107
- if (group.selectedIds.has(key)) return "asc";
5108
- if (group.mixed(key)) return "desc";
5146
+ function direction(id) {
5147
+ if (group.selectedIds.has(id)) return "asc";
5148
+ if (group.mixed(id)) return "desc";
5109
5149
  return "none";
5110
5150
  }
5111
- function priority(key) {
5112
- return order.indexOf(key);
5151
+ function priority(id) {
5152
+ return order.indexOf(id);
5113
5153
  }
5114
5154
  function reset() {
5115
5155
  group.unselectAll();
@@ -5124,32 +5164,41 @@ function createDataTable(options) {
5124
5164
  priority,
5125
5165
  reset
5126
5166
  };
5127
- const filterable = leaves.filter((col) => col.filterable === true).map((col) => col.key);
5128
- const sorts = {};
5129
- for (const col of leaves) if (col.sort) sorts[col.key] = col.sort;
5130
- const filters = {};
5131
- for (const col of leaves) if (col.filter) filters[col.key] = col.filter;
5167
+ const filterable = computed(() => {
5168
+ const ids = [];
5169
+ for (const col of leaves.value) if (col.filterable === true) ids.push(String(col.id));
5170
+ return ids;
5171
+ });
5172
+ const customSorts = computed(() => {
5173
+ const sorts = {};
5174
+ for (const col of leaves.value) if (col.sort) sorts[String(col.id)] = col.sort;
5175
+ return sorts;
5176
+ });
5177
+ const customColumnFilters = computed(() => {
5178
+ const filters = {};
5179
+ for (const col of leaves.value) if (col.filter) filters[String(col.id)] = col.filter;
5180
+ return filters;
5181
+ });
5182
+ const source = computed(() => registry.values().map((t) => t.value));
5132
5183
  const { allItems, filteredItems, sortedItems, items: visible, pagination, total, loading = toRef(() => false), error = toRef(() => null) } = adapter.setup({
5133
- items: _items,
5184
+ items: source,
5134
5185
  search: _query,
5135
5186
  filterableKeys: filterable,
5136
5187
  sortBy,
5137
5188
  locale,
5138
5189
  filterOptions,
5139
5190
  paginationOptions,
5140
- customSorts: sorts,
5141
- customColumnFilters: filters
5191
+ customSorts,
5192
+ customColumnFilters
5142
5193
  });
5143
5194
  const selectedIds = shallowReactive(/* @__PURE__ */ new Set());
5144
- function rowId(item) {
5145
- const value = item[itemValue];
5146
- if (/* @__PURE__ */ isString(value) || /* @__PURE__ */ isNumber(value)) return value;
5147
- throw new Error(`[v0:data-table] itemValue "${itemValue}" must resolve to a string or number`);
5148
- }
5149
5195
  const selectableIds = computed(() => {
5150
5196
  if (!itemSelectable) return null;
5151
5197
  const ids = /* @__PURE__ */ new Set();
5152
- for (const item of allItems.value) if (item[itemSelectable]) ids.add(rowId(item));
5198
+ for (const ticket of registry.values()) {
5199
+ const value = ticket.value;
5200
+ if (!/* @__PURE__ */ isNullOrUndefined(value) && value[itemSelectable]) ids.add(ticket.id);
5201
+ }
5153
5202
  return ids;
5154
5203
  });
5155
5204
  function isSelectable(id) {
@@ -5159,9 +5208,18 @@ function createDataTable(options) {
5159
5208
  if (selectStrategy === "single") return [];
5160
5209
  return selectStrategy === "all" ? sortedItems.value : visible.value;
5161
5210
  });
5162
- const selectableScope = computed(() => {
5163
- if (!itemSelectable) return scopeItems.value;
5164
- return scopeItems.value.filter((item) => !!item[itemSelectable]);
5211
+ const scopedTickets = computed(() => {
5212
+ const scope = scopeItems.value;
5213
+ if (scope.length === 0) return [];
5214
+ const set = new Set(scope);
5215
+ const result = [];
5216
+ for (const ticket of registry.values()) {
5217
+ const value = ticket.value;
5218
+ if (/* @__PURE__ */ isNullOrUndefined(value) || !set.has(value)) continue;
5219
+ if (itemSelectable && !value[itemSelectable]) continue;
5220
+ result.push(ticket);
5221
+ }
5222
+ return result;
5165
5223
  });
5166
5224
  const selection = {
5167
5225
  selectedIds,
@@ -5182,28 +5240,39 @@ function createDataTable(options) {
5182
5240
  },
5183
5241
  isSelectable,
5184
5242
  selectAll() {
5185
- for (const item of selectableScope.value) selectedIds.add(rowId(item));
5243
+ for (const ticket of scopedTickets.value) selectedIds.add(ticket.id);
5186
5244
  },
5187
5245
  unselectAll() {
5188
5246
  selectedIds.clear();
5189
5247
  },
5190
5248
  toggleAll() {
5191
5249
  if (selectStrategy === "single") return;
5192
- if (selection.isAllSelected.value) for (const item of selectableScope.value) selectedIds.delete(rowId(item));
5250
+ if (selection.isAllSelected.value) for (const ticket of scopedTickets.value) selectedIds.delete(ticket.id);
5193
5251
  else selection.selectAll();
5194
5252
  },
5195
5253
  isAllSelected: computed(() => {
5196
- const items = selectableScope.value;
5197
- if (items.length === 0) return false;
5198
- return items.every((item) => selectedIds.has(rowId(item)));
5254
+ const tickets = scopedTickets.value;
5255
+ if (tickets.length === 0) return false;
5256
+ return tickets.every((ticket) => selectedIds.has(ticket.id));
5199
5257
  }),
5200
5258
  isMixed: computed(() => {
5201
- const items = selectableScope.value;
5202
- if (items.length === 0) return false;
5203
- return items.some((item) => selectedIds.has(rowId(item))) && !selection.isAllSelected.value;
5259
+ const tickets = scopedTickets.value;
5260
+ if (tickets.length === 0) return false;
5261
+ return tickets.some((ticket) => selectedIds.has(ticket.id)) && !selection.isAllSelected.value;
5204
5262
  })
5205
5263
  };
5206
5264
  const expandedIds = shallowReactive(/* @__PURE__ */ new Set());
5265
+ const visibleTickets = computed(() => {
5266
+ const scope = visible.value;
5267
+ if (scope.length === 0) return [];
5268
+ const set = new Set(scope);
5269
+ const result = [];
5270
+ for (const ticket of registry.values()) {
5271
+ const value = ticket.value;
5272
+ if (!/* @__PURE__ */ isNullOrUndefined(value) && set.has(value)) result.push(ticket);
5273
+ }
5274
+ return result;
5275
+ });
5207
5276
  const expansion = {
5208
5277
  expandedIds,
5209
5278
  expand(id) {
@@ -5222,12 +5291,20 @@ function createDataTable(options) {
5222
5291
  },
5223
5292
  expandAll() {
5224
5293
  if (!expandMultiple) return;
5225
- for (const item of visible.value) expandedIds.add(rowId(item));
5294
+ for (const ticket of visibleTickets.value) expandedIds.add(ticket.id);
5226
5295
  },
5227
5296
  collapseAll() {
5228
5297
  expandedIds.clear();
5229
5298
  }
5230
5299
  };
5300
+ registry.on("unregister:ticket", (ticket) => {
5301
+ selectedIds.delete(ticket.id);
5302
+ expandedIds.delete(ticket.id);
5303
+ });
5304
+ registry.on("clear:registry", () => {
5305
+ selectedIds.clear();
5306
+ expandedIds.clear();
5307
+ });
5231
5308
  const opened = shallowReactive(/* @__PURE__ */ new Set());
5232
5309
  const groups = computed(() => {
5233
5310
  if (!groupBy) return [];
@@ -5254,14 +5331,18 @@ function createDataTable(options) {
5254
5331
  return result;
5255
5332
  });
5256
5333
  if (openAll) {
5257
- for (const group of groups.value) opened.add(group.key);
5258
- if (groups.value.length === 0) {
5259
- const stop = watch(groups, (newGroups) => {
5260
- if (newGroups.length === 0) return;
5261
- for (const group of newGroups) opened.add(group.key);
5262
- stop();
5263
- });
5264
- }
5334
+ const autoOpened = /* @__PURE__ */ new Set();
5335
+ for (const group of groups.value) {
5336
+ opened.add(group.key);
5337
+ autoOpened.add(group.key);
5338
+ }
5339
+ watch(groups, (newGroups) => {
5340
+ for (const group of newGroups) {
5341
+ if (autoOpened.has(group.key)) continue;
5342
+ opened.add(group.key);
5343
+ autoOpened.add(group.key);
5344
+ }
5345
+ }, { flush: "sync" });
5265
5346
  }
5266
5347
  const grouping = {
5267
5348
  groups,
@@ -5286,6 +5367,7 @@ function createDataTable(options) {
5286
5367
  }
5287
5368
  };
5288
5369
  return {
5370
+ ...registry,
5289
5371
  items: visible,
5290
5372
  allItems,
5291
5373
  filteredItems,
@@ -5302,12 +5384,19 @@ function createDataTable(options) {
5302
5384
  grouping,
5303
5385
  total,
5304
5386
  loading,
5305
- error
5387
+ error,
5388
+ get size() {
5389
+ return registry.size;
5390
+ }
5306
5391
  };
5307
5392
  }
5308
5393
  /**
5309
5394
  * Creates a data table context with dependency injection support.
5310
5395
  *
5396
+ * The returned context exposes both row and column registries. Columns must
5397
+ * be onboarded after construction — pass them via `context.columns.onboard`,
5398
+ * not in the factory options.
5399
+ *
5311
5400
  * @param options Data table context options including namespace
5312
5401
  * @returns A trinity tuple: [useDataTable, provideDataTable, defaultContext]
5313
5402
  *
@@ -5315,22 +5404,23 @@ function createDataTable(options) {
5315
5404
  * ```ts
5316
5405
  * import { createDataTableContext } from '@vuetify/v0'
5317
5406
  *
5318
- * const [useDataTable, provideDataTable, context] = createDataTableContext({
5407
+ * const [useDataTable, provideDataTable, context] = createDataTableContext<User>({
5319
5408
  * namespace: 'app:users',
5320
- * items: users,
5321
- * columns: [
5322
- * { key: 'name', title: 'Name', sortable: true },
5323
- * ],
5324
5409
  * })
5325
5410
  *
5411
+ * context.columns.onboard([
5412
+ * { id: 'name', title: 'Name', sortable: true },
5413
+ * ])
5414
+ *
5326
5415
  * // Parent component
5327
5416
  * provideDataTable()
5417
+ * context.onboard(users.map(value => ({ id: value.id, value })))
5328
5418
  *
5329
5419
  * // Child component
5330
5420
  * const table = useDataTable()
5331
5421
  * ```
5332
5422
  */
5333
- function createDataTableContext(_options) {
5423
+ function createDataTableContext(_options = {}) {
5334
5424
  const { namespace = "v0:data-table", ...options } = _options;
5335
5425
  return createTrinity(namespace, createDataTable(options));
5336
5426
  }
@@ -5596,6 +5686,7 @@ function resolveAlias(name, predicate, locale) {
5596
5686
  };
5597
5687
  }
5598
5688
  function createResolve(aliases, locale) {
5689
+ useLogger();
5599
5690
  return function resolve(rules) {
5600
5691
  const result = [];
5601
5692
  for (const rule of rules) {
@@ -7087,6 +7178,188 @@ function createNumberField(options = {}) {
7087
7178
  };
7088
7179
  }
7089
7180
  //#endregion
7181
+ //#region src/composables/createOtp/index.ts
7182
+ /**
7183
+ * @module createOtp
7184
+ *
7185
+ * @see https://0.vuetifyjs.com/composables/forms/create-otp
7186
+ *
7187
+ * @remarks
7188
+ * Headless state for a fixed-length one-time-password / verification-code value.
7189
+ * Owns the joined string, per-character pattern matching, length contract,
7190
+ * completion edge detection with a decisional async `onComplete` hook, and
7191
+ * validation through `createInput`. Rendering, focus, and per-element event
7192
+ * wiring are the consumer's responsibility.
7193
+ *
7194
+ * @example
7195
+ * ```ts
7196
+ * import { createOtp } from '@vuetify/v0'
7197
+ *
7198
+ * const otp = createOtp({
7199
+ * length: 6,
7200
+ * pattern: 'numeric',
7201
+ * onComplete: async value => {
7202
+ * const ok = await verify(value)
7203
+ * return ok
7204
+ * },
7205
+ * })
7206
+ *
7207
+ * otp.write(0, '4')
7208
+ * otp.distribute('12345', 1) // returns 5; value becomes '412345'
7209
+ * otp.isComplete.value // true
7210
+ * ```
7211
+ */
7212
+ const PRESETS = {
7213
+ numeric: /^[0-9]$/,
7214
+ alphanumeric: /^[a-zA-Z0-9]$/,
7215
+ alphabetic: /^[a-zA-Z]$/
7216
+ };
7217
+ function createOtp(options = {}) {
7218
+ const { value = shallowRef(""), length = 6, pattern = "numeric", disabled = false, readonly: _readonly = false, onComplete, ...inputOptions } = options;
7219
+ const logger = useLogger();
7220
+ const errorRef = shallowRef(false);
7221
+ const errorMessagesRef = shallowRef(void 0);
7222
+ const input = createInput({
7223
+ ...inputOptions,
7224
+ value,
7225
+ disabled,
7226
+ readonly: _readonly,
7227
+ error: errorRef,
7228
+ errorMessages: errorMessagesRef
7229
+ });
7230
+ const lengthRef = toRef(() => toValue(length));
7231
+ let lastCompleted = "";
7232
+ function compile(resolved) {
7233
+ if (/* @__PURE__ */ isString(resolved)) return PRESETS[resolved];
7234
+ return resolved;
7235
+ }
7236
+ function accepts(char) {
7237
+ if (char.length !== 1) return false;
7238
+ return compile(toValue(pattern)).test(char);
7239
+ }
7240
+ function filterAccepted(text) {
7241
+ let out = "";
7242
+ for (const ch of text) if (accepts(ch)) out += ch;
7243
+ return out;
7244
+ }
7245
+ const isPending = shallowRef(false);
7246
+ function isLocked() {
7247
+ return toValue(disabled) || toValue(_readonly) || isPending.value;
7248
+ }
7249
+ function clearRejection() {
7250
+ if (errorRef.value || errorMessagesRef.value) {
7251
+ errorRef.value = false;
7252
+ errorMessagesRef.value = void 0;
7253
+ }
7254
+ }
7255
+ function write(index, char) {
7256
+ if (isLocked()) return;
7257
+ const max = toValue(lengthRef);
7258
+ if (index < 0 || index >= max) return;
7259
+ if (char === "") {
7260
+ clearRejection();
7261
+ value.value = value.value.slice(0, index);
7262
+ return;
7263
+ }
7264
+ const first = char[0];
7265
+ if (!accepts(first)) return;
7266
+ clearRejection();
7267
+ const current = value.value;
7268
+ const head = current.slice(0, index);
7269
+ const tail = current.slice(index + 1);
7270
+ value.value = (head + first + tail).slice(0, max);
7271
+ }
7272
+ function distribute(text, index = 0) {
7273
+ if (isLocked()) return 0;
7274
+ const max = toValue(lengthRef);
7275
+ const start = /* @__PURE__ */ clamp(index, 0, max);
7276
+ const filtered = filterAccepted(text);
7277
+ if (filtered.length === 0) return 0;
7278
+ clearRejection();
7279
+ const head = value.value.slice(0, start);
7280
+ const next = (head + filtered).slice(0, max);
7281
+ value.value = next;
7282
+ return next.length - head.length;
7283
+ }
7284
+ function clear() {
7285
+ if (isLocked()) return;
7286
+ clearRejection();
7287
+ lastCompleted = "";
7288
+ value.value = "";
7289
+ }
7290
+ function fill(text) {
7291
+ if (isLocked()) return;
7292
+ const max = toValue(lengthRef);
7293
+ const filtered = filterAccepted(text).slice(0, max);
7294
+ if (text.length === 0 || filtered.length > 0) clearRejection();
7295
+ value.value = filtered;
7296
+ }
7297
+ function reject() {
7298
+ errorRef.value = true;
7299
+ errorMessagesRef.value = ["Invalid code"];
7300
+ lastCompleted = "";
7301
+ value.value = "";
7302
+ }
7303
+ const isComplete = toRef(() => {
7304
+ const max = toValue(lengthRef);
7305
+ const v = value.value;
7306
+ if (v.length !== max) return false;
7307
+ const re = compile(toValue(pattern));
7308
+ for (const ch of v) if (!re.test(ch)) return false;
7309
+ return true;
7310
+ });
7311
+ watch(value, (next) => {
7312
+ if (!isComplete.value) {
7313
+ lastCompleted = "";
7314
+ return;
7315
+ }
7316
+ if (!onComplete) return;
7317
+ if (isLocked()) return;
7318
+ if (next === lastCompleted) return;
7319
+ lastCompleted = next;
7320
+ let result;
7321
+ try {
7322
+ result = onComplete(next);
7323
+ } catch (error) {
7324
+ logger.warn("createOtp: onComplete threw", error);
7325
+ reject();
7326
+ return;
7327
+ }
7328
+ if (/* @__PURE__ */ isThenable(result)) {
7329
+ isPending.value = true;
7330
+ result.then((ok) => {
7331
+ isPending.value = false;
7332
+ if (ok === false) reject();
7333
+ }, (error) => {
7334
+ isPending.value = false;
7335
+ logger.warn("createOtp: onComplete rejected", error);
7336
+ reject();
7337
+ });
7338
+ return;
7339
+ }
7340
+ if (result === false) reject();
7341
+ });
7342
+ return {
7343
+ value,
7344
+ length: lengthRef,
7345
+ input: {
7346
+ ...input,
7347
+ reset() {
7348
+ clearRejection();
7349
+ lastCompleted = "";
7350
+ input.reset();
7351
+ }
7352
+ },
7353
+ isComplete,
7354
+ isValidating: isPending,
7355
+ write,
7356
+ distribute,
7357
+ clear,
7358
+ fill,
7359
+ accepts
7360
+ };
7361
+ }
7362
+ //#endregion
7090
7363
  //#region src/composables/useHydration/index.ts
7091
7364
  /**
7092
7365
  * @module useHydration
@@ -7490,7 +7763,7 @@ function useElementSize(target) {
7490
7763
  return {
7491
7764
  width: shallowReadonly(width),
7492
7765
  height: shallowReadonly(height),
7493
- isActive,
7766
+ isActive: shallowReadonly(isActive),
7494
7767
  isPaused: shallowReadonly(isPaused),
7495
7768
  pause,
7496
7769
  resume,
@@ -9107,6 +9380,124 @@ function useVirtual(namespace = "v0:virtual") {
9107
9380
  return useContext(namespace);
9108
9381
  }
9109
9382
  //#endregion
9383
+ //#region src/composables/toHighlight/index.ts
9384
+ /**
9385
+ * @module toHighlight
9386
+ *
9387
+ * @see https://0.vuetifyjs.com/composables/transformers/to-highlight
9388
+ *
9389
+ * @remarks
9390
+ * Pure transformer — no DOM, no state, no registry, no reactivity. Splits text
9391
+ * into matched and unmatched chunks given a query string, an array of query
9392
+ * strings, or pre-computed `[start, end]` match ranges (e.g., from createFilter).
9393
+ * Returns a plain array; wrap the call in `computed()` for reactive recomputation.
9394
+ *
9395
+ * @example
9396
+ * ```ts
9397
+ * import { toHighlight } from '@vuetify/v0'
9398
+ *
9399
+ * const chunks = toHighlight('Hello World', 'World')
9400
+ * // [{ text: 'Hello ', match: false }, { text: 'World', match: true }]
9401
+ * ```
9402
+ */
9403
+ function merge(ranges) {
9404
+ const sorted = ranges.filter((span) => span[0] < span[1]).toSorted((a, b) => a[0] - b[0]);
9405
+ const merged = [];
9406
+ for (const span of sorted) {
9407
+ const last = merged.at(-1);
9408
+ if (last && span[0] <= last[1]) last[1] = Math.max(last[1], span[1]);
9409
+ else merged.push([span[0], span[1]]);
9410
+ }
9411
+ return merged;
9412
+ }
9413
+ function chunk(text, ranges) {
9414
+ const chunks = [];
9415
+ let cursor = 0;
9416
+ for (const [start, end] of ranges) {
9417
+ if (cursor < start) chunks.push({
9418
+ text: text.slice(cursor, start),
9419
+ match: false
9420
+ });
9421
+ chunks.push({
9422
+ text: text.slice(start, end),
9423
+ match: true
9424
+ });
9425
+ cursor = end;
9426
+ }
9427
+ if (cursor < text.length) chunks.push({
9428
+ text: text.slice(cursor),
9429
+ match: false
9430
+ });
9431
+ return chunks;
9432
+ }
9433
+ function find(text, query, matchAll, ignoreCase) {
9434
+ const terms = (/* @__PURE__ */ toArray(query)).filter(Boolean);
9435
+ const haystack = ignoreCase ? text.toLocaleLowerCase() : text;
9436
+ const spans = [];
9437
+ for (const term of terms) {
9438
+ const needle = ignoreCase ? term.toLocaleLowerCase() : term;
9439
+ let index = haystack.indexOf(needle);
9440
+ if (index !== -1) {
9441
+ spans.push([index, index + term.length]);
9442
+ if (matchAll) {
9443
+ index = haystack.indexOf(needle, index + term.length);
9444
+ while (index !== -1) {
9445
+ spans.push([index, index + term.length]);
9446
+ index = haystack.indexOf(needle, index + term.length);
9447
+ }
9448
+ }
9449
+ }
9450
+ }
9451
+ return merge(spans);
9452
+ }
9453
+ /**
9454
+ * Splits text into matched and unmatched chunks.
9455
+ *
9456
+ * Pure transformer — returns a plain array. Wrap the call in `computed()` for
9457
+ * reactive recomputation.
9458
+ *
9459
+ * Priority: `options.matches` (when non-empty) → `query` → no-match fallback.
9460
+ *
9461
+ * @param text The source string to split.
9462
+ * @param query One or more search terms. Empty strings are ignored. Case sensitivity controlled by `options.ignoreCase`.
9463
+ * @param options Optional `matches`, `matchAll`, `ignoreCase`.
9464
+ * @returns A `HighlightChunk[]` array.
9465
+ *
9466
+ * @see https://0.vuetifyjs.com/composables/transformers/to-highlight
9467
+ *
9468
+ * @example
9469
+ * ```ts
9470
+ * import { computed, shallowRef } from 'vue'
9471
+ * import { toHighlight } from '@vuetify/v0'
9472
+ *
9473
+ * const query = shallowRef('World')
9474
+ * const chunks = computed(() => toHighlight('Hello World', query))
9475
+ *
9476
+ * console.log(chunks.value)
9477
+ * // [{ text: 'Hello ', match: false }, { text: 'World', match: true }]
9478
+ * ```
9479
+ */
9480
+ /* @__NO_SIDE_EFFECTS__ */
9481
+ function toHighlight(text, query, options = {}) {
9482
+ const _text = toValue(text);
9483
+ const _query = toValue(query);
9484
+ const _matches = toValue(options.matches);
9485
+ const matchAll = toValue(options.matchAll) ?? false;
9486
+ const ignoreCase = toValue(options.ignoreCase) ?? false;
9487
+ if (_matches?.length) return chunk(_text, merge(_matches));
9488
+ if (_query) {
9489
+ const ranges = find(_text, _query, matchAll, ignoreCase);
9490
+ return ranges.length > 0 ? chunk(_text, ranges) : [{
9491
+ text: _text,
9492
+ match: false
9493
+ }];
9494
+ }
9495
+ return [{
9496
+ text: _text,
9497
+ match: false
9498
+ }];
9499
+ }
9500
+ //#endregion
9110
9501
  //#region src/composables/toReactive/index.ts
9111
9502
  /**
9112
9503
  * @module toReactive
@@ -11976,7 +12367,7 @@ function createNotifications(options = {}) {
11976
12367
  *
11977
12368
  * notifications.readAll()
11978
12369
  *
11979
- * console.log(notifications.values().every(t => t.readAt !== null)) // true
12370
+ * console.log(notifications.values().every(t => !isNull(t.readAt))) // true
11980
12371
  * ```
11981
12372
  */
11982
12373
  function readAll() {
@@ -12005,7 +12396,7 @@ function createNotifications(options = {}) {
12005
12396
  *
12006
12397
  * notifications.archiveAll()
12007
12398
  *
12008
- * console.log(notifications.values().every(t => t.archivedAt !== null)) // true
12399
+ * console.log(notifications.values().every(t => !isNull(t.archivedAt))) // true
12009
12400
  * ```
12010
12401
  */
12011
12402
  function archiveAll() {
@@ -14526,7 +14917,7 @@ const _sfc_main$19 = /* @__PURE__ */ defineComponent({
14526
14917
  const firstDividerWidth = shallowRef(0);
14527
14918
  const overflow = createOverflow({
14528
14919
  container: () => containerRef.value?.element,
14529
- gap: __props.gap,
14920
+ gap: () => __props.gap,
14530
14921
  reserved: () => {
14531
14922
  let r = 0;
14532
14923
  if (firstItemWidth.value > 0) r += firstItemWidth.value + __props.gap;
@@ -19278,11 +19669,11 @@ const _sfc_main$74 = /* @__PURE__ */ defineComponent({
19278
19669
  name: __props.name,
19279
19670
  form: __props.form,
19280
19671
  required: __props.required,
19281
- disabled: __props.disabled,
19282
- readonly: __props.readonly,
19672
+ disabled: () => toValue(__props.disabled),
19673
+ readonly: () => toValue(__props.readonly),
19283
19674
  rules: __props.rules,
19284
- error: __props.error,
19285
- errorMessages: __props.errorMessages
19675
+ error: () => toValue(__props.error),
19676
+ errorMessages: () => toValue(__props.errorMessages)
19286
19677
  });
19287
19678
  const parsed = toRef(() => parseValidateOn$1(__props.validateOn));
19288
19679
  function shouldValidate(trigger) {
@@ -19756,8 +20147,8 @@ const _sfc_main$81 = /* @__PURE__ */ defineComponent({
19756
20147
  locale: __props.locale,
19757
20148
  format: __props.format,
19758
20149
  clamp: __props.clamp,
19759
- disabled: __props.disabled,
19760
- readonly: __props.readonly,
20150
+ disabled: () => toValue(__props.disabled),
20151
+ readonly: () => toValue(__props.readonly),
19761
20152
  min: __props.min,
19762
20153
  max: __props.max,
19763
20154
  step: __props.step,
@@ -24075,10 +24466,10 @@ const _sfc_main$127 = /* @__PURE__ */ defineComponent({
24075
24466
  min: __props.min,
24076
24467
  max: __props.max,
24077
24468
  step: __props.step,
24078
- disabled: __props.disabled,
24079
- readonly: __props.readonly,
24080
- orientation: __props.orientation,
24081
- inverted: __props.inverted,
24469
+ disabled: () => toValue(__props.disabled),
24470
+ readonly: () => toValue(__props.readonly),
24471
+ orientation: () => toValue(__props.orientation),
24472
+ inverted: () => toValue(__props.inverted),
24082
24473
  minStepsBetweenThumbs: __props.minStepsBetweenThumbs,
24083
24474
  crossover: __props.crossover
24084
24475
  });
@@ -27783,4 +28174,4 @@ const Treeview = {
27783
28174
  SelectAll: _sfc_main$163
27784
28175
  };
27785
28176
  //#endregion
27786
- export { AlertDialog, _sfc_main as AlertDialogAction, _sfc_main$1 as AlertDialogActivator, _sfc_main$2 as AlertDialogCancel, _sfc_main$3 as AlertDialogClose, _sfc_main$4 as AlertDialogContent, _sfc_main$5 as AlertDialogDescription, _sfc_main$6 as AlertDialogRoot, _sfc_main$7 as AlertDialogTitle, _sfc_main$8 as AspectRatio, _sfc_main$9 as Atom, Avatar, _sfc_main$10 as AvatarFallback, _sfc_main$11 as AvatarImage, _sfc_main$12 as AvatarRoot, Breadcrumbs, _sfc_main$13 as BreadcrumbsDivider, _sfc_main$14 as BreadcrumbsEllipsis, _sfc_main$15 as BreadcrumbsItem, _sfc_main$16 as BreadcrumbsLink, _sfc_main$17 as BreadcrumbsList, _sfc_main$18 as BreadcrumbsPage, _sfc_main$19 as BreadcrumbsRoot, Button, _sfc_main$20 as ButtonContent, _sfc_main$21 as ButtonGroup, _sfc_main$22 as ButtonHiddenInput, _sfc_main$23 as ButtonIcon, _sfc_main$24 as ButtonLoading, _sfc_main$25 as ButtonRoot, Carousel, _sfc_main$26 as CarouselIndicator, _sfc_main$27 as CarouselItem, _sfc_main$28 as CarouselLiveRegion, _sfc_main$29 as CarouselNext, _sfc_main$30 as CarouselPrevious, _sfc_main$31 as CarouselProgress, _sfc_main$32 as CarouselRoot, _sfc_main$33 as CarouselViewport, Checkbox, _sfc_main$34 as CheckboxGroup, _sfc_main$35 as CheckboxHiddenInput, _sfc_main$36 as CheckboxIndicator, _sfc_main$37 as CheckboxRoot, _sfc_main$38 as CheckboxSelectAll, ClientComboboxAdapter, ClientDataTableAdapter, Collapsible, _sfc_main$39 as CollapsibleActivator, _sfc_main$40 as CollapsibleContent, _sfc_main$41 as CollapsibleCue, _sfc_main$42 as CollapsibleRoot, Combobox, _sfc_main$43 as ComboboxActivator, ComboboxAdapter, _sfc_main$44 as ComboboxContent, _sfc_main$45 as ComboboxControl, _sfc_main$46 as ComboboxCue, _sfc_main$47 as ComboboxDescription, _sfc_main$48 as ComboboxEmpty, _sfc_main$49 as ComboboxError, _sfc_main$50 as ComboboxItem, _sfc_main$51 as ComboboxRoot, ConsolaLoggerAdapter, DataTableAdapter, Dialog, _sfc_main$52 as DialogActivator, _sfc_main$53 as DialogClose, _sfc_main$54 as DialogContent, _sfc_main$55 as DialogDescription, _sfc_main$56 as DialogRoot, _sfc_main$57 as DialogTitle, DragDropAdapter, ExpansionPanel, _sfc_main$58 as ExpansionPanelActivator, _sfc_main$59 as ExpansionPanelContent, _sfc_main$60 as ExpansionPanelCue, _sfc_main$61 as ExpansionPanelGroup, _sfc_main$62 as ExpansionPanelHeader, _sfc_main$63 as ExpansionPanelRoot, FeaturesAdapter, _sfc_main$64 as Form, Group, _sfc_main$65 as GroupItem, _sfc_main$66 as GroupRoot, IN_BROWSER, Image, _sfc_main$67 as ImageFallback, _sfc_main$68 as ImageImg, _sfc_main$69 as ImagePlaceholder, _sfc_main$70 as ImageRoot, Input, _sfc_main$71 as InputControl, _sfc_main$72 as InputDescription, _sfc_main$73 as InputError, _sfc_main$74 as InputRoot, KeyboardAdapter, _sfc_main$75 as Locale, LocaleAdapter, LoggerAdapter, MemoryStorageAdapter, NumberField, _sfc_main$76 as NumberFieldControl, _sfc_main$77 as NumberFieldDecrement, _sfc_main$78 as NumberFieldDescription, _sfc_main$79 as NumberFieldError, _sfc_main$80 as NumberFieldIncrement, _sfc_main$81 as NumberFieldRoot, _sfc_main$82 as NumberFieldScrub, Overflow, _sfc_main$83 as OverflowIndicator, _sfc_main$84 as OverflowItem, _sfc_main$85 as OverflowRoot, Pagination, _sfc_main$86 as PaginationEllipsis, _sfc_main$87 as PaginationFirst, _sfc_main$88 as PaginationItem, _sfc_main$89 as PaginationLast, _sfc_main$90 as PaginationNext, _sfc_main$91 as PaginationPrev, _sfc_main$92 as PaginationRoot, _sfc_main$93 as PaginationStatus, PermissionsAdapter, PinoLoggerAdapter, PointerAdapter, Popover, _sfc_main$94 as PopoverActivator, _sfc_main$95 as PopoverContent, _sfc_main$96 as PopoverRoot, _sfc_main$97 as Portal, _sfc_main$98 as Presence, Progress, _sfc_main$99 as ProgressBuffer, _sfc_main$100 as ProgressFill, _sfc_main$101 as ProgressHiddenInput, _sfc_main$102 as ProgressLabel, _sfc_main$103 as ProgressRoot, _sfc_main$104 as ProgressTrack, _sfc_main$105 as ProgressValue, Radio, _sfc_main$106 as RadioGroup, _sfc_main$107 as RadioHiddenInput, _sfc_main$108 as RadioIndicator, _sfc_main$109 as RadioRoot, Rating, _sfc_main$110 as RatingHiddenInput, _sfc_main$111 as RatingItem, _sfc_main$112 as RatingRoot, SELF_CLOSING_TAGS, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MATCH_MEDIA, SUPPORTS_MUTATION_OBSERVER, SUPPORTS_OBSERVER, SUPPORTS_TOUCH, _sfc_main$113 as Scrim, Select, _sfc_main$114 as SelectActivator, _sfc_main$115 as SelectContent, _sfc_main$116 as SelectCue, _sfc_main$117 as SelectItem, _sfc_main$118 as SelectPlaceholder, _sfc_main$119 as SelectRoot, _sfc_main$120 as SelectValue, Selection, _sfc_main$121 as SelectionItem, _sfc_main$122 as SelectionRoot, ServerComboboxAdapter, ServerDataTableAdapter, Single, _sfc_main$123 as SingleItem, _sfc_main$124 as SingleRoot, Slider, _sfc_main$125 as SliderHiddenInput, _sfc_main$126 as SliderRange, _sfc_main$127 as SliderRoot, _sfc_main$128 as SliderThumb, _sfc_main$129 as SliderTrack, Snackbar, _sfc_main$130 as SnackbarClose, _sfc_main$131 as SnackbarContent, _sfc_main$132 as SnackbarPortal, _sfc_main$133 as SnackbarQueue, _sfc_main$134 as SnackbarRoot, Splitter, _sfc_main$135 as SplitterHandle, _sfc_main$136 as SplitterPanel, _sfc_main$137 as SplitterRoot, Step, _sfc_main$138 as StepItem, _sfc_main$139 as StepRoot, StorageAdapter, Switch, _sfc_main$140 as SwitchGroup, _sfc_main$141 as SwitchHiddenInput, _sfc_main$142 as SwitchRoot, _sfc_main$143 as SwitchSelectAll, _sfc_main$144 as SwitchThumb, _sfc_main$145 as SwitchTrack, Tabs, _sfc_main$146 as TabsItem, _sfc_main$147 as TabsList, _sfc_main$148 as TabsPanel, _sfc_main$149 as TabsRoot, _sfc_main$150 as Theme, Toggle, _sfc_main$151 as ToggleGroup, _sfc_main$152 as ToggleIndicator, _sfc_main$153 as ToggleRoot, Treeview, _sfc_main$154 as TreeviewActivator, _sfc_main$155 as TreeviewCheckbox, _sfc_main$156 as TreeviewContent, _sfc_main$157 as TreeviewCue, _sfc_main$158 as TreeviewGroup, _sfc_main$159 as TreeviewIndicator, _sfc_main$160 as TreeviewItem, _sfc_main$161 as TreeviewList, _sfc_main$162 as TreeviewRoot, _sfc_main$163 as TreeviewSelectAll, V0LocaleAdapter, V0LoggerAdapter, V0RtlAdapter, V0StyleSheetThemeAdapter, V0UnheadThemeAdapter, VirtualDataTableAdapter, __LOGGER_ENABLED__, apca, clamp, computeDepth, createBreadcrumbs, createBreadcrumbsContext, createBreakpoints, createBreakpointsContext, createBreakpointsPlugin, createCombobox, createComboboxContext, createContext, createDataTable, createDataTableContext, createDate, createDateContext, createDatePlugin, createFallbackHydration, createFeatures, createFeaturesContext, createFeaturesPlugin, createFilter, createFilterContext, createForm, createFormContext, createGroup, createGroupContext, createHydration, createHydrationContext, createHydrationPlugin, createInput, createKanban, createLocale, createLocaleContext, createLocaleFallback, createLocalePlugin, createLogger, createLoggerContext, createLoggerPlugin, createModel, createNested, createNestedContext, createNotifications, createNotificationsContext, createNotificationsPlugin, createNumberField, createNumeric, createOverflow, createOverflowContext, createPagination, createPaginationContext, createPermissions, createPermissionsContext, createPermissionsPlugin, createPlugin, createPluginContext, createProgress, createProgressContext, createQueue, createQueueContext, createRating, createRatingContext, createRegistry, createRegistryContext, createRtl, createRtlContext, createRtlFallback, createRtlPlugin, createRules, createRulesContext, createRulesFallback, createRulesPlugin, createSelection, createSelectionContext, createSingle, createSingleContext, createSlider, createSortable, createStack, createStackContext, createStackPlugin, createStep, createStepContext, createStorage, createStorageContext, createStoragePlugin, createTheme, createThemeContext, createThemePlugin, createTimeline, createTimelineContext, createTokens, createTokensContext, createTrinity, createValidation, createVirtual, createVirtualContext, extractLeaves, flatten, foreground, hexToRgb, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isSelfClosingTag, isStandardSchema, isString, isSymbol, isThenable, isUndefined, mergeDeep, provideAlertDialogContext, provideAvatarRoot, provideBreadcrumbsRoot, provideButtonGroup, provideButtonRoot, provideCarouselRoot, provideCheckboxGroup, provideCheckboxRoot, provideCollapsible, provideComboboxContext, provideContext, provideDialogContext, provideExpansionPanelGroup, provideExpansionPanelRoot, provideGroupRoot, provideImageRoot, provideInputRoot, provideNumberFieldRoot, provideOverflowRoot, providePaginationControls, providePaginationItems, providePaginationRoot, providePopoverContext, provideProgressRoot, provideRadioGroup, provideRadioRoot, provideRatingRoot, provideSelectContext, provideSelectionRoot, provideSingleRoot, provideSliderRoot, provideSnackbarQueueContext, provideSnackbarRootContext, provideSplitterRoot, provideStepRoot, provideSwitchGroup, provideSwitchRoot, provideTabsRoot, provideToggleGroup, provideToggleRoot, provideTreeviewItem, provideTreeviewList, provideTreeviewRoot, range, resolveHeaders, resolveIds, resolveIndexes, rgbToHex, toArray, toElement, toReactive, useAlertDialogContext, useAvatarRoot, useBreadcrumbs, useBreadcrumbsRoot, useBreakpoints, useButtonGroup, useButtonRoot, useCarouselRoot, useCheckboxGroup, useCheckboxRoot, useClickOutside, useCollapsible, useCombobox, useComboboxContext, useContext, useDataTable, useDate, useDelay, useDialogContext, useDocumentEventListener, useDragDrop, useElementIntersection, useElementSize, useEventListener, useExpansionPanelGroup, useExpansionPanelRoot, useFeatures, useFilter, useForm, useGroup, useGroupRoot, useHotkey, useHydration, useId, useImage, useImageRoot, useInputRoot, useIntersectionObserver, useLazy, useLocale, useLogger, useMediaQuery, useMutationObserver, useNested, useNotifications, useNumberFieldRoot, useOverflow, useOverflowRoot, usePagination, usePaginationControls, usePaginationItems, usePaginationRoot, usePermissions, usePopover, usePopoverContext, usePrefersContrast, usePrefersDark, usePrefersReducedMotion, usePresence, useProgress, useProgressRoot, useProxyModel, useProxyRegistry, useQueue, useRadioGroup, useRadioRoot, useRaf, useRating, useRatingRoot, useRegistry, useResizeObserver, useRovingFocus, useRtl, useRules, useSelectContext, useSelection, useSelectionRoot, useSingle, useSingleRoot, useSliderRoot, useSnackbarQueueContext, useSnackbarRootContext, useSplitterRoot, useStack, useStep, useStepRoot, useStorage, useSwitchGroup, useSwitchRoot, useTabsRoot, useTheme, useTimeline, useTimer, useToggleGroup, useToggleRoot, useToggleScope, useTokens, useTreeviewItem, useTreeviewList, useTreeviewRoot, useVirtual, useVirtualFocus, useWindowEventListener, version };
28177
+ export { AlertDialog, _sfc_main as AlertDialogAction, _sfc_main$1 as AlertDialogActivator, _sfc_main$2 as AlertDialogCancel, _sfc_main$3 as AlertDialogClose, _sfc_main$4 as AlertDialogContent, _sfc_main$5 as AlertDialogDescription, _sfc_main$6 as AlertDialogRoot, _sfc_main$7 as AlertDialogTitle, _sfc_main$8 as AspectRatio, _sfc_main$9 as Atom, Avatar, _sfc_main$10 as AvatarFallback, _sfc_main$11 as AvatarImage, _sfc_main$12 as AvatarRoot, Breadcrumbs, _sfc_main$13 as BreadcrumbsDivider, _sfc_main$14 as BreadcrumbsEllipsis, _sfc_main$15 as BreadcrumbsItem, _sfc_main$16 as BreadcrumbsLink, _sfc_main$17 as BreadcrumbsList, _sfc_main$18 as BreadcrumbsPage, _sfc_main$19 as BreadcrumbsRoot, Button, _sfc_main$20 as ButtonContent, _sfc_main$21 as ButtonGroup, _sfc_main$22 as ButtonHiddenInput, _sfc_main$23 as ButtonIcon, _sfc_main$24 as ButtonLoading, _sfc_main$25 as ButtonRoot, Carousel, _sfc_main$26 as CarouselIndicator, _sfc_main$27 as CarouselItem, _sfc_main$28 as CarouselLiveRegion, _sfc_main$29 as CarouselNext, _sfc_main$30 as CarouselPrevious, _sfc_main$31 as CarouselProgress, _sfc_main$32 as CarouselRoot, _sfc_main$33 as CarouselViewport, Checkbox, _sfc_main$34 as CheckboxGroup, _sfc_main$35 as CheckboxHiddenInput, _sfc_main$36 as CheckboxIndicator, _sfc_main$37 as CheckboxRoot, _sfc_main$38 as CheckboxSelectAll, ClientComboboxAdapter, ClientDataTableAdapter, Collapsible, _sfc_main$39 as CollapsibleActivator, _sfc_main$40 as CollapsibleContent, _sfc_main$41 as CollapsibleCue, _sfc_main$42 as CollapsibleRoot, Combobox, _sfc_main$43 as ComboboxActivator, ComboboxAdapter, _sfc_main$44 as ComboboxContent, _sfc_main$45 as ComboboxControl, _sfc_main$46 as ComboboxCue, _sfc_main$47 as ComboboxDescription, _sfc_main$48 as ComboboxEmpty, _sfc_main$49 as ComboboxError, _sfc_main$50 as ComboboxItem, _sfc_main$51 as ComboboxRoot, ConsolaLoggerAdapter, DataTableAdapter, Dialog, _sfc_main$52 as DialogActivator, _sfc_main$53 as DialogClose, _sfc_main$54 as DialogContent, _sfc_main$55 as DialogDescription, _sfc_main$56 as DialogRoot, _sfc_main$57 as DialogTitle, DragDropAdapter, ExpansionPanel, _sfc_main$58 as ExpansionPanelActivator, _sfc_main$59 as ExpansionPanelContent, _sfc_main$60 as ExpansionPanelCue, _sfc_main$61 as ExpansionPanelGroup, _sfc_main$62 as ExpansionPanelHeader, _sfc_main$63 as ExpansionPanelRoot, FeaturesAdapter, _sfc_main$64 as Form, Group, _sfc_main$65 as GroupItem, _sfc_main$66 as GroupRoot, IN_BROWSER, Image, _sfc_main$67 as ImageFallback, _sfc_main$68 as ImageImg, _sfc_main$69 as ImagePlaceholder, _sfc_main$70 as ImageRoot, Input, _sfc_main$71 as InputControl, _sfc_main$72 as InputDescription, _sfc_main$73 as InputError, _sfc_main$74 as InputRoot, KeyboardAdapter, _sfc_main$75 as Locale, LocaleAdapter, LoggerAdapter, MemoryStorageAdapter, NumberField, _sfc_main$76 as NumberFieldControl, _sfc_main$77 as NumberFieldDecrement, _sfc_main$78 as NumberFieldDescription, _sfc_main$79 as NumberFieldError, _sfc_main$80 as NumberFieldIncrement, _sfc_main$81 as NumberFieldRoot, _sfc_main$82 as NumberFieldScrub, Overflow, _sfc_main$83 as OverflowIndicator, _sfc_main$84 as OverflowItem, _sfc_main$85 as OverflowRoot, Pagination, _sfc_main$86 as PaginationEllipsis, _sfc_main$87 as PaginationFirst, _sfc_main$88 as PaginationItem, _sfc_main$89 as PaginationLast, _sfc_main$90 as PaginationNext, _sfc_main$91 as PaginationPrev, _sfc_main$92 as PaginationRoot, _sfc_main$93 as PaginationStatus, PermissionsAdapter, PinoLoggerAdapter, PointerAdapter, Popover, _sfc_main$94 as PopoverActivator, _sfc_main$95 as PopoverContent, _sfc_main$96 as PopoverRoot, _sfc_main$97 as Portal, _sfc_main$98 as Presence, Progress, _sfc_main$99 as ProgressBuffer, _sfc_main$100 as ProgressFill, _sfc_main$101 as ProgressHiddenInput, _sfc_main$102 as ProgressLabel, _sfc_main$103 as ProgressRoot, _sfc_main$104 as ProgressTrack, _sfc_main$105 as ProgressValue, Radio, _sfc_main$106 as RadioGroup, _sfc_main$107 as RadioHiddenInput, _sfc_main$108 as RadioIndicator, _sfc_main$109 as RadioRoot, Rating, _sfc_main$110 as RatingHiddenInput, _sfc_main$111 as RatingItem, _sfc_main$112 as RatingRoot, SELF_CLOSING_TAGS, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MATCH_MEDIA, SUPPORTS_MUTATION_OBSERVER, SUPPORTS_OBSERVER, SUPPORTS_TOUCH, _sfc_main$113 as Scrim, Select, _sfc_main$114 as SelectActivator, _sfc_main$115 as SelectContent, _sfc_main$116 as SelectCue, _sfc_main$117 as SelectItem, _sfc_main$118 as SelectPlaceholder, _sfc_main$119 as SelectRoot, _sfc_main$120 as SelectValue, Selection, _sfc_main$121 as SelectionItem, _sfc_main$122 as SelectionRoot, ServerComboboxAdapter, ServerDataTableAdapter, Single, _sfc_main$123 as SingleItem, _sfc_main$124 as SingleRoot, Slider, _sfc_main$125 as SliderHiddenInput, _sfc_main$126 as SliderRange, _sfc_main$127 as SliderRoot, _sfc_main$128 as SliderThumb, _sfc_main$129 as SliderTrack, Snackbar, _sfc_main$130 as SnackbarClose, _sfc_main$131 as SnackbarContent, _sfc_main$132 as SnackbarPortal, _sfc_main$133 as SnackbarQueue, _sfc_main$134 as SnackbarRoot, Splitter, _sfc_main$135 as SplitterHandle, _sfc_main$136 as SplitterPanel, _sfc_main$137 as SplitterRoot, Step, _sfc_main$138 as StepItem, _sfc_main$139 as StepRoot, StorageAdapter, Switch, _sfc_main$140 as SwitchGroup, _sfc_main$141 as SwitchHiddenInput, _sfc_main$142 as SwitchRoot, _sfc_main$143 as SwitchSelectAll, _sfc_main$144 as SwitchThumb, _sfc_main$145 as SwitchTrack, Tabs, _sfc_main$146 as TabsItem, _sfc_main$147 as TabsList, _sfc_main$148 as TabsPanel, _sfc_main$149 as TabsRoot, _sfc_main$150 as Theme, Toggle, _sfc_main$151 as ToggleGroup, _sfc_main$152 as ToggleIndicator, _sfc_main$153 as ToggleRoot, Treeview, _sfc_main$154 as TreeviewActivator, _sfc_main$155 as TreeviewCheckbox, _sfc_main$156 as TreeviewContent, _sfc_main$157 as TreeviewCue, _sfc_main$158 as TreeviewGroup, _sfc_main$159 as TreeviewIndicator, _sfc_main$160 as TreeviewItem, _sfc_main$161 as TreeviewList, _sfc_main$162 as TreeviewRoot, _sfc_main$163 as TreeviewSelectAll, V0LocaleAdapter, V0LoggerAdapter, V0RtlAdapter, V0StyleSheetThemeAdapter, V0UnheadThemeAdapter, VirtualDataTableAdapter, __LOGGER_ENABLED__, apca, clamp, computeDepth, createBreadcrumbs, createBreadcrumbsContext, createBreakpoints, createBreakpointsContext, createBreakpointsPlugin, createCombobox, createComboboxContext, createContext, createDataTable, createDataTableContext, createDate, createDateContext, createDatePlugin, createFallbackHydration, createFeatures, createFeaturesContext, createFeaturesPlugin, createFilter, createFilterContext, createForm, createFormContext, createGroup, createGroupContext, createHydration, createHydrationContext, createHydrationPlugin, createInput, createKanban, createLocale, createLocaleContext, createLocaleFallback, createLocalePlugin, createLogger, createLoggerContext, createLoggerPlugin, createModel, createNested, createNestedContext, createNotifications, createNotificationsContext, createNotificationsPlugin, createNumberField, createNumeric, createOtp, createOverflow, createOverflowContext, createPagination, createPaginationContext, createPermissions, createPermissionsContext, createPermissionsPlugin, createPlugin, createPluginContext, createProgress, createProgressContext, createQueue, createQueueContext, createRating, createRatingContext, createRegistry, createRegistryContext, createRtl, createRtlContext, createRtlFallback, createRtlPlugin, createRules, createRulesContext, createRulesFallback, createRulesPlugin, createSelection, createSelectionContext, createSingle, createSingleContext, createSlider, createSortable, createStack, createStackContext, createStackPlugin, createStep, createStepContext, createStorage, createStorageContext, createStoragePlugin, createTheme, createThemeContext, createThemePlugin, createTimeline, createTimelineContext, createTokens, createTokensContext, createTrinity, createValidation, createVirtual, createVirtualContext, extractLeaves, flatten, foreground, hexToRgb, instanceExists, instanceName, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isObject, isPrimitive, isSelfClosingTag, isStandardSchema, isString, isSymbol, isThenable, isUndefined, mergeDeep, provideAlertDialogContext, provideAvatarRoot, provideBreadcrumbsRoot, provideButtonGroup, provideButtonRoot, provideCarouselRoot, provideCheckboxGroup, provideCheckboxRoot, provideCollapsible, provideComboboxContext, provideContext, provideDialogContext, provideExpansionPanelGroup, provideExpansionPanelRoot, provideGroupRoot, provideImageRoot, provideInputRoot, provideNumberFieldRoot, provideOverflowRoot, providePaginationControls, providePaginationItems, providePaginationRoot, providePopoverContext, provideProgressRoot, provideRadioGroup, provideRadioRoot, provideRatingRoot, provideSelectContext, provideSelectionRoot, provideSingleRoot, provideSliderRoot, provideSnackbarQueueContext, provideSnackbarRootContext, provideSplitterRoot, provideStepRoot, provideSwitchGroup, provideSwitchRoot, provideTabsRoot, provideToggleGroup, provideToggleRoot, provideTreeviewItem, provideTreeviewList, provideTreeviewRoot, range, resolveHeaders, resolveIds, resolveIndexes, rgbToHex, toArray, toElement, toHighlight, toReactive, useAlertDialogContext, useAvatarRoot, useBreadcrumbs, useBreadcrumbsRoot, useBreakpoints, useButtonGroup, useButtonRoot, useCarouselRoot, useCheckboxGroup, useCheckboxRoot, useClickOutside, useCollapsible, useCombobox, useComboboxContext, useContext, useDataTable, useDate, useDelay, useDialogContext, useDocumentEventListener, useDragDrop, useElementIntersection, useElementSize, useEventListener, useExpansionPanelGroup, useExpansionPanelRoot, useFeatures, useFilter, useForm, useGroup, useGroupRoot, useHotkey, useHydration, useId, useImage, useImageRoot, useInputRoot, useIntersectionObserver, useLazy, useLocale, useLogger, useMediaQuery, useMutationObserver, useNested, useNotifications, useNumberFieldRoot, useOverflow, useOverflowRoot, usePagination, usePaginationControls, usePaginationItems, usePaginationRoot, usePermissions, usePopover, usePopoverContext, usePrefersContrast, usePrefersDark, usePrefersReducedMotion, usePresence, useProgress, useProgressRoot, useProxyModel, useProxyRegistry, useQueue, useRadioGroup, useRadioRoot, useRaf, useRating, useRatingRoot, useRegistry, useResizeObserver, useRovingFocus, useRtl, useRules, useSelectContext, useSelection, useSelectionRoot, useSingle, useSingleRoot, useSliderRoot, useSnackbarQueueContext, useSnackbarRootContext, useSplitterRoot, useStack, useStep, useStepRoot, useStorage, useSwitchGroup, useSwitchRoot, useTabsRoot, useTheme, useTimeline, useTimer, useToggleGroup, useToggleRoot, useToggleScope, useTokens, useTreeviewItem, useTreeviewList, useTreeviewRoot, useVirtual, useVirtualFocus, useWindowEventListener, version };