@vuetify/v0 1.2.0 → 1.2.1

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 (96) hide show
  1. package/README.md +5 -0
  2. package/dist/{adapter-CqS8xexO.d.mts → adapter-FckJSz_o.d.mts} +1 -1
  3. package/dist/browser/index.d.ts +155 -97
  4. package/dist/browser/index.js +148 -63
  5. package/dist/components/index.d.mts +1 -1
  6. package/dist/components/index.mjs +1 -1
  7. package/dist/{components-DBhVg-t1.mjs → components-MCFhfNlt.mjs} +56 -38
  8. package/dist/composables/index.d.mts +7 -7
  9. package/dist/composables/index.mjs +23 -23
  10. package/dist/{composables-ZGhVN2EJ.mjs → composables-8xtFVviy.mjs} +7 -7
  11. package/dist/constants/index.mjs +1 -1
  12. package/dist/{createDataTable-VmQEDn-7.mjs → createDataTable-OCGnpy-N.mjs} +4 -4
  13. package/dist/{createGroup-B_LL7xRr.mjs → createGroup-DtVYu-VY.mjs} +13 -2
  14. package/dist/{createRegistry-DVdvep0v.mjs → createRegistry-DSQiALGi.mjs} +3 -3
  15. package/dist/{createSelection-BNdDz8oY.mjs → createSelection-TB5oK1FG.mjs} +2 -1
  16. package/dist/{createSingle-DHyIQ9Cj.mjs → createSingle-CV1qigP2.mjs} +1 -1
  17. package/dist/{createTokens-DoISbwd7.mjs → createTokens-B0CqJEL6.mjs} +2 -2
  18. package/dist/data-table/index.d.mts +1 -1
  19. package/dist/data-table/index.mjs +1 -1
  20. package/dist/date/index.mjs +1 -1
  21. package/dist/features/adapters/posthog/index.mjs +1 -1
  22. package/dist/features/index.d.mts +1 -1
  23. package/dist/features/index.mjs +1 -1
  24. package/dist/{globals-DaoKtIGF.mjs → globals-wvVdMRFF.mjs} +1 -1
  25. package/dist/{index-Di9e8sOm.d.mts → index-3bThcqCN.d.mts} +2 -2
  26. package/dist/{index-D0ub61GV.d.mts → index-3vvA76pZ.d.mts} +1 -1
  27. package/dist/{index-DSPkZ0ql.d.mts → index-4Z38WhA9.d.mts} +7 -1
  28. package/dist/{index-Cm6CbqI6.d.mts → index-BTdCsSz0.d.mts} +25 -18
  29. package/dist/{index-DjRE4lLl.d.mts → index-CORslci7.d.mts} +17 -4
  30. package/dist/{index-Cx0cWGlx.d.mts → index-Dgkt7Ve9.d.mts} +43 -11
  31. package/dist/index.d.mts +8 -8
  32. package/dist/index.mjs +25 -25
  33. package/dist/json/attributes.json +14 -2
  34. package/dist/json/tags.json +3 -0
  35. package/dist/json/web-types.json +32 -3
  36. package/dist/locale/adapters/index.d.mts +2 -2
  37. package/dist/locale/adapters/index.mjs +1 -1
  38. package/dist/locale/adapters/v0/index.d.mts +1 -1
  39. package/dist/locale/adapters/v0/index.mjs +1 -1
  40. package/dist/locale/adapters/vue-i18n/index.d.mts +1 -1
  41. package/dist/locale/index.d.mts +3 -3
  42. package/dist/locale/index.mjs +2 -2
  43. package/dist/locale/messages/en/index.d.mts +3 -0
  44. package/dist/locale/messages/en/index.mjs +1 -0
  45. package/dist/logger/adapters/index.mjs +1 -1
  46. package/dist/logger/adapters/v0/index.mjs +1 -1
  47. package/dist/logger/index.d.mts +1 -1
  48. package/dist/logger/index.mjs +2 -2
  49. package/dist/notifications/index.d.mts +1 -1
  50. package/dist/notifications/index.mjs +2 -2
  51. package/dist/palettes/ant/index.d.mts +1 -1
  52. package/dist/palettes/index.d.mts +2 -2
  53. package/dist/palettes/material/index.d.mts +1 -1
  54. package/dist/palettes/md1/index.d.mts +1 -1
  55. package/dist/palettes/md2/index.d.mts +1 -1
  56. package/dist/palettes/radix/index.d.mts +1 -1
  57. package/dist/palettes/tailwind/index.d.mts +1 -1
  58. package/dist/permissions/adapters/index.d.mts +1 -1
  59. package/dist/permissions/adapters/v0/index.d.mts +1 -1
  60. package/dist/permissions/index.d.mts +1 -1
  61. package/dist/permissions/index.mjs +1 -1
  62. package/dist/popover/adapters/floating-ui/index.mjs +1 -1
  63. package/dist/popover/index.d.mts +1 -1
  64. package/dist/popover/index.mjs +1 -1
  65. package/dist/rules/index.d.mts +1 -1
  66. package/dist/rules/index.mjs +1 -1
  67. package/dist/storage/index.d.mts +1 -1
  68. package/dist/storage/index.mjs +1 -1
  69. package/dist/theme/adapters/index.d.mts +1 -1
  70. package/dist/theme/adapters/index.mjs +2 -2
  71. package/dist/theme/adapters/unhead/index.d.mts +1 -1
  72. package/dist/theme/adapters/unhead/index.mjs +1 -1
  73. package/dist/theme/adapters/v0/index.d.mts +1 -1
  74. package/dist/theme/adapters/v0/index.mjs +1 -1
  75. package/dist/theme/index.d.mts +1 -1
  76. package/dist/theme/index.mjs +3 -3
  77. package/dist/{unhead-C8zbWr45.mjs → unhead-SyU953Pt.mjs} +1 -1
  78. package/dist/{useEventListener-2eAMwUdw.mjs → useEventListener-hF6R2p6X.mjs} +1 -1
  79. package/dist/{useFeatures-DLafCOWt.mjs → useFeatures-CTpkM6hV.mjs} +2 -2
  80. package/dist/{useLocale-K_45ulPt.mjs → useLocale-D-iWu08b.mjs} +3 -3
  81. package/dist/{useLogger-YyWuYvrH.mjs → useLogger-CDsgHbzO.mjs} +2 -2
  82. package/dist/{useNotifications-Kh_KvM7j.mjs → useNotifications-DhNjvRt1.mjs} +2 -2
  83. package/dist/{usePermissions-BCGwsOES.mjs → usePermissions-CKe8xcvz.mjs} +1 -1
  84. package/dist/{usePopover-BTo0AGIQ.mjs → usePopover-DyAdne_S.mjs} +10 -9
  85. package/dist/{useRovingFocus-CkRnVmJ1.mjs → useRovingFocus-D0OOozbe.mjs} +54 -29
  86. package/dist/{useRules-BuE5ffOJ.mjs → useRules-DA8bNhNq.mjs} +2 -2
  87. package/dist/{useStorage-BT8-mjVs.mjs → useStorage-D9c6xx4N.mjs} +3 -3
  88. package/dist/{useTheme-DkK6tPqY.mjs → useTheme-BrXA5VBp.mjs} +5 -5
  89. package/dist/{useTimer-CGVXk397.mjs → useTimer-DLtkRCHw.mjs} +1 -1
  90. package/dist/utilities/index.d.mts +1 -1
  91. package/dist/utilities/index.mjs +35 -12
  92. package/dist/{v0-CDW1Ktk-.d.mts → v0-C09lR5fc.d.mts} +1 -1
  93. package/dist/{v0-B_53w7Fu.mjs → v0-CaTmC7C4.mjs} +1 -1
  94. package/dist/{v0-SuxTihEe.mjs → v0-DpFVF6pD.mjs} +1 -1
  95. package/dist/{v0-D0Exc2bO.mjs → v0-cC-WxCLd.mjs} +1 -1
  96. package/package.json +1 -1
