vectis-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +27 -0
- package/README.md +354 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/components/VAccordion/VAccordion.css +2 -0
- package/dist/components/VAccordion/VAccordion.d.ts +59 -0
- package/dist/components/VAccordion/VAccordion.js +9 -0
- package/dist/components/VAccordion/VAccordion.js.map +1 -0
- package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VAccordion/VAccordionItem.css +2 -0
- package/dist/components/VAccordion/VAccordionItem.d.ts +64 -0
- package/dist/components/VAccordion/VAccordionItem.js +9 -0
- package/dist/components/VAccordion/VAccordionItem.js.map +1 -0
- package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VAccordion/context.d.ts +18 -0
- package/dist/components/VAccordion/context.js +6 -0
- package/dist/components/VAccordion/context.js.map +1 -0
- package/dist/components/VAvatar/VAvatar.css +2 -0
- package/dist/components/VAvatar/VAvatar.d.ts +68 -0
- package/dist/components/VAvatar/VAvatar.js +9 -0
- package/dist/components/VAvatar/VAvatar.js.map +1 -0
- package/dist/components/VAvatar/VAvatar.vue_vue_type_script_setup_true_lang.js +87 -0
- package/dist/components/VAvatar/VAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VAvatar/VAvatarGroup.css +2 -0
- package/dist/components/VAvatar/VAvatarGroup.d.ts +59 -0
- package/dist/components/VAvatar/VAvatarGroup.js +9 -0
- package/dist/components/VAvatar/VAvatarGroup.js.map +1 -0
- package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VAvatar/context.d.ts +17 -0
- package/dist/components/VAvatar/context.js +6 -0
- package/dist/components/VAvatar/context.js.map +1 -0
- package/dist/components/VBadge/VBadge.css +2 -0
- package/dist/components/VBadge/VBadge.d.ts +74 -0
- package/dist/components/VBadge/VBadge.js +9 -0
- package/dist/components/VBadge/VBadge.js.map +1 -0
- package/dist/components/VBadge/VBadge.vue_vue_type_script_setup_true_lang.js +40 -0
- package/dist/components/VBadge/VBadge.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VBreadcrumb/VBreadcrumb.css +2 -0
- package/dist/components/VBreadcrumb/VBreadcrumb.d.ts +68 -0
- package/dist/components/VBreadcrumb/VBreadcrumb.js +9 -0
- package/dist/components/VBreadcrumb/VBreadcrumb.js.map +1 -0
- package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VButton/VButton.css +2 -0
- package/dist/components/VButton/VButton.d.ts +88 -0
- package/dist/components/VButton/VButton.js +9 -0
- package/dist/components/VButton/VButton.js.map +1 -0
- package/dist/components/VButton/VButton.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/components/VButton/VButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VButton/VButtonGroup.css +2 -0
- package/dist/components/VButton/VButtonGroup.d.ts +32 -0
- package/dist/components/VButton/VButtonGroup.js +9 -0
- package/dist/components/VButton/VButtonGroup.js.map +1 -0
- package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js +17 -0
- package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCalendar/VCalendar.css +2 -0
- package/dist/components/VCalendar/VCalendar.d.ts +129 -0
- package/dist/components/VCalendar/VCalendar.js +9 -0
- package/dist/components/VCalendar/VCalendar.js.map +1 -0
- package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js +374 -0
- package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCalendar/VCalendarEvent.css +2 -0
- package/dist/components/VCalendar/VCalendarEvent.d.ts +71 -0
- package/dist/components/VCalendar/VCalendarEvent.js +9 -0
- package/dist/components/VCalendar/VCalendarEvent.js.map +1 -0
- package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js +106 -0
- package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCalendar/VCalendarMonth.css +2 -0
- package/dist/components/VCalendar/VCalendarMonth.d.ts +60 -0
- package/dist/components/VCalendar/VCalendarMonth.js +9 -0
- package/dist/components/VCalendar/VCalendarMonth.js.map +1 -0
- package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js +342 -0
- package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCalendar/VCalendarTimeGrid.css +2 -0
- package/dist/components/VCalendar/VCalendarTimeGrid.d.ts +85 -0
- package/dist/components/VCalendar/VCalendarTimeGrid.js +9 -0
- package/dist/components/VCalendar/VCalendarTimeGrid.js.map +1 -0
- package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js +621 -0
- package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCalendar/VCalendarYear.css +2 -0
- package/dist/components/VCalendar/VCalendarYear.d.ts +31 -0
- package/dist/components/VCalendar/VCalendarYear.js +9 -0
- package/dist/components/VCalendar/VCalendarYear.js.map +1 -0
- package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js +76 -0
- package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCalendar/color.d.ts +9 -0
- package/dist/components/VCalendar/color.js +9 -0
- package/dist/components/VCalendar/color.js.map +1 -0
- package/dist/components/VCalendar/edgeStep.d.ts +38 -0
- package/dist/components/VCalendar/edgeStep.js +28 -0
- package/dist/components/VCalendar/edgeStep.js.map +1 -0
- package/dist/components/VCalendar/keyboard.d.ts +78 -0
- package/dist/components/VCalendar/keyboard.js +86 -0
- package/dist/components/VCalendar/keyboard.js.map +1 -0
- package/dist/components/VCalendar/layout.d.ts +355 -0
- package/dist/components/VCalendar/layout.js +292 -0
- package/dist/components/VCalendar/layout.js.map +1 -0
- package/dist/components/VCalendar/types.d.ts +78 -0
- package/dist/components/VCarousel/VCarousel.css +2 -0
- package/dist/components/VCarousel/VCarousel.d.ts +241 -0
- package/dist/components/VCarousel/VCarousel.js +9 -0
- package/dist/components/VCarousel/VCarousel.js.map +1 -0
- package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js +262 -0
- package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCarousel/VCarouselItem.d.ts +41 -0
- package/dist/components/VCarousel/VCarouselItem.js +7 -0
- package/dist/components/VCarousel/VCarouselItem.js.map +1 -0
- package/dist/components/VCarousel/VCarouselItem.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/VCarousel/VCarouselItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCarousel/context.d.ts +23 -0
- package/dist/components/VCarousel/context.js +6 -0
- package/dist/components/VCarousel/context.js.map +1 -0
- package/dist/components/VCheckbox/VCheckbox.css +2 -0
- package/dist/components/VCheckbox/VCheckbox.d.ts +63 -0
- package/dist/components/VCheckbox/VCheckbox.js +9 -0
- package/dist/components/VCheckbox/VCheckbox.js.map +1 -0
- package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VChip/VChip.css +2 -0
- package/dist/components/VChip/VChip.d.ts +120 -0
- package/dist/components/VChip/VChip.js +9 -0
- package/dist/components/VChip/VChip.js.map +1 -0
- package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js +118 -0
- package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCombobox/VCombobox.css +2 -0
- package/dist/components/VCombobox/VCombobox.d.ts +183 -0
- package/dist/components/VCombobox/VCombobox.js +9 -0
- package/dist/components/VCombobox/VCombobox.js.map +1 -0
- package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js +428 -0
- package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCombobox/VComboboxGroup.css +2 -0
- package/dist/components/VCombobox/VComboboxGroup.d.ts +26 -0
- package/dist/components/VCombobox/VComboboxGroup.js +9 -0
- package/dist/components/VCombobox/VComboboxGroup.js.map +1 -0
- package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCombobox/VComboboxOption.css +2 -0
- package/dist/components/VCombobox/VComboboxOption.d.ts +48 -0
- package/dist/components/VCombobox/VComboboxOption.js +9 -0
- package/dist/components/VCombobox/VComboboxOption.js.map +1 -0
- package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCombobox/VComboboxSeparator.css +2 -0
- package/dist/components/VCombobox/VComboboxSeparator.d.ts +3 -0
- package/dist/components/VCombobox/VComboboxSeparator.js +9 -0
- package/dist/components/VCombobox/VComboboxSeparator.js.map +1 -0
- package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js +16 -0
- package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCombobox/infiniteScroll.d.ts +22 -0
- package/dist/components/VCombobox/infiniteScroll.js +28 -0
- package/dist/components/VCombobox/infiniteScroll.js.map +1 -0
- package/dist/components/VDataTable/VDataTable.css +2 -0
- package/dist/components/VDataTable/VDataTable.d.ts +214 -0
- package/dist/components/VDataTable/VDataTable.js +9 -0
- package/dist/components/VDataTable/VDataTable.js.map +1 -0
- package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js +396 -0
- package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VDateInput/VDateInput.css +2 -0
- package/dist/components/VDateInput/VDateInput.d.ts +152 -0
- package/dist/components/VDateInput/VDateInput.js +9 -0
- package/dist/components/VDateInput/VDateInput.js.map +1 -0
- package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js +324 -0
- package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VDatePicker/VDatePicker.css +2 -0
- package/dist/components/VDatePicker/VDatePicker.d.ts +143 -0
- package/dist/components/VDatePicker/VDatePicker.js +9 -0
- package/dist/components/VDatePicker/VDatePicker.js.map +1 -0
- package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js +454 -0
- package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VDatePicker/keyboard.d.ts +56 -0
- package/dist/components/VDatePicker/keyboard.js +26 -0
- package/dist/components/VDatePicker/keyboard.js.map +1 -0
- package/dist/components/VDialog/VDialog.css +2 -0
- package/dist/components/VDialog/VDialog.d.ts +96 -0
- package/dist/components/VDialog/VDialog.js +9 -0
- package/dist/components/VDialog/VDialog.js.map +1 -0
- package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js +134 -0
- package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VDialog/VDialogAlert.d.ts +67 -0
- package/dist/components/VDialog/VDialogAlert.js +7 -0
- package/dist/components/VDialog/VDialogAlert.js.map +1 -0
- package/dist/components/VDialog/VDialogAlert.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/VDialog/VDialogAlert.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VFileInput/VFileInput.css +2 -0
- package/dist/components/VFileInput/VFileInput.d.ts +156 -0
- package/dist/components/VFileInput/VFileInput.js +9 -0
- package/dist/components/VFileInput/VFileInput.js.map +1 -0
- package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js +244 -0
- package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VFileInput/truncate.d.ts +29 -0
- package/dist/components/VFileInput/truncate.js +10 -0
- package/dist/components/VFileInput/truncate.js.map +1 -0
- package/dist/components/VFilePicker/VFilePicker.css +2 -0
- package/dist/components/VFilePicker/VFilePicker.d.ts +203 -0
- package/dist/components/VFilePicker/VFilePicker.js +9 -0
- package/dist/components/VFilePicker/VFilePicker.js.map +1 -0
- package/dist/components/VFilePicker/VFilePicker.vue_vue_type_script_setup_true_lang.js +266 -0
- package/dist/components/VFilePicker/VFilePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VFilePicker/fileKind.d.ts +29 -0
- package/dist/components/VFilePicker/fileKind.js +91 -0
- package/dist/components/VFilePicker/fileKind.js.map +1 -0
- package/dist/components/VHotkeys/VHotkeys.css +2 -0
- package/dist/components/VHotkeys/VHotkeys.d.ts +100 -0
- package/dist/components/VHotkeys/VHotkeys.js +9 -0
- package/dist/components/VHotkeys/VHotkeys.js.map +1 -0
- package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js +76 -0
- package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VHotkeys/platform.d.ts +82 -0
- package/dist/components/VHotkeys/platform.js +115 -0
- package/dist/components/VHotkeys/platform.js.map +1 -0
- package/dist/components/VIcon/VIcon.css +2 -0
- package/dist/components/VIcon/VIcon.d.ts +57 -0
- package/dist/components/VIcon/VIcon.js +9 -0
- package/dist/components/VIcon/VIcon.js.map +1 -0
- package/dist/components/VIcon/VIcon.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/components/VIcon/VIcon.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VIcon/iconProps.d.ts +30 -0
- package/dist/components/VIcon/iconProps.js +6 -0
- package/dist/components/VIcon/iconProps.js.map +1 -0
- package/dist/components/VIcon/icons/arrow_downward.d.ts +5 -0
- package/dist/components/VIcon/icons/arrow_downward.js +9 -0
- package/dist/components/VIcon/icons/arrow_downward.js.map +1 -0
- package/dist/components/VIcon/icons/arrow_downward_alt.d.ts +5 -0
- package/dist/components/VIcon/icons/arrow_downward_alt.js +9 -0
- package/dist/components/VIcon/icons/arrow_downward_alt.js.map +1 -0
- package/dist/components/VIcon/icons/arrow_drop_down.d.ts +5 -0
- package/dist/components/VIcon/icons/arrow_drop_down.js +9 -0
- package/dist/components/VIcon/icons/arrow_drop_down.js.map +1 -0
- package/dist/components/VIcon/icons/arrow_drop_up.d.ts +5 -0
- package/dist/components/VIcon/icons/arrow_drop_up.js +9 -0
- package/dist/components/VIcon/icons/arrow_drop_up.js.map +1 -0
- package/dist/components/VIcon/icons/arrow_left_alt.d.ts +5 -0
- package/dist/components/VIcon/icons/arrow_left_alt.js +9 -0
- package/dist/components/VIcon/icons/arrow_left_alt.js.map +1 -0
- package/dist/components/VIcon/icons/arrow_right_alt.d.ts +5 -0
- package/dist/components/VIcon/icons/arrow_right_alt.js +9 -0
- package/dist/components/VIcon/icons/arrow_right_alt.js.map +1 -0
- package/dist/components/VIcon/icons/arrow_upward.d.ts +5 -0
- package/dist/components/VIcon/icons/arrow_upward.js +9 -0
- package/dist/components/VIcon/icons/arrow_upward.js.map +1 -0
- package/dist/components/VIcon/icons/arrow_upward_alt.d.ts +5 -0
- package/dist/components/VIcon/icons/arrow_upward_alt.js +9 -0
- package/dist/components/VIcon/icons/arrow_upward_alt.js.map +1 -0
- package/dist/components/VIcon/icons/attach_file.d.ts +5 -0
- package/dist/components/VIcon/icons/attach_file.js +9 -0
- package/dist/components/VIcon/icons/attach_file.js.map +1 -0
- package/dist/components/VIcon/icons/audio_file.d.ts +5 -0
- package/dist/components/VIcon/icons/audio_file.js +9 -0
- package/dist/components/VIcon/icons/audio_file.js.map +1 -0
- package/dist/components/VIcon/icons/calendar_today.d.ts +5 -0
- package/dist/components/VIcon/icons/calendar_today.js +9 -0
- package/dist/components/VIcon/icons/calendar_today.js.map +1 -0
- package/dist/components/VIcon/icons/check.d.ts +5 -0
- package/dist/components/VIcon/icons/check.js +9 -0
- package/dist/components/VIcon/icons/check.js.map +1 -0
- package/dist/components/VIcon/icons/check_circle.d.ts +5 -0
- package/dist/components/VIcon/icons/check_circle.js +9 -0
- package/dist/components/VIcon/icons/check_circle.js.map +1 -0
- package/dist/components/VIcon/icons/chevron_left.d.ts +5 -0
- package/dist/components/VIcon/icons/chevron_left.js +9 -0
- package/dist/components/VIcon/icons/chevron_left.js.map +1 -0
- package/dist/components/VIcon/icons/chevron_right.d.ts +5 -0
- package/dist/components/VIcon/icons/chevron_right.js +9 -0
- package/dist/components/VIcon/icons/chevron_right.js.map +1 -0
- package/dist/components/VIcon/icons/close.d.ts +5 -0
- package/dist/components/VIcon/icons/close.js +9 -0
- package/dist/components/VIcon/icons/close.js.map +1 -0
- package/dist/components/VIcon/icons/cloud_upload.d.ts +5 -0
- package/dist/components/VIcon/icons/cloud_upload.js +9 -0
- package/dist/components/VIcon/icons/cloud_upload.js.map +1 -0
- package/dist/components/VIcon/icons/code.d.ts +5 -0
- package/dist/components/VIcon/icons/code.js +9 -0
- package/dist/components/VIcon/icons/code.js.map +1 -0
- package/dist/components/VIcon/icons/description.d.ts +5 -0
- package/dist/components/VIcon/icons/description.js +9 -0
- package/dist/components/VIcon/icons/description.js.map +1 -0
- package/dist/components/VIcon/icons/error.d.ts +5 -0
- package/dist/components/VIcon/icons/error.js +9 -0
- package/dist/components/VIcon/icons/error.js.map +1 -0
- package/dist/components/VIcon/icons/expand_less.d.ts +5 -0
- package/dist/components/VIcon/icons/expand_less.js +9 -0
- package/dist/components/VIcon/icons/expand_less.js.map +1 -0
- package/dist/components/VIcon/icons/expand_more.d.ts +5 -0
- package/dist/components/VIcon/icons/expand_more.js +9 -0
- package/dist/components/VIcon/icons/expand_more.js.map +1 -0
- package/dist/components/VIcon/icons/folder_zip.d.ts +5 -0
- package/dist/components/VIcon/icons/folder_zip.js +9 -0
- package/dist/components/VIcon/icons/folder_zip.js.map +1 -0
- package/dist/components/VIcon/icons/image.d.ts +5 -0
- package/dist/components/VIcon/icons/image.js +9 -0
- package/dist/components/VIcon/icons/image.js.map +1 -0
- package/dist/components/VIcon/icons/index.d.ts +183 -0
- package/dist/components/VIcon/icons/index.js +77 -0
- package/dist/components/VIcon/icons/index.js.map +1 -0
- package/dist/components/VIcon/icons/info.d.ts +5 -0
- package/dist/components/VIcon/icons/info.js +9 -0
- package/dist/components/VIcon/icons/info.js.map +1 -0
- package/dist/components/VIcon/icons/more_horiz.d.ts +5 -0
- package/dist/components/VIcon/icons/more_horiz.js +9 -0
- package/dist/components/VIcon/icons/more_horiz.js.map +1 -0
- package/dist/components/VIcon/icons/names.d.ts +11 -0
- package/dist/components/VIcon/icons/names.js +5 -0
- package/dist/components/VIcon/icons/names.js.map +1 -0
- package/dist/components/VIcon/icons/notifications.d.ts +5 -0
- package/dist/components/VIcon/icons/notifications.js +9 -0
- package/dist/components/VIcon/icons/notifications.js.map +1 -0
- package/dist/components/VIcon/icons/picture_as_pdf.d.ts +5 -0
- package/dist/components/VIcon/icons/picture_as_pdf.js +9 -0
- package/dist/components/VIcon/icons/picture_as_pdf.js.map +1 -0
- package/dist/components/VIcon/icons/schedule.d.ts +5 -0
- package/dist/components/VIcon/icons/schedule.js +9 -0
- package/dist/components/VIcon/icons/schedule.js.map +1 -0
- package/dist/components/VIcon/icons/search.d.ts +5 -0
- package/dist/components/VIcon/icons/search.js +9 -0
- package/dist/components/VIcon/icons/search.js.map +1 -0
- package/dist/components/VIcon/icons/swap_vert.d.ts +5 -0
- package/dist/components/VIcon/icons/swap_vert.js +9 -0
- package/dist/components/VIcon/icons/swap_vert.js.map +1 -0
- package/dist/components/VIcon/icons/table_chart.d.ts +5 -0
- package/dist/components/VIcon/icons/table_chart.js +9 -0
- package/dist/components/VIcon/icons/table_chart.js.map +1 -0
- package/dist/components/VIcon/icons/video_file.d.ts +5 -0
- package/dist/components/VIcon/icons/video_file.js +9 -0
- package/dist/components/VIcon/icons/video_file.js.map +1 -0
- package/dist/components/VIcon/icons/viewBox.d.ts +6 -0
- package/dist/components/VIcon/icons/viewBox.js +6 -0
- package/dist/components/VIcon/icons/viewBox.js.map +1 -0
- package/dist/components/VIcon/icons/warning.d.ts +5 -0
- package/dist/components/VIcon/icons/warning.js +9 -0
- package/dist/components/VIcon/icons/warning.js.map +1 -0
- package/dist/components/VIcon/resolver.d.ts +76 -0
- package/dist/components/VIcon/resolver.js +35 -0
- package/dist/components/VIcon/resolver.js.map +1 -0
- package/dist/components/VIcon/types.d.ts +77 -0
- package/dist/components/VIconButton/VIconButton.css +2 -0
- package/dist/components/VIconButton/VIconButton.d.ts +66 -0
- package/dist/components/VIconButton/VIconButton.js +9 -0
- package/dist/components/VIconButton/VIconButton.js.map +1 -0
- package/dist/components/VIconButton/VIconButton.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/components/VIconButton/VIconButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VInput/VInput.css +2 -0
- package/dist/components/VInput/VInput.d.ts +152 -0
- package/dist/components/VInput/VInput.js +9 -0
- package/dist/components/VInput/VInput.js.map +1 -0
- package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js +185 -0
- package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VInputOTP/VInputOTP.css +2 -0
- package/dist/components/VInputOTP/VInputOTP.d.ts +76 -0
- package/dist/components/VInputOTP/VInputOTP.js +9 -0
- package/dist/components/VInputOTP/VInputOTP.js.map +1 -0
- package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js +149 -0
- package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VMenu/VMenu.d.ts +91 -0
- package/dist/components/VMenu/VMenu.js +7 -0
- package/dist/components/VMenu/VMenu.js.map +1 -0
- package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js +73 -0
- package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VMenu/VMenuGroup.css +2 -0
- package/dist/components/VMenu/VMenuGroup.d.ts +22 -0
- package/dist/components/VMenu/VMenuGroup.js +9 -0
- package/dist/components/VMenu/VMenuGroup.js.map +1 -0
- package/dist/components/VMenu/VMenuGroup.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/VMenu/VMenuGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VMenu/VMenuItem.css +2 -0
- package/dist/components/VMenu/VMenuItem.d.ts +85 -0
- package/dist/components/VMenu/VMenuItem.js +9 -0
- package/dist/components/VMenu/VMenuItem.js.map +1 -0
- package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js +121 -0
- package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VMenu/VMenuPanel.css +2 -0
- package/dist/components/VMenu/VMenuPanel.d.ts +91 -0
- package/dist/components/VMenu/VMenuPanel.js +9 -0
- package/dist/components/VMenu/VMenuPanel.js.map +1 -0
- package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VMenu/VMenuSeparator.css +2 -0
- package/dist/components/VMenu/VMenuSeparator.d.ts +3 -0
- package/dist/components/VMenu/VMenuSeparator.js +9 -0
- package/dist/components/VMenu/VMenuSeparator.js.map +1 -0
- package/dist/components/VMenu/VMenuSeparator.vue_vue_type_script_setup_true_lang.js +13 -0
- package/dist/components/VMenu/VMenuSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VMenu/context.d.ts +33 -0
- package/dist/components/VMenu/context.js +9 -0
- package/dist/components/VMenu/context.js.map +1 -0
- package/dist/components/VPagination/VPagination.css +2 -0
- package/dist/components/VPagination/VPagination.d.ts +103 -0
- package/dist/components/VPagination/VPagination.js +9 -0
- package/dist/components/VPagination/VPagination.js.map +1 -0
- package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js +270 -0
- package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VPopover/VPopover.css +2 -0
- package/dist/components/VPopover/VPopover.d.ts +82 -0
- package/dist/components/VPopover/VPopover.js +9 -0
- package/dist/components/VPopover/VPopover.js.map +1 -0
- package/dist/components/VPopover/VPopover.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/components/VPopover/VPopover.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VProgressCircular/VProgressCircular.css +2 -0
- package/dist/components/VProgressCircular/VProgressCircular.d.ts +60 -0
- package/dist/components/VProgressCircular/VProgressCircular.js +9 -0
- package/dist/components/VProgressCircular/VProgressCircular.js.map +1 -0
- package/dist/components/VProgressCircular/VProgressCircular.vue_vue_type_script_setup_true_lang.js +74 -0
- package/dist/components/VProgressCircular/VProgressCircular.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VProgressLinear/VProgressLinear.css +2 -0
- package/dist/components/VProgressLinear/VProgressLinear.d.ts +74 -0
- package/dist/components/VProgressLinear/VProgressLinear.js +9 -0
- package/dist/components/VProgressLinear/VProgressLinear.js.map +1 -0
- package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js +74 -0
- package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VRadio/VRadio.css +2 -0
- package/dist/components/VRadio/VRadio.d.ts +58 -0
- package/dist/components/VRadio/VRadio.js +9 -0
- package/dist/components/VRadio/VRadio.js.map +1 -0
- package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSeparator/VSeparator.css +2 -0
- package/dist/components/VSeparator/VSeparator.d.ts +23 -0
- package/dist/components/VSeparator/VSeparator.js +9 -0
- package/dist/components/VSeparator/VSeparator.js.map +1 -0
- package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js +17 -0
- package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSideNavigation/VSideNavigation.css +2 -0
- package/dist/components/VSideNavigation/VSideNavigation.d.ts +64 -0
- package/dist/components/VSideNavigation/VSideNavigation.js +9 -0
- package/dist/components/VSideNavigation/VSideNavigation.js.map +1 -0
- package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSideNavigation/VSideNavigationGroup.css +2 -0
- package/dist/components/VSideNavigation/VSideNavigationGroup.d.ts +33 -0
- package/dist/components/VSideNavigation/VSideNavigationGroup.js +9 -0
- package/dist/components/VSideNavigation/VSideNavigationGroup.js.map +1 -0
- package/dist/components/VSideNavigation/VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js +20 -0
- package/dist/components/VSideNavigation/VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSideNavigation/VSideNavigationItem.css +2 -0
- package/dist/components/VSideNavigation/VSideNavigationItem.d.ts +103 -0
- package/dist/components/VSideNavigation/VSideNavigationItem.js +9 -0
- package/dist/components/VSideNavigation/VSideNavigationItem.js.map +1 -0
- package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js +154 -0
- package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSideNavigation/VSideNavigationSeparator.css +2 -0
- package/dist/components/VSideNavigation/VSideNavigationSeparator.d.ts +3 -0
- package/dist/components/VSideNavigation/VSideNavigationSeparator.js +17 -0
- package/dist/components/VSideNavigation/VSideNavigationSeparator.js.map +1 -0
- package/dist/components/VSideNavigation/context.d.ts +37 -0
- package/dist/components/VSideNavigation/context.js +6 -0
- package/dist/components/VSideNavigation/context.js.map +1 -0
- package/dist/components/VSkeletonLoader/VSkeletonLoader.css +2 -0
- package/dist/components/VSkeletonLoader/VSkeletonLoader.d.ts +75 -0
- package/dist/components/VSkeletonLoader/VSkeletonLoader.js +9 -0
- package/dist/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -0
- package/dist/components/VSkeletonLoader/VSkeletonLoader.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/components/VSkeletonLoader/VSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSlider/VSlider.css +2 -0
- package/dist/components/VSlider/VSlider.d.ts +82 -0
- package/dist/components/VSlider/VSlider.js +9 -0
- package/dist/components/VSlider/VSlider.js.map +1 -0
- package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js +220 -0
- package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSnackbar/VSnackbar.css +2 -0
- package/dist/components/VSnackbar/VSnackbar.d.ts +51 -0
- package/dist/components/VSnackbar/VSnackbar.js +9 -0
- package/dist/components/VSnackbar/VSnackbar.js.map +1 -0
- package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSnackbar/state.d.ts +92 -0
- package/dist/components/VSnackbar/state.js +18 -0
- package/dist/components/VSnackbar/state.js.map +1 -0
- package/dist/components/VSpinner/VSpinner.css +2 -0
- package/dist/components/VSpinner/VSpinner.d.ts +21 -0
- package/dist/components/VSpinner/VSpinner.js +9 -0
- package/dist/components/VSpinner/VSpinner.js.map +1 -0
- package/dist/components/VSpinner/VSpinner.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/VSpinner/VSpinner.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSwitch/VSwitch.css +2 -0
- package/dist/components/VSwitch/VSwitch.d.ts +46 -0
- package/dist/components/VSwitch/VSwitch.js +9 -0
- package/dist/components/VSwitch/VSwitch.js.map +1 -0
- package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTabs/VTab.css +2 -0
- package/dist/components/VTabs/VTab.d.ts +42 -0
- package/dist/components/VTabs/VTab.js +9 -0
- package/dist/components/VTabs/VTab.js.map +1 -0
- package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js +66 -0
- package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTabs/VTabPanel.css +2 -0
- package/dist/components/VTabs/VTabPanel.d.ts +34 -0
- package/dist/components/VTabs/VTabPanel.js +9 -0
- package/dist/components/VTabs/VTabPanel.js.map +1 -0
- package/dist/components/VTabs/VTabPanel.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/VTabs/VTabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTabs/VTabs.css +2 -0
- package/dist/components/VTabs/VTabs.d.ts +107 -0
- package/dist/components/VTabs/VTabs.js +9 -0
- package/dist/components/VTabs/VTabs.js.map +1 -0
- package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js +199 -0
- package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTabs/context.d.ts +43 -0
- package/dist/components/VTabs/context.js +6 -0
- package/dist/components/VTabs/context.js.map +1 -0
- package/dist/components/VTextarea/VTextarea.css +2 -0
- package/dist/components/VTextarea/VTextarea.d.ts +140 -0
- package/dist/components/VTextarea/VTextarea.js +9 -0
- package/dist/components/VTextarea/VTextarea.js.map +1 -0
- package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js +187 -0
- package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTimeInput/VTimeInput.css +2 -0
- package/dist/components/VTimeInput/VTimeInput.d.ts +112 -0
- package/dist/components/VTimeInput/VTimeInput.js +9 -0
- package/dist/components/VTimeInput/VTimeInput.js.map +1 -0
- package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js +385 -0
- package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTimePicker/VTimePicker.css +2 -0
- package/dist/components/VTimePicker/VTimePicker.d.ts +89 -0
- package/dist/components/VTimePicker/VTimePicker.js +9 -0
- package/dist/components/VTimePicker/VTimePicker.js.map +1 -0
- package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js +257 -0
- package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VToast/VToast.css +2 -0
- package/dist/components/VToast/VToast.d.ts +24 -0
- package/dist/components/VToast/VToast.js +9 -0
- package/dist/components/VToast/VToast.js.map +1 -0
- package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VToast/VToaster.css +2 -0
- package/dist/components/VToast/VToaster.d.ts +42 -0
- package/dist/components/VToast/VToaster.js +9 -0
- package/dist/components/VToast/VToaster.js.map +1 -0
- package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js +112 -0
- package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VToast/state.d.ts +74 -0
- package/dist/components/VToast/state.js +25 -0
- package/dist/components/VToast/state.js.map +1 -0
- package/dist/components/VToggle/VToggle.css +2 -0
- package/dist/components/VToggle/VToggle.d.ts +84 -0
- package/dist/components/VToggle/VToggle.js +9 -0
- package/dist/components/VToggle/VToggle.js.map +1 -0
- package/dist/components/VToggle/VToggle.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/VToggle/VToggle.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VToggle/VToggleItem.css +2 -0
- package/dist/components/VToggle/VToggleItem.d.ts +35 -0
- package/dist/components/VToggle/VToggleItem.js +9 -0
- package/dist/components/VToggle/VToggleItem.js.map +1 -0
- package/dist/components/VToggle/VToggleItem.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/components/VToggle/VToggleItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VToggle/context.d.ts +37 -0
- package/dist/components/VToggle/context.js +6 -0
- package/dist/components/VToggle/context.js.map +1 -0
- package/dist/components/VTooltip/VTooltip.css +2 -0
- package/dist/components/VTooltip/VTooltip.d.ts +76 -0
- package/dist/components/VTooltip/VTooltip.js +9 -0
- package/dist/components/VTooltip/VTooltip.js.map +1 -0
- package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTypography/VTypography.css +2 -0
- package/dist/components/VTypography/VTypography.d.ts +46 -0
- package/dist/components/VTypography/VTypography.js +9 -0
- package/dist/components/VTypography/VTypography.js.map +1 -0
- package/dist/components/VTypography/VTypography.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/components/VTypography/VTypography.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/composables/useAriaLabel.d.ts +19 -0
- package/dist/composables/useAriaLabel.js +10 -0
- package/dist/composables/useAriaLabel.js.map +1 -0
- package/dist/composables/useFieldIds.d.ts +21 -0
- package/dist/composables/useFieldIds.js +14 -0
- package/dist/composables/useFieldIds.js.map +1 -0
- package/dist/composables/useFieldPanel.d.ts +61 -0
- package/dist/composables/useFieldPanel.js +39 -0
- package/dist/composables/useFieldPanel.js.map +1 -0
- package/dist/composables/useFileDrop.d.ts +30 -0
- package/dist/composables/useFileDrop.js +28 -0
- package/dist/composables/useFileDrop.js.map +1 -0
- package/dist/composables/useFileField.d.ts +36 -0
- package/dist/composables/useFileField.js +45 -0
- package/dist/composables/useFileField.js.map +1 -0
- package/dist/composables/useFocusoutDismiss.d.ts +17 -0
- package/dist/composables/useFocusoutDismiss.js +11 -0
- package/dist/composables/useFocusoutDismiss.js.map +1 -0
- package/dist/composables/useIconClickHandlers.d.ts +27 -0
- package/dist/composables/useIconClickHandlers.js +13 -0
- package/dist/composables/useIconClickHandlers.js.map +1 -0
- package/dist/composables/useMaskedField.d.ts +65 -0
- package/dist/composables/useMaskedField.js +54 -0
- package/dist/composables/useMaskedField.js.map +1 -0
- package/dist/composables/usePopover.d.ts +7 -0
- package/dist/composables/usePopover.js +24 -0
- package/dist/composables/usePopover.js.map +1 -0
- package/dist/composables/useProgressValue.d.ts +13 -0
- package/dist/composables/useProgressValue.js +14 -0
- package/dist/composables/useProgressValue.js.map +1 -0
- package/dist/composables/useRootAttrs.d.ts +34 -0
- package/dist/composables/useRootAttrs.js +15 -0
- package/dist/composables/useRootAttrs.js.map +1 -0
- package/dist/composables/useTextLimit.d.ts +31 -0
- package/dist/composables/useTextLimit.js +19 -0
- package/dist/composables/useTextLimit.js.map +1 -0
- package/dist/composables/useTimer.d.ts +18 -0
- package/dist/composables/useTimer.js +19 -0
- package/dist/composables/useTimer.js.map +1 -0
- package/dist/i18n/en.d.ts +10 -0
- package/dist/i18n/en.js +179 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/fr.d.ts +18 -0
- package/dist/i18n/fr.js +179 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/state.d.ts +64 -0
- package/dist/i18n/state.js +40 -0
- package/dist/i18n/state.js.map +1 -0
- package/dist/i18n/types.d.ts +345 -0
- package/dist/icons.d.ts +16 -0
- package/dist/icons.js +38 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.js +64 -0
- package/dist/styles.css +1 -0
- package/dist/tokens/css.d.ts +25 -0
- package/dist/tokens/css.js +29 -0
- package/dist/tokens/css.js.map +1 -0
- package/dist/tokens/index.d.ts +370 -0
- package/dist/tokens/index.js +15 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/primitives.d.ts +101 -0
- package/dist/tokens/primitives.js +166 -0
- package/dist/tokens/primitives.js.map +1 -0
- package/dist/tokens/semantic.d.ts +236 -0
- package/dist/tokens/semantic.js +219 -0
- package/dist/tokens/semantic.js.map +1 -0
- package/dist/tokens/themes/dark.d.ts +49 -0
- package/dist/tokens/themes/dark.js +53 -0
- package/dist/tokens/themes/dark.js.map +1 -0
- package/dist/tokens/types.d.ts +38 -0
- package/dist/tokens/types.js +16 -0
- package/dist/tokens/types.js.map +1 -0
- package/dist/tokens.json +1516 -0
- package/dist/utils/array.d.ts +10 -0
- package/dist/utils/array.js +8 -0
- package/dist/utils/array.js.map +1 -0
- package/dist/utils/arrowNav.d.ts +27 -0
- package/dist/utils/arrowNav.js +26 -0
- package/dist/utils/arrowNav.js.map +1 -0
- package/dist/utils/chip.d.ts +26 -0
- package/dist/utils/chip.js +13 -0
- package/dist/utils/chip.js.map +1 -0
- package/dist/utils/css.d.ts +19 -0
- package/dist/utils/css.js +13 -0
- package/dist/utils/css.js.map +1 -0
- package/dist/utils/date.d.ts +199 -0
- package/dist/utils/date.js +225 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/direction.d.ts +18 -0
- package/dist/utils/direction.js +8 -0
- package/dist/utils/direction.js.map +1 -0
- package/dist/utils/env.d.ts +10 -0
- package/dist/utils/file.d.ts +95 -0
- package/dist/utils/file.js +70 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/focus.d.ts +24 -0
- package/dist/utils/focus.js +13 -0
- package/dist/utils/focus.js.map +1 -0
- package/dist/utils/matcher.d.ts +13 -0
- package/dist/utils/matcher.js +11 -0
- package/dist/utils/matcher.js.map +1 -0
- package/dist/utils/number.d.ts +9 -0
- package/dist/utils/number.js +8 -0
- package/dist/utils/number.js.map +1 -0
- package/dist/utils/text.d.ts +19 -0
- package/dist/utils/text.js +12 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/time.d.ts +138 -0
- package/dist/utils/time.js +123 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/vnode.d.ts +21 -0
- package/dist/utils/vnode.js +14 -0
- package/dist/utils/vnode.js.map +1 -0
- package/package.json +114 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSideNavigationGroup.js","names":[],"sources":["../../../src/components/VSideNavigation/VSideNavigationGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useId } from 'vue'\n\n/**\n * A named section of the navigation — \"Workspace\", \"Settings\". The name is plain text:\n * it cannot be focused or clicked, and it names the sublist under it for assistive\n * technology.\n *\n * Unlike a menu group, it does NOT claim to be a group in ARIA terms. Such a role\n * cannot be a direct child of a list without breaking what that list is allowed to\n * contain. A NAMED sublist says exactly the same thing in strictly valid HTML — and it\n * gives a group the same shape as a branch, which is what keeps the styling uniform.\n *\n * A group is NOT a level of the hierarchy: it declares neither of the two variables\n * counting the depth, so that count passes through it untouched and the items inside\n * are indented as if the group were not there.\n */\ninterface SideNavigationGroupProps {\n /** The name of the section. The `#label` slot replaces it. */\n label: string\n}\n\ndefineProps<SideNavigationGroupProps>()\n\ndefineSlots<{\n /** The items belonging to this section. */\n default(): unknown\n /** A name made of markup, replacing the `label` prop. */\n label?(): unknown\n}>()\n\nconst labelId = useId()\n</script>\n\n<template>\n <li class=\"v-side-nav-group\">\n <span :id=\"labelId\" class=\"v-side-nav-group-label\"\n ><slot name=\"label\">{{ label }}</slot></span\n >\n <ul class=\"v-side-nav-group-list\" :aria-labelledby=\"labelId\">\n <slot />\n </ul>\n </li>\n</template>\n\n<style>\n@layer vectis.components {\n .v-side-nav-group + .v-side-nav-group,\n .v-side-nav-item + .v-side-nav-group {\n margin-block-start: var(--vectis-space-3);\n }\n\n /*\n * The section heading takes the overline type role, without forcing capitals: how\n * the label is written is the consumer's decision.\n *\n * Its indent and its height are the rows' own recipe, so a heading occupies exactly\n * the height of a row — compact included — and the vertical rhythm of the list is\n * not broken by it. The type is the one thing staying outside that scale, which is\n * why the text has to be centred vertically by hand.\n *\n * TRAP — the indent repeats the rows' computation rather than sharing a variable\n * with them, and it has to: a custom property is substituted on the element that\n * DECLARES it, so a shared one set higher up would be frozen at level zero.\n */\n .v-side-nav-group-label {\n display: flex;\n align-items: center;\n min-block-size: var(--control-height);\n padding-block: var(--vectis-space-1);\n padding-inline: calc(\n var(--control-padding-inline) + var(--side-nav-level, 0) * var(--side-nav-indent)\n )\n var(--control-padding-inline);\n font-size: var(--vectis-text-overline-size);\n font-weight: var(--vectis-text-overline-weight);\n letter-spacing: var(--vectis-text-overline-tracking);\n color: var(--vectis-color-text-muted);\n }\n}\n</style>\n"],"mappings":""}
|
package/dist/components/VSideNavigation/VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createElementBlock as e, createElementVNode as t, createTextVNode as n, defineComponent as r, openBlock as i, renderSlot as a, toDisplayString as o, unref as s, useId as c } from "vue";
|
|
2
|
+
//#region src/components/VSideNavigation/VSideNavigationGroup.vue?vue&type=script&setup=true&lang.ts
|
|
3
|
+
var l = { class: "v-side-nav-group" }, u = ["id"], d = ["aria-labelledby"], f = /*@__PURE__*/ r({
|
|
4
|
+
__name: "VSideNavigationGroup",
|
|
5
|
+
props: { label: {} },
|
|
6
|
+
setup(r) {
|
|
7
|
+
let f = c();
|
|
8
|
+
return (c, p) => (i(), e("li", l, [t("span", {
|
|
9
|
+
id: s(f),
|
|
10
|
+
class: "v-side-nav-group-label"
|
|
11
|
+
}, [a(c.$slots, "label", {}, () => [n(o(r.label), 1)])], 8, u), t("ul", {
|
|
12
|
+
class: "v-side-nav-group-list",
|
|
13
|
+
"aria-labelledby": s(f)
|
|
14
|
+
}, [a(c.$slots, "default")], 8, d)]));
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
//#endregion
|
|
18
|
+
export { f as default };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VSideNavigation/VSideNavigationGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useId } from 'vue'\n\n/**\n * A named section of the navigation — \"Workspace\", \"Settings\". The name is plain text:\n * it cannot be focused or clicked, and it names the sublist under it for assistive\n * technology.\n *\n * Unlike a menu group, it does NOT claim to be a group in ARIA terms. Such a role\n * cannot be a direct child of a list without breaking what that list is allowed to\n * contain. A NAMED sublist says exactly the same thing in strictly valid HTML — and it\n * gives a group the same shape as a branch, which is what keeps the styling uniform.\n *\n * A group is NOT a level of the hierarchy: it declares neither of the two variables\n * counting the depth, so that count passes through it untouched and the items inside\n * are indented as if the group were not there.\n */\ninterface SideNavigationGroupProps {\n /** The name of the section. The `#label` slot replaces it. */\n label: string\n}\n\ndefineProps<SideNavigationGroupProps>()\n\ndefineSlots<{\n /** The items belonging to this section. */\n default(): unknown\n /** A name made of markup, replacing the `label` prop. */\n label?(): unknown\n}>()\n\nconst labelId = useId()\n</script>\n\n<template>\n <li class=\"v-side-nav-group\">\n <span :id=\"labelId\" class=\"v-side-nav-group-label\"\n ><slot name=\"label\">{{ label }}</slot></span\n >\n <ul class=\"v-side-nav-group-list\" :aria-labelledby=\"labelId\">\n <slot />\n </ul>\n </li>\n</template>\n\n<style>\n@layer vectis.components {\n .v-side-nav-group + .v-side-nav-group,\n .v-side-nav-item + .v-side-nav-group {\n margin-block-start: var(--vectis-space-3);\n }\n\n /*\n * The section heading takes the overline type role, without forcing capitals: how\n * the label is written is the consumer's decision.\n *\n * Its indent and its height are the rows' own recipe, so a heading occupies exactly\n * the height of a row — compact included — and the vertical rhythm of the list is\n * not broken by it. The type is the one thing staying outside that scale, which is\n * why the text has to be centred vertically by hand.\n *\n * TRAP — the indent repeats the rows' computation rather than sharing a variable\n * with them, and it has to: a custom property is substituted on the element that\n * DECLARES it, so a shared one set higher up would be frozen at level zero.\n */\n .v-side-nav-group-label {\n display: flex;\n align-items: center;\n min-block-size: var(--control-height);\n padding-block: var(--vectis-space-1);\n padding-inline: calc(\n var(--control-padding-inline) + var(--side-nav-level, 0) * var(--side-nav-indent)\n )\n var(--control-padding-inline);\n font-size: var(--vectis-text-overline-size);\n font-weight: var(--vectis-text-overline-weight);\n letter-spacing: var(--vectis-text-overline-tracking);\n color: var(--vectis-color-text-muted);\n }\n}\n</style>\n"],"mappings":";;;;;;EA+BA,IAAM,IAAU,EAAM;yBAIpB,EAOK,MAPL,GAOK,CANH,EAEC,QAAA;GAFM,IAAI,EAAA,CAAA;GAAS,OAAM;MACvB,EAAqC,EAAA,QAAA,SAAA,CAAA,SAAA,CAAA,EAAA,EAAf,EAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,GAAA,CAAA,GAE9B,EAEK,MAAA;GAFD,OAAM;GAAyB,mBAAiB,EAAA,CAAA;MAClD,EAAQ,EAAA,QAAA,SAAA,CAAA,GAAA,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
|
|
2
|
+
@layer vectis.components{.v-side-nav-item{--side-nav-parent-level:var(--side-nav-level,0)}.v-side-nav-children{--side-nav-level:calc(var(--side-nav-parent-level) + 1)}.v-side-nav-branch{min-inline-size:0}.v-side-nav-row{align-items:center;gap:var(--control-gap);min-block-size:var(--control-height);padding-block:var(--vectis-space-1);padding-inline:calc(var(--control-padding-inline) + var(--side-nav-level,0) * var(--side-nav-indent)) var(--control-padding-inline);border-radius:var(--vectis-radius-sm);color:var(--vectis-color-text);font-size:var(--control-font-size);line-height:var(--vectis-text-body-md-leading);cursor:pointer;list-style:none;display:flex;position:relative}.v-side-nav-row::-webkit-details-marker{display:none}.v-side-nav-action{align-items:center;gap:var(--control-gap);min-inline-size:0;color:inherit;font-family:inherit;font-size:inherit;line-height:inherit;text-align:start;cursor:inherit;background:0 0;border:none;flex:1;padding:0;text-decoration:none;display:flex}.v-side-nav-action:after{content:"";border-radius:var(--vectis-radius-sm);position:absolute;inset:0}.v-side-nav-content{flex-direction:column;flex:1;min-inline-size:0;display:flex}.v-side-nav-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.v-side-nav-sublabel{font-size:var(--vectis-text-caption-size);color:var(--vectis-color-text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.v-side-nav-icon{color:var(--vectis-color-text-muted);flex:none}.v-side-nav-end{align-items:center;gap:var(--vectis-space-1);flex:none;display:flex;position:relative}.v-side-nav-chevron{color:var(--vectis-color-text-muted);transition:rotate var(--vectis-duration-base) var(--vectis-ease-default);flex:none}.v-side-nav-branch[open]:not([data-swap])>.v-side-nav-row>.v-side-nav-chevron{rotate:180deg}.v-side-nav-branch[data-swap][open]>.v-side-nav-row>.v-side-nav-chevron:not(.v-side-nav-chevron-open),.v-side-nav-branch[data-swap]:not([open])>.v-side-nav-row>.v-side-nav-chevron-open{display:none}.v-side-nav-row:hover:not([data-disabled]){background:var(--vectis-color-surface-muted)}.v-side-nav-row:focus-visible,.v-side-nav-action:focus-visible:after{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:calc(var(--vectis-focus-ring-offset) * -1)}.v-side-nav-action:focus-visible{outline:none}.v-side-nav-row[data-active]{background:var(--vectis-color-accent-surface);color:var(--vectis-color-accent-text)}.v-side-nav-row[data-active] .v-side-nav-label{font-weight:var(--vectis-text-label-weight)}.v-side-nav-row[data-active] .v-side-nav-icon,.v-side-nav-row[data-active] .v-side-nav-sublabel,.v-side-nav-row[data-active] .v-side-nav-chevron{color:inherit}.v-side-nav-row[data-active]:hover{background:color-mix(in oklab, var(--vectis-color-accent-surface), var(--vectis-color-accent-text) 8%)}.v-side-nav-branch:not([open]):has(.v-side-nav-children [aria-current])>.v-side-nav-row:not([data-active]){color:var(--vectis-color-accent-text)}.v-side-nav-row[data-disabled]{color:var(--vectis-color-text-subtle);cursor:not-allowed}.v-side-nav-row[data-disabled] .v-side-nav-icon,.v-side-nav-row[data-disabled] .v-side-nav-sublabel,.v-side-nav-row[data-disabled] .v-side-nav-chevron{color:inherit}.v-side-nav-branch::details-content{block-size:0;transition:block-size var(--vectis-duration-base) var(--vectis-ease-default), content-visibility var(--vectis-duration-base) allow-discrete;overflow:clip}.v-side-nav-branch[open]::details-content{block-size:auto}@media (prefers-reduced-motion:reduce){.v-side-nav-chevron{transition:none}.v-side-nav-branch::details-content{transition:none}}}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { IconSource } from '../VIcon/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* One row of a sidebar navigation. It takes one of two shapes, depending on whether it
|
|
4
|
+
* was given subitems, and the difference runs deeper than it looks.
|
|
5
|
+
*
|
|
6
|
+
* A BRANCH is a native disclosure element, so its open state, the keyboard that
|
|
7
|
+
* toggles it, the closing of a neighbouring section and the animation all come from
|
|
8
|
+
* the browser. Its row IS the header of that element, which must contain everything
|
|
9
|
+
* shown on the line — the `#end` slot included, which is why a click there has to be
|
|
10
|
+
* cancelled: otherwise anything put in it would fold the branch. The consequence,
|
|
11
|
+
* documented for integrators, is that only NON-focusable content belongs there — a
|
|
12
|
+
* badge, a counter. A control inside would be a control nested inside another, and the
|
|
13
|
+
* header's whole subtree also serves as its name for assistive technology, which some
|
|
14
|
+
* screen readers flatten into one string.
|
|
15
|
+
*
|
|
16
|
+
* A LEAF is the opposite arrangement: the row is a plain container, and the link is
|
|
17
|
+
* stretched over it invisibly so the entire row is clickable. The `#end` slot then
|
|
18
|
+
* stays a SIBLING of that link rather than sitting inside it, which keeps a real
|
|
19
|
+
* control there legitimate.
|
|
20
|
+
*/
|
|
21
|
+
interface SideNavigationItemProps {
|
|
22
|
+
/** A second line under the label, for a status or a short explanation. */
|
|
23
|
+
sublabel?: string;
|
|
24
|
+
/**
|
|
25
|
+
* An icon before the label: an icon name, or an explicit render. The `#start` slot
|
|
26
|
+
* replaces it.
|
|
27
|
+
*/
|
|
28
|
+
icon?: IconSource;
|
|
29
|
+
/**
|
|
30
|
+
* Where this row leads, which makes it a link. It is IGNORED on a row that has
|
|
31
|
+
* subitems: such a row opens and closes rather than navigating.
|
|
32
|
+
*/
|
|
33
|
+
href?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Marks this row as the page currently being viewed. It is highlighted, and
|
|
36
|
+
* announced as the current page.
|
|
37
|
+
*/
|
|
38
|
+
active?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Makes the row unusable: it greys out through the colour tokens and leaves the
|
|
41
|
+
* keyboard path.
|
|
42
|
+
*/
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Renders a branch already open. It sets the initial state only; the browser owns it
|
|
46
|
+
* from then on.
|
|
47
|
+
*/
|
|
48
|
+
defaultOpen?: boolean;
|
|
49
|
+
}
|
|
50
|
+
type __VLS_Props = SideNavigationItemProps;
|
|
51
|
+
type __VLS_Slots = {
|
|
52
|
+
/** The label of the row. It is REQUIRED: a navigation row must say where it goes. */
|
|
53
|
+
default(): unknown;
|
|
54
|
+
/** A second line made of markup, replacing the `sublabel` prop. */
|
|
55
|
+
sublabel?(): unknown;
|
|
56
|
+
/** Free content before the label, which takes the place of `icon`. */
|
|
57
|
+
start?(): unknown;
|
|
58
|
+
/**
|
|
59
|
+
* Free content at the end of the row, before the chevron — a counter, a badge. On a
|
|
60
|
+
* BRANCH it must not be focusable (see the introduction).
|
|
61
|
+
*/
|
|
62
|
+
end?(): unknown;
|
|
63
|
+
/** The subitems, which turn this row into a branch. Nesting is not limited. */
|
|
64
|
+
items?(): unknown;
|
|
65
|
+
};
|
|
66
|
+
type __VLS_ModelProps = {
|
|
67
|
+
/**
|
|
68
|
+
* Whether the branch is open, when the consumer wants to drive or observe it.
|
|
69
|
+
*
|
|
70
|
+
* Left unbound, the browser keeps that state entirely to itself, `defaultOpen` giving
|
|
71
|
+
* only the initial value: the bound value never changes, so Vue never patches the
|
|
72
|
+
* element back, and the native toggling stays sovereign.
|
|
73
|
+
*
|
|
74
|
+
* TRAP — "not bound" is written as `null` and not `undefined`. A model typed as a
|
|
75
|
+
* plain boolean is declared as such at runtime, and Vue casts an ABSENT boolean prop
|
|
76
|
+
* to `false`, which would silently overwrite `defaultOpen` on every branch. Giving it
|
|
77
|
+
* an explicit default disarms that cast.
|
|
78
|
+
*/
|
|
79
|
+
'open'?: boolean | null;
|
|
80
|
+
};
|
|
81
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
82
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
83
|
+
select: () => any;
|
|
84
|
+
"update:open": (value: boolean | null) => any;
|
|
85
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
86
|
+
onSelect?: (() => any) | undefined;
|
|
87
|
+
"onUpdate:open"?: ((value: boolean | null) => any) | undefined;
|
|
88
|
+
}>, {
|
|
89
|
+
href: string;
|
|
90
|
+
disabled: boolean;
|
|
91
|
+
icon: IconSource;
|
|
92
|
+
sublabel: string;
|
|
93
|
+
defaultOpen: boolean;
|
|
94
|
+
active: boolean;
|
|
95
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
96
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
97
|
+
declare const _default: typeof __VLS_export;
|
|
98
|
+
export default _default;
|
|
99
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
100
|
+
new (): {
|
|
101
|
+
$slots: S;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './VSideNavigationItem.css';
|
|
2
|
+
import e from "./VSideNavigationItem.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/VSideNavigation/VSideNavigationItem.vue
|
|
5
|
+
var t = e;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { t as default };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=VSideNavigationItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSideNavigationItem.js","names":[],"sources":["../../../src/components/VSideNavigation/VSideNavigationItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, provide, useId, useSlots } from 'vue'\n\nimport VIcon from '../VIcon/VIcon.vue'\nimport { iconProps } from '../VIcon/iconProps'\nimport { expand_more as expandMoreIcon } from '../VIcon/icons/expand_more'\nimport type { IconSource } from '../VIcon/types'\nimport { sideNavigationKey } from './context'\n\nimport { useRootAttrs } from '../../composables/useRootAttrs'\n\n/**\n * One row of a sidebar navigation. It takes one of two shapes, depending on whether it\n * was given subitems, and the difference runs deeper than it looks.\n *\n * A BRANCH is a native disclosure element, so its open state, the keyboard that\n * toggles it, the closing of a neighbouring section and the animation all come from\n * the browser. Its row IS the header of that element, which must contain everything\n * shown on the line — the `#end` slot included, which is why a click there has to be\n * cancelled: otherwise anything put in it would fold the branch. The consequence,\n * documented for integrators, is that only NON-focusable content belongs there — a\n * badge, a counter. A control inside would be a control nested inside another, and the\n * header's whole subtree also serves as its name for assistive technology, which some\n * screen readers flatten into one string.\n *\n * A LEAF is the opposite arrangement: the row is a plain container, and the link is\n * stretched over it invisibly so the entire row is clickable. The `#end` slot then\n * stays a SIBLING of that link rather than sitting inside it, which keeps a real\n * control there legitimate.\n */\ninterface SideNavigationItemProps {\n /** A second line under the label, for a status or a short explanation. */\n sublabel?: string\n /**\n * An icon before the label: an icon name, or an explicit render. The `#start` slot\n * replaces it.\n */\n icon?: IconSource\n /**\n * Where this row leads, which makes it a link. It is IGNORED on a row that has\n * subitems: such a row opens and closes rather than navigating.\n */\n href?: string\n /**\n * Marks this row as the page currently being viewed. It is highlighted, and\n * announced as the current page.\n */\n active?: boolean\n /**\n * Makes the row unusable: it greys out through the colour tokens and leaves the\n * keyboard path.\n */\n disabled?: boolean\n /**\n * Renders a branch already open. It sets the initial state only; the browser owns it\n * from then on.\n */\n defaultOpen?: boolean\n}\n\n// The root element is a list item, which is structure and not the control. Without\n// redirecting them, `target`, `rel`, `download` and the aria-* would land on that list\n// item instead of on the link or the branch header.\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<SideNavigationItemProps>(), {\n sublabel: undefined,\n icon: undefined,\n href: undefined,\n active: false,\n disabled: false,\n defaultOpen: false,\n})\n\n/**\n * Whether the branch is open, when the consumer wants to drive or observe it.\n *\n * Left unbound, the browser keeps that state entirely to itself, `defaultOpen` giving\n * only the initial value: the bound value never changes, so Vue never patches the\n * element back, and the native toggling stays sovereign.\n *\n * TRAP — \"not bound\" is written as `null` and not `undefined`. A model typed as a\n * plain boolean is declared as such at runtime, and Vue casts an ABSENT boolean prop\n * to `false`, which would silently overwrite `defaultOpen` on every branch. Giving it\n * an explicit default disarms that cast.\n */\nconst open = defineModel<boolean | null>('open', { default: null })\n\nconst emit = defineEmits<{\n /**\n * A row WITHOUT subitems was activated, by click or by keyboard.\n *\n * TRAP — never declare a `click` emit alongside it. Vue removes a declared event\n * from the forwarded attributes, and a consumer's own `@click` would then stop\n * reaching the link entirely.\n */\n select: []\n}>()\n\ndefineSlots<{\n /** The label of the row. It is REQUIRED: a navigation row must say where it goes. */\n default(): unknown\n /** A second line made of markup, replacing the `sublabel` prop. */\n sublabel?(): unknown\n /** Free content before the label, which takes the place of `icon`. */\n start?(): unknown\n /**\n * Free content at the end of the row, before the chevron — a counter, a badge. On a\n * BRANCH it must not be focusable (see the introduction).\n */\n end?(): unknown\n /** The subitems, which turn this row into a branch. Nesting is not limited. */\n items?(): unknown\n}>()\n\nconst { rootClass, rootStyle, forwardedAttrs } = useRootAttrs()\n\nconst slots = useSlots()\n/**\n * Whether this row has subitems, read from the mere PRESENCE of the slot — the same\n * device VMenuItem and VTabs use. The answer is the same on the server and in the\n * browser, so there is no registry to fill in and no hydration mismatch.\n *\n * The trade-off is that a slot present but empty still makes the row a branch, chevron\n * included, over an empty list.\n */\nconst hasChildren = computed(() => !!slots.items)\nconst tag = computed(() =>\n !hasChildren.value && props.href !== undefined ? ('a' as const) : ('button' as const),\n)\n\nconst parent = inject(sideNavigationKey, null)\n\n/**\n * Both chevrons are chosen on the navigation as a whole. The fallback is what keeps an\n * item rendering correctly when it is used outside one.\n */\nconst expandIcon = computed(() => parent?.expandIcon ?? expandMoreIcon)\nconst collapseIcon = computed(() => parent?.collapseIcon)\n\n// The name shared by THIS row's children. It is minted afresh at every level, and that\n// is what keeps \"one section open at a time\" local to a level instead of applying\n// across the whole document.\nconst childrenName = useId()\n\nprovide(sideNavigationKey, {\n get name() {\n return parent?.exclusive ? childrenName : undefined\n },\n get exclusive() {\n return parent?.exclusive ?? false\n },\n get expandIcon() {\n return expandIcon.value\n },\n get collapseIcon() {\n return collapseIcon.value\n },\n})\n\nconst openAttr = computed(() => (open.value ?? props.defaultOpen) || undefined)\n\n// The element is the source of truth and the model is fed BY it, never the other way\n// round. The event it fires does not bubble, which is convenient here: listening on\n// the element itself cannot pick up a nested branch opening inside it.\nfunction onToggle(event: Event) {\n const value = (event.target as HTMLDetailsElement).open\n if (open.value !== value) open.value = value\n}\n\nconst ariaCurrent = computed(() =>\n props.active ? (tag.value === 'a' && !hasChildren.value ? 'page' : 'true') : undefined,\n)\n\n/*\n * A branch header has no `disabled` attribute of its own, so cancelling the click is\n * the only way to stop it from folding. The keyboard needs nothing here: taking the\n * header out of the tab order already covers it.\n *\n * The same solution as VAccordionItem, and deliberately not `pointer-events: none`,\n * which would also remove the forbidden cursor telling the reader why nothing happens.\n */\nfunction onSummaryClick(event: MouseEvent) {\n if (props.disabled) event.preventDefault()\n}\n\n/*\n * A branch's end slot sits INSIDE the header, so a click there would fold the branch.\n * Stopping the event from travelling would not help: folding is not a listener anyone\n * registered, it is the click's DEFAULT action, and only cancelling that prevents it.\n *\n * The exception is a click that already landed on something activable. There the click\n * belongs to that control, the branch is not concerned, and cancelling the default\n * would break its own behaviour — a link would stop navigating. The same filter as in\n * `useFieldPanel`, for the same reason.\n */\nfunction onEndClick(event: MouseEvent) {\n const target = event.target as Element | null\n if (!target?.closest('button, a, input, select, textarea, [tabindex]')) event.preventDefault()\n}\n\nfunction onActionClick(event: MouseEvent) {\n // A disabled button never receives the click at all; a link made inert by hand does,\n // so it is cancelled here.\n if (props.disabled) {\n event.preventDefault()\n return\n }\n emit('select')\n}\n</script>\n\n<template>\n <li class=\"v-side-nav-item\" :class=\"rootClass\" :style=\"rootStyle\">\n <details\n v-if=\"hasChildren\"\n class=\"v-side-nav-branch\"\n :name=\"parent?.name\"\n :open=\"openAttr\"\n :data-swap=\"collapseIcon ? '' : undefined\"\n @toggle=\"onToggle\"\n >\n <summary\n v-bind=\"forwardedAttrs\"\n class=\"v-side-nav-row\"\n :data-active=\"active ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :aria-current=\"ariaCurrent\"\n :aria-disabled=\"disabled || undefined\"\n :tabindex=\"disabled ? -1 : undefined\"\n @click=\"onSummaryClick\"\n >\n <slot name=\"start\">\n <VIcon v-if=\"icon\" class=\"v-side-nav-icon\" v-bind=\"iconProps(icon)\" />\n </slot>\n <span class=\"v-side-nav-content\">\n <span class=\"v-side-nav-label\"><slot /></span>\n <span v-if=\"sublabel !== undefined || $slots.sublabel\" class=\"v-side-nav-sublabel\">\n <slot name=\"sublabel\">{{ sublabel }}</slot>\n </span>\n </span>\n <!-- This slot sits INSIDE the branch header, where ANY click folds the\n branch: without the handler, clicking a badge would close the section\n under it -->\n <span v-if=\"$slots.end\" class=\"v-side-nav-end\" @click=\"onEndClick\"\n ><slot name=\"end\"\n /></span>\n <VIcon class=\"v-side-nav-chevron\" v-bind=\"iconProps(expandIcon)\" />\n <!-- Both chevrons are always in the DOM; the open state decides which one\n shows, in CSS alone — the VAccordion idiom -->\n <VIcon\n v-if=\"collapseIcon\"\n class=\"v-side-nav-chevron v-side-nav-chevron-open\"\n v-bind=\"iconProps(collapseIcon)\"\n />\n </summary>\n <ul class=\"v-side-nav-children\">\n <slot name=\"items\" />\n </ul>\n </details>\n\n <div\n v-else\n class=\"v-side-nav-row\"\n :data-active=\"active ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <component\n :is=\"tag\"\n v-bind=\"forwardedAttrs\"\n class=\"v-side-nav-action\"\n :type=\"tag === 'button' ? 'button' : undefined\"\n :disabled=\"tag === 'button' ? disabled : undefined\"\n :href=\"tag === 'a' && !disabled ? href : undefined\"\n :aria-disabled=\"tag === 'a' && disabled ? 'true' : undefined\"\n :aria-current=\"ariaCurrent\"\n @click=\"onActionClick\"\n >\n <slot name=\"start\">\n <VIcon v-if=\"icon\" class=\"v-side-nav-icon\" v-bind=\"iconProps(icon)\" />\n </slot>\n <span class=\"v-side-nav-content\">\n <span class=\"v-side-nav-label\"><slot /></span>\n <span v-if=\"sublabel !== undefined || $slots.sublabel\" class=\"v-side-nav-sublabel\">\n <slot name=\"sublabel\">{{ sublabel }}</slot>\n </span>\n </span>\n </component>\n <span v-if=\"$slots.end\" class=\"v-side-nav-end\"><slot name=\"end\" /></span>\n </div>\n </li>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * How deep an item sits, counted entirely in CSS: no registry, nothing provided down\n * the tree, no inline style, and no `level` prop for the consumer to keep track of.\n * The markup gives two elements per level — the item, then the list of its children —\n * and each of them reads a name the other DECLARES.\n *\n * TRAP — the obvious one-name form, incrementing a variable by reading itself, is a\n * CYCLE as far as CSS is concerned, even though the value being read is the inherited\n * one. The property then falls to invalid, every read falls back to zero, and the\n * whole tree renders FLAT — with nothing in the console to say why. The two\n * alternating names are what avoid it.\n */\n .v-side-nav-item {\n --side-nav-parent-level: var(--side-nav-level, 0);\n }\n\n .v-side-nav-children {\n --side-nav-level: calc(var(--side-nav-parent-level) + 1);\n }\n\n .v-side-nav-branch {\n /* Lets a long label wrap rather than widening the whole sidebar. The folding\n animation itself is further down. */\n min-inline-size: 0;\n }\n\n .v-side-nav-row {\n /*\n * Every dimension comes from the variables the nav sets and this row inherits — it\n * is the only element carrying the shared size class. The icons follow with nothing\n * written for them, their own variables belonging to that same block.\n *\n * The type is composite, as in a menu row: the SIZE comes from the scale, but the\n * line height stays that of body text — a unitless ratio, so it still follows the\n * size — and the weight stays regular. The full `control` type role would suit a\n * single-line label, and a navigation row may wrap and carry a second line.\n *\n * TRAP — the indent is computed HERE and not stored in a variable set higher up. A\n * custom property is substituted on the element that DECLARES it, so a padding\n * computed on the nav would be frozen at level zero for the whole tree.\n */\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--control-gap);\n min-block-size: var(--control-height);\n padding-block: var(--vectis-space-1);\n padding-inline: calc(\n var(--control-padding-inline) + var(--side-nav-level, 0) * var(--side-nav-indent)\n )\n var(--control-padding-inline);\n border-radius: var(--vectis-radius-sm);\n color: var(--vectis-color-text);\n font-size: var(--control-font-size);\n line-height: var(--vectis-text-body-md-leading);\n list-style: none;\n cursor: pointer;\n }\n\n /* Removing the browser's own disclosure triangle: setting the list style is not\n enough in WebKit, which draws it through this pseudo-element. */\n .v-side-nav-row::-webkit-details-marker {\n display: none;\n }\n\n .v-side-nav-action {\n /* On a leaf the link is a CHILD of the row, and the indent deliberately stays on\n the row itself: what has to run the full width is the hover background, not the\n link inside it. */\n flex: 1;\n min-inline-size: 0;\n display: flex;\n align-items: center;\n gap: var(--control-gap);\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n text-align: start;\n text-decoration: none;\n cursor: inherit;\n }\n\n /*\n * This is what stretches the link over the WHOLE row without having to wrap the end\n * slot inside it. It is an invisible box, positioned, so it is painted above the\n * chevron — which is not positioned — while passing UNDER the end slot, which is\n * positioned too and comes later in the document. That layering is exactly what\n * makes the whole row clickable while leaving a control in the end slot usable.\n */\n .v-side-nav-action::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--vectis-radius-sm);\n }\n\n .v-side-nav-content {\n flex: 1;\n min-inline-size: 0;\n display: flex;\n flex-direction: column;\n }\n\n .v-side-nav-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-side-nav-sublabel {\n overflow: hidden;\n font-size: var(--vectis-text-caption-size);\n color: var(--vectis-color-text-muted);\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-side-nav-icon {\n flex: none;\n color: var(--vectis-color-text-muted);\n }\n\n /* Positioned on purpose: that is what paints it above the stretched link, and\n therefore what keeps whatever it holds clickable. */\n .v-side-nav-end {\n position: relative;\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--vectis-space-1);\n }\n\n /* The chevron points down when the branch is closed and flips when it opens. It\n turns around a horizontal axis, so unlike VMenu's sideways chevron it needs no\n mirroring in a right-to-left page. */\n .v-side-nav-chevron {\n flex: none;\n color: var(--vectis-color-text-muted);\n transition: rotate var(--vectis-duration-base) var(--vectis-ease-default);\n }\n\n .v-side-nav-branch[open]:not([data-swap]) > .v-side-nav-row > .v-side-nav-chevron {\n rotate: 180deg;\n }\n\n /* When the navigation supplied a second chevron, each state hides one of the two\n rendered icons instead of rotating a single one. */\n .v-side-nav-branch[data-swap][open]\n > .v-side-nav-row\n > .v-side-nav-chevron:not(.v-side-nav-chevron-open),\n .v-side-nav-branch[data-swap]:not([open]) > .v-side-nav-row > .v-side-nav-chevron-open {\n display: none;\n }\n\n .v-side-nav-row:hover:not([data-disabled]) {\n background: var(--vectis-color-surface-muted);\n }\n\n /*\n * A branch header takes focus itself; a leaf only takes it through its link, and the\n * ring is then drawn on the stretched box so that it frames the whole row rather than\n * just the text.\n *\n * The ring is pulled INWARDS in both cases: the content of a branch is clipped so it\n * can be animated open, and a ring drawn outside the row would be cut off there.\n */\n .v-side-nav-row:focus-visible,\n .v-side-nav-action:focus-visible::after {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: calc(var(--vectis-focus-ring-offset) * -1);\n }\n\n .v-side-nav-action:focus-visible {\n outline: none;\n }\n\n /* The row of the page currently being viewed. */\n .v-side-nav-row[data-active] {\n background: var(--vectis-color-accent-surface);\n color: var(--vectis-color-accent-text);\n }\n\n .v-side-nav-row[data-active] .v-side-nav-label {\n font-weight: var(--vectis-text-label-weight);\n }\n\n .v-side-nav-row[data-active] .v-side-nav-icon,\n .v-side-nav-row[data-active] .v-side-nav-sublabel,\n .v-side-nav-row[data-active] .v-side-nav-chevron {\n color: inherit;\n }\n\n .v-side-nav-row[data-active]:hover {\n /* The current row is already tinted, so its hover deepens that tint rather than\n replacing it with the neutral highlight — the VMenuItem idiom. */\n background: color-mix(\n in oklab,\n var(--vectis-color-accent-surface),\n var(--vectis-color-accent-text) 8%\n );\n }\n\n /* A CLOSED branch holding the current page keeps a mark of it, so the reader can see\n where they are without opening every section. The lookup is deliberately a\n descendant one: the page may be several levels down. */\n .v-side-nav-branch:not([open]):has(.v-side-nav-children [aria-current])\n > .v-side-nav-row:not([data-active]) {\n color: var(--vectis-color-accent-text);\n }\n\n /* A disabled row greys out through the colour tokens, never through opacity. */\n .v-side-nav-row[data-disabled] {\n color: var(--vectis-color-text-subtle);\n cursor: not-allowed;\n }\n\n /* The icon, the second line and the chevron default to a colour DARKER than the one\n a disabled label takes: left alone they would come out stronger than the label\n itself, so they inherit it instead. */\n .v-side-nav-row[data-disabled] .v-side-nav-icon,\n .v-side-nav-row[data-disabled] .v-side-nav-sublabel,\n .v-side-nav-row[data-disabled] .v-side-nav-chevron {\n color: inherit;\n }\n\n /* The opening animates in pure CSS, on the box the browser wraps a branch's content\n in. A browser without support opens the branch instantly, which is the intended\n fallback. */\n .v-side-nav-branch::details-content {\n block-size: 0;\n overflow: clip;\n transition:\n block-size var(--vectis-duration-base) var(--vectis-ease-default),\n content-visibility var(--vectis-duration-base) allow-discrete;\n }\n\n .v-side-nav-branch[open]::details-content {\n block-size: auto;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-side-nav-chevron,\n .v-side-nav-branch::details-content {\n transition: none;\n }\n }\n}\n</style>\n"],"mappings":""}
|
package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import e from "../VIcon/VIcon.js";
|
|
2
|
+
import { iconProps as t } from "../VIcon/iconProps.js";
|
|
3
|
+
import { expand_more as n } from "../VIcon/icons/expand_more.js";
|
|
4
|
+
import { useRootAttrs as r } from "../../composables/useRootAttrs.js";
|
|
5
|
+
import { sideNavigationKey as i } from "./context.js";
|
|
6
|
+
import { computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, inject as p, mergeModels as m, mergeProps as h, normalizeClass as g, normalizeStyle as _, openBlock as v, provide as y, renderSlot as b, resolveDynamicComponent as x, toDisplayString as S, unref as C, useId as w, useModel as T, useSlots as ee, withCtx as E } from "vue";
|
|
7
|
+
//#region src/components/VSideNavigation/VSideNavigationItem.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
+
var D = [
|
|
9
|
+
"name",
|
|
10
|
+
"open",
|
|
11
|
+
"data-swap"
|
|
12
|
+
], O = [
|
|
13
|
+
"data-active",
|
|
14
|
+
"data-disabled",
|
|
15
|
+
"aria-current",
|
|
16
|
+
"aria-disabled",
|
|
17
|
+
"tabindex"
|
|
18
|
+
], k = { class: "v-side-nav-content" }, A = { class: "v-side-nav-label" }, j = {
|
|
19
|
+
key: 0,
|
|
20
|
+
class: "v-side-nav-sublabel"
|
|
21
|
+
}, M = { class: "v-side-nav-children" }, N = ["data-active", "data-disabled"], P = { class: "v-side-nav-content" }, F = { class: "v-side-nav-label" }, I = {
|
|
22
|
+
key: 0,
|
|
23
|
+
class: "v-side-nav-sublabel"
|
|
24
|
+
}, L = {
|
|
25
|
+
key: 0,
|
|
26
|
+
class: "v-side-nav-end"
|
|
27
|
+
}, R = /*@__PURE__*/ f({
|
|
28
|
+
inheritAttrs: !1,
|
|
29
|
+
__name: "VSideNavigationItem",
|
|
30
|
+
props: /*@__PURE__*/ m({
|
|
31
|
+
sublabel: { default: void 0 },
|
|
32
|
+
icon: { default: void 0 },
|
|
33
|
+
href: { default: void 0 },
|
|
34
|
+
active: {
|
|
35
|
+
type: Boolean,
|
|
36
|
+
default: !1
|
|
37
|
+
},
|
|
38
|
+
disabled: {
|
|
39
|
+
type: Boolean,
|
|
40
|
+
default: !1
|
|
41
|
+
},
|
|
42
|
+
defaultOpen: {
|
|
43
|
+
type: Boolean,
|
|
44
|
+
default: !1
|
|
45
|
+
}
|
|
46
|
+
}, {
|
|
47
|
+
open: {
|
|
48
|
+
type: [Boolean, null],
|
|
49
|
+
default: null
|
|
50
|
+
},
|
|
51
|
+
openModifiers: {}
|
|
52
|
+
}),
|
|
53
|
+
emits: /*@__PURE__*/ m(["select"], ["update:open"]),
|
|
54
|
+
setup(f, { emit: m }) {
|
|
55
|
+
let R = f, z = T(f, "open"), B = m, { rootClass: V, rootStyle: H, forwardedAttrs: U } = r(), W = ee(), G = a(() => !!W.items), K = a(() => !G.value && R.href !== void 0 ? "a" : "button"), q = p(i, null), J = a(() => q?.expandIcon ?? n), Y = a(() => q?.collapseIcon), X = w();
|
|
56
|
+
y(i, {
|
|
57
|
+
get name() {
|
|
58
|
+
return q?.exclusive ? X : void 0;
|
|
59
|
+
},
|
|
60
|
+
get exclusive() {
|
|
61
|
+
return q?.exclusive ?? !1;
|
|
62
|
+
},
|
|
63
|
+
get expandIcon() {
|
|
64
|
+
return J.value;
|
|
65
|
+
},
|
|
66
|
+
get collapseIcon() {
|
|
67
|
+
return Y.value;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
let Z = a(() => (z.value ?? R.defaultOpen) || void 0);
|
|
71
|
+
function Q(e) {
|
|
72
|
+
let t = e.target.open;
|
|
73
|
+
z.value !== t && (z.value = t);
|
|
74
|
+
}
|
|
75
|
+
let $ = a(() => R.active ? K.value === "a" && !G.value ? "page" : "true" : void 0);
|
|
76
|
+
function te(e) {
|
|
77
|
+
R.disabled && e.preventDefault();
|
|
78
|
+
}
|
|
79
|
+
function ne(e) {
|
|
80
|
+
e.target?.closest("button, a, input, select, textarea, [tabindex]") || e.preventDefault();
|
|
81
|
+
}
|
|
82
|
+
function re(e) {
|
|
83
|
+
if (R.disabled) {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
B("select");
|
|
88
|
+
}
|
|
89
|
+
return (n, r) => (v(), c("li", {
|
|
90
|
+
class: g(["v-side-nav-item", C(V)]),
|
|
91
|
+
style: _(C(H))
|
|
92
|
+
}, [G.value ? (v(), c("details", {
|
|
93
|
+
key: 0,
|
|
94
|
+
class: "v-side-nav-branch",
|
|
95
|
+
name: C(q)?.name,
|
|
96
|
+
open: Z.value,
|
|
97
|
+
"data-swap": Y.value ? "" : void 0,
|
|
98
|
+
onToggle: Q
|
|
99
|
+
}, [l("summary", h(C(U), {
|
|
100
|
+
class: "v-side-nav-row",
|
|
101
|
+
"data-active": f.active ? "" : void 0,
|
|
102
|
+
"data-disabled": f.disabled ? "" : void 0,
|
|
103
|
+
"aria-current": $.value,
|
|
104
|
+
"aria-disabled": f.disabled || void 0,
|
|
105
|
+
tabindex: f.disabled ? -1 : void 0,
|
|
106
|
+
onClick: te
|
|
107
|
+
}), [
|
|
108
|
+
b(n.$slots, "start", {}, () => [f.icon ? (v(), o(e, h({
|
|
109
|
+
key: 0,
|
|
110
|
+
class: "v-side-nav-icon"
|
|
111
|
+
}, C(t)(f.icon)), null, 16)) : s("", !0)]),
|
|
112
|
+
l("span", k, [l("span", A, [b(n.$slots, "default")]), f.sublabel !== void 0 || n.$slots.sublabel ? (v(), c("span", j, [b(n.$slots, "sublabel", {}, () => [u(S(f.sublabel), 1)])])) : s("", !0)]),
|
|
113
|
+
n.$slots.end ? (v(), c("span", {
|
|
114
|
+
key: 0,
|
|
115
|
+
class: "v-side-nav-end",
|
|
116
|
+
onClick: ne
|
|
117
|
+
}, [b(n.$slots, "end")])) : s("", !0),
|
|
118
|
+
d(e, h({ class: "v-side-nav-chevron" }, C(t)(J.value)), null, 16),
|
|
119
|
+
Y.value ? (v(), o(e, h({
|
|
120
|
+
key: 1,
|
|
121
|
+
class: "v-side-nav-chevron v-side-nav-chevron-open"
|
|
122
|
+
}, C(t)(Y.value)), null, 16)) : s("", !0)
|
|
123
|
+
], 16, O), l("ul", M, [b(n.$slots, "items")])], 40, D)) : (v(), c("div", {
|
|
124
|
+
key: 1,
|
|
125
|
+
class: "v-side-nav-row",
|
|
126
|
+
"data-active": f.active ? "" : void 0,
|
|
127
|
+
"data-disabled": f.disabled ? "" : void 0
|
|
128
|
+
}, [(v(), o(x(K.value), h(C(U), {
|
|
129
|
+
class: "v-side-nav-action",
|
|
130
|
+
type: K.value === "button" ? "button" : void 0,
|
|
131
|
+
disabled: K.value === "button" ? f.disabled : void 0,
|
|
132
|
+
href: K.value === "a" && !f.disabled ? f.href : void 0,
|
|
133
|
+
"aria-disabled": K.value === "a" && f.disabled ? "true" : void 0,
|
|
134
|
+
"aria-current": $.value,
|
|
135
|
+
onClick: re
|
|
136
|
+
}), {
|
|
137
|
+
default: E(() => [b(n.$slots, "start", {}, () => [f.icon ? (v(), o(e, h({
|
|
138
|
+
key: 0,
|
|
139
|
+
class: "v-side-nav-icon"
|
|
140
|
+
}, C(t)(f.icon)), null, 16)) : s("", !0)]), l("span", P, [l("span", F, [b(n.$slots, "default")]), f.sublabel !== void 0 || n.$slots.sublabel ? (v(), c("span", I, [b(n.$slots, "sublabel", {}, () => [u(S(f.sublabel), 1)])])) : s("", !0)])]),
|
|
141
|
+
_: 3
|
|
142
|
+
}, 16, [
|
|
143
|
+
"type",
|
|
144
|
+
"disabled",
|
|
145
|
+
"href",
|
|
146
|
+
"aria-disabled",
|
|
147
|
+
"aria-current"
|
|
148
|
+
])), n.$slots.end ? (v(), c("span", L, [b(n.$slots, "end")])) : s("", !0)], 8, N))], 6));
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
//#endregion
|
|
152
|
+
export { R as default };
|
|
153
|
+
|
|
154
|
+
//# sourceMappingURL=VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSideNavigationItem.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/VSideNavigation/VSideNavigationItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, provide, useId, useSlots } from 'vue'\n\nimport VIcon from '../VIcon/VIcon.vue'\nimport { iconProps } from '../VIcon/iconProps'\nimport { expand_more as expandMoreIcon } from '../VIcon/icons/expand_more'\nimport type { IconSource } from '../VIcon/types'\nimport { sideNavigationKey } from './context'\n\nimport { useRootAttrs } from '../../composables/useRootAttrs'\n\n/**\n * One row of a sidebar navigation. It takes one of two shapes, depending on whether it\n * was given subitems, and the difference runs deeper than it looks.\n *\n * A BRANCH is a native disclosure element, so its open state, the keyboard that\n * toggles it, the closing of a neighbouring section and the animation all come from\n * the browser. Its row IS the header of that element, which must contain everything\n * shown on the line — the `#end` slot included, which is why a click there has to be\n * cancelled: otherwise anything put in it would fold the branch. The consequence,\n * documented for integrators, is that only NON-focusable content belongs there — a\n * badge, a counter. A control inside would be a control nested inside another, and the\n * header's whole subtree also serves as its name for assistive technology, which some\n * screen readers flatten into one string.\n *\n * A LEAF is the opposite arrangement: the row is a plain container, and the link is\n * stretched over it invisibly so the entire row is clickable. The `#end` slot then\n * stays a SIBLING of that link rather than sitting inside it, which keeps a real\n * control there legitimate.\n */\ninterface SideNavigationItemProps {\n /** A second line under the label, for a status or a short explanation. */\n sublabel?: string\n /**\n * An icon before the label: an icon name, or an explicit render. The `#start` slot\n * replaces it.\n */\n icon?: IconSource\n /**\n * Where this row leads, which makes it a link. It is IGNORED on a row that has\n * subitems: such a row opens and closes rather than navigating.\n */\n href?: string\n /**\n * Marks this row as the page currently being viewed. It is highlighted, and\n * announced as the current page.\n */\n active?: boolean\n /**\n * Makes the row unusable: it greys out through the colour tokens and leaves the\n * keyboard path.\n */\n disabled?: boolean\n /**\n * Renders a branch already open. It sets the initial state only; the browser owns it\n * from then on.\n */\n defaultOpen?: boolean\n}\n\n// The root element is a list item, which is structure and not the control. Without\n// redirecting them, `target`, `rel`, `download` and the aria-* would land on that list\n// item instead of on the link or the branch header.\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<SideNavigationItemProps>(), {\n sublabel: undefined,\n icon: undefined,\n href: undefined,\n active: false,\n disabled: false,\n defaultOpen: false,\n})\n\n/**\n * Whether the branch is open, when the consumer wants to drive or observe it.\n *\n * Left unbound, the browser keeps that state entirely to itself, `defaultOpen` giving\n * only the initial value: the bound value never changes, so Vue never patches the\n * element back, and the native toggling stays sovereign.\n *\n * TRAP — \"not bound\" is written as `null` and not `undefined`. A model typed as a\n * plain boolean is declared as such at runtime, and Vue casts an ABSENT boolean prop\n * to `false`, which would silently overwrite `defaultOpen` on every branch. Giving it\n * an explicit default disarms that cast.\n */\nconst open = defineModel<boolean | null>('open', { default: null })\n\nconst emit = defineEmits<{\n /**\n * A row WITHOUT subitems was activated, by click or by keyboard.\n *\n * TRAP — never declare a `click` emit alongside it. Vue removes a declared event\n * from the forwarded attributes, and a consumer's own `@click` would then stop\n * reaching the link entirely.\n */\n select: []\n}>()\n\ndefineSlots<{\n /** The label of the row. It is REQUIRED: a navigation row must say where it goes. */\n default(): unknown\n /** A second line made of markup, replacing the `sublabel` prop. */\n sublabel?(): unknown\n /** Free content before the label, which takes the place of `icon`. */\n start?(): unknown\n /**\n * Free content at the end of the row, before the chevron — a counter, a badge. On a\n * BRANCH it must not be focusable (see the introduction).\n */\n end?(): unknown\n /** The subitems, which turn this row into a branch. Nesting is not limited. */\n items?(): unknown\n}>()\n\nconst { rootClass, rootStyle, forwardedAttrs } = useRootAttrs()\n\nconst slots = useSlots()\n/**\n * Whether this row has subitems, read from the mere PRESENCE of the slot — the same\n * device VMenuItem and VTabs use. The answer is the same on the server and in the\n * browser, so there is no registry to fill in and no hydration mismatch.\n *\n * The trade-off is that a slot present but empty still makes the row a branch, chevron\n * included, over an empty list.\n */\nconst hasChildren = computed(() => !!slots.items)\nconst tag = computed(() =>\n !hasChildren.value && props.href !== undefined ? ('a' as const) : ('button' as const),\n)\n\nconst parent = inject(sideNavigationKey, null)\n\n/**\n * Both chevrons are chosen on the navigation as a whole. The fallback is what keeps an\n * item rendering correctly when it is used outside one.\n */\nconst expandIcon = computed(() => parent?.expandIcon ?? expandMoreIcon)\nconst collapseIcon = computed(() => parent?.collapseIcon)\n\n// The name shared by THIS row's children. It is minted afresh at every level, and that\n// is what keeps \"one section open at a time\" local to a level instead of applying\n// across the whole document.\nconst childrenName = useId()\n\nprovide(sideNavigationKey, {\n get name() {\n return parent?.exclusive ? childrenName : undefined\n },\n get exclusive() {\n return parent?.exclusive ?? false\n },\n get expandIcon() {\n return expandIcon.value\n },\n get collapseIcon() {\n return collapseIcon.value\n },\n})\n\nconst openAttr = computed(() => (open.value ?? props.defaultOpen) || undefined)\n\n// The element is the source of truth and the model is fed BY it, never the other way\n// round. The event it fires does not bubble, which is convenient here: listening on\n// the element itself cannot pick up a nested branch opening inside it.\nfunction onToggle(event: Event) {\n const value = (event.target as HTMLDetailsElement).open\n if (open.value !== value) open.value = value\n}\n\nconst ariaCurrent = computed(() =>\n props.active ? (tag.value === 'a' && !hasChildren.value ? 'page' : 'true') : undefined,\n)\n\n/*\n * A branch header has no `disabled` attribute of its own, so cancelling the click is\n * the only way to stop it from folding. The keyboard needs nothing here: taking the\n * header out of the tab order already covers it.\n *\n * The same solution as VAccordionItem, and deliberately not `pointer-events: none`,\n * which would also remove the forbidden cursor telling the reader why nothing happens.\n */\nfunction onSummaryClick(event: MouseEvent) {\n if (props.disabled) event.preventDefault()\n}\n\n/*\n * A branch's end slot sits INSIDE the header, so a click there would fold the branch.\n * Stopping the event from travelling would not help: folding is not a listener anyone\n * registered, it is the click's DEFAULT action, and only cancelling that prevents it.\n *\n * The exception is a click that already landed on something activable. There the click\n * belongs to that control, the branch is not concerned, and cancelling the default\n * would break its own behaviour — a link would stop navigating. The same filter as in\n * `useFieldPanel`, for the same reason.\n */\nfunction onEndClick(event: MouseEvent) {\n const target = event.target as Element | null\n if (!target?.closest('button, a, input, select, textarea, [tabindex]')) event.preventDefault()\n}\n\nfunction onActionClick(event: MouseEvent) {\n // A disabled button never receives the click at all; a link made inert by hand does,\n // so it is cancelled here.\n if (props.disabled) {\n event.preventDefault()\n return\n }\n emit('select')\n}\n</script>\n\n<template>\n <li class=\"v-side-nav-item\" :class=\"rootClass\" :style=\"rootStyle\">\n <details\n v-if=\"hasChildren\"\n class=\"v-side-nav-branch\"\n :name=\"parent?.name\"\n :open=\"openAttr\"\n :data-swap=\"collapseIcon ? '' : undefined\"\n @toggle=\"onToggle\"\n >\n <summary\n v-bind=\"forwardedAttrs\"\n class=\"v-side-nav-row\"\n :data-active=\"active ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :aria-current=\"ariaCurrent\"\n :aria-disabled=\"disabled || undefined\"\n :tabindex=\"disabled ? -1 : undefined\"\n @click=\"onSummaryClick\"\n >\n <slot name=\"start\">\n <VIcon v-if=\"icon\" class=\"v-side-nav-icon\" v-bind=\"iconProps(icon)\" />\n </slot>\n <span class=\"v-side-nav-content\">\n <span class=\"v-side-nav-label\"><slot /></span>\n <span v-if=\"sublabel !== undefined || $slots.sublabel\" class=\"v-side-nav-sublabel\">\n <slot name=\"sublabel\">{{ sublabel }}</slot>\n </span>\n </span>\n <!-- This slot sits INSIDE the branch header, where ANY click folds the\n branch: without the handler, clicking a badge would close the section\n under it -->\n <span v-if=\"$slots.end\" class=\"v-side-nav-end\" @click=\"onEndClick\"\n ><slot name=\"end\"\n /></span>\n <VIcon class=\"v-side-nav-chevron\" v-bind=\"iconProps(expandIcon)\" />\n <!-- Both chevrons are always in the DOM; the open state decides which one\n shows, in CSS alone — the VAccordion idiom -->\n <VIcon\n v-if=\"collapseIcon\"\n class=\"v-side-nav-chevron v-side-nav-chevron-open\"\n v-bind=\"iconProps(collapseIcon)\"\n />\n </summary>\n <ul class=\"v-side-nav-children\">\n <slot name=\"items\" />\n </ul>\n </details>\n\n <div\n v-else\n class=\"v-side-nav-row\"\n :data-active=\"active ? '' : undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n >\n <component\n :is=\"tag\"\n v-bind=\"forwardedAttrs\"\n class=\"v-side-nav-action\"\n :type=\"tag === 'button' ? 'button' : undefined\"\n :disabled=\"tag === 'button' ? disabled : undefined\"\n :href=\"tag === 'a' && !disabled ? href : undefined\"\n :aria-disabled=\"tag === 'a' && disabled ? 'true' : undefined\"\n :aria-current=\"ariaCurrent\"\n @click=\"onActionClick\"\n >\n <slot name=\"start\">\n <VIcon v-if=\"icon\" class=\"v-side-nav-icon\" v-bind=\"iconProps(icon)\" />\n </slot>\n <span class=\"v-side-nav-content\">\n <span class=\"v-side-nav-label\"><slot /></span>\n <span v-if=\"sublabel !== undefined || $slots.sublabel\" class=\"v-side-nav-sublabel\">\n <slot name=\"sublabel\">{{ sublabel }}</slot>\n </span>\n </span>\n </component>\n <span v-if=\"$slots.end\" class=\"v-side-nav-end\"><slot name=\"end\" /></span>\n </div>\n </li>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * How deep an item sits, counted entirely in CSS: no registry, nothing provided down\n * the tree, no inline style, and no `level` prop for the consumer to keep track of.\n * The markup gives two elements per level — the item, then the list of its children —\n * and each of them reads a name the other DECLARES.\n *\n * TRAP — the obvious one-name form, incrementing a variable by reading itself, is a\n * CYCLE as far as CSS is concerned, even though the value being read is the inherited\n * one. The property then falls to invalid, every read falls back to zero, and the\n * whole tree renders FLAT — with nothing in the console to say why. The two\n * alternating names are what avoid it.\n */\n .v-side-nav-item {\n --side-nav-parent-level: var(--side-nav-level, 0);\n }\n\n .v-side-nav-children {\n --side-nav-level: calc(var(--side-nav-parent-level) + 1);\n }\n\n .v-side-nav-branch {\n /* Lets a long label wrap rather than widening the whole sidebar. The folding\n animation itself is further down. */\n min-inline-size: 0;\n }\n\n .v-side-nav-row {\n /*\n * Every dimension comes from the variables the nav sets and this row inherits — it\n * is the only element carrying the shared size class. The icons follow with nothing\n * written for them, their own variables belonging to that same block.\n *\n * The type is composite, as in a menu row: the SIZE comes from the scale, but the\n * line height stays that of body text — a unitless ratio, so it still follows the\n * size — and the weight stays regular. The full `control` type role would suit a\n * single-line label, and a navigation row may wrap and carry a second line.\n *\n * TRAP — the indent is computed HERE and not stored in a variable set higher up. A\n * custom property is substituted on the element that DECLARES it, so a padding\n * computed on the nav would be frozen at level zero for the whole tree.\n */\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--control-gap);\n min-block-size: var(--control-height);\n padding-block: var(--vectis-space-1);\n padding-inline: calc(\n var(--control-padding-inline) + var(--side-nav-level, 0) * var(--side-nav-indent)\n )\n var(--control-padding-inline);\n border-radius: var(--vectis-radius-sm);\n color: var(--vectis-color-text);\n font-size: var(--control-font-size);\n line-height: var(--vectis-text-body-md-leading);\n list-style: none;\n cursor: pointer;\n }\n\n /* Removing the browser's own disclosure triangle: setting the list style is not\n enough in WebKit, which draws it through this pseudo-element. */\n .v-side-nav-row::-webkit-details-marker {\n display: none;\n }\n\n .v-side-nav-action {\n /* On a leaf the link is a CHILD of the row, and the indent deliberately stays on\n the row itself: what has to run the full width is the hover background, not the\n link inside it. */\n flex: 1;\n min-inline-size: 0;\n display: flex;\n align-items: center;\n gap: var(--control-gap);\n padding: 0;\n border: none;\n background: transparent;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n text-align: start;\n text-decoration: none;\n cursor: inherit;\n }\n\n /*\n * This is what stretches the link over the WHOLE row without having to wrap the end\n * slot inside it. It is an invisible box, positioned, so it is painted above the\n * chevron — which is not positioned — while passing UNDER the end slot, which is\n * positioned too and comes later in the document. That layering is exactly what\n * makes the whole row clickable while leaving a control in the end slot usable.\n */\n .v-side-nav-action::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--vectis-radius-sm);\n }\n\n .v-side-nav-content {\n flex: 1;\n min-inline-size: 0;\n display: flex;\n flex-direction: column;\n }\n\n .v-side-nav-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-side-nav-sublabel {\n overflow: hidden;\n font-size: var(--vectis-text-caption-size);\n color: var(--vectis-color-text-muted);\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-side-nav-icon {\n flex: none;\n color: var(--vectis-color-text-muted);\n }\n\n /* Positioned on purpose: that is what paints it above the stretched link, and\n therefore what keeps whatever it holds clickable. */\n .v-side-nav-end {\n position: relative;\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--vectis-space-1);\n }\n\n /* The chevron points down when the branch is closed and flips when it opens. It\n turns around a horizontal axis, so unlike VMenu's sideways chevron it needs no\n mirroring in a right-to-left page. */\n .v-side-nav-chevron {\n flex: none;\n color: var(--vectis-color-text-muted);\n transition: rotate var(--vectis-duration-base) var(--vectis-ease-default);\n }\n\n .v-side-nav-branch[open]:not([data-swap]) > .v-side-nav-row > .v-side-nav-chevron {\n rotate: 180deg;\n }\n\n /* When the navigation supplied a second chevron, each state hides one of the two\n rendered icons instead of rotating a single one. */\n .v-side-nav-branch[data-swap][open]\n > .v-side-nav-row\n > .v-side-nav-chevron:not(.v-side-nav-chevron-open),\n .v-side-nav-branch[data-swap]:not([open]) > .v-side-nav-row > .v-side-nav-chevron-open {\n display: none;\n }\n\n .v-side-nav-row:hover:not([data-disabled]) {\n background: var(--vectis-color-surface-muted);\n }\n\n /*\n * A branch header takes focus itself; a leaf only takes it through its link, and the\n * ring is then drawn on the stretched box so that it frames the whole row rather than\n * just the text.\n *\n * The ring is pulled INWARDS in both cases: the content of a branch is clipped so it\n * can be animated open, and a ring drawn outside the row would be cut off there.\n */\n .v-side-nav-row:focus-visible,\n .v-side-nav-action:focus-visible::after {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: calc(var(--vectis-focus-ring-offset) * -1);\n }\n\n .v-side-nav-action:focus-visible {\n outline: none;\n }\n\n /* The row of the page currently being viewed. */\n .v-side-nav-row[data-active] {\n background: var(--vectis-color-accent-surface);\n color: var(--vectis-color-accent-text);\n }\n\n .v-side-nav-row[data-active] .v-side-nav-label {\n font-weight: var(--vectis-text-label-weight);\n }\n\n .v-side-nav-row[data-active] .v-side-nav-icon,\n .v-side-nav-row[data-active] .v-side-nav-sublabel,\n .v-side-nav-row[data-active] .v-side-nav-chevron {\n color: inherit;\n }\n\n .v-side-nav-row[data-active]:hover {\n /* The current row is already tinted, so its hover deepens that tint rather than\n replacing it with the neutral highlight — the VMenuItem idiom. */\n background: color-mix(\n in oklab,\n var(--vectis-color-accent-surface),\n var(--vectis-color-accent-text) 8%\n );\n }\n\n /* A CLOSED branch holding the current page keeps a mark of it, so the reader can see\n where they are without opening every section. The lookup is deliberately a\n descendant one: the page may be several levels down. */\n .v-side-nav-branch:not([open]):has(.v-side-nav-children [aria-current])\n > .v-side-nav-row:not([data-active]) {\n color: var(--vectis-color-accent-text);\n }\n\n /* A disabled row greys out through the colour tokens, never through opacity. */\n .v-side-nav-row[data-disabled] {\n color: var(--vectis-color-text-subtle);\n cursor: not-allowed;\n }\n\n /* The icon, the second line and the chevron default to a colour DARKER than the one\n a disabled label takes: left alone they would come out stronger than the label\n itself, so they inherit it instead. */\n .v-side-nav-row[data-disabled] .v-side-nav-icon,\n .v-side-nav-row[data-disabled] .v-side-nav-sublabel,\n .v-side-nav-row[data-disabled] .v-side-nav-chevron {\n color: inherit;\n }\n\n /* The opening animates in pure CSS, on the box the browser wraps a branch's content\n in. A browser without support opens the branch instantly, which is the intended\n fallback. */\n .v-side-nav-branch::details-content {\n block-size: 0;\n overflow: clip;\n transition:\n block-size var(--vectis-duration-base) var(--vectis-ease-default),\n content-visibility var(--vectis-duration-base) allow-discrete;\n }\n\n .v-side-nav-branch[open]::details-content {\n block-size: auto;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-side-nav-chevron,\n .v-side-nav-branch::details-content {\n transition: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEA,IAAM,IAAQ,GAqBR,IAAO,EAA2B,GAAC,MAAyB,GAE5D,IAAO,GA2BP,EAAE,cAAW,cAAW,sBAAmB,EAAa,GAExD,IAAQ,GAAS,GASjB,IAAc,QAAe,CAAC,CAAC,EAAM,KAAK,GAC1C,IAAM,QACV,CAAC,EAAY,SAAS,EAAM,SAAS,KAAA,IAAa,MAAiB,QACrE,GAEM,IAAS,EAAO,GAAmB,IAAI,GAMvC,IAAa,QAAe,GAAQ,cAAc,CAAc,GAChE,IAAe,QAAe,GAAQ,YAAY,GAKlD,IAAe,EAAM;EAE3B,EAAQ,GAAmB;GACzB,IAAI,OAAO;IACT,OAAO,GAAQ,YAAY,IAAe,KAAA;GAC5C;GACA,IAAI,YAAY;IACd,OAAO,GAAQ,aAAa;GAC9B;GACA,IAAI,aAAa;IACf,OAAO,EAAW;GACpB;GACA,IAAI,eAAe;IACjB,OAAO,EAAa;GACtB;EACF,CAAC;EAED,IAAM,IAAW,SAAgB,EAAK,SAAS,EAAM,gBAAgB,KAAA,CAAS;EAK9E,SAAS,EAAS,GAAc;GAC9B,IAAM,IAAS,EAAM,OAA8B;GACnD,AAAI,EAAK,UAAU,MAAO,EAAK,QAAQ;EACzC;EAEA,IAAM,IAAc,QAClB,EAAM,SAAU,EAAI,UAAU,OAAO,CAAC,EAAY,QAAQ,SAAS,SAAU,KAAA,CAC/E;EAUA,SAAS,GAAe,GAAmB;GACzC,AAAI,EAAM,YAAU,EAAM,eAAe;EAC3C;EAYA,SAAS,GAAW,GAAmB;GAErC,AADe,EAAM,QACR,QAAQ,gDAAgD,KAAG,EAAM,eAAe;EAC/F;EAEA,SAAS,GAAc,GAAmB;GAGxC,IAAI,EAAM,UAAU;IAClB,EAAM,eAAe;IACrB;GACF;GACA,EAAK,QAAQ;EACf;yBAIE,EA6EK,MAAA;GA7ED,OAAK,EAAA,CAAC,mBAA0B,EAAA,CAAA,CAAS,CAAA;GAAG,OAAK,EAAE,EAAA,CAAA,CAAS;MAEtD,EAAA,SAAA,EAAA,GADR,EA6CU,WAAA;;GA3CR,OAAM;GACL,MAAM,EAAA,CAAA,CAAM,EAAE;GACd,MAAM,EAAA;GACN,aAAW,EAAA,QAAY,KAAQ,KAAA;GACvB;MAET,EAiCU,WAjCV,EACU,EAgCA,CAAA,GAhCc;GACtB,OAAM;GACL,eAAa,EAAA,SAAM,KAAQ,KAAA;GAC3B,iBAAe,EAAA,WAAQ,KAAQ,KAAA;GAC/B,gBAAc,EAAA;GACd,iBAAe,EAAA,YAAY,KAAA;GAC3B,UAAU,EAAA,WAAQ,KAAQ,KAAA;GAC1B,SAAO;;GAER,EAEO,EAAA,QAAA,SAAA,CAAA,SAAA,CADQ,EAAA,QAAA,EAAA,GAAb,EAAsE,GAAtE,EAAsE;;IAAnD,OAAM;MAA0B,EAAA,CAAA,CAAS,CAAC,EAAA,IAAI,CAAA,GAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA;GAEnE,EAKO,QALP,GAKO,CAJL,EAA8C,QAA9C,GAA8C,CAAf,EAAQ,EAAA,QAAA,SAAA,CAAA,CAAA,GAC3B,EAAA,aAAa,KAAA,KAAaA,EAAAA,OAAO,YAAA,EAAA,GAA7C,EAEO,QAFP,GAEO,CADL,EAA2C,EAAA,QAAA,YAAA,CAAA,SAAA,CAAA,EAAA,EAAlB,EAAA,QAAQ,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA;GAMzBA,EAAAA,OAAO,OAAA,EAAA,GAAnB,EAES,QAAA;;IAFe,OAAM;IAAkB,SAAO;OACpD,EACD,EAAA,QAAA,KAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA;GACF,EAAmE,GAAnE,EAAmE,EAA5D,OAAM,qBAAoB,GAAS,EAAA,CAAA,CAAS,CAAC,EAAA,KAAU,CAAA,GAAA,MAAA,EAAA;GAItD,EAAA,SAAA,EAAA,GADR,EAIE,GAJF,EAIE;;IAFA,OAAM;MACE,EAAA,CAAA,CAAS,CAAC,EAAA,KAAY,CAAA,GAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA;aAGlC,EAEK,MAFL,GAEK,CADH,EAAqB,EAAA,QAAA,OAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,MAAA,EAAA,GAIzB,EA4BM,OAAA;;GA1BJ,OAAM;GACL,eAAa,EAAA,SAAM,KAAQ,KAAA;GAC3B,iBAAe,EAAA,WAAQ,KAAQ,KAAA;YAEhC,EAoBY,EAnBL,EAAA,KAAG,GADV,EAEU,EAkBE,CAAA,GAlBY;GACtB,OAAM;GACL,MAAM,EAAA,UAAG,WAAA,WAA2B,KAAA;GACpC,UAAU,EAAA,UAAG,WAAgB,EAAA,WAAW,KAAA;GACxC,MAAM,EAAA,UAAG,OAAA,CAAa,EAAA,WAAW,EAAA,OAAO,KAAA;GACxC,iBAAe,EAAA,UAAG,OAAY,EAAA,WAAQ,SAAY,KAAA;GAClD,gBAAc,EAAA;GACd,SAAO;;oBAID,CAFP,EAEO,EAAA,QAAA,SAAA,CAAA,SAAA,CADQ,EAAA,QAAA,EAAA,GAAb,EAAsE,GAAtE,EAAsE;;IAAnD,OAAM;MAA0B,EAAA,CAAA,CAAS,CAAC,EAAA,IAAI,CAAA,GAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,GAEnE,EAKO,QALP,GAKO,CAJL,EAA8C,QAA9C,GAA8C,CAAf,EAAQ,EAAA,QAAA,SAAA,CAAA,CAAA,GAC3B,EAAA,aAAa,KAAA,KAAaA,EAAAA,OAAO,YAAA,EAAA,GAA7C,EAEO,QAFP,GAEO,CADL,EAA2C,EAAA,QAAA,YAAA,CAAA,SAAA,CAAA,EAAA,EAAlB,EAAA,QAAQ,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;OAI3BA,EAAAA,OAAO,OAAA,EAAA,GAAnB,EAAyE,QAAzE,GAAyE,CAA1B,EAAmB,EAAA,QAAA,KAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,GAAA,CAAA,EAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import './VSideNavigationSeparator.css';
|
|
2
|
+
/* empty css */
|
|
3
|
+
import e from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
import { createElementBlock as t, openBlock as n } from "vue";
|
|
5
|
+
//#region src/components/VSideNavigation/VSideNavigationSeparator.vue
|
|
6
|
+
var r = {}, i = {
|
|
7
|
+
class: "v-side-nav-separator",
|
|
8
|
+
"aria-hidden": "true"
|
|
9
|
+
};
|
|
10
|
+
function a(e, r) {
|
|
11
|
+
return n(), t("li", i);
|
|
12
|
+
}
|
|
13
|
+
var o = /*#__PURE__*/ e(r, [["render", a]]);
|
|
14
|
+
//#endregion
|
|
15
|
+
export { o as default };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=VSideNavigationSeparator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSideNavigationSeparator.js","names":[],"sources":["../../../src/components/VSideNavigation/VSideNavigationSeparator.vue"],"sourcesContent":["<template>\n <!-- A list item and not a horizontal rule, because a list may own nothing but list\n items — and ARIA is stricter still, admitting only list items, so even giving\n this one a separator role would be rejected.\n\n So it is a plain list item, and a DECORATIVE one: the line is a visual break\n between sections, where real grouping is what VSideNavigationGroup provides.\n Hiding it from assistive technology is what keeps it OUT of the item count,\n instead of announcing an empty entry in the middle of the navigation. -->\n <li class=\"v-side-nav-separator\" aria-hidden=\"true\" />\n</template>\n\n<style>\n@layer vectis.components {\n .v-side-nav-separator {\n flex: none;\n /* The depth indent deliberately does not apply here: a rule separates sections,\n and has no reason to line up with the hierarchy of the rows around it. */\n margin-block: var(--vectis-space-2);\n margin-inline: var(--control-padding-inline);\n /* Painted with a border and not a background, exactly as VSeparator is: under\n Windows forced colours a background is forced to Canvas, where the line\n vanishes, while a border colour is forced to CanvasText and survives. */\n border-block-start: 1px solid var(--vectis-color-border);\n }\n}\n</style>\n"],"mappings":";;;;;CASM,OAAM;CAAuB,eAAY;;;aAA7C,EAAsD,MAAtD,CAAsD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { InjectionKey } from 'vue';
|
|
2
|
+
import { IconSource } from '../VIcon/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* What each level of a VSideNavigation passes down to the level below it. An item
|
|
5
|
+
* reads the context of ITS level and provides a fresh one to its own children, and
|
|
6
|
+
* that renewal is precisely what keeps "only one section open at a time" local to a
|
|
7
|
+
* level rather than global to the whole sidebar.
|
|
8
|
+
*
|
|
9
|
+
* Two things deliberately do NOT travel through here:
|
|
10
|
+
*
|
|
11
|
+
* - the size and the density, which the CSS variables carry by inheritance from the
|
|
12
|
+
* nav down; passing them here as well would be the same information in two places,
|
|
13
|
+
* free to disagree;
|
|
14
|
+
* - the DEPTH of an item, which is counted by the cascade itself (see the alternating
|
|
15
|
+
* variables in VSideNavigationItem) — no registry, and no inline style.
|
|
16
|
+
*/
|
|
17
|
+
export interface SideNavigationContext {
|
|
18
|
+
/**
|
|
19
|
+
* The name shared by the collapsible sections of this level. Sections that share one
|
|
20
|
+
* close each other, which the browser does entirely on its own. Nothing here means
|
|
21
|
+
* several may stay open at once.
|
|
22
|
+
*/
|
|
23
|
+
name: string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Whether the sidebar was asked for one-at-a-time behaviour. It is passed down so
|
|
26
|
+
* that each level can mint a name of its own.
|
|
27
|
+
*/
|
|
28
|
+
exclusive: boolean;
|
|
29
|
+
/** The chevron of a closed section: an icon name, or an explicit render. */
|
|
30
|
+
expandIcon: IconSource;
|
|
31
|
+
/**
|
|
32
|
+
* The chevron of an open section. Nothing here means the closed one is simply
|
|
33
|
+
* rotated.
|
|
34
|
+
*/
|
|
35
|
+
collapseIcon: IconSource | undefined;
|
|
36
|
+
}
|
|
37
|
+
export declare const sideNavigationKey: InjectionKey<SideNavigationContext>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../src/components/VSideNavigation/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\n\nimport type { IconSource } from '../VIcon/types'\n\n/**\n * What each level of a VSideNavigation passes down to the level below it. An item\n * reads the context of ITS level and provides a fresh one to its own children, and\n * that renewal is precisely what keeps \"only one section open at a time\" local to a\n * level rather than global to the whole sidebar.\n *\n * Two things deliberately do NOT travel through here:\n *\n * - the size and the density, which the CSS variables carry by inheritance from the\n * nav down; passing them here as well would be the same information in two places,\n * free to disagree;\n * - the DEPTH of an item, which is counted by the cascade itself (see the alternating\n * variables in VSideNavigationItem) — no registry, and no inline style.\n */\nexport interface SideNavigationContext {\n /**\n * The name shared by the collapsible sections of this level. Sections that share one\n * close each other, which the browser does entirely on its own. Nothing here means\n * several may stay open at once.\n */\n name: string | undefined\n /**\n * Whether the sidebar was asked for one-at-a-time behaviour. It is passed down so\n * that each level can mint a name of its own.\n */\n exclusive: boolean\n /** The chevron of a closed section: an icon name, or an explicit render. */\n expandIcon: IconSource\n /**\n * The chevron of an open section. Nothing here means the closed one is simply\n * rotated.\n */\n collapseIcon: IconSource | undefined\n}\n\nexport const sideNavigationKey: InjectionKey<SideNavigationContext> = Symbol('v-side-navigation')\n"],"mappings":";AAuCA,IAAa,IAAyD,OAAO,mBAAmB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
|
|
2
|
+
@layer vectis.components{.v-skeleton{--skeleton-base:var(--vectis-color-surface-skeleton);--skeleton-highlight:oklch(from var(--skeleton-base) calc(l + .06) c h);--skeleton-h:var(--control-height);--skeleton-radius:var(--vectis-radius-interactive);--skeleton-gap:var(--vectis-space-2);gap:var(--skeleton-gap);flex-direction:column;display:flex}.v-skeleton[data-custom]{--skeleton-base:var(--custom-color)}.v-skeleton-item{inline-size:var(--skeleton-w,100%);block-size:var(--skeleton-h);border-radius:var(--skeleton-radius);background:var(--skeleton-base);flex:auto;position:relative;overflow:clip}.v-skeleton[data-shape=text]{--skeleton-h:1em;--skeleton-radius:var(--vectis-radius-pill);--skeleton-gap:max(0px, calc(1lh - 1em));padding-block:calc(max(0px,1lh - 1em)/2)}.v-skeleton[data-shape=text] .v-skeleton-item{flex:none}.v-skeleton[data-shape=text] .v-skeleton-item+.v-skeleton-item:last-child{--skeleton-last-line:.6;inline-size:calc(var(--skeleton-w,100%) * var(--skeleton-last-line))}.v-skeleton[data-shape=pill]{--skeleton-radius:var(--vectis-radius-pill)}.v-skeleton[data-shape=circle]{--skeleton-radius:var(--vectis-radius-pill);align-items:start;display:inline-flex}.v-skeleton[data-shape=circle] .v-skeleton-item{inline-size:var(--skeleton-w,auto);aspect-ratio:1}.v-skeleton[data-shape=surface]{--skeleton-h:var(--vectis-control-size-skeleton-surface);--skeleton-radius:var(--vectis-radius-surface)}.v-skeleton[data-animation=pulse] .v-skeleton-item:after{content:"";background-color:var(--skeleton-highlight);animation:v-skeleton-pulse var(--vectis-duration-1500) var(--vectis-ease-in-out) infinite;position:absolute;inset:0}.v-skeleton[data-animation=wave] .v-skeleton-item:after{content:"";background-image:linear-gradient(90deg, transparent, var(--skeleton-highlight), transparent);animation:v-skeleton-wave var(--vectis-duration-1500) linear infinite;position:absolute;inset:0}.v-skeleton[data-animation=wave]:dir(rtl) .v-skeleton-item:after{animation-direction:reverse}@keyframes v-skeleton-pulse{0%,to{opacity:0}50%{opacity:1}}@keyframes v-skeleton-wave{0%{translate:-100%}to{translate:100%}}@media (prefers-reduced-motion:reduce){.v-skeleton:is([data-animation=wave],[data-animation=pulse]) .v-skeleton-item:after{background-image:none;background-color:var(--skeleton-highlight);animation:v-skeleton-pulse var(--vectis-duration-5000) var(--vectis-ease-in-out) infinite}}}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export type SkeletonShape = 'text' | 'control' | 'pill' | 'circle' | 'surface';
|
|
2
|
+
export type SkeletonAnimation = 'wave' | 'pulse' | 'none';
|
|
3
|
+
export type SkeletonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
4
|
+
interface SkeletonLoaderProps {
|
|
5
|
+
/**
|
|
6
|
+
* What the silhouette stands for. Each value sets both a corner radius and a way of
|
|
7
|
+
* being sized:
|
|
8
|
+
*
|
|
9
|
+
* - `text` follows the typography around it, so several silhouettes occupy exactly
|
|
10
|
+
* as many lines as the text they replace;
|
|
11
|
+
* - `control` takes the height of a control of the given size — a button, a field;
|
|
12
|
+
* - `pill` is that same height with fully rounded ends — a chip, a badge;
|
|
13
|
+
* - `circle` is that height in both dimensions — an avatar, a round icon button;
|
|
14
|
+
* - `surface` is a card or an image, with a height of its own.
|
|
15
|
+
*/
|
|
16
|
+
shape?: SkeletonShape;
|
|
17
|
+
/**
|
|
18
|
+
* The size on the scale shared by every control. It only means something for the
|
|
19
|
+
* shapes sized like a control: text follows the typography around it, and a surface
|
|
20
|
+
* has its own height.
|
|
21
|
+
*/
|
|
22
|
+
size?: SkeletonSize;
|
|
23
|
+
/** Takes 4px off the height, as everywhere else in the design system. */
|
|
24
|
+
compact?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The width: a number is read as pixels, and anything else as a CSS length of your
|
|
27
|
+
* own — `'100%'`, `'12ch'`. Left out, the silhouette takes all the width available.
|
|
28
|
+
*/
|
|
29
|
+
width?: number | string;
|
|
30
|
+
/** The height, read the same way. It wins over the shape and the size. */
|
|
31
|
+
height?: number | string;
|
|
32
|
+
/**
|
|
33
|
+
* How many silhouettes to stack. In the text shape the LAST one is drawn shorter
|
|
34
|
+
* than the others, and that single detail is what reads as a paragraph rather than
|
|
35
|
+
* as a table.
|
|
36
|
+
*/
|
|
37
|
+
lines?: number;
|
|
38
|
+
/**
|
|
39
|
+
* How the silhouette shows that something is happening. Turning it off freezes it,
|
|
40
|
+
* which suits printing, a screenshot, or a parent already animating.
|
|
41
|
+
*/
|
|
42
|
+
animation?: SkeletonAnimation;
|
|
43
|
+
/**
|
|
44
|
+
* A background colour of your own, replacing the token. The wave's highlight is
|
|
45
|
+
* DERIVED from it, so it stays correct with nothing else to set.
|
|
46
|
+
*/
|
|
47
|
+
color?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Announces the loading to screen readers. It is OFF by default, because a skeleton
|
|
50
|
+
* is decorative: a page holds a dozen of them, and a dozen competing announcements
|
|
51
|
+
* are unreadable. What should announce the wait is the container around them,
|
|
52
|
+
* marked as busy.
|
|
53
|
+
*/
|
|
54
|
+
announce?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* What is announced, which also IMPLIES announcing. Prefer something situated —
|
|
57
|
+
* "Loading the results" — since a generic word is the reason the default is silence.
|
|
58
|
+
* It falls back to the design system dictionary.
|
|
59
|
+
*/
|
|
60
|
+
label?: string;
|
|
61
|
+
}
|
|
62
|
+
declare const __VLS_export: import('vue').DefineComponent<SkeletonLoaderProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<SkeletonLoaderProps> & Readonly<{}>, {
|
|
63
|
+
label: string;
|
|
64
|
+
size: SkeletonSize;
|
|
65
|
+
compact: boolean;
|
|
66
|
+
shape: SkeletonShape;
|
|
67
|
+
color: string;
|
|
68
|
+
width: number | string;
|
|
69
|
+
height: number | string;
|
|
70
|
+
lines: number;
|
|
71
|
+
animation: SkeletonAnimation;
|
|
72
|
+
announce: boolean;
|
|
73
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
74
|
+
declare const _default: typeof __VLS_export;
|
|
75
|
+
export default _default;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './VSkeletonLoader.css';
|
|
2
|
+
import e from "./VSkeletonLoader.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/VSkeletonLoader/VSkeletonLoader.vue
|
|
5
|
+
var t = e;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { t as default };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=VSkeletonLoader.js.map
|