+
diff --git a/packages/studiocms_ui/src/components/index.ts b/packages/studiocms_ui/src/components/index.ts
index cc28e543eb..46bf1c7e1a 100644
--- a/packages/studiocms_ui/src/components/index.ts
+++ b/packages/studiocms_ui/src/components/index.ts
@@ -1,24 +1,25 @@
-export { default as Button } from './Button.astro';
-export { default as Divider } from './Divider.astro';
-export { default as Input } from './Input.astro';
-export { default as Row } from './Row.astro';
-export { default as Center } from './Center.astro';
-export { default as Textarea } from './Textarea.astro';
-export { default as Checkbox } from './Checkbox.astro';
-export { default as Toggle } from './Toggle.astro';
-export { default as RadioGroup } from './RadioGroup.astro';
-export { default as Toaster } from './Toast/Toaster.astro';
-export { default as Card } from './Card.astro';
-export { default as Modal } from './Modal/Modal.astro';
-export { default as Select } from './Select.astro';
-export { default as Dropdown } from './Dropdown/Dropdown.astro';
-export { default as User } from './User.astro';
+export { default as Button } from "./Button.astro";
+export { default as Divider } from "./Divider.astro";
+export { default as Input } from "./Input.astro";
+export { default as Row } from "./Row.astro";
+export { default as Center } from "./Center.astro";
+export { default as Textarea } from "./Textarea.astro";
+export { default as Checkbox } from "./Checkbox.astro";
+export { default as Toggle } from "./Toggle.astro";
+export { default as RadioGroup } from "./RadioGroup.astro";
+export { default as Toaster } from "./Toast/Toaster.astro";
+export { default as Card } from "./Card.astro";
+export { default as Modal } from "./Modal/Modal.astro";
+export { default as Select } from "./Select.astro";
+export { default as SearchSelect } from "./SearchSelect.astro";
+export { default as Dropdown } from "./Dropdown/Dropdown.astro";
+export { default as User } from "./User.astro";
export { default as ThemeToggle } from './ThemeToggle.astro';
-export { default as Sidebar } from './Sidebar/Single.astro';
-export { default as DoubleSidebar } from './Sidebar/Double.astro';
-export { SingleSidebarHelper, DoubleSidebarHelper } from './Sidebar/helpers';
+export { default as Sidebar } from "./Sidebar/Single.astro";
+export { default as DoubleSidebar } from "./Sidebar/Double.astro";
+export { SingleSidebarHelper, DoubleSidebarHelper } from "./Sidebar/helpers";
-export { toast } from './Toast/toast';
-export { ModalHelper } from './Modal/modal';
-export { DropdownHelper } from './Dropdown/dropdown';
+export { toast } from "./Toast/toast";
+export { ModalHelper } from "./Modal/modal";
+export { DropdownHelper } from "./Dropdown/dropdown";
diff --git a/packages/studiocms_ui/src/css/global.css b/packages/studiocms_ui/src/css/global.css
index a3ab334447..db1e321a53 100644
--- a/packages/studiocms_ui/src/css/global.css
+++ b/packages/studiocms_ui/src/css/global.css
@@ -1,4 +1,2 @@
@import url("./colors.css");
-@import url("./sizes.css");
@import url("./resets.css");
-@import url("./spacings.css");
diff --git a/packages/studiocms_ui/src/css/sizes.css b/packages/studiocms_ui/src/css/sizes.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/packages/studiocms_ui/src/css/spacings.css b/packages/studiocms_ui/src/css/spacings.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/playgrounds/ui/src/components/SearchSelectTests.astro b/playgrounds/ui/src/components/SearchSelectTests.astro
new file mode 100644
index 0000000000..dfa2261809
--- /dev/null
+++ b/playgrounds/ui/src/components/SearchSelectTests.astro
@@ -0,0 +1,50 @@
+---
+import { Row, SearchSelect } from '@studiocms/ui/components';
+---
+
+
+
+
+
+
+
diff --git a/playgrounds/ui/src/pages/index.astro b/playgrounds/ui/src/pages/index.astro
index 620dfa6bb2..54d8fb163f 100644
--- a/playgrounds/ui/src/pages/index.astro
+++ b/playgrounds/ui/src/pages/index.astro
@@ -9,6 +9,7 @@ import CheckboxTests from '@/components/CheckboxTests.astro';
import DropdownTests from '@/components/DropdownTests.astro';
import ModalTests from '@/components/ModalTests.astro';
import RadioGroupTests from '@/components/RadioGroupTests.astro';
+import SearchSelectTests from '@/components/SearchSelectTests.astro';
import SelectTests from '@/components/SelectTests.astro';
import ToastTests from '@/components/ToastTests.astro';
import ToggleTests from '@/components/ToggleTests.astro';
@@ -100,6 +101,8 @@ import ButtonTests from '../components/ButtonTests.astro';
Select
+
Search Select
+
Dropdown
User
@@ -178,4 +181,4 @@ import ButtonTests from '../components/ButtonTests.astro';
sunIcon.classList.remove('hidden');
}
});
-
\ No newline at end of file
+
diff --git a/www/docs/src/content/docs/customizing/studiocms-ui/components/select-searchable.mdx b/www/docs/src/content/docs/customizing/studiocms-ui/components/select-searchable.mdx
new file mode 100644
index 0000000000..4b4542c502
--- /dev/null
+++ b/www/docs/src/content/docs/customizing/studiocms-ui/components/select-searchable.mdx
@@ -0,0 +1,159 @@
+---
+title: Select (Searchable)
+---
+
+import { Tabs, TabItem } from '@astrojs/starlight/components';
+import PreviewCard from '~/components/PreviewCard.astro';
+import { SearchSelect } from '@studiocms/ui/components';
+
+A variation of the `` element that supports arrow keys and filtering.
+
+**Can be used as a drop-in replacement.**
+
+## Usage
+
+
+
+
+
+
+
+
+ ```astro
+ ---
+ import { SearchSelect } from '@studiocms/ui/components';
+ ---
+
+
+ ```
+
+
+
+### Default Value
+
+You can set a default value using the `defaultValue` prop:
+
+
+
+
+
+
+
+
+ ```astro
+ ---
+ import { SearchSelect } from '@studiocms/ui/components';
+ ---
+
+
+ ```
+
+
+
+### Form Support
+
+You can use the `isRequired` prop to mark the select input as required. This will also add a red `*` to
+the label.
+
+If you need to access the element's value later on, you can pass the `name` prop. It will then appear in any FormData
+you construct. If no name is set, a random one is generated for the component.
+
+Additionally, you can either disable the entire select input by using the `disabled` prop, or disable
+individual options by adding `disabled: true` to the option you want to disable:
+
+```astro ins={7-9}
+---
+import { SearchSelect } from '@studiocms/ui/components';
+---
+
+
+```
+
+
+### Full Width
+
+Normally, the input has a minimum width and extends as needed. You can force it to take up
+the entire width of its parent container by setting the `fullWidth` prop to true:
+
+
+
+
+
+
+
+
+ ```astro
+ ---
+ import { SearchSelect } from '@studiocms/ui/components';
+ ---
+
+
+ ```
+
+
+
+:::note[About Accessibility]
+The searchable select's dropdown can be navigated with the arrow keys to focus an option and hitting
+`Enter` to select the currently focused option.
+:::
diff --git a/www/docs/src/content/docs/customizing/studiocms-ui/components/select.mdx b/www/docs/src/content/docs/customizing/studiocms-ui/components/select.mdx
new file mode 100644
index 0000000000..0f27625d98
--- /dev/null
+++ b/www/docs/src/content/docs/customizing/studiocms-ui/components/select.mdx
@@ -0,0 +1,157 @@
+---
+title: Select
+---
+
+import { Tabs, TabItem } from '@astrojs/starlight/components';
+import PreviewCard from '~/components/PreviewCard.astro';
+import { Select } from '@studiocms/ui/components';
+
+A custom select element that just works.
+
+## Usage
+
+
+
+
+
+
+
+
+ ```astro
+ ---
+ import { Select } from '@studiocms/ui/components';
+ ---
+
+
+ ```
+
+
+
+### Default Value
+
+You can set a default value using the `defaultValue` prop:
+
+
+
+
+
+
+
+
+ ```astro
+ ---
+ import { Select } from '@studiocms/ui/components';
+ ---
+
+
+ ```
+
+
+
+### Form Support
+
+You can use the `isRequired` prop to mark the select input as required. This will also add a red `*` to
+the label.
+
+If you need to access the element's value later on, you can pass the `name` prop. It will then appear in any FormData
+you construct. If no name is set, a random one is generated for the component.
+
+Additionally, you can either disable the entire select input by using the `disabled` prop, or disable
+individual options by adding `disabled: true` to the option you want to disable:
+
+```astro ins={7-9}
+---
+import { Select } from '@studiocms/ui/components';
+---
+
+
+```
+
+
+### Full Width
+
+Normally, the input has a minimum width and extends as needed. You can force it to take up
+the entire width of its parent container by setting the `fullWidth` prop to true:
+
+
+
+
+
+
+
+
+ ```astro
+ ---
+ import { Select } from '@studiocms/ui/components';
+ ---
+
+
+ ```
+
+
+
+:::note[About Accessibility]
+The select element's dropdown can be navigated via tabbing and elements can be selected by hitting the
+`Enter` key.
+:::
diff --git a/www/docs/src/content/docs/customizing/studiocms-ui/index.mdx b/www/docs/src/content/docs/customizing/studiocms-ui/index.mdx
index 6e754a4e66..d578c46a2a 100644
--- a/www/docs/src/content/docs/customizing/studiocms-ui/index.mdx
+++ b/www/docs/src/content/docs/customizing/studiocms-ui/index.mdx
@@ -28,11 +28,11 @@ import { Button } from '@studiocms/ui/components';
```
-Include the styles by importing `@studiocms/ui/styles/global.css` in your page layout.
+Include the styles by importing `@studiocms/ui/css/global.css` in your page layout.
```astro
---
-import '@studiocms/ui/styles/global.css';
+import '@studiocms/ui/css/global.css';
---
```