# Quiet UI > A hand-crafted UI library for the Web with a focus on accessibility, longevity, performance, and simplicity. Quiet UI provides a comprehensive set of accessible, customizable web components for building modern web applications. All of its custom elements use shadow DOM. Its form controls are form-associated elements that follow native form control patterns such as the Constraint Validation API. The current version of Quiet UI is: 1.0.0 Quiet offers an optional, opinionated, classless CSS reset called Quiet Restyle that's good for building out new websites and apps. Tabler is the default icon library, so `` values must come from this manifest, where outline and filled are the only family options: https://cdn.jsdelivr.net/npm/@tabler/icons@3/icons.json When installing Quiet, follow the instructions on https://quietui.org/docs/ to install the components, theme, and the optional CSS reset. Users can install the library using the Autoloader via CDN (recommended) or via npm (bundlers and advanced use cases). ## Components - [Avatar](https://quietui.org/docs/components/avatar): Provides a visual representation of a user to enhance personalization and recognition. - [Badge](https://quietui.org/docs/components/badge): Displays useful information or notifications such as a new feature or an unread message count. - [Breadcrumb](https://quietui.org/docs/components/breadcrumb): Offers a trail of links that correspond to an app or website's hierarchy, making navigation more predictable for users. - [Breadcrumb Item](https://quietui.org/docs/components/breadcrumb-item): Represents a single link or step in the hierarchical structure of an app or website. - [Browser Frame](https://quietui.org/docs/components/browser-frame): An on-page browser UI that displays arbitrary content inside of it. - [Button](https://quietui.org/docs/components/button): Allows users to navigate, submit forms, and perform other actions. - [Button Group](https://quietui.org/docs/components/button-group): Displays related buttons in a stylized group. - [Bytes](https://quietui.org/docs/components/bytes): Formats an arbitrary number of bytes or bits into a human-readable size. - [Callout](https://quietui.org/docs/components/callout): Draws attention to important information, provides context, or prompts users to take action. - [Card](https://quietui.org/docs/components/card): Provides a flexible and visually appealing way to organize and present content in a consistent and easily digestible format. - [Carousel](https://quietui.org/docs/components/carousel): Displays content in a scrollable horizontal slider with navigation controls. - [Carousel Item](https://quietui.org/docs/components/carousel-item): Represents individual items used in a carousel. - [Checkbox](https://quietui.org/docs/components/checkbox): Allows users to select one or more options from a list or toggle single options on and off. - [Checkbox Group](https://quietui.org/docs/components/checkbox-group): Attaches a label and description to a group of related checkboxes or switches. - [Color Input](https://quietui.org/docs/components/color-input): Allows users to enter or select a color and submit it with a form. - [Color Picker](https://quietui.org/docs/components/color-picker): Provides a customizable interface for selecting a color. - [Comparison](https://quietui.org/docs/components/comparison): Displays two elements side-by-side with a draggable divider, allowing users to adjust the visible portions for direct visual comparison. - [Copy](https://quietui.org/docs/components/copy): Copies text and other types of data to the clipboard. - [Countdown](https://quietui.org/docs/components/countdown): Displays a countdown until the specified date. - [Date](https://quietui.org/docs/components/date): Outputs a date or time in the specified format. - [Dialog](https://quietui.org/docs/components/dialog): Displays modal content for alerts, confirmations, configurations, and other important interactions that require immediate attention. - [Divider](https://quietui.org/docs/components/divider): Separates and groups content visually. - [Dropdown](https://quietui.org/docs/components/dropdown): Provides a menu of options that appear when the corresponding trigger is activated. - [Dropdown Item](https://quietui.org/docs/components/dropdown-item): Can be selected from inside a dropdown menu. - [Empty State](https://quietui.org/docs/components/empty-state): Guides users during first-time experiences or when content is missing, transforming blank spaces into opportunities with helpful visuals and clear actions. - [Expander](https://quietui.org/docs/components/expander): An expandable content container with smooth animation on show/hide. - [File Input](https://quietui.org/docs/components/file-input): Allows the user to select files to upload to the server. - [Fit Text](https://quietui.org/docs/components/fit-text): Scales a line of text to fit within its container. - [Flip Card](https://quietui.org/docs/components/flip-card): Displays information on two sides, allowing users to flip between the front and back with the click of a button. - [Hotkey](https://quietui.org/docs/components/hotkey): Shows keyboard shortcut combinations based on the user's operating system. - [Icon](https://quietui.org/docs/components/icon): Provides a visual representation of an object, action, or idea. - [Include](https://quietui.org/docs/components/include): Pulls content from another file into your page. - [Infinite Scroller](https://quietui.org/docs/components/infinite-scroller): Provides an accessible container for continuously loading content feeds. - [Intersection Observer](https://quietui.org/docs/components/intersection-observer): Watches child elements and dispatches events when they intersect with their root element. - [Joystick](https://quietui.org/docs/components/joystick): A directional joystick that can be controlled via touch or mouse. - [Listbox](https://quietui.org/docs/components/listbox): Displays a list of options, allowing users to select one or more items from the available choices. - [Listbox Item](https://quietui.org/docs/components/listbox-item): Represents individual choices within a listbox. - [Lorem Ipsum](https://quietui.org/docs/components/lorem-ipsum): Outputs placeholder text in various formats for testing designs with random content. - [Mutation Observer](https://quietui.org/docs/components/mutation-observer): Watches child elements and dispatches an event when they mutate. - [Number](https://quietui.org/docs/components/number): Outputs a number in the specified format. - [Number Field](https://quietui.org/docs/components/number-field): Allows users to input and edit numbers. - [Number Ticker](https://quietui.org/docs/components/number-ticker): Animates a number from a starting value to an ending value. - [Pagination](https://quietui.org/docs/components/pagination): Splits content into numbered pages so users can navigate datasets in manageable chunks. - [Passcode](https://quietui.org/docs/components/passcode): Allows users to enter fixed-length passcodes, verification tokens, one-time codes, and similar data in a user-friendly way. - [Popover](https://quietui.org/docs/components/popover): Provides additional information or functionality without interrupting the flow of content. - [Progress](https://quietui.org/docs/components/progress): Visually represents the progress of a request or task. - [Qr](https://quietui.org/docs/components/qr): Generates a QR Code with embedded data. - [Radio](https://quietui.org/docs/components/radio): Allows the user to select one option from a group of choices. - [Radio Item](https://quietui.org/docs/components/radio-item): Represents individual choices within a radio. - [Rating](https://quietui.org/docs/components/rating): Allows users to provide feedback based on their satisfaction with a product or service. - [Relative Time](https://quietui.org/docs/components/relative-time): Outputs a relative time in a human-readable format. - [Resize Observer](https://quietui.org/docs/components/resize-observer): Watches child elements and dispatches an event when they resize. - [Scroller](https://quietui.org/docs/components/scroller): Adds an accessible container with visual affordances to help users identify and navigate scrolling content. - [Search List](https://quietui.org/docs/components/search-list): Queries a collection of items based on their content and keywords. - [Select](https://quietui.org/docs/components/select): Allows users to choose an option from a predefined list of options. - [Share](https://quietui.org/docs/components/share): Allows users to share links, files and text via their operating system's share interface. - [Slide Activator](https://quietui.org/docs/components/slide-activator): Gives users a draggable thumb that must be moved to the end of its track to trigger an action. - [Slider](https://quietui.org/docs/components/slider): Allows users to select numeric values within a given range by moving a thumb along a track. - [Sparkline](https://quietui.org/docs/components/sparkline): Shows at-a-glance trends in a small, inline chart that fits within text or tables. - [Spinner](https://quietui.org/docs/components/spinner): Tells the user that content is loading or a request is processing in the background. - [Splitter](https://quietui.org/docs/components/splitter): A draggable splitter that separates two panels, allowing users to resize them. - [Spoiler](https://quietui.org/docs/components/spoiler): Conceals sensitive content and gives the user the option of showing it or not, preventing unintentional disclosure. - [Stamp](https://quietui.org/docs/components/stamp): Renders templates with simple expressions, logic, and custom data. - [Switch](https://quietui.org/docs/components/switch): Allows the user to toggle between two mutually exclusive states, such as on and off. - [Tab](https://quietui.org/docs/components/tab): Describes and selects a tab panel within a tab list. - [Tab List](https://quietui.org/docs/components/tab-list): Allows users to switch between different sections of content without leaving the page, providing a clean and organized interface. - [Tab Panel](https://quietui.org/docs/components/tab-panel): Holds the content that gets displayed when a tab is selected. - [Text Area](https://quietui.org/docs/components/text-area): Allows users to edit multi-line, plain text content. - [Text Field](https://quietui.org/docs/components/text-field): Allows users to input and edit text. - [Text Mask](https://quietui.org/docs/components/text-mask): Applies text as a mask over an image, creating visually stylized characters. - [Timed Content](https://quietui.org/docs/components/timed-content): Shows certain content based on the current date and time. - [Toast](https://quietui.org/docs/components/toast): A mechanism for showing temporary, non-intrusive notifications that appear above the page's content. - [Toast Item](https://quietui.org/docs/components/toast-item): Notifications displayed by the toast component. - [Toggle Icon](https://quietui.org/docs/components/toggle-icon): Similar to checkboxes, except with icons to represent the checked and unchecked states. - [Toolbar](https://quietui.org/docs/components/toolbar): Turns a collection of buttons and button groups into an accessible toolbar. - [Tooltip](https://quietui.org/docs/components/tooltip): Provides additional information when the user hovers or focuses on an element. - [Transition Group](https://quietui.org/docs/components/transition-group): Improves the user's experience by adding subtle animations as items are added, removed, and reordered in the group. - [Typewriter](https://quietui.org/docs/components/typewriter): Simulates a natural typing effect with customizable speed, delay, and looping options. - [Veil](https://quietui.org/docs/components/veil): Covers elements visually and disables interaction during important states such as submitting or loading. - [Zoomable Frame](https://quietui.org/docs/components/zoomable-frame): Renders iframe content with zoom and interaction controls. ## Optional - [Documentation](https://quietui.org/): The project's website. - [Theming & Design Tokens](https://quietui.org/docs/theming): Theme documentation, including details about light/dark color schemes and a comprehensive list of design tokens (as CSS custom properties) to learn how to customize the library's overall appearance. - [Quiet Restyle](https://quietui.org/docs/restyle): An opinionated CSS reset you can use with or without Quiet's components. - [GitHub Repository](https://github.com/quietui/quiet): Source code and development information - [X / Twitter](https://x.com/quiet_ui): Follow the project on X - [Bluesky](https://bsky.app/profile/quietui.org): Follow the project on Bluesky ### `` **Description:** Provides a visual representation of a user to enhance personalization and recognition. **Documentation:** https://quietui.org/docs/components/avatar **Slots:** - `icon`: A custom icon to use instead of the default. Will not be shown when an image or initials are present. For best results, use a `` or an `` element. **Properties:** - `label`: An accessible label for the avatar. This won't be visible, but it will be read to assistive devices so you should always include one. (Type: `string | undefined`) - `characters`: A string of characters to display in the avatar when an image isn't available or fails to load. Up to five characters are supported. (Type: `string | undefined`) - `image`: The URL of an image to display in the avatar. Non-square images will be clipped to fit. (Type: `string | undefined`) **CSS Custom Properties:** - `--size`: The size of the avatar to draw. (Default: `3rem`) ### `` **Description:** Displays useful information or notifications such as a new feature or an unread message count. **Documentation:** https://quietui.org/docs/components/badge **Slots:** - `(default)`: The badge's content. **Properties:** - `variant`: The type of badge to draw. (Type: `'default' | 'primary' | 'constructive' | 'destructive'`, Default: `'default'`) - `appearance`: Determines the badges's appearance. (Type: `'normal' | 'outline'`, Default: `'normal'`) - `attention`: Draws attention to the badge using an animation. (Type: `'tap' | 'shake' | 'sparkle'`) **CSS Custom Properties:** - `--attention-duration`: The speed at which the attention animation will run. (Default: `1.5s`) - `--attention-easing`: The easing to use for the attention animation. (Default: `ease`) ### `` **Description:** Offers a trail of links that correspond to an app or website's hierarchy, making navigation more predictable for users. **Documentation:** https://quietui.org/docs/components/breadcrumb **Slots:** - `(default)`: The default slot containing one or more breadcrumb items. **CSS Custom Properties:** - `--item-spacing`: The amount of spacing to use between breadcrumb items. (Default: `0.5em`) ### `` **Description:** Represents a single link or step in the hierarchical structure of an app or website. **Documentation:** https://quietui.org/docs/components/breadcrumb-item **Slots:** - `(default)`: The default slot. - `start`: An icon or similar element to place before the breadcrumb item. Works great with ``. - `end`: An icon or similar element to place after the breadcrumb item. Works great with ``. - `separator`: A custom separator to show instead of the default. Works great with ``. **Properties:** - `current`: Indicates that this item is the current page or view. (Type: `boolean`, Default: `false`) - `href`: The URL the breadcrumb item should point to. If omitted, the breadcrumb item will be drawn as a `` instead of a link, enabling alternate content such as dropdowns. (Type: `string`) - `target`: Opens the link in the specified target. (Type: `'_blank' | '_parent' | '_self' | '_top' | undefined`) - `rel`: Sets the link's `rel` attribute. Note that the default value is `noreferrer noopener`, meaning you might need to set it to an empty string if you're also using `target`. (Type: `string`, Default: `'noreferrer noopener'`) **CSS Parts:** - `label`: The breadcrumb's label, an `` element if `href` is set or a `` element otherwise. - `separator`: The container that wraps the breadcrumb's separator, a `span` element. ### `` **Description:** An on-page browser UI that displays arbitrary content inside of it. **Documentation:** https://quietui.org/docs/components/browser-frame **Slots:** - `(default)`: The content to display in the browser window body. - `icon`: An optional icon to display at the start of the address bar. **Properties:** - `label`: The label to display in the address bar. This will override the domain that shows when using `href`. (Type: `string`, Default: `''`) - `href`: When set, the address bar will be wrapped by a link that goes to this URL. A human-readable domain name will be shown in the address bar unless `label` is also provided. (Type: `string`, Default: `''`) - `target`: Opens the link in the specified target. Only works when `href` is set. (Type: `'_blank' | '_parent' | '_self' | '_top' | undefined`) - `rel`: Sets the link's `rel` attribute. Only works when `href` is set. When linking to an external domain, you should probably set this to `noreferrer noopener`. (Type: `string | undefined`) - `download`: Sets the link's `download` attribute, causing the linked file to be downloaded. Only works when `href` is set. (Type: `string | undefined`) - `flush`: When set, removes all padding from the body element and removes border radius from slotted media. Useful for displaying images and videos that span edge-to-edge in the browser frame. (Type: `boolean`, Default: `false`) - `platform`: Sets the window control style to use. 'mac' uses the traffic light controls, 'windows' uses Windows 11-style controls, and 'auto' will use the most appropriate style based on the user's operating system. (Type: `'mac' | 'windows' | 'auto'`, Default: `'auto'`) **CSS Custom Properties:** - `--address-background-color`: Background color for the address bar. - `--address-color`: Text color for the address bar. - `--border-color`: Border color for the browser frame. - `--body-padding`: Padding to apply to the browser frame's body. - `--header-background-color`: Background color for the header. - `--header-height`: Height of the browser frame header. - `--windows-control-color`: The color for Windows-style control buttons. **CSS Parts:** - `header`: The browser frame's header that contains controls and address bar. - `controls`: The browser frame's control buttons container (red, yellow, green dots or Windows controls). - `address-bar`: The browser frame's address bar. Either an `` or a `` depending on `href`. - `body`: The browser frame's body, where content shows. ### `` **Description:** Allows users to navigate, submit forms, and perform other actions. **Documentation:** https://quietui.org/docs/components/button **Slots:** - `(default)`: The button's label. - `start`: An icon or similar element to place before the label. Works great with ``. - `end`: An icon or similar element to place after the label. Works great with ``. **Properties:** - `appearance`: Determines the button's appearance. (Type: `'normal' | 'outline' | 'text' | 'image'`, Default: `'normal'`) - `variant`: The type of button to render. This attribute has no effect on text or image buttons. (Type: `'default' | 'primary' | 'destructive'`, Default: `'default'`) - `disabled`: Disables the button. (Type: `boolean`, Default: `false`) - `loading`: Draws the button in a loading state. (Type: `boolean`, Default: `false`) - `toggle`: Turns the button into a two-state toggle button. Clicking once will turn it on. Clicking again will turn it off. Cannot be used with links buttons or submit buttons. (Type: `'on' | 'off' | undefined`) - `size`: The button's size. (Type: `'xs' | 'sm' | 'md' | 'lg' | 'xl'`, Default: `'md'`) - `iconLabel` (attribute: `icon-label`): To create an icon button, slot an icon into the button's default slot and set this attribute to an appropriate label. The label won't be visible, but it will be available to assistive devices. (Type: `string`) - `pill`: Draws the button in a pill shape. (Type: `boolean`, Default: `false`) - `type`: Determines the button's type. (Type: `'button' | 'submit' | 'reset'`, Default: `'button'`) - `name`: The name to submit when the button is used to submit the form. (Type: `string`) - `value`: The value to submit when the button is used to submit the form. (Type: `string`, Default: `''`) - `withCaret` (attribute: `with-caret`): When true, the button will be rendered with a caret to indicate a dropdown menu. (Type: `boolean`, Default: `false`) - `href`: Set this to render the button as an `` tag instead of a `