@@ -1,14 +1,14 @@
1
- import { i as SUPPORTS_MUTATION_OBSERVER, r as SUPPORTS_MATCH_MEDIA, t as IN_BROWSER } from "./globals-DaoKtIGF.mjs";
1
+ import { i as SUPPORTS_MUTATION_OBSERVER, r as SUPPORTS_MATCH_MEDIA, t as IN_BROWSER } from "./globals-wvVdMRFF.mjs";
2
2
  import { V0Error, clamp, findMatchRanges, getActiveElement, instanceExists, isArray, isBoolean, isElement, isFunction, isNaN, isNull, isNullOrUndefined, isNumber, isString, isThenable, isUndefined, mergeDeep, useId as useId$1 } from "./utilities/index.mjs";
3
3
  import { i as useContext, t as createTrinity } from "./createTrinity-z-3q9QWR.mjs";
4
4
  import { n as createPluginContext, t as createPlugin } from "./createPlugin-Oo6t-vBw.mjs";
5
- import { i as useLogger } from "./useLogger-YyWuYvrH.mjs";
6
- import { t as createRegistry } from "./createRegistry-DVdvep0v.mjs";
7
- import { a as useLocale } from "./useLocale-K_45ulPt.mjs";
5
+ import { i as useLogger } from "./useLogger-CDsgHbzO.mjs";
6
+ import { t as createRegistry } from "./createRegistry-DSQiALGi.mjs";
7
+ import { a as useLocale } from "./useLocale-D-iWu08b.mjs";
8
8
  import { t as toArray } from "./toArray-MY9Kb1Qy.mjs";
9
- import { n as useEventListener, r as useWindowEventListener } from "./useEventListener-2eAMwUdw.mjs";
10
- import { A as createSortable, I as ComboboxAdapter, X as useResizeObserver, Z as createObserver, y as createInput } from "./useRovingFocus-CkRnVmJ1.mjs";
11
- import { c as usePrefersReducedMotion, p as useHydration } from "./useTheme-DkK6tPqY.mjs";
9
+ import { n as useEventListener, r as useWindowEventListener } from "./useEventListener-hF6R2p6X.mjs";
10
+ import { A as createSortable, I as ComboboxAdapter, X as useResizeObserver, Z as createObserver, y as createInput } from "./useRovingFocus-D0OOozbe.mjs";
11
+ import { c as usePrefersReducedMotion, p as useHydration } from "./useTheme-BrXA5VBp.mjs";
12
12
  import { n as deriveWeekInfo } from "./adapter-BuSfpxur.mjs";
13
13
  import { computed, effectScope, hasInjectionContext, isRef, onScopeDispose, onWatcherCleanup, reactive, readonly, ref, shallowReadonly, shallowRef, toRef, toValue, unref, watch, watchEffect } from "vue";
14
14
  //#region src/composables/createCombobox/adapters/server.ts
@@ -1,3 +1,3 @@
1
1
  import { n as isSelfClosingTag, t as SELF_CLOSING_TAGS } from "../htmlElements-CHXZfsZu.mjs";
2
- import { a as SUPPORTS_OBSERVER, c as version, i as SUPPORTS_MUTATION_OBSERVER, n as SUPPORTS_INTERSECTION_OBSERVER, o as SUPPORTS_TOUCH, r as SUPPORTS_MATCH_MEDIA, s as __LOGGER_ENABLED__, t as IN_BROWSER } from "../globals-DaoKtIGF.mjs";
2
+ import { a as SUPPORTS_OBSERVER, c as version, i as SUPPORTS_MUTATION_OBSERVER, n as SUPPORTS_INTERSECTION_OBSERVER, o as SUPPORTS_TOUCH, r as SUPPORTS_MATCH_MEDIA, s as __LOGGER_ENABLED__, t as IN_BROWSER } from "../globals-wvVdMRFF.mjs";
3
3
  export { IN_BROWSER, SELF_CLOSING_TAGS, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MATCH_MEDIA, SUPPORTS_MUTATION_OBSERVER, SUPPORTS_OBSERVER, SUPPORTS_TOUCH, __LOGGER_ENABLED__, isSelfClosingTag, version };
@@ -1,8 +1,8 @@
1
1
  import { isNullOrUndefined } from "./utilities/index.mjs";
2
2
  import { i as useContext, t as createTrinity } from "./createTrinity-z-3q9QWR.mjs";
