├── .changeset
├── README.md
├── config.json
└── moody-lamps-cheat.md
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── config.yml
│ └── feature_request.md
├── composite-actions
│ └── install
│ │ └── action.yml
├── pull_request_template.md
├── stale.yml
└── workflows
│ ├── quality.yml
│ └── release.yml
├── .gitignore
├── .gitmodules
├── .husky
├── commit-msg
└── pre-commit
├── .npmrc
├── .nvmrc
├── .prettierignore
├── .prettierrc
├── .vscode
├── extensions.json
└── settings.json
├── CHANGELOG.md
├── LICENSE
├── README.md
├── clean-package.config.json
├── e2e
├── _utils.ts
├── accordion.e2e.ts
├── avatar.e2e.ts
├── carousel.e2e.ts
├── checkbox.e2e.ts
├── clipboard.e2e.ts
├── collapsible.e2e.ts
├── color-picker.e2e.ts
├── combobox.e2e.ts
├── context-menu.e2e.ts
├── date-picker.e2e.ts
├── dialog.e2e.ts
├── editable.e2e.ts
├── file-upload.e2e.ts
├── fixtures
│ └── text.txt
├── hover-card.e2e.ts
├── listbox.e2e.ts
├── menu-nested.e2e.ts
├── menu-option.e2e.ts
├── menu.e2e.ts
├── models
│ ├── accordion.model.ts
│ ├── carousel.model.ts
│ ├── clipboard.model.ts
│ ├── color-picker.model.ts
│ ├── combobox.model.ts
│ ├── datepicker.model.ts
│ ├── dialog.model.ts
│ ├── editable.model.ts
│ ├── listbox.model.ts
│ ├── menu.model.ts
│ ├── model.ts
│ ├── navigation-menu.model.ts
│ ├── number-input.model.ts
│ ├── pagination.model.ts
│ ├── password-input.model.ts
│ ├── popover.model.ts
│ ├── rating-group.model.ts
│ ├── select.model.ts
│ ├── slider.model.ts
│ ├── switch.model.ts
│ ├── tabs.model.ts
│ ├── tags-input.model.ts
│ ├── time-picker.model.ts
│ ├── toast.model.ts
│ ├── toggle-group.model.ts
│ ├── tooltip.model.ts
│ ├── tour.model.ts
│ └── tree-view.model.ts
├── navigation-menu.e2e.ts
├── number-input.e2e.ts
├── pagination.e2e.ts
├── password-input.e2e.ts
├── pin-input.e2e.ts
├── popover.e2e.ts
├── radio-group.e2e.ts
├── rating-group.e2e.ts
├── select.e2e.ts
├── slider.e2e.ts
├── splitter.e2e.ts
├── switch.e2e.ts
├── tabs.e2e.ts
├── tags-input.e2e.ts
├── time-picker.e2e.ts
├── toast.e2e.ts
├── toggle-group.e2e.ts
├── tooltip.e2e.ts
├── tour.e2e.ts
└── tree-view.e2e.ts
├── eslint.config.mjs
├── examples
├── next-ts
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── components
│ │ ├── dialog.tsx
│ │ ├── iframe.tsx
│ │ ├── loader.tsx
│ │ ├── presence.tsx
│ │ ├── print.tsx
│ │ ├── show.tsx
│ │ ├── state-visualizer.tsx
│ │ ├── swap.tsx
│ │ ├── toast-item.tsx
│ │ └── toolbar.tsx
│ ├── eslint.config.mjs
│ ├── hooks
│ │ ├── use-controls.tsx
│ │ ├── use-effect-once.ts
│ │ ├── use-event.ts
│ │ └── use-scroll-view.ts
│ ├── next-env.d.ts
│ ├── next.config.js
│ ├── package.json
│ ├── pages
│ │ ├── _app.tsx
│ │ ├── accordion.tsx
│ │ ├── anatomy.tsx
│ │ ├── angle-slider.tsx
│ │ ├── autoresize.tsx
│ │ ├── avatar.tsx
│ │ ├── carousel.tsx
│ │ ├── checkbox-controlled.tsx
│ │ ├── checkbox.tsx
│ │ ├── clipboard.tsx
│ │ ├── collapse-multiple.tsx
│ │ ├── collapsible.tsx
│ │ ├── color-picker.tsx
│ │ ├── combobox.tsx
│ │ ├── context-menu.tsx
│ │ ├── date-picker-multi.tsx
│ │ ├── date-picker-range.tsx
│ │ ├── date-picker.tsx
│ │ ├── dialog-mutation.tsx
│ │ ├── dialog-nested.tsx
│ │ ├── dialog.tsx
│ │ ├── dismissable.tsx
│ │ ├── editable.tsx
│ │ ├── file-upload.tsx
│ │ ├── floating-panel.tsx
│ │ ├── focus-visible.tsx
│ │ ├── hover-card.tsx
│ │ ├── index.tsx
│ │ ├── listbox-grid.tsx
│ │ ├── listbox.tsx
│ │ ├── menu-nested.tsx
│ │ ├── menu-options.tsx
│ │ ├── menu-overflow.tsx
│ │ ├── menu.tsx
│ │ ├── navigation-menu-nested.tsx
│ │ ├── navigation-menu-viewport.tsx
│ │ ├── navigation-menu.tsx
│ │ ├── number-input.tsx
│ │ ├── pagination.tsx
│ │ ├── password-input.tsx
│ │ ├── pin-input.tsx
│ │ ├── popover-controlled.tsx
│ │ ├── popover-nested.tsx
│ │ ├── popover.tsx
│ │ ├── popper.tsx
│ │ ├── presence.tsx
│ │ ├── progress.tsx
│ │ ├── qr-code-form.tsx
│ │ ├── qr-code.tsx
│ │ ├── radio-group.tsx
│ │ ├── range-slider.tsx
│ │ ├── rating-group.tsx
│ │ ├── sandbox.composable.tsx
│ │ ├── sandbox.tsx
│ │ ├── segment-control.tsx
│ │ ├── select.tsx
│ │ ├── signature-pad.tsx
│ │ ├── slider.tsx
│ │ ├── splitter-collapsible.tsx
│ │ ├── splitter-conditional.tsx
│ │ ├── splitter-multiple.tsx
│ │ ├── splitter.tsx
│ │ ├── steps.tsx
│ │ ├── swap.tsx
│ │ ├── switch.tsx
│ │ ├── tabs.tsx
│ │ ├── tags-input.tsx
│ │ ├── time-picker.tsx
│ │ ├── timer-countdown.tsx
│ │ ├── timer-stopwatch.tsx
│ │ ├── toast-overlap.tsx
│ │ ├── toast-stacked.tsx
│ │ ├── toggle-group.tsx
│ │ ├── toggle.tsx
│ │ ├── tooltip.tsx
│ │ ├── tour.tsx
│ │ └── tree-view.tsx
│ └── tsconfig.json
├── nuxt-ts
│ ├── .gitignore
│ ├── .npmrc
│ ├── README.md
│ ├── app.vue
│ ├── components
│ │ ├── Controls.vue
│ │ ├── EyeDropIcon.vue
│ │ ├── HalfStar.vue
│ │ ├── Iframe.vue
│ │ ├── SideNav.vue
│ │ ├── Star.vue
│ │ ├── StateVisualizer.vue
│ │ ├── ToastItem.vue
│ │ ├── Toolbar.vue
│ │ └── TreeNode.vue
│ ├── composables
│ │ └── useControls.ts
│ ├── nuxt.config.ts
│ ├── package.json
│ ├── pages
│ │ ├── accordion.vue
│ │ ├── angle-slider.vue
│ │ ├── avatar.vue
│ │ ├── carousel.vue
│ │ ├── checkbox.vue
│ │ ├── clipboard.vue
│ │ ├── collapsible.vue
│ │ ├── color-picker.vue
│ │ ├── combobox.vue
│ │ ├── context-menu.vue
│ │ ├── date-picker-multi.vue
│ │ ├── date-picker-range.vue
│ │ ├── date-picker.vue
│ │ ├── dialog.vue
│ │ ├── editable.vue
│ │ ├── file-upload.vue
│ │ ├── floating-panel.vue
│ │ ├── hover-card.vue
│ │ ├── index.vue
│ │ ├── listbox-grid.vue
│ │ ├── listbox.vue
│ │ ├── menu-nested.vue
│ │ ├── menu-options.vue
│ │ ├── menu.vue
│ │ ├── number-input.vue
│ │ ├── pagination.vue
│ │ ├── password-input.vue
│ │ ├── pin-input.vue
│ │ ├── popover.vue
│ │ ├── popper.vue
│ │ ├── presence.vue
│ │ ├── progress.vue
│ │ ├── qr-code.vue
│ │ ├── radio-group.vue
│ │ ├── range-slider.vue
│ │ ├── rating-group.vue
│ │ ├── sandbox.vue
│ │ ├── segment-control.vue
│ │ ├── select.vue
│ │ ├── signature-pad.vue
│ │ ├── slider.vue
│ │ ├── splitter.vue
│ │ ├── steps.vue
│ │ ├── switch.vue
│ │ ├── tabs.vue
│ │ ├── tags-input.vue
│ │ ├── time-picker.vue
│ │ ├── timer-countdown.vue
│ │ ├── timer-stopwatch.vue
│ │ ├── toast-overlap.vue
│ │ ├── toast-stacked.vue
│ │ ├── toggle-group.vue
│ │ ├── toggle.vue
│ │ ├── tooltip.vue
│ │ ├── tour.vue
│ │ └── tree-view.vue
│ ├── public
│ │ └── favicon.ico
│ ├── server
│ │ └── tsconfig.json
│ └── tsconfig.json
├── preact-ts
│ ├── .gitignore
│ ├── index.html
│ ├── package.json
│ ├── src
│ │ ├── components
│ │ │ ├── show.tsx
│ │ │ ├── state-visualizer.tsx
│ │ │ └── toolbar.tsx
│ │ ├── hooks
│ │ │ ├── use-controls.tsx
│ │ │ └── use-effect-once.ts
│ │ ├── index.tsx
│ │ ├── pages
│ │ │ ├── _404.tsx
│ │ │ ├── accordion.tsx
│ │ │ ├── home.tsx
│ │ │ └── number-input.tsx
│ │ └── routes.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── solid-ts
│ ├── .gitignore
│ ├── README.md
│ ├── app.config.ts
│ ├── package.json
│ ├── public
│ │ └── favicon.ico
│ ├── src
│ │ ├── app.css
│ │ ├── app.tsx
│ │ ├── components
│ │ │ ├── controls.tsx
│ │ │ ├── iframe.tsx
│ │ │ ├── loader.tsx
│ │ │ ├── state-visualizer.tsx
│ │ │ ├── toast-item.tsx
│ │ │ └── toolbar.tsx
│ │ ├── entry-client.tsx
│ │ ├── entry-server.tsx
│ │ ├── global.d.ts
│ │ ├── hooks
│ │ │ └── use-controls.tsx
│ │ └── routes
│ │ │ ├── [...404].tsx
│ │ │ ├── accordion.tsx
│ │ │ ├── angle-slider.tsx
│ │ │ ├── avatar.tsx
│ │ │ ├── carousel.tsx
│ │ │ ├── checkbox.tsx
│ │ │ ├── clipboard.tsx
│ │ │ ├── collapsible.tsx
│ │ │ ├── color-picker.tsx
│ │ │ ├── combobox.tsx
│ │ │ ├── context-menu.tsx
│ │ │ ├── date-picker-range.tsx
│ │ │ ├── date-picker.tsx
│ │ │ ├── dialog.tsx
│ │ │ ├── editable.tsx
│ │ │ ├── file-upload.tsx
│ │ │ ├── floating-panel.tsx
│ │ │ ├── hover-card.tsx
│ │ │ ├── index.tsx
│ │ │ ├── listbox-grid.tsx
│ │ │ ├── listbox.tsx
│ │ │ ├── menu-nested.tsx
│ │ │ ├── menu-options.tsx
│ │ │ ├── menu.tsx
│ │ │ ├── number-input.tsx
│ │ │ ├── pagination.tsx
│ │ │ ├── password-input.tsx
│ │ │ ├── pin-input.tsx
│ │ │ ├── popover.tsx
│ │ │ ├── presence.tsx
│ │ │ ├── progress.tsx
│ │ │ ├── qr-code.tsx
│ │ │ ├── radio-group.tsx
│ │ │ ├── range-slider.tsx
│ │ │ ├── rating-group.tsx
│ │ │ ├── segment-control.tsx
│ │ │ ├── select-shadow-dom.tsx
│ │ │ ├── select.tsx
│ │ │ ├── signature-pad.tsx
│ │ │ ├── slider.tsx
│ │ │ ├── splitter.tsx
│ │ │ ├── steps.tsx
│ │ │ ├── switch.tsx
│ │ │ ├── tabs.tsx
│ │ │ ├── tags-input.tsx
│ │ │ ├── time-picker.tsx
│ │ │ ├── timer-countdown.tsx
│ │ │ ├── timer-stopwatch.tsx
│ │ │ ├── toast-overlap.tsx
│ │ │ ├── toast-stacked.tsx
│ │ │ ├── toggle-group.tsx
│ │ │ ├── toggle.tsx
│ │ │ ├── tooltip-shadow-dom.tsx
│ │ │ ├── tooltip.tsx
│ │ │ ├── tour.tsx
│ │ │ └── tree-view.tsx
│ └── tsconfig.json
├── svelte-ts
│ ├── .gitignore
│ ├── README.md
│ ├── index.html
│ ├── package.json
│ ├── public
│ │ └── vite.svg
│ ├── src
│ │ ├── App.svelte
│ │ ├── lib
│ │ │ ├── components
│ │ │ │ ├── controls.svelte
│ │ │ │ ├── iframe.svelte
│ │ │ │ ├── state-visualizer.svelte
│ │ │ │ ├── toast-item.svelte
│ │ │ │ └── toolbar.svelte
│ │ │ └── use-controls.svelte.ts
│ │ ├── main.ts
│ │ ├── routes
│ │ │ ├── accordion.svelte
│ │ │ ├── angle-slider.svelte
│ │ │ ├── avatar.svelte
│ │ │ ├── carousel.svelte
│ │ │ ├── checkbox.svelte
│ │ │ ├── clipboard.svelte
│ │ │ ├── collapsible.svelte
│ │ │ ├── color-picker.svelte
│ │ │ ├── combobox.svelte
│ │ │ ├── context-menu.svelte
│ │ │ ├── date-picker-multi.svelte
│ │ │ ├── date-picker-range.svelte
│ │ │ ├── date-picker.svelte
│ │ │ ├── dialog.svelte
│ │ │ ├── editable.svelte
│ │ │ ├── file-upload.svelte
│ │ │ ├── floating-panel.svelte
│ │ │ ├── hover-card.svelte
│ │ │ ├── index.svelte
│ │ │ ├── listbox-grid.svelte
│ │ │ ├── listbox.svelte
│ │ │ ├── menu-nested.svelte
│ │ │ ├── menu-options.svelte
│ │ │ ├── menu.svelte
│ │ │ ├── number-input.svelte
│ │ │ ├── pagination.svelte
│ │ │ ├── password-input.svelte
│ │ │ ├── pin-input.svelte
│ │ │ ├── popover.svelte
│ │ │ ├── popper.svelte
│ │ │ ├── presence.svelte
│ │ │ ├── progress.svelte
│ │ │ ├── qr-code.svelte
│ │ │ ├── radio-group.svelte
│ │ │ ├── range-slider.svelte
│ │ │ ├── rating-group.svelte
│ │ │ ├── segment-control.svelte
│ │ │ ├── select.svelte
│ │ │ ├── signature-pad.svelte
│ │ │ ├── slider.svelte
│ │ │ ├── splitter.svelte
│ │ │ ├── steps.svelte
│ │ │ ├── switch.svelte
│ │ │ ├── tabs.svelte
│ │ │ ├── tags-input.svelte
│ │ │ ├── time-picker.svelte
│ │ │ ├── timer-countdown.svelte
│ │ │ ├── timer-stopwatch.svelte
│ │ │ ├── toast-overlap.svelte
│ │ │ ├── toast-stacked.svelte
│ │ │ ├── toggle-group.svelte
│ │ │ ├── tooltip.svelte
│ │ │ ├── tour.svelte
│ │ │ └── tree-view.svelte
│ │ └── vite-env.d.ts
│ ├── svelte.config.js
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
└── vanilla-ts
│ ├── .gitignore
│ ├── index.html
│ ├── package.json
│ ├── pages
│ ├── accordion.html
│ ├── accordion.ts
│ ├── avatar.html
│ ├── avatar.ts
│ ├── checkbox.html
│ ├── checkbox.ts
│ ├── combobox.html
│ ├── combobox.ts
│ ├── counter.html
│ ├── counter.ts
│ ├── popover.html
│ └── popover.ts
│ ├── public
│ └── vite.svg
│ ├── src
│ ├── accordion.ts
│ ├── avatar.ts
│ ├── checkbox.ts
│ ├── combobox.ts
│ ├── component.ts
│ ├── lib
│ │ ├── bindable.ts
│ │ ├── index.ts
│ │ ├── machine.ts
│ │ ├── normalize-props.ts
│ │ ├── refs.ts
│ │ └── spread-props.ts
│ ├── popover.ts
│ ├── typescript.svg
│ └── vite-env.d.ts
│ └── tsconfig.json
├── package.json
├── packages
├── anatomy-icons
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── scripts
│ │ └── generate.mjs
│ ├── src
│ │ ├── components
│ │ │ ├── accordion.tsx
│ │ │ ├── avatar.tsx
│ │ │ ├── carousel.tsx
│ │ │ ├── checkbox.tsx
│ │ │ ├── circular-progress.tsx
│ │ │ ├── clipboard.tsx
│ │ │ ├── color-picker.tsx
│ │ │ ├── combobox.tsx
│ │ │ ├── date-picker.tsx
│ │ │ ├── dialog.tsx
│ │ │ ├── editable.tsx
│ │ │ ├── field.tsx
│ │ │ ├── fieldset.tsx
│ │ │ ├── file-upload.tsx
│ │ │ ├── floating-panel.tsx
│ │ │ ├── hover-card.tsx
│ │ │ ├── index.ts
│ │ │ ├── linear-progress.tsx
│ │ │ ├── menu.tsx
│ │ │ ├── number-input.tsx
│ │ │ ├── pagination.tsx
│ │ │ ├── password-input.tsx
│ │ │ ├── pin-input.tsx
│ │ │ ├── popover.tsx
│ │ │ ├── qr-code.tsx
│ │ │ ├── radio-group.tsx
│ │ │ ├── rating-group.tsx
│ │ │ ├── segmented-control.tsx
│ │ │ ├── select.tsx
│ │ │ ├── signature-pad.tsx
│ │ │ ├── slider.tsx
│ │ │ ├── splitter.tsx
│ │ │ ├── steps.tsx
│ │ │ ├── switch.tsx
│ │ │ ├── tabs.tsx
│ │ │ ├── tags-input.tsx
│ │ │ ├── time-picker.tsx
│ │ │ ├── toast.tsx
│ │ │ ├── toggle-group.tsx
│ │ │ ├── tooltip.tsx
│ │ │ ├── tour.tsx
│ │ │ └── tree-view.tsx
│ │ ├── create-component.tsx
│ │ ├── create-gradient.ts
│ │ ├── create-palette.ts
│ │ └── index.ts
│ └── tsconfig.json
├── anatomy
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── src
│ │ ├── create-anatomy.ts
│ │ └── index.ts
│ ├── tests
│ │ └── create-anatomy.test.ts
│ └── tsconfig.json
├── core
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── create-machine.ts
│ │ ├── index.ts
│ │ ├── memo.ts
│ │ ├── merge-props.ts
│ │ ├── scope.ts
│ │ └── types.ts
│ └── tsconfig.json
├── docs
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── data
│ │ ├── accessibility.json
│ │ ├── api.json
│ │ └── data-attr.json
│ ├── package.json
│ ├── src
│ │ └── index.ts
│ └── tsconfig.json
├── frameworks
│ ├── preact
│ │ ├── CHANGELOG.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── bindable.ts
│ │ │ ├── index.ts
│ │ │ ├── machine.ts
│ │ │ ├── normalize-props.ts
│ │ │ ├── portal.tsx
│ │ │ ├── refs.ts
│ │ │ └── track.ts
│ │ ├── tsconfig.json
│ │ └── tsup.config.ts
│ ├── react
│ │ ├── CHANGELOG.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── bindable.ts
│ │ │ ├── index.ts
│ │ │ ├── machine.ts
│ │ │ ├── normalize-props.ts
│ │ │ ├── portal.tsx
│ │ │ ├── refs.ts
│ │ │ ├── track.ts
│ │ │ └── use-layout-effect.ts
│ │ ├── tests
│ │ │ └── machine.test.ts
│ │ ├── tsconfig.json
│ │ ├── tsup.config.ts
│ │ ├── vite.config.ts
│ │ └── vitest.setup.ts
│ ├── solid
│ │ ├── CHANGELOG.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── bindable.ts
│ │ │ ├── index.ts
│ │ │ ├── machine.ts
│ │ │ ├── merge-props.ts
│ │ │ ├── normalize-props.ts
│ │ │ ├── refs.ts
│ │ │ └── track.ts
│ │ ├── tests
│ │ │ └── merge-props.test.ts
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ └── vitest.setup.ts
│ ├── svelte
│ │ ├── CHANGELOG.md
│ │ ├── clean-package.config.json
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── bindable.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── machine.svelte.ts
│ │ │ ├── merge-props.ts
│ │ │ ├── normalize-props.ts
│ │ │ ├── portal.ts
│ │ │ ├── reflect.ts
│ │ │ ├── refs.svelte.ts
│ │ │ └── track.svelte.ts
│ │ ├── tests
│ │ │ └── merge-props.test.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ └── vue
│ │ ├── CHANGELOG.md
│ │ ├── package.json
│ │ ├── src
│ │ ├── bindable.ts
│ │ ├── index.ts
│ │ ├── machine.ts
│ │ ├── normalize-props.ts
│ │ ├── refs.ts
│ │ └── track.ts
│ │ └── tsconfig.json
├── machines
│ ├── accordion
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── accordion.anatomy.ts
│ │ │ ├── accordion.connect.ts
│ │ │ ├── accordion.dom.ts
│ │ │ ├── accordion.machine.ts
│ │ │ ├── accordion.props.ts
│ │ │ ├── accordion.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── angle-slider
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── angle-slider.anatomy.ts
│ │ │ ├── angle-slider.connect.ts
│ │ │ ├── angle-slider.dom.ts
│ │ │ ├── angle-slider.machine.ts
│ │ │ ├── angle-slider.props.ts
│ │ │ ├── angle-slider.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── avatar
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── avatar.anatomy.ts
│ │ │ ├── avatar.connect.ts
│ │ │ ├── avatar.dom.ts
│ │ │ ├── avatar.machine.ts
│ │ │ ├── avatar.props.ts
│ │ │ ├── avatar.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── carousel
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── carousel.anatomy.ts
│ │ │ ├── carousel.connect.ts
│ │ │ ├── carousel.dom.ts
│ │ │ ├── carousel.machine.ts
│ │ │ ├── carousel.props.ts
│ │ │ ├── carousel.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── checkbox
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── checkbox.anatomy.ts
│ │ │ ├── checkbox.connect.ts
│ │ │ ├── checkbox.dom.ts
│ │ │ ├── checkbox.machine.ts
│ │ │ ├── checkbox.props.ts
│ │ │ ├── checkbox.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── clipboard
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── clipboard.anatomy.ts
│ │ │ ├── clipboard.connect.ts
│ │ │ ├── clipboard.dom.ts
│ │ │ ├── clipboard.machine.ts
│ │ │ ├── clipboard.props.ts
│ │ │ ├── clipboard.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── collapsible
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── collapsible.anatomy.ts
│ │ │ ├── collapsible.connect.ts
│ │ │ ├── collapsible.dom.ts
│ │ │ ├── collapsible.machine.ts
│ │ │ ├── collapsible.props.ts
│ │ │ ├── collapsible.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── color-picker
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── color-picker.anatomy.ts
│ │ │ ├── color-picker.connect.ts
│ │ │ ├── color-picker.dom.ts
│ │ │ ├── color-picker.machine.ts
│ │ │ ├── color-picker.parse.ts
│ │ │ ├── color-picker.props.ts
│ │ │ ├── color-picker.types.ts
│ │ │ ├── index.ts
│ │ │ └── utils
│ │ │ │ ├── get-channel-display-color.ts
│ │ │ │ ├── get-channel-input-value.ts
│ │ │ │ └── get-slider-background.ts
│ │ └── tsconfig.json
│ ├── combobox
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── combobox.anatomy.ts
│ │ │ ├── combobox.collection.ts
│ │ │ ├── combobox.connect.ts
│ │ │ ├── combobox.dom.ts
│ │ │ ├── combobox.machine.ts
│ │ │ ├── combobox.props.ts
│ │ │ ├── combobox.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── date-picker
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── date-picker.anatomy.ts
│ │ │ ├── date-picker.connect.ts
│ │ │ ├── date-picker.dom.ts
│ │ │ ├── date-picker.machine.ts
│ │ │ ├── date-picker.parse.ts
│ │ │ ├── date-picker.props.ts
│ │ │ ├── date-picker.types.ts
│ │ │ ├── date-picker.utils.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── dialog
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── dialog.anatomy.ts
│ │ │ ├── dialog.connect.ts
│ │ │ ├── dialog.dom.ts
│ │ │ ├── dialog.machine.ts
│ │ │ ├── dialog.props.ts
│ │ │ ├── dialog.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── editable
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── editable.anatomy.ts
│ │ │ ├── editable.connect.ts
│ │ │ ├── editable.dom.ts
│ │ │ ├── editable.machine.ts
│ │ │ ├── editable.props.ts
│ │ │ ├── editable.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── file-upload
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── file-upload.anatomy.ts
│ │ │ ├── file-upload.connect.ts
│ │ │ ├── file-upload.dom.ts
│ │ │ ├── file-upload.machine.ts
│ │ │ ├── file-upload.props.ts
│ │ │ ├── file-upload.types.ts
│ │ │ ├── file-upload.utils.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── floating-panel
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── floating-panel.anatomy.ts
│ │ │ ├── floating-panel.connect.ts
│ │ │ ├── floating-panel.dom.ts
│ │ │ ├── floating-panel.machine.ts
│ │ │ ├── floating-panel.props.ts
│ │ │ ├── floating-panel.store.ts
│ │ │ ├── floating-panel.types.ts
│ │ │ ├── get-resize-axis-style.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── hover-card
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── hover-card.anatomy.ts
│ │ │ ├── hover-card.connect.ts
│ │ │ ├── hover-card.dom.ts
│ │ │ ├── hover-card.machine.ts
│ │ │ ├── hover-card.props.ts
│ │ │ ├── hover-card.types.ts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── listbox
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── listbox.anatomy.ts
│ │ │ ├── listbox.collection.ts
│ │ │ ├── listbox.connect.ts
│ │ │ ├── listbox.dom.ts
│ │ │ ├── listbox.machine.ts
│ │ │ ├── listbox.props.ts
│ │ │ └── listbox.types.ts
│ │ └── tsconfig.json
│ ├── menu
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── menu.anatomy.ts
│ │ │ ├── menu.connect.ts
│ │ │ ├── menu.dom.ts
│ │ │ ├── menu.machine.ts
│ │ │ ├── menu.props.ts
│ │ │ └── menu.types.ts
│ │ └── tsconfig.json
│ ├── navigation-menu
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── auto-reset.ts
│ │ │ ├── index.ts
│ │ │ ├── navigation-menu.anatomy.ts
│ │ │ ├── navigation-menu.connect.ts
│ │ │ ├── navigation-menu.dom.ts
│ │ │ ├── navigation-menu.machine.ts
│ │ │ ├── navigation-menu.props.ts
│ │ │ └── navigation-menu.types.ts
│ │ └── tsconfig.json
│ ├── number-input
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── cursor.ts
│ │ │ ├── index.ts
│ │ │ ├── number-input.anatomy.ts
│ │ │ ├── number-input.connect.ts
│ │ │ ├── number-input.dom.ts
│ │ │ ├── number-input.machine.ts
│ │ │ ├── number-input.props.ts
│ │ │ ├── number-input.types.ts
│ │ │ └── number-input.utils.ts
│ │ └── tsconfig.json
│ ├── pagination
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── pagination.anatomy.ts
│ │ │ ├── pagination.connect.ts
│ │ │ ├── pagination.dom.ts
│ │ │ ├── pagination.machine.ts
│ │ │ ├── pagination.props.ts
│ │ │ ├── pagination.types.ts
│ │ │ └── pagination.utils.ts
│ │ ├── tests
│ │ │ ├── pagination.utils.test-cases.ts
│ │ │ └── pagination.utils.test.ts
│ │ └── tsconfig.json
│ ├── password-input
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── password-input.anatomy.ts
│ │ │ ├── password-input.connect.ts
│ │ │ ├── password-input.dom.ts
│ │ │ ├── password-input.machine.ts
│ │ │ ├── password-input.props.ts
│ │ │ └── password-input.types.ts
│ │ └── tsconfig.json
│ ├── pin-input
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── pin-input.anatomy.ts
│ │ │ ├── pin-input.connect.ts
│ │ │ ├── pin-input.dom.ts
│ │ │ ├── pin-input.machine.ts
│ │ │ ├── pin-input.props.ts
│ │ │ ├── pin-input.types.ts
│ │ │ └── pin-input.utils.ts
│ │ └── tsconfig.json
│ ├── popover
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── popover.anatomy.ts
│ │ │ ├── popover.connect.ts
│ │ │ ├── popover.dom.ts
│ │ │ ├── popover.machine.ts
│ │ │ ├── popover.props.ts
│ │ │ └── popover.types.ts
│ │ └── tsconfig.json
│ ├── presence
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── presence.connect.ts
│ │ │ ├── presence.machine.ts
│ │ │ ├── presence.props.ts
│ │ │ └── presence.types.ts
│ │ └── tsconfig.json
│ ├── progress
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── progress.anatomy.ts
│ │ │ ├── progress.connect.ts
│ │ │ ├── progress.dom.ts
│ │ │ ├── progress.machine.ts
│ │ │ ├── progress.props.ts
│ │ │ └── progress.types.ts
│ │ └── tsconfig.json
│ ├── qr-code
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── qr-code.anatomy.ts
│ │ │ ├── qr-code.connect.ts
│ │ │ ├── qr-code.dom.ts
│ │ │ ├── qr-code.machine.ts
│ │ │ ├── qr-code.props.ts
│ │ │ └── qr-code.types.ts
│ │ └── tsconfig.json
│ ├── radio-group
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── radio-group.anatomy.ts
│ │ │ ├── radio-group.connect.ts
│ │ │ ├── radio-group.dom.ts
│ │ │ ├── radio-group.machine.ts
│ │ │ ├── radio-group.props.ts
│ │ │ └── radio-group.types.ts
│ │ └── tsconfig.json
│ ├── rating-group
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── rating-group.anatomy.ts
│ │ │ ├── rating-group.connect.ts
│ │ │ ├── rating-group.dom.ts
│ │ │ ├── rating-group.machine.ts
│ │ │ ├── rating-group.props.ts
│ │ │ └── rating-group.types.ts
│ │ └── tsconfig.json
│ ├── select
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── select.anatomy.ts
│ │ │ ├── select.collection.ts
│ │ │ ├── select.connect.ts
│ │ │ ├── select.dom.ts
│ │ │ ├── select.machine.ts
│ │ │ ├── select.props.ts
│ │ │ └── select.types.ts
│ │ └── tsconfig.json
│ ├── signature-pad
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── get-svg-path.ts
│ │ │ ├── index.ts
│ │ │ ├── signature-pad.anatomy.ts
│ │ │ ├── signature-pad.connect.ts
│ │ │ ├── signature-pad.dom.ts
│ │ │ ├── signature-pad.machine.ts
│ │ │ ├── signature-pad.props.ts
│ │ │ └── signature-pad.types.ts
│ │ └── tsconfig.json
│ ├── slider
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── slider.anatomy.ts
│ │ │ ├── slider.connect.ts
│ │ │ ├── slider.dom.ts
│ │ │ ├── slider.machine.ts
│ │ │ ├── slider.props.ts
│ │ │ ├── slider.style.ts
│ │ │ ├── slider.types.ts
│ │ │ └── slider.utils.ts
│ │ └── tsconfig.json
│ ├── splitter
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── splitter.anatomy.ts
│ │ │ ├── splitter.connect.ts
│ │ │ ├── splitter.dom.ts
│ │ │ ├── splitter.machine.ts
│ │ │ ├── splitter.props.ts
│ │ │ ├── splitter.types.ts
│ │ │ └── utils
│ │ │ │ ├── aria.ts
│ │ │ │ ├── fuzzy.ts
│ │ │ │ ├── panel.ts
│ │ │ │ ├── resize-by-delta.ts
│ │ │ │ ├── resize-panel.ts
│ │ │ │ └── validate-sizes.ts
│ │ └── tsconfig.json
│ ├── steps
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── steps.anatomy.ts
│ │ │ ├── steps.connect.ts
│ │ │ ├── steps.dom.ts
│ │ │ ├── steps.machine.ts
│ │ │ ├── steps.props.ts
│ │ │ └── steps.types.ts
│ │ └── tsconfig.json
│ ├── switch
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── switch.anatomy.ts
│ │ │ ├── switch.connect.ts
│ │ │ ├── switch.dom.ts
│ │ │ ├── switch.machine.ts
│ │ │ ├── switch.props.ts
│ │ │ └── switch.types.ts
│ │ └── tsconfig.json
│ ├── tabs
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── tabs.anatomy.ts
│ │ │ ├── tabs.connect.ts
│ │ │ ├── tabs.dom.ts
│ │ │ ├── tabs.machine.ts
│ │ │ ├── tabs.props.ts
│ │ │ └── tabs.types.ts
│ │ └── tsconfig.json
│ ├── tags-input
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── tags-input.anatomy.ts
│ │ │ ├── tags-input.connect.ts
│ │ │ ├── tags-input.dom.ts
│ │ │ ├── tags-input.machine.ts
│ │ │ ├── tags-input.props.ts
│ │ │ └── tags-input.types.ts
│ │ └── tsconfig.json
│ ├── time-picker
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── time-picker.anatomy.ts
│ │ │ ├── time-picker.connect.ts
│ │ │ ├── time-picker.dom.ts
│ │ │ ├── time-picker.machine.ts
│ │ │ ├── time-picker.parse.ts
│ │ │ ├── time-picker.props.ts
│ │ │ ├── time-picker.types.ts
│ │ │ └── time-picker.utils.ts
│ │ └── tsconfig.json
│ ├── timer
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── timer.anatomy.ts
│ │ │ ├── timer.connect.ts
│ │ │ ├── timer.dom.ts
│ │ │ ├── timer.machine.ts
│ │ │ ├── timer.parse.ts
│ │ │ ├── timer.props.ts
│ │ │ └── timer.types.ts
│ │ └── tsconfig.json
│ ├── toast
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── toast-group.connect.ts
│ │ │ ├── toast-group.machine.ts
│ │ │ ├── toast.anatomy.ts
│ │ │ ├── toast.connect.ts
│ │ │ ├── toast.dom.ts
│ │ │ ├── toast.machine.ts
│ │ │ ├── toast.store.ts
│ │ │ ├── toast.types.ts
│ │ │ └── toast.utils.ts
│ │ └── tsconfig.json
│ ├── toggle-group
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── toggle-group.anatomy.ts
│ │ │ ├── toggle-group.connect.ts
│ │ │ ├── toggle-group.dom.ts
│ │ │ ├── toggle-group.machine.ts
│ │ │ ├── toggle-group.props.ts
│ │ │ └── toggle-group.types.ts
│ │ └── tsconfig.json
│ ├── toggle
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── toggle.anatomy.ts
│ │ │ ├── toggle.connect.ts
│ │ │ ├── toggle.machine.ts
│ │ │ ├── toggle.props.ts
│ │ │ └── toggle.types.ts
│ │ └── tsconfig.json
│ ├── tooltip
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── tooltip.anatomy.ts
│ │ │ ├── tooltip.connect.ts
│ │ │ ├── tooltip.dom.ts
│ │ │ ├── tooltip.machine.ts
│ │ │ ├── tooltip.props.ts
│ │ │ ├── tooltip.store.ts
│ │ │ └── tooltip.types.ts
│ │ └── tsconfig.json
│ ├── tour
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── tour.anatomy.ts
│ │ │ ├── tour.connect.ts
│ │ │ ├── tour.dom.ts
│ │ │ ├── tour.machine.ts
│ │ │ ├── tour.props.ts
│ │ │ ├── tour.types.ts
│ │ │ └── utils
│ │ │ │ ├── clip-path.ts
│ │ │ │ ├── rect.ts
│ │ │ │ ├── step.ts
│ │ │ │ └── wait.ts
│ │ └── tsconfig.json
│ └── tree-view
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src
│ │ ├── index.ts
│ │ ├── tree-view.anatomy.ts
│ │ ├── tree-view.collection.ts
│ │ ├── tree-view.connect.ts
│ │ ├── tree-view.dom.ts
│ │ ├── tree-view.machine.ts
│ │ ├── tree-view.props.ts
│ │ ├── tree-view.types.ts
│ │ └── tree-view.utils.ts
│ │ └── tsconfig.json
├── store
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── clone.ts
│ │ ├── global.ts
│ │ ├── index.ts
│ │ ├── proxy-computed.ts
│ │ ├── proxy.ts
│ │ └── utils.ts
│ └── tsconfig.json
├── types
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── src
│ │ ├── create-props.ts
│ │ ├── index.ts
│ │ ├── jsx.ts
│ │ └── prop-types.ts
│ └── tsconfig.json
└── utilities
│ ├── aria-hidden
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── aria-hidden.ts
│ │ ├── index.ts
│ │ └── walk-tree-outside.ts
│ └── tsconfig.json
│ ├── auto-resize
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── autoresize-input.ts
│ │ ├── autoresize-textarea.ts
│ │ ├── index.ts
│ │ └── visual-style.ts
│ └── tsconfig.json
│ ├── collection
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── grid-collection.ts
│ │ ├── index.ts
│ │ ├── list-collection.ts
│ │ ├── selection.ts
│ │ ├── tree-collection.ts
│ │ ├── tree-visit.ts
│ │ └── types.ts
│ ├── tests
│ │ ├── grid-collection.test.ts
│ │ ├── list-collection.test.ts
│ │ ├── selection.test.ts
│ │ ├── tree-collection.test.ts
│ │ ├── tree-diagram.ts
│ │ └── tree-skip.test.ts
│ └── tsconfig.json
│ ├── color-utils
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── area-gradient.ts
│ │ ├── color-format-gradient.ts
│ │ ├── color.ts
│ │ ├── hsb-color.ts
│ │ ├── hsl-color.ts
│ │ ├── index.ts
│ │ ├── native-color.ts
│ │ ├── parse-color.ts
│ │ ├── rgb-color.ts
│ │ └── types.ts
│ ├── tests
│ │ └── color.test.ts
│ └── tsconfig.json
│ ├── core
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── src
│ │ ├── array.ts
│ │ ├── equal.ts
│ │ ├── functions.ts
│ │ ├── guard.ts
│ │ ├── index.ts
│ │ ├── number.ts
│ │ ├── object.ts
│ │ ├── timers.ts
│ │ └── warning.ts
│ ├── tests
│ │ ├── equal.test.ts
│ │ ├── number.test.ts
│ │ └── object.test.ts
│ └── tsconfig.json
│ ├── date-utils
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── align.ts
│ │ ├── assertion.ts
│ │ ├── constrain.ts
│ │ ├── date-month.ts
│ │ ├── date-year.ts
│ │ ├── duration.ts
│ │ ├── format.ts
│ │ ├── formatter.ts
│ │ ├── get-era-format.ts
│ │ ├── index.ts
│ │ ├── mutation.ts
│ │ ├── pagination.ts
│ │ ├── parse-date.ts
│ │ ├── preset.ts
│ │ └── types.ts
│ ├── tests
│ │ ├── assertion.test.ts
│ │ ├── date.test.ts
│ │ ├── format.test.ts
│ │ ├── get-decade-range.test.ts
│ │ ├── get-month-days.test.ts
│ │ ├── get-month-names.test.ts
│ │ ├── get-start-of-week.test.ts
│ │ ├── get-week-days.test.ts
│ │ ├── get-weekday-formats.test.ts
│ │ ├── normalize-year.test.ts
│ │ ├── parse-date.test.ts
│ │ └── year-range.test.ts
│ └── tsconfig.json
│ ├── dismissable
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── dismissable-layer.ts
│ │ ├── escape-keydown.ts
│ │ ├── index.ts
│ │ ├── layer-stack.ts
│ │ └── pointer-event-outside.ts
│ └── tsconfig.json
│ ├── dom-query
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── caret.ts
│ │ ├── computed-style.ts
│ │ ├── data-url.ts
│ │ ├── event.ts
│ │ ├── form.ts
│ │ ├── index.ts
│ │ ├── initial-focus.ts
│ │ ├── mutation-observer.ts
│ │ ├── navigate.ts
│ │ ├── node.ts
│ │ ├── overflow.ts
│ │ ├── platform.ts
│ │ ├── point.ts
│ │ ├── pointer-lock.ts
│ │ ├── pointer-move.ts
│ │ ├── press.ts
│ │ ├── proxy-tab-focus.ts
│ │ ├── query.ts
│ │ ├── raf.ts
│ │ ├── resize-observer.ts
│ │ ├── scope.ts
│ │ ├── searchable.ts
│ │ ├── set.ts
│ │ ├── shared.ts
│ │ ├── tabbable.ts
│ │ ├── text-selection.ts
│ │ ├── typeahead.ts
│ │ ├── types.ts
│ │ ├── visual-viewport.ts
│ │ ├── visually-hidden.ts
│ │ └── wait-for.ts
│ └── tsconfig.json
│ ├── file-utils
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── data-transfer.ts
│ │ ├── data-url-to-blob.ts
│ │ ├── download-file.ts
│ │ ├── get-accept-attr.ts
│ │ ├── get-file-data-url.ts
│ │ ├── get-total-file-size.ts
│ │ ├── index.ts
│ │ ├── is-file-equal.ts
│ │ ├── is-valid-file-size.ts
│ │ ├── is-valid-file-type.ts
│ │ └── types.ts
│ └── tsconfig.json
│ ├── focus-trap
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── focus-trap.ts
│ │ ├── index.ts
│ │ └── types.ts
│ └── tsconfig.json
│ ├── focus-visible
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ └── index.ts
│ └── tsconfig.json
│ ├── highlight-word
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── highlight-first.ts
│ │ ├── highlight-multiple.ts
│ │ ├── highlight.ts
│ │ ├── index.ts
│ │ ├── normalize-span.ts
│ │ └── types.ts
│ ├── tests
│ │ └── highlight-word.test.ts
│ └── tsconfig.json
│ ├── i18n-utils
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── cache.ts
│ │ ├── filter.ts
│ │ ├── format-bytes.ts
│ │ ├── format-date.ts
│ │ ├── format-list.ts
│ │ ├── format-number.ts
│ │ ├── format-relative-time.ts
│ │ ├── index.ts
│ │ ├── is-rtl.ts
│ │ ├── locale.ts
│ │ └── track-locale.ts
│ ├── tests
│ │ ├── format-byte.test.ts
│ │ ├── format-date.test.ts
│ │ ├── format-list.test.ts
│ │ └── format-relative-time.test.ts
│ └── tsconfig.json
│ ├── interact-outside
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── frame-utils.ts
│ │ └── index.ts
│ └── tsconfig.json
│ ├── live-region
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ └── index.ts
│ └── tsconfig.json
│ ├── popper
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── get-anchor.ts
│ │ ├── get-placement.ts
│ │ ├── get-styles.ts
│ │ ├── index.ts
│ │ ├── middleware.ts
│ │ ├── placement.ts
│ │ └── types.ts
│ └── tsconfig.json
│ ├── rect
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── affine-transform.ts
│ │ ├── align.ts
│ │ ├── angle.ts
│ │ ├── clamp.ts
│ │ ├── closest.ts
│ │ ├── compass.ts
│ │ ├── constrain.ts
│ │ ├── contains.ts
│ │ ├── distance.ts
│ │ ├── equality.ts
│ │ ├── from-element.ts
│ │ ├── from-points.ts
│ │ ├── from-range.ts
│ │ ├── from-rotation.ts
│ │ ├── from-window.ts
│ │ ├── index.ts
│ │ ├── intersection.ts
│ │ ├── operations.ts
│ │ ├── polygon.ts
│ │ ├── rect.ts
│ │ ├── resize.ts
│ │ ├── types.ts
│ │ └── union.ts
│ ├── tests
│ │ └── rect.test.ts
│ └── tsconfig.json
│ ├── remove-scroll
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ └── index.ts
│ └── tsconfig.json
│ ├── scroll-snap
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ └── index.ts
│ └── tsconfig.json
│ └── stringify-state
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ ├── index.ts
│ └── json-format-highlight.d.ts
│ └── tsconfig.json
├── playwright.config.ts
├── plop
├── machine-examples
│ ├── next-ts
│ │ └── pages
│ │ │ └── {{machine}}.tsx.hbs
│ ├── nuxt-ts
│ │ └── pages
│ │ │ └── {{machine}}.vue.hbs
│ └── solid-ts
│ │ └── src
│ │ └── routes
│ │ └── {{machine}}.tsx.hbs
├── machine
│ ├── README.md.hbs
│ ├── package.json.hbs
│ ├── src
│ │ ├── index.ts.hbs
│ │ ├── {{machine}}.anatomy.ts.hbs
│ │ ├── {{machine}}.connect.ts.hbs
│ │ ├── {{machine}}.dom.ts.hbs
│ │ ├── {{machine}}.machine.ts.hbs
│ │ ├── {{machine}}.props.ts.hbs
│ │ └── {{machine}}.types.ts.hbs
│ └── tsconfig.json.hbs
└── utility
│ ├── README.md.hbs
│ ├── package.json.hbs
│ ├── src
│ └── index.ts
│ └── tsconfig.json.hbs
├── plopfile.js
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── renovate.json
├── scripts
├── data-attr.ts
├── get-packages.ts
├── logger.ts
├── play.ts
├── slack.ts
├── sync-packages.ts
└── typedocs.ts
├── shared
├── CHANGELOG.md
├── index.ts
├── package.json
├── src
│ ├── command.ts
│ ├── controls.ts
│ ├── country-list.ts
│ ├── css
│ │ ├── accordion.css
│ │ ├── anatomy.css
│ │ ├── angle-slider.css
│ │ ├── avatar.css
│ │ ├── carousel.css
│ │ ├── checkbox.css
│ │ ├── clipboard.css
│ │ ├── collapsible.css
│ │ ├── color-picker.css
│ │ ├── combobox.css
│ │ ├── date-picker.css
│ │ ├── dialog.css
│ │ ├── editable.css
│ │ ├── file-upload.css
│ │ ├── floating-panel.css
│ │ ├── hover-card.css
│ │ ├── layout.css
│ │ ├── listbox.css
│ │ ├── menu.css
│ │ ├── navigation-menu-keyframes.css
│ │ ├── navigation-menu-nested.css
│ │ ├── navigation-menu-viewport.css
│ │ ├── navigation-menu.css
│ │ ├── number-input.css
│ │ ├── pagination.css
│ │ ├── password-input.css
│ │ ├── pin-input.css
│ │ ├── popover.css
│ │ ├── presence.css
│ │ ├── progress.css
│ │ ├── qr-code.css
│ │ ├── radio-group.css
│ │ ├── rating-group.css
│ │ ├── segmented-control.css
│ │ ├── select.css
│ │ ├── signature-pad.css
│ │ ├── slider.css
│ │ ├── splitter.css
│ │ ├── steps.css
│ │ ├── swap.css
│ │ ├── switch.css
│ │ ├── tabs.css
│ │ ├── tags-input.css
│ │ ├── time-picker.css
│ │ ├── timer.css
│ │ ├── toast.css
│ │ ├── toggle-group.css
│ │ ├── toggle.css
│ │ ├── tooltip.css
│ │ ├── tour.css
│ │ └── tree-view.css
│ ├── data.ts
│ ├── deep-get-set.ts
│ ├── define-controls.ts
│ ├── index.ts
│ ├── pagination-data.ts
│ ├── routes.ts
│ └── style.css
└── tsconfig.json
├── starters
└── react
│ ├── .gitignore
│ ├── README.md
│ ├── app
│ ├── accordion
│ │ └── collapsible
│ │ │ └── page.tsx
│ ├── collapsible
│ │ ├── controlled
│ │ │ └── page.tsx
│ │ └── uncontrolled
│ │ │ └── page.tsx
│ ├── color-picker
│ │ └── controlled
│ │ │ └── page.tsx
│ ├── date-picker
│ │ └── controlled-range-picker
│ │ │ └── page.tsx
│ ├── dialog
│ │ ├── controlled
│ │ │ └── page.tsx
│ │ └── search-params
│ │ │ └── page.tsx
│ ├── favicon.ico
│ ├── hover-card
│ │ └── controlled
│ │ │ └── page.tsx
│ ├── layout.tsx
│ ├── menu
│ │ └── controlled
│ │ │ └── page.tsx
│ ├── page.tsx
│ ├── popover
│ │ └── controlled
│ │ │ └── page.tsx
│ ├── presence
│ │ ├── page.css
│ │ └── page.tsx
│ ├── select
│ │ ├── controlled
│ │ │ └── page.tsx
│ │ ├── mobile-touchend
│ │ │ └── page.tsx
│ │ ├── search-params
│ │ │ └── page.tsx
│ │ └── virtualized
│ │ │ └── page.tsx
│ └── tooltip
│ │ ├── controlled-multiple
│ │ └── page.tsx
│ │ └── controlled
│ │ └── page.tsx
│ ├── components
│ ├── accordion.tsx
│ ├── button.tsx
│ ├── clipboard.tsx
│ ├── collapsible.tsx
│ ├── color-picker.tsx
│ ├── date-range-picker.tsx
│ ├── dialog.tsx
│ ├── hover-card.tsx
│ ├── menu.tsx
│ ├── popover.tsx
│ ├── presence.tsx
│ ├── select.tsx
│ ├── show.tsx
│ ├── signature-pad.tsx
│ ├── tooltip.tsx
│ ├── use-render.ts
│ └── virtualized-select.tsx
│ ├── eslint.config.mjs
│ ├── next.config.js
│ ├── package.json
│ ├── public
│ ├── next.svg
│ └── vercel.svg
│ └── tsconfig.json
├── tsconfig.eslint.json
├── tsconfig.json
├── tsup.config.ts
├── vite.config.ts
└── website
├── .npmrc
├── .prettierignore
├── .prettierrc
├── components
├── button.tsx
├── code-area.tsx
├── copy-button.tsx
├── data-attr-table.tsx
├── footer-link.tsx
├── footer.tsx
├── framework-select.tsx
├── framework.tsx
├── icon-link.tsx
├── icons.tsx
├── illustration.tsx
├── kbd.tsx
├── keyboard-table.tsx
├── logo.tsx
├── mdx-components.tsx
├── mdx-footer.tsx
├── mobile-navigation.tsx
├── multi-framework.tsx
├── nigeria-flag.tsx
├── pagination.tsx
├── playground.tsx
├── prop-table.tsx
├── search-dialog.tsx
├── search-trigger.tsx
├── sidebar.tsx
├── skip-nav.tsx
├── theme-toggle.tsx
├── toc.tsx
├── top-navigation.tsx
├── use-scrollspy.ts
├── version-selector.tsx
└── workshop-link.tsx
├── contentlayer.config.ts
├── data
├── components
│ ├── accordion.mdx
│ ├── angle-slider.mdx
│ ├── avatar.mdx
│ ├── carousel.mdx
│ ├── checkbox.mdx
│ ├── circular-progress.mdx
│ ├── clipboard.mdx
│ ├── collapsible.mdx
│ ├── color-picker.mdx
│ ├── combobox.mdx
│ ├── context-menu.mdx
│ ├── date-picker.mdx
│ ├── dialog.mdx
│ ├── editable.mdx
│ ├── file-upload.mdx
│ ├── floating-panel.mdx
│ ├── hover-card.mdx
│ ├── linear-progress.mdx
│ ├── listbox.mdx
│ ├── menu.mdx
│ ├── nested-menu.mdx
│ ├── number-input.mdx
│ ├── pagination.mdx
│ ├── password-input.mdx
│ ├── pin-input.mdx
│ ├── popover.mdx
│ ├── presence.mdx
│ ├── qr-code.mdx
│ ├── radio-group.mdx
│ ├── range-slider.mdx
│ ├── rating-group.mdx
│ ├── segmented-control.mdx
│ ├── select.mdx
│ ├── signature-pad.mdx
│ ├── slider.mdx
│ ├── splitter.mdx
│ ├── steps.mdx
│ ├── switch.mdx
│ ├── tabs.mdx
│ ├── tags-input.mdx
│ ├── time-picker.mdx
│ ├── timer.mdx
│ ├── toast.mdx
│ ├── toggle-group.mdx
│ ├── tooltip.mdx
│ ├── tour.mdx
│ └── tree-view.mdx
├── guides
│ ├── collection.mdx
│ ├── composition.mdx
│ ├── migration.mdx
│ ├── programmatic-control.mdx
│ └── styling.mdx
├── overview
│ ├── faq.mdx
│ ├── installation.mdx
│ ├── introduction.mdx
│ ├── llms-txt.mdx
│ └── whats-a-machine.mdx
└── snippets
│ ├── react
│ ├── accordion
│ │ ├── component.api.mdx
│ │ ├── component.usage.mdx
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── angle-slider
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── tick-marks.mdx
│ │ └── usage.mdx
│ ├── avatar
│ │ ├── component.api.mdx
│ │ ├── component.usage.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── carousel
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── checkbox
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── clipboard
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── collapsible
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── color-picker
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ ├── with-channel-inputs.mdx
│ │ ├── with-eye-dropper.mdx
│ │ ├── with-preview.mdx
│ │ └── with-swatches.mdx
│ ├── combobox
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── date-picker
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── dialog
│ │ ├── controlled.mdx
│ │ ├── initial-focus.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── editable
│ │ ├── custom-controls.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── file-upload
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── floating-panel
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── hover-card
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── listbox
│ │ ├── filtering.mdx
│ │ ├── grid-usage.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── menu
│ │ ├── context-menu.mdx
│ │ ├── installation.mdx
│ │ ├── nested-menu.mdx
│ │ ├── option-items.mdx
│ │ └── usage.mdx
│ ├── number-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── scrubber.mdx
│ │ └── usage.mdx
│ ├── pagination
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── password-input
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── pin-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── popover
│ │ ├── initial-focus.mdx
│ │ ├── installation.mdx
│ │ ├── render-in-portal.mdx
│ │ └── usage.mdx
│ ├── presence
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── progress
│ │ ├── circular.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── qr-code
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── radio-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── range-slider
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── rating-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── segmented-control
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── select
│ │ ├── installation.mdx
│ │ ├── usage-with-form.mdx
│ │ └── usage.mdx
│ ├── signature-pad
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── slider
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── tick-marks.mdx
│ │ └── usage.mdx
│ ├── splitter
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── steps
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── switch
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tabs
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ └── with-indicator.mdx
│ ├── tags-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── time-picker
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── timer
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── toast
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ └── using-portal.mdx
│ ├── toggle-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tooltip
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tour
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ └── tree-view
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── solid
│ ├── accordion
│ │ ├── component.api.mdx
│ │ ├── component.usage.mdx
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── angle-slider
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── tick-marks.mdx
│ │ └── usage.mdx
│ ├── avatar
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── carousel
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── checkbox
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── clipboard
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── collapsible
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── color-picker
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ ├── with-channel-inputs.mdx
│ │ ├── with-eye-dropper.mdx
│ │ ├── with-preview.mdx
│ │ └── with-swatches.mdx
│ ├── combobox
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── date-picker
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── dialog
│ │ ├── controlled.mdx
│ │ ├── initial-focus.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── editable
│ │ ├── custom-controls.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── file-upload
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── floating-panel
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── hover-card
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── listbox
│ │ ├── filtering.mdx
│ │ ├── grid-usage.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── menu
│ │ ├── context-menu.mdx
│ │ ├── installation.mdx
│ │ ├── nested-menu.mdx
│ │ ├── option-items.mdx
│ │ └── usage.mdx
│ ├── number-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── scrubber.mdx
│ │ └── usage.mdx
│ ├── pagination
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── password-input
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── pin-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── popover
│ │ ├── initial-focus.mdx
│ │ ├── installation.mdx
│ │ ├── render-in-portal.mdx
│ │ └── usage.mdx
│ ├── presence
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── progress
│ │ ├── circular.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── qr-code
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── radio-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── range-slider
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── rating-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── segmented-control
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── select
│ │ ├── installation.mdx
│ │ ├── usage-with-form.mdx
│ │ └── usage.mdx
│ ├── signature-pad
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── slider
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── tick-marks.mdx
│ │ └── usage.mdx
│ ├── splitter
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── steps
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── switch
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tabs
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ └── with-indicator.mdx
│ ├── tags-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── time-picker
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── timer
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── toast
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── toggle-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tooltip
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tour
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ └── tree-view
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── svelte
│ ├── accordion
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── angle-slider
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── tick-marks.mdx
│ │ └── usage.mdx
│ ├── avatar
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── carousel
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── checkbox
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── clipboard
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── collapsible
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── color-picker
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ ├── with-channel-inputs.mdx
│ │ ├── with-eye-dropper.mdx
│ │ ├── with-preview.mdx
│ │ └── with-swatches.mdx
│ ├── combobox
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── date-picker
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── dialog
│ │ ├── controlled.mdx
│ │ ├── initial-focus.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── editable
│ │ ├── custom-controls.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── file-upload
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── floating-panel
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── hover-card
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── listbox
│ │ ├── filtering.mdx
│ │ ├── grid-usage.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── menu
│ │ ├── context-menu.mdx
│ │ ├── installation.mdx
│ │ ├── nested-menu.mdx
│ │ ├── option-items.mdx
│ │ └── usage.mdx
│ ├── number-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── scrubber.mdx
│ │ └── usage.mdx
│ ├── pagination
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── password-input
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── pin-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── popover
│ │ ├── initial-focus.mdx
│ │ ├── installation.mdx
│ │ ├── render-in-portal.mdx
│ │ └── usage.mdx
│ ├── progress
│ │ ├── circular.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── qr-code
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── radio-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── range-slider
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── rating-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── segmented-control
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── select
│ │ ├── installation.mdx
│ │ ├── usage-with-form.mdx
│ │ └── usage.mdx
│ ├── signature-pad
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── slider
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── tick-marks.mdx
│ │ └── usage.mdx
│ ├── splitter
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── switch
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tabs
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ └── with-indicator.mdx
│ ├── tags-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── time-picker
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── timer
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── toast
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ └── using-portal.mdx
│ ├── toggle-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tooltip
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ └── tour
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── vue
│ ├── accordion
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── angle-slider
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── tick-marks.mdx
│ │ └── usage.mdx
│ ├── avatar
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── carousel
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── checkbox
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── clipboard
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── collapsible
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── color-picker
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ ├── with-channel-inputs.mdx
│ │ ├── with-eye-dropper.mdx
│ │ ├── with-preview.mdx
│ │ └── with-swatches.mdx
│ ├── combobox
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── date-picker
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── dialog
│ │ ├── controlled.mdx
│ │ ├── initial-focus.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── editable
│ │ ├── custom-controls.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── file-upload
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── floating-panel
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── hover-card
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── listbox
│ │ ├── filtering.mdx
│ │ ├── grid-usage.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── menu
│ │ ├── context-menu.mdx
│ │ ├── installation.mdx
│ │ ├── nested-menu.mdx
│ │ ├── option-items.mdx
│ │ └── usage.mdx
│ ├── number-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── scrubber.mdx
│ │ └── usage.mdx
│ ├── pagination
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── password-input
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── pin-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── popover
│ │ ├── initial-focus.mdx
│ │ ├── installation.mdx
│ │ ├── render-in-portal.mdx
│ │ └── usage.mdx
│ ├── presence
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── progress
│ │ ├── circular.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── qr-code
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── radio-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── range-slider
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── rating-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── segmented-control
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── select
│ │ ├── installation.mdx
│ │ ├── usage-with-form.mdx
│ │ └── usage.mdx
│ ├── signature-pad
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── slider
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── tick-marks.mdx
│ │ └── usage.mdx
│ ├── splitter
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── steps
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── switch
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tabs
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ ├── usage.mdx
│ │ └── with-indicator.mdx
│ ├── tags-input
│ │ ├── controlled.mdx
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── time-picker
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── timer
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── toast
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── toggle-group
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tooltip
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ ├── tour
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ └── tree-view
│ │ ├── installation.mdx
│ │ └── usage.mdx
│ └── website
│ └── snippet.mdx
├── demos
├── accordion.tsx
├── angle-slider.tsx
├── avatar.tsx
├── carousel.tsx
├── checkbox.tsx
├── clipboard.tsx
├── collapsible.tsx
├── color-picker.tsx
├── combobox.tsx
├── context-menu.tsx
├── date-picker-multiple-month.tsx
├── date-picker.tsx
├── dialog.tsx
├── editable.tsx
├── file-upload.tsx
├── floating-panel.tsx
├── hover-card.tsx
├── index.tsx
├── listbox.tsx
├── menu.tsx
├── nested-menu.tsx
├── number-input.tsx
├── pagination.tsx
├── password-input.tsx
├── pin-input.tsx
├── popover.tsx
├── presence.tsx
├── progress-circular.tsx
├── progress-linear.tsx
├── qr-code.tsx
├── radio.tsx
├── range-slider.tsx
├── rating.tsx
├── segmented-control.tsx
├── select.tsx
├── signature-pad.tsx
├── slider.tsx
├── splitter.tsx
├── steps.tsx
├── switch.tsx
├── tabs.tsx
├── tags-input.tsx
├── time-picker.tsx
├── timer-countdown.tsx
├── toast.tsx
├── toggle-group.tsx
├── tooltip.tsx
├── tour.tsx
└── tree-view.tsx
├── eslint.config.mjs
├── layouts
└── docs.tsx
├── lib
├── component-llm.ts
├── contentlayer-utils.ts
├── demo-utils.ts
├── framework-utils.ts
├── markdown-toc.d.ts
├── normalize.ts
├── open-in-stackblitz.ts
├── pagination-utils.ts
├── remark-utils.ts
├── search-meta.ts
├── svelte-highlight.ts
├── use-merge-refs.ts
├── use-route-change.ts
├── use-search.ts
└── use-update-effect.ts
├── next-env.d.ts
├── next.config.ts
├── package.json
├── pages
├── _app.tsx
├── _document.tsx
├── api
│ └── demo.ts
├── components
│ └── [...slug].tsx
├── guides
│ └── [slug].tsx
├── index.tsx
├── llms-full.txt.tsx
├── llms-react.txt.tsx
├── llms-solid.txt.tsx
├── llms-svelte.txt.tsx
├── llms-vue.txt.tsx
├── llms.txt.tsx
└── overview
│ └── [slug].tsx
├── plop
├── component.mdx.hbs
└── snippet
│ ├── react
│ ├── installation.mdx.hbs
│ └── usage.mdx.hbs
│ ├── solid
│ ├── installation.mdx.hbs
│ └── usage.mdx.hbs
│ ├── svelte
│ ├── installation.mdx.hbs
│ └── usage.mdx.hbs
│ └── vue
│ ├── installation.mdx.hbs
│ └── usage.mdx.hbs
├── plopfile.js
├── public
├── favicon
│ ├── android-chrome-192x192.png
│ ├── android-chrome-256x256.png
│ ├── apple-touch-icon.png
│ ├── browserconfig.xml
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon.ico
│ ├── mstile-150x150.png
│ ├── safari-pinned-tab.svg
│ └── site.webmanifest
├── fonts
│ └── spline-sans.woff2
├── lee-rob-interview.png
├── og-banner-zag-course.png
├── open-graph
│ ├── twitter.png
│ └── website.png
├── oss-nominee.png
└── segun-adebayo-headshot.png
├── sidebar.config.ts
├── site.config.ts
├── styles
├── machines
│ ├── accordion.css
│ ├── angle-slider.css
│ ├── avatar.css
│ ├── carousel.css
│ ├── checkbox.css
│ ├── clipboard.css
│ ├── collapsible.css
│ ├── color-picker.css
│ ├── combobox.css
│ ├── date-picker.css
│ ├── dialog.css
│ ├── editable.css
│ ├── file-upload.css
│ ├── floating-panel.css
│ ├── hover-card.css
│ ├── index.css
│ ├── listbox.css
│ ├── menu.css
│ ├── number-input.css
│ ├── pagination.css
│ ├── password-input.css
│ ├── pin-input.css
│ ├── popover.css
│ ├── presence.css
│ ├── progress.css
│ ├── qr-code.css
│ ├── radio.css
│ ├── rating-group.css
│ ├── segmented-control.css
│ ├── select.css
│ ├── signature-pad.css
│ ├── slider.css
│ ├── splitter.css
│ ├── steps.css
│ ├── switch.css
│ ├── tabs.css
│ ├── tags-input.css
│ ├── time-picker.css
│ ├── timer.css
│ ├── toast.css
│ ├── toggle-group.css
│ ├── tooltip.css
│ ├── tour.css
│ └── tree-view.css
├── other.css
└── prism.css
├── theme
├── components.ts
├── global-styles.ts
├── index.ts
├── layer-styles.ts
├── semantic-tokens.ts
└── text-styles.ts
└── tsconfig.json
/.changeset/moody-lamps-cheat.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@zag-js/remove-scroll": patch
3 | ---
4 |
5 | Fix scrollbar width calculation before DOM change for scroll-lock workaround compatibility
6 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: Chat with other community members
4 | url: https://zagjs.com/discord
5 | about: The Zag Discord community
6 | - name: Consult with the Maintainers (60m)
7 | url: https://calendly.com/chakra-ui/technical-consulting-60m
8 | about: Discuss your technical questions or feature request with the Zag Maintainers
9 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "examples/next-ts/pages/compositions"]
2 | path = examples/next-ts/pages/compositions
3 | url = git@github.com:chakra-ui/zag-plus.git
4 |
--------------------------------------------------------------------------------
/.husky/commit-msg:
--------------------------------------------------------------------------------
1 | npx commitlint --edit "${1}"
2 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | npx lint-staged
2 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | strict-peer-dependencies=false
2 | package-manager-strict=false
3 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 22
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 | coverage
4 | .next
5 | build
6 | *.hbs
7 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": ["prettier-plugin-svelte"],
3 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }],
4 | "bracketSpacing": true,
5 | "jsxSingleQuote": false,
6 | "printWidth": 120,
7 | "proseWrap": "always",
8 | "semi": false,
9 | "singleQuote": false,
10 | "tabWidth": 2,
11 | "trailingComma": "all"
12 | }
13 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "ms-playwright.playwright",
4 | "Vue.volar",
5 | "svelte.svelte-vscode"
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "typescript.tsdk": "node_modules/typescript/lib",
3 | "search.exclude": {
4 | "**/node_modules": true,
5 | "**/dist": true,
6 | "**/.xstate": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/e2e/avatar.e2e.ts:
--------------------------------------------------------------------------------
1 | import { test } from "@playwright/test"
2 | import { a11y } from "./_utils"
3 |
4 | test.describe("avatar", () => {
5 | test.beforeEach(async ({ page }) => {
6 | await page.goto("/avatar")
7 | })
8 |
9 | test("should have no accessibility violations", async ({ page }) => {
10 | await a11y(page, ".avatar")
11 | })
12 | })
13 |
--------------------------------------------------------------------------------
/e2e/fixtures/text.txt:
--------------------------------------------------------------------------------
1 | zag
--------------------------------------------------------------------------------
/examples/next-ts/components/print.tsx:
--------------------------------------------------------------------------------
1 | export function Print(props: { title: string; value: any }) {
2 | const { value, title } = props
3 | return (
4 |
5 |
{title}
6 |
{JSON.stringify(value, null, 2)}
7 |
8 | )
9 | }
10 |
--------------------------------------------------------------------------------
/examples/next-ts/components/show.tsx:
--------------------------------------------------------------------------------
1 | export const Show = (props: { when: boolean; children: React.ReactNode }) => {
2 | const { when, children } = props
3 | return when ? <>{children}> : null
4 | }
5 |
--------------------------------------------------------------------------------
/examples/next-ts/components/swap.tsx:
--------------------------------------------------------------------------------
1 | import { Presence } from "./presence"
2 |
3 | export const Swap = (props: { children: React.ReactNode; open: boolean; fallback?: React.ReactNode }) => {
4 | const { children, open, fallback } = props
5 | return (
6 | <>
7 |
8 | {children}
9 |
10 |
11 | {fallback}
12 |
13 | >
14 | )
15 | }
16 |
--------------------------------------------------------------------------------
/examples/next-ts/hooks/use-effect-once.ts:
--------------------------------------------------------------------------------
1 | import { useEffect } from "react"
2 |
3 | export function useEffectOnce(fn: VoidFunction) {
4 | useEffect(fn, [])
5 | }
6 |
--------------------------------------------------------------------------------
/examples/next-ts/hooks/use-event.ts:
--------------------------------------------------------------------------------
1 | import { useCallback, useRef } from "react"
2 |
3 | type AnyFunction = (...args: any[]) => any
4 |
5 | export function useEvent(callback: T | undefined): T {
6 | const ref = useRef(callback)
7 | ref.current = callback
8 | return useCallback((...args: any[]) => ref.current?.(...args), []) as T
9 | }
10 |
--------------------------------------------------------------------------------
/examples/next-ts/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.
6 |
--------------------------------------------------------------------------------
/examples/next-ts/next.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | eslint: { ignoreDuringBuilds: true },
3 | typescript: { ignoreBuildErrors: true },
4 | experimental: {
5 | externalDir: true,
6 | },
7 | webpack: (config) => {
8 | config.module.rules.push({
9 | test: /\.m?js$/,
10 | type: "javascript/auto",
11 | resolve: {
12 | fullySpecified: false,
13 | },
14 | })
15 | return config
16 | },
17 | }
18 |
--------------------------------------------------------------------------------
/examples/next-ts/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import { routesData } from "@zag-js/shared"
2 | import Link from "next/link"
3 |
4 | const Page = () => {
5 | return (
6 |
7 |
Zag.js + React
8 |
9 | {routesData.map((route) => (
10 | -
11 | {route.label}
12 |
13 | ))}
14 |
15 |
16 | )
17 | }
18 |
19 | export default Page
20 |
--------------------------------------------------------------------------------
/examples/next-ts/pages/swap.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from "react"
2 | import { Swap } from "../components/swap"
3 |
4 | export default function Page() {
5 | const [muted, setMuted] = useState(false)
6 |
7 | return (
8 |
9 |
14 |
15 | )
16 | }
17 |
--------------------------------------------------------------------------------
/examples/nuxt-ts/.gitignore:
--------------------------------------------------------------------------------
1 | # Nuxt dev/build outputs
2 | .output
3 | .nuxt
4 | .nitro
5 | .cache
6 | dist
7 |
8 | # Node dependencies
9 | node_modules
10 |
11 | # Logs
12 | logs
13 | *.log
14 |
15 | # Misc
16 | .DS_Store
17 | .fleet
18 | .idea
19 |
20 | # Local env files
21 | .env
22 | .env.*
23 | !.env.example
24 |
--------------------------------------------------------------------------------
/examples/nuxt-ts/.npmrc:
--------------------------------------------------------------------------------
1 | shamefully-hoist=true
--------------------------------------------------------------------------------
/examples/nuxt-ts/app.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
13 |
14 |
--------------------------------------------------------------------------------
/examples/nuxt-ts/components/Star.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/nuxt-ts/nuxt.config.ts:
--------------------------------------------------------------------------------
1 | // https://nuxt.com/docs/api/configuration/nuxt-config
2 | export default defineNuxtConfig({
3 | devtools: { enabled: true },
4 | compatibilityDate: "2025-01-07",
5 | })
6 |
--------------------------------------------------------------------------------
/examples/nuxt-ts/pages/index.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
Vue UI Machines
8 |
9 | -
10 | {{ route.label }}
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/examples/nuxt-ts/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/examples/nuxt-ts/public/favicon.ico
--------------------------------------------------------------------------------
/examples/nuxt-ts/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../.nuxt/tsconfig.server.json",
3 | }
4 |
--------------------------------------------------------------------------------
/examples/nuxt-ts/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | // https://nuxt.com/docs/guide/concepts/typescript
3 | "extends": "./.nuxt/tsconfig.json",
4 | }
5 |
--------------------------------------------------------------------------------
/examples/preact-ts/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/examples/preact-ts/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + Preact
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/examples/preact-ts/src/components/show.tsx:
--------------------------------------------------------------------------------
1 | import { ComponentChildren } from "preact"
2 |
3 | export const Show = (props: { when: boolean; children: ComponentChildren }) => {
4 | const { when, children } = props
5 | return when ? <>{children}> : null
6 | }
7 |
--------------------------------------------------------------------------------
/examples/preact-ts/src/hooks/use-effect-once.ts:
--------------------------------------------------------------------------------
1 | import { useEffect } from "preact/hooks"
2 |
3 | export function useEffectOnce(fn: VoidFunction) {
4 | useEffect(fn, [])
5 | }
6 |
--------------------------------------------------------------------------------
/examples/preact-ts/src/pages/_404.tsx:
--------------------------------------------------------------------------------
1 | export function NotFound() {
2 | return (
3 |
4 | 404: Not Found
5 | It's gone :(
6 |
7 | )
8 | }
9 |
--------------------------------------------------------------------------------
/examples/preact-ts/src/pages/home.tsx:
--------------------------------------------------------------------------------
1 | import { routesData } from "@zag-js/shared"
2 |
3 | export default function Home() {
4 | return (
5 |
6 |
Zag.js + Solid
7 |
8 | {routesData
9 | .sort((a, b) => a.label.localeCompare(b.label))
10 | .map((route) => (
11 | -
12 | {route.label}
13 |
14 | ))}
15 |
16 |
17 | )
18 | }
19 |
--------------------------------------------------------------------------------
/examples/preact-ts/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite"
2 | import preact from "@preact/preset-vite"
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [preact()],
7 | })
8 |
--------------------------------------------------------------------------------
/examples/solid-ts/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | dist
3 | .solid
4 | .output
5 | .vercel
6 | .netlify
7 | .vinxi
8 |
9 | # Environment
10 | .env
11 | .env*.local
12 |
13 | # dependencies
14 | /node_modules
15 |
16 | # IDEs and editors
17 | /.idea
18 | .project
19 | .classpath
20 | *.launch
21 | .settings/
22 |
23 | # Temp
24 | gitignore
25 |
26 | # System Files
27 | .DS_Store
28 | Thumbs.db
29 |
--------------------------------------------------------------------------------
/examples/solid-ts/app.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "@solidjs/start/config"
2 |
3 | export default defineConfig({
4 | server: { preset: "vercel" },
5 | })
6 |
--------------------------------------------------------------------------------
/examples/solid-ts/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/examples/solid-ts/public/favicon.ico
--------------------------------------------------------------------------------
/examples/solid-ts/src/entry-client.tsx:
--------------------------------------------------------------------------------
1 | // @refresh reload
2 | import { mount, StartClient } from "@solidjs/start/client"
3 |
4 | mount(() => , document.getElementById("app")!)
5 |
--------------------------------------------------------------------------------
/examples/solid-ts/src/global.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/examples/svelte-ts/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/examples/svelte-ts/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Svelte Machines
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/examples/svelte-ts/src/main.ts:
--------------------------------------------------------------------------------
1 | import "../../../shared/src/style.css"
2 |
3 | import { mount } from "svelte"
4 | import App from "./App.svelte"
5 |
6 | const app = mount(App, {
7 | target: document.getElementById("app")!,
8 | })
9 |
10 | export default app
11 |
--------------------------------------------------------------------------------
/examples/svelte-ts/src/routes/index.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
Svelte UI Machines
8 |
9 | {#each routesData as route}
10 | -
11 | {route.label}
12 |
13 | {/each}
14 |
15 |
16 |
--------------------------------------------------------------------------------
/examples/svelte-ts/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/examples/svelte-ts/svelte.config.js:
--------------------------------------------------------------------------------
1 | import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"
2 |
3 | export default {
4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess
5 | // for more information about preprocessors
6 | preprocess: vitePreprocess(),
7 | }
8 |
--------------------------------------------------------------------------------
/examples/svelte-ts/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler"
7 | },
8 | "include": ["vite.config.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/examples/svelte-ts/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { svelte } from "@sveltejs/vite-plugin-svelte"
2 | import { defineConfig } from "vite"
3 | import tsconfigPaths from "vite-tsconfig-paths"
4 |
5 | // https://vitejs.dev/config/
6 | export default defineConfig({
7 | plugins: [svelte(), tsconfigPaths()],
8 | })
9 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/pages/accordion.ts:
--------------------------------------------------------------------------------
1 | import "@zag-js/shared/src/style.css"
2 |
3 | import { Accordion } from "../src/accordion"
4 | import { nanoid } from "nanoid"
5 |
6 | document.querySelectorAll(".accordion").forEach((rootEl) => {
7 | const accordion = new Accordion(rootEl, { id: nanoid(), multiple: true })
8 | accordion.init()
9 | })
10 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/pages/avatar.ts:
--------------------------------------------------------------------------------
1 | import "@zag-js/shared/src/style.css"
2 |
3 | import { Avatar } from "../src/avatar"
4 | import { nanoid } from "nanoid"
5 |
6 | document.querySelectorAll(".avatar").forEach((rootEl) => {
7 | const avatar = new Avatar(rootEl, { id: nanoid() })
8 | avatar.init()
9 | })
10 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/pages/checkbox.ts:
--------------------------------------------------------------------------------
1 | import "@zag-js/shared/src/style.css"
2 |
3 | import { nanoid } from "nanoid"
4 | import { Checkbox } from "../src/checkbox"
5 |
6 | document.querySelectorAll(".checkbox").forEach((rootEl) => {
7 | const checkbox = new Checkbox(rootEl, {
8 | id: nanoid(),
9 | })
10 |
11 | checkbox.init()
12 | })
13 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/pages/combobox.ts:
--------------------------------------------------------------------------------
1 | import "@zag-js/shared/src/style.css"
2 |
3 | import { Combobox } from "../src/combobox"
4 | import { nanoid } from "nanoid"
5 |
6 | document.querySelectorAll(".combobox").forEach((rootEl) => {
7 | const combobox = new Combobox(rootEl, { id: nanoid() })
8 | combobox.init()
9 | })
10 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/pages/popover.ts:
--------------------------------------------------------------------------------
1 | import "@zag-js/shared/src/style.css"
2 |
3 | import { Popover } from "../src/popover"
4 | import { nanoid } from "nanoid"
5 |
6 | document.querySelectorAll(".popover").forEach((rootEl) => {
7 | const popover = new Popover(rootEl, {
8 | id: nanoid(),
9 | positioning: {
10 | placement: "right",
11 | },
12 | })
13 | popover.init()
14 | })
15 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/src/lib/index.ts:
--------------------------------------------------------------------------------
1 | export { normalizeProps } from "./normalize-props"
2 | export { spreadProps } from "./spread-props"
3 | export { VanillaMachine } from "./machine"
4 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/src/lib/refs.ts:
--------------------------------------------------------------------------------
1 | export function createRefs(refs: T) {
2 | const ref = { current: refs }
3 | return {
4 | get(key: K): T[K] {
5 | return ref.current[key]
6 | },
7 | set(key: K, value: T[K]) {
8 | ref.current[key] = value
9 | },
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/examples/vanilla-ts/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/anatomy-icons/README.md:
--------------------------------------------------------------------------------
1 | # Anatomy Icons
2 |
3 | This package provides a set of icons for use in the Zag.js docs for the anatomy section.
4 |
--------------------------------------------------------------------------------
/packages/anatomy-icons/src/components/time-picker.tsx:
--------------------------------------------------------------------------------
1 | import { createComponent } from "../create-component"
2 |
3 | export const TimePickerAnatomy = createComponent((props) => {
4 | const { palette, ...rest } = props
5 | return
6 | })
7 |
--------------------------------------------------------------------------------
/packages/anatomy-icons/src/create-gradient.ts:
--------------------------------------------------------------------------------
1 | import { adjustHue, darken, desaturate, toHex } from "color2k"
2 |
3 | export function createGradient(accentColor: string) {
4 | const startColor = toHex(darken(desaturate(adjustHue(accentColor, 9), 0.52), 0.1))
5 | const stopColor = toHex(darken(desaturate(adjustHue(accentColor, 9), 0.43), 0.22))
6 | return {
7 | startColor,
8 | stopColor,
9 | value: `linear-gradient(112deg, ${startColor} 0%, ${stopColor} 100%)`,
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/anatomy-icons/src/index.ts:
--------------------------------------------------------------------------------
1 | export { allComponents, getComponent } from "./components"
2 | export type { ComponentAnatomyName } from "./components"
3 | export { createGradient } from "./create-gradient"
4 | export { createPalette } from "./create-palette"
5 |
--------------------------------------------------------------------------------
/packages/anatomy-icons/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "jsx": "react-jsx",
6 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/anatomy/src/index.ts:
--------------------------------------------------------------------------------
1 | export { createAnatomy } from "./create-anatomy"
2 | export type { Anatomy, AnatomyPart, AnatomyInstance, AnatomyPartName } from "./create-anatomy"
3 |
--------------------------------------------------------------------------------
/packages/anatomy/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/core/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./merge-props"
2 | export * from "./memo"
3 | export * from "./create-machine"
4 | export * from "./types"
5 | export * from "./scope"
6 |
--------------------------------------------------------------------------------
/packages/core/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "include": ["src", "tests"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/docs/README.md:
--------------------------------------------------------------------------------
1 | # API Documentation for all machines
2 |
3 | This directory contains the API documentation for all machines.
4 |
--------------------------------------------------------------------------------
/packages/docs/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/frameworks/preact/src/index.ts:
--------------------------------------------------------------------------------
1 | export { mergeProps } from "@zag-js/core"
2 | export * from "./machine"
3 | export * from "./normalize-props"
4 | export * from "./portal"
5 |
--------------------------------------------------------------------------------
/packages/frameworks/preact/src/refs.ts:
--------------------------------------------------------------------------------
1 | import { useRef } from "preact/hooks"
2 |
3 | export function useRefs(refs: T) {
4 | const ref = useRef(refs)
5 | return {
6 | get(key: K): T[K] {
7 | return ref.current[key]
8 | },
9 | set(key: K, value: T[K]) {
10 | ref.current[key] = value
11 | },
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/frameworks/preact/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "jsx": "preserve",
6 | "jsxImportSource": "preact",
7 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/packages/frameworks/preact/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "tsup"
2 | import rootConfig from "../../../tsup.config"
3 |
4 | export default defineConfig({
5 | ...rootConfig,
6 | })
7 |
--------------------------------------------------------------------------------
/packages/frameworks/react/src/index.ts:
--------------------------------------------------------------------------------
1 | export { mergeProps } from "@zag-js/core"
2 | export * from "./machine"
3 | export * from "./normalize-props"
4 | export * from "./portal"
5 |
--------------------------------------------------------------------------------
/packages/frameworks/react/src/refs.ts:
--------------------------------------------------------------------------------
1 | import { useRef } from "react"
2 |
3 | export function useRefs(refs: T) {
4 | const ref = useRef(refs)
5 | return {
6 | get(key: K): T[K] {
7 | return ref.current[key]
8 | },
9 | set(key: K, value: T[K]) {
10 | ref.current[key] = value
11 | },
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/frameworks/react/src/use-layout-effect.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useLayoutEffect } from "react"
2 |
3 | export const useSafeLayoutEffect = typeof globalThis.document !== "undefined" ? useLayoutEffect : useEffect
4 |
--------------------------------------------------------------------------------
/packages/frameworks/react/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src", "tests"],
4 | "compilerOptions": {
5 | "jsx": "react-jsx",
6 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/frameworks/react/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "tsup"
2 | import { readFileSync, writeFileSync } from "fs"
3 | import rootConfig from "../../../tsup.config"
4 |
5 | export default defineConfig({
6 | ...rootConfig,
7 | async onSuccess() {
8 | const files = ["dist/index.mjs", "dist/index.js"]
9 | for (const file of files) {
10 | const content = readFileSync(file, "utf8")
11 | writeFileSync(file, `"use client";\n\n${content}`)
12 | }
13 | },
14 | })
15 |
--------------------------------------------------------------------------------
/packages/frameworks/react/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vitest/config"
2 |
3 | export default defineConfig({
4 | test: {
5 | retry: 2,
6 | globals: true,
7 | environment: "jsdom",
8 | css: false,
9 | setupFiles: "./vitest.setup.ts",
10 | },
11 | })
12 |
--------------------------------------------------------------------------------
/packages/frameworks/react/vitest.setup.ts:
--------------------------------------------------------------------------------
1 | import "@testing-library/jest-dom/vitest"
2 | import { JSDOM } from "jsdom"
3 |
4 | const { window } = new JSDOM()
5 |
6 | // @ts-ignore
7 | window.requestAnimationFrame = (cb: VoidFunction) => setTimeout(cb, 1000 / 60)
8 |
9 | Object.assign(global, { window, document: window.document })
10 |
--------------------------------------------------------------------------------
/packages/frameworks/solid/src/index.ts:
--------------------------------------------------------------------------------
1 | export { Key } from "@solid-primitives/keyed"
2 | export * from "./machine"
3 | export { mergeProps } from "./merge-props"
4 | export * from "./normalize-props"
5 |
--------------------------------------------------------------------------------
/packages/frameworks/solid/src/refs.ts:
--------------------------------------------------------------------------------
1 | import { createSignal } from "solid-js"
2 |
3 | export function createRefs(refs: T) {
4 | const [ref, setRef] = createSignal(refs)
5 | return {
6 | get(key: K): T[K] {
7 | return ref()[key]
8 | },
9 | set(key: K, value: T[K]) {
10 | setRef((prev) => ({ ...prev, [key]: value }))
11 | },
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/frameworks/solid/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src", "tests"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/frameworks/solid/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vitest/config"
2 |
3 | export default defineConfig({
4 | test: {
5 | retry: 2,
6 | globals: true,
7 | environment: "jsdom",
8 | css: false,
9 | setupFiles: "./vitest.setup.ts",
10 | },
11 | })
12 |
--------------------------------------------------------------------------------
/packages/frameworks/solid/vitest.setup.ts:
--------------------------------------------------------------------------------
1 | import "@testing-library/jest-dom/vitest"
2 | import { JSDOM } from "jsdom"
3 |
4 | const { window } = new JSDOM()
5 |
6 | // @ts-ignore
7 | window.requestAnimationFrame = (cb: VoidFunction) => setTimeout(cb, 1000 / 60)
8 |
9 | Object.assign(global, { window, document: window.document })
10 |
--------------------------------------------------------------------------------
/packages/frameworks/svelte/clean-package.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "replace": {
3 | "exports": {
4 | ".": {
5 | "types": "./dist/index.d.ts",
6 | "svelte": "./dist/index.js"
7 | },
8 | "./package.json": "./package.json"
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/frameworks/svelte/src/index.ts:
--------------------------------------------------------------------------------
1 | export { mergeProps } from "./merge-props"
2 | export { normalizeProps } from "./normalize-props.js"
3 | export type { PropTypes } from "./normalize-props.js"
4 | export { portal } from "./portal.js"
5 | export { reflect } from "./reflect.js"
6 | export { useMachine } from "./machine.svelte"
7 |
--------------------------------------------------------------------------------
/packages/frameworks/svelte/src/reflect.ts:
--------------------------------------------------------------------------------
1 | type AnyFunction = (...args: any[]) => any
2 | const isFunction = (value: any): value is AnyFunction => typeof value === "function"
3 |
4 | export function reflect>(obj: () => T): T {
5 | return new Proxy(obj() as T, {
6 | get(_, prop) {
7 | const target = obj()
8 | let value = Reflect.get(target, prop)
9 | // @ts-ignore
10 | return isFunction(value) ? value.bind(target) : value
11 | },
12 | })
13 | }
14 |
--------------------------------------------------------------------------------
/packages/frameworks/svelte/src/refs.svelte.ts:
--------------------------------------------------------------------------------
1 | export function useRefs(refs: T) {
2 | const ref = $state({ current: refs })
3 | return {
4 | get(key: K): T[K] {
5 | return ref.current[key]
6 | },
7 | set(key: K, value: T[K]) {
8 | ref.current[key] = value
9 | },
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/frameworks/svelte/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src", "tests"],
4 | "compilerOptions": {
5 | "jsx": "preserve",
6 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/frameworks/svelte/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vitest/config"
2 |
3 | export default defineConfig({
4 | test: {
5 | globals: true,
6 | },
7 | })
8 |
--------------------------------------------------------------------------------
/packages/frameworks/vue/src/index.ts:
--------------------------------------------------------------------------------
1 | export { mergeProps } from "@zag-js/core"
2 | export * from "./normalize-props"
3 | export * from "./machine"
4 |
--------------------------------------------------------------------------------
/packages/frameworks/vue/src/refs.ts:
--------------------------------------------------------------------------------
1 | import { ref } from "vue"
2 |
3 | export function useRefs(refs: T) {
4 | const __refs = ref(refs)
5 | return {
6 | get(key: K): T[K] {
7 | return __refs.value[key]
8 | },
9 | set(key: K, value: T[K]) {
10 | __refs.value[key] = value
11 | },
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/frameworks/vue/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "jsx": "preserve",
6 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/machines/accordion/src/accordion.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("accordion").parts("root", "item", "itemTrigger", "itemContent", "itemIndicator")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/accordion/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./accordion.anatomy"
2 | export { connect } from "./accordion.connect"
3 | export { machine } from "./accordion.machine"
4 | export * from "./accordion.props"
5 | export type {
6 | AccordionApi as Api,
7 | ElementIds,
8 | FocusChangeDetails,
9 | ItemProps,
10 | ItemState,
11 | AccordionMachine as Machine,
12 | AccordionProps as Props,
13 | AccordionService as Service,
14 | ValueChangeDetails,
15 | } from "./accordion.types"
16 |
--------------------------------------------------------------------------------
/packages/machines/accordion/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/angle-slider/src/angle-slider.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("angle-slider").parts(
4 | "root",
5 | "label",
6 | "thumb",
7 | "valueText",
8 | "control",
9 | "track",
10 | "markerGroup",
11 | "marker",
12 | )
13 |
14 | export const parts = anatomy.build()
15 |
--------------------------------------------------------------------------------
/packages/machines/angle-slider/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./angle-slider.anatomy"
2 | export { connect } from "./angle-slider.connect"
3 | export { machine } from "./angle-slider.machine"
4 | export * from "./angle-slider.props"
5 | export type {
6 | AngleSliderApi as Api,
7 | ElementIds,
8 | AngleSliderMachine as Machine,
9 | MarkerProps,
10 | AngleSliderProps as Props,
11 | AngleSliderService as Service,
12 | ValueChangeDetails,
13 | } from "./angle-slider.types"
14 |
--------------------------------------------------------------------------------
/packages/machines/angle-slider/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/avatar/src/avatar.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("avatar").parts("root", "image", "fallback")
4 |
5 | export const parts = anatomy.build()
6 |
--------------------------------------------------------------------------------
/packages/machines/avatar/src/avatar.dom.ts:
--------------------------------------------------------------------------------
1 | import type { Scope } from "@zag-js/core"
2 |
3 | export const getRootId = (ctx: Scope) => ctx.ids?.root ?? `avatar:${ctx.id}`
4 | export const getImageId = (ctx: Scope) => ctx.ids?.image ?? `avatar:${ctx.id}:image`
5 | export const getFallbackId = (ctx: Scope) => ctx.ids?.fallback ?? `avatar:${ctx.id}:fallback`
6 |
7 | export const getRootEl = (ctx: Scope) => ctx.getById(getRootId(ctx))
8 | export const getImageEl = (ctx: Scope) => ctx.getById(getImageId(ctx))
9 |
--------------------------------------------------------------------------------
/packages/machines/avatar/src/avatar.props.ts:
--------------------------------------------------------------------------------
1 | import { createProps } from "@zag-js/types"
2 | import { createSplitProps } from "@zag-js/utils"
3 | import type { AvatarProps } from "./avatar.types"
4 |
5 | export const props = createProps()(["dir", "id", "ids", "onStatusChange", "getRootNode"])
6 | export const splitProps = createSplitProps>(props)
7 |
--------------------------------------------------------------------------------
/packages/machines/avatar/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./avatar.anatomy"
2 | export { connect } from "./avatar.connect"
3 | export { machine } from "./avatar.machine"
4 | export * from "./avatar.props"
5 | export type {
6 | AvatarApi as Api,
7 | ElementIds,
8 | LoadStatus,
9 | AvatarMachine as Machine,
10 | AvatarProps as Props,
11 | AvatarService as Service,
12 | StatusChangeDetails,
13 | } from "./avatar.types"
14 |
--------------------------------------------------------------------------------
/packages/machines/avatar/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/carousel/src/carousel.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("carousel").parts(
4 | "root",
5 | "itemGroup",
6 | "item",
7 | "control",
8 | "nextTrigger",
9 | "prevTrigger",
10 | "indicatorGroup",
11 | "indicator",
12 | "autoplayTrigger",
13 | )
14 |
15 | export const parts = anatomy.build()
16 |
--------------------------------------------------------------------------------
/packages/machines/carousel/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/checkbox/src/checkbox.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("checkbox").parts("root", "label", "control", "indicator")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/checkbox/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./checkbox.anatomy"
2 | export { connect } from "./checkbox.connect"
3 | export { machine } from "./checkbox.machine"
4 | export * from "./checkbox.props"
5 | export type {
6 | CheckboxApi as Api,
7 | CheckboxMachine as Machine,
8 | CheckboxProps as Props,
9 | CheckboxSchema as Schema,
10 | CheckedChangeDetails,
11 | CheckedState,
12 | ElementIds,
13 | } from "./checkbox.types"
14 |
--------------------------------------------------------------------------------
/packages/machines/checkbox/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/clipboard/src/clipboard.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("clipboard").parts("root", "control", "trigger", "indicator", "input", "label")
4 |
5 | export const parts = anatomy.build()
6 |
--------------------------------------------------------------------------------
/packages/machines/clipboard/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/collapsible/src/collapsible.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("collapsible").parts("root", "trigger", "content", "indicator")
4 |
5 | export const parts = anatomy.build()
6 |
--------------------------------------------------------------------------------
/packages/machines/collapsible/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./collapsible.anatomy"
2 | export { connect } from "./collapsible.connect"
3 | export { machine } from "./collapsible.machine"
4 | export * from "./collapsible.props"
5 | export type {
6 | CollapsibleApi as Api,
7 | ElementIds,
8 | CollapsibleMachine as Machine,
9 | OpenChangeDetails,
10 | CollapsibleProps as Props,
11 | CollapsibleService as Service,
12 | } from "./collapsible.types"
13 |
--------------------------------------------------------------------------------
/packages/machines/collapsible/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/color-picker/src/color-picker.parse.ts:
--------------------------------------------------------------------------------
1 | import { parseColor, type Color } from "@zag-js/color-utils"
2 |
3 | export const parse = (colorString: string): Color => {
4 | return parseColor(colorString)
5 | }
6 |
--------------------------------------------------------------------------------
/packages/machines/color-picker/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/combobox/src/combobox.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("combobox").parts(
4 | "root",
5 | "clearTrigger",
6 | "content",
7 | "control",
8 | "input",
9 | "item",
10 | "itemGroup",
11 | "itemGroupLabel",
12 | "itemIndicator",
13 | "itemText",
14 | "label",
15 | "list",
16 | "positioner",
17 | "trigger",
18 | )
19 | export const parts = anatomy.build()
20 |
--------------------------------------------------------------------------------
/packages/machines/combobox/src/combobox.collection.ts:
--------------------------------------------------------------------------------
1 | import { ListCollection, type CollectionItem, type CollectionOptions } from "@zag-js/collection"
2 |
3 | export const collection = (options: CollectionOptions): ListCollection => {
4 | return new ListCollection(options)
5 | }
6 |
7 | collection.empty = (): ListCollection => {
8 | return new ListCollection({ items: [] })
9 | }
10 |
--------------------------------------------------------------------------------
/packages/machines/combobox/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/date-picker/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/dialog/src/dialog.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("dialog").parts(
4 | "trigger",
5 | "backdrop",
6 | "positioner",
7 | "content",
8 | "title",
9 | "description",
10 | "closeTrigger",
11 | )
12 |
13 | export const parts = anatomy.build()
14 |
--------------------------------------------------------------------------------
/packages/machines/dialog/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/editable/src/editable.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("editable").parts(
4 | "root",
5 | "area",
6 | "label",
7 | "preview",
8 | "input",
9 | "editTrigger",
10 | "submitTrigger",
11 | "cancelTrigger",
12 | "control",
13 | )
14 | export const parts = anatomy.build()
15 |
--------------------------------------------------------------------------------
/packages/machines/editable/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/file-upload/src/file-upload.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("file-upload").parts(
4 | "root",
5 | "dropzone",
6 | "item",
7 | "itemDeleteTrigger",
8 | "itemGroup",
9 | "itemName",
10 | "itemPreview",
11 | "itemPreviewImage",
12 | "itemSizeText",
13 | "label",
14 | "trigger",
15 | "clearTrigger",
16 | )
17 |
18 | export const parts = anatomy.build()
19 |
--------------------------------------------------------------------------------
/packages/machines/file-upload/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/floating-panel/src/floating-panel.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("floating-panel").parts(
4 | "trigger",
5 | "positioner",
6 | "content",
7 | "header",
8 | "body",
9 | "title",
10 | "resizeTrigger",
11 | "dragTrigger",
12 | "stageTrigger",
13 | "closeTrigger",
14 | "control",
15 | )
16 |
17 | export const parts = anatomy.build()
18 |
--------------------------------------------------------------------------------
/packages/machines/floating-panel/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/hover-card/src/hover-card.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("hoverCard").parts("arrow", "arrowTip", "trigger", "positioner", "content")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/hover-card/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/listbox/src/listbox.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("listbox").parts(
4 | "label",
5 | "input",
6 | "item",
7 | "itemText",
8 | "itemIndicator",
9 | "itemGroup",
10 | "itemGroupLabel",
11 | "content",
12 | "root",
13 | "valueText",
14 | )
15 | export const parts = anatomy.build()
16 |
--------------------------------------------------------------------------------
/packages/machines/listbox/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/menu/src/menu.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("menu").parts(
4 | "arrow",
5 | "arrowTip",
6 | "content",
7 | "contextTrigger",
8 | "indicator",
9 | "item",
10 | "itemGroup",
11 | "itemGroupLabel",
12 | "itemIndicator",
13 | "itemText",
14 | "positioner",
15 | "separator",
16 | "trigger",
17 | "triggerItem",
18 | )
19 | export const parts = anatomy.build()
20 |
--------------------------------------------------------------------------------
/packages/machines/menu/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/navigation-menu/src/navigation-menu.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("navigation-menu").parts(
4 | "root",
5 | "viewportPositioner",
6 | "viewport",
7 | "trigger",
8 | "content",
9 | "list",
10 | "item",
11 | "link",
12 | "indicator",
13 | "indicatorTrack",
14 | "arrow",
15 | )
16 |
17 | export const parts = anatomy.build()
18 |
--------------------------------------------------------------------------------
/packages/machines/navigation-menu/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/number-input/src/number-input.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("numberInput").parts(
4 | "root",
5 | "label",
6 | "input",
7 | "control",
8 | "valueText",
9 | "incrementTrigger",
10 | "decrementTrigger",
11 | "scrubber",
12 | )
13 |
14 | export const parts = anatomy.build()
15 |
--------------------------------------------------------------------------------
/packages/machines/number-input/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/pagination/src/pagination.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("pagination").parts("root", "item", "ellipsis", "prevTrigger", "nextTrigger")
4 |
5 | export const parts = anatomy.build()
6 |
--------------------------------------------------------------------------------
/packages/machines/pagination/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/password-input/src/password-input.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("password-input").parts(
4 | "root",
5 | "input",
6 | "label",
7 | "control",
8 | "indicator",
9 | "visibilityTrigger",
10 | )
11 |
12 | export const parts = anatomy.build()
13 |
--------------------------------------------------------------------------------
/packages/machines/password-input/src/password-input.dom.ts:
--------------------------------------------------------------------------------
1 | import type { Scope } from "@zag-js/core"
2 |
3 | export const getRootId = (ctx: Scope) => ctx.ids?.root ?? `p-input-${ctx.id}`
4 | export const getInputId = (ctx: Scope) => ctx.ids?.input ?? `p-input-${ctx.id}-input`
5 |
6 | export const getInputEl = (ctx: Scope) => ctx.getById(getInputId(ctx))
7 |
--------------------------------------------------------------------------------
/packages/machines/password-input/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/pin-input/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./pin-input.anatomy"
2 | export { connect } from "./pin-input.connect"
3 | export { machine } from "./pin-input.machine"
4 | export * from "./pin-input.props"
5 | export type {
6 | PinInputApi as Api,
7 | PinInputProps as Props,
8 | PinInputService as Service,
9 | PinInputMachine as Machine,
10 | ElementIds,
11 | InputProps,
12 | IntlTranslations,
13 | ValueChangeDetails,
14 | ValueInvalidDetails,
15 | } from "./pin-input.types"
16 |
--------------------------------------------------------------------------------
/packages/machines/pin-input/src/pin-input.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("pinInput").parts("root", "label", "input", "control")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/pin-input/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/popover/src/popover.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("popover").parts(
4 | "arrow",
5 | "arrowTip",
6 | "anchor",
7 | "trigger",
8 | "indicator",
9 | "positioner",
10 | "content",
11 | "title",
12 | "description",
13 | "closeTrigger",
14 | )
15 |
16 | export const parts = anatomy.build()
17 |
--------------------------------------------------------------------------------
/packages/machines/popover/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/presence/src/index.ts:
--------------------------------------------------------------------------------
1 | export { connect } from "./presence.connect"
2 | export { machine } from "./presence.machine"
3 | export * from "./presence.props"
4 | export type {
5 | PresenceApi as Api,
6 | PresenceMachine as Machine,
7 | PresenceProps as Props,
8 | PresenceService as Service,
9 | } from "./presence.types"
10 |
--------------------------------------------------------------------------------
/packages/machines/presence/src/presence.props.ts:
--------------------------------------------------------------------------------
1 | import { createProps } from "@zag-js/types"
2 | import type { PresenceProps } from "./presence.types"
3 |
4 | export const props = createProps()(["onExitComplete", "present", "immediate"])
5 |
--------------------------------------------------------------------------------
/packages/machines/presence/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/progress/src/progress.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("progress").parts(
4 | "root",
5 | "label",
6 | "track",
7 | "range",
8 | "valueText",
9 | "view",
10 | "circle",
11 | "circleTrack",
12 | "circleRange",
13 | )
14 |
15 | export const parts = anatomy.build()
16 |
--------------------------------------------------------------------------------
/packages/machines/progress/src/progress.dom.ts:
--------------------------------------------------------------------------------
1 | import type { Scope } from "@zag-js/core"
2 |
3 | export const getRootId = (ctx: Scope) => ctx.ids?.root ?? `progress-${ctx.id}`
4 | export const getTrackId = (ctx: Scope) => ctx.ids?.track ?? `progress-${ctx.id}-track`
5 | export const getLabelId = (ctx: Scope) => ctx.ids?.label ?? `progress-${ctx.id}-label`
6 | export const getCircleId = (ctx: Scope) => ctx.ids?.circle ?? `progress-${ctx.id}-circle`
7 |
--------------------------------------------------------------------------------
/packages/machines/progress/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/qr-code/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./qr-code.anatomy"
2 | export { connect } from "./qr-code.connect"
3 | export { machine } from "./qr-code.machine"
4 | export * from "./qr-code.props"
5 | export type {
6 | QrCodeApi as Api,
7 | QrCodeProps as Props,
8 | DownloadTriggerProps,
9 | ElementIds,
10 | QrCodeGenerateOptions,
11 | QrCodeGenerateResult,
12 | QrCodeService as Service,
13 | QrCodeMachine as Machine,
14 | ValueChangeDetails,
15 | } from "./qr-code.types"
16 |
--------------------------------------------------------------------------------
/packages/machines/qr-code/src/qr-code.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("qr-code").parts("root", "frame", "pattern", "overlay", "downloadTrigger")
4 |
5 | export const parts = anatomy.build()
6 |
--------------------------------------------------------------------------------
/packages/machines/qr-code/src/qr-code.dom.ts:
--------------------------------------------------------------------------------
1 | import type { Scope } from "@zag-js/core"
2 |
3 | export const getRootId = (scope: Scope) => scope.ids?.root ?? `qrcode:${scope.id}:root`
4 | export const getFrameId = (scope: Scope) => scope.ids?.frame ?? `qrcode:${scope.id}:frame`
5 | export const getFrameEl = (scope: Scope) => scope.getById(getFrameId(scope))
6 |
--------------------------------------------------------------------------------
/packages/machines/qr-code/src/qr-code.props.ts:
--------------------------------------------------------------------------------
1 | import { createProps } from "@zag-js/types"
2 | import { createSplitProps } from "@zag-js/utils"
3 | import type { QrCodeProps } from "./qr-code.types"
4 |
5 | export const props = createProps()([
6 | "ids",
7 | "defaultValue",
8 | "value",
9 | "id",
10 | "encoding",
11 | "dir",
12 | "getRootNode",
13 | "onValueChange",
14 | "pixelSize",
15 | ])
16 |
17 | export const splitProps = createSplitProps>(props)
18 |
--------------------------------------------------------------------------------
/packages/machines/qr-code/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/radio-group/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./radio-group.anatomy"
2 | export { connect } from "./radio-group.connect"
3 | export { machine } from "./radio-group.machine"
4 | export * from "./radio-group.props"
5 | export type {
6 | RadioGroupApi as Api,
7 | ElementIds,
8 | ItemProps,
9 | ItemState,
10 | RadioGroupProps as Props,
11 | RadioGroupService as Service,
12 | RadioGroupMachine as Machine,
13 | ValueChangeDetails,
14 | } from "./radio-group.types"
15 |
--------------------------------------------------------------------------------
/packages/machines/radio-group/src/radio-group.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("radio-group").parts(
4 | "root",
5 | "label",
6 | "item",
7 | "itemText",
8 | "itemControl",
9 | "indicator",
10 | )
11 |
12 | export const parts = anatomy.build()
13 |
--------------------------------------------------------------------------------
/packages/machines/radio-group/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/rating-group/src/rating-group.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("rating-group").parts("root", "label", "item", "control")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/rating-group/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/select/src/select.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("select").parts(
4 | "label",
5 | "positioner",
6 | "trigger",
7 | "indicator",
8 | "clearTrigger",
9 | "item",
10 | "itemText",
11 | "itemIndicator",
12 | "itemGroup",
13 | "itemGroupLabel",
14 | "list",
15 | "content",
16 | "root",
17 | "control",
18 | "valueText",
19 | )
20 | export const parts = anatomy.build()
21 |
--------------------------------------------------------------------------------
/packages/machines/select/src/select.collection.ts:
--------------------------------------------------------------------------------
1 | import { ListCollection, type CollectionItem, type CollectionOptions } from "@zag-js/collection"
2 |
3 | export const collection = (options: CollectionOptions): ListCollection => {
4 | return new ListCollection(options)
5 | }
6 |
7 | collection.empty = (): ListCollection => {
8 | return new ListCollection({ items: [] })
9 | }
10 |
--------------------------------------------------------------------------------
/packages/machines/select/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/signature-pad/src/signature-pad.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("signature-pad").parts(
4 | "root",
5 | "control",
6 | "segment",
7 | "segmentPath",
8 | "guide",
9 | "clearTrigger",
10 | "label",
11 | )
12 |
13 | export const parts = anatomy.build()
14 |
--------------------------------------------------------------------------------
/packages/machines/signature-pad/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/slider/src/slider.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("slider").parts(
4 | "root",
5 | "label",
6 | "thumb",
7 | "valueText",
8 | "track",
9 | "range",
10 | "control",
11 | "markerGroup",
12 | "marker",
13 | "draggingIndicator",
14 | )
15 |
16 | export const parts = anatomy.build()
17 |
--------------------------------------------------------------------------------
/packages/machines/slider/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/splitter/src/splitter.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("splitter").parts("root", "panel", "resizeTrigger")
4 |
5 | export const parts = anatomy.build()
6 |
--------------------------------------------------------------------------------
/packages/machines/splitter/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/steps/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./steps.anatomy"
2 | export { connect } from "./steps.connect"
3 | export { machine } from "./steps.machine"
4 | export * from "./steps.props"
5 | export type {
6 | StepsApi as Api,
7 | StepsProps as Props,
8 | ElementIds,
9 | ItemProps,
10 | ItemState,
11 | StepsMachine as Machine,
12 | StepsService as Service,
13 | StepChangeDetails,
14 | } from "./steps.types"
15 |
--------------------------------------------------------------------------------
/packages/machines/steps/src/steps.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("steps").parts(
4 | "root",
5 | "list",
6 | "item",
7 | "trigger",
8 | "indicator",
9 | "separator",
10 | "content",
11 | "nextTrigger",
12 | "prevTrigger",
13 | "progress",
14 | )
15 |
16 | export const parts = anatomy.build()
17 |
--------------------------------------------------------------------------------
/packages/machines/steps/src/steps.dom.ts:
--------------------------------------------------------------------------------
1 | import type { Scope } from "@zag-js/core"
2 |
3 | export const getRootId = (ctx: Scope) => ctx.ids?.root ?? `steps:${ctx.id}`
4 | export const getListId = (ctx: Scope) => ctx.ids?.list ?? `steps:${ctx.id}:list`
5 | export const getTriggerId = (ctx: Scope, index: number) =>
6 | ctx.ids?.triggerId?.(index) ?? `steps:${ctx.id}:trigger:${index}`
7 | export const getContentId = (ctx: Scope, index: number) =>
8 | ctx.ids?.contentId?.(index) ?? `steps:${ctx.id}:content:${index}`
9 |
--------------------------------------------------------------------------------
/packages/machines/steps/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/switch/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./switch.anatomy"
2 | export { connect } from "./switch.connect"
3 | export { machine } from "./switch.machine"
4 | export * from "./switch.props"
5 | export type {
6 | CheckedChangeDetails,
7 | ElementIds,
8 | SwitchApi as Api,
9 | SwitchProps as Props,
10 | SwitchService as Service,
11 | } from "./switch.types"
12 |
--------------------------------------------------------------------------------
/packages/machines/switch/src/switch.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("switch").parts("root", "label", "control", "thumb")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/switch/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/tabs/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./tabs.anatomy"
2 | export { connect } from "./tabs.connect"
3 | export { machine } from "./tabs.machine"
4 | export * from "./tabs.props"
5 | export type {
6 | TabsApi as Api,
7 | ContentProps,
8 | TabsProps as Props,
9 | ElementIds,
10 | FocusChangeDetails,
11 | IntlTranslations,
12 | NavigateDetails,
13 | TabsMachine as Machine,
14 | TabsService as Service,
15 | TriggerProps,
16 | ValueChangeDetails,
17 | } from "./tabs.types"
18 |
--------------------------------------------------------------------------------
/packages/machines/tabs/src/tabs.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("tabs").parts("root", "list", "trigger", "content", "indicator")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/tabs/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/tags-input/src/tags-input.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("tagsInput").parts(
4 | "root",
5 | "label",
6 | "control",
7 | "input",
8 | "clearTrigger",
9 | "item",
10 | "itemPreview",
11 | "itemInput",
12 | "itemText",
13 | "itemDeleteTrigger",
14 | )
15 |
16 | export const parts = anatomy.build()
17 |
--------------------------------------------------------------------------------
/packages/machines/tags-input/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/time-picker/src/time-picker.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("time-picker").parts(
4 | "cell",
5 | "clearTrigger",
6 | "column",
7 | "content",
8 | "control",
9 | "input",
10 | "label",
11 | "positioner",
12 | "root",
13 | "spacer",
14 | "trigger",
15 | )
16 |
17 | export const parts = anatomy.build()
18 |
--------------------------------------------------------------------------------
/packages/machines/time-picker/src/time-picker.parse.ts:
--------------------------------------------------------------------------------
1 | import { Time } from "@internationalized/date"
2 |
3 | interface TimeSegment {
4 | hour: number
5 | minute: number
6 | second: number
7 | millisecond: number
8 | }
9 |
10 | export function parse(value: Partial): Time {
11 | return new Time(value.hour, value.minute, value.second, value.millisecond)
12 | }
13 |
--------------------------------------------------------------------------------
/packages/machines/time-picker/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/timer/src/timer.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("timer").parts(
4 | "root",
5 | "area",
6 | "control",
7 | "item",
8 | "itemValue",
9 | "itemLabel",
10 | "actionTrigger",
11 | "separator",
12 | )
13 |
14 | export const parts = anatomy.build()
15 |
--------------------------------------------------------------------------------
/packages/machines/timer/src/timer.dom.ts:
--------------------------------------------------------------------------------
1 | import type { Scope } from "@zag-js/core"
2 |
3 | export const getRootId = (ctx: Scope) => ctx.ids?.root ?? `timer:${ctx.id}:root`
4 | export const getAreaId = (ctx: Scope) => ctx.ids?.area ?? `timer:${ctx.id}:area`
5 | export const getAreaEl = (ctx: Scope) => ctx.getById(getAreaId(ctx))
6 |
--------------------------------------------------------------------------------
/packages/machines/timer/src/timer.props.ts:
--------------------------------------------------------------------------------
1 | import { createProps } from "@zag-js/types"
2 | import { createSplitProps } from "@zag-js/utils"
3 | import type { TimerProps } from "./timer.types"
4 |
5 | export const props = createProps()([
6 | "autoStart",
7 | "countdown",
8 | "getRootNode",
9 | "id",
10 | "ids",
11 | "interval",
12 | "onComplete",
13 | "onTick",
14 | "startMs",
15 | "targetMs",
16 | ])
17 |
18 | export const splitProps = createSplitProps>(props)
19 |
--------------------------------------------------------------------------------
/packages/machines/timer/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/toast/src/toast.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("toast").parts(
4 | "group",
5 | "root",
6 | "title",
7 | "description",
8 | "actionTrigger",
9 | "closeTrigger",
10 | )
11 |
12 | export const parts = anatomy.build()
13 |
--------------------------------------------------------------------------------
/packages/machines/toast/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/toggle-group/src/toggle-group.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("toggle-group").parts("root", "item")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/toggle-group/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/toggle/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./toggle.anatomy"
2 | export { connect } from "./toggle.connect"
3 | export { machine } from "./toggle.machine"
4 | export * from "./toggle.props"
5 | export type {
6 | ToggleProps as Props,
7 | ToggleApi as Api,
8 | ToggleService as Service,
9 | ToggleSchema as Schema,
10 | ToggleMachine as Machine,
11 | } from "./toggle.types"
12 |
--------------------------------------------------------------------------------
/packages/machines/toggle/src/toggle.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("toggle", ["root", "indicator"])
4 |
5 | export const parts = anatomy.build()
6 |
--------------------------------------------------------------------------------
/packages/machines/toggle/src/toggle.props.ts:
--------------------------------------------------------------------------------
1 | import { createProps } from "@zag-js/types"
2 | import { createSplitProps } from "@zag-js/utils"
3 | import type { ToggleProps } from "./toggle.types"
4 |
5 | export const props = createProps()(["defaultPressed", "pressed", "onPressedChange", "disabled"])
6 | export const splitProps = createSplitProps>(props)
7 |
--------------------------------------------------------------------------------
/packages/machines/toggle/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/tooltip/src/index.ts:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./tooltip.anatomy"
2 | export { connect } from "./tooltip.connect"
3 | export { machine } from "./tooltip.machine"
4 | export * from "./tooltip.props"
5 | export type {
6 | TooltipApi as Api,
7 | ElementIds,
8 | OpenChangeDetails,
9 | Placement,
10 | PositioningOptions,
11 | TooltipMachine as Machine,
12 | TooltipProps as Props,
13 | TooltipService as Service,
14 | } from "./tooltip.types"
15 |
--------------------------------------------------------------------------------
/packages/machines/tooltip/src/tooltip.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("tooltip").parts("trigger", "arrow", "arrowTip", "positioner", "content")
4 | export const parts = anatomy.build()
5 |
--------------------------------------------------------------------------------
/packages/machines/tooltip/src/tooltip.store.ts:
--------------------------------------------------------------------------------
1 | import { proxy } from "@zag-js/store"
2 |
3 | export const store = proxy<{ id: string | null }>({ id: null })
4 |
--------------------------------------------------------------------------------
/packages/machines/tooltip/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/tour/src/tour.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("tour").parts(
4 | "content",
5 | "actionTrigger",
6 | "closeTrigger",
7 | "progressText",
8 | "title",
9 | "description",
10 | "positioner",
11 | "arrow",
12 | "arrowTip",
13 | "backdrop",
14 | "spotlight",
15 | )
16 |
17 | export const parts = anatomy.build()
18 |
--------------------------------------------------------------------------------
/packages/machines/tour/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/machines/tree-view/src/tree-view.anatomy.ts:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("tree-view").parts(
4 | "root",
5 | "label",
6 | "tree",
7 | "item",
8 | "itemIndicator",
9 | "itemText",
10 | "branch",
11 | "branchControl",
12 | "branchTrigger",
13 | "branchContent",
14 | "branchText",
15 | "branchIndicator",
16 | "branchIndentGuide",
17 | )
18 |
19 | export const parts = anatomy.build()
20 |
--------------------------------------------------------------------------------
/packages/machines/tree-view/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/store/README.md:
--------------------------------------------------------------------------------
1 | # @zag-js/store
2 |
3 | The reactive store package for zag machines
4 |
5 | ## Installation
6 |
7 | ```sh
8 | yarn add @zag-js/store
9 | # or
10 | npm i @zag-js/store
11 | ```
12 |
13 | ## Contribution
14 |
15 | Yes please! See the [contributing guidelines](https://github.com/chakra-ui/zag/blob/main/CONTRIBUTING.md) for details.
16 |
17 | ## Licence
18 |
19 | This project is licensed under the terms of the [MIT license](https://github.com/chakra-ui/zag/blob/main/LICENSE).
20 |
--------------------------------------------------------------------------------
/packages/store/src/index.ts:
--------------------------------------------------------------------------------
1 | export { clone } from "./clone"
2 | export { globalRef } from "./global"
3 | export { proxy, ref, snapshot, subscribe, type Ref, type Snapshot } from "./proxy"
4 | export { proxyWithComputed } from "./proxy-computed"
5 |
--------------------------------------------------------------------------------
/packages/store/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/types/src/create-props.ts:
--------------------------------------------------------------------------------
1 | type StrictKeys = K extends (keyof T)[]
2 | ? [keyof T] extends [K[number]]
3 | ? unknown
4 | : `Missing required keys: ${Exclude}`
5 | : never
6 |
7 | export const createProps =
8 | >() =>
9 | (props: K & StrictKeys) =>
10 | Array.from(new Set(props))
11 |
--------------------------------------------------------------------------------
/packages/types/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/aria-hidden/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/auto-resize/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./autoresize-input"
2 | export * from "./autoresize-textarea"
3 |
--------------------------------------------------------------------------------
/packages/utilities/auto-resize/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/collection/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src", "tests"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/color-utils/src/index.ts:
--------------------------------------------------------------------------------
1 | export { getColorAreaGradient } from "./area-gradient"
2 | export { Color } from "./color"
3 | export { normalizeColor, parseColor } from "./parse-color"
4 | export type { ColorAxes, ColorChannel, ColorChannelRange, ColorFormat, ColorStringFormat, ColorType } from "./types"
5 |
--------------------------------------------------------------------------------
/packages/utilities/color-utils/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/core/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./array"
2 | export * from "./equal"
3 | export * from "./functions"
4 | export * from "./guard"
5 | export * from "./number"
6 | export * from "./object"
7 | export * from "./timers"
8 | export * from "./warning"
9 |
--------------------------------------------------------------------------------
/packages/utilities/core/tests/number.test.ts:
--------------------------------------------------------------------------------
1 | import { decrementValue, incrementValue } from "../src"
2 |
3 | describe("number", () => {
4 | test("increment", () => {
5 | expect(incrementValue(1.123, 0.004)).toBe(1.127)
6 | expect(incrementValue(12.01, 0.04)).toBe(12.05)
7 | expect(incrementValue(12.05, 0.05)).toBe(12.1)
8 | })
9 |
10 | test("decrement", () => {
11 | expect(decrementValue(12.015, 0.004)).toBe(12.011)
12 | })
13 | })
14 |
--------------------------------------------------------------------------------
/packages/utilities/core/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/date-utils/src/get-era-format.ts:
--------------------------------------------------------------------------------
1 | import type { DateValue } from "@internationalized/date"
2 |
3 | export function getEraFormat(date: DateValue | undefined): "short" | undefined {
4 | return date?.calendar.identifier === "gregory" && date.era === "BC" ? "short" : undefined
5 | }
6 |
--------------------------------------------------------------------------------
/packages/utilities/date-utils/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./align"
2 | export * from "./assertion"
3 | export * from "./constrain"
4 | export * from "./duration"
5 | export * from "./format"
6 | export * from "./formatter"
7 | export * from "./date-month"
8 | export * from "./date-year"
9 | export * from "./mutation"
10 | export * from "./pagination"
11 | export * from "./parse-date"
12 | export * from "./preset"
13 | export type { DateAdjustFn, DateGranularity, DateRangePreset } from "./types"
14 |
--------------------------------------------------------------------------------
/packages/utilities/date-utils/tests/normalize-year.test.ts:
--------------------------------------------------------------------------------
1 | import { describe, expect, test } from "vitest"
2 | import { normalizeYear } from "../src"
3 |
4 | describe("normalize year", () => {
5 | test("with 2 digits", () => {
6 | expect(normalizeYear("23")).toBe("2023")
7 | })
8 |
9 | test("with 3 digits", () => {
10 | expect(normalizeYear("123")).toBe("1230")
11 | })
12 |
13 | test("with 4 digits", () => {
14 | expect(normalizeYear("2023")).toBe("2023")
15 | })
16 | })
17 |
--------------------------------------------------------------------------------
/packages/utilities/date-utils/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src", "tests"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/dismissable/src/escape-keydown.ts:
--------------------------------------------------------------------------------
1 | import { addDomEvent, getDocument } from "@zag-js/dom-query"
2 |
3 | export function trackEscapeKeydown(node: HTMLElement, fn?: (event: KeyboardEvent) => void) {
4 | const handleKeyDown = (event: KeyboardEvent) => {
5 | if (event.key !== "Escape") return
6 | if (event.isComposing) return
7 | fn?.(event)
8 | }
9 |
10 | return addDomEvent(getDocument(node), "keydown", handleKeyDown, { capture: true })
11 | }
12 |
--------------------------------------------------------------------------------
/packages/utilities/dismissable/src/index.ts:
--------------------------------------------------------------------------------
1 | export type {
2 | FocusOutsideEvent,
3 | InteractOutsideEvent,
4 | InteractOutsideHandlers,
5 | PointerDownOutsideEvent,
6 | } from "@zag-js/interact-outside"
7 | export * from "./dismissable-layer"
8 |
--------------------------------------------------------------------------------
/packages/utilities/dismissable/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/dom-query/src/computed-style.ts:
--------------------------------------------------------------------------------
1 | import { getWindow } from "./node"
2 |
3 | const styleCache = new WeakMap()
4 |
5 | export function getComputedStyle(el: Element) {
6 | if (!styleCache.has(el)) {
7 | styleCache.set(el, getWindow(el).getComputedStyle(el))
8 | }
9 | return styleCache.get(el)!
10 | }
11 |
--------------------------------------------------------------------------------
/packages/utilities/dom-query/src/navigate.ts:
--------------------------------------------------------------------------------
1 | import { isFirefox } from "./platform"
2 | import { queueBeforeEvent } from "./raf"
3 |
4 | export function clickIfLink(el: HTMLAnchorElement) {
5 | const click = () => el.click()
6 | if (isFirefox()) {
7 | queueBeforeEvent(el, "keyup", click)
8 | } else {
9 | queueMicrotask(click)
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/utilities/dom-query/src/visually-hidden.ts:
--------------------------------------------------------------------------------
1 | export const visuallyHiddenStyle = {
2 | border: "0",
3 | clip: "rect(0 0 0 0)",
4 | height: "1px",
5 | margin: "-1px",
6 | overflow: "hidden",
7 | padding: "0",
8 | position: "absolute",
9 | width: "1px",
10 | whiteSpace: "nowrap",
11 | wordWrap: "normal",
12 | } as const
13 |
14 | export function setVisuallyHidden(el: HTMLElement) {
15 | Object.assign(el.style, visuallyHiddenStyle)
16 | }
17 |
--------------------------------------------------------------------------------
/packages/utilities/dom-query/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/file-utils/src/get-total-file-size.ts:
--------------------------------------------------------------------------------
1 | export const getTotalFileSize = (files: File[]) => {
2 | return files.reduce((acc, file) => acc + file.size, 0)
3 | }
4 |
--------------------------------------------------------------------------------
/packages/utilities/file-utils/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./data-transfer"
2 | export * from "./data-url-to-blob"
3 | export * from "./download-file"
4 | export * from "./get-accept-attr"
5 | export * from "./get-file-data-url"
6 | export * from "./get-total-file-size"
7 | export * from "./is-file-equal"
8 | export * from "./is-valid-file-size"
9 | export * from "./is-valid-file-type"
10 | export type * from "./types.ts"
11 |
--------------------------------------------------------------------------------
/packages/utilities/file-utils/src/is-file-equal.ts:
--------------------------------------------------------------------------------
1 | export const isFileEqual = (file1: File, file2: File) => {
2 | return file1.name === file2.name && file1.size === file2.size && file1.type === file2.type
3 | }
4 |
--------------------------------------------------------------------------------
/packages/utilities/file-utils/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/focus-trap/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/focus-visible/README.md:
--------------------------------------------------------------------------------
1 | # @zag-js/focus-visible
2 |
3 | ## Installation
4 |
5 | ```sh
6 | yarn add @zag-js/focus-visible
7 | # or
8 | npm i @zag-js/focus-visible
9 | ```
10 |
11 | ## Contribution
12 |
13 | Yes please! See the [contributing guidelines](https://github.com/chakra-ui/zag/blob/main/CONTRIBUTING.md) for details.
14 |
15 | ## Licence
16 |
17 | This project is licensed under the terms of the [MIT license](https://github.com/chakra-ui/zag/blob/main/LICENSE).
18 |
--------------------------------------------------------------------------------
/packages/utilities/focus-visible/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/highlight-word/src/index.ts:
--------------------------------------------------------------------------------
1 | export { highlightWord } from "./highlight"
2 | export type { HighlightChunk, HighlightWordProps, HighlightSpan } from "./types"
3 |
--------------------------------------------------------------------------------
/packages/utilities/highlight-word/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/i18n-utils/src/format-list.ts:
--------------------------------------------------------------------------------
1 | import { i18nCache } from "./cache"
2 |
3 | const getListFormatter = i18nCache(Intl.ListFormat)
4 |
5 | export function formatList(list: string[], locale: string, options: Intl.ListFormatOptions = {}) {
6 | const formatter = getListFormatter(locale, options)
7 | return formatter.format(list)
8 | }
9 |
--------------------------------------------------------------------------------
/packages/utilities/i18n-utils/src/format-number.ts:
--------------------------------------------------------------------------------
1 | import { i18nCache } from "./cache"
2 |
3 | const getNumberFormatter = i18nCache(Intl.NumberFormat)
4 |
5 | export function formatNumber(v: number, locale: string, options: Intl.NumberFormatOptions = {}) {
6 | const formatter = getNumberFormatter(locale, options)
7 | return formatter.format(v)
8 | }
9 |
--------------------------------------------------------------------------------
/packages/utilities/i18n-utils/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./filter"
2 | export * from "./format-bytes"
3 | export * from "./format-date"
4 | export * from "./format-list"
5 | export * from "./format-number"
6 | export * from "./format-relative-time"
7 | export { getLocaleDir, isRTL } from "./is-rtl"
8 | export { getDefaultLocale } from "./locale"
9 | export type { Locale } from "./locale"
10 | export { trackLocale } from "./track-locale"
11 | export type { LocaleOptions } from "./track-locale"
12 |
--------------------------------------------------------------------------------
/packages/utilities/i18n-utils/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src", "tests"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/interact-outside/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/live-region/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/popper/src/index.ts:
--------------------------------------------------------------------------------
1 | export { getPlacement } from "./get-placement"
2 | export { getPlacementStyles, type GetPlacementStylesOptions } from "./get-styles"
3 | export { getPlacementSide, isValidPlacement } from "./placement"
4 | export type {
5 | AnchorRect,
6 | AutoUpdateOptions,
7 | Boundary,
8 | ComputePositionReturn,
9 | Placement,
10 | PlacementAlign,
11 | PlacementSide,
12 | PositioningOptions,
13 | } from "./types"
14 |
--------------------------------------------------------------------------------
/packages/utilities/popper/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/rect/README.md:
--------------------------------------------------------------------------------
1 | # @zag-js/geometry
2 |
3 | ## Installation
4 |
5 | ```sh
6 | yarn add @zag-js/geometry
7 | # or
8 | npm i @zag-js/geometry
9 | ```
10 |
11 | ## Contribution
12 |
13 | Yes please! See the [contributing guidelines](https://github.com/chakra-ui/zag/blob/main/CONTRIBUTING.md) for details.
14 |
15 | ## Licence
16 |
17 | This project is licensed under the terms of the [MIT license](https://github.com/chakra-ui/zag/blob/main/LICENSE).
18 |
--------------------------------------------------------------------------------
/packages/utilities/rect/src/angle.ts:
--------------------------------------------------------------------------------
1 | import type { Point, Rect } from "./types"
2 |
3 | export function getPointAngle(rect: Rect, point: Point, reference = rect.center) {
4 | const x = point.x - reference.x
5 | const y = point.y - reference.y
6 | const deg = Math.atan2(x, y) * (180 / Math.PI) + 180
7 | return 360 - deg
8 | }
9 |
--------------------------------------------------------------------------------
/packages/utilities/rect/src/equality.ts:
--------------------------------------------------------------------------------
1 | import type { Point, RectInit, Size } from "./types"
2 |
3 | export const isSizeEqual = (a: Size, b: Size | undefined) => {
4 | return a.width === b?.width && a.height === b?.height
5 | }
6 |
7 | export const isPointEqual = (a: Point, b: Point | undefined) => {
8 | return a.x === b?.x && a.y === b?.y
9 | }
10 |
11 | export const isRectEqual = (a: RectInit, b: RectInit | undefined) => {
12 | return isPointEqual(a, b) && isSizeEqual(a, b)
13 | }
14 |
--------------------------------------------------------------------------------
/packages/utilities/rect/src/from-points.ts:
--------------------------------------------------------------------------------
1 | import { createRect } from "./rect"
2 | import type { Point, Rect } from "./types"
3 |
4 | export function getRectFromPoints(...pts: Point[]): Rect {
5 | const xs = pts.map((p) => p.x)
6 | const ys = pts.map((p) => p.y)
7 |
8 | const x = Math.min(...xs)
9 | const y = Math.min(...ys)
10 |
11 | const width = Math.max(...xs) - x
12 | const height = Math.max(...ys) - y
13 |
14 | return createRect({ x, y, width, height })
15 | }
16 |
--------------------------------------------------------------------------------
/packages/utilities/rect/src/union.ts:
--------------------------------------------------------------------------------
1 | import { getRectFromPoints } from "./from-points"
2 | import type { Rect } from "./types"
3 |
4 | const { min, max } = Math
5 |
6 | export function union(...rs: Rect[]): Rect {
7 | const pMin = {
8 | x: min(...rs.map((r) => r.minX)),
9 | y: min(...rs.map((r) => r.minY)),
10 | }
11 | const pMax = {
12 | x: max(...rs.map((r) => r.maxX)),
13 | y: max(...rs.map((r) => r.maxY)),
14 | }
15 | return getRectFromPoints(pMin, pMax)
16 | }
17 |
--------------------------------------------------------------------------------
/packages/utilities/rect/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/remove-scroll/README.md:
--------------------------------------------------------------------------------
1 | # @zag-js/remove-scroll
2 |
3 | ## Installation
4 |
5 | ```sh
6 | yarn add @zag-js/remove-scroll
7 | # or
8 | npm i @zag-js/remove-scroll
9 | ```
10 |
11 | ## Contribution
12 |
13 | Yes please! See the [contributing guidelines](https://github.com/chakra-ui/zag/blob/main/CONTRIBUTING.md) for details.
14 |
15 | ## Licence
16 |
17 | This project is licensed under the terms of the [MIT license](https://github.com/chakra-ui/zag/blob/main/LICENSE).
18 |
--------------------------------------------------------------------------------
/packages/utilities/remove-scroll/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/scroll-snap/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/utilities/stringify-state/src/json-format-highlight.d.ts:
--------------------------------------------------------------------------------
1 | declare module "json-format-highlight" {
2 | export interface FormatOptions {
3 | keyColor?: string
4 | numberColor?: string
5 | stringColor?: string
6 | trueColor?: string
7 | falseColor?: string
8 | nullColor?: string
9 | }
10 |
11 | export default function formatHighlight(code: string, options?: Options): string
12 | }
13 |
--------------------------------------------------------------------------------
/packages/utilities/stringify-state/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/plop/machine/src/index.ts.hbs:
--------------------------------------------------------------------------------
1 | export { anatomy } from "./{{dashCase machine}}.anatomy"
2 | export { connect } from "./{{dashCase machine}}.connect"
3 | export { machine } from "./{{dashCase machine}}.machine"
4 | export * from "./{{dashCase machine}}.props"
5 | export type { {{pascalCase machine}}Service, {{pascalCase machine}}Schema } from "./{{dashCase machine}}.types"
6 |
--------------------------------------------------------------------------------
/plop/machine/src/{{machine}}.anatomy.ts.hbs:
--------------------------------------------------------------------------------
1 | import { createAnatomy } from "@zag-js/anatomy"
2 |
3 | export const anatomy = createAnatomy("{{dashCase machine}}").parts("root")
4 |
5 | export const parts = anatomy.build()
6 |
--------------------------------------------------------------------------------
/plop/machine/src/{{machine}}.connect.ts.hbs:
--------------------------------------------------------------------------------
1 | import type { NormalizeProps, PropTypes } from "@zag-js/types"
2 | import type { State, Send } from "./{{dashCase machine}}.types"
3 | import { parts } from "./{{dashCase machine}}.anatomy"
4 | import { dom } from "./{{dashCase machine}}.dom"
5 |
6 | export function connect(service: {{machine}}Service, normalize: NormalizeProps) {
7 | return {
8 | getRootProps() {
9 | return normalize.element({})
10 | },
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/plop/machine/src/{{machine}}.dom.ts.hbs:
--------------------------------------------------------------------------------
1 | import type { Scope } from "@zag-js/core"
2 |
3 | export const getRootId = (ctx: MachineContext) => `{{dashCase machine}}-${ctx.id}`
4 |
--------------------------------------------------------------------------------
/plop/machine/src/{{machine}}.props.ts.hbs:
--------------------------------------------------------------------------------
1 | import { createProps } from "@zag-js/types"
2 | import { createSplitProps } from "@zag-js/utils"
3 | import type { UserDefinedContext } from "./{{dashCase machine}}.types"
4 |
5 | export const props = createProps()([])
6 | export const splitProps = createSplitProps>(props)
7 |
--------------------------------------------------------------------------------
/plop/machine/tsconfig.json.hbs:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/plop/utility/README.md.hbs:
--------------------------------------------------------------------------------
1 | # @zag-js/{{name}}
2 |
3 | {{description}}
4 |
5 | ## Installation
6 |
7 | ```sh
8 | yarn add @zag-js/{{name}}
9 | # or
10 | npm i @zag-js/{{name}}
11 | ```
12 |
13 | ## Contribution
14 |
15 | Yes please! See the
16 | [contributing guidelines](https://github.com/chakra-ui/zag/blob/main/CONTRIBUTING.md)
17 | for details.
18 |
19 | ## Licence
20 |
21 | This project is licensed under the terms of the
22 | [MIT license](https://github.com/chakra-ui/zag/blob/main/LICENSE).
23 |
--------------------------------------------------------------------------------
/plop/utility/src/index.ts:
--------------------------------------------------------------------------------
1 | export function add(a: number, b: number) {
2 | return a + b
3 | }
4 |
--------------------------------------------------------------------------------
/plop/utility/tsconfig.json.hbs:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - "packages/**"
3 | - "shared"
4 | - "examples/**"
5 | - "starters/**"
6 | - "website"
7 |
--------------------------------------------------------------------------------
/scripts/logger.ts:
--------------------------------------------------------------------------------
1 | import signale from "signale"
2 |
3 | export function createLogger(scope: string) {
4 | return signale.scope(scope)
5 | }
6 |
--------------------------------------------------------------------------------
/shared/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./src"
2 |
--------------------------------------------------------------------------------
/shared/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@zag-js/shared",
3 | "version": "0.0.4",
4 | "main": "src/index.ts",
5 | "private": true,
6 | "dependencies": {
7 | "@zag-js/tour": "workspace:*"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/shared/src/css/anatomy.css:
--------------------------------------------------------------------------------
1 | .anatomy {
2 | position: fixed;
3 | top: 0;
4 | bottom: 0;
5 | left: 0;
6 | overflow: auto;
7 | max-height: 100%;
8 | }
9 |
10 | .anatomy .anatomy__item {
11 | display: flex;
12 | overflow: auto;
13 | width: 100%;
14 | position: relative;
15 | }
16 |
17 | .anatomy span {
18 | position: absolute;
19 | top: 2;
20 | left: 2;
21 | font-weight: 500;
22 | }
23 |
24 | .anatomy svg {
25 | width: calc(100vw / 3);
26 | height: fit-content;
27 | }
28 |
--------------------------------------------------------------------------------
/shared/src/css/hover-card.css:
--------------------------------------------------------------------------------
1 | [data-scope="hover-card"][data-part="trigger"] {
2 | background: rgb(110, 86, 207);
3 | color: white;
4 | width: fit-content;
5 | padding: 6px;
6 | }
7 |
8 | [data-scope="hover-card"][data-part="content"] {
9 | background: rgb(225, 223, 228);
10 | padding: 6px;
11 | height: 150px;
12 | width: 300px;
13 | }
14 |
--------------------------------------------------------------------------------
/shared/src/css/pin-input.css:
--------------------------------------------------------------------------------
1 | [data-scope="pin-input"][data-part="control"] {
2 | width: 300px;
3 | display: flex;
4 | margin-bottom: 12px;
5 | gap: 12px;
6 | }
7 |
8 | [data-scope="pin-input"][data-part="label"] {
9 | display: block;
10 | margin-bottom: 8px;
11 | }
12 |
13 | [data-scope="pin-input"][data-part="input"] {
14 | width: 48px;
15 | height: 48px;
16 | text-align: center;
17 | font-size: 24px;
18 | }
19 |
--------------------------------------------------------------------------------
/shared/src/css/qr-code.css:
--------------------------------------------------------------------------------
1 | [data-scope="qr-code"][data-part="frame"] {
2 | width: 120px;
3 | height: 120px;
4 | background-color: white;
5 | }
6 |
7 | [data-scope="qr-code"][data-part="pattern"] {
8 | fill: green;
9 | }
10 |
11 | [data-scope="qr-code"][data-part="overlay"] {
12 | width: 25%;
13 | height: 25%;
14 | outline: 4px solid white;
15 |
16 | & img {
17 | width: 100%;
18 | height: 100%;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/shared/src/css/segmented-control.css:
--------------------------------------------------------------------------------
1 | .segmented-control [data-part="root"] {
2 | width: fit-content;
3 | padding: 4px;
4 | background-color: #f1f3f5;
5 | border-radius: 4px;
6 | gap: 8px;
7 | }
8 |
9 | .segmented-control [data-part="item"] {
10 | padding-left: 0;
11 | padding: 8px;
12 | width: 100%;
13 | text-align: center;
14 | }
15 |
16 | .segmented-control [data-part="indicator"] {
17 | width: var(--width);
18 | height: var(--height);
19 | }
20 |
--------------------------------------------------------------------------------
/shared/src/css/toggle-group.css:
--------------------------------------------------------------------------------
1 | [data-scope="toggle-group"][data-part="root"] {
2 | display: flex;
3 | }
4 |
5 | [data-scope="toggle-group"][data-part="item"] {
6 | border-radius: 0px;
7 | border: 0;
8 | width: 40px;
9 | height: 40px;
10 | }
11 |
12 | [data-scope="toggle-group"][data-part="item"][data-state="on"] {
13 | background-color: blue;
14 | color: white;
15 | }
16 |
--------------------------------------------------------------------------------
/shared/src/css/toggle.css:
--------------------------------------------------------------------------------
1 | [data-scope="toggle"][data-part="root"] {
2 | border-radius: 4px;
3 | border: 0;
4 | width: 40px;
5 | height: 40px;
6 | }
7 |
8 | [data-scope="toggle"][data-part="root"][data-pressed] {
9 | background-color: blue;
10 | color: white;
11 | }
12 |
--------------------------------------------------------------------------------
/shared/src/css/tooltip.css:
--------------------------------------------------------------------------------
1 | .tooltip > .root {
2 | display: flex;
3 | gap: 20px;
4 | }
5 |
6 | [data-scope="tooltip"][data-part="content"] {
7 | z-index: 1;
8 | padding: 0.25em 0.5em;
9 | box-shadow: 2px 2px 10px hsla(0, 0%, 0%, 0.1);
10 | white-space: nowrap;
11 | font-size: 85%;
12 | background: #f0f0f0;
13 | color: #444;
14 | border: solid 1px #ccc;
15 | }
16 |
--------------------------------------------------------------------------------
/shared/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./controls"
2 | export * from "./data"
3 | export * from "./deep-get-set"
4 | export * from "./define-controls"
5 | export * from "./routes"
6 |
--------------------------------------------------------------------------------
/shared/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "tsBuildInfoFile": "node_modules/.cache/.tsbuildinfo"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/starters/react/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/starters/react/app/favicon.ico
--------------------------------------------------------------------------------
/starters/react/app/select/virtualized/page.tsx:
--------------------------------------------------------------------------------
1 | "use client"
2 |
3 | import { VirtualizedSelect } from "../../../components/virtualized-select"
4 |
5 | export default function Page() {
6 | return (
7 |
8 |
9 |
10 | )
11 | }
12 |
--------------------------------------------------------------------------------
/starters/react/components/button.tsx:
--------------------------------------------------------------------------------
1 | export const Button = (props: React.ComponentProps<"button">) => {
2 | return (
3 |
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/starters/react/components/show.tsx:
--------------------------------------------------------------------------------
1 | export const Show = (props: { when: boolean; children: React.ReactNode }) => {
2 | const { when, children } = props
3 | return when ? <>{children}> : null
4 | }
5 |
--------------------------------------------------------------------------------
/starters/react/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { FlatCompat } from "@eslint/eslintrc"
2 |
3 | const compat = new FlatCompat({
4 | baseDirectory: import.meta.dirname,
5 | })
6 |
7 | const eslintConfig = [
8 | ...compat.config({
9 | extends: ["next"],
10 | rules: {
11 | "@next/next/no-img-element": "off",
12 | },
13 | }),
14 | ]
15 |
16 | export default eslintConfig
17 |
--------------------------------------------------------------------------------
/starters/react/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {}
3 |
4 | module.exports = nextConfig
5 |
--------------------------------------------------------------------------------
/tsconfig.eslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "include": ["**/*.js", "*/**/*.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "tsup"
2 |
3 | export default defineConfig({
4 | clean: true,
5 | dts: true,
6 | entry: ["src/index.ts"],
7 | target: "es2020",
8 | treeshake: "smallest",
9 | format: ["esm", "cjs"],
10 | })
11 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vitest/config"
2 |
3 | export default defineConfig({
4 | test: {
5 | globals: true,
6 | },
7 | })
8 |
--------------------------------------------------------------------------------
/website/.npmrc:
--------------------------------------------------------------------------------
1 | strict-peer-dependencies=false
2 |
--------------------------------------------------------------------------------
/website/.prettierignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 | coverage
4 | .next
5 | build
6 | *.hbs
--------------------------------------------------------------------------------
/website/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSpacing": true,
3 | "jsxSingleQuote": false,
4 | "printWidth": 80,
5 | "proseWrap": "always",
6 | "semi": false,
7 | "singleQuote": false,
8 | "tabWidth": 2,
9 | "trailingComma": "all"
10 | }
11 |
--------------------------------------------------------------------------------
/website/data/snippets/react/accordion/component.usage.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { Accordion } from "./your-accordion"
3 |
4 | function Demo() {
5 | return (
6 |
13 | )
14 | }
15 | ```
16 |
--------------------------------------------------------------------------------
/website/data/snippets/react/accordion/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledAccordion() {
5 | const [value, setValue] = useState(["home"])
6 |
7 | const service = useMachine(accordion.machine, {
8 | value,
9 | onValueChange(details) {
10 | setValue(details.value)
11 | },
12 | })
13 |
14 | return (
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/react/accordion/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/accordion @zag-js/react
3 | # or
4 | yarn add @zag-js/accordion @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/angle-slider/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledAngleSlider() {
5 | const [value, setValue] = useState(45)
6 |
7 | const service = useMachine(angleSlider.machine, {
8 | value,
9 | onValueChange(details) {
10 | setValue(details.value)
11 | },
12 | })
13 |
14 | return (
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/react/angle-slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/angle-slider @zag-js/react
3 | # or
4 | yarn add @zag-js/angle-slider @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/avatar/component.usage.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { Avatar } from "./your-avatar"
3 |
4 | function Demo() {
5 | return (
6 |
10 | )
11 | }
12 | ```
13 |
--------------------------------------------------------------------------------
/website/data/snippets/react/avatar/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/avatar @zag-js/react
3 | # or
4 | yarn add @zag-js/avatar @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/carousel/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/carousel @zag-js/react
3 | # or
4 | yarn add @zag-js/carousel @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/checkbox/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledCheckbox() {
5 | const [checked, setChecked] = useState(false)
6 |
7 | const service = useMachine(checkbox.machine, {
8 | checked,
9 | onCheckedChange(details) {
10 | setChecked(details.checked)
11 | },
12 | })
13 |
14 | return (
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/react/checkbox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/checkbox @zag-js/react
3 | # or
4 | yarn add @zag-js/checkbox @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/clipboard/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/clipboard @zag-js/react
3 | # or
4 | yarn add @zag-js/clipboard @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/collapsible/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledCollapsible() {
5 | const [open, setOpen] = useState(false)
6 |
7 | const service = useMachine(collapsible.machine, {
8 | open,
9 | onOpenChange(details) {
10 | setOpen(details.open)
11 | }
12 | })
13 |
14 | return (
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/react/collapsible/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/collapsible @zag-js/react
3 | # or
4 | yarn add @zag-js/collapsible @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/color-picker/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 | import * as colorPicker from "@zag-js/color-picker"
4 |
5 | export function ControlledColorPicker() {
6 | const [value, setValue] = useState(colorPicker.parse("#ff0000"))
7 |
8 | const service = useMachine(colorPicker.machine, {
9 | value,
10 | onValueChange(details) {
11 | setValue(details.value)
12 | }
13 | })
14 |
15 | return (
16 | // ...
17 | )
18 | }
19 | ```
20 |
--------------------------------------------------------------------------------
/website/data/snippets/react/color-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/color-picker @zag-js/react
3 | # or
4 | yarn add @zag-js/color-picker @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/combobox/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledCombobox() {
5 | const [value, setValue] = useState(["ng"])
6 |
7 | const service = useMachine(combobox.machine, {
8 | value,
9 | onValueChange(details) {
10 | setValue(details.value)
11 | }
12 | })
13 |
14 | return (
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/react/combobox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/combobox @zag-js/react
3 | # or
4 | yarn add @zag-js/combobox @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/date-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/date-picker @zag-js/react
3 | # or
4 | yarn add @zag-js/date-picker @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/dialog/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledDialog() {
5 | const [open, setOpen] = useState(false)
6 |
7 | const service = useMachine(dialog.machine, {
8 | open,
9 | onOpenChange(details) {
10 | setOpen(details.open)
11 | },
12 | })
13 |
14 | return (
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/react/dialog/initial-focus.mdx:
--------------------------------------------------------------------------------
1 | ```jsx {3,7,15}
2 | export function Dialog() {
3 | // initial focused element ref
4 | const inputRef = useRef(null)
5 |
6 | const service = useMachine(dialog.machine, {
7 | initialFocusEl: () => inputRef.current,
8 | })
9 |
10 | // ...
11 |
12 | return (
13 | //...
14 |
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/react/dialog/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/dialog @zag-js/react
3 | # or
4 | yarn add @zag-js/dialog @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/editable/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/editable @zag-js/react
3 | # or
4 | yarn add @zag-js/editable @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/file-upload/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/file-upload @zag-js/react
3 | # or
4 | yarn add @zag-js/file-upload @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/floating-panel/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/floating-panel @zag-js/react
3 | # or
4 | yarn add @zag-js/floating-panel @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/hover-card/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/hover-card @zag-js/react
3 | # or
4 | yarn add @zag-js/hover-card @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/listbox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/listbox @zag-js/react
3 | # or
4 | yarn add @zag-js/listbox @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/menu/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/menu @zag-js/react
3 | # or
4 | yarn add @zag-js/menu @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/number-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledNumberInput() {
5 | const [value, setValue] = useState("")
6 |
7 | const service = useMachine(numberInput.machine, {
8 | value,
9 | onValueChange(details) {
10 | setValue(details.value)
11 | },
12 | })
13 | }
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/react/number-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/number-input @zag-js/react
3 | # or
4 | yarn add @zag-js/number-input @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/pagination/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/pagination @zag-js/react
3 | # or
4 | yarn add @zag-js/pagination @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/password-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/password-input @zag-js/react
3 | # or
4 | yarn add @zag-js/password-input @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/pin-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledPinInput() {
5 | const [value, setValue] = useState(["", "", "", ""])
6 |
7 | const service = useMachine(pinInput.machine, {
8 | value,
9 | onValueChange(details) {
10 | setValue(details.value)
11 | },
12 | })
13 | }
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/react/pin-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/pin-input @zag-js/react
3 | # or
4 | yarn add @zag-js/pin-input @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/popover/initial-focus.mdx:
--------------------------------------------------------------------------------
1 | ```jsx {3,7,15}
2 | export function Popover() {
3 | // initial focused element ref
4 | const inputRef = useRef(null)
5 |
6 | const service = useMachine(popover.machine, {
7 | id: "1",
8 | initialFocusEl: () => inputRef.current,
9 | })
10 |
11 | // ...
12 |
13 | return (
14 | //...
15 |
16 | // ...
17 | )
18 | }
19 | ```
20 |
--------------------------------------------------------------------------------
/website/data/snippets/react/popover/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/popover @zag-js/react
3 | # or
4 | yarn add @zag-js/popover @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/presence/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/presence @zag-js/react
3 | # or
4 | yarn add @zag-js/presence @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/progress/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/progress @zag-js/react
3 | # or
4 | yarn add @zag-js/progress @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/qr-code/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/qr-code @zag-js/react
3 | # or
4 | yarn add @zag-js/qr-code @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/radio-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/radio-group @zag-js/react
3 | # or
4 | yarn add @zag-js/radio-group @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/range-slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/slider @zag-js/react
3 | # or
4 | yarn add @zag-js/slider @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/rating-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/rating-group @zag-js/react
3 | # or
4 | yarn add @zag-js/rating-group @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/segmented-control/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/radio-group @zag-js/react
3 | # or
4 | yarn add @zag-js/radio-group @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/select/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/select @zag-js/react
3 | # or
4 | yarn add @zag-js/select @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/signature-pad/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/signature-pad @zag-js/react
3 | # or
4 | yarn add @zag-js/signature-pad @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/slider/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledSlider() {
5 | const [value, setValue] = useState([30])
6 |
7 | const service = useMachine(slider.machine, {
8 | value,
9 | onValueChange(details) {
10 | setValue(details.value)
11 | },
12 | })
13 |
14 | return (
15 | // ...
16 | )
17 | }
18 |
19 | ```
20 |
--------------------------------------------------------------------------------
/website/data/snippets/react/slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/slider @zag-js/react
3 | # or
4 | yarn add @zag-js/slider @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/splitter/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/splitter @zag-js/react
3 | # or
4 | yarn add @zag-js/splitter @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/steps/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/steps @zag-js/react
3 | # or
4 | yarn add @zag-js/steps @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/switch/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/switch @zag-js/react
3 | # or
4 | yarn add @zag-js/switch @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/tabs/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledTabs() {
5 | const [value, setValue] = useState("tab-1")
6 |
7 | const service = useMachine(tabs.machine, {
8 | value,
9 | onValueChange(details) {
10 | setValue(details.value)
11 | },
12 | })
13 |
14 | return (
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/react/tabs/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tabs @zag-js/react
3 | # or
4 | yarn add @zag-js/tabs @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/tags-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { useState } from "react"
3 |
4 | export function ControlledTagsInput() {
5 | const [value, setValue] = useState(["React", "Vue"])
6 |
7 | const service = useMachine(tagsInput.machine, {
8 | value,
9 | onValueChange(details) {
10 | setValue(details.value)
11 | },
12 | })
13 |
14 | return ( // ... )
15 | }
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/react/tags-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tags-input @zag-js/react
3 | # or
4 | yarn add @zag-js/tags-input @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/time-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/time-picker @zag-js/react
3 | # or
4 | yarn add @zag-js/time-picker @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/timer/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/timer @zag-js/react
3 | # or
4 | yarn add @zag-js/timer @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/toast/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/toast @zag-js/react
3 | # or
4 | yarn add @zag-js/toast @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/toggle-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/toggle-group @zag-js/react
3 | # or
4 | yarn add @zag-js/toggle-group @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/tooltip/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tooltip @zag-js/react
3 | # or
4 | yarn add @zag-js/tooltip @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/tour/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tour @zag-js/react
3 | # or
4 | yarn add @zag-js/tour @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/react/tree-view/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tree-view @zag-js/react
3 | # or
4 | yarn add @zag-js/tree-view @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/accordion/component.usage.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { Accordion } from "./your-accordion"
3 |
4 | function Demo() {
5 | return (
6 |
13 | )
14 | }
15 | ```
16 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/accordion/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledAccordion() {
5 | const [value, setValue] = createSignal(["home"])
6 |
7 | const service = useMachine(accordion.machine, {
8 | get value() {
9 | return value()
10 | },
11 | onValueChange(details) {
12 | setValue(details.value)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/accordion/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/accordion @zag-js/solid
3 | # or
4 | yarn add @zag-js/accordion @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/angle-slider/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledAngleSlider() {
5 | const [value, setValue] = createSignal(45)
6 |
7 | const service = useMachine(angleSlider.machine, {
8 | get value() {
9 | return value()
10 | },
11 | onValueChange(details) {
12 | setValue(details.value)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/angle-slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/angle-slider @zag-js/solid
3 | # or
4 | yarn add @zag-js/angle-slider @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/avatar/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/avatar @zag-js/solid
3 | # or
4 | yarn add @zag-js/avatar @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/carousel/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/carousel @zag-js/solid
3 | # or
4 | yarn add @zag-js/carousel @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/checkbox/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledCheckbox() {
5 | const [checked, setChecked] = createSignal(false)
6 |
7 | const service = useMachine(checkbox.machine, {
8 | get checked() {
9 | return checked()
10 | },
11 | onCheckedChange(details) {
12 | setChecked(details.checked)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/checkbox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/checkbox @zag-js/solid
3 | # or
4 | yarn add @zag-js/checkbox @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/clipboard/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/clipboard @zag-js/solid
3 | # or
4 | yarn add @zag-js/clipboard @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/collapsible/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledCollapsible() {
5 | const [open, setOpen] = createSignal(false)
6 |
7 | const service = useMachine(collapsible.machine, {
8 | get open() {
9 | return open()
10 | },
11 | onOpenChange(details) {
12 | setOpen(details.open)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/collapsible/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/collapsible @zag-js/solid
3 | # or
4 | yarn add @zag-js/collapsible @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/color-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/color-picker @zag-js/solid
3 | # or
4 | yarn add @zag-js/color-picker @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/combobox/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledCombobox() {
5 | const [value, setValue] = createSignal(["ng"])
6 |
7 | const service = useMachine(combobox.machine, {
8 | get value() {
9 | return value()
10 | },
11 | onValueChange(details) {
12 | setValue(details.value)
13 | }
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/combobox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/combobox @zag-js/solid
3 | # or
4 | yarn add @zag-js/combobox @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/date-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/date-picker @zag-js/solid
3 | # or
4 | yarn add @zag-js/date-picker @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/dialog/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledDialog() {
5 | const [open, setOpen] = createSignal(false)
6 |
7 | const service = useMachine(dialog.machine, {
8 | get open() {
9 | return open()
10 | },
11 | onOpenChange(details) {
12 | setOpen(details.open)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/dialog/initial-focus.mdx:
--------------------------------------------------------------------------------
1 | ```jsx {3,7,15}
2 | export function Dialog() {
3 | // initial focused element signal
4 | const [inputEl, setInputEl] = createSignal()
5 |
6 | const service = useMachine(dialog.machine, {
7 | initialFocusEl: inputEl,
8 | })
9 |
10 | // ...
11 |
12 | return (
13 | //...
14 |
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/dialog/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/dialog @zag-js/solid
3 | # or
4 | yarn add @zag-js/dialog @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/editable/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/editable @zag-js/solid
3 | # or
4 | yarn add @zag-js/editable @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/file-upload/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/file-upload @zag-js/solid
3 | # or
4 | yarn add @zag-js/file-upload @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/floating-panel/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/floating-panel @zag-js/solid
3 | # or
4 | yarn add @zag-js/floating-panel @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/hover-card/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/hover-card @zag-js/solid
3 | # or
4 | yarn add @zag-js/hover-card @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/listbox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/listbox @zag-js/solid
3 | # or
4 | yarn add @zag-js/listbox @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/menu/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/menu @zag-js/solid
3 | # or
4 | yarn add @zag-js/menu @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/number-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledNumberInput() {
5 | const [value, setValue] = createSignal("")
6 |
7 | const service = useMachine(numberInput.machine, {
8 | get value() {
9 | return value()
10 | },
11 | onValueChange(details) {
12 | setValue(details.value)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/number-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/number-input @zag-js/solid
3 | # or
4 | yarn add @zag-js/number-input @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/pagination/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/pagination @zag-js/solid
3 | # or
4 | yarn add @zag-js/pagination @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/password-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/password-input @zag-js/solid
3 | # or
4 | yarn add @zag-js/password-input @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/pin-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledPinInput() {
5 | const [value, setValue] = createSignal(["", "", "", ""])
6 |
7 | const service = useMachine(pinInput.machine, {
8 | get value() {
9 | return value()
10 | },
11 | onValueChange(details) {
12 | setValue(details.value)
13 | },
14 | })
15 | }
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/pin-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/pin-input @zag-js/solid
3 | # or
4 | yarn add @zag-js/pin-input @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/popover/initial-focus.mdx:
--------------------------------------------------------------------------------
1 | ```jsx {3,7,15}
2 | export function Popover() {
3 | // initial focused element signal
4 | const [inputEl, setInputEl] = createSignal()
5 |
6 | const service = useMachine(popover.machine, {
7 | initialFocusEl: inputEl,
8 | })
9 |
10 | // ...
11 |
12 | return (
13 | //...
14 |
15 | // ...
16 | )
17 | }
18 | ```
19 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/popover/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/popover @zag-js/solid
3 | # or
4 | yarn add @zag-js/popover @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/presence/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/presence @zag-js/solid
3 | # or
4 | yarn add @zag-js/presence @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/progress/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/progress @zag-js/solid
3 | # or
4 | yarn add @zag-js/progress @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/qr-code/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/qr-code @zag-js/solid
3 | # or
4 | yarn add @zag-js/qr-code @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/radio-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/radio-group @zag-js/solid
3 | # or
4 | yarn add @zag-js/radio-group @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/range-slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/slider @zag-js/solid
3 | # or
4 | yarn add @zag-js/slider @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/rating-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/rating-group @zag-js/solid
3 | # or
4 | yarn add @zag-js/rating-group @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/segmented-control/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/radio-group @zag-js/solid
3 | # or
4 | yarn add @zag-js/radio-group @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/select/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/select @zag-js/solid
3 | # or
4 | yarn add @zag-js/select @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/signature-pad/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/signature-pad @zag-js/solid
3 | # or
4 | yarn add @zag-js/signature-pad @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/slider/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledSlider() {
5 | const [value, setValue] = createSignal([30])
6 |
7 | const service = useMachine(slider.machine, {
8 | get value() {
9 | return value()
10 | },
11 | onValueChange(details) {
12 | setValue(details.value)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/slider @zag-js/solid
3 | # or
4 | yarn add @zag-js/slider @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/splitter/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/splitter @zag-js/solid
3 | # or
4 | yarn add @zag-js/splitter @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/steps/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/steps @zag-js/solid
3 | # or
4 | yarn add @zag-js/steps @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/switch/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/switch @zag-js/solid
3 | # or
4 | yarn add @zag-js/switch @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/tabs/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledTabs() {
5 | const [value, setValue] = createSignal("tab-1")
6 |
7 | const service = useMachine(tabs.machine, {
8 | get value() {
9 | return value()
10 | },
11 | onValueChange(details) {
12 | setValue(details.value)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/tabs/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tabs @zag-js/solid
3 | # or
4 | yarn add @zag-js/tabs @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/tags-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```tsx
2 | import { createSignal } from "solid-js"
3 |
4 | export function ControlledTagsInput() {
5 | const [value, setValue] = createSignal(["React", "Vue"])
6 |
7 | const service = useMachine(tagsInput.machine, {
8 | get value() {
9 | return value()
10 | },
11 | onValueChange(details) {
12 | setValue(details.value)
13 | },
14 | })
15 |
16 | return (
17 | // ...
18 | )
19 | }
20 | ```
21 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/tags-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tags-input @zag-js/solid
3 | # or
4 | yarn add @zag-js/tags-input @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/time-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/time-picker @zag-js/solid
3 | # or
4 | yarn add @zag-js/time-picker @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/timer/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/timer @zag-js/solid
3 | # or
4 | yarn add @zag-js/timer @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/toast/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/toast @zag-js/solid
3 | # or
4 | yarn add @zag-js/toast @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/toggle-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/toggle-group @zag-js/solid
3 | # or
4 | yarn add @zag-js/toggle-group @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/tooltip/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tooltip @zag-js/solid
3 | # or
4 | yarn add @zag-js/tooltip @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/tour/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tour @zag-js/solid
3 | # or
4 | yarn add @zag-js/tour @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/solid/tree-view/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tree-view @zag-js/solid
3 | # or
4 | yarn add @zag-js/tree-view @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/accordion/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/accordion/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/accordion @zag-js/svelte
3 | # or
4 | yarn add @zag-js/accordion @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/angle-slider/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
15 | ```
16 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/angle-slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/angle-slider @zag-js/svelte
3 | # or
4 | yarn add @zag-js/angle-slider @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/avatar/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/avatar @zag-js/svelte
3 | # or
4 | yarn add @zag-js/avatar @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/carousel/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/carousel @zag-js/svelte
3 | # or
4 | yarn add @zag-js/carousel @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/checkbox/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/checkbox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/checkbox @zag-js/svelte
3 | # or
4 | yarn add @zag-js/checkbox @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/clipboard/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/clipboard @zag-js/svelte
3 | # or
4 | yarn add @zag-js/clipboard @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/collapsible/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/collapsible/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/collapsible @zag-js/svelte
3 | # or
4 | yarn add @zag-js/collapsible @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/color-picker/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
15 | ```
16 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/color-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/color-picker @zag-js/svelte
3 | # or
4 | yarn add @zag-js/color-picker @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/combobox/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/combobox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/combobox @zag-js/svelte
3 | # or
4 | yarn add @zag-js/combobox @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/date-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/date-picker @zag-js/svelte
3 | # or
4 | yarn add @zag-js/date-picker @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/dialog/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/dialog/initial-focus.mdx:
--------------------------------------------------------------------------------
1 | ```svelte {3,7,14}
2 |
13 |
14 |
15 |
16 |
17 | ```
18 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/dialog/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/dialog @zag-js/svelte
3 | # or
4 | yarn add @zag-js/dialog @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/editable/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/editable @zag-js/svelte
3 | # or
4 | yarn add @zag-js/editable @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/file-upload/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/file-upload @zag-js/svelte
3 | # or
4 | yarn add @zag-js/file-upload @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/floating-panel/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/floating-panel @zag-js/svelte
3 | # or
4 | yarn add @zag-js/floating-panel @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/hover-card/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/hover-card @zag-js/svelte
3 | # or
4 | yarn add @zag-js/hover-card @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/listbox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/listbox @zag-js/svelte
3 | # or
4 | yarn add @zag-js/listbox @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/menu/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/menu @zag-js/svelte
3 | # or
4 | yarn add @zag-js/menu @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/number-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/number-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/number-input @zag-js/svelte
3 | # or
4 | yarn add @zag-js/number-input @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/pagination/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/pagination @zag-js/svelte
3 | # or
4 | yarn add @zag-js/pagination @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/password-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/password-input @zag-js/svelte
3 | # or
4 | yarn add @zag-js/password-input @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/pin-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/pin-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/pin-input @zag-js/svelte
3 | # or
4 | yarn add @zag-js/pin-input @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/popover/initial-focus.mdx:
--------------------------------------------------------------------------------
1 | ```svelte {3,7,14}
2 |
3 |
12 |
13 |
14 |
15 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/popover/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/popover @zag-js/svelte
3 | # or
4 | yarn add @zag-js/popover @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/progress/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/progress @zag-js/svelte
3 | # or
4 | yarn add @zag-js/progress @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/qr-code/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/qr-code @zag-js/svelte
3 | # or
4 | yarn add @zag-js/qr-code @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/radio-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/radio-group @zag-js/svelte
3 | # or
4 | yarn add @zag-js/radio-group @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/range-slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/slider @zag-js/svelte
3 | # or
4 | yarn add @zag-js/slider @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/rating-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/rating-group @zag-js/svelte
3 | # or
4 | yarn add @zag-js/rating-group @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/segmented-control/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/radio-group @zag-js/svelte
3 | # or
4 | yarn add @zag-js/radio-group @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/select/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/select @zag-js/svelte
3 | # or
4 | yarn add @zag-js/select @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/signature-pad/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/signature-pad @zag-js/svelte
3 | # or
4 | yarn add @zag-js/signature-pad @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/slider/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/slider @zag-js/svelte
3 | # or
4 | yarn add @zag-js/slider @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/splitter/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/splitter @zag-js/svelte
3 | # or
4 | yarn add @zag-js/splitter @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/switch/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/switch @zag-js/svelte
3 | # or
4 | yarn add @zag-js/switch @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/tabs/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/tabs/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tabs @zag-js/svelte
3 | # or
4 | yarn add @zag-js/tabs @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/tags-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
14 | ```
15 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/tags-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tags-input @zag-js/svelte
3 | # or
4 | yarn add @zag-js/tags-input @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/time-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/time-picker @zag-js/svelte
3 | # or
4 | yarn add @zag-js/time-picker @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/timer/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/timer @zag-js/svelte
3 | # or
4 | yarn add @zag-js/timer @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/toast/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/toast @zag-js/svelte
3 | # or
4 | yarn add @zag-js/toast @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/toggle-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/toggle-group @zag-js/svelte
3 | # or
4 | yarn add @zag-js/toggle-group @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/tooltip/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tooltip @zag-js/svelte
3 | # or
4 | yarn add @zag-js/tooltip @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/svelte/tour/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tour @zag-js/svelte
3 | # or
4 | yarn add @zag-js/tour @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/accordion/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/accordion/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/accordion @zag-js/vue
3 | # or
4 | yarn add @zag-js/accordion @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/angle-slider/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/angle-slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/angle-slider @zag-js/vue
3 | # or
4 | yarn add @zag-js/angle-slider @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/avatar/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/avatar @zag-js/vue
3 | # or
4 | yarn add @zag-js/avatar @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/carousel/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/carousel @zag-js/vue
3 | # or
4 | yarn add @zag-js/carousel @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/checkbox/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/checkbox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/checkbox @zag-js/vue
3 | # or
4 | yarn add @zag-js/checkbox @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/clipboard/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/clipboard @zag-js/vue
3 | # or
4 | yarn add @zag-js/clipboard @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/collapsible/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/collapsible/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/collapsible @zag-js/vue
3 | # or
4 | yarn add @zag-js/collapsible @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/color-picker/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
17 | ```
18 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/color-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/color-picker @zag-js/vue
3 | # or
4 | yarn add @zag-js/color-picker @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/combobox/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/combobox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/combobox @zag-js/vue
3 | # or
4 | yarn add @zag-js/combobox @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/date-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/date-picker @zag-js/vue
3 | # or
4 | yarn add @zag-js/date-picker @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/dialog/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/dialog/initial-focus.mdx:
--------------------------------------------------------------------------------
1 | ```html {5,10,16}
2 |
12 |
13 |
14 |
15 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/dialog/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/dialog @zag-js/vue
3 | # or
4 | yarn add @zag-js/dialog @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/editable/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/editable @zag-js/vue
3 | # or
4 | yarn add @zag-js/editable @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/file-upload/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/file-upload @zag-js/vue
3 | # or
4 | yarn add @zag-js/file-upload @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/floating-panel/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/floating-panel @zag-js/vue
3 | # or
4 | yarn add @zag-js/floating-panel @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/hover-card/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/hover-card @zag-js/vue
3 | # or
4 | yarn add @zag-js/hover-card @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/listbox/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/listbox @zag-js/vue
3 | # or
4 | yarn add @zag-js/listbox @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/menu/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/menu @zag-js/vue
3 | # or
4 | yarn add @zag-js/menu @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/number-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/number-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/number-input @zag-js/vue
3 | # or
4 | yarn add @zag-js/number-input @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/pagination/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/pagination @zag-js/vue
3 | # or
4 | yarn add @zag-js/pagination @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/password-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/password-input @zag-js/vue
3 | # or
4 | yarn add @zag-js/password-input @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/pin-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/pin-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/pin-input @zag-js/vue
3 | # or
4 | yarn add @zag-js/pin-input @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/popover/initial-focus.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
12 |
13 |
14 |
15 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/popover/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/popover @zag-js/vue
3 | # or
4 | yarn add @zag-js/popover @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/presence/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/presence @zag-js/vue
3 | # or
4 | yarn add @zag-js/presence @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/progress/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/progress @zag-js/vue
3 | # or
4 | yarn add @zag-js/progress @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/qr-code/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/qr-code @zag-js/vue
3 | # or
4 | yarn add @zag-js/qr-code @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/radio-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/radio-group @zag-js/vue
3 | # or
4 | yarn add @zag-js/radio-group @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/range-slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/slider @zag-js/vue
3 | # or
4 | yarn add @zag-js/slider @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/rating-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/rating-group @zag-js/vue
3 | # or
4 | yarn add @zag-js/rating-group @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/segmented-control/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/radio-group @zag-js/vue
3 | # or
4 | yarn add @zag-js/radio-group @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/select/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/select @zag-js/vue
3 | # or
4 | yarn add @zag-js/select @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/signature-pad/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/signature-pad @zag-js/vue
3 | # or
4 | yarn add @zag-js/signature-pad @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/slider/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/slider/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/slider @zag-js/vue
3 | # or
4 | yarn add @zag-js/slider @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/splitter/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/splitter @zag-js/vue
3 | # or
4 | yarn add @zag-js/splitter @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/steps/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/steps @zag-js/vue
3 | # or
4 | yarn add @zag-js/steps @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/switch/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/switch @zag-js/vue
3 | # or
4 | yarn add @zag-js/switch @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/tabs/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/tabs/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tabs @zag-js/vue
3 | # or
4 | yarn add @zag-js/tabs @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/tags-input/controlled.mdx:
--------------------------------------------------------------------------------
1 | ```html
2 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/tags-input/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tags-input @zag-js/vue
3 | # or
4 | yarn add @zag-js/tags-input @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/time-picker/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/time-picker @zag-js/vue
3 | # or
4 | yarn add @zag-js/time-picker @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/timer/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/timer @zag-js/vue
3 | # or
4 | yarn add @zag-js/timer @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/toast/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/toast @zag-js/vue
3 | # or
4 | yarn add @zag-js/toast @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/toggle-group/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/toggle-group @zag-js/vue
3 | # or
4 | yarn add @zag-js/toggle-group @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/tooltip/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tooltip @zag-js/vue
3 | # or
4 | yarn add @zag-js/tooltip @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/tour/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tour @zag-js/vue
3 | # or
4 | yarn add @zag-js/tour @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/data/snippets/vue/tree-view/installation.mdx:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/tree-view @zag-js/vue
3 | # or
4 | yarn add @zag-js/tree-view @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { FlatCompat } from "@eslint/eslintrc"
2 |
3 | const compat = new FlatCompat({
4 | baseDirectory: import.meta.dirname,
5 | })
6 |
7 | const eslintConfig = [
8 | ...compat.config({
9 | extends: ["next"],
10 | }),
11 | {
12 | rules: {
13 | "react-hooks/exhaustive-deps": "off",
14 | "react/no-unescaped-entities": "off",
15 | "@next/next/no-img-element": "off",
16 | },
17 | },
18 | ]
19 |
20 | export default eslintConfig
21 |
--------------------------------------------------------------------------------
/website/lib/markdown-toc.d.ts:
--------------------------------------------------------------------------------
1 | declare module "markdown-toc" {
2 | type TOCOptions = {
3 | append?: string
4 | filter?: Function
5 | slugify?: Function
6 | bullets?: string | Array
7 | maxdepth?: number
8 | firsth1?: boolean
9 | }
10 | export default function toc(
11 | str: string,
12 | options?: TOCOptions,
13 | ): {
14 | json: Array<{ content: string; slug: string; lvl: number }>
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/website/lib/normalize.ts:
--------------------------------------------------------------------------------
1 | const nameMap: Record = {
2 | "context-menu": "menu",
3 | "nested-menu": "menu",
4 | "progress-linear": "progress",
5 | "progress-circular": "progress",
6 | "range-slider": "slider",
7 | "timer-countdown": "timer",
8 | }
9 |
10 | export function normalizeComponentName(component: string) {
11 | return nameMap[component] || component
12 | }
13 |
--------------------------------------------------------------------------------
/website/lib/use-merge-refs.ts:
--------------------------------------------------------------------------------
1 | import type * as React from "react"
2 |
3 | export default function mergeRefs(
4 | ...refs: Array | React.LegacyRef>
5 | ): React.RefCallback {
6 | return (value) => {
7 | refs.forEach((ref) => {
8 | if (typeof ref === "function") {
9 | ref(value)
10 | } else if (ref != null) {
11 | ;(ref as React.MutableRefObject).current = value
12 | }
13 | })
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/website/lib/use-route-change.ts:
--------------------------------------------------------------------------------
1 | import { useRouter } from "next/router"
2 | import { useEffect } from "react"
3 |
4 | export function useRouteChange(fn: (url: string) => void) {
5 | const router = useRouter()
6 | useEffect(() => {
7 | const handleRouteChange = (url: string) => {
8 | fn(url)
9 | }
10 | router.events.on("routeChangeComplete", handleRouteChange)
11 | return () => {
12 | router.events.off("routeChangeComplete", handleRouteChange)
13 | }
14 | }, [])
15 | }
16 |
--------------------------------------------------------------------------------
/website/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.
6 |
--------------------------------------------------------------------------------
/website/pages/llms-vue.txt.tsx:
--------------------------------------------------------------------------------
1 | import type { GetServerSideProps } from "next"
2 | import { getComponentsPerFramework } from "lib/component-llm"
3 |
4 | export const getServerSideProps: GetServerSideProps = async ({ res }) => {
5 | res.setHeader("Content-Type", "text/plain")
6 |
7 | const text = getComponentsPerFramework("vue")
8 |
9 | res.write(text)
10 | res.end()
11 |
12 | return {
13 | props: {},
14 | }
15 | }
16 |
17 | export default function LLMsVueText() {
18 | return null
19 | }
20 |
--------------------------------------------------------------------------------
/website/plop/snippet/react/installation.mdx.hbs:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/{{component}} @zag-js/react
3 | # or
4 | yarn add @zag-js/{{component}} @zag-js/react
5 | ```
6 |
--------------------------------------------------------------------------------
/website/plop/snippet/solid/installation.mdx.hbs:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/{{component}} @zag-js/solid
3 | # or
4 | yarn add @zag-js/{{component}} @zag-js/solid
5 | ```
6 |
--------------------------------------------------------------------------------
/website/plop/snippet/svelte/installation.mdx.hbs:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/{{component}} @zag-js/svelte
3 | # or
4 | yarn add @zag-js/{{component}} @zag-js/svelte
5 | ```
6 |
--------------------------------------------------------------------------------
/website/plop/snippet/svelte/usage.mdx.hbs:
--------------------------------------------------------------------------------
1 | ```svelte
2 |
11 |
12 |
13 |
14 |
15 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/plop/snippet/vue/installation.mdx.hbs:
--------------------------------------------------------------------------------
1 | ```bash
2 | npm install @zag-js/{{component}} @zag-js/vue
3 | # or
4 | yarn add @zag-js/{{component}} @zag-js/vue
5 | ```
6 |
--------------------------------------------------------------------------------
/website/plop/snippet/vue/usage.mdx.hbs:
--------------------------------------------------------------------------------
1 | ```html
2 |
11 |
12 |
13 |
14 |
15 |
16 | ```
17 |
--------------------------------------------------------------------------------
/website/public/favicon/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/favicon/android-chrome-192x192.png
--------------------------------------------------------------------------------
/website/public/favicon/android-chrome-256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/favicon/android-chrome-256x256.png
--------------------------------------------------------------------------------
/website/public/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/favicon/apple-touch-icon.png
--------------------------------------------------------------------------------
/website/public/favicon/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #da532c
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/website/public/favicon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/website/public/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/website/public/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/favicon/favicon.ico
--------------------------------------------------------------------------------
/website/public/favicon/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/favicon/mstile-150x150.png
--------------------------------------------------------------------------------
/website/public/fonts/spline-sans.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/fonts/spline-sans.woff2
--------------------------------------------------------------------------------
/website/public/lee-rob-interview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/lee-rob-interview.png
--------------------------------------------------------------------------------
/website/public/og-banner-zag-course.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/og-banner-zag-course.png
--------------------------------------------------------------------------------
/website/public/open-graph/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/open-graph/twitter.png
--------------------------------------------------------------------------------
/website/public/open-graph/website.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/open-graph/website.png
--------------------------------------------------------------------------------
/website/public/oss-nominee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/oss-nominee.png
--------------------------------------------------------------------------------
/website/public/segun-adebayo-headshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chakra-ui/zag/5c760a769085232a096789c002ea6ab96608ffb6/website/public/segun-adebayo-headshot.png
--------------------------------------------------------------------------------
/website/styles/other.css:
--------------------------------------------------------------------------------
1 | .icon-gr-return path {
2 | stroke: currentColor;
3 | }
4 |
5 | #home-illustration {
6 | color: #D1E1DA;
7 | }
8 |
9 | [data-theme="dark"] #home-illustration {
10 | color: #283E35;
11 | }
--------------------------------------------------------------------------------