├── .github
└── workflows
│ └── pull-request.yaml
├── .gitignore
├── .npmrc
├── .nvmrc
├── .prettierrc
├── .vscode
└── settings.json
├── LICENSE
├── README.md
├── eslint.config.js
├── package.json
├── packages
├── ui-ingredients-plugin-tailwindcss
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── index.test.ts
│ │ └── index.ts
│ ├── tsconfig.json
│ ├── tsup.config.ts
│ └── vitest.config.ts
└── ui-ingredients
│ ├── README.md
│ ├── package.json
│ ├── src
│ ├── app.css
│ ├── app.d.ts
│ ├── app.html
│ ├── lib
│ │ ├── accordion
│ │ │ ├── accordion-anatomy.ts
│ │ │ ├── accordion-context.svelte.ts
│ │ │ ├── accordion-item-content.svelte
│ │ │ ├── accordion-item-indicator.svelte
│ │ │ ├── accordion-item-trigger.svelte
│ │ │ ├── accordion-item.svelte
│ │ │ ├── accordion-root.svelte
│ │ │ ├── accordion.ts
│ │ │ ├── create-accordion.svelte.ts
│ │ │ └── index.ts
│ │ ├── alert-dialog
│ │ │ ├── alert-dialog-anatomy.ts
│ │ │ ├── alert-dialog-backdrop.svelte
│ │ │ ├── alert-dialog-close-trigger.svelte
│ │ │ ├── alert-dialog-content.svelte
│ │ │ ├── alert-dialog-context.svelte.ts
│ │ │ ├── alert-dialog-description.svelte
│ │ │ ├── alert-dialog-positioner.svelte
│ │ │ ├── alert-dialog-root.svelte
│ │ │ ├── alert-dialog-title.svelte
│ │ │ ├── alert-dialog-trigger.svelte
│ │ │ ├── alert-dialog.ts
│ │ │ ├── create-alert-dialog.svelte.ts
│ │ │ └── index.ts
│ │ ├── alert
│ │ │ ├── alert-anatomy.ts
│ │ │ ├── alert-context.ts
│ │ │ ├── alert-description.svelte
│ │ │ ├── alert-indicator.svelte
│ │ │ ├── alert-root.svelte
│ │ │ ├── alert-title.svelte
│ │ │ ├── alert.ts
│ │ │ ├── create-alert.svelte.ts
│ │ │ └── index.ts
│ │ ├── anatomy.ts
│ │ ├── angle-slider
│ │ │ ├── angle-slider-anatomy.ts
│ │ │ ├── angle-slider-context.svelte.ts
│ │ │ ├── angle-slider-control.svelte
│ │ │ ├── angle-slider-hidden-input.svelte
│ │ │ ├── angle-slider-label.svelte
│ │ │ ├── angle-slider-marker-group.svelte
│ │ │ ├── angle-slider-marker.svelte
│ │ │ ├── angle-slider-root.svelte
│ │ │ ├── angle-slider-thumb.svelte
│ │ │ ├── angle-slider-value-text.svelte
│ │ │ ├── angle-slider.ts
│ │ │ ├── create-angle-slider.svelte.ts
│ │ │ └── index.ts
│ │ ├── avatar
│ │ │ ├── avatar-anatomy.ts
│ │ │ ├── avatar-context.svelte.ts
│ │ │ ├── avatar-fallback.svelte
│ │ │ ├── avatar-image.svelte
│ │ │ ├── avatar-root.svelte
│ │ │ ├── avatar.ts
│ │ │ ├── create-avatar.svelte.ts
│ │ │ └── index.ts
│ │ ├── breadcrumbs
│ │ │ ├── breadcrumbs-anatomy.ts
│ │ │ ├── breadcrumbs-context.svelte.ts
│ │ │ ├── breadcrumbs-item.svelte
│ │ │ ├── breadcrumbs-link.svelte
│ │ │ ├── breadcrumbs-list.svelte
│ │ │ ├── breadcrumbs-root.svelte
│ │ │ ├── breadcrumbs-separator.svelte
│ │ │ ├── breadcrumbs.ts
│ │ │ ├── create-breadcrumbs.ts
│ │ │ └── index.ts
│ │ ├── carousel
│ │ │ ├── carousel-anatomy.ts
│ │ │ ├── carousel-autoplay-trigger.svelte
│ │ │ ├── carousel-context.svelte.ts
│ │ │ ├── carousel-control.svelte
│ │ │ ├── carousel-indicator-group.svelte
│ │ │ ├── carousel-indicator.svelte
│ │ │ ├── carousel-item-group.svelte
│ │ │ ├── carousel-item.svelte
│ │ │ ├── carousel-next-trigger.svelte
│ │ │ ├── carousel-prev-trigger.svelte
│ │ │ ├── carousel-root.svelte
│ │ │ ├── carousel.ts
│ │ │ ├── create-carousel.svelte.ts
│ │ │ └── index.ts
│ │ ├── checkbox
│ │ │ ├── checkbox-anatomy.ts
│ │ │ ├── checkbox-context.svelte.ts
│ │ │ ├── checkbox-control.svelte
│ │ │ ├── checkbox-hidden-input.svelte
│ │ │ ├── checkbox-indicator.svelte
│ │ │ ├── checkbox-label.svelte
│ │ │ ├── checkbox-root.svelte
│ │ │ ├── checkbox.ts
│ │ │ ├── create-checkbox.svelte.ts
│ │ │ └── index.ts
│ │ ├── clipboard
│ │ │ ├── clipboard-anatomy.ts
│ │ │ ├── clipboard-context.svelte.ts
│ │ │ ├── clipboard-control.svelte
│ │ │ ├── clipboard-indicator.svelte
│ │ │ ├── clipboard-input.svelte
│ │ │ ├── clipboard-label.svelte
│ │ │ ├── clipboard-root.svelte
│ │ │ ├── clipboard-trigger.svelte
│ │ │ ├── clipboard.ts
│ │ │ ├── create-clipboard.svelte.ts
│ │ │ └── index.ts
│ │ ├── collapsible
│ │ │ ├── collapsible-anatomy.ts
│ │ │ ├── collapsible-content.svelte
│ │ │ ├── collapsible-context.svelte.ts
│ │ │ ├── collapsible-root.svelte
│ │ │ ├── collapsible-trigger.svelte
│ │ │ ├── collapsible.ts
│ │ │ ├── create-collapsible.svelte.ts
│ │ │ └── index.ts
│ │ ├── collection.ts
│ │ ├── color-picker
│ │ │ ├── color-picker-anatomy.ts
│ │ │ ├── color-picker-area-background.svelte
│ │ │ ├── color-picker-area-thumb.svelte
│ │ │ ├── color-picker-area.svelte
│ │ │ ├── color-picker-channel-input.svelte
│ │ │ ├── color-picker-channel-slider-label.svelte
│ │ │ ├── color-picker-channel-slider-thumb.svelte
│ │ │ ├── color-picker-channel-slider-track.svelte
│ │ │ ├── color-picker-channel-slider-value-text.svelte
│ │ │ ├── color-picker-channel-slider.svelte
│ │ │ ├── color-picker-content.svelte
│ │ │ ├── color-picker-context.svelte.ts
│ │ │ ├── color-picker-control.svelte
│ │ │ ├── color-picker-eye-dropper-trigger.svelte
│ │ │ ├── color-picker-format-select.svelte
│ │ │ ├── color-picker-format-trigger.svelte
│ │ │ ├── color-picker-hidden-input.svelte
│ │ │ ├── color-picker-label.svelte
│ │ │ ├── color-picker-positioner.svelte
│ │ │ ├── color-picker-root.svelte
│ │ │ ├── color-picker-swatch-group.svelte
│ │ │ ├── color-picker-swatch-indicator.svelte
│ │ │ ├── color-picker-swatch-trigger.svelte
│ │ │ ├── color-picker-swatch.svelte
│ │ │ ├── color-picker-transparency-grid.svelte
│ │ │ ├── color-picker-trigger.svelte
│ │ │ ├── color-picker-value-swatch.svelte
│ │ │ ├── color-picker-value-text.svelte
│ │ │ ├── color-picker-view.svelte
│ │ │ ├── color-picker.ts
│ │ │ ├── create-color-picker.svelte.ts
│ │ │ └── index.ts
│ │ ├── combobox
│ │ │ ├── combobox-anatomy.ts
│ │ │ ├── combobox-clear-trigger.svelte
│ │ │ ├── combobox-content.svelte
│ │ │ ├── combobox-context.svelte.ts
│ │ │ ├── combobox-control.svelte
│ │ │ ├── combobox-input.svelte
│ │ │ ├── combobox-item-group-label.svelte
│ │ │ ├── combobox-item-group.svelte
│ │ │ ├── combobox-item-indicator.svelte
│ │ │ ├── combobox-item-text.svelte
│ │ │ ├── combobox-item.svelte
│ │ │ ├── combobox-label.svelte
│ │ │ ├── combobox-list.svelte
│ │ │ ├── combobox-positioner.svelte
│ │ │ ├── combobox-root.svelte
│ │ │ ├── combobox-trigger.svelte
│ │ │ ├── combobox.ts
│ │ │ ├── create-combobox.svelte.ts
│ │ │ └── index.ts
│ │ ├── create-context.svelte.ts
│ │ ├── create-context.test.ts
│ │ ├── create-split-props.test.ts
│ │ ├── create-split-props.ts
│ │ ├── date-picker
│ │ │ ├── create-date-picker.svelte.ts
│ │ │ ├── date-picker-anatomy.ts
│ │ │ ├── date-picker-clear-trigger.svelte
│ │ │ ├── date-picker-content.svelte
│ │ │ ├── date-picker-context.svelte.ts
│ │ │ ├── date-picker-control.svelte
│ │ │ ├── date-picker-day-table-cell-trigger.svelte
│ │ │ ├── date-picker-day-table-cell.svelte
│ │ │ ├── date-picker-input.svelte
│ │ │ ├── date-picker-label.svelte
│ │ │ ├── date-picker-month-select.svelte
│ │ │ ├── date-picker-month-table-cell-trigger.svelte
│ │ │ ├── date-picker-month-table-cell.svelte
│ │ │ ├── date-picker-next-trigger.svelte
│ │ │ ├── date-picker-positioner.svelte
│ │ │ ├── date-picker-preset-trigger.svelte
│ │ │ ├── date-picker-prev-trigger.svelte
│ │ │ ├── date-picker-range-text.svelte
│ │ │ ├── date-picker-root.svelte
│ │ │ ├── date-picker-table-body.svelte
│ │ │ ├── date-picker-table-head.svelte
│ │ │ ├── date-picker-table-header.svelte
│ │ │ ├── date-picker-table-row.svelte
│ │ │ ├── date-picker-table.svelte
│ │ │ ├── date-picker-trigger.svelte
│ │ │ ├── date-picker-view-control.svelte
│ │ │ ├── date-picker-view-trigger.svelte
│ │ │ ├── date-picker-view.svelte
│ │ │ ├── date-picker-year-select.svelte
│ │ │ ├── date-picker-year-table-cell-trigger.svelte
│ │ │ ├── date-picker-year-table-cell.svelte
│ │ │ ├── date-picker.ts
│ │ │ └── index.ts
│ │ ├── dialog
│ │ │ ├── create-dialog.svelte.ts
│ │ │ ├── dialog-anatomy.ts
│ │ │ ├── dialog-backdrop.svelte
│ │ │ ├── dialog-close-trigger.svelte
│ │ │ ├── dialog-content.svelte
│ │ │ ├── dialog-context.svelte.ts
│ │ │ ├── dialog-description.svelte
│ │ │ ├── dialog-positioner.svelte
│ │ │ ├── dialog-root.svelte
│ │ │ ├── dialog-title.svelte
│ │ │ ├── dialog-trigger.svelte
│ │ │ ├── dialog.ts
│ │ │ └── index.ts
│ │ ├── drawer
│ │ │ ├── create-drawer.svelte.ts
│ │ │ ├── drawer-anatomy.ts
│ │ │ ├── drawer-backdrop.svelte
│ │ │ ├── drawer-body.svelte
│ │ │ ├── drawer-close-trigger.svelte
│ │ │ ├── drawer-content.svelte
│ │ │ ├── drawer-context.svelte.ts
│ │ │ ├── drawer-description.svelte
│ │ │ ├── drawer-footer.svelte
│ │ │ ├── drawer-header.svelte
│ │ │ ├── drawer-positioner.svelte
│ │ │ ├── drawer-root.svelte
│ │ │ ├── drawer-title.svelte
│ │ │ ├── drawer-trigger.svelte
│ │ │ ├── drawer.ts
│ │ │ └── index.ts
│ │ ├── editable
│ │ │ ├── create-editable.svelte.ts
│ │ │ ├── editable-anatomy.ts
│ │ │ ├── editable-area.svelte
│ │ │ ├── editable-cancel-trigger.svelte
│ │ │ ├── editable-context.svelte.ts
│ │ │ ├── editable-control.svelte
│ │ │ ├── editable-edit-trigger.svelte
│ │ │ ├── editable-input.svelte
│ │ │ ├── editable-label.svelte
│ │ │ ├── editable-preview.svelte
│ │ │ ├── editable-root.svelte
│ │ │ ├── editable-submit-trigger.svelte
│ │ │ ├── editable.ts
│ │ │ └── index.ts
│ │ ├── environment-provider
│ │ │ ├── enviroment-provider-context.svelte.ts
│ │ │ ├── environment-provider.svelte
│ │ │ └── index.ts
│ │ ├── field
│ │ │ ├── create-field.svelte.ts
│ │ │ ├── field-anatomy.ts
│ │ │ ├── field-context.svelte.ts
│ │ │ ├── field-error-text.svelte
│ │ │ ├── field-helper-text.svelte
│ │ │ ├── field-input.svelte
│ │ │ ├── field-label.svelte
│ │ │ ├── field-required-indicator.svelte
│ │ │ ├── field-root.svelte
│ │ │ ├── field-select.svelte
│ │ │ ├── field-textarea.svelte
│ │ │ ├── field.ts
│ │ │ └── index.ts
│ │ ├── file-upload
│ │ │ ├── create-file-upload.svelte.ts
│ │ │ ├── file-upload-anatomy.ts
│ │ │ ├── file-upload-clear-trigger.svelte
│ │ │ ├── file-upload-context.svelte.ts
│ │ │ ├── file-upload-dropzone.svelte
│ │ │ ├── file-upload-hidden-input.svelte
│ │ │ ├── file-upload-item-delete-trigger.svelte
│ │ │ ├── file-upload-item-group.svelte
│ │ │ ├── file-upload-item-name.svelte
│ │ │ ├── file-upload-item-preview-image.svelte
│ │ │ ├── file-upload-item-preview.svelte
│ │ │ ├── file-upload-item-size-text.svelte
│ │ │ ├── file-upload-item.svelte
│ │ │ ├── file-upload-label.svelte
│ │ │ ├── file-upload-root.svelte
│ │ │ ├── file-upload-trigger.svelte
│ │ │ ├── file-upload.ts
│ │ │ └── index.ts
│ │ ├── floating-panel
│ │ │ ├── create-floating-panel.svelte.ts
│ │ │ ├── floating-panel-anatomy.ts
│ │ │ ├── floating-panel-body.svelte
│ │ │ ├── floating-panel-close-trigger.svelte
│ │ │ ├── floating-panel-content.svelte
│ │ │ ├── floating-panel-context.svelte.ts
│ │ │ ├── floating-panel-control.svelte
│ │ │ ├── floating-panel-drag-trigger.svelte
│ │ │ ├── floating-panel-header.svelte
│ │ │ ├── floating-panel-positioner.svelte
│ │ │ ├── floating-panel-resize-trigger.svelte
│ │ │ ├── floating-panel-root.svelte
│ │ │ ├── floating-panel-stage-trigger.svelte
│ │ │ ├── floating-panel-title.svelte
│ │ │ ├── floating-panel-trigger.svelte
│ │ │ ├── floating-panel.ts
│ │ │ └── index.ts
│ │ ├── focus-trap
│ │ │ ├── focus-trap.svelte
│ │ │ └── index.ts
│ │ ├── highlight
│ │ │ ├── highlight.svelte
│ │ │ └── index.ts
│ │ ├── hover-card
│ │ │ ├── create-hover-card.svelte.ts
│ │ │ ├── hover-card-anatomy.ts
│ │ │ ├── hover-card-arrow-tip.svelte
│ │ │ ├── hover-card-arrow.svelte
│ │ │ ├── hover-card-content.svelte
│ │ │ ├── hover-card-context.svelte.ts
│ │ │ ├── hover-card-positioner.svelte
│ │ │ ├── hover-card-root.svelte
│ │ │ ├── hover-card-trigger.svelte
│ │ │ ├── hover-card.ts
│ │ │ └── index.ts
│ │ ├── index.ts
│ │ ├── listbox
│ │ │ ├── create-listbox.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── listbox-anatomy.ts
│ │ │ ├── listbox-content.svelte
│ │ │ ├── listbox-context.svelte.ts
│ │ │ ├── listbox-input.svelte
│ │ │ ├── listbox-item-group-label.svelte
│ │ │ ├── listbox-item-group.svelte
│ │ │ ├── listbox-item-indicator.svelte
│ │ │ ├── listbox-item-text.svelte
│ │ │ ├── listbox-item.svelte
│ │ │ ├── listbox-label.svelte
│ │ │ ├── listbox-root.svelte
│ │ │ ├── listbox-value-text.svelte
│ │ │ └── listbox.ts
│ │ ├── locale-provider
│ │ │ ├── index.ts
│ │ │ ├── locale-provider-context.svelte.ts
│ │ │ └── locale-provider.svelte
│ │ ├── menu
│ │ │ ├── create-menu.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── menu-anatomy.ts
│ │ │ ├── menu-arrow-tip.svelte
│ │ │ ├── menu-arrow.svelte
│ │ │ ├── menu-content.svelte
│ │ │ ├── menu-context-trigger.svelte
│ │ │ ├── menu-context.svelte.ts
│ │ │ ├── menu-indicator.svelte
│ │ │ ├── menu-item-group-label.svelte
│ │ │ ├── menu-item-group.svelte
│ │ │ ├── menu-item.svelte
│ │ │ ├── menu-option-item-indicator.svelte
│ │ │ ├── menu-option-item-text.svelte
│ │ │ ├── menu-option-item.svelte
│ │ │ ├── menu-positioner.svelte
│ │ │ ├── menu-root.svelte
│ │ │ ├── menu-separator.svelte
│ │ │ ├── menu-trigger-item.svelte
│ │ │ ├── menu-trigger.svelte
│ │ │ └── menu.ts
│ │ ├── merge-props.test.ts
│ │ ├── merge-props.ts
│ │ ├── number-input
│ │ │ ├── create-number-input.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── number-input-anatomy.ts
│ │ │ ├── number-input-context.svelte.ts
│ │ │ ├── number-input-control.svelte
│ │ │ ├── number-input-decrement-trigger.svelte
│ │ │ ├── number-input-increment-trigger.svelte
│ │ │ ├── number-input-input.svelte
│ │ │ ├── number-input-label.svelte
│ │ │ ├── number-input-root.svelte
│ │ │ ├── number-input-scrubber.svelte
│ │ │ ├── number-input-value-text.svelte
│ │ │ └── number-input.ts
│ │ ├── pagination
│ │ │ ├── create-pagination.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── pagination-anatomy.ts
│ │ │ ├── pagination-context.svelte.ts
│ │ │ ├── pagination-ellipsis.svelte
│ │ │ ├── pagination-item.svelte
│ │ │ ├── pagination-next-trigger.svelte
│ │ │ ├── pagination-prev-trigger.svelte
│ │ │ ├── pagination-root.svelte
│ │ │ └── pagination.ts
│ │ ├── pin-input
│ │ │ ├── create-pin-input.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── pin-input-anatomy.ts
│ │ │ ├── pin-input-context.svelte.ts
│ │ │ ├── pin-input-control.svelte
│ │ │ ├── pin-input-hidden-input.svelte
│ │ │ ├── pin-input-input.svelte
│ │ │ ├── pin-input-label.svelte
│ │ │ ├── pin-input-root.svelte
│ │ │ └── pin-input.ts
│ │ ├── popover
│ │ │ ├── create-popover.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── popover-anatomy.ts
│ │ │ ├── popover-anchor.svelte
│ │ │ ├── popover-arrow-tip.svelte
│ │ │ ├── popover-arrow.svelte
│ │ │ ├── popover-close-trigger.svelte
│ │ │ ├── popover-content.svelte
│ │ │ ├── popover-context.svelte.ts
│ │ │ ├── popover-description.svelte
│ │ │ ├── popover-indicator.svelte
│ │ │ ├── popover-positioner.svelte
│ │ │ ├── popover-root.svelte
│ │ │ ├── popover-title.svelte
│ │ │ ├── popover-trigger.svelte
│ │ │ └── popover.ts
│ │ ├── portal
│ │ │ ├── index.ts
│ │ │ ├── portal-context.svelte.ts
│ │ │ ├── portal-provider.svelte
│ │ │ └── portal.svelte
│ │ ├── presence
│ │ │ ├── create-presence.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── presence-context.svelte.ts
│ │ │ └── presence.svelte
│ │ ├── progress
│ │ │ ├── create-progress.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── progress-anatomy.ts
│ │ │ ├── progress-circle-range.svelte
│ │ │ ├── progress-circle-track.svelte
│ │ │ ├── progress-circle.svelte
│ │ │ ├── progress-context.svelte.ts
│ │ │ ├── progress-label.svelte
│ │ │ ├── progress-range.svelte
│ │ │ ├── progress-root.svelte
│ │ │ ├── progress-track.svelte
│ │ │ ├── progress-value-text.svelte
│ │ │ ├── progress-view.svelte
│ │ │ └── progress.ts
│ │ ├── qr-code
│ │ │ ├── create-qr-code.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── qr-code-anatomy.ts
│ │ │ ├── qr-code-context.svelte.ts
│ │ │ ├── qr-code-download-trigger.svelte
│ │ │ ├── qr-code-frame.svelte
│ │ │ ├── qr-code-overlay.svelte
│ │ │ ├── qr-code-pattern.svelte
│ │ │ ├── qr-code-root.svelte
│ │ │ └── qr-code.ts
│ │ ├── radio-group
│ │ │ ├── create-radio-group.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── radio-group-anatomy.ts
│ │ │ ├── radio-group-context.svelte.ts
│ │ │ ├── radio-group-indicator.svelte
│ │ │ ├── radio-group-item-control.svelte
│ │ │ ├── radio-group-item-hidden-input.svelte
│ │ │ ├── radio-group-item-text.svelte
│ │ │ ├── radio-group-item.svelte
│ │ │ ├── radio-group-label.svelte
│ │ │ ├── radio-group-root.svelte
│ │ │ └── radio-group.ts
│ │ ├── rating-group
│ │ │ ├── create-rating-group.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── rating-group-anatomy.ts
│ │ │ ├── rating-group-context.svelte.ts
│ │ │ ├── rating-group-control.svelte
│ │ │ ├── rating-group-hidden-input.svelte
│ │ │ ├── rating-group-item.svelte
│ │ │ ├── rating-group-label.svelte
│ │ │ ├── rating-group-root.svelte
│ │ │ └── rating-group.ts
│ │ ├── segment-group
│ │ │ ├── create-segment-group.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── segment-group-anatomy.ts
│ │ │ ├── segment-group-context.svelte.ts
│ │ │ ├── segment-group-indicator.svelte
│ │ │ ├── segment-group-item-control.svelte
│ │ │ ├── segment-group-item-hidden-input.svelte
│ │ │ ├── segment-group-item-text.svelte
│ │ │ ├── segment-group-item.svelte
│ │ │ ├── segment-group-label.svelte
│ │ │ ├── segment-group-root.svelte
│ │ │ └── segment-group.ts
│ │ ├── select
│ │ │ ├── create-select.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── select-anatomy.ts
│ │ │ ├── select-clear-trigger.svelte
│ │ │ ├── select-content.svelte
│ │ │ ├── select-context.svelte.ts
│ │ │ ├── select-control.svelte
│ │ │ ├── select-hidden-select.svelte
│ │ │ ├── select-indicator.svelte
│ │ │ ├── select-item-group-label.svelte
│ │ │ ├── select-item-group.svelte
│ │ │ ├── select-item-indicator.svelte
│ │ │ ├── select-item-text.svelte
│ │ │ ├── select-item.svelte
│ │ │ ├── select-label.svelte
│ │ │ ├── select-list.svelte
│ │ │ ├── select-positioner.svelte
│ │ │ ├── select-root.svelte
│ │ │ ├── select-trigger.svelte
│ │ │ ├── select-value-text.svelte
│ │ │ └── select.ts
│ │ ├── signature-pad
│ │ │ ├── create-signature-pad.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── signature-pad-anatomy.ts
│ │ │ ├── signature-pad-clear-trigger.svelte
│ │ │ ├── signature-pad-context.svelte.ts
│ │ │ ├── signature-pad-control.svelte
│ │ │ ├── signature-pad-current-segment-path.svelte
│ │ │ ├── signature-pad-guide.svelte
│ │ │ ├── signature-pad-hidden-input.svelte
│ │ │ ├── signature-pad-label.svelte
│ │ │ ├── signature-pad-root.svelte
│ │ │ ├── signature-pad-segment-path.svelte
│ │ │ ├── signature-pad-segment.svelte
│ │ │ └── signature-pad.ts
│ │ ├── slider
│ │ │ ├── create-slider.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── slider-anatomy.ts
│ │ │ ├── slider-context.svelte.ts
│ │ │ ├── slider-control.svelte
│ │ │ ├── slider-dragging-indicator.svelte
│ │ │ ├── slider-hidden-input.svelte
│ │ │ ├── slider-label.svelte
│ │ │ ├── slider-marker-group.svelte
│ │ │ ├── slider-marker.svelte
│ │ │ ├── slider-range.svelte
│ │ │ ├── slider-root.svelte
│ │ │ ├── slider-thumb.svelte
│ │ │ ├── slider-track.svelte
│ │ │ ├── slider-value-text.svelte
│ │ │ └── slider.ts
│ │ ├── splitter
│ │ │ ├── create-splitter.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── splitter-anatomy.ts
│ │ │ ├── splitter-context.svelte.ts
│ │ │ ├── splitter-panel.svelte
│ │ │ ├── splitter-resize-trigger.svelte
│ │ │ ├── splitter-root.svelte
│ │ │ └── splitter.ts
│ │ ├── steps
│ │ │ ├── create-steps.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── steps-anatomy.ts
│ │ │ ├── steps-completed-content.svelte
│ │ │ ├── steps-content.svelte
│ │ │ ├── steps-context.svelte.ts
│ │ │ ├── steps-indicator.svelte
│ │ │ ├── steps-item.svelte
│ │ │ ├── steps-list.svelte
│ │ │ ├── steps-next-trigger.svelte
│ │ │ ├── steps-prev-trigger.svelte
│ │ │ ├── steps-progress.svelte
│ │ │ ├── steps-root.svelte
│ │ │ ├── steps-separator.svelte
│ │ │ ├── steps-trigger.svelte
│ │ │ └── steps.ts
│ │ ├── switch
│ │ │ ├── create-switch.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── switch-anatomy.ts
│ │ │ ├── switch-context.svelte.ts
│ │ │ ├── switch-control.svelte
│ │ │ ├── switch-hidden-input.svelte
│ │ │ ├── switch-label.svelte
│ │ │ ├── switch-root.svelte
│ │ │ ├── switch-thumb.svelte
│ │ │ └── switch.ts
│ │ ├── tabs
│ │ │ ├── create-tabs.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── tabs-anatomy.ts
│ │ │ ├── tabs-content.svelte
│ │ │ ├── tabs-context.svelte.ts
│ │ │ ├── tabs-indicator.svelte
│ │ │ ├── tabs-list.svelte
│ │ │ ├── tabs-root.svelte
│ │ │ ├── tabs-trigger.svelte
│ │ │ └── tabs.ts
│ │ ├── tags-input
│ │ │ ├── create-tags-input.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── tags-input-anatomy.ts
│ │ │ ├── tags-input-clear-trigger.svelte
│ │ │ ├── tags-input-context.svelte.ts
│ │ │ ├── tags-input-control.svelte
│ │ │ ├── tags-input-hidden-input.svelte
│ │ │ ├── tags-input-input.svelte
│ │ │ ├── tags-input-item-delete-trigger.svelte
│ │ │ ├── tags-input-item-input.svelte
│ │ │ ├── tags-input-item-preview.svelte
│ │ │ ├── tags-input-item-text.svelte
│ │ │ ├── tags-input-item.svelte
│ │ │ ├── tags-input-label.svelte
│ │ │ ├── tags-input-root.svelte
│ │ │ └── tags-input.ts
│ │ ├── time-picker
│ │ │ ├── create-time-picker.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── time-picker-anatomy.ts
│ │ │ ├── time-picker-clear-trigger.svelte
│ │ │ ├── time-picker-column.svelte
│ │ │ ├── time-picker-content.svelte
│ │ │ ├── time-picker-context.svelte.ts
│ │ │ ├── time-picker-control.svelte
│ │ │ ├── time-picker-hour-cell.svelte
│ │ │ ├── time-picker-input.svelte
│ │ │ ├── time-picker-label.svelte
│ │ │ ├── time-picker-minute-cell.svelte
│ │ │ ├── time-picker-period-cell.svelte
│ │ │ ├── time-picker-positioner.svelte
│ │ │ ├── time-picker-root.svelte
│ │ │ ├── time-picker-second-cell.svelte
│ │ │ ├── time-picker-spacer.svelte
│ │ │ ├── time-picker-trigger.svelte
│ │ │ └── time-picker.ts
│ │ ├── timer
│ │ │ ├── create-timer.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── timer-action-trigger.svelte
│ │ │ ├── timer-anatomy.ts
│ │ │ ├── timer-area.svelte
│ │ │ ├── timer-context.svelte.ts
│ │ │ ├── timer-control.svelte
│ │ │ ├── timer-item-label.svelte
│ │ │ ├── timer-item-value.svelte
│ │ │ ├── timer-item.svelte
│ │ │ ├── timer-root.svelte
│ │ │ ├── timer-separator.svelte
│ │ │ └── timer.ts
│ │ ├── toast
│ │ │ ├── create-toaster.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── toast-action-trigger.svelte
│ │ │ ├── toast-anatomy.ts
│ │ │ ├── toast-close-trigger.svelte
│ │ │ ├── toast-context.svelte.ts
│ │ │ ├── toast-description.svelte
│ │ │ ├── toast-ghost-after.svelte
│ │ │ ├── toast-ghost-before.svelte
│ │ │ ├── toast-provider.svelte
│ │ │ ├── toast-root.svelte
│ │ │ ├── toast-title.svelte
│ │ │ ├── toast.ts
│ │ │ └── toaster.svelte
│ │ ├── toggle-group
│ │ │ ├── create-toggle-group.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── toggle-group-anatomy.ts
│ │ │ ├── toggle-group-context.svelte.ts
│ │ │ ├── toggle-group-item.svelte
│ │ │ ├── toggle-group-root.svelte
│ │ │ └── toggle-group.ts
│ │ ├── toggle
│ │ │ ├── create-toggle.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── toggle-anatomy.ts
│ │ │ ├── toggle-context.svelte.ts
│ │ │ ├── toggle-indicator.svelte
│ │ │ ├── toggle-root.svelte
│ │ │ └── toggle.ts
│ │ ├── tooltip
│ │ │ ├── create-tooltip.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── tooltip-anatomy.ts
│ │ │ ├── tooltip-arrow-tip.svelte
│ │ │ ├── tooltip-arrow.svelte
│ │ │ ├── tooltip-content.svelte
│ │ │ ├── tooltip-context.svelte.ts
│ │ │ ├── tooltip-positioner.svelte
│ │ │ ├── tooltip-root.svelte
│ │ │ ├── tooltip-trigger.svelte
│ │ │ └── tooltip.ts
│ │ ├── tour
│ │ │ ├── create-tour.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── tour-action-trigger.svelte
│ │ │ ├── tour-anatomy.ts
│ │ │ ├── tour-arrow-tip.svelte
│ │ │ ├── tour-arrow.svelte
│ │ │ ├── tour-backdrop.svelte
│ │ │ ├── tour-close-trigger.svelte
│ │ │ ├── tour-content.svelte
│ │ │ ├── tour-context.svelte.ts
│ │ │ ├── tour-description.svelte
│ │ │ ├── tour-positioner.svelte
│ │ │ ├── tour-progress-text.svelte
│ │ │ ├── tour-root.svelte
│ │ │ ├── tour-spotlight.svelte
│ │ │ ├── tour-title.svelte
│ │ │ ├── tour-trigger.svelte
│ │ │ └── tour.ts
│ │ ├── tree-view
│ │ │ ├── create-tree-view.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── tree-view-anatomy.ts
│ │ │ ├── tree-view-branch-content.svelte
│ │ │ ├── tree-view-branch-control.svelte
│ │ │ ├── tree-view-branch-indent-guide.svelte
│ │ │ ├── tree-view-branch-indicator.svelte
│ │ │ ├── tree-view-branch-text.svelte
│ │ │ ├── tree-view-branch-trigger.svelte
│ │ │ ├── tree-view-branch.svelte
│ │ │ ├── tree-view-context.svelte.ts
│ │ │ ├── tree-view-item-indicator.svelte
│ │ │ ├── tree-view-item-text.svelte
│ │ │ ├── tree-view-item.svelte
│ │ │ ├── tree-view-label.svelte
│ │ │ ├── tree-view-root.svelte
│ │ │ ├── tree-view-tree.svelte
│ │ │ ├── tree-view.ts
│ │ │ └── types.ts
│ │ └── types.ts
│ ├── routes
│ │ ├── +layout.svelte
│ │ ├── +page.svelte
│ │ ├── +page.ts
│ │ ├── accordion
│ │ │ └── +page.svelte
│ │ ├── alert-dialog
│ │ │ └── +page.svelte
│ │ ├── alert
│ │ │ └── +page.svelte
│ │ ├── angle-slider
│ │ │ └── +page.svelte
│ │ ├── avatar
│ │ │ └── +page.svelte
│ │ ├── calendar-icon.svelte
│ │ ├── carousel
│ │ │ └── +page.svelte
│ │ ├── check-icon.svelte
│ │ ├── checkbox
│ │ │ └── +page.svelte
│ │ ├── chevron-down-icon.svelte
│ │ ├── chevron-left-icon.svelte
│ │ ├── chevron-right-icon.svelte
│ │ ├── chevron-up-icon.svelte
│ │ ├── clipboard
│ │ │ └── +page.svelte
│ │ ├── collapsible
│ │ │ └── +page.svelte
│ │ ├── color-picker
│ │ │ └── +page.svelte
│ │ ├── combobox
│ │ │ └── +page.svelte
│ │ ├── copy-icon.svelte
│ │ ├── date-picker
│ │ │ ├── +layout.svelte
│ │ │ ├── +page.svelte
│ │ │ └── range
│ │ │ │ └── +page.svelte
│ │ ├── dialog
│ │ │ └── +page.svelte
│ │ ├── drawer
│ │ │ └── +page.svelte
│ │ ├── dropper-icon.svelte
│ │ ├── editable
│ │ │ └── +page.svelte
│ │ ├── field
│ │ │ └── +page.svelte
│ │ ├── file-icon.svelte
│ │ ├── file-upload
│ │ │ └── +page.svelte
│ │ ├── focus-trap
│ │ │ └── +page.svelte
│ │ ├── folder-icon.svelte
│ │ ├── highlight
│ │ │ └── +page.svelte
│ │ ├── hover-card
│ │ │ └── +page.svelte
│ │ ├── info-circle-icon.svelte
│ │ ├── listbox
│ │ │ └── +page.svelte
│ │ ├── menu
│ │ │ ├── +layout.svelte
│ │ │ ├── +page.svelte
│ │ │ ├── checkbox
│ │ │ │ └── +page.svelte
│ │ │ ├── context
│ │ │ │ └── +page.svelte
│ │ │ └── nested
│ │ │ │ └── +page.svelte
│ │ ├── number-input
│ │ │ └── +page.svelte
│ │ ├── pagination
│ │ │ └── +page.svelte
│ │ ├── pin-input
│ │ │ └── +page.svelte
│ │ ├── popover
│ │ │ └── +page.svelte
│ │ ├── presence
│ │ │ └── +page.svelte
│ │ ├── progress
│ │ │ └── +page.svelte
│ │ ├── qr-code
│ │ │ └── +page.svelte
│ │ ├── radio-group
│ │ │ └── +page.svelte
│ │ ├── rating-group
│ │ │ └── +page.svelte
│ │ ├── refresh-icon.svelte
│ │ ├── segment-group
│ │ │ └── +page.svelte
│ │ ├── select
│ │ │ └── +page.svelte
│ │ ├── signature-pad
│ │ │ └── +page.svelte
│ │ ├── slider
│ │ │ └── +page.svelte
│ │ ├── splitter
│ │ │ └── +page.svelte
│ │ ├── star-icon.svelte
│ │ ├── steps
│ │ │ └── +page.svelte
│ │ ├── switch
│ │ │ └── +page.svelte
│ │ ├── tabs
│ │ │ └── +page.svelte
│ │ ├── tags-input
│ │ │ └── +page.svelte
│ │ ├── timer
│ │ │ └── +page.svelte
│ │ ├── toast
│ │ │ └── +page.svelte
│ │ ├── toaster.svelte.ts
│ │ ├── toggle-group
│ │ │ └── +page.svelte
│ │ ├── toggle
│ │ │ └── +page.svelte
│ │ ├── tooltip
│ │ │ └── +page.svelte
│ │ ├── tour
│ │ │ └── +page.svelte
│ │ ├── tree-view
│ │ │ └── +page.svelte
│ │ └── x-icon.svelte
│ └── tests
│ │ ├── accordion
│ │ ├── accordion.svelte
│ │ └── accordion.test.ts
│ │ ├── alert-dialog
│ │ ├── alert-dialog.svelte
│ │ └── alert-dialog.test.ts
│ │ ├── alert
│ │ ├── alert.svelte
│ │ └── alert.test.ts
│ │ ├── avatar
│ │ ├── avatar.svelte
│ │ └── avatar.test.ts
│ │ ├── breadcrumbs
│ │ ├── breadcrumbs.svelte
│ │ └── breadcrumbs.test.ts
│ │ ├── carousel
│ │ ├── carousel.svelte
│ │ └── carousel.test.ts
│ │ ├── checkbox
│ │ ├── checkbox.svelte
│ │ └── checkbox.test.ts
│ │ ├── clipboard
│ │ ├── clipboard.svelte
│ │ └── clipboard.test.ts
│ │ ├── collapsible
│ │ ├── collapsible.svelte
│ │ └── collapsible.test.ts
│ │ ├── combobox
│ │ ├── combobox.svelte
│ │ └── combobox.test.ts
│ │ ├── date-picker
│ │ ├── date-picker.svelte
│ │ └── date-picker.test.ts
│ │ ├── dialog
│ │ ├── dialog.svelte
│ │ └── dialog.test.ts
│ │ ├── drawer
│ │ ├── drawer.svelte
│ │ └── drawer.test.ts
│ │ ├── editable
│ │ ├── editable.svelte
│ │ └── editable.test.ts
│ │ ├── field
│ │ ├── field.svelte
│ │ └── field.test.ts
│ │ ├── file-upload
│ │ ├── file-upload.svelte
│ │ └── file-upload.test.ts
│ │ ├── hover-card
│ │ ├── hover-card.svelte
│ │ └── hover-card.test.ts
│ │ ├── menu
│ │ ├── menu.svelte
│ │ └── menu.test.ts
│ │ ├── number-input
│ │ ├── number-input.svelte
│ │ └── number-input.test.ts
│ │ ├── pagination
│ │ ├── pagination.svelte
│ │ └── pagination.test.ts
│ │ ├── pin-input
│ │ ├── pin-input.svelte
│ │ └── pin-input.test.ts
│ │ ├── popover
│ │ ├── popover.svelte
│ │ └── popover.test.ts
│ │ ├── progress
│ │ ├── progress.svelte
│ │ └── progress.test.ts
│ │ ├── qr-code
│ │ ├── qr-code.svelte
│ │ └── qr-code.test.ts
│ │ ├── radio-group
│ │ ├── radio-group.svelte
│ │ └── radio-group.test.ts
│ │ ├── rating-group
│ │ ├── rating-group.svelte
│ │ └── rating-group.test.ts
│ │ ├── segment-group
│ │ ├── segment-group.svelte
│ │ └── segment-group.test.ts
│ │ ├── select
│ │ ├── select.svelte
│ │ └── select.test.ts
│ │ ├── signature-pad
│ │ ├── signature-pad.svelte
│ │ └── signature-pad.test.ts
│ │ ├── slider
│ │ ├── slider.svelte
│ │ └── slider.test.ts
│ │ ├── splitter
│ │ ├── splitter.svelte
│ │ └── splitter.test.ts
│ │ ├── steps
│ │ ├── steps.svelte
│ │ └── steps.test.ts
│ │ ├── switch
│ │ ├── switch.svelte
│ │ └── switch.test.ts
│ │ ├── tabs
│ │ ├── tabs.svelte
│ │ └── tabs.test.ts
│ │ ├── tags-input
│ │ ├── tags-input.svelte
│ │ └── tags-input.test.ts
│ │ ├── time-picker
│ │ ├── time-picker.svelte
│ │ └── time-picker.test.ts
│ │ ├── timer
│ │ ├── timer.svelte
│ │ └── timer.test.ts
│ │ ├── toast
│ │ ├── toast.svelte
│ │ └── toast.test.ts
│ │ ├── toggle-group
│ │ ├── toggle-group.svelte
│ │ └── toggle-group.test.ts
│ │ ├── toggle
│ │ ├── toggle.svelte
│ │ └── toggle.test.ts
│ │ ├── tooltip
│ │ ├── tooltip.svelte
│ │ └── tooltip.test.ts
│ │ ├── tree-view
│ │ ├── tree-view.svelte
│ │ └── tree-view.test.ts
│ │ └── utils.ts
│ ├── static
│ └── favicon.png
│ ├── svelte.config.js
│ ├── tsconfig.json
│ ├── vite.config.ts
│ ├── vitest.d.ts
│ └── vitest.setup.ts
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── scripts
├── package.json
├── src
│ └── generate-anatomy-icons.ts
└── tsconfig.json
└── website
├── package.json
├── src
├── app.css
├── app.d.ts
├── app.html
├── content
│ ├── components
│ │ ├── accordion.md
│ │ ├── alert-dialog.md
│ │ ├── alert.md
│ │ ├── angle-slider.md
│ │ ├── avatar.md
│ │ ├── breadcrumbs.md
│ │ ├── carousel.md
│ │ ├── checkbox.md
│ │ ├── clipboard.md
│ │ ├── collapsible.md
│ │ ├── color-picker.md
│ │ ├── combobox.md
│ │ ├── date-picker.md
│ │ ├── dialog.md
│ │ ├── drawer.md
│ │ ├── editable.md
│ │ ├── field.md
│ │ ├── file-upload.md
│ │ ├── hover-card.md
│ │ ├── menu.md
│ │ ├── number-input.md
│ │ ├── pagination.md
│ │ ├── pin-input.md
│ │ ├── popover.md
│ │ ├── progress-circular.md
│ │ ├── progress-linear.md
│ │ ├── qr-code.md
│ │ ├── radio-group.md
│ │ ├── rating-group.md
│ │ ├── segment-group.md
│ │ ├── select.md
│ │ ├── signature-pad.md
│ │ ├── slider.md
│ │ ├── splitter.md
│ │ ├── steps.md
│ │ ├── switch.md
│ │ ├── tabs.md
│ │ ├── tags-input.md
│ │ ├── timer.md
│ │ ├── toast.md
│ │ ├── toggle-group.md
│ │ ├── toggle.md
│ │ ├── tooltip.md
│ │ ├── tour.md
│ │ └── tree-view.md
│ ├── overview
│ │ ├── 01-introduction.md
│ │ ├── 02-getting-started.md
│ │ ├── 03-styling.md
│ │ └── 04-aschild.md
│ └── utilities
│ │ ├── environment-provider.md
│ │ ├── focus-trap.md
│ │ ├── highlight.md
│ │ ├── locale-provider.md
│ │ ├── portal.md
│ │ └── presence.md
├── lib
│ ├── components
│ │ ├── accessibility
│ │ │ └── keyboard-support.svelte
│ │ ├── anatomy.svelte
│ │ ├── api
│ │ │ ├── accordion.ts
│ │ │ ├── alert-dialog.ts
│ │ │ ├── alert.ts
│ │ │ ├── angle-slider.ts
│ │ │ ├── api.svelte
│ │ │ ├── avatar.ts
│ │ │ ├── breadcrumbs.ts
│ │ │ ├── carousel.ts
│ │ │ ├── checkbox.ts
│ │ │ ├── clipboard.ts
│ │ │ ├── collapsible.ts
│ │ │ ├── color-picker.ts
│ │ │ ├── combobox.ts
│ │ │ ├── date-picker.ts
│ │ │ ├── dialog.ts
│ │ │ ├── drawer.ts
│ │ │ ├── editable.ts
│ │ │ ├── environment-provider.ts
│ │ │ ├── field.ts
│ │ │ ├── file-upload.ts
│ │ │ ├── floating-panel.ts
│ │ │ ├── focus-trap.ts
│ │ │ ├── highlight.ts
│ │ │ ├── hover-card.ts
│ │ │ ├── index.ts
│ │ │ ├── locale-provider.ts
│ │ │ ├── menu.ts
│ │ │ ├── number-input.ts
│ │ │ ├── pagination.ts
│ │ │ ├── pin-input.ts
│ │ │ ├── popover.ts
│ │ │ ├── portal.ts
│ │ │ ├── presence.ts
│ │ │ ├── progress.ts
│ │ │ ├── qr-code.ts
│ │ │ ├── radio-group.ts
│ │ │ ├── rating-group.ts
│ │ │ ├── segment-group.ts
│ │ │ ├── select.ts
│ │ │ ├── signature-pad.ts
│ │ │ ├── slider.ts
│ │ │ ├── splitter.ts
│ │ │ ├── steps.ts
│ │ │ ├── switch.ts
│ │ │ ├── tabs.ts
│ │ │ ├── tags-input.ts
│ │ │ ├── time-picker.ts
│ │ │ ├── timer.ts
│ │ │ ├── toast.ts
│ │ │ ├── toggle-group.ts
│ │ │ ├── toggle.ts
│ │ │ ├── tooltip.ts
│ │ │ ├── tour.ts
│ │ │ ├── tree-view.ts
│ │ │ └── utils.ts
│ │ ├── demo
│ │ │ ├── accordion.svelte
│ │ │ ├── alert-dialog.svelte
│ │ │ ├── alert.svelte
│ │ │ ├── angle-slider.svelte
│ │ │ ├── avatar.svelte
│ │ │ ├── breadcrumbs.svelte
│ │ │ ├── carousel.svelte
│ │ │ ├── checkbox.svelte
│ │ │ ├── clipboard.svelte
│ │ │ ├── collapsible.svelte
│ │ │ ├── color-picker.svelte
│ │ │ ├── combobox.svelte
│ │ │ ├── date-picker.svelte
│ │ │ ├── demo.svelte
│ │ │ ├── dialog.svelte
│ │ │ ├── drawer.svelte
│ │ │ ├── editable.svelte
│ │ │ ├── field.svelte
│ │ │ ├── file-upload.svelte
│ │ │ ├── hover-card.svelte
│ │ │ ├── index.ts
│ │ │ ├── menu.svelte
│ │ │ ├── number-input.svelte
│ │ │ ├── pagination.svelte
│ │ │ ├── pin-input.svelte
│ │ │ ├── popover.svelte
│ │ │ ├── progress-circular.svelte
│ │ │ ├── progress-linear.svelte
│ │ │ ├── qr-code.svelte
│ │ │ ├── radio-group.svelte
│ │ │ ├── rating-group.svelte
│ │ │ ├── segment-group.svelte
│ │ │ ├── select.svelte
│ │ │ ├── signature-pad.svelte
│ │ │ ├── slider.svelte
│ │ │ ├── splitter.svelte
│ │ │ ├── steps.svelte
│ │ │ ├── switch.svelte
│ │ │ ├── tabs.svelte
│ │ │ ├── tags-input.svelte
│ │ │ ├── time-picker.svelte
│ │ │ ├── timer.svelte
│ │ │ ├── toast.svelte
│ │ │ ├── toggle-group.svelte
│ │ │ ├── toggle.svelte
│ │ │ ├── tooltip.svelte
│ │ │ ├── tour.svelte
│ │ │ └── tree-view.svelte
│ │ └── ui
│ │ │ ├── badge.recipe.ts
│ │ │ ├── badge.svelte
│ │ │ ├── button.recipe.ts
│ │ │ ├── button.svelte
│ │ │ ├── icon-button.recipe.ts
│ │ │ ├── icon-button.svelte
│ │ │ ├── input.recipe.ts
│ │ │ ├── input.svelte
│ │ │ ├── label.recipe.ts
│ │ │ ├── label.svelte
│ │ │ ├── table
│ │ │ ├── create-table.svelte.ts
│ │ │ ├── index.ts
│ │ │ ├── table-anatomy.ts
│ │ │ ├── table-body.svelte
│ │ │ ├── table-cell.svelte
│ │ │ ├── table-container.svelte
│ │ │ ├── table-context.svelte.ts
│ │ │ ├── table-footer.svelte
│ │ │ ├── table-header.svelte
│ │ │ ├── table-heading.svelte
│ │ │ ├── table-root.svelte
│ │ │ ├── table-row.svelte
│ │ │ ├── table.recipe.ts
│ │ │ └── table.ts
│ │ │ ├── textarea.recipe.ts
│ │ │ └── textarea.svelte
│ ├── icons
│ │ ├── anatomy
│ │ │ ├── accordion-anatomy-icon.svelte
│ │ │ ├── avatar-anatomy-icon.svelte
│ │ │ ├── carousel-anatomy-icon.svelte
│ │ │ ├── checkbox-anatomy-icon.svelte
│ │ │ ├── circular-progress-anatomy-icon.svelte
│ │ │ ├── clipboard-anatomy-icon.svelte
│ │ │ ├── color-picker-anatomy-icon.svelte
│ │ │ ├── combobox-anatomy-icon.svelte
│ │ │ ├── date-picker-anatomy-icon.svelte
│ │ │ ├── dialog-anatomy-icon.svelte
│ │ │ ├── editable-anatomy-icon.svelte
│ │ │ ├── field-anatomy-icon.svelte
│ │ │ ├── fieldset-anatomy-icon.svelte
│ │ │ ├── file-upload-anatomy-icon.svelte
│ │ │ ├── hover-card-anatomy-icon.svelte
│ │ │ ├── index.ts
│ │ │ ├── linear-progress-anatomy-icon.svelte
│ │ │ ├── menu-anatomy-icon.svelte
│ │ │ ├── number-input-anatomy-icon.svelte
│ │ │ ├── pagination-anatomy-icon.svelte
│ │ │ ├── pin-input-anatomy-icon.svelte
│ │ │ ├── popover-anatomy-icon.svelte
│ │ │ ├── qr-code-anatomy-icon.svelte
│ │ │ ├── radio-group-anatomy-icon.svelte
│ │ │ ├── rating-group-anatomy-icon.svelte
│ │ │ ├── segmented-control-anatomy-icon.svelte
│ │ │ ├── select-anatomy-icon.svelte
│ │ │ ├── signature-pad-anatomy-icon.svelte
│ │ │ ├── slider-anatomy-icon.svelte
│ │ │ ├── splitter-anatomy-icon.svelte
│ │ │ ├── steps-anatomy-icon.svelte
│ │ │ ├── switch-anatomy-icon.svelte
│ │ │ ├── tabs-anatomy-icon.svelte
│ │ │ ├── tags-input-anatomy-icon.svelte
│ │ │ ├── time-picker-anatomy-icon.svelte
│ │ │ ├── toast-anatomy-icon.svelte
│ │ │ ├── toggle-group-anatomy-icon.svelte
│ │ │ ├── tooltip-anatomy-icon.svelte
│ │ │ ├── tour-anatomy-icon.svelte
│ │ │ └── tree-view-anatomy-icon.svelte
│ │ ├── javascript-icon.svelte
│ │ ├── nodejs-icon.svelte
│ │ ├── svelte-icon.svelte
│ │ ├── tsconfig-icon.svelte
│ │ └── vite-icon.svelte
│ ├── stores
│ │ └── navbar.svelte.ts
│ └── types
│ │ └── index.ts
└── routes
│ ├── +layout.svelte
│ ├── +page.server.ts
│ ├── +page.svelte
│ ├── components
│ └── [id]
│ │ ├── +page.server.ts
│ │ └── +page.svelte
│ ├── markdown.svelte
│ ├── navbar.svelte
│ ├── overview
│ └── [id]
│ │ ├── +page.server.ts
│ │ └── +page.svelte
│ ├── pagination.svelte
│ ├── robots.txt
│ └── +server.ts
│ ├── search.svelte
│ ├── sidebar.svelte
│ ├── sitemap.xml
│ └── +server.ts
│ ├── table-of-contents.svelte
│ └── utilities
│ └── [id]
│ ├── +page.server.ts
│ └── +page.svelte
├── static
└── favicon.png
├── svelte.config.js
├── tsconfig.json
├── velite.config.ts
└── vite.config.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
3 | # Output
4 | .output
5 | .vercel
6 | .svelte-kit
7 | build
8 | dist
9 |
10 | # OS
11 | .DS_Store
12 | Thumbs.db
13 |
14 | # Env
15 | .env
16 | .env.*
17 | !.env.example
18 | !.env.test
19 |
20 | # Vite
21 | vite.config.js.timestamp-*
22 | vite.config.ts.timestamp-*
23 |
24 | # Velite
25 | .velite
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict=true
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v23.7.0
2 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
3 | "singleQuote": true,
4 | "bracketSpacing": false,
5 | "tailwindStylesheet": "./website/src/app.css",
6 | "overrides": [
7 | {
8 | "files": "*.svelte",
9 | "options": {
10 | "parser": "svelte"
11 | }
12 | }
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.codeActionsOnSave": {
3 | "source.organizeImports": "always"
4 | },
5 | "editor.defaultFormatter": "esbenp.prettier-vscode",
6 | "files.associations": {
7 | "*.css": "tailwindcss"
8 | },
9 | "tailwindCSS.experimental.classRegex": [
10 | ["twJoin\\(([^)]*)\\)", "'([^']*)'"],
11 | ["twMerge\\(([^)]*)\\)", "'([^']*)'"],
12 | ["tv\\((([^()]*|\\([^()]*\\))*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"]
13 | ],
14 | "tailwindCSS.experimental.configFile": "./website/src/app.css",
15 | "typescript.tsdk": "node_modules\\typescript\\lib"
16 | }
17 |
--------------------------------------------------------------------------------
/packages/ui-ingredients-plugin-tailwindcss/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/node22/tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["vitest/globals"],
5 | "verbatimModuleSyntax": true
6 | },
7 | "include": ["src"]
8 | }
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients-plugin-tailwindcss/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'tsup';
2 |
3 | export default defineConfig({
4 | clean: true,
5 | entry: ['src/index.ts'],
6 | format: ['cjs', 'esm'],
7 | dts: true,
8 | sourcemap: true,
9 | treeshake: true,
10 | });
11 |
--------------------------------------------------------------------------------
/packages/ui-ingredients-plugin-tailwindcss/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | watch: false,
6 | globals: true,
7 | include: ['src/**/*.{test,spec}.{js,ts}'],
8 | environment: 'node',
9 | passWithNoTests: true,
10 | },
11 | });
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/app.d.ts:
--------------------------------------------------------------------------------
1 | // See https://kit.svelte.dev/docs/types#app
2 | // for information about these interfaces
3 | declare global {
4 | namespace App {
5 | // interface Error {}
6 | // interface Locals {}
7 | // interface PageData {}
8 | // interface PageState {}
9 | // interface Platform {}
10 | }
11 | }
12 |
13 | export {};
14 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | UI Ingredients
8 |
9 |
10 |
11 |
15 |
16 | %sveltekit.head%
17 |
18 |
19 | %sveltekit.body%
20 |
21 |
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/accordion/accordion-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/accordion';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/accordion/accordion-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemProps} from '@zag-js/accordion';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateAccordionReturn} from './create-accordion.svelte.js';
4 |
5 | export const [getAccordionContext, setAccordionContext] =
6 | createContext('Accordion');
7 |
8 | export const [getAccordionItemPropsContext, setAccordionItemPropsContext] =
9 | createContext('AccordionItem.props');
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/accordion/accordion.ts:
--------------------------------------------------------------------------------
1 | export {default as ItemContent} from './accordion-item-content.svelte';
2 | export {default as ItemIndicator} from './accordion-item-indicator.svelte';
3 | export {default as ItemTrigger} from './accordion-item-trigger.svelte';
4 | export {default as Item} from './accordion-item.svelte';
5 | export {default as Root} from './accordion-root.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/accordion/index.ts:
--------------------------------------------------------------------------------
1 | export * as Accordion from './accordion.js';
2 |
3 | export type {AccordionItemContentProps} from './accordion-item-content.svelte';
4 | export type {AccordionIndicatorProps} from './accordion-item-indicator.svelte';
5 | export type {AccordionItemTriggerProps} from './accordion-item-trigger.svelte';
6 | export type {AccordionItemProps} from './accordion-item.svelte';
7 | export type {AccordionProps} from './accordion-root.svelte';
8 |
9 | export {anatomy as accordionAnatomy} from './accordion-anatomy.js';
10 | export {
11 | getAccordionContext,
12 | setAccordionContext,
13 | } from './accordion-context.svelte.js';
14 | export {
15 | createAccordion,
16 | type CreateAccordionProps,
17 | type CreateAccordionReturn,
18 | } from './create-accordion.svelte.js';
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/alert-dialog/alert-dialog-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {anatomy as _} from '@zag-js/dialog';
2 |
3 | export const anatomy = _.rename('alert-dialog');
4 | export const parts = anatomy.build();
5 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/alert-dialog/alert-dialog-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateAlertDialogReturn} from './create-alert-dialog.svelte.js';
3 |
4 | export const [getAlertDialogContext, setAlertDialogContext] =
5 | createContext('AlertDialog');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/alert-dialog/alert-dialog.ts:
--------------------------------------------------------------------------------
1 | export {default as Backdrop} from './alert-dialog-backdrop.svelte';
2 | export {default as CloseTrigger} from './alert-dialog-close-trigger.svelte';
3 | export {default as Content} from './alert-dialog-content.svelte';
4 | export {default as Description} from './alert-dialog-description.svelte';
5 | export {default as Positioner} from './alert-dialog-positioner.svelte';
6 | export {default as Root} from './alert-dialog-root.svelte';
7 | export {default as Title} from './alert-dialog-title.svelte';
8 | export {default as Trigger} from './alert-dialog-trigger.svelte';
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/alert/alert-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {createAnatomy} from '@zag-js/anatomy';
2 |
3 | export const anatomy = createAnatomy('alert').parts(
4 | 'root',
5 | 'title',
6 | 'description',
7 | 'indicator',
8 | );
9 |
10 | export const parts = anatomy.build();
11 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/alert/alert-context.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateAlertReturn} from './create-alert.svelte.js';
3 |
4 | export const [getAlertContext, setAlertContext] =
5 | createContext('Alert');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/alert/alert-title.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/alert/alert.ts:
--------------------------------------------------------------------------------
1 | export {default as Description} from './alert-description.svelte';
2 | export {default as Indicator} from './alert-indicator.svelte';
3 | export {default as Root} from './alert-root.svelte';
4 | export {default as Title} from './alert-title.svelte';
5 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/alert/index.ts:
--------------------------------------------------------------------------------
1 | export * as Alert from './alert.js';
2 |
3 | export type {AlertDescriptionProps} from './alert-description.svelte';
4 | export type {AlertIndicatorProps} from './alert-indicator.svelte';
5 | export type {AlertProps} from './alert-root.svelte';
6 | export type {AlertTitleProps} from './alert-title.svelte';
7 |
8 | export {anatomy as alertAnatomy} from './alert-anatomy.js';
9 | export {getAlertContext, setAlertContext} from './alert-context.js';
10 | export {
11 | createAlert,
12 | type CreateAlertProps,
13 | type CreateAlertReturn,
14 | } from './create-alert.svelte.js';
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/angle-slider/angle-slider-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/angle-slider';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/angle-slider/angle-slider-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateAngleSliderReturn} from './create-angle-slider.svelte.js';
3 |
4 | export const [getAngleSliderContext, setAngleSliderContext] =
5 | createContext('AngleSlider');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/angle-slider/angle-slider.ts:
--------------------------------------------------------------------------------
1 | export {default as Control} from './angle-slider-control.svelte';
2 | export {default as HiddenInput} from './angle-slider-hidden-input.svelte';
3 | export {default as Label} from './angle-slider-label.svelte';
4 | export {default as MarkerGroup} from './angle-slider-marker-group.svelte';
5 | export {default as Marker} from './angle-slider-marker.svelte';
6 | export {default as Root} from './angle-slider-root.svelte';
7 | export {default as Thumb} from './angle-slider-thumb.svelte';
8 | export {default as ValueText} from './angle-slider-value-text.svelte';
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/avatar/avatar-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/avatar';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/avatar/avatar-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateAvatarReturn} from './create-avatar.svelte.js';
3 |
4 | export const [getAvatarContext, setAvatarContext] =
5 | createContext('Avatar');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/avatar/avatar-image.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
17 |
18 | {#if asChild}
19 | {@render asChild(mergedProps)}
20 | {:else}
21 |
22 | {/if}
23 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/avatar/avatar.ts:
--------------------------------------------------------------------------------
1 | export {default as Fallback} from './avatar-fallback.svelte';
2 | export {default as Image} from './avatar-image.svelte';
3 | export {default as Root} from './avatar-root.svelte';
4 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/avatar/index.ts:
--------------------------------------------------------------------------------
1 | export * as Avatar from './avatar.js';
2 |
3 | export type {AvatarFallbackProps} from './avatar-fallback.svelte';
4 | export type {AvatarImageProps} from './avatar-image.svelte';
5 | export type {AvatarProps} from './avatar-root.svelte';
6 |
7 | export {anatomy as avatarAnatomy} from './avatar-anatomy.js';
8 | export {getAvatarContext, setAvatarContext} from './avatar-context.svelte.js';
9 | export {
10 | createAvatar,
11 | type CreateAvatarProps,
12 | type CreateAvatarReturn,
13 | } from './create-avatar.svelte.js';
14 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/breadcrumbs/breadcrumbs-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {createAnatomy} from '@zag-js/anatomy';
2 |
3 | /**
4 | * @deprecated
5 | */
6 | export const anatomy = createAnatomy('breadcrumbs').parts(
7 | 'root',
8 | 'list',
9 | 'item',
10 | 'link',
11 | 'separator',
12 | );
13 |
14 | export const parts = anatomy.build();
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/breadcrumbs/breadcrumbs-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateBreadcrumbsReturn} from './create-breadcrumbs.js';
3 |
4 | /**
5 | * @deprecated
6 | */
7 | export const [getBreadcrumbsContext, setBreadcrumbsContext] =
8 | createContext('Breadcrumbs');
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/breadcrumbs/breadcrumbs.ts:
--------------------------------------------------------------------------------
1 | export {default as Item} from './breadcrumbs-item.svelte';
2 | export {default as Link} from './breadcrumbs-link.svelte';
3 | export {default as List} from './breadcrumbs-list.svelte';
4 | export {default as Root} from './breadcrumbs-root.svelte';
5 | export {default as Separator} from './breadcrumbs-separator.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/breadcrumbs/index.ts:
--------------------------------------------------------------------------------
1 | export * as Breadcrumbs from './breadcrumbs.js';
2 |
3 | export type {BreadcrumbsItemProps} from './breadcrumbs-item.svelte';
4 | export type {BreadcrumbsLinkProps} from './breadcrumbs-link.svelte';
5 | export type {BreadcrumbsListProps} from './breadcrumbs-list.svelte';
6 | export type {BreadcrumbsProps} from './breadcrumbs-root.svelte';
7 | export type {BreadcrumbsSeparatorProps} from './breadcrumbs-separator.svelte';
8 |
9 | export {anatomy as breadcrumbsAnatomy} from './breadcrumbs-anatomy.js';
10 | export {
11 | getBreadcrumbsContext,
12 | setBreadcrumbsContext,
13 | } from './breadcrumbs-context.svelte.js';
14 | export {
15 | createBreadcrumbs,
16 | type CreateBreadcrumbsReturn,
17 | } from './create-breadcrumbs.js';
18 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/carousel/carousel-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/carousel';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/carousel/carousel-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateCarouselReturn} from './create-carousel.svelte.js';
3 |
4 | export const [getCarouselContext, setCarouselContext] =
5 | createContext('Carousel');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/carousel/carousel.ts:
--------------------------------------------------------------------------------
1 | export {default as AutoplayTrigger} from './carousel-autoplay-trigger.svelte';
2 | export {default as Control} from './carousel-control.svelte';
3 | export {default as IndicatorGroup} from './carousel-indicator-group.svelte';
4 | export {default as Indicator} from './carousel-indicator.svelte';
5 | export {default as ItemGroup} from './carousel-item-group.svelte';
6 | export {default as Item} from './carousel-item.svelte';
7 | export {default as NextTrigger} from './carousel-next-trigger.svelte';
8 | export {default as PrevTrigger} from './carousel-prev-trigger.svelte';
9 | export {default as Root} from './carousel-root.svelte';
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/checkbox/checkbox-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/checkbox';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/checkbox/checkbox-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateCheckboxReturn} from './create-checkbox.svelte.js';
3 |
4 | export const [getCheckboxContext, setCheckboxContext] =
5 | createContext('Checkbox');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/checkbox/checkbox-hidden-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
21 |
22 | {#if asChild}
23 | {@render asChild(mergedProps)}
24 | {:else}
25 |
26 | {/if}
27 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/checkbox/checkbox.ts:
--------------------------------------------------------------------------------
1 | export {default as Control} from './checkbox-control.svelte';
2 | export {default as HiddenInput} from './checkbox-hidden-input.svelte';
3 | export {default as Indicator} from './checkbox-indicator.svelte';
4 | export {default as Label} from './checkbox-label.svelte';
5 | export {default as Root} from './checkbox-root.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/checkbox/index.ts:
--------------------------------------------------------------------------------
1 | export * as Checkbox from './checkbox.js';
2 |
3 | export type {CheckboxControlProps} from './checkbox-control.svelte';
4 | export type {CheckboxHiddenInputProps} from './checkbox-hidden-input.svelte';
5 | export type {CheckboxIndicatorProps} from './checkbox-indicator.svelte';
6 | export type {CheckboxLabelProps} from './checkbox-label.svelte';
7 | export type {CheckboxProps} from './checkbox-root.svelte';
8 |
9 | export {anatomy as checkboxAnatomy} from './checkbox-anatomy.js';
10 | export {
11 | getCheckboxContext,
12 | setCheckboxContext,
13 | } from './checkbox-context.svelte.js';
14 | export {
15 | createCheckbox,
16 | type CreateCheckboxProps,
17 | type CreateCheckboxReturn,
18 | } from './create-checkbox.svelte.js';
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/clipboard/clipboard-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/clipboard';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/clipboard/clipboard-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateClipboardReturn} from './create-clipboard.svelte.js';
3 |
4 | export const [getClipboardContext, setClipboardContext] =
5 | createContext('Clipboard');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/clipboard/clipboard-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
21 |
22 | {#if asChild}
23 | {@render asChild(mergedProps)}
24 | {:else}
25 |
26 | {/if}
27 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/clipboard/clipboard.ts:
--------------------------------------------------------------------------------
1 | export {default as Control} from './clipboard-control.svelte';
2 | export {default as Indicator} from './clipboard-indicator.svelte';
3 | export {default as Input} from './clipboard-input.svelte';
4 | export {default as Label} from './clipboard-label.svelte';
5 | export {default as Root} from './clipboard-root.svelte';
6 | export {default as Trigger} from './clipboard-trigger.svelte';
7 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/clipboard/create-clipboard.svelte.ts:
--------------------------------------------------------------------------------
1 | import * as clipboard from '@zag-js/clipboard';
2 | import {normalizeProps, reflect, useMachine} from '@zag-js/svelte';
3 | import {getEnvironmentContext} from '../environment-provider/enviroment-provider-context.svelte.js';
4 |
5 | export interface CreateClipboardProps
6 | extends Omit {}
7 |
8 | export interface CreateClipboardReturn extends clipboard.Api {}
9 |
10 | export function createClipboard(
11 | props: CreateClipboardProps,
12 | ): CreateClipboardReturn {
13 | const environment = getEnvironmentContext();
14 |
15 | const service = useMachine(clipboard.machine, () => ({
16 | getRootNode: environment?.getRootNode,
17 | ...props,
18 | }));
19 |
20 | return reflect(() => clipboard.connect(service, normalizeProps));
21 | }
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/collapsible/collapsible-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/collapsible';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/collapsible/collapsible-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateCollapsibleReturn} from './create-collapsible.svelte.js';
3 |
4 | export const [getCollapsibleContext, setCollapsibleContext] =
5 | createContext('Collapsible');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/collapsible/collapsible.ts:
--------------------------------------------------------------------------------
1 | export {default as Content} from './collapsible-content.svelte';
2 | export {default as Root} from './collapsible-root.svelte';
3 | export {default as Trigger} from './collapsible-trigger.svelte';
4 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/collapsible/index.ts:
--------------------------------------------------------------------------------
1 | export * as Collapsible from './collapsible.js';
2 |
3 | export type {CollapsibleContentProps} from './collapsible-content.svelte';
4 | export type {CollapsibleProps} from './collapsible-root.svelte';
5 | export type {CollapsibleTriggerProps} from './collapsible-trigger.svelte';
6 |
7 | export {anatomy as collapsibleAnatomy} from './collapsible-anatomy.js';
8 | export {
9 | getCollapsibleContext,
10 | setCollapsibleContext,
11 | } from './collapsible-context.svelte.js';
12 | export {
13 | createCollapsible,
14 | type CreateCollapsibleProps,
15 | type CreateCollapsibleReturn,
16 | } from './create-collapsible.svelte.js';
17 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/collection.ts:
--------------------------------------------------------------------------------
1 | export * from '@zag-js/collection';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/color-picker/color-picker-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {anatomy as _} from '@zag-js/color-picker';
2 |
3 | export const anatomy = _.extendWith('view');
4 | export const parts = anatomy.build();
5 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/combobox/combobox-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/combobox';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/combobox/combobox-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemGroupProps, ItemProps} from '@zag-js/combobox';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateComboboxReturn} from './create-combobox.svelte.js';
4 |
5 | export const [getComboboxContext, setComboboxContext] =
6 | createContext('Combobox');
7 |
8 | export const [getComboboxItemPropsContext, setComboboxItemPropsContext] =
9 | createContext('ComboboxItem.props');
10 |
11 | export const [
12 | getComboboxItemGroupPropsContext,
13 | setComboboxItemGroupPropsContext,
14 | ] = createContext('ComboboxItemGroup.props');
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/combobox/combobox-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
19 |
20 | {#if asChild}
21 | {@render asChild(mergedProps)}
22 | {:else}
23 |
24 | {/if}
25 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/create-split-props.test.ts:
--------------------------------------------------------------------------------
1 | import {createSplitProps} from './create-split-props.js';
2 |
3 | describe("'createSplitProps' util is working as expected", () => {
4 | test('splits props correctly', () => {
5 | const props = {
6 | a: 1,
7 | b: 2,
8 | c: 3,
9 | d: 4,
10 | e: 5,
11 | };
12 |
13 | const [i, j] = createSplitProps(['a', 'b'])(props);
14 |
15 | expect(i).toEqual({a: 1, b: 2});
16 | expect(j).toEqual({c: 3, d: 4, e: 5});
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/date-picker/date-picker-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/date-picker';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/dialog/dialog-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/dialog';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/dialog/dialog-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateDialogReturn} from './create-dialog.svelte.js';
3 |
4 | export const [getDialogContext, setDialogContext] =
5 | createContext('Dialog');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/dialog/dialog-title.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/dialog/dialog.ts:
--------------------------------------------------------------------------------
1 | export {default as Backdrop} from './dialog-backdrop.svelte';
2 | export {default as CloseTrigger} from './dialog-close-trigger.svelte';
3 | export {default as Content} from './dialog-content.svelte';
4 | export {default as Description} from './dialog-description.svelte';
5 | export {default as Positioner} from './dialog-positioner.svelte';
6 | export {default as Root} from './dialog-root.svelte';
7 | export {default as Title} from './dialog-title.svelte';
8 | export {default as Trigger} from './dialog-trigger.svelte';
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/drawer/drawer-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {anatomy as _} from '@zag-js/dialog';
2 |
3 | export const anatomy = _.rename('drawer').extendWith(
4 | 'body',
5 | 'footer',
6 | 'header',
7 | );
8 |
9 | export const parts = anatomy.build();
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/drawer/drawer-body.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/drawer/drawer-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateDrawerReturn} from './create-drawer.svelte.js';
3 |
4 | export const [getDrawerContext, setDrawerContext] =
5 | createContext('Drawer');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/drawer/drawer-title.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/drawer/drawer.ts:
--------------------------------------------------------------------------------
1 | export {default as Backdrop} from './drawer-backdrop.svelte';
2 | export {default as Body} from './drawer-body.svelte';
3 | export {default as CloseTrigger} from './drawer-close-trigger.svelte';
4 | export {default as Content} from './drawer-content.svelte';
5 | export {default as Description} from './drawer-description.svelte';
6 | export {default as Footer} from './drawer-footer.svelte';
7 | export {default as Header} from './drawer-header.svelte';
8 | export {default as Positioner} from './drawer-positioner.svelte';
9 | export {default as Root} from './drawer-root.svelte';
10 | export {default as Title} from './drawer-title.svelte';
11 | export {default as Trigger} from './drawer-trigger.svelte';
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/editable/editable-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/editable';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/editable/editable-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateEditableReturn} from './create-editable.svelte.js';
3 |
4 | export const [getEditableContext, setEditableContext] =
5 | createContext('Editable');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/editable/editable-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
17 |
18 | {#if asChild}
19 | {@render asChild(mergedProps)}
20 | {:else}
21 |
22 | {/if}
23 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/editable/editable.ts:
--------------------------------------------------------------------------------
1 | export {default as Area} from './editable-area.svelte';
2 | export {default as CancelTrigger} from './editable-cancel-trigger.svelte';
3 | export {default as Control} from './editable-control.svelte';
4 | export {default as EditTrigger} from './editable-edit-trigger.svelte';
5 | export {default as Input} from './editable-input.svelte';
6 | export {default as Label} from './editable-label.svelte';
7 | export {default as Preview} from './editable-preview.svelte';
8 | export {default as Root} from './editable-root.svelte';
9 | export {default as SubmitTrigger} from './editable-submit-trigger.svelte';
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/environment-provider/enviroment-provider-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 |
3 | export interface Environment {
4 | getRootNode(): ShadowRoot | Document | Node;
5 | getDocument(): Document;
6 | getWindow(): Window & typeof globalThis;
7 | }
8 |
9 | export const [getEnvironmentContext, setEnvironmentContext] =
10 | createContext('EnvironmentProvider', false);
11 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/environment-provider/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | getEnvironmentContext,
3 | setEnvironmentContext,
4 | type Environment,
5 | } from './enviroment-provider-context.svelte.js';
6 | export {
7 | default as EnvironmentProvider,
8 | type EnvironmentProviderProps,
9 | } from './environment-provider.svelte';
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/field/field-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {createAnatomy} from '@zag-js/anatomy';
2 |
3 | export const anatomy = createAnatomy('field').parts(
4 | 'root',
5 | 'label',
6 | 'input',
7 | 'select',
8 | 'textarea',
9 | 'errorText',
10 | 'helperText',
11 | 'requiredIndicator',
12 | );
13 |
14 | export const parts = anatomy.build();
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/field/field-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateFieldReturn} from './create-field.svelte.js';
3 |
4 | export const [getFieldContext, setFieldContext] =
5 | createContext('Field', false);
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/field/field-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
17 |
18 | {#if asChild}
19 | {@render asChild(mergedProps)}
20 | {:else}
21 |
22 | {/if}
23 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/field/field-select.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {/if}
28 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/field/field.ts:
--------------------------------------------------------------------------------
1 | export {default as ErrorText} from './field-error-text.svelte';
2 | export {default as HelperText} from './field-helper-text.svelte';
3 | export {default as Input} from './field-input.svelte';
4 | export {default as Label} from './field-label.svelte';
5 | export {default as RequiredIndicator} from './field-required-indicator.svelte';
6 | export {default as Root} from './field-root.svelte';
7 | export {default as Select} from './field-select.svelte';
8 | export {default as Textarea} from './field-textarea.svelte';
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/file-upload/file-upload-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/file-upload';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/file-upload/file-upload-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemProps} from '@zag-js/file-upload';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateFileUploadReturn} from './create-file-upload.svelte.js';
4 |
5 | export const [getFileUploadContext, setFileUploadContext] =
6 | createContext('FileUpload');
7 |
8 | export const [getFileUploadItemPropsContext, setFileUploadItemPropsContext] =
9 | createContext('FileUploadItem.props');
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/floating-panel/floating-panel-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/floating-panel';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/floating-panel/floating-panel-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateFloatingPanelReturn} from './create-floating-panel.svelte.js';
3 |
4 | export const [getFloatingPanelContext, setFloatingPanelContext] =
5 | createContext('FloatingPanel');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/focus-trap/index.ts:
--------------------------------------------------------------------------------
1 | export {default as FocusTrap, type FocusTrapProps} from './focus-trap.svelte';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/highlight/index.ts:
--------------------------------------------------------------------------------
1 | export {default as Highlight, type HighlightProps} from './highlight.svelte';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/hover-card/hover-card-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/hover-card';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/hover-card/hover-card-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateHoverCardReturn} from './create-hover-card.svelte.js';
3 |
4 | export const [getHoverCardContext, setHoverCardContext] =
5 | createContext('HoverCard');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/hover-card/hover-card.ts:
--------------------------------------------------------------------------------
1 | export {default as ArrowTip} from './hover-card-arrow-tip.svelte';
2 | export {default as Arrow} from './hover-card-arrow.svelte';
3 | export {default as Content} from './hover-card-content.svelte';
4 | export {default as Positioner} from './hover-card-positioner.svelte';
5 | export {default as Root} from './hover-card-root.svelte';
6 | export {default as Trigger} from './hover-card-trigger.svelte';
7 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/listbox/listbox-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/listbox';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/listbox/listbox-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemGroupProps, ItemProps} from '@zag-js/listbox';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateListboxReturn} from './create-listbox.svelte.js';
4 |
5 | export const [getListboxContext, setListboxContext] =
6 | createContext('Listbox');
7 |
8 | export const [getListboxItemPropsContext, setListboxItemPropsContext] =
9 | createContext('ListboxItem.props');
10 |
11 | export const [
12 | getListboxItemGroupPropsContext,
13 | setListboxItemGroupPropsContext,
14 | ] = createContext('ListboxItemGroup.props');
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/listbox/listbox.ts:
--------------------------------------------------------------------------------
1 | export {collection} from '@zag-js/listbox';
2 | export {default as Content} from './listbox-content.svelte';
3 | export {default as Input} from './listbox-input.svelte';
4 | export {default as ItemGroupLabel} from './listbox-item-group-label.svelte';
5 | export {default as ItemGroup} from './listbox-item-group.svelte';
6 | export {default as ItemIndicator} from './listbox-item-indicator.svelte';
7 | export {default as ItemText} from './listbox-item-text.svelte';
8 | export {default as Item} from './listbox-item.svelte';
9 | export {default as Label} from './listbox-label.svelte';
10 | export {default as Root} from './listbox-root.svelte';
11 | export {default as ValueText} from './listbox-value-text.svelte';
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/locale-provider/index.ts:
--------------------------------------------------------------------------------
1 | export type {Locale} from '@zag-js/i18n-utils';
2 | export {
3 | getLocaleContext,
4 | setLocaleContext,
5 | } from './locale-provider-context.svelte.js';
6 | export {
7 | default as LocaleProvider,
8 | type LocaleProviderProps,
9 | } from './locale-provider.svelte';
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/locale-provider/locale-provider-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {Locale} from '@zag-js/i18n-utils';
2 | import {createContext} from '../create-context.svelte.js';
3 |
4 | export const [getLocaleContext, setLocaleContext] = createContext(
5 | 'LocaleProvider',
6 | false,
7 | );
8 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/locale-provider/locale-provider.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 |
21 |
22 | {@render children()}
23 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/menu/menu-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/menu';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/menu/menu-arrow.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/merge-props.test.ts:
--------------------------------------------------------------------------------
1 | import {mergeProps} from './merge-props.js';
2 |
3 | describe("'mergeProps' util is working as expected", () => {
4 | it('merges class correctly', () => {
5 | expect(
6 | mergeProps(
7 | {class: 'a b'},
8 | {class: ['c', 'd e']},
9 | {
10 | class: {
11 | f: false,
12 | g: true,
13 | },
14 | },
15 | {
16 | class: [
17 | 'h',
18 | {
19 | i: false,
20 | j: true,
21 | },
22 | ],
23 | },
24 | ),
25 | ).toEqual({class: 'a b c d e g h j'});
26 | });
27 | });
28 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/merge-props.ts:
--------------------------------------------------------------------------------
1 | import {mergeProps as zagMergeProps} from '@zag-js/svelte';
2 | import {clsx} from 'clsx';
3 | import type {GenericObject} from './types.js';
4 |
5 | export function mergeProps(...args: GenericObject[]): GenericObject {
6 | const l: GenericObject[] = [];
7 |
8 | /* support svelte class value */
9 | for (const o of args) {
10 | const c = {...o};
11 |
12 | if (c.class && !isString(c.class)) {
13 | c.class = clsx(c.class);
14 | }
15 |
16 | if (c.className && !isString(c.class)) {
17 | c.className = clsx(c.className);
18 | }
19 |
20 | l.push(c);
21 | }
22 |
23 | return zagMergeProps(...l);
24 | }
25 |
26 | function isString(value: unknown): value is string {
27 | return typeof value === 'string';
28 | }
29 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/number-input/number-input-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/number-input';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/number-input/number-input-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateNumberInputReturn} from './create-number-input.svelte.js';
3 |
4 | export const [getNumberInputContext, setNumberInputContext] =
5 | createContext('NumberInput');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/number-input/number-input-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
21 |
22 | {#if asChild}
23 | {@render asChild(mergedProps)}
24 | {:else}
25 |
26 | {/if}
27 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/number-input/number-input.ts:
--------------------------------------------------------------------------------
1 | export {default as Control} from './number-input-control.svelte';
2 | export {default as DecrementTrigger} from './number-input-decrement-trigger.svelte';
3 | export {default as IncrementTrigger} from './number-input-increment-trigger.svelte';
4 | export {default as Input} from './number-input-input.svelte';
5 | export {default as Label} from './number-input-label.svelte';
6 | export {default as Root} from './number-input-root.svelte';
7 | export {default as Scrubber} from './number-input-scrubber.svelte';
8 | export {default as ValueText} from './number-input-value-text.svelte';
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pagination/index.ts:
--------------------------------------------------------------------------------
1 | export * as Pagination from './pagination.js';
2 |
3 | export type {PaginationEllipsisProps} from './pagination-ellipsis.svelte';
4 | export type {PaginationItemProps} from './pagination-item.svelte';
5 | export type {PaginationNextTriggerProps} from './pagination-next-trigger.svelte';
6 | export type {PaginationPrevTriggerProps} from './pagination-prev-trigger.svelte';
7 | export type {PaginationProps} from './pagination-root.svelte';
8 |
9 | export {
10 | createPagination,
11 | type CreatePaginationProps,
12 | type CreatePaginationReturn,
13 | } from './create-pagination.svelte.js';
14 | export {anatomy as paginationAnatomy} from './pagination-anatomy.js';
15 | export {
16 | getPaginationContext,
17 | setPaginationContext,
18 | } from './pagination-context.svelte.js';
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pagination/pagination-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/pagination';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pagination/pagination-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreatePaginationReturn} from './create-pagination.svelte.js';
3 |
4 | export const [getPaginationContext, setPaginationContext] =
5 | createContext('Pagination');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pagination/pagination.ts:
--------------------------------------------------------------------------------
1 | export {default as Ellipsis} from './pagination-ellipsis.svelte';
2 | export {default as Item} from './pagination-item.svelte';
3 | export {default as NextTrigger} from './pagination-next-trigger.svelte';
4 | export {default as PrevTrigger} from './pagination-prev-trigger.svelte';
5 | export {default as Root} from './pagination-root.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pin-input/index.ts:
--------------------------------------------------------------------------------
1 | export * as PinInput from './pin-input.js';
2 |
3 | export type {PinInputControlProps} from './pin-input-control.svelte';
4 | export type {PinInputHiddenInputProps} from './pin-input-hidden-input.svelte';
5 | export type {PinInputInputProps} from './pin-input-input.svelte';
6 | export type {PinInputLabelProps} from './pin-input-label.svelte';
7 | export type {PinInputProps} from './pin-input-root.svelte';
8 |
9 | export {
10 | createPinInputContext,
11 | type CreatePinInputProps,
12 | type CreatePinInputReturn,
13 | } from './create-pin-input.svelte.js';
14 | export {anatomy as pinInputAnatomy} from './pin-input-anatomy.js';
15 | export {
16 | getPinInputContext,
17 | setPinInputContext,
18 | } from './pin-input-context.svelte.js';
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pin-input/pin-input-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/pin-input';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pin-input/pin-input-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreatePinInputReturn} from './create-pin-input.svelte.js';
3 |
4 | export const [getPinInputContext, setPinInputContext] =
5 | createContext('PinInput');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pin-input/pin-input-hidden-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
21 |
22 | {#if asChild}
23 | {@render asChild(mergedProps)}
24 | {:else}
25 |
26 | {/if}
27 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/pin-input/pin-input.ts:
--------------------------------------------------------------------------------
1 | export {default as Control} from './pin-input-control.svelte';
2 | export {default as HiddenInput} from './pin-input-hidden-input.svelte';
3 | export {default as Input} from './pin-input-input.svelte';
4 | export {default as Label} from './pin-input-label.svelte';
5 | export {default as Root} from './pin-input-root.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/popover/popover-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/popover';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/popover/popover-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreatePopoverReturn} from './create-popover.svelte.js';
3 |
4 | export const [getPopoverContext, setPopoverContext] =
5 | createContext('Popover');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/popover/popover.ts:
--------------------------------------------------------------------------------
1 | export {default as Anchor} from './popover-anchor.svelte';
2 | export {default as ArrowTip} from './popover-arrow-tip.svelte';
3 | export {default as Arrow} from './popover-arrow.svelte';
4 | export {default as CloseTrigger} from './popover-close-trigger.svelte';
5 | export {default as Content} from './popover-content.svelte';
6 | export {default as Description} from './popover-description.svelte';
7 | export {default as Indicator} from './popover-indicator.svelte';
8 | export {default as Positioner} from './popover-positioner.svelte';
9 | export {default as Root} from './popover-root.svelte';
10 | export {default as Title} from './popover-title.svelte';
11 | export {default as Trigger} from './popover-trigger.svelte';
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/portal/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as PortalProvider,
3 | type PortalProviderProps,
4 | } from './portal-provider.svelte';
5 | export {default as Portal, type PortalProps} from './portal.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/portal/portal-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 |
3 | interface PortalProviderProps {
4 | container?: HTMLElement | null;
5 | }
6 |
7 | export const [getPortalProviderPropsContext, setPortalProviderPropsContext] =
8 | createContext('PortalProvider.props', false);
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/portal/portal-provider.svelte:
--------------------------------------------------------------------------------
1 |
10 |
11 |
20 |
21 | {@render children?.()}
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/presence/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | getPresenceContext,
3 | setPresenceContext,
4 | } from './presence-context.svelte.js';
5 | export {default as Presence, type PresenceProps} from './presence.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/presence/presence-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {
3 | CreatePresenceReturn,
4 | PresenceStrategyProps,
5 | } from './create-presence.svelte.js';
6 |
7 | export const [getPresenceContext, setPresenceContext] =
8 | createContext('Presence');
9 |
10 | export const [
11 | getPresenceStrategyPropsContext,
12 | setPresenceStrategyPropsContext,
13 | ] = createContext('PresenceStrategyProps');
14 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/progress/progress-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/progress';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/progress/progress-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateProgressReturn} from './create-progress.svelte.js';
3 |
4 | export const [getProgressContext, setProgressContext] =
5 | createContext('Progress');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/progress/progress.ts:
--------------------------------------------------------------------------------
1 | export {default as CircleRange} from './progress-circle-range.svelte';
2 | export {default as CircleTrack} from './progress-circle-track.svelte';
3 | export {default as Circle} from './progress-circle.svelte';
4 | export {default as Label} from './progress-label.svelte';
5 | export {default as Range} from './progress-range.svelte';
6 | export {default as Root} from './progress-root.svelte';
7 | export {default as Track} from './progress-track.svelte';
8 | export {default as ValueText} from './progress-value-text.svelte';
9 | export {default as View} from './progress-view.svelte';
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/qr-code/index.ts:
--------------------------------------------------------------------------------
1 | export * as QrCode from './qr-code.js';
2 |
3 | export type {QrCodeDownloadTriggerProps} from './qr-code-download-trigger.svelte';
4 | export type {QrCodeFrameProps} from './qr-code-frame.svelte';
5 | export type {QrCodeOverlayProps} from './qr-code-overlay.svelte';
6 | export type {QrCodePatternProps} from './qr-code-pattern.svelte';
7 | export type {QrCodeProps} from './qr-code-root.svelte';
8 |
9 | export {
10 | createQRCode,
11 | type CreateQrCodeProps,
12 | type CreateQrCodeReturn,
13 | } from './create-qr-code.svelte.js';
14 | export {anatomy as qrCodeAnatomy} from './qr-code-anatomy.js';
15 | export {getQrCodeContext, setQrCodeContext} from './qr-code-context.svelte.js';
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/qr-code/qr-code-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/qr-code';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/qr-code/qr-code-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateQrCodeReturn} from './create-qr-code.svelte.js';
3 |
4 | export const [getQrCodeContext, setQrCodeContext] =
5 | createContext('QRCode');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/qr-code/qr-code.ts:
--------------------------------------------------------------------------------
1 | export {default as DownloadTrigger} from './qr-code-download-trigger.svelte';
2 | export {default as Frame} from './qr-code-frame.svelte';
3 | export {default as Overlay} from './qr-code-overlay.svelte';
4 | export {default as Pattern} from './qr-code-pattern.svelte';
5 | export {default as Root} from './qr-code-root.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/radio-group/radio-group-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/radio-group';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/radio-group/radio-group-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemProps} from '@zag-js/radio-group';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateRadioGroupReturn} from './create-radio-group.svelte.js';
4 |
5 | export const [getRadioGroupContext, setRadioGroupContext] =
6 | createContext('RadioGroup');
7 |
8 | export const [getRadioGroupItemPropsContext, setRadioGroupItemPropsContext] =
9 | createContext('RadioGroupItem');
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/radio-group/radio-group.ts:
--------------------------------------------------------------------------------
1 | export {default as Indicator} from './radio-group-indicator.svelte';
2 | export {default as ItemControl} from './radio-group-item-control.svelte';
3 | export {default as ItemHiddenInput} from './radio-group-item-hidden-input.svelte';
4 | export {default as ItemText} from './radio-group-item-text.svelte';
5 | export {default as Item} from './radio-group-item.svelte';
6 | export {default as Label} from './radio-group-label.svelte';
7 | export {default as Root} from './radio-group-root.svelte';
8 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/rating-group/index.ts:
--------------------------------------------------------------------------------
1 | export * as RatingGroup from './rating-group.js';
2 |
3 | export type {RatingGroupControlProps} from './rating-group-control.svelte';
4 | export type {RatingGroupHiddenInputProps} from './rating-group-hidden-input.svelte';
5 | export type {RatingGroupItemProps} from './rating-group-item.svelte';
6 | export type {RatingGroupLabelProps} from './rating-group-label.svelte';
7 | export type {RatingGroupProps} from './rating-group-root.svelte';
8 |
9 | export {
10 | createRatingGroup,
11 | type CreateRatingGroupProps,
12 | type CreateRatingGroupReturn,
13 | } from './create-rating-group.svelte.js';
14 | export {anatomy as ratingGroupAnatomy} from './rating-group-anatomy.js';
15 | export {
16 | getRatingGroupContext,
17 | setRatingGroupContext,
18 | } from './rating-group-context.svelte.js';
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/rating-group/rating-group-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/rating-group';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/rating-group/rating-group-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateRatingGroupReturn} from './create-rating-group.svelte.js';
3 |
4 | export const [getRatingGroupContext, setRatingGroupContext] =
5 | createContext('RatingGroup');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/rating-group/rating-group.ts:
--------------------------------------------------------------------------------
1 | export {default as Control} from './rating-group-control.svelte';
2 | export {default as HiddenInput} from './rating-group-hidden-input.svelte';
3 | export {default as Item} from './rating-group-item.svelte';
4 | export {default as Label} from './rating-group-label.svelte';
5 | export {default as Root} from './rating-group-root.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/segment-group/segment-group-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {anatomy as _} from '@zag-js/radio-group';
2 |
3 | export const anatomy = _.rename('segment-group');
4 | export const parts = anatomy.build();
5 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/segment-group/segment-group-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemProps} from '@zag-js/radio-group';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateSegmentGroupReturn} from './create-segment-group.svelte.js';
4 |
5 | export const [getSegmentGroupContext, setSegmentGroupContext] =
6 | createContext('SegmentGroup');
7 |
8 | export const [
9 | getSegmentGroupItemPropsContext,
10 | setSegmentGroupItemPropsContext,
11 | ] = createContext('SegmentGroupItem.props');
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/segment-group/segment-group.ts:
--------------------------------------------------------------------------------
1 | export {default as Indicator} from './segment-group-indicator.svelte';
2 | export {default as ItemControl} from './segment-group-item-control.svelte';
3 | export {default as ItemHiddenInput} from './segment-group-item-hidden-input.svelte';
4 | export {default as ItemText} from './segment-group-item-text.svelte';
5 | export {default as Item} from './segment-group-item.svelte';
6 | export {default as Label} from './segment-group-label.svelte';
7 | export {default as Root} from './segment-group-root.svelte';
8 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/select/select-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/select';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/select/select-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemGroupProps, ItemProps} from '@zag-js/select';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateSelectReturn} from './create-select.svelte.js';
4 |
5 | export const [getSelectContext, setSelectContext] =
6 | createContext('Select');
7 |
8 | export const [getSelectItemPropsContext, setSelectItemPropsContext] =
9 | createContext('SelectItem.props');
10 |
11 | export const [getSelectItemGroupPropsContext, setSelectItemGroupPropsContext] =
12 | createContext('SelectItemGroup.props');
13 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/select/select-list.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/signature-pad/signature-pad-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/signature-pad';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/signature-pad/signature-pad-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateSignaturePadReturn} from './create-signature-pad.svelte.js';
3 |
4 | export const [getSignaturePadContext, setSignaturePadContext] =
5 | createContext('SignaturePad');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/signature-pad/signature-pad.ts:
--------------------------------------------------------------------------------
1 | export {default as ClearTrigger} from './signature-pad-clear-trigger.svelte';
2 | export {default as Control} from './signature-pad-control.svelte';
3 | export {default as CurrentSegmentPath} from './signature-pad-current-segment-path.svelte';
4 | export {default as Guide} from './signature-pad-guide.svelte';
5 | export {default as HiddenInput} from './signature-pad-hidden-input.svelte';
6 | export {default as Label} from './signature-pad-label.svelte';
7 | export {default as Root} from './signature-pad-root.svelte';
8 | export {default as SegmentPath} from './signature-pad-segment-path.svelte';
9 | export {default as Segment} from './signature-pad-segment.svelte';
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/slider/slider-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/slider';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/slider/slider-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ThumbProps} from '@zag-js/slider';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateSliderReturn} from './create-slider.svelte.js';
4 |
5 | export const [getSliderContext, setSliderContext] =
6 | createContext('Slider');
7 |
8 | export const [getSliderThumbPropsContext, setSliderThumbPropsContext] =
9 | createContext('SliderThumb.props');
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/slider/slider-range.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/slider/slider-track.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/slider/slider.ts:
--------------------------------------------------------------------------------
1 | export {default as Control} from './slider-control.svelte';
2 | export {default as DraggingIndicator} from './slider-dragging-indicator.svelte';
3 | export {default as HiddenInput} from './slider-hidden-input.svelte';
4 | export {default as Label} from './slider-label.svelte';
5 | export {default as MarkerGroup} from './slider-marker-group.svelte';
6 | export {default as Marker} from './slider-marker.svelte';
7 | export {default as Range} from './slider-range.svelte';
8 | export {default as Root} from './slider-root.svelte';
9 | export {default as Thumb} from './slider-thumb.svelte';
10 | export {default as Track} from './slider-track.svelte';
11 | export {default as ValueText} from './slider-value-text.svelte';
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/splitter/index.ts:
--------------------------------------------------------------------------------
1 | export * as Splitter from './splitter.js';
2 |
3 | export type {SplitterPanelProps} from './splitter-panel.svelte';
4 | export type {SplitterResizeTriggerProps} from './splitter-resize-trigger.svelte';
5 | export type {SplitterProps} from './splitter-root.svelte';
6 |
7 | export {
8 | createSplitter,
9 | type CreateSplitterProps,
10 | type CreateSplitterReturn,
11 | } from './create-splitter.svelte.js';
12 | export {anatomy as splitterAnatomy} from './splitter-anatomy.js';
13 | export {
14 | getSplitterContext,
15 | setSplitterContext,
16 | } from './splitter-context.svelte.js';
17 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/splitter/splitter-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/splitter';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/splitter/splitter-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateSplitterReturn} from './create-splitter.svelte.js';
3 |
4 | export const [getSplitterContext, setSplitterContext] =
5 | createContext('Splitter');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/splitter/splitter.ts:
--------------------------------------------------------------------------------
1 | export { default as Panel } from './splitter-panel.svelte';
2 | export { default as ResizeTrigger } from './splitter-resize-trigger.svelte';
3 | export { default as Root } from './splitter-root.svelte';
4 |
5 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/steps/steps-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/steps';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/steps/steps-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemProps} from '@zag-js/steps';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateStepsReturn} from './create-steps.svelte.js';
4 |
5 | export const [getStepsContext, setStepsContext] =
6 | createContext('Steps');
7 |
8 | export const [getStepsItemPropsContext, setStepsItemPropsContext] =
9 | createContext('StepsItem.props');
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/steps/steps-list.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/steps/steps-progress.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/steps/steps.ts:
--------------------------------------------------------------------------------
1 | export {default as CompletedContent} from './steps-completed-content.svelte';
2 | export {default as Content} from './steps-content.svelte';
3 | export {default as Indicator} from './steps-indicator.svelte';
4 | export {default as Item} from './steps-item.svelte';
5 | export {default as List} from './steps-list.svelte';
6 | export {default as NextTrigger} from './steps-next-trigger.svelte';
7 | export {default as PrevTrigger} from './steps-prev-trigger.svelte';
8 | export {default as Progress} from './steps-progress.svelte';
9 | export {default as Root} from './steps-root.svelte';
10 | export {default as Separator} from './steps-separator.svelte';
11 | export {default as Trigger} from './steps-trigger.svelte';
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/switch/index.ts:
--------------------------------------------------------------------------------
1 | export * as Switch from './switch.js';
2 |
3 | export type {SwitchControlProps} from './switch-control.svelte';
4 | export type {SwitchHiddenInputProps} from './switch-hidden-input.svelte';
5 | export type {SwitchLabelProps} from './switch-label.svelte';
6 | export type {SwitchProps} from './switch-root.svelte';
7 | export type {SwitchThumbProps} from './switch-thumb.svelte';
8 |
9 | export {
10 | createSwitch,
11 | type CreateSwitchProps,
12 | type CreateSwitchReturn,
13 | } from './create-switch.svelte.js';
14 | export {anatomy as switchAnatomy} from './switch-anatomy.js';
15 | export {getSwitchContext, setSwitchContext} from './switch-context.svelte.js';
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/switch/switch-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/switch';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/switch/switch-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateSwitchReturn} from './create-switch.svelte.js';
3 |
4 | export const [getSwitchContext, setSwitchContext] =
5 | createContext('Switch');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/switch/switch-hidden-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
21 |
22 | {#if asChild}
23 | {@render asChild(mergedProps)}
24 | {:else}
25 |
26 | {/if}
27 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/switch/switch-thumb.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/switch/switch.ts:
--------------------------------------------------------------------------------
1 | export {default as Control} from './switch-control.svelte';
2 | export {default as HiddenInput} from './switch-hidden-input.svelte';
3 | export {default as Label} from './switch-label.svelte';
4 | export {default as Root} from './switch-root.svelte';
5 | export {default as Thumb} from './switch-thumb.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tabs/index.ts:
--------------------------------------------------------------------------------
1 | export * as Tabs from './tabs.js';
2 |
3 | export type {TabsContentProps} from './tabs-content.svelte';
4 | export type {TabsIndicatorProps} from './tabs-indicator.svelte';
5 | export type {TabsListProps} from './tabs-list.svelte';
6 | export type {TabsProps} from './tabs-root.svelte';
7 | export type {TabsTriggerProps} from './tabs-trigger.svelte';
8 |
9 | export {
10 | createTabs,
11 | type CreateTabsProps,
12 | type CreateTabsReturn,
13 | } from './create-tabs.svelte.js';
14 | export {anatomy as tabsAnatomy} from './tabs-anatomy.js';
15 | export {getTabsContext, setTabsContext} from './tabs-context.svelte.js';
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tabs/tabs-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/tabs';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tabs/tabs-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateTabsReturn} from './create-tabs.svelte.js';
3 |
4 | export const [getTabsContext, setTabsContext] =
5 | createContext('Tabs');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tabs/tabs-indicator.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tabs/tabs-list.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tabs/tabs.ts:
--------------------------------------------------------------------------------
1 | export {default as Content} from './tabs-content.svelte';
2 | export {default as Indicator} from './tabs-indicator.svelte';
3 | export {default as List} from './tabs-list.svelte';
4 | export {default as Root} from './tabs-root.svelte';
5 | export {default as Trigger} from './tabs-trigger.svelte';
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tags-input/tags-input-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/tags-input';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tags-input/tags-input-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemProps} from '@zag-js/tags-input';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateTagsInputReturn} from './create-tags-input.svelte.js';
4 |
5 | export const [getTagsInputContext, setTagsInputContext] =
6 | createContext('TagsInput');
7 |
8 | export const [getTagsInputItemPropsContext, setTagsInputItemPropsContext] =
9 | createContext('TagsInputItem.props');
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tags-input/tags-input-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
21 |
22 | {#if asChild}
23 | {@render asChild(mergedProps)}
24 | {:else}
25 |
26 | {/if}
27 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tags-input/tags-input.ts:
--------------------------------------------------------------------------------
1 | export {default as ClearTrigger} from './tags-input-clear-trigger.svelte';
2 | export {default as Control} from './tags-input-control.svelte';
3 | export {default as HiddenInput} from './tags-input-hidden-input.svelte';
4 | export {default as Input} from './tags-input-input.svelte';
5 | export {default as ItemDeleteTrigger} from './tags-input-item-delete-trigger.svelte';
6 | export {default as ItemInput} from './tags-input-item-input.svelte';
7 | export {default as ItemPreview} from './tags-input-item-preview.svelte';
8 | export {default as ItemText} from './tags-input-item-text.svelte';
9 | export {default as Item} from './tags-input-item.svelte';
10 | export {default as Label} from './tags-input-label.svelte';
11 | export {default as Root} from './tags-input-root.svelte';
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/time-picker/time-picker-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/time-picker';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/time-picker/time-picker-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateTimePickerReturn} from './create-time-picker.svelte.js';
3 |
4 | export const [getTimePickerContext, setTimePickerContext] =
5 | createContext('TimePicker');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/time-picker/time-picker-input.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
21 |
22 | {#if asChild}
23 | {@render asChild(mergedProps)}
24 | {:else}
25 |
26 | {/if}
27 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/timer/create-timer.svelte.ts:
--------------------------------------------------------------------------------
1 | import {normalizeProps, reflect, useMachine} from '@zag-js/svelte';
2 | import * as timer from '@zag-js/timer';
3 | import {getEnvironmentContext} from '../environment-provider/enviroment-provider-context.svelte.js';
4 |
5 | export interface CreateTimerProps extends Omit {}
6 | export interface CreateTimerReturn extends timer.Api {}
7 |
8 | export function createTimer(props: CreateTimerProps): CreateTimerReturn {
9 | const environment = getEnvironmentContext();
10 |
11 | const service = useMachine(timer.machine, () => ({
12 | getRootNode: environment?.getRootNode,
13 | ...props,
14 | }));
15 |
16 | return reflect(() => timer.connect(service, normalizeProps));
17 | }
18 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/timer/timer-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/timer';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/timer/timer-area.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/timer/timer-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {ItemProps} from '@zag-js/timer';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateTimerReturn} from './create-timer.svelte.js';
4 |
5 | export const [getTimerContext, setTimerContext] =
6 | createContext('Timer');
7 |
8 | export const [getTimerItemPropsContext, setTimerItemPropsContext] =
9 | createContext('TimerItem.props');
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/timer/timer-control.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/timer/timer.ts:
--------------------------------------------------------------------------------
1 | export {parse} from '@zag-js/timer';
2 | export {default as ActionTrigger} from './timer-action-trigger.svelte';
3 | export {default as Area} from './timer-area.svelte';
4 | export {default as Control} from './timer-control.svelte';
5 | export {default as ItemLabel} from './timer-item-label.svelte';
6 | export {default as ItemValue} from './timer-item-value.svelte';
7 | export {default as Item} from './timer-item.svelte';
8 | export {default as Root} from './timer-root.svelte';
9 | export {default as Separator} from './timer-separator.svelte';
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toast/create-toaster.svelte.ts:
--------------------------------------------------------------------------------
1 | import * as toast from '@zag-js/toast';
2 |
3 | export interface CreateToasterProps extends toast.StoreProps {}
4 | export interface CreateToasterReturn extends toast.Store {}
5 |
6 | export function createToaster(props: CreateToasterProps): CreateToasterReturn {
7 | const store = $derived(toast.createStore(props));
8 | return store;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toast/toast-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/toast';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toast/toast-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import * as toast from '@zag-js/toast';
2 | import {createContext} from '../create-context.svelte.js';
3 |
4 | export const [getToastContext, setToastContext] =
5 | createContext('Toast');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toast/toast-provider.svelte:
--------------------------------------------------------------------------------
1 |
26 |
27 | {@render props.children?.(api)}
28 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toast/toast.ts:
--------------------------------------------------------------------------------
1 | export {default as ActionTrigger} from './toast-action-trigger.svelte';
2 | export {default as CloseTrigger} from './toast-close-trigger.svelte';
3 | export {default as Description} from './toast-description.svelte';
4 | export {default as GhostAfter} from './toast-ghost-after.svelte';
5 | export {default as GhostBefore} from './toast-ghost-before.svelte';
6 | export {default as Root} from './toast-root.svelte';
7 | export {default as Title} from './toast-title.svelte';
8 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle-group/index.ts:
--------------------------------------------------------------------------------
1 | export * as ToggleGroup from './toggle-group.js';
2 |
3 | export type {ToggleGroupItemProps} from './toggle-group-item.svelte';
4 | export type {ToggleGroupProps} from './toggle-group-root.svelte';
5 |
6 | export {
7 | createToggleGroup,
8 | type CreateToggleGroupProps,
9 | type CreateToggleGroupReturn,
10 | } from './create-toggle-group.svelte.js';
11 | export {anatomy as toggleGroupAnatomy} from './toggle-group-anatomy.js';
12 | export {
13 | getToggleGroupContext,
14 | setToggleGroupContext,
15 | } from './toggle-group-context.svelte.js';
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle-group/toggle-group-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/toggle-group';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle-group/toggle-group-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateToggleGroupReturn} from './create-toggle-group.svelte.js';
3 |
4 | export const [getToggleGroupContext, setToggleGroupContext] =
5 | createContext('ToggleGroup');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle-group/toggle-group.ts:
--------------------------------------------------------------------------------
1 | export {default as Item} from './toggle-group-item.svelte';
2 | export {default as Root} from './toggle-group-root.svelte';
3 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle/create-toggle.svelte.ts:
--------------------------------------------------------------------------------
1 | import {normalizeProps, reflect, useMachine} from '@zag-js/svelte';
2 | import * as toggle from '@zag-js/toggle';
3 |
4 | export interface CreateToggleProps extends toggle.Props {}
5 | export interface CreateToggleReturn extends toggle.Api {}
6 |
7 | export function createToggle(props: CreateToggleProps) {
8 | const service = useMachine(toggle.machine, props);
9 | return reflect(() => toggle.connect(service, normalizeProps));
10 | }
11 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle/index.ts:
--------------------------------------------------------------------------------
1 | export * as Toggle from './toggle.js';
2 |
3 | export type {ToggleIndicatorProps} from './toggle-indicator.svelte';
4 | export type {ToggleProps} from './toggle-root.svelte';
5 |
6 | export {
7 | createToggle,
8 | type CreateToggleProps,
9 | type CreateToggleReturn,
10 | } from './create-toggle.svelte.js';
11 | export {anatomy as toggleAnatomy} from './toggle-anatomy.js';
12 | export {getToggleContext, setToggleContext} from './toggle-context.svelte.js';
13 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle/toggle-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/toggle';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle/toggle-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateToggleReturn} from './create-toggle.svelte.js';
3 |
4 | export const [getToggleContext, setToggleContext] =
5 | createContext('Toggle');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/toggle/toggle.ts:
--------------------------------------------------------------------------------
1 | export {default as Indicator} from './toggle-indicator.svelte';
2 | export {default as Root} from './toggle-root.svelte';
3 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tooltip/index.ts:
--------------------------------------------------------------------------------
1 | export * as Tooltip from './tooltip.js';
2 |
3 | export type {TooltipArrowTipProps} from './tooltip-arrow-tip.svelte';
4 | export type {TooltipArrowProps} from './tooltip-arrow.svelte';
5 | export type {TooltipContentProps} from './tooltip-content.svelte';
6 | export type {TooltipPositionerProps} from './tooltip-positioner.svelte';
7 | export type {TooltipProps} from './tooltip-root.svelte';
8 | export type {TooltipTriggerProps} from './tooltip-trigger.svelte';
9 |
10 | export {
11 | createTooltip,
12 | type CreateTooltipProps,
13 | type CreateTooltipReturn,
14 | } from './create-tooltip.svelte.js';
15 | export {anatomy as tooltipAnatomy} from './tooltip-anatomy.js';
16 | export {
17 | getTooltipContext,
18 | setTooltipContext,
19 | } from './tooltip-context.svelte.js';
20 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tooltip/tooltip-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/tooltip';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tooltip/tooltip-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import type {CreateTooltipReturn} from './create-tooltip.svelte.js';
3 |
4 | export const [getTooltipContext, setTooltipContext] =
5 | createContext('Tooltip');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tooltip/tooltip.ts:
--------------------------------------------------------------------------------
1 | export {default as ArrowTip} from './tooltip-arrow-tip.svelte';
2 | export {default as Arrow} from './tooltip-arrow.svelte';
3 | export {default as Content} from './tooltip-content.svelte';
4 | export {default as Positioner} from './tooltip-positioner.svelte';
5 | export {default as Root} from './tooltip-root.svelte';
6 | export {default as Trigger} from './tooltip-trigger.svelte';
7 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tour/tour-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {anatomy as _} from '@zag-js/tour';
2 |
3 | export const anatomy = _.extendWith('trigger');
4 | export const parts = anatomy.build();
5 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tour/tour-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from '../create-context.svelte.js';
2 | import {type CreateTourReturn} from './create-tour.svelte.js';
3 |
4 | export const [getTourContext, setTourContext] =
5 | createContext('Tour');
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tour/tour-spotlight.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
22 |
23 | {#if asChild}
24 | {@render asChild(mergedProps)}
25 | {:else}
26 |
27 | {@render children?.()}
28 |
29 | {/if}
30 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tree-view/tree-view-anatomy.ts:
--------------------------------------------------------------------------------
1 | export {anatomy} from '@zag-js/tree-view';
2 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tree-view/tree-view-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import type {NodeProps} from '@zag-js/tree-view';
2 | import {createContext} from '../create-context.svelte.js';
3 | import type {CreateTreeViewReturn} from './create-tree-view.svelte.js';
4 |
5 | export const [getTreeViewContext, setTreeViewContext] =
6 | createContext('TreeView');
7 |
8 | export const [getTreeViewNodePropsContext, setTreeViewNodePropsContext] =
9 | createContext('TreeViewNodeProps');
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/lib/tree-view/types.ts:
--------------------------------------------------------------------------------
1 | export interface NodeProps {
2 | node: T;
3 | indexPath: number[];
4 | }
5 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/+page.svelte:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/calvo-jp/ui-ingredients/a49d45bdaecd08f9e5752b26cc663fa92663b6b7/packages/ui-ingredients/src/routes/+page.svelte
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/+page.ts:
--------------------------------------------------------------------------------
1 | import {redirect} from '@sveltejs/kit';
2 | import type {PageLoad} from './$types.js';
3 |
4 | export const load: PageLoad = async () => {
5 | redirect(307, '/accordion');
6 | };
7 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/check-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
21 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/chevron-down-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
21 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/chevron-left-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
21 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/chevron-right-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
21 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/chevron-up-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
21 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/dropper-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
23 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/highlight/+page.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 | {
13 | query = e.currentTarget.value;
14 | }}
15 | style="padding:0px 14px;height:40px;border:1px solid var(--border-default);"
16 | />
17 |
18 |
19 |
20 |
26 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/info-circle-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
23 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/menu/context/+page.svelte:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 | Right click
15 |
16 |
17 |
18 | {#each items as item}
19 |
20 | {item.label}
21 |
22 | {/each}
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/refresh-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
23 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/star-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/toaster.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createToaster} from '$lib/index.js';
2 |
3 | export const toaster = createToaster({
4 | placement: 'bottom-end',
5 | overlap: true,
6 | duration: 1000 * 5,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/routes/x-icon.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
21 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/accordion/accordion.svelte:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 | {#each items as item}
19 |
20 |
21 | {item.label}
22 |
23 |
24 | {item.content}
25 |
26 | {/each}
27 |
28 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/alert-dialog/alert-dialog.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Trigger
7 |
8 |
9 |
10 | Title
11 | Description
12 | Close
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/alert-dialog/alert-dialog.test.ts:
--------------------------------------------------------------------------------
1 | import {alertDialogAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import AlertDialog from './alert-dialog.svelte';
6 |
7 | describe.skip('AlertDialog', () => {
8 | it.each(getAnatomySelector(alertDialogAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(AlertDialog);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(AlertDialog);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/alert/alert.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 | Title
8 | Description
9 |
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/alert/alert.test.ts:
--------------------------------------------------------------------------------
1 | import {alertAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Alert from './alert.svelte';
6 |
7 | describe.skip('Alert', () => {
8 | it.each(getAnatomySelector(alertAnatomy))('should render %s', (selector) => {
9 | render(Alert);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(Alert);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/avatar/avatar.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 | {name}
15 |
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/breadcrumbs/breadcrumbs.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 | Home
9 | /
10 |
11 |
12 | Components
13 | /
14 |
15 |
16 |
17 | Breadcrumbs
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/breadcrumbs/breadcrumbs.test.ts:
--------------------------------------------------------------------------------
1 | import {breadcrumbsAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Breadcrumbs from './breadcrumbs.svelte';
6 |
7 | describe.skip('Breadcrumbs', () => {
8 | it.each(getAnatomySelector(breadcrumbsAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Breadcrumbs);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Breadcrumbs);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/checkbox/checkbox.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 | ✔
8 |
9 | I accept the terms and conditions
10 |
11 |
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/checkbox/checkbox.test.ts:
--------------------------------------------------------------------------------
1 | import {checkboxAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Checkbox from './checkbox.svelte';
6 |
7 | describe.skip('Checkbox', () => {
8 | it.each(getAnatomySelector(checkboxAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Checkbox);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Checkbox);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/clipboard/clipboard.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | Label
9 |
10 |
11 |
12 |
13 |
14 |
15 | {#snippet children(ctx)}
16 | {#if ctx.copied}
17 | Copied
18 | {:else}
19 | Copy
20 | {/if}
21 | {/snippet}
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/clipboard/clipboard.test.ts:
--------------------------------------------------------------------------------
1 | import {clipboardAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Clipboard from './clipboard.svelte';
6 |
7 | describe.skip('Clipboard', () => {
8 | it.each(getAnatomySelector(clipboardAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Clipboard);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Clipboard);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/collapsible/collapsible.svelte:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 | Toggle
13 | {content}
14 |
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/collapsible/collapsible.test.ts:
--------------------------------------------------------------------------------
1 | import {collapsibleAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Collapsible from './collapsible.svelte';
6 |
7 | describe.skip('Collapsible', () => {
8 | it.each(getAnatomySelector(collapsibleAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Collapsible);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Collapsible);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/combobox/combobox.svelte:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/date-picker/date-picker.test.ts:
--------------------------------------------------------------------------------
1 | import {datePickerAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import DatePicker from './date-picker.svelte';
6 |
7 | describe.skip('DatePicker', () => {
8 | /* flaky. hangs */
9 | it.skip.each(getAnatomySelector(datePickerAnatomy))(
10 | 'should render %s',
11 | (selector) => {
12 | render(DatePicker);
13 | expect(document.querySelector(selector)).toBeInTheDocument();
14 | },
15 | );
16 |
17 | it('should have no a11y violations', async () => {
18 | const {container} = render(DatePicker);
19 | const results = await axe(container);
20 | expect(results).toHaveNoViolations();
21 | });
22 | });
23 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/dialog/dialog.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Trigger
7 |
8 |
9 |
10 | Title
11 | Description
12 | Close
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/dialog/dialog.test.ts:
--------------------------------------------------------------------------------
1 | import {dialogAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Dialog from './dialog.svelte';
6 |
7 | describe.skip('Dialog', () => {
8 | it.each(getAnatomySelector(dialogAnatomy))('should render %s', (selector) => {
9 | render(Dialog);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(Dialog);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/drawer/drawer.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Trigger
7 |
8 |
9 |
10 |
11 | Title
12 | Description
13 |
14 |
15 |
16 | Close
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/drawer/drawer.test.ts:
--------------------------------------------------------------------------------
1 | import {drawerAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Drawer from './drawer.svelte';
6 |
7 | describe.skip('Drawer', () => {
8 | it.each(getAnatomySelector(drawerAnatomy))('should render %s', (selector) => {
9 | render(Drawer);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(Drawer);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/editable/editable.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Label
7 |
8 |
9 |
10 |
11 |
12 | Edit
13 | Cancel
14 | Submit
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/editable/editable.test.ts:
--------------------------------------------------------------------------------
1 | import {editableAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Editable from './editable.svelte';
6 |
7 | describe.skip('Editable', () => {
8 | it.each(getAnatomySelector(editableAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Editable);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Editable);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/field/field.test.ts:
--------------------------------------------------------------------------------
1 | import {fieldAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Field from './field.svelte';
6 |
7 | describe.skip('Field', () => {
8 | it.each(getAnatomySelector(fieldAnatomy))('should render %s', (selector) => {
9 | render(Field);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(Field);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/file-upload/file-upload.test.ts:
--------------------------------------------------------------------------------
1 | import {fileUploadAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import FileUpload from './file-upload.svelte';
6 |
7 | describe.skip('FileUpload', () => {
8 | it.each(getAnatomySelector(fileUploadAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(FileUpload);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(FileUpload);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/hover-card/hover-card.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | Trigger
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | {content}
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/hover-card/hover-card.test.ts:
--------------------------------------------------------------------------------
1 | import {hoverCardAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import HoverCard from './hover-card.svelte';
6 |
7 | describe.skip('HoverCard', () => {
8 | it.each(getAnatomySelector(hoverCardAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(HoverCard);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(HoverCard);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/number-input/number-input.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Enter Amount
7 |
8 |
9 |
10 |
11 | +
12 | -
13 |
14 |
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/number-input/number-input.test.ts:
--------------------------------------------------------------------------------
1 | import {numberInputAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import NumberInput from './number-input.svelte';
6 |
7 | describe.skip('NumberInput', () => {
8 | it.each(getAnatomySelector(numberInputAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(NumberInput);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(NumberInput);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/pagination/pagination.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | {#snippet children(context)}
7 | <
8 | >
9 |
10 | {#each context.pages as page, index}
11 | {#if page.type === 'page'}
12 |
13 | {:else}
14 | ...
15 | {/if}
16 | {/each}
17 | {/snippet}
18 |
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/pagination/pagination.test.ts:
--------------------------------------------------------------------------------
1 | import {paginationAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Pagination from './pagination.svelte';
6 |
7 | describe.skip('Pagination', () => {
8 | it.each(getAnatomySelector(paginationAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Pagination);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Pagination);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/pin-input/pin-input.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Label
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/pin-input/pin-input.test.ts:
--------------------------------------------------------------------------------
1 | import {pinInputAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import PinInput from './pin-input.svelte';
6 |
7 | describe.skip('PinInput', () => {
8 | it.each(getAnatomySelector(pinInputAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(PinInput);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(PinInput);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/popover/popover.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Trigger
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Title
15 | Description
16 | Close
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/popover/popover.test.ts:
--------------------------------------------------------------------------------
1 | import {popoverAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Popover from './popover.svelte';
6 |
7 | describe.skip('Popover', () => {
8 | it.each(getAnatomySelector(popoverAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Popover);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Popover);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/progress/progress.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Label
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/progress/progress.test.ts:
--------------------------------------------------------------------------------
1 | import {progressAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Progress from './progress.svelte';
6 |
7 | describe.skip('Progress', () => {
8 | it.each(getAnatomySelector(progressAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Progress);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Progress);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/qr-code/qr-code.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/qr-code/qr-code.test.ts:
--------------------------------------------------------------------------------
1 | import {qrCodeAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import QrCode from './qr-code.svelte';
6 |
7 | describe.skip('QrCode', () => {
8 | it.each(getAnatomySelector(qrCodeAnatomy))('should render %s', (selector) => {
9 | render(QrCode);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(QrCode);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/radio-group/radio-group.svelte:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 | Label
18 |
19 |
20 | {#each items as { value, label }}
21 |
22 |
23 |
24 | {label}
25 |
26 | {/each}
27 |
28 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/rating-group/rating-group.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | {#snippet children(context)}
7 | Label
8 |
9 |
10 | {#each context.items as index}
11 |
12 | {/each}
13 |
14 | {/snippet}
15 |
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/rating-group/rating-group.test.ts:
--------------------------------------------------------------------------------
1 | import {ratingGroupAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import RatingGroup from './rating-group.svelte';
6 |
7 | describe.skip('RatingGroup', () => {
8 | it.each(getAnatomySelector(ratingGroupAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(RatingGroup);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(RatingGroup);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/segment-group/segment-group.svelte:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 | Label
18 |
19 |
20 | {#each items as { value, label }}
21 |
22 |
23 |
24 | {label}
25 |
26 | {/each}
27 |
28 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/select/select.svelte:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/signature-pad/signature-pad.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | {#snippet children(context)}
7 | Label
8 |
9 |
10 |
11 | {#each context.paths as path}
12 |
13 | {:else}
14 |
15 | {/each}
16 |
17 |
18 |
19 |
20 |
21 | Clear
22 | {/snippet}
23 |
24 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/signature-pad/signature-pad.test.ts:
--------------------------------------------------------------------------------
1 | import {signaturePadAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import SignaturePad from './signature-pad.svelte';
6 |
7 | describe.skip('SignaturePad', () => {
8 | it.each(getAnatomySelector(signaturePadAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(SignaturePad);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(SignaturePad);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/slider/slider.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Label
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 25
21 | 50
22 | 75
23 |
24 |
25 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/slider/slider.test.ts:
--------------------------------------------------------------------------------
1 | import {sliderAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Slider from './slider.svelte';
6 |
7 | describe.skip('Slider', () => {
8 | it.each(getAnatomySelector(sliderAnatomy))('should render %s', (selector) => {
9 | render(Slider);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(Slider);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/splitter/splitter.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
11 | A
12 |
13 | B
14 |
15 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/splitter/splitter.test.ts:
--------------------------------------------------------------------------------
1 | import {splitterAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Splitter from './splitter.svelte';
6 |
7 | describe.skip('Splitter', () => {
8 | it.each(getAnatomySelector(splitterAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Splitter);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Splitter);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/switch/switch.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Label
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/switch/switch.test.ts:
--------------------------------------------------------------------------------
1 | import {switchAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Switch from './switch.svelte';
6 |
7 | describe.skip('Switch', () => {
8 | it.each(getAnatomySelector(switchAnatomy))('should render %s', (selector) => {
9 | render(Switch);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(Switch);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/tabs/tabs.svelte:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 | {#each items as { value, label }}
22 |
23 | {label}
24 |
25 | {/each}
26 |
27 |
28 | {#each items as { value, content }}
29 | {content}
30 | {/each}
31 |
32 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/tags-input/tags-input.test.ts:
--------------------------------------------------------------------------------
1 | import {tagsInputAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import TagsInput from './tags-input.svelte';
6 |
7 | describe.skip('TagsInput', () => {
8 | it.each(getAnatomySelector(tagsInputAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(TagsInput);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(TagsInput);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/time-picker/time-picker.test.ts:
--------------------------------------------------------------------------------
1 | import {timePickerAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import TimePicker from './time-picker.svelte';
6 |
7 | describe.skip('TimePicker', () => {
8 | it.each(getAnatomySelector(timePickerAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(TimePicker);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(TimePicker);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/timer/timer.test.ts:
--------------------------------------------------------------------------------
1 | import {timerAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Timer from './timer.svelte';
6 |
7 | describe.skip('Timer', () => {
8 | it.each(getAnatomySelector(timerAnatomy))('should render %s', (selector) => {
9 | render(Timer);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(Timer);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/toast/toast.svelte:
--------------------------------------------------------------------------------
1 |
8 |
9 |
18 |
19 |
20 |
21 |
22 |
23 | Close
24 | Action
25 |
26 |
27 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/toast/toast.test.ts:
--------------------------------------------------------------------------------
1 | import {render} from '@testing-library/svelte';
2 | import {userEvent} from '@testing-library/user-event';
3 | import {axe} from 'vitest-axe';
4 | import Toast from './toast.svelte';
5 |
6 | describe.skip('Toast', () => {
7 | it('should have no a11y violations', async () => {
8 | const {container, getByRole} = render(Toast);
9 |
10 | const user = userEvent.setup();
11 | const trigger = getByRole('button', {name: 'Create toast'});
12 |
13 | await user.click(trigger);
14 |
15 | const results = await axe(container);
16 |
17 | expect(results).toHaveNoViolations();
18 | });
19 | });
20 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/toggle-group/toggle-group.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | 1
7 | 2
8 | 3
9 |
10 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/toggle-group/toggle-group.test.ts:
--------------------------------------------------------------------------------
1 | import {toggleGroupAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import ToggleGroup from './toggle-group.svelte';
6 |
7 | describe.skip('ToggleGroup', () => {
8 | it.each(getAnatomySelector(toggleGroupAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(ToggleGroup);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(ToggleGroup);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/toggle/toggle.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 | Toggle
6 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/toggle/toggle.test.ts:
--------------------------------------------------------------------------------
1 | import {toggleAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Toggle from './toggle.svelte';
6 |
7 | describe.skip('Toggle', () => {
8 | it.each(getAnatomySelector(toggleAnatomy))('should render %s', (selector) => {
9 | render(Toggle);
10 | expect(document.querySelector(selector)).toBeInTheDocument();
11 | });
12 |
13 | it('should have no a11y violations', async () => {
14 | const {container} = render(Toggle);
15 | const results = await axe(container);
16 | expect(results).toHaveNoViolations();
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/tooltip/tooltip.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Trigger
7 |
8 |
9 |
10 |
11 |
12 | Content
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/tooltip/tooltip.test.ts:
--------------------------------------------------------------------------------
1 | import {tooltipAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import Tooltip from './tooltip.svelte';
6 |
7 | describe.skip('Tooltip', () => {
8 | it.each(getAnatomySelector(tooltipAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(Tooltip);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(Tooltip);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/tree-view/tree-view.svelte:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/tree-view/tree-view.test.ts:
--------------------------------------------------------------------------------
1 | import {treeViewAnatomy} from '$lib/index.js';
2 | import {render} from '@testing-library/svelte';
3 | import {axe} from 'vitest-axe';
4 | import {getAnatomySelector} from '../utils.js';
5 | import TreeView from './tree-view.svelte';
6 |
7 | describe.skip('TreeView', () => {
8 | it.each(getAnatomySelector(treeViewAnatomy))(
9 | 'should render %s',
10 | (selector) => {
11 | render(TreeView);
12 | expect(document.querySelector(selector)).toBeInTheDocument();
13 | },
14 | );
15 |
16 | it('should have no a11y violations', async () => {
17 | const {container} = render(TreeView);
18 | const results = await axe(container);
19 | expect(results).toHaveNoViolations();
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/src/tests/utils.ts:
--------------------------------------------------------------------------------
1 | import type {AnatomyInstance} from '@zag-js/anatomy';
2 |
3 | export function getAnatomySelector>(
4 | anatomy: T,
5 | ) {
6 | const parts = anatomy.build();
7 |
8 | return Object.values(parts).map((part) => {
9 | return '[data-scope="$1"][data-part="$2"]'
10 | .replace('$1', part.attrs['data-scope'])
11 | .replace('$2', part.attrs['data-part']);
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/calvo-jp/ui-ingredients/a49d45bdaecd08f9e5752b26cc663fa92663b6b7/packages/ui-ingredients/static/favicon.png
--------------------------------------------------------------------------------
/packages/ui-ingredients/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from '@sveltejs/adapter-vercel';
2 | import {vitePreprocess} from '@sveltejs/vite-plugin-svelte';
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | const config = {
6 | preprocess: vitePreprocess(),
7 | kit: {
8 | adapter: adapter(),
9 | },
10 | compilerOptions: {
11 | runes: true,
12 | },
13 | };
14 |
15 | export default config;
16 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["vitest/globals"],
5 | "allowJs": true,
6 | "checkJs": true,
7 | "esModuleInterop": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "resolveJsonModule": true,
10 | "skipLibCheck": true,
11 | "sourceMap": true,
12 | "strict": true,
13 | "module": "NodeNext",
14 | "moduleResolution": "NodeNext"
15 | },
16 | "include": ["src", "vitest.d.ts", "vitest.setup.ts"]
17 | }
18 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {sveltekit} from '@sveltejs/kit/vite';
2 | import {svelteTesting} from '@testing-library/svelte/vite';
3 | import {defineConfig} from 'vitest/config';
4 |
5 | export default defineConfig({
6 | plugins: [sveltekit(), svelteTesting()],
7 | test: {
8 | watch: false,
9 | globals: true,
10 | include: ['src/**/*.{test,spec}.{js,ts}'],
11 | environment: 'jsdom',
12 | setupFiles: ['vitest.setup.ts'],
13 | passWithNoTests: true,
14 | },
15 | server: {
16 | port: 5000,
17 | },
18 | });
19 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/vitest.d.ts:
--------------------------------------------------------------------------------
1 | import 'vitest';
2 |
3 | import type {TestingLibraryMatchers} from '@testing-library/jest-dom/matchers';
4 | import type {AxeMatchers} from 'vitest-axe/matchers';
5 |
6 | declare module 'vitest' {
7 | interface Assertion extends TestingLibraryMatchers, AxeMatchers {}
8 |
9 | interface AsymmetricMatchersContaining
10 | extends TestingLibraryMatchers,
11 | AxeMatchers {}
12 | }
13 |
--------------------------------------------------------------------------------
/packages/ui-ingredients/vitest.setup.ts:
--------------------------------------------------------------------------------
1 | import '@testing-library/jest-dom/vitest';
2 | import 'vitest-axe/extend-expect';
3 | import 'vitest-canvas-mock';
4 |
5 | import {faker} from '@faker-js/faker';
6 | import {cleanup} from '@testing-library/svelte';
7 | import {JSDOM} from 'jsdom';
8 | import ResizeObserver from 'resize-observer-polyfill';
9 | import {vi} from 'vitest';
10 |
11 | const {window} = new JSDOM();
12 |
13 | vi.stubGlobal('ResizeObserver', ResizeObserver);
14 | window['ResizeObserver'] = ResizeObserver;
15 | window.URL.createObjectURL = () => faker.image.avatar();
16 |
17 | Object.assign(global, {
18 | window,
19 | document: window.document,
20 | });
21 |
22 | afterEach(cleanup);
23 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - packages/*
3 | - scripts
4 | - website
5 | ignoredBuiltDependencies:
6 | - '@tailwindcss/oxide'
7 |
--------------------------------------------------------------------------------
/scripts/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ui-ingredients-scripts",
3 | "type": "module",
4 | "private": true,
5 | "scripts": {
6 | "generate:anatomy-icons": "tsx src/generate-anatomy-icons.ts"
7 | },
8 | "dependencies": {
9 | "@clack/prompts": "^0.10.1",
10 | "@tsconfig/node22": "^22.0.1",
11 | "@types/react": "^19.1.4",
12 | "@types/react-dom": "^19.1.5",
13 | "@zag-js/anatomy-icons": "^1.12.3",
14 | "prettier": "^3.5.3",
15 | "react": "^19.1.0",
16 | "react-dom": "^19.1.0",
17 | "svgson": "^5.3.1",
18 | "tsx": "^4.19.4",
19 | "typescript": "^5.8.3"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/scripts/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/node22/tsconfig.json",
3 | "compilerOptions": {
4 | "resolveJsonModule": true,
5 | "verbatimModuleSyntax": true
6 | },
7 | "include": ["src"]
8 | }
9 |
--------------------------------------------------------------------------------
/website/src/app.d.ts:
--------------------------------------------------------------------------------
1 | declare global {
2 | namespace App {
3 | interface TocEntry {
4 | url: string;
5 | title: string;
6 | items: TocEntry[];
7 | }
8 |
9 | interface PageData {
10 | toc: TocEntry[];
11 | }
12 | }
13 | }
14 |
15 | export {};
16 |
--------------------------------------------------------------------------------
/website/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | %sveltekit.head%
10 |
11 |
12 |
16 | %sveltekit.body%
17 |
18 |
19 |
--------------------------------------------------------------------------------
/website/src/content/components/alert.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: alert
3 | title: Alert
4 | description: A component for displaying important messages or notifications.
5 | ---
6 |
7 |
8 |
9 | ## Usage
10 |
11 | ```svelte
12 |
16 |
17 |
18 |
19 |
20 |
21 | Title
22 | Description
23 |
24 | ```
25 |
26 | ## API Reference
27 |
28 |
29 |
--------------------------------------------------------------------------------
/website/src/content/components/avatar.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: avatar
3 | title: Avatar
4 | description: A visual component for displaying a user’s profile image or initials.
5 | ---
6 |
7 |
8 |
9 | ## Anatomy
10 |
11 |
12 |
13 | ## Usage
14 |
15 | ```svelte
16 |
19 |
20 |
21 |
22 | JD
23 |
24 | ```
25 |
26 | ## API Reference
27 |
28 |
29 |
--------------------------------------------------------------------------------
/website/src/content/components/collapsible.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: collapsible
3 | title: Collapsible
4 | description: A component that expands or collapses to show or hide content.
5 | ---
6 |
7 |
8 |
9 | ## Usage
10 |
11 | ```svelte
12 |
15 |
16 |
17 | Toggle
18 | Content
19 |
20 | ```
21 |
22 | ## API Reference
23 |
24 |
25 |
26 | ## Accessibility
27 |
28 | ### Keyboard Support
29 |
30 |
31 |
--------------------------------------------------------------------------------
/website/src/content/components/progress-circular.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: progress-circular
3 | title: Progress - Circular
4 | description: A component for displaying the completion status of a task or process.
5 | ---
6 |
7 |
8 |
9 | ## Anatomy
10 |
11 |
12 |
13 | ## Usage
14 |
15 | ```svelte
16 |
19 |
20 |
21 | Label
22 |
23 |
24 |
25 |
26 |
27 | ```
28 |
29 | ## API Reference
30 |
31 |
32 |
--------------------------------------------------------------------------------
/website/src/content/components/progress-linear.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: progress-linear
3 | title: Progress - Linear
4 | description: A component for displaying the completion status of a task or process.
5 | ---
6 |
7 |
8 |
9 | ## Anatomy
10 |
11 |
12 |
13 | ## Usage
14 |
15 | ```svelte
16 |
19 |
20 |
21 | Label
22 |
23 |
24 |
25 |
26 |
27 | ```
28 |
29 | ## API Reference
30 |
31 |
32 |
--------------------------------------------------------------------------------
/website/src/content/components/qr-code.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: qr-code
3 | title: Qr Code
4 | description: A component for generating and displaying QR codes for quick scanning and access to information.
5 | ---
6 |
7 |
8 |
9 | ## Anatomy
10 |
11 |
12 |
13 | ## Usage
14 |
15 | ```svelte
16 |
19 |
20 |
21 |
22 |
23 |
24 | Download
25 |
26 | ```
27 |
28 | ## API Reference
29 |
30 |
31 |
--------------------------------------------------------------------------------
/website/src/content/components/toggle.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: toggle
3 | title: Toggle
4 | description: A component for switching between two states, suchjson as on/off.
5 | ---
6 |
7 |
8 |
9 | ```svelte
10 |
16 |
17 | {
20 | pressed = detail.pressed;
21 | }}
22 | >
23 | {#if pressed}
24 |
25 | {:else}
26 |
27 | {/if}
28 |
29 | ```
30 |
31 | ## API Reference
32 |
33 |
34 |
--------------------------------------------------------------------------------
/website/src/content/utilities/environment-provider.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: environment-provider
3 | title: Environment Provider
4 | description: A component for providing environment information to the rest of the application.
5 | ---
6 |
7 | ## Usage
8 |
9 | ```svelte
10 |
11 |
16 |
17 | document}>
18 | {@render children()}
19 |
20 | ```
21 |
22 | ## API Reference
23 |
24 |
25 |
--------------------------------------------------------------------------------
/website/src/content/utilities/highlight.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: highlight
3 | title: Highlight
4 | description: A component for highlighting text within a string.
5 | ---
6 |
7 |
8 |
9 | ## Usage
10 |
11 | ```svelte
12 |
18 |
19 |
20 | ```
21 |
22 | ## API Reference
23 |
24 |
25 |
--------------------------------------------------------------------------------
/website/src/content/utilities/locale-provider.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: locale-provider
3 | title: Locale Provider
4 | description: A component for providing locale information to the rest of the application.
5 | ---
6 |
7 | ## Usage
8 |
9 | ```svelte
10 |
11 |
16 |
17 |
18 | {@render children()}
19 |
20 | ```
21 |
22 | ## API Reference
23 |
24 |
25 |
--------------------------------------------------------------------------------
/website/src/content/utilities/presence.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: presence
3 | title: Presence
4 | description: A component that controls content rendering and unmounting based on state.
5 | ---
6 |
7 |
8 |
9 | ## Usage
10 |
11 | ```svelte
12 |
17 |
18 |
25 |
26 | Content
27 | ```
28 |
29 | ## API Reference
30 |
31 |
32 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/environment-provider.ts:
--------------------------------------------------------------------------------
1 | import {apiEntry} from './utils';
2 |
3 | export default apiEntry<'Root'>({
4 | Root: {
5 | context: {
6 | rootNode: {
7 | type: 'ShadowRoot | Document | Node | (() => ShadowRoot | Document | Node)',
8 | description: '',
9 | },
10 | },
11 | },
12 | });
13 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/floating-panel.ts:
--------------------------------------------------------------------------------
1 | import {floatingPanelAnatomy} from 'ui-ingredients';
2 | import {apiEntryFromAnatomy} from './utils';
3 |
4 | export default apiEntryFromAnatomy(floatingPanelAnatomy)({});
5 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/focus-trap.ts:
--------------------------------------------------------------------------------
1 | import {apiEntry} from './utils';
2 |
3 | export default apiEntry({
4 | Root: {
5 | context: {
6 | disabled: {
7 | type: 'boolean',
8 | description: 'Whether the focus trap is disabled',
9 | },
10 | returnFocusOnDeactivate: {
11 | type: 'boolean',
12 | description:
13 | 'Whether the focus trap should return focus to the previously focused element when deactivated',
14 | },
15 | },
16 | },
17 | });
18 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/highlight.ts:
--------------------------------------------------------------------------------
1 | import {apiEntry} from './utils';
2 |
3 | export default apiEntry<'Root'>({
4 | Root: {
5 | context: {
6 | query: {
7 | type: 'string | string[]',
8 | description: 'The query to highlight in the text',
9 | },
10 | text: {
11 | type: 'string',
12 | description: 'The text to highlight',
13 | },
14 | ignoreCase: {
15 | type: 'boolean',
16 | description: 'Whether to ignore case while matching',
17 | },
18 | matchAll: {
19 | type: 'boolean',
20 | description: 'Whether to match multiple instances of the query',
21 | },
22 | },
23 | },
24 | });
25 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/index.ts:
--------------------------------------------------------------------------------
1 | export {default} from './api.svelte';
2 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/locale-provider.ts:
--------------------------------------------------------------------------------
1 | import {apiEntry} from './utils';
2 |
3 | export default apiEntry<'Root'>({
4 | Root: {
5 | context: {
6 | locale: {
7 | type: 'string',
8 | description: 'The locale to use for the application.',
9 | defaultValue: "'en-US'",
10 | },
11 | },
12 | },
13 | });
14 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/portal.ts:
--------------------------------------------------------------------------------
1 | import {apiEntry} from './utils';
2 |
3 | export default apiEntry<'Root'>({
4 | Root: {
5 | context: {
6 | container: {
7 | type: 'HTMLElement',
8 | description: 'The element to render the element into',
9 | },
10 | disabled: {
11 | type: 'boolean',
12 | description: 'Whether the portal is disabled',
13 | },
14 | },
15 | },
16 | });
17 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/presence.ts:
--------------------------------------------------------------------------------
1 | import {apiEntry} from './utils';
2 |
3 | export default apiEntry<'Root'>({
4 | Root: {
5 | context: {
6 | present: {
7 | type: 'string',
8 | description: 'Whether the element is present',
9 | },
10 | lazyMount: {
11 | type: 'boolean',
12 | description: 'Whether to enable lazy mounting.',
13 | },
14 | keepMounted: {
15 | type: 'boolean',
16 | description: 'Whether to keep the component mounted after exit.',
17 | },
18 | asChild: {
19 | type: 'Snippet',
20 | description: 'Render a different element.',
21 | },
22 | },
23 | dataAttr: {
24 | 'data-state': '"open" | "closed"',
25 | },
26 | },
27 | });
28 |
--------------------------------------------------------------------------------
/website/src/lib/components/api/time-picker.ts:
--------------------------------------------------------------------------------
1 | import {timePickerAnatomy} from 'ui-ingredients';
2 | import {apiEntryFromAnatomy} from './utils';
3 |
4 | export default apiEntryFromAnatomy(timePickerAnatomy)({});
5 |
--------------------------------------------------------------------------------
/website/src/lib/components/demo/alert.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
Title
14 |
17 | Description
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/website/src/lib/components/demo/field.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 | {#snippet asChild(attrs)}
10 |
14 | {/snippet}
15 |
16 |
17 | {#snippet asChild(attrs)}
18 |
19 | {/snippet}
20 |
21 |
24 | This is a helper text
25 |
26 |
27 |
--------------------------------------------------------------------------------
/website/src/lib/components/demo/index.ts:
--------------------------------------------------------------------------------
1 | export {default} from './demo.svelte';
2 |
--------------------------------------------------------------------------------
/website/src/lib/components/demo/pin-input.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 | {#snippet asChild(attrs)}
10 |
11 | {/snippet}
12 |
13 |
14 |
15 |
16 |
17 | {#each Array.from({length: 4}) as _, i}
18 |
19 | {#snippet asChild(attrs)}
20 |
21 | {/snippet}
22 |
23 | {/each}
24 |
25 |
26 |
--------------------------------------------------------------------------------
/website/src/lib/components/demo/qr-code.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
9 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/website/src/lib/components/demo/switch.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
9 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/website/src/lib/components/demo/toggle.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | {#snippet asChild(attrs, api)}
9 |
10 | {#if api.pressed}
11 |
12 | {:else}
13 |
14 | {/if}
15 |
16 | {/snippet}
17 |
18 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/badge.recipe.ts:
--------------------------------------------------------------------------------
1 | import {tv, type VariantProps} from 'tailwind-variants';
2 |
3 | export const badgeRecipe = tv({
4 | base: 'inline-block rounded-full',
5 | variants: {
6 | variant: {
7 | outline: 'font-semibold border',
8 | },
9 | colorScheme: {
10 | primary:
11 | 'border-neutral-200 bg-neutral-50 dark:border-neutral-800 dark:bg-neutral-800/50',
12 | warning:
13 | 'border-amber-200 text-amber-700 dark:text-amber-400 bg-amber-50 dark:border-amber-800 dark:bg-amber-800/50',
14 | },
15 | size: {
16 | md: 'px-1.5 py-px text-xs',
17 | },
18 | },
19 | defaultVariants: {
20 | variant: 'outline',
21 | colorScheme: 'primary',
22 | size: 'md',
23 | },
24 | });
25 |
26 | export type BadgeRecipeProps = VariantProps;
27 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/badge.svelte:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 | {@render children?.()}
19 |
20 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/button.svelte:
--------------------------------------------------------------------------------
1 |
16 |
17 |
24 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/icon-button.recipe.ts:
--------------------------------------------------------------------------------
1 | import {tv, type VariantProps} from 'tailwind-variants';
2 |
3 | export const iconButtonRecipe = tv({
4 | base: 'size-12 cursor-pointer shrink-0 flex items-center justify-center gap-2 rounded font-semibold transition-colors duration-150 disabled:cursor-not-allowed disabled:opacity-50',
5 | variants: {
6 | variant: {
7 | outline:
8 | 'border border-neutral-200 bg-white dark:bg-transparent dark:border-neutral-700 ui-pressed:bg-neutral-100/75 ui-on:bg-neutral-100/75 dark:ui-pressed:bg-neutral-700/25 dark:ui-on:bg-neutral-700/25',
9 | solid: 'bg-neutral-300',
10 | },
11 | },
12 | defaultVariants: {
13 | variant: 'outline',
14 | },
15 | });
16 |
17 | export type IconButtonRecipeProps = VariantProps;
18 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/icon-button.svelte:
--------------------------------------------------------------------------------
1 |
21 |
22 |
29 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/input.recipe.ts:
--------------------------------------------------------------------------------
1 | import {tv, type VariantProps} from 'tailwind-variants';
2 |
3 | export const inputRecipe = tv({
4 | base: 'block w-full rounded placeholder:text-neutral-500',
5 | variants: {
6 | size: {
7 | xs: 'px-3 h-10',
8 | sm: 'px-3.5 h-11',
9 | md: 'px-4 h-12',
10 | },
11 | variant: {
12 | outline:
13 | 'border border-neutral-200 bg-white dark:bg-transparent ui-invalid:focus:outline-red-400 ui-invalid:border-red-400 ui-invalid:focus:outline ui-invalid:focus:outline-1 dark:ui-invalid:border-red-400 dark:border-neutral-700',
14 | },
15 | },
16 | defaultVariants: {
17 | size: 'md',
18 | variant: 'outline',
19 | },
20 | });
21 |
22 | export type InputRecipeProps = VariantProps;
23 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/input.svelte:
--------------------------------------------------------------------------------
1 |
16 |
17 |
23 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/label.recipe.ts:
--------------------------------------------------------------------------------
1 | import {tv, type VariantProps} from 'tailwind-variants';
2 |
3 | export const labelRecipe = tv({
4 | base: 'mb-1 block text-sm font-semibold',
5 | });
6 |
7 | export type LabelRecipeProps = VariantProps;
8 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/label.svelte:
--------------------------------------------------------------------------------
1 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/index.ts:
--------------------------------------------------------------------------------
1 | import * as Table from './table';
2 | export default Table;
3 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-anatomy.ts:
--------------------------------------------------------------------------------
1 | import {createAnatomy} from 'ui-ingredients';
2 |
3 | export const anatomy = createAnatomy('Table').parts(
4 | 'root',
5 | 'header',
6 | 'body',
7 | 'footer',
8 | 'row',
9 | 'cell',
10 | 'heading',
11 | );
12 |
13 | export const parts = anatomy.build();
14 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-body.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 | {@render children?.()}
14 |
15 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-cell.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 | {@render children?.()}
14 | |
15 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-container.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
16 | {@render children?.()}
17 |
18 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-context.svelte.ts:
--------------------------------------------------------------------------------
1 | import {createContext} from 'ui-ingredients';
2 | import type {CreateTableReturn} from './create-table.svelte';
3 |
4 | export const [getTableContext, setTableContext] =
5 | createContext('Table');
6 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-footer.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 | {@render children?.()}
14 |
15 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-header.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 | {@render children?.()}
14 |
15 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-heading.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 | {@render children?.()}
14 | |
15 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-root.svelte:
--------------------------------------------------------------------------------
1 |
19 |
20 |
21 | {@render children?.()}
22 |
23 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table-row.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 | {@render children?.()}
14 |
15 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/table/table.ts:
--------------------------------------------------------------------------------
1 | export {default as Body} from './table-body.svelte';
2 | export {default as Cell} from './table-cell.svelte';
3 | export {default as Container} from './table-container.svelte';
4 | export {default as Footer} from './table-footer.svelte';
5 | export {default as Header} from './table-header.svelte';
6 | export {default as Heading} from './table-heading.svelte';
7 | export {default as Root} from './table-root.svelte';
8 | export {default as Row} from './table-row.svelte';
9 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/textarea.recipe.ts:
--------------------------------------------------------------------------------
1 | import {tv, type VariantProps} from 'tailwind-variants';
2 | import {inputRecipe} from './input.recipe';
3 |
4 | export const textareaRecipe = tv({
5 | base: 'resize-none',
6 | variants: {
7 | size: {
8 | xs: 'h-auto px-2.5 py-1.5',
9 | sm: 'h-auto px-3 py-2',
10 | md: 'h-auto px-4 py-2.5',
11 | },
12 | },
13 | extend: inputRecipe,
14 | });
15 |
16 | export type TextareaRecipeProps = VariantProps;
17 |
--------------------------------------------------------------------------------
/website/src/lib/components/ui/textarea.svelte:
--------------------------------------------------------------------------------
1 |
14 |
15 |
17 |
--------------------------------------------------------------------------------
/website/src/lib/icons/anatomy/time-picker-anatomy-icon.svelte:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/website/src/lib/stores/navbar.svelte.ts:
--------------------------------------------------------------------------------
1 | function createNavbarStore() {
2 | let isDrawerOpen = $state(false);
3 |
4 | return {
5 | drawer: {
6 | get isOpen() {
7 | return isDrawerOpen;
8 | },
9 | open() {
10 | isDrawerOpen = true;
11 | },
12 | close() {
13 | isDrawerOpen = false;
14 | },
15 | toggle() {
16 | isDrawerOpen = !isDrawerOpen;
17 | },
18 | },
19 | };
20 | }
21 |
22 | export const navbarStore = createNavbarStore();
23 |
--------------------------------------------------------------------------------
/website/src/lib/types/index.ts:
--------------------------------------------------------------------------------
1 | export type Assign<
2 | Target extends Record,
3 | Source extends Record,
4 | > = Source & Omit;
5 |
--------------------------------------------------------------------------------
/website/src/routes/+page.server.ts:
--------------------------------------------------------------------------------
1 | import {redirect} from '@sveltejs/kit';
2 | import type {PageServerLoad} from './$types';
3 |
4 | export const load: PageServerLoad = async () => {
5 | return redirect(302, '/overview/introduction');
6 | };
7 |
--------------------------------------------------------------------------------
/website/src/routes/+page.svelte:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/website/src/routes/components/[id]/+page.server.ts:
--------------------------------------------------------------------------------
1 | import {components} from '.velite';
2 | import {error} from '@sveltejs/kit';
3 | import type {EntryGenerator, PageServerLoad} from './$types';
4 |
5 | export const prerender = true;
6 |
7 | export const entries: EntryGenerator = () => {
8 | return components.map(({id}) => {
9 | return {id};
10 | });
11 | };
12 |
13 | export const load: PageServerLoad = async ({params}) => {
14 | const data = components.find(({id}) => params.id === id);
15 | if (!data) error(404);
16 | return data;
17 | };
18 |
--------------------------------------------------------------------------------
/website/src/routes/components/[id]/+page.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | {data.title} | UI Ingredients
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | {#key data.id}
19 |
20 | {/key}
21 |
--------------------------------------------------------------------------------
/website/src/routes/overview/[id]/+page.server.ts:
--------------------------------------------------------------------------------
1 | import {overview} from '.velite';
2 | import {error} from '@sveltejs/kit';
3 | import type {EntryGenerator, PageServerLoad} from './$types';
4 |
5 | export const prerender = true;
6 |
7 | export const entries: EntryGenerator = () => {
8 | return overview.map(({id}) => {
9 | return {id};
10 | });
11 | };
12 |
13 | export const load: PageServerLoad = async ({params}) => {
14 | const data = overview.find(({id}) => id === params.id);
15 | if (!data) error(404);
16 | return data;
17 | };
18 |
--------------------------------------------------------------------------------
/website/src/routes/overview/[id]/+page.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | {data.title} | UI Ingredients
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | {@html data.content}
17 |
--------------------------------------------------------------------------------
/website/src/routes/robots.txt/+server.ts:
--------------------------------------------------------------------------------
1 | import type {RequestHandler} from '@sveltejs/kit';
2 |
3 | const content = `
4 | User-agent: *
5 | Allow: /
6 | `
7 | .split('\n')
8 | .map((s) => s.trim())
9 | .filter(Boolean)
10 | .join('\n');
11 |
12 | export const GET: RequestHandler = () => {
13 | return new Response(content, {
14 | headers: {
15 | 'Content-Type': 'text/plain',
16 | },
17 | });
18 | };
19 |
--------------------------------------------------------------------------------
/website/src/routes/sitemap.xml/+server.ts:
--------------------------------------------------------------------------------
1 | import {components, overview, utilities} from '.velite';
2 | import type {RequestHandler} from '@sveltejs/kit';
3 |
4 | export const prerender = true;
5 |
6 | export const GET: RequestHandler = async ({url: {origin}}) => {
7 | const urls = [
8 | ...components.map((item) => item.permalink),
9 | ...utilities.map((item) => item.permalink),
10 | ...overview.map((item) => item.permalink),
11 | ].map((path) => `${origin}${path}`);
12 |
13 | const content = `
14 |
15 | ${urls.map((url) => `${url}`).join('')}
16 | `;
17 |
18 | return new Response(content, {
19 | headers: {
20 | 'Content-Type': 'application/xml',
21 | },
22 | });
23 | };
24 |
--------------------------------------------------------------------------------
/website/src/routes/utilities/[id]/+page.server.ts:
--------------------------------------------------------------------------------
1 | import {utilities} from '.velite';
2 | import {error} from '@sveltejs/kit';
3 | import type {EntryGenerator, PageServerLoad} from './$types';
4 |
5 | export const prerender = true;
6 |
7 | export const entries: EntryGenerator = () => {
8 | return utilities.map(({id}) => {
9 | return {id};
10 | });
11 | };
12 |
13 | export const load: PageServerLoad = async ({params}) => {
14 | const data = utilities.find(({id}) => params.id === id);
15 | if (!data) error(404);
16 | return data;
17 | };
18 |
--------------------------------------------------------------------------------
/website/src/routes/utilities/[id]/+page.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | {data.title} | UI Ingredients
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | {#key data.id}
19 |
20 | {/key}
21 |
--------------------------------------------------------------------------------
/website/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/calvo-jp/ui-ingredients/a49d45bdaecd08f9e5752b26cc663fa92663b6b7/website/static/favicon.png
--------------------------------------------------------------------------------
/website/svelte.config.js:
--------------------------------------------------------------------------------
1 | // @ts-check
2 | import adapter from '@sveltejs/adapter-vercel';
3 | import {vitePreprocess} from '@sveltejs/vite-plugin-svelte';
4 |
5 | /** @type {import('@sveltejs/kit').Config} */
6 | const config = {
7 | preprocess: [vitePreprocess()],
8 | kit: {
9 | adapter: adapter({
10 | runtime: 'nodejs22.x',
11 | }),
12 | alias: {
13 | '.velite': 'src/.velite',
14 | },
15 | },
16 | compilerOptions: {
17 | runes: true,
18 | css: 'injected',
19 | },
20 | };
21 |
22 | export default config;
23 |
--------------------------------------------------------------------------------
/website/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "allowJs": true,
5 | "checkJs": true,
6 | "esModuleInterop": true,
7 | "forceConsistentCasingInFileNames": true,
8 | "resolveJsonModule": true,
9 | "skipLibCheck": true,
10 | "sourceMap": true,
11 | "strict": true,
12 | "moduleResolution": "bundler"
13 | },
14 | "include": ["src", "vite-env.d.ts", "ts-reset.d.ts", "velite.config.ts"]
15 | }
16 |
--------------------------------------------------------------------------------
/website/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { sveltekit } from '@sveltejs/kit/vite';
2 | import tailwindcss from '@tailwindcss/vite';
3 | import { defineConfig } from 'vite';
4 |
5 | export default defineConfig({
6 | plugins: [sveltekit(), tailwindcss()],
7 | server: {
8 | port: 3000,
9 | },
10 | });
11 |
--------------------------------------------------------------------------------