3
- import { t as createRegistry } from "./createRegistry-DVdvep0v.mjs";
4
- import { a as useLocale } from "./useLocale-K_45ulPt.mjs";
5
- import { i as useProxyRegistry, t as createGroup } from "./createGroup-B_LL7xRr.mjs";
3
+ import { t as createRegistry } from "./createRegistry-DSQiALGi.mjs";
4
+ import { a as useLocale } from "./useLocale-D-iWu08b.mjs";
5
+ import { i as useProxyRegistry, t as createGroup } from "./createGroup-DtVYu-VY.mjs";
6
6
  import { t as ClientDataTableAdapter } from "./v0-yZ2ZUtVF.mjs";
7
7
  import { computed, shallowReactive, shallowReadonly, shallowRef, toRef, toValue, watch } from "vue";
8
8
  //#region src/composables/createDataTable/columns.ts
@@ -178,9 +178,9 @@ function createDataTable(options = {}) {
178
178
  }
179
179
  const { selectedId: selectedLocale } = useLocale();
180
180
  const locale = toRef(() => {
181
+ if (!/* @__PURE__ */ isNullOrUndefined(initialLocale)) return initialLocale;
181
182
  const selected = selectedLocale?.value;
182
183
  if (!/* @__PURE__ */ isNullOrUndefined(selected)) return String(selected);
183
- return initialLocale;
184
184
  });
185
185
  const leaves = computed(() => /* @__PURE__ */ extractLeaves(columns.values()));
186
186
  const headers = computed(() => /* @__PURE__ */ resolveHeaders(columns.values()));
@@ -1,6 +1,6 @@
1
1
  import { resolveIds, resolveIndexes, useId as useId$1 } from "./utilities/index.mjs";
2
2
  import { i as useContext, t as createTrinity } from "./createTrinity-z-3q9QWR.mjs";
3
- import { t as createSelection } from "./createSelection-BNdDz8oY.mjs";
3
+ import { t as createSelection } from "./createSelection-TB5oK1FG.mjs";
4
4
  import { t as toArray } from "./toArray-MY9Kb1Qy.mjs";
5
5
  import { computed, onScopeDispose, reactive, shallowReactive, shallowRef, toRef, toValue } from "vue";
6
6
  //#region src/composables/useProxyRegistry/index.ts
@@ -247,7 +247,8 @@ function createGroup(_options = {}) {
247
247
  unselect: () => unselect(id),
248
248
  toggle: () => toggle(id),
249
249
  mix: () => mix(id),
250
- unmix: () => unmix(id)
250
+ unmix: () => unmix(id),
251
+ unregister: () => unregister(id)
251
252
  };
252
253
  const ticket = selection.register(item);
253
254
  if (toValue(registration.indeterminate)) mix(id);
@@ -270,6 +271,14 @@ function createGroup(_options = {}) {
270
271
  mixedIds.clear();
271
272
  selection.reset();
272
273
  }
274
+ function clear() {
275
+ mixedIds.clear();
276
+ selection.clear();
277
+ }
278
+ function dispose() {
279
+ mixedIds.clear();
280
+ selection.dispose();
281
+ }
273
282
  const selectableItems = computed(() => {
274
283
  return proxy.values.filter((item) => !toValue(item.disabled));
275
284
  });
