├── .github ├── dependabot.yml └── workflows │ ├── build-preview.yml │ ├── build-registry.yml │ ├── ci.yml │ ├── deploy-preview.yml │ └── deploy-prod.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .vscode ├── ltex.dictionary.en-GB.txt └── settings.json ├── CONTRIBUTING.md ├── README.md ├── components.json ├── jsrepo-build-config.json ├── jsrepo-manifest.json ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── src ├── app.css ├── app.d.ts ├── app.html ├── lib │ ├── assets │ │ ├── book-texture.avif │ │ └── icons │ │ │ ├── accessibility.svg │ │ │ ├── arrow-circle-up.svg │ │ │ ├── arrow-left.svg │ │ │ ├── arrow-right.svg │ │ │ ├── arrow-up.svg │ │ │ ├── bell.svg │ │ │ ├── box.svg │ │ │ ├── brand-assets.svg │ │ │ ├── calendar.svg │ │ │ ├── chart-bar-middle.svg │ │ │ ├── chart-bar-peak.svg │ │ │ ├── chart-pie.svg │ │ │ ├── chart-trending-down.svg │ │ │ ├── check-circle.svg │ │ │ ├── check.svg │ │ │ ├── chevron-down-small.svg │ │ │ ├── chevron-down.svg │ │ │ ├── chevron-left.svg │ │ │ ├── chevron-right-small.svg │ │ │ ├── chevron-right.svg │ │ │ ├── chevron-up-small.svg │ │ │ ├── chevron-up.svg │ │ │ ├── clock-dashed.svg │ │ │ ├── clock.svg │ │ │ ├── code-bracket.svg │ │ │ ├── command.svg │ │ │ ├── copy.svg │ │ │ ├── cross.svg │ │ │ ├── cursor-click.svg │ │ │ ├── database.svg │ │ │ ├── dollar.svg │ │ │ ├── error-states.svg │ │ │ ├── external-small.svg │ │ │ ├── external.svg │ │ │ ├── face-happy.svg │ │ │ ├── face-sad.svg │ │ │ ├── face-smile.svg │ │ │ ├── face-unhappy.svg │ │ │ ├── file-text.svg │ │ │ ├── flag.svg │ │ │ ├── floppy-disk.svg │ │ │ ├── git-branch.svg │ │ │ ├── globe.svg │ │ │ ├── grid-square.svg │ │ │ ├── inbox.svg │ │ │ ├── index.ts │ │ │ ├── information-fill-small.svg │ │ │ ├── information.svg │ │ │ ├── key.svg │ │ │ ├── link.svg │ │ │ ├── loader-circle.svg │ │ │ ├── lock-closed-small.svg │ │ │ ├── lock-open-small.svg │ │ │ ├── logo-bitbucket-color.svg │ │ │ ├── logo-geist.svg │ │ │ ├── logo-github.svg │ │ │ ├── logo-gitlab.svg │ │ │ ├── logo-next.svg │ │ │ ├── logo-svelte.svg │ │ │ ├── logo-turborepo.svg │ │ │ ├── logo-v0.svg │ │ │ ├── logo-vercel-circle.svg │ │ │ ├── logo-vercel.svg │ │ │ ├── magnifying-glass.svg │ │ │ ├── markdown.svg │ │ │ ├── minus.svg │ │ │ ├── more-horizontal.svg │ │ │ ├── notification.svg │ │ │ ├── paperclip.svg │ │ │ ├── pencil-edit.svg │ │ │ ├── router.svg │ │ │ ├── settings-sliders.svg │ │ │ ├── shield-globe.svg │ │ │ ├── shield.svg │ │ │ ├── simple-illustration.svg │ │ │ ├── star.svg │ │ │ ├── status.svg │ │ │ ├── stop.svg │ │ │ ├── tabs.svg │ │ │ ├── theme-switch-dark.svg │ │ │ ├── theme-switch-light.svg │ │ │ ├── theme-switch-system.svg │ │ │ ├── user-plus.svg │ │ │ └── warning.svg │ ├── components │ │ ├── shared │ │ │ ├── accordion-animation.ts │ │ │ ├── command │ │ │ │ └── command.svelte │ │ │ ├── demo.svelte │ │ │ ├── footer.svelte │ │ │ ├── page-section.svelte │ │ │ ├── page-wrapper.svelte │ │ │ ├── shiki.ts │ │ │ └── themes │ │ │ │ ├── vercel-dark.ts │ │ │ │ └── vercel-light.ts │ │ └── ui │ │ │ ├── avatar │ │ │ ├── avatar-fallback.svelte │ │ │ ├── avatar-group.svelte │ │ │ ├── avatar-image.svelte │ │ │ ├── avatar.svelte │ │ │ └── index.ts │ │ │ ├── badge │ │ │ ├── badge.svelte │ │ │ └── index.ts │ │ │ ├── book │ │ │ ├── book.svelte │ │ │ └── index.ts │ │ │ ├── button │ │ │ ├── button.svelte │ │ │ └── index.ts │ │ │ ├── calendar │ │ │ ├── calendar-cell.svelte │ │ │ ├── calendar-day.svelte │ │ │ ├── calendar-grid-body.svelte │ │ │ ├── calendar-grid-head.svelte │ │ │ ├── calendar-grid-row.svelte │ │ │ ├── calendar-grid.svelte │ │ │ ├── calendar-head-cell.svelte │ │ │ ├── calendar-header.svelte │ │ │ ├── calendar-heading.svelte │ │ │ ├── calendar-months.svelte │ │ │ ├── calendar-next-button.svelte │ │ │ ├── calendar-prev-button.svelte │ │ │ ├── calendar.svelte │ │ │ └── index.ts │ │ │ ├── checkbox │ │ │ ├── checkbox.svelte │ │ │ └── index.ts │ │ │ ├── choicebox │ │ │ ├── choicebox-checkbox.svelte │ │ │ ├── choicebox-radio.svelte │ │ │ ├── choicebox.svelte │ │ │ └── index.ts │ │ │ ├── collapse │ │ │ ├── collapse-content.svelte │ │ │ ├── collapse-item.svelte │ │ │ ├── collapse-trigger.svelte │ │ │ ├── collapse.svelte │ │ │ └── index.ts │ │ │ ├── combobox │ │ │ ├── combobox.svelte │ │ │ └── index.ts │ │ │ ├── command │ │ │ ├── command-dialog.svelte │ │ │ ├── command-empty.svelte │ │ │ ├── command-group-heading.svelte │ │ │ ├── command-group.svelte │ │ │ ├── command-input.svelte │ │ │ ├── command-item.svelte │ │ │ ├── command-link-item.svelte │ │ │ ├── command-list.svelte │ │ │ ├── command-separator.svelte │ │ │ ├── command-shortcut.svelte │ │ │ ├── command.svelte │ │ │ └── index.ts │ │ │ ├── context-menu │ │ │ ├── context-menu-checkbox-item.svelte │ │ │ ├── context-menu-content.svelte │ │ │ ├── context-menu-group-heading.svelte │ │ │ ├── context-menu-item.svelte │ │ │ ├── context-menu-radio-item.svelte │ │ │ ├── context-menu-separator.svelte │ │ │ ├── context-menu-shortcut.svelte │ │ │ ├── context-menu-sub-content.svelte │ │ │ ├── context-menu-sub-trigger.svelte │ │ │ └── index.ts │ │ │ ├── description │ │ │ ├── description.svelte │ │ │ └── index.ts │ │ │ ├── dialog │ │ │ ├── dialog-content.svelte │ │ │ ├── dialog-description.svelte │ │ │ ├── dialog-footer.svelte │ │ │ ├── dialog-header.svelte │ │ │ ├── dialog-overlay.svelte │ │ │ ├── dialog-title.svelte │ │ │ └── index.ts │ │ │ ├── drawer │ │ │ ├── drawer-content.svelte │ │ │ ├── drawer-description.svelte │ │ │ ├── drawer-footer.svelte │ │ │ ├── drawer-header.svelte │ │ │ ├── drawer-nested.svelte │ │ │ ├── drawer-overlay.svelte │ │ │ ├── drawer-title.svelte │ │ │ ├── drawer.svelte │ │ │ └── index.ts │ │ │ ├── empty-state │ │ │ ├── empty-state.svelte │ │ │ └── index.ts │ │ │ ├── error │ │ │ ├── error.svelte │ │ │ └── index.ts │ │ │ ├── feedback │ │ │ ├── feedback.svelte │ │ │ └── index.ts │ │ │ ├── gauge │ │ │ ├── gauge.svelte │ │ │ └── index.ts │ │ │ ├── input │ │ │ ├── index.ts │ │ │ ├── input.svelte │ │ │ └── search.svelte │ │ │ ├── kbd │ │ │ ├── index.ts │ │ │ └── kbd.svelte │ │ │ ├── label │ │ │ ├── index.ts │ │ │ └── label.svelte │ │ │ ├── link │ │ │ ├── index.ts │ │ │ └── link.svelte │ │ │ ├── loading-dots │ │ │ ├── index.ts │ │ │ └── loading-dots.svelte │ │ │ ├── menu │ │ │ ├── index.ts │ │ │ ├── menu-checkbox-item.svelte │ │ │ ├── menu-content.svelte │ │ │ ├── menu-item.svelte │ │ │ ├── menu-radio-item.svelte │ │ │ ├── menu-separator.svelte │ │ │ ├── menu-shortcut.svelte │ │ │ ├── menu-sub-content.svelte │ │ │ └── menu-sub-trigger.svelte │ │ │ ├── modal │ │ │ ├── index.ts │ │ │ ├── modal-content.svelte │ │ │ ├── modal-description.svelte │ │ │ ├── modal-footer.svelte │ │ │ ├── modal-header.svelte │ │ │ ├── modal-inset.svelte │ │ │ ├── modal-title.svelte │ │ │ ├── modal-trigger.svelte │ │ │ └── modal.svelte │ │ │ ├── note │ │ │ ├── index.ts │ │ │ └── note.svelte │ │ │ ├── pagination │ │ │ ├── index.ts │ │ │ └── pagination.svelte │ │ │ ├── popover │ │ │ ├── index.ts │ │ │ └── popover-content.svelte │ │ │ ├── progress │ │ │ ├── index.ts │ │ │ └── progress.svelte │ │ │ ├── project-banner │ │ │ ├── index.ts │ │ │ └── project-banner.svelte │ │ │ ├── radio │ │ │ ├── index.ts │ │ │ ├── radio-item.svelte │ │ │ └── radio.svelte │ │ │ ├── range-calendar │ │ │ ├── index.ts │ │ │ ├── presets-combobox.svelte │ │ │ ├── range-calendar-cell.svelte │ │ │ ├── range-calendar-day.svelte │ │ │ ├── range-calendar-grid-body.svelte │ │ │ ├── range-calendar-grid-head.svelte │ │ │ ├── range-calendar-grid-row.svelte │ │ │ ├── range-calendar-grid.svelte │ │ │ ├── range-calendar-head-cell.svelte │ │ │ ├── range-calendar-header.svelte │ │ │ ├── range-calendar-heading.svelte │ │ │ ├── range-calendar-months.svelte │ │ │ ├── range-calendar-next-button.svelte │ │ │ ├── range-calendar-prev-button.svelte │ │ │ └── range-calendar.svelte │ │ │ ├── select │ │ │ ├── index.ts │ │ │ ├── select-content.svelte │ │ │ ├── select-group-heading.svelte │ │ │ ├── select-item.svelte │ │ │ ├── select-scroll-down-button.svelte │ │ │ ├── select-scroll-up-button.svelte │ │ │ ├── select-separator.svelte │ │ │ └── select-trigger.svelte │ │ │ ├── separator │ │ │ ├── index.ts │ │ │ └── separator.svelte │ │ │ ├── show-more │ │ │ ├── index.ts │ │ │ └── show-more.svelte │ │ │ ├── skeleton │ │ │ ├── index.ts │ │ │ └── skeleton.svelte │ │ │ ├── snippet │ │ │ ├── index.ts │ │ │ └── snippet.svelte │ │ │ ├── spinner │ │ │ ├── index.ts │ │ │ └── spinner.svelte │ │ │ ├── status-dot │ │ │ ├── index.ts │ │ │ └── status-dot.svelte │ │ │ ├── switch │ │ │ ├── index.ts │ │ │ └── switch.svelte │ │ │ ├── table │ │ │ ├── index.ts │ │ │ ├── table-body.svelte │ │ │ ├── table-caption.svelte │ │ │ ├── table-cell.svelte │ │ │ ├── table-footer.svelte │ │ │ ├── table-head.svelte │ │ │ ├── table-header.svelte │ │ │ ├── table-row.svelte │ │ │ └── table.svelte │ │ │ ├── tabs │ │ │ ├── index.ts │ │ │ ├── tabs-content.svelte │ │ │ ├── tabs-list.svelte │ │ │ └── tabs-trigger.svelte │ │ │ ├── textarea │ │ │ ├── index.ts │ │ │ └── textarea.svelte │ │ │ ├── theme-switcher │ │ │ └── theme-switcher.svelte │ │ │ ├── tooltip │ │ │ ├── index.ts │ │ │ └── tooltip-content.svelte │ │ │ └── window │ │ │ ├── index.ts │ │ │ └── window.svelte │ ├── config │ │ └── sitemap.ts │ ├── index.ts │ ├── stores.ts │ └── utils.ts └── routes │ ├── +layout.svelte │ ├── +layout.ts │ ├── +page.svelte │ ├── aside-item.svelte │ ├── aside.svelte │ ├── avatar │ ├── +page.svelte │ ├── +page.ts │ ├── group.svelte │ ├── placeholder.svelte │ └── with-icons.svelte │ ├── badge │ ├── +page.svelte │ ├── +page.ts │ ├── sizes.svelte │ ├── variants.svelte │ └── with-icons.svelte │ ├── book │ ├── +page.svelte │ ├── +page.ts │ ├── custom-color.svelte │ ├── custom-illustration.svelte │ ├── default.svelte │ ├── icon.svg │ ├── line.svg │ ├── textured.svelte │ ├── variants.svelte │ └── width.svelte │ ├── brands │ └── +page.svelte │ ├── button │ ├── +page.svelte │ ├── +page.ts │ ├── affix-and-suffix.svelte │ ├── disabled.svelte │ ├── loading.svelte │ ├── rounded.svelte │ ├── shapes.svelte │ ├── sizes.svelte │ └── variants.svelte │ ├── calendar │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ ├── presets.svelte │ └── range-calendar.svelte │ ├── checkbox │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ ├── disabled.svelte │ └── indeterminate.svelte │ ├── choicebox │ ├── +page.svelte │ ├── +page.ts │ ├── disabled.svelte │ ├── multi-select.svelte │ └── single-select.svelte │ ├── code-block │ └── +page.svelte │ ├── collapse │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ ├── expanded.svelte │ └── small.svelte │ ├── colors │ ├── +page.svelte │ ├── +page.ts │ ├── backgrounds.svelte │ ├── borders.svelte │ ├── component-backgrounds.svelte │ ├── contrasts.svelte │ ├── data.ts │ ├── demo.svelte │ ├── description-list.svelte │ ├── helpers.ts │ ├── scale.svelte │ ├── scales.svelte │ └── text-and-icons.svelte │ ├── combobox │ ├── +page.svelte │ ├── +page.ts │ ├── custom-empty-message.svelte │ ├── custom-width-input.svelte │ ├── custom-width-list.svelte │ ├── default.svelte │ ├── disabled.svelte │ ├── errored.svelte │ ├── sizes.svelte │ └── used-inside-a-modal.svelte │ ├── context-menu │ ├── +page.svelte │ ├── +page.ts │ ├── affix-and-suffix.svelte │ ├── default.svelte │ ├── disabled-items.svelte │ └── link-items.svelte │ ├── create_routes.sh │ ├── description │ ├── +page.svelte │ ├── +page.ts │ └── default.svelte │ ├── drawer │ ├── +page.svelte │ ├── +page.ts │ ├── custom-height.svelte │ └── default.svelte │ ├── empty-state │ ├── +page.svelte │ ├── +page.ts │ ├── blank-slate.svelte │ ├── empty-state-design-framework.svelte │ └── informational.svelte │ ├── error │ ├── +page.svelte │ ├── +page.ts │ ├── custom-label.svelte │ ├── default.svelte │ ├── sizes.svelte │ └── with-an-error-property.svelte │ ├── feedback │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ └── inline.svelte │ ├── gauge │ ├── +page.svelte │ ├── +page.ts │ ├── arc-priority.svelte │ ├── custom-color-range.svelte │ ├── custom-secondary-color.svelte │ ├── default-color-scale.svelte │ ├── default.svelte │ └── label.svelte │ ├── grid │ └── +page.svelte │ ├── header.svelte │ ├── icons │ ├── +page.svelte │ ├── +page.ts │ ├── icons-gallery.svelte │ ├── transition.ts │ └── utils.ts │ ├── input │ ├── +page.svelte │ ├── +page.ts │ ├── affix-and-suffix.svelte │ ├── default.svelte │ ├── disabled.svelte │ ├── label.svelte │ └── search.svelte │ ├── introduction-link.svelte │ ├── keyboard-input │ ├── +page.svelte │ ├── +page.ts │ ├── combination.svelte │ ├── modifiers.svelte │ └── small.svelte │ ├── loading-dots │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ └── with-text.svelte │ ├── menu │ ├── +page.svelte │ ├── +page.ts │ ├── affix-and-suffix.svelte │ ├── custom-trigger.svelte │ ├── default.svelte │ ├── disabled-items.svelte │ ├── link-items.svelte │ └── menu-position.svelte │ ├── modal │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ ├── disabled-actions.svelte │ ├── inset.svelte │ ├── single-button.svelte │ └── sticky.svelte │ ├── note │ ├── +page.svelte │ ├── +page.ts │ ├── action.svelte │ ├── cyan.svelte │ ├── default.svelte │ ├── disabled.svelte │ ├── error.svelte │ ├── labels.svelte │ ├── secondary.svelte │ ├── success.svelte │ ├── violet.svelte │ └── warning.svelte │ ├── pagination │ ├── +page.svelte │ ├── +page.ts │ └── default.svelte │ ├── progress │ ├── +page.svelte │ ├── +page.ts │ ├── custom-max.svelte │ ├── default.svelte │ ├── dynamic-colors.svelte │ └── themed.svelte │ ├── project-banner │ ├── +page.svelte │ ├── +page.ts │ ├── error.svelte │ ├── success.svelte │ └── warning.svelte │ ├── radio │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ ├── radio-disabled.svelte │ ├── radio-required.svelte │ └── radio-standalone.svelte │ ├── scroller │ └── +page.svelte │ ├── select │ ├── +page.svelte │ ├── +page.ts │ ├── affix-and-suffix.svelte │ ├── disabled.svelte │ └── sizes.svelte │ ├── show-more │ ├── +page.svelte │ ├── +page.ts │ └── default.svelte │ ├── skeleton │ ├── +page.svelte │ ├── +page.ts │ ├── default-with-box-height.svelte │ ├── default-with-set-width.svelte │ ├── no-animation.svelte │ ├── pill.svelte │ ├── rounded.svelte │ ├── squared.svelte │ ├── wrapping-children-with-fixed-size.svelte │ └── wrapping-children.svelte │ ├── snippet │ ├── +page.svelte │ ├── +page.ts │ ├── callback.svelte │ ├── default.svelte │ ├── inverted.svelte │ ├── multiline.svelte │ ├── no-prompt.svelte │ └── variants.svelte │ ├── spinner │ ├── +page.svelte │ ├── +page.ts │ ├── custom-size.svelte │ └── default-size.svelte │ ├── stack │ └── +page.svelte │ ├── status-dot │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ └── label.svelte │ ├── switch │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ ├── disabled.svelte │ ├── sizes.svelte │ ├── subtle-with-icon.svelte │ └── with-label.svelte │ ├── table │ ├── +page.svelte │ ├── +page.ts │ ├── basic-table.svelte │ ├── full-featured-table.svelte │ ├── interactive-table.svelte │ └── striped-table.svelte │ ├── tabs │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ ├── disable-specific-tabs.svelte │ ├── overflow-tabs.svelte │ ├── secondary.svelte │ └── with-icons.svelte │ ├── text │ └── +page.svelte │ ├── textarea │ ├── +page.svelte │ ├── +page.ts │ ├── default.svelte │ └── disabled.svelte │ ├── theme-switcher │ ├── +page.svelte │ ├── +page.ts │ └── default.svelte │ ├── toast │ └── +page.svelte │ ├── toggle │ └── +page.svelte │ ├── tooltip │ ├── +page.svelte │ ├── +page.ts │ ├── box-align.svelte │ ├── components.svelte │ ├── custom-content.svelte │ ├── default.svelte │ ├── no-delay.svelte │ └── other.svelte │ └── window │ ├── +page.svelte │ ├── +page.ts │ └── default.svelte ├── static ├── favicon.png └── og.jpg ├── svelte.config.js ├── tailwind.config.ts ├── tsconfig.json └── vite.config.ts /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: 'npm' # See documentation for possible values 9 | directory: '/' # Location of package manifests 10 | schedule: 11 | interval: 'weekly' 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # Output 4 | .output 5 | .vercel 6 | /.svelte-kit 7 | /build 8 | 9 | # OS 10 | .DS_Store 11 | Thumbs.db 12 | 13 | # Env 14 | .env 15 | .env.* 16 | !.env.example 17 | !.env.test 18 | 19 | # Vite 20 | vite.config.js.timestamp-* 21 | vite.config.ts.timestamp-* 22 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], 7 | "tailwindFunctions": ["tv", "cn"], 8 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 9 | } 10 | -------------------------------------------------------------------------------- /.vscode/ltex.dictionary.en-GB.txt: -------------------------------------------------------------------------------- 1 | Geist 2 | Vercel 3 | shadcn-svelte 4 | jsrepo 5 | SvelteKit 6 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "anatolzak", 4 | "benmccann", 5 | "bindable", 6 | "Choicebox", 7 | "ciscoheat", 8 | "clickoutside", 9 | "Combobox", 10 | "Conduitry", 11 | "dummdidumm", 12 | "exmarkdown", 13 | "geist", 14 | "geoffrich", 15 | "Gonz", 16 | "huntabyte", 17 | "ieedan", 18 | "jsrepo", 19 | "labelledby", 20 | "legos", 21 | "lukeed", 22 | "nums", 23 | "ollema", 24 | "Paperclip", 25 | "poppanator", 26 | "pyncz", 27 | "runed", 28 | "shadcn", 29 | "shiki", 30 | "shyakadavis", 31 | "techniq", 32 | "trueadm", 33 | "Turborepo", 34 | "vaul", 35 | "WAAPI" 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://shadcn-svelte.com/schema.json", 3 | "style": "default", 4 | "tailwind": { 5 | "config": "tailwind.config.ts", 6 | "css": "src/app.css", 7 | "baseColor": "neutral" 8 | }, 9 | "aliases": { 10 | "components": "$lib/components", 11 | "utils": "$lib/utils", 12 | "ui": "$lib/components/ui", 13 | "hooks": "$lib/hooks" 14 | }, 15 | "typescript": true, 16 | "registry": "https://next.shadcn-svelte.com/registry" 17 | } 18 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {} 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | 4 | import '@poppanator/sveltekit-svg/dist/svg'; 5 | 6 | declare global { 7 | namespace App { 8 | // interface Error {} 9 | // interface Locals {} 10 | // interface PageData {} 11 | // interface PageState {} 12 | // interface Platform {} 13 | } 14 | } 15 | 16 | export type {}; 17 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 | 17 | 22 | 23 | 24 |
%sveltekit.body%
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/lib/assets/book-texture.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shyakadavis/geist/d569656166e838b82759e7845b4261283be65f14/src/lib/assets/book-texture.avif -------------------------------------------------------------------------------- /src/lib/assets/icons/accessibility.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/lib/assets/icons/arrow-circle-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/box.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chart-bar-middle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chart-bar-peak.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chart-pie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chart-trending-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/check-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chevron-down-small.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chevron-right-small.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chevron-up-small.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/cross.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /src/lib/assets/icons/cursor-click.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/external-small.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/external.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/file-text.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/floppy-disk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/grid-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/inbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/information-fill-small.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/lib/assets/icons/information.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/key.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/lock-closed-small.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/lock-open-small.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/logo-v0.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/logo-vercel-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/assets/icons/logo-vercel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/magnifying-glass.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/markdown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/more-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/notification.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/pencil-edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/shield-globe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/lib/assets/icons/star.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/status.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/stop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/tabs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/theme-switch-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/theme-switch-system.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/user-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/assets/icons/warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/lib/components/shared/shiki.ts: -------------------------------------------------------------------------------- 1 | import { createHighlighter } from 'shiki'; 2 | import dark from './themes/vercel-dark'; 3 | import light from './themes/vercel-light'; 4 | 5 | const highlighter = createHighlighter({ 6 | themes: [light, dark], 7 | langs: ['svelte'] 8 | }); 9 | 10 | export async function get_highlighted_code(code: string) { 11 | return (await highlighter).codeToHtml(code, { 12 | lang: 'svelte', 13 | themes: { light: 'vercel-light', dark: 'vercel-dark' } 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /src/lib/components/ui/avatar/avatar-fallback.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/avatar/avatar-image.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/avatar/index.ts: -------------------------------------------------------------------------------- 1 | import Fallback from './avatar-fallback.svelte'; 2 | import Group from './avatar-group.svelte'; 3 | import Image from './avatar-image.svelte'; 4 | import Root from './avatar.svelte'; 5 | 6 | export { 7 | Root as Avatar, 8 | Fallback as AvatarFallback, 9 | Group as AvatarGroup, 10 | Image as AvatarImage, 11 | Fallback, 12 | Group, 13 | Image, 14 | Root 15 | }; 16 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-cell.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-grid-body.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-grid-head.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-grid-row.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-grid.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-head-cell.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-header.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-heading.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-months.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
19 | {@render children?.()} 20 |
21 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-next-button.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | {#snippet Fallback()} 16 | 17 | {/snippet} 18 | 19 | 29 | -------------------------------------------------------------------------------- /src/lib/components/ui/calendar/calendar-prev-button.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | {#snippet Fallback()} 16 | 17 | {/snippet} 18 | 19 | 29 | -------------------------------------------------------------------------------- /src/lib/components/ui/checkbox/index.ts: -------------------------------------------------------------------------------- 1 | import Root from './checkbox.svelte'; 2 | export { 3 | Root, 4 | // 5 | Root as Checkbox 6 | }; 7 | -------------------------------------------------------------------------------- /src/lib/components/ui/choicebox/index.ts: -------------------------------------------------------------------------------- 1 | import Checkbox from './choicebox-checkbox.svelte'; 2 | import Radio from './choicebox-radio.svelte'; 3 | import Root from './choicebox.svelte'; 4 | 5 | export { 6 | Checkbox, 7 | Checkbox as ChoiceboxCheckbox, 8 | Root as ChoiceboxGroup, 9 | Radio as ChoiceboxGroupRadio, 10 | Radio, 11 | Root 12 | }; 13 | -------------------------------------------------------------------------------- /src/lib/components/ui/collapse/collapse-content.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 |
19 | {@render children?.()} 20 |
21 |
22 | -------------------------------------------------------------------------------- /src/lib/components/ui/collapse/collapse-item.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | {@render children?.()} 12 | 13 | -------------------------------------------------------------------------------- /src/lib/components/ui/collapse/collapse.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | {@render children?.()} 13 | 14 | -------------------------------------------------------------------------------- /src/lib/components/ui/collapse/index.ts: -------------------------------------------------------------------------------- 1 | import Content from './collapse-content.svelte'; 2 | import Item from './collapse-item.svelte'; 3 | import Trigger from './collapse-trigger.svelte'; 4 | import Root from './collapse.svelte'; 5 | 6 | export { 7 | Root as Collapse, 8 | Content as CollapseContent, 9 | Item as CollapseItem, 10 | Trigger as CollapseTrigger, 11 | Content, 12 | Item, 13 | Root, 14 | Trigger 15 | }; 16 | -------------------------------------------------------------------------------- /src/lib/components/ui/combobox/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Combobox } from './combobox.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command-empty.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command-group-heading.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 17 | {@render children?.()} 18 | 19 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command-group.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 21 | {#if heading} 22 | 23 | {heading} 24 | 25 | {/if} 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command-item.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command-link-item.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command-list.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command-separator.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command-shortcut.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | {@render children?.()} 20 | 21 | -------------------------------------------------------------------------------- /src/lib/components/ui/command/command.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /src/lib/components/ui/context-menu/context-menu-content.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 24 | 25 | -------------------------------------------------------------------------------- /src/lib/components/ui/context-menu/context-menu-group-heading.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/context-menu/context-menu-separator.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/context-menu/context-menu-shortcut.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | {@render children?.()} 20 | 21 | -------------------------------------------------------------------------------- /src/lib/components/ui/context-menu/context-menu-sub-content.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/description/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Description } from './description.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/components/ui/dialog/dialog-description.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/dialog/dialog-footer.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
19 | {@render children?.()} 20 |
21 | -------------------------------------------------------------------------------- /src/lib/components/ui/dialog/dialog-header.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
19 | {@render children?.()} 20 |
21 | -------------------------------------------------------------------------------- /src/lib/components/ui/dialog/dialog-overlay.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/dialog/dialog-title.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/drawer/drawer-description.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | {@render children?.()} 12 | 13 | -------------------------------------------------------------------------------- /src/lib/components/ui/drawer/drawer-footer.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | {@render children?.()} 14 |
15 | -------------------------------------------------------------------------------- /src/lib/components/ui/drawer/drawer-header.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | {@render children?.()} 13 |
14 | -------------------------------------------------------------------------------- /src/lib/components/ui/drawer/drawer-nested.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | {@render children?.()} 17 | 18 | -------------------------------------------------------------------------------- /src/lib/components/ui/drawer/drawer-overlay.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | {@render children?.()} 16 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/drawer/drawer-title.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | {@render children?.()} 16 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/drawer/drawer.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | {@render children?.()} 17 | 18 | -------------------------------------------------------------------------------- /src/lib/components/ui/empty-state/index.ts: -------------------------------------------------------------------------------- 1 | import { type VariantProps, tv } from 'tailwind-variants'; 2 | 3 | export const empty_state_variants = tv({ 4 | base: 'grid place-items-center gap-4 text-gray-900', 5 | variants: { 6 | variant: {} 7 | }, 8 | defaultVariants: {} 9 | }); 10 | 11 | export type Variant = VariantProps['variant']; 12 | 13 | export { default as EmptyState } from './empty-state.svelte'; 14 | -------------------------------------------------------------------------------- /src/lib/components/ui/error/index.ts: -------------------------------------------------------------------------------- 1 | import { type VariantProps, tv } from 'tailwind-variants'; 2 | 3 | export { default as Error } from './error.svelte'; 4 | 5 | export const error_variants = tv({ 6 | base: 'inline-flex items-center gap-2 break-words text-red-900', 7 | variants: { 8 | size: { 9 | sm: 'text-[13px] font-normal', 10 | md: 'text-sm font-normal', 11 | lg: 'text-base font-medium' 12 | } 13 | }, 14 | defaultVariants: { 15 | size: 'md' 16 | } 17 | }); 18 | 19 | export type Size = VariantProps['size']; 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/feedback/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Feedback } from './feedback.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/components/ui/gauge/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Gauge } from './gauge.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/components/ui/kbd/kbd.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | {#each keys as key} 16 | {keys_map[key]} 17 | {/each} 18 | 19 | -------------------------------------------------------------------------------- /src/lib/components/ui/label/index.ts: -------------------------------------------------------------------------------- 1 | import Root from './label.svelte'; 2 | 3 | export { Root as Label, Root }; 4 | -------------------------------------------------------------------------------- /src/lib/components/ui/label/label.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 19 | {#if value} 20 |

{value}

21 | {/if} 22 | {@render children?.()} 23 |
24 | -------------------------------------------------------------------------------- /src/lib/components/ui/loading-dots/index.ts: -------------------------------------------------------------------------------- 1 | export { default as LoadingDots } from './loading-dots.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/components/ui/menu/menu-separator.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/components/ui/menu/menu-shortcut.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | {@render children?.()} 17 | 18 | -------------------------------------------------------------------------------- /src/lib/components/ui/menu/menu-sub-content.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 20 | {@render children?.()} 21 | 22 | -------------------------------------------------------------------------------- /src/lib/components/ui/menu/menu-sub-trigger.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 21 | {@render children?.()} 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/lib/components/ui/modal/modal-description.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | {#if is_desktop.current} 15 | 16 | {@render children?.()} 17 | 18 | {:else} 19 | 20 | {@render children?.()} 21 | 22 | {/if} 23 | -------------------------------------------------------------------------------- /src/lib/components/ui/modal/modal-header.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | {#if is_desktop.current} 16 | 21 | {@render children?.()} 22 | 23 | {:else} 24 | 25 | {@render children?.()} 26 | 27 | {/if} 28 | -------------------------------------------------------------------------------- /src/lib/components/ui/modal/modal-inset.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | {@render children?.()} 15 |
16 | -------------------------------------------------------------------------------- /src/lib/components/ui/modal/modal-title.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | {#if is_desktop.current} 15 | 16 | {@render children?.()} 17 | 18 | {:else} 19 | 20 | {@render children?.()} 21 | 22 | {/if} 23 | -------------------------------------------------------------------------------- /src/lib/components/ui/modal/modal.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | {#if is_desktop.current} 16 | 17 | {@render children?.()} 18 | 19 | {:else} 20 | 21 | {@render children?.()} 22 | 23 | {/if} 24 | -------------------------------------------------------------------------------- /src/lib/components/ui/pagination/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Pagination } from './pagination.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/components/ui/popover/index.ts: -------------------------------------------------------------------------------- 1 | import { Popover as PopoverPrimitive } from 'bits-ui'; 2 | 3 | import Content from './popover-content.svelte'; 4 | 5 | const Root = PopoverPrimitive.Root; 6 | const Trigger = PopoverPrimitive.Trigger; 7 | const Close = PopoverPrimitive.Close; 8 | const Portal = PopoverPrimitive.Portal; 9 | 10 | export { 11 | Close, 12 | Content, 13 | Root as Popover, 14 | Close as PopoverClose, 15 | Content as PopoverContent, 16 | Portal as PopoverPortal, 17 | Trigger as PopoverTrigger, 18 | Portal, 19 | Root, 20 | Trigger 21 | }; 22 | -------------------------------------------------------------------------------- /src/lib/components/ui/progress/index.ts: -------------------------------------------------------------------------------- 1 | import { tv, type VariantProps } from 'tailwind-variants'; 2 | import Root from './progress.svelte'; 3 | 4 | export const progress_bar_variants = tv({ 5 | base: 'h-full w-full flex-1 rounded-full transition-[width,transform,background-color] ease-in', 6 | variants: { 7 | variant: { 8 | default: 'bg-gray-1000', 9 | success: 'bg-blue-700', 10 | error: 'bg-red-700', 11 | warning: 'bg-amber-700', 12 | secondary: 'bg-gray-700' 13 | } 14 | }, 15 | defaultVariants: { 16 | variant: 'default' 17 | } 18 | }); 19 | 20 | export type Variant = VariantProps['variant']; 21 | 22 | export { Root as Progress, Root }; 23 | -------------------------------------------------------------------------------- /src/lib/components/ui/radio/index.ts: -------------------------------------------------------------------------------- 1 | import Item from './radio-item.svelte'; 2 | import Root from './radio.svelte'; 3 | 4 | export { Item, Root as Radio, Item as RadioItem, Root }; 5 | -------------------------------------------------------------------------------- /src/lib/components/ui/radio/radio.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | {#if checked && value} 21 | 22 | {:else} 23 | {@render children?.()} 24 | {/if} 25 | 26 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-cell.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-grid-body.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-grid-head.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-grid-row.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-grid.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-head-cell.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-header.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-heading.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-months.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
16 | {@render children?.()} 17 |
18 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-next-button.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | {#snippet Fallback()} 13 | 14 | {/snippet} 15 | 16 | 26 | -------------------------------------------------------------------------------- /src/lib/components/ui/range-calendar/range-calendar-prev-button.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | {#snippet Fallback()} 13 | 14 | {/snippet} 15 | 16 | 26 | -------------------------------------------------------------------------------- /src/lib/components/ui/select/select-group-heading.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/lib/components/ui/select/select-scroll-down-button.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/select/select-scroll-up-button.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/select/select-separator.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/lib/components/ui/separator/index.ts: -------------------------------------------------------------------------------- 1 | import Root from './separator.svelte'; 2 | 3 | export { 4 | Root, 5 | // 6 | Root as Separator 7 | }; 8 | -------------------------------------------------------------------------------- /src/lib/components/ui/separator/separator.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 23 | -------------------------------------------------------------------------------- /src/lib/components/ui/show-more/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ShowMore } from './show-more.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/components/ui/skeleton/index.ts: -------------------------------------------------------------------------------- 1 | import Root from './skeleton.svelte'; 2 | 3 | export { Root, Root as Skeleton }; 4 | -------------------------------------------------------------------------------- /src/lib/components/ui/spinner/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Spinner } from './spinner.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/components/ui/status-dot/index.ts: -------------------------------------------------------------------------------- 1 | import { tv, type VariantProps } from 'tailwind-variants'; 2 | 3 | export { default as StatusDot } from './status-dot.svelte'; 4 | 5 | export const status_dot_variants = tv({ 6 | base: 'size-2.5 rounded-full', 7 | variants: { 8 | variant: { 9 | QUEUED: 'bg-accents-2', 10 | BUILDING: 'bg-[#f5a623]', 11 | ERROR: 'bg-[#ff0000]', 12 | READY: 'bg-teal-900', 13 | CANCELED: 'bg-accents-2' 14 | } 15 | } 16 | }); 17 | 18 | export type Variant = VariantProps['variant']; 19 | -------------------------------------------------------------------------------- /src/lib/components/ui/status-dot/status-dot.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | {#if label} 20 | 21 | {state} 22 | 23 | {/if} 24 | 25 | -------------------------------------------------------------------------------- /src/lib/components/ui/table/index.ts: -------------------------------------------------------------------------------- 1 | import Body from './table-body.svelte'; 2 | import Caption from './table-caption.svelte'; 3 | import Cell from './table-cell.svelte'; 4 | import Footer from './table-footer.svelte'; 5 | import Head from './table-head.svelte'; 6 | import Header from './table-header.svelte'; 7 | import Row from './table-row.svelte'; 8 | import Root from './table.svelte'; 9 | 10 | export { 11 | Body, 12 | Caption, 13 | Cell, 14 | Footer, 15 | Head, 16 | Header, 17 | Root, 18 | Row, 19 | Root as Table, 20 | Body as TableBody, 21 | Caption as TableCaption, 22 | Cell as TableCell, 23 | Footer as TableFooter, 24 | Head as TableHead, 25 | Header as TableHeader, 26 | Row as TableRow 27 | }; 28 | -------------------------------------------------------------------------------- /src/lib/components/ui/table/table-caption.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | {@render children?.()} 13 | 14 | -------------------------------------------------------------------------------- /src/lib/components/ui/table/table-cell.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | {@render children?.()} 17 | 18 | -------------------------------------------------------------------------------- /src/lib/components/ui/table/table-footer.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | {@render children?.()} 15 | 16 | -------------------------------------------------------------------------------- /src/lib/components/ui/table/table-head.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 19 | {@render children?.()} 20 | 21 | -------------------------------------------------------------------------------- /src/lib/components/ui/table/table-header.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | {@render children?.()} 13 | 14 | -------------------------------------------------------------------------------- /src/lib/components/ui/table/table-row.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 21 | {@render children?.()} 22 | 23 | -------------------------------------------------------------------------------- /src/lib/components/ui/table/table.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | 17 | {@render children?.()} 18 |
19 |
20 | -------------------------------------------------------------------------------- /src/lib/components/ui/tabs/index.ts: -------------------------------------------------------------------------------- 1 | import { Tabs as TabsPrimitive } from 'bits-ui'; 2 | import Content from './tabs-content.svelte'; 3 | import List from './tabs-list.svelte'; 4 | import Trigger from './tabs-trigger.svelte'; 5 | 6 | const Root = TabsPrimitive.Root; 7 | 8 | export { 9 | Content, 10 | List, 11 | Root, 12 | Root as Tabs, 13 | Content as TabsContent, 14 | List as TabsList, 15 | Trigger as TabsTrigger, 16 | Trigger 17 | }; 18 | -------------------------------------------------------------------------------- /src/lib/components/ui/tabs/tabs-content.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 | {@render children?.()} 19 | 20 | -------------------------------------------------------------------------------- /src/lib/components/ui/textarea/index.ts: -------------------------------------------------------------------------------- 1 | import Root from './textarea.svelte'; 2 | 3 | type FormTextareaEvent = T & { 4 | currentTarget: EventTarget & HTMLTextAreaElement; 5 | }; 6 | 7 | type TextareaEvents = { 8 | blur: FormTextareaEvent; 9 | change: FormTextareaEvent; 10 | click: FormTextareaEvent; 11 | focus: FormTextareaEvent; 12 | keydown: FormTextareaEvent; 13 | keypress: FormTextareaEvent; 14 | keyup: FormTextareaEvent; 15 | mouseover: FormTextareaEvent; 16 | mouseenter: FormTextareaEvent; 17 | mouseleave: FormTextareaEvent; 18 | paste: FormTextareaEvent; 19 | input: FormTextareaEvent; 20 | }; 21 | 22 | export { 23 | Root, 24 | // 25 | Root as Textarea, 26 | type TextareaEvents, 27 | type FormTextareaEvent 28 | }; 29 | -------------------------------------------------------------------------------- /src/lib/components/ui/tooltip/index.ts: -------------------------------------------------------------------------------- 1 | import { Tooltip as TooltipPrimitive } from 'bits-ui'; 2 | import Content from './tooltip-content.svelte'; 3 | 4 | const Provider = TooltipPrimitive.Provider; 5 | const Root = TooltipPrimitive.Root; 6 | const Trigger = TooltipPrimitive.Trigger; 7 | const Arrow = TooltipPrimitive.Arrow; 8 | const Portal = TooltipPrimitive.Portal; 9 | 10 | export { 11 | Arrow, 12 | Content, 13 | Portal, 14 | Provider, 15 | Root, 16 | Root as Tooltip, 17 | Arrow as TooltipArrow, 18 | Content as TooltipContent, 19 | Portal as TooltipPortal, 20 | Provider as TooltipProvider, 21 | Trigger as TooltipTrigger, 22 | Trigger 23 | }; 24 | -------------------------------------------------------------------------------- /src/lib/components/ui/window/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Window } from './window.svelte'; 2 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // place files you want to import through the `$lib` alias in this folder. 2 | -------------------------------------------------------------------------------- /src/lib/stores.ts: -------------------------------------------------------------------------------- 1 | import { writable } from 'svelte/store'; 2 | 3 | function create_command_store(initial_state: boolean) { 4 | const command = writable(initial_state); 5 | 6 | function toggle() { 7 | command.update((n) => !n); 8 | } 9 | 10 | return { 11 | ...command, 12 | toggle 13 | }; 14 | } 15 | 16 | export const command_open_state = create_command_store(false); 17 | -------------------------------------------------------------------------------- /src/routes/avatar/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Avatar'; 5 | const description = 6 | 'Avatars represent a user or a team. Stacked avatars represent a group of people'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/avatar/placeholder.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/avatar/with-icons.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | RH 9 | 10 | 11 | 12 | 13 | DG 14 | 15 | 16 | 17 | 18 | SH 19 | 20 | -------------------------------------------------------------------------------- /src/routes/badge/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Badge'; 5 | const description = 6 | 'A label that emphasizes an element that requires attention, or helps categorize with other similar elements.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/badge/sizes.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | small 7 |
8 |
9 | medium 10 |
11 |
12 | large 13 |
14 | -------------------------------------------------------------------------------- /src/routes/book/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Book'; 5 | const description = 'A responsive book component.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/book/custom-color.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/book/custom-illustration.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /src/routes/book/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/book/variants.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/book/width.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/brands/+page.svelte: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 | -------------------------------------------------------------------------------- /src/routes/button/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Button'; 5 | const description = 6 | 'Trigger an action or event, such as submitting a form or displaying a dialog.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/button/affix-and-suffix.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 | 8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /src/routes/button/disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/button/loading.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/button/rounded.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/button/sizes.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/button/variants.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /src/routes/calendar/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Calendar'; 5 | const description = 'Displays a calendar from which users can select a date or range of dates.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/calendar/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /src/routes/calendar/presets.svelte: -------------------------------------------------------------------------------- 1 | 27 | 28 |
29 | 30 |
31 | -------------------------------------------------------------------------------- /src/routes/calendar/range-calendar.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | 13 |
14 | -------------------------------------------------------------------------------- /src/routes/checkbox/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Checkbox'; 5 | const description = 'A control that toggles between two options, checked or unchecked.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/checkbox/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | Option 1 6 | -------------------------------------------------------------------------------- /src/routes/checkbox/disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | Disabled 7 | Disabled Checked 8 | Disabled Indeterminate 9 |
10 | -------------------------------------------------------------------------------- /src/routes/checkbox/indeterminate.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | Option 2 6 | -------------------------------------------------------------------------------- /src/routes/choicebox/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Choicebox'; 5 | const description = 6 | 'A larger form of Radio or Checkbox, where the user has a larger tap target and more details.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/choicebox/disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 13 | 14 | 15 | 16 | 17 | 18 | 24 | 25 | 26 |
27 | -------------------------------------------------------------------------------- /src/routes/choicebox/multi-select.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/routes/choicebox/single-select.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/routes/code-block/+page.svelte: -------------------------------------------------------------------------------- 1 |

code-block

2 | -------------------------------------------------------------------------------- /src/routes/collapse/+page.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/routes/collapse/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Collapse'; 5 | const description = 6 | 'A set of headings, vertically stacked, that each reveal an related section of content. Commonly referred to as an accordion.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/collapse/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | Question A 8 | 9 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut 10 | labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 11 | laboris nisi ut aliquip ex ea commodo consequat. 12 | 13 | 14 | 15 | Question B 16 | 17 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 18 | pariatur. 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/routes/collapse/expanded.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | Question A 8 | 9 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut 10 | labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 11 | laboris nisi ut aliquip ex ea commodo consequat. 12 | 13 | 14 | 15 | Question B 16 | 17 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 18 | pariatur. 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/routes/collapse/small.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | Question A 8 | 9 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut 10 | labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 11 | laboris nisi ut aliquip ex ea commodo consequat. 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/routes/colors/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Colors'; 5 | const description = 'Learn how to work with our color system. Right click to copy raw values.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/colors/borders.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/routes/colors/demo.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
20 | {@render children()} 21 |
22 | -------------------------------------------------------------------------------- /src/routes/colors/description-list.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | {#each items as { title, description, color }} 11 |
12 | 13 |
{title}
14 |
{description}
15 |
16 | {/each} 17 |
18 | -------------------------------------------------------------------------------- /src/routes/colors/scales.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
    7 | {#each Object.entries(scales) as [scale, colors]} 8 |
  • 9 | {@render color_scale({ scale, colors })} 10 |
  • 11 | {/each} 12 |
13 | 14 | {#snippet color_scale({ scale, colors }: { scale: string; colors: string[] })} 15 |

{scale}

16 |
    17 | {#each colors as color} 18 |
  • 19 | 20 |
  • 21 | {/each} 22 |
23 | {/snippet} 24 | -------------------------------------------------------------------------------- /src/routes/combobox/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Combobox'; 5 | const description = 'Filters large lists to selectable options based on the matching query.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/combobox/custom-empty-message.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | -------------------------------------------------------------------------------- /src/routes/combobox/custom-width-input.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/routes/combobox/custom-width-list.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/routes/combobox/default.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/routes/combobox/disabled.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/routes/combobox/errored.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/routes/combobox/sizes.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | 13 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /src/routes/context-menu/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Context Menu'; 5 | const description = 6 | 'Displays a brief heading and subheading to communicate any additional information or context a user needs to continue.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/context-menu/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 9 | Right click 10 | 11 | 12 | Item one 13 | Item two 14 | Item three 15 | Item four 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/routes/context-menu/disabled-items.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 9 | Right click 10 | 11 | 12 | Item one 13 | Item two 14 | Item three 15 | Item four 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/routes/description/+page.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/routes/description/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Description'; 5 | const description = 6 | 'Displays a brief heading and subheading to communicate any additional information or context a user needs to continue.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/description/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /src/routes/drawer/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/routes/drawer/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Drawer'; 5 | const description = 'Display content in a separate view from the existing context.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/drawer/custom-height.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Open 9 | 10 | 11 | A drawer title 12 | 13 |

Drawer body

14 |
15 |
16 | -------------------------------------------------------------------------------- /src/routes/drawer/default.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Open 9 | 10 | 11 | A drawer title 12 | 13 |

Drawer body

14 |
15 |
16 | -------------------------------------------------------------------------------- /src/routes/empty-state/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Empty State'; 5 | const description = 6 | 'Fill spaces when no content has been added yet, or is temporarily empty due to the nature of the feature and should be designed to prevent confusion.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/empty-state/blank-slate.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 12 | -------------------------------------------------------------------------------- /src/routes/empty-state/empty-state-design-framework.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 12 | -------------------------------------------------------------------------------- /src/routes/empty-state/informational.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | 15 | Learn more 16 | 17 | -------------------------------------------------------------------------------- /src/routes/error/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Error'; 5 | const description = 6 | 'Good error design is clear, useful, and friendly. Designing concise and accurate error messages unblocks users and builds trust by meeting people where they are.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/error/custom-label.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | This email address is already in use. 6 | -------------------------------------------------------------------------------- /src/routes/error/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | This email address is already in use. 6 | -------------------------------------------------------------------------------- /src/routes/error/sizes.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | This email is in use. 7 | This email is in use. 8 | This email is in use. 9 |
10 | -------------------------------------------------------------------------------- /src/routes/error/with-an-error-property.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 12 | -------------------------------------------------------------------------------- /src/routes/feedback/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/routes/feedback/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Feedback'; 5 | const description = 'Gather text feedback with an associated emotion.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/feedback/default.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 9 |
10 | This example is hidden because it is intended for only desktop. 11 |
12 | -------------------------------------------------------------------------------- /src/routes/feedback/inline.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/gauge/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Gauge'; 5 | const description = 'A circular visual for conveying a percentage.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/gauge/arc-priority.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 12 |
13 | -------------------------------------------------------------------------------- /src/routes/gauge/custom-color-range.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 |
19 | {#each Object.entries(colors) as c} 20 | {@const [value, _] = c} 21 | 22 | {/each} 23 |
24 | -------------------------------------------------------------------------------- /src/routes/gauge/custom-secondary-color.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 11 |
12 | -------------------------------------------------------------------------------- /src/routes/gauge/default-color-scale.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/gauge/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /src/routes/gauge/label.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | -------------------------------------------------------------------------------- /src/routes/grid/+page.svelte: -------------------------------------------------------------------------------- 1 |

grid

2 | -------------------------------------------------------------------------------- /src/routes/icons/+page.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/routes/icons/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Icons'; 5 | const description = 'A collection of icons used across Vercel products. Right click to copy.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/icons/transition.ts: -------------------------------------------------------------------------------- 1 | import { quintInOut } from 'svelte/easing'; 2 | import { crossfade } from 'svelte/transition'; 3 | 4 | export const [send, receive] = crossfade({ 5 | duration: (d) => Math.sqrt(d * 200), 6 | 7 | fallback(node, _) { 8 | const style = getComputedStyle(node); 9 | const transform = style.transform === 'none' ? '' : style.transform; 10 | 11 | return { 12 | duration: 600, 13 | easing: quintInOut, 14 | css: (t) => ` 15 | transform: ${transform} scale(${t}); 16 | opacity: ${t} 17 | ` 18 | }; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /src/routes/input/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Input'; 5 | const description = 'Retrieve text input from a user.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/input/affix-and-suffix.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 | 8 | 9 | 10 | 18 | 19 |
20 | -------------------------------------------------------------------------------- /src/routes/input/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /src/routes/input/disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /src/routes/input/label.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /src/routes/input/search.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/keyboard-input/+page.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/routes/keyboard-input/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Keyboard Input'; 5 | const description = 'Display keyboard input that triggers an action.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/keyboard-input/combination.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/keyboard-input/modifiers.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/routes/keyboard-input/small.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/loading-dots/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/routes/loading-dots/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Loading Dots'; 5 | const description = 'Indicate an action running in the background.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/loading-dots/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /src/routes/loading-dots/with-text.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |

Loading

7 |
8 | -------------------------------------------------------------------------------- /src/routes/menu/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Menu'; 5 | const description = 6 | 'Dropdown menu opened via button. Supports typeahead and keyboard navigation.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/menu/custom-trigger.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | M 11 | 12 | 13 | 14 | 15 | One 16 | Two 17 | Three 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/routes/menu/default.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | {#snippet child({ props })} 9 | 10 | {/snippet} 11 | 12 | 13 | 14 | One 15 | Two 16 | Three 17 | Error 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/routes/menu/disabled-items.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Actions 9 | 10 | 11 | One 12 | Two 13 | Three 14 | Error 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/routes/menu/link-items.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | {#snippet child({ props })} 15 | 16 | {/snippet} 17 | 18 | 19 | 20 | {#each links as { href, label }} 21 | 22 | {#snippet child({ props })} 23 | {label} 24 | {/snippet} 25 | 26 | {/each} 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/routes/menu/menu-position.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Left Start 9 | 10 | 11 | One 12 | Two 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/routes/modal/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Modal'; 5 | const description = 6 | 'Display popup content that requires attention or provides additional information.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/modal/default.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Open Modal 9 | 10 | 11 | 12 | Create Token 13 | 14 | 15 | Enter a unique name for your token to differentiate it from other tokens and then select the 16 | scope. 17 | 18 | 19 | 20 |

Some content contained within the modal.

21 | 22 | 23 | 24 | 25 |
26 |
27 | -------------------------------------------------------------------------------- /src/routes/modal/disabled-actions.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Open Modal 9 | 10 | 11 | 12 | Modal 13 | This is a modal. 14 | 15 | 16 |

Some content contained within the modal.

17 | 18 | 19 | 20 | 21 |
22 |
23 | -------------------------------------------------------------------------------- /src/routes/modal/single-button.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Open Modal 9 | 10 | 11 | 12 | Create Token 13 | 14 | 15 |

Some content contained within the modal.

16 | 17 | 18 |
19 |
20 | -------------------------------------------------------------------------------- /src/routes/note/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Note'; 5 | const description = 'Display text that requires attention or provides additional information.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/note/action.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 | 8 | This note details some information. 9 | {#snippet action()} 10 | 11 | {/snippet} 12 | 13 | 14 | This note details a large amount information that could potentially wrap into two or more lines, 15 | forcing the height of the Note to be larger. 16 | {#snippet action()} 17 | 18 | {/snippet} 19 | 20 |
21 | -------------------------------------------------------------------------------- /src/routes/note/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | A small note. 7 | A default note. 8 | A large note. 9 |
10 | -------------------------------------------------------------------------------- /src/routes/note/disabled.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 | This note details a warning. 10 | {#snippet action()} 11 | 12 | {/snippet} 13 | 14 | 15 | This filled note details some success information. Check 16 | the documentation to learn more. 17 | {#snippet action()} 18 | 19 | {/snippet} 20 | 21 |
22 | -------------------------------------------------------------------------------- /src/routes/pagination/+page.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/routes/pagination/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Pagination'; 5 | const description = 'Navigate to the previous or next page.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/pagination/default.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/routes/progress/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Progress'; 5 | const description = 'Display progress relative to a limit or related to a task.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/progress/custom-max.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/progress/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/progress/dynamic-colors.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 | 27 | 28 |
29 | 30 | 31 |
32 |
33 | -------------------------------------------------------------------------------- /src/routes/progress/themed.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /src/routes/project-banner/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Project Banner'; 5 | const description = 'Used for temporary, project-wide notifications that require resolution'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/project-banner/error.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 12 | -------------------------------------------------------------------------------- /src/routes/project-banner/success.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 12 | -------------------------------------------------------------------------------- /src/routes/radio/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Radio'; 5 | const description = 'Provides single user input from a selection of options.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/radio/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Option 1 7 | Option 2 8 | 9 | -------------------------------------------------------------------------------- /src/routes/radio/radio-disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Option 1 7 | Option 2 8 | 9 | -------------------------------------------------------------------------------- /src/routes/radio/radio-required.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 | Option 1 12 | Option 2 13 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /src/routes/radio/radio-standalone.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
  • 6 | Option 1 7 | 8 |
  • 9 | -------------------------------------------------------------------------------- /src/routes/scroller/+page.svelte: -------------------------------------------------------------------------------- 1 |

    scroller

    2 | -------------------------------------------------------------------------------- /src/routes/select/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Select'; 5 | const description = 'Display a dropdown list of items.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/select/disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Disabled with placeholder 7 | 8 | Disabled 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/routes/show-more/+page.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/routes/show-more/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Show more'; 5 | const description = 'Styling component to show expanded or collapsed content.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/show-more/default.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/routes/skeleton/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Skeleton'; 5 | const description = 'Display a skeleton whilst another component is loading.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/skeleton/default-with-box-height.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/skeleton/default-with-set-width.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/skeleton/no-animation.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/skeleton/pill.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/skeleton/rounded.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/skeleton/squared.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/skeleton/wrapping-children-with-fixed-size.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | 8 | 11 |
    12 | -------------------------------------------------------------------------------- /src/routes/skeleton/wrapping-children.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
    7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
    15 | -------------------------------------------------------------------------------- /src/routes/snippet/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Snippet'; 5 | const description = 'Display a snippet of copyable code for the command line.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/snippet/callback.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | alert('You copied the text!')} 7 | text="pnpm create svelte@latest" 8 | class="w-[300px]" 9 | /> 10 | -------------------------------------------------------------------------------- /src/routes/snippet/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/snippet/inverted.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/snippet/multiline.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/snippet/no-prompt.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/snippet/variants.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | 8 | 9 |
    10 | -------------------------------------------------------------------------------- /src/routes/spinner/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/routes/spinner/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Spinner'; 5 | const description = 6 | 'Indicate an action running in the background. Unlike the loading dots, this should generally be used to indicate loading feedback in response to a user action, like for buttons, pagination, etc.'; 7 | 8 | const pageMetaTags = Object.freeze({ 9 | title, 10 | description, 11 | openGraph: { 12 | title, 13 | description 14 | } 15 | }) satisfies MetaTagsProps; 16 | 17 | return { 18 | pageMetaTags, 19 | title, 20 | description 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /src/routes/spinner/custom-size.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/spinner/default-size.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/stack/+page.svelte: -------------------------------------------------------------------------------- 1 |

    stack

    2 | -------------------------------------------------------------------------------- /src/routes/status-dot/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | -------------------------------------------------------------------------------- /src/routes/status-dot/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Status Dot'; 5 | const description = 'Display an indicator of deployment status.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/status-dot/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | 8 | 9 | 10 | 11 |
    12 | -------------------------------------------------------------------------------- /src/routes/status-dot/label.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | 8 | 9 | 10 | 11 |
    12 | -------------------------------------------------------------------------------- /src/routes/switch/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Switch'; 5 | const description = 'Displays a boolean value.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/switch/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | 8 |
    9 | -------------------------------------------------------------------------------- /src/routes/switch/disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | 8 |
    9 | -------------------------------------------------------------------------------- /src/routes/switch/sizes.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
    8 | 9 | 10 |
    11 | -------------------------------------------------------------------------------- /src/routes/table/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Table'; 5 | const description = 'A semantic HTML table component'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/table/basic-table.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | Col 1 9 | Col 2 10 | Col 3 11 | 12 | 13 | 14 | 15 | Value 1.1 16 | Value 1.2 17 | Value 1.3 18 | 19 | 20 | Value 2.1 21 | Value 2.2 22 | Value 2.3 23 | 24 | 25 | Value 3.1 26 | Value 3.2 27 | Value 3.3 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/routes/table/striped-table.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | Col 1 9 | Col 2 10 | Col 3 11 | 12 | 13 | 14 | 15 | Value 1.1 16 | Value 1.2 17 | Value 1.3 18 | 19 | 20 | Value 2.1 21 | Value 2.2 22 | Value 2.3 23 | 24 | 25 | Value 3.1 26 | Value 3.2 27 | Value 3.3 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/routes/tabs/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Tabs'; 5 | const description = 'Display tab content.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/tabs/default.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | {#each tabs as { value }} 14 | {value} 15 | {/each} 16 | 17 | 18 | {#each tabs as { content, value }} 19 | {content} 20 | {/each} 21 | 22 | -------------------------------------------------------------------------------- /src/routes/tabs/disable-specific-tabs.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | {#each tabs as { title, value, disabled, tooltip }} 14 | {title} 15 | {/each} 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/routes/tabs/secondary.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | {#each tabs as { title, value }} 14 | {title} 15 | {/each} 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/routes/tabs/with-icons.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | {#each tabs as { title, value, icon }} 15 | {title} 16 | {/each} 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/routes/text/+page.svelte: -------------------------------------------------------------------------------- 1 |

    text

    2 | -------------------------------------------------------------------------------- /src/routes/textarea/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/routes/textarea/+page.ts: -------------------------------------------------------------------------------- 1 | import type { MetaTagsProps } from 'svelte-meta-tags'; 2 | 3 | export function load() { 4 | const title = 'Textarea'; 5 | const description = 'Retrieve multi-line user input.'; 6 | 7 | const pageMetaTags = Object.freeze({ 8 | title, 9 | description, 10 | openGraph: { 11 | title, 12 | description 13 | } 14 | }) satisfies MetaTagsProps; 15 | 16 | return { 17 | pageMetaTags, 18 | title, 19 | description 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/routes/textarea/default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |