├── .changeset ├── README.md └── config.json ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── 1-documentation_change.yml │ ├── 2-bug_report.yml │ └── config.yml ├── reproduire │ └── needs-reproduction.md └── workflows │ ├── build-preview.yml │ ├── ci.yml │ ├── deploy-preview.yml │ ├── deploy-prod.yml │ ├── preview-release.yml │ ├── release.yml │ ├── reproduire-close.yml │ └── reproduire.yml ├── .gitignore ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── NOTICE.txt ├── README.md ├── TODO.md ├── docs ├── .gitignore ├── .prettierignore ├── LICENSE ├── README.md ├── content │ ├── child-snippet.md │ ├── components │ │ ├── accordion.md │ │ ├── alert-dialog.md │ │ ├── aspect-ratio.md │ │ ├── avatar.md │ │ ├── button.md │ │ ├── calendar.md │ │ ├── checkbox.md │ │ ├── collapsible.md │ │ ├── combobox.md │ │ ├── command.md │ │ ├── context-menu.md │ │ ├── date-field.md │ │ ├── date-picker.md │ │ ├── date-range-field.md │ │ ├── date-range-picker.md │ │ ├── dialog.md │ │ ├── dropdown-menu.md │ │ ├── label.md │ │ ├── link-preview.md │ │ ├── menubar.md │ │ ├── meter.md │ │ ├── navigation-menu.md │ │ ├── pagination.md │ │ ├── pin-input.md │ │ ├── popover.md │ │ ├── progress.md │ │ ├── radio-group.md │ │ ├── range-calendar.md │ │ ├── rating-group.md │ │ ├── scroll-area.md │ │ ├── select.md │ │ ├── separator.md │ │ ├── slider.md │ │ ├── switch.md │ │ ├── tabs.md │ │ ├── time-field.md │ │ ├── time-range-field.md │ │ ├── toggle-group.md │ │ ├── toggle.md │ │ ├── toolbar.md │ │ └── tooltip.md │ ├── dates.md │ ├── figma-file.md │ ├── getting-started.md │ ├── introduction.md │ ├── llms.md │ ├── migration-guide.md │ ├── policies │ │ ├── changelog-conventions.md │ │ ├── code-of-conduct.md │ │ └── tracking-bugs-and-feature-requests.md │ ├── ref.md │ ├── state-management.md │ ├── styling.md │ ├── transitions.md │ ├── type-helpers │ │ ├── with-element-ref.md │ │ ├── without-child.md │ │ ├── without-children-or-child.md │ │ └── without-children.md │ └── utilities │ │ ├── bits-config.md │ │ ├── is-using-keyboard.md │ │ ├── merge-props.md │ │ ├── portal.md │ │ └── use-id.md ├── mdsx.config.js ├── other │ ├── build-demo-files.ts │ ├── build-llms-txt.ts │ ├── build-search-data.js │ ├── code-block-prettier.js │ └── update-velite-output.js ├── package.json ├── src │ ├── app.d.ts │ ├── app.html │ ├── hooks.server.ts │ ├── lib │ │ ├── components │ │ │ ├── api-ref │ │ │ │ ├── css-vars-table.svelte │ │ │ │ ├── data-attr-value-content.svelte │ │ │ │ ├── data-attrs-table.svelte │ │ │ │ ├── index.ts │ │ │ │ ├── prop-copy.svelte │ │ │ │ ├── prop-type-content.svelte │ │ │ │ └── props-table.svelte │ │ │ ├── api-section.svelte │ │ │ ├── callout.svelte │ │ │ ├── code-renders │ │ │ │ └── app-css.svelte │ │ │ ├── component-preview-v2.svelte │ │ │ ├── component-preview.svelte │ │ │ ├── copy-code-button.svelte │ │ │ ├── demo-code-container.svelte │ │ │ ├── demo-code-tabs.svelte │ │ │ ├── demo-container.svelte │ │ │ ├── demos │ │ │ │ ├── accordion-demo-checkout-steps.svelte │ │ │ │ ├── accordion-demo-custom-item.svelte │ │ │ │ ├── accordion-demo-custom.svelte │ │ │ │ ├── accordion-demo-horizontal-cards.svelte │ │ │ │ ├── accordion-demo-multiple.svelte │ │ │ │ ├── accordion-demo-single.svelte │ │ │ │ ├── accordion-demo-transitions.svelte │ │ │ │ ├── accordion-demo.svelte │ │ │ │ ├── alert-dialog-demo.svelte │ │ │ │ ├── aspect-ratio-demo.svelte │ │ │ │ ├── avatar-demo-link-preview.svelte │ │ │ │ ├── avatar-demo.svelte │ │ │ │ ├── button-demo.svelte │ │ │ │ ├── calendar-demo-presets.svelte │ │ │ │ ├── calendar-demo-selects.svelte │ │ │ │ ├── calendar-demo.svelte │ │ │ │ ├── checkbox-demo-custom.svelte │ │ │ │ ├── checkbox-demo-group.svelte │ │ │ │ ├── checkbox-demo.svelte │ │ │ │ ├── collapsible-demo-transitions.svelte │ │ │ │ ├── collapsible-demo.svelte │ │ │ │ ├── combobox-demo-auto-scroll-delay.svelte │ │ │ │ ├── combobox-demo-transition.svelte │ │ │ │ ├── combobox-demo.svelte │ │ │ │ ├── command-demo-dialog.svelte │ │ │ │ ├── command-demo.svelte │ │ │ │ ├── context-menu-demo-transition.svelte │ │ │ │ ├── context-menu-demo.svelte │ │ │ │ ├── date-field-demo-custom.svelte │ │ │ │ ├── date-field-demo.svelte │ │ │ │ ├── date-picker-demo.svelte │ │ │ │ ├── date-range-field-demo.svelte │ │ │ │ ├── date-range-picker-demo.svelte │ │ │ │ ├── dialog-demo-custom.svelte │ │ │ │ ├── dialog-demo-nested.svelte │ │ │ │ ├── dialog-demo.svelte │ │ │ │ ├── dropdown-menu-demo-transition.svelte │ │ │ │ ├── dropdown-menu-demo.svelte │ │ │ │ ├── index.ts │ │ │ │ ├── label-demo.svelte │ │ │ │ ├── link-preview-demo-transition.svelte │ │ │ │ ├── link-preview-demo.svelte │ │ │ │ ├── menubar-demo.svelte │ │ │ │ ├── meter-demo-custom.svelte │ │ │ │ ├── meter-demo.svelte │ │ │ │ ├── navigation-menu-demo-force-mount.svelte │ │ │ │ ├── navigation-menu-demo.svelte │ │ │ │ ├── navigation-menu-no-hover-demo.svelte │ │ │ │ ├── navigation-menu-no-viewport-demo.svelte │ │ │ │ ├── navigation-menu-submenu-demo.svelte │ │ │ │ ├── navigation-menu-submenu-viewport-demo.svelte │ │ │ │ ├── pagination-demo.svelte │ │ │ │ ├── pin-input-demo.svelte │ │ │ │ ├── popover-demo-transition.svelte │ │ │ │ ├── popover-demo.svelte │ │ │ │ ├── portal-demo.svelte │ │ │ │ ├── progress-demo-custom.svelte │ │ │ │ ├── progress-demo.svelte │ │ │ │ ├── radio-group-demo.svelte │ │ │ │ ├── range-calendar-demo.svelte │ │ │ │ ├── rating-group-demo-custom.svelte │ │ │ │ ├── rating-group-demo-half-stars.svelte │ │ │ │ ├── rating-group-demo-no-hover.svelte │ │ │ │ ├── rating-group-demo-rtl.svelte │ │ │ │ ├── rating-group-demo.svelte │ │ │ │ ├── scroll-area-demo-custom.svelte │ │ │ │ ├── scroll-area-demo.svelte │ │ │ │ ├── select-demo-auto-scroll-delay.svelte │ │ │ │ ├── select-demo-custom-anchor.svelte │ │ │ │ ├── select-demo-custom.svelte │ │ │ │ ├── select-demo-multiple.svelte │ │ │ │ ├── select-demo-transition.svelte │ │ │ │ ├── select-demo.svelte │ │ │ │ ├── separator-demo.svelte │ │ │ │ ├── slider-demo-custom-steps.svelte │ │ │ │ ├── slider-demo-multiple.svelte │ │ │ │ ├── slider-demo-thumb-labels.svelte │ │ │ │ ├── slider-demo-tick-labels.svelte │ │ │ │ ├── slider-demo-ticks.svelte │ │ │ │ ├── slider-demo-vertical.svelte │ │ │ │ ├── slider-demo.svelte │ │ │ │ ├── switch-demo-custom.svelte │ │ │ │ ├── switch-demo.svelte │ │ │ │ ├── tabs-demo.svelte │ │ │ │ ├── time-field-demo-custom.svelte │ │ │ │ ├── time-field-demo.svelte │ │ │ │ ├── time-range-field-demo.svelte │ │ │ │ ├── toggle-demo.svelte │ │ │ │ ├── toggle-group-demo.svelte │ │ │ │ ├── toolbar-demo.svelte │ │ │ │ ├── tooltip-demo-custom-anchor.svelte │ │ │ │ ├── tooltip-demo-custom.svelte │ │ │ │ ├── tooltip-demo-delay-duration.svelte │ │ │ │ ├── tooltip-demo-group.svelte │ │ │ │ ├── tooltip-demo-transition.svelte │ │ │ │ └── tooltip-demo.svelte │ │ │ ├── doc-page-header.svelte │ │ │ ├── doc-page.svelte │ │ │ ├── examples │ │ │ │ └── command │ │ │ │ │ ├── command-wrapper.svelte │ │ │ │ │ ├── framer │ │ │ │ │ ├── framer-command.svelte │ │ │ │ │ ├── framer.css │ │ │ │ │ └── icons │ │ │ │ │ │ ├── avatar.svelte │ │ │ │ │ │ ├── badge.svelte │ │ │ │ │ │ ├── button.svelte │ │ │ │ │ │ ├── container.svelte │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── input.svelte │ │ │ │ │ │ ├── radio.svelte │ │ │ │ │ │ ├── search.svelte │ │ │ │ │ │ └── slider.svelte │ │ │ │ │ ├── icons │ │ │ │ │ ├── copied.svelte │ │ │ │ │ ├── copy.svelte │ │ │ │ │ ├── figma.svelte │ │ │ │ │ ├── framer.svelte │ │ │ │ │ ├── github.svelte │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── linear.svelte │ │ │ │ │ ├── raycast.svelte │ │ │ │ │ ├── slack.svelte │ │ │ │ │ ├── vercel.svelte │ │ │ │ │ └── youtube.svelte │ │ │ │ │ ├── linear │ │ │ │ │ ├── icons │ │ │ │ │ │ ├── assign-to-me.svelte │ │ │ │ │ │ ├── assign-to.svelte │ │ │ │ │ │ ├── change-labels.svelte │ │ │ │ │ │ ├── change-priority.svelte │ │ │ │ │ │ ├── change-status.svelte │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── remove-label.svelte │ │ │ │ │ │ └── set-due-date.svelte │ │ │ │ │ ├── linear-command.svelte │ │ │ │ │ └── linear.css │ │ │ │ │ ├── logo.svelte │ │ │ │ │ ├── raycast │ │ │ │ │ ├── icons │ │ │ │ │ │ ├── clipboard.svelte │ │ │ │ │ │ ├── finder.svelte │ │ │ │ │ │ ├── hammer.svelte │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── raycast-dark.svelte │ │ │ │ │ │ ├── raycast-light.svelte │ │ │ │ │ │ ├── star.svelte │ │ │ │ │ │ └── window.svelte │ │ │ │ │ ├── item.svelte │ │ │ │ │ ├── raycast-command.svelte │ │ │ │ │ ├── raycast.css │ │ │ │ │ ├── sub-command.svelte │ │ │ │ │ └── sub-item.svelte │ │ │ │ │ ├── theme-switcher.svelte │ │ │ │ │ └── vercel │ │ │ │ │ ├── home.svelte │ │ │ │ │ ├── icons │ │ │ │ │ ├── contact.svelte │ │ │ │ │ ├── docs.svelte │ │ │ │ │ ├── feedback.svelte │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── plus.svelte │ │ │ │ │ ├── projects.svelte │ │ │ │ │ └── teams.svelte │ │ │ │ │ ├── item.svelte │ │ │ │ │ ├── projects.svelte │ │ │ │ │ ├── vercel-command.svelte │ │ │ │ │ └── vercel.css │ │ │ ├── homepage │ │ │ │ ├── card-air.svelte │ │ │ │ ├── card-sound.svelte │ │ │ │ ├── card-timer.svelte │ │ │ │ ├── card-toggle.svelte │ │ │ │ ├── home-select.svelte │ │ │ │ ├── home-slider.svelte │ │ │ │ ├── home-switch.svelte │ │ │ │ ├── home-toolbar.svelte │ │ │ │ ├── svg-accessible-dark.svelte │ │ │ │ ├── svg-accessible.svelte │ │ │ │ ├── svg-consistent.svelte │ │ │ │ └── svg-customizable.svelte │ │ │ ├── icons │ │ │ │ ├── github.svelte │ │ │ │ ├── index.ts │ │ │ │ ├── logo.svelte │ │ │ │ ├── stackblitz.svelte │ │ │ │ ├── switch-off.svelte │ │ │ │ ├── switch-on.svelte │ │ │ │ └── x-com.svelte │ │ │ ├── index.ts │ │ │ ├── light-switch.svelte │ │ │ ├── markdown │ │ │ │ ├── a.svelte │ │ │ │ ├── blockquote.svelte │ │ │ │ ├── blueprint.svelte │ │ │ │ ├── code.svelte │ │ │ │ ├── h1.svelte │ │ │ │ ├── h2.svelte │ │ │ │ ├── h3.svelte │ │ │ │ ├── h4.svelte │ │ │ │ ├── h5.svelte │ │ │ │ ├── h6.svelte │ │ │ │ ├── hr.svelte │ │ │ │ ├── img.svelte │ │ │ │ ├── index.ts │ │ │ │ ├── li.svelte │ │ │ │ ├── ol.svelte │ │ │ │ ├── p.svelte │ │ │ │ ├── pre.svelte │ │ │ │ ├── table.svelte │ │ │ │ ├── td.svelte │ │ │ │ ├── th.svelte │ │ │ │ ├── tr.svelte │ │ │ │ └── ul.svelte │ │ │ ├── metadata.svelte │ │ │ ├── navigation │ │ │ │ ├── index.ts │ │ │ │ ├── mobile-link.svelte │ │ │ │ ├── mobile-nav.svelte │ │ │ │ ├── sidebar-nav-items.svelte │ │ │ │ ├── sidebar-nav-main-items.svelte │ │ │ │ └── sidebar-nav.svelte │ │ │ ├── open-in-stackblitz.svelte │ │ │ ├── page-header │ │ │ │ ├── index.ts │ │ │ │ ├── page-header-description.svelte │ │ │ │ ├── page-header-heading.svelte │ │ │ │ └── page-header.svelte │ │ │ ├── preview-switch.svelte │ │ │ ├── search.svelte │ │ │ ├── sidebar-sponsor.svelte │ │ │ ├── site-header.svelte │ │ │ ├── stackblitz-demo-layout.svelte │ │ │ ├── steps.svelte │ │ │ ├── tailwind-indicator.svelte │ │ │ ├── toc │ │ │ │ ├── toc-tree.svelte │ │ │ │ └── toc.svelte │ │ │ └── ui │ │ │ │ ├── alert │ │ │ │ ├── alert-description.svelte │ │ │ │ ├── alert-title.svelte │ │ │ │ ├── alert.svelte │ │ │ │ └── index.ts │ │ │ │ ├── badge.svelte │ │ │ │ ├── button │ │ │ │ ├── button.svelte │ │ │ │ └── index.ts │ │ │ │ ├── sheet │ │ │ │ ├── index.ts │ │ │ │ ├── sheet-content.svelte │ │ │ │ ├── sheet-description.svelte │ │ │ │ ├── sheet-footer.svelte │ │ │ │ ├── sheet-header.svelte │ │ │ │ ├── sheet-overlay.svelte │ │ │ │ └── sheet-title.svelte │ │ │ │ └── table │ │ │ │ ├── index.ts │ │ │ │ ├── table-body.svelte │ │ │ │ ├── table-caption.svelte │ │ │ │ ├── table-cell.svelte │ │ │ │ ├── table-footer.svelte │ │ │ │ ├── table-head.svelte │ │ │ │ ├── table-header.svelte │ │ │ │ ├── table-row.svelte │ │ │ │ └── table.svelte │ │ ├── config │ │ │ ├── index.ts │ │ │ ├── navigation.ts │ │ │ └── site.ts │ │ ├── content │ │ │ ├── api-reference │ │ │ │ ├── accordion.api.ts │ │ │ │ ├── alert-dialog.api.ts │ │ │ │ ├── aspect-ratio.api.ts │ │ │ │ ├── avatar.api.ts │ │ │ │ ├── bits-config.api.ts │ │ │ │ ├── button.api.ts │ │ │ │ ├── calendar.api.ts │ │ │ │ ├── checkbox.api.ts │ │ │ │ ├── collapsible.api.ts │ │ │ │ ├── combobox.api.ts │ │ │ │ ├── command.api.ts │ │ │ │ ├── context-menu.api.ts │ │ │ │ ├── date-field.api.ts │ │ │ │ ├── date-picker.api.ts │ │ │ │ ├── date-range-field.api.ts │ │ │ │ ├── date-range-picker.api.ts │ │ │ │ ├── dialog.api.ts │ │ │ │ ├── dropdown-menu.api.ts │ │ │ │ ├── extended-types │ │ │ │ │ ├── accordion │ │ │ │ │ │ ├── content-child-snippet-props.md │ │ │ │ │ │ ├── content-children-snippet-props.md │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── avatar │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── loading-status-prop.md │ │ │ │ │ │ └── on-loading-status-change-prop.md │ │ │ │ │ ├── checkbox │ │ │ │ │ │ ├── checkbox-group-on-value-change-prop.md │ │ │ │ │ │ ├── checkbox-root-child-snippet-props.md │ │ │ │ │ │ ├── checkbox-root-children-snippet-props.md │ │ │ │ │ │ ├── checkbox-root-on-checked-change-prop.md │ │ │ │ │ │ ├── checkbox-root-on-indeterminate-change.md │ │ │ │ │ │ ├── checkbox-root-state-data-attr.md │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── collapsible │ │ │ │ │ │ ├── content-child-snippet-props.md │ │ │ │ │ │ ├── content-children-snippet-props.md │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── combobox │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── scroll-alignment-prop.md │ │ │ │ │ ├── command │ │ │ │ │ │ ├── command-filter-prop.md │ │ │ │ │ │ ├── command-on-state-change-prop.md │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── date-field │ │ │ │ │ │ ├── date-field-editable-segment-part.md │ │ │ │ │ │ ├── date-field-segment-part.md │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── date-range-field │ │ │ │ │ │ ├── date-range-field-input-type-prop.md │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── dialog │ │ │ │ │ │ ├── dialog-content-child-snippet-props.md │ │ │ │ │ │ ├── dialog-overlay-child-snippet-props.md │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── floating │ │ │ │ │ │ ├── align-prop.md │ │ │ │ │ │ ├── collision-boundary-prop.md │ │ │ │ │ │ ├── collision-padding-prop.md │ │ │ │ │ │ ├── custom-anchor-prop.md │ │ │ │ │ │ ├── floating-content-child-snippet-props.md │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── side-prop.md │ │ │ │ │ │ ├── sticky-prop.md │ │ │ │ │ │ ├── strategy-prop.md │ │ │ │ │ │ └── update-position-strategy-prop.md │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── menu │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── menu-checked-state-attr.md │ │ │ │ │ ├── pagination │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pagination-child-snippet-props.md │ │ │ │ │ │ ├── pagination-children-snippet-props.md │ │ │ │ │ │ ├── pagination-on-page-change-prop.md │ │ │ │ │ │ └── pagination-page-item-prop.md │ │ │ │ │ ├── pin-input │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pin-input-cell-cell-prop.md │ │ │ │ │ │ ├── pin-input-root-child-snippet-props.md │ │ │ │ │ │ ├── pin-input-root-children-snippet-props.md │ │ │ │ │ │ ├── pin-input-root-on-complete-prop.md │ │ │ │ │ │ ├── pin-input-root-paste-transformer.md │ │ │ │ │ │ ├── pin-input-root-push-password-manager-strategy.md │ │ │ │ │ │ └── pin-input-root-text-align-prop.md │ │ │ │ │ ├── portal │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── to-prop.md │ │ │ │ │ ├── progress │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── progress-state-attr.md │ │ │ │ │ ├── radio-group │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── radio-group-state-attr.md │ │ │ │ │ ├── rating-group │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── rating-group-aria-textvalue-prop.md │ │ │ │ │ │ ├── rating-group-item-child-snippet-props.md │ │ │ │ │ │ ├── rating-group-item-children-snippet-props.md │ │ │ │ │ │ ├── rating-group-item-state.md │ │ │ │ │ │ ├── rating-group-root-child-snippet-props.md │ │ │ │ │ │ └── rating-group-root-children-snippet-props.md │ │ │ │ │ ├── scroll-area │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── scroll-area-type-prop.md │ │ │ │ │ │ └── visible-hidden-prop.md │ │ │ │ │ ├── select │ │ │ │ │ │ ├── delay-prop.md │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── items-prop.md │ │ │ │ │ ├── shared │ │ │ │ │ │ ├── calendar-on-value-change-prop.md │ │ │ │ │ │ ├── calendar-value-prop.md │ │ │ │ │ │ ├── child-default-snippet-props.md │ │ │ │ │ │ ├── date-field-input-child-snippet-props.md │ │ │ │ │ │ ├── date-field-input-children-snippet-props.md │ │ │ │ │ │ ├── date-field-segment-data-attr.md │ │ │ │ │ │ ├── date-matcher-prop.md │ │ │ │ │ │ ├── date-on-invalid-prop.md │ │ │ │ │ │ ├── date-on-range-change-prop.md │ │ │ │ │ │ ├── date-range-prop.md │ │ │ │ │ │ ├── date-range-validate-prop.md │ │ │ │ │ │ ├── date-validate-prop.md │ │ │ │ │ │ ├── date-value-prop.md │ │ │ │ │ │ ├── dir-prop.md │ │ │ │ │ │ ├── escape-keydown-behavior-prop.md │ │ │ │ │ │ ├── granularity-prop.md │ │ │ │ │ │ ├── header-level-prop.md │ │ │ │ │ │ ├── hour-cycle-prop.md │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── interact-outside-behavior-prop.md │ │ │ │ │ │ ├── month-prop.md │ │ │ │ │ │ ├── noop-prop.md │ │ │ │ │ │ ├── number-or-array-number-prop.md │ │ │ │ │ │ ├── on-auto-focus-prop.md │ │ │ │ │ │ ├── on-change-string-or-array-prop.md │ │ │ │ │ │ ├── on-date-value-change-prop.md │ │ │ │ │ │ ├── on-escape-keydown-prop.md │ │ │ │ │ │ ├── on-focus-outside-prop.md │ │ │ │ │ │ ├── on-interact-outside-prop.md │ │ │ │ │ │ ├── on-number-value-change-prop.md │ │ │ │ │ │ ├── on-open-change-prop.md │ │ │ │ │ │ ├── on-placeholder-change-prop.md │ │ │ │ │ │ ├── on-start-end-value-change-prop.md │ │ │ │ │ │ ├── on-string-value-change-prop.md │ │ │ │ │ │ ├── on-time-placeholder-change-prop.md │ │ │ │ │ │ ├── on-time-start-end-value-change-prop.md │ │ │ │ │ │ ├── on-time-value-change-prop.md │ │ │ │ │ │ ├── open-child-snippet-props.md │ │ │ │ │ │ ├── open-children-snippet-props.md │ │ │ │ │ │ ├── open-closed-prop.md │ │ │ │ │ │ ├── orientation-prop.md │ │ │ │ │ │ ├── radio-item-child-snippet-props.md │ │ │ │ │ │ ├── radio-item-children-snippet-props.md │ │ │ │ │ │ ├── segment-part-prop.md │ │ │ │ │ │ ├── single-or-multiple-prop.md │ │ │ │ │ │ ├── slider-thumb-positioning-prop.md │ │ │ │ │ │ ├── string-or-array-string-prop.md │ │ │ │ │ │ ├── time-field-input-child-snippet-props.md │ │ │ │ │ │ ├── time-field-input-children-snippet-props.md │ │ │ │ │ │ ├── time-field-segment-data-attr.md │ │ │ │ │ │ ├── time-granularity-prop.md │ │ │ │ │ │ ├── time-on-invalid-prop.md │ │ │ │ │ │ ├── time-on-range-change-prop.md │ │ │ │ │ │ ├── time-range-prop.md │ │ │ │ │ │ ├── time-segment-part-prop.md │ │ │ │ │ │ ├── time-validate-prop.md │ │ │ │ │ │ ├── time-value-prop.md │ │ │ │ │ │ └── weekday-format-prop.md │ │ │ │ │ ├── slider │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── slider-root-child-snippet-props.md │ │ │ │ │ │ ├── slider-root-children-snippet-props.md │ │ │ │ │ │ ├── slider-root-on-value-change.md │ │ │ │ │ │ └── slider-tick-label-position-prop.md │ │ │ │ │ ├── switch │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── switch-checked-data-attr.md │ │ │ │ │ │ ├── switch-root-child-snippet-props.md │ │ │ │ │ │ ├── switch-root-children-snippet-props.md │ │ │ │ │ │ └── switch-root-on-checked-change.md │ │ │ │ │ ├── tabs │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── tabs-root-activation-mode.md │ │ │ │ │ │ └── tabs-trigger-state.md │ │ │ │ │ ├── time-field │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── time-field-editable-segment-part-part.md │ │ │ │ │ ├── toggle │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── toggle-root-on-pressed-change-prop.md │ │ │ │ │ │ └── toggle-root-state-data-attr.md │ │ │ │ │ └── tooltip │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── tooltip-state-data-attr.md │ │ │ │ ├── helpers.ts │ │ │ │ ├── index.ts │ │ │ │ ├── label.api.ts │ │ │ │ ├── link-preview.api.ts │ │ │ │ ├── menu.api.ts │ │ │ │ ├── menubar.api.ts │ │ │ │ ├── meter.api.ts │ │ │ │ ├── navigation-menu.api.ts │ │ │ │ ├── pagination.api.ts │ │ │ │ ├── pin-input.api.ts │ │ │ │ ├── popover.api.ts │ │ │ │ ├── portal.api.ts │ │ │ │ ├── progress.api.ts │ │ │ │ ├── radio-group.api.ts │ │ │ │ ├── range-calendar.api.ts │ │ │ │ ├── rating-group.api.ts │ │ │ │ ├── scroll-area.api.ts │ │ │ │ ├── select.api.ts │ │ │ │ ├── separator.api.ts │ │ │ │ ├── slider.api.ts │ │ │ │ ├── switch.api.ts │ │ │ │ ├── tabs.api.ts │ │ │ │ ├── time-field.api.ts │ │ │ │ ├── time-range-field.api.ts │ │ │ │ ├── toggle-group.api.ts │ │ │ │ ├── toggle.api.ts │ │ │ │ ├── toolbar.api.ts │ │ │ │ └── tooltip.api.ts │ │ │ ├── constants.ts │ │ │ └── index.ts │ │ ├── scripts │ │ │ └── build-search.ts │ │ ├── styles │ │ │ ├── app.css │ │ │ ├── buttonVariants.ts │ │ │ ├── command │ │ │ │ ├── command.css │ │ │ │ ├── globals.css │ │ │ │ └── icons.css │ │ │ ├── markdown.css │ │ │ └── themes │ │ │ │ ├── custom-dark.json │ │ │ │ ├── custom-light.json │ │ │ │ ├── serendipity-midnight.json │ │ │ │ ├── serendipity-morning.json │ │ │ │ ├── tokyo-night-light.json │ │ │ │ └── tokyo-night-storm.json │ │ ├── types │ │ │ ├── api.ts │ │ │ └── index.ts │ │ └── utils │ │ │ ├── copy-to-clipboard.svelte.ts │ │ │ ├── docs.ts │ │ │ ├── index.ts │ │ │ ├── markdown.ts │ │ │ ├── omit.ts │ │ │ ├── open-in-stackblitz.ts │ │ │ ├── search.ts │ │ │ ├── styles.ts │ │ │ ├── use-site-config.svelte.ts │ │ │ └── use-toc.svelte.ts │ └── routes │ │ ├── (docs) │ │ ├── +error.svelte │ │ ├── +layout.svelte │ │ ├── docs │ │ │ ├── +page.ts │ │ │ ├── [...slug] │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── components │ │ │ │ └── [name] │ │ │ │ │ ├── +page.svelte │ │ │ │ │ └── +page.ts │ │ │ └── utilities │ │ │ │ └── [name] │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ └── sink │ │ │ ├── +page.svelte │ │ │ ├── combobox.svelte │ │ │ └── range-cal.svelte │ │ ├── (examples) │ │ └── examples │ │ │ └── command │ │ │ ├── +layout.svelte │ │ │ ├── +page.svelte │ │ │ └── sink │ │ │ └── +page.svelte │ │ ├── +layout.svelte │ │ ├── +page.svelte │ │ ├── +page.ts │ │ ├── api │ │ ├── demos.json │ │ │ └── +server.ts │ │ └── search.json │ │ │ ├── +server.ts │ │ │ └── search.json │ │ ├── repro │ │ └── +page.ts │ │ └── stackblitz │ │ └── +page.svelte ├── static │ ├── CalSans-SemiBold.woff2 │ ├── abstract.png │ ├── avatar-1.png │ ├── favicon-dark.svg │ ├── favicon-light.svg │ ├── favicon.png │ ├── img │ │ ├── bring-own-style.png │ │ ├── developer-exp.png │ │ └── learn.png │ ├── logo.svg │ ├── logo │ │ ├── bits-black.svg │ │ ├── bits-color-dark-mode.svg │ │ ├── bits-color-light-mode.svg │ │ ├── bits-gradient-dark-mode.svg │ │ ├── bits-gradient-light-mode.svg │ │ └── bits-white.svg │ └── og.png ├── svelte.config.js ├── tsconfig.json ├── velite.config.js ├── vite.config.ts └── wrangler.jsonc ├── eslint.config.js ├── package.json ├── packages └── bits-ui │ ├── .gitignore │ ├── .prettierignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── src │ ├── app.html │ └── lib │ │ ├── app.d.ts │ │ ├── bits │ │ ├── accordion │ │ │ ├── accordion.svelte.ts │ │ │ ├── components │ │ │ │ ├── accordion-content.svelte │ │ │ │ ├── accordion-header.svelte │ │ │ │ ├── accordion-item.svelte │ │ │ │ ├── accordion-trigger.svelte │ │ │ │ └── accordion.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── alert-dialog │ │ │ ├── components │ │ │ │ ├── alert-dialog-action.svelte │ │ │ │ ├── alert-dialog-cancel.svelte │ │ │ │ ├── alert-dialog-content.svelte │ │ │ │ └── alert-dialog.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── aspect-ratio │ │ │ ├── aspect-ratio.svelte.ts │ │ │ ├── components │ │ │ │ └── aspect-ratio.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── avatar │ │ │ ├── avatar.svelte.ts │ │ │ ├── components │ │ │ │ ├── avatar-fallback.svelte │ │ │ │ ├── avatar-image.svelte │ │ │ │ └── avatar.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── button │ │ │ ├── components │ │ │ │ └── button.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── calendar │ │ │ ├── calendar.svelte.ts │ │ │ ├── components │ │ │ │ ├── calendar-cell.svelte │ │ │ │ ├── calendar-day.svelte │ │ │ │ ├── calendar-grid-body.svelte │ │ │ │ ├── calendar-grid-head.svelte │ │ │ │ ├── calendar-grid-row.svelte │ │ │ │ ├── calendar-grid.svelte │ │ │ │ ├── calendar-head-cell.svelte │ │ │ │ ├── calendar-header.svelte │ │ │ │ ├── calendar-heading.svelte │ │ │ │ ├── calendar-next-button.svelte │ │ │ │ ├── calendar-prev-button.svelte │ │ │ │ └── calendar.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── checkbox │ │ │ ├── checkbox.svelte.ts │ │ │ ├── components │ │ │ │ ├── checkbox-group-label.svelte │ │ │ │ ├── checkbox-group.svelte │ │ │ │ ├── checkbox-input.svelte │ │ │ │ └── checkbox.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── collapsible │ │ │ ├── collapsible.svelte.ts │ │ │ ├── components │ │ │ │ ├── collapsible-content.svelte │ │ │ │ ├── collapsible-trigger.svelte │ │ │ │ └── collapsible.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── combobox │ │ │ ├── components │ │ │ │ ├── combobox-input.svelte │ │ │ │ ├── combobox-trigger.svelte │ │ │ │ └── combobox.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── command │ │ │ ├── command.svelte.ts │ │ │ ├── components │ │ │ │ ├── _command-label.svelte │ │ │ │ ├── command-empty.svelte │ │ │ │ ├── command-group-heading.svelte │ │ │ │ ├── command-group-items.svelte │ │ │ │ ├── command-group.svelte │ │ │ │ ├── command-input.svelte │ │ │ │ ├── command-item.svelte │ │ │ │ ├── command-link-item.svelte │ │ │ │ ├── command-list.svelte │ │ │ │ ├── command-loading.svelte │ │ │ │ ├── command-separator.svelte │ │ │ │ ├── command-viewport.svelte │ │ │ │ └── command.svelte │ │ │ ├── compute-command-score.ts │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── context-menu │ │ │ ├── components │ │ │ │ ├── context-menu-content-static.svelte │ │ │ │ ├── context-menu-content.svelte │ │ │ │ ├── context-menu-trigger.svelte │ │ │ │ └── context-menu.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── date-field │ │ │ ├── components │ │ │ │ ├── date-field-hidden-input.svelte │ │ │ │ ├── date-field-input.svelte │ │ │ │ ├── date-field-label.svelte │ │ │ │ ├── date-field-segment.svelte │ │ │ │ └── date-field.svelte │ │ │ ├── date-field.svelte.ts │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── date-picker │ │ │ ├── components │ │ │ │ ├── date-picker-calendar.svelte │ │ │ │ ├── date-picker-content-static.svelte │ │ │ │ ├── date-picker-content.svelte │ │ │ │ ├── date-picker-trigger.svelte │ │ │ │ └── date-picker.svelte │ │ │ ├── date-picker.svelte.ts │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── date-range-field │ │ │ ├── components │ │ │ │ ├── date-range-field-input.svelte │ │ │ │ ├── date-range-field-label.svelte │ │ │ │ └── date-range-field.svelte │ │ │ ├── date-range-field.svelte.ts │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── date-range-picker │ │ │ ├── components │ │ │ │ ├── date-range-picker-calendar.svelte │ │ │ │ ├── date-range-picker-trigger.svelte │ │ │ │ └── date-range-picker.svelte │ │ │ ├── date-range-picker.svelte.ts │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── dialog │ │ │ ├── components │ │ │ │ ├── dialog-close.svelte │ │ │ │ ├── dialog-content.svelte │ │ │ │ ├── dialog-description.svelte │ │ │ │ ├── dialog-overlay.svelte │ │ │ │ ├── dialog-title.svelte │ │ │ │ ├── dialog-trigger.svelte │ │ │ │ └── dialog.svelte │ │ │ ├── dialog.svelte.ts │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── dropdown-menu │ │ │ ├── components │ │ │ │ ├── dropdown-menu-content-static.svelte │ │ │ │ └── dropdown-menu-content.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── label │ │ │ ├── components │ │ │ │ └── label.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── label.svelte.ts │ │ │ └── types.ts │ │ ├── link-preview │ │ │ ├── components │ │ │ │ ├── link-preview-content-static.svelte │ │ │ │ ├── link-preview-content.svelte │ │ │ │ ├── link-preview-trigger.svelte │ │ │ │ └── link-preview.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── link-preview.svelte.ts │ │ │ └── types.ts │ │ ├── menu │ │ │ ├── components │ │ │ │ ├── menu-arrow.svelte │ │ │ │ ├── menu-checkbox-group.svelte │ │ │ │ ├── menu-checkbox-item.svelte │ │ │ │ ├── menu-content-static.svelte │ │ │ │ ├── menu-content.svelte │ │ │ │ ├── menu-group-heading.svelte │ │ │ │ ├── menu-group.svelte │ │ │ │ ├── menu-item.svelte │ │ │ │ ├── menu-radio-group.svelte │ │ │ │ ├── menu-radio-item.svelte │ │ │ │ ├── menu-separator.svelte │ │ │ │ ├── menu-sub-content-static.svelte │ │ │ │ ├── menu-sub-content.svelte │ │ │ │ ├── menu-sub-trigger.svelte │ │ │ │ ├── menu-sub.svelte │ │ │ │ ├── menu-trigger.svelte │ │ │ │ └── menu.svelte │ │ │ ├── exports.ts │ │ │ ├── menu.svelte.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── menubar │ │ │ ├── components │ │ │ │ ├── menubar-content-static.svelte │ │ │ │ ├── menubar-content.svelte │ │ │ │ ├── menubar-menu.svelte │ │ │ │ ├── menubar-trigger.svelte │ │ │ │ └── menubar.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── menubar.svelte.ts │ │ │ └── types.ts │ │ ├── meter │ │ │ ├── components │ │ │ │ └── meter.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── meter.svelte.ts │ │ │ └── types.ts │ │ ├── navigation-menu │ │ │ ├── components │ │ │ │ ├── navigation-menu-content-impl.svelte │ │ │ │ ├── navigation-menu-content.svelte │ │ │ │ ├── navigation-menu-indicator-impl.svelte │ │ │ │ ├── navigation-menu-indicator.svelte │ │ │ │ ├── navigation-menu-item.svelte │ │ │ │ ├── navigation-menu-link.svelte │ │ │ │ ├── navigation-menu-list.svelte │ │ │ │ ├── navigation-menu-sub.svelte │ │ │ │ ├── navigation-menu-trigger.svelte │ │ │ │ ├── navigation-menu-viewport.svelte │ │ │ │ └── navigation-menu.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── navigation-menu.svelte.ts │ │ │ └── types.ts │ │ ├── pagination │ │ │ ├── components │ │ │ │ ├── pagination-next-button.svelte │ │ │ │ ├── pagination-page.svelte │ │ │ │ ├── pagination-prev-button.svelte │ │ │ │ └── pagination.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── pagination.svelte.ts │ │ │ └── types.ts │ │ ├── pin-input │ │ │ ├── components │ │ │ │ ├── pin-input-cell.svelte │ │ │ │ └── pin-input.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── pin-input.svelte.ts │ │ │ ├── types.ts │ │ │ └── usePasswordManager.svelte.ts │ │ ├── popover │ │ │ ├── components │ │ │ │ ├── popover-arrow.svelte │ │ │ │ ├── popover-close.svelte │ │ │ │ ├── popover-content-static.svelte │ │ │ │ ├── popover-content.svelte │ │ │ │ ├── popover-trigger.svelte │ │ │ │ └── popover.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── popover.svelte.ts │ │ │ └── types.ts │ │ ├── progress │ │ │ ├── components │ │ │ │ └── progress.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── progress.svelte.ts │ │ │ └── types.ts │ │ ├── radio-group │ │ │ ├── components │ │ │ │ ├── radio-group-input.svelte │ │ │ │ ├── radio-group-item.svelte │ │ │ │ └── radio-group.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── radio-group.svelte.ts │ │ │ └── types.ts │ │ ├── range-calendar │ │ │ ├── components │ │ │ │ ├── range-calendar-cell.svelte │ │ │ │ ├── range-calendar-day.svelte │ │ │ │ └── range-calendar.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── range-calendar.svelte.ts │ │ │ └── types.ts │ │ ├── rating-group │ │ │ ├── components │ │ │ │ ├── rating-group-input.svelte │ │ │ │ ├── rating-group-item.svelte │ │ │ │ └── rating-group.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── rating-group.svelte.ts │ │ │ └── types.ts │ │ ├── scroll-area │ │ │ ├── components │ │ │ │ ├── scroll-area-corner-impl.svelte │ │ │ │ ├── scroll-area-corner.svelte │ │ │ │ ├── scroll-area-scrollbar-auto.svelte │ │ │ │ ├── scroll-area-scrollbar-hover.svelte │ │ │ │ ├── scroll-area-scrollbar-scroll.svelte │ │ │ │ ├── scroll-area-scrollbar-shared.svelte │ │ │ │ ├── scroll-area-scrollbar-visible.svelte │ │ │ │ ├── scroll-area-scrollbar-x.svelte │ │ │ │ ├── scroll-area-scrollbar-y.svelte │ │ │ │ ├── scroll-area-scrollbar.svelte │ │ │ │ ├── scroll-area-thumb-impl.svelte │ │ │ │ ├── scroll-area-thumb.svelte │ │ │ │ ├── scroll-area-viewport.svelte │ │ │ │ └── scroll-area.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── scroll-area.svelte.ts │ │ │ └── types.ts │ │ ├── select │ │ │ ├── components │ │ │ │ ├── select-content-static.svelte │ │ │ │ ├── select-content.svelte │ │ │ │ ├── select-group-heading.svelte │ │ │ │ ├── select-group.svelte │ │ │ │ ├── select-hidden-input.svelte │ │ │ │ ├── select-item.svelte │ │ │ │ ├── select-scroll-down-button.svelte │ │ │ │ ├── select-scroll-up-button.svelte │ │ │ │ ├── select-trigger.svelte │ │ │ │ ├── select-viewport.svelte │ │ │ │ └── select.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── select.svelte.ts │ │ │ └── types.ts │ │ ├── separator │ │ │ ├── components │ │ │ │ └── separator.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── separator.svelte.ts │ │ │ └── types.ts │ │ ├── slider │ │ │ ├── components │ │ │ │ ├── slider-range.svelte │ │ │ │ ├── slider-thumb-label.svelte │ │ │ │ ├── slider-thumb.svelte │ │ │ │ ├── slider-tick-label.svelte │ │ │ │ ├── slider-tick.svelte │ │ │ │ └── slider.svelte │ │ │ ├── exports.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── slider.svelte.ts │ │ │ └── types.ts │ │ ├── switch │ │ │ ├── components │ │ │ │ ├── switch-input.svelte │ │ │ │ ├── switch-thumb.svelte │ │ │ │ └── switch.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── switch.svelte.ts │ │ │ └── types.ts │ │ ├── tabs │ │ │ ├── components │ │ │ │ ├── tabs-content.svelte │ │ │ │ ├── tabs-list.svelte │ │ │ │ ├── tabs-trigger.svelte │ │ │ │ └── tabs.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── tabs.svelte.ts │ │ │ └── types.ts │ │ ├── time-field │ │ │ ├── components │ │ │ │ ├── time-field-hidden-input.svelte │ │ │ │ ├── time-field-input.svelte │ │ │ │ ├── time-field-label.svelte │ │ │ │ ├── time-field-segment.svelte │ │ │ │ └── time-field.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── time-field.svelte.ts │ │ │ └── types.ts │ │ ├── time-range-field │ │ │ ├── components │ │ │ │ ├── time-range-field-input.svelte │ │ │ │ ├── time-range-field-label.svelte │ │ │ │ └── time-range-field.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── time-range-field.svelte.ts │ │ │ └── types.ts │ │ ├── toggle-group │ │ │ ├── components │ │ │ │ ├── toggle-group-item.svelte │ │ │ │ └── toggle-group.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── toggle-group.svelte.ts │ │ │ └── types.ts │ │ ├── toggle │ │ │ ├── components │ │ │ │ └── toggle.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── toggle.svelte.ts │ │ │ └── types.ts │ │ ├── toolbar │ │ │ ├── components │ │ │ │ ├── toolbar-button.svelte │ │ │ │ ├── toolbar-group-item.svelte │ │ │ │ ├── toolbar-group.svelte │ │ │ │ ├── toolbar-link.svelte │ │ │ │ └── toolbar.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── toolbar.svelte.ts │ │ │ └── types.ts │ │ ├── tooltip │ │ │ ├── components │ │ │ │ ├── tooltip-arrow.svelte │ │ │ │ ├── tooltip-content-static.svelte │ │ │ │ ├── tooltip-content.svelte │ │ │ │ ├── tooltip-provider.svelte │ │ │ │ ├── tooltip-trigger.svelte │ │ │ │ └── tooltip.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── tooltip.svelte.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ └── utilities │ │ │ ├── arrow │ │ │ ├── arrow.svelte │ │ │ ├── index.ts │ │ │ └── types.ts │ │ │ ├── config │ │ │ ├── bits-config.ts │ │ │ ├── components │ │ │ │ └── bits-config.svelte │ │ │ ├── exports.ts │ │ │ ├── index.ts │ │ │ ├── prop-resolvers.ts │ │ │ └── types.ts │ │ │ ├── dismissible-layer │ │ │ ├── dismissible-layer.svelte │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── use-dismissable-layer.svelte.ts │ │ │ ├── escape-layer │ │ │ ├── escape-layer.svelte │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── use-escape-layer.svelte.ts │ │ │ ├── floating-layer │ │ │ ├── components │ │ │ │ ├── floating-layer-anchor.svelte │ │ │ │ ├── floating-layer-arrow.svelte │ │ │ │ ├── floating-layer-content-static.svelte │ │ │ │ ├── floating-layer-content.svelte │ │ │ │ ├── floating-layer.svelte │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── use-floating-layer.svelte.ts │ │ │ ├── focus-scope │ │ │ ├── focus-scope-stack.svelte.ts │ │ │ ├── focus-scope.svelte │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── use-focus-scope.svelte.ts │ │ │ ├── hidden-input.svelte │ │ │ ├── index.ts │ │ │ ├── is-using-keyboard │ │ │ └── is-using-keyboard.svelte.ts │ │ │ ├── mounted.svelte │ │ │ ├── popper-layer │ │ │ ├── index.ts │ │ │ ├── popper-content.svelte │ │ │ ├── popper-layer-force-mount.svelte │ │ │ ├── popper-layer-inner.svelte │ │ │ ├── popper-layer.svelte │ │ │ └── types.ts │ │ │ ├── portal │ │ │ ├── index.ts │ │ │ ├── portal-consumer.svelte │ │ │ ├── portal.svelte │ │ │ └── types.ts │ │ │ ├── presence-layer │ │ │ ├── index.ts │ │ │ ├── presence-layer.svelte │ │ │ ├── types.ts │ │ │ └── use-presence.svelte.ts │ │ │ ├── scroll-lock │ │ │ ├── index.ts │ │ │ └── scroll-lock.svelte │ │ │ ├── text-selection-layer │ │ │ ├── index.ts │ │ │ ├── text-selection-layer.svelte │ │ │ ├── types.ts │ │ │ └── use-text-selection-layer.svelte.ts │ │ │ └── visually-hidden │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── visually-hidden.svelte │ │ ├── index.ts │ │ ├── internal │ │ ├── arrays.test.ts │ │ ├── arrays.ts │ │ ├── attrs.test.ts │ │ ├── attrs.ts │ │ ├── box-auto-reset.svelte.ts │ │ ├── box.svelte.ts │ │ ├── clamp.test.ts │ │ ├── clamp.ts │ │ ├── create-event-hook.svelte.ts │ │ ├── create-id.ts │ │ ├── create-shared-hook.svelte.ts │ │ ├── date-time │ │ │ ├── announcer.ts │ │ │ ├── calendar-helpers.svelte.ts │ │ │ ├── field │ │ │ │ ├── helpers.ts │ │ │ │ ├── parts.ts │ │ │ │ ├── segments.ts │ │ │ │ ├── time-helpers.ts │ │ │ │ └── types.ts │ │ │ ├── formatter.ts │ │ │ ├── placeholders.ts │ │ │ └── utils.ts │ │ ├── debounce.test.ts │ │ ├── debounce.ts │ │ ├── dom.ts │ │ ├── elements.ts │ │ ├── events.ts │ │ ├── floating-svelte │ │ │ ├── floating-utils.svelte.ts │ │ │ ├── types.ts │ │ │ └── use-floating.svelte.ts │ │ ├── focus.ts │ │ ├── get-directional-keys.test.ts │ │ ├── get-directional-keys.ts │ │ ├── is.test.ts │ │ ├── is.ts │ │ ├── kbd-constants.ts │ │ ├── kbd.ts │ │ ├── locale.ts │ │ ├── math.test.ts │ │ ├── math.ts │ │ ├── noop.ts │ │ ├── should-trap-focus.ts │ │ ├── sleep.ts │ │ ├── tabbable.ts │ │ ├── types.ts │ │ ├── use-after-animations.svelte.ts │ │ ├── use-arrow-navigation.ts │ │ ├── use-body-scroll-lock.svelte.ts │ │ ├── use-data-typeahead.svelte.ts │ │ ├── use-dom-typeahead.svelte.ts │ │ ├── use-form-control.svelte.ts │ │ ├── use-grace-area.svelte.ts │ │ ├── use-id.ts │ │ ├── use-resize-observer.svelte.ts │ │ ├── use-roving-focus.svelte.ts │ │ ├── use-state-machine.svelte.ts │ │ └── use-timeout-fn.svelte.ts │ │ ├── shared │ │ ├── attributes.ts │ │ ├── css.d.ts │ │ ├── date │ │ │ └── types.ts │ │ ├── index.ts │ │ └── types.ts │ │ └── types.ts │ ├── svelte.config.js │ ├── tsconfig.json │ └── vite.config.ts ├── pnpm-lock.yaml ├── pnpm-workspace.yaml └── tests ├── .gitignore ├── .npmrc ├── README.md ├── other └── setup-test.ts ├── package.json ├── src ├── app.d.ts ├── app.html └── tests │ ├── accordion │ ├── accordion-multi-test-controlled.svelte │ ├── accordion-multi-test.svelte │ ├── accordion-single-force-mount-test.svelte │ ├── accordion-single-test-controlled.svelte │ ├── accordion-single-test.svelte │ ├── accordion-test-isolated.svelte │ └── accordion.test.ts │ ├── alert-dialog │ ├── alert-dialog-force-mount-test.svelte │ ├── alert-dialog-test.svelte │ └── alert-dialog.test.ts │ ├── avatar │ ├── avatar-test.svelte │ └── avatar.test.ts │ ├── calendar │ ├── calendar-multi-test.svelte │ ├── calendar-test.svelte │ └── calendar.test.ts │ ├── checkbox │ ├── checkbox-group-test.svelte │ ├── checkbox-test.svelte │ └── checkbox.test.ts │ ├── collapsible │ ├── collapsible-force-mount-test.svelte │ ├── collapsible-test.svelte │ └── collapsible.test.ts │ ├── combobox │ ├── combobox-force-mount-test.svelte │ ├── combobox-multi-test.svelte │ ├── combobox-test.svelte │ └── combobox.test.ts │ ├── command │ ├── command-test.svelte │ ├── command.test.ts │ └── compute-command-score.test.ts │ ├── context-menu │ ├── context-menu-force-mount-test.svelte │ ├── context-menu-test.svelte │ └── context-menu.test.ts │ ├── date-field │ ├── date-field-test.svelte │ └── date-field.test.ts │ ├── date-range-field │ ├── date-range-field-test.svelte │ └── date-range-field.test.ts │ ├── date-range-picker │ ├── date-range-picker-test.svelte │ └── date-range-picker.test.ts │ ├── dialog │ ├── dialog-nested-test.svelte │ ├── dialog-test.svelte │ └── dialog.test.ts │ ├── dropdown-menu │ ├── dropdown-menu-force-mount-test.svelte │ ├── dropdown-menu-test.svelte │ └── dropdown-menu.test.ts │ ├── helpers │ ├── calendar.ts │ └── select.ts │ ├── label │ ├── label-test.svelte │ └── label.test.ts │ ├── link-preview │ ├── link-preview-force-mount-test.svelte │ ├── link-preview-test.svelte │ └── link-preview.test.ts │ ├── menubar │ ├── menubar-menu-test.svelte │ ├── menubar-test.svelte │ └── menubar.test.ts │ ├── meter │ ├── meter-test.svelte │ └── meter.test.ts │ ├── navigation-menu │ ├── navigation-menu-test.svelte │ └── navigation-menu.test.ts │ ├── outside-click.ts │ ├── pagination │ ├── pagination-test.svelte │ └── pagination.test.ts │ ├── pin-input │ ├── pin-input-test.svelte │ └── pin-input.test.ts │ ├── popover │ ├── popover-force-mount-test.svelte │ ├── popover-siblings-test.svelte │ ├── popover-test.svelte │ └── popover.test.ts │ ├── portal │ ├── portal-test.svelte │ └── portal.test.ts │ ├── progress │ ├── progress-test.svelte │ └── progress.test.ts │ ├── radio-group │ ├── radio-group-popover-test.svelte │ ├── radio-group-test.svelte │ └── radio-group.test.ts │ ├── range-calendar │ ├── range-calendar-test.svelte │ └── range-calendar.test.ts │ ├── rating-group │ ├── rating-group-test.svelte │ └── rating-group.test.ts │ ├── scroll-area │ ├── scroll-area-test.svelte │ └── scroll-area.test.ts │ ├── select │ ├── select-force-mount-test.svelte │ ├── select-multi-test.svelte │ ├── select-test.svelte │ └── select.test.ts │ ├── separator │ ├── separator-test.svelte │ └── separator.test.ts │ ├── slider │ ├── slider-range-test.svelte │ ├── slider-test-multi.svelte │ ├── slider-test-with-labels.svelte │ └── slider.test.ts │ ├── switch │ ├── switch-test.svelte │ └── switch.test.ts │ ├── tabs │ ├── tabs-test.svelte │ └── tabs.test.ts │ ├── time-field │ ├── time-field-test.svelte │ └── time-field.test.ts │ ├── time-range-field │ ├── time-range-field-test.svelte │ └── time-range-field.test.ts │ ├── toggle-group │ ├── toggle-group-multi-test.svelte │ ├── toggle-group-test.svelte │ └── toggle-group.test.ts │ ├── toggle │ ├── toggle-test.svelte │ └── toggle.test.ts │ ├── toolbar │ ├── toolbar-test.svelte │ └── toolbar.test.ts │ ├── tooltip │ ├── tooltip-force-mount-test.svelte │ ├── tooltip-popover-test.svelte │ ├── tooltip-test.svelte │ └── tooltip.test.ts │ ├── utilities │ ├── bits-config │ │ ├── bits-config-test.svelte │ │ └── bits-config.test.ts │ └── is-using-keyboard │ │ ├── index.test.ts │ │ └── is-using-keyboard-test.svelte │ └── utils.ts ├── static └── favicon.png ├── svelte.config.js ├── tsconfig.json └── vite.config.ts /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", 3 | "changelog": ["@svitejs/changesets-changelog-github-compact", { "repo": "huntabyte/bits-ui" }], 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": ["docs", "tests"] 11 | } 12 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [huntabyte] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: huntabyte 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/1-documentation_change.yml: -------------------------------------------------------------------------------- 1 | name: 📖 Report Docs Issue 2 | description: Suggest an addition or modification to the documentation 3 | labels: [triage] 4 | body: 5 | - type: dropdown 6 | attributes: 7 | label: Change Type 8 | description: What type of change are you proposing? 9 | options: 10 | - Addition 11 | - Correction 12 | - Removal 13 | - Cleanup (formatting, typos, etc.) 14 | validations: 15 | required: true 16 | 17 | - type: textarea 18 | attributes: 19 | label: Proposed Changes 20 | description: Describe the proposed changes and why they are necessary 21 | validations: 22 | required: true 23 | -------------------------------------------------------------------------------- /.github/workflows/reproduire.yml: -------------------------------------------------------------------------------- 1 | name: Reproduire 2 | on: 3 | issues: 4 | types: [labeled] 5 | 6 | permissions: 7 | issues: write 8 | 9 | jobs: 10 | reproduire: 11 | runs-on: macos-latest 12 | steps: 13 | - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 14 | - uses: Hebilicious/reproduire@4b686ae9cbb72dad60f001d278b6e3b2ce40a9ac # v0.0.9-mp 15 | with: 16 | label: needs reproduction 17 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v20.15.1 -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | **/build 4 | **/.svelte-kit 5 | .env 6 | .env.* 7 | !.env.example 8 | 9 | # Ignore files for PNPM, NPM and YARN 10 | pnpm-lock.yaml 11 | package-lock.json 12 | yarn.lock 13 | **/.changeset/ 14 | .prettierrc 15 | package.json 16 | .vercel 17 | .contentlayer 18 | .velite 19 | **/dist 20 | 21 | CHANGELOG.md 22 | 23 | vite.config.js.timestamp-* 24 | vite.config.ts.timestamp-* 25 | docs/src/routes/api/search.json/search.json 26 | docs/src/routes/api/demos.json/demos.json 27 | docs/src/routes/api/demos.json/stackblitz-files.json -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "tabWidth": 4, 4 | "singleQuote": false, 5 | "trailingComma": "es5", 6 | "semi": true, 7 | "printWidth": 100, 8 | "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], 9 | "overrides": [ 10 | { 11 | "files": "*.svelte", 12 | "options": { 13 | "parser": "svelte" 14 | } 15 | } 16 | ], 17 | "tailwindFunctions": ["clsx", "cn", "tv"] 18 | } 19 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /dist 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | .vercel 13 | .velite 14 | 15 | ## contentlayer build output 16 | .contentlayer -------------------------------------------------------------------------------- /docs/.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | .changeset/ 15 | .prettierrc 16 | package.json 17 | .vercel 18 | .contentlayer 19 | .velite 20 | dist 21 | 22 | vite.config.js.timestamp-* 23 | vite.config.ts.timestamp-* 24 | docs/src/lib/content/api-reference/extended-types/**/* 25 | ./src/routes/api/search.json/search.json -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Bits UI Documentation 2 | -------------------------------------------------------------------------------- /docs/content/components/button.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Button 3 | description: A component that if passed a `href` prop will render an anchor element instead of a button element. 4 | --- 5 | 6 | 10 | 11 | 12 | 13 | {#snippet preview()} 14 | 15 | {/snippet} 16 | 17 | 18 | 19 | ## Structure 20 | 21 | ```svelte 22 | 25 | 26 | 27 | ``` 28 | 29 | 30 | -------------------------------------------------------------------------------- /docs/content/components/label.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Label 3 | description: Identifies or describes associated UI elements. 4 | --- 5 | 6 | 10 | 11 | 12 | 13 | {#snippet preview()} 14 | 15 | {/snippet} 16 | 17 | 18 | 19 | ## Structure 20 | 21 | ```svelte 22 | 25 | 26 | 27 | ``` 28 | 29 | 30 | -------------------------------------------------------------------------------- /docs/content/components/separator.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Separator 3 | description: Visually separates content or UI elements for clarity and organization. 4 | --- 5 | 6 | 10 | 11 | 12 | 13 | {#snippet preview()} 14 | 15 | {/snippet} 16 | 17 | 18 | 19 | ## Structure 20 | 21 | ```svelte 22 | 25 | 26 | 27 | ``` 28 | 29 | 30 | -------------------------------------------------------------------------------- /docs/content/figma-file.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Figma 3 | description: Every component recreated in Figma. 4 | llms: false 5 | --- 6 | 7 | The Figma UI Kit is open sourced by [Pavel Stianko](https://twitter.com/pavel_stianko). 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ## Grab a copy 19 | 20 | https://www.figma.com/community/file/1430229712135910564/bits-ui-kit 21 | -------------------------------------------------------------------------------- /docs/content/utilities/is-using-keyboard.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: IsUsingKeyboard 3 | description: A utility to track whether the user is actively using the keyboard or not. 4 | --- 5 | 6 | ## Overview 7 | 8 | `IsUsingKeyboard` is a utility component that tracks whether the user is actively using the keyboard or not. This component is used internally by Bits UI components to provide keyboard accessibility features. 9 | 10 | It provides global state that is shared across all instances of the class to prevent duplicate event listener registration. 11 | 12 | ## Usage 13 | 14 | ```svelte 15 | 21 | ``` 22 | -------------------------------------------------------------------------------- /docs/content/utilities/use-id.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: useId 3 | description: A utility function to generate unique IDs. 4 | --- 5 | 6 | The `useId` function is a utility function that can be used to generate unique IDs. This function is used internally by all Bits UI components and is exposed for your convenience. 7 | 8 | ## Usage 9 | 10 | ```svelte 11 | 16 | 17 | 18 | 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/other/code-block-prettier.js: -------------------------------------------------------------------------------- 1 | //@ts-check 2 | 3 | /** @type {import('prettier').Config} */ 4 | export const codeBlockPrettierConfig = { 5 | useTabs: false, 6 | tabWidth: 2, 7 | singleQuote: false, 8 | trailingComma: "none", 9 | printWidth: 80, 10 | endOfLine: "lf", 11 | parser: "svelte", 12 | plugins: ["prettier-plugin-svelte"], 13 | overrides: [ 14 | { 15 | files: "*.svelte", 16 | options: { 17 | parser: "svelte", 18 | }, 19 | }, 20 | ], 21 | bracketSameLine: false, 22 | }; 23 | -------------------------------------------------------------------------------- /docs/src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface Platform {} 9 | } 10 | 11 | declare module "*.md"; 12 | } 13 | 14 | export {}; 15 | -------------------------------------------------------------------------------- /docs/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 15 | 16 | %sveltekit.head% 17 | 18 | 19 | 20 | 24 |
%sveltekit.body%
25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/src/hooks.server.ts: -------------------------------------------------------------------------------- 1 | export async function handle({ event, resolve }) { 2 | return await resolve(event); 3 | } 4 | -------------------------------------------------------------------------------- /docs/src/lib/components/api-ref/index.ts: -------------------------------------------------------------------------------- 1 | export { default as DataAttrsTable } from "./data-attrs-table.svelte"; 2 | export { default as PropsTable } from "./props-table.svelte"; 3 | export { default as CSSVarsTable } from "./css-vars-table.svelte"; 4 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/accordion-demo-multiple.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/accordion-demo-single.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/aspect-ratio-demo.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | an abstract painting 11 | 12 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/avatar-demo.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 9 |
12 | 13 | HB 14 |
15 |
16 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/button-demo.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | Unlimited 11 | 12 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/dialog-demo-nested.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | {#snippet title()} 9 | First Dialog 10 | {/snippet} 11 | {#snippet description()} 12 | This is the first dialog. 13 | {/snippet} 14 | 15 | {#snippet title()} 16 | Second Dialog 17 | {/snippet} 18 | {#snippet description()} 19 | This is the second dialog. 20 | {/snippet} 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/portal-demo.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |
9 |
10 |
11 | 12 | 13 |
14 |
15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/rating-group-demo.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | {#snippet children({ items })} 9 | {#each items as item (item.index)} 10 | 14 | 15 | 16 | {/each} 17 | {/snippet} 18 | 19 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/select-demo-custom-anchor.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 |
10 |
Custom Anchor
11 | 16 |
17 |
18 | -------------------------------------------------------------------------------- /docs/src/lib/components/demos/tooltip-demo-delay-duration.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 |
10 | {#each durations as duration (duration)} 11 |
12 | 13 |
delayDuration={duration}
14 |
15 | {/each} 16 |
17 |
18 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/command-wrapper.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |
15 | {@render children?.()} 16 |
17 |
18 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/framer/icons/badge.svelte: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/framer/icons/index.ts: -------------------------------------------------------------------------------- 1 | export { default as AvatarIcon } from "./avatar.svelte"; 2 | export { default as BadgeIcon } from "./badge.svelte"; 3 | export { default as ButtonIcon } from "./button.svelte"; 4 | export { default as ContainerIcon } from "./container.svelte"; 5 | export { default as InputIcon } from "./input.svelte"; 6 | export { default as RadioIcon } from "./radio.svelte"; 7 | export { default as SearchIcon } from "./search.svelte"; 8 | export { default as SliderIcon } from "./slider.svelte"; 9 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/framer/icons/search.svelte: -------------------------------------------------------------------------------- 1 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/framer/icons/slider.svelte: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/icons/copied.svelte: -------------------------------------------------------------------------------- 1 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/icons/copy.svelte: -------------------------------------------------------------------------------- 1 | 2 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/icons/figma.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/icons/framer.svelte: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/icons/index.ts: -------------------------------------------------------------------------------- 1 | export { default as CopiedIcon } from "./copied.svelte"; 2 | export { default as CopyIcon } from "./copy.svelte"; 3 | export { default as FigmaIcon } from "./figma.svelte"; 4 | export { default as FramerIcon } from "./framer.svelte"; 5 | export { default as GitHubIcon } from "./github.svelte"; 6 | export { default as LinearIcon } from "./linear.svelte"; 7 | export { default as RaycastIcon } from "./raycast.svelte"; 8 | export { default as SlackIcon } from "./slack.svelte"; 9 | export { default as VercelIcon } from "./vercel.svelte"; 10 | export { default as YouTubeIcon } from "./youtube.svelte"; 11 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/icons/vercel.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/icons/youtube.svelte: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/linear/icons/assign-to.svelte: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/linear/icons/change-labels.svelte: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/linear/icons/change-priority.svelte: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/linear/icons/change-status.svelte: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/linear/icons/index.ts: -------------------------------------------------------------------------------- 1 | export { default as AssignToIcon } from "./assign-to.svelte"; 2 | export { default as AssignToMeIcon } from "./assign-to-me.svelte"; 3 | export { default as ChangeLabelsIcon } from "./change-labels.svelte"; 4 | export { default as ChangePriorityIcon } from "./change-priority.svelte"; 5 | export { default as ChangeStatusIcon } from "./change-status.svelte"; 6 | export { default as RemoveLabelIcon } from "./remove-label.svelte"; 7 | export { default as SetDueDateIcon } from "./set-due-date.svelte"; 8 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/linear/icons/remove-label.svelte: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/logo.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 14 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/raycast/icons/finder.svelte: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/raycast/icons/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ClipboardIcon } from "./clipboard.svelte"; 2 | export { default as FinderIcon } from "./finder.svelte"; 3 | export { default as HammerIcon } from "./hammer.svelte"; 4 | export { default as RaycastDarkIcon } from "./raycast-dark.svelte"; 5 | export { default as RaycastLightIcon } from "./raycast-light.svelte"; 6 | export { default as StarIcon } from "./star.svelte"; 7 | export { default as WindowIcon } from "./window.svelte"; 8 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/raycast/icons/window.svelte: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/raycast/item.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | {@render children?.()} 22 | 23 | {#if isCommand} 24 | Command 25 | {:else} 26 | Application 27 | {/if} 28 | 29 | 30 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/raycast/sub-item.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | {@render children?.()} 10 |
11 | {#each shortcut.split(" ") as key, i (i)} 12 | {key} 13 | {/each} 14 |
15 |
16 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/icons/contact.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/icons/docs.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/icons/feedback.svelte: -------------------------------------------------------------------------------- 1 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/icons/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ContactIcon } from "./contact.svelte"; 2 | export { default as DocsIcon } from "./docs.svelte"; 3 | export { default as FeedbackIcon } from "./feedback.svelte"; 4 | export { default as PlusIcon } from "./plus.svelte"; 5 | export { default as ProjectsIcon } from "./projects.svelte"; 6 | export { default as TeamsIcon } from "./teams.svelte"; 7 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/icons/plus.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/icons/projects.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/icons/teams.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/item.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | {@render children?.()} 20 | {#if shortcut} 21 |
22 | {#each shortcut.split(" ") as key (key)} 23 | {key} 24 | {/each} 25 |
26 | {/if} 27 |
28 | -------------------------------------------------------------------------------- /docs/src/lib/components/examples/command/vercel/projects.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | {#each { length: 6 } as _, i (i)} 6 | 7 | Project {i + 1} 8 | 9 | {/each} 10 | -------------------------------------------------------------------------------- /docs/src/lib/components/icons/index.ts: -------------------------------------------------------------------------------- 1 | export { default as GitHub } from "./github.svelte"; 2 | export { default as SwitchOn } from "./switch-on.svelte"; 3 | export { default as SwitchOff } from "./switch-off.svelte"; 4 | export { default as Logo } from "./logo.svelte"; 5 | -------------------------------------------------------------------------------- /docs/src/lib/components/icons/stackblitz.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /docs/src/lib/components/icons/switch-off.svelte: -------------------------------------------------------------------------------- 1 |
4 | 7 |
8 | -------------------------------------------------------------------------------- /docs/src/lib/components/icons/switch-on.svelte: -------------------------------------------------------------------------------- 1 |
4 | 7 |
8 | -------------------------------------------------------------------------------- /docs/src/lib/components/icons/x-com.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/a.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | {@render children?.()} 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/blockquote.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | {@render children?.()} 10 |
11 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/blueprint.svelte: -------------------------------------------------------------------------------- 1 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/code.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | {@render children?.()} 16 | 17 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/h1.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |

9 | {@render children?.()} 10 |

11 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/h2.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |

15 | {@render children?.()} 16 |

17 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/h3.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |

12 | {@render children?.()} 13 |

14 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/h4.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |

9 | {@render children?.()} 10 |

11 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/h5.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | {@render children?.()} 10 |
11 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/h6.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | {@render children?.()} 10 |
11 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/hr.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/img.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/li.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
  • 8 | {@render children?.()} 9 |
  • 10 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/ol.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
      9 | {@render children?.()} 10 |
    11 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/p.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |

    13 | {@render children?.()} 14 |

    15 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/pre.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
    14 | 	{@render children?.()}
    15 | 
    16 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/table.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
    9 | 10 | {@render children?.()} 11 |
    12 |
    13 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/td.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 19 | {@render children?.()} 20 | 21 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/th.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 19 | {@render children?.()} 20 | 21 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/tr.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | {@render children?.()} 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/markdown/ul.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
      9 | {@render children?.()} 10 |
    11 | -------------------------------------------------------------------------------- /docs/src/lib/components/navigation/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SidebarNav } from "./sidebar-nav.svelte"; 2 | export { default as SidebarNavItems } from "./sidebar-nav-items.svelte"; 3 | export { default as SidebarNavMainItems } from "./sidebar-nav-main-items.svelte"; 4 | -------------------------------------------------------------------------------- /docs/src/lib/components/navigation/mobile-link.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 21 | {@render children?.()} 22 | 23 | -------------------------------------------------------------------------------- /docs/src/lib/components/page-header/index.ts: -------------------------------------------------------------------------------- 1 | export { default as PageHeader } from "./page-header.svelte"; 2 | export { default as PageHeaderHeading } from "./page-header-heading.svelte"; 3 | export { default as PageHeaderDescription } from "./page-header-description.svelte"; 4 | -------------------------------------------------------------------------------- /docs/src/lib/components/page-header/page-header-description.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |

    19 | {@render children?.()} 20 |

    21 | -------------------------------------------------------------------------------- /docs/src/lib/components/page-header/page-header-heading.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |

    9 | {@render children?.()} 10 |

    11 | -------------------------------------------------------------------------------- /docs/src/lib/components/page-header/page-header.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | {@render children?.()} 9 |
    10 | -------------------------------------------------------------------------------- /docs/src/lib/components/sidebar-sponsor.svelte: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | Your Logo Here 4 |

    5 | Support the project and reach thousands of developers. 6 |

    7 | 8 | Get in touch 9 | 10 |
    11 |
    12 | -------------------------------------------------------------------------------- /docs/src/lib/components/steps.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | {@render children?.()} 9 |
    10 | -------------------------------------------------------------------------------- /docs/src/lib/components/tailwind-indicator.svelte: -------------------------------------------------------------------------------- 1 |
    4 |
    xs
    5 | 6 | 7 | 8 | 9 | 10 |
    11 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/alert/alert-description.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
    13 | {@render children?.()} 14 |
    15 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/alert/alert-title.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
    14 | {@render children?.()} 15 |
    16 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/alert/alert.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 19 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/badge.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 19 | {@render children?.()} 20 | 21 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/button/button.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 18 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/sheet/index.ts: -------------------------------------------------------------------------------- 1 | import { Dialog as SheetPrimitive } from "bits-ui"; 2 | import Content from "./sheet-content.svelte"; 3 | import Description from "./sheet-description.svelte"; 4 | import Footer from "./sheet-footer.svelte"; 5 | import Header from "./sheet-header.svelte"; 6 | import Overlay from "./sheet-overlay.svelte"; 7 | import Title from "./sheet-title.svelte"; 8 | 9 | const Root = SheetPrimitive.Root; 10 | const Close = SheetPrimitive.Close; 11 | const Trigger = SheetPrimitive.Trigger; 12 | const Portal = SheetPrimitive.Portal; 13 | 14 | export { Close, Content, Description, Footer, Header, Overlay, Portal, Root, Title, Trigger }; 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/sheet/sheet-description.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | {@render children?.()} 15 | 16 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/sheet/sheet-footer.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
    12 | {@render children?.()} 13 |
    14 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/sheet/sheet-header.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
    9 | {@render children?.()} 10 |
    11 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/sheet/sheet-overlay.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/sheet/sheet-title.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | {@render children?.()} 10 | 11 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/index.ts: -------------------------------------------------------------------------------- 1 | import Root from "./table.svelte"; 2 | import Body from "./table-body.svelte"; 3 | import Caption from "./table-caption.svelte"; 4 | import Cell from "./table-cell.svelte"; 5 | import Footer from "./table-footer.svelte"; 6 | import Head from "./table-head.svelte"; 7 | import Header from "./table-header.svelte"; 8 | import Row from "./table-row.svelte"; 9 | 10 | export { 11 | Root, 12 | Body, 13 | Caption, 14 | Cell, 15 | Footer, 16 | Head, 17 | Header, 18 | Row, 19 | // 20 | Root as Table, 21 | Body as TableBody, 22 | Caption as TableCaption, 23 | Cell as TableCell, 24 | Footer as TableFooter, 25 | Head as TableHead, 26 | Header as TableHeader, 27 | Row as TableRow, 28 | }; 29 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/table-body.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | {@render children?.()} 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/table-caption.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | {@render children?.()} 10 | 11 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/table-cell.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | [role=checkbox]]:translate-y-[2px]", 15 | className 16 | )} 17 | {...restProps} 18 | > 19 | {@render children?.()} 20 | 21 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/table-footer.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | {@render children?.()} 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/table-head.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | [role=checkbox]]:translate-y-[2px]", 15 | className 16 | )} 17 | {...restProps} 18 | > 19 | {@render children?.()} 20 | 21 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/table-header.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | {@render children?.()} 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/table-row.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | {@render children?.()} 14 | 15 | -------------------------------------------------------------------------------- /docs/src/lib/components/ui/table/table.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
    9 | 10 | {@render children?.()} 11 |
    12 |
    13 | -------------------------------------------------------------------------------- /docs/src/lib/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./navigation.js"; 2 | export * from "./site.js"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/accordion/content-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type SnippetProps = { 3 | open: boolean; 4 | props: Record; 5 | }; 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/accordion/content-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type SnippetProps = { 3 | open: boolean; 4 | }; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/accordion/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ContentChildSnippetProps } from "./content-child-snippet-props.md"; 2 | export { default as ContentChildrenSnippetProps } from "./content-children-snippet-props.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/avatar/index.ts: -------------------------------------------------------------------------------- 1 | export { default as LoadingStatusProp } from "./loading-status-prop.md"; 2 | export { default as OnLoadingStatusChangeProp } from "./on-loading-status-change-prop.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/avatar/loading-status-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "loading" | "loaded" | "error"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/avatar/on-loading-status-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (status: "loading" | "loaded" | "error") => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/checkbox/checkbox-group-on-value-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (value: string[]) => void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/checkbox/checkbox-root-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildSnippetProps = { 3 | checked: boolean; 4 | indeterminate: boolean; 5 | props: Record; 6 | }; 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/checkbox/checkbox-root-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildrenSnippetProps = { 3 | checked: boolean; 4 | indeterminate: boolean; 5 | }; 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/checkbox/checkbox-root-on-checked-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (checked: boolean) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/checkbox/checkbox-root-on-indeterminate-change.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (indeterminate: boolean) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/checkbox/checkbox-root-state-data-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "checked" | "unchecked" | "indeterminate"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/checkbox/index.ts: -------------------------------------------------------------------------------- 1 | export { default as CheckboxRootOnCheckedChangeProp } from "./checkbox-root-on-checked-change-prop.md"; 2 | export { default as CheckboxRootStateDataAttr } from "./checkbox-root-state-data-attr.md"; 3 | export { default as CheckboxRootOnIndeterminateChangeProp } from "./checkbox-root-on-indeterminate-change.md"; 4 | export { default as CheckboxRootChildSnippetProps } from "./checkbox-root-child-snippet-props.md"; 5 | export { default as CheckboxRootChildrenSnippetProps } from "./checkbox-root-children-snippet-props.md"; 6 | export { default as CheckboxGroupOnValueChangeProp } from "./checkbox-group-on-value-change-prop.md"; 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/collapsible/content-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type SnippetProps = { 3 | open: boolean; 4 | props: Record; 5 | }; 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/collapsible/content-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type SnippetProps = { 3 | open: boolean; 4 | }; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/collapsible/index.ts: -------------------------------------------------------------------------------- 1 | export { default as CollapsibleContentChildSnippetProps } from "./content-child-snippet-props.md"; 2 | export { default as CollapsibleContentChildrenSnippetProps } from "./content-children-snippet-props.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/combobox/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ComboboxScrollAlignmentProp } from "./scroll-alignment-prop.md"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/combobox/scroll-alignment-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "nearest" | "center"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/command/command-filter-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (value: string, search: string, keywords?: string[]) => number; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/command/command-on-state-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type CommandState = { 3 | /** The value of the search query */ 4 | search: string; 5 | /** The value of the selected command menu item */ 6 | value: string; 7 | /** The filtered items */ 8 | filtered: { 9 | /** The count of all visible items. */ 10 | count: number; 11 | /** Map from visible item id to its search store. */ 12 | items: Map; 13 | /** Set of groups with at least one visible item. */ 14 | groups: Set; 15 | }; 16 | }; 17 | 18 | type onStateChange = (state: Readonly) => void; 19 | ``` 20 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/command/index.ts: -------------------------------------------------------------------------------- 1 | export { default as CommandFilterProp } from "./command-filter-prop.md"; 2 | export { default as CommandOnStateChangeProp } from "./command-on-state-change-prop.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/date-field/date-field-editable-segment-part.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type EditableSegmentPart = "day" | "month" | "year" | "hour" | "minute" | "second" | "dayPeriod"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/date-field/date-field-segment-part.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "month" | "day" | "year" | "hour" | "minute" | "second" | "dayPeriod" | "timeZoneName" | "literal"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/date-field/index.ts: -------------------------------------------------------------------------------- 1 | export { default as DateFieldSegmentPartProp } from "./date-field-segment-part.md"; 2 | export { default as DateFieldEditableSegmentPartProp } from "./date-field-editable-segment-part.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/date-range-field/date-range-field-input-type-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "start" | "end"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/date-range-field/index.ts: -------------------------------------------------------------------------------- 1 | export { default as DateRangeFieldInputTypeProp } from "./date-range-field-input-type-prop.md"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/dialog/dialog-content-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildSnippetProps = { 3 | props: Record; 4 | open: boolean; 5 | }; 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/dialog/dialog-overlay-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildSnippetProps = { 3 | props: Record; 4 | open: boolean; 5 | }; 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/dialog/index.ts: -------------------------------------------------------------------------------- 1 | export { default as DialogContentChildSnippetProps } from "./dialog-content-child-snippet-props.md"; 2 | export { default as DialogOverlayChildSnippetProps } from "./dialog-overlay-child-snippet-props.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/align-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "start" | "center" | "end"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/collision-boundary-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | Element | null; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/collision-padding-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type Side = "top" | "bottom" | "left" | "right"; 3 | 4 | type CollisionPadding = number | Partial>; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/custom-anchor-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | string | HTMLElement | { getBoundingClientRect: () => DOMRect } | null; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/floating-content-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildSnippetProps = { 3 | // Props for the positioning wrapper 4 | // Do not style this element - 5 | // styling should be applied to the content element 6 | wrapperProps: Record; 7 | 8 | // Props for your content element 9 | // Apply your custom styles here 10 | props: Record; 11 | 12 | // Content visibility state 13 | // Use this for conditional rendering with 14 | // Svelte transitions 15 | open: boolean; 16 | }; 17 | ``` 18 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/side-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "top" | "right" | "bottom" | "left"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/sticky-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "partial" | "always"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/strategy-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "fixed" | "absolute"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/floating/update-position-strategy-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "optimized" | "always"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/menu/index.ts: -------------------------------------------------------------------------------- 1 | export { default as MenuCheckedStateAttr } from "./menu-checked-state-attr.md"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/menu/menu-checked-state-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "checked" | "unchecked" | "indeterminate"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pagination/index.ts: -------------------------------------------------------------------------------- 1 | export { default as PaginationOnPageChangeProp } from "./pagination-on-page-change-prop.md"; 2 | export { default as PaginationChildSnippetProps } from "./pagination-child-snippet-props.md"; 3 | export { default as PaginationChildrenSnippetProps } from "./pagination-children-snippet-props.md"; 4 | export { default as PaginationPageItemProp } from "./pagination-page-item-prop.md"; 5 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pagination/pagination-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type Page = { 3 | type: "page"; 4 | value: number; 5 | }; 6 | 7 | type Ellipsis = { 8 | type: "ellipsis"; 9 | }; 10 | 11 | type PageItem = (Page | Ellipsis) & { 12 | /** A unique key to be used as the key in a svelte `#each` block. */ 13 | key: string; 14 | }; 15 | 16 | type ChildSnippetProps = { 17 | /** The items to iterate over and render for the pagination component */ 18 | pages: PageItem[]; 19 | /** The range of pages to render */ 20 | range: { start: number; end: number }; 21 | /** The currently active page */ 22 | currentPage: number; 23 | props: Record; 24 | }; 25 | ``` 26 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pagination/pagination-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type Page = { 3 | type: "page"; 4 | value: number; 5 | }; 6 | 7 | type Ellipsis = { 8 | type: "ellipsis"; 9 | }; 10 | 11 | type PageItem = (Page | Ellipsis) & { 12 | /** A unique key to be used as the key in a svelte `#each` block. */ 13 | key: string; 14 | }; 15 | 16 | type ChildrenSnippetProps = { 17 | /** The items to iterate over and render for the pagination component */ 18 | pages: PageItem[]; 19 | /** The range of pages to render */ 20 | range: { start: number; end: number }; 21 | /** The currently active page */ 22 | currentPage: number; 23 | }; 24 | ``` 25 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pagination/pagination-on-page-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (page: number) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pagination/pagination-page-item-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | export type Page = { 3 | type: "page"; 4 | /** The page number the `PageItem` represents */ 5 | value: number; 6 | }; 7 | 8 | export type Ellipsis = { 9 | type: "ellipsis"; 10 | }; 11 | 12 | export type PageItem = (Page | Ellipsis) & { 13 | /** Unique key for the item, for svelte #each block */ 14 | key: string; 15 | }; 16 | ``` 17 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pin-input/index.ts: -------------------------------------------------------------------------------- 1 | export { default as PinInputRootOnCompleteProp } from "./pin-input-root-on-complete-prop.md"; 2 | export { default as PinInputRootTextAlignProp } from "./pin-input-root-text-align-prop.md"; 3 | export { default as PinInputRootPushPasswordManagerStrategyProp } from "./pin-input-root-push-password-manager-strategy.md"; 4 | export { default as PinInputCellCellProp } from "./pin-input-cell-cell-prop.md"; 5 | export { default as PinInputRootChildSnippetProps } from "./pin-input-root-child-snippet-props.md"; 6 | export { default as PinInputRootChildrenSnippetProps } from "./pin-input-root-children-snippet-props.md"; 7 | export { default as PinInputRootPasteTransformerProp } from "./pin-input-root-paste-transformer.md"; 8 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pin-input/pin-input-cell-cell-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type Cell = { 3 | /** The character displayed in the cell. */ 4 | char: string | null | undefined; 5 | /** Whether the cell is active. */ 6 | isActive: boolean; 7 | /** Whether the cell has a fake caret. */ 8 | hasFakeCaret: boolean; 9 | }; 10 | ``` 11 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pin-input/pin-input-root-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type PinInputCell = { 3 | /** The character displayed in the cell. */ 4 | char: string | null | undefined; 5 | /** Whether the cell is active. */ 6 | isActive: boolean; 7 | /** Whether the cell has a fake caret. */ 8 | hasFakeCaret: boolean; 9 | }; 10 | 11 | type SnippetProps = { 12 | cells: PinInputCell[]; 13 | props: Record; 14 | }; 15 | ``` 16 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pin-input/pin-input-root-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type PinInputCell = { 3 | /** The character displayed in the cell. */ 4 | char: string | null | undefined; 5 | /** Whether the cell is active. */ 6 | isActive: boolean; 7 | /** Whether the cell has a fake caret. */ 8 | hasFakeCaret: boolean; 9 | }; 10 | 11 | type SnippetProps = { 12 | cells: PinInputCell[]; 13 | }; 14 | ``` 15 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pin-input/pin-input-root-on-complete-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (...args: any[]) => void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pin-input/pin-input-root-paste-transformer.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (pastedText: string) => string; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pin-input/pin-input-root-push-password-manager-strategy.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "increase-width" | "none"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/pin-input/pin-input-root-text-align-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "left" | "center" | "right"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/portal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as PortalToProp } from "./to-prop.md"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/portal/to-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | string | HTMLElement | null | undefined; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/progress/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ProgressStateAttr } from "./progress-state-attr.md"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/progress/progress-state-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "indeterminate" | "loaded" | "loading"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/radio-group/index.ts: -------------------------------------------------------------------------------- 1 | export { default as RadioGroupStateAttr } from "./radio-group-state-attr.md"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/radio-group/radio-group-state-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "checked" | "unchecked"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/rating-group/index.ts: -------------------------------------------------------------------------------- 1 | export { default as RatingGroupAriaValuetext } from "./rating-group-aria-textvalue-prop.md"; 2 | export { default as RatingGroupRootChildrenSnippetProps } from "./rating-group-root-children-snippet-props.md"; 3 | export { default as RatingGroupRootChildSnippetProps } from "./rating-group-root-child-snippet-props.md"; 4 | export { default as RatingGroupItemState } from "./rating-group-item-state.md"; 5 | export { default as RatingGroupItemChildSnippetProps } from "./rating-group-item-child-snippet-props.md"; 6 | export { default as RatingGroupItemChildrenSnippetProps } from "./rating-group-item-children-snippet-props.md"; 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/rating-group/rating-group-aria-textvalue-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | string | ((value: number, max: number) => string) | null; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/rating-group/rating-group-item-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type RatingGroupItemState = "active" | "partial" | "inactive"; 3 | 4 | type RatingGroupItemChildSnippetProps = { 5 | state: RatingGroupItemState; 6 | props: Record; 7 | }; 8 | ``` 9 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/rating-group/rating-group-item-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type RatingGroupItemState = "active" | "partial" | "inactive"; 3 | 4 | type RatingGroupItemChildSnippetProps = { 5 | state: RatingGroupItemState; 6 | }; 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/rating-group/rating-group-item-state.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "active" | "partial" | "inactive"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/rating-group/rating-group-root-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type RatingGroupItemState = "active" | "partial" | "inactive"; 3 | 4 | type RatingGroupItemData = { 5 | index: number; 6 | state: RatingGroupItemState; 7 | }; 8 | 9 | type RatingGroupRootChildSnippetProps = { 10 | items: RatingGroupItemData[]; 11 | value: number; 12 | max: number; 13 | props: Record; 14 | }; 15 | ``` 16 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/rating-group/rating-group-root-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type RatingGroupItemState = "active" | "partial" | "inactive"; 3 | 4 | type RatingGroupItemData = { 5 | index: number; 6 | state: RatingGroupItemState; 7 | }; 8 | 9 | type RatingGroupRootChildrenSnippetProps = { 10 | items: RatingGroupItemData[]; 11 | value: number; 12 | max: number; 13 | }; 14 | ``` 15 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/scroll-area/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ScrollAreaTypeProp } from "./scroll-area-type-prop.md"; 2 | export { default as ScrollAreaVisibleHiddenProp } from "./visible-hidden-prop.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/scroll-area/scroll-area-type-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "hover" | "scroll" | "auto" | "always"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/scroll-area/visible-hidden-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "visible" | "hidden"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/select/delay-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (tick: number) => number; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/select/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ItemsProp } from "./items-prop.md"; 2 | export { default as DelayProp } from "./delay-prop.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/select/items-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | { value: string; label: string; disabled?: boolean}[] 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/calendar-on-value-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | // if `type` is `'single'` 3 | (date: DateValue | undefined) => void 4 | 5 | // if `type` is `'multiple'` 6 | (date: DateValue[]) => void 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/calendar-value-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { DateValue } from "@internationalized/date"; 3 | 4 | // if `type` is `'single'` 5 | type Value = DateValue; 6 | 7 | // if `type` is `'multiple'` 8 | type Value = DateValue[]; 9 | ``` 10 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/child-default-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type SnippetProps = { 3 | props: Record; 4 | }; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-field-input-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { SegmentPart } from "bits-ui"; 3 | 4 | type ChildSnippetProps = { 5 | props: Record; 6 | segments: Array<{ part: SegmentPart; value: string }>; 7 | }; 8 | ``` 9 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-field-input-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { SegmentPart } from "bits-ui"; 3 | 4 | type ChildrenSnippetProps = { 5 | segments: Array<{ part: SegmentPart; value: string }>; 6 | }; 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-field-segment-data-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "day" | "month" | "year" | "hour" | "minute" | "second" | "dayPeriod" | "timeZoneName" | "literal"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-matcher-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (date: DateValue) => boolean; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-on-invalid-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (reason: "min" | "max" | "custom", msg?: string | string[]) => void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-on-range-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (date: DateRange) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-range-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { DateValue } from "@internationalized/date"; 3 | 4 | type DateRange = { 5 | start: DateValue | undefined; 6 | end: DateValue | undefined; 7 | }; 8 | ``` 9 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-range-validate-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (date: { start: DateValue; end: DateValue }) => string[] | string | void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-validate-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (date: DateValue) => string[] | string | void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/date-value-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { CalendarDate, CalendarDateTime, ZonedDateTime } from "@internationalized/date"; 3 | 4 | type DateValue = CalendarDate | CalendarDateTime | ZonedDateTime; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/dir-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "ltr" | "rtl"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/escape-keydown-behavior-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "close" | "ignore" | "defer-otherwise-close" | "defer-otherwise-ignore"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/granularity-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "day" | "hour" | "minute" | "second"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/header-level-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | 1 | 2 | 3 | 4 | 5 | 6; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/hour-cycle-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | 12 | 24; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/interact-outside-behavior-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "close" | "ignore" | "defer-otherwise-close" | "defer-otherwise-ignore"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/month-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { DateValue } from "@internationalized/date"; 3 | 4 | type Month = { 5 | /** 6 | * The current month being iterated over. 7 | * This is passed to certain components to determine 8 | * if they fall within the current month. 9 | */ 10 | value: DateValue; 11 | 12 | /** 13 | * An array of arrays of dates. Each top-level array represents 14 | * a week. Each nested array represents a day in the week. 15 | */ 16 | weeks: DateValue[][]; 17 | 18 | /** 19 | * An array of all the dates in the month. This is a flat array 20 | * used for rendering more custom calendars. 21 | */ 22 | dates: DateValue[]; 23 | }; 24 | ``` 25 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/noop-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | () => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/number-or-array-number-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | number | number[] 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-auto-focus-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (event: Event) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-change-string-or-array-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | // if `type` is `'single'` 3 | (value: string) => void 4 | 5 | // if `type` is `'multiple'` 6 | (value: string[]) => void 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-date-value-change-prop.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/src/lib/content/api-reference/extended-types/shared/on-date-value-change-prop.md -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-escape-keydown-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (event: KeyboardEvent) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-focus-outside-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (event: FocusEvent) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-interact-outside-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (event: PointerEvent) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-number-value-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (value: number) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-open-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (open: boolean) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-placeholder-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (date: DateValue | undefined) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-start-end-value-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (value: DateValue | undefined) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-string-value-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (value: string) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-time-placeholder-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (time: TimeValue) => void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-time-start-end-value-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (value: TimeValue | undefined) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/on-time-value-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (value: TimeValue | undefined) => void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/open-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildSnippetProps = { 3 | open: boolean; 4 | props: Record; 5 | }; 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/open-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildrenSnippetProps = { 3 | open: boolean; 4 | }; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/open-closed-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "open" | "closed"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/orientation-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "horizontal" | "vertical"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/radio-item-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildSnippetProps = { 3 | checked: boolean; 4 | props: Record; 5 | }; 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/radio-item-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type ChildrenSnippetProps = { 3 | checked: boolean; 4 | }; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/segment-part-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "month" | "day" | "year" | "hour" | "minute" | "second" | "dayPeriod" | "timeZoneName" | "literal"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/single-or-multiple-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "single" | "multiple"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/slider-thumb-positioning-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "exact" | "contain"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/string-or-array-string-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | string | string[] 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-field-input-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { TimeSegmentPart } from "bits-ui"; 3 | 4 | type ChildSnippetProps = { 5 | props: Record; 6 | segments: Array<{ part: TimeSegmentPart; value: string }>; 7 | }; 8 | ``` 9 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-field-input-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { TimeSegmentPart } from "bits-ui"; 3 | 4 | type TimeFieldInputChildrenSnippetProps = { 5 | segments: Array<{ part: TimeSegmentPart; value: string }>; 6 | }; 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-field-segment-data-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "hour" | "minute" | "second" | "dayPeriod" | "timeZoneName" | "literal"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-granularity-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "hour" | "minute" | "second"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-on-invalid-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (reason: "min" | "max" | "custom", msg?: string | string[]) => void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-on-range-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (time: TimeRange) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-range-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { TimeValue } from "bits-ui"; 3 | 4 | type TimeRange = { 5 | start: TimeValue | undefined; 6 | end: TimeValue | undefined; 7 | }; 8 | ``` 9 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-segment-part-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "hour" | "minute" | "second" | "dayPeriod" | "timeZoneName" | "literal"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-validate-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (time: TimeValue) => string[] | string | void; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/time-value-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | import type { Time, CalendarDateTime, ZonedDateTime } from "@internationalized/date"; 3 | 4 | type TimeValue = Time | CalendarDateTime | ZonedDateTime; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/shared/weekday-format-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "narrow" | "short" | "long"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/slider/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SliderRootOnValueChangeProp } from "./slider-root-on-value-change.md"; 2 | export { default as SliderRootChildSnippetProps } from "./slider-root-child-snippet-props.md"; 3 | export { default as SliderRootChildrenSnippetProps } from "./slider-root-children-snippet-props.md"; 4 | export { default as SliderTickLabelPositionProp } from "./slider-tick-label-position-prop.md"; 5 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/slider/slider-root-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type TickItem = { 3 | /** The value this tick represents */ 4 | value: number; 5 | /** The index of this tick */ 6 | index: number; 7 | }; 8 | 9 | type ChildSnippetProps = { 10 | /** The tick items to iterate over and render */ 11 | tickItems: TickItem[]; 12 | /** The currently active thumb */ 13 | thumbs: number[]; 14 | /** 15 | * An array of ticks to render 16 | * @deprecated Use `tickItems` instead 17 | */ 18 | ticks: number[]; 19 | /** Props to apply to the root element */ 20 | props: Record; 21 | }; 22 | ``` 23 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/slider/slider-root-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type TickItem = { 3 | /** The value this tick represents */ 4 | value: number; 5 | /** The index of this tick */ 6 | index: number; 7 | }; 8 | 9 | type ChildrenSnippetProps = { 10 | /** The items to iterate over and render */ 11 | tickItems: TickItem[]; 12 | /** The currently active thumb */ 13 | thumbs: number[]; 14 | /** 15 | * An array of ticks to render 16 | * @deprecated Use `tickItems` instead 17 | */ 18 | ticks: number[]; 19 | }; 20 | ``` 21 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/slider/slider-root-on-value-change.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | // type="single" 3 | (value: number) => void 4 | // type="multiple" 5 | (value: number[]) => void 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/slider/slider-tick-label-position-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "top" | "bottom" | "left" | "right"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/switch/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SwitchRootChildSnippetProps } from "./switch-root-child-snippet-props.md"; 2 | export { default as SwitchRootChildrenSnippetProps } from "./switch-root-children-snippet-props.md"; 3 | export { default as SwitchCheckedDataAttr } from "./switch-checked-data-attr.md"; 4 | export { default as SwitchRootOnCheckedChangeProp } from "./switch-root-on-checked-change.md"; 5 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/switch/switch-checked-data-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "checked" | "unchecked"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/switch/switch-root-child-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type SnippetProps = { 3 | checked: boolean; 4 | props: Record; 5 | }; 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/switch/switch-root-children-snippet-props.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | type SnippetProps = { 3 | checked: boolean; 4 | }; 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/switch/switch-root-on-checked-change.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (checked: boolean) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/tabs/index.ts: -------------------------------------------------------------------------------- 1 | export { default as TabsRootActivationModeProp } from "./tabs-root-activation-mode.md"; 2 | export { default as TabsTriggerStateProp } from "./tabs-trigger-state.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/tabs/tabs-root-activation-mode.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "automatic" | "manual"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/tabs/tabs-trigger-state.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "active" | "inactive"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/time-field/index.ts: -------------------------------------------------------------------------------- 1 | export { default as TimeFieldEditableSegmentPartProp } from "./time-field-editable-segment-part-part.md"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/time-field/time-field-editable-segment-part-part.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "hour" | "minute" | "second" | "dayPeriod"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/toggle/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ToggleRootOnPressedChangeProp } from "./toggle-root-on-pressed-change-prop.md"; 2 | export { default as ToggleRootStateDataAttr } from "./toggle-root-state-data-attr.md"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/toggle/toggle-root-on-pressed-change-prop.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | (pressed: boolean) => void 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/toggle/toggle-root-state-data-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "on" | "off"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/tooltip/index.ts: -------------------------------------------------------------------------------- 1 | export { default as TooltipStateDataAttr } from "./tooltip-state-data-attr.md"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/extended-types/tooltip/tooltip-state-data-attr.md: -------------------------------------------------------------------------------- 1 | ```ts 2 | "delayed-open" | "instant-open" | "closed"; 3 | ``` 4 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/label.api.ts: -------------------------------------------------------------------------------- 1 | import type { LabelRootPropsWithoutHTML } from "bits-ui"; 2 | import { 3 | createApiSchema, 4 | createDataAttrSchema, 5 | withChildProps, 6 | } from "$lib/content/api-reference/helpers.js"; 7 | 8 | export const root = createApiSchema({ 9 | title: "Root", 10 | description: "An enhanced label component that can be used with any input.", 11 | props: withChildProps({ elType: "HTMLLabelElement" }), 12 | dataAttributes: [ 13 | createDataAttrSchema({ 14 | name: "label-root", 15 | description: "Present on the root element.", 16 | }), 17 | ], 18 | }); 19 | 20 | export const label = [root]; 21 | -------------------------------------------------------------------------------- /docs/src/lib/content/api-reference/portal.api.ts: -------------------------------------------------------------------------------- 1 | import { createApiSchema, portalProps } from "./helpers.js"; 2 | import type { PortalProps } from "bits-ui"; 3 | 4 | export const portal = createApiSchema({ 5 | title: "Portal", 6 | type: "utility", 7 | description: "Renders the children to a different location in the DOM.", 8 | props: portalProps, 9 | }); 10 | -------------------------------------------------------------------------------- /docs/src/lib/content/constants.ts: -------------------------------------------------------------------------------- 1 | export const BOOLEAN = "boolean"; 2 | export const STRING = "string"; 3 | export const NUMBER = "number"; 4 | export const FUNCTION = "function"; 5 | export const ENUM = "enum"; 6 | export const UNDEFINED = "undefined"; 7 | export const UNION = "union"; 8 | export const OBJECT = "object"; 9 | export const FALSE = "false"; 10 | export const TRUE = "true"; 11 | export const UNKNOWN = "unknown"; 12 | export const ARRAY = "array"; 13 | 14 | export const HORIZONTAL = "horizontal"; 15 | export const VERTICAL = "vertical"; 16 | export const CHECKED = "checked"; 17 | export const UNCHECKED = "unchecked"; 18 | export const ON = "on"; 19 | export const OFF = "off"; 20 | export const SNIPPET = "Snippet"; 21 | -------------------------------------------------------------------------------- /docs/src/lib/content/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./api-reference/index.js"; 2 | export * from "./constants.js"; 3 | -------------------------------------------------------------------------------- /docs/src/lib/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./api.js"; 2 | -------------------------------------------------------------------------------- /docs/src/lib/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./styles.js"; 2 | export * from "./copy-to-clipboard.svelte.js"; 3 | export * from "./markdown.js"; 4 | export * from "./styles.js"; 5 | -------------------------------------------------------------------------------- /docs/src/lib/utils/markdown.ts: -------------------------------------------------------------------------------- 1 | export function parseMarkdown(text: string) { 2 | return text 3 | .replace(/`([^`]+)`/g, "$1") 4 | .replace(/\*\*([^*]+)\*\*/g, "$1") 5 | .replace(/\*([^*]+)\*/g, "$1") 6 | .replace(/_([^_]+)_/g, "$1") 7 | .replace(/~~([^~]+)~~/g, "$1") 8 | .replace(/\[([^\]]+)\]\(([^)]+)\)/g, "$1") 9 | .replace(/>([^>]+)\n/g, "
    $1
    ") 10 | .replace(/\n/g, "
    "); 11 | } 12 | 13 | export function parseTypeDef(text: string) { 14 | return text.replace(/\n/g, "
    "); 15 | } 16 | -------------------------------------------------------------------------------- /docs/src/lib/utils/omit.ts: -------------------------------------------------------------------------------- 1 | type ValueOf = T[keyof T]; 2 | 3 | export function omit, K extends keyof T>( 4 | obj: T, 5 | ...keys: K[] 6 | ): Omit { 7 | const result = {} as Omit; 8 | for (const key of Object.keys(obj)) { 9 | if (!keys.includes(key as unknown as K)) { 10 | result[key as keyof Omit] = obj[key] as ValueOf>; 11 | } 12 | } 13 | return result; 14 | } 15 | -------------------------------------------------------------------------------- /docs/src/lib/utils/styles.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/+error.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
    9 |

    10 | {page.status} 11 |

    12 |

    {message}

    13 | Back to docs 14 |
    15 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/docs/+page.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from "@sveltejs/kit"; 2 | 3 | export async function load() { 4 | redirect(303, "/docs/introduction"); 5 | } 6 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/docs/[...slug]/+page.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/docs/[...slug]/+page.ts: -------------------------------------------------------------------------------- 1 | import { docs, policyDocs, typeHelperDocs, utilityDocs } from "$content/index.js"; 2 | import { getDoc } from "$lib/utils/docs.js"; 3 | import type { EntryGenerator } from "./$types.js"; 4 | 5 | export const prerender = true; 6 | 7 | export const entries: EntryGenerator = async () => { 8 | return [ 9 | ...utilityDocs.map((doc) => ({ 10 | slug: `utilities/${doc.slug}`, 11 | })), 12 | ...typeHelperDocs.map((doc) => ({ 13 | slug: `type-helpers/${doc.slug}`, 14 | })), 15 | ...policyDocs.map((doc) => ({ 16 | slug: `policies/${doc.slug}`, 17 | })), 18 | ...docs.map((doc) => ({ 19 | slug: doc.slug, 20 | })), 21 | ]; 22 | }; 23 | 24 | export async function load(event) { 25 | return await getDoc(event.params.slug); 26 | } 27 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/docs/components/[name]/+page.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/docs/components/[name]/+page.ts: -------------------------------------------------------------------------------- 1 | import { componentDocs } from "$content/index.js"; 2 | import { getComponentDoc } from "$lib/utils/docs.js"; 3 | import type { EntryGenerator } from "./$types.js"; 4 | 5 | export const prerender = true; 6 | 7 | export const entries: EntryGenerator = async () => { 8 | return componentDocs.map((doc) => ({ 9 | name: doc.slug, 10 | })); 11 | }; 12 | 13 | export async function load(event) { 14 | return await getComponentDoc(`components/${event.params.name}`); 15 | } 16 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/docs/utilities/[name]/+page.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/docs/utilities/[name]/+page.ts: -------------------------------------------------------------------------------- 1 | import { utilityDocs } from "$content/index.js"; 2 | import { getUtilityDoc } from "$lib/utils/docs.js"; 3 | import type { EntryGenerator } from "./$types.js"; 4 | 5 | export const prerender = true; 6 | 7 | export const entries: EntryGenerator = async () => { 8 | return utilityDocs.map((doc) => ({ 9 | name: doc.slug, 10 | })); 11 | }; 12 | 13 | export async function load(event) { 14 | return await getUtilityDoc(`utilities/${event.params.name}`); 15 | } 16 | -------------------------------------------------------------------------------- /docs/src/routes/(docs)/sink/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
    13 | 14 | 15 |
    16 | -------------------------------------------------------------------------------- /docs/src/routes/(examples)/examples/command/+layout.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | {@render children?.()} 10 | -------------------------------------------------------------------------------- /docs/src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | {@render children()} 19 | -------------------------------------------------------------------------------- /docs/src/routes/+page.ts: -------------------------------------------------------------------------------- 1 | export const prerender = true; 2 | -------------------------------------------------------------------------------- /docs/src/routes/api/search.json/+server.ts: -------------------------------------------------------------------------------- 1 | import type { RequestHandler } from "@sveltejs/kit"; 2 | import search from "./search.json" with { type: "json" }; 3 | 4 | export const prerender = true; 5 | 6 | export const GET: RequestHandler = async () => { 7 | return Response.json(search); 8 | }; 9 | -------------------------------------------------------------------------------- /docs/src/routes/repro/+page.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from "@sveltejs/kit"; 2 | import type { PageLoad } from "./$types.js"; 3 | 4 | export const load: PageLoad = async () => { 5 | redirect(303, "https://stackblitz.com/github/huntabyte/bits-ui-reproduction"); 6 | }; 7 | -------------------------------------------------------------------------------- /docs/src/routes/stackblitz/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/static/CalSans-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/static/CalSans-SemiBold.woff2 -------------------------------------------------------------------------------- /docs/static/abstract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/static/abstract.png -------------------------------------------------------------------------------- /docs/static/avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/static/avatar-1.png -------------------------------------------------------------------------------- /docs/static/favicon-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/static/favicon-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/static/favicon.png -------------------------------------------------------------------------------- /docs/static/img/bring-own-style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/static/img/bring-own-style.png -------------------------------------------------------------------------------- /docs/static/img/developer-exp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/static/img/developer-exp.png -------------------------------------------------------------------------------- /docs/static/img/learn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/static/img/learn.png -------------------------------------------------------------------------------- /docs/static/og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/docs/static/og.png -------------------------------------------------------------------------------- /docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "moduleResolution": "NodeNext", 13 | "module": "NodeNext", 14 | "verbatimModuleSyntax": true, 15 | "allowSyntheticDefaultImports": true, 16 | "noEmit": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /docs/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from "@sveltejs/kit/vite"; 2 | import tailwindcss from "@tailwindcss/vite"; 3 | import { defineConfig } from "vite"; 4 | 5 | export default defineConfig({ 6 | plugins: [tailwindcss(), sveltekit()], 7 | assetsInclude: ["**/*.md"], 8 | server: { 9 | fs: { 10 | strict: false, 11 | }, 12 | }, 13 | optimizeDeps: { 14 | exclude: ["bits-ui"], 15 | }, 16 | resolve: { noExternal: true }, 17 | }); 18 | -------------------------------------------------------------------------------- /packages/bits-ui/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /dist 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | .vercel 13 | 14 | ## contentlayer build output 15 | .contentlayer -------------------------------------------------------------------------------- /packages/bits-ui/.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | .changeset/ 15 | .prettierrc 16 | package.json 17 | .vercel 18 | .contentlayer 19 | dist 20 | 21 | vite.config.js.timestamp-* 22 | vite.config.ts.timestamp-* 23 | 24 | -------------------------------------------------------------------------------- /packages/bits-ui/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 15 | 16 | %sveltekit.head% 17 | 18 | 19 | 23 |
    %sveltekit.body%
    24 | 25 | 26 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/accordion/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/accordion.svelte"; 2 | export { default as Item } from "./components/accordion-item.svelte"; 3 | export { default as Header } from "./components/accordion-header.svelte"; 4 | export { default as Trigger } from "./components/accordion-trigger.svelte"; 5 | export { default as Content } from "./components/accordion-content.svelte"; 6 | 7 | export type { 8 | AccordionRootProps as RootProps, 9 | AccordionItemProps as ItemProps, 10 | AccordionHeaderProps as HeaderProps, 11 | AccordionTriggerProps as TriggerProps, 12 | AccordionContentProps as ContentProps, 13 | } from "./types.js"; 14 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/accordion/index.ts: -------------------------------------------------------------------------------- 1 | export * as Accordion from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/alert-dialog/components/alert-dialog.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | {@render children?.()} 22 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/alert-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * as AlertDialog from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/aspect-ratio/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/aspect-ratio.svelte"; 2 | 3 | export type { AspectRatioRootProps as RootProps } from "./types.js"; 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/aspect-ratio/index.ts: -------------------------------------------------------------------------------- 1 | export * as AspectRatio from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/aspect-ratio/types.ts: -------------------------------------------------------------------------------- 1 | import type { WithChild, Without } from "$lib/internal/types.js"; 2 | import type { BitsPrimitiveDivAttributes } from "$lib/shared/attributes.js"; 3 | 4 | export type AspectRatioRootPropsWithoutHTML = WithChild<{ 5 | /** 6 | * The aspect ratio of the image. 7 | * 8 | * @defaultValue 1 9 | */ 10 | ratio?: number; 11 | }>; 12 | 13 | export type AspectRatioRootProps = AspectRatioRootPropsWithoutHTML & 14 | Without; 15 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/avatar/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/avatar.svelte"; 2 | export { default as Image } from "./components/avatar-image.svelte"; 3 | export { default as Fallback } from "./components/avatar-fallback.svelte"; 4 | 5 | export type { 6 | AvatarRootProps as RootProps, 7 | AvatarImageProps as ImageProps, 8 | AvatarFallbackProps as FallbackProps, 9 | } from "./types.js"; 10 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/avatar/index.ts: -------------------------------------------------------------------------------- 1 | export * as Avatar from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/button/components/button.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 26 | {@render children?.()} 27 | 28 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/button/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/button.svelte"; 2 | export type { ButtonRootProps as RootProps } from "./types.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/button/index.ts: -------------------------------------------------------------------------------- 1 | export * as Button from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/calendar/index.ts: -------------------------------------------------------------------------------- 1 | export * as Calendar from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/checkbox/components/checkbox-input.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | {#if inputState.shouldRender} 9 | 10 | {/if} 11 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/checkbox/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/checkbox.svelte"; 2 | export { default as Group } from "./components/checkbox-group.svelte"; 3 | export { default as GroupLabel } from "./components/checkbox-group-label.svelte"; 4 | export type { 5 | CheckboxRootProps as RootProps, 6 | CheckboxGroupProps as GroupProps, 7 | CheckboxGroupLabelProps as GroupLabelProps, 8 | } from "./types.js"; 9 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/checkbox/index.ts: -------------------------------------------------------------------------------- 1 | export * as Checkbox from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/collapsible/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/collapsible.svelte"; 2 | export { default as Content } from "./components/collapsible-content.svelte"; 3 | export { default as Trigger } from "./components/collapsible-trigger.svelte"; 4 | 5 | export type { 6 | CollapsibleRootProps as RootProps, 7 | CollapsibleContentProps as ContentProps, 8 | CollapsibleTriggerProps as TriggerProps, 9 | } from "./types.js"; 10 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/collapsible/index.ts: -------------------------------------------------------------------------------- 1 | export * as Collapsible from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/combobox/index.ts: -------------------------------------------------------------------------------- 1 | export * as Combobox from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/command/index.ts: -------------------------------------------------------------------------------- 1 | export * as Command from "./exports.js"; 2 | export { computeCommandScore } from "./compute-command-score.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/context-menu/index.ts: -------------------------------------------------------------------------------- 1 | export * as ContextMenu from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-field/components/date-field-hidden-input.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | {#if hiddenInputState.shouldRender} 9 | 10 | {/if} 11 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-field/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/date-field.svelte"; 2 | export { default as Input } from "./components/date-field-input.svelte"; 3 | export { default as Label } from "./components/date-field-label.svelte"; 4 | export { default as Segment } from "./components/date-field-segment.svelte"; 5 | 6 | export type { 7 | DateFieldRootProps as RootProps, 8 | DateFieldInputProps as InputProps, 9 | DateFieldLabelProps as LabelProps, 10 | DateFieldSegmentProps as SegmentProps, 11 | // DateFieldDescriptionProps as DescriptionProps, 12 | } from "./types.js"; 13 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-field/index.ts: -------------------------------------------------------------------------------- 1 | export * as DateField from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-picker/components/date-picker-content-static.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-picker/components/date-picker-content.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-picker/index.ts: -------------------------------------------------------------------------------- 1 | export * as DatePicker from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-range-field/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/date-range-field.svelte"; 2 | export { default as Input } from "./components/date-range-field-input.svelte"; 3 | export { default as Label } from "./components/date-range-field-label.svelte"; 4 | export { default as Segment } from "../date-field/components/date-field-segment.svelte"; 5 | 6 | export type { 7 | DateRangeFieldRootProps as RootProps, 8 | DateRangeFieldLabelProps as LabelProps, 9 | DateRangeFieldInputProps as InputProps, 10 | DateRangeFieldSegmentProps as SegmentProps, 11 | } from "./types.js"; 12 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-range-field/index.ts: -------------------------------------------------------------------------------- 1 | export * as DateRangeField from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/date-range-picker/index.ts: -------------------------------------------------------------------------------- 1 | export * as DateRangePicker from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/dialog/components/dialog.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | {@render children?.()} 22 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * as Dialog from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/dropdown-menu/index.ts: -------------------------------------------------------------------------------- 1 | export * as DropdownMenu from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/label/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/label.svelte"; 2 | export type { LabelRootProps as RootProps } from "./types.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/label/index.ts: -------------------------------------------------------------------------------- 1 | export * as Label from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/label/types.ts: -------------------------------------------------------------------------------- 1 | import type { WithChild, Without } from "$lib/internal/types.js"; 2 | import type { BitsPrimitiveLabelAttributes } from "$lib/shared/attributes.js"; 3 | 4 | export type LabelRootPropsWithoutHTML = WithChild; 5 | 6 | export type LabelRootProps = LabelRootPropsWithoutHTML & 7 | Without; 8 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/link-preview/index.ts: -------------------------------------------------------------------------------- 1 | export * as LinkPreview from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/menu/components/menu-arrow.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/menu/components/menu-sub.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | 22 | {@render children?.()} 23 | 24 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/menubar/index.ts: -------------------------------------------------------------------------------- 1 | export * as Menubar from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/meter/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/meter.svelte"; 2 | export type { MeterRootProps as RootProps } from "./types.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/meter/index.ts: -------------------------------------------------------------------------------- 1 | export * as Meter from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/meter/types.ts: -------------------------------------------------------------------------------- 1 | import type { WithChild, Without } from "$lib/internal/types.js"; 2 | import type { BitsPrimitiveDivAttributes } from "$lib/shared/attributes.js"; 3 | 4 | export type MeterRootPropsWithoutHTML = WithChild<{ 5 | /** 6 | * The current value of the meter. 7 | * 8 | * @default 0 9 | */ 10 | value?: number; 11 | 12 | /** 13 | * The maximum value of the meter. 14 | * 15 | * @default 100 16 | */ 17 | max?: number; 18 | 19 | /** 20 | * The minimum value of the meter. 21 | * 22 | * @default 0 23 | */ 24 | min?: number; 25 | }>; 26 | 27 | export type MeterRootProps = MeterRootPropsWithoutHTML & 28 | Without; 29 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/navigation-menu/index.ts: -------------------------------------------------------------------------------- 1 | export * as NavigationMenu from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/pagination/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/pagination.svelte"; 2 | export { default as PrevButton } from "./components/pagination-prev-button.svelte"; 3 | export { default as NextButton } from "./components/pagination-next-button.svelte"; 4 | export { default as Page } from "./components/pagination-page.svelte"; 5 | 6 | export type { 7 | PaginationRootProps as RootProps, 8 | PaginationPrevButtonProps as PrevButtonProps, 9 | PaginationNextButtonProps as NextButtonProps, 10 | PaginationPageProps as PageProps, 11 | } from "./types.js"; 12 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/pagination/index.ts: -------------------------------------------------------------------------------- 1 | export * as Pagination from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/pin-input/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/pin-input.svelte"; 2 | export { default as Cell } from "./components/pin-input-cell.svelte"; 3 | 4 | export type { PinInputRootProps as RootProps, PinInputCellProps as CellProps } from "./types.js"; 5 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/pin-input/index.ts: -------------------------------------------------------------------------------- 1 | export * as PinInput from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/popover/components/popover-arrow.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/popover/components/popover.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | 22 | {@render children?.()} 23 | 24 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/popover/index.ts: -------------------------------------------------------------------------------- 1 | export * as Popover from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/progress/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/progress.svelte"; 2 | 3 | export type { ProgressRootProps as RootProps } from "./types.js"; 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/progress/index.ts: -------------------------------------------------------------------------------- 1 | export * as Progress from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/radio-group/components/radio-group-input.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | {#if inputState.shouldRender} 9 | 10 | {/if} 11 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/radio-group/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/radio-group.svelte"; 2 | export { default as Item } from "./components/radio-group-item.svelte"; 3 | 4 | export type { 5 | RadioGroupRootProps as RootProps, 6 | RadioGroupItemProps as ItemProps, 7 | } from "./types.js"; 8 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/radio-group/index.ts: -------------------------------------------------------------------------------- 1 | export * as RadioGroup from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/range-calendar/index.ts: -------------------------------------------------------------------------------- 1 | export * as RangeCalendar from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/rating-group/components/rating-group-input.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | {#if inputState.shouldRender} 9 | 10 | {/if} 11 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/rating-group/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/rating-group.svelte"; 2 | export { default as Item } from "./components/rating-group-item.svelte"; 3 | 4 | export type { 5 | RatingGroupRootProps as RootProps, 6 | RatingGroupItemProps as ItemProps, 7 | } from "./types.js"; 8 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/rating-group/index.ts: -------------------------------------------------------------------------------- 1 | export * as RatingGroup from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | {#if child} 14 | {@render child({ props: mergedProps })} 15 | {:else} 16 |
    17 | {@render children?.()} 18 |
    19 | {/if} 20 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | {#if scrollbarVisibleState.scrollbar.opts.orientation.current === "horizontal"} 13 | 14 | {:else} 15 | 16 | {/if} 17 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/scroll-area/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/scroll-area.svelte"; 2 | export { default as Viewport } from "./components/scroll-area-viewport.svelte"; 3 | export { default as Scrollbar } from "./components/scroll-area-scrollbar.svelte"; 4 | export { default as Thumb } from "./components/scroll-area-thumb.svelte"; 5 | export { default as Corner } from "./components/scroll-area-corner.svelte"; 6 | 7 | export type { 8 | ScrollAreaRootProps as RootProps, 9 | ScrollAreaViewportProps as ViewportProps, 10 | ScrollAreaScrollbarProps as ScrollbarProps, 11 | ScrollAreaThumbProps as ThumbProps, 12 | ScrollAreaCornerProps as CornerProps, 13 | } from "./types.js"; 14 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/scroll-area/index.ts: -------------------------------------------------------------------------------- 1 | export * as ScrollArea from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/select/components/select-hidden-input.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | {#if hiddenInputState.shouldRender} 14 | 15 | {/if} 16 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/select/index.ts: -------------------------------------------------------------------------------- 1 | export * as Select from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/separator/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/separator.svelte"; 2 | 3 | export type { SeparatorRootProps as RootProps } from "./types.js"; 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/separator/index.ts: -------------------------------------------------------------------------------- 1 | export * as Separator from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/separator/types.ts: -------------------------------------------------------------------------------- 1 | import type { WithChild, Without } from "$lib/internal/types.js"; 2 | import type { Orientation } from "$lib/shared/index.js"; 3 | import type { BitsPrimitiveDivAttributes } from "$lib/shared/attributes.js"; 4 | 5 | export type SeparatorRootPropsWithoutHTML = WithChild<{ 6 | /** 7 | * The orientation of the separator. 8 | * 9 | * @defaultValue "horizontal" 10 | */ 11 | orientation?: Orientation; 12 | 13 | /** 14 | * Whether the separator is decorative and should be hidden from assistive technologies. 15 | * 16 | * @defaultValue false 17 | */ 18 | decorative?: boolean; 19 | }>; 20 | 21 | export type SeparatorRootProps = SeparatorRootPropsWithoutHTML & 22 | Without; 23 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/slider/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/slider.svelte"; 2 | export { default as Range } from "./components/slider-range.svelte"; 3 | export { default as Thumb } from "./components/slider-thumb.svelte"; 4 | export { default as Tick } from "./components/slider-tick.svelte"; 5 | export { default as TickLabel } from "./components/slider-tick-label.svelte"; 6 | export { default as ThumbLabel } from "./components/slider-thumb-label.svelte"; 7 | 8 | export type { 9 | SliderRootProps as RootProps, 10 | SliderRangeProps as RangeProps, 11 | SliderThumbProps as ThumbProps, 12 | SliderTickProps as TickProps, 13 | SliderTickLabelProps as TickLabelProps, 14 | SliderThumbLabelProps as ThumbLabelProps, 15 | } from "./types.js"; 16 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/slider/index.ts: -------------------------------------------------------------------------------- 1 | export * as Slider from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/switch/components/switch-input.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | {#if inputState.shouldRender} 9 | 10 | {/if} 11 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/switch/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/switch.svelte"; 2 | export { default as Thumb } from "./components/switch-thumb.svelte"; 3 | 4 | export type { SwitchRootProps as RootProps, SwitchThumbProps as ThumbProps } from "./types.js"; 5 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/switch/index.ts: -------------------------------------------------------------------------------- 1 | export * as Switch from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/tabs/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/tabs.svelte"; 2 | export { default as Content } from "./components/tabs-content.svelte"; 3 | export { default as List } from "./components/tabs-list.svelte"; 4 | export { default as Trigger } from "./components/tabs-trigger.svelte"; 5 | 6 | export type { 7 | TabsRootProps as RootProps, 8 | TabsContentProps as ContentProps, 9 | TabsTriggerProps as TriggerProps, 10 | TabsListProps as ListProps, 11 | } from "./types.js"; 12 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/tabs/index.ts: -------------------------------------------------------------------------------- 1 | export * as Tabs from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/time-field/components/time-field-hidden-input.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | {#if hiddenInputState.shouldRender} 9 | 10 | {/if} 11 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/time-field/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/time-field.svelte"; 2 | export { default as Input } from "./components/time-field-input.svelte"; 3 | export { default as Label } from "./components/time-field-label.svelte"; 4 | export { default as Segment } from "./components/time-field-segment.svelte"; 5 | 6 | export type { 7 | TimeFieldRootProps as RootProps, 8 | TimeFieldInputProps as InputProps, 9 | TimeFieldLabelProps as LabelProps, 10 | TimeFieldSegmentProps as SegmentProps, 11 | // DateFieldDescriptionProps as DescriptionProps, 12 | } from "./types.js"; 13 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/time-field/index.ts: -------------------------------------------------------------------------------- 1 | export * as TimeField from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/time-range-field/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/time-range-field.svelte"; 2 | export { default as Input } from "./components/time-range-field-input.svelte"; 3 | export { default as Label } from "./components/time-range-field-label.svelte"; 4 | export { default as Segment } from "../time-field/components/time-field-segment.svelte"; 5 | 6 | export type { 7 | TimeRangeFieldRootProps as RootProps, 8 | TimeRangeFieldLabelProps as LabelProps, 9 | TimeRangeFieldInputProps as InputProps, 10 | TimeRangeFieldSegmentProps as SegmentProps, 11 | } from "./types.js"; 12 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/time-range-field/index.ts: -------------------------------------------------------------------------------- 1 | export * as TimeRangeField from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/toggle-group/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/toggle-group.svelte"; 2 | export { default as Item } from "./components/toggle-group-item.svelte"; 3 | 4 | export type { 5 | ToggleGroupRootProps as RootProps, 6 | ToggleGroupItemProps as ItemProps, 7 | } from "./types.js"; 8 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/toggle-group/index.ts: -------------------------------------------------------------------------------- 1 | export * as ToggleGroup from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/toggle/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/toggle.svelte"; 2 | export type { ToggleRootProps as RootProps } from "./types.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/toggle/index.ts: -------------------------------------------------------------------------------- 1 | export * as Toggle from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/toolbar/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as Root } from "./components/toolbar.svelte"; 2 | export { default as Button } from "./components/toolbar-button.svelte"; 3 | export { default as Link } from "./components/toolbar-link.svelte"; 4 | export { default as Group } from "./components/toolbar-group.svelte"; 5 | export { default as GroupItem } from "./components/toolbar-group-item.svelte"; 6 | 7 | export type { 8 | ToolbarRootProps as RootProps, 9 | ToolbarButtonProps as ButtonProps, 10 | ToolbarLinkProps as LinkProps, 11 | ToolbarGroupProps as GroupProps, 12 | ToolbarGroupItemProps as GroupItemProps, 13 | } from "./types.js"; 14 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/toolbar/index.ts: -------------------------------------------------------------------------------- 1 | export * as Toolbar from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/tooltip/components/tooltip-arrow.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/tooltip/index.ts: -------------------------------------------------------------------------------- 1 | export * as Tooltip from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/tooltip/utils.ts: -------------------------------------------------------------------------------- 1 | export const TOOLTIP_OPEN_EVENT = "tooltip.open"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/arrow/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Arrow } from "./arrow.svelte"; 2 | export type { ArrowProps } from "./types.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/arrow/types.ts: -------------------------------------------------------------------------------- 1 | import type { WithChild } from "$lib/internal/types.js"; 2 | import type { BitsPrimitiveSpanAttributes } from "$lib/shared/attributes.js"; 3 | 4 | export type ArrowPropsWithoutHTML = WithChild<{ 5 | /** 6 | * The width of the arrow in pixels. 7 | * 8 | * @defaultValue 10 9 | */ 10 | width?: number; 11 | 12 | /** 13 | * The height of the arrow in pixels. 14 | * 15 | * @defaultValue 5 16 | */ 17 | height?: number; 18 | }>; 19 | 20 | export type ArrowProps = ArrowPropsWithoutHTML & BitsPrimitiveSpanAttributes; 21 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/config/components/bits-config.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | {@render children?.()} 15 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/config/exports.ts: -------------------------------------------------------------------------------- 1 | export { default as BitsConfig } from "./components/bits-config.svelte"; 2 | export { getBitsConfig, BitsConfigState } from "./bits-config.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./exports.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/config/types.ts: -------------------------------------------------------------------------------- 1 | import type { WithChildren } from "$lib/internal/types.js"; 2 | import type { PortalTarget } from "$lib/bits/utilities/portal/types.js"; 3 | 4 | export type BitsConfigPropsWithoutChildren = { 5 | /** 6 | * The default portal `to`/target to use for the `Portal` components throughout the app. 7 | */ 8 | defaultPortalTo?: PortalTarget; 9 | 10 | /** 11 | * The default locale to use for the components that support localization. 12 | */ 13 | defaultLocale?: string; 14 | }; 15 | export type BitsConfigProps = WithChildren; 16 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/dismissible-layer/index.ts: -------------------------------------------------------------------------------- 1 | export { default as DismissibleLayer } from "./dismissible-layer.svelte"; 2 | 3 | export type { DismissibleLayerProps } from "./types.js"; 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/escape-layer/escape-layer.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 | {@render children?.()} 24 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/escape-layer/index.ts: -------------------------------------------------------------------------------- 1 | export { default as EscapeLayer } from "./escape-layer.svelte"; 2 | 3 | export type { EscapeLayerProps } from "./types.js"; 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/floating-layer/components/floating-layer-anchor.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 | {@render children?.()} 20 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/floating-layer/components/floating-layer-arrow.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/floating-layer/components/floating-layer-content-static.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 | {@render content?.({ props: {}, wrapperProps: {} })} 20 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/floating-layer/components/floating-layer.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | {@render children?.()} 11 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/floating-layer/components/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Anchor } from "./floating-layer-anchor.svelte"; 2 | export { default as Arrow } from "./floating-layer-arrow.svelte"; 3 | export { default as Content } from "./floating-layer-content.svelte"; 4 | export { default as ContentStatic } from "./floating-layer-content-static.svelte"; 5 | export { default as Root } from "./floating-layer.svelte"; 6 | 7 | export type { 8 | FloatingLayerContentImplProps as ContentImplProps, 9 | FloatingLayerContentProps as ContentProps, 10 | FloatingLayerAnchorProps as AnchorProps, 11 | } from "../types.js"; 12 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/floating-layer/index.ts: -------------------------------------------------------------------------------- 1 | export * as FloatingLayer from "./components/index.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/focus-scope/index.ts: -------------------------------------------------------------------------------- 1 | export { default as FocusScope } from "./focus-scope.svelte"; 2 | 3 | export type { FocusScopeProps } from "./types.js"; 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/hidden-input.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | {#if mergedProps.type === "checkbox"} 17 | 18 | {:else} 19 | 20 | {/if} 21 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Mounted } from "./mounted.svelte"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/mounted.svelte: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/popper-layer/index.ts: -------------------------------------------------------------------------------- 1 | export { default as PopperLayer } from "./popper-layer.svelte"; 2 | export type { PopperLayerProps } from "./types.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/popper-layer/popper-content.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | {#if isStatic} 15 | 16 | {:else} 17 | 18 | {/if} 19 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/portal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Portal } from "./portal.svelte"; 2 | export type { PortalProps } from "./types.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/portal/portal-consumer.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | {#key children} 8 | {@render children?.()} 9 | {/key} 10 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/portal/types.ts: -------------------------------------------------------------------------------- 1 | import type { Snippet } from "svelte"; 2 | 3 | export type PortalTarget = Element | string; 4 | 5 | export type PortalProps = { 6 | /** 7 | * Where to portal the content to. 8 | * 9 | * @default document.body 10 | */ 11 | to?: PortalTarget; 12 | 13 | /** 14 | * Disable portalling and render the component inline 15 | * 16 | * @defaultValue false 17 | */ 18 | disabled?: boolean; 19 | 20 | /** 21 | * The children content to render within the portal. 22 | */ 23 | children?: Snippet; 24 | }; 25 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/presence-layer/index.ts: -------------------------------------------------------------------------------- 1 | export { default as PresenceLayer } from "./presence-layer.svelte"; 2 | 3 | export type { PresenceLayerProps } from "./types.js"; 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/presence-layer/presence-layer.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | {#if forceMount || present || isPresent.current} 15 | {@render presence?.({ present: isPresent })} 16 | {/if} 17 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/presence-layer/types.ts: -------------------------------------------------------------------------------- 1 | import type { Snippet } from "svelte"; 2 | import type { ReadableBox } from "svelte-toolbelt"; 3 | 4 | export type PresenceLayerProps = { 5 | /** 6 | * Whether to force mount the component. 7 | */ 8 | forceMount?: boolean; 9 | }; 10 | 11 | export type PresenceLayerImplProps = PresenceLayerProps & { 12 | /** 13 | * The presence status. 14 | */ 15 | present: boolean; 16 | 17 | presence?: Snippet<[{ present: { current: boolean } }]>; 18 | 19 | ref: ReadableBox; 20 | }; 21 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/scroll-lock/index.ts: -------------------------------------------------------------------------------- 1 | export type ScrollLockProps = { 2 | /** 3 | * Whether to prevent body scrolling when the content is open. 4 | * 5 | * @defaultValue true 6 | */ 7 | preventScroll?: boolean; 8 | 9 | /** 10 | * The delay in milliseconds before the scrollbar is restored after closing the 11 | * dialog. This is only applicable when using the `child` snippet for custom 12 | * transitions and `preventScroll` is `true`. You should set this to a value 13 | * greater than the transition duration to prevent content from shifting during 14 | * the transition. 15 | * 16 | * @defaultValue null 17 | */ 18 | restoreScrollDelay?: number | null; 19 | }; 20 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/scroll-lock/scroll-lock.svelte: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/text-selection-layer/index.ts: -------------------------------------------------------------------------------- 1 | export { default as TextSelectionLayer } from "./text-selection-layer.svelte"; 2 | 3 | export type { TextSelectionLayerProps } from "./types.js"; 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/visually-hidden/index.ts: -------------------------------------------------------------------------------- 1 | export { default as VisuallyHidden } from "./visually-hidden.svelte"; 2 | export type * from "./types.js"; 3 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/bits/utilities/visually-hidden/types.ts: -------------------------------------------------------------------------------- 1 | import type { WithChild } from "$lib/internal/types.js"; 2 | import type { BitsPrimitiveSpanAttributes } from "$lib/shared/attributes.js"; 3 | 4 | export type VisuallyHiddenProps = WithChild; 5 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/clamp.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Clamps a number between a minimum and maximum value. 3 | */ 4 | export function clamp(n: number, min: number, max: number) { 5 | return Math.min(max, Math.max(min, n)); 6 | } 7 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/create-id.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Creates a unique ID for a given uid and optional prefix. 3 | * 4 | * @param uid - the uid generated by $props.id() 5 | * @param prefix - optional prefix to use for the id (defaults to "bits") 6 | */ 7 | export function createId(uid: string): string; 8 | export function createId(prefix: string, uid: string): string; 9 | export function createId(prefixOrUid: string, uid?: string): string { 10 | if (uid === undefined) return `bits-${prefixOrUid}`; 11 | return `bits-${prefixOrUid}-${uid}`; 12 | } 13 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/debounce.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 2 | export function debounce any>(fn: T, wait = 500) { 3 | let timeout: NodeJS.Timeout | null = null; 4 | 5 | const debounced = (...args: Parameters) => { 6 | if (timeout !== null) { 7 | clearTimeout(timeout); 8 | } 9 | timeout = setTimeout(() => { 10 | fn(...args); 11 | }, wait); 12 | }; 13 | 14 | debounced.destroy = () => { 15 | if (timeout !== null) { 16 | clearTimeout(timeout); 17 | timeout = null; 18 | } 19 | }; 20 | 21 | return debounced; 22 | } 23 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/elements.ts: -------------------------------------------------------------------------------- 1 | export function isOrContainsTarget(node: HTMLElement, target: Element) { 2 | return node === target || node.contains(target); 3 | } 4 | 5 | export function getOwnerDocument(el: Element | null | undefined) { 6 | return el?.ownerDocument ?? document; 7 | } 8 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/kbd.ts: -------------------------------------------------------------------------------- 1 | export * as kbd from "./kbd-constants.js"; 2 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/locale.ts: -------------------------------------------------------------------------------- 1 | // https://github.com/melt-ui/melt-ui 2 | import type { Direction } from "$lib/shared/index.js"; 3 | 4 | /** 5 | * Detects the text direction in the element. 6 | * @returns {Direction} The text direction ('ltr' for left-to-right or 'rtl' for right-to-left). 7 | */ 8 | export function getElemDirection(elem: HTMLElement): Direction { 9 | const style = window.getComputedStyle(elem); 10 | const direction = style.getPropertyValue("direction"); 11 | 12 | return direction as Direction; 13 | } 14 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/math.ts: -------------------------------------------------------------------------------- 1 | export function linearScale( 2 | domain: [number, number], 3 | range: [number, number], 4 | clamp: boolean = true 5 | ): (x: number) => number { 6 | const [d0, d1] = domain; 7 | const [r0, r1] = range; 8 | 9 | const slope = (r1 - r0) / (d1 - d0); 10 | 11 | return (x: number) => { 12 | const result = r0 + slope * (x - d0); 13 | if (!clamp) return result; 14 | if (result > Math.max(r0, r1)) return Math.max(r0, r1); 15 | if (result < Math.min(r0, r1)) return Math.min(r0, r1); 16 | return result; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/noop.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * A no operation function (does nothing) 3 | */ 4 | export function noop() {} 5 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/should-trap-focus.ts: -------------------------------------------------------------------------------- 1 | export function shouldTrapFocus({ 2 | forceMount, 3 | present, 4 | trapFocus, 5 | open, 6 | }: { 7 | forceMount: boolean; 8 | present: boolean; 9 | trapFocus: boolean; 10 | open: boolean; 11 | }): boolean { 12 | if (forceMount) { 13 | return open && trapFocus; 14 | } 15 | return present && trapFocus && open; 16 | } 17 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/sleep.ts: -------------------------------------------------------------------------------- 1 | export function sleep(ms: number) { 2 | return new Promise((resolve) => setTimeout(resolve, ms)); 3 | } 4 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/use-form-control.svelte.ts: -------------------------------------------------------------------------------- 1 | import type { Getter } from "svelte-toolbelt"; 2 | import { isBrowser } from "./is.js"; 3 | 4 | export function useFormControl(getNode: Getter) { 5 | const isInForm = $derived.by(() => { 6 | if (!isBrowser) return false; 7 | const node = getNode(); 8 | if (!node) return false; 9 | return Boolean(node.closest("form")); 10 | }); 11 | 12 | return { 13 | get current() { 14 | return isInForm; 15 | }, 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/use-id.ts: -------------------------------------------------------------------------------- 1 | globalThis.bitsIdCounter ??= { current: 0 }; 2 | 3 | /** 4 | * Generates a unique ID based on a global counter. 5 | */ 6 | export function useId(prefix = "bits") { 7 | globalThis.bitsIdCounter.current++; 8 | return `${prefix}-${globalThis.bitsIdCounter.current}`; 9 | } 10 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/internal/use-resize-observer.svelte.ts: -------------------------------------------------------------------------------- 1 | import type { Getter } from "svelte-toolbelt"; 2 | 3 | export function useResizeObserver(node: Getter, onResize: () => void) { 4 | $effect(() => { 5 | let rAF = 0; 6 | const _node = node(); 7 | if (!_node) return; 8 | const resizeObserver = new ResizeObserver(() => { 9 | cancelAnimationFrame(rAF); 10 | rAF = window.requestAnimationFrame(onResize); 11 | }); 12 | 13 | resizeObserver.observe(_node); 14 | return () => { 15 | window.cancelAnimationFrame(rAF); 16 | resizeObserver.unobserve(_node); 17 | }; 18 | }); 19 | } 20 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/shared/css.d.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 2 | import type * as CSS from "csstype"; 3 | 4 | declare module "csstype" { 5 | interface Properties { 6 | // Allow any CSS Custom Properties 7 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 8 | [index: `--${string}`]: any; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/bits-ui/src/lib/shared/types.ts: -------------------------------------------------------------------------------- 1 | export type FloatingContentSnippetProps = { 2 | /** 3 | * Whether the content is open or closed. Used alongside the `forceMount` prop to 4 | * conditionally render the content using Svelte transitions. 5 | */ 6 | open: boolean; 7 | 8 | /** 9 | * Attributes to spread onto a wrapper element around the content. 10 | * Do not style the wrapper element, its styles are computed by Floating UI. 11 | */ 12 | wrapperProps: Record; 13 | }; 14 | 15 | export type StaticContentSnippetProps = Omit; 16 | -------------------------------------------------------------------------------- /packages/bits-ui/svelte.config.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | preprocess: [vitePreprocess()], 7 | }; 8 | 9 | export default config; 10 | -------------------------------------------------------------------------------- /packages/bits-ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "moduleResolution": "NodeNext", 13 | "module": "NodeNext", 14 | "verbatimModuleSyntax": true, 15 | "noUncheckedIndexedAccess": true, 16 | "erasableSyntaxOnly": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - "packages/*" 3 | - "docs" 4 | - "tests" 5 | -------------------------------------------------------------------------------- /tests/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # Output 4 | .output 5 | .vercel 6 | /.svelte-kit 7 | /build 8 | 9 | # OS 10 | .DS_Store 11 | Thumbs.db 12 | 13 | # Env 14 | .env 15 | .env.* 16 | !.env.example 17 | !.env.test 18 | 19 | # Vite 20 | vite.config.js.timestamp-* 21 | vite.config.ts.timestamp-* 22 | -------------------------------------------------------------------------------- /tests/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /tests/src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /tests/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
    %sveltekit.body%
    11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/src/tests/accordion/accordion-test-isolated.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | open 9 | 10 | item 1 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/src/tests/avatar/avatar-test.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
    7 | 8 | 9 | HJ 10 | 11 | 12 | 13 |
    14 | -------------------------------------------------------------------------------- /tests/src/tests/checkbox/checkbox-test.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 |

    {checked}

    9 | 10 | {#snippet children({ checked, indeterminate })} 11 | 12 | {#if indeterminate} 13 | indeterminate 14 | {:else} 15 | {checked} 16 | {/if} 17 | 18 | {/snippet} 19 | 20 |
    21 | -------------------------------------------------------------------------------- /tests/src/tests/collapsible/collapsible-test.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
    11 |

    {open}

    12 | 13 | Trigger 14 | Content 15 | 16 | 17 |
    18 | -------------------------------------------------------------------------------- /tests/src/tests/helpers/calendar.ts: -------------------------------------------------------------------------------- 1 | export function getSelectedDays(calendar: HTMLElement) { 2 | return Array.from(calendar.querySelectorAll("[data-bits-day][data-selected]")); 3 | } 4 | 5 | export function getSelectedDay(calendar: HTMLElement) { 6 | return calendar.querySelector("[data-bits-day][data-selected]") as HTMLElement; 7 | } 8 | -------------------------------------------------------------------------------- /tests/src/tests/helpers/select.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Generates consistent test ids for select items, handling empty strings and null values 3 | * @param value - The value of the item 4 | * @returns The test id 5 | */ 6 | export function generateTestId(value: string | null) { 7 | return value && value !== null ? value : "empty"; 8 | } 9 | export function getTestId(item: { value: string | null }) { 10 | return item.value && item.value !== null ? item.value : "empty"; 11 | } 12 | -------------------------------------------------------------------------------- /tests/src/tests/label/label-test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | Label 7 | 8 |
    9 | -------------------------------------------------------------------------------- /tests/src/tests/meter/meter-test.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | 9 | 10 |
    11 | -------------------------------------------------------------------------------- /tests/src/tests/progress/progress-test.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | 9 | 10 |
    11 | -------------------------------------------------------------------------------- /tests/src/tests/separator/separator-test.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | 9 |
    10 | -------------------------------------------------------------------------------- /tests/src/tests/switch/switch-test.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | 9 | 10 | 11 | 12 |
    13 | -------------------------------------------------------------------------------- /tests/src/tests/toggle/toggle-test.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | 9 | a 10 |
    11 | -------------------------------------------------------------------------------- /tests/src/tests/tooltip/tooltip-popover-test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | {#snippet child({ props })} 10 | Resize 11 | {/snippet} 12 | 13 | 14 | 15 | 16 | 17 | 18 | Hello World! 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/src/tests/utilities/is-using-keyboard/is-using-keyboard-test.svelte: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /tests/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huntabyte/bits-ui/696ff0b59c929c94b07f02a99b1818da1cecdabb/tests/static/favicon.png -------------------------------------------------------------------------------- /tests/svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from "@sveltejs/adapter-auto"; 2 | import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported, or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter(), 15 | }, 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /tests/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "moduleResolution": "bundler" 13 | } 14 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 15 | // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files 16 | // 17 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 18 | // from the referenced tsconfig.json - TypeScript does not merge them in 19 | } 20 | --------------------------------------------------------------------------------