@vuetify/nightly 3.9.0-beta.1-dev.2025-06-26 → 3.9.0-beta.1-dev.2025-06-28

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 (205) hide show
  1. package/CHANGELOG.md +8 -3
  2. package/dist/_component-variables-labs.sass +1 -0
  3. package/dist/json/attributes.json +2183 -2123
  4. package/dist/json/importMap-labs.json +28 -24
  5. package/dist/json/importMap.json +170 -170
  6. package/dist/json/tags.json +20 -0
  7. package/dist/json/web-types.json +4186 -4020
  8. package/dist/vuetify-labs.cjs +738 -4
  9. package/dist/vuetify-labs.css +4753 -4502
  10. package/dist/vuetify-labs.d.ts +309 -63
  11. package/dist/vuetify-labs.esm.js +738 -5
  12. package/dist/vuetify-labs.esm.js.map +1 -1
  13. package/dist/vuetify-labs.js +738 -4
  14. package/dist/vuetify-labs.min.css +2 -2
  15. package/dist/vuetify.cjs +345 -4
  16. package/dist/vuetify.cjs.map +1 -1
  17. package/dist/vuetify.css +4301 -4292
  18. package/dist/vuetify.d.ts +82 -62
  19. package/dist/vuetify.esm.js +345 -5
  20. package/dist/vuetify.esm.js.map +1 -1
  21. package/dist/vuetify.js +345 -4
  22. package/dist/vuetify.js.map +1 -1
  23. package/dist/vuetify.min.css +2 -2
  24. package/dist/vuetify.min.js +284 -245
  25. package/dist/vuetify.min.js.map +1 -1
  26. package/lib/components/VKbd/VKbd.css +14 -5
  27. package/lib/components/VKbd/VKbd.js.map +1 -1
  28. package/lib/components/VKbd/VKbd.scss +26 -0
  29. package/lib/components/VKbd/_variables.scss +12 -6
  30. package/lib/components/VKbd/index.js.map +1 -1
  31. package/lib/composables/hotkey/hotkey-parsing.d.ts +15 -0
  32. package/lib/composables/hotkey/hotkey-parsing.js +154 -0
  33. package/lib/composables/hotkey/hotkey-parsing.js.map +1 -0
  34. package/lib/composables/hotkey/hotkey.d.ts +9 -0
  35. package/lib/composables/{hotkey.js → hotkey/hotkey.js} +31 -39
  36. package/lib/composables/hotkey/hotkey.js.map +1 -0
  37. package/lib/composables/hotkey/index.d.ts +1 -0
  38. package/lib/composables/hotkey/index.js +2 -0
  39. package/lib/composables/hotkey/index.js.map +1 -0
  40. package/lib/composables/hotkey/key-aliases.d.ts +14 -0
  41. package/lib/composables/hotkey/key-aliases.js +38 -0
  42. package/lib/composables/hotkey/key-aliases.js.map +1 -0
  43. package/lib/composables/icons.d.ts +11 -0
  44. package/lib/composables/icons.js.map +1 -1
  45. package/lib/composables/index.d.ts +1 -0
  46. package/lib/composables/index.js +1 -0
  47. package/lib/composables/index.js.map +1 -1
  48. package/lib/entry-bundler.js +1 -1
  49. package/lib/framework.d.ts +83 -62
  50. package/lib/framework.js +1 -1
  51. package/lib/iconsets/fa.js +12 -1
  52. package/lib/iconsets/fa.js.map +1 -1
  53. package/lib/iconsets/fa4.js +12 -1
  54. package/lib/iconsets/fa4.js.map +1 -1
  55. package/lib/iconsets/md.js +12 -1
  56. package/lib/iconsets/md.js.map +1 -1
  57. package/lib/iconsets/mdi-svg.js +12 -1
  58. package/lib/iconsets/mdi-svg.js.map +1 -1
  59. package/lib/iconsets/mdi.js +12 -1
  60. package/lib/iconsets/mdi.js.map +1 -1
  61. package/lib/labs/VHotkey/VHotkey.css +242 -0
  62. package/lib/labs/VHotkey/VHotkey.d.ts +387 -0
  63. package/lib/labs/VHotkey/VHotkey.js +432 -0
  64. package/lib/labs/VHotkey/VHotkey.js.map +1 -0
  65. package/lib/labs/VHotkey/VHotkey.scss +253 -0
  66. package/lib/labs/VHotkey/_variables.scss +43 -0
  67. package/lib/labs/VHotkey/index.d.ts +1 -0
  68. package/lib/labs/VHotkey/index.js +2 -0
  69. package/lib/labs/VHotkey/index.js.map +1 -0
  70. package/lib/labs/components.d.ts +1 -0
  71. package/lib/labs/components.js +1 -0
  72. package/lib/labs/components.js.map +1 -1
  73. package/lib/locale/af.d.ts +18 -0
  74. package/lib/locale/af.js +18 -0
  75. package/lib/locale/af.js.map +1 -1
  76. package/lib/locale/ar.d.ts +18 -0
  77. package/lib/locale/ar.js +18 -0
  78. package/lib/locale/ar.js.map +1 -1
  79. package/lib/locale/az.d.ts +18 -0
  80. package/lib/locale/az.js +18 -0
  81. package/lib/locale/az.js.map +1 -1
  82. package/lib/locale/bg.d.ts +18 -0
  83. package/lib/locale/bg.js +18 -0
  84. package/lib/locale/bg.js.map +1 -1
  85. package/lib/locale/ca.d.ts +18 -0
  86. package/lib/locale/ca.js +18 -0
  87. package/lib/locale/ca.js.map +1 -1
  88. package/lib/locale/ckb.d.ts +18 -0
  89. package/lib/locale/ckb.js +18 -0
  90. package/lib/locale/ckb.js.map +1 -1
  91. package/lib/locale/cs.d.ts +18 -0
  92. package/lib/locale/cs.js +18 -0
  93. package/lib/locale/cs.js.map +1 -1
  94. package/lib/locale/da.d.ts +18 -0
  95. package/lib/locale/da.js +18 -0
  96. package/lib/locale/da.js.map +1 -1
  97. package/lib/locale/de.d.ts +18 -0
  98. package/lib/locale/de.js +18 -0
  99. package/lib/locale/de.js.map +1 -1
  100. package/lib/locale/el.d.ts +18 -0
  101. package/lib/locale/el.js +18 -0
  102. package/lib/locale/el.js.map +1 -1
  103. package/lib/locale/en.d.ts +18 -0
  104. package/lib/locale/en.js +18 -0
  105. package/lib/locale/en.js.map +1 -1
  106. package/lib/locale/es.d.ts +18 -0
  107. package/lib/locale/es.js +18 -0
  108. package/lib/locale/es.js.map +1 -1
  109. package/lib/locale/et.d.ts +18 -0
  110. package/lib/locale/et.js +18 -0
  111. package/lib/locale/et.js.map +1 -1
  112. package/lib/locale/fa.d.ts +18 -0
  113. package/lib/locale/fa.js +18 -0
  114. package/lib/locale/fa.js.map +1 -1
  115. package/lib/locale/fi.d.ts +18 -0
  116. package/lib/locale/fi.js +18 -0
  117. package/lib/locale/fi.js.map +1 -1
  118. package/lib/locale/fr.d.ts +18 -0
  119. package/lib/locale/fr.js +18 -0
  120. package/lib/locale/fr.js.map +1 -1
  121. package/lib/locale/he.d.ts +18 -0
  122. package/lib/locale/he.js +18 -0
  123. package/lib/locale/he.js.map +1 -1
  124. package/lib/locale/hr.d.ts +18 -0
  125. package/lib/locale/hr.js +18 -0
  126. package/lib/locale/hr.js.map +1 -1
  127. package/lib/locale/hu.d.ts +18 -0
  128. package/lib/locale/hu.js +18 -0
  129. package/lib/locale/hu.js.map +1 -1
  130. package/lib/locale/id.d.ts +18 -0
  131. package/lib/locale/id.js +18 -0
  132. package/lib/locale/id.js.map +1 -1
  133. package/lib/locale/it.d.ts +18 -0
  134. package/lib/locale/it.js +18 -0
  135. package/lib/locale/it.js.map +1 -1
  136. package/lib/locale/ja.d.ts +18 -0
  137. package/lib/locale/ja.js +18 -0
  138. package/lib/locale/ja.js.map +1 -1
  139. package/lib/locale/km.d.ts +18 -0
  140. package/lib/locale/km.js +18 -0
  141. package/lib/locale/km.js.map +1 -1
  142. package/lib/locale/ko.d.ts +18 -0
  143. package/lib/locale/ko.js +18 -0
  144. package/lib/locale/ko.js.map +1 -1
  145. package/lib/locale/lt.d.ts +18 -0
  146. package/lib/locale/lt.js +18 -0
  147. package/lib/locale/lt.js.map +1 -1
  148. package/lib/locale/lv.d.ts +18 -0
  149. package/lib/locale/lv.js +18 -0
  150. package/lib/locale/lv.js.map +1 -1
  151. package/lib/locale/nl.d.ts +18 -0
  152. package/lib/locale/nl.js +18 -0
  153. package/lib/locale/nl.js.map +1 -1
  154. package/lib/locale/no.d.ts +18 -0
  155. package/lib/locale/no.js +18 -0
  156. package/lib/locale/no.js.map +1 -1
  157. package/lib/locale/pl.d.ts +18 -0
  158. package/lib/locale/pl.js +18 -0
  159. package/lib/locale/pl.js.map +1 -1
  160. package/lib/locale/pt.d.ts +18 -0
  161. package/lib/locale/pt.js +18 -0
  162. package/lib/locale/pt.js.map +1 -1
  163. package/lib/locale/ro.d.ts +18 -0
  164. package/lib/locale/ro.js +18 -0
  165. package/lib/locale/ro.js.map +1 -1
  166. package/lib/locale/ru.d.ts +18 -0
  167. package/lib/locale/ru.js +18 -0
  168. package/lib/locale/ru.js.map +1 -1
  169. package/lib/locale/sk.d.ts +18 -0
  170. package/lib/locale/sk.js +18 -0
  171. package/lib/locale/sk.js.map +1 -1
  172. package/lib/locale/sl.d.ts +18 -0
  173. package/lib/locale/sl.js +18 -0
  174. package/lib/locale/sl.js.map +1 -1
  175. package/lib/locale/sr-Cyrl.d.ts +18 -0
  176. package/lib/locale/sr-Cyrl.js +18 -0
  177. package/lib/locale/sr-Cyrl.js.map +1 -1
  178. package/lib/locale/sr-Latn.d.ts +18 -0
  179. package/lib/locale/sr-Latn.js +18 -0
  180. package/lib/locale/sr-Latn.js.map +1 -1
  181. package/lib/locale/sv.d.ts +18 -0
  182. package/lib/locale/sv.js +18 -0
  183. package/lib/locale/sv.js.map +1 -1
  184. package/lib/locale/th.d.ts +18 -0
  185. package/lib/locale/th.js +18 -0
  186. package/lib/locale/th.js.map +1 -1
  187. package/lib/locale/tr.d.ts +18 -0
  188. package/lib/locale/tr.js +18 -0
  189. package/lib/locale/tr.js.map +1 -1
  190. package/lib/locale/uk.d.ts +18 -0
  191. package/lib/locale/uk.js +18 -0
  192. package/lib/locale/uk.js.map +1 -1
  193. package/lib/locale/vi.d.ts +18 -0
  194. package/lib/locale/vi.js +18 -0
  195. package/lib/locale/vi.js.map +1 -1
  196. package/lib/locale/zh-Hans.d.ts +18 -0
  197. package/lib/locale/zh-Hans.js +18 -0
  198. package/lib/locale/zh-Hans.js.map +1 -1
  199. package/lib/locale/zh-Hant.d.ts +18 -0
  200. package/lib/locale/zh-Hant.js +18 -0
  201. package/lib/locale/zh-Hant.js.map +1 -1
  202. package/package.json +1 -1
  203. package/lib/components/VKbd/VKbd.sass +0 -15
  204. package/lib/composables/hotkey.d.ts +0 -9
  205. package/lib/composables/hotkey.js.map +0 -1
