├── .babelrc.json ├── .editorconfig ├── .eslintrc-auto-import.json ├── .github └── workflows │ ├── build.yml │ ├── main.yml │ ├── pr-check-suite.yml │ ├── pr-depfu-merge.yml │ ├── release-tag.yml │ ├── sonarcloud.yml │ ├── styleguide.yml │ ├── test.yml │ └── vercel-deploy.yml ├── .gitignore ├── .npmrc ├── .storybook ├── main.ts ├── preview-head.html ├── preview.ts ├── static │ ├── 24consulting.svg │ ├── 8wave.svg │ ├── brand-dark.svg │ ├── brand.svg │ ├── favicon.ico │ ├── iconify-name-structure.png │ └── volverjs-ui-vue.svg └── style.scss ├── .vscode ├── extensions.json └── settings.json ├── CHANGELOG.md ├── CREDITS.md ├── LICENSE ├── README.md ├── auto-imports.d.ts ├── env.d.ts ├── eslint.config.js ├── package.json ├── pnpm-lock.yaml ├── scripts ├── build.js └── icons.ts ├── sonar-project.properties ├── src ├── Volver.ts ├── assets │ └── icons │ │ ├── detailed.json │ │ ├── detailed │ │ ├── add-circle.svg │ │ ├── add.svg │ │ ├── align-center.svg │ │ ├── align-justify.svg │ │ ├── align-left.svg │ │ ├── align-right.svg │ │ ├── analysis-2.svg │ │ ├── analysis-3.svg │ │ ├── analysis.svg │ │ ├── apple.svg │ │ ├── arrow-down.svg │ │ ├── arrow-left.svg │ │ ├── arrow-right.svg │ │ ├── arrow-up.svg │ │ ├── attachment.svg │ │ ├── back-to-front.svg │ │ ├── bell-active.svg │ │ ├── bell.svg │ │ ├── bold.svg │ │ ├── bookmark-active.svg │ │ ├── bookmark.svg │ │ ├── building.svg │ │ ├── bullet-list.svg │ │ ├── calendar.svg │ │ ├── camera-off.svg │ │ ├── camera-on.svg │ │ ├── catalog.svg │ │ ├── certificate.svg │ │ ├── chat.svg │ │ ├── check-badge.svg │ │ ├── check-circle.svg │ │ ├── check.svg │ │ ├── checkbox.svg │ │ ├── chevron-down-circle.svg │ │ ├── chevron-down.svg │ │ ├── chevron-left-circle.svg │ │ ├── chevron-left.svg │ │ ├── chevron-right-circle.svg │ │ ├── chevron-up-circle.svg │ │ ├── chevron-up.svg │ │ ├── circle.svg │ │ ├── classroom.svg │ │ ├── clear-field.svg │ │ ├── clear-style.svg │ │ ├── close-circle.svg │ │ ├── close-loader.svg │ │ ├── close.svg │ │ ├── coffee.svg │ │ ├── color.svg │ │ ├── contact-us.svg │ │ ├── copy.svg │ │ ├── courses.svg │ │ ├── dashboard.svg │ │ ├── download.svg │ │ ├── drag.svg │ │ ├── duplicate.svg │ │ ├── edit.svg │ │ ├── elearning.svg │ │ ├── email.svg │ │ ├── error-2.svg │ │ ├── error.svg │ │ ├── exercise.svg │ │ ├── external-link.svg │ │ ├── extract.svg │ │ ├── eye-off.svg │ │ ├── eye-on.svg │ │ ├── fail.svg │ │ ├── fast-back.svg │ │ ├── fast-forward.svg │ │ ├── file-add.svg │ │ ├── file-duplicate.svg │ │ ├── file-remove.svg │ │ ├── file-required.svg │ │ ├── file.svg │ │ ├── filter-2.svg │ │ ├── filter-active.svg │ │ ├── filter.svg │ │ ├── flag.svg │ │ ├── folder.svg │ │ ├── full-width.svg │ │ ├── go-to-back.svg │ │ ├── grid.svg │ │ ├── group-add.svg │ │ ├── group.svg │ │ ├── heart-active.svg │ │ ├── heart.svg │ │ ├── highlighter.svg │ │ ├── home.svg │ │ ├── hourglass.svg │ │ ├── image.svg │ │ ├── info-badge.svg │ │ ├── information.svg │ │ ├── italic.svg │ │ ├── key.svg │ │ ├── language.svg │ │ ├── learning-path.svg │ │ ├── light-off.svg │ │ ├── light-on.svg │ │ ├── link.svg │ │ ├── lock.svg │ │ ├── login.svg │ │ ├── logout.svg │ │ ├── maximaze.svg │ │ ├── menu.svg │ │ ├── merge.svg │ │ ├── minimize.svg │ │ ├── mixed-class.svg │ │ ├── more-horizontal.svg │ │ ├── more-vertical.svg │ │ ├── news.svg │ │ ├── no-prerequisites.svg │ │ ├── notes.svg │ │ ├── number-code.svg │ │ ├── numbered-list.svg │ │ ├── on-site.svg │ │ ├── order-down.svg │ │ ├── order-up.svg │ │ ├── paste.svg │ │ ├── pausa.svg │ │ ├── pdf.svg │ │ ├── phone.svg │ │ ├── pin-map.svg │ │ ├── pin.svg │ │ ├── pizza.svg │ │ ├── play.svg │ │ ├── plug-in.svg │ │ ├── pointer.svg │ │ ├── printer.svg │ │ ├── profile-add.svg │ │ ├── profile.svg │ │ ├── push-pin-off.svg │ │ ├── push-pin-on.svg │ │ ├── qrcode.svg │ │ ├── question-badge.svg │ │ ├── radio.svg │ │ ├── redo.svg │ │ ├── relations.svg │ │ ├── reload.svg │ │ ├── remove-circle.svg │ │ ├── remove.svg │ │ ├── reorder.svg │ │ ├── repeat.svg │ │ ├── repository.svg │ │ ├── request-form.svg │ │ ├── resize-100%.svg │ │ ├── resize-height.svg │ │ ├── resize-width.svg │ │ ├── search.svg │ │ ├── sequential-prerequisites.svg │ │ ├── settings.svg │ │ ├── share.svg │ │ ├── sketch.svg │ │ ├── skills.svg │ │ ├── skip-back.svg │ │ ├── skip-forward.svg │ │ ├── sms.svg │ │ ├── sso-access.svg │ │ ├── star-active.svg │ │ ├── star.svg │ │ ├── success.svg │ │ ├── sun.svg │ │ ├── sunrise.svg │ │ ├── support.svg │ │ ├── survey.svg │ │ ├── table.svg │ │ ├── tematic-channels.svg │ │ ├── test.svg │ │ ├── text-body.svg │ │ ├── text-edit.svg │ │ ├── text-style.svg │ │ ├── time.svg │ │ ├── toilet-piper.svg │ │ ├── training-points.svg │ │ ├── trash.svg │ │ ├── underline.svg │ │ ├── undo.svg │ │ ├── unlock.svg │ │ ├── upload.svg │ │ ├── user-add.svg │ │ ├── user-badge.svg │ │ ├── user.svg │ │ ├── video-off.svg │ │ ├── video-on.svg │ │ ├── video-rec.svg │ │ ├── view-card.svg │ │ ├── view-list.svg │ │ ├── view.svg │ │ ├── voice-off.svg │ │ ├── voice-on.svg │ │ ├── volume-down.svg │ │ ├── volume-off.svg │ │ ├── volume-up.svg │ │ ├── warning.svg │ │ ├── webinar.svg │ │ ├── whiteboard.svg │ │ ├── wine.svg │ │ ├── zip.svg │ │ ├── zoom-in.svg │ │ └── zoom-out.svg │ │ ├── normal.json │ │ ├── normal │ │ ├── add-circle.svg │ │ ├── add.svg │ │ ├── align-center.svg │ │ ├── align-justify.svg │ │ ├── align-left.svg │ │ ├── align-right.svg │ │ ├── analysis-2.svg │ │ ├── analysis-3.svg │ │ ├── analysis.svg │ │ ├── apple.svg │ │ ├── arrow-down.svg │ │ ├── arrow-left.svg │ │ ├── arrow-right.svg │ │ ├── arrow-up.svg │ │ ├── attachment.svg │ │ ├── back-to-front.svg │ │ ├── bell-active.svg │ │ ├── bell.svg │ │ ├── bold.svg │ │ ├── bookmark active.svg │ │ ├── bookmark.svg │ │ ├── building.svg │ │ ├── bulleted-list.svg │ │ ├── calendar.svg │ │ ├── camera-off.svg │ │ ├── camera-on.svg │ │ ├── catalog.svg │ │ ├── certificate.svg │ │ ├── chat.svg │ │ ├── check-badge.svg │ │ ├── check-circle.svg │ │ ├── check.svg │ │ ├── checkbox.svg │ │ ├── chevron-down-circle.svg │ │ ├── chevron-down.svg │ │ ├── chevron-left-circle.svg │ │ ├── chevron-left.svg │ │ ├── chevron-right-circle.svg │ │ ├── chevron-right.svg │ │ ├── chevron-up-circle.svg │ │ ├── chevron-up.svg │ │ ├── circle.svg │ │ ├── classroom.svg │ │ ├── clear-field.svg │ │ ├── clear-style.svg │ │ ├── close-circle.svg │ │ ├── close-loader.svg │ │ ├── close.svg │ │ ├── coffee.svg │ │ ├── color.svg │ │ ├── contact-us.svg │ │ ├── copy.svg │ │ ├── courses.svg │ │ ├── dashboard.svg │ │ ├── download.svg │ │ ├── drag.svg │ │ ├── duplicate.svg │ │ ├── edit.svg │ │ ├── elearning.svg │ │ ├── email.svg │ │ ├── error-2.svg │ │ ├── error.svg │ │ ├── exercise.svg │ │ ├── external-link.svg │ │ ├── extract.svg │ │ ├── eye-off.svg │ │ ├── eye-on.svg │ │ ├── fail.svg │ │ ├── fast-back.svg │ │ ├── fast-forward.svg │ │ ├── file-add.svg │ │ ├── file-duplicate.svg │ │ ├── file-remove.svg │ │ ├── file-required.svg │ │ ├── file.svg │ │ ├── filter-2.svg │ │ ├── filter-active.svg │ │ ├── filter.svg │ │ ├── flag.svg │ │ ├── folder.svg │ │ ├── full-width.svg │ │ ├── go-to-back.svg │ │ ├── grid.svg │ │ ├── group-add.svg │ │ ├── group.svg │ │ ├── heart-active.svg │ │ ├── heart.svg │ │ ├── highlighter.svg │ │ ├── home.svg │ │ ├── hourglass.svg │ │ ├── image.svg │ │ ├── info-badge.svg │ │ ├── information.svg │ │ ├── italic.svg │ │ ├── key.svg │ │ ├── language.svg │ │ ├── learning-path.svg │ │ ├── light-off.svg │ │ ├── light-on.svg │ │ ├── link.svg │ │ ├── lock.svg │ │ ├── login.svg │ │ ├── logout.svg │ │ ├── maximize.svg │ │ ├── menu.svg │ │ ├── merge.svg │ │ ├── minimize.svg │ │ ├── mixed-class.svg │ │ ├── more-horizontal.svg │ │ ├── more-vertical.svg │ │ ├── news.svg │ │ ├── no-prerequisites.svg │ │ ├── notes.svg │ │ ├── number-code.svg │ │ ├── numbered-list.svg │ │ ├── on-site.svg │ │ ├── order-down.svg │ │ ├── order-up.svg │ │ ├── paste.svg │ │ ├── pausa.svg │ │ ├── pdf.svg │ │ ├── phone.svg │ │ ├── pin-map.svg │ │ ├── pin.svg │ │ ├── pizza.svg │ │ ├── play.svg │ │ ├── plug-in.svg │ │ ├── pointer.svg │ │ ├── printer.svg │ │ ├── profile-add.svg │ │ ├── profile.svg │ │ ├── push pin on.svg │ │ ├── push-pin-off.svg │ │ ├── qrcode.svg │ │ ├── question-badge.svg │ │ ├── radio.svg │ │ ├── redo.svg │ │ ├── relations.svg │ │ ├── reload.svg │ │ ├── remove-circle.svg │ │ ├── remove.svg │ │ ├── reorder.svg │ │ ├── repeat.svg │ │ ├── repository.svg │ │ ├── request-form.svg │ │ ├── resize-100%.svg │ │ ├── resize-height.svg │ │ ├── resize-width.svg │ │ ├── search.svg │ │ ├── sequential-prerequisites.svg │ │ ├── settings.svg │ │ ├── share.svg │ │ ├── sketch.svg │ │ ├── skills.svg │ │ ├── skip-back.svg │ │ ├── skip-forward.svg │ │ ├── sms.svg │ │ ├── sso-access.svg │ │ ├── star-active.svg │ │ ├── star.svg │ │ ├── success.svg │ │ ├── sun.svg │ │ ├── sunrise.svg │ │ ├── support.svg │ │ ├── survey.svg │ │ ├── table.svg │ │ ├── tematic-channels.svg │ │ ├── test.svg │ │ ├── text-body.svg │ │ ├── text-edit.svg │ │ ├── text-style.svg │ │ ├── time.svg │ │ ├── toilet-paper.svg │ │ ├── training-points.svg │ │ ├── trash.svg │ │ ├── underline.svg │ │ ├── undo.svg │ │ ├── unlock.svg │ │ ├── upload.svg │ │ ├── user-add.svg │ │ ├── user-badge.svg │ │ ├── user.svg │ │ ├── video-off.svg │ │ ├── video-on.svg │ │ ├── video-rec.svg │ │ ├── view-card.svg │ │ ├── view-list.svg │ │ ├── view.svg │ │ ├── voice-off.svg │ │ ├── voice-on.svg │ │ ├── volume-down.svg │ │ ├── volume-off.svg │ │ ├── volume-up.svg │ │ ├── warning.svg │ │ ├── webinar.svg │ │ ├── whiteboard.svg │ │ ├── wine.svg │ │ ├── zip.svg │ │ ├── zoom-in.svg │ │ └── zoom-out.svg │ │ ├── simple.json │ │ └── simple │ │ ├── add-circle.svg │ │ ├── add.svg │ │ ├── align-center.svg │ │ ├── align-justify.svg │ │ ├── align-left.svg │ │ ├── align-right.svg │ │ ├── analysis-2.svg │ │ ├── analysis-3.svg │ │ ├── analysis.svg │ │ ├── apple.svg │ │ ├── arrow-down.svg │ │ ├── arrow-left.svg │ │ ├── arrow-right.svg │ │ ├── arrow-up.svg │ │ ├── attachment.svg │ │ ├── bck-to-front.svg │ │ ├── bell-active.svg │ │ ├── bell.svg │ │ ├── bold.svg │ │ ├── bookmark-active.svg │ │ ├── bookmark.svg │ │ ├── building.svg │ │ ├── bulleted-list.svg │ │ ├── calendar.svg │ │ ├── camera-off.svg │ │ ├── camera-on.svg │ │ ├── catalog.svg │ │ ├── certificate.svg │ │ ├── chat.svg │ │ ├── check-badge.svg │ │ ├── check-circle.svg │ │ ├── check.svg │ │ ├── checkbox.svg │ │ ├── chevron-down-circle.svg │ │ ├── chevron-down.svg │ │ ├── chevron-left-circle.svg │ │ ├── chevron-left.svg │ │ ├── chevron-right-circle.svg │ │ ├── chevron-right.svg │ │ ├── chevron-up-circle.svg │ │ ├── chevron-up.svg │ │ ├── circle.svg │ │ ├── classroom.svg │ │ ├── clear-field.svg │ │ ├── clear-style.svg │ │ ├── close-circle.svg │ │ ├── close-loader.svg │ │ ├── close.svg │ │ ├── coffee.svg │ │ ├── color.svg │ │ ├── contact-us.svg │ │ ├── copy.svg │ │ ├── courses.svg │ │ ├── dashboard.svg │ │ ├── download.svg │ │ ├── drag.svg │ │ ├── duplicate.svg │ │ ├── edit.svg │ │ ├── elearning.svg │ │ ├── email.svg │ │ ├── error-2.svg │ │ ├── error.svg │ │ ├── exercise.svg │ │ ├── external-link.svg │ │ ├── extract.svg │ │ ├── eye-off.svg │ │ ├── eye-on.svg │ │ ├── fail.svg │ │ ├── fast-back.svg │ │ ├── fast-forward.svg │ │ ├── file-add.svg │ │ ├── file-duplicate.svg │ │ ├── file-remove.svg │ │ ├── file-required.svg │ │ ├── file.svg │ │ ├── filter-2.svg │ │ ├── filter-active.svg │ │ ├── filter.svg │ │ ├── flag.svg │ │ ├── folder.svg │ │ ├── full-width.svg │ │ ├── go-to-back.svg │ │ ├── grid.svg │ │ ├── group-add.svg │ │ ├── group.svg │ │ ├── heart-active.svg │ │ ├── heart.svg │ │ ├── highlighter.svg │ │ ├── home.svg │ │ ├── hourglass.svg │ │ ├── image.svg │ │ ├── info-badge.svg │ │ ├── information.svg │ │ ├── italic.svg │ │ ├── key.svg │ │ ├── language.svg │ │ ├── learning-path.svg │ │ ├── light-off.svg │ │ ├── light-on.svg │ │ ├── link.svg │ │ ├── lock.svg │ │ ├── login.svg │ │ ├── logout.svg │ │ ├── maximaze.svg │ │ ├── menu.svg │ │ ├── merge.svg │ │ ├── minimaze.svg │ │ ├── mixed-class.svg │ │ ├── more-horizontal.svg │ │ ├── more-vertical.svg │ │ ├── news.svg │ │ ├── no-prerequisites.svg │ │ ├── notes.svg │ │ ├── number-code.svg │ │ ├── numbered-list.svg │ │ ├── on-site.svg │ │ ├── order-down.svg │ │ ├── order-up.svg │ │ ├── paste.svg │ │ ├── pausa.svg │ │ ├── pdf.svg │ │ ├── phone.svg │ │ ├── pin-map.svg │ │ ├── pin.svg │ │ ├── pizza.svg │ │ ├── play.svg │ │ ├── plug-in.svg │ │ ├── pointer.svg │ │ ├── printer.svg │ │ ├── profile-add.svg │ │ ├── profile.svg │ │ ├── push-pin-off.svg │ │ ├── push-pin-on.svg │ │ ├── qrcode.svg │ │ ├── question-badge.svg │ │ ├── radio.svg │ │ ├── redo.svg │ │ ├── relations.svg │ │ ├── reload.svg │ │ ├── remove-circle.svg │ │ ├── remove.svg │ │ ├── repeart.svg │ │ ├── repository.svg │ │ ├── request-form.svg │ │ ├── resize-100%.svg │ │ ├── resize-height.svg │ │ ├── resize-width.svg │ │ ├── search.svg │ │ ├── sequential-prerequisites.svg │ │ ├── settings.svg │ │ ├── share.svg │ │ ├── sketch.svg │ │ ├── skills.svg │ │ ├── skip-back.svg │ │ ├── skip-forward.svg │ │ ├── sms.svg │ │ ├── sso-access.svg │ │ ├── star-active.svg │ │ ├── star.svg │ │ ├── success.svg │ │ ├── sun.svg │ │ ├── sunrise.svg │ │ ├── support.svg │ │ ├── survey.svg │ │ ├── table.svg │ │ ├── tematic-channels.svg │ │ ├── test.svg │ │ ├── text-body.svg │ │ ├── text-edit.svg │ │ ├── text-style.svg │ │ ├── time.svg │ │ ├── toilet-paper.svg │ │ ├── training-points.svg │ │ ├── trash.svg │ │ ├── underline.svg │ │ ├── undo.svg │ │ ├── unlock.svg │ │ ├── upload.svg │ │ ├── user-add.svg │ │ ├── user-badge.svg │ │ ├── user.svg │ │ ├── video-off.svg │ │ ├── video-on.svg │ │ ├── video-rec.svg │ │ ├── view-card.svg │ │ ├── view-list.svg │ │ ├── view.svg │ │ ├── voice-off.svg │ │ ├── voice-on.svg │ │ ├── volume-down.svg │ │ ├── volume-off.svg │ │ ├── volume-up.svg │ │ ├── warning.svg │ │ ├── webinar.svg │ │ ├── whiteboard.svg │ │ ├── wine.svg │ │ ├── zip.svg │ │ ├── zoom-in.svg │ │ └── zoom-out.svg ├── components │ ├── VvAccordion │ │ ├── VvAccordion.vue │ │ └── index.ts │ ├── VvAccordionGroup │ │ ├── VvAccordionGroup.vue │ │ └── index.ts │ ├── VvAction │ │ ├── VvAction.vue │ │ └── index.ts │ ├── VvAlert │ │ ├── VvAlert.vue │ │ └── index.ts │ ├── VvAlertGroup │ │ ├── VvAlertGroup.vue │ │ └── index.ts │ ├── VvAvatar │ │ ├── VvAvatar.vue │ │ └── index.ts │ ├── VvAvatarGroup │ │ ├── VvAvatarGroup.vue │ │ └── index.ts │ ├── VvBadge │ │ ├── VvBadge.vue │ │ └── index.ts │ ├── VvBreadcrumb │ │ ├── VvBreadcrumb.vue │ │ └── index.ts │ ├── VvButton │ │ ├── VvButton.vue │ │ └── index.ts │ ├── VvButtonGroup │ │ ├── VvButtonGroup.vue │ │ └── index.ts │ ├── VvCard │ │ ├── VvCard.vue │ │ └── index.ts │ ├── VvCheckbox │ │ ├── VvCheckbox.vue │ │ └── index.ts │ ├── VvCheckboxGroup │ │ ├── VvCheckboxGroup.vue │ │ └── index.ts │ ├── VvCombobox │ │ ├── VvCombobox.vue │ │ └── index.ts │ ├── VvDialog │ │ ├── VvDialog.vue │ │ └── index.ts │ ├── VvDropdown │ │ ├── VvDropdown.vue │ │ ├── VvDropdownAction.vue │ │ ├── VvDropdownItem.vue │ │ ├── VvDropdownOptgroup.vue │ │ ├── VvDropdownOption.vue │ │ └── index.ts │ ├── VvIcon │ │ ├── README.md │ │ ├── VvIcon.vue │ │ └── index.ts │ ├── VvInputFile │ │ ├── VvInputFile.vue │ │ └── index.ts │ ├── VvInputText │ │ ├── VvInputText.vue │ │ ├── VvInputTextActions.ts │ │ └── index.ts │ ├── VvNav │ │ ├── VvNav.vue │ │ ├── VvNavItem.vue │ │ ├── VvNavSeparator.vue │ │ └── index.ts │ ├── VvProgress │ │ ├── VvProgress.vue │ │ └── index.ts │ ├── VvRadio │ │ ├── VvRadio.vue │ │ └── index.ts │ ├── VvRadioGroup │ │ ├── VvRadioGroup.vue │ │ └── index.ts │ ├── VvSelect │ │ ├── VvSelect.vue │ │ └── index.ts │ ├── VvTab │ │ ├── VvTab.vue │ │ └── index.ts │ ├── VvTextarea │ │ ├── VvTextarea.vue │ │ └── index.ts │ ├── VvTooltip │ │ ├── VvTooltip.vue │ │ └── index.ts │ ├── common │ │ ├── HintSlot.ts │ │ ├── VvInputClearAction.ts │ │ ├── VvInputPasswordAction.ts │ │ └── VvInputStepAction.ts │ └── index.ts ├── composables │ ├── alert │ │ ├── useAlerInject.ts │ │ ├── useAlert.ts │ │ └── useAlertProvide.ts │ ├── dropdown │ │ ├── useDropdownContextmenu.ts │ │ ├── useDropdownInject.ts │ │ ├── useDropdownProvide.ts │ │ └── useDropdownVirtualElement.ts │ ├── group │ │ ├── useGroupStateInject.ts │ │ └── useGroupStateProvide.ts │ ├── index.ts │ ├── useBlurhash.ts │ ├── useComponentFocus.ts │ ├── useComponentIcon.ts │ ├── useDebouncedInput.ts │ ├── useDefaults.ts │ ├── useModifiers.ts │ ├── useOptions.ts │ ├── usePersistence.ts │ ├── useTextCount.ts │ ├── useUniqueId.ts │ └── useVolver.ts ├── constants.ts ├── directives │ ├── index.ts │ ├── v-contextmenu.ts │ └── v-tooltip.ts ├── icons.ts ├── index.ts ├── props │ └── index.ts ├── resolvers │ └── unplugin.ts ├── shims.d.ts ├── stories │ ├── Accordion │ │ ├── Accordion.settings.ts │ │ ├── Accordion.stories.ts │ │ ├── Accordion.test.ts │ │ └── AccordionSlots.stories.ts │ ├── AccordionGroup │ │ ├── AccordionGroup.settings.ts │ │ ├── AccordionGroup.stories.ts │ │ ├── AccordionGroup.test.ts │ │ └── AccordionGroupSlots.stories.ts │ ├── Alert │ │ ├── Alert.settings.ts │ │ ├── Alert.stories.ts │ │ ├── Alert.test.ts │ │ ├── AlertModifiers.stories.ts │ │ └── AlertSlots.stories.ts │ ├── AlertGroup │ │ ├── AlertGroup.settings.ts │ │ ├── AlertGroup.stories.ts │ │ ├── AlertGroup.test.ts │ │ ├── AlertGroupPosition.stories.ts │ │ ├── AlertGroupSlots.stories.ts │ │ └── AlertGroupWithComposable.stories.ts │ ├── Avatar │ │ ├── Avatar.settings.ts │ │ ├── Avatar.stories.ts │ │ ├── Avatar.test.ts │ │ ├── AvatarBadge.stories.ts │ │ ├── AvatarModifiers.stories.ts │ │ └── AvatarSlots.stories.ts │ ├── AvatarGroup │ │ ├── AvatarGroup.settings.ts │ │ ├── AvatarGroup.stories.ts │ │ ├── AvatarGroup.test.ts │ │ ├── AvatarGroupModifiers.stories.ts │ │ └── AvatarGroupSlotDefault.stories.ts │ ├── Badge │ │ ├── Badge.settings.ts │ │ ├── Badge.stories.ts │ │ ├── Badge.test.ts │ │ └── BadgeSlots.stories.ts │ ├── Blurhash │ │ └── BlurhashComposable.stories.ts │ ├── Breadcrumb │ │ ├── Breadcrumb.settings.ts │ │ ├── Breadcrumb.stories.ts │ │ ├── Breadcrumb.test.ts │ │ └── BreadcrumbSlots.stories.ts │ ├── Button │ │ ├── Button.settings.ts │ │ ├── Button.stories.ts │ │ ├── Button.test.ts │ │ ├── ButtonIcon.stories.ts │ │ ├── ButtonLink.stories.ts │ │ ├── ButtonLoading.stories.ts │ │ ├── ButtonModifiers.stories.ts │ │ ├── ButtonSlots.stories.ts │ │ ├── ButtonState.stories.ts │ │ └── ButtonToggle.stories.ts │ ├── ButtonGroup │ │ ├── ButtonGroup.settings.ts │ │ ├── ButtonGroup.stories.ts │ │ ├── ButtonGroup.test.ts │ │ ├── ButtonGroupModifiers.stories.ts │ │ ├── ButtonGroupSlots.stories.ts │ │ └── ButtonGroupToggle.stories.ts │ ├── Card │ │ ├── Card.settings.ts │ │ ├── Card.stories.ts │ │ ├── Card.test.ts │ │ └── CardSlots.stories.ts │ ├── Checkbox │ │ ├── Checkbox.settings.ts │ │ ├── Checkbox.stories.ts │ │ ├── Checkbox.test.ts │ │ ├── CheckboxBinary.stories.ts │ │ └── CheckboxSlots.stories.ts │ ├── CheckboxGroup │ │ ├── CheckboxGroup.settings.ts │ │ ├── CheckboxGroup.stories.ts │ │ ├── CheckboxGroup.test.ts │ │ ├── CheckboxGroupOptions.stories.ts │ │ └── CheckboxGroupSlots.stories.ts │ ├── Combobox │ │ ├── Combobox.settings.ts │ │ ├── Combobox.stories.ts │ │ ├── Combobox.test.ts │ │ ├── ComboboxIconPosition.stories.ts │ │ ├── ComboboxMultiple.stories.ts │ │ ├── ComboboxOptions.stories.ts │ │ └── ComboboxSlots.stories.ts │ ├── Dialog │ │ ├── Dialog.settings.ts │ │ ├── Dialog.stories.ts │ │ ├── Dialog.test.ts │ │ ├── DialogModifiers.stories.ts │ │ └── DialogSlots.stories.ts │ ├── Dropdown │ │ ├── Dropdown.settings.ts │ │ ├── Dropdown.stories.ts │ │ ├── Dropdown.test.ts │ │ ├── DropdownContextmenuDirective.stories.ts │ │ ├── DropdownMultilevel.stories.ts │ │ └── DropdownSlots.stories.ts │ ├── Icon │ │ ├── Icon.settings.ts │ │ ├── Icon.stories.ts │ │ └── IconsCollection.stories.ts │ ├── InputFile │ │ ├── InputFile.settings.ts │ │ ├── InputFile.stories.ts │ │ ├── InputFileDropArea.stories.ts │ │ ├── InputFileIconPosition.stories.ts │ │ └── InputFileSlots.stories.ts │ ├── InputText │ │ ├── InputText.settings.ts │ │ ├── InputText.stories.ts │ │ ├── InputText.test.ts │ │ ├── InputTextIconPosition.stories.ts │ │ ├── InputTextIso.stories.ts │ │ ├── InputTextLength.stories.ts │ │ ├── InputTextMask.stories.ts │ │ ├── InputTextMinMax.stories.ts │ │ ├── InputTextSlots.stories.ts │ │ └── InputTextType.stories.ts │ ├── Nav │ │ ├── Nav.settings.ts │ │ ├── Nav.stories.ts │ │ ├── Nav.test.ts │ │ └── NavModifiers.stories.ts │ ├── Progress │ │ ├── Progress.settings.ts │ │ ├── Progress.stories.ts │ │ └── Progress.test.ts │ ├── Radio │ │ ├── Radio.settings.ts │ │ ├── Radio.stories.ts │ │ ├── Radio.test.ts │ │ └── RadioSlots.stories.ts │ ├── RadioGroup │ │ ├── RadioGroup.settings.ts │ │ ├── RadioGroup.stories.ts │ │ ├── RadioGroup.test.ts │ │ ├── RadioGroupOptions.stories.ts │ │ └── RadioGroupSlots.stories.ts │ ├── Select │ │ ├── Select.settings.ts │ │ ├── Select.stories.ts │ │ ├── Select.test.ts │ │ ├── SelectIconPosition.stories.ts │ │ ├── SelectOptions.stories.ts │ │ └── SelectSlots.stories.ts │ ├── Tab │ │ ├── Tab.settings.ts │ │ ├── Tab.stories.ts │ │ └── Tab.test.ts │ ├── Textarea │ │ ├── Textarea.settings.ts │ │ ├── Textarea.stories.ts │ │ ├── Textarea.test.ts │ │ ├── TextareaLength.stories.ts │ │ ├── TextareaSlots.stories.ts │ │ └── TextareatIconPosition.stories.ts │ ├── Tooltip │ │ ├── Tooltip.settings.ts │ │ ├── Tooltip.stories.ts │ │ ├── Tooltip.test.ts │ │ └── TooltipDirective.stories.ts │ └── argTypes.ts ├── test │ ├── expect.ts │ ├── options.ts │ ├── sleep.ts │ └── types.d.ts ├── types │ ├── alert.ts │ ├── blurhash.ts │ ├── floating-ui.ts │ ├── generic.ts │ ├── group.ts │ ├── index.ts │ ├── input-file.ts │ └── nav.ts ├── utils │ ├── DateUtilities.ts │ ├── DomUtilities.ts │ ├── FileUtilities.ts │ └── ObjectUtilities.ts └── workers │ └── blurhash.ts ├── tsconfig.json └── vite.config.ts /.babelrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "sourceType": "unambiguous", 3 | "presets": [ 4 | [ 5 | "@babel/preset-env", 6 | { 7 | "targets": { 8 | "chrome": 100 9 | } 10 | } 11 | ], 12 | "@babel/preset-typescript" 13 | ], 14 | "plugins": [] 15 | } 16 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = tabs 6 | indent_size = 4 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | indent_style = space 15 | indent_size = 2 -------------------------------------------------------------------------------- /.github/workflows/sonarcloud.yml: -------------------------------------------------------------------------------- 1 | name: SonarCloud analysis 2 | 3 | on: 4 | workflow_call: 5 | 6 | jobs: 7 | sonarcloud: 8 | name: SonarCloud 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | with: 13 | fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis 14 | - name: SonarCloud Scan 15 | uses: SonarSource/sonarqube-scan-action@master 16 | env: 17 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any 18 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | .eslintcache 4 | 5 | # Logs 6 | npm-debug.log* 7 | 8 | # Project 9 | storybook-static 10 | dist 11 | bin 12 | .vercel 13 | .eslintrc-auto-import.json -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | # fix for typescript issue with pnpm 2 | # @see https://github.com/microsoft/TypeScript/issues/42873 3 | node-linker = hoisted -------------------------------------------------------------------------------- /.storybook/main.ts: -------------------------------------------------------------------------------- 1 | import type { StorybookConfig } from '@storybook/vue3-vite' 2 | 3 | const config: StorybookConfig = { 4 | stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'], 5 | 6 | addons: [ 7 | '@storybook/addon-links', 8 | '@storybook/addon-a11y', 9 | '@vueless/storybook-dark-mode', 10 | '@storybook/addon-docs', 11 | ], 12 | 13 | framework: { 14 | name: '@storybook/vue3-vite', 15 | options: {}, 16 | }, 17 | 18 | staticDirs: ['./static'], 19 | } 20 | 21 | export default config 22 | -------------------------------------------------------------------------------- /.storybook/preview-head.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | -------------------------------------------------------------------------------- /.storybook/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volverjs/ui-vue/4f3e6445aa63b8aed1024b2903d79a6b7489736d/.storybook/static/favicon.ico -------------------------------------------------------------------------------- /.storybook/static/iconify-name-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/volverjs/ui-vue/4f3e6445aa63b8aed1024b2903d79a6b7489736d/.storybook/static/iconify-name-structure.png -------------------------------------------------------------------------------- /.storybook/style.scss: -------------------------------------------------------------------------------- 1 | @use '@volverjs/style/scss'; 2 | @use '@volverjs/style/scss/themes/dark'; 3 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "Vue.volar", 4 | "dbaeumer.vscode-eslint", 5 | "Tobermory.es6-string-html", 6 | "unifiedjs.vscode-mdx", 7 | "esbenp.prettier-vscode", 8 | "stylelint.vscode-stylelint" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey=volverjs_ui-vue 2 | sonar.organization=volverjs 3 | sonar.coverage.exclusions=src/test/**,src/stories/**,src/stories/**/*.* 4 | sonar.exclusions=scripts/** -------------------------------------------------------------------------------- /src/assets/icons/detailed/add-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/align-center.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/align-justify.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/align-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/align-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/analysis-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/attachment.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/bold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/certificate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/chat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/check-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/checkbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/chevron-down-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/chevron-left-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/chevron-right-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/chevron-up-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/clear-field.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/clear-style.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/close-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/close-loader.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/download.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/drag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/elearning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/error-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/external-link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/eye-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/flag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/full-width.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/highlighter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/info-badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/information.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/italic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/key.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/learning-path.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/lock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/login.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/logout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/maximaze.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/more-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/more-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/news.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/order-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/order-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/pausa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/pdf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/phone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/pointer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/profile.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/push-pin-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/question-badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/radio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/redo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/remove-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/remove.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/reorder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/resize-height.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/resize-width.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/star-active.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/star.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/success.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/table.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/tematic-channels.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/text-body.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/time.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/underline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/undo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/user.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/view-card.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/view.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/detailed/zoom-out.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/assets/icons/normal/add-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/normal/align-center.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/align-justify.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/align-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/align-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/analysis-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/analysis.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/normal/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/attachment.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/normal/bold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/normal/check-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/normal/checkbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chevron-down-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chevron-left-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chevron-right-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chevron-up-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/normal/circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/clear-field.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/normal/close-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/normal/close-loader.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/normal/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/download.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/drag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/icons/normal/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/error-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/external-link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/flag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/full-width.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/normal/highlighter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/hourglass.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/info-badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/normal/information.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/italic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/key.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/learning-path.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/normal/light-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/lock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/login.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/logout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/more-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/normal/more-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/normal/news.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/normal/order-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/order-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/pausa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/normal/pdf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/phone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/pointer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/push pin on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/normal/question-badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/radio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/redo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/normal/reload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/remove-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/remove.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/normal/reorder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/resize-height.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/resize-width.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/normal/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/star-active.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/normal/star.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /src/assets/icons/normal/success.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/table.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/tematic-channels.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/text-body.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/time.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/underline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/undo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/normal/unlock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/assets/icons/normal/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/user-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/normal/user.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /src/assets/icons/normal/video-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/normal/view-card.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/normal/view.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/normal/zoom-out.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/simple/add-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/align-center.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/align-justify.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/align-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/align-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/analysis-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/attachment.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/bold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/simple/check-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/checkbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chevron-down-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chevron-left-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chevron-right-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chevron-up-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/clear-field.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/simple/close-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/simple/close-loader.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/download.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/drag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/simple/error-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/flag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/full-width.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/simple/highlighter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/info-badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/simple/information.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/italic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/key.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/simple/learning-path.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/simple/lock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /src/assets/icons/simple/login.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/simple/logout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/simple/maximaze.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/minimaze.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/more-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/more-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/news.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/order-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/order-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/paste.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/assets/icons/simple/pausa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/pdf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/phone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/pointer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/question-badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/radio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/redo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/simple/reload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/remove-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/remove.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/resize-height.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/icons/simple/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/star-active.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/star.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/icons/simple/table.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/icons/simple/text-body.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/icons/simple/time.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/underline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/simple/undo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/icons/simple/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/icons/simple/user.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/icons/simple/view-card.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/components/VvAction/index.ts: -------------------------------------------------------------------------------- 1 | import { ActionProps } from '../../props' 2 | 3 | export const VvActionEvents = ['click', 'mouseover', 'mouseleave'] 4 | 5 | export const VvActionProps = ActionProps 6 | -------------------------------------------------------------------------------- /src/components/VvAvatar/VvAvatar.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 28 | -------------------------------------------------------------------------------- /src/components/VvAvatar/index.ts: -------------------------------------------------------------------------------- 1 | import { ModifiersProps } from '@/props' 2 | 3 | export const VvAvatarProps = { 4 | ...ModifiersProps, 5 | /** 6 | * Image src for avatar 7 | */ 8 | imgSrc: String, 9 | } 10 | -------------------------------------------------------------------------------- /src/components/VvAvatarGroup/index.ts: -------------------------------------------------------------------------------- 1 | import { ModifiersProps } from '@/props' 2 | 3 | export type AvatarItem = { 4 | key?: string 5 | text?: string 6 | imgSrc?: string 7 | modifiers?: string | string[] 8 | } 9 | 10 | export const VvAvatarGroupProps = { 11 | ...ModifiersProps, 12 | /** 13 | * avatar items 14 | */ 15 | items: { 16 | type: Array as PropType, 17 | default: () => [], 18 | required: true, 19 | }, 20 | toShow: { 21 | type: Number, 22 | default: 3, 23 | }, 24 | totalItems: { 25 | type: Number, 26 | }, 27 | avatarModifiers: [String, Array] as PropType, 28 | } 29 | -------------------------------------------------------------------------------- /src/components/VvBadge/VvBadge.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 22 | -------------------------------------------------------------------------------- /src/components/VvBadge/index.ts: -------------------------------------------------------------------------------- 1 | import { ModifiersProps } from '../../props' 2 | 3 | export const VvBadgeProps = { 4 | ...ModifiersProps, 5 | value: [String, Number], 6 | } 7 | -------------------------------------------------------------------------------- /src/components/VvBreadcrumb/index.ts: -------------------------------------------------------------------------------- 1 | import type { NavItem } from '../../types' 2 | import { ModifiersProps } from '../../props' 3 | 4 | export const VvBreadcrumbProps = { 5 | ...ModifiersProps, 6 | routes: Array as PropType, 7 | } 8 | -------------------------------------------------------------------------------- /src/components/VvCard/index.ts: -------------------------------------------------------------------------------- 1 | import { ModifiersProps } from '@/props' 2 | 3 | export const VvCardProps = { 4 | ...ModifiersProps, 5 | title: String, 6 | } 7 | -------------------------------------------------------------------------------- /src/components/VvCheckboxGroup/index.ts: -------------------------------------------------------------------------------- 1 | import { CheckboxRadioGroupProps } from '../../props' 2 | 3 | export const VvCheckboxGroupProps = CheckboxRadioGroupProps 4 | 5 | export const VvCheckboxGroupEvents = ['update:modelValue', 'change'] 6 | -------------------------------------------------------------------------------- /src/components/VvDropdown/VvDropdownOptgroup.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | 20 | -------------------------------------------------------------------------------- /src/components/VvNav/VvNavItem.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 12 | 21 | -------------------------------------------------------------------------------- /src/components/VvNav/VvNavSeparator.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/components/VvNav/index.ts: -------------------------------------------------------------------------------- 1 | import { ModifiersProps, NavProps } from '@/props' 2 | 3 | export const VvNavProps = { 4 | ...ModifiersProps, 5 | ...NavProps, 6 | } 7 | 8 | export const VvNavEvents = ['click'] 9 | -------------------------------------------------------------------------------- /src/components/VvProgress/VvProgress.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 24 | 25 | 35 | -------------------------------------------------------------------------------- /src/components/VvRadioGroup/index.ts: -------------------------------------------------------------------------------- 1 | import { CheckboxRadioGroupProps } from '../../props' 2 | 3 | export const VvRadioGroupProps = CheckboxRadioGroupProps 4 | 5 | export const VvRadioGroupEvents = ['update:modelValue', 'change'] 6 | -------------------------------------------------------------------------------- /src/components/VvTab/index.ts: -------------------------------------------------------------------------------- 1 | import type { NavItemTab } from '@/types/nav' 2 | import { ModifiersProps } from '@/props' 3 | 4 | export const VvTabProps = { 5 | ...ModifiersProps, 6 | navModifiers: { 7 | type: [String, Array] as PropType, 8 | }, 9 | modelValue: { 10 | type: String, 11 | default: '', 12 | }, 13 | items: { 14 | type: Array as PropType, 15 | default: () => [], 16 | }, 17 | } 18 | 19 | export const VvTabEvents = ['update:modelValue'] 20 | -------------------------------------------------------------------------------- /src/components/VvTooltip/VvTooltip.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 22 | 23 | 30 | -------------------------------------------------------------------------------- /src/components/VvTooltip/index.ts: -------------------------------------------------------------------------------- 1 | import type { PropType } from 'vue' 2 | import { Side } from '../../constants' 3 | import { ModifiersProps } from '../../props' 4 | 5 | export const VvTooltipProps = { 6 | ...ModifiersProps, 7 | /** 8 | * Define the tooltip position 9 | * @default Side.bottom 10 | */ 11 | position: { 12 | type: String as PropType<`${Side}`>, 13 | default: Side.bottom, 14 | }, 15 | value: { 16 | type: String, 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /src/composables/alert/useAlerInject.ts: -------------------------------------------------------------------------------- 1 | import { INJECTION_KEY_ALERT_GROUP } from '../../constants' 2 | 3 | /** 4 | * Injects alert group 5 | */ 6 | export function useInjectedAlertGroup() { 7 | return inject(INJECTION_KEY_ALERT_GROUP, {}) 8 | } 9 | -------------------------------------------------------------------------------- /src/composables/alert/useAlertProvide.ts: -------------------------------------------------------------------------------- 1 | import type { Ref } from 'vue' 2 | import mitt from 'mitt' 3 | import { INJECTION_KEY_ALERT_GROUP } from '@/constants' 4 | 5 | /** 6 | * Share the alert group name with all its children. 7 | * @param {Ref} name the alert group name 8 | */ 9 | export function useAlertProvideGroup({ 10 | name, 11 | }: { 12 | name: Ref 13 | }) { 14 | const bus = mitt<{ 15 | close: string 16 | }>() 17 | provide(INJECTION_KEY_ALERT_GROUP, { 18 | name, 19 | bus, 20 | }) 21 | 22 | return bus 23 | } 24 | -------------------------------------------------------------------------------- /src/composables/dropdown/useDropdownInject.ts: -------------------------------------------------------------------------------- 1 | import { 2 | INJECTION_KEY_DROPDOWN_ACTION, 3 | INJECTION_KEY_DROPDOWN_ITEM, 4 | INJECTION_KEY_DROPDOWN_TRIGGER, 5 | } from '../../constants' 6 | 7 | /** 8 | * Injects dropdown reference and the event bus 9 | */ 10 | export function useInjectedDropdownTrigger() { 11 | return inject(INJECTION_KEY_DROPDOWN_TRIGGER, {}) 12 | } 13 | 14 | /** 15 | * Injects dropdown item role 16 | */ 17 | export function useInjectedDropdownItem() { 18 | return inject(INJECTION_KEY_DROPDOWN_ITEM, {}) 19 | } 20 | 21 | /** 22 | * Injects dropdown action role 23 | */ 24 | export function useInjectedDropdownAction() { 25 | return inject(INJECTION_KEY_DROPDOWN_ACTION, {}) 26 | } 27 | -------------------------------------------------------------------------------- /src/composables/group/useGroupStateProvide.ts: -------------------------------------------------------------------------------- 1 | import type { Emitter } from 'mitt' 2 | import type { InjectionKey, Ref } from 'vue' 3 | 4 | /** 5 | * Share part of the state of the component with all its children. 6 | */ 7 | export function useGroupStateProvide< 8 | TGroupState extends Record< 9 | string, 10 | Ref | Emitter 11 | >, 12 | >(key: InjectionKey, groupState: TGroupState) { 13 | provide(key, groupState) 14 | } 15 | -------------------------------------------------------------------------------- /src/composables/index.ts: -------------------------------------------------------------------------------- 1 | export { useAlert } from './alert/useAlert' 2 | export { useDropdownContextmenu } from './dropdown/useDropdownContextmenu' 3 | export { useDropdownVirtualElement } from './dropdown/useDropdownVirtualElement' 4 | export { useBlurhash } from './useBlurhash' 5 | -------------------------------------------------------------------------------- /src/composables/useComponentFocus.ts: -------------------------------------------------------------------------------- 1 | import type { MaybeElement, MaybeElementRef } from '@vueuse/core' 2 | 3 | export function useComponentFocus( 4 | inputTemplateRef: MaybeElementRef, 5 | emit: ((name: 'blur', ...args: any[]) => void) & ((name: 'focus', ...args: any[]) => void) & ((name: any, ...args: any[]) => void), 6 | ) { 7 | const { focused } = useFocus(inputTemplateRef) 8 | 9 | watch(focused, (newValue) => { 10 | emit(newValue ? 'focus' : 'blur', unref(inputTemplateRef)) 11 | }) 12 | 13 | return { 14 | focused, 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/composables/useUniqueId.ts: -------------------------------------------------------------------------------- 1 | import type { Ref } from 'vue' 2 | import { useId } from 'vue' 3 | 4 | export function useUniqueId(id?: Ref) { 5 | return computed(() => String(id?.value || useId())) 6 | } 7 | -------------------------------------------------------------------------------- /src/composables/useVolver.ts: -------------------------------------------------------------------------------- 1 | import { INJECTION_KEY_VOLVER } from '../constants' 2 | 3 | /** 4 | * Injects volver 5 | */ 6 | export function useVolver() { 7 | return inject(INJECTION_KEY_VOLVER, undefined) 8 | } 9 | -------------------------------------------------------------------------------- /src/directives/index.ts: -------------------------------------------------------------------------------- 1 | import vContextmenu from '../directives/v-contextmenu' 2 | import vTooltip from '../directives/v-tooltip' 3 | 4 | export { vContextmenu, vTooltip } 5 | -------------------------------------------------------------------------------- /src/icons.ts: -------------------------------------------------------------------------------- 1 | import detailed from './assets/icons/detailed.json' 2 | import normal from './assets/icons/normal.json' 3 | import simple from './assets/icons/simple.json' 4 | 5 | export default [normal, detailed, simple] 6 | 7 | export { detailed, normal, simple } 8 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import type { Volver, VolverOptions } from './Volver' 2 | import VolverPlugin from './Volver' 3 | 4 | export { VolverPlugin } 5 | export * from './types' 6 | export type { Volver, VolverOptions } 7 | 8 | // https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties 9 | // Add custom property and extend vue type definition 10 | declare module 'vue' { 11 | interface ComponentCustomProperties { 12 | $vv?: typeof Volver.prototype 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/shims.d.ts: -------------------------------------------------------------------------------- 1 | declare interface Window { 2 | // extend the window 3 | } 4 | 5 | declare module '*.vue' { 6 | import type { DefineComponent } from 'vue' 7 | // eslint-disable-next-line 8 | const component: DefineComponent<{}, {}, any> 9 | export default component 10 | } 11 | 12 | type ValueOf = T[keyof T] 13 | -------------------------------------------------------------------------------- /src/stories/Badge/Badge.settings.ts: -------------------------------------------------------------------------------- 1 | import type { ArgTypes } from '@storybook/vue3-vite' 2 | import { DefaultSlotArgTypes, ModifiersArgTypes } from '@/stories/argTypes' 3 | 4 | export const defaultArgs = { 5 | modifiers: [], 6 | } 7 | 8 | export const argTypes: ArgTypes = { 9 | value: { 10 | control: { type: 'text' }, 11 | }, 12 | modifiers: { 13 | ...ModifiersArgTypes.modifiers, 14 | options: [ 15 | 'danger', 16 | 'success', 17 | 'warning', 18 | 'info', 19 | 'accent', 20 | 'rounded', 21 | 'outline', 22 | 'ghost', 23 | 'sm', 24 | ], 25 | }, 26 | ...DefaultSlotArgTypes, 27 | } 28 | -------------------------------------------------------------------------------- /src/stories/Badge/Badge.test.ts: -------------------------------------------------------------------------------- 1 | import type { PlayAttributes } from '@/test/types' 2 | import { within } from 'storybook/test' 3 | import { expect } from '@/test/expect' 4 | 5 | export async function defaultTest({ canvasElement, args }: PlayAttributes) { 6 | const badge = await within(canvasElement).findByTestId('element') 7 | expect(badge).toHaveClass('vv-badge') 8 | if (args.modifiers.length > 0) { 9 | expect(badge).toHaveClass(`vv-badge--${args.modifiers}`) 10 | } 11 | await expect(badge).toHaveNoViolations() 12 | } 13 | -------------------------------------------------------------------------------- /src/stories/Badge/BadgeSlots.stories.ts: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/vue3-vite' 2 | import VvBadge from '@/components/VvBadge/VvBadge.vue' 3 | import { argTypes, defaultArgs } from './Badge.settings' 4 | import { Default as DefaultStory } from './Badge.stories' 5 | 6 | const meta: Meta = { 7 | title: 'Components/Badge/Slots', 8 | component: VvBadge, 9 | args: defaultArgs, 10 | argTypes, 11 | } 12 | 13 | export default meta 14 | 15 | type Story = StoryObj 16 | 17 | export const Default: Story = { 18 | ...DefaultStory, 19 | args: { 20 | ...DefaultStory.args, 21 | default: 'Default slot!', 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /src/stories/Card/Card.test.ts: -------------------------------------------------------------------------------- 1 | import type { PlayAttributes } from '@/test/types' 2 | import { within } from 'storybook/test' 3 | import { expect } from '@/test/expect' 4 | 5 | export async function defaultTest({ canvasElement, args }: PlayAttributes) { 6 | const element = await within(canvasElement).findByTestId('card') 7 | const modifiers 8 | = !args.modifiers || Array.isArray(args.modifiers) 9 | ? args.modifiers 10 | : [args.modifiers] 11 | 12 | // check modifiers 13 | if (modifiers) { 14 | for (const modifier of modifiers) { 15 | await expect(element).toHaveClass(`vv-card--${modifier}`) 16 | } 17 | } 18 | 19 | // check accessibility 20 | await expect(element).toHaveNoViolations() 21 | } 22 | -------------------------------------------------------------------------------- /src/stories/CheckboxGroup/CheckboxGroup.settings.ts: -------------------------------------------------------------------------------- 1 | import { CheckboxRadioGroupArgTypes } from '@/stories/argTypes' 2 | 3 | export const defaultArgs = { 4 | name: 'checkbox-group', 5 | label: 'Select an option', 6 | options: ['Option 1', 'Option 2', 'Option 3'], 7 | disabled: false, 8 | readonly: false, 9 | vertical: false, 10 | invalid: false, 11 | valid: false, 12 | tabindex: 0, 13 | } 14 | 15 | export const argTypes = CheckboxRadioGroupArgTypes 16 | -------------------------------------------------------------------------------- /src/stories/Dropdown/Dropdown.test.ts: -------------------------------------------------------------------------------- 1 | import type { PlayAttributes } from '@/test/types' 2 | import { within } from 'storybook/test' 3 | import { expect } from '@/test/expect' 4 | import { sleep } from '@/test/sleep' 5 | 6 | export async function defaultTest({ canvasElement }: PlayAttributes) { 7 | const wrapper = await within(canvasElement).findByTestId('wrapper') 8 | const trigger = await within(canvasElement).findByTestId('trigger') 9 | 10 | await expect(trigger).toBeClicked() 11 | await sleep(100) 12 | const dropdown = wrapper.getElementsByClassName('vv-dropdown')[0] 13 | await expect(dropdown).toBeDefined() 14 | 15 | // check accessibility 16 | await expect(dropdown).toHaveNoViolations() 17 | } 18 | -------------------------------------------------------------------------------- /src/stories/Nav/Nav.test.ts: -------------------------------------------------------------------------------- 1 | import type { PlayAttributes } from '@/test/types' 2 | import { within } from 'storybook/test' 3 | import { expect } from '@/test/expect' 4 | 5 | export async function defaultTest({ canvasElement, args }: PlayAttributes) { 6 | const element = await within(canvasElement).findByTestId('element') 7 | 8 | const menuEl = element.getElementsByClassName('vv-nav__menu')[0] 9 | 10 | if (!args.items?.length) { 11 | throw new Error('No items passed') 12 | } 13 | 14 | // check children number the same of items prop 15 | expect(menuEl.children.length).toEqual(args.items?.length) 16 | 17 | // check accessibility 18 | await expect(element).toHaveNoViolations() 19 | } 20 | -------------------------------------------------------------------------------- /src/stories/Progress/Progress.test.ts: -------------------------------------------------------------------------------- 1 | import type { PlayAttributes } from '@/test/types' 2 | import { within } from 'storybook/test' 3 | import { expect } from '@/test/expect' 4 | 5 | export async function defaultTest({ canvasElement }: PlayAttributes) { 6 | const progress = await within(canvasElement).findByRole('progressbar') 7 | await expect(progress).toHaveClass('vv-progress') 8 | await expect(progress).toHaveNoViolations() 9 | } 10 | -------------------------------------------------------------------------------- /src/stories/Radio/Radio.settings.ts: -------------------------------------------------------------------------------- 1 | import { CheckboxRadioArgTypes } from '@/stories/argTypes' 2 | 3 | export const defaultArgs = { 4 | name: 'radio', 5 | label: 'Option', 6 | value: 'my-value', 7 | tabindex: 0, 8 | disabled: false, 9 | readonly: false, 10 | invalid: false, 11 | valid: false, 12 | indeterminate: false, 13 | } 14 | 15 | export const argTypes = CheckboxRadioArgTypes 16 | -------------------------------------------------------------------------------- /src/stories/RadioGroup/RadioGroup.settings.ts: -------------------------------------------------------------------------------- 1 | import { CheckboxRadioGroupArgTypes } from '@/stories/argTypes' 2 | 3 | export const defaultArgs = { 4 | name: 'checkbox-group', 5 | label: 'Select an option', 6 | options: ['Option 1', 'Option 2', 'Option 3'], 7 | disabled: false, 8 | readonly: false, 9 | vertical: false, 10 | invalid: false, 11 | valid: false, 12 | tabindex: 0, 13 | } 14 | 15 | export const argTypes = CheckboxRadioGroupArgTypes 16 | -------------------------------------------------------------------------------- /src/stories/Tooltip/Tooltip.settings.ts: -------------------------------------------------------------------------------- 1 | import type { ArgTypes } from 'storybook/internal/types' 2 | import { VvTooltipProps } from '@/components/VvTooltip' 3 | import { DefaultSlotArgTypes, ModifiersArgTypes } from '@/stories/argTypes' 4 | 5 | export const defaultArgs = { 6 | ...propsToObject(VvTooltipProps), 7 | value: 'I\'m a tooltip', 8 | } 9 | 10 | export const argTypes: ArgTypes = { 11 | ...ModifiersArgTypes, 12 | ...DefaultSlotArgTypes, 13 | position: { 14 | type: 'string', 15 | control: { 16 | type: 'select', 17 | }, 18 | table: { 19 | defaultValue: { summary: 'bottom' }, 20 | }, 21 | description: 'Indicates where to place the tooltip', 22 | options: [undefined, 'left', 'right', 'bottom', 'top'], 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /src/test/options.ts: -------------------------------------------------------------------------------- 1 | export function getOptionValue(args: any, index: number) { 2 | if (args.options && args.options.length > index) { 3 | let value = args.options[index] 4 | if (args.valueKey) { 5 | if (typeof args.valueKey === 'function') { 6 | value = args.valueKey(value) 7 | } else if (typeof value === 'object') { 8 | value = value[args.valueKey] 9 | } 10 | } else if (typeof value === 'object') { 11 | value = value.value 12 | } 13 | return value 14 | } 15 | return undefined 16 | } 17 | -------------------------------------------------------------------------------- /src/test/sleep.ts: -------------------------------------------------------------------------------- 1 | export async function sleep(ms = 300) { 2 | return await new Promise(resolve => setTimeout(resolve, ms)) 3 | } 4 | -------------------------------------------------------------------------------- /src/test/types.d.ts: -------------------------------------------------------------------------------- 1 | export interface PlayAttributes { 2 | canvasElement: HTMLElement 3 | 4 | args: Record 5 | name?: string 6 | } 7 | 8 | interface ComponentConfig { 9 | isClickDisabled?: boolean 10 | className?: string | string[] | null 11 | slotContent?: string | null 12 | customText?: string | null 13 | customElement?: HTMLElement | HTMLOrSVGElement | null 14 | isVertical?: boolean 15 | child?: number 16 | propName?: string 17 | } 18 | -------------------------------------------------------------------------------- /src/types/alert.ts: -------------------------------------------------------------------------------- 1 | import type { VvIconProps } from '@/components/VvIcon' 2 | import type { AlertRole } from '@/constants' 3 | 4 | export type AlertModifier = 5 | | 'success' 6 | | 'info' 7 | | 'warning' 8 | | 'danger' 9 | | 'brand' 10 | | 'accent' 11 | | string 12 | 13 | export type Alert = { 14 | id: string | number 15 | title?: string 16 | icon?: string | VvIconProps 17 | content?: string 18 | footer?: string 19 | modifiers?: AlertModifier | AlertModifier[] 20 | dismissable?: boolean 21 | autoClose?: number 22 | closeLabel?: string 23 | role?: AlertRole 24 | } 25 | -------------------------------------------------------------------------------- /src/types/blurhash.ts: -------------------------------------------------------------------------------- 1 | class ValidationError extends Error {} 2 | export type BlurhashWorkerType = { 3 | encode: ( 4 | pixels: Uint8ClampedArray, 5 | width: number, 6 | height: number, 7 | componentX: number, 8 | componentY: number, 9 | ) => string 10 | decode: ( 11 | blurhash: string, 12 | width: number, 13 | height: number, 14 | punch?: number, 15 | ) => Uint8ClampedArray 16 | isBlurhashValid: (blurhash: string) => { 17 | result: boolean 18 | errorReason?: string 19 | } 20 | ValidationError: ValidationError 21 | } 22 | -------------------------------------------------------------------------------- /src/types/floating-ui.ts: -------------------------------------------------------------------------------- 1 | import type { autoPlacement, flip, offset, shift, size } from '@floating-ui/vue' 2 | 3 | export type AutoPlacementOptions = Parameters[0] 4 | export type FlipOptions = Parameters[0] 5 | export type ShiftOptions = Parameters[0] 6 | export type OffsetOptions = Parameters[0] 7 | export type SizeOptions = Parameters[0] 8 | -------------------------------------------------------------------------------- /src/types/generic.ts: -------------------------------------------------------------------------------- 1 | export type Nullable = T | null | undefined 2 | 3 | export type Option = Record & { 4 | options?: Option[] 5 | } 6 | -------------------------------------------------------------------------------- /src/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './alert' 2 | export * from './blurhash' 3 | export * from './floating-ui' 4 | export * from './generic' 5 | export * from './group' 6 | export * from './input-file' 7 | export * from './nav' 8 | -------------------------------------------------------------------------------- /src/types/input-file.ts: -------------------------------------------------------------------------------- 1 | export type UploadedFile = 2 | { 3 | name: string 4 | size: number 5 | type: string 6 | url?: string 7 | thumbnailUrl?: string 8 | lastModified?: number 9 | source?: Source 10 | } 11 | -------------------------------------------------------------------------------- /src/types/nav.ts: -------------------------------------------------------------------------------- 1 | export type NavItem = { 2 | label: string 3 | ariaLabel?: string 4 | title?: string 5 | to?: string | Record 6 | href?: string 7 | target?: string 8 | rel?: string 9 | disabled?: boolean 10 | current?: boolean 11 | class?: string | string[] 12 | on?: Record<'click' | string, () => void> 13 | data?: Record 14 | } 15 | 16 | export type NavItemTab = NavItem & { 17 | tab?: string 18 | } 19 | -------------------------------------------------------------------------------- /src/utils/DomUtilities.ts: -------------------------------------------------------------------------------- 1 | export function findScrollContainer(element: HTMLElement | null) { 2 | if (!element) { 3 | return undefined 4 | } 5 | let parent = element.parentElement 6 | while (parent) { 7 | const { overflow } = window.getComputedStyle(parent) 8 | if (overflow.split(' ').every(item => item === 'auto' || item === 'scroll')) { 9 | return parent 10 | } 11 | parent = parent.parentElement 12 | } 13 | 14 | return document.documentElement 15 | } 16 | -------------------------------------------------------------------------------- /src/workers/blurhash.ts: -------------------------------------------------------------------------------- 1 | import { decode, encode, isBlurhashValid, ValidationError } from 'blurhash' 2 | import { expose } from 'comlink' 3 | 4 | expose({ 5 | ValidationError, 6 | encode, 7 | decode, 8 | isBlurhashValid, 9 | }) 10 | --------------------------------------------------------------------------------