@@ -311,6 +320,8 @@ function createGroup(_options = {}) {
311
320
  offboard,
312
321
  onboard,
313
322
  reset,
323
+ clear,
324
+ dispose,
314
325
  selectAll,
315
326
  unselectAll,
316
327
  toggleAll,
@@ -1,6 +1,6 @@
1
1
  import { clamp, isNullOrUndefined, isUndefined, useId as useId$1 } from "./utilities/index.mjs";
2
2
  import { i as useContext, t as createTrinity } from "./createTrinity-z-3q9QWR.mjs";
3
- import { i as useLogger } from "./useLogger-YyWuYvrH.mjs";
3
+ import { i as useLogger } from "./useLogger-CDsgHbzO.mjs";
4
4
  import { shallowReactive, shallowRef } from "vue";
5
5
  //#region src/composables/createRegistry/index.ts
6
6
  /**
@@ -281,12 +281,12 @@ function createRegistry(options) {
281
281
  const valueIsIndex = registration.valueIsIndex ?? valueIsUndefined;
282
282
  if (valueIsIndex) indexDependentCount++;
283
283
  const input = {
284
+ unregister: () => unregister(id),
284
285
  ...registration,
285
286
  id,
286
287
  index,
287
288
  value,
288
- valueIsIndex,
289
- unregister: () => unregister(id)
289
+ valueIsIndex
290
290
  };
291
291
  const ticket = reactive ? shallowReactive(input) : input;
292
292
  if (auto) minted.add(ticket);
@@ -1,6 +1,6 @@
1
1
  import { isUndefined, resolveIds, useId as useId$1 } from "./utilities/index.mjs";
2
2
  import { i as useContext, t as createTrinity } from "./createTrinity-z-3q9QWR.mjs";
3
- import { t as createRegistry } from "./createRegistry-DVdvep0v.mjs";
3
+ import { t as createRegistry } from "./createRegistry-DSQiALGi.mjs";
4
4
  import { computed, isRef, shallowReactive, toRaw, toRef, toValue } from "vue";
5
5
  //#region src/composables/createModel/index.ts
6
6
  /**
@@ -126,6 +126,7 @@ function createModel(_options = {}) {
126
126
  const id = registration.id ?? /* @__PURE__ */ useId$1();
127
127
  const item = {
128
128
  disabled: false,
129
+ unregister: () => unregister(id),
129
130
  ...registration,
130
131
  isSelected: toRef(() => selected(id)),
131
132
  id
@@ -1,5 +1,5 @@
1
1
  import { i as useContext, t as createTrinity } from "./createTrinity-z-3q9QWR.mjs";
2
- import { t as createSelection } from "./createSelection-BNdDz8oY.mjs";
2
+ import { t as createSelection } from "./createSelection-TB5oK1FG.mjs";
3
3
  import { toRef } from "vue";
4
4
  //#region src/composables/createSingle/index.ts
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  import { UNSAFE_KEYS, isObject, isString, isUndefined } from "./utilities/index.mjs";
2
2
  import { i as useContext, t as createTrinity } from "./createTrinity-z-3q9QWR.mjs";
3
- import { i as useLogger } from "./useLogger-YyWuYvrH.mjs";
4
- import { t as createRegistry } from "./createRegistry-DVdvep0v.mjs";
3
+ import { i as useLogger } from "./useLogger-CDsgHbzO.mjs";
4
+ import { t as createRegistry } from "./createRegistry-DSQiALGi.mjs";
5
5
  //#region src/composables/createTokens/index.ts
6
6
  /**
7
7
  * @module createTokens
@@ -1,5 +1,5 @@
1
1
  import { a as SortEntry, i as SortDirection, n as DataTableAdapterContext, r as DataTableAdapterResult, t as DataTableAdapter } from "../adapter-PDTe5nFT.mjs";
2
- import { _ as ColumnNode, a as DataTableExpansion, b as extractLeaves, c as DataTableOptions, d as DataTableTicket, f as DataTableTicketInput, g as useDataTable, h as createDataTableContext, i as DataTableContextOptions, l as DataTableSelection, m as createDataTable, n as DataTableColumnTicketInput, o as DataTableGroup, p as SelectStrategy, r as DataTableContext, s as DataTableGrouping, t as DataTableColumnTicket, u as DataTableSort, v as InternalHeader, x as resolveHeaders, y as computeDepth } from "../index-Di9e8sOm.mjs";
2
+ import { _ as ColumnNode, a as DataTableExpansion, b as extractLeaves, c as DataTableOptions, d as DataTableTicket, f as DataTableTicketInput, g as useDataTable, h as createDataTableContext, i as DataTableContextOptions, l as DataTableSelection, m as createDataTable, n as DataTableColumnTicketInput, o as DataTableGroup, p as SelectStrategy, r as DataTableContext, s as DataTableGrouping, t as DataTableColumnTicket, u as DataTableSort, v as InternalHeader, x as resolveHeaders, y as computeDepth } from "../index-3bThcqCN.mjs";
3
3
  import { n as ServerDataTableAdapterOptions, t as ServerDataTableAdapter } from "../server-5vbJ7GGs.mjs";
4
4
  import { t as ClientDataTableAdapter } from "../v0-GI9U-rPA.mjs";
5
5
  import { t as VirtualDataTableAdapter } from "../virtual-JIdFLpTQ.mjs";
@@ -1,6 +1,6 @@
1
1
  import { t as DataTableAdapter } from "../adapter-BiQV5j8B.mjs";
2
2
  import { t as ClientDataTableAdapter } from "../v0-yZ2ZUtVF.mjs";
3
- import { a as extractLeaves, i as computeDepth, n as createDataTableContext, o as resolveHeaders, r as useDataTable, t as createDataTable } from "../createDataTable-VmQEDn-7.mjs";
3
+ import { a as extractLeaves, i as computeDepth, n as createDataTableContext, o as resolveHeaders, r as useDataTable, t as createDataTable } from "../createDataTable-OCGnpy-N.mjs";
4
4
  import { t as ServerDataTableAdapter } from "../server-m7iD1vOr.mjs";
5
5
  import { t as VirtualDataTableAdapter } from "../virtual-Bbu26O_h.mjs";
6
6
  export { ClientDataTableAdapter, DataTableAdapter, ServerDataTableAdapter, VirtualDataTableAdapter, computeDepth, createDataTable, createDataTableContext, extractLeaves, resolveHeaders, useDataTable };
@@ -1,4 +1,4 @@
1
- import { t as IN_BROWSER } from "../globals-DaoKtIGF.mjs";
1
+ import { t as IN_BROWSER } from "../globals-wvVdMRFF.mjs";
2
2
  import { isNull, isNullOrUndefined, isNumber, isString } from "../utilities/index.mjs";
3
3
  import { n as deriveWeekInfo, t as DateAdapter } from "../adapter-BuSfpxur.mjs";
4
4
  import { Temporal } from "@js-temporal/polyfill";
@@ -1,4 +1,4 @@
1
- import { t as IN_BROWSER } from "../../../globals-DaoKtIGF.mjs";
1
+ import { t as IN_BROWSER } from "../../../globals-wvVdMRFF.mjs";
2
2
  import { UNSAFE_KEYS, isBoolean, isNullOrUndefined } from "../../../utilities/index.mjs";
3
3
  import { t as FeaturesAdapter } from "../../../adapter-8UADsA3-.mjs";
4
4
  //#region src/composables/useFeatures/adapters/posthog.ts
@@ -1,3 +1,3 @@
1
- import { _r as FeatureTicketInput, br as createFeaturesPlugin, fr as FeatureContext, gr as FeatureTicket, hr as FeaturePluginOptions, mr as FeatureOptions, pr as FeatureContextOptions, vr as createFeatures, xr as useFeatures, yr as createFeaturesContext } from "../index-Cx0cWGlx.mjs";
1
+ import { _r as FeatureTicketInput, br as createFeaturesPlugin, fr as FeatureContext, gr as FeatureTicket, hr as FeaturePluginOptions, mr as FeatureOptions, pr as FeatureContextOptions, vr as createFeatures, xr as useFeatures, yr as createFeaturesContext } from "../index-Dgkt7Ve9.mjs";
2
2
  import { n as FeaturesAdapterFlags, r as FeaturesAdapterValue, t as FeaturesAdapter } from "../adapter-BXunW_mw.mjs";
3
3
  export { FeatureContext, FeatureContextOptions, FeatureOptions, FeaturePluginOptions, FeatureTicket, FeatureTicketInput, FeaturesAdapter, FeaturesAdapterFlags, FeaturesAdapterValue, createFeatures, createFeaturesContext, createFeaturesPlugin, useFeatures };
@@ -1,3 +1,3 @@
1
1
  import { t as FeaturesAdapter } from "../adapter-8UADsA3-.mjs";
2
- import { i as useFeatures, n as createFeaturesContext, r as createFeaturesPlugin, t as createFeatures } from "../useFeatures-DLafCOWt.mjs";
2
+ import { i as useFeatures, n as createFeaturesContext, r as createFeaturesPlugin, t as createFeatures } from "../useFeatures-CTpkM6hV.mjs";
3
3
  export { FeaturesAdapter, createFeatures, createFeaturesContext, createFeaturesPlugin, useFeatures };
@@ -5,7 +5,7 @@ const SUPPORTS_MATCH_MEDIA = IN_BROWSER && "matchMedia" in window && typeof wind
5
5
  const SUPPORTS_OBSERVER = IN_BROWSER && "ResizeObserver" in window;
6
6
  const SUPPORTS_INTERSECTION_OBSERVER = IN_BROWSER && "IntersectionObserver" in window;
7
7
  const SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && "MutationObserver" in window;
8
- const version = "1.2.0";
8
+ const version = "1.2.1";
9
9
  /* v8 ignore next -- build-time constant, __DEV__ short-circuits in tests */
10
10
  const __LOGGER_ENABLED__ = typeof (process.env.NODE_ENV !== "production") !== "undefined" && process.env.NODE_ENV !== "production" || typeof process.env.VITE_LOGGER_ENABLED !== "undefined" && process.env.VITE_LOGGER_ENABLED === "true";
11
11
  //#endregion
@@ -1,6 +1,6 @@
1
1
  import { a as ID, i as Extensible } from "./index-DtiaWx5U.mjs";
2
2
  import { t as ContextTrinity } from "./index-H_hl6-4b.mjs";
3
- import { c as RegistryTicketInput, s as RegistryTicket, t as RegistryContext } from "./index-DSPkZ0ql.mjs";
3
+ import { c as RegistryTicketInput, s as RegistryTicket, t as RegistryContext } from "./index-4Z38WhA9.mjs";
4
4
  import { a as SortEntry, c as PaginationOptions, i as SortDirection, o as PaginationContext, t as DataTableAdapter, v as FilterOptions } from "./adapter-PDTe5nFT.mjs";
5
5
  import { MaybeRefOrGetter, Ref, ShallowRef } from "vue";
6
6
 
@@ -222,7 +222,7 @@ interface DataTableOptions<T extends object> {
222
222
  openAll?: boolean;
223
223
  /** Allow multiple rows expanded simultaneously. @default true */
224
224
  expandMultiple?: boolean;
225
- /** Locale for sorting (defaults to useLocale's selected locale or browser default) */
225
+ /** Locale for sorting. When set, wins over useLocale; otherwise useLocale or the browser default. */
226
226
  locale?: string;
227
227
  /** Pipeline adapter. @default ClientDataTableAdapter */
228
228
  adapter?: DataTableAdapter<T>;
@@ -1,5 +1,5 @@
1
1
  import { t as ContextTrinity } from "./index-H_hl6-4b.mjs";
2
- import { n as RegistryContextOptions, o as RegistryOptions, s as RegistryTicket, t as RegistryContext } from "./index-DSPkZ0ql.mjs";
2
+ import { n as RegistryContextOptions, o as RegistryOptions, s as RegistryTicket, t as RegistryContext } from "./index-4Z38WhA9.mjs";
3
3
 
4
4
  //#region src/composables/createTokens/index.d.ts
5
5
  interface TokenAlias<T = unknown> {
@@ -34,7 +34,13 @@ interface RegistryTicket<V = unknown> {
34
34
  * @remarks Set to true when no explicit value is provided during registration. It's not recommended to manually set this.
35
35
  */
36
36
  valueIsIndex: boolean;
37
- /** Remove this ticket from the registry. Semantic sugar for `registry.unregister(ticket.id)`. */
37
+ /**
38
+ * Remove this ticket from the collection that registered it.
39
+ *
40
+ * @remarks Equivalent to calling `unregister(ticket.id)` on that collection.
41
+ * Wrapping registries (model, group, nested) rebind this so sugar hits their
42
+ * cleanup, not only the base Map delete.
43
+ */
38
44
  unregister: () => void;
39
45
  }
40
46
  /** Valid event names for registry operations */
@@ -1,9 +1,9 @@
1
1
  import { a as ID, i as Extensible, n as DOMElement, o as MaybeArray, t as Activation } from "./index-DtiaWx5U.mjs";
2
- import { c as RegistryTicketInput, s as RegistryTicket, t as RegistryContext } from "./index-DSPkZ0ql.mjs";
3
- import { $i as RatingContext, Bo as DataGridContext, Bs as StepContext, Da as NumberFieldContext, Ec as UseImageReturn, G as StackTicket, Ha as NestedSelectionMode, Ho as DataGridOptions, Ia as NestedActiveMode, Io as StandardSchemaV1, Ji as SliderContext, Js as GroupContext, La as NestedContext, Mc as SelectionTicketInput, Oc as SelectionContext, Os as PopoverReturn, Ss as VirtualFocusReturn, To as RuleAlias, Ua as NestedTicket, Us as StepTicket, Xo as PinPosition, Zs as GroupTicket, _s as ComboboxAdapter, ha as ProgressContext, ho as FormValidationRule, ic as BreadcrumbsContext, jc as SelectionTicket, ls as ComboboxContext, na as RatingItemState, nn as NotificationTicket, pc as SingleTicket, so as InputState, ta as RatingItemDescriptor, uc as SingleContext, ut as RovingFocusReturn, va as ProgressTicket, vc as OverflowContext, wc as ImageStatus, za as NestedOpenMode, zt as PresenceState } from "./index-Cx0cWGlx.mjs";
2
+ import { c as RegistryTicketInput, s as RegistryTicket, t as RegistryContext } from "./index-4Z38WhA9.mjs";
3
+ import { $i as RatingContext, Bo as DataGridContext, Bs as StepContext, Da as NumberFieldContext, Ec as UseImageReturn, G as StackTicket, Ha as NestedSelectionMode, Ho as DataGridOptions, Ia as NestedActiveMode, Io as StandardSchemaV1, Ji as SliderContext, Js as GroupContext, La as NestedContext, Mc as SelectionTicketInput, Oc as SelectionContext, Os as PopoverReturn, Ss as VirtualFocusReturn, To as RuleAlias, Ua as NestedTicket, Us as StepTicket, Xo as PinPosition, Zs as GroupTicket, _s as ComboboxAdapter, ha as ProgressContext, ho as FormValidationRule, ic as BreadcrumbsContext, jc as SelectionTicket, ls as ComboboxContext, na as RatingItemState, nn as NotificationTicket, pc as SingleTicket, so as InputState, ta as RatingItemDescriptor, uc as SingleContext, ut as RovingFocusReturn, va as ProgressTicket, vc as OverflowContext, wc as ImageStatus, za as NestedOpenMode, zt as PresenceState } from "./index-Dgkt7Ve9.mjs";
4
4
  import { t as PopoverAdapter } from "./adapter-ClB-53_F.mjs";
5
5
  import { c as PaginationOptions, i as SortDirection, l as PaginationTicket, o as PaginationContext, t as DataTableAdapter, v as FilterOptions } from "./adapter-PDTe5nFT.mjs";
6
- import { c as DataTableOptions, p as SelectStrategy, r as DataTableContext, v as InternalHeader } from "./index-Di9e8sOm.mjs";
6
+ import { c as DataTableOptions, p as SelectStrategy, r as DataTableContext, v as InternalHeader } from "./index-3bThcqCN.mjs";
7
7
  import * as _$vue from "vue";
8
8
  import { MaybeRefOrGetter, Ref, ShallowRef, TemplateRef } from "vue";
9
9
 
@@ -992,11 +992,11 @@ interface AvatarImageSlotProps {
992
992
  }
993
993
  declare const _default$176: typeof __VLS_export$176;
994
994
  declare const __VLS_export$176: __VLS_WithSlots$132<_$vue.DefineComponent<AvatarImageProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
995
- error: (e: Event) => any;
996
995
  load: (e: Event) => any;
996
+ error: (e: Event) => any;
997
997
  }, string, _$vue.PublicProps, Readonly<AvatarImageProps> & Readonly<{
998
- onError?: ((e: Event) => any) | undefined;
999
998
  onLoad?: ((e: Event) => any) | undefined;
999
+ onError?: ((e: Event) => any) | undefined;
1000
1000
  }>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>, {
1001
1001
  default: (props: AvatarImageSlotProps) => any;
1002
1002
  }>;
@@ -1168,11 +1168,11 @@ declare const Avatar: {
1168
1168
  */
1169
1169
  Image: {
1170
1170
  new (...args: any[]): _$vue.CreateComponentPublicInstanceWithMixins<Readonly<AvatarImageProps> & Readonly<{
1171
- onError?: ((e: Event) => any) | undefined;
1172
1171
  onLoad?: ((e: Event) => any) | undefined;
1172
+ onError?: ((e: Event) => any) | undefined;
1173
1173
  }>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
1174
- error: (e: Event) => any;
1175
1174
  load: (e: Event) => any;
1175
+ error: (e: Event) => any;
1176
1176
  }, _$vue.PublicProps, {}, false, {}, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, {}, any, _$vue.ComponentProvideOptions, {
1177
1177
  P: {};
1178
1178
  B: {};
@@ -1181,18 +1181,18 @@ declare const Avatar: {
1181
1181
  M: {};
1182
1182
  Defaults: {};
1183
1183
  }, Readonly<AvatarImageProps> & Readonly<{
1184
- onError?: ((e: Event) => any) | undefined;
1185
1184
  onLoad?: ((e: Event) => any) | undefined;
1185
+ onError?: ((e: Event) => any) | undefined;
1186
1186
  }>, {}, {}, {}, {}, {}>;
1187
1187
  __isFragment?: never;
1188
1188
  __isTeleport?: never;
1189
1189
  __isSuspense?: never;
1190
1190
  } & _$vue.ComponentOptionsBase<Readonly<AvatarImageProps> & Readonly<{
1191
- onError?: ((e: Event) => any) | undefined;
1192
1191
  onLoad?: ((e: Event) => any) | undefined;
1192
+ onError?: ((e: Event) => any) | undefined;
1193
1193
  }>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
1194
- error: (e: Event) => any;
1195
1194
  load: (e: Event) => any;
1195
+ error: (e: Event) => any;
1196
1196
  }, string, {}, {}, string, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, _$vue.ComponentProvideOptions> & _$vue.VNodeProps & _$vue.AllowedComponentProps & _$vue.ComponentCustomProps & (new () => {
1197
1197
  $slots: {
1198
1198
  default: (props: AvatarImageSlotProps) => any;
@@ -7762,12 +7762,12 @@ interface ImageImgSlotProps {
7762
7762
  }
7763
7763
  declare const _default$96: typeof __VLS_export$96;
7764
7764
  declare const __VLS_export$96: __VLS_WithSlots$70<_$vue.DefineComponent<ImageImgProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
7765
- error: (e: Event) => any;
7766
7765
  load: (e: Event) => any;
7766
+ error: (e: Event) => any;
7767
7767
  loadstart: (src: string) => any;
7768
7768
  }, string, _$vue.PublicProps, Readonly<ImageImgProps> & Readonly<{
7769
- onError?: ((e: Event) => any) | undefined;
7770
7769
  onLoad?: ((e: Event) => any) | undefined;
7770
+ onError?: ((e: Event) => any) | undefined;
7771
7771
  onLoadstart?: ((src: string) => any) | undefined;
7772
7772
  }>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>, {
7773
7773
  default: (props: ImageImgSlotProps) => any;
@@ -7884,12 +7884,12 @@ declare const Image: {
7884
7884
  */
7885
7885
  Img: {
7886
7886
  new (...args: any[]): _$vue.CreateComponentPublicInstanceWithMixins<Readonly<ImageImgProps> & Readonly<{
7887
- onError?: ((e: Event) => any) | undefined;
7888
7887
  onLoad?: ((e: Event) => any) | undefined;
7888
+ onError?: ((e: Event) => any) | undefined;
7889
7889
  onLoadstart?: ((src: string) => any) | undefined;
7890
7890
  }>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
7891
- error: (e: Event) => any;
7892
7891
  load: (e: Event) => any;
7892
+ error: (e: Event) => any;
7893
7893
  loadstart: (src: string) => any;
7894
7894
  }, _$vue.PublicProps, {}, false, {}, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, {}, any, _$vue.ComponentProvideOptions, {
7895
7895
  P: {};
@@ -7899,20 +7899,20 @@ declare const Image: {
7899
7899
  M: {};
7900
7900
  Defaults: {};
7901
7901
  }, Readonly<ImageImgProps> & Readonly<{
7902
- onError?: ((e: Event) => any) | undefined;
7903
7902
  onLoad?: ((e: Event) => any) | undefined;
7903
+ onError?: ((e: Event) => any) | undefined;
7904
7904
  onLoadstart?: ((src: string) => any) | undefined;
7905
7905
  }>, {}, {}, {}, {}, {}>;
7906
7906
  __isFragment?: never;
7907
7907
  __isTeleport?: never;
7908
7908
  __isSuspense?: never;
7909
7909
  } & _$vue.ComponentOptionsBase<Readonly<ImageImgProps> & Readonly<{
7910
- onError?: ((e: Event) => any) | undefined;
7911
7910
  onLoad?: ((e: Event) => any) | undefined;
7911
+ onError?: ((e: Event) => any) | undefined;
7912
7912
  onLoadstart?: ((src: string) => any) | undefined;
7913
7913
  }>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
7914
- error: (e: Event) => any;
7915
7914
  load: (e: Event) => any;
7915
+ error: (e: Event) => any;
7916
7916
  loadstart: (src: string) => any;
7917
7917
  }, string, {}, {}, string, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, _$vue.ComponentProvideOptions> & _$vue.VNodeProps & _$vue.AllowedComponentProps & _$vue.ComponentCustomProps & (new () => {
7918
7918
  $slots: {
@@ -8134,6 +8134,8 @@ interface InputRootProps extends AtomProps {
8134
8134
  errorMessages?: MaybeArray<string>;
8135
8135
  /** Namespace for context provision to children */
8136
8136
  namespace?: string;
8137
+ /** Namespace for connecting to parent Form. Must match Form's namespace. */
8138
+ formNamespace?: string;
8137
8139
  }
8138
8140
  interface InputRootSlotProps {
8139
8141
  /** Unique identifier */
@@ -8541,6 +8543,8 @@ interface NumberFieldRootProps extends AtomProps {
8541
8543
  wheel?: boolean;
8542
8544
  /** Namespace for context provision */
8543
8545
  namespace?: string;
8546
+ /** Namespace for connecting to parent Form. Must match Form's namespace. */
8547
+ formNamespace?: string;
8544
8548
  }
8545
8549
  interface NumberFieldRootSlotProps {
8546
8550
  /** Unique identifier */
@@ -10359,7 +10363,7 @@ interface ProgressFillSlotProps {
10359
10363
  'data-state': 'determinate' | 'indeterminate';
10360
10364
  'style': {
10361
10365
  width: string;
10362
- };
10366
+ } | undefined;
10363
10367
  };
10364
10368
  }
10365
10369
  declare const _default$63: typeof __VLS_export$63;
@@ -14639,6 +14643,8 @@ interface TabsItemProps<V = unknown> extends AtomProps {
14639
14643
  ariaLabelledby?: string;
14640
14644
  /** ID of element that describes this tab */
14641
14645
  ariaDescribedby?: string;
14646
+ /** Focus target when renderless / `:as="null"`. Defaults to the Atom host. */
14647
+ el?: MaybeRefOrGetter<Element | null | undefined>;
14642
14648
  }
14643
14649
  interface TabsItemSlotProps {
14644
14650
  /** Unique identifier */
@@ -14828,6 +14834,7 @@ declare const Tabs: {
14828
14834
  ariaLabel?: string | undefined;
14829
14835
  ariaLabelledby?: string | undefined;
14830
14836
  ariaDescribedby?: string | undefined;
14837
+ el?: _$vue.MaybeRefOrGetter<Element | null | undefined>;
14831
14838
  as?: (DOMElement | null) | undefined;
14832
14839
  renderless?: boolean | undefined;
14833
14840
  } & (typeof globalThis extends {
@@ -43,10 +43,15 @@ type MatchRange = readonly [number, number];
43
43
  /**
44
44
  * Which side of a comparison has its accents folded before matching.
45
45
  *
46
- * - `'query'` — only the query, so typing `café` finds plain `cafe`
47
- * - `'target'` — only the text, so typing `cafe` finds accented `café`
48
- * - `true` — both sides
49
- * - `false` — neither
46
+ * - `'query'` — folds the query, so typing `café` finds plain `cafe`
47
+ * - `'target'` — folds the text, so typing `cafe` finds accented `café`
48
+ * - `true` — both sides fold, so any accent variant matches any other
49
+ * - `false` — neither folds, exact match only
50
+ *
51
+ * `'query'` and `'target'` fold only one side, but a spelling that already
52
+ * agrees on both sides still matches verbatim — folding one side never
53
+ * hides a match the other side already has. They still don't fold each
54
+ * other's accents together, so `café` won't match `cafè` under either.
50
55
  */
51
56
  type IgnoreAccents = boolean | 'query' | 'target';
52
57
  interface FindMatchRangesOptions {
@@ -59,6 +64,11 @@ interface FindMatchRangesOptions {
59
64
  * folding accents on either side. Returned indices always address the original
60
65
  * `text`, even when folding or case-conversion changed its length.
61
66
  *
67
+ * Directional folding (`'query'` or `'target'`) only transforms one side, but
68
+ * a spelling that's already identical on both sides — accents and all — is
69
+ * merged in verbatim, so folding one side never hides a match the other side
70
+ * already has.
71
+ *
62
72
  * @param text The string to search.
63
73
  * @param query The term to look for. An empty query yields no ranges.
64
74
  * @param options Optional `ignoreCase`, `ignoreAccents`, `matchAll`.
@@ -73,6 +83,9 @@ interface FindMatchRangesOptions {
73
83
  *
74
84
  * findMatchRanges('Łódź', 'Lo', { ignoreAccents: 'target' })
75
85
  * // [[0, 2]]
86
+ *
87
+ * findMatchRanges('… Kraków …', 'Kraków', { ignoreAccents: 'query' })
88
+ * // [[2, 8]] — typing the exact accented name always finds itself
76
89
  * ```
77
90
  */
78
91
  declare function findMatchRanges(text: string, query: string, options?: FindMatchRangesOptions): MatchRange[];
@@ -1,14 +1,14 @@
1
1
  import { a as ID, i as Extensible, o as MaybeArray } from "./index-DtiaWx5U.mjs";
2
2
  import { t as ContextTrinity } from "./index-H_hl6-4b.mjs";
3
- import { a as RegistryEventName, c as RegistryTicketInput, o as RegistryOptions, r as RegistryEventCallback, s as RegistryTicket, t as RegistryContext } from "./index-DSPkZ0ql.mjs";
3
+ import { a as RegistryEventName, c as RegistryTicketInput, o as RegistryOptions, r as RegistryEventCallback, s as RegistryTicket, t as RegistryContext } from "./index-4Z38WhA9.mjs";
4
4
  import { i as PopoverPlacement, n as PopoverAdapterContext, t as PopoverAdapter } from "./adapter-ClB-53_F.mjs";
5
5
  import { _ as FilterMode } from "./adapter-PDTe5nFT.mjs";
6
- import { _ as ColumnNode, c as DataTableOptions, n as DataTableColumnTicketInput, r as DataTableContext, t as DataTableColumnTicket } from "./index-Di9e8sOm.mjs";
7
- import { c as TokenTicket, i as TokenContext, o as TokenOptions, r as TokenCollection } from "./index-D0ub61GV.mjs";
8
- import { A as MatchRange, k as IgnoreAccents } from "./index-DjRE4lLl.mjs";
6
+ import { _ as ColumnNode, c as DataTableOptions, n as DataTableColumnTicketInput, r as DataTableContext, t as DataTableColumnTicket } from "./index-3bThcqCN.mjs";
7
+ import { c as TokenTicket, i as TokenContext, o as TokenOptions, r as TokenCollection } from "./index-3vvA76pZ.mjs";
8
+ import { A as MatchRange, k as IgnoreAccents } from "./index-CORslci7.mjs";
9
9
  import { t as DateAdapter } from "./adapter-D5nT3bLw.mjs";
10
10
  import { n as FeaturesAdapterFlags, t as FeaturesAdapter } from "./adapter-BXunW_mw.mjs";
11
- import { t as LocaleAdapter } from "./adapter-CqS8xexO.mjs";
11
+ import { t as LocaleAdapter } from "./adapter-FckJSz_o.mjs";
12
12
  import { t as LoggerAdapter } from "./adapter-ryk5H6YZ.mjs";
13
13
  import { n as StorageAdapter } from "./memory-B7z1RR9r.mjs";
14
14
  import { App, ComponentPublicInstance, ComputedRef, InjectionKey, MaybeRef, MaybeRefOrGetter, Reactive, Ref, ShallowReactive, ShallowRef, UnwrapNestedRefs, WatchSource, WritableComputedRef } from "vue";
@@ -1604,17 +1604,18 @@ declare function createPopoverFallback(): PopoverPluginContext;
1604
1604
  * import { FloatingUIPopoverAdapter } from '@vuetify/v0/popover/adapters/floating-ui'
1605
1605
  *
1606
1606
  * export const [useAppPopover, provideAppPopover, appPopover] = createPopoverContext({
1607
- * namespace: 'app:popover-plugin',
1607
+ * namespace: 'app:popover',
1608
1608
  * adapter: new FloatingUIPopoverAdapter(),
1609
1609
  * })
1610
1610
  * ```
1611
1611
  *
1612
1612
  * Plugin trinity for an app-wide popover positioning adapter.
1613
1613
  *
1614
- * Namespace is `v0:popover-plugin` not `v0:popover`, which `Popover.Root`
1615
- * already owns for compound context. The generated consumer is module-private;
1616
- * `usePopover()` consults it internally. Fallback is `{ adapter: undefined }`,
1617
- * so zero-config matches today's `V0PopoverAdapter` default.
1614
+ * Namespace is `v0:popover`. Compound `Popover.Root` context lives at
1615
+ * `v0:popover:root` so the two do not collide. The generated consumer is
1616
+ * module-private; `usePopover()` consults it internally. Fallback is
1617
+ * `{ adapter: undefined }`, so zero-config matches today's `V0PopoverAdapter`
1618
+ * default.
1618
1619
  *
1619
1620
  * @example
1620
1621
  * ```ts
@@ -2416,6 +2417,17 @@ interface ValidationOptions extends GroupOptions {
2416
2417
  rules?: RuleInput[];
2417
2418
  /** Value source for validate() when called without arguments. */
2418
2419
  value?: MaybeRefOrGetter<unknown>;
2420
+ /**
2421
+ * Form injection key. Must match the parent Form's `namespace`.
2422
+ *
2423
+ * @default 'v0:form'
2424
+ *
2425
+ * @example
2426
+ * ```ts
2427
+ * createValidation({ formNamespace: 'v0:billing' })
2428
+ * ```
2429
+ */
2430
+ formNamespace?: string;
2419
2431
  }
2420
2432
  /**
2421
2433
  * Creates a per-input validation instance.
@@ -2578,7 +2590,16 @@ interface InputOptions<T = string> {
2578
2590
  name?: string;
2579
2591
  /** Associate with form by ID. */
2580
2592
  form?: string;
2581
- /** Whether required. */
2593
+ /**
2594
+ * Form injection key. Must match the parent Form's `namespace`.
2595
+ *
2596
+ * @default 'v0:form'
2597
+ */
2598
+ formNamespace?: string;
2599
+ /**
2600
+ * Whether required. When true, a presence rule is registered so Form
2601
+ * submit fails on empty values even with `novalidate`.
2602
+ */
2582
2603
  required?: boolean;
2583
2604
  /** Disabled state. */
2584
2605
  disabled?: MaybeRefOrGetter<boolean>;
@@ -3514,6 +3535,17 @@ interface NumberFieldOptions extends NumericOptions {
3514
3535
  label?: string;
3515
3536
  /** Form field name. */
3516
3537
  name?: string;
3538
+ /**
3539
+ * Form injection key. Must match the parent Form's `namespace`.
3540
+ *
3541
+ * @default 'v0:form'
3542
+ */
3543
+ formNamespace?: string;
3544
+ /**
3545
+ * Whether required. When true, a presence rule is registered so Form
3546
+ * submit fails on empty values even with `novalidate`.
3547
+ */
3548
+ required?: boolean;
3517
3549
  /** Validation rules. */
3518
3550
  rules?: InputOptions<number | null>['rules'];
3519
3551
  /** Manual error state override — forces invalid. */