nuance-ui 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -0
- package/dist/module.d.mts +24 -0
- package/dist/module.json +12 -0
- package/dist/module.mjs +96 -0
- package/dist/runtime/components/action-icon/action-icon-group.d.vue.ts +17 -0
- package/dist/runtime/components/action-icon/action-icon-group.vue +13 -0
- package/dist/runtime/components/action-icon/action-icon-group.vue.d.ts +17 -0
- package/dist/runtime/components/action-icon/action-icon-section.d.vue.ts +23 -0
- package/dist/runtime/components/action-icon/action-icon-section.vue +45 -0
- package/dist/runtime/components/action-icon/action-icon-section.vue.d.ts +23 -0
- package/dist/runtime/components/action-icon/action-icon.d.vue.ts +29 -0
- package/dist/runtime/components/action-icon/action-icon.module.css +1 -0
- package/dist/runtime/components/action-icon/action-icon.vue +71 -0
- package/dist/runtime/components/action-icon/action-icon.vue.d.ts +29 -0
- package/dist/runtime/components/action-icon/index.d.ts +3 -0
- package/dist/runtime/components/action-icon/index.js +0 -0
- package/dist/runtime/components/app-shell/app-shell-aside.d.vue.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-aside.vue +43 -0
- package/dist/runtime/components/app-shell/app-shell-aside.vue.d.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-footer.d.vue.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-footer.vue +42 -0
- package/dist/runtime/components/app-shell/app-shell-footer.vue.d.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-header.d.vue.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-header.vue +43 -0
- package/dist/runtime/components/app-shell/app-shell-header.vue.d.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-main.d.vue.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-main.vue +30 -0
- package/dist/runtime/components/app-shell/app-shell-main.vue.d.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-navbar.d.vue.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-navbar.vue +47 -0
- package/dist/runtime/components/app-shell/app-shell-navbar.vue.d.ts +14 -0
- package/dist/runtime/components/app-shell/app-shell-section.d.vue.ts +18 -0
- package/dist/runtime/components/app-shell/app-shell-section.vue +22 -0
- package/dist/runtime/components/app-shell/app-shell-section.vue.d.ts +18 -0
- package/dist/runtime/components/app-shell/app-shell.d.vue.ts +27 -0
- package/dist/runtime/components/app-shell/app-shell.vue +70 -0
- package/dist/runtime/components/app-shell/app-shell.vue.d.ts +27 -0
- package/dist/runtime/components/app-shell/index.d.ts +7 -0
- package/dist/runtime/components/app-shell/index.js +0 -0
- package/dist/runtime/components/background-image.d.vue.ts +10 -0
- package/dist/runtime/components/background-image.vue +37 -0
- package/dist/runtime/components/background-image.vue.d.ts +10 -0
- package/dist/runtime/components/box.d.vue.ts +20 -0
- package/dist/runtime/components/box.vue +14 -0
- package/dist/runtime/components/box.vue.d.ts +20 -0
- package/dist/runtime/components/button/button-group.d.vue.ts +17 -0
- package/dist/runtime/components/button/button-group.vue +13 -0
- package/dist/runtime/components/button/button-group.vue.d.ts +17 -0
- package/dist/runtime/components/button/button.d.vue.ts +40 -0
- package/dist/runtime/components/button/button.module.css +1 -0
- package/dist/runtime/components/button/button.vue +108 -0
- package/dist/runtime/components/button/button.vue.d.ts +40 -0
- package/dist/runtime/components/button/index.d.ts +3 -0
- package/dist/runtime/components/button/index.js +0 -0
- package/dist/runtime/components/button/unstyled-button.d.vue.ts +16 -0
- package/dist/runtime/components/button/unstyled-button.vue +37 -0
- package/dist/runtime/components/button/unstyled-button.vue.d.ts +16 -0
- package/dist/runtime/components/card/card-section.d.vue.ts +19 -0
- package/dist/runtime/components/card/card-section.vue +14 -0
- package/dist/runtime/components/card/card-section.vue.d.ts +19 -0
- package/dist/runtime/components/card/card.d.vue.ts +18 -0
- package/dist/runtime/components/card/card.module.css +1 -0
- package/dist/runtime/components/card/card.vue +18 -0
- package/dist/runtime/components/card/card.vue.d.ts +18 -0
- package/dist/runtime/components/card/index.d.ts +2 -0
- package/dist/runtime/components/card/index.js +0 -0
- package/dist/runtime/components/checkbox/checkbox-card.d.vue.ts +30 -0
- package/dist/runtime/components/checkbox/checkbox-card.vue +76 -0
- package/dist/runtime/components/checkbox/checkbox-card.vue.d.ts +30 -0
- package/dist/runtime/components/checkbox/checkbox-group.d.vue.ts +34 -0
- package/dist/runtime/components/checkbox/checkbox-group.vue +32 -0
- package/dist/runtime/components/checkbox/checkbox-group.vue.d.ts +34 -0
- package/dist/runtime/components/checkbox/checkbox-indicator.d.vue.ts +37 -0
- package/dist/runtime/components/checkbox/checkbox-indicator.vue +161 -0
- package/dist/runtime/components/checkbox/checkbox-indicator.vue.d.ts +37 -0
- package/dist/runtime/components/checkbox/checkbox.d.vue.ts +36 -0
- package/dist/runtime/components/checkbox/checkbox.vue +190 -0
- package/dist/runtime/components/checkbox/checkbox.vue.d.ts +36 -0
- package/dist/runtime/components/checkbox/index.d.ts +6 -0
- package/dist/runtime/components/checkbox/index.js +2 -0
- package/dist/runtime/components/checkbox/lib/card.context.d.ts +7 -0
- package/dist/runtime/components/checkbox/lib/card.context.js +8 -0
- package/dist/runtime/components/checkbox/lib/group.context.d.ts +16 -0
- package/dist/runtime/components/checkbox/lib/group.context.js +15 -0
- package/dist/runtime/components/chip/chip-group.d.vue.ts +24 -0
- package/dist/runtime/components/chip/chip-group.vue +20 -0
- package/dist/runtime/components/chip/chip-group.vue.d.ts +24 -0
- package/dist/runtime/components/chip/chip.d.vue.ts +35 -0
- package/dist/runtime/components/chip/chip.vue +270 -0
- package/dist/runtime/components/chip/chip.vue.d.ts +35 -0
- package/dist/runtime/components/chip/index.d.ts +3 -0
- package/dist/runtime/components/chip/index.js +1 -0
- package/dist/runtime/components/chip/lib.d.ts +14 -0
- package/dist/runtime/components/chip/lib.js +25 -0
- package/dist/runtime/components/combobox/combobox-dropdown.d.vue.ts +13 -0
- package/dist/runtime/components/combobox/combobox-dropdown.vue +33 -0
- package/dist/runtime/components/combobox/combobox-dropdown.vue.d.ts +13 -0
- package/dist/runtime/components/combobox/combobox-empty.d.vue.ts +16 -0
- package/dist/runtime/components/combobox/combobox-empty.vue +11 -0
- package/dist/runtime/components/combobox/combobox-empty.vue.d.ts +16 -0
- package/dist/runtime/components/combobox/combobox-group.d.vue.ts +27 -0
- package/dist/runtime/components/combobox/combobox-group.vue +47 -0
- package/dist/runtime/components/combobox/combobox-group.vue.d.ts +27 -0
- package/dist/runtime/components/combobox/combobox-option-list.d.vue.ts +18 -0
- package/dist/runtime/components/combobox/combobox-option-list.vue +13 -0
- package/dist/runtime/components/combobox/combobox-option-list.vue.d.ts +18 -0
- package/dist/runtime/components/combobox/combobox-option.d.vue.ts +23 -0
- package/dist/runtime/components/combobox/combobox-option.vue +65 -0
- package/dist/runtime/components/combobox/combobox-option.vue.d.ts +23 -0
- package/dist/runtime/components/combobox/combobox-options-dropdown.d.vue.ts +34 -0
- package/dist/runtime/components/combobox/combobox-options-dropdown.vue +74 -0
- package/dist/runtime/components/combobox/combobox-options-dropdown.vue.d.ts +34 -0
- package/dist/runtime/components/combobox/combobox-root.d.vue.ts +49 -0
- package/dist/runtime/components/combobox/combobox-root.vue +46 -0
- package/dist/runtime/components/combobox/combobox-root.vue.d.ts +49 -0
- package/dist/runtime/components/combobox/combobox-target.d.vue.ts +29 -0
- package/dist/runtime/components/combobox/combobox-target.vue +32 -0
- package/dist/runtime/components/combobox/combobox-target.vue.d.ts +29 -0
- package/dist/runtime/components/combobox/combobox.module.css +1 -0
- package/dist/runtime/components/combobox/index.d.ts +11 -0
- package/dist/runtime/components/combobox/index.js +2 -0
- package/dist/runtime/components/combobox/lib/const.d.ts +7 -0
- package/dist/runtime/components/combobox/lib/const.js +6 -0
- package/dist/runtime/components/combobox/lib/context.d.ts +16 -0
- package/dist/runtime/components/combobox/lib/context.js +8 -0
- package/dist/runtime/components/combobox/lib/use-combobox/get-index.d.ts +3 -0
- package/dist/runtime/components/combobox/lib/use-combobox/get-index.js +33 -0
- package/dist/runtime/components/combobox/lib/use-combobox/handlers.d.ts +36 -0
- package/dist/runtime/components/combobox/lib/use-combobox/handlers.js +82 -0
- package/dist/runtime/components/combobox/lib/use-combobox/index.d.ts +1 -0
- package/dist/runtime/components/combobox/lib/use-combobox/index.js +1 -0
- package/dist/runtime/components/combobox/lib/use-combobox/use-combobox.d.ts +70 -0
- package/dist/runtime/components/combobox/lib/use-combobox/use-combobox.js +97 -0
- package/dist/runtime/components/combobox/lib/use-combobox-data/get-parsed-combobox-data.d.ts +2 -0
- package/dist/runtime/components/combobox/lib/use-combobox-data/get-parsed-combobox-data.js +23 -0
- package/dist/runtime/components/combobox/lib/use-combobox-data/index.d.ts +1 -0
- package/dist/runtime/components/combobox/lib/use-combobox-data/index.js +1 -0
- package/dist/runtime/components/combobox/lib/use-combobox-data/use-combobox-data.d.ts +7 -0
- package/dist/runtime/components/combobox/lib/use-combobox-data/use-combobox-data.js +23 -0
- package/dist/runtime/components/combobox/lib/use-combobox-target.d.ts +25 -0
- package/dist/runtime/components/combobox/lib/use-combobox-target.js +65 -0
- package/dist/runtime/components/combobox/lib/utils/default-option-filter.d.ts +7 -0
- package/dist/runtime/components/combobox/lib/utils/default-option-filter.js +27 -0
- package/dist/runtime/components/combobox/lib/utils/index.d.ts +5 -0
- package/dist/runtime/components/combobox/lib/utils/index.js +6 -0
- package/dist/runtime/components/combobox/lib/utils/is-empty-combobox-data.d.ts +2 -0
- package/dist/runtime/components/combobox/lib/utils/is-empty-combobox-data.js +11 -0
- package/dist/runtime/components/combobox/lib/utils/is-options-group.d.ts +2 -0
- package/dist/runtime/components/combobox/lib/utils/is-options-group.js +3 -0
- package/dist/runtime/components/combobox/types/index.d.ts +19 -0
- package/dist/runtime/components/combobox/types/index.js +1 -0
- package/dist/runtime/components/combobox/types/item.d.ts +22 -0
- package/dist/runtime/components/combobox/types/item.js +0 -0
- package/dist/runtime/components/container.d.vue.ts +19 -0
- package/dist/runtime/components/container.vue +33 -0
- package/dist/runtime/components/container.vue.d.ts +19 -0
- package/dist/runtime/components/dialog/dialog-close-button.d.vue.ts +14 -0
- package/dist/runtime/components/dialog/dialog-close-button.vue +28 -0
- package/dist/runtime/components/dialog/dialog-close-button.vue.d.ts +14 -0
- package/dist/runtime/components/dialog/dialog-header.d.vue.ts +16 -0
- package/dist/runtime/components/dialog/dialog-header.vue +11 -0
- package/dist/runtime/components/dialog/dialog-header.vue.d.ts +16 -0
- package/dist/runtime/components/dialog/dialog-root.d.vue.ts +54 -0
- package/dist/runtime/components/dialog/dialog-root.vue +93 -0
- package/dist/runtime/components/dialog/dialog-root.vue.d.ts +54 -0
- package/dist/runtime/components/dialog/dialog-title.d.vue.ts +16 -0
- package/dist/runtime/components/dialog/dialog-title.vue +11 -0
- package/dist/runtime/components/dialog/dialog-title.vue.d.ts +16 -0
- package/dist/runtime/components/dialog/dialog.module.css +1 -0
- package/dist/runtime/components/dialog/index.d.ts +5 -0
- package/dist/runtime/components/dialog/index.js +1 -0
- package/dist/runtime/components/dialog/lib.d.ts +2 -0
- package/dist/runtime/components/dialog/lib.js +8 -0
- package/dist/runtime/components/dialog/types/index.d.ts +9 -0
- package/dist/runtime/components/dialog/types/index.js +0 -0
- package/dist/runtime/components/drawer/drawer-close-button.d.vue.ts +14 -0
- package/dist/runtime/components/drawer/drawer-close-button.vue +20 -0
- package/dist/runtime/components/drawer/drawer-close-button.vue.d.ts +14 -0
- package/dist/runtime/components/drawer/drawer-header.d.vue.ts +16 -0
- package/dist/runtime/components/drawer/drawer-header.vue +10 -0
- package/dist/runtime/components/drawer/drawer-header.vue.d.ts +16 -0
- package/dist/runtime/components/drawer/drawer-root.d.vue.ts +31 -0
- package/dist/runtime/components/drawer/drawer-root.vue +45 -0
- package/dist/runtime/components/drawer/drawer-root.vue.d.ts +31 -0
- package/dist/runtime/components/drawer/drawer-title.d.vue.ts +16 -0
- package/dist/runtime/components/drawer/drawer-title.vue +10 -0
- package/dist/runtime/components/drawer/drawer-title.vue.d.ts +16 -0
- package/dist/runtime/components/drawer/drawer.module.css +1 -0
- package/dist/runtime/components/drawer/index.d.ts +3 -0
- package/dist/runtime/components/drawer/index.js +0 -0
- package/dist/runtime/components/index.d.ts +26 -0
- package/dist/runtime/components/index.js +26 -0
- package/dist/runtime/components/input/index.d.ts +10 -0
- package/dist/runtime/components/input/index.js +1 -0
- package/dist/runtime/components/input/input.d.vue.ts +38 -0
- package/dist/runtime/components/input/input.vue +38 -0
- package/dist/runtime/components/input/input.vue.d.ts +38 -0
- package/dist/runtime/components/input/lib/input-wrapper.context.d.ts +18 -0
- package/dist/runtime/components/input/lib/input-wrapper.context.js +9 -0
- package/dist/runtime/components/input/number-input.d.vue.ts +36 -0
- package/dist/runtime/components/input/number-input.vue +172 -0
- package/dist/runtime/components/input/number-input.vue.d.ts +36 -0
- package/dist/runtime/components/input/password-input.d.vue.ts +4 -0
- package/dist/runtime/components/input/password-input.vue +28 -0
- package/dist/runtime/components/input/password-input.vue.d.ts +4 -0
- package/dist/runtime/components/input/text-input.d.vue.ts +32 -0
- package/dist/runtime/components/input/text-input.vue +38 -0
- package/dist/runtime/components/input/text-input.vue.d.ts +32 -0
- package/dist/runtime/components/input/types/index.d.ts +5 -0
- package/dist/runtime/components/input/types/index.js +0 -0
- package/dist/runtime/components/input/ui/input-base.d.vue.ts +28 -0
- package/dist/runtime/components/input/ui/input-base.vue +343 -0
- package/dist/runtime/components/input/ui/input-base.vue.d.ts +28 -0
- package/dist/runtime/components/input/ui/input-inline.d.vue.ts +30 -0
- package/dist/runtime/components/input/ui/input-inline.vue +138 -0
- package/dist/runtime/components/input/ui/input-inline.vue.d.ts +30 -0
- package/dist/runtime/components/input/ui/input-label.d.vue.ts +18 -0
- package/dist/runtime/components/input/ui/input-label.vue +26 -0
- package/dist/runtime/components/input/ui/input-label.vue.d.ts +18 -0
- package/dist/runtime/components/input/ui/input-wrapper.d.vue.ts +26 -0
- package/dist/runtime/components/input/ui/input-wrapper.vue +96 -0
- package/dist/runtime/components/input/ui/input-wrapper.vue.d.ts +26 -0
- package/dist/runtime/components/link/index.d.ts +3 -0
- package/dist/runtime/components/link/index.js +1 -0
- package/dist/runtime/components/link/lib.d.ts +16 -0
- package/dist/runtime/components/link/lib.js +25 -0
- package/dist/runtime/components/link/link-button.d.vue.ts +21 -0
- package/dist/runtime/components/link/link-button.vue +42 -0
- package/dist/runtime/components/link/link-button.vue.d.ts +21 -0
- package/dist/runtime/components/link/link.d.vue.ts +18 -0
- package/dist/runtime/components/link/link.vue +47 -0
- package/dist/runtime/components/link/link.vue.d.ts +18 -0
- package/dist/runtime/components/loader/_loaders/bars-loader.d.vue.ts +3 -0
- package/dist/runtime/components/loader/_loaders/bars-loader.vue +11 -0
- package/dist/runtime/components/loader/_loaders/bars-loader.vue.d.ts +3 -0
- package/dist/runtime/components/loader/_loaders/dots-loader.d.vue.ts +3 -0
- package/dist/runtime/components/loader/_loaders/dots-loader.vue +11 -0
- package/dist/runtime/components/loader/_loaders/dots-loader.vue.d.ts +3 -0
- package/dist/runtime/components/loader/_loaders/oval-loader.d.vue.ts +3 -0
- package/dist/runtime/components/loader/_loaders/oval-loader.vue +7 -0
- package/dist/runtime/components/loader/_loaders/oval-loader.vue.d.ts +3 -0
- package/dist/runtime/components/loader/index.d.ts +1 -0
- package/dist/runtime/components/loader/index.js +0 -0
- package/dist/runtime/components/loader/loader.d.vue.ts +10 -0
- package/dist/runtime/components/loader/loader.vue +37 -0
- package/dist/runtime/components/loader/loader.vue.d.ts +10 -0
- package/dist/runtime/components/modal/index.d.ts +3 -0
- package/dist/runtime/components/modal/index.js +0 -0
- package/dist/runtime/components/modal/modal-close-button.d.vue.ts +14 -0
- package/dist/runtime/components/modal/modal-close-button.vue +20 -0
- package/dist/runtime/components/modal/modal-close-button.vue.d.ts +14 -0
- package/dist/runtime/components/modal/modal-header.d.vue.ts +16 -0
- package/dist/runtime/components/modal/modal-header.vue +10 -0
- package/dist/runtime/components/modal/modal-header.vue.d.ts +16 -0
- package/dist/runtime/components/modal/modal-root.d.vue.ts +33 -0
- package/dist/runtime/components/modal/modal-root.vue +30 -0
- package/dist/runtime/components/modal/modal-root.vue.d.ts +33 -0
- package/dist/runtime/components/modal/modal-title.d.vue.ts +16 -0
- package/dist/runtime/components/modal/modal-title.vue +10 -0
- package/dist/runtime/components/modal/modal-title.vue.d.ts +16 -0
- package/dist/runtime/components/modal/modal.module.css +1 -0
- package/dist/runtime/components/nav-link/index.d.ts +1 -0
- package/dist/runtime/components/nav-link/index.js +0 -0
- package/dist/runtime/components/nav-link/nav-link.d.vue.ts +35 -0
- package/dist/runtime/components/nav-link/nav-link.vue +201 -0
- package/dist/runtime/components/nav-link/nav-link.vue.d.ts +35 -0
- package/dist/runtime/components/paper.d.vue.ts +20 -0
- package/dist/runtime/components/paper.vue +53 -0
- package/dist/runtime/components/paper.vue.d.ts +20 -0
- package/dist/runtime/components/popover/index.d.ts +1 -0
- package/dist/runtime/components/popover/index.js +0 -0
- package/dist/runtime/components/popover/lib/context.d.ts +14 -0
- package/dist/runtime/components/popover/lib/context.js +8 -0
- package/dist/runtime/components/popover/lib/get-arrow-position.d.ts +12 -0
- package/dist/runtime/components/popover/lib/get-arrow-position.js +88 -0
- package/dist/runtime/components/popover/lib/use-popover.d.ts +23 -0
- package/dist/runtime/components/popover/lib/use-popover.js +47 -0
- package/dist/runtime/components/popover/popover-dropdown.d.vue.ts +13 -0
- package/dist/runtime/components/popover/popover-dropdown.vue +90 -0
- package/dist/runtime/components/popover/popover-dropdown.vue.d.ts +13 -0
- package/dist/runtime/components/popover/popover-target.d.vue.ts +13 -0
- package/dist/runtime/components/popover/popover-target.vue +11 -0
- package/dist/runtime/components/popover/popover-target.vue.d.ts +13 -0
- package/dist/runtime/components/popover/popover.d.vue.ts +27 -0
- package/dist/runtime/components/popover/popover.vue +79 -0
- package/dist/runtime/components/popover/popover.vue.d.ts +27 -0
- package/dist/runtime/components/popover/types/index.d.ts +42 -0
- package/dist/runtime/components/popover/types/index.js +0 -0
- package/dist/runtime/components/renderless/renderless-slot.d.ts +6 -0
- package/dist/runtime/components/renderless/renderless-slot.js +32 -0
- package/dist/runtime/components/renderless/renderless.d.vue.ts +13 -0
- package/dist/runtime/components/renderless/renderless.vue +12 -0
- package/dist/runtime/components/renderless/renderless.vue.d.ts +13 -0
- package/dist/runtime/components/select/index.d.ts +1 -0
- package/dist/runtime/components/select/index.js +0 -0
- package/dist/runtime/components/select/select.d.vue.ts +45 -0
- package/dist/runtime/components/select/select.vue +131 -0
- package/dist/runtime/components/select/select.vue.d.ts +45 -0
- package/dist/runtime/components/tabs/index.d.ts +1 -0
- package/dist/runtime/components/tabs/index.js +1 -0
- package/dist/runtime/components/tabs/lib.d.ts +142 -0
- package/dist/runtime/components/tabs/lib.js +18 -0
- package/dist/runtime/components/tabs/tabs-list.d.vue.ts +19 -0
- package/dist/runtime/components/tabs/tabs-list.vue +31 -0
- package/dist/runtime/components/tabs/tabs-list.vue.d.ts +19 -0
- package/dist/runtime/components/tabs/tabs-panel.d.vue.ts +17 -0
- package/dist/runtime/components/tabs/tabs-panel.vue +23 -0
- package/dist/runtime/components/tabs/tabs-panel.vue.d.ts +17 -0
- package/dist/runtime/components/tabs/tabs-root.d.vue.ts +47 -0
- package/dist/runtime/components/tabs/tabs-root.vue +71 -0
- package/dist/runtime/components/tabs/tabs-root.vue.d.ts +47 -0
- package/dist/runtime/components/tabs/tabs-tab.d.vue.ts +22 -0
- package/dist/runtime/components/tabs/tabs-tab.vue +41 -0
- package/dist/runtime/components/tabs/tabs-tab.vue.d.ts +22 -0
- package/dist/runtime/components/tabs/tabs.module.css +1 -0
- package/dist/runtime/components/text.d.vue.ts +37 -0
- package/dist/runtime/components/text.vue +122 -0
- package/dist/runtime/components/text.vue.d.ts +37 -0
- package/dist/runtime/components/textarea.d.vue.ts +33 -0
- package/dist/runtime/components/textarea.vue +48 -0
- package/dist/runtime/components/textarea.vue.d.ts +33 -0
- package/dist/runtime/components/title.d.vue.ts +18 -0
- package/dist/runtime/components/title.vue +34 -0
- package/dist/runtime/components/title.vue.d.ts +18 -0
- package/dist/runtime/components/transition/index.d.ts +1 -0
- package/dist/runtime/components/transition/index.js +0 -0
- package/dist/runtime/components/transition/transition.d.vue.ts +25 -0
- package/dist/runtime/components/transition/transition.vue +31 -0
- package/dist/runtime/components/transition/transition.vue.d.ts +25 -0
- package/dist/runtime/components/visually-hidden/index.d.ts +2 -0
- package/dist/runtime/components/visually-hidden/index.js +0 -0
- package/dist/runtime/components/visually-hidden/visually-hidden-input.d.vue.ts +22 -0
- package/dist/runtime/components/visually-hidden/visually-hidden-input.vue +13 -0
- package/dist/runtime/components/visually-hidden/visually-hidden-input.vue.d.ts +22 -0
- package/dist/runtime/components/visually-hidden/visually-hidden.d.vue.ts +17 -0
- package/dist/runtime/components/visually-hidden/visually-hidden.vue +22 -0
- package/dist/runtime/components/visually-hidden/visually-hidden.vue.d.ts +17 -0
- package/dist/runtime/composals/index.d.ts +4 -0
- package/dist/runtime/composals/index.js +4 -0
- package/dist/runtime/composals/use-active-link.d.ts +5 -0
- package/dist/runtime/composals/use-active-link.js +20 -0
- package/dist/runtime/composals/use-mod.d.ts +2 -0
- package/dist/runtime/composals/use-mod.js +25 -0
- package/dist/runtime/composals/use-style-resolver.d.ts +3 -0
- package/dist/runtime/composals/use-style-resolver.js +5 -0
- package/dist/runtime/composals/use-theme.d.ts +9 -0
- package/dist/runtime/composals/use-theme.js +4 -0
- package/dist/runtime/const/index.d.ts +2 -0
- package/dist/runtime/const/index.js +6 -0
- package/dist/runtime/helpers/create-strict-injection.d.ts +94 -0
- package/dist/runtime/helpers/create-strict-injection.js +11 -0
- package/dist/runtime/helpers/index.d.ts +1 -0
- package/dist/runtime/helpers/index.js +1 -0
- package/dist/runtime/server/tsconfig.json +3 -0
- package/dist/runtime/styles/baseline.css +1 -0
- package/dist/runtime/styles/colors.css +1 -0
- package/dist/runtime/styles/const.css +1 -0
- package/dist/runtime/styles/dark-theme.css +1 -0
- package/dist/runtime/styles/global.css +1 -0
- package/dist/runtime/styles/light-theme.css +1 -0
- package/dist/runtime/types/index.d.ts +1 -0
- package/dist/runtime/types/index.js +0 -0
- package/dist/runtime/types/theme.d.ts +25 -0
- package/dist/runtime/types/theme.js +0 -0
- package/dist/runtime/utils/boolean/is-falsy.d.ts +1 -0
- package/dist/runtime/utils/boolean/is-falsy.js +7 -0
- package/dist/runtime/utils/boolean/is-number-like.d.ts +1 -0
- package/dist/runtime/utils/boolean/is-number-like.js +13 -0
- package/dist/runtime/utils/color-functions/get-gradient.d.ts +3 -0
- package/dist/runtime/utils/color-functions/get-gradient.js +25 -0
- package/dist/runtime/utils/converters/rem.d.ts +2 -0
- package/dist/runtime/utils/converters/rem.js +43 -0
- package/dist/runtime/utils/get-color-var.d.ts +2 -0
- package/dist/runtime/utils/get-color-var.js +6 -0
- package/dist/runtime/utils/get-safe-id.d.ts +1 -0
- package/dist/runtime/utils/get-safe-id.js +8 -0
- package/dist/runtime/utils/get-size/get-size.d.ts +6 -0
- package/dist/runtime/utils/get-size/get-size.js +24 -0
- package/dist/runtime/utils/index.d.ts +7 -0
- package/dist/runtime/utils/index.js +7 -0
- package/dist/runtime/utils/parse-theme-color/parse-theme-color.d.ts +14 -0
- package/dist/runtime/utils/parse-theme-color/parse-theme-color.js +73 -0
- package/dist/runtime/utils/vars-resolver/create-variant-color-resolver.d.ts +14 -0
- package/dist/runtime/utils/vars-resolver/create-variant-color-resolver.js +106 -0
- package/dist/types.d.mts +3 -0
- package/package.json +96 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ComboboxData, ComboboxItem, ComboboxItemExt, ComboboxTargetProps } from '../combobox/index.js';
|
|
2
|
+
import type { InputProps } from '../input/index.js';
|
|
3
|
+
export interface SelectProps<Value extends string = string, Ext extends ComboboxItemExt = object> extends /* @vue-ignore */ Omit<InputProps, 'modelValue' | 'multiline' | 'resize' | 'is' | 'id'>, Pick<ComboboxTargetProps, 'autoComplete'> {
|
|
4
|
+
data: ComboboxData<Value, Ext>;
|
|
5
|
+
/** Determines whether the select should be searchable @default `false` */
|
|
6
|
+
searchable?: boolean;
|
|
7
|
+
/** If set, the check icon is displayed near the selected option label @default `true` */
|
|
8
|
+
withCheckIcon?: boolean;
|
|
9
|
+
/** Position of the check icon relative to the option label @default `'left'` */
|
|
10
|
+
iconPosition?: 'left' | 'right';
|
|
11
|
+
/** Message displayed when no option matches the current search query when the `searchable` prop is set or there is no data */
|
|
12
|
+
nothingFoundMessage?: string;
|
|
13
|
+
/** If set, it becomes possible to deselect value by clicking on the selected option @default `true` */
|
|
14
|
+
allowDeselect?: boolean;
|
|
15
|
+
/** If set, the clear button is displayed in the right section when the component has value @default `false` */
|
|
16
|
+
limit?: number;
|
|
17
|
+
}
|
|
18
|
+
declare const __VLS_export: <Value extends string = string, Ext extends ComboboxItemExt = object>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
19
|
+
props: __VLS_PrettifyLocal<(SelectProps<Value, Ext> & {
|
|
20
|
+
open?: boolean;
|
|
21
|
+
modelValue?: ComboboxItem<Value, Ext> | null;
|
|
22
|
+
search?: string;
|
|
23
|
+
}) & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "select", args_0: number) => void) & ((evt: "clear") => void) & ((evt: "close", args_0: import("../combobox/index.js").ComboboxDropdownEventSource) => void) & ((evt: "submit", args_0: string, args_1: ComboboxItem) => void) & ((evt: "open", args_0: import("../combobox/index.js").ComboboxDropdownEventSource) => void) & ((evt: "update:modelValue", value: ComboboxItem<Value, Ext> | null) => void) & ((evt: "update:search", value: string) => void) & ((evt: "update:open", value: boolean) => void)>>> & import("vue").PublicProps;
|
|
24
|
+
expose: (exposed: {}) => void;
|
|
25
|
+
attrs: any;
|
|
26
|
+
slots: {
|
|
27
|
+
label?: (props: {}) => any;
|
|
28
|
+
} & {
|
|
29
|
+
description?: (props: {}) => any;
|
|
30
|
+
} & {
|
|
31
|
+
error?: (props: {}) => any;
|
|
32
|
+
} & {
|
|
33
|
+
leftSection?: (props: {}) => any;
|
|
34
|
+
} & {
|
|
35
|
+
rightSection?: (props: {}) => any;
|
|
36
|
+
};
|
|
37
|
+
emit: (((evt: "select", args_0: number) => void) & ((evt: "clear") => void) & ((evt: "close", args_0: import("../combobox/index.js").ComboboxDropdownEventSource) => void) & ((evt: "submit", args_0: string, args_1: ComboboxItem) => void) & ((evt: "open", args_0: import("../combobox/index.js").ComboboxDropdownEventSource) => void)) & (((evt: "update:modelValue", value: ComboboxItem<Value, Ext> | null) => void) & ((evt: "update:search", value: string) => void) & ((evt: "update:open", value: boolean) => void));
|
|
38
|
+
}>) => import("vue").VNode & {
|
|
39
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
40
|
+
};
|
|
41
|
+
declare const _default: typeof __VLS_export;
|
|
42
|
+
export default _default;
|
|
43
|
+
type __VLS_PrettifyLocal<T> = {
|
|
44
|
+
[K in keyof T as K]: T[K];
|
|
45
|
+
} & {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTabsState } from './lib.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTabsState } from "./lib.js";
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import type { ModelRef } from 'vue';
|
|
2
|
+
export interface TabsContext {
|
|
3
|
+
/**
|
|
4
|
+
* Unique identifier for the entire tabs group.
|
|
5
|
+
* Used as a prefix for generating accessible tab and panel IDs.
|
|
6
|
+
*/
|
|
7
|
+
id: string;
|
|
8
|
+
/**
|
|
9
|
+
* Two-way bound active tab value.
|
|
10
|
+
* `null` means no tab is selected (only possible when `allowTabDeactivation` is `true`).
|
|
11
|
+
*/
|
|
12
|
+
active: ModelRef<string | null>;
|
|
13
|
+
/** Whether keyboard navigation should loop from last to first (and vice versa). */
|
|
14
|
+
loop: boolean;
|
|
15
|
+
/** Whether pressing Enter/Space on a focused tab should activate it. */
|
|
16
|
+
activateTabWithKeyboard: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Allows clicking an already active tab to deactivate it (sets `active` to `null`).
|
|
19
|
+
* Useful for "deselectable" tabs.
|
|
20
|
+
*/
|
|
21
|
+
allowTabDeactivation: boolean;
|
|
22
|
+
/** Visual variant of the tabs component. */
|
|
23
|
+
variant: 'default' | 'pills' | 'outline';
|
|
24
|
+
/** Inverted color scheme (typically used on dark backgrounds). */
|
|
25
|
+
inverted: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Keep tab panels mounted in the DOM when inactive.
|
|
28
|
+
* Useful for preserving state, animations, or SEO.
|
|
29
|
+
*/
|
|
30
|
+
keepMounted: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* For vertical tabs: placement of the tab list relative to the panels.
|
|
33
|
+
* `'left'` → tabs on the left, `'right'` → tabs on the right.
|
|
34
|
+
*/
|
|
35
|
+
placement: 'right' | 'left';
|
|
36
|
+
/** Explicit orientation. Usually inferred from layout, but can be forced. */
|
|
37
|
+
orientation?: 'vertical' | 'horizontal';
|
|
38
|
+
/**
|
|
39
|
+
* Generates a unique accessible ID for a tab element based on its value.
|
|
40
|
+
* @param value - The logical value of the tab (e.g. `'profile'`, `'settings'`)
|
|
41
|
+
* @returns Accessible ID string (e.g. `'tabs-abc123-tab-profile'`)
|
|
42
|
+
*/
|
|
43
|
+
getTabId: (value: string) => string;
|
|
44
|
+
/**
|
|
45
|
+
* Generates a unique accessible ID for a tab panel based on its value.
|
|
46
|
+
* @param value - The logical value of the tab
|
|
47
|
+
* @returns Accessible ID string (e.g. `'tabs-abc123-panel-profile'`)
|
|
48
|
+
*/
|
|
49
|
+
getPanelId: (value: string) => string;
|
|
50
|
+
}
|
|
51
|
+
export declare const useProvideTabsContext: (args_0: TabsContext) => {
|
|
52
|
+
active: ModelRef<string | null>;
|
|
53
|
+
onUpdate: (tab: string) => string | null;
|
|
54
|
+
/**
|
|
55
|
+
* Unique identifier for the entire tabs group.
|
|
56
|
+
* Used as a prefix for generating accessible tab and panel IDs.
|
|
57
|
+
*/
|
|
58
|
+
id: string;
|
|
59
|
+
/** Whether keyboard navigation should loop from last to first (and vice versa). */
|
|
60
|
+
loop: boolean;
|
|
61
|
+
/** Whether pressing Enter/Space on a focused tab should activate it. */
|
|
62
|
+
activateTabWithKeyboard: boolean;
|
|
63
|
+
/** Visual variant of the tabs component. */
|
|
64
|
+
variant: "default" | "pills" | "outline";
|
|
65
|
+
/** Inverted color scheme (typically used on dark backgrounds). */
|
|
66
|
+
inverted: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Keep tab panels mounted in the DOM when inactive.
|
|
69
|
+
* Useful for preserving state, animations, or SEO.
|
|
70
|
+
*/
|
|
71
|
+
keepMounted: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* For vertical tabs: placement of the tab list relative to the panels.
|
|
74
|
+
* `'left'` → tabs on the left, `'right'` → tabs on the right.
|
|
75
|
+
*/
|
|
76
|
+
placement: "right" | "left";
|
|
77
|
+
/** Explicit orientation. Usually inferred from layout, but can be forced. */
|
|
78
|
+
orientation?: "vertical" | "horizontal";
|
|
79
|
+
/**
|
|
80
|
+
* Generates a unique accessible ID for a tab element based on its value.
|
|
81
|
+
* @param value - The logical value of the tab (e.g. `'profile'`, `'settings'`)
|
|
82
|
+
* @returns Accessible ID string (e.g. `'tabs-abc123-tab-profile'`)
|
|
83
|
+
*/
|
|
84
|
+
getTabId: (value: string) => string;
|
|
85
|
+
/**
|
|
86
|
+
* Generates a unique accessible ID for a tab panel based on its value.
|
|
87
|
+
* @param value - The logical value of the tab
|
|
88
|
+
* @returns Accessible ID string (e.g. `'tabs-abc123-panel-profile'`)
|
|
89
|
+
*/
|
|
90
|
+
getPanelId: (value: string) => string;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Consumes the {@link NTabsRoot} context.
|
|
94
|
+
*
|
|
95
|
+
* Returns the full context plus a safe `onUpdate` handler that respects
|
|
96
|
+
* the `allowTabDeactivation` option.
|
|
97
|
+
*
|
|
98
|
+
* @remarks
|
|
99
|
+
* Должен вызываться только внутри компонента, который является потомком {@link NTabsRoot}.
|
|
100
|
+
* Предоставляет доступ к состоянию и методам управления вкладками.
|
|
101
|
+
*/
|
|
102
|
+
export declare const useTabsState: () => {
|
|
103
|
+
active: ModelRef<string | null>;
|
|
104
|
+
onUpdate: (tab: string) => string | null;
|
|
105
|
+
/**
|
|
106
|
+
* Unique identifier for the entire tabs group.
|
|
107
|
+
* Used as a prefix for generating accessible tab and panel IDs.
|
|
108
|
+
*/
|
|
109
|
+
id: string;
|
|
110
|
+
/** Whether keyboard navigation should loop from last to first (and vice versa). */
|
|
111
|
+
loop: boolean;
|
|
112
|
+
/** Whether pressing Enter/Space on a focused tab should activate it. */
|
|
113
|
+
activateTabWithKeyboard: boolean;
|
|
114
|
+
/** Visual variant of the tabs component. */
|
|
115
|
+
variant: "default" | "pills" | "outline";
|
|
116
|
+
/** Inverted color scheme (typically used on dark backgrounds). */
|
|
117
|
+
inverted: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Keep tab panels mounted in the DOM when inactive.
|
|
120
|
+
* Useful for preserving state, animations, or SEO.
|
|
121
|
+
*/
|
|
122
|
+
keepMounted: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* For vertical tabs: placement of the tab list relative to the panels.
|
|
125
|
+
* `'left'` → tabs on the left, `'right'` → tabs on the right.
|
|
126
|
+
*/
|
|
127
|
+
placement: "right" | "left";
|
|
128
|
+
/** Explicit orientation. Usually inferred from layout, but can be forced. */
|
|
129
|
+
orientation?: "vertical" | "horizontal";
|
|
130
|
+
/**
|
|
131
|
+
* Generates a unique accessible ID for a tab element based on its value.
|
|
132
|
+
* @param value - The logical value of the tab (e.g. `'profile'`, `'settings'`)
|
|
133
|
+
* @returns Accessible ID string (e.g. `'tabs-abc123-tab-profile'`)
|
|
134
|
+
*/
|
|
135
|
+
getTabId: (value: string) => string;
|
|
136
|
+
/**
|
|
137
|
+
* Generates a unique accessible ID for a tab panel based on its value.
|
|
138
|
+
* @param value - The logical value of the tab
|
|
139
|
+
* @returns Accessible ID string (e.g. `'tabs-abc123-panel-profile'`)
|
|
140
|
+
*/
|
|
141
|
+
getPanelId: (value: string) => string;
|
|
142
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createStrictInjection } from "@nui/helpers";
|
|
2
|
+
const [
|
|
3
|
+
useProvide,
|
|
4
|
+
useState
|
|
5
|
+
] = createStrictInjection(({ allowTabDeactivation, active, ...state }) => ({
|
|
6
|
+
...state,
|
|
7
|
+
active,
|
|
8
|
+
onUpdate: (tab) => {
|
|
9
|
+
if (allowTabDeactivation)
|
|
10
|
+
return active.value = active.value === tab ? null : tab;
|
|
11
|
+
return active.value = tab;
|
|
12
|
+
}
|
|
13
|
+
}), {
|
|
14
|
+
name: "TabsContext",
|
|
15
|
+
injectionKey: Symbol("TabsContext")
|
|
16
|
+
});
|
|
17
|
+
export const useProvideTabsContext = useProvide;
|
|
18
|
+
export const useTabsState = useState;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CSSProperties } from 'vue';
|
|
2
|
+
import type { BoxProps } from '../box.vue.js';
|
|
3
|
+
export interface TabsListProps extends /* @vue-ignore */ BoxProps {
|
|
4
|
+
grow?: boolean;
|
|
5
|
+
justify?: CSSProperties['justify-content'];
|
|
6
|
+
}
|
|
7
|
+
declare var __VLS_6: {};
|
|
8
|
+
type __VLS_Slots = {} & {
|
|
9
|
+
default?: (props: typeof __VLS_6) => any;
|
|
10
|
+
};
|
|
11
|
+
declare const __VLS_base: import("vue").DefineComponent<TabsListProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TabsListProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
15
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
16
|
+
new (): {
|
|
17
|
+
$slots: S;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
import Box from "../box.vue";
|
|
4
|
+
import { useTabsState } from "./lib";
|
|
5
|
+
import css from "./tabs.module.css";
|
|
6
|
+
const { is = "header", mod, grow, justify } = defineProps({
|
|
7
|
+
grow: { type: Boolean, required: false },
|
|
8
|
+
justify: { type: null, required: false }
|
|
9
|
+
});
|
|
10
|
+
const ctx = useTabsState();
|
|
11
|
+
const style = computed(() => ({ "--tabs-justify": justify }));
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<template>
|
|
15
|
+
<Box
|
|
16
|
+
:is
|
|
17
|
+
:style
|
|
18
|
+
:class='css.list'
|
|
19
|
+
role='tablist'
|
|
20
|
+
:mod='[mod, {
|
|
21
|
+
variant: ctx?.variant,
|
|
22
|
+
grow,
|
|
23
|
+
orientation: ctx?.orientation,
|
|
24
|
+
placement: ctx?.orientation === "vertical" && ctx.placement,
|
|
25
|
+
inverted: ctx?.inverted
|
|
26
|
+
}]'
|
|
27
|
+
:aria-orientation='ctx?.orientation'
|
|
28
|
+
>
|
|
29
|
+
<slot />
|
|
30
|
+
</Box>
|
|
31
|
+
</template>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CSSProperties } from 'vue';
|
|
2
|
+
import type { BoxProps } from '../box.vue.js';
|
|
3
|
+
export interface TabsListProps extends /* @vue-ignore */ BoxProps {
|
|
4
|
+
grow?: boolean;
|
|
5
|
+
justify?: CSSProperties['justify-content'];
|
|
6
|
+
}
|
|
7
|
+
declare var __VLS_6: {};
|
|
8
|
+
type __VLS_Slots = {} & {
|
|
9
|
+
default?: (props: typeof __VLS_6) => any;
|
|
10
|
+
};
|
|
11
|
+
declare const __VLS_base: import("vue").DefineComponent<TabsListProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TabsListProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
15
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
16
|
+
new (): {
|
|
17
|
+
$slots: S;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BoxProps } from '../box.vue.js';
|
|
2
|
+
export interface TabsPanelProps extends /* @vue-ignore */ BoxProps {
|
|
3
|
+
value: string;
|
|
4
|
+
}
|
|
5
|
+
declare var __VLS_6: {};
|
|
6
|
+
type __VLS_Slots = {} & {
|
|
7
|
+
default?: (props: typeof __VLS_6) => any;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_base: import("vue").DefineComponent<TabsPanelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TabsPanelProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import Box from "../box.vue";
|
|
3
|
+
import { useTabsState } from "./lib";
|
|
4
|
+
import css from "./tabs.module.css";
|
|
5
|
+
const { is = "section", mod, value } = defineProps({
|
|
6
|
+
value: { type: String, required: true }
|
|
7
|
+
});
|
|
8
|
+
const ctx = useTabsState();
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<Box
|
|
13
|
+
:is
|
|
14
|
+
:id='ctx?.getPanelId(value)'
|
|
15
|
+
:mod='[mod, { orientation: ctx?.orientation }]'
|
|
16
|
+
:data-active='ctx?.active.value === value'
|
|
17
|
+
:class='css.panel'
|
|
18
|
+
role='tabpanel'
|
|
19
|
+
:aria-labelledby='ctx?.getTabId(value)'
|
|
20
|
+
>
|
|
21
|
+
<slot />
|
|
22
|
+
</Box>
|
|
23
|
+
</template>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BoxProps } from '../box.vue.js';
|
|
2
|
+
export interface TabsPanelProps extends /* @vue-ignore */ BoxProps {
|
|
3
|
+
value: string;
|
|
4
|
+
}
|
|
5
|
+
declare var __VLS_6: {};
|
|
6
|
+
type __VLS_Slots = {} & {
|
|
7
|
+
default?: (props: typeof __VLS_6) => any;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_base: import("vue").DefineComponent<TabsPanelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TabsPanelProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { UiKitColor, UiKitRadius } from '@nui/types';
|
|
2
|
+
import type { BoxProps } from '../box.vue.js';
|
|
3
|
+
export interface TabsRootProps extends /* @vue-ignore */ BoxProps {
|
|
4
|
+
defaultTab?: string;
|
|
5
|
+
/** Tabs orientation, `'horizontal'` by default */
|
|
6
|
+
orientation?: 'vertical' | 'horizontal';
|
|
7
|
+
/** `TabsList` placement relative to `TabsPanel`, applicable only when `orientation="vertical"`, `'left'` by default */
|
|
8
|
+
placement?: 'left' | 'right';
|
|
9
|
+
variant?: 'default' | 'pills' | 'outline';
|
|
10
|
+
/** Determines whether arrow key presses should loop though items (first to last and last to first), `true` by default */
|
|
11
|
+
loop?: boolean;
|
|
12
|
+
/** Determines whether tab should be activated with arrow key press, `true` by default */
|
|
13
|
+
activateTabWithKeyboard?: boolean;
|
|
14
|
+
/** Determines whether tab can be deactivated, `false` by default */
|
|
15
|
+
allowTabDeactivation?: boolean;
|
|
16
|
+
/** Changes colors of `TabsTab` components when variant is `pills` or `default`, does nothing for other variants */
|
|
17
|
+
color?: UiKitColor;
|
|
18
|
+
/** Key of `theme.radius` or any valid CSS value to set `border-radius`, `theme.defaultRadius` by default */
|
|
19
|
+
radius?: UiKitRadius;
|
|
20
|
+
/** Determines whether tabs should have inverted styles, `false` by default */
|
|
21
|
+
inverted?: boolean;
|
|
22
|
+
/** If set to `false`, `TabsPanel` content will be unmounted when the associated tab is not active, `true` by default */
|
|
23
|
+
keepMounted?: boolean;
|
|
24
|
+
id?: string;
|
|
25
|
+
}
|
|
26
|
+
type __VLS_Props = TabsRootProps;
|
|
27
|
+
type __VLS_ModelProps = {
|
|
28
|
+
modelValue?: string | null;
|
|
29
|
+
};
|
|
30
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
31
|
+
declare var __VLS_6: {};
|
|
32
|
+
type __VLS_Slots = {} & {
|
|
33
|
+
default?: (props: typeof __VLS_6) => any;
|
|
34
|
+
};
|
|
35
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
36
|
+
"update:modelValue": (value: string | null) => any;
|
|
37
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
38
|
+
"onUpdate:modelValue"?: ((value: string | null) => any) | undefined;
|
|
39
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
40
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
41
|
+
declare const _default: typeof __VLS_export;
|
|
42
|
+
export default _default;
|
|
43
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
44
|
+
new (): {
|
|
45
|
+
$slots: S;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { useStyleResolver } from "@nui/composals";
|
|
3
|
+
import { getRadius, getSafeId, getThemeColor } from "@nui/utils";
|
|
4
|
+
import Box from "../box.vue";
|
|
5
|
+
import { useProvideTabsContext } from "../tabs/lib";
|
|
6
|
+
import css from "./tabs.module.css";
|
|
7
|
+
const {
|
|
8
|
+
is,
|
|
9
|
+
id,
|
|
10
|
+
mod,
|
|
11
|
+
radius,
|
|
12
|
+
color,
|
|
13
|
+
placement = "left",
|
|
14
|
+
inverted,
|
|
15
|
+
orientation = "horizontal",
|
|
16
|
+
variant = "default",
|
|
17
|
+
defaultTab,
|
|
18
|
+
...rest
|
|
19
|
+
} = defineProps({
|
|
20
|
+
defaultTab: { type: String, required: false },
|
|
21
|
+
orientation: { type: String, required: false },
|
|
22
|
+
placement: { type: String, required: false },
|
|
23
|
+
variant: { type: String, required: false },
|
|
24
|
+
loop: { type: Boolean, required: false },
|
|
25
|
+
activateTabWithKeyboard: { type: Boolean, required: false },
|
|
26
|
+
allowTabDeactivation: { type: Boolean, required: false },
|
|
27
|
+
color: { type: null, required: false },
|
|
28
|
+
radius: { type: [String, Number], required: false },
|
|
29
|
+
inverted: { type: Boolean, required: false },
|
|
30
|
+
keepMounted: { type: Boolean, required: false },
|
|
31
|
+
id: { type: String, required: false }
|
|
32
|
+
});
|
|
33
|
+
const VALUE_ERROR = "component was rendered with invalid value or without value";
|
|
34
|
+
const uid = id ?? useId();
|
|
35
|
+
const active = defineModel({ type: [String, null], ...{ default: null } });
|
|
36
|
+
onMounted(() => {
|
|
37
|
+
if (active.value === null && defaultTab) {
|
|
38
|
+
active.value = defaultTab;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
const style = computed(() => useStyleResolver((theme) => ({
|
|
42
|
+
"--tabs-radius": getRadius(radius),
|
|
43
|
+
"--tabs-color": getThemeColor(color, theme)
|
|
44
|
+
})));
|
|
45
|
+
useProvideTabsContext({
|
|
46
|
+
...rest,
|
|
47
|
+
id: uid,
|
|
48
|
+
getTabId: getSafeId(`${uid}-tab`, `TabsTab ${VALUE_ERROR}`),
|
|
49
|
+
getPanelId: getSafeId(`${uid}-panel`, `TabsPanel ${VALUE_ERROR}`),
|
|
50
|
+
variant,
|
|
51
|
+
active,
|
|
52
|
+
inverted,
|
|
53
|
+
placement
|
|
54
|
+
});
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<template>
|
|
58
|
+
<Box
|
|
59
|
+
:is
|
|
60
|
+
:style
|
|
61
|
+
:mod='[mod, {
|
|
62
|
+
orientation,
|
|
63
|
+
inverted: orientation === "horizontal" && inverted,
|
|
64
|
+
placement: orientation === "vertical" && placement,
|
|
65
|
+
variant
|
|
66
|
+
}]'
|
|
67
|
+
:class='css.root'
|
|
68
|
+
>
|
|
69
|
+
<slot />
|
|
70
|
+
</Box>
|
|
71
|
+
</template>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { UiKitColor, UiKitRadius } from '@nui/types';
|
|
2
|
+
import type { BoxProps } from '../box.vue.js';
|
|
3
|
+
export interface TabsRootProps extends /* @vue-ignore */ BoxProps {
|
|
4
|
+
defaultTab?: string;
|
|
5
|
+
/** Tabs orientation, `'horizontal'` by default */
|
|
6
|
+
orientation?: 'vertical' | 'horizontal';
|
|
7
|
+
/** `TabsList` placement relative to `TabsPanel`, applicable only when `orientation="vertical"`, `'left'` by default */
|
|
8
|
+
placement?: 'left' | 'right';
|
|
9
|
+
variant?: 'default' | 'pills' | 'outline';
|
|
10
|
+
/** Determines whether arrow key presses should loop though items (first to last and last to first), `true` by default */
|
|
11
|
+
loop?: boolean;
|
|
12
|
+
/** Determines whether tab should be activated with arrow key press, `true` by default */
|
|
13
|
+
activateTabWithKeyboard?: boolean;
|
|
14
|
+
/** Determines whether tab can be deactivated, `false` by default */
|
|
15
|
+
allowTabDeactivation?: boolean;
|
|
16
|
+
/** Changes colors of `TabsTab` components when variant is `pills` or `default`, does nothing for other variants */
|
|
17
|
+
color?: UiKitColor;
|
|
18
|
+
/** Key of `theme.radius` or any valid CSS value to set `border-radius`, `theme.defaultRadius` by default */
|
|
19
|
+
radius?: UiKitRadius;
|
|
20
|
+
/** Determines whether tabs should have inverted styles, `false` by default */
|
|
21
|
+
inverted?: boolean;
|
|
22
|
+
/** If set to `false`, `TabsPanel` content will be unmounted when the associated tab is not active, `true` by default */
|
|
23
|
+
keepMounted?: boolean;
|
|
24
|
+
id?: string;
|
|
25
|
+
}
|
|
26
|
+
type __VLS_Props = TabsRootProps;
|
|
27
|
+
type __VLS_ModelProps = {
|
|
28
|
+
modelValue?: string | null;
|
|
29
|
+
};
|
|
30
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
31
|
+
declare var __VLS_6: {};
|
|
32
|
+
type __VLS_Slots = {} & {
|
|
33
|
+
default?: (props: typeof __VLS_6) => any;
|
|
34
|
+
};
|
|
35
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
36
|
+
"update:modelValue": (value: string | null) => any;
|
|
37
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
38
|
+
"onUpdate:modelValue"?: ((value: string | null) => any) | undefined;
|
|
39
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
40
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
41
|
+
declare const _default: typeof __VLS_export;
|
|
42
|
+
export default _default;
|
|
43
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
44
|
+
new (): {
|
|
45
|
+
$slots: S;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Mod } from '@nui/composals';
|
|
2
|
+
export interface TabsTabProps {
|
|
3
|
+
value: string;
|
|
4
|
+
mod?: Mod | Mod[];
|
|
5
|
+
}
|
|
6
|
+
declare var __VLS_9: {}, __VLS_11: {}, __VLS_13: {};
|
|
7
|
+
type __VLS_Slots = {} & {
|
|
8
|
+
leftSection?: (props: typeof __VLS_9) => any;
|
|
9
|
+
} & {
|
|
10
|
+
default?: (props: typeof __VLS_11) => any;
|
|
11
|
+
} & {
|
|
12
|
+
rightSection?: (props: typeof __VLS_13) => any;
|
|
13
|
+
};
|
|
14
|
+
declare const __VLS_base: import("vue").DefineComponent<TabsTabProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TabsTabProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
16
|
+
declare const _default: typeof __VLS_export;
|
|
17
|
+
export default _default;
|
|
18
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
19
|
+
new (): {
|
|
20
|
+
$slots: S;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
import UnstyledButton from "../button/unstyled-button.vue";
|
|
4
|
+
import { useTabsState } from "./lib";
|
|
5
|
+
import css from "./tabs.module.css";
|
|
6
|
+
const { value, mod } = defineProps({
|
|
7
|
+
value: { type: String, required: true },
|
|
8
|
+
mod: { type: [Object, Array], required: false }
|
|
9
|
+
});
|
|
10
|
+
const ctx = useTabsState();
|
|
11
|
+
const active = computed(() => value === ctx?.active.value);
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<template>
|
|
15
|
+
<UnstyledButton
|
|
16
|
+
:id='ctx?.getTabId(value)'
|
|
17
|
+
:mod='[mod, {
|
|
18
|
+
variant: ctx?.variant,
|
|
19
|
+
active,
|
|
20
|
+
orientation: ctx?.orientation,
|
|
21
|
+
inverted: ctx?.inverted,
|
|
22
|
+
placement: ctx?.orientation === "vertical" && ctx.placement
|
|
23
|
+
}]'
|
|
24
|
+
:class='css.tab'
|
|
25
|
+
role='tab'
|
|
26
|
+
:aria-selected='active'
|
|
27
|
+
:tabindex='$attrs?.tabIndex !== void 0 ? $attrs?.tabIndex : active || ctx?.active.value === null ? 0 : -1'
|
|
28
|
+
:aria-controls='ctx?.getPanelId(value)'
|
|
29
|
+
@click='ctx?.onUpdate(value)'
|
|
30
|
+
>
|
|
31
|
+
<span v-if='$slots.leftSection' :class='css.tabSection' data-position='left'>
|
|
32
|
+
<slot name='leftSection' />
|
|
33
|
+
</span>
|
|
34
|
+
<span v-if='$slots.default' :class='css.tabLabel'>
|
|
35
|
+
<slot />
|
|
36
|
+
</span>
|
|
37
|
+
<span v-if='$slots.rightSection' :class='css.tabSection' data-position='right'>
|
|
38
|
+
<slot name='rightSection' />
|
|
39
|
+
</span>
|
|
40
|
+
</UnstyledButton>
|
|
41
|
+
</template>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Mod } from '@nui/composals';
|
|
2
|
+
export interface TabsTabProps {
|
|
3
|
+
value: string;
|
|
4
|
+
mod?: Mod | Mod[];
|
|
5
|
+
}
|
|
6
|
+
declare var __VLS_9: {}, __VLS_11: {}, __VLS_13: {};
|
|
7
|
+
type __VLS_Slots = {} & {
|
|
8
|
+
leftSection?: (props: typeof __VLS_9) => any;
|
|
9
|
+
} & {
|
|
10
|
+
default?: (props: typeof __VLS_11) => any;
|
|
11
|
+
} & {
|
|
12
|
+
rightSection?: (props: typeof __VLS_13) => any;
|
|
13
|
+
};
|
|
14
|
+
declare const __VLS_base: import("vue").DefineComponent<TabsTabProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TabsTabProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
16
|
+
declare const _default: typeof __VLS_export;
|
|
17
|
+
export default _default;
|
|
18
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
19
|
+
new (): {
|
|
20
|
+
$slots: S;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.root{--tabs-radius:var(--radius-default);--tabs-color:var(--radius-default);@mixin light{--tab-border-color:var(--color-gray-3)}@mixin dark{--tab-border-color:var(--color-dark-4)}display:var(--tabs-display);flex-direction:var(--tabs-flex-direction);--tabs-list-direction:row;--tabs-panel-grow:unset;--tabs-display:grid;--tabs-flex-direction:row;--tabs-list-border-width:0;--tabs-list-border-size:0 0 var(--tabs-list-border-width) 0;--tabs-list-gap:unset;--tabs-list-line-bottom:0;--tabs-list-line-top:unset;--tabs-list-line-start:0;--tabs-list-line-end:0;--tab-radius:var(--tabs-radius) var(--tabs-radius) 0 0;--tab-border-width:0 0 var(--tabs-list-border-width) 0}.root[data-inverted]{--tabs-list-line-bottom:unset;--tabs-list-line-top:0;--tab-radius:0 0 var(--tabs-radius) var(--tabs-radius);--tab-border-width:var(--tabs-list-border-width) 0 0 0}.root[data-inverted] .list--default:before{bottom:unset;top:0}.root[data-orientation=vertical]{--tabs-list-line-start:unset;--tabs-list-line-end:0;--tabs-list-line-top:0;--tabs-list-line-bottom:0;--tabs-list-border-size:0 var(--tabs-list-border-width) 0 0;--tab-border-width:0 var(--tabs-list-border-width) 0 0;--tab-radius:var(--tabs-radius) 0 0 var(--tabs-radius);--tabs-list-direction:column;--tabs-panel-grow:1;--tabs-display:flex;@mixin rtl{--tabs-list-border-size:0 0 0 var(--tabs-list-border-width);--tab-border-width:0 0 0 var(--tabs-list-border-width);--tab-radius:0 var(--tabs-radius) var(--tabs-radius) 0}}.root[data-orientation=vertical][data-placement=right]{--tabs-flex-direction:row-reverse;--tabs-list-line-start:0;--tabs-list-line-end:unset;--tabs-list-border-size:0 0 0 var(--tabs-list-border-width);--tab-border-width:0 0 0 var(--tabs-list-border-width);--tab-radius:0 var(--tabs-radius) var(--tabs-radius) 0;@mixin rtl{--tabs-list-border-size:0 var(--tabs-list-border-width) 0 0;--tab-border-width:0 var(--tabs-list-border-width) 0 0;--tab-radius:var(--tabs-radius) 0 0 var(--tabs-radius)}}.root[data-variant=default]{--tabs-list-border-width:2px;@mixin light{--tab-hover-color:var(--color-gray-0)}@mixin dark{--tab-hover-color:var(--color-dark-6)}}.root[data-variant=outline]{--tabs-list-border-width:1px}.root[data-variant=pills]{--tabs-list-gap:calc(var(--spacing-sm)/2);@mixin light{--tab-hover-color:var(--color-gray-0)}@mixin dark{--tab-hover-color:var(--color-dark-6)}}.list{--tabs-justify:flex-start;display:flex;flex-direction:var(--tabs-list-direction);flex-wrap:wrap;gap:var(--tabs-list-gap);justify-content:var(--tabs-justify)}.list:where([data-grow]) .tab{flex:1}.panel{flex-grow:var(--tabs-panel-grow)}.panel[data-active=false]{display:none}.tab{align-items:center;display:flex;font-size:var(--font-size-sm);line-height:1;padding:var(--spacing-xs) var(--spacing-md);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;z-index:0}.tab:where(:disabled,[data-disabled]){cursor:not-allowed;opacity:.5}.tab:focus{z-index:1}.tabSection{align-items:center;display:flex;justify-content:center}.tabSection:where([data-position=left]:not(:only-child)){margin-inline-end:var(--spacing-xs)}.tabSection:where([data-position=right]:not(:only-child)){margin-inline-start:var(--spacing-xs)}.tabLabel{flex:1;text-align:center}.list[data-variant=default]{position:relative}.list[data-variant=default]:before{border:1px solid var(--tab-border-color);bottom:var(--tabs-list-line-bottom);content:"";inset-inline-end:var(--tabs-list-line-end);inset-inline-start:var(--tabs-list-line-start);position:absolute;top:var(--tabs-list-line-top)}.tab[data-variant=default]{background-color:transparent;border-color:transparent;border-radius:var(--tab-radius);border-style:solid;border-width:var(--tab-border-width)}.tab[data-variant=default]:where([data-active]){border-color:var(--tabs-color)}.tab[data-variant=default]{@mixin hover{background-color:var(--tab-hover-color);&:where(:not([data-active])){border-color:var(--tab-border-color)}}}.tab[data-variant=default]:disabled,.tab[data-variant=default][data-disabled]{@mixin hover{background-color:transparent}}.list[data-variant=outline]{position:relative}.list[data-variant=outline]:before{border-color:var(--tab-border-color);border-style:solid;border-width:var(--tabs-list-border-size);bottom:var(--tabs-list-line-bottom);content:"";inset-inline-end:var(--tabs-list-line-end);inset-inline-start:var(--tabs-list-line-start);position:absolute;top:var(--tabs-list-line-top)}.tab[data-variant=outline]{border-bottom:1px solid transparent;border-bottom-color:var(--tab-border-bottom-color);border-left:1px solid transparent;border-radius:var(--tab-radius);border-right:1px solid transparent;border-top:1px solid transparent;border-top-color:var(--tab-border-top-color);position:relative;--tab-border-bottom-color:transparent;--tab-border-top-color:transparent;--tab-border-inline-end-color:transparent;--tab-border-inline-start-color:transparent}.tab[data-variant=outline]:where([data-active]):before{background-color:var(--tab-border-color);bottom:var(--tab-before-bottom,rem(-1px));content:"";height:1px;left:var(--tab-before-left,rem(-1px));position:absolute;right:var(--tab-before-right,auto);top:var(--tab-before-top,auto);width:1px}.tab[data-variant=outline]:where([data-active]):after{background-color:var(--tab-border-color);bottom:var(--tab-after-bottom,rem(-1px));content:"";height:1px;left:var(--tab-after-left,auto);position:absolute;right:var(--tab-after-right,rem(-1px));top:var(--tab-after-top,auto);width:1px}.tab[data-variant=outline]:where([data-active]){border-bottom-color:var(--tab-border-bottom-color);border-inline-end-color:var(--tab-border-inline-end-color);border-inline-start-color:var(--tab-border-inline-start-color);border-top-color:var(--tab-border-top-color);--tab-border-top-color:var(--tab-border-color);--tab-border-inline-start-color:var(--tab-border-color);--tab-border-inline-end-color:var(--tab-border-color);--tab-border-bottom-color:var(--color-body)}.tab[data-variant=outline]:where([data-active])[data-inverted]{--tab-border-bottom-color:var(--tab-border-color);--tab-border-top-color:var(--color-body);--tab-before-bottom:auto;--tab-before-top:-1px;--tab-after-bottom:auto;--tab-after-top:-1px}.tab[data-variant=outline]:where([data-active])[data-orientation=vertical][data-placement=left]{--tab-border-inline-end-color:var(--color-body);--tab-border-inline-start-color:var(--tab-border-color);--tab-border-bottom-color:var(--tab-border-color);--tab-before-right:-1px;--tab-before-left:auto;--tab-before-bottom:auto;--tab-before-top:-1px;--tab-after-left:auto;--tab-after-right:-1px;@mixin rtl{--tab-before-right:auto;--tab-before-left:-1px;--tab-after-left:-1px;--tab-after-right:auto}}.tab[data-variant=outline]:where([data-active])[data-orientation=vertical][data-placement=right]{--tab-border-inline-start-color:var(--color-body);--tab-border-inline-end-color:var(--tab-border-color);--tab-border-bottom-color:var(--tab-border-color);--tab-before-left:-1px;--tab-before-right:auto;--tab-before-bottom:auto;--tab-before-top:-1px;--tab-after-right:auto;--tab-after-left:-1px;@mixin rtl{--tab-before-left:auto;--tab-before-right:-1px;--tab-after-right:-1px;--tab-after-left:auto}}.tab[data-variant=pills]{background-color:var(--tab-bg);border-radius:var(--tabs-radius);color:var(--tab-color);--tab-bg:transparent;--tab-color:inherit}.tab[data-variant=pills]:not([data-disabled]){@mixin hover{--tab-bg:var(--tab-hover-color)}}.tab[data-variant=pills][data-active][data-active]{--tab-bg:var(--tabs-color);--tab-color:var(--tabs-text-color,var(--color-white));@mixin hover{--tab-bg:var(--tabs-color)}}
|