├── .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 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/add.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/align-center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/align-justify.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/align-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/align-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/analysis-3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/arrow-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/arrow-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/attachment.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/bold.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/certificate.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/chat.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/check-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/checkbox.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/chevron-down-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/chevron-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/chevron-left-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/chevron-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/chevron-right-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/chevron-up-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/chevron-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/clear-field.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/clear-style.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/close-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/close-loader.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/close.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/copy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/download.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/drag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/elearning.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/email.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/error-2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/error.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/external-link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/eye-on.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/flag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/full-width.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/highlighter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/info-badge.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/information.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/italic.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/key.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/learning-path.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/login.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/logout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/maximaze.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/menu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/more-horizontal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/more-vertical.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/news.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/order-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/order-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/pausa.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/pdf.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/phone.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/pointer.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/profile.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/push-pin-on.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/question-badge.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/radio.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/redo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/remove-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/remove.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/reorder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/resize-height.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/resize-width.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/star-active.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/star.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/success.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/tematic-channels.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/text-body.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/time.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/underline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/undo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/upload.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/view-card.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/view.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/detailed/zoom-out.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/add-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/add.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/align-center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/align-justify.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/align-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/align-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/analysis-3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/analysis.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/arrow-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/arrow-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/attachment.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/bold.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chat.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/check-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/checkbox.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chevron-down-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chevron-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chevron-left-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chevron-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chevron-right-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chevron-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chevron-up-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/chevron-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/clear-field.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/close-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/close-loader.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/close.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/copy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/download.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/drag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/email.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/error-2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/error.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/external-link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/flag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/full-width.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/highlighter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/hourglass.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/info-badge.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/information.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/italic.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/key.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/learning-path.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/light-off.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/login.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/logout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/maximize.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/menu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/minimize.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/more-horizontal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/more-vertical.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/news.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/order-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/order-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/pausa.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/pdf.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/phone.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/pointer.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/push pin on.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/question-badge.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/radio.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/redo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/reload.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/remove-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/remove.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/reorder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/resize-height.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/resize-width.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/star-active.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/star.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/success.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/tematic-channels.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/text-body.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/time.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/underline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/undo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/unlock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/upload.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/user-add.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/video-off.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/view-card.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/view.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/normal/zoom-out.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/add-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/add.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/align-center.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/align-justify.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/align-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/align-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/analysis-3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/arrow-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/arrow-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/attachment.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/bold.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chat.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/check-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/checkbox.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chevron-down-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chevron-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chevron-left-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chevron-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chevron-right-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chevron-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chevron-up-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/chevron-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/clear-field.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/close-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/close-loader.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/close.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/copy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/download.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/drag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/email.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/error-2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/error.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/flag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/full-width.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/highlighter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/info-badge.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/information.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/italic.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/key.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/learning-path.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/login.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/logout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/maximaze.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/menu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/minimaze.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/more-horizontal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/more-vertical.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/news.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/order-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/order-up.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/paste.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/pausa.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/pdf.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/phone.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/pointer.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/question-badge.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/radio.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/redo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/reload.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/remove-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/remove.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/resize-height.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/star-active.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/star.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/text-body.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/time.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/underline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/undo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/upload.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/simple/view-card.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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 |
18 |
23 |
24 |
25 |
26 |
27 |
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 |
17 |
18 |
19 | {{ value }}
20 |
21 |
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 |
16 |
17 | {{ props.label }}
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/components/VvNav/VvNavItem.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/components/VvNav/VvNavSeparator.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
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 |
26 |
34 |
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 |
24 |
25 |
26 | {{ value }}
27 |
28 |
29 |
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 |
--------------------------------------------------------------------------------