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,374 @@
|
|
|
1
|
+
import { useLocale as e, useMessages as t } from "../../i18n/state.js";
|
|
2
|
+
import n from "../VIcon/VIcon.js";
|
|
3
|
+
import r from "../VTypography/VTypography.js";
|
|
4
|
+
import i from "../VButton/VButton.js";
|
|
5
|
+
import a from "../VIconButton/VIconButton.js";
|
|
6
|
+
import { chevron_left as ee } from "../VIcon/icons/chevron_left.js";
|
|
7
|
+
import { chevron_right as te } from "../VIcon/icons/chevron_right.js";
|
|
8
|
+
import { useAriaLabel as ne } from "../../composables/useAriaLabel.js";
|
|
9
|
+
import { useRootAttrs as re } from "../../composables/useRootAttrs.js";
|
|
10
|
+
import { useTimer as ie } from "../../composables/useTimer.js";
|
|
11
|
+
import ae from "../VMenu/VMenu.js";
|
|
12
|
+
import oe from "../VMenu/VMenuItem.js";
|
|
13
|
+
import { arrow_drop_down as se } from "../VIcon/icons/arrow_drop_down.js";
|
|
14
|
+
import { firstDayOfWeekFor as ce, formatDisplay as o, formatDisplayRange as le } from "../../utils/date.js";
|
|
15
|
+
import { hourCycleFor as ue, minutesOf as s } from "../../utils/time.js";
|
|
16
|
+
import { monthWeeks as de, monthsOfYear as fe, normalizeWeekdays as pe, stepAnchor as me, timeOf as he, timesOf as ge, todayISO as c, visibleDays as _e, visibleRange as ve, windowOf as ye } from "./layout.js";
|
|
17
|
+
import be from "./VCalendarMonth.js";
|
|
18
|
+
import xe from "./VCalendarTimeGrid.js";
|
|
19
|
+
import Se from "./VCalendarYear.js";
|
|
20
|
+
import { Fragment as Ce, computed as l, createBlock as u, createCommentVNode as we, createElementBlock as d, createElementVNode as f, createSlots as p, createTextVNode as m, createVNode as h, defineComponent as g, guardReactiveProps as _, mergeModels as v, mergeProps as y, normalizeClass as Te, normalizeProps as b, normalizeStyle as Ee, onMounted as De, openBlock as x, ref as S, renderList as Oe, renderSlot as C, toDisplayString as w, unref as T, useId as ke, useModel as E, withCtx as D } from "vue";
|
|
21
|
+
//#region src/components/VCalendar/VCalendar.vue?vue&type=script&setup=true&lang.ts
|
|
22
|
+
var Ae = ["aria-label", "aria-roledescription"], je = { class: "v-calendar-toolbar" }, Me = { class: "v-calendar-nav" }, Ne = { class: "v-calendar-actions" }, Pe = {
|
|
23
|
+
class: "v-visually-hidden",
|
|
24
|
+
role: "status",
|
|
25
|
+
"aria-live": "polite"
|
|
26
|
+
}, O = /*@__PURE__*/ g({
|
|
27
|
+
inheritAttrs: !1,
|
|
28
|
+
__name: "VCalendar",
|
|
29
|
+
props: /*@__PURE__*/ v({
|
|
30
|
+
views: { default: () => [
|
|
31
|
+
"day",
|
|
32
|
+
"4days",
|
|
33
|
+
"week"
|
|
34
|
+
] },
|
|
35
|
+
customDays: { default: 4 },
|
|
36
|
+
weekdays: { default: void 0 },
|
|
37
|
+
locale: { default: void 0 },
|
|
38
|
+
hourFormat: { default: void 0 },
|
|
39
|
+
dayStart: { default: 0 },
|
|
40
|
+
dayEnd: { default: 24 },
|
|
41
|
+
slotDuration: { default: 15 },
|
|
42
|
+
scrollTime: { default: "08:00" },
|
|
43
|
+
showCurrentTime: {
|
|
44
|
+
type: Boolean,
|
|
45
|
+
default: !0
|
|
46
|
+
},
|
|
47
|
+
monthEventLimit: { default: 3 },
|
|
48
|
+
editable: {
|
|
49
|
+
type: Boolean,
|
|
50
|
+
default: !0
|
|
51
|
+
},
|
|
52
|
+
creatable: {
|
|
53
|
+
type: Boolean,
|
|
54
|
+
default: !0
|
|
55
|
+
},
|
|
56
|
+
edgeStepDelay: { default: 800 },
|
|
57
|
+
autoScroll: {
|
|
58
|
+
type: Boolean,
|
|
59
|
+
default: !0
|
|
60
|
+
},
|
|
61
|
+
label: { default: void 0 }
|
|
62
|
+
}, {
|
|
63
|
+
view: { default: "week" },
|
|
64
|
+
viewModifiers: {},
|
|
65
|
+
date: { default: () => c() },
|
|
66
|
+
dateModifiers: {},
|
|
67
|
+
events: { default: () => [] },
|
|
68
|
+
eventsModifiers: {}
|
|
69
|
+
}),
|
|
70
|
+
emits: /*@__PURE__*/ v([
|
|
71
|
+
"event-activate",
|
|
72
|
+
"slot-activate",
|
|
73
|
+
"event-move",
|
|
74
|
+
"event-resize",
|
|
75
|
+
"event-create"
|
|
76
|
+
], [
|
|
77
|
+
"update:view",
|
|
78
|
+
"update:date",
|
|
79
|
+
"update:events"
|
|
80
|
+
]),
|
|
81
|
+
setup(g, { expose: v, emit: O }) {
|
|
82
|
+
let k = g, A = E(g, "view"), j = E(g, "date"), M = E(g, "events"), N = O, P = t(), Fe = e(), { rootClass: Ie, rootStyle: Le, forwardedAttrs: Re } = re(), F = l(() => k.locale ?? Fe.value), I = l(() => k.hourFormat ?? ue(F.value)), L = l(() => pe(k.weekdays, ce(F.value))), R = l(() => ye(k.dayStart, k.dayEnd)), ze = l(() => _e(j.value, A.value, L.value, k.customDays)), Be = l(() => A.value !== "month" && A.value !== "year"), Ve = l(() => A.value === "month" ? de(j.value, L.value) : []), He = l(() => A.value === "year" ? fe(j.value) : []), z = S(null), B = S(null), Ue = ie();
|
|
83
|
+
function V() {
|
|
84
|
+
let e = /* @__PURE__ */ new Date();
|
|
85
|
+
B.value = e.getHours() * 60 + e.getMinutes(), Ue.start(V, Math.max(1e3, (60 - e.getSeconds()) * 1e3));
|
|
86
|
+
}
|
|
87
|
+
De(() => {
|
|
88
|
+
z.value = c(), k.showCurrentTime && V();
|
|
89
|
+
let e = s(k.scrollTime);
|
|
90
|
+
e !== null && H.value?.scrollToMinutes(e);
|
|
91
|
+
});
|
|
92
|
+
let H = S(null), U = S({
|
|
93
|
+
iso: j.value,
|
|
94
|
+
minutes: R.value.start
|
|
95
|
+
}), W = S(j.value), G = l(() => ve(j.value, A.value, L.value, k.customDays)), K = l(() => {
|
|
96
|
+
let e = F.value;
|
|
97
|
+
return A.value === "year" ? o(G.value.start, e, { year: "numeric" }) : A.value === "month" ? o(G.value.start, e, {
|
|
98
|
+
month: "long",
|
|
99
|
+
year: "numeric"
|
|
100
|
+
}) : A.value === "day" ? o(G.value.start, e, {
|
|
101
|
+
weekday: "long",
|
|
102
|
+
day: "numeric",
|
|
103
|
+
month: "long",
|
|
104
|
+
year: "numeric"
|
|
105
|
+
}) : le(G.value.start, G.value.end, e, {
|
|
106
|
+
day: "numeric",
|
|
107
|
+
month: "long",
|
|
108
|
+
year: "numeric"
|
|
109
|
+
});
|
|
110
|
+
}), q = (e) => {
|
|
111
|
+
let t = P.value.calendar;
|
|
112
|
+
return e === "day" ? t.viewDay : e === "4days" ? t.view4Days : e === "week" ? t.viewWeek : e === "month" ? t.viewMonth : e === "year" ? t.viewYear : t.viewCustom(k.customDays);
|
|
113
|
+
}, J = l(() => {
|
|
114
|
+
let e = P.value.calendar;
|
|
115
|
+
return A.value === "day" ? {
|
|
116
|
+
previous: e.previousDay,
|
|
117
|
+
next: e.nextDay
|
|
118
|
+
} : A.value === "week" ? {
|
|
119
|
+
previous: e.previousWeek,
|
|
120
|
+
next: e.nextWeek
|
|
121
|
+
} : A.value === "month" ? {
|
|
122
|
+
previous: e.previousMonth,
|
|
123
|
+
next: e.nextMonth
|
|
124
|
+
} : A.value === "year" ? {
|
|
125
|
+
previous: e.previousYear,
|
|
126
|
+
next: e.nextYear
|
|
127
|
+
} : {
|
|
128
|
+
previous: e.previousPeriod,
|
|
129
|
+
next: e.nextPeriod
|
|
130
|
+
};
|
|
131
|
+
}), We = ne(() => k.label ?? P.value.calendar.label);
|
|
132
|
+
function Y(e) {
|
|
133
|
+
j.value = me(j.value, A.value, e, L.value, k.customDays);
|
|
134
|
+
}
|
|
135
|
+
function X() {
|
|
136
|
+
j.value = c();
|
|
137
|
+
}
|
|
138
|
+
function Ge(e) {
|
|
139
|
+
A.value = e;
|
|
140
|
+
}
|
|
141
|
+
function Ke(e, t) {
|
|
142
|
+
N("slot-activate", {
|
|
143
|
+
date: e,
|
|
144
|
+
time: he(t)
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function qe(e, t) {
|
|
148
|
+
j.value = e, k.views.includes(t) && (A.value = t);
|
|
149
|
+
}
|
|
150
|
+
let Je = S(""), Ye = ke(), Z = `${Ye}-hint`;
|
|
151
|
+
function Xe(e) {
|
|
152
|
+
Je.value = e;
|
|
153
|
+
}
|
|
154
|
+
function Q(e, t, n) {
|
|
155
|
+
let r = M.value.find((t) => t.id === e);
|
|
156
|
+
if (!r) return;
|
|
157
|
+
let i = ge(r), a = {
|
|
158
|
+
...r,
|
|
159
|
+
...t
|
|
160
|
+
};
|
|
161
|
+
M.value = M.value.map((t) => t.id === e ? a : t), N(n === "resize" ? "event-resize" : "event-move", a, i);
|
|
162
|
+
}
|
|
163
|
+
let $ = 0;
|
|
164
|
+
function Ze(e) {
|
|
165
|
+
N("slot-activate", {
|
|
166
|
+
date: e.start,
|
|
167
|
+
time: e.startTime
|
|
168
|
+
}), $++;
|
|
169
|
+
let t = {
|
|
170
|
+
id: `${Ye}-${$}`,
|
|
171
|
+
title: P.value.calendar.newEvent($),
|
|
172
|
+
...e
|
|
173
|
+
};
|
|
174
|
+
M.value = [...M.value, t], N("event-create", t);
|
|
175
|
+
}
|
|
176
|
+
return v({
|
|
177
|
+
focus: () => H.value?.focus(),
|
|
178
|
+
today: X,
|
|
179
|
+
previous: () => Y(-1),
|
|
180
|
+
next: () => Y(1),
|
|
181
|
+
scrollTo: (e) => {
|
|
182
|
+
let t = s(e);
|
|
183
|
+
t !== null && H.value?.scrollToMinutes(t);
|
|
184
|
+
}
|
|
185
|
+
}), (e, t) => (x(), d("div", {
|
|
186
|
+
class: Te(["v-calendar", T(Ie)]),
|
|
187
|
+
style: Ee(T(Le))
|
|
188
|
+
}, [f("section", y(T(Re), {
|
|
189
|
+
class: "v-calendar-region",
|
|
190
|
+
"aria-label": T(We),
|
|
191
|
+
"aria-roledescription": T(P).calendar.roleDescription
|
|
192
|
+
}), [
|
|
193
|
+
f("div", je, [
|
|
194
|
+
f("div", Me, [h(a, {
|
|
195
|
+
icon: T(ee),
|
|
196
|
+
label: J.value.previous,
|
|
197
|
+
size: "sm",
|
|
198
|
+
onClick: t[0] ||= (e) => Y(-1)
|
|
199
|
+
}, null, 8, ["icon", "label"]), h(a, {
|
|
200
|
+
icon: T(te),
|
|
201
|
+
label: J.value.next,
|
|
202
|
+
size: "sm",
|
|
203
|
+
onClick: t[1] ||= (e) => Y(1)
|
|
204
|
+
}, null, 8, ["icon", "label"])]),
|
|
205
|
+
h(i, {
|
|
206
|
+
variant: "outline",
|
|
207
|
+
tone: "neutral",
|
|
208
|
+
size: "sm",
|
|
209
|
+
onClick: X
|
|
210
|
+
}, {
|
|
211
|
+
default: D(() => [m(w(T(P).calendar.today), 1)]),
|
|
212
|
+
_: 1
|
|
213
|
+
}),
|
|
214
|
+
h(r, {
|
|
215
|
+
variant: "heading-4",
|
|
216
|
+
as: "h2",
|
|
217
|
+
class: "v-calendar-title"
|
|
218
|
+
}, {
|
|
219
|
+
default: D(() => [m(w(K.value), 1)]),
|
|
220
|
+
_: 1
|
|
221
|
+
}),
|
|
222
|
+
f("div", Ne, [C(e.$slots, "actions"), g.views.length > 1 ? (x(), u(ae, {
|
|
223
|
+
key: 0,
|
|
224
|
+
size: "sm",
|
|
225
|
+
placement: "bottom-end",
|
|
226
|
+
"match-trigger": ""
|
|
227
|
+
}, {
|
|
228
|
+
trigger: D(({ triggerProps: e }) => [h(i, y({
|
|
229
|
+
variant: "outline",
|
|
230
|
+
tone: "neutral",
|
|
231
|
+
size: "sm"
|
|
232
|
+
}, e, { "aria-label": `${T(P).calendar.view}: ${q(A.value)}` }), {
|
|
233
|
+
default: D(() => [m(w(q(A.value)) + " ", 1), h(n, { name: T(se) }, null, 8, ["name"])]),
|
|
234
|
+
_: 1
|
|
235
|
+
}, 16, ["aria-label"])]),
|
|
236
|
+
default: D(() => [(x(!0), d(Ce, null, Oe(g.views, (e) => (x(), u(oe, {
|
|
237
|
+
key: e,
|
|
238
|
+
label: q(e),
|
|
239
|
+
selected: e === A.value,
|
|
240
|
+
onSelect: (t) => Ge(e)
|
|
241
|
+
}, null, 8, [
|
|
242
|
+
"label",
|
|
243
|
+
"selected",
|
|
244
|
+
"onSelect"
|
|
245
|
+
]))), 128))]),
|
|
246
|
+
_: 1
|
|
247
|
+
})) : we("", !0)])
|
|
248
|
+
]),
|
|
249
|
+
Be.value ? (x(), u(xe, {
|
|
250
|
+
key: 0,
|
|
251
|
+
ref_key: "gridRef",
|
|
252
|
+
ref: H,
|
|
253
|
+
focused: U.value,
|
|
254
|
+
"onUpdate:focused": t[2] ||= (e) => U.value = e,
|
|
255
|
+
class: "v-calendar-view",
|
|
256
|
+
days: ze.value,
|
|
257
|
+
events: M.value,
|
|
258
|
+
window: R.value,
|
|
259
|
+
"slot-duration": g.slotDuration,
|
|
260
|
+
locale: F.value,
|
|
261
|
+
"hour-format": I.value,
|
|
262
|
+
today: z.value,
|
|
263
|
+
now: g.showCurrentTime ? B.value : null,
|
|
264
|
+
editable: g.editable,
|
|
265
|
+
creatable: g.creatable,
|
|
266
|
+
"hint-id": Z,
|
|
267
|
+
"edge-step-delay": g.edgeStepDelay,
|
|
268
|
+
"auto-scroll": g.autoScroll,
|
|
269
|
+
label: K.value,
|
|
270
|
+
onCellActivate: Ke,
|
|
271
|
+
onEventActivate: t[3] ||= (e) => N("event-activate", e),
|
|
272
|
+
onEventDrop: Q,
|
|
273
|
+
onSlotCreate: Ze,
|
|
274
|
+
onAnnounce: Xe,
|
|
275
|
+
onStep: Y
|
|
276
|
+
}, p({ _: 2 }, [
|
|
277
|
+
e.$slots.event ? {
|
|
278
|
+
name: "event",
|
|
279
|
+
fn: D((t) => [C(e.$slots, "event", b(_(t)))]),
|
|
280
|
+
key: "0"
|
|
281
|
+
} : void 0,
|
|
282
|
+
e.$slots["day-header"] ? {
|
|
283
|
+
name: "day-header",
|
|
284
|
+
fn: D((t) => [C(e.$slots, "day-header", b(_(t)))]),
|
|
285
|
+
key: "1"
|
|
286
|
+
} : void 0,
|
|
287
|
+
e.$slots["all-day-label"] ? {
|
|
288
|
+
name: "all-day-label",
|
|
289
|
+
fn: D(() => [C(e.$slots, "all-day-label")]),
|
|
290
|
+
key: "2"
|
|
291
|
+
} : void 0
|
|
292
|
+
]), 1032, [
|
|
293
|
+
"focused",
|
|
294
|
+
"days",
|
|
295
|
+
"events",
|
|
296
|
+
"window",
|
|
297
|
+
"slot-duration",
|
|
298
|
+
"locale",
|
|
299
|
+
"hour-format",
|
|
300
|
+
"today",
|
|
301
|
+
"now",
|
|
302
|
+
"editable",
|
|
303
|
+
"creatable",
|
|
304
|
+
"edge-step-delay",
|
|
305
|
+
"auto-scroll",
|
|
306
|
+
"label"
|
|
307
|
+
])) : A.value === "month" ? (x(), u(be, {
|
|
308
|
+
key: 1,
|
|
309
|
+
ref_key: "gridRef",
|
|
310
|
+
ref: H,
|
|
311
|
+
focused: W.value,
|
|
312
|
+
"onUpdate:focused": t[4] ||= (e) => W.value = e,
|
|
313
|
+
class: "v-calendar-view",
|
|
314
|
+
weeks: Ve.value,
|
|
315
|
+
events: M.value,
|
|
316
|
+
locale: F.value,
|
|
317
|
+
"hour-format": I.value,
|
|
318
|
+
today: z.value,
|
|
319
|
+
"event-limit": g.monthEventLimit,
|
|
320
|
+
editable: g.editable,
|
|
321
|
+
"hint-id": Z,
|
|
322
|
+
"edge-step-delay": g.edgeStepDelay,
|
|
323
|
+
label: K.value,
|
|
324
|
+
onDayActivate: t[5] ||= (e) => qe(e, "day"),
|
|
325
|
+
onCellActivate: t[6] ||= (e) => Ke(e, R.value.start),
|
|
326
|
+
onEventActivate: t[7] ||= (e) => N("event-activate", e),
|
|
327
|
+
onEventDrop: Q,
|
|
328
|
+
onAnnounce: Xe,
|
|
329
|
+
onStep: Y
|
|
330
|
+
}, p({ _: 2 }, [e.$slots.event ? {
|
|
331
|
+
name: "event",
|
|
332
|
+
fn: D((t) => [C(e.$slots, "event", b(_(t)))]),
|
|
333
|
+
key: "0"
|
|
334
|
+
} : void 0]), 1032, [
|
|
335
|
+
"focused",
|
|
336
|
+
"weeks",
|
|
337
|
+
"events",
|
|
338
|
+
"locale",
|
|
339
|
+
"hour-format",
|
|
340
|
+
"today",
|
|
341
|
+
"event-limit",
|
|
342
|
+
"editable",
|
|
343
|
+
"edge-step-delay",
|
|
344
|
+
"label"
|
|
345
|
+
])) : (x(), u(Se, {
|
|
346
|
+
key: 2,
|
|
347
|
+
class: "v-calendar-view",
|
|
348
|
+
months: He.value,
|
|
349
|
+
events: M.value,
|
|
350
|
+
locale: F.value,
|
|
351
|
+
weekdays: L.value,
|
|
352
|
+
today: z.value,
|
|
353
|
+
label: K.value,
|
|
354
|
+
onMonthActivate: t[8] ||= (e) => qe(e, "month")
|
|
355
|
+
}, null, 8, [
|
|
356
|
+
"months",
|
|
357
|
+
"events",
|
|
358
|
+
"locale",
|
|
359
|
+
"weekdays",
|
|
360
|
+
"today",
|
|
361
|
+
"label"
|
|
362
|
+
])),
|
|
363
|
+
f("div", Pe, w(Je.value), 1),
|
|
364
|
+
f("span", {
|
|
365
|
+
id: Z,
|
|
366
|
+
class: "v-visually-hidden"
|
|
367
|
+
}, w(T(P).calendar.eventHint), 1)
|
|
368
|
+
], 16, Ae)], 6));
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
//#endregion
|
|
372
|
+
export { O as default };
|
|
373
|
+
|
|
374
|
+
//# sourceMappingURL=VCalendar.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VCalendar.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/VCalendar/VCalendar.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"E extends CalendarEvent\">\n// @a11y @ssr @core\n/**\n * An agenda: the days laid out side by side with the hours running down them, and the\n * events drawn where they fall.\n *\n * It is a place to READ and REARRANGE a schedule, not to write one. Opening an event for\n * editing, and adding one by any route other than pointing at an empty slot, stay with the\n * consumer — the component tells them what was asked for and leaves the form to them.\n *\n * Everything is handled in local time as ISO `YYYY-MM-DD` dates and 24-hour `HH:mm` times\n * (see `utils/date` and `utils/time`), which is what keeps the server and the browser in\n * agreement. An event may name a time zone, and that name is shown beside its times as an\n * annotation; it is never applied. Converting would mean the card moved depending on where\n * the page was rendered, which is the one thing a calendar must not do.\n *\n * The JavaScript here is what the platform gives no way to avoid. There is no accessible\n * time grid to build on and no way to express \"these three meetings overlap, so share the\n * width between them\" in CSS, so the ARIA grid pattern and the overlap layout are written\n * out by hand. Every geometric and calendrical decision lives in `layout.ts`, pure, because\n * the test environment lays nothing out and that is the only place any of it can be checked.\n */\nimport { computed, onMounted, ref, useId } from 'vue'\n\nimport VButton from '../VButton/VButton.vue'\nimport VIcon from '../VIcon/VIcon.vue'\nimport { arrow_drop_down as arrowDropDownIcon } from '../VIcon/icons/arrow_drop_down'\nimport { chevron_left as chevronLeftIcon } from '../VIcon/icons/chevron_left'\nimport { chevron_right as chevronRightIcon } from '../VIcon/icons/chevron_right'\nimport VIconButton from '../VIconButton/VIconButton.vue'\nimport VMenu from '../VMenu/VMenu.vue'\nimport VMenuItem from '../VMenu/VMenuItem.vue'\nimport VTypography from '../VTypography/VTypography.vue'\n\nimport { useAriaLabel } from '../../composables/useAriaLabel'\nimport { useRootAttrs } from '../../composables/useRootAttrs'\nimport { useTimer } from '../../composables/useTimer'\nimport {\n firstDayOfWeekFor,\n formatDisplay as formatDate,\n formatDisplayRange,\n} from '../../utils/date'\nimport { hourCycleFor, minutesOf, type HourFormat } from '../../utils/time'\n\nimport { useLocale, useMessages } from '../../i18n/state'\n\nimport VCalendarMonth from './VCalendarMonth.vue'\nimport VCalendarTimeGrid, { type FocusedCell } from './VCalendarTimeGrid.vue'\nimport VCalendarYear from './VCalendarYear.vue'\nimport { EDGE_STEP_DELAY } from './edgeStep'\nimport {\n monthWeeks,\n monthsOfYear,\n normalizeWeekdays,\n stepAnchor,\n timeOf,\n timesOf,\n todayISO,\n visibleDays,\n visibleRange,\n windowOf,\n} from './layout'\nimport type { CalendarEvent, CalendarEventId, CalendarEventTimes, CalendarView } from './types'\n\nexport interface CalendarProps {\n /**\n * Which views the menu offers, in the order it lists them. Narrowing it is how a\n * calendar that only ever shows weeks stops offering anything else.\n */\n views?: CalendarView[]\n /** How many days the custom view shows, and how far Previous and Next step in it. */\n customDays?: number\n /**\n * Which weekdays are on show, as numbers from 0 for Sunday. `[1,2,3,4,5]` hides the\n * weekend everywhere. The ORDER matters as well: the first entry is the day a week\n * starts on, which is why there is no separate first-day setting. Left out, the seven\n * days in the order the locale puts them.\n */\n weekdays?: number[]\n /** The language the days, months and times are written in. Falls back to the global one. */\n locale?: string\n /** Whether times are shown on a twelve or twenty-four hour clock. Follows the locale. */\n hourFormat?: HourFormat\n /** The hour the grid starts at, from 0. */\n dayStart?: number\n /** The hour it ends at, up to 24. */\n dayEnd?: number\n /**\n * The step everything snaps to, in minutes: how far a nudge moves an event, and how long\n * a newly created one is.\n */\n slotDuration?: number\n /** Where the grid is scrolled to when it first appears, so the working day is in view. */\n scrollTime?: string\n /**\n * Draws a line across today's column at the time it is now, with a dot on its leading\n * edge. It ticks once a minute while the calendar is on screen.\n */\n showCurrentTime?: boolean\n /** How many events a day of the month view shows before it starts counting the rest. */\n monthEventLimit?: number\n /**\n * Lets events be moved and stretched — by dragging them, and with the keyboard. Turning it\n * off leaves them readable and clickable, and nothing else.\n */\n editable?: boolean\n /**\n * Makes an event when an empty part of a day is taken up: a click makes one `slotDuration`\n * long, a drag makes one as long as it was drawn. `slot-activate` still fires either way,\n * so a consumer who wants their own form can turn this off and keep the signal.\n */\n creatable?: boolean\n /**\n * How long a dragged event has to rest against the side of the calendar before the view\n * turns to the previous or next period, in milliseconds. `0` turns that off.\n *\n * The wait is the point of it: paging the instant the pointer touched the edge would make\n * the last day of a week impossible to aim at.\n */\n edgeStepDelay?: number\n /** Whether dragging near the top or bottom of a time grid scrolls it. */\n autoScroll?: boolean\n /** What the calendar is called, for anyone who cannot see it. */\n label?: string\n}\n\nconst props = withDefaults(defineProps<CalendarProps>(), {\n views: () => ['day', '4days', 'week'],\n customDays: 4,\n weekdays: undefined,\n locale: undefined,\n hourFormat: undefined,\n dayStart: 0,\n dayEnd: 24,\n slotDuration: 15,\n scrollTime: '08:00',\n showCurrentTime: true,\n monthEventLimit: 3,\n editable: true,\n creatable: true,\n edgeStepDelay: EDGE_STEP_DELAY,\n autoScroll: true,\n label: undefined,\n})\n\n/*\n * The wrapper-root pattern: the consumer's class and style stay on the outer box, and\n * everything else — their `id`, their `aria-*` — goes on the region, which is the part\n * that carries the role and is therefore the part they mean.\n */\ndefineOptions({ inheritAttrs: false })\n\nconst view = defineModel<CalendarView>('view', { default: 'week' })\n\n/*\n * @ssr — the anchor is read from the clock at setup, so the server and the client can in\n * principle disagree across a midnight boundary. That is the trade VDatePicker already\n * makes for the month it opens on, and it is a safer one here: what the anchor decides is\n * a whole WEEK or month, which is the same on both sides for all but a few seconds a day.\n * Today's date, which marks a single column, is a different matter and is read below in\n * `onMounted` where the server cannot see it at all.\n */\nconst date = defineModel<string>('date', { default: () => todayISO() })\nconst events = defineModel<E[]>('events', { default: () => [] })\n\nconst emit = defineEmits<{\n /** A card was clicked or activated — the cue to open an editor of your own. */\n 'event-activate': [event: E]\n /** An empty part of the grid was activated, at this day and this time. */\n 'slot-activate': [slot: { date: string; time: string }]\n /**\n * An event was dragged or nudged somewhere else. It carries the event as it now stands and\n * where it came from, so undoing it needs no copy of your own.\n */\n 'event-move': [event: E, previous: CalendarEventTimes]\n /** An event's end was dragged or nudged, in the same two parts. */\n 'event-resize': [event: E, previous: CalendarEventTimes]\n /**\n * An event was made by taking up an empty part of a day. It has already been added to\n * `events`; this is the cue to give it a real name, or to save it.\n */\n 'event-create': [event: CalendarEvent]\n}>()\n\ndefineSlots<{\n /** Extra controls in the toolbar, between the range and the view menu. */\n actions?(): unknown\n /** The content of one event's card, replacing the title and times. */\n event?(props: {\n event: E\n layout: 'block' | 'chip'\n timeText: string\n continuesBefore: boolean\n continuesAfter: boolean\n }): unknown\n /** The head of one day column, replacing the weekday and the number. */\n 'day-header'?(props: { iso: string; weekday: string; day: string; today: boolean }): unknown\n /** The label beside the band of all-day events. */\n 'all-day-label'?(): unknown\n}>()\n\nconst m = useMessages()\nconst vectisLocale = useLocale()\nconst { rootClass, rootStyle, forwardedAttrs } = useRootAttrs()\n\n/*\n * The prop wins, and the design system's global locale is what it falls back to. Every read\n * goes through this one derivation, so the two sources can never be consulted in a\n * different order somewhere else.\n */\nconst resolvedLocale = computed(() => props.locale ?? vectisLocale.value)\nconst resolvedHourFormat = computed(() => props.hourFormat ?? hourCycleFor(resolvedLocale.value))\nconst resolvedWeekdays = computed(() =>\n normalizeWeekdays(props.weekdays, firstDayOfWeekFor(resolvedLocale.value)),\n)\n\nconst window = computed(() => windowOf(props.dayStart, props.dayEnd))\n\nconst days = computed(() =>\n visibleDays(date.value, view.value, resolvedWeekdays.value, props.customDays),\n)\n\n/** Which view is a time grid, and which is a summary. Several things below turn on this. */\nconst isTimeGrid = computed(() => view.value !== 'month' && view.value !== 'year')\n\nconst weeks = computed(() =>\n view.value === 'month' ? monthWeeks(date.value, resolvedWeekdays.value) : [],\n)\n\nconst months = computed(() => (view.value === 'year' ? monthsOfYear(date.value) : []))\n\n// @ssr — today and the time it is now can only be known on the client: the server has no\n// way to tell either where the reader is, and rendering a guess would make the two markups\n// differ. Both stay null until then, and every rule that draws them is written to expect it.\nconst today = ref<string | null>(null)\nconst now = ref<number | null>(null)\n\nconst clock = useTimer()\n\n/**\n * Re-reads the clock, then arms itself for the top of the next minute — so the line moves\n * when the minute does rather than drifting by however long the interval was.\n *\n * TRAP — the floor on the delay is not a nicety. `useTimer` runs a delay of zero or less\n * SYNCHRONOUSLY, by design, so a tick that ever computed one would call itself straight back\n * and go on doing so until the stack gave out. A second is well below the resolution\n * anything here needs and comfortably above the point where that could happen.\n */\nfunction tick() {\n const at = new Date()\n now.value = at.getHours() * 60 + at.getMinutes()\n clock.start(tick, Math.max(1000, (60 - at.getSeconds()) * 1000))\n}\n\nonMounted(() => {\n today.value = todayISO()\n if (props.showCurrentTime) tick()\n const at = minutesOf(props.scrollTime)\n if (at !== null) gridRef.value?.scrollToMinutes(at)\n})\n\n/**\n * The grid, named by what it exposes rather than by `InstanceType<typeof …>`.\n *\n * TRAP — the usual form does not work here and the error it gives says nothing useful about\n * why. A generic `<script setup>` compiles to a FUNCTION, not to a class, so it has no\n * construct signature for `InstanceType` to read: the message complains that the component\n * \"provides no match for the signature `new (...args: any)`\", pointing at the template.\n * Writing the contract out is also the more honest of the two, since these two methods are\n * the whole of what this component asks of that one.\n */\nconst gridRef = ref<{ focus(): void; scrollToMinutes(minutes: number): void } | null>(null)\n\n/*\n * Which cell holds the tab stop, kept as two refs because the two kinds of view mean\n * different things by it: a time grid needs a day AND an hour, a month only a day. One ref\n * carrying an hour the month ignores would leave that hour to go stale, and the grid would\n * then reopen on whatever the month happened to leave behind.\n */\nconst focused = ref<FocusedCell>({ iso: date.value, minutes: window.value.start })\nconst focusedDay = ref(date.value)\n\nconst range = computed(() =>\n visibleRange(date.value, view.value, resolvedWeekdays.value, props.customDays),\n)\n\n/**\n * What the toolbar says the calendar is showing. Each view names itself at the coarsest\n * granularity that still identifies it: a single day says its weekday, a year says nothing\n * but the number.\n */\nconst rangeText = computed(() => {\n const locale = resolvedLocale.value\n if (view.value === 'year') return formatDate(range.value.start, locale, { year: 'numeric' })\n if (view.value === 'month') {\n return formatDate(range.value.start, locale, { month: 'long', year: 'numeric' })\n }\n if (view.value === 'day') {\n return formatDate(range.value.start, locale, {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n })\n }\n return formatDisplayRange(range.value.start, range.value.end, locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n })\n})\n\nconst viewLabel = (value: CalendarView) => {\n const words = m.value.calendar\n if (value === 'day') return words.viewDay\n if (value === '4days') return words.view4Days\n if (value === 'week') return words.viewWeek\n if (value === 'month') return words.viewMonth\n if (value === 'year') return words.viewYear\n return words.viewCustom(props.customDays)\n}\n\n/**\n * What the two navigation buttons are called. They name the step rather than saying\n * \"previous\" alone, because the step is what changes from one view to the next and a bare\n * \"previous\" leaves a reader to guess whether it is a day or a year they are about to lose.\n */\nconst stepLabels = computed(() => {\n const words = m.value.calendar\n if (view.value === 'day') return { previous: words.previousDay, next: words.nextDay }\n if (view.value === 'week') return { previous: words.previousWeek, next: words.nextWeek }\n if (view.value === 'month') return { previous: words.previousMonth, next: words.nextMonth }\n if (view.value === 'year') return { previous: words.previousYear, next: words.nextYear }\n return { previous: words.previousPeriod, next: words.nextPeriod }\n})\n\nconst ariaLabel = useAriaLabel(() => props.label ?? m.value.calendar.label)\n\nfunction step(delta: -1 | 1) {\n date.value = stepAnchor(date.value, view.value, delta, resolvedWeekdays.value, props.customDays)\n}\n\nfunction today_() {\n date.value = todayISO()\n}\n\nfunction setView(value: CalendarView) {\n view.value = value\n}\n\nfunction onCellActivate(iso: string, minutes: number) {\n emit('slot-activate', { date: iso, time: timeOf(minutes) })\n}\n\n/**\n * Going from a summary to the thing it summarises: opening a day from the month view, or a\n * month from the year view.\n *\n * The view only changes if the calendar was offering that one in the first place. A consumer\n * who narrowed `views` to a week and a year has said what their calendar is for, and jumping\n * it into a day view they deliberately left out would be the component overruling them —\n * so the date moves and the view stays, which is still a step towards what was asked for.\n */\nfunction openIn(iso: string, target: CalendarView) {\n date.value = iso\n if (props.views.includes(target)) view.value = target\n}\n\n/**\n * What a reader who cannot see the grid is told: the range after every step of a move, and\n * whether the move was taken or given up.\n *\n * The node is rendered from the FIRST paint and left empty, never inserted along with its\n * first message — a live region that appears at the same moment as its text is not announced\n * at all, which is the trap VDataTable's selection count already documents.\n */\nconst announcement = ref('')\nconst uid = useId()\nconst hintId = `${uid}-hint`\n\nfunction announce(message: string) {\n announcement.value = message\n}\n\n/**\n * Writes one event's new times into the model and says what happened.\n *\n * The array is replaced rather than edited in place: a new reference is what wakes a\n * consumer's own watchers, and it is the design system's rule for every v-model holding a\n * list. This runs ONCE, when a gesture ends — never per frame of a drag, which would fill an\n * undo stack with sixty entries a second and send each one back as a render fighting the\n * finger.\n */\nfunction onEventDrop(id: CalendarEventId, times: CalendarEventTimes, kind: 'move' | 'resize') {\n const current = events.value.find((item) => item.id === id)\n if (!current) return\n\n const previous = timesOf(current)\n const next = { ...current, ...times }\n events.value = events.value.map((item) => (item.id === id ? next : item))\n // Written out rather than picking the name with a conditional: the emit signatures are an\n // overload set, and TypeScript resolves one only against a literal.\n if (kind === 'resize') emit('event-resize', next, previous)\n else emit('event-move', next, previous)\n}\n\n/**\n * How many events this calendar has minted, which is what numbers their default names.\n *\n * It counts from one per calendar rather than from the length of the list, so removing an\n * event does not make the next one reuse its name.\n */\nlet created = 0\n\nfunction onSlotCreate(times: CalendarEventTimes) {\n // The grid only ever asks for this when it was told it could create, so there is no second\n // guard here: `creatable` is decided once, where the press is read.\n emit('slot-activate', { date: times.start, time: times.startTime })\n\n created++\n const draft: CalendarEvent = {\n // Vue's own id makes it unique to this calendar, so two on one page cannot collide, and\n // it is stable across the server and the client.\n id: `${uid}-${created}`,\n title: m.value.calendar.newEvent(created),\n ...times,\n }\n\n /*\n * A consumer whose own event type adds REQUIRED fields gets a draft without them — there\n * is nothing here that could invent a room number or an attendee list. That is what\n * `event-create` is for: it fires with the event as made, and replacing that entry with a\n * complete one is the intended answer. Documented in the `.mdx`.\n */\n events.value = [...events.value, draft as E]\n emit('event-create', draft)\n}\n\ndefineExpose({\n /** Brings the focus into the grid, onto the cell it is currently showing. */\n focus: () => gridRef.value?.focus(),\n /** Goes back to the current day, exactly as the Today button does. */\n today: today_,\n previous: () => step(-1),\n next: () => step(1),\n /** Scrolls the grid so a given `HH:mm` sits at the top of the visible area. */\n scrollTo: (time: string) => {\n const at = minutesOf(time)\n if (at !== null) gridRef.value?.scrollToMinutes(at)\n },\n})\n</script>\n\n<template>\n <div class=\"v-calendar\" :class=\"rootClass\" :style=\"rootStyle\">\n <section\n v-bind=\"forwardedAttrs\"\n class=\"v-calendar-region\"\n :aria-label=\"ariaLabel\"\n :aria-roledescription=\"m.calendar.roleDescription\"\n >\n <div class=\"v-calendar-toolbar\">\n <div class=\"v-calendar-nav\">\n <VIconButton\n :icon=\"chevronLeftIcon\"\n :label=\"stepLabels.previous\"\n size=\"sm\"\n @click=\"step(-1)\"\n />\n <VIconButton\n :icon=\"chevronRightIcon\"\n :label=\"stepLabels.next\"\n size=\"sm\"\n @click=\"step(1)\"\n />\n </div>\n\n <VButton variant=\"outline\" tone=\"neutral\" size=\"sm\" @click=\"today_\">\n {{ m.calendar.today }}\n </VButton>\n\n <VTypography variant=\"heading-4\" as=\"h2\" class=\"v-calendar-title\">\n {{ rangeText }}\n </VTypography>\n\n <div class=\"v-calendar-actions\">\n <slot name=\"actions\" />\n\n <VMenu v-if=\"views.length > 1\" size=\"sm\" placement=\"bottom-end\" match-trigger>\n <template #trigger=\"{ triggerProps }\">\n <VButton\n variant=\"outline\"\n tone=\"neutral\"\n size=\"sm\"\n v-bind=\"triggerProps\"\n :aria-label=\"`${m.calendar.view}: ${viewLabel(view)}`\"\n >\n {{ viewLabel(view) }}\n <VIcon :name=\"arrowDropDownIcon\" />\n </VButton>\n </template>\n <VMenuItem\n v-for=\"value in views\"\n :key=\"value\"\n :label=\"viewLabel(value)\"\n :selected=\"value === view\"\n @select=\"setView(value)\"\n />\n </VMenu>\n </div>\n </div>\n\n <VCalendarTimeGrid\n v-if=\"isTimeGrid\"\n ref=\"gridRef\"\n v-model:focused=\"focused\"\n class=\"v-calendar-view\"\n :days=\"days\"\n :events=\"events\"\n :window=\"window\"\n :slot-duration=\"slotDuration\"\n :locale=\"resolvedLocale\"\n :hour-format=\"resolvedHourFormat\"\n :today=\"today\"\n :now=\"showCurrentTime ? now : null\"\n :editable=\"editable\"\n :creatable=\"creatable\"\n :hint-id=\"hintId\"\n :edge-step-delay=\"edgeStepDelay\"\n :auto-scroll=\"autoScroll\"\n :label=\"rangeText\"\n @cell-activate=\"onCellActivate\"\n @event-activate=\"emit('event-activate', $event)\"\n @event-drop=\"onEventDrop\"\n @slot-create=\"onSlotCreate\"\n @announce=\"announce\"\n @step=\"step\"\n >\n <template v-if=\"$slots.event\" #event=\"slotProps\">\n <slot name=\"event\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"$slots['day-header']\" #day-header=\"slotProps\">\n <slot name=\"day-header\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"$slots['all-day-label']\" #all-day-label>\n <slot name=\"all-day-label\" />\n </template>\n </VCalendarTimeGrid>\n\n <VCalendarMonth\n v-else-if=\"view === 'month'\"\n ref=\"gridRef\"\n v-model:focused=\"focusedDay\"\n class=\"v-calendar-view\"\n :weeks=\"weeks\"\n :events=\"events\"\n :locale=\"resolvedLocale\"\n :hour-format=\"resolvedHourFormat\"\n :today=\"today\"\n :event-limit=\"monthEventLimit\"\n :editable=\"editable\"\n :hint-id=\"hintId\"\n :edge-step-delay=\"edgeStepDelay\"\n :label=\"rangeText\"\n @day-activate=\"openIn($event, 'day')\"\n @cell-activate=\"onCellActivate($event, window.start)\"\n @event-activate=\"emit('event-activate', $event)\"\n @event-drop=\"onEventDrop\"\n @announce=\"announce\"\n @step=\"step\"\n >\n <template v-if=\"$slots.event\" #event=\"slotProps\">\n <slot name=\"event\" v-bind=\"slotProps\" />\n </template>\n </VCalendarMonth>\n\n <VCalendarYear\n v-else\n class=\"v-calendar-view\"\n :months=\"months\"\n :events=\"events\"\n :locale=\"resolvedLocale\"\n :weekdays=\"resolvedWeekdays\"\n :today=\"today\"\n :label=\"rangeText\"\n @month-activate=\"openIn($event, 'month')\"\n />\n\n <!--\n Both of these are rendered from the first paint and never conditionally.\n\n The live region has to EXIST before it has anything to say: one inserted along with\n its first message is not announced at all. And the hint is what every card points at\n with `aria-describedby`, so one node serves the whole calendar rather than repeating\n the same sentence on each of a hundred events.\n -->\n <div class=\"v-visually-hidden\" role=\"status\" aria-live=\"polite\">{{ announcement }}</div>\n <span :id=\"hintId\" class=\"v-visually-hidden\">{{ m.calendar.eventHint }}</span>\n </section>\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n .v-calendar {\n display: flex;\n block-size: 100%;\n min-block-size: 0;\n font-family: var(--vectis-text-family);\n color: var(--vectis-color-text);\n }\n\n /*\n * The height is settled in CSS rather than measured, the VDataTable idiom: the region is\n * a flex column at full height, the toolbar refuses to grow and the grid takes what is\n * left. `min-block-size: 0` on the grid is what lets it shrink below its content and\n * therefore scroll — without it the automatic minimum of a flex item would hold it at its\n * full 24-hour height and the whole page would scroll instead.\n *\n * All of it is a no-op when the parent's height is auto, where the percentage falls back\n * to auto and the calendar is simply as tall as its content. That is what makes an opt-in\n * prop unnecessary.\n */\n .v-calendar-region {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-inline-size: 0;\n min-block-size: 0;\n }\n\n .v-calendar-toolbar {\n display: flex;\n flex: none;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--vectis-space-2);\n padding-block-end: var(--vectis-space-3);\n }\n\n .v-calendar-nav {\n display: flex;\n align-items: center;\n gap: var(--vectis-space-1);\n }\n\n .v-calendar-title {\n /* It may be long — a full weekday and month in the day view — so it is the part that\n gives way first, and the controls keep their size. */\n min-inline-size: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-calendar-actions {\n display: flex;\n align-items: center;\n gap: var(--vectis-space-2);\n /* The two siblings are pushed apart from here rather than by a `justify-content` on the\n toolbar, which would space every control equally instead of grouping them. */\n margin-inline-start: auto;\n }\n\n .v-calendar-view {\n flex: 1;\n min-block-size: 0;\n border: 1px solid var(--vectis-color-border);\n border-radius: var(--vectis-radius-surface);\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
|
|
2
|
+
@layer vectis.components{.v-calendar-event{--calendar-event-face:var(--vectis-color-event-surface);--calendar-event-edge:var(--vectis-color-event-border);--calendar-event-ink:var(--vectis-color-event-text);border:1px solid var(--calendar-event-edge);border-inline-start:3px solid var(--calendar-event-edge);border-radius:var(--vectis-radius-interactive);background:var(--calendar-event-face);color:var(--calendar-event-ink);font-family:var(--vectis-text-family);text-align:start;cursor:pointer;transition:box-shadow var(--vectis-duration-fast) var(--vectis-ease-default), filter var(--vectis-duration-fast) var(--vectis-ease-default);display:flex;position:relative;overflow:hidden;container-type:size}.v-calendar-event[data-custom]{--calendar-event-edge:var(--calendar-event-color);--calendar-event-face:color-mix(in oklab, var(--calendar-event-color) 14%, var(--vectis-color-surface));--calendar-event-ink:var(--vectis-color-text)}.v-calendar-event-body{min-block-size:0;min-inline-size:0;padding:var(--vectis-space-1) var(--vectis-space-2);flex-direction:column;flex:1;gap:1px;display:flex;overflow:hidden}@container (height<=3rem){.v-calendar-event[data-layout=block] .v-calendar-event-body{align-items:center;gap:var(--vectis-space-1);flex-direction:row;padding-block:0}.v-calendar-event[data-layout=block] .v-calendar-event-title{flex:1;min-inline-size:0}.v-calendar-event[data-layout=block] .v-calendar-event-time{flex:none}.v-calendar-event[data-layout=block] .v-calendar-event-description{display:none}}@container (height<=1.5rem){.v-calendar-event[data-layout=block] .v-calendar-event-title,.v-calendar-event[data-layout=block] .v-calendar-event-time{line-height:1}.v-calendar-event[data-layout=block] .v-calendar-event-handle{block-size:calc(var(--vectis-control-size-calendar-handle) / 2)}}.v-calendar-event:hover{filter:brightness(.97)}.v-calendar-event[data-dragging]{opacity:.75;box-shadow:var(--vectis-shadow-md);pointer-events:none;z-index:3}.v-calendar-event[data-rejected]{--calendar-event-face:var(--vectis-color-danger-surface);--calendar-event-edge:var(--vectis-color-danger-border);--calendar-event-ink:var(--vectis-color-danger-text);box-shadow:none;border-style:dotted}.v-calendar-event[data-ghost]{opacity:.4;z-index:0;border-style:dashed}.v-calendar-event[data-grabbed]{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset);box-shadow:var(--vectis-shadow-md);z-index:3}.v-calendar-event-handle{block-size:var(--vectis-control-size-calendar-handle);touch-action:none;cursor:ns-resize;position:absolute;inset-block-end:0;inset-inline:0}.v-calendar-event-handle:after{content:"";inline-size:var(--vectis-space-4);border-radius:var(--vectis-radius-pill);background:var(--calendar-event-ink);opacity:0;block-size:2px;transition:opacity var(--vectis-duration-fast) var(--vectis-ease-default);position:absolute;inset-block-end:2px;inset-inline-start:50%;translate:-50%}.v-calendar-event:hover .v-calendar-event-handle:after,.v-calendar-event[data-dragging] .v-calendar-event-handle:after{opacity:.6}.v-calendar-event:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:calc(-1 * var(--vectis-focus-ring-width))}.v-calendar-event[data-continues-before]{border-block-start-style:dashed;border-start-start-radius:0;border-start-end-radius:0}.v-calendar-event[data-continues-after]{border-block-end-style:dashed;border-end-end-radius:0;border-end-start-radius:0}.v-calendar-event[data-layout=chip]{block-size:var(--calendar-chip-height,100%)}.v-calendar-event[data-layout=chip] .v-calendar-event-body{align-items:center;gap:var(--vectis-space-1);flex-direction:row;padding-block:0}.v-calendar-event-title{font-size:var(--vectis-text-body-sm-size);font-weight:var(--vectis-font-weight-medium);line-height:var(--vectis-text-body-sm-leading);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.v-calendar-event-time{font-size:var(--vectis-text-caption-size);line-height:var(--vectis-text-caption-leading);text-overflow:ellipsis;white-space:nowrap;opacity:.85;overflow:hidden}.v-calendar-event-description{min-block-size:0;color:inherit;text-overflow:ellipsis;opacity:.85;overflow:hidden}@media (prefers-reduced-motion:reduce){.v-calendar-event,.v-calendar-event-handle:after{transition:none}}}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { CalendarEvent, CalendarEventId } from './types.js';
|
|
2
|
+
export interface CalendarEventProps<T> {
|
|
3
|
+
/** The event this card stands for. */
|
|
4
|
+
event: T;
|
|
5
|
+
/**
|
|
6
|
+
* Which shape to take: a block, which fills the box the calendar gives it and can show a
|
|
7
|
+
* second line, or a chip, which is one line high and sits in a row of others.
|
|
8
|
+
*/
|
|
9
|
+
layout?: 'block' | 'chip';
|
|
10
|
+
/** The event's times, already written out for the reader by the calendar. */
|
|
11
|
+
timeText?: string;
|
|
12
|
+
/** Whether the event carries on past the start or the end of what is on show. */
|
|
13
|
+
continuesBefore?: boolean;
|
|
14
|
+
continuesAfter?: boolean;
|
|
15
|
+
/** Shows the strip along the bottom edge that the event's end is dragged by. */
|
|
16
|
+
resizable?: boolean;
|
|
17
|
+
/** Whether the card is being dragged with a pointer right now. */
|
|
18
|
+
dragging?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Whether letting go now would write nothing: the pointer has left the calendar, and the event
|
|
21
|
+
* is about to return to where the faded echo shows it started.
|
|
22
|
+
*
|
|
23
|
+
* It is separate from `dragging` rather than folded into it because a refused card is ALSO
|
|
24
|
+
* being dragged — the two are orthogonal, and the stylesheet reads both. Named for what the
|
|
25
|
+
* card knows, which is that its drop will not be taken; a card knows nothing of a view it
|
|
26
|
+
* might be outside of.
|
|
27
|
+
*/
|
|
28
|
+
rejected?: boolean;
|
|
29
|
+
/** Whether the card has been taken hold of with the keyboard. */
|
|
30
|
+
grabbed?: boolean;
|
|
31
|
+
/** How the card says it can be moved, read from a node the calendar shares between them. */
|
|
32
|
+
hintId?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Marks this card as the faded echo left behind where a dragged event STARTED, and names
|
|
35
|
+
* the event it echoes.
|
|
36
|
+
*
|
|
37
|
+
* It carries the original id rather than a bare boolean because the colour is derived from
|
|
38
|
+
* an id: a ghost has to be given a distinct one so the layout can tell the two apart, and
|
|
39
|
+
* without this the echo would come out a different colour from the card it belongs to.
|
|
40
|
+
*/
|
|
41
|
+
ghostOf?: CalendarEventId;
|
|
42
|
+
}
|
|
43
|
+
declare const __VLS_export: <E extends CalendarEvent>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
44
|
+
props: import('vue').PublicProps & __VLS_PrettifyLocal<CalendarEventProps<E>> & (typeof globalThis extends {
|
|
45
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
46
|
+
} ? P : {});
|
|
47
|
+
expose: (exposed: {}) => void;
|
|
48
|
+
attrs: any;
|
|
49
|
+
slots: {
|
|
50
|
+
/** The whole content of the card, replacing the title and the times. */
|
|
51
|
+
default?(props: {
|
|
52
|
+
event: E;
|
|
53
|
+
layout: "block" | "chip";
|
|
54
|
+
timeText: string;
|
|
55
|
+
continuesBefore: boolean;
|
|
56
|
+
continuesAfter: boolean;
|
|
57
|
+
dragging: boolean;
|
|
58
|
+
grabbed: boolean;
|
|
59
|
+
}): unknown;
|
|
60
|
+
};
|
|
61
|
+
emit: {};
|
|
62
|
+
}>) => import('vue').VNode & {
|
|
63
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
64
|
+
};
|
|
65
|
+
declare const _default: typeof __VLS_export;
|
|
66
|
+
export default _default;
|
|
67
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
68
|
+
[K in keyof T]: T[K];
|
|
69
|
+
} : {
|
|
70
|
+
[K in keyof T as K]: T[K];
|
|
71
|
+
}) & {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './VCalendarEvent.css';
|
|
2
|
+
import e from "./VCalendarEvent.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/VCalendar/VCalendarEvent.vue
|
|
5
|
+
var t = e;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { t as default };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=VCalendarEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VCalendarEvent.js","names":[],"sources":["../../../src/components/VCalendar/VCalendarEvent.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"E extends CalendarEvent\">\n// @a11y @core\n/**\n * One event, as it is drawn on the calendar.\n *\n * It is internal to VCalendar and has no story of its own: its documentation lives with\n * the component that renders it (the `VMenuPanel` and `VComboboxOption` precedent). It\n * exists because the same card is drawn from three places in two shapes — a block in a day\n * column, a chip in the all-day band or a month cell — and writing it three times would\n * triplicate the accessible name, the colour table and the slot.\n *\n * It is a real `<button>`, which is what makes an event reachable and activatable with no\n * JavaScript of its own. The only script here derives the colour; everything else — where\n * the card goes, and what happens when it is dragged — belongs to the calendar, which is\n * the thing that knows about the grid.\n */\nimport { computed } from 'vue'\n\nimport VTypography from '../VTypography/VTypography.vue'\n\nimport { useMessages } from '../../i18n/state'\n\nimport { hueOf } from './color'\nimport type { CalendarEvent, CalendarEventId } from './types'\n\nexport interface CalendarEventProps<T> {\n /** The event this card stands for. */\n event: T\n /**\n * Which shape to take: a block, which fills the box the calendar gives it and can show a\n * second line, or a chip, which is one line high and sits in a row of others.\n */\n layout?: 'block' | 'chip'\n /** The event's times, already written out for the reader by the calendar. */\n timeText?: string\n /** Whether the event carries on past the start or the end of what is on show. */\n continuesBefore?: boolean\n continuesAfter?: boolean\n /** Shows the strip along the bottom edge that the event's end is dragged by. */\n resizable?: boolean\n /** Whether the card is being dragged with a pointer right now. */\n dragging?: boolean\n /**\n * Whether letting go now would write nothing: the pointer has left the calendar, and the event\n * is about to return to where the faded echo shows it started.\n *\n * It is separate from `dragging` rather than folded into it because a refused card is ALSO\n * being dragged — the two are orthogonal, and the stylesheet reads both. Named for what the\n * card knows, which is that its drop will not be taken; a card knows nothing of a view it\n * might be outside of.\n */\n rejected?: boolean\n /** Whether the card has been taken hold of with the keyboard. */\n grabbed?: boolean\n /** How the card says it can be moved, read from a node the calendar shares between them. */\n hintId?: string\n /**\n * Marks this card as the faded echo left behind where a dragged event STARTED, and names\n * the event it echoes.\n *\n * It carries the original id rather than a bare boolean because the colour is derived from\n * an id: a ghost has to be given a distinct one so the layout can tell the two apart, and\n * without this the echo would come out a different colour from the card it belongs to.\n */\n ghostOf?: CalendarEventId\n}\n\nconst props = withDefaults(defineProps<CalendarEventProps<E>>(), {\n layout: 'block',\n timeText: '',\n continuesBefore: false,\n continuesAfter: false,\n resizable: false,\n dragging: false,\n rejected: false,\n grabbed: false,\n hintId: undefined,\n ghostOf: undefined,\n})\n\ndefineSlots<{\n /** The whole content of the card, replacing the title and the times. */\n default?(props: {\n event: E\n layout: 'block' | 'chip'\n timeText: string\n continuesBefore: boolean\n continuesAfter: boolean\n dragging: boolean\n grabbed: boolean\n }): unknown\n}>()\n\nconst m = useMessages()\n\n/*\n * A colour given by the consumer is used as it stands; otherwise a hue is derived from the\n * event's id and the token layer supplies the lightness and the chroma that go with it.\n * The two are kept apart by an attribute rather than by a fallback chain, because the\n * custom case needs a DIFFERENT recipe and not merely a different value — see the\n * stylesheet below.\n */\nconst hue = computed(() => hueOf(props.ghostOf ?? props.event.id))\n\nconst style = computed(() =>\n props.event.color\n ? { '--calendar-event-color': props.event.color }\n : { '--vectis-calendar-event-hue': String(hue.value) },\n)\n\n/**\n * What a screen reader hears: the title, then when it happens. The visible card may hide\n * the times when it is too short to hold them, so the name has to carry them itself —\n * \"Standup\" alone would leave a reader unable to tell two days of it apart.\n */\nconst accessibleName = computed(() =>\n props.timeText ? `${props.event.title}, ${props.timeText}` : props.event.title,\n)\n</script>\n\n<template>\n <button\n type=\"button\"\n class=\"v-calendar-event\"\n :data-event-id=\"String(event.id)\"\n :data-layout=\"layout\"\n :data-custom=\"event.color ? '' : undefined\"\n :data-continues-before=\"continuesBefore ? '' : undefined\"\n :data-continues-after=\"continuesAfter ? '' : undefined\"\n :data-dragging=\"dragging ? '' : undefined\"\n :data-rejected=\"rejected ? '' : undefined\"\n :data-grabbed=\"grabbed ? '' : undefined\"\n :data-ghost=\"ghostOf !== undefined ? '' : undefined\"\n :style=\"style\"\n :aria-label=\"accessibleName\"\n :aria-roledescription=\"m.calendar.eventRoleDescription\"\n :aria-describedby=\"hintId\"\n :inert=\"ghostOf !== undefined ? true : undefined\"\n >\n <!--\n The content sits in a box of its own because the CARD is the container the stylesheet\n queries, and an element cannot be styled by its own container query. The layout that\n has to change when a card gets short — a column of two lines becoming one row — must\n therefore live on a descendant. It is also why the padding belongs here rather than on\n the button: a card cannot zero its own.\n -->\n <span class=\"v-calendar-event-body\">\n <slot\n :event=\"event\"\n :layout=\"layout\"\n :time-text=\"timeText\"\n :continues-before=\"continuesBefore\"\n :continues-after=\"continuesAfter\"\n :dragging=\"dragging\"\n :grabbed=\"grabbed\"\n >\n <span class=\"v-calendar-event-title\">{{ event.title }}</span>\n <span v-if=\"layout === 'block' && timeText\" class=\"v-calendar-event-time\">\n {{ timeText }}\n </span>\n <VTypography\n v-if=\"layout === 'block' && event.description\"\n as=\"span\"\n variant=\"caption\"\n class=\"v-calendar-event-description\"\n >\n {{ event.description }}\n </VTypography>\n </slot>\n </span>\n\n <!--\n The strip the event's end is dragged by.\n\n It is a `span` and NOT a control, which is what keeps it out of the accessibility tree\n and away from `nested-interactive`: a button inside a button is invalid HTML and a\n blocking accessibility failure at once. It is a pointer affordance and nothing else,\n and its keyboard equivalent lives on the card itself as Shift with the arrow keys —\n which is why hiding it costs a reader nothing.\n -->\n <span\n v-if=\"resizable && layout === 'block'\"\n class=\"v-calendar-event-handle\"\n data-calendar-handle\n aria-hidden=\"true\"\n />\n </button>\n</template>\n\n<style>\n@layer vectis.components {\n .v-calendar-event {\n /*\n * The three colours of a card, named by what they paint rather than by where they come\n * from — which is what lets the custom block below swap the SOURCE of all three without\n * touching a single rule that consumes them.\n */\n --calendar-event-face: var(--vectis-color-event-surface);\n --calendar-event-edge: var(--vectis-color-event-border);\n --calendar-event-ink: var(--vectis-color-event-text);\n\n /* The handle is placed against this box, so the card has to establish one. */\n position: relative;\n display: flex;\n overflow: hidden;\n /*\n * The card is what the body below is measured against.\n *\n * `size` and not `inline-size`, which is what the library's other four containers use:\n * the question being asked here is about HEIGHT, since that is what a short event runs\n * out of. It is safe because a card's two dimensions are both set outright by\n * `.v-calendar-block` — size containment therefore removes an influence nothing was\n * exercising. Asking in minutes instead would have meant calibrating against\n * `--vectis-control-size-calendar-hour`, and being silently wrong for anyone who\n * overrode it.\n */\n container-type: size;\n border: 1px solid var(--calendar-event-edge);\n /* The leading edge is what carries the colour at a glance, so it is drawn thicker. It\n is a border and not a background stripe: under Windows forced-colors a background is\n forced to Canvas and vanishes, where a border keeps a colour of its own. */\n border-inline-start: 3px solid var(--calendar-event-edge);\n border-radius: var(--vectis-radius-interactive);\n background: var(--calendar-event-face);\n color: var(--calendar-event-ink);\n font-family: var(--vectis-text-family);\n text-align: start;\n cursor: pointer;\n transition:\n box-shadow var(--vectis-duration-fast) var(--vectis-ease-default),\n filter var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n /*\n * A colour the consumer chose is an arbitrary value, so the card is built so that NOTHING\n * is ever written on top of it: it paints the edge, and the face is a faint wash of it\n * over the page's own surface — which also makes it follow the theme with no second\n * setting. The text stays the page's text colour, whose contrast against that surface is\n * already guaranteed. This is the deliberate difference from VChip, where a fully\n * coloured chip leaves the check to whoever chose the colour.\n */\n .v-calendar-event[data-custom] {\n --calendar-event-edge: var(--calendar-event-color);\n --calendar-event-face: color-mix(\n in oklab,\n var(--calendar-event-color) 14%,\n var(--vectis-color-surface)\n );\n --calendar-event-ink: var(--vectis-color-text);\n }\n\n .v-calendar-event-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 1px;\n /* Without this a flex item refuses to shrink past its content, and a card too short for\n its own text would push its title out of the clip instead of cropping it. */\n min-block-size: 0;\n min-inline-size: 0;\n overflow: hidden;\n padding: var(--vectis-space-1) var(--vectis-space-2);\n }\n\n /*\n * A card too short for two lines puts them on ONE: the title first and ellipsized, the\n * time after it, and the description dropped — which is the only way a quarter of an hour\n * shows anything at all. Three rem is where a title line, a time line, the gap and the\n * padding stop fitting; below it there is room for exactly one line.\n *\n * The threshold is a literal because a container query takes no custom properties — the\n * same constraint VPagination's steps are written under.\n */\n @container (max-height: 3rem) {\n .v-calendar-event[data-layout='block'] .v-calendar-event-body {\n flex-direction: row;\n align-items: center;\n gap: var(--vectis-space-1);\n padding-block: 0;\n }\n\n .v-calendar-event[data-layout='block'] .v-calendar-event-title {\n flex: 1;\n min-inline-size: 0;\n }\n\n .v-calendar-event[data-layout='block'] .v-calendar-event-time {\n flex: none;\n }\n\n /* There is no room for a third thing, and the title is what identifies the event. */\n .v-calendar-event[data-layout='block'] .v-calendar-event-description {\n display: none;\n }\n }\n\n /*\n * The shortest card there is: one slot, which at the default hour height is sixteen pixels,\n * leaving fourteen once the border is taken. A line of the title at its normal leading is\n * eighteen — so the leading is what gives, down to the glyphs themselves. Nothing smaller\n * is available: twelve pixels is already the smallest type role the library has.\n *\n * This tier exists because a card may no longer grow past its own length: it is the price\n * of a quarter of an hour that stays inside its slot, and it is paid in leading rather than\n * in a card that covers the next one.\n */\n @container (max-height: 1.5rem) {\n .v-calendar-event[data-layout='block'] .v-calendar-event-title,\n .v-calendar-event[data-layout='block'] .v-calendar-event-time {\n line-height: 1;\n }\n\n /* Half the strip, or half of a sixteen-pixel card would resize rather than move it. */\n .v-calendar-event[data-layout='block'] .v-calendar-event-handle {\n block-size: calc(var(--vectis-control-size-calendar-handle) / 2);\n }\n }\n\n .v-calendar-event:hover {\n filter: brightness(0.97);\n }\n\n /*\n * A card being moved is lifted off the grid and made slightly transparent, so the hours\n * underneath stay readable while it travels — a solid card would hide the very rules the\n * reader is aiming at. `pointer-events: none` matters as much: the pointer is captured by\n * the grid, and a card under the cursor would otherwise take the hover of every cell it\n * passed over.\n */\n .v-calendar-event[data-dragging] {\n opacity: 0.75;\n box-shadow: var(--vectis-shadow-md);\n pointer-events: none;\n z-index: 3;\n }\n\n /*\n * A card whose drop will not be taken: the pointer has left the calendar, and letting go here\n * puts the event back where the echo shows it started.\n *\n * THREE channels, because one is never enough. The colour is the danger role, reached through\n * the same three local variables `[data-custom]` swaps — which is also what repaints a card the\n * consumer coloured, that rule sitting higher up this sheet. The LIFT is taken away, so a card\n * that will not land visibly stops being carried: the one cue that costs no colour at all. And\n * the border goes DOTTED, the only one of the three surviving Windows forced-colors, where the\n * face is forced to Canvas and every card would otherwise look identical — dotted rather than\n * dashed because dashed is already the echo's language, and a refused drop must not read as a\n * memory of one.\n *\n * `opacity: 0.75` is deliberately left in place: it is what keeps the hours under the card\n * readable, and the reader is still aiming with it.\n *\n * TRAP — this rule must stay BELOW `[data-dragging]`. Both are (0,2,0) and a refused card is\n * always also a dragged one, so the later rule is the whole of the arbitration. That is\n * legitimate here and only here: these two live in the SAME sheet, where the internal order is\n * ours to decide — between two component sheets it would be the consumer's bundler deciding.\n */\n .v-calendar-event[data-rejected] {\n --calendar-event-face: var(--vectis-color-danger-surface);\n --calendar-event-edge: var(--vectis-color-danger-border);\n --calendar-event-ink: var(--vectis-color-danger-text);\n\n border-style: dotted;\n box-shadow: none;\n }\n\n /*\n * The echo left where a dragged event started, so the reader can see what they are moving\n * it FROM — without it a long drag ends with no idea what has just been given up.\n *\n * Faded rather than outlined, and dashed rather than solid, so that it reads as a memory\n * and not as a second event: at a glance the only card that looks real is the one under the\n * pointer. It sits UNDER everything (`z-index: 0`), since it is the one thing on the grid\n * that nothing should ever be hidden behind.\n *\n * `inert` in the template is what keeps it out of the accessibility tree and out of reach\n * of the pointer, in one attribute — a duplicate announced a second time would be noise,\n * and a focusable copy inside a hidden subtree is an axe violation of its own.\n */\n .v-calendar-event[data-ghost] {\n opacity: 0.4;\n border-style: dashed;\n z-index: 0;\n }\n\n /* Held by the keyboard: the same lift, but marked with the focus ring's own colour, since\n there is no pointer to show where it is going. */\n .v-calendar-event[data-grabbed] {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n box-shadow: var(--vectis-shadow-md);\n z-index: 3;\n }\n\n .v-calendar-event-handle {\n position: absolute;\n inset-block-end: 0;\n inset-inline: 0;\n block-size: var(--vectis-control-size-calendar-handle);\n /* Dragging here IS how the end is set, so it must do nothing else: no scrolling under a\n finger, and no selecting the text it sits over. */\n touch-action: none;\n cursor: ns-resize;\n }\n\n /* The grip appears on hover and while the card is being resized, never permanently: a\n short card is mostly handle, and a line across every event all the time reads as a\n border nobody asked for. */\n .v-calendar-event-handle::after {\n content: '';\n position: absolute;\n inset-block-end: 2px;\n inset-inline-start: 50%;\n inline-size: var(--vectis-space-4);\n block-size: 2px;\n translate: -50% 0;\n border-radius: var(--vectis-radius-pill);\n background: var(--calendar-event-ink);\n opacity: 0;\n transition: opacity var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n .v-calendar-event:hover .v-calendar-event-handle::after,\n .v-calendar-event[data-dragging] .v-calendar-event-handle::after {\n opacity: 0.6;\n }\n\n .v-calendar-event:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: calc(-1 * var(--vectis-focus-ring-width));\n }\n\n /* An event running past what is on show loses the corner on that side, so the card reads\n as cut off rather than as merely small. */\n .v-calendar-event[data-continues-before] {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n border-block-start-style: dashed;\n }\n\n .v-calendar-event[data-continues-after] {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n border-block-end-style: dashed;\n }\n\n /*\n * A chip fills the box it was put in — a lane of the all-day band, whose grid row is\n * already the right height — unless the consumer of this class names a height instead.\n *\n * TRAP — that indirection is not a nicety, it is the only correct shape. This selector is\n * (0,2,0) and `.v-calendar-month-chip`, which needs a different height, is (0,1,0) in\n * ANOTHER SHEET: matching specificity would hand the winner to whichever order the\n * consumer's bundler happens to emit, and beating it would need a three-class compound.\n * Routing through a property this rule already reads is the library's documented way out,\n * the one `.v-table-title` takes on `--typography-color`.\n */\n .v-calendar-event[data-layout='chip'] {\n block-size: var(--calendar-chip-height, 100%);\n }\n\n .v-calendar-event[data-layout='chip'] .v-calendar-event-body {\n flex-direction: row;\n align-items: center;\n gap: var(--vectis-space-1);\n padding-block: 0;\n }\n\n .v-calendar-event-title {\n overflow: hidden;\n font-size: var(--vectis-text-body-sm-size);\n font-weight: var(--vectis-font-weight-medium);\n line-height: var(--vectis-text-body-sm-leading);\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-calendar-event-time {\n overflow: hidden;\n font-size: var(--vectis-text-caption-size);\n line-height: var(--vectis-text-caption-leading);\n text-overflow: ellipsis;\n white-space: nowrap;\n /* The times are secondary to the title, but the card's colour is already doing the\n quiet work — a muted token here would fight it, so the same ink at less weight. */\n opacity: 0.85;\n }\n\n .v-calendar-event-description {\n overflow: hidden;\n /* The card's height is the event's length, so a description shows only where there is\n genuinely room for it: it takes whatever is left and disappears when that is nothing. */\n min-block-size: 0;\n color: inherit;\n text-overflow: ellipsis;\n opacity: 0.85;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-calendar-event,\n .v-calendar-event-handle::after {\n transition: none;\n }\n }\n}\n</style>\n"],"mappings":""}
|