├── .browserslistrc
├── .circleci
└── config.yml
├── .codesandbox
├── ci.json
└── template
│ ├── README.md
│ ├── package.json
│ ├── public
│ ├── favicon.ico
│ └── index.html
│ ├── src
│ ├── App.tsx
│ ├── index.css
│ ├── index.tsx
│ └── react-app-env.d.ts
│ └── tsconfig.json
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── 1.bug.md
│ ├── 2.feature-request.md
│ ├── 3.get-help.md
│ └── 4.docs-feedback.md
├── PULL_REQUEST_TEMPLATE.md
├── codeql
│ └── codeql-config.yml
├── dependabot.yml
└── workflows
│ ├── check-if-pr-has-label.yml
│ ├── ci.yml
│ ├── codeql.yml
│ ├── ensure-triage-label.yml
│ ├── fixed-issue.yml
│ ├── maintenance.yml
│ ├── mark-duplicate.yml
│ ├── new-issue-triage.yml
│ ├── no-response.yml
│ ├── scorecards.yml
│ ├── support-stackoverflow.yml
│ └── vale-action.yml
├── .gitignore
├── .markdownlint-cli2.cjs
├── .npmrc
├── .vale.ini
├── .vscode
├── extensions.json
└── settings.json
├── CHANGELOG.md
├── CHANGELOG.old.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── babel.config.js
├── codecov.yml
├── dangerfile.js
├── docs
├── .env
├── .link-check-errors.txt
├── README.md
├── next-env.d.ts
├── next.config.mjs
├── package.json
├── postcss.config.js
├── public
│ ├── _headers
│ ├── _redirects
│ ├── robots.txt
│ └── static
│ │ ├── apple-touch-icon.png
│ │ ├── error-codes.json
│ │ ├── favicon-dev.ico
│ │ ├── favicon-dev.svg
│ │ ├── favicon.ico
│ │ ├── favicon.svg
│ │ └── logo.svg
├── reference
│ └── generated
│ │ ├── accordion-header.json
│ │ ├── accordion-item.json
│ │ ├── accordion-panel.json
│ │ ├── accordion-root.json
│ │ ├── accordion-trigger.json
│ │ ├── alert-dialog-backdrop.json
│ │ ├── alert-dialog-close.json
│ │ ├── alert-dialog-description.json
│ │ ├── alert-dialog-popup.json
│ │ ├── alert-dialog-portal.json
│ │ ├── alert-dialog-root.json
│ │ ├── alert-dialog-title.json
│ │ ├── alert-dialog-trigger.json
│ │ ├── avatar-fallback.json
│ │ ├── avatar-image.json
│ │ ├── avatar-root.json
│ │ ├── checkbox-group.json
│ │ ├── checkbox-indicator.json
│ │ ├── checkbox-root.json
│ │ ├── collapsible-panel.json
│ │ ├── collapsible-root.json
│ │ ├── collapsible-trigger.json
│ │ ├── context-menu-root.json
│ │ ├── context-menu-trigger.json
│ │ ├── dialog-backdrop.json
│ │ ├── dialog-close.json
│ │ ├── dialog-description.json
│ │ ├── dialog-popup.json
│ │ ├── dialog-portal.json
│ │ ├── dialog-root.json
│ │ ├── dialog-title.json
│ │ ├── dialog-trigger.json
│ │ ├── direction-provider.json
│ │ ├── field-control.json
│ │ ├── field-description.json
│ │ ├── field-error.json
│ │ ├── field-label.json
│ │ ├── field-root.json
│ │ ├── field-validity.json
│ │ ├── fieldset-legend.json
│ │ ├── fieldset-root.json
│ │ ├── form.json
│ │ ├── input.json
│ │ ├── menu-arrow.json
│ │ ├── menu-backdrop.json
│ │ ├── menu-checkbox-item-indicator.json
│ │ ├── menu-checkbox-item.json
│ │ ├── menu-group-label.json
│ │ ├── menu-group.json
│ │ ├── menu-item.json
│ │ ├── menu-popup.json
│ │ ├── menu-portal.json
│ │ ├── menu-positioner.json
│ │ ├── menu-radio-group.json
│ │ ├── menu-radio-item-indicator.json
│ │ ├── menu-radio-item.json
│ │ ├── menu-root.json
│ │ ├── menu-submenu-trigger.json
│ │ ├── menu-trigger.json
│ │ ├── menubar.json
│ │ ├── meter-indicator.json
│ │ ├── meter-label.json
│ │ ├── meter-root.json
│ │ ├── meter-track.json
│ │ ├── meter-value.json
│ │ ├── navigation-menu-arrow.json
│ │ ├── navigation-menu-backdrop.json
│ │ ├── navigation-menu-content.json
│ │ ├── navigation-menu-icon.json
│ │ ├── navigation-menu-item.json
│ │ ├── navigation-menu-link.json
│ │ ├── navigation-menu-list.json
│ │ ├── navigation-menu-popup.json
│ │ ├── navigation-menu-portal.json
│ │ ├── navigation-menu-positioner.json
│ │ ├── navigation-menu-root.json
│ │ ├── navigation-menu-trigger.json
│ │ ├── navigation-menu-viewport.json
│ │ ├── no-ssr.json
│ │ ├── number-field-decrement.json
│ │ ├── number-field-group.json
│ │ ├── number-field-increment.json
│ │ ├── number-field-input.json
│ │ ├── number-field-root.json
│ │ ├── number-field-scrub-area-cursor.json
│ │ ├── number-field-scrub-area.json
│ │ ├── popover-arrow.json
│ │ ├── popover-backdrop.json
│ │ ├── popover-close.json
│ │ ├── popover-description.json
│ │ ├── popover-popup.json
│ │ ├── popover-portal.json
│ │ ├── popover-positioner.json
│ │ ├── popover-root.json
│ │ ├── popover-title.json
│ │ ├── popover-trigger.json
│ │ ├── preview-card-arrow.json
│ │ ├── preview-card-backdrop.json
│ │ ├── preview-card-popup.json
│ │ ├── preview-card-portal.json
│ │ ├── preview-card-positioner.json
│ │ ├── preview-card-root.json
│ │ ├── preview-card-trigger.json
│ │ ├── progress-indicator.json
│ │ ├── progress-label.json
│ │ ├── progress-root.json
│ │ ├── progress-track.json
│ │ ├── progress-value.json
│ │ ├── radio-group.json
│ │ ├── radio-indicator.json
│ │ ├── radio-root.json
│ │ ├── scroll-area-content.json
│ │ ├── scroll-area-corner.json
│ │ ├── scroll-area-root.json
│ │ ├── scroll-area-scrollbar.json
│ │ ├── scroll-area-thumb.json
│ │ ├── scroll-area-viewport.json
│ │ ├── select-arrow.json
│ │ ├── select-backdrop.json
│ │ ├── select-group-label.json
│ │ ├── select-group.json
│ │ ├── select-icon.json
│ │ ├── select-item-indicator.json
│ │ ├── select-item-text.json
│ │ ├── select-item.json
│ │ ├── select-popup.json
│ │ ├── select-portal.json
│ │ ├── select-positioner.json
│ │ ├── select-root.json
│ │ ├── select-scroll-down-arrow.json
│ │ ├── select-scroll-up-arrow.json
│ │ ├── select-trigger.json
│ │ ├── select-value.json
│ │ ├── separator.json
│ │ ├── slider-control.json
│ │ ├── slider-indicator.json
│ │ ├── slider-root.json
│ │ ├── slider-thumb.json
│ │ ├── slider-track.json
│ │ ├── slider-value.json
│ │ ├── switch-root.json
│ │ ├── switch-thumb.json
│ │ ├── tabs-indicator.json
│ │ ├── tabs-list.json
│ │ ├── tabs-panel.json
│ │ ├── tabs-root.json
│ │ ├── tabs-tab.json
│ │ ├── toast-action.json
│ │ ├── toast-close.json
│ │ ├── toast-description.json
│ │ ├── toast-portal.json
│ │ ├── toast-provider.json
│ │ ├── toast-root.json
│ │ ├── toast-title.json
│ │ ├── toast-viewport.json
│ │ ├── toggle-group.json
│ │ ├── toggle.json
│ │ ├── toolbar-button.json
│ │ ├── toolbar-group.json
│ │ ├── toolbar-input.json
│ │ ├── toolbar-link.json
│ │ ├── toolbar-root.json
│ │ ├── toolbar-separator.json
│ │ ├── tooltip-arrow.json
│ │ ├── tooltip-popup.json
│ │ ├── tooltip-portal.json
│ │ ├── tooltip-positioner.json
│ │ ├── tooltip-provider.json
│ │ ├── tooltip-root.json
│ │ ├── tooltip-trigger.json
│ │ └── use-render.json
├── scripts
│ ├── playground.template.tsx
│ ├── rehypeExtractLinkUrls.mts
│ └── reportBrokenLinks.mts
├── src
│ ├── app
│ │ ├── (private)
│ │ │ ├── experiments
│ │ │ │ ├── [...slug]
│ │ │ │ │ └── page.tsx
│ │ │ │ ├── accordion
│ │ │ │ │ ├── animations.module.css
│ │ │ │ │ ├── animations.tsx
│ │ │ │ │ ├── horizontal.module.css
│ │ │ │ │ ├── horizontal.tsx
│ │ │ │ │ ├── transitions.module.css
│ │ │ │ │ └── transitions.tsx
│ │ │ │ ├── anchor-positioning.module.css
│ │ │ │ ├── anchor-positioning.tsx
│ │ │ │ ├── anchor-side-animations.module.css
│ │ │ │ ├── anchor-side-animations.tsx
│ │ │ │ ├── collapsible
│ │ │ │ │ ├── _icons.tsx
│ │ │ │ │ ├── animate-presence.tsx
│ │ │ │ │ ├── animations.module.css
│ │ │ │ │ ├── animations.tsx
│ │ │ │ │ ├── collapsible.module.css
│ │ │ │ │ ├── motion.module.css
│ │ │ │ │ ├── plain.tsx
│ │ │ │ │ ├── transitions.module.css
│ │ │ │ │ └── transitions.tsx
│ │ │ │ ├── dialog.module.css
│ │ │ │ ├── dialog.tsx
│ │ │ │ ├── form.module.css
│ │ │ │ ├── form.tsx
│ │ │ │ ├── long-select.module.css
│ │ │ │ ├── long-select.tsx
│ │ │ │ ├── menu
│ │ │ │ │ ├── menu-anchor-el.tsx
│ │ │ │ │ ├── menu-anchor-ref.tsx
│ │ │ │ │ ├── menu-fully-featured.tsx
│ │ │ │ │ ├── menu-horizontal.tsx
│ │ │ │ │ ├── menu-nested.tsx
│ │ │ │ │ ├── menu-rtl.tsx
│ │ │ │ │ └── menu.module.css
│ │ │ │ ├── menubar.module.css
│ │ │ │ ├── menubar.tsx
│ │ │ │ ├── meter.module.css
│ │ │ │ ├── meter.tsx
│ │ │ │ ├── mobile-scroll-lock.module.css
│ │ │ │ ├── mobile-scroll-lock.tsx
│ │ │ │ ├── modality.tsx
│ │ │ │ ├── motion.tsx
│ │ │ │ ├── page.tsx
│ │ │ │ ├── popups
│ │ │ │ │ ├── popups-in-popups.tsx
│ │ │ │ │ ├── popups-transform-origin.module.css
│ │ │ │ │ └── popups-transform-origin.tsx
│ │ │ │ ├── rtl.module.css
│ │ │ │ ├── rtl.tsx
│ │ │ │ ├── scroll-area
│ │ │ │ │ ├── inside-select.module.css
│ │ │ │ │ ├── inside-select.tsx
│ │ │ │ │ ├── scroll-area-inset.module.css
│ │ │ │ │ ├── scroll-area-inset.tsx
│ │ │ │ │ ├── scroll-area-slight.module.css
│ │ │ │ │ ├── scroll-area-slight.tsx
│ │ │ │ │ └── scroll-area.tsx
│ │ │ │ ├── scroll-lock.tsx
│ │ │ │ ├── select-perf.module.css
│ │ │ │ ├── select-perf.tsx
│ │ │ │ ├── slider
│ │ │ │ │ ├── form.tsx
│ │ │ │ │ ├── slider.module.css
│ │ │ │ │ ├── slider.tsx
│ │ │ │ │ ├── small.module.css
│ │ │ │ │ └── vertical.module.css
│ │ │ │ ├── tabs.module.css
│ │ │ │ ├── tabs.tsx
│ │ │ │ ├── toast.module.css
│ │ │ │ ├── toast.tsx
│ │ │ │ ├── toggle-group.tsx
│ │ │ │ ├── toggle.module.css
│ │ │ │ ├── toolbar
│ │ │ │ │ ├── _icons.tsx
│ │ │ │ │ ├── basic.tsx
│ │ │ │ │ ├── slider.module.css
│ │ │ │ │ ├── text-editor.tsx
│ │ │ │ │ ├── toolbar.module.css
│ │ │ │ │ ├── triggers.module.css
│ │ │ │ │ └── triggers.tsx
│ │ │ │ └── tooltip.tsx
│ │ │ ├── layout.css
│ │ │ ├── layout.tsx
│ │ │ └── playground
│ │ │ │ └── [slug]
│ │ │ │ └── page.tsx
│ │ ├── (public)
│ │ │ ├── (content)
│ │ │ │ ├── layout.css
│ │ │ │ ├── layout.tsx
│ │ │ │ ├── react
│ │ │ │ │ ├── components
│ │ │ │ │ │ ├── accordion
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── alert-dialog
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── avatar
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── checkbox-group
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ ├── form
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ │ ├── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── nested
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ │ └── parent
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── checkbox
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── collapsible
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── context-menu
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ ├── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ └── submenu
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── dialog
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ ├── close-confirmation
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ └── nested
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── field
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── fieldset
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── form
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ ├── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ └── zod
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── input
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── menu
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ ├── checkbox-items
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── group-labels
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── open-on-hover
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── radio-items
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ └── submenu
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── menubar
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── meter
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── navigation-menu
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ ├── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ └── nested
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── number-field
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── popover
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── preview-card
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── progress
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── radio
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── scroll-area
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── select
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── separator
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── slider
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ ├── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ └── range-slider
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── switch
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── tabs
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── toast
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ ├── custom
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ │ ├── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── position
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── promise
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ │ └── undo
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── toggle-group
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── toggle
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── toolbar
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ └── tooltip
│ │ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ ├── handbook
│ │ │ │ │ │ ├── animation
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── composition
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ └── styling
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ ├── overview
│ │ │ │ │ │ ├── about
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── accessibility
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ ├── quick-start
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ └── releases
│ │ │ │ │ │ │ └── page.mdx
│ │ │ │ │ └── utils
│ │ │ │ │ │ ├── direction-provider
│ │ │ │ │ │ ├── demos
│ │ │ │ │ │ │ └── hero
│ │ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ │ └── tailwind
│ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ └── page.mdx
│ │ │ │ │ │ └── use-render
│ │ │ │ │ │ ├── demos
│ │ │ │ │ │ ├── render-callback
│ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── render
│ │ │ │ │ │ │ ├── css-modules
│ │ │ │ │ │ │ ├── index.module.css
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── page.mdx
│ │ │ │ └── test
│ │ │ │ │ └── quick-nav
│ │ │ │ │ └── page.mdx
│ │ │ ├── careers
│ │ │ │ └── design-engineer
│ │ │ │ │ └── page.tsx
│ │ │ ├── layout.css
│ │ │ ├── layout.tsx
│ │ │ ├── opengraph-image.png
│ │ │ ├── page.css
│ │ │ └── page.tsx
│ │ ├── Favicons.tsx
│ │ ├── layout.tsx
│ │ ├── not-found.css
│ │ └── not-found.tsx
│ ├── blocks
│ │ ├── Demo
│ │ │ ├── DemoContext.ts
│ │ │ ├── DemoPlayground.tsx
│ │ │ ├── DemoRoot.tsx
│ │ │ ├── DemoSourceBrowser.tsx
│ │ │ ├── DemoSourceCopy.tsx
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── GoogleAnalytics.tsx
│ │ ├── GoogleTagManager.tsx
│ │ ├── PackageManagerSnippet
│ │ │ ├── PackageManagerSnippetCode.tsx
│ │ │ ├── PackageManagerSnippetProvider.tsx
│ │ │ ├── PackageManagerSnippetRoot.tsx
│ │ │ └── index.ts
│ │ ├── README.txt
│ │ └── createCodeSandbox
│ │ │ ├── CreateReactApp.ts
│ │ │ ├── addHiddenInput.ts
│ │ │ ├── createCodeSandbox.ts
│ │ │ ├── createStackBlitzProject.ts
│ │ │ ├── flattenRelativeImports.ts
│ │ │ ├── packDemo.test.ts
│ │ │ └── packDemo.ts
│ ├── breakpoints.css
│ ├── components
│ │ ├── Code.css
│ │ ├── Code.tsx
│ │ ├── CodeBlock.css
│ │ ├── CodeBlock.tsx
│ │ ├── Demo
│ │ │ ├── CodeSandboxLink.tsx
│ │ │ ├── Demo.css
│ │ │ ├── Demo.tsx
│ │ │ ├── DemoCodeBlock.tsx
│ │ │ ├── DemoErrorFallback.tsx
│ │ │ ├── DemoFileSelector.tsx
│ │ │ ├── DemoLoader.tsx
│ │ │ ├── DemoPlayground.tsx
│ │ │ ├── DemoVariantSelector.tsx
│ │ │ ├── DemoVariantSelectorProvider.tsx
│ │ │ └── rehypeDemos.mjs
│ │ ├── DocsProviders.tsx
│ │ ├── Experiments
│ │ │ ├── Button.module.css
│ │ │ ├── Button.tsx
│ │ │ ├── EditPanel.tsx
│ │ │ ├── ExperimentRoot.module.css
│ │ │ ├── ExperimentRoot.tsx
│ │ │ ├── ExperimentsList.module.css
│ │ │ ├── ExperimentsList.tsx
│ │ │ ├── HideSidebar.tsx
│ │ │ ├── Input.module.css
│ │ │ ├── Input.tsx
│ │ │ ├── SandboxLink.tsx
│ │ │ ├── Select.module.css
│ │ │ ├── Select.tsx
│ │ │ ├── SettingsPanel.module.css
│ │ │ ├── SettingsPanel.tsx
│ │ │ ├── ShowSidebar.module.css
│ │ │ ├── ShowSidebar.tsx
│ │ │ ├── Sidebar.module.css
│ │ │ ├── Sidebar.tsx
│ │ │ ├── Switch.module.css
│ │ │ ├── Switch.tsx
│ │ │ ├── Tooltip.module.css
│ │ │ └── Tooltip.tsx
│ │ ├── GhostButton.css
│ │ ├── GhostButton.tsx
│ │ ├── GoogleAnalytics.tsx
│ │ ├── Header.css
│ │ ├── Header.tsx
│ │ ├── HeadingLink.css
│ │ ├── HeadingLink.tsx
│ │ ├── Kbd
│ │ │ ├── Kbd.css
│ │ │ ├── Kbd.tsx
│ │ │ └── rehypeKbd.mjs
│ │ ├── Link.css
│ │ ├── Link.tsx
│ │ ├── Logo.tsx
│ │ ├── MobileNav.css
│ │ ├── MobileNav.tsx
│ │ ├── Popup.css
│ │ ├── Popup.tsx
│ │ ├── QuickNav
│ │ │ ├── QuickNav.css
│ │ │ ├── QuickNav.tsx
│ │ │ ├── rehypeQuickNav.mjs
│ │ │ └── rehypeSlug.mjs
│ │ ├── ReferenceTable
│ │ │ ├── AttributesReferenceTable.tsx
│ │ │ ├── CssVariablesReferenceTable.tsx
│ │ │ ├── PropsReferenceTable.tsx
│ │ │ ├── ReferenceTablePopover.tsx
│ │ │ ├── rehypeReference.mjs
│ │ │ └── types.ts
│ │ ├── ScrollArea.css
│ │ ├── ScrollArea.tsx
│ │ ├── Select.css
│ │ ├── Select.tsx
│ │ ├── SideNav.css
│ │ ├── SideNav.tsx
│ │ ├── SkipNav.css
│ │ ├── SkipNav.tsx
│ │ ├── Subtitle
│ │ │ ├── Subtitle.css
│ │ │ ├── Subtitle.tsx
│ │ │ └── rehypeSubtitle.mjs
│ │ ├── Table.css
│ │ ├── Table.tsx
│ │ └── TableCode.tsx
│ ├── demo-theme.css
│ ├── fonts
│ │ ├── bold.woff2
│ │ ├── index.css
│ │ ├── medium.woff2
│ │ └── regular.woff2
│ ├── icons
│ │ ├── ArrowRightIcon.tsx
│ │ ├── CheckIcon.tsx
│ │ ├── ChevronDownIcon.tsx
│ │ ├── CopyIcon.tsx
│ │ ├── ExternalLinkIcon.tsx
│ │ ├── GitHubIcon.tsx
│ │ ├── NpmIcon.tsx
│ │ └── ThickCheckIcon.tsx
│ ├── mdx-components.tsx
│ ├── mdx
│ │ ├── createHast.mjs
│ │ ├── createMdxComponent.ts
│ │ └── createMdxElement.mjs
│ ├── nav.ts
│ ├── styles.css
│ ├── syntax-highlighting
│ │ ├── index.css
│ │ ├── index.mjs
│ │ ├── index.ts
│ │ ├── rehypeEmptyLines.mjs
│ │ ├── rehypeInlineCode.mjs
│ │ ├── rehypeJsxExpressions.mjs
│ │ └── rehypePrettierIgnore.mjs
│ └── utils
│ │ ├── camelToSentenceCase.ts
│ │ └── getChildrenText.ts
├── tsconfig.json
├── types.d.ts
└── vitest.config.mts
├── lerna.json
├── netlify.toml
├── netlify
└── functions
│ └── deploy-succeeded.js
├── nx.json
├── package.json
├── packages
├── eslint-plugin-material-ui
│ ├── package.json
│ └── src
│ │ └── index.js
└── react
│ ├── .npmignore
│ ├── README.md
│ ├── package.json
│ ├── scripts
│ └── createPackageManifest.mts
│ ├── src
│ ├── accordion
│ │ ├── header
│ │ │ ├── AccordionHeader.test.tsx
│ │ │ ├── AccordionHeader.tsx
│ │ │ └── AccordionHeaderDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── item
│ │ │ ├── AccordionItem.test.tsx
│ │ │ ├── AccordionItem.tsx
│ │ │ ├── AccordionItemContext.ts
│ │ │ ├── AccordionItemDataAttributes.ts
│ │ │ └── styleHooks.ts
│ │ ├── panel
│ │ │ ├── AccordionPanel.test.tsx
│ │ │ ├── AccordionPanel.tsx
│ │ │ ├── AccordionPanelCssVars.ts
│ │ │ └── AccordionPanelDataAttributes.ts
│ │ ├── root
│ │ │ ├── AccordionRoot.test.tsx
│ │ │ ├── AccordionRoot.tsx
│ │ │ ├── AccordionRootContext.ts
│ │ │ └── AccordionRootDataAttributes.ts
│ │ └── trigger
│ │ │ ├── AccordionTrigger.test.tsx
│ │ │ ├── AccordionTrigger.tsx
│ │ │ └── AccordionTriggerDataAttributes.ts
│ ├── alert-dialog
│ │ ├── backdrop
│ │ │ ├── AlertDialogBackdrop.test.tsx
│ │ │ ├── AlertDialogBackdrop.tsx
│ │ │ └── AlertDialogBackdropDataAttributes.ts
│ │ ├── close
│ │ │ ├── AlertDialogClose.test.tsx
│ │ │ ├── AlertDialogClose.tsx
│ │ │ └── AlertDialogCloseDataAttributes.ts
│ │ ├── description
│ │ │ ├── AlertDialogDescription.test.tsx
│ │ │ └── AlertDialogDescription.tsx
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── popup
│ │ │ ├── AlertDialogPopup.test.tsx
│ │ │ ├── AlertDialogPopup.tsx
│ │ │ ├── AlertDialogPopupCssVars.ts
│ │ │ └── AlertDialogPopupDataAttributes.ts
│ │ ├── portal
│ │ │ ├── AlertDialogPortal.tsx
│ │ │ └── AlertDialogPortalContext.ts
│ │ ├── root
│ │ │ ├── AlertDialogRoot.test.tsx
│ │ │ ├── AlertDialogRoot.tsx
│ │ │ └── AlertDialogRootContext.ts
│ │ ├── title
│ │ │ ├── AlertDialogTitle.test.tsx
│ │ │ └── AlertDialogTitle.tsx
│ │ └── trigger
│ │ │ ├── AlertDialogTrigger.test.tsx
│ │ │ ├── AlertDialogTrigger.tsx
│ │ │ └── AlertDialogTriggerDataAttributes.ts
│ ├── avatar
│ │ ├── fallback
│ │ │ ├── AvatarFallback.test.tsx
│ │ │ └── AvatarFallback.tsx
│ │ ├── image
│ │ │ ├── AvatarImage.test.tsx
│ │ │ ├── AvatarImage.tsx
│ │ │ └── useImageLoadingStatus.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ └── root
│ │ │ ├── AvatarRoot.test.tsx
│ │ │ ├── AvatarRoot.tsx
│ │ │ ├── AvatarRootContext.ts
│ │ │ └── styleHooks.ts
│ ├── checkbox-group
│ │ ├── CheckboxGroup.test.tsx
│ │ ├── CheckboxGroup.tsx
│ │ ├── CheckboxGroupContext.ts
│ │ ├── CheckboxGroupDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── useCheckboxGroupParent.test.tsx
│ │ └── useCheckboxGroupParent.ts
│ ├── checkbox
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── indicator
│ │ │ ├── CheckboxIndicator.test.tsx
│ │ │ ├── CheckboxIndicator.tsx
│ │ │ └── CheckboxIndicatorDataAttributes.ts
│ │ ├── root
│ │ │ ├── CheckboxRoot.test.tsx
│ │ │ ├── CheckboxRoot.tsx
│ │ │ ├── CheckboxRootContext.ts
│ │ │ └── CheckboxRootDataAttributes.ts
│ │ └── utils
│ │ │ └── useCustomStyleHookMapping.ts
│ ├── collapsible
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── panel
│ │ │ ├── CollapsiblePanel.test.tsx
│ │ │ ├── CollapsiblePanel.tsx
│ │ │ ├── CollapsiblePanelCssVars.ts
│ │ │ ├── CollapsiblePanelDataAttributes.ts
│ │ │ └── useCollapsiblePanel.ts
│ │ ├── root
│ │ │ ├── CollapsibleRoot.test.tsx
│ │ │ ├── CollapsibleRoot.tsx
│ │ │ ├── CollapsibleRootContext.ts
│ │ │ ├── styleHooks.ts
│ │ │ └── useCollapsibleRoot.ts
│ │ └── trigger
│ │ │ ├── CollapsibleTrigger.test.tsx
│ │ │ ├── CollapsibleTrigger.tsx
│ │ │ └── CollapsibleTriggerDataAttributes.ts
│ ├── composite
│ │ ├── composite.ts
│ │ ├── constants.ts
│ │ ├── item
│ │ │ ├── CompositeItem.tsx
│ │ │ └── useCompositeItem.ts
│ │ ├── list
│ │ │ ├── CompositeList.tsx
│ │ │ ├── CompositeListContext.ts
│ │ │ └── useCompositeListItem.ts
│ │ └── root
│ │ │ ├── CompositeRoot.test.tsx
│ │ │ ├── CompositeRoot.tsx
│ │ │ ├── CompositeRootContext.ts
│ │ │ └── useCompositeRoot.ts
│ ├── context-menu
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── root
│ │ │ ├── ContextMenuRoot.tsx
│ │ │ └── ContextMenuRootContext.ts
│ │ └── trigger
│ │ │ ├── ContextMenuTrigger.test.tsx
│ │ │ └── ContextMenuTrigger.tsx
│ ├── dialog
│ │ ├── backdrop
│ │ │ ├── DialogBackdrop.test.tsx
│ │ │ ├── DialogBackdrop.tsx
│ │ │ └── DialogBackdropDataAttributes.ts
│ │ ├── close
│ │ │ ├── DialogClose.test.tsx
│ │ │ ├── DialogClose.tsx
│ │ │ ├── DialogCloseDataAttributes.ts
│ │ │ └── useDialogClose.ts
│ │ ├── description
│ │ │ ├── DialogDescription.test.tsx
│ │ │ └── DialogDescription.tsx
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── popup
│ │ │ ├── DialogPopup.test.tsx
│ │ │ ├── DialogPopup.tsx
│ │ │ ├── DialogPopupCssVars.ts
│ │ │ ├── DialogPopupDataAttributes.ts
│ │ │ └── useDialogPopup.tsx
│ │ ├── portal
│ │ │ ├── DialogPortal.tsx
│ │ │ └── DialogPortalContext.ts
│ │ ├── root
│ │ │ ├── DialogRoot.test.tsx
│ │ │ ├── DialogRoot.tsx
│ │ │ ├── DialogRootContext.ts
│ │ │ └── useDialogRoot.ts
│ │ ├── title
│ │ │ ├── DialogTitle.test.tsx
│ │ │ └── DialogTitle.tsx
│ │ ├── trigger
│ │ │ ├── DialogTrigger.test.tsx
│ │ │ ├── DialogTrigger.tsx
│ │ │ └── DialogTriggerDataAttributes.ts
│ │ └── utils
│ │ │ └── DialogContext.ts
│ ├── direction-provider
│ │ ├── DirectionContext.tsx
│ │ ├── DirectionProvider.tsx
│ │ ├── index.parts.ts
│ │ └── index.ts
│ ├── field
│ │ ├── control
│ │ │ ├── FieldControl.test.tsx
│ │ │ ├── FieldControl.tsx
│ │ │ ├── FieldControlDataAttributes.ts
│ │ │ └── useFieldControlValidation.ts
│ │ ├── description
│ │ │ ├── FieldDescription.test.tsx
│ │ │ ├── FieldDescription.tsx
│ │ │ └── FieldDescriptionDataAttributes.ts
│ │ ├── error
│ │ │ ├── FieldError.test.tsx
│ │ │ ├── FieldError.tsx
│ │ │ └── FieldErrorDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── label
│ │ │ ├── FieldLabel.test.tsx
│ │ │ ├── FieldLabel.tsx
│ │ │ └── FieldLabelDataAttributes.ts
│ │ ├── root
│ │ │ ├── FieldRoot.test.tsx
│ │ │ ├── FieldRoot.tsx
│ │ │ ├── FieldRootContext.ts
│ │ │ └── FieldRootDataAttributes.ts
│ │ ├── useField.ts
│ │ ├── utils
│ │ │ ├── constants.ts
│ │ │ └── getCombinedFieldValidityData.ts
│ │ └── validity
│ │ │ ├── FieldValidity.test.tsx
│ │ │ └── FieldValidity.tsx
│ ├── fieldset
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── legend
│ │ │ ├── FieldsetLegend.test.tsx
│ │ │ ├── FieldsetLegend.tsx
│ │ │ └── useFieldsetLegend.ts
│ │ └── root
│ │ │ ├── FieldsetRoot.test.tsx
│ │ │ ├── FieldsetRoot.tsx
│ │ │ └── FieldsetRootContext.ts
│ ├── form
│ │ ├── Form.test.tsx
│ │ ├── Form.tsx
│ │ ├── FormContext.ts
│ │ └── index.ts
│ ├── global.d.ts
│ ├── index.test.ts
│ ├── index.ts
│ ├── input
│ │ ├── Input.test.tsx
│ │ ├── Input.tsx
│ │ ├── InputDataAttributes.ts
│ │ └── index.ts
│ ├── menu
│ │ ├── arrow
│ │ │ ├── MenuArrow.test.tsx
│ │ │ ├── MenuArrow.tsx
│ │ │ └── MenuArrowDataAttributes.ts
│ │ ├── backdrop
│ │ │ ├── MenuBackdrop.test.tsx
│ │ │ ├── MenuBackdrop.tsx
│ │ │ └── MenuBackdropDataAttributes.ts
│ │ ├── checkbox-item-indicator
│ │ │ ├── MenuCheckboxItemIndicator.test.tsx
│ │ │ ├── MenuCheckboxItemIndicator.tsx
│ │ │ └── MenuCheckboxItemIndicatorDataAttributes.ts
│ │ ├── checkbox-item
│ │ │ ├── MenuCheckboxItem.test.tsx
│ │ │ ├── MenuCheckboxItem.tsx
│ │ │ ├── MenuCheckboxItemContext.ts
│ │ │ └── MenuCheckboxItemDataAttributes.ts
│ │ ├── group-label
│ │ │ ├── MenuGroupLabel.test.tsx
│ │ │ └── MenuGroupLabel.tsx
│ │ ├── group
│ │ │ ├── MenuGroup.test.tsx
│ │ │ ├── MenuGroup.tsx
│ │ │ └── MenuGroupContext.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── item
│ │ │ ├── MenuItem.test.tsx
│ │ │ ├── MenuItem.tsx
│ │ │ ├── MenuItemDataAttributes.ts
│ │ │ └── useMenuItem.ts
│ │ ├── popup
│ │ │ ├── MenuPopup.test.tsx
│ │ │ ├── MenuPopup.tsx
│ │ │ └── MenuPopupDataAttributes.ts
│ │ ├── portal
│ │ │ ├── MenuPortal.tsx
│ │ │ └── MenuPortalContext.ts
│ │ ├── positioner
│ │ │ ├── MenuPositioner.spec.tsx
│ │ │ ├── MenuPositioner.test.tsx
│ │ │ ├── MenuPositioner.tsx
│ │ │ ├── MenuPositionerContext.ts
│ │ │ ├── MenuPositionerCssVars.ts
│ │ │ └── MenuPositionerDataAttributes.ts
│ │ ├── radio-group
│ │ │ ├── MenuRadioGroup.test.tsx
│ │ │ ├── MenuRadioGroup.tsx
│ │ │ └── MenuRadioGroupContext.ts
│ │ ├── radio-item-indicator
│ │ │ ├── MenuRadioItemIndicator.test.tsx
│ │ │ ├── MenuRadioItemIndicator.tsx
│ │ │ └── MenuRadioItemIndicatorDataAttributes.ts
│ │ ├── radio-item
│ │ │ ├── MenuRadioItem.test.tsx
│ │ │ ├── MenuRadioItem.tsx
│ │ │ ├── MenuRadioItemContext.ts
│ │ │ └── MenuRadioItemDataAttributes.ts
│ │ ├── root
│ │ │ ├── MenuRoot.test.tsx
│ │ │ ├── MenuRoot.tsx
│ │ │ └── MenuRootContext.ts
│ │ ├── submenu-trigger
│ │ │ ├── MenuSubmenuTrigger.test.tsx
│ │ │ ├── MenuSubmenuTrigger.tsx
│ │ │ └── MenuSubmenuTriggerDataAttributes.ts
│ │ ├── trigger
│ │ │ ├── MenuTrigger.test.tsx
│ │ │ ├── MenuTrigger.tsx
│ │ │ └── MenuTriggerDataAttributes.ts
│ │ └── utils
│ │ │ └── styleHookMapping.ts
│ ├── menubar
│ │ ├── Menubar.test.tsx
│ │ ├── Menubar.tsx
│ │ ├── MenubarContext.ts
│ │ ├── MenubarDataAttributes.ts
│ │ └── index.ts
│ ├── merge-props
│ │ ├── index.ts
│ │ ├── mergeProps.test.ts
│ │ └── mergeProps.ts
│ ├── meter
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── indicator
│ │ │ ├── MeterIndicator.test.tsx
│ │ │ └── MeterIndicator.tsx
│ │ ├── label
│ │ │ ├── MeterLabel.test.tsx
│ │ │ └── MeterLabel.tsx
│ │ ├── root
│ │ │ ├── MeterRoot.test.tsx
│ │ │ ├── MeterRoot.tsx
│ │ │ └── MeterRootContext.ts
│ │ ├── track
│ │ │ ├── MeterTrack.test.tsx
│ │ │ └── MeterTrack.tsx
│ │ └── value
│ │ │ ├── MeterValue.test.tsx
│ │ │ └── MeterValue.tsx
│ ├── navigation-menu
│ │ ├── arrow
│ │ │ ├── NavigationMenuArrow.test.tsx
│ │ │ ├── NavigationMenuArrow.tsx
│ │ │ └── NavigationMenuArrowDataAttributes.ts
│ │ ├── backdrop
│ │ │ ├── NavigationMenuBackdrop.test.tsx
│ │ │ ├── NavigationMenuBackdrop.tsx
│ │ │ └── NavigationMenuBackdropDataAttributes.ts
│ │ ├── content
│ │ │ ├── NavigationMenuContent.test.tsx
│ │ │ ├── NavigationMenuContent.tsx
│ │ │ └── NavigationMenuContentDataAttributes.ts
│ │ ├── icon
│ │ │ ├── NavigationMenuIcon.test.tsx
│ │ │ └── NavigationMenuIcon.tsx
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── item
│ │ │ ├── NavigationMenuItem.test.tsx
│ │ │ ├── NavigationMenuItem.tsx
│ │ │ └── NavigationMenuItemContext.ts
│ │ ├── link
│ │ │ ├── NavigationMenuLink.test.tsx
│ │ │ └── NavigationMenuLink.tsx
│ │ ├── list
│ │ │ ├── NavigationMenuList.test.tsx
│ │ │ └── NavigationMenuList.tsx
│ │ ├── popup
│ │ │ ├── NavigationMenuPopup.test.tsx
│ │ │ ├── NavigationMenuPopup.tsx
│ │ │ ├── NavigationMenuPopupCssVars.ts
│ │ │ └── NavigationMenuPopupDataAttributes.ts
│ │ ├── portal
│ │ │ ├── NavigationMenuPortal.tsx
│ │ │ └── NavigationMenuPortalContext.ts
│ │ ├── positioner
│ │ │ ├── NavigationMenuPositioner.test.tsx
│ │ │ ├── NavigationMenuPositioner.tsx
│ │ │ ├── NavigationMenuPositionerContext.ts
│ │ │ ├── NavigationMenuPositionerCssVars.ts
│ │ │ └── NavigationPositionerDataAttributes.ts
│ │ ├── root
│ │ │ ├── NavigationMenuRoot.test.tsx
│ │ │ ├── NavigationMenuRoot.tsx
│ │ │ └── NavigationMenuRootContext.ts
│ │ ├── trigger
│ │ │ ├── NavigationMenuTrigger.test.tsx
│ │ │ ├── NavigationMenuTrigger.tsx
│ │ │ └── NavigationMenuTriggerDataAttributes.ts
│ │ ├── utils
│ │ │ ├── constants.ts
│ │ │ └── isOutsideMenuEvent.ts
│ │ └── viewport
│ │ │ ├── NavigationMenuViewport.test.tsx
│ │ │ └── NavigationMenuViewport.tsx
│ ├── number-field
│ │ ├── decrement
│ │ │ ├── NumberFieldDecrement.test.tsx
│ │ │ ├── NumberFieldDecrement.tsx
│ │ │ └── NumberFieldDecrementDataAttributes.ts
│ │ ├── group
│ │ │ ├── NumberFieldGroup.test.tsx
│ │ │ ├── NumberFieldGroup.tsx
│ │ │ └── NumberFieldGroupDataAttributes.ts
│ │ ├── increment
│ │ │ ├── NumberFieldIncrement.test.tsx
│ │ │ ├── NumberFieldIncrement.tsx
│ │ │ └── NumberFieldIncrementDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── input
│ │ │ ├── NumberFieldInput.test.tsx
│ │ │ ├── NumberFieldInput.tsx
│ │ │ └── NumberFieldInputDataAttributes.ts
│ │ ├── root
│ │ │ ├── NumberFieldRoot.test.tsx
│ │ │ ├── NumberFieldRoot.tsx
│ │ │ ├── NumberFieldRootContext.ts
│ │ │ ├── NumberFieldRootDataAttributes.ts
│ │ │ └── useNumberFieldButton.ts
│ │ ├── scrub-area-cursor
│ │ │ ├── NumberFieldScrubAreaCursor.test.tsx
│ │ │ ├── NumberFieldScrubAreaCursor.tsx
│ │ │ └── NumberFieldScrubAreaCursorDataAttributes.ts
│ │ ├── scrub-area
│ │ │ ├── NumberFieldScrubArea.test.tsx
│ │ │ ├── NumberFieldScrubArea.tsx
│ │ │ ├── NumberFieldScrubAreaContext.ts
│ │ │ └── NumberFieldScrubAreaDataAttributes.ts
│ │ └── utils
│ │ │ ├── constants.ts
│ │ │ ├── getViewportRect.ts
│ │ │ ├── parse.test.ts
│ │ │ ├── parse.ts
│ │ │ ├── styleHooks.ts
│ │ │ ├── subscribeToVisualViewportResize.ts
│ │ │ ├── types.ts
│ │ │ ├── validate.test.ts
│ │ │ └── validate.ts
│ ├── popover
│ │ ├── arrow
│ │ │ ├── PopoverArrow.test.tsx
│ │ │ ├── PopoverArrow.tsx
│ │ │ └── PopoverArrowDataAttributes.ts
│ │ ├── backdrop
│ │ │ ├── PopoverBackdrop.test.tsx
│ │ │ ├── PopoverBackdrop.tsx
│ │ │ └── PopoverBackdropDataAttributes.ts
│ │ ├── close
│ │ │ ├── PopoverClose.test.tsx
│ │ │ └── PopoverClose.tsx
│ │ ├── description
│ │ │ ├── PopoverDescription.test.tsx
│ │ │ └── PopoverDescription.tsx
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── popup
│ │ │ ├── PopoverPopup.test.tsx
│ │ │ ├── PopoverPopup.tsx
│ │ │ ├── PopoverPopupDataAttributes.ts
│ │ │ └── usePopoverPopup.ts
│ │ ├── portal
│ │ │ ├── PopoverPortal.tsx
│ │ │ └── PopoverPortalContext.ts
│ │ ├── positioner
│ │ │ ├── PopoverPositioner.spec.tsx
│ │ │ ├── PopoverPositioner.test.tsx
│ │ │ ├── PopoverPositioner.tsx
│ │ │ ├── PopoverPositionerContext.ts
│ │ │ ├── PopoverPositionerCssVars.ts
│ │ │ ├── PopoverPositionerDataAttributes.ts
│ │ │ └── usePopoverPositioner.tsx
│ │ ├── root
│ │ │ ├── PopoverRoot.test.tsx
│ │ │ ├── PopoverRoot.tsx
│ │ │ └── PopoverRootContext.ts
│ │ ├── title
│ │ │ ├── PopoverTitle.test.tsx
│ │ │ ├── PopoverTitle.tsx
│ │ │ └── usePopoverTitle.ts
│ │ ├── trigger
│ │ │ ├── PopoverTrigger.test.tsx
│ │ │ ├── PopoverTrigger.tsx
│ │ │ └── PopoverTriggerDataAttributes.ts
│ │ └── utils
│ │ │ └── constants.ts
│ ├── preview-card
│ │ ├── arrow
│ │ │ ├── PreviewCardArrow.test.tsx
│ │ │ ├── PreviewCardArrow.tsx
│ │ │ └── PreviewCardArrowDataAttributes.ts
│ │ ├── backdrop
│ │ │ ├── PreviewCardBackdrop.test.tsx
│ │ │ ├── PreviewCardBackdrop.tsx
│ │ │ └── PreviewCardBackdropDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── popup
│ │ │ ├── PreviewCardPopup.test.tsx
│ │ │ ├── PreviewCardPopup.tsx
│ │ │ ├── PreviewCardPopupDataAttributes.ts
│ │ │ └── usePreviewCardPopup.ts
│ │ ├── portal
│ │ │ ├── PreviewCardPortal.tsx
│ │ │ └── PreviewCardPortalContext.ts
│ │ ├── positioner
│ │ │ ├── PreviewCardPositioner.spec.tsx
│ │ │ ├── PreviewCardPositioner.test.tsx
│ │ │ ├── PreviewCardPositioner.tsx
│ │ │ ├── PreviewCardPositionerContext.ts
│ │ │ ├── PreviewCardPositionerCssVars.ts
│ │ │ ├── PreviewCardPositionerDataAttributes.ts
│ │ │ └── usePreviewCardPositioner.ts
│ │ ├── root
│ │ │ ├── PreviewCardContext.ts
│ │ │ ├── PreviewCardRoot.test.tsx
│ │ │ ├── PreviewCardRoot.tsx
│ │ │ └── usePreviewCardRoot.ts
│ │ ├── trigger
│ │ │ ├── PreviewCardTrigger.test.tsx
│ │ │ ├── PreviewCardTrigger.tsx
│ │ │ └── PreviewCardTriggerDataAttributes.ts
│ │ └── utils
│ │ │ └── constants.ts
│ ├── progress
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── indicator
│ │ │ ├── ProgressIndicator.test.tsx
│ │ │ ├── ProgressIndicator.tsx
│ │ │ └── ProgressIndicatorDataAttributes.ts
│ │ ├── label
│ │ │ ├── ProgressLabel.test.tsx
│ │ │ ├── ProgressLabel.tsx
│ │ │ └── ProgressLabelDataAttributes.ts
│ │ ├── root
│ │ │ ├── ProgressRoot.test.tsx
│ │ │ ├── ProgressRoot.tsx
│ │ │ ├── ProgressRootContext.tsx
│ │ │ ├── ProgressRootDataAttributes.ts
│ │ │ └── styleHooks.ts
│ │ ├── track
│ │ │ ├── ProgressTrack.test.tsx
│ │ │ ├── ProgressTrack.tsx
│ │ │ └── ProgressTrackDataAttributes.ts
│ │ └── value
│ │ │ ├── ProgressValue.test.tsx
│ │ │ ├── ProgressValue.tsx
│ │ │ └── ProgressValueDataAttributes.ts
│ ├── radio-group
│ │ ├── RadioGroup.test.tsx
│ │ ├── RadioGroup.tsx
│ │ ├── RadioGroupContext.ts
│ │ ├── RadioGroupDataAttributes.ts
│ │ ├── index.ts
│ │ └── useRadioGroup.ts
│ ├── radio
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── indicator
│ │ │ ├── RadioIndicator.test.tsx
│ │ │ ├── RadioIndicator.tsx
│ │ │ └── RadioIndicatorDataAttributes.ts
│ │ ├── root
│ │ │ ├── RadioRoot.test.tsx
│ │ │ ├── RadioRoot.tsx
│ │ │ ├── RadioRootContext.ts
│ │ │ └── RadioRootDataAttributes.ts
│ │ └── utils
│ │ │ └── customStyleHookMapping.ts
│ ├── scroll-area
│ │ ├── constants.ts
│ │ ├── content
│ │ │ ├── ScrollAreaContent.test.tsx
│ │ │ └── ScrollAreaContent.tsx
│ │ ├── corner
│ │ │ ├── ScrollAreaCorner.test.tsx
│ │ │ └── ScrollAreaCorner.tsx
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── root
│ │ │ ├── ScrollAreaRoot.test.tsx
│ │ │ ├── ScrollAreaRoot.tsx
│ │ │ ├── ScrollAreaRootContext.ts
│ │ │ └── ScrollAreaRootCssVars.ts
│ │ ├── scrollbar
│ │ │ ├── ScrollAreaScrollbar.test.tsx
│ │ │ ├── ScrollAreaScrollbar.tsx
│ │ │ ├── ScrollAreaScrollbarContext.ts
│ │ │ ├── ScrollAreaScrollbarCssVars.ts
│ │ │ └── ScrollAreaScrollbarDataAttributes.ts
│ │ ├── thumb
│ │ │ ├── ScrollAreaThumb.test.tsx
│ │ │ ├── ScrollAreaThumb.tsx
│ │ │ └── ScrollAreaThumbDataAttributes.ts
│ │ ├── utils
│ │ │ ├── getOffset.ts
│ │ │ └── onVisible.ts
│ │ └── viewport
│ │ │ ├── ScrollAreaViewport.test.tsx
│ │ │ ├── ScrollAreaViewport.tsx
│ │ │ └── ScrollAreaViewportContext.ts
│ ├── select
│ │ ├── arrow
│ │ │ ├── SelectArrow.test.tsx
│ │ │ ├── SelectArrow.tsx
│ │ │ └── SelectArrowDataAttributes.ts
│ │ ├── backdrop
│ │ │ ├── SelectBackdrop.test.tsx
│ │ │ ├── SelectBackdrop.tsx
│ │ │ └── SelectBackdropDataAttributes.ts
│ │ ├── group-label
│ │ │ ├── SelectGroupLabel.test.tsx
│ │ │ └── SelectGroupLabel.tsx
│ │ ├── group
│ │ │ ├── SelectGroup.test.tsx
│ │ │ ├── SelectGroup.tsx
│ │ │ └── SelectGroupContext.ts
│ │ ├── icon
│ │ │ ├── SelectIcon.test.tsx
│ │ │ └── SelectIcon.tsx
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── item-indicator
│ │ │ ├── SelectItemIndicator.test.tsx
│ │ │ └── SelectItemIndicator.tsx
│ │ ├── item-text
│ │ │ ├── SelectItemText.test.tsx
│ │ │ └── SelectItemText.tsx
│ │ ├── item
│ │ │ ├── SelectItem.test.tsx
│ │ │ ├── SelectItem.tsx
│ │ │ ├── SelectItemContext.ts
│ │ │ ├── SelectItemDataAttributes.ts
│ │ │ └── useSelectItem.ts
│ │ ├── popup
│ │ │ ├── SelectPopup.test.tsx
│ │ │ ├── SelectPopup.tsx
│ │ │ ├── SelectPopupDataAttributes.ts
│ │ │ ├── useSelectPopup.ts
│ │ │ └── utils.ts
│ │ ├── portal
│ │ │ ├── SelectPortal.tsx
│ │ │ └── SelectPortalContext.ts
│ │ ├── positioner
│ │ │ ├── SelectPositioner.spec.tsx
│ │ │ ├── SelectPositioner.test.tsx
│ │ │ ├── SelectPositioner.tsx
│ │ │ ├── SelectPositionerContext.ts
│ │ │ ├── SelectPositionerCssVars.ts
│ │ │ ├── SelectPositionerDataAttributes.ts
│ │ │ └── useSelectPositioner.ts
│ │ ├── root
│ │ │ ├── SelectIndexContext.ts
│ │ │ ├── SelectRoot.test.tsx
│ │ │ ├── SelectRoot.tsx
│ │ │ ├── SelectRootContext.ts
│ │ │ └── useSelectRoot.ts
│ │ ├── scroll-arrow
│ │ │ └── SelectScrollArrow.tsx
│ │ ├── scroll-down-arrow
│ │ │ ├── SelectScrollDownArrow.test.tsx
│ │ │ ├── SelectScrollDownArrow.tsx
│ │ │ └── SelectScrollDownArrowDataAttributes.ts
│ │ ├── scroll-up-arrow
│ │ │ ├── SelectScrollUpArrow.test.tsx
│ │ │ ├── SelectScrollUpArrow.tsx
│ │ │ └── SelectScrollUpArrowDataAttributes.ts
│ │ ├── trigger
│ │ │ ├── SelectTrigger.test.tsx
│ │ │ ├── SelectTrigger.tsx
│ │ │ ├── SelectTriggerDataAttributes.ts
│ │ │ └── useSelectTrigger.ts
│ │ └── value
│ │ │ ├── SelectValue.test.tsx
│ │ │ └── SelectValue.tsx
│ ├── separator
│ │ ├── Separator.test.tsx
│ │ ├── Separator.tsx
│ │ └── index.ts
│ ├── slider
│ │ ├── control
│ │ │ ├── SliderControl.test.tsx
│ │ │ ├── SliderControl.tsx
│ │ │ └── SliderControlDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── indicator
│ │ │ ├── SliderIndicator.test.tsx
│ │ │ ├── SliderIndicator.tsx
│ │ │ └── SliderIndicatorDataAttributes.ts
│ │ ├── root
│ │ │ ├── SliderRoot.spec.tsx
│ │ │ ├── SliderRoot.test.tsx
│ │ │ ├── SliderRoot.tsx
│ │ │ ├── SliderRootContext.ts
│ │ │ ├── SliderRootDataAttributes.ts
│ │ │ └── styleHooks.ts
│ │ ├── thumb
│ │ │ ├── SliderThumb.test.tsx
│ │ │ ├── SliderThumb.tsx
│ │ │ └── SliderThumbDataAttributes.ts
│ │ ├── track
│ │ │ ├── SliderTrack.test.tsx
│ │ │ ├── SliderTrack.tsx
│ │ │ └── SliderTrackDataAttributes.ts
│ │ ├── utils
│ │ │ ├── asc.ts
│ │ │ ├── getSliderValue.ts
│ │ │ ├── replaceArrayItemAtIndex.ts
│ │ │ ├── roundValueToStep.ts
│ │ │ ├── validateMinimumDistance.ts
│ │ │ └── valueArrayToPercentages.ts
│ │ └── value
│ │ │ ├── SliderValue.test.tsx
│ │ │ ├── SliderValue.tsx
│ │ │ └── SliderValueDataAttributes.ts
│ ├── switch
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── root
│ │ │ ├── SwitchRoot.test.tsx
│ │ │ ├── SwitchRoot.tsx
│ │ │ ├── SwitchRootContext.ts
│ │ │ └── SwitchRootDataAttributes.ts
│ │ ├── styleHooks.ts
│ │ └── thumb
│ │ │ ├── SwitchThumb.test.tsx
│ │ │ ├── SwitchThumb.tsx
│ │ │ └── SwitchThumbDataAttributes.ts
│ ├── tabs
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── indicator
│ │ │ ├── TabsIndicator.test.tsx
│ │ │ ├── TabsIndicator.tsx
│ │ │ ├── TabsIndicatorCssVars.ts
│ │ │ ├── TabsIndicatorDataAttributes.ts
│ │ │ ├── prehydrationScript.min.ts
│ │ │ └── prehydrationScript.template.js
│ │ ├── list
│ │ │ ├── TabsList.test.tsx
│ │ │ ├── TabsList.tsx
│ │ │ ├── TabsListContext.ts
│ │ │ └── TabsListDataAttributes.ts
│ │ ├── panel
│ │ │ ├── TabsPanel.test.tsx
│ │ │ ├── TabsPanel.tsx
│ │ │ └── TabsPanelDataAttributes.ts
│ │ ├── root
│ │ │ ├── TabsRoot.test.tsx
│ │ │ ├── TabsRoot.tsx
│ │ │ ├── TabsRootContext.ts
│ │ │ ├── TabsRootDataAttributes.ts
│ │ │ └── styleHooks.ts
│ │ └── tab
│ │ │ ├── TabsTab.test.tsx
│ │ │ ├── TabsTab.tsx
│ │ │ └── TabsTabDataAttributes.ts
│ ├── toast
│ │ ├── action
│ │ │ ├── ToastAction.test.tsx
│ │ │ ├── ToastAction.tsx
│ │ │ └── ToastActionDataAttributes.ts
│ │ ├── close
│ │ │ ├── ToastClose.test.tsx
│ │ │ ├── ToastClose.tsx
│ │ │ └── ToastCloseDataAttributes.ts
│ │ ├── createToastManager.test.tsx
│ │ ├── createToastManager.ts
│ │ ├── description
│ │ │ ├── ToastDescription.test.tsx
│ │ │ ├── ToastDescription.tsx
│ │ │ └── ToastDescriptionDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── portal
│ │ │ └── ToastPortal.tsx
│ │ ├── provider
│ │ │ ├── ToastProvider.tsx
│ │ │ └── ToastProviderContext.ts
│ │ ├── root
│ │ │ ├── ToastRoot.test.tsx
│ │ │ ├── ToastRoot.tsx
│ │ │ ├── ToastRootContext.ts
│ │ │ ├── ToastRootCssVars.ts
│ │ │ └── ToastRootDataAttributes.ts
│ │ ├── title
│ │ │ ├── ToastTitle.test.tsx
│ │ │ ├── ToastTitle.tsx
│ │ │ └── ToastTitleDataAttributes.ts
│ │ ├── useToastManager.test.tsx
│ │ ├── useToastManager.ts
│ │ ├── utils
│ │ │ ├── focusVisible.ts
│ │ │ ├── resolvePromiseOptions.ts
│ │ │ └── test-utils.tsx
│ │ └── viewport
│ │ │ ├── FocusGuard.tsx
│ │ │ ├── ToastViewport.test.tsx
│ │ │ ├── ToastViewport.tsx
│ │ │ ├── ToastViewportContext.ts
│ │ │ └── ToastViewportDataAttributes.ts
│ ├── toggle-group
│ │ ├── ToggleGroup.test.tsx
│ │ ├── ToggleGroup.tsx
│ │ ├── ToggleGroupContext.ts
│ │ ├── ToggleGroupDataAttributes.ts
│ │ └── index.ts
│ ├── toggle
│ │ ├── Toggle.test.tsx
│ │ ├── Toggle.tsx
│ │ ├── ToggleDataAttributes.ts
│ │ └── index.ts
│ ├── toolbar
│ │ ├── button
│ │ │ ├── ToolbarButton.test.tsx
│ │ │ ├── ToolbarButton.tsx
│ │ │ └── ToolbarButtonDataAttributes.ts
│ │ ├── group
│ │ │ ├── ToolbarGroup.test.tsx
│ │ │ ├── ToolbarGroup.tsx
│ │ │ ├── ToolbarGroupContext.ts
│ │ │ └── ToolbarGroupDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── input
│ │ │ ├── ToolbarInput.test.tsx
│ │ │ ├── ToolbarInput.tsx
│ │ │ └── ToolbarInputDataAttributes.ts
│ │ ├── link
│ │ │ ├── ToolbarLink.test.tsx
│ │ │ ├── ToolbarLink.tsx
│ │ │ └── ToolbarLinkDataAttributes.ts
│ │ ├── root
│ │ │ ├── ToolbarRoot.test.tsx
│ │ │ ├── ToolbarRoot.tsx
│ │ │ ├── ToolbarRootContext.ts
│ │ │ └── ToolbarRootDataAttributes.ts
│ │ └── separator
│ │ │ ├── ToolbarSeparator.tsx
│ │ │ └── ToolbarSeparatorDataAttributes.ts
│ ├── tooltip
│ │ ├── arrow
│ │ │ ├── TooltipArrow.test.tsx
│ │ │ ├── TooltipArrow.tsx
│ │ │ └── TooltipArrowDataAttributes.ts
│ │ ├── index.parts.ts
│ │ ├── index.ts
│ │ ├── popup
│ │ │ ├── TooltipPopup.test.tsx
│ │ │ ├── TooltipPopup.tsx
│ │ │ └── TooltipPopupDataAttributes.ts
│ │ ├── portal
│ │ │ ├── TooltipPortal.tsx
│ │ │ └── TooltipPortalContext.ts
│ │ ├── positioner
│ │ │ ├── TooltipPositioner.spec.tsx
│ │ │ ├── TooltipPositioner.test.tsx
│ │ │ ├── TooltipPositioner.tsx
│ │ │ ├── TooltipPositionerContext.ts
│ │ │ ├── TooltipPositionerCssVars.ts
│ │ │ ├── TooltipPositionerDataAttributes.ts
│ │ │ └── useTooltipPositioner.ts
│ │ ├── provider
│ │ │ ├── TooltipProvider.test.tsx
│ │ │ ├── TooltipProvider.tsx
│ │ │ └── TooltipProviderContext.ts
│ │ ├── root
│ │ │ ├── TooltipRoot.test.tsx
│ │ │ ├── TooltipRoot.tsx
│ │ │ ├── TooltipRootContext.ts
│ │ │ └── useTooltipRoot.ts
│ │ ├── trigger
│ │ │ ├── TooltipTrigger.spec.tsx
│ │ │ ├── TooltipTrigger.test.tsx
│ │ │ ├── TooltipTrigger.tsx
│ │ │ └── TooltipTriggerDataAttributes.ts
│ │ └── utils
│ │ │ └── constants.ts
│ ├── unstable-no-ssr
│ │ ├── NoSsr.test.tsx
│ │ ├── NoSsr.tsx
│ │ ├── NoSsr.types.ts
│ │ └── index.ts
│ ├── unstable-use-media-query
│ │ └── index.ts
│ ├── use-button
│ │ ├── index.ts
│ │ ├── useButton.test.tsx
│ │ └── useButton.ts
│ ├── use-render
│ │ ├── index.ts
│ │ ├── useRender.spec.tsx
│ │ ├── useRender.test.tsx
│ │ └── useRender.ts
│ └── utils
│ │ ├── FloatingPortalLite.tsx
│ │ ├── InternalBackdrop.tsx
│ │ ├── areArraysEqual.ts
│ │ ├── clamp.test.ts
│ │ ├── clamp.ts
│ │ ├── collapsibleOpenStateMapping.ts
│ │ ├── constants.ts
│ │ ├── detectBrowser.ts
│ │ ├── fastObjectShallowCompare.ts
│ │ ├── floating-ui
│ │ ├── useClick.ts
│ │ └── useFocusWithDelay.ts
│ │ ├── formatNumber.test.ts
│ │ ├── formatNumber.ts
│ │ ├── generateId.ts
│ │ ├── getPseudoElementBounds.ts
│ │ ├── getReactElementRef.test.tsx
│ │ ├── getReactElementRef.ts
│ │ ├── getStyleHookProps.test.ts
│ │ ├── getStyleHookProps.ts
│ │ ├── hasComputedStyleMapSupport.ts
│ │ ├── highlighted.ts
│ │ ├── index.ts
│ │ ├── inertValue.ts
│ │ ├── isElementDisabled.ts
│ │ ├── isMouseWithinBounds.ts
│ │ ├── mergeObjects.ts
│ │ ├── noop.ts
│ │ ├── owner.ts
│ │ ├── popupStateMapping.ts
│ │ ├── reactVersion.ts
│ │ ├── resolveClassName.ts
│ │ ├── styleHookMapping.ts
│ │ ├── translateOpenChangeReason.ts
│ │ ├── types.ts
│ │ ├── useAnchorPositioning.ts
│ │ ├── useAnimationFrame.ts
│ │ ├── useAnimationsFinished.ts
│ │ ├── useBaseUiId.ts
│ │ ├── useComponentRenderer.test.tsx
│ │ ├── useComponentRenderer.ts
│ │ ├── useControlled.test.tsx
│ │ ├── useControlled.ts
│ │ ├── useEnhancedClickHandler.ts
│ │ ├── useEventCallback.ts
│ │ ├── useForcedRerendering.ts
│ │ ├── useForkRef.test.tsx
│ │ ├── useForkRef.ts
│ │ ├── useId.test.tsx
│ │ ├── useId.ts
│ │ ├── useInterval.ts
│ │ ├── useLatestRef.ts
│ │ ├── useLazyRef.ts
│ │ ├── useModernLayoutEffect.ts
│ │ ├── useOnMount.ts
│ │ ├── useOpenChangeComplete.tsx
│ │ ├── useOpenInteractionType.ts
│ │ ├── usePanelResize.ts
│ │ ├── useRenderElement.spec.tsx
│ │ ├── useRenderElement.tsx
│ │ ├── useRootElementName.ts
│ │ ├── useScrollLock.ts
│ │ ├── useTimeout.ts
│ │ ├── useTransitionStatus.ts
│ │ ├── valueToPercent.ts
│ │ ├── visuallyHidden.ts
│ │ └── warn.ts
│ ├── test
│ ├── conformanceTests
│ │ ├── className.tsx
│ │ ├── propForwarding.tsx
│ │ ├── refForwarding.tsx
│ │ ├── renderProp.tsx
│ │ └── utils.ts
│ ├── createRenderer.ts
│ ├── describeConformance.tsx
│ ├── index.ts
│ ├── popupConformanceTests.tsx
│ └── utils.ts
│ ├── tsconfig.build.json
│ ├── tsconfig.json
│ ├── tsconfig.test.json
│ └── vitest.config.mts
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── prettier.config.js
├── renovate.json
├── scripts
├── README.md
├── api-docs-builder
│ ├── package.json
│ └── src
│ │ ├── componentHandler.ts
│ │ ├── formatter.ts
│ │ ├── hookHandler.ts
│ │ ├── index.ts
│ │ └── order.json
├── build.mjs
├── buildTypes.mts
├── copyFiles.mjs
├── dangerFileContent.ts
├── inlineScripts.mts
├── jsonlint.mjs
├── pushArgos.mjs
├── releaseChangelog.mts
├── releaseTag.mjs
├── testBuiltTypes.mjs
├── useReactVersion.mjs
└── validateTypescriptDeclarations.mts
├── stylelint.config.mjs
├── test
├── README.md
├── assets
│ ├── fake.png
│ └── fake2.png
├── bundle-size
│ ├── base-entry.js
│ ├── bundle-size-checker.config.mjs
│ └── package.json
├── docs-regressions-before.png
├── docs-regressions-diff.png
├── e2e
│ ├── README.md
│ ├── TestViewer.tsx
│ ├── fixtures
│ │ ├── .gitkeep
│ │ └── Radio.tsx
│ ├── index.html
│ ├── index.test.ts
│ ├── main.tsx
│ ├── postcss.config.js
│ ├── serve.json
│ ├── vite.config.mjs
│ └── vitest.config.mts
├── node-resolution
│ ├── index.mjs
│ └── package.json
├── package.json
├── regressions
│ ├── README.md
│ ├── TestViewer.tsx
│ ├── fixtures
│ │ └── .gitkeep
│ ├── index.html
│ ├── index.test.ts
│ ├── main.tsx
│ ├── manual
│ │ └── README.md
│ ├── postcss.config.js
│ ├── serve.json
│ ├── vite.config.mjs
│ └── vitest.config.mts
├── setupVitest.ts
├── tsconfig.json
├── vite.d.ts
└── vite.shared.config.mjs
├── tsconfig.base.json
├── tsconfig.json
├── vitest.config.mts
└── vitest.shared.mts
/.codesandbox/ci.json:
--------------------------------------------------------------------------------
1 | {
2 | "buildCommand": "build:codesandbox",
3 | "installCommand": "install:codesandbox",
4 | "node": "18",
5 | "packages": ["packages/react"],
6 | "publishDirectory": {
7 | "@base-ui-components/react": "packages/react/build"
8 | },
9 | "sandboxes": ["/.codesandbox/template"],
10 | "silent": true
11 | }
12 |
--------------------------------------------------------------------------------
/.codesandbox/template/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mui/base-ui/aba256ecccaaedb16bd723574c03eb83397ee3b5/.codesandbox/template/public/favicon.ico
--------------------------------------------------------------------------------
/.codesandbox/template/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | CRA + Base UI + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.codesandbox/template/src/App.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import './index.css';
3 |
4 | export default function App() {
5 | return (
6 |
7 |
Base UI + Create React App
8 |
9 |
Base UI is a library of unstyled UI components for
10 | building accessible web apps and design systems.
11 |
12 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/.codesandbox/template/src/index.css:
--------------------------------------------------------------------------------
1 | .item {
2 | border: 1px solid #000000;
3 | padding: 20px;
4 | border-radius: 4px;
5 | margin-bottom: 20px;
6 | }
7 |
8 | .box {
9 | flex-grow: 1;
10 | max-width: 800px;
11 | margin: auto;
12 | padding: 15px;
13 | font-family: sans-serif;
14 | line-height: 1.5;
15 | }
16 |
--------------------------------------------------------------------------------
/.codesandbox/template/src/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import * as ReactDOM from 'react-dom/client';
3 | import App from './App';
4 |
5 | const rootElement = document.getElementById('root');
6 | const root = ReactDOM.createRoot(rootElement!);
7 |
8 | root.render();
9 |
--------------------------------------------------------------------------------
/.codesandbox/template/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/.codesandbox/template/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "esModuleInterop": true,
8 | "allowSyntheticDefaultImports": true,
9 | "strict": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "noEmit": true,
16 | "jsx": "react"
17 | },
18 | "include": ["src"]
19 | }
20 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: https://editorconfig.org/
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | # Unix-style newlines with a newline ending every file
7 | [*]
8 | trim_trailing_whitespace = true
9 | indent_style = space
10 | indent_size = 2
11 | end_of_line = lf
12 | charset = utf-8
13 | insert_final_newline = true
14 | max_line_length = 100
15 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | .git
2 | /coverage
3 | /docs/.next
4 | /docs/export
5 | /docs/src/app/(private)/playground/
6 | /packages/react/**/*.min.*
7 | build
8 | build-tests
9 | node_modules
10 | pnpm-lock.yaml
11 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set the default behavior, in case people don't have core.autocrlf set.
2 | * text=auto eol=lf
3 |
4 | # Undo the GitHub's default
5 | # https://github.com/github/linguist/blob/96ad1185828f44bb9b774328a584551ee57ed264/lib/linguist/vendor.yml#L177
6 | packages/**/*.d.ts -linguist-vendored
7 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @atomiks @michaldudak
2 | /docs/src/ @atomiks @colmtuite @michaldudak
3 | /packages/react/ @atomiks @colmtuite @michaldudak
4 | /scripts/ @michaldudak
5 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/2.feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 'Feature request'
3 | about: 'Suggest a new component or an enhancement for an existing component.'
4 | labels: ['status: waiting for maintainer']
5 | ---
6 |
7 | # Feature request
8 |
9 | ## Summary
10 |
11 |
12 |
13 | ## Examples in other libraries
14 |
15 |
16 |
17 | ## Motivation
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/3.get-help.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 'Get help'
3 | about: 'Ask a question.'
4 | labels: ['status: waiting for maintainer']
5 | ---
6 |
7 | # Get help
8 |
9 | ## Ask a question
10 |
11 | Before opening an issue, please consider starting a [GitHub Discussion](https://github.com/mui/base-ui/discussions) or asking the community for help in our [Discord](https://base-ui.com/r/discord).
12 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/4.docs-feedback.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 'Docs feedback'
3 | about: 'Help us improve Base UI documentation.'
4 | labels: ['status: waiting for maintainer']
5 | ---
6 |
7 | # Docs feedback
8 |
9 | ## How can we improve Base UI documentation?
10 |
11 | Provide a clear and concise description of the issue you're experiencing. If applicable, provide screenshots and/or videos.
12 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | - [ ] I have followed (at least) the [PR section of the contributing guide](https://github.com/mui/base-ui/blob/HEAD/CONTRIBUTING.md#sending-a-pull-request).
4 |
--------------------------------------------------------------------------------
/.github/codeql/codeql-config.yml:
--------------------------------------------------------------------------------
1 | name: CodeQL configuration
2 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | # Enable version updates for npm
4 | - package-ecosystem: npm
5 | # Look for `package.json` and `lock` files in the `root` directory
6 | directory: /
7 | schedule:
8 | interval: yearly
9 | # https://stackoverflow.com/questions/64047526/how-to-get-dependabot-to-trigger-for-security-updates-only
10 | open-pull-requests-limit: 0
11 | labels:
12 | - dependencies
13 | - security
14 |
--------------------------------------------------------------------------------
/.github/workflows/check-if-pr-has-label.yml:
--------------------------------------------------------------------------------
1 | name: Check if PR has label
2 |
3 | on:
4 | pull_request:
5 | types: [opened, reopened, labeled, unlabeled]
6 |
7 | permissions: {}
8 |
9 | jobs:
10 | test-label-applied:
11 | # Tests that label is added on the PR
12 | runs-on: ubuntu-latest
13 | permissions:
14 | contents: read
15 | steps:
16 | - uses: mnajdova/github-action-required-labels@ca0df9249827e43aa4b4a0d25d9fe3e9b19b0705 # v2.1.0
17 | with:
18 | mode: minimum
19 | count: 1
20 | labels: ''
21 |
--------------------------------------------------------------------------------
/.github/workflows/mark-duplicate.yml:
--------------------------------------------------------------------------------
1 | name: Mark duplicate
2 |
3 | on:
4 | issue_comment:
5 | types: [created]
6 |
7 | permissions: {}
8 |
9 | jobs:
10 | mark-duplicate:
11 | runs-on: ubuntu-latest
12 | permissions:
13 | contents: read
14 | issues: write
15 | steps:
16 | - name: mark-duplicate
17 | uses: actions-cool/issues-helper@a610082f8ac0cf03e357eb8dd0d5e2ba075e017e # v3.6.0
18 | with:
19 | actions: 'mark-duplicate'
20 | token: ${{ secrets.GITHUB_TOKEN }}
21 | duplicate-labels: 'duplicate'
22 | remove-labels: 'status: incomplete,status: waiting for maintainer'
23 | close-issue: true
24 |
--------------------------------------------------------------------------------
/.github/workflows/new-issue-triage.yml:
--------------------------------------------------------------------------------
1 | name: New issue triage
2 | on:
3 | issues:
4 | types:
5 | - opened
6 |
7 | permissions: {}
8 |
9 | jobs:
10 | issue_cleanup:
11 | name: Clean issue body
12 | uses: mui/mui-public/.github/workflows/issues_body-cleanup.yml@master
13 | permissions:
14 | contents: read
15 | issues: write
16 |
--------------------------------------------------------------------------------
/.markdownlint-cli2.cjs:
--------------------------------------------------------------------------------
1 | const baseline = require('@mui/monorepo/.markdownlint-cli2.cjs');
2 |
3 | module.exports = baseline;
4 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | enable-pre-post-scripts = true
2 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | // Formating
4 | "esbenp.prettier-vscode", // Prettier
5 | "editorconfig.editorconfig", // EditorConfig
6 |
7 | // Highlighting
8 | "bradlc.vscode-tailwindcss", // Tailwind CSS
9 | "unifiedjs.vscode-mdx", // MDX
10 | "styled-components.vscode-styled-components", // styled()
11 |
12 | // Lint
13 | "dbaeumer.vscode-eslint", // ESLint
14 | "yoavbls.pretty-ts-errors", // TypeScript
15 | "stylelint.vscode-stylelint", // Stylelint
16 | "davidanson.vscode-markdownlint" // markdownlint
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.defaultFormatter": "esbenp.prettier-vscode",
3 | "files.trimTrailingWhitespace": true,
4 |
5 | // Root workspace only
6 | "grammarly.selectors": [
7 | {
8 | "language": "markdown",
9 | "scheme": "file"
10 | }
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security policy
2 |
3 | ## Supported versions
4 |
5 | The versions of the project that are currently supported with security updates.
6 |
7 | | Base UI version | Release | Supported |
8 | | --------------: | :--------- | :----------------- |
9 | | <1.0.0 | 2024-12-17 | :white_check_mark: |
10 |
11 | ## Reporting a vulnerability
12 |
13 | You can report a vulnerability by contacting us via email at [security@mui.com](mailto:security@mui.com).
14 |
--------------------------------------------------------------------------------
/codecov.yml:
--------------------------------------------------------------------------------
1 | coverage:
2 | status:
3 | project:
4 | default:
5 | target: auto
6 | threshold: 1%
7 | patch: off
8 | comment: false
9 |
--------------------------------------------------------------------------------
/dangerfile.js:
--------------------------------------------------------------------------------
1 | const tsx = require('tsx/cjs/api');
2 |
3 | // danger uses babelify under the hood. The implementation is buggy and fails on our
4 | // custom plugins in our codebase. We'll just disable it and do our own compilation.
5 | // Danger must always be run with envirnonent variable `DANGER_DISABLE_TRANSPILATION="true"`.
6 | tsx.require('./scripts/dangerFileContent', __filename);
7 |
--------------------------------------------------------------------------------
/docs/.env:
--------------------------------------------------------------------------------
1 | FEEDBACK_URL=https://hgvi836wi8.execute-api.us-east-1.amazonaws.com
--------------------------------------------------------------------------------
/docs/.link-check-errors.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mui/base-ui/aba256ecccaaedb16bd723574c03eb83397ee3b5/docs/.link-check-errors.txt
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Docs
2 |
3 | This is the documentation of Base UI.
4 |
5 | To start the docs site in development mode, from the project root, run:
6 |
7 | ```bash
8 | pnpm start
9 | ```
10 |
11 | If you do not have pnpm installed, select your OS and follow the instructions on the [pnpm website](https://pnpm.io/installation).
12 |
13 | Package managers other than pnpm (like npm or Yarn) are not supported and will not work.
14 |
15 | ## How can I add a new demo to the documentation?
16 |
17 | [You can follow this guide](https://github.com/mui/base-ui/blob/HEAD/CONTRIBUTING.md)
18 | on how to get started contributing to Base UI.
19 |
--------------------------------------------------------------------------------
/docs/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
6 |
--------------------------------------------------------------------------------
/docs/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | 'postcss-import': {},
4 | '@tailwindcss/postcss': {},
5 | 'postcss-custom-media': {},
6 | },
7 | };
8 |
--------------------------------------------------------------------------------
/docs/public/_redirects:
--------------------------------------------------------------------------------
1 | # Link used in the demos, avoid 404
2 | /drafts / 301
3 | /inbox* / 301
4 | /trash / 301
5 |
6 | # For links that we can't edit later on, for example hosted in the code published on npm
7 | /r/discord https://discord.com/invite/g6C3hUtuxz 302
8 |
9 | # Legacy redirection
10 | # Added in chronological order (the last line is the most recent one)
11 | # To be removed 3+ years after being introduced
12 | # 2024
13 |
--------------------------------------------------------------------------------
/docs/public/robots.txt:
--------------------------------------------------------------------------------
1 | # Algolia-Crawler-Verif: 98C49CAFF7AEED76
2 |
3 | User-agent: *
4 | Allow: /
5 |
--------------------------------------------------------------------------------
/docs/public/static/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mui/base-ui/aba256ecccaaedb16bd723574c03eb83397ee3b5/docs/public/static/apple-touch-icon.png
--------------------------------------------------------------------------------
/docs/public/static/error-codes.json:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/docs/public/static/favicon-dev.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mui/base-ui/aba256ecccaaedb16bd723574c03eb83397ee3b5/docs/public/static/favicon-dev.ico
--------------------------------------------------------------------------------
/docs/public/static/favicon-dev.svg:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/docs/public/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mui/base-ui/aba256ecccaaedb16bd723574c03eb83397ee3b5/docs/public/static/favicon.ico
--------------------------------------------------------------------------------
/docs/public/static/favicon.svg:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/docs/public/static/logo.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/docs/reference/generated/direction-provider.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "DirectionProvider",
3 | "description": "Enables RTL behavior for Base UI components.",
4 | "props": {
5 | "direction": {
6 | "type": "TextDirection",
7 | "default": "'ltr'",
8 | "description": "The reading direction of the text"
9 | },
10 | "children": {
11 | "type": "ReactNode"
12 | }
13 | },
14 | "dataAttributes": {},
15 | "cssVariables": {}
16 | }
17 |
--------------------------------------------------------------------------------
/docs/reference/generated/field-validity.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "FieldValidity",
3 | "description": "Used to display a custom message based on the field’s validity.\nRequires `children` to be a function that accepts field validity state as an argument.",
4 | "props": {
5 | "children": {
6 | "type": "((state: FieldValidityState) => ReactNode)",
7 | "required": true,
8 | "description": "A function that accepts the field validity state as an argument.\n\n```jsx\n\n {(validity) => {\n return ...
\n }}\n\n```"
9 | }
10 | },
11 | "dataAttributes": {},
12 | "cssVariables": {}
13 | }
14 |
--------------------------------------------------------------------------------
/docs/reference/generated/select-portal.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "SelectPortal",
3 | "description": "A portal element that moves the popup to a different part of the DOM.\nBy default, the portal element is appended to ``.",
4 | "props": {
5 | "container": {
6 | "type": "HTMLElement | RefObject | null",
7 | "description": "A parent element to render the portal element into."
8 | },
9 | "children": {
10 | "type": "ReactNode"
11 | }
12 | },
13 | "dataAttributes": {},
14 | "cssVariables": {}
15 | }
16 |
--------------------------------------------------------------------------------
/docs/reference/generated/toast-portal.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ToastPortal",
3 | "description": "A portal element that moves the viewport to a different part of the DOM.\nBy default, the portal element is appended to ``.",
4 | "props": {
5 | "container": {
6 | "type": "HTMLElement | RefObject | null",
7 | "description": "A parent element to render the portal element into."
8 | },
9 | "children": {
10 | "type": "ReactNode"
11 | }
12 | },
13 | "dataAttributes": {},
14 | "cssVariables": {}
15 | }
16 |
--------------------------------------------------------------------------------
/docs/scripts/playground.template.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | export default function Playground() {
4 | return (
5 | A playground for a fast iteration development cycle in isolation outside of git.
6 | );
7 | }
8 |
--------------------------------------------------------------------------------
/docs/src/app/(private)/experiments/anchor-positioning.module.css:
--------------------------------------------------------------------------------
1 | .controls {
2 | fieldset {
3 | display: flex;
4 | gap: 5px;
5 | }
6 |
7 | label {
8 | display: flex;
9 | align-items: center;
10 | gap: 5px;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/docs/src/app/(private)/experiments/collapsible/_icons.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 | import * as React from 'react';
3 |
4 | export default function Nothing() {
5 | return This is just a dummy file to hold icons
;
6 | }
7 |
8 | export function ChevronIcon(props: React.ComponentProps<'svg'>) {
9 | return (
10 |
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/docs/src/app/(private)/experiments/page.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import clsx from 'clsx';
3 | import { Sidebar } from 'docs/src/components/Experiments/Sidebar';
4 | import classes from 'docs/src/components/Experiments/ExperimentRoot.module.css';
5 |
6 | export default async function Experiments() {
7 | return (
8 |
9 |
10 |
11 | Base UI experiments
12 | ← Choose an experiment from the list
13 |
14 |
15 | );
16 | }
17 |
--------------------------------------------------------------------------------
/docs/src/app/(private)/experiments/scroll-area/scroll-area-slight.module.css:
--------------------------------------------------------------------------------
1 | .ScrollArea {
2 | width: 340px;
3 | height: 100px;
4 | background: rgb(0 0 0 / 0.1);
5 | }
6 |
7 | .Viewport {
8 | height: 100%;
9 | }
10 |
11 | .Scrollbar {
12 | display: flex;
13 | background: rgb(0 0 0 / 0.1);
14 |
15 | &[data-orientation='vertical'] {
16 | margin-block: 20px;
17 | width: 8px;
18 | }
19 |
20 | &[data-orientation='horizontal'] {
21 | flex-direction: column;
22 | height: 8px;
23 | margin-inline: 20px;
24 | }
25 | }
26 |
27 | .Thumb {
28 | background: rgb(0 0 0 / 0.5);
29 | flex: 1;
30 | }
31 |
--------------------------------------------------------------------------------
/docs/src/app/(private)/layout.css:
--------------------------------------------------------------------------------
1 | html {
2 | --color-background: var(--color-gray-50);
3 | --color-foreground: var(--color-gray-900);
4 |
5 | @media (prefers-color-scheme: dark) {
6 | --color-background: black;
7 | --color-foreground: oklch(90% 2% 264deg);
8 | }
9 |
10 | color-scheme: light dark;
11 | background-color: var(--color-gray-50);
12 | }
13 |
14 | body {
15 | font-family: system-ui;
16 | -webkit-font-smoothing: antialiased;
17 | -moz-osx-font-smoothing: grayscale;
18 | background-color: var(--color-background);
19 | min-height: 100vh;
20 | }
21 |
22 | html,
23 | body {
24 | padding: 0;
25 | margin: 0;
26 | }
27 |
--------------------------------------------------------------------------------
/docs/src/app/(private)/layout.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import 'docs/src/styles.css';
3 | import './layout.css';
4 |
5 | export default function Layout({ children }: React.PropsWithChildren) {
6 | return children;
7 | }
8 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/accordion/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/alert-dialog/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/avatar/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/avatar/page.mdx:
--------------------------------------------------------------------------------
1 | # Avatar
2 |
3 | An easily stylable avatar component.
4 |
8 |
9 |
10 |
11 | ## Anatomy
12 |
13 | Import the component and assemble its parts:
14 |
15 | ```jsx title="Anatomy"
16 | import { Avatar } from '@base-ui-components/react/avatar';
17 |
18 |
19 |
20 | LT
21 | ;
22 | ```
23 |
24 | ## API reference
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/checkbox-group/demos/form/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/checkbox-group/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/checkbox-group/demos/nested/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/checkbox-group/demos/parent/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/checkbox/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/checkbox/page.mdx:
--------------------------------------------------------------------------------
1 | # Checkbox
2 |
3 | An easily stylable checkbox component.
4 |
8 |
9 |
10 |
11 | ## Anatomy
12 |
13 | Import the component and assemble its parts:
14 |
15 | ```jsx title="Anatomy"
16 | import { Checkbox } from '@base-ui-components/react/checkbox';
17 |
18 |
19 |
20 | ;
21 | ```
22 |
23 | ## API reference
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/collapsible/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/context-menu/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/context-menu/demos/submenu/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/dialog/demos/close-confirmation/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/dialog/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/dialog/demos/nested/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/field/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/fieldset/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/fieldset/page.mdx:
--------------------------------------------------------------------------------
1 | # Fieldset
2 |
3 | A native fieldset element with an easily stylable legend.
4 |
5 |
9 |
10 |
11 |
12 | ## Anatomy
13 |
14 | Import the component and assemble its parts:
15 |
16 | ```jsx title="Anatomy"
17 | import { Fieldset } from '@base-ui-components/react/fieldset';
18 |
19 |
20 |
21 | ;
22 | ```
23 |
24 | ## API reference
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/form/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/form/demos/zod/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/input/demos/hero/css-modules/index.module.css:
--------------------------------------------------------------------------------
1 | .Input {
2 | box-sizing: border-box;
3 | padding-left: 0.875rem;
4 | margin: 0;
5 | border: 1px solid var(--color-gray-200);
6 | width: 100%;
7 | max-width: 16rem;
8 | height: 2.5rem;
9 | border-radius: 0.375rem;
10 | font-family: inherit;
11 | font-size: 1rem;
12 | font-weight: normal;
13 | background-color: transparent;
14 | color: var(--color-gray-900);
15 |
16 | &:focus {
17 | outline: 2px solid var(--color-blue);
18 | outline-offset: -1px;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/input/demos/hero/css-modules/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { Input } from '@base-ui-components/react/input';
3 | import styles from './index.module.css';
4 |
5 | export default function ExampleInput() {
6 | return ;
7 | }
8 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/input/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/input/demos/hero/tailwind/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { Input } from '@base-ui-components/react/input';
3 |
4 | export default function ExampleInput() {
5 | return (
6 |
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/input/page.mdx:
--------------------------------------------------------------------------------
1 | # Input
2 |
3 |
4 | A native input element that automatically works with [Field](/react/components/field).
5 |
6 |
7 |
8 |
9 |
10 |
11 | ## Anatomy
12 |
13 | Import the component and use it as a single part:
14 |
15 | ```jsx title="Anatomy"
16 | import { Input } from '@base-ui-components/react/input';
17 |
18 | ;
19 | ```
20 |
21 | ## API reference
22 |
23 |
24 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/menu/demos/checkbox-items/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/menu/demos/group-labels/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/menu/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/menu/demos/open-on-hover/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/menu/demos/radio-items/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/menu/demos/submenu/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/menubar/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/meter/demos/hero/css-modules/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { Meter } from '@base-ui-components/react/meter';
3 | import styles from './index.module.css';
4 |
5 | export default function ExampleMeter() {
6 | return (
7 |
8 | Storage Used
9 |
10 |
11 |
12 |
13 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/meter/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/navigation-menu/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/navigation-menu/demos/nested/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/number-field/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/popover/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/preview-card/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/progress/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/radio/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/scroll-area/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/select/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/separator/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/separator/page.mdx:
--------------------------------------------------------------------------------
1 | # Separator
2 |
3 | A separator element accessible to screen readers.
4 |
5 |
9 |
10 |
11 |
12 | ## Anatomy
13 |
14 | Import the component and use it as a single part:
15 |
16 | ```jsx title="Anatomy"
17 | import { Separator } from '@base-ui-components/react/separator';
18 |
19 | ;
20 | ```
21 |
22 | ## API reference
23 |
24 |
25 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/slider/demos/hero/css-modules/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { Slider } from '@base-ui-components/react/slider';
3 | import styles from './index.module.css';
4 |
5 | export default function ExampleSlider() {
6 | return (
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | );
16 | }
17 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/slider/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/slider/demos/range-slider/css-modules/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { Slider } from '@base-ui-components/react/slider';
3 | import styles from './index.module.css';
4 |
5 | export default function ExampleSlider() {
6 | return (
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | );
17 | }
18 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/slider/demos/range-slider/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/switch/demos/hero/css-modules/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { Switch } from '@base-ui-components/react/switch';
3 | import styles from './index.module.css';
4 |
5 | export default function ExampleSwitch() {
6 | return (
7 |
8 |
9 |
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/switch/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/switch/page.mdx:
--------------------------------------------------------------------------------
1 | # Switch
2 |
3 | A control that indicates whether a setting is on or off.
4 |
8 |
9 |
10 |
11 | ## Anatomy
12 |
13 | Import the component and assemble its parts:
14 |
15 | ```jsx title="Anatomy"
16 | import { Switch } from '@base-ui-components/react/switch';
17 |
18 |
19 |
20 | ;
21 | ```
22 |
23 | ## API reference
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/tabs/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toast/demos/custom/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toast/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toast/demos/position/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toast/demos/promise/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toast/demos/undo/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toggle-group/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toggle-group/page.mdx:
--------------------------------------------------------------------------------
1 | # Toggle Group
2 |
3 | Provides a shared state to a series of toggle buttons.
4 |
8 |
9 |
10 |
11 | ## Anatomy
12 |
13 | Import the component and use it as a single part:
14 |
15 | ```jsx title="Anatomy"
16 | import { ToggleGroup } from '@base-ui-components/react/toggle-group';
17 |
18 | ;
19 | ```
20 |
21 | ## API reference
22 |
23 |
24 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toggle/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toggle/page.mdx:
--------------------------------------------------------------------------------
1 | # Toggle
2 |
3 | A two-state button that can be on or off.
4 |
8 |
9 |
10 |
11 | ## Anatomy
12 |
13 | Import the component and use it as a single part:
14 |
15 | ```jsx title="Anatomy"
16 | import { Toggle } from '@base-ui-components/react/toggle';
17 |
18 | ;
19 | ```
20 |
21 | ## API reference
22 |
23 |
24 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/toolbar/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/components/tooltip/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/utils/direction-provider/demos/hero/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 | export { default as Tailwind } from './tailwind';
4 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/utils/use-render/demos/render-callback/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/utils/use-render/demos/render/css-modules/index.module.css:
--------------------------------------------------------------------------------
1 | .Text {
2 | font-size: 0.875rem;
3 | line-height: 1rem;
4 | color: var(--color-gray-900);
5 |
6 | strong& {
7 | font-weight: 500;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/(content)/react/utils/use-render/demos/render/index.ts:
--------------------------------------------------------------------------------
1 | 'use client';
2 | export { default as CssModules } from './css-modules';
3 |
--------------------------------------------------------------------------------
/docs/src/app/(public)/opengraph-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mui/base-ui/aba256ecccaaedb16bd723574c03eb83397ee3b5/docs/src/app/(public)/opengraph-image.png
--------------------------------------------------------------------------------
/docs/src/blocks/Demo/index.ts:
--------------------------------------------------------------------------------
1 | export { DemoRoot as Root } from './DemoRoot';
2 | export { DemoPlayground as Playground } from './DemoPlayground';
3 | export { DemoSourceBrowser as SourceBrowser } from './DemoSourceBrowser';
4 | export { DemoSourceCopy as SourceCopy } from './DemoSourceCopy';
5 |
6 | export { DemoContext } from './DemoContext';
7 | export type * from './types';
8 |
--------------------------------------------------------------------------------
/docs/src/blocks/GoogleTagManager.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import Script from 'next/script';
3 |
4 | interface GoogleTagManagerProps {
5 | id: string;
6 | }
7 |
8 | export function GoogleTagManager(props: React.PropsWithChildren) {
9 | const { id } = props;
10 | return (
11 | /**
12 | * A better alternative to
16 |
17 |
18 |
--------------------------------------------------------------------------------
/test/e2e/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | 'postcss-import': {},
4 | '@tailwindcss/postcss': {},
5 | 'postcss-custom-media': {},
6 | },
7 | };
8 |
--------------------------------------------------------------------------------
/test/e2e/serve.json:
--------------------------------------------------------------------------------
1 | {
2 | "public": "build",
3 | "rewrites": [{ "source": "**", "destination": "/index.html" }]
4 | }
5 |
--------------------------------------------------------------------------------
/test/e2e/vite.config.mjs:
--------------------------------------------------------------------------------
1 | import * as path from 'path';
2 | import { defineConfig, mergeConfig } from 'vite';
3 | import sharedConfig from '../vite.shared.config.mjs';
4 |
5 | export default mergeConfig(
6 | sharedConfig,
7 | defineConfig({
8 | root: path.join(process.cwd(), 'test/e2e'),
9 | }),
10 | );
11 |
--------------------------------------------------------------------------------
/test/e2e/vitest.config.mts:
--------------------------------------------------------------------------------
1 | import { mergeConfig, defineProject } from 'vitest/config';
2 | import sharedConfig from '../../vitest.shared.mts';
3 |
4 | export default mergeConfig(
5 | sharedConfig,
6 | defineProject({
7 | test: {
8 | environment: 'node',
9 | testTimeout: (process.env.CIRCLECI === 'true' ? 4 : 2) * 1000, // Circle CI has low-performance CPUs.
10 | browser: {
11 | provider: 'playwright',
12 | enabled: false,
13 | name: 'node',
14 | },
15 | env: {
16 | VITEST_ENV: 'node',
17 | },
18 | },
19 | }),
20 | );
21 |
--------------------------------------------------------------------------------
/test/node-resolution/index.mjs:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-console */
2 | import * as base from '@base-ui-components/react';
3 | import { Accordion } from '@base-ui-components/react/accordion';
4 |
5 | console.assert(base, 'base');
6 | console.assert(Accordion, 'Accordion');
7 |
--------------------------------------------------------------------------------
/test/node-resolution/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@base-ui/test-node-resolution",
3 | "private": true,
4 | "scripts": {
5 | "test": "node ./index.mjs"
6 | },
7 | "dependencies": {
8 | "@base-ui-components/react": "workspace:*"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/test/regressions/fixtures/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mui/base-ui/aba256ecccaaedb16bd723574c03eb83397ee3b5/test/regressions/fixtures/.gitkeep
--------------------------------------------------------------------------------
/test/regressions/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Visual regression tests
5 |
6 |
7 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/test/regressions/manual/README.md:
--------------------------------------------------------------------------------
1 | # manual visual regression tests
2 |
3 | These are expensive tests that should only be consulted if you suspect that something changed.
4 | Move the test you want to check inside a temporary folder in `../test` and run the visual regression test suite to get a screenshot.
5 |
--------------------------------------------------------------------------------
/test/regressions/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | 'postcss-import': {},
4 | '@tailwindcss/postcss': {},
5 | 'postcss-custom-media': {},
6 | },
7 | };
8 |
--------------------------------------------------------------------------------
/test/regressions/serve.json:
--------------------------------------------------------------------------------
1 | {
2 | "public": "build",
3 | "rewrites": [{ "source": "**", "destination": "/index.html" }]
4 | }
5 |
--------------------------------------------------------------------------------
/test/regressions/vite.config.mjs:
--------------------------------------------------------------------------------
1 | import * as path from 'path';
2 | import { defineConfig, mergeConfig } from 'vite';
3 | import sharedConfig from '../vite.shared.config.mjs';
4 |
5 | export default mergeConfig(
6 | sharedConfig,
7 | defineConfig({
8 | root: path.join(process.cwd(), 'test/regressions'),
9 | }),
10 | );
11 |
--------------------------------------------------------------------------------
/test/regressions/vitest.config.mts:
--------------------------------------------------------------------------------
1 | import { mergeConfig, defineProject } from 'vitest/config';
2 | import sharedConfig from '../../vitest.shared.mts';
3 |
4 | export default mergeConfig(
5 | sharedConfig,
6 | defineProject({
7 | test: {
8 | environment: 'node',
9 | testTimeout: (process.env.CIRCLECI === 'true' ? 4 : 2) * 1000, // Circle CI has low-performance CPUs.
10 | browser: {
11 | provider: 'playwright',
12 | enabled: false,
13 | name: 'node',
14 | },
15 | env: {
16 | VITEST_ENV: 'node',
17 | },
18 | },
19 | }),
20 | );
21 |
--------------------------------------------------------------------------------
/test/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.base.json",
3 | "compilerOptions": {
4 | "module": "es2022",
5 | "moduleResolution": "bundler",
6 | "types": ["vite/client", "vitest/globals"]
7 | },
8 | "include": ["e2e/**/*", "regressions/**/*", "./*.ts"],
9 | "exclude": ["node_modules", "build"]
10 | }
11 |
--------------------------------------------------------------------------------
/test/vite.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/test/vite.shared.config.mjs:
--------------------------------------------------------------------------------
1 | import * as path from 'path';
2 | import { defineConfig } from 'vite';
3 | import react from '@vitejs/plugin-react';
4 |
5 | export default defineConfig({
6 | mode: process.env.NODE_ENV || 'development',
7 | plugins: [react()],
8 | resolve: {
9 | alias: {
10 | '@base-ui-components/react': path.join(process.cwd(), 'packages/react/src'),
11 | './fonts': path.join(process.cwd(), '/docs/src/fonts'),
12 | docs: path.join(process.cwd(), '/docs'),
13 | stream: null,
14 | zlib: null,
15 | },
16 | },
17 | build: { outDir: 'build', chunkSizeWarningLimit: 9999 },
18 | });
19 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.base.json",
3 | "files": [],
4 | "include": [],
5 | "references": [
6 | {
7 | "path": "docs/tsconfig.json"
8 | },
9 | {
10 | "path": "packages/react/tsconfig.json"
11 | }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------