diff --git a/docs/assets/styles/variables.css b/docs/assets/styles/variables.css
new file mode 100644
index 0000000..1154fed
--- /dev/null
+++ b/docs/assets/styles/variables.css
@@ -0,0 +1,66 @@
+.dark .v-select {
+ --vs-colors--lightest: rgba(60, 60, 60, 0.26);
+ --vs-colors--light: rgba(60, 60, 60, 0.5);
+ --vs-colors--dark: #333;
+ --vs-colors--darkest: rgba(0, 0, 0, 0.15);
+
+ /* Search Input */
+ --vs-search-input-color: inherit;
+ --vs-search-input-placeholder-color: inherit;
+
+ /* Font */
+ --vs-font-size: 1rem;
+ --vs-line-height: 1.4;
+
+ /* Disabled State */
+ --vs-state-disabled-bg: rgb(248, 248, 248);
+ --vs-state-disabled-color: var(--vs-colors--light);
+ --vs-state-disabled-controls-color: var(--vs-colors--light);
+ --vs-state-disabled-cursor: not-allowed;
+
+ /* Borders */
+ --vs-border-color: #24292e;
+ --vs-border-width: 1px;
+ --vs-border-style: solid;
+ --vs-border-radius: 4px;
+
+ /* Actions: house the component controls */
+ --vs-actions-padding: 4px 6px 0 3px;
+
+ /* Component Controls: Clear, Open Indicator */
+ --vs-controls-color: #c9c2c2;
+ --vs-controls-size: 1;
+ --vs-controls--deselect-text-shadow: 0 1px 0 #fff;
+
+ /* Selected */
+ --vs-selected-bg: #f0f0f0;
+ --vs-selected-color: #fff;
+ --vs-selected-border-color: var(--vs-border-color);
+ --vs-selected-border-style: var(--vs-border-style);
+ --vs-selected-border-width: var(--vs-border-width);
+
+ /* Dropdown */
+ --vs-dropdown-bg: #343434;
+ --vs-dropdown-color: inherit;
+ --vs-dropdown-z-index: 1000;
+ --vs-dropdown-min-width: 160px;
+ --vs-dropdown-max-height: 350px;
+ --vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);
+
+ /* Options */
+ --vs-dropdown-option-bg: #000;
+ --vs-dropdown-option-color: #fff;
+ --vs-dropdown-option-padding: 3px 20px;
+
+ /* Active State */
+ --vs-dropdown-option--active-bg: #5897fb;
+ --vs-dropdown-option--active-color: #fff;
+
+ /* Deselect State */
+ --vs-dropdown-option--deselect-bg: #fb5858;
+ --vs-dropdown-option--deselect-color: #fff;
+
+ /* Transitions */
+ --vs-transition-timing-function: cubic-bezier(1, -0.115, 0.975, 0.855);
+ --vs-transition-duration: 150ms;
+}
diff --git a/docs/components/ApplicationHeader.vue b/docs/components/ApplicationHeader.vue
index 499f11a..b988989 100644
--- a/docs/components/ApplicationHeader.vue
+++ b/docs/components/ApplicationHeader.vue
@@ -72,7 +72,7 @@ const isScrolled = computed(() => y.value !== 0)
diff --git a/docs/components/Hero.vue b/docs/components/Hero.vue
index 61e6058..54927a3 100644
--- a/docs/components/Hero.vue
+++ b/docs/components/Hero.vue
@@ -2,6 +2,11 @@
import Button from '~/components/Button.vue'
import TimelineSvg from '~/components/TimelineSvg.vue'
import VueSelect from '~/components/VueSelect.vue'
+import {
+ SparklesIcon,
+ ArrowDownTrayIcon,
+ RocketLaunchIcon,
+} from '@heroicons/vue/20/solid'
@@ -15,6 +20,7 @@ import VueSelect from '~/components/VueSelect.vue'
-
-
-
+
+
+
+
+ 960k installs/month
+
+
+
+ 4.5k stars
+
+
+
+ Vue 3
+
+
+
@@ -94,3 +119,10 @@ import VueSelect from '~/components/VueSelect.vue'
+
+
diff --git a/docs/components/content/Lead.vue b/docs/components/content/Lead.vue
index 8937810..d549af3 100644
--- a/docs/components/content/Lead.vue
+++ b/docs/components/content/Lead.vue
@@ -1,3 +1,3 @@
-
+
diff --git a/docs/components/content/QuickLink.vue b/docs/components/content/QuickLink.vue
index 4159ec6..6ee62ff 100644
--- a/docs/components/content/QuickLink.vue
+++ b/docs/components/content/QuickLink.vue
@@ -14,15 +14,15 @@ defineProps<{
class="absolute -inset-px rounded-xl border-2 border-transparent opacity-0 [background:linear-gradient(var(--quick-links-hover-bg,theme(colors.sky.50)),var(--quick-links-hover-bg,theme(colors.sky.50)))_padding-box,linear-gradient(to_top,theme(colors.indigo.400),theme(colors.cyan.400),theme(colors.sky.500))_border-box] group-hover:opacity-100 dark:[--quick-links-hover-bg:theme(colors.slate.800)]"
/>
diff --git a/docs/content/guide/install.md b/docs/content/guide/install.md
index f8eaeb7..8003315 100644
--- a/docs/content/guide/install.md
+++ b/docs/content/guide/install.md
@@ -27,7 +27,6 @@ app.component('vSelect', vSelect);
### Local Registration
```vue
-
-
+
+
```
Then register the component in your javascript:
@@ -79,7 +80,9 @@ url: dJjzeP
## Vue Compatibility
-| Vue | Vue Select | Notes |
-|------|------------|----------------------------------------------------------------------------|
-| ^2.3 | 3.x | The 3.x branch of Vue Select supports Vue 2.3 and above. View the v3 docs. |
-| ^3.0 | 4.0-beta | The latest version of Vue Select for Vue 3 applications. |
+You're currently reading the docs for version 4 of Vue Select, which is designed for Vue 3.
+
+| Vue | Vue Select | Docs |
+|------|------------|---------------------------|
+| ^2.3 | 3.0 | https://v3.vue-select.org |
+| ^3.0 | 4.0 | https://vue-select.org |
diff --git a/docs/content/index.md b/docs/content/index.md
index 2b33b1d..dc361ce 100644
--- a/docs/content/index.md
+++ b/docs/content/index.md
@@ -7,34 +7,56 @@ description: Everything you wish the HTML select element could do, shipped as a
---
:::lead
-Everything you wish the HTML `` element could do, wrapped up into a lightweight, extensible Vue component.
+Vue Select is a feature rich combobox component. You might know it as a dropdown or
+typeahead select. They're a staple on the web, and they're notoriously tough to get right!
:::
+Vue Select provides a default template that fits most use cases. The component is designed
+to be as lightweight as possible, while maintaining high standards for accessibility, developer
+experience, and customization.
+
:::quick-links
-:::quick-link{title="Installation" icon="installation" href="/"}
-Step-by-step guides to setting up your system and installing the library.
+:::quick-link{title="Installation" href="/guide/install"}
+Step-by-step instructions to install Vue Select in your project. Couple lines and you're done!
+
+#icon
+
+
+
:::
-:::quick-link{title="Architecture guide" icon="presets" href="/"}
-Learn how the internals work and contribute.
-:::
+:::quick-link{title="Options and Selections" href="/"}
+You'll need to register some options so your users can select them.
-:::quick-link{title="Plugins" icon="plugins" href="/"}
-Extend the library with third-party plugins or write your own.
-:::
-
-:::quick-link{title="API reference" icon="theming" href="/"}
-Learn to easily customize and modify your app's visual design to fit your brand.
-:::
+#icon
+
+
+
:::
+:::quick-link{title="Customizing" href="/"}
+Vue Select is plug-and-play by design, but you can always customize the look and feel.
-Vue Select is a feature rich select/dropdown/typeahead component. It provides a default
-template that fits most use cases for a filterable select dropdown. The component is designed to be as
-lightweight as possible, while maintaining high standards for accessibility,
-developer experience, and customization.
+#icon
+
+
+
+:::
+
+:::quick-link{title="Premium Resources" icon="theming" href="/"}
+Pre-built Vue Select instances with custom themes and features. Infinite scroll, remote option
+loading and more.
+
+#icon
+
+
+
+
+:::
+
+:::
## Features
diff --git a/docs/nuxt.config.ts b/docs/nuxt.config.ts
index 5a9f4c5..3cb8081 100644
--- a/docs/nuxt.config.ts
+++ b/docs/nuxt.config.ts
@@ -1,7 +1,7 @@
import { resolve } from 'path'
// https://v3.nuxtjs.org/api/configuration/nuxt.config
export default defineNuxtConfig({
- css: ['~/assets/styles/fonts.css'],
+ css: ['~/assets/styles/fonts.css', '~/assets/styles/variables.css'],
modules: ['@nuxtjs/tailwindcss', '@nuxtjs/color-mode', '@nuxt/content'],
diff --git a/docs/package.json b/docs/package.json
index 84addfc..dd39688 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -18,6 +18,7 @@
"dependencies": {
"@headlessui/vue": "^1.7.4",
"@heroicons/vue": "^2.0.13",
- "@vueuse/core": "^9.6.0"
+ "@vueuse/core": "^9.6.0",
+ "npm": "^9.2.0"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 90c548f..839a0ca 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -71,6 +71,7 @@ importers:
'@nuxtjs/tailwindcss': ^6.1.3
'@tailwindcss/typography': ^0.5.8
'@vueuse/core': ^9.6.0
+ npm: ^9.2.0
nuxt: 3.0.0
prettier: ^2.8.1
prettier-plugin-tailwindcss: ^0.2.0
@@ -78,6 +79,7 @@ importers:
'@headlessui/vue': 1.7.4
'@heroicons/vue': 2.0.13
'@vueuse/core': 9.6.0
+ npm: 9.2.0
devDependencies:
'@nuxt/content': 2.2.2
'@nuxtjs/color-mode': 3.2.0
@@ -1676,7 +1678,7 @@ packages:
vite: ^3.0.0
vue: ^3.2.25
dependencies:
- vite: 3.2.5_@types+node@18.11.11
+ vite: 3.2.5
vue: 3.2.45
dev: true
@@ -6727,6 +6729,81 @@ packages:
- which
- write-file-atomic
+ /npm/9.2.0:
+ resolution: {integrity: sha512-oypVdaWGHDuV79RXLvp+B9gh6gDyAmoHKrQ0/JBYTWWx5D8/+AAxFdZC84fSIiyDdyW4qfrSyYGKhekxDOaMXQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ hasBin: true
+ dev: false
+ bundledDependencies:
+ - '@isaacs/string-locale-compare'
+ - '@npmcli/arborist'
+ - '@npmcli/config'
+ - '@npmcli/map-workspaces'
+ - '@npmcli/package-json'
+ - '@npmcli/run-script'
+ - abbrev
+ - archy
+ - cacache
+ - chalk
+ - ci-info
+ - cli-columns
+ - cli-table3
+ - columnify
+ - fastest-levenshtein
+ - fs-minipass
+ - glob
+ - graceful-fs
+ - hosted-git-info
+ - ini
+ - init-package-json
+ - is-cidr
+ - json-parse-even-better-errors
+ - libnpmaccess
+ - libnpmdiff
+ - libnpmexec
+ - libnpmfund
+ - libnpmhook
+ - libnpmorg
+ - libnpmpack
+ - libnpmpublish
+ - libnpmsearch
+ - libnpmteam
+ - libnpmversion
+ - make-fetch-happen
+ - minimatch
+ - minipass
+ - minipass-pipeline
+ - mkdirp
+ - ms
+ - node-gyp
+ - nopt
+ - npm-audit-report
+ - npm-install-checks
+ - npm-package-arg
+ - npm-pick-manifest
+ - npm-profile
+ - npm-registry-fetch
+ - npm-user-validate
+ - npmlog
+ - p-map
+ - pacote
+ - parse-conflict-json
+ - proc-log
+ - qrcode-terminal
+ - read
+ - read-package-json
+ - read-package-json-fast
+ - rimraf
+ - semver
+ - ssri
+ - tar
+ - text-table
+ - tiny-relative-date
+ - treeverse
+ - validate-npm-package-name
+ - which
+ - write-file-atomic
+
/npmlog/5.0.1:
resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
dependencies: