diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 720535e1..00000000
--- a/.editorconfig
+++ /dev/null
@@ -1,4 +0,0 @@
-[*]
-insert_final_newline = true
-indent_size = 2
-indent_style = space
diff --git a/.gitignore b/.gitignore
index eded9b91..6c745b5b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,10 @@
node_modules
.DS_Store
-.idea
-index.js
-index.mjs
-test/public/bundle.js
-!test/src/index.js
+/test/public/tests.js
+/test/public/tests.css
+/test/public/assets
+/spec/page/public/build
+/.svelte-kit
+/package
+/src/lib/no-styles
+.env
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..665f45d4
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,2 @@
+/test/src/index.js
+*.md
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 00000000..14bbceee
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,17 @@
+{
+ "useTabs": false,
+ "singleQuote": true,
+ "tabWidth": 4,
+ "printWidth": 120,
+ "bracketSameLine": true,
+ "overrides": [
+ {
+ "files": ["*.svelte"],
+ "options": {
+ "singleQuote": true
+ }
+ }
+ ],
+ "svelteSortOrder": "scripts-markup-styles",
+ "svelteBracketNewLine": false
+}
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 2ef58fc2..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: node_js
-node_js:
- - "stable"
-
-env:
- global:
- - BUILD_TIMEOUT=10000
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b875739a..79e94859 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,405 @@
# svelte-select changelog
+## 5.8.3
+
+* #651 Fixed: unknown extension .svelte (thanks to @happysalada)
+
+## 5.8.2
+
+* #658 Fixed ARIA + vite-plugin-svelte warnings (thanks to @stephenlrandall)
+
+## 5.8.0
+
+* #626 added clearFilterTextOnBlur prop (thanks to @mBoegvald)
+* #644 Fixed input focus issue (thanks to @524c)
+
+## 5.7.0
+
+* #617 added custom group title border variable support (thanks to @lipe-dev)
+* #610 resolved ARIA warnings by defining a role on interactive divs (thanks to @josdejong)
+
+## 5.6.2
+
+* #525 set clear button to `type="button"` (thanks to @CanRau)
+
+## 5.6.1
+
+* #525 set clear button to `type="button"` (thanks to @CanRau)
+
+
+## 5.6.0
+
+* #579 added named slot `input-hidden` (thanks to @Ennoriel)
+
+## 5.5.3
+
+* #578 `required` `tabindex` fix (thanks to @Ennoriel)
+
+## 5.5.2
+
+* #570 `on:blur` bug fix (thanks to @cyaris)
+
+## 5.5.1
+
+* npm will be the death of me...
+
+## 5.5.0
+
+* #564 added named slots `list-prepend` and `list-append` (thanks to @sawyerclick)
+
+## 5.4.0
+
+* #561 added some needed CSS custom properties, `--max-height`,`--value-container-overflow`,`--value-container-padding`, `--indicators-position`, `--indicators-top`, `--indicators-right`, `--indicators-bottom` (thanks to @Edward-Heales)
+
+## 5.3.1
+
+* Reverted a dep bump for `@sveltejs/package` - has a breaking change for non-kit setups. Will bake into v6 instead.
+
+## 5.3.0
+
+* Added prop `closeListOnChange`
+* Fixes for #548, #549, #551 and #554
+
+## 5.2.1
+
+* #544 Fix for `--border-radius` and `--border-radius-focused` fallbacks (thanks to @schibrikov)
+* Added example for style props
+
+## 5.2.0
+
+* #541 Added CSS custom property `--border-radius-focused` (thanks to @schibrikov)
+* Added example for create item when `multiple` is `true`
+
+## 5.1.4
+
+* #534 fix for Select's TypeScript declaration file (thanks to @hughlaw)
+* #535 fix for icons touch events (thanks to @miXwui)
+
+## 5.1.3
+
+* #523 fix for hoverItemIndex becoming -1 (thanks to @geminway92)
+
+## 5.1.2
+
+* #520 fix for autoUpdate and floating UI when list is above select (thanks to @aureleoules)
+
+## 5.1.1
+
+* `.list-item` and safari fix for tailwind (thanks to @sawyerclick)
+
+## 5.1.0
+
+* #513 `on:clear` event now includes item data for single selects too (thanks to @libklein)
+* `floatingConfig` default now includes `autoUpdate: true`
+* Added `--item-transition`
+
+## 5.0.2
+
+* #509 Fix null error when using loadOptions and value (thanks to @dlebech)
+
+
+## 5.0.1
+
+* #459 Firefox pointerdown fix (thanks to @mikekok)
+
+## 5.0.0
+
+* Added hoverItemIndex and hoverItem event
+* Default font-size set to `16px`, iOS will zoom the UI if set smaller (thanks to @rchrdnsh)
+* Added `--border-hover`, `--border-focused`, `--item-height`, `--item-line-height` and `--multi-item-color`
+* Removed `--borderFocusColor` and `--borderHoverColor`
+* Remove `getSelectionLabel` use slots instead
+* Added `floatingConfig`
+* Removed `listPlacement`
+* Removed `computePlacement`
+* Removed CSS prop `--input-font-size`
+* Removed CSS prop `--multi-item-border`
+* Removed CSS prop `--multi-label-margin`
+* Added CSS props `--loading--margin , --loading-color, --loading-height, --loading-width`
+* Added CSS prop `--chevron-border`
+* Added CSS prop `--font-size`
+* Added CSS prop `--multi-item-gap`
+* Added named slot `multi-clear-icon`
+* Added named slot `list`
+* Added named slot `item`
+* Removed Virtual list
+* noOptionsMessage removed
+* optionIdentifier -> itemId
+* getOptionLabel removed
+* getGroupHeaderLabel removed
+* itemCreated event removed
+* labelIdentifier -> label
+* creatable removed, use named slots and bake in your create own logic
+* isGroupHeaderSelectable -> groupHeaderSelectable
+* isSearchable -> searchable
+* isFocused -> focused
+* isCreatable -> creatable
+* isClearable -> clearable
+* isWaiting -> loading
+* Added named slot `prepend`
+* Added named slot `chevron`
+* Added named slot `clear-icon`
+* Added named slot `loading-icon`
+* Removed iconProps
+* Removed ClearIcon component
+* Removed ChevronIcon component
+* Removed MultiSelection component
+* Added named slot `selection`
+* Removed Selection component
+* isMulti -> multiple
+* Other improvements (see docs)
+* select-container -> svelte-select
+* added justValue
+* Placeholder default change from 'Select...' to 'Please select'
+* added blur and focus events
+* removed isOutOfViewport and clickOutside
+* new debounce method
+* filterMethod changed to filter
+* added support for svelte-tiny-virtual-list
+* removed virtual-list class and css props
+* loadOptionsInterval -> debounceWait
+* selectedValue removed
+* MultiSelection removed
+* added postcss to example, tests
+* tailwind css option
+* breaking: containerClasses -> class
+* listGroupTitle -> list-group-title
+* listContainer -> list
+* selectContainer and other CSS class names updated, selectContainer -> svelte-select for example
+* LoadingIcon prop added
+* CSS props updates. Added .icons and removed some css vars
+* Removed logic to show chevron if isSearchable is false
+* indicator class renamed to chevron
+* showIndicator renamed showChevron
+* indicatorSvg removed, use ChevronIcon going forward
+* removed playwright and puppeteer, tests now just run in the browser with sirv
+* debounce method is now exported as a prop
+* Convert repo to use SvelteKit
+* Change licence from LIL to ISC
+
+# 4.4.7
+
+Temp fix for SvelteKit and scrollbar issues - thanks to @sethvincent
+
+# 4.4.6
+
+Bug fix for isOutOfViewport - thanks to @alexkuzmin
+
+## 4.4.5
+
+* NPM blunder (sorry!)
+
+## 4.4.4
+
+* Bug fix for #346 out of viewport - thanks to @nickyrferry
+
+## 4.4.3
+
+* listOffset was missing from typings - thanks to @blake-regalia
+
+## 4.4.2
+
+* Bug fix for #309 - thanks to @ABarnob
+
+## 4.4.1
+
+* Added missing prop 'placeholderAlwaysShow' to TypeScript declaration file (#305) - thanks to @paolotiu
+
+## 4.4.0
+
+* Added support for non-selectable items - thanks to @mpdaugherty
+
+## 4.3.1
+
+* TextFilter bug fix (#291)
+
+## 4.3.0
+
+* Added A11y support (#286) - thanks to @fedoskina
+* Added id prop
+
+## 4.2.7
+
+* Bug fixes for #278, #279, #280, #285 - thanks to @davidfou
+
+## 4.2.6
+
+* TypeScript declaration in package.json (#277) - thanks to @davidfou
+
+## 4.2.5
+
+* multiple on:select fix (#276)
+
+## 4.2.4
+
+* CreateGroupHeaderItem fix (#275)
+
+## 4.2.3
+
+* Filtering refactor (#274)
+
+## 4.2.2
+
+* Bug fix for filtering items (#274)
+
+## 4.2.1
+
+* Bug fix to remove focus when an external field is focused programmatically - thanks to @davidfou
+
+## 4.2.0
+
+* Added listOffset prop
+* Added CSS custom props '--listRight' and '--listLeft'
+
+## 4.1.0
+
+* Added labelIdentifier prop - thanks to @martgnz
+
+## 4.0.0
+
+* selectedValue deprecated please use value going forward
+* Lots of bug fixes
+* Internals reworked and (hopefully) improved
+* File size reduced
+
+## 3.17.0
+
+* Added ClearIcon prop
+* Added docs for filteredItems
+* loadOptions res now checked for cancelled value
+
+## 3.16.1
+
+* Bug fix for loadOptions and list causing blur to not close list - thanks to @Ginfone for reporting
+
+## 3.16.0
+
+* New CSS custom props '--placeholderOpacity' and 'disabledPlaceholderOpacity' added - thanks to @tiaanduplessis
+
+## 3.15.0
+
+* Added new prop multiFullItemClearable for easier clearable items when multiple is true - thanks to @stephenlrandall
+
+## 3.14.3
+
+* Regression fix for 3.14.2 clearing selectedValue if not found in items - thanks to @frederikhors for reporting
+
+## 3.14.2
+
+* Fix so selectedValue updates on items change - thanks to @stephenlrandall
+
+## 3.14.1
+
+* Fix input attributes so the defaults can be overwritten
+
+## 3.14.0
+
+* Added event 'loaded' when loadOptions resolves - thanks to @singingwolfboy
+
+## 3.13.0
+
+* Added TypeScript declaration file - thanks to @singingwolfboy
+
+## 3.12.0
+
+* new event 'error' is dispatched on caught errors
+* loadOptions now catches errors
+* new CSS custom prop '--errorBackground' added
+* CSS fix for long multi items wrapping text
+
+## 3.11.1
+
+* Fix to prevent multiple updates on focus events - thanks to @stephenlrandall
+
+## 3.11.0
+
+* README reformatted
+* iconProps added for Icon component - thanks to @stephenlrandall
+
+## 3.10.1
+
+* Fix for noOptionsMessage not updating when changed - thanks to @frederikhors
+
+## 3.10.0
+
+* Added indicatorSvg prop - thanks to @oharsta (again!)
+
+## 3.9.0
+
+* Added showIndicator prop - thanks to @oharsta
+
+## 3.8.1
+
+* Fix for containerClasses repeating
+
+## 3.8.0
+
+* Added containerClasses prop - thanks to @0xCAP
+
+## 3.7.2
+
+* Fix for loadOptions with items opening list by default
+
+## 3.7.1
+
+* Fix for groupHeader selection on enter - thanks to @KiwiJuicer
+
+## 3.7.0
+
+* Added new CSS vars for groupTitleFontWeight, groupItemPaddingLeft and itemColor - thanks to @john-trieu-nguyen
+
+## 3.6.2
+
+* CSS vars padding default fix
+
+## 3.6.1
+
+* CSS vars typo fix
+
+## 3.6.0
+
+* Added CSS vars for input padding and left
+
+## 3.5.0
+
+* Added Icon and showChevron props
+
+## 3.4.0
+
+* Bumped version of Svelte to 3.19.1 and fixed up some tests
+
+## 3.3.7
+
+* Virtual list height fix
+
+## 3.3.6
+
+* Thanks for @jpz for this update... Fix input blurring issue when within shadow DOM
+
+## 3.3.5
+
+* MS Edge fix: Replaced object literal spreading
+
+## 3.3.4
+
+* Fix for fix for a fix for IE11 disable input fix ๐ฟ
+
+## 3.3.3
+
+* Fix for a fix for IE11 disable input fix (don't code tired!)
+
+## 3.3.2
+
+* IE11 disable input fix
+
+## 3.3.0
+
+* Thanks to @jackc for this update... Added itemFilter method
+
+## 3.2.0
+
+* List will now close if active item gets selected
+
## 3.1.2
* Thanks to @dimfeld for these updates...
@@ -95,7 +495,7 @@
## 1.5.5
-* isMulti on:select bug fix
+* multiple on:select bug fix
## 1.5.4
@@ -139,7 +539,7 @@
* Updated README
* Added Async (loadOptions)
-* Added noOptionsMessage
+* Added noOptionsMessage
* Bug fixes
* Updated examples
diff --git a/LICENSE b/LICENSE
index 22732800..40a17d9d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -6,4 +6,4 @@ This license, or a link to its text, must be included with all copies of the sof
Any modification to the software submitted to the authors may be incorporated into the software under the terms of this license.
-The software is provided "as is", without warranty of any kind, including but not limited to the warranties of title, fitness, merchantability and non-infringement. The authors have no obligation to provide support or updates for the software, and may not be held liable for any damages, claims or other liability arising from its use.
\ No newline at end of file
+The software is provided "as is", without warranty of any kind, including but not limited to the warranties of title, fitness, merchantability and non-infringement. The authors have no obligation to provide support or updates for the software, and may not be held liable for any damages, claims or other liability arising from its use.
diff --git a/MIGRATION_GUIDE.md b/MIGRATION_GUIDE.md
new file mode 100644
index 00000000..b2657463
--- /dev/null
+++ b/MIGRATION_GUIDE.md
@@ -0,0 +1,98 @@
+## Migrating for v4 to v5
+
+v5 is a major release that that includes some โ ๏ธ BREAKING CHANGES โ ๏ธ
+
+### Event changes:
+Updated in `5.0.0-beta.39`
+
+`on:change` event fires when the user selects an option.
+
+`on:input` event fires when the value has been changed.
+
+### Removed
+Removed `getOptionLabel`, `getGroupHeaderLabel` and `noOptionsMessage`.
+
+Removed `Selection`, `ChevronIcon`, `ClearIcon`, `LoadingIcon`, `Icon`, `List` and `Item` components. Please use named slots instead:
+
+```html
+
+```
+
+### `isVirtualList` Removed
+You can use named slots to achieve the same results, with more flexibility.
+Example at [svelte-select-examples](https://svelte-select-examples.vercel.app/examples/advanced/virtual-list)
+
+### `isCreatable` Removed
+Removed `isCreatable` prop and `itemCreated` event, named slots can be used to build your own create method.
+Example at [svelte-select-examples](https://svelte-select-examples.vercel.app/examples/advanced/create-item)
+
+### CSS Camel to kebab:
+
+CSS classes and custom properties changed (only depreciated, no need to update if upgrading from v4) from camel to kebab case. For example `selectedItem` โ `selected-item` and `--borderRadius` โ `--border-radius`
+
+### Redundant CSS custom properties:
+
+The following CSS custom properties were removed in v5.
+
+```css
+--clearSelectColor
+--clearSelectFocusColor
+--clearSelectHoverColor
+--groupTitleTextTransform
+--indicatorColor
+--indicatorFill
+--indicatorHeight
+--listLeft
+--listRight
+--multiClearBG
+--multiClearFill
+--multiClearHeight
+--multiClearHoverBG
+--multiClearHoverFill
+--multiClearPadding
+--multiClearRadius
+--multiClearTextAlign
+--multiClearTop
+--multiClearWidth
+--multiItemActiveBG
+--multiItemActiveColor
+--spinnerLeft
+--spinnerRight
+--virtualListHeight
+```
+
+
+### Other CSS class name changes:
+`selectContainer` โ `svelte-select`
+`listContainer` โ `svelte-select-list`
+`indicator` โ `chevron`
+`--clear-icon-colour` โ `--clear-icon-color`
+`virtual-list` removed
+
+
+### Prop changes:
+`containerClasses` โ `class`
+`MultiSelection` โ `Multi`
+`indicatorSvg` โ `ChevronIcon`
+`showIndicator` โ `showChevron`
+`loadOptionsInterval` โ `debounceWait`
+`isMulti` โ `multiple`
+`isWaiting` โ `loading`
+`isClearable` โ `clearable`
+`isFocused` โ `focused`
+`isGroupHeaderSelectable` โ `groupHeaderSelectable`
+`isDisabled` โ `disabled`
+`isSearchable` โ `searchable`
+`labelIdentifier` -> `label`
+`optionIdentifier` -> `itemId`
+`selectedValue` removed (was already deprecated in v4 in favour of `value`)
diff --git a/README.md b/README.md
index 09a83b59..a439a4ca 100644
--- a/README.md
+++ b/README.md
@@ -1,164 +1,325 @@
-# svelte-select
+
+