package/dist/vuetify.d.ts CHANGED
@@ -305,6 +305,17 @@ interface IconAliases {
305
305
  eyeDropper: IconValue;
306
306
  upload: IconValue;
307
307
  color: IconValue;
308
+ command: IconValue;
309
+ ctrl: IconValue;
310
+ space: IconValue;
311
+ shift: IconValue;
312
+ alt: IconValue;
313
+ enter: IconValue;
314
+ arrowup: IconValue;
315
+ arrowdown: IconValue;
316
+ arrowleft: IconValue;
317
+ arrowright: IconValue;
318
+ backspace: IconValue;
308
319
  }
309
320
  interface IconProps {
310
321
  tag: string | JSXComponent;
@@ -3295,6 +3306,14 @@ declare function useLayout(): {
3295
3306
  mainStyles: Ref<CSSProperties, CSSProperties>;
3296
3307
  };
3297
3308
 
3309
+ interface HotkeyOptions {
3310
+ event?: MaybeRef<'keydown' | 'keyup'>;
3311
+ inputs?: MaybeRef<boolean>;
3312
+ preventDefault?: MaybeRef<boolean>;
3313
+ sequenceTimeout?: MaybeRef<number>;
3314
+ }
3315
+ declare function useHotkey(keys: MaybeRef<string | undefined>, callback: (e: KeyboardEvent) => void, options?: HotkeyOptions): () => void;
3316
+
3298
3317
  interface VuetifyOptions {
3299
3318
  aliases?: Record<string, any>;
3300
3319
  blueprint?: Blueprint;
@@ -93432,7 +93451,7 @@ declare const createVuetify: {
93432
93451
  };
93433
93452
  declare const version: string;
93434
93453
 
93435
- export { index_d$2 as blueprints, index_d$1 as components, createVuetify, index_d as directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
93454
+ export { index_d$2 as blueprints, index_d$1 as components, createVuetify, index_d as directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };
93436
93455
 
93437
93456
  /* eslint-disable local-rules/sort-imports */
93438
93457
 
@@ -93469,38 +93488,44 @@ declare module 'vue' {
93469
93488
  $children?: VNodeChild
93470
93489
  }
93471
93490
  export interface GlobalComponents {
93491
+ VApp: VApp
93472
93492
  VAppBar: VAppBar
93473
93493
  VAppBarNavIcon: VAppBarNavIcon
93474
93494
  VAppBarTitle: VAppBarTitle
93475
93495
  VAlert: VAlert
93476
93496
  VAlertTitle: VAlertTitle
93477
- VApp: VApp
93478
- VAutocomplete: VAutocomplete
93479
93497
  VBadge: VBadge
93480
- VBottomNavigation: VBottomNavigation
93498
+ VAutocomplete: VAutocomplete
93499
+ VAvatar: VAvatar
93500
+ VBottomSheet: VBottomSheet
93481
93501
  VBreadcrumbs: VBreadcrumbs
93482
93502
  VBreadcrumbsItem: VBreadcrumbsItem
93483
93503
  VBreadcrumbsDivider: VBreadcrumbsDivider
93484
- VBanner: VBanner
93485
- VBannerActions: VBannerActions
93486
- VBannerText: VBannerText
93487
93504
  VBtnGroup: VBtnGroup
93488
- VBottomSheet: VBottomSheet
93505
+ VBtnToggle: VBtnToggle
93489
93506
  VCard: VCard
93490
93507
  VCardActions: VCardActions
93491
93508
  VCardItem: VCardItem
93492
93509
  VCardSubtitle: VCardSubtitle
93493
93510
  VCardText: VCardText
93494
93511
  VCardTitle: VCardTitle
93495
- VChip: VChip
93496
- VBtn: VBtn
93497
- VBtnToggle: VBtnToggle
93512
+ VCarousel: VCarousel
93513
+ VCarouselItem: VCarouselItem
93514
+ VCode: VCode
93498
93515
  VCheckbox: VCheckbox
93499
93516
  VCheckboxBtn: VCheckboxBtn
93500
- VAvatar: VAvatar
93501
- VCombobox: VCombobox
93502
- VCode: VCode
93517
+ VColorPicker: VColorPicker
93518
+ VChip: VChip
93519
+ VChipGroup: VChipGroup
93520
+ VBtn: VBtn
93503
93521
  VCounter: VCounter
93522
+ VCombobox: VCombobox
93523
+ VDatePicker: VDatePicker
93524
+ VDatePickerControls: VDatePickerControls
93525
+ VDatePickerHeader: VDatePickerHeader
93526
+ VDatePickerMonth: VDatePickerMonth
93527
+ VDatePickerMonths: VDatePickerMonths
93528
+ VDatePickerYears: VDatePickerYears
93504
93529
  VDataTable: VDataTable
93505
93530
  VDataTableHeaders: VDataTableHeaders
93506
93531
  VDataTableFooter: VDataTableFooter
@@ -93508,35 +93533,32 @@ declare module 'vue' {
93508
93533
  VDataTableRow: VDataTableRow
93509
93534
  VDataTableVirtual: VDataTableVirtual
93510
93535
  VDataTableServer: VDataTableServer
93511
- VDatePicker: VDatePicker
93512
- VDatePickerControls: VDatePickerControls
93513
- VDatePickerHeader: VDatePickerHeader
93514
- VDatePickerMonth: VDatePickerMonth
93515
- VDatePickerMonths: VDatePickerMonths
93516
- VDatePickerYears: VDatePickerYears
93517
- VColorPicker: VColorPicker
93518
- VChipGroup: VChipGroup
93519
93536
  VDialog: VDialog
93520
93537
  VDivider: VDivider
93521
- VEmptyState: VEmptyState
93522
- VFab: VFab
93523
93538
  VField: VField
93524
93539
  VFieldLabel: VFieldLabel
93525
- VFileInput: VFileInput
93540
+ VFab: VFab
93541
+ VExpansionPanels: VExpansionPanels
93542
+ VExpansionPanel: VExpansionPanel
93543
+ VExpansionPanelText: VExpansionPanelText
93544
+ VExpansionPanelTitle: VExpansionPanelTitle
93526
93545
  VFooter: VFooter
93546
+ VImg: VImg
93547
+ VFileInput: VFileInput
93548
+ VEmptyState: VEmptyState
93527
93549
  VIcon: VIcon
93528
93550
  VComponentIcon: VComponentIcon
93529
93551
  VSvgIcon: VSvgIcon
93530
93552
  VLigatureIcon: VLigatureIcon
93531
93553
  VClassIcon: VClassIcon
93532
- VExpansionPanels: VExpansionPanels
93533
- VExpansionPanel: VExpansionPanel
93534
- VExpansionPanelText: VExpansionPanelText
93535
- VExpansionPanelTitle: VExpansionPanelTitle
93536
93554
  VInfiniteScroll: VInfiniteScroll
93537
- VInput: VInput
93555
+ VLabel: VLabel
93538
93556
  VItemGroup: VItemGroup
93539
93557
  VItem: VItem
93558
+ VInput: VInput
93559
+ VKbd: VKbd
93560
+ VMenu: VMenu
93561
+ VMain: VMain
93540
93562
  VList: VList
93541
93563
  VListGroup: VListGroup
93542
93564
  VListImg: VListImg
@@ -93546,69 +93568,65 @@ declare module 'vue' {
93546
93568
  VListItemSubtitle: VListItemSubtitle
93547
93569
  VListItemTitle: VListItemTitle
93548
93570
  VListSubheader: VListSubheader
93549
- VKbd: VKbd
93550
- VLabel: VLabel
93551
- VImg: VImg
93552
- VMain: VMain
93553
- VNavigationDrawer: VNavigationDrawer
93554
93571
  VMessages: VMessages
93555
- VOtpInput: VOtpInput
93556
- VMenu: VMenu
93572
+ VNavigationDrawer: VNavigationDrawer
93557
93573
  VNumberInput: VNumberInput
93558
93574
  VOverlay: VOverlay
93559
93575
  VPagination: VPagination
93560
93576
  VProgressCircular: VProgressCircular
93577
+ VBottomNavigation: VBottomNavigation
93561
93578
  VProgressLinear: VProgressLinear
93562
- VRadioGroup: VRadioGroup
93563
- VSheet: VSheet
93579
+ VOtpInput: VOtpInput
93564
93580
  VRating: VRating
93581
+ VSelect: VSelect
93565
93582
  VSelectionControl: VSelectionControl
93566
- VSkeletonLoader: VSkeletonLoader
93583
+ VSheet: VSheet
93567
93584
  VSelectionControlGroup: VSelectionControlGroup
93568
- VSlider: VSlider
93569
- VSelect: VSelect
93585
+ VSkeletonLoader: VSkeletonLoader
93570
93586
  VSlideGroup: VSlideGroup
93571
93587
  VSlideGroupItem: VSlideGroupItem
93588
+ VSlider: VSlider
93572
93589
  VSnackbar: VSnackbar
93590
+ VSystemBar: VSystemBar
93591
+ VSwitch: VSwitch
93573
93592
  VStepper: VStepper
93574
93593
  VStepperActions: VStepperActions
93575
93594
  VStepperHeader: VStepperHeader
93576
93595
  VStepperItem: VStepperItem
93577
93596
  VStepperWindow: VStepperWindow
93578
93597
  VStepperWindowItem: VStepperWindowItem
93579
- VSystemBar: VSystemBar
93580
- VSwitch: VSwitch
93581
- VTable: VTable
93582
93598
  VTab: VTab
93583
93599
  VTabs: VTabs
93584
93600
  VTabsWindow: VTabsWindow
93585
93601
  VTabsWindowItem: VTabsWindowItem
93602
+ VTextarea: VTextarea
93586
93603
  VTextField: VTextField
93587
93604
  VTimeline: VTimeline
93588
93605
  VTimelineItem: VTimelineItem
93589
- VTextarea: VTextarea
93590
93606
  VTreeview: VTreeview
93591
93607
  VTreeviewItem: VTreeviewItem
93592
93608
  VTreeviewGroup: VTreeviewGroup
93593
- VTooltip: VTooltip
93594
- VTimePicker: VTimePicker
93595
- VTimePickerClock: VTimePickerClock
93596
- VTimePickerControls: VTimePickerControls
93597
93609
  VToolbar: VToolbar
93598
93610
  VToolbarTitle: VToolbarTitle
93599
93611
  VToolbarItems: VToolbarItems
93612
+ VTimePicker: VTimePicker
93613
+ VTimePickerClock: VTimePickerClock
93614
+ VTimePickerControls: VTimePickerControls
93615
+ VTooltip: VTooltip
93600
93616
  VWindow: VWindow
93601
93617
  VWindowItem: VWindowItem
93602
- VCarousel: VCarousel
93603
- VCarouselItem: VCarouselItem
93618
+ VBanner: VBanner
93619
+ VBannerActions: VBannerActions
93620
+ VBannerText: VBannerText
93604
93621
  VConfirmEdit: VConfirmEdit
93622
+ VDataIterator: VDataIterator
93605
93623
  VDefaultsProvider: VDefaultsProvider
93606
93624
  VForm: VForm
93607
- VHover: VHover
93608
93625
  VContainer: VContainer
93609
93626
  VCol: VCol
93610
93627
  VRow: VRow
93611
93628
  VSpacer: VSpacer
93629
+ VHover: VHover
93612
93630
  VLayout: VLayout
93613
93631
  VLayoutItem: VLayoutItem
93614
93632
  VLazy: VLazy
@@ -93618,13 +93636,12 @@ declare module 'vue' {
93618
93636
  VRadio: VRadio
93619
93637
  VRangeSlider: VRangeSlider
93620
93638
  VResponsive: VResponsive
93639
+ VSnackbarQueue: VSnackbarQueue
93621
93640
  VSparkline: VSparkline
93622
93641
  VSpeedDial: VSpeedDial
93623
- VSnackbarQueue: VSnackbarQueue
93624
93642
  VThemeProvider: VThemeProvider
93625
- VVirtualScroll: VVirtualScroll
93626
93643
  VValidation: VValidation
93627
- VDataIterator: VDataIterator
93644
+ VVirtualScroll: VVirtualScroll
93628
93645
  VFabTransition: VFabTransition
93629
93646
  VDialogBottomTransition: VDialogBottomTransition
93630
93647
  VDialogTopTransition: VDialogTopTransition
@@ -93641,13 +93658,9 @@ declare module 'vue' {
93641
93658
  VExpandTransition: VExpandTransition
93642
93659
  VExpandXTransition: VExpandXTransition
93643
93660
  VDialogTransition: VDialogTransition
93661
+ VRadioGroup: VRadioGroup
93662
+ VTable: VTable
93644
93663
  VColorInput: VColorInput
93645
- VCalendar: VCalendar
93646
- VCalendarDay: VCalendarDay
93647
- VCalendarHeader: VCalendarHeader
93648
- VCalendarInterval: VCalendarInterval
93649
- VCalendarIntervalEvent: VCalendarIntervalEvent
93650
- VCalendarMonthDay: VCalendarMonthDay
93651
93664
  VFileUpload: VFileUpload
93652
93665
  VFileUploadItem: VFileUploadItem
93653
93666
  VIconBtn: VIconBtn
@@ -93656,6 +93669,13 @@ declare module 'vue' {
93656
93669
  VStepperVertical: VStepperVertical
93657
93670
  VStepperVerticalItem: VStepperVerticalItem
93658
93671
  VStepperVerticalActions: VStepperVerticalActions
93672
+ VHotkey: VHotkey
93673
+ VCalendar: VCalendar
93674
+ VCalendarDay: VCalendarDay
93675
+ VCalendarHeader: VCalendarHeader
93676
+ VCalendarInterval: VCalendarInterval
93677
+ VCalendarIntervalEvent: VCalendarIntervalEvent
93678
+ VCalendarMonthDay: VCalendarMonthDay
93659
93679
  VDateInput: VDateInput
93660
93680
  VMaskInput: VMaskInput
93661
93681
  VPullToRefresh: VPullToRefresh
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.0-beta.1-dev.2025-06-26
2
+ * Vuetify v3.9.0-beta.1-dev.2025-06-28
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -1832,7 +1832,18 @@ const aliases = {
1832
1832
  treeviewExpand: 'mdi-menu-right',
1833
1833
  eyeDropper: 'mdi-eyedropper',
1834
1834
  upload: 'mdi-cloud-upload',
1835
- color: 'mdi-palette'
1835
+ color: 'mdi-palette',
1836
+ command: 'mdi-apple-keyboard-command',
1837
+ ctrl: 'mdi-apple-keyboard-control',
1838
+ space: 'mdi-keyboard-space',
1839
+ shift: 'mdi-apple-keyboard-shift',
1840
+ alt: 'mdi-apple-keyboard-option',
1841
+ enter: 'mdi-keyboard-return',
1842
+ arrowup: 'mdi-arrow-up',
1843
+ arrowdown: 'mdi-arrow-down',
1844
+ arrowleft: 'mdi-arrow-left',
1845
+ arrowright: 'mdi-arrow-right',
1846
+ backspace: 'mdi-backspace'
1836
1847
  };
1837
1848
  const mdi = {
1838
1849
  // Not using mergeProps here, functional components merge props by default (?)
@@ -2628,6 +2639,24 @@ var en = {
2628
2639
  exclude: 'The {0} character is not allowed',
2629
2640
  notEmpty: 'Please choose at least one value',
2630
2641
  pattern: 'Invalid format'
2642
+ },
2643
+ hotkey: {
2644
+ then: 'then',
2645
+ ctrl: 'Ctrl',
2646
+ command: 'Command',
2647
+ space: 'Space',
2648
+ shift: 'Shift',
2649
+ alt: 'Alt',
2650
+ enter: 'Enter',
2651
+ escape: 'Escape',
2652
+ upArrow: 'Up Arrow',
2653
+ downArrow: 'Down Arrow',
2654
+ leftArrow: 'Left Arrow',
2655
+ rightArrow: 'Right Arrow',
2656
+ backspace: 'Backspace',
2657
+ option: 'Option',
2658
+ plus: 'plus',
2659
+ shortcut: 'Keyboard shortcut: {0}'
2631
2660
  }
2632
2661
  };
2633
2662
 
@@ -18351,6 +18380,317 @@ function useDate() {
18351
18380
  return createInstance(options, locale);
18352
18381
  }
18353
18382
 
18383
+ /**
18384
+ * Centralized key alias mapping for consistent key normalization across the hotkey system.
18385
+ *
18386
+ * This maps various user-friendly aliases to canonical key names that match
18387
+ * KeyboardEvent.key values (in lowercase) where possible.
18388
+ */
18389
+ const keyAliasMap = {
18390
+ // Modifier aliases (from vue-use, other libraries, and current implementation)
18391
+ control: 'ctrl',
18392
+ command: 'cmd',
18393
+ option: 'alt',
18394
+ // Arrow key aliases (common abbreviations)
18395
+ up: 'arrowup',
18396
+ down: 'arrowdown',
18397
+ left: 'arrowleft',
18398
+ right: 'arrowright',
18399
+ // Other common key aliases
18400
+ esc: 'escape',
18401
+ spacebar: ' ',
18402
+ space: ' ',
18403
+ return: 'enter',
18404
+ del: 'delete',
18405
+ // Symbol aliases (existing from hotkey-parsing.ts)
18406
+ minus: '-',
18407
+ hyphen: '-'
18408
+ };
18409
+
18410
+ /**
18411
+ * Normalizes a key string to its canonical form using the alias map.
18412
+ *
18413
+ * @param key - The key string to normalize
18414
+ * @returns The canonical key name in lowercase
18415
+ */
18416
+ function normalizeKey(key) {
18417
+ const lowerKey = key.toLowerCase();
18418
+ return keyAliasMap[lowerKey] || lowerKey;
18419
+ }
18420
+
18421
+ // Utilities
18422
+
18423
+ /**
18424
+ * Splits a single combination string into individual key parts.
18425
+ *
18426
+ * A combination is a set of keys that must be pressed simultaneously.
18427
+ * e.g. `ctrl+k`, `shift--`
18428
+ */
18429
+ function splitKeyCombination(combination) {
18430
+ let isInternal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
18431
+ if (!combination) {
18432
+ if (!isInternal) consoleWarn('Invalid hotkey combination: empty string provided');
18433
+ return [];
18434
+ }
18435
+
18436
+ // --- VALIDATION ---
18437
+ const startsWithPlusOrUnderscore = combination.startsWith('+') || combination.startsWith('_');
18438
+ const hasInvalidLeadingSeparator =
18439
+ // Starts with a single '+' or '_' followed by a non-separator character (e.g. '+a', '_a')
18440
+ startsWithPlusOrUnderscore && !(combination.startsWith('++') || combination.startsWith('__'));
18441
+ const hasInvalidStructure =
18442
+ // Invalid leading separator patterns
18443
+ combination.length > 1 && hasInvalidLeadingSeparator ||
18444
+ // Disallow literal + or _ keys (they require shift)
18445
+ combination.includes('++') || combination.includes('__') || combination === '+' || combination === '_' ||
18446
+ // Ends with a separator that is not part of a doubled literal
18447
+ combination.length > 1 && (combination.endsWith('+') || combination.endsWith('_')) && combination.at(-2) !== combination.at(-1) ||
18448
+ // Stand-alone doubled separators (dangling)
18449
+ combination === '++' || combination === '--' || combination === '__';
18450
+ if (hasInvalidStructure) {
18451
+ if (!isInternal) consoleWarn(`Invalid hotkey combination: "${combination}" has invalid structure`);
18452
+ return [];
18453
+ }
18454
+ const keys = [];
18455
+ let buffer = '';
18456
+ const flushBuffer = () => {
18457
+ if (buffer) {
18458
+ keys.push(normalizeKey(buffer));
18459
+ buffer = '';
18460
+ }
18461
+ };
18462
+ for (let i = 0; i < combination.length; i++) {
18463
+ const char = combination[i];
18464
+ const nextChar = combination[i + 1];
18465
+ if (char === '+' || char === '_' || char === '-') {
18466
+ if (char === nextChar) {
18467
+ flushBuffer();
18468
+ keys.push(char);
18469
+ i++;
18470
+ } else if (char === '+' || char === '_') {
18471
+ flushBuffer();
18472
+ } else {
18473
+ buffer += char;
18474
+ }
18475
+ } else {
18476
+ buffer += char;
18477
+ }
18478
+ }
18479
+ flushBuffer();
18480
+
18481
+ // Within a combination, `-` is only valid as a literal key (e.g., `ctrl+-`).
18482
+ // `-` cannot be part of a longer key name within a combination.
18483
+ const hasInvalidMinus = keys.some(key => key.length > 1 && key.includes('-') && key !== '--');
18484
+ if (hasInvalidMinus) {
18485
+ if (!isInternal) consoleWarn(`Invalid hotkey combination: "${combination}" has invalid structure`);
18486
+ return [];
18487
+ }
18488
+ if (keys.length === 0 && combination) {
18489
+ return [normalizeKey(combination)];
18490
+ }
18491
+ return keys;
18492
+ }
18493
+
18494
+ /**
18495
+ * Splits a hotkey string into its constituent combination groups.
18496
+ *
18497
+ * A sequence is a series of combinations that must be pressed in order.
18498
+ * e.g. `a-b`, `ctrl+k-p`
18499
+ */
18500
+ function splitKeySequence(str) {
18501
+ if (!str) {
18502
+ consoleWarn('Invalid hotkey sequence: empty string provided');
18503
+ return [];
18504
+ }
18505
+
18506
+ // A sequence is invalid if it starts or ends with a separator,
18507
+ // unless it is part of a combination (e.g., `shift+-`).
18508
+ const hasInvalidStart = str.startsWith('-') && !['---', '--+'].includes(str);
18509
+ const hasInvalidEnd = str.endsWith('-') && !str.endsWith('+-') && !str.endsWith('_-') && str !== '-' && str !== '---';
18510
+ if (hasInvalidStart || hasInvalidEnd) {
18511
+ consoleWarn(`Invalid hotkey sequence: "${str}" contains invalid combinations`);
18512
+ return [];
18513
+ }
18514
+ const result = [];
18515
+ let buffer = '';
18516
+ let i = 0;
18517
+ while (i < str.length) {
18518
+ const char = str[i];
18519
+ if (char === '-') {
18520
+ // Determine if this hyphen is part of the current combination
18521
+ const prevChar = str[i - 1];
18522
+ const prevPrevChar = i > 1 ? str[i - 2] : undefined;
18523
+ const precededBySinglePlusOrUnderscore = (prevChar === '+' || prevChar === '_') && prevPrevChar !== '+';
18524
+ if (precededBySinglePlusOrUnderscore) {
18525
+ // Treat as part of the combination (e.g., 'ctrl+-')
18526
+ buffer += char;
18527
+ i++;
18528
+ } else {
18529
+ // Treat as sequence separator
18530
+ if (buffer) {
18531
+ result.push(buffer);
18532
+ buffer = '';
18533
+ } else {
18534
+ // Empty buffer means we have a literal '-' key
18535
+ result.push('-');
18536
+ }
18537
+ i++;
18538
+ }
18539
+ } else {
18540
+ buffer += char;
18541
+ i++;
18542
+ }
18543
+ }
18544
+
18545
+ // Add final buffer if it exists
18546
+ if (buffer) {
18547
+ result.push(buffer);
18548
+ }
18549
+
18550
+ // Collapse runs of '-' so that every second '-' is removed
18551
+ const collapsed = [];
18552
+ let minusCount = 0;
18553
+ for (const part of result) {
18554
+ if (part === '-') {
18555
+ if (minusCount % 2 === 0) collapsed.push('-');
18556
+ minusCount++;
18557
+ } else {
18558
+ minusCount = 0;
18559
+ collapsed.push(part);
18560
+ }
18561
+ }
18562
+
18563
+ // Validate that each part of the sequence is a valid combination
18564
+ const areAllValid = collapsed.every(s => splitKeyCombination(s, true).length > 0);
18565
+ if (!areAllValid) {
18566
+ consoleWarn(`Invalid hotkey sequence: "${str}" contains invalid combinations`);
18567
+ return [];
18568
+ }
18569
+ return collapsed;
18570
+ }
18571
+
18572
+ // Composables
18573
+
18574
+ // Types
18575
+
18576
+ function useHotkey(keys, callback) {
18577
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
18578
+ if (!IN_BROWSER) return function () {};
18579
+ const {
18580
+ event = 'keydown',
18581
+ inputs = false,
18582
+ preventDefault = true,
18583
+ sequenceTimeout = 1000
18584
+ } = options;
18585
+ const isMac = navigator?.userAgent?.includes('Macintosh') ?? false;
18586
+ let timeout = 0;
18587
+ let keyGroups;
18588
+ let isSequence = false;
18589
+ let groupIndex = 0;
18590
+ function clearTimer() {
18591
+ if (!timeout) return;
18592
+ clearTimeout(timeout);
18593
+ timeout = 0;
18594
+ }
18595
+ function isInputFocused() {
18596
+ if (toValue(inputs)) return false;
18597
+ const activeElement = document.activeElement;
18598
+ return activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA' || activeElement.isContentEditable || activeElement.contentEditable === 'true');
18599
+ }
18600
+ function resetSequence() {
18601
+ groupIndex = 0;
18602
+ clearTimer();
18603
+ }
18604
+ function handler(e) {
18605
+ const group = keyGroups[groupIndex];
18606
+ if (!group || isInputFocused()) return;
18607
+ if (!matchesKeyGroup(e, group)) {
18608
+ if (isSequence) resetSequence();
18609
+ return;
18610
+ }
18611
+ if (toValue(preventDefault)) e.preventDefault();
18612
+ if (!isSequence) {
18613
+ callback(e);
18614
+ return;
18615
+ }
18616
+ clearTimer();
18617
+ groupIndex++;
18618
+ if (groupIndex === keyGroups.length) {
18619
+ callback(e);
18620
+ resetSequence();
18621
+ return;
18622
+ }
18623
+ timeout = window.setTimeout(resetSequence, toValue(sequenceTimeout));
18624
+ }
18625
+ function cleanup() {
18626
+ window.removeEventListener(toValue(event), handler);
18627
+ clearTimer();
18628
+ }
18629
+ watch(() => toValue(keys), function (unrefKeys) {
18630
+ cleanup();
18631
+ if (unrefKeys) {
18632
+ const groups = splitKeySequence(unrefKeys.toLowerCase());
18633
+ isSequence = groups.length > 1;
18634
+ keyGroups = groups;
18635
+ resetSequence();
18636
+ window.addEventListener(toValue(event), handler);
18637
+ }
18638
+ }, {
18639
+ immediate: true
18640
+ });
18641
+
18642
+ // Watch for changes in the event type to re-register the listener
18643
+ watch(() => toValue(event), function (newEvent, oldEvent) {
18644
+ if (oldEvent && keyGroups && keyGroups.length > 0) {
18645
+ window.removeEventListener(oldEvent, handler);
18646
+ window.addEventListener(newEvent, handler);
18647
+ }
18648
+ });
18649
+ try {
18650
+ getCurrentInstance('useHotkey');
18651
+ onBeforeUnmount(cleanup);
18652
+ } catch {
18653
+ // Not in Vue setup context
18654
+ }
18655
+ function parseKeyGroup(group) {
18656
+ const MODIFIERS = ['ctrl', 'shift', 'alt', 'meta', 'cmd'];
18657
+
18658
+ // Use the shared combination splitting logic
18659
+ const parts = splitKeyCombination(group.toLowerCase());
18660
+
18661
+ // If the combination is invalid, return empty result
18662
+ if (parts.length === 0) {
18663
+ return {
18664
+ modifiers: Object.fromEntries(MODIFIERS.map(m => [m, false])),
18665
+ actualKey: undefined
18666
+ };
18667
+ }
18668
+ const modifiers = Object.fromEntries(MODIFIERS.map(m => [m, false]));
18669
+ let actualKey;
18670
+ for (const part of parts) {
18671
+ if (MODIFIERS.includes(part)) {
18672
+ modifiers[part] = true;
18673
+ } else {
18674
+ actualKey = part;
18675
+ }
18676
+ }
18677
+ return {
18678
+ modifiers,
18679
+ actualKey
18680
+ };
18681
+ }
18682
+ function matchesKeyGroup(e, group) {
18683
+ const {
18684
+ modifiers,
18685
+ actualKey
18686
+ } = parseKeyGroup(group);
18687
+ const expectCtrl = modifiers.ctrl || !isMac && (modifiers.cmd || modifiers.meta);
18688
+ const expectMeta = isMac && (modifiers.cmd || modifiers.meta);
18689
+ return e.ctrlKey === expectCtrl && e.metaKey === expectMeta && e.shiftKey === modifiers.shift && e.altKey === modifiers.alt && e.key.toLowerCase() === actualKey?.toLowerCase();
18690
+ }
18691
+ return cleanup;
18692
+ }
18693
+
18354
18694
  // Types
18355
18695
 
18356
18696
  const makeVColorPickerProps = propsFactory({
@@ -30893,7 +31233,7 @@ function createVuetify$1() {
30893
31233
  };
30894
31234
  });
30895
31235
  }
30896
- const version$1 = "3.9.0-beta.1-dev.2025-06-26";
31236
+ const version$1 = "3.9.0-beta.1-dev.2025-06-28";
30897
31237
  createVuetify$1.version = version$1;
30898
31238
 
30899
31239
  // Vue's inject() can only be used in setup
@@ -30918,8 +31258,8 @@ const createVuetify = function () {
30918
31258
  ...options
30919
31259
  });
30920
31260
  };
30921
- const version = "3.9.0-beta.1-dev.2025-06-26";
31261
+ const version = "3.9.0-beta.1-dev.2025-06-28";
30922
31262
  createVuetify.version = version;
30923
31263
 
30924
- export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
31264
+ export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };
30925
31265
  //# sourceMappingURL=vuetify.esm.js.map