From 38bcb3c2ebfc7b8eb362bd9afa90a38e12d220e4 Mon Sep 17 00:00:00 2001 From: shadcn Date: Wed, 7 Jan 2026 22:43:45 +0400 Subject: [PATCH] fix --- apps/v4/lib/registry.ts | 8 + .../public/r/styles/base-lyra/Elevenlabs.json | 2 +- .../r/styles/base-lyra/accordion-demo.json | 2 +- .../styles/base-lyra/accordion-disabled.json | 2 +- .../r/styles/base-lyra/accordion-example.json | 2 +- .../styles/base-lyra/accordion-multiple.json | 2 +- .../public/r/styles/base-lyra/accordion.json | 2 +- .../public/r/styles/base-lyra/alert-demo.json | 16 + .../r/styles/base-lyra/alert-destructive.json | 16 + .../r/styles/base-lyra/alert-dialog-demo.json | 17 + .../base-lyra/alert-dialog-example.json | 2 +- .../r/styles/base-lyra/alert-dialog.json | 2 +- .../r/styles/base-lyra/alert-example.json | 2 +- apps/v4/public/r/styles/base-lyra/alert.json | 2 +- .../r/styles/base-lyra/aspect-ratio-demo.json | 16 + .../base-lyra/aspect-ratio-example.json | 2 +- .../r/styles/base-lyra/aspect-ratio.json | 2 +- .../r/styles/base-lyra/avatar-demo.json | 16 + .../r/styles/base-lyra/avatar-example.json | 2 +- apps/v4/public/r/styles/base-lyra/avatar.json | 2 +- .../public/r/styles/base-lyra/badge-demo.json | 16 + .../r/styles/base-lyra/badge-destructive.json | 16 + .../r/styles/base-lyra/badge-example.json | 2 +- .../r/styles/base-lyra/badge-outline.json | 16 + .../r/styles/base-lyra/badge-secondary.json | 16 + apps/v4/public/r/styles/base-lyra/badge.json | 2 +- .../r/styles/base-lyra/breadcrumb-demo.json | 17 + .../styles/base-lyra/breadcrumb-dropdown.json | 17 + .../styles/base-lyra/breadcrumb-ellipsis.json | 16 + .../styles/base-lyra/breadcrumb-example.json | 2 +- .../r/styles/base-lyra/breadcrumb-link.json | 16 + .../base-lyra/breadcrumb-responsive.json | 19 + .../base-lyra/breadcrumb-separator.json | 16 + .../public/r/styles/base-lyra/breadcrumb.json | 2 +- .../r/styles/base-lyra/button-as-child.json | 16 + .../r/styles/base-lyra/button-default.json | 16 + .../r/styles/base-lyra/button-demo.json | 16 + .../styles/base-lyra/button-destructive.json | 16 + .../r/styles/base-lyra/button-example.json | 2 +- .../r/styles/base-lyra/button-ghost.json | 16 + .../r/styles/base-lyra/button-group-demo.json | 18 + .../base-lyra/button-group-dropdown.json | 18 + .../base-lyra/button-group-example.json | 2 +- .../base-lyra/button-group-input-group.json | 19 + .../styles/base-lyra/button-group-input.json | 18 + .../styles/base-lyra/button-group-nested.json | 17 + .../base-lyra/button-group-orientation.json | 17 + .../base-lyra/button-group-popover.json | 20 + .../styles/base-lyra/button-group-select.json | 19 + .../base-lyra/button-group-separator.json | 17 + .../r/styles/base-lyra/button-group-size.json | 17 + .../styles/base-lyra/button-group-split.json | 17 + .../r/styles/base-lyra/button-group.json | 2 +- .../r/styles/base-lyra/button-icon.json | 16 + .../r/styles/base-lyra/button-link.json | 16 + .../r/styles/base-lyra/button-loading.json | 17 + .../r/styles/base-lyra/button-outline.json | 16 + .../r/styles/base-lyra/button-rounded.json | 16 + .../r/styles/base-lyra/button-secondary.json | 16 + .../r/styles/base-lyra/button-size.json | 16 + .../r/styles/base-lyra/button-with-icon.json | 16 + apps/v4/public/r/styles/base-lyra/button.json | 2 +- .../r/styles/base-lyra/calendar-demo.json | 16 + .../r/styles/base-lyra/calendar-example.json | 2 +- .../r/styles/base-lyra/calendar-hijri.json | 16 + .../public/r/styles/base-lyra/calendar.json | 2 +- .../public/r/styles/base-lyra/card-demo.json | 19 + .../r/styles/base-lyra/card-example.json | 2 +- apps/v4/public/r/styles/base-lyra/card.json | 2 +- .../r/styles/base-lyra/carousel-api.json | 17 + .../r/styles/base-lyra/carousel-demo.json | 17 + .../r/styles/base-lyra/carousel-example.json | 2 +- .../base-lyra/carousel-orientation.json | 17 + .../r/styles/base-lyra/carousel-plugin.json | 17 + .../r/styles/base-lyra/carousel-size.json | 17 + .../r/styles/base-lyra/carousel-spacing.json | 17 + .../public/r/styles/base-lyra/carousel.json | 2 +- .../styles/base-lyra/chart-bar-demo-axis.json | 16 + .../styles/base-lyra/chart-bar-demo-grid.json | 16 + .../base-lyra/chart-bar-demo-legend.json | 16 + .../base-lyra/chart-bar-demo-tooltip.json | 16 + .../r/styles/base-lyra/chart-bar-demo.json | 16 + .../r/styles/base-lyra/chart-example.json | 2 +- apps/v4/public/r/styles/base-lyra/chart.json | 2 +- .../v4/public/r/styles/base-lyra/chatgpt.json | 2 +- .../r/styles/base-lyra/checkbox-demo.json | 17 + .../r/styles/base-lyra/checkbox-disabled.json | 16 + .../r/styles/base-lyra/checkbox-example.json | 2 +- .../styles/base-lyra/checkbox-with-text.json | 16 + .../public/r/styles/base-lyra/checkbox.json | 2 +- .../r/styles/base-lyra/collapsible-demo.json | 17 + .../styles/base-lyra/collapsible-example.json | 2 +- .../r/styles/base-lyra/combobox-demo.json | 18 + .../base-lyra/combobox-dropdown-menu.json | 18 + .../r/styles/base-lyra/combobox-example.json | 2 +- .../r/styles/base-lyra/combobox-popover.json | 18 + .../styles/base-lyra/combobox-responsive.json | 6 +- .../public/r/styles/base-lyra/combobox.json | 2 +- .../r/styles/base-lyra/command-demo.json | 16 + .../r/styles/base-lyra/command-dialog.json | 16 + .../r/styles/base-lyra/command-example.json | 2 +- .../v4/public/r/styles/base-lyra/command.json | 2 +- .../r/styles/base-lyra/component-example.json | 2 +- .../r/styles/base-lyra/context-menu-demo.json | 16 + .../base-lyra/context-menu-example.json | 2 +- .../r/styles/base-lyra/context-menu.json | 2 +- .../r/styles/base-lyra/data-table-demo.json | 20 + .../r/styles/base-lyra/date-picker-demo.json | 18 + .../base-lyra/date-picker-with-presets.json | 19 + .../base-lyra/date-picker-with-range.json | 18 + .../styles/base-lyra/dialog-close-button.json | 19 + .../r/styles/base-lyra/dialog-demo.json | 19 + .../r/styles/base-lyra/dialog-example.json | 2 +- apps/v4/public/r/styles/base-lyra/dialog.json | 2 +- .../r/styles/base-lyra/drawer-demo.json | 17 + .../r/styles/base-lyra/drawer-dialog.json | 20 + .../r/styles/base-lyra/drawer-example.json | 2 +- apps/v4/public/r/styles/base-lyra/drawer.json | 2 +- .../base-lyra/dropdown-menu-checkboxes.json | 17 + .../styles/base-lyra/dropdown-menu-demo.json | 17 + .../base-lyra/dropdown-menu-dialog.json | 22 + .../base-lyra/dropdown-menu-example.json | 2 +- .../base-lyra/dropdown-menu-radio-group.json | 17 + .../r/styles/base-lyra/dropdown-menu.json | 2 +- .../styles/base-lyra/empty-avatar-group.json | 18 + .../r/styles/base-lyra/empty-avatar.json | 18 + .../r/styles/base-lyra/empty-background.json | 17 + .../public/r/styles/base-lyra/empty-demo.json | 17 + .../r/styles/base-lyra/empty-example.json | 2 +- .../public/r/styles/base-lyra/empty-icon.json | 16 + .../r/styles/base-lyra/empty-input-group.json | 18 + .../r/styles/base-lyra/empty-outline.json | 17 + apps/v4/public/r/styles/base-lyra/empty.json | 2 +- .../v4/public/r/styles/base-lyra/example.json | 2 +- .../r/styles/base-lyra/field-checkbox.json | 17 + .../r/styles/base-lyra/field-choice-card.json | 17 + .../public/r/styles/base-lyra/field-demo.json | 21 + .../r/styles/base-lyra/field-example.json | 2 +- .../r/styles/base-lyra/field-fieldset.json | 17 + .../r/styles/base-lyra/field-group.json | 17 + .../r/styles/base-lyra/field-input.json | 17 + .../r/styles/base-lyra/field-radio.json | 17 + .../r/styles/base-lyra/field-responsive.json | 19 + .../r/styles/base-lyra/field-select.json | 17 + .../r/styles/base-lyra/field-slider.json | 17 + .../r/styles/base-lyra/field-switch.json | 17 + .../r/styles/base-lyra/field-textarea.json | 17 + apps/v4/public/r/styles/base-lyra/field.json | 2 +- apps/v4/public/r/styles/base-lyra/github.json | 2 +- .../r/styles/base-lyra/hover-card-demo.json | 18 + .../styles/base-lyra/hover-card-example.json | 2 +- .../public/r/styles/base-lyra/hover-card.json | 2 +- .../public/r/styles/base-lyra/input-demo.json | 16 + .../r/styles/base-lyra/input-disabled.json | 16 + .../r/styles/base-lyra/input-example.json | 2 +- .../public/r/styles/base-lyra/input-file.json | 17 + .../base-lyra/input-group-button-group.json | 18 + .../styles/base-lyra/input-group-button.json | 17 + .../styles/base-lyra/input-group-custom.json | 16 + .../r/styles/base-lyra/input-group-demo.json | 19 + .../base-lyra/input-group-dropdown.json | 17 + .../styles/base-lyra/input-group-example.json | 2 +- .../r/styles/base-lyra/input-group-icon.json | 16 + .../r/styles/base-lyra/input-group-label.json | 18 + .../styles/base-lyra/input-group-spinner.json | 17 + .../r/styles/base-lyra/input-group-text.json | 16 + .../base-lyra/input-group-textarea.json | 16 + .../styles/base-lyra/input-group-tooltip.json | 17 + .../r/styles/base-lyra/input-group.json | 2 +- .../base-lyra/input-otp-controlled.json | 16 + .../r/styles/base-lyra/input-otp-demo.json | 16 + .../r/styles/base-lyra/input-otp-example.json | 2 +- .../r/styles/base-lyra/input-otp-pattern.json | 16 + .../styles/base-lyra/input-otp-separator.json | 16 + .../public/r/styles/base-lyra/input-otp.json | 2 +- .../r/styles/base-lyra/input-with-button.json | 17 + .../r/styles/base-lyra/input-with-label.json | 17 + .../r/styles/base-lyra/input-with-text.json | 17 + apps/v4/public/r/styles/base-lyra/input.json | 2 +- .../r/styles/base-lyra/item-avatar.json | 18 + .../public/r/styles/base-lyra/item-demo.json | 17 + .../r/styles/base-lyra/item-dropdown.json | 19 + .../r/styles/base-lyra/item-example.json | 2 +- .../public/r/styles/base-lyra/item-group.json | 18 + .../r/styles/base-lyra/item-header.json | 16 + .../public/r/styles/base-lyra/item-icon.json | 17 + .../public/r/styles/base-lyra/item-image.json | 16 + .../public/r/styles/base-lyra/item-link.json | 16 + .../public/r/styles/base-lyra/item-size.json | 17 + .../r/styles/base-lyra/item-variant.json | 17 + apps/v4/public/r/styles/base-lyra/item.json | 2 +- .../public/r/styles/base-lyra/kbd-button.json | 17 + .../public/r/styles/base-lyra/kbd-demo.json | 16 + .../r/styles/base-lyra/kbd-example.json | 2 +- .../public/r/styles/base-lyra/kbd-group.json | 16 + .../r/styles/base-lyra/kbd-input-group.json | 17 + .../r/styles/base-lyra/kbd-tooltip.json | 19 + apps/v4/public/r/styles/base-lyra/kbd.json | 2 +- .../public/r/styles/base-lyra/label-demo.json | 17 + .../r/styles/base-lyra/label-example.json | 2 +- apps/v4/public/r/styles/base-lyra/label.json | 2 +- .../r/styles/base-lyra/menubar-demo.json | 16 + .../r/styles/base-lyra/menubar-example.json | 2 +- .../v4/public/r/styles/base-lyra/menubar.json | 2 +- .../styles/base-lyra/native-select-demo.json | 16 + .../base-lyra/native-select-disabled.json | 16 + .../base-lyra/native-select-example.json | 2 +- .../base-lyra/native-select-groups.json | 16 + .../base-lyra/native-select-invalid.json | 16 + .../r/styles/base-lyra/native-select.json | 2 +- .../base-lyra/navigation-menu-demo.json | 16 + .../base-lyra/navigation-menu-example.json | 2 +- .../r/styles/base-lyra/navigation-menu.json | 2 +- .../r/styles/base-lyra/pagination-demo.json | 16 + .../styles/base-lyra/pagination-example.json | 2 +- .../public/r/styles/base-lyra/pagination.json | 2 +- .../r/styles/base-lyra/popover-demo.json | 19 + .../r/styles/base-lyra/popover-example.json | 2 +- .../v4/public/r/styles/base-lyra/popover.json | 2 +- .../v4/public/r/styles/base-lyra/preview.json | 2 +- .../r/styles/base-lyra/progress-demo.json | 16 + .../r/styles/base-lyra/progress-example.json | 2 +- .../public/r/styles/base-lyra/progress.json | 2 +- .../r/styles/base-lyra/radio-group-demo.json | 6 +- .../styles/base-lyra/radio-group-example.json | 2 +- .../r/styles/base-lyra/radio-group.json | 2 +- .../public/r/styles/base-lyra/registry.json | 2964 +++- .../base-lyra/resizable-demo-with-handle.json | 16 + .../r/styles/base-lyra/resizable-demo.json | 16 + .../r/styles/base-lyra/resizable-example.json | 2 +- .../r/styles/base-lyra/resizable-handle.json | 16 + .../styles/base-lyra/resizable-vertical.json | 16 + .../public/r/styles/base-lyra/resizable.json | 2 +- .../r/styles/base-lyra/scroll-area-demo.json | 17 + .../styles/base-lyra/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/base-lyra/scroll-area.json | 2 +- .../r/styles/base-lyra/select-demo.json | 16 + .../r/styles/base-lyra/select-example.json | 2 +- .../r/styles/base-lyra/select-scrollable.json | 16 + apps/v4/public/r/styles/base-lyra/select.json | 2 +- .../r/styles/base-lyra/separator-demo.json | 2 +- .../r/styles/base-lyra/separator-example.json | 2 +- .../public/r/styles/base-lyra/separator.json | 2 +- .../public/r/styles/base-lyra/sheet-demo.json | 6 +- .../r/styles/base-lyra/sheet-example.json | 2 +- .../public/r/styles/base-lyra/sheet-side.json | 6 +- apps/v4/public/r/styles/base-lyra/sheet.json | 2 +- .../r/styles/base-lyra/sidebar-example.json | 2 +- .../base-lyra/sidebar-floating-example.json | 2 +- .../base-lyra/sidebar-icon-example.json | 2 +- .../base-lyra/sidebar-inset-example.json | 2 +- .../v4/public/r/styles/base-lyra/sidebar.json | 2 +- apps/v4/public/r/styles/base-lyra/sink.json | 2 +- .../r/styles/base-lyra/skeleton-card.json | 16 + .../r/styles/base-lyra/skeleton-demo.json | 16 + .../r/styles/base-lyra/skeleton-example.json | 2 +- .../public/r/styles/base-lyra/skeleton.json | 2 +- .../r/styles/base-lyra/slider-demo.json | 16 + .../r/styles/base-lyra/slider-example.json | 2 +- apps/v4/public/r/styles/base-lyra/slider.json | 2 +- .../r/styles/base-lyra/sonner-demo.json | 16 + .../r/styles/base-lyra/sonner-example.json | 2 +- .../r/styles/base-lyra/sonner-types.json | 16 + .../r/styles/base-lyra/spinner-badge.json | 17 + .../r/styles/base-lyra/spinner-basic.json | 16 + .../r/styles/base-lyra/spinner-button.json | 17 + .../r/styles/base-lyra/spinner-color.json | 16 + .../r/styles/base-lyra/spinner-custom.json | 14 + .../r/styles/base-lyra/spinner-demo.json | 17 + .../r/styles/base-lyra/spinner-empty.json | 18 + .../r/styles/base-lyra/spinner-example.json | 2 +- .../styles/base-lyra/spinner-input-group.json | 17 + .../r/styles/base-lyra/spinner-item.json | 19 + .../r/styles/base-lyra/spinner-size.json | 16 + .../v4/public/r/styles/base-lyra/spinner.json | 2 +- .../r/styles/base-lyra/switch-demo.json | 17 + .../r/styles/base-lyra/switch-example.json | 2 +- apps/v4/public/r/styles/base-lyra/switch.json | 2 +- .../public/r/styles/base-lyra/table-demo.json | 16 + .../r/styles/base-lyra/table-example.json | 2 +- apps/v4/public/r/styles/base-lyra/table.json | 2 +- .../public/r/styles/base-lyra/tabs-demo.json | 20 + .../r/styles/base-lyra/tabs-example.json | 2 +- apps/v4/public/r/styles/base-lyra/tabs.json | 2 +- .../r/styles/base-lyra/textarea-demo.json | 2 +- .../r/styles/base-lyra/textarea-disabled.json | 2 +- .../r/styles/base-lyra/textarea-example.json | 2 +- .../base-lyra/textarea-with-button.json | 6 +- .../styles/base-lyra/textarea-with-label.json | 6 +- .../styles/base-lyra/textarea-with-text.json | 6 +- .../public/r/styles/base-lyra/textarea.json | 2 +- .../r/styles/base-lyra/toggle-demo.json | 16 + .../r/styles/base-lyra/toggle-disabled.json | 16 + .../r/styles/base-lyra/toggle-example.json | 2 +- .../r/styles/base-lyra/toggle-group-demo.json | 16 + .../base-lyra/toggle-group-disabled.json | 16 + .../base-lyra/toggle-group-example.json | 2 +- .../r/styles/base-lyra/toggle-group-lg.json | 16 + .../base-lyra/toggle-group-outline.json | 16 + .../styles/base-lyra/toggle-group-single.json | 16 + .../r/styles/base-lyra/toggle-group-sm.json | 16 + .../base-lyra/toggle-group-spacing.json | 16 + .../r/styles/base-lyra/toggle-group.json | 2 +- .../public/r/styles/base-lyra/toggle-lg.json | 16 + .../r/styles/base-lyra/toggle-outline.json | 16 + .../public/r/styles/base-lyra/toggle-sm.json | 16 + .../r/styles/base-lyra/toggle-with-text.json | 16 + apps/v4/public/r/styles/base-lyra/toggle.json | 2 +- .../r/styles/base-lyra/tooltip-demo.json | 17 + .../r/styles/base-lyra/tooltip-example.json | 2 +- .../v4/public/r/styles/base-lyra/tooltip.json | 2 +- .../base-lyra/typography-blockquote.json | 14 + .../r/styles/base-lyra/typography-demo.json | 14 + .../r/styles/base-lyra/typography-h1.json | 14 + .../r/styles/base-lyra/typography-h2.json | 14 + .../r/styles/base-lyra/typography-h3.json | 14 + .../r/styles/base-lyra/typography-h4.json | 14 + .../base-lyra/typography-inline-code.json | 14 + .../r/styles/base-lyra/typography-large.json | 14 + .../r/styles/base-lyra/typography-lead.json | 14 + .../r/styles/base-lyra/typography-list.json | 14 + .../r/styles/base-lyra/typography-muted.json | 14 + .../r/styles/base-lyra/typography-p.json | 14 + .../r/styles/base-lyra/typography-small.json | 14 + .../r/styles/base-lyra/typography-table.json | 14 + apps/v4/public/r/styles/base-lyra/vercel.json | 2 +- .../r/styles/base-maia/accordion-demo.json | 2 +- .../styles/base-maia/accordion-disabled.json | 2 +- .../r/styles/base-maia/accordion-example.json | 2 +- .../styles/base-maia/accordion-multiple.json | 2 +- .../public/r/styles/base-maia/accordion.json | 2 +- .../public/r/styles/base-maia/alert-demo.json | 16 + .../r/styles/base-maia/alert-destructive.json | 16 + .../r/styles/base-maia/alert-dialog-demo.json | 17 + .../base-maia/alert-dialog-example.json | 2 +- .../r/styles/base-maia/alert-dialog.json | 2 +- .../r/styles/base-maia/alert-example.json | 2 +- apps/v4/public/r/styles/base-maia/alert.json | 2 +- .../r/styles/base-maia/aspect-ratio-demo.json | 16 + .../base-maia/aspect-ratio-example.json | 2 +- .../r/styles/base-maia/aspect-ratio.json | 2 +- .../r/styles/base-maia/avatar-demo.json | 16 + .../r/styles/base-maia/avatar-example.json | 2 +- apps/v4/public/r/styles/base-maia/avatar.json | 2 +- .../public/r/styles/base-maia/badge-demo.json | 16 + .../r/styles/base-maia/badge-destructive.json | 16 + .../r/styles/base-maia/badge-example.json | 2 +- .../r/styles/base-maia/badge-outline.json | 16 + .../r/styles/base-maia/badge-secondary.json | 16 + apps/v4/public/r/styles/base-maia/badge.json | 2 +- .../r/styles/base-maia/breadcrumb-demo.json | 17 + .../styles/base-maia/breadcrumb-dropdown.json | 17 + .../styles/base-maia/breadcrumb-ellipsis.json | 16 + .../styles/base-maia/breadcrumb-example.json | 2 +- .../r/styles/base-maia/breadcrumb-link.json | 16 + .../base-maia/breadcrumb-responsive.json | 19 + .../base-maia/breadcrumb-separator.json | 16 + .../public/r/styles/base-maia/breadcrumb.json | 2 +- .../r/styles/base-maia/button-as-child.json | 16 + .../r/styles/base-maia/button-default.json | 16 + .../r/styles/base-maia/button-demo.json | 16 + .../styles/base-maia/button-destructive.json | 16 + .../r/styles/base-maia/button-example.json | 2 +- .../r/styles/base-maia/button-ghost.json | 16 + .../r/styles/base-maia/button-group-demo.json | 18 + .../base-maia/button-group-dropdown.json | 18 + .../base-maia/button-group-example.json | 2 +- .../base-maia/button-group-input-group.json | 19 + .../styles/base-maia/button-group-input.json | 18 + .../styles/base-maia/button-group-nested.json | 17 + .../base-maia/button-group-orientation.json | 17 + .../base-maia/button-group-popover.json | 20 + .../styles/base-maia/button-group-select.json | 19 + .../base-maia/button-group-separator.json | 17 + .../r/styles/base-maia/button-group-size.json | 17 + .../styles/base-maia/button-group-split.json | 17 + .../r/styles/base-maia/button-group.json | 2 +- .../r/styles/base-maia/button-icon.json | 16 + .../r/styles/base-maia/button-link.json | 16 + .../r/styles/base-maia/button-loading.json | 17 + .../r/styles/base-maia/button-outline.json | 16 + .../r/styles/base-maia/button-rounded.json | 16 + .../r/styles/base-maia/button-secondary.json | 16 + .../r/styles/base-maia/button-size.json | 16 + .../r/styles/base-maia/button-with-icon.json | 16 + apps/v4/public/r/styles/base-maia/button.json | 2 +- .../r/styles/base-maia/calendar-demo.json | 16 + .../r/styles/base-maia/calendar-example.json | 2 +- .../r/styles/base-maia/calendar-hijri.json | 16 + .../public/r/styles/base-maia/calendar.json | 2 +- .../public/r/styles/base-maia/card-demo.json | 19 + .../r/styles/base-maia/card-example.json | 2 +- apps/v4/public/r/styles/base-maia/card.json | 2 +- .../r/styles/base-maia/carousel-api.json | 17 + .../r/styles/base-maia/carousel-demo.json | 17 + .../r/styles/base-maia/carousel-example.json | 2 +- .../base-maia/carousel-orientation.json | 17 + .../r/styles/base-maia/carousel-plugin.json | 17 + .../r/styles/base-maia/carousel-size.json | 17 + .../r/styles/base-maia/carousel-spacing.json | 17 + .../public/r/styles/base-maia/carousel.json | 2 +- .../styles/base-maia/chart-bar-demo-axis.json | 16 + .../styles/base-maia/chart-bar-demo-grid.json | 16 + .../base-maia/chart-bar-demo-legend.json | 16 + .../base-maia/chart-bar-demo-tooltip.json | 16 + .../r/styles/base-maia/chart-bar-demo.json | 16 + .../r/styles/base-maia/chart-example.json | 2 +- apps/v4/public/r/styles/base-maia/chart.json | 2 +- .../v4/public/r/styles/base-maia/chatgpt.json | 2 +- .../r/styles/base-maia/checkbox-demo.json | 17 + .../r/styles/base-maia/checkbox-disabled.json | 16 + .../r/styles/base-maia/checkbox-example.json | 2 +- .../styles/base-maia/checkbox-with-text.json | 16 + .../public/r/styles/base-maia/checkbox.json | 2 +- .../r/styles/base-maia/collapsible-demo.json | 17 + .../styles/base-maia/collapsible-example.json | 2 +- .../r/styles/base-maia/combobox-demo.json | 18 + .../base-maia/combobox-dropdown-menu.json | 18 + .../r/styles/base-maia/combobox-example.json | 2 +- .../r/styles/base-maia/combobox-popover.json | 18 + .../styles/base-maia/combobox-responsive.json | 6 +- .../public/r/styles/base-maia/combobox.json | 2 +- .../r/styles/base-maia/command-demo.json | 16 + .../r/styles/base-maia/command-dialog.json | 16 + .../r/styles/base-maia/command-example.json | 2 +- .../v4/public/r/styles/base-maia/command.json | 2 +- .../r/styles/base-maia/component-example.json | 2 +- .../r/styles/base-maia/context-menu-demo.json | 16 + .../base-maia/context-menu-example.json | 2 +- .../r/styles/base-maia/context-menu.json | 2 +- .../r/styles/base-maia/data-table-demo.json | 20 + .../r/styles/base-maia/date-picker-demo.json | 18 + .../base-maia/date-picker-with-presets.json | 19 + .../base-maia/date-picker-with-range.json | 18 + .../styles/base-maia/dialog-close-button.json | 19 + .../r/styles/base-maia/dialog-demo.json | 19 + .../r/styles/base-maia/dialog-example.json | 2 +- apps/v4/public/r/styles/base-maia/dialog.json | 2 +- .../r/styles/base-maia/drawer-demo.json | 17 + .../r/styles/base-maia/drawer-dialog.json | 20 + .../r/styles/base-maia/drawer-example.json | 2 +- apps/v4/public/r/styles/base-maia/drawer.json | 2 +- .../base-maia/dropdown-menu-checkboxes.json | 17 + .../styles/base-maia/dropdown-menu-demo.json | 17 + .../base-maia/dropdown-menu-dialog.json | 22 + .../base-maia/dropdown-menu-example.json | 2 +- .../base-maia/dropdown-menu-radio-group.json | 17 + .../r/styles/base-maia/dropdown-menu.json | 2 +- .../public/r/styles/base-maia/elevenlabs.json | 2 +- .../styles/base-maia/empty-avatar-group.json | 18 + .../r/styles/base-maia/empty-avatar.json | 18 + .../r/styles/base-maia/empty-background.json | 17 + .../public/r/styles/base-maia/empty-demo.json | 17 + .../r/styles/base-maia/empty-example.json | 2 +- .../public/r/styles/base-maia/empty-icon.json | 16 + .../r/styles/base-maia/empty-input-group.json | 18 + .../r/styles/base-maia/empty-outline.json | 17 + apps/v4/public/r/styles/base-maia/empty.json | 2 +- .../v4/public/r/styles/base-maia/example.json | 2 +- .../r/styles/base-maia/field-checkbox.json | 17 + .../r/styles/base-maia/field-choice-card.json | 17 + .../public/r/styles/base-maia/field-demo.json | 21 + .../r/styles/base-maia/field-example.json | 2 +- .../r/styles/base-maia/field-fieldset.json | 17 + .../r/styles/base-maia/field-group.json | 17 + .../r/styles/base-maia/field-input.json | 17 + .../r/styles/base-maia/field-radio.json | 17 + .../r/styles/base-maia/field-responsive.json | 19 + .../r/styles/base-maia/field-select.json | 17 + .../r/styles/base-maia/field-slider.json | 17 + .../r/styles/base-maia/field-switch.json | 17 + .../r/styles/base-maia/field-textarea.json | 17 + apps/v4/public/r/styles/base-maia/field.json | 2 +- apps/v4/public/r/styles/base-maia/github.json | 2 +- .../r/styles/base-maia/hover-card-demo.json | 18 + .../styles/base-maia/hover-card-example.json | 2 +- .../public/r/styles/base-maia/hover-card.json | 2 +- .../public/r/styles/base-maia/input-demo.json | 16 + .../r/styles/base-maia/input-disabled.json | 16 + .../r/styles/base-maia/input-example.json | 2 +- .../public/r/styles/base-maia/input-file.json | 17 + .../base-maia/input-group-button-group.json | 18 + .../styles/base-maia/input-group-button.json | 17 + .../styles/base-maia/input-group-custom.json | 16 + .../r/styles/base-maia/input-group-demo.json | 19 + .../base-maia/input-group-dropdown.json | 17 + .../styles/base-maia/input-group-example.json | 2 +- .../r/styles/base-maia/input-group-icon.json | 16 + .../r/styles/base-maia/input-group-label.json | 18 + .../styles/base-maia/input-group-spinner.json | 17 + .../r/styles/base-maia/input-group-text.json | 16 + .../base-maia/input-group-textarea.json | 16 + .../styles/base-maia/input-group-tooltip.json | 17 + .../r/styles/base-maia/input-group.json | 2 +- .../base-maia/input-otp-controlled.json | 16 + .../r/styles/base-maia/input-otp-demo.json | 16 + .../r/styles/base-maia/input-otp-example.json | 2 +- .../r/styles/base-maia/input-otp-pattern.json | 16 + .../styles/base-maia/input-otp-separator.json | 16 + .../public/r/styles/base-maia/input-otp.json | 2 +- .../r/styles/base-maia/input-with-button.json | 17 + .../r/styles/base-maia/input-with-label.json | 17 + .../r/styles/base-maia/input-with-text.json | 17 + apps/v4/public/r/styles/base-maia/input.json | 2 +- .../r/styles/base-maia/item-avatar.json | 18 + .../public/r/styles/base-maia/item-demo.json | 17 + .../r/styles/base-maia/item-dropdown.json | 19 + .../r/styles/base-maia/item-example.json | 2 +- .../public/r/styles/base-maia/item-group.json | 18 + .../r/styles/base-maia/item-header.json | 16 + .../public/r/styles/base-maia/item-icon.json | 17 + .../public/r/styles/base-maia/item-image.json | 16 + .../public/r/styles/base-maia/item-link.json | 16 + .../public/r/styles/base-maia/item-size.json | 17 + .../r/styles/base-maia/item-variant.json | 17 + apps/v4/public/r/styles/base-maia/item.json | 2 +- .../public/r/styles/base-maia/kbd-button.json | 17 + .../public/r/styles/base-maia/kbd-demo.json | 16 + .../r/styles/base-maia/kbd-example.json | 2 +- .../public/r/styles/base-maia/kbd-group.json | 16 + .../r/styles/base-maia/kbd-input-group.json | 17 + .../r/styles/base-maia/kbd-tooltip.json | 19 + apps/v4/public/r/styles/base-maia/kbd.json | 2 +- .../public/r/styles/base-maia/label-demo.json | 17 + .../r/styles/base-maia/label-example.json | 2 +- apps/v4/public/r/styles/base-maia/label.json | 2 +- .../r/styles/base-maia/menubar-demo.json | 16 + .../r/styles/base-maia/menubar-example.json | 2 +- .../v4/public/r/styles/base-maia/menubar.json | 2 +- .../styles/base-maia/native-select-demo.json | 16 + .../base-maia/native-select-disabled.json | 16 + .../base-maia/native-select-example.json | 2 +- .../base-maia/native-select-groups.json | 16 + .../base-maia/native-select-invalid.json | 16 + .../r/styles/base-maia/native-select.json | 2 +- .../base-maia/navigation-menu-demo.json | 16 + .../base-maia/navigation-menu-example.json | 2 +- .../r/styles/base-maia/navigation-menu.json | 2 +- .../r/styles/base-maia/pagination-demo.json | 16 + .../styles/base-maia/pagination-example.json | 2 +- .../public/r/styles/base-maia/pagination.json | 2 +- .../r/styles/base-maia/popover-demo.json | 19 + .../r/styles/base-maia/popover-example.json | 2 +- .../v4/public/r/styles/base-maia/popover.json | 2 +- .../v4/public/r/styles/base-maia/preview.json | 2 +- .../r/styles/base-maia/progress-demo.json | 16 + .../r/styles/base-maia/progress-example.json | 2 +- .../public/r/styles/base-maia/progress.json | 2 +- .../r/styles/base-maia/radio-group-demo.json | 6 +- .../styles/base-maia/radio-group-example.json | 2 +- .../r/styles/base-maia/radio-group.json | 2 +- .../public/r/styles/base-maia/registry.json | 2964 +++- .../base-maia/resizable-demo-with-handle.json | 16 + .../r/styles/base-maia/resizable-demo.json | 16 + .../r/styles/base-maia/resizable-example.json | 2 +- .../r/styles/base-maia/resizable-handle.json | 16 + .../styles/base-maia/resizable-vertical.json | 16 + .../public/r/styles/base-maia/resizable.json | 2 +- .../r/styles/base-maia/scroll-area-demo.json | 17 + .../styles/base-maia/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/base-maia/scroll-area.json | 2 +- .../r/styles/base-maia/select-demo.json | 16 + .../r/styles/base-maia/select-example.json | 2 +- .../r/styles/base-maia/select-scrollable.json | 16 + apps/v4/public/r/styles/base-maia/select.json | 2 +- .../r/styles/base-maia/separator-demo.json | 2 +- .../r/styles/base-maia/separator-example.json | 2 +- .../public/r/styles/base-maia/separator.json | 2 +- .../public/r/styles/base-maia/sheet-demo.json | 6 +- .../r/styles/base-maia/sheet-example.json | 2 +- .../public/r/styles/base-maia/sheet-side.json | 6 +- apps/v4/public/r/styles/base-maia/sheet.json | 2 +- .../r/styles/base-maia/sidebar-example.json | 2 +- .../base-maia/sidebar-floating-example.json | 2 +- .../base-maia/sidebar-icon-example.json | 2 +- .../base-maia/sidebar-inset-example.json | 2 +- .../v4/public/r/styles/base-maia/sidebar.json | 2 +- apps/v4/public/r/styles/base-maia/sink.json | 2 +- .../r/styles/base-maia/skeleton-card.json | 16 + .../r/styles/base-maia/skeleton-demo.json | 16 + .../r/styles/base-maia/skeleton-example.json | 2 +- .../public/r/styles/base-maia/skeleton.json | 2 +- .../r/styles/base-maia/slider-demo.json | 16 + .../r/styles/base-maia/slider-example.json | 2 +- apps/v4/public/r/styles/base-maia/slider.json | 2 +- .../r/styles/base-maia/sonner-demo.json | 16 + .../r/styles/base-maia/sonner-example.json | 2 +- .../r/styles/base-maia/sonner-types.json | 16 + .../r/styles/base-maia/spinner-badge.json | 17 + .../r/styles/base-maia/spinner-basic.json | 16 + .../r/styles/base-maia/spinner-button.json | 17 + .../r/styles/base-maia/spinner-color.json | 16 + .../r/styles/base-maia/spinner-custom.json | 14 + .../r/styles/base-maia/spinner-demo.json | 17 + .../r/styles/base-maia/spinner-empty.json | 18 + .../r/styles/base-maia/spinner-example.json | 2 +- .../styles/base-maia/spinner-input-group.json | 17 + .../r/styles/base-maia/spinner-item.json | 19 + .../r/styles/base-maia/spinner-size.json | 16 + .../v4/public/r/styles/base-maia/spinner.json | 2 +- .../r/styles/base-maia/switch-demo.json | 17 + .../r/styles/base-maia/switch-example.json | 2 +- apps/v4/public/r/styles/base-maia/switch.json | 2 +- .../public/r/styles/base-maia/table-demo.json | 16 + .../r/styles/base-maia/table-example.json | 2 +- apps/v4/public/r/styles/base-maia/table.json | 2 +- .../public/r/styles/base-maia/tabs-demo.json | 20 + .../r/styles/base-maia/tabs-example.json | 2 +- apps/v4/public/r/styles/base-maia/tabs.json | 2 +- .../r/styles/base-maia/textarea-demo.json | 2 +- .../r/styles/base-maia/textarea-disabled.json | 2 +- .../r/styles/base-maia/textarea-example.json | 2 +- .../base-maia/textarea-with-button.json | 6 +- .../styles/base-maia/textarea-with-label.json | 6 +- .../styles/base-maia/textarea-with-text.json | 6 +- .../public/r/styles/base-maia/textarea.json | 2 +- .../r/styles/base-maia/toggle-demo.json | 16 + .../r/styles/base-maia/toggle-disabled.json | 16 + .../r/styles/base-maia/toggle-example.json | 2 +- .../r/styles/base-maia/toggle-group-demo.json | 16 + .../base-maia/toggle-group-disabled.json | 16 + .../base-maia/toggle-group-example.json | 2 +- .../r/styles/base-maia/toggle-group-lg.json | 16 + .../base-maia/toggle-group-outline.json | 16 + .../styles/base-maia/toggle-group-single.json | 16 + .../r/styles/base-maia/toggle-group-sm.json | 16 + .../base-maia/toggle-group-spacing.json | 16 + .../r/styles/base-maia/toggle-group.json | 2 +- .../public/r/styles/base-maia/toggle-lg.json | 16 + .../r/styles/base-maia/toggle-outline.json | 16 + .../public/r/styles/base-maia/toggle-sm.json | 16 + .../r/styles/base-maia/toggle-with-text.json | 16 + apps/v4/public/r/styles/base-maia/toggle.json | 2 +- .../r/styles/base-maia/tooltip-demo.json | 17 + .../r/styles/base-maia/tooltip-example.json | 2 +- .../v4/public/r/styles/base-maia/tooltip.json | 2 +- .../base-maia/typography-blockquote.json | 14 + .../r/styles/base-maia/typography-demo.json | 14 + .../r/styles/base-maia/typography-h1.json | 14 + .../r/styles/base-maia/typography-h2.json | 14 + .../r/styles/base-maia/typography-h3.json | 14 + .../r/styles/base-maia/typography-h4.json | 14 + .../base-maia/typography-inline-code.json | 14 + .../r/styles/base-maia/typography-large.json | 14 + .../r/styles/base-maia/typography-lead.json | 14 + .../r/styles/base-maia/typography-list.json | 14 + .../r/styles/base-maia/typography-muted.json | 14 + .../r/styles/base-maia/typography-p.json | 14 + .../r/styles/base-maia/typography-small.json | 14 + .../r/styles/base-maia/typography-table.json | 14 + apps/v4/public/r/styles/base-maia/vercel.json | 2 +- .../r/styles/base-mira/accordion-demo.json | 2 +- .../styles/base-mira/accordion-disabled.json | 2 +- .../r/styles/base-mira/accordion-example.json | 2 +- .../styles/base-mira/accordion-multiple.json | 2 +- .../public/r/styles/base-mira/accordion.json | 2 +- .../public/r/styles/base-mira/alert-demo.json | 16 + .../r/styles/base-mira/alert-destructive.json | 16 + .../r/styles/base-mira/alert-dialog-demo.json | 17 + .../base-mira/alert-dialog-example.json | 2 +- .../r/styles/base-mira/alert-dialog.json | 2 +- .../r/styles/base-mira/alert-example.json | 2 +- apps/v4/public/r/styles/base-mira/alert.json | 2 +- .../r/styles/base-mira/aspect-ratio-demo.json | 16 + .../base-mira/aspect-ratio-example.json | 2 +- .../r/styles/base-mira/aspect-ratio.json | 2 +- .../r/styles/base-mira/avatar-demo.json | 16 + .../r/styles/base-mira/avatar-example.json | 2 +- apps/v4/public/r/styles/base-mira/avatar.json | 2 +- .../public/r/styles/base-mira/badge-demo.json | 16 + .../r/styles/base-mira/badge-destructive.json | 16 + .../r/styles/base-mira/badge-example.json | 2 +- .../r/styles/base-mira/badge-outline.json | 16 + .../r/styles/base-mira/badge-secondary.json | 16 + apps/v4/public/r/styles/base-mira/badge.json | 2 +- .../r/styles/base-mira/breadcrumb-demo.json | 17 + .../styles/base-mira/breadcrumb-dropdown.json | 17 + .../styles/base-mira/breadcrumb-ellipsis.json | 16 + .../styles/base-mira/breadcrumb-example.json | 2 +- .../r/styles/base-mira/breadcrumb-link.json | 16 + .../base-mira/breadcrumb-responsive.json | 19 + .../base-mira/breadcrumb-separator.json | 16 + .../public/r/styles/base-mira/breadcrumb.json | 2 +- .../r/styles/base-mira/button-as-child.json | 16 + .../r/styles/base-mira/button-default.json | 16 + .../r/styles/base-mira/button-demo.json | 16 + .../styles/base-mira/button-destructive.json | 16 + .../r/styles/base-mira/button-example.json | 2 +- .../r/styles/base-mira/button-ghost.json | 16 + .../r/styles/base-mira/button-group-demo.json | 18 + .../base-mira/button-group-dropdown.json | 18 + .../base-mira/button-group-example.json | 2 +- .../base-mira/button-group-input-group.json | 19 + .../styles/base-mira/button-group-input.json | 18 + .../styles/base-mira/button-group-nested.json | 17 + .../base-mira/button-group-orientation.json | 17 + .../base-mira/button-group-popover.json | 20 + .../styles/base-mira/button-group-select.json | 19 + .../base-mira/button-group-separator.json | 17 + .../r/styles/base-mira/button-group-size.json | 17 + .../styles/base-mira/button-group-split.json | 17 + .../r/styles/base-mira/button-group.json | 2 +- .../r/styles/base-mira/button-icon.json | 16 + .../r/styles/base-mira/button-link.json | 16 + .../r/styles/base-mira/button-loading.json | 17 + .../r/styles/base-mira/button-outline.json | 16 + .../r/styles/base-mira/button-rounded.json | 16 + .../r/styles/base-mira/button-secondary.json | 16 + .../r/styles/base-mira/button-size.json | 16 + .../r/styles/base-mira/button-with-icon.json | 16 + apps/v4/public/r/styles/base-mira/button.json | 2 +- .../r/styles/base-mira/calendar-demo.json | 16 + .../r/styles/base-mira/calendar-example.json | 2 +- .../r/styles/base-mira/calendar-hijri.json | 16 + .../public/r/styles/base-mira/calendar.json | 2 +- .../public/r/styles/base-mira/card-demo.json | 19 + .../r/styles/base-mira/card-example.json | 2 +- apps/v4/public/r/styles/base-mira/card.json | 2 +- .../r/styles/base-mira/carousel-api.json | 17 + .../r/styles/base-mira/carousel-demo.json | 17 + .../r/styles/base-mira/carousel-example.json | 2 +- .../base-mira/carousel-orientation.json | 17 + .../r/styles/base-mira/carousel-plugin.json | 17 + .../r/styles/base-mira/carousel-size.json | 17 + .../r/styles/base-mira/carousel-spacing.json | 17 + .../public/r/styles/base-mira/carousel.json | 2 +- .../styles/base-mira/chart-bar-demo-axis.json | 16 + .../styles/base-mira/chart-bar-demo-grid.json | 16 + .../base-mira/chart-bar-demo-legend.json | 16 + .../base-mira/chart-bar-demo-tooltip.json | 16 + .../r/styles/base-mira/chart-bar-demo.json | 16 + .../r/styles/base-mira/chart-example.json | 2 +- apps/v4/public/r/styles/base-mira/chart.json | 2 +- .../v4/public/r/styles/base-mira/chatgpt.json | 2 +- .../r/styles/base-mira/checkbox-demo.json | 17 + .../r/styles/base-mira/checkbox-disabled.json | 16 + .../r/styles/base-mira/checkbox-example.json | 2 +- .../styles/base-mira/checkbox-with-text.json | 16 + .../public/r/styles/base-mira/checkbox.json | 2 +- .../r/styles/base-mira/collapsible-demo.json | 17 + .../styles/base-mira/collapsible-example.json | 2 +- .../r/styles/base-mira/combobox-demo.json | 18 + .../base-mira/combobox-dropdown-menu.json | 18 + .../r/styles/base-mira/combobox-example.json | 2 +- .../r/styles/base-mira/combobox-popover.json | 18 + .../styles/base-mira/combobox-responsive.json | 6 +- .../public/r/styles/base-mira/combobox.json | 2 +- .../r/styles/base-mira/command-demo.json | 16 + .../r/styles/base-mira/command-dialog.json | 16 + .../r/styles/base-mira/command-example.json | 2 +- .../v4/public/r/styles/base-mira/command.json | 2 +- .../r/styles/base-mira/component-example.json | 2 +- .../r/styles/base-mira/context-menu-demo.json | 16 + .../base-mira/context-menu-example.json | 2 +- .../r/styles/base-mira/context-menu.json | 2 +- .../r/styles/base-mira/data-table-demo.json | 20 + .../r/styles/base-mira/date-picker-demo.json | 18 + .../base-mira/date-picker-with-presets.json | 19 + .../base-mira/date-picker-with-range.json | 18 + .../styles/base-mira/dialog-close-button.json | 19 + .../r/styles/base-mira/dialog-demo.json | 19 + .../r/styles/base-mira/dialog-example.json | 2 +- apps/v4/public/r/styles/base-mira/dialog.json | 2 +- .../r/styles/base-mira/drawer-demo.json | 17 + .../r/styles/base-mira/drawer-dialog.json | 20 + .../r/styles/base-mira/drawer-example.json | 2 +- apps/v4/public/r/styles/base-mira/drawer.json | 2 +- .../base-mira/dropdown-menu-checkboxes.json | 17 + .../styles/base-mira/dropdown-menu-demo.json | 17 + .../base-mira/dropdown-menu-dialog.json | 22 + .../base-mira/dropdown-menu-example.json | 2 +- .../base-mira/dropdown-menu-radio-group.json | 17 + .../r/styles/base-mira/dropdown-menu.json | 2 +- .../public/r/styles/base-mira/elevenlabs.json | 2 +- .../styles/base-mira/empty-avatar-group.json | 18 + .../r/styles/base-mira/empty-avatar.json | 18 + .../r/styles/base-mira/empty-background.json | 17 + .../public/r/styles/base-mira/empty-demo.json | 17 + .../r/styles/base-mira/empty-example.json | 2 +- .../public/r/styles/base-mira/empty-icon.json | 16 + .../r/styles/base-mira/empty-input-group.json | 18 + .../r/styles/base-mira/empty-outline.json | 17 + apps/v4/public/r/styles/base-mira/empty.json | 2 +- .../v4/public/r/styles/base-mira/example.json | 2 +- .../r/styles/base-mira/field-checkbox.json | 17 + .../r/styles/base-mira/field-choice-card.json | 17 + .../public/r/styles/base-mira/field-demo.json | 21 + .../r/styles/base-mira/field-example.json | 2 +- .../r/styles/base-mira/field-fieldset.json | 17 + .../r/styles/base-mira/field-group.json | 17 + .../r/styles/base-mira/field-input.json | 17 + .../r/styles/base-mira/field-radio.json | 17 + .../r/styles/base-mira/field-responsive.json | 19 + .../r/styles/base-mira/field-select.json | 17 + .../r/styles/base-mira/field-slider.json | 17 + .../r/styles/base-mira/field-switch.json | 17 + .../r/styles/base-mira/field-textarea.json | 17 + apps/v4/public/r/styles/base-mira/field.json | 2 +- apps/v4/public/r/styles/base-mira/github.json | 2 +- .../r/styles/base-mira/hover-card-demo.json | 18 + .../styles/base-mira/hover-card-example.json | 2 +- .../public/r/styles/base-mira/hover-card.json | 2 +- .../public/r/styles/base-mira/input-demo.json | 16 + .../r/styles/base-mira/input-disabled.json | 16 + .../r/styles/base-mira/input-example.json | 2 +- .../public/r/styles/base-mira/input-file.json | 17 + .../base-mira/input-group-button-group.json | 18 + .../styles/base-mira/input-group-button.json | 17 + .../styles/base-mira/input-group-custom.json | 16 + .../r/styles/base-mira/input-group-demo.json | 19 + .../base-mira/input-group-dropdown.json | 17 + .../styles/base-mira/input-group-example.json | 2 +- .../r/styles/base-mira/input-group-icon.json | 16 + .../r/styles/base-mira/input-group-label.json | 18 + .../styles/base-mira/input-group-spinner.json | 17 + .../r/styles/base-mira/input-group-text.json | 16 + .../base-mira/input-group-textarea.json | 16 + .../styles/base-mira/input-group-tooltip.json | 17 + .../r/styles/base-mira/input-group.json | 2 +- .../base-mira/input-otp-controlled.json | 16 + .../r/styles/base-mira/input-otp-demo.json | 16 + .../r/styles/base-mira/input-otp-example.json | 2 +- .../r/styles/base-mira/input-otp-pattern.json | 16 + .../styles/base-mira/input-otp-separator.json | 16 + .../public/r/styles/base-mira/input-otp.json | 2 +- .../r/styles/base-mira/input-with-button.json | 17 + .../r/styles/base-mira/input-with-label.json | 17 + .../r/styles/base-mira/input-with-text.json | 17 + apps/v4/public/r/styles/base-mira/input.json | 2 +- .../r/styles/base-mira/item-avatar.json | 18 + .../public/r/styles/base-mira/item-demo.json | 17 + .../r/styles/base-mira/item-dropdown.json | 19 + .../r/styles/base-mira/item-example.json | 2 +- .../public/r/styles/base-mira/item-group.json | 18 + .../r/styles/base-mira/item-header.json | 16 + .../public/r/styles/base-mira/item-icon.json | 17 + .../public/r/styles/base-mira/item-image.json | 16 + .../public/r/styles/base-mira/item-link.json | 16 + .../public/r/styles/base-mira/item-size.json | 17 + .../r/styles/base-mira/item-variant.json | 17 + apps/v4/public/r/styles/base-mira/item.json | 2 +- .../public/r/styles/base-mira/kbd-button.json | 17 + .../public/r/styles/base-mira/kbd-demo.json | 16 + .../r/styles/base-mira/kbd-example.json | 2 +- .../public/r/styles/base-mira/kbd-group.json | 16 + .../r/styles/base-mira/kbd-input-group.json | 17 + .../r/styles/base-mira/kbd-tooltip.json | 19 + apps/v4/public/r/styles/base-mira/kbd.json | 2 +- .../public/r/styles/base-mira/label-demo.json | 17 + .../r/styles/base-mira/label-example.json | 2 +- apps/v4/public/r/styles/base-mira/label.json | 2 +- .../r/styles/base-mira/menubar-demo.json | 16 + .../r/styles/base-mira/menubar-example.json | 2 +- .../v4/public/r/styles/base-mira/menubar.json | 2 +- .../styles/base-mira/native-select-demo.json | 16 + .../base-mira/native-select-disabled.json | 16 + .../base-mira/native-select-example.json | 2 +- .../base-mira/native-select-groups.json | 16 + .../base-mira/native-select-invalid.json | 16 + .../r/styles/base-mira/native-select.json | 2 +- .../base-mira/navigation-menu-demo.json | 16 + .../base-mira/navigation-menu-example.json | 2 +- .../r/styles/base-mira/navigation-menu.json | 2 +- .../r/styles/base-mira/pagination-demo.json | 16 + .../styles/base-mira/pagination-example.json | 2 +- .../public/r/styles/base-mira/pagination.json | 2 +- .../r/styles/base-mira/popover-demo.json | 19 + .../r/styles/base-mira/popover-example.json | 2 +- .../v4/public/r/styles/base-mira/popover.json | 2 +- .../v4/public/r/styles/base-mira/preview.json | 2 +- .../r/styles/base-mira/progress-demo.json | 16 + .../r/styles/base-mira/progress-example.json | 2 +- .../public/r/styles/base-mira/progress.json | 2 +- .../r/styles/base-mira/radio-group-demo.json | 6 +- .../styles/base-mira/radio-group-example.json | 2 +- .../r/styles/base-mira/radio-group.json | 2 +- .../public/r/styles/base-mira/registry.json | 2964 +++- .../base-mira/resizable-demo-with-handle.json | 16 + .../r/styles/base-mira/resizable-demo.json | 16 + .../r/styles/base-mira/resizable-example.json | 2 +- .../r/styles/base-mira/resizable-handle.json | 16 + .../styles/base-mira/resizable-vertical.json | 16 + .../public/r/styles/base-mira/resizable.json | 2 +- .../r/styles/base-mira/scroll-area-demo.json | 17 + .../styles/base-mira/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/base-mira/scroll-area.json | 2 +- .../r/styles/base-mira/select-demo.json | 16 + .../r/styles/base-mira/select-example.json | 2 +- .../r/styles/base-mira/select-scrollable.json | 16 + apps/v4/public/r/styles/base-mira/select.json | 2 +- .../r/styles/base-mira/separator-demo.json | 2 +- .../r/styles/base-mira/separator-example.json | 2 +- .../public/r/styles/base-mira/separator.json | 2 +- .../public/r/styles/base-mira/sheet-demo.json | 6 +- .../r/styles/base-mira/sheet-example.json | 2 +- .../public/r/styles/base-mira/sheet-side.json | 6 +- apps/v4/public/r/styles/base-mira/sheet.json | 2 +- .../r/styles/base-mira/sidebar-example.json | 2 +- .../base-mira/sidebar-floating-example.json | 2 +- .../base-mira/sidebar-icon-example.json | 2 +- .../base-mira/sidebar-inset-example.json | 2 +- .../v4/public/r/styles/base-mira/sidebar.json | 2 +- apps/v4/public/r/styles/base-mira/sink.json | 2 +- .../r/styles/base-mira/skeleton-card.json | 16 + .../r/styles/base-mira/skeleton-demo.json | 16 + .../r/styles/base-mira/skeleton-example.json | 2 +- .../public/r/styles/base-mira/skeleton.json | 2 +- .../r/styles/base-mira/slider-demo.json | 16 + .../r/styles/base-mira/slider-example.json | 2 +- apps/v4/public/r/styles/base-mira/slider.json | 2 +- .../r/styles/base-mira/sonner-demo.json | 16 + .../r/styles/base-mira/sonner-example.json | 2 +- .../r/styles/base-mira/sonner-types.json | 16 + .../r/styles/base-mira/spinner-badge.json | 17 + .../r/styles/base-mira/spinner-basic.json | 16 + .../r/styles/base-mira/spinner-button.json | 17 + .../r/styles/base-mira/spinner-color.json | 16 + .../r/styles/base-mira/spinner-custom.json | 14 + .../r/styles/base-mira/spinner-demo.json | 17 + .../r/styles/base-mira/spinner-empty.json | 18 + .../r/styles/base-mira/spinner-example.json | 2 +- .../styles/base-mira/spinner-input-group.json | 17 + .../r/styles/base-mira/spinner-item.json | 19 + .../r/styles/base-mira/spinner-size.json | 16 + .../v4/public/r/styles/base-mira/spinner.json | 2 +- .../r/styles/base-mira/switch-demo.json | 17 + .../r/styles/base-mira/switch-example.json | 2 +- apps/v4/public/r/styles/base-mira/switch.json | 2 +- .../public/r/styles/base-mira/table-demo.json | 16 + .../r/styles/base-mira/table-example.json | 2 +- apps/v4/public/r/styles/base-mira/table.json | 2 +- .../public/r/styles/base-mira/tabs-demo.json | 20 + .../r/styles/base-mira/tabs-example.json | 2 +- apps/v4/public/r/styles/base-mira/tabs.json | 2 +- .../r/styles/base-mira/textarea-demo.json | 2 +- .../r/styles/base-mira/textarea-disabled.json | 2 +- .../r/styles/base-mira/textarea-example.json | 2 +- .../base-mira/textarea-with-button.json | 6 +- .../styles/base-mira/textarea-with-label.json | 6 +- .../styles/base-mira/textarea-with-text.json | 6 +- .../public/r/styles/base-mira/textarea.json | 2 +- .../r/styles/base-mira/toggle-demo.json | 16 + .../r/styles/base-mira/toggle-disabled.json | 16 + .../r/styles/base-mira/toggle-example.json | 2 +- .../r/styles/base-mira/toggle-group-demo.json | 16 + .../base-mira/toggle-group-disabled.json | 16 + .../base-mira/toggle-group-example.json | 2 +- .../r/styles/base-mira/toggle-group-lg.json | 16 + .../base-mira/toggle-group-outline.json | 16 + .../styles/base-mira/toggle-group-single.json | 16 + .../r/styles/base-mira/toggle-group-sm.json | 16 + .../base-mira/toggle-group-spacing.json | 16 + .../r/styles/base-mira/toggle-group.json | 2 +- .../public/r/styles/base-mira/toggle-lg.json | 16 + .../r/styles/base-mira/toggle-outline.json | 16 + .../public/r/styles/base-mira/toggle-sm.json | 16 + .../r/styles/base-mira/toggle-with-text.json | 16 + apps/v4/public/r/styles/base-mira/toggle.json | 2 +- .../r/styles/base-mira/tooltip-demo.json | 17 + .../r/styles/base-mira/tooltip-example.json | 2 +- .../v4/public/r/styles/base-mira/tooltip.json | 2 +- .../base-mira/typography-blockquote.json | 14 + .../r/styles/base-mira/typography-demo.json | 14 + .../r/styles/base-mira/typography-h1.json | 14 + .../r/styles/base-mira/typography-h2.json | 14 + .../r/styles/base-mira/typography-h3.json | 14 + .../r/styles/base-mira/typography-h4.json | 14 + .../base-mira/typography-inline-code.json | 14 + .../r/styles/base-mira/typography-large.json | 14 + .../r/styles/base-mira/typography-lead.json | 14 + .../r/styles/base-mira/typography-list.json | 14 + .../r/styles/base-mira/typography-muted.json | 14 + .../r/styles/base-mira/typography-p.json | 14 + .../r/styles/base-mira/typography-small.json | 14 + .../r/styles/base-mira/typography-table.json | 14 + apps/v4/public/r/styles/base-mira/vercel.json | 2 +- .../public/r/styles/base-nova/Elevenlabs.json | 2 +- .../r/styles/base-nova/accordion-example.json | 2 +- .../public/r/styles/base-nova/accordion.json | 2 +- .../public/r/styles/base-nova/alert-demo.json | 16 + .../r/styles/base-nova/alert-destructive.json | 16 + .../r/styles/base-nova/alert-dialog-demo.json | 17 + .../base-nova/alert-dialog-example.json | 2 +- .../r/styles/base-nova/alert-dialog.json | 2 +- .../r/styles/base-nova/alert-example.json | 2 +- apps/v4/public/r/styles/base-nova/alert.json | 2 +- .../r/styles/base-nova/aspect-ratio-demo.json | 16 + .../base-nova/aspect-ratio-example.json | 2 +- .../r/styles/base-nova/aspect-ratio.json | 2 +- .../r/styles/base-nova/avatar-demo.json | 16 + .../r/styles/base-nova/avatar-example.json | 2 +- apps/v4/public/r/styles/base-nova/avatar.json | 2 +- .../public/r/styles/base-nova/badge-demo.json | 16 + .../r/styles/base-nova/badge-destructive.json | 16 + .../r/styles/base-nova/badge-example.json | 2 +- .../r/styles/base-nova/badge-outline.json | 16 + .../r/styles/base-nova/badge-secondary.json | 16 + apps/v4/public/r/styles/base-nova/badge.json | 2 +- .../r/styles/base-nova/breadcrumb-demo.json | 17 + .../styles/base-nova/breadcrumb-dropdown.json | 17 + .../styles/base-nova/breadcrumb-ellipsis.json | 16 + .../styles/base-nova/breadcrumb-example.json | 2 +- .../r/styles/base-nova/breadcrumb-link.json | 16 + .../base-nova/breadcrumb-responsive.json | 19 + .../base-nova/breadcrumb-separator.json | 16 + .../public/r/styles/base-nova/breadcrumb.json | 2 +- .../r/styles/base-nova/button-as-child.json | 16 + .../r/styles/base-nova/button-default.json | 16 + .../r/styles/base-nova/button-demo.json | 16 + .../styles/base-nova/button-destructive.json | 16 + .../r/styles/base-nova/button-example.json | 2 +- .../r/styles/base-nova/button-ghost.json | 16 + .../r/styles/base-nova/button-group-demo.json | 18 + .../base-nova/button-group-dropdown.json | 18 + .../base-nova/button-group-example.json | 2 +- .../base-nova/button-group-input-group.json | 19 + .../styles/base-nova/button-group-input.json | 18 + .../styles/base-nova/button-group-nested.json | 17 + .../base-nova/button-group-orientation.json | 17 + .../base-nova/button-group-popover.json | 20 + .../styles/base-nova/button-group-select.json | 19 + .../base-nova/button-group-separator.json | 17 + .../r/styles/base-nova/button-group-size.json | 17 + .../styles/base-nova/button-group-split.json | 17 + .../r/styles/base-nova/button-group.json | 2 +- .../r/styles/base-nova/button-icon.json | 16 + .../r/styles/base-nova/button-link.json | 16 + .../r/styles/base-nova/button-loading.json | 17 + .../r/styles/base-nova/button-outline.json | 16 + .../r/styles/base-nova/button-rounded.json | 16 + .../r/styles/base-nova/button-secondary.json | 16 + .../r/styles/base-nova/button-size.json | 16 + .../r/styles/base-nova/button-with-icon.json | 16 + apps/v4/public/r/styles/base-nova/button.json | 2 +- .../r/styles/base-nova/calendar-demo.json | 16 + .../r/styles/base-nova/calendar-example.json | 2 +- .../r/styles/base-nova/calendar-hijri.json | 16 + .../public/r/styles/base-nova/calendar.json | 2 +- .../public/r/styles/base-nova/card-demo.json | 19 + .../r/styles/base-nova/card-example.json | 2 +- apps/v4/public/r/styles/base-nova/card.json | 2 +- .../r/styles/base-nova/carousel-api.json | 17 + .../r/styles/base-nova/carousel-demo.json | 17 + .../r/styles/base-nova/carousel-example.json | 2 +- .../base-nova/carousel-orientation.json | 17 + .../r/styles/base-nova/carousel-plugin.json | 17 + .../r/styles/base-nova/carousel-size.json | 17 + .../r/styles/base-nova/carousel-spacing.json | 17 + .../public/r/styles/base-nova/carousel.json | 2 +- .../styles/base-nova/chart-bar-demo-axis.json | 16 + .../styles/base-nova/chart-bar-demo-grid.json | 16 + .../base-nova/chart-bar-demo-legend.json | 16 + .../base-nova/chart-bar-demo-tooltip.json | 16 + .../r/styles/base-nova/chart-bar-demo.json | 16 + .../r/styles/base-nova/chart-example.json | 2 +- apps/v4/public/r/styles/base-nova/chart.json | 2 +- .../v4/public/r/styles/base-nova/chatgpt.json | 2 +- .../r/styles/base-nova/checkbox-demo.json | 17 + .../r/styles/base-nova/checkbox-disabled.json | 16 + .../r/styles/base-nova/checkbox-example.json | 2 +- .../styles/base-nova/checkbox-with-text.json | 16 + .../public/r/styles/base-nova/checkbox.json | 2 +- .../r/styles/base-nova/collapsible-demo.json | 17 + .../styles/base-nova/collapsible-example.json | 2 +- .../r/styles/base-nova/combobox-demo.json | 18 + .../base-nova/combobox-dropdown-menu.json | 18 + .../r/styles/base-nova/combobox-example.json | 2 +- .../r/styles/base-nova/combobox-popover.json | 18 + .../styles/base-nova/combobox-responsive.json | 4 +- .../public/r/styles/base-nova/combobox.json | 2 +- .../r/styles/base-nova/command-demo.json | 16 + .../r/styles/base-nova/command-dialog.json | 16 + .../r/styles/base-nova/command-example.json | 2 +- .../v4/public/r/styles/base-nova/command.json | 2 +- .../r/styles/base-nova/component-example.json | 2 +- .../r/styles/base-nova/context-menu-demo.json | 16 + .../base-nova/context-menu-example.json | 2 +- .../r/styles/base-nova/context-menu.json | 2 +- .../r/styles/base-nova/data-table-demo.json | 20 + .../r/styles/base-nova/date-picker-demo.json | 18 + .../base-nova/date-picker-with-presets.json | 19 + .../base-nova/date-picker-with-range.json | 18 + .../styles/base-nova/dialog-close-button.json | 19 + .../r/styles/base-nova/dialog-demo.json | 19 + .../r/styles/base-nova/dialog-example.json | 2 +- apps/v4/public/r/styles/base-nova/dialog.json | 2 +- .../r/styles/base-nova/drawer-demo.json | 17 + .../r/styles/base-nova/drawer-dialog.json | 20 + .../r/styles/base-nova/drawer-example.json | 2 +- apps/v4/public/r/styles/base-nova/drawer.json | 2 +- .../base-nova/dropdown-menu-checkboxes.json | 17 + .../styles/base-nova/dropdown-menu-demo.json | 17 + .../base-nova/dropdown-menu-dialog.json | 22 + .../base-nova/dropdown-menu-example.json | 2 +- .../base-nova/dropdown-menu-radio-group.json | 17 + .../r/styles/base-nova/dropdown-menu.json | 2 +- .../styles/base-nova/empty-avatar-group.json | 18 + .../r/styles/base-nova/empty-avatar.json | 18 + .../r/styles/base-nova/empty-background.json | 17 + .../public/r/styles/base-nova/empty-demo.json | 17 + .../r/styles/base-nova/empty-example.json | 2 +- .../public/r/styles/base-nova/empty-icon.json | 16 + .../r/styles/base-nova/empty-input-group.json | 18 + .../r/styles/base-nova/empty-outline.json | 17 + apps/v4/public/r/styles/base-nova/empty.json | 2 +- .../v4/public/r/styles/base-nova/example.json | 2 +- .../r/styles/base-nova/field-checkbox.json | 17 + .../r/styles/base-nova/field-choice-card.json | 17 + .../public/r/styles/base-nova/field-demo.json | 21 + .../r/styles/base-nova/field-example.json | 2 +- .../r/styles/base-nova/field-fieldset.json | 17 + .../r/styles/base-nova/field-group.json | 17 + .../r/styles/base-nova/field-input.json | 17 + .../r/styles/base-nova/field-radio.json | 17 + .../r/styles/base-nova/field-responsive.json | 19 + .../r/styles/base-nova/field-select.json | 17 + .../r/styles/base-nova/field-slider.json | 17 + .../r/styles/base-nova/field-switch.json | 17 + .../r/styles/base-nova/field-textarea.json | 17 + apps/v4/public/r/styles/base-nova/field.json | 2 +- apps/v4/public/r/styles/base-nova/github.json | 2 +- .../r/styles/base-nova/hover-card-demo.json | 18 + .../styles/base-nova/hover-card-example.json | 2 +- .../public/r/styles/base-nova/hover-card.json | 2 +- .../public/r/styles/base-nova/input-demo.json | 16 + .../r/styles/base-nova/input-disabled.json | 16 + .../r/styles/base-nova/input-example.json | 2 +- .../public/r/styles/base-nova/input-file.json | 17 + .../base-nova/input-group-button-group.json | 18 + .../styles/base-nova/input-group-button.json | 17 + .../styles/base-nova/input-group-custom.json | 16 + .../r/styles/base-nova/input-group-demo.json | 19 + .../base-nova/input-group-dropdown.json | 17 + .../styles/base-nova/input-group-example.json | 2 +- .../r/styles/base-nova/input-group-icon.json | 16 + .../r/styles/base-nova/input-group-label.json | 18 + .../styles/base-nova/input-group-spinner.json | 17 + .../r/styles/base-nova/input-group-text.json | 16 + .../base-nova/input-group-textarea.json | 16 + .../styles/base-nova/input-group-tooltip.json | 17 + .../r/styles/base-nova/input-group.json | 2 +- .../base-nova/input-otp-controlled.json | 16 + .../r/styles/base-nova/input-otp-demo.json | 16 + .../r/styles/base-nova/input-otp-example.json | 2 +- .../r/styles/base-nova/input-otp-pattern.json | 16 + .../styles/base-nova/input-otp-separator.json | 16 + .../public/r/styles/base-nova/input-otp.json | 2 +- .../r/styles/base-nova/input-with-button.json | 17 + .../r/styles/base-nova/input-with-label.json | 17 + .../r/styles/base-nova/input-with-text.json | 17 + apps/v4/public/r/styles/base-nova/input.json | 2 +- .../r/styles/base-nova/item-avatar.json | 18 + .../public/r/styles/base-nova/item-demo.json | 17 + .../r/styles/base-nova/item-dropdown.json | 19 + .../r/styles/base-nova/item-example.json | 2 +- .../public/r/styles/base-nova/item-group.json | 18 + .../r/styles/base-nova/item-header.json | 16 + .../public/r/styles/base-nova/item-icon.json | 17 + .../public/r/styles/base-nova/item-image.json | 16 + .../public/r/styles/base-nova/item-link.json | 16 + .../public/r/styles/base-nova/item-size.json | 17 + .../r/styles/base-nova/item-variant.json | 17 + apps/v4/public/r/styles/base-nova/item.json | 2 +- .../public/r/styles/base-nova/kbd-button.json | 17 + .../public/r/styles/base-nova/kbd-demo.json | 16 + .../r/styles/base-nova/kbd-example.json | 2 +- .../public/r/styles/base-nova/kbd-group.json | 16 + .../r/styles/base-nova/kbd-input-group.json | 17 + .../r/styles/base-nova/kbd-tooltip.json | 19 + apps/v4/public/r/styles/base-nova/kbd.json | 2 +- .../public/r/styles/base-nova/label-demo.json | 17 + .../r/styles/base-nova/label-example.json | 2 +- apps/v4/public/r/styles/base-nova/label.json | 2 +- .../r/styles/base-nova/menubar-demo.json | 16 + .../r/styles/base-nova/menubar-example.json | 2 +- .../v4/public/r/styles/base-nova/menubar.json | 2 +- .../styles/base-nova/native-select-demo.json | 16 + .../base-nova/native-select-disabled.json | 16 + .../base-nova/native-select-example.json | 2 +- .../base-nova/native-select-groups.json | 16 + .../base-nova/native-select-invalid.json | 16 + .../r/styles/base-nova/native-select.json | 2 +- .../base-nova/navigation-menu-demo.json | 16 + .../base-nova/navigation-menu-example.json | 2 +- .../r/styles/base-nova/navigation-menu.json | 2 +- .../r/styles/base-nova/pagination-demo.json | 16 + .../styles/base-nova/pagination-example.json | 2 +- .../public/r/styles/base-nova/pagination.json | 2 +- .../r/styles/base-nova/popover-demo.json | 19 + .../r/styles/base-nova/popover-example.json | 2 +- .../v4/public/r/styles/base-nova/popover.json | 2 +- .../v4/public/r/styles/base-nova/preview.json | 2 +- .../r/styles/base-nova/progress-demo.json | 16 + .../r/styles/base-nova/progress-example.json | 2 +- .../public/r/styles/base-nova/progress.json | 2 +- .../r/styles/base-nova/radio-group-demo.json | 4 +- .../styles/base-nova/radio-group-example.json | 2 +- .../r/styles/base-nova/radio-group.json | 2 +- .../public/r/styles/base-nova/registry.json | 2964 +++- .../base-nova/resizable-demo-with-handle.json | 16 + .../r/styles/base-nova/resizable-demo.json | 16 + .../r/styles/base-nova/resizable-example.json | 2 +- .../r/styles/base-nova/resizable-handle.json | 16 + .../styles/base-nova/resizable-vertical.json | 16 + .../public/r/styles/base-nova/resizable.json | 2 +- .../r/styles/base-nova/scroll-area-demo.json | 17 + .../styles/base-nova/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/base-nova/scroll-area.json | 2 +- .../r/styles/base-nova/select-demo.json | 16 + .../r/styles/base-nova/select-example.json | 2 +- .../r/styles/base-nova/select-scrollable.json | 16 + apps/v4/public/r/styles/base-nova/select.json | 2 +- .../r/styles/base-nova/separator-example.json | 2 +- .../public/r/styles/base-nova/separator.json | 2 +- .../public/r/styles/base-nova/sheet-demo.json | 4 +- .../r/styles/base-nova/sheet-example.json | 2 +- .../public/r/styles/base-nova/sheet-side.json | 4 +- apps/v4/public/r/styles/base-nova/sheet.json | 2 +- .../r/styles/base-nova/sidebar-example.json | 2 +- .../base-nova/sidebar-floating-example.json | 2 +- .../base-nova/sidebar-icon-example.json | 2 +- .../base-nova/sidebar-inset-example.json | 2 +- .../v4/public/r/styles/base-nova/sidebar.json | 2 +- apps/v4/public/r/styles/base-nova/sink.json | 2 +- .../r/styles/base-nova/skeleton-card.json | 16 + .../r/styles/base-nova/skeleton-demo.json | 16 + .../r/styles/base-nova/skeleton-example.json | 2 +- .../public/r/styles/base-nova/skeleton.json | 2 +- .../r/styles/base-nova/slider-demo.json | 16 + .../r/styles/base-nova/slider-example.json | 2 +- apps/v4/public/r/styles/base-nova/slider.json | 2 +- .../r/styles/base-nova/sonner-demo.json | 16 + .../r/styles/base-nova/sonner-example.json | 2 +- .../r/styles/base-nova/sonner-types.json | 16 + .../r/styles/base-nova/spinner-badge.json | 17 + .../r/styles/base-nova/spinner-basic.json | 16 + .../r/styles/base-nova/spinner-button.json | 17 + .../r/styles/base-nova/spinner-color.json | 16 + .../r/styles/base-nova/spinner-custom.json | 14 + .../r/styles/base-nova/spinner-demo.json | 17 + .../r/styles/base-nova/spinner-empty.json | 18 + .../r/styles/base-nova/spinner-example.json | 2 +- .../styles/base-nova/spinner-input-group.json | 17 + .../r/styles/base-nova/spinner-item.json | 19 + .../r/styles/base-nova/spinner-size.json | 16 + .../v4/public/r/styles/base-nova/spinner.json | 2 +- .../r/styles/base-nova/switch-demo.json | 17 + .../r/styles/base-nova/switch-example.json | 2 +- apps/v4/public/r/styles/base-nova/switch.json | 2 +- .../public/r/styles/base-nova/table-demo.json | 16 + .../r/styles/base-nova/table-example.json | 2 +- apps/v4/public/r/styles/base-nova/table.json | 2 +- .../public/r/styles/base-nova/tabs-demo.json | 20 + .../r/styles/base-nova/tabs-example.json | 2 +- apps/v4/public/r/styles/base-nova/tabs.json | 2 +- .../r/styles/base-nova/textarea-example.json | 2 +- .../base-nova/textarea-with-button.json | 4 +- .../styles/base-nova/textarea-with-label.json | 4 +- .../styles/base-nova/textarea-with-text.json | 4 +- .../public/r/styles/base-nova/textarea.json | 2 +- .../r/styles/base-nova/toggle-demo.json | 16 + .../r/styles/base-nova/toggle-disabled.json | 16 + .../r/styles/base-nova/toggle-example.json | 2 +- .../r/styles/base-nova/toggle-group-demo.json | 16 + .../base-nova/toggle-group-disabled.json | 16 + .../base-nova/toggle-group-example.json | 2 +- .../r/styles/base-nova/toggle-group-lg.json | 16 + .../base-nova/toggle-group-outline.json | 16 + .../styles/base-nova/toggle-group-single.json | 16 + .../r/styles/base-nova/toggle-group-sm.json | 16 + .../base-nova/toggle-group-spacing.json | 16 + .../r/styles/base-nova/toggle-group.json | 2 +- .../public/r/styles/base-nova/toggle-lg.json | 16 + .../r/styles/base-nova/toggle-outline.json | 16 + .../public/r/styles/base-nova/toggle-sm.json | 16 + .../r/styles/base-nova/toggle-with-text.json | 16 + apps/v4/public/r/styles/base-nova/toggle.json | 2 +- .../r/styles/base-nova/tooltip-demo.json | 17 + .../r/styles/base-nova/tooltip-example.json | 2 +- .../v4/public/r/styles/base-nova/tooltip.json | 2 +- .../base-nova/typography-blockquote.json | 14 + .../r/styles/base-nova/typography-demo.json | 14 + .../r/styles/base-nova/typography-h1.json | 14 + .../r/styles/base-nova/typography-h2.json | 14 + .../r/styles/base-nova/typography-h3.json | 14 + .../r/styles/base-nova/typography-h4.json | 14 + .../base-nova/typography-inline-code.json | 14 + .../r/styles/base-nova/typography-large.json | 14 + .../r/styles/base-nova/typography-lead.json | 14 + .../r/styles/base-nova/typography-list.json | 14 + .../r/styles/base-nova/typography-muted.json | 14 + .../r/styles/base-nova/typography-p.json | 14 + .../r/styles/base-nova/typography-small.json | 14 + .../r/styles/base-nova/typography-table.json | 14 + apps/v4/public/r/styles/base-nova/vercel.json | 2 +- .../public/r/styles/base-vega/Elevenlabs.json | 2 +- .../r/styles/base-vega/accordion-demo.json | 2 +- .../styles/base-vega/accordion-disabled.json | 2 +- .../r/styles/base-vega/accordion-example.json | 2 +- .../styles/base-vega/accordion-multiple.json | 2 +- .../public/r/styles/base-vega/accordion.json | 2 +- .../public/r/styles/base-vega/alert-demo.json | 16 + .../r/styles/base-vega/alert-destructive.json | 16 + .../r/styles/base-vega/alert-dialog-demo.json | 17 + .../base-vega/alert-dialog-example.json | 2 +- .../r/styles/base-vega/alert-dialog.json | 2 +- .../r/styles/base-vega/alert-example.json | 2 +- apps/v4/public/r/styles/base-vega/alert.json | 2 +- .../r/styles/base-vega/aspect-ratio-demo.json | 16 + .../base-vega/aspect-ratio-example.json | 2 +- .../r/styles/base-vega/aspect-ratio.json | 2 +- .../r/styles/base-vega/avatar-demo.json | 16 + .../r/styles/base-vega/avatar-example.json | 2 +- apps/v4/public/r/styles/base-vega/avatar.json | 2 +- .../public/r/styles/base-vega/badge-demo.json | 16 + .../r/styles/base-vega/badge-destructive.json | 16 + .../r/styles/base-vega/badge-example.json | 2 +- .../r/styles/base-vega/badge-outline.json | 16 + .../r/styles/base-vega/badge-secondary.json | 16 + apps/v4/public/r/styles/base-vega/badge.json | 2 +- .../r/styles/base-vega/breadcrumb-demo.json | 17 + .../styles/base-vega/breadcrumb-dropdown.json | 17 + .../styles/base-vega/breadcrumb-ellipsis.json | 16 + .../styles/base-vega/breadcrumb-example.json | 2 +- .../r/styles/base-vega/breadcrumb-link.json | 16 + .../base-vega/breadcrumb-responsive.json | 19 + .../base-vega/breadcrumb-separator.json | 16 + .../public/r/styles/base-vega/breadcrumb.json | 2 +- .../r/styles/base-vega/button-as-child.json | 16 + .../r/styles/base-vega/button-default.json | 16 + .../r/styles/base-vega/button-demo.json | 16 + .../styles/base-vega/button-destructive.json | 16 + .../r/styles/base-vega/button-example.json | 2 +- .../r/styles/base-vega/button-ghost.json | 16 + .../r/styles/base-vega/button-group-demo.json | 18 + .../base-vega/button-group-dropdown.json | 18 + .../base-vega/button-group-example.json | 2 +- .../base-vega/button-group-input-group.json | 19 + .../styles/base-vega/button-group-input.json | 18 + .../styles/base-vega/button-group-nested.json | 17 + .../base-vega/button-group-orientation.json | 17 + .../base-vega/button-group-popover.json | 20 + .../styles/base-vega/button-group-select.json | 19 + .../base-vega/button-group-separator.json | 17 + .../r/styles/base-vega/button-group-size.json | 17 + .../styles/base-vega/button-group-split.json | 17 + .../r/styles/base-vega/button-group.json | 2 +- .../r/styles/base-vega/button-icon.json | 16 + .../r/styles/base-vega/button-link.json | 16 + .../r/styles/base-vega/button-loading.json | 17 + .../r/styles/base-vega/button-outline.json | 16 + .../r/styles/base-vega/button-rounded.json | 16 + .../r/styles/base-vega/button-secondary.json | 16 + .../r/styles/base-vega/button-size.json | 16 + .../r/styles/base-vega/button-with-icon.json | 16 + apps/v4/public/r/styles/base-vega/button.json | 2 +- .../r/styles/base-vega/calendar-demo.json | 16 + .../r/styles/base-vega/calendar-example.json | 2 +- .../r/styles/base-vega/calendar-hijri.json | 16 + .../public/r/styles/base-vega/calendar.json | 2 +- .../public/r/styles/base-vega/card-demo.json | 19 + .../r/styles/base-vega/card-example.json | 2 +- apps/v4/public/r/styles/base-vega/card.json | 2 +- .../r/styles/base-vega/carousel-api.json | 17 + .../r/styles/base-vega/carousel-demo.json | 17 + .../r/styles/base-vega/carousel-example.json | 2 +- .../base-vega/carousel-orientation.json | 17 + .../r/styles/base-vega/carousel-plugin.json | 17 + .../r/styles/base-vega/carousel-size.json | 17 + .../r/styles/base-vega/carousel-spacing.json | 17 + .../public/r/styles/base-vega/carousel.json | 2 +- .../styles/base-vega/chart-bar-demo-axis.json | 16 + .../styles/base-vega/chart-bar-demo-grid.json | 16 + .../base-vega/chart-bar-demo-legend.json | 16 + .../base-vega/chart-bar-demo-tooltip.json | 16 + .../r/styles/base-vega/chart-bar-demo.json | 16 + .../r/styles/base-vega/chart-example.json | 2 +- apps/v4/public/r/styles/base-vega/chart.json | 2 +- .../v4/public/r/styles/base-vega/chatgpt.json | 2 +- .../r/styles/base-vega/checkbox-demo.json | 17 + .../r/styles/base-vega/checkbox-disabled.json | 16 + .../r/styles/base-vega/checkbox-example.json | 2 +- .../styles/base-vega/checkbox-with-text.json | 16 + .../public/r/styles/base-vega/checkbox.json | 2 +- .../r/styles/base-vega/collapsible-demo.json | 17 + .../styles/base-vega/collapsible-example.json | 2 +- .../r/styles/base-vega/combobox-demo.json | 18 + .../base-vega/combobox-dropdown-menu.json | 18 + .../r/styles/base-vega/combobox-example.json | 2 +- .../r/styles/base-vega/combobox-popover.json | 18 + .../styles/base-vega/combobox-responsive.json | 6 +- .../public/r/styles/base-vega/combobox.json | 2 +- .../r/styles/base-vega/command-demo.json | 16 + .../r/styles/base-vega/command-dialog.json | 16 + .../r/styles/base-vega/command-example.json | 2 +- .../v4/public/r/styles/base-vega/command.json | 2 +- .../r/styles/base-vega/component-example.json | 2 +- .../r/styles/base-vega/context-menu-demo.json | 16 + .../base-vega/context-menu-example.json | 2 +- .../r/styles/base-vega/context-menu.json | 2 +- .../r/styles/base-vega/data-table-demo.json | 20 + .../r/styles/base-vega/date-picker-demo.json | 18 + .../base-vega/date-picker-with-presets.json | 19 + .../base-vega/date-picker-with-range.json | 18 + .../styles/base-vega/dialog-close-button.json | 19 + .../r/styles/base-vega/dialog-demo.json | 19 + .../r/styles/base-vega/dialog-example.json | 2 +- apps/v4/public/r/styles/base-vega/dialog.json | 2 +- .../r/styles/base-vega/drawer-demo.json | 17 + .../r/styles/base-vega/drawer-dialog.json | 20 + .../r/styles/base-vega/drawer-example.json | 2 +- apps/v4/public/r/styles/base-vega/drawer.json | 2 +- .../base-vega/dropdown-menu-checkboxes.json | 17 + .../styles/base-vega/dropdown-menu-demo.json | 17 + .../base-vega/dropdown-menu-dialog.json | 22 + .../base-vega/dropdown-menu-example.json | 2 +- .../base-vega/dropdown-menu-radio-group.json | 17 + .../r/styles/base-vega/dropdown-menu.json | 2 +- .../styles/base-vega/empty-avatar-group.json | 18 + .../r/styles/base-vega/empty-avatar.json | 18 + .../r/styles/base-vega/empty-background.json | 17 + .../public/r/styles/base-vega/empty-demo.json | 17 + .../r/styles/base-vega/empty-example.json | 2 +- .../public/r/styles/base-vega/empty-icon.json | 16 + .../r/styles/base-vega/empty-input-group.json | 18 + .../r/styles/base-vega/empty-outline.json | 17 + apps/v4/public/r/styles/base-vega/empty.json | 2 +- .../v4/public/r/styles/base-vega/example.json | 2 +- .../r/styles/base-vega/field-checkbox.json | 17 + .../r/styles/base-vega/field-choice-card.json | 17 + .../public/r/styles/base-vega/field-demo.json | 21 + .../r/styles/base-vega/field-example.json | 2 +- .../r/styles/base-vega/field-fieldset.json | 17 + .../r/styles/base-vega/field-group.json | 17 + .../r/styles/base-vega/field-input.json | 17 + .../r/styles/base-vega/field-radio.json | 17 + .../r/styles/base-vega/field-responsive.json | 19 + .../r/styles/base-vega/field-select.json | 17 + .../r/styles/base-vega/field-slider.json | 17 + .../r/styles/base-vega/field-switch.json | 17 + .../r/styles/base-vega/field-textarea.json | 17 + apps/v4/public/r/styles/base-vega/field.json | 2 +- apps/v4/public/r/styles/base-vega/github.json | 2 +- .../r/styles/base-vega/hover-card-demo.json | 18 + .../styles/base-vega/hover-card-example.json | 2 +- .../public/r/styles/base-vega/hover-card.json | 2 +- .../public/r/styles/base-vega/input-demo.json | 16 + .../r/styles/base-vega/input-disabled.json | 16 + .../r/styles/base-vega/input-example.json | 2 +- .../public/r/styles/base-vega/input-file.json | 17 + .../base-vega/input-group-button-group.json | 18 + .../styles/base-vega/input-group-button.json | 17 + .../styles/base-vega/input-group-custom.json | 16 + .../r/styles/base-vega/input-group-demo.json | 19 + .../base-vega/input-group-dropdown.json | 17 + .../styles/base-vega/input-group-example.json | 2 +- .../r/styles/base-vega/input-group-icon.json | 16 + .../r/styles/base-vega/input-group-label.json | 18 + .../styles/base-vega/input-group-spinner.json | 17 + .../r/styles/base-vega/input-group-text.json | 16 + .../base-vega/input-group-textarea.json | 16 + .../styles/base-vega/input-group-tooltip.json | 17 + .../r/styles/base-vega/input-group.json | 2 +- .../base-vega/input-otp-controlled.json | 16 + .../r/styles/base-vega/input-otp-demo.json | 16 + .../r/styles/base-vega/input-otp-example.json | 2 +- .../r/styles/base-vega/input-otp-pattern.json | 16 + .../styles/base-vega/input-otp-separator.json | 16 + .../public/r/styles/base-vega/input-otp.json | 2 +- .../r/styles/base-vega/input-with-button.json | 17 + .../r/styles/base-vega/input-with-label.json | 17 + .../r/styles/base-vega/input-with-text.json | 17 + apps/v4/public/r/styles/base-vega/input.json | 2 +- .../r/styles/base-vega/item-avatar.json | 18 + .../public/r/styles/base-vega/item-demo.json | 17 + .../r/styles/base-vega/item-dropdown.json | 19 + .../r/styles/base-vega/item-example.json | 2 +- .../public/r/styles/base-vega/item-group.json | 18 + .../r/styles/base-vega/item-header.json | 16 + .../public/r/styles/base-vega/item-icon.json | 17 + .../public/r/styles/base-vega/item-image.json | 16 + .../public/r/styles/base-vega/item-link.json | 16 + .../public/r/styles/base-vega/item-size.json | 17 + .../r/styles/base-vega/item-variant.json | 17 + apps/v4/public/r/styles/base-vega/item.json | 2 +- .../public/r/styles/base-vega/kbd-button.json | 17 + .../public/r/styles/base-vega/kbd-demo.json | 16 + .../r/styles/base-vega/kbd-example.json | 2 +- .../public/r/styles/base-vega/kbd-group.json | 16 + .../r/styles/base-vega/kbd-input-group.json | 17 + .../r/styles/base-vega/kbd-tooltip.json | 19 + apps/v4/public/r/styles/base-vega/kbd.json | 2 +- .../public/r/styles/base-vega/label-demo.json | 17 + .../r/styles/base-vega/label-example.json | 2 +- apps/v4/public/r/styles/base-vega/label.json | 2 +- .../r/styles/base-vega/menubar-demo.json | 16 + .../r/styles/base-vega/menubar-example.json | 2 +- .../v4/public/r/styles/base-vega/menubar.json | 2 +- .../styles/base-vega/native-select-demo.json | 16 + .../base-vega/native-select-disabled.json | 16 + .../base-vega/native-select-example.json | 2 +- .../base-vega/native-select-groups.json | 16 + .../base-vega/native-select-invalid.json | 16 + .../r/styles/base-vega/native-select.json | 2 +- .../base-vega/navigation-menu-demo.json | 16 + .../base-vega/navigation-menu-example.json | 2 +- .../r/styles/base-vega/navigation-menu.json | 2 +- .../r/styles/base-vega/pagination-demo.json | 16 + .../styles/base-vega/pagination-example.json | 2 +- .../public/r/styles/base-vega/pagination.json | 2 +- .../r/styles/base-vega/popover-demo.json | 19 + .../r/styles/base-vega/popover-example.json | 2 +- .../v4/public/r/styles/base-vega/popover.json | 2 +- .../v4/public/r/styles/base-vega/preview.json | 2 +- .../r/styles/base-vega/progress-demo.json | 16 + .../r/styles/base-vega/progress-example.json | 2 +- .../public/r/styles/base-vega/progress.json | 2 +- .../r/styles/base-vega/radio-group-demo.json | 6 +- .../styles/base-vega/radio-group-example.json | 2 +- .../r/styles/base-vega/radio-group.json | 2 +- .../public/r/styles/base-vega/registry.json | 2964 +++- .../base-vega/resizable-demo-with-handle.json | 16 + .../r/styles/base-vega/resizable-demo.json | 16 + .../r/styles/base-vega/resizable-example.json | 2 +- .../r/styles/base-vega/resizable-handle.json | 16 + .../styles/base-vega/resizable-vertical.json | 16 + .../public/r/styles/base-vega/resizable.json | 2 +- .../r/styles/base-vega/scroll-area-demo.json | 17 + .../styles/base-vega/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/base-vega/scroll-area.json | 2 +- .../r/styles/base-vega/select-demo.json | 16 + .../r/styles/base-vega/select-example.json | 2 +- .../r/styles/base-vega/select-scrollable.json | 16 + apps/v4/public/r/styles/base-vega/select.json | 2 +- .../r/styles/base-vega/separator-demo.json | 2 +- .../r/styles/base-vega/separator-example.json | 2 +- .../public/r/styles/base-vega/separator.json | 2 +- .../public/r/styles/base-vega/sheet-demo.json | 6 +- .../r/styles/base-vega/sheet-example.json | 2 +- .../public/r/styles/base-vega/sheet-side.json | 6 +- apps/v4/public/r/styles/base-vega/sheet.json | 2 +- .../r/styles/base-vega/sidebar-example.json | 2 +- .../base-vega/sidebar-floating-example.json | 2 +- .../base-vega/sidebar-icon-example.json | 2 +- .../base-vega/sidebar-inset-example.json | 2 +- .../v4/public/r/styles/base-vega/sidebar.json | 2 +- apps/v4/public/r/styles/base-vega/sink.json | 2 +- .../r/styles/base-vega/skeleton-card.json | 16 + .../r/styles/base-vega/skeleton-demo.json | 16 + .../r/styles/base-vega/skeleton-example.json | 2 +- .../public/r/styles/base-vega/skeleton.json | 2 +- .../r/styles/base-vega/slider-demo.json | 16 + .../r/styles/base-vega/slider-example.json | 2 +- apps/v4/public/r/styles/base-vega/slider.json | 2 +- .../r/styles/base-vega/sonner-demo.json | 16 + .../r/styles/base-vega/sonner-example.json | 2 +- .../r/styles/base-vega/sonner-types.json | 16 + .../r/styles/base-vega/spinner-badge.json | 17 + .../r/styles/base-vega/spinner-basic.json | 16 + .../r/styles/base-vega/spinner-button.json | 17 + .../r/styles/base-vega/spinner-color.json | 16 + .../r/styles/base-vega/spinner-custom.json | 14 + .../r/styles/base-vega/spinner-demo.json | 17 + .../r/styles/base-vega/spinner-empty.json | 18 + .../r/styles/base-vega/spinner-example.json | 2 +- .../styles/base-vega/spinner-input-group.json | 17 + .../r/styles/base-vega/spinner-item.json | 19 + .../r/styles/base-vega/spinner-size.json | 16 + .../v4/public/r/styles/base-vega/spinner.json | 2 +- .../r/styles/base-vega/switch-demo.json | 17 + .../r/styles/base-vega/switch-example.json | 2 +- apps/v4/public/r/styles/base-vega/switch.json | 2 +- .../public/r/styles/base-vega/table-demo.json | 16 + .../r/styles/base-vega/table-example.json | 2 +- apps/v4/public/r/styles/base-vega/table.json | 2 +- .../public/r/styles/base-vega/tabs-demo.json | 20 + .../r/styles/base-vega/tabs-example.json | 2 +- apps/v4/public/r/styles/base-vega/tabs.json | 2 +- .../r/styles/base-vega/textarea-demo.json | 2 +- .../r/styles/base-vega/textarea-disabled.json | 2 +- .../r/styles/base-vega/textarea-example.json | 2 +- .../base-vega/textarea-with-button.json | 6 +- .../styles/base-vega/textarea-with-label.json | 6 +- .../styles/base-vega/textarea-with-text.json | 6 +- .../public/r/styles/base-vega/textarea.json | 2 +- .../r/styles/base-vega/toggle-demo.json | 16 + .../r/styles/base-vega/toggle-disabled.json | 16 + .../r/styles/base-vega/toggle-example.json | 2 +- .../r/styles/base-vega/toggle-group-demo.json | 16 + .../base-vega/toggle-group-disabled.json | 16 + .../base-vega/toggle-group-example.json | 2 +- .../r/styles/base-vega/toggle-group-lg.json | 16 + .../base-vega/toggle-group-outline.json | 16 + .../styles/base-vega/toggle-group-single.json | 16 + .../r/styles/base-vega/toggle-group-sm.json | 16 + .../base-vega/toggle-group-spacing.json | 16 + .../r/styles/base-vega/toggle-group.json | 2 +- .../public/r/styles/base-vega/toggle-lg.json | 16 + .../r/styles/base-vega/toggle-outline.json | 16 + .../public/r/styles/base-vega/toggle-sm.json | 16 + .../r/styles/base-vega/toggle-with-text.json | 16 + apps/v4/public/r/styles/base-vega/toggle.json | 2 +- .../r/styles/base-vega/tooltip-demo.json | 17 + .../r/styles/base-vega/tooltip-example.json | 2 +- .../v4/public/r/styles/base-vega/tooltip.json | 2 +- .../base-vega/typography-blockquote.json | 14 + .../r/styles/base-vega/typography-demo.json | 14 + .../r/styles/base-vega/typography-h1.json | 14 + .../r/styles/base-vega/typography-h2.json | 14 + .../r/styles/base-vega/typography-h3.json | 14 + .../r/styles/base-vega/typography-h4.json | 14 + .../base-vega/typography-inline-code.json | 14 + .../r/styles/base-vega/typography-large.json | 14 + .../r/styles/base-vega/typography-lead.json | 14 + .../r/styles/base-vega/typography-list.json | 14 + .../r/styles/base-vega/typography-muted.json | 14 + .../r/styles/base-vega/typography-p.json | 14 + .../r/styles/base-vega/typography-small.json | 14 + .../r/styles/base-vega/typography-table.json | 14 + apps/v4/public/r/styles/base-vega/vercel.json | 2 +- .../r/styles/radix-lyra/accordion-demo.json | 2 +- .../styles/radix-lyra/accordion-disabled.json | 2 +- .../styles/radix-lyra/accordion-example.json | 2 +- .../styles/radix-lyra/accordion-multiple.json | 2 +- .../public/r/styles/radix-lyra/accordion.json | 2 +- .../r/styles/radix-lyra/alert-demo.json | 16 + .../styles/radix-lyra/alert-destructive.json | 16 + .../styles/radix-lyra/alert-dialog-demo.json | 17 + .../radix-lyra/alert-dialog-example.json | 2 +- .../r/styles/radix-lyra/alert-dialog.json | 2 +- .../r/styles/radix-lyra/alert-example.json | 2 +- apps/v4/public/r/styles/radix-lyra/alert.json | 2 +- .../styles/radix-lyra/aspect-ratio-demo.json | 16 + .../radix-lyra/aspect-ratio-example.json | 2 +- .../r/styles/radix-lyra/avatar-demo.json | 16 + .../r/styles/radix-lyra/avatar-example.json | 2 +- .../v4/public/r/styles/radix-lyra/avatar.json | 2 +- .../r/styles/radix-lyra/badge-demo.json | 16 + .../styles/radix-lyra/badge-destructive.json | 16 + .../r/styles/radix-lyra/badge-example.json | 2 +- .../r/styles/radix-lyra/badge-outline.json | 16 + .../r/styles/radix-lyra/badge-secondary.json | 16 + apps/v4/public/r/styles/radix-lyra/badge.json | 2 +- .../r/styles/radix-lyra/breadcrumb-demo.json | 17 + .../radix-lyra/breadcrumb-dropdown.json | 17 + .../radix-lyra/breadcrumb-ellipsis.json | 17 + .../styles/radix-lyra/breadcrumb-example.json | 2 +- .../r/styles/radix-lyra/breadcrumb-link.json | 16 + .../radix-lyra/breadcrumb-responsive.json | 19 + .../radix-lyra/breadcrumb-separator.json | 16 + .../r/styles/radix-lyra/breadcrumb.json | 2 +- .../r/styles/radix-lyra/button-as-child.json | 16 + .../r/styles/radix-lyra/button-default.json | 16 + .../r/styles/radix-lyra/button-demo.json | 16 + .../styles/radix-lyra/button-destructive.json | 16 + .../r/styles/radix-lyra/button-example.json | 2 +- .../r/styles/radix-lyra/button-ghost.json | 16 + .../styles/radix-lyra/button-group-demo.json | 17 + .../radix-lyra/button-group-dropdown.json | 18 + .../radix-lyra/button-group-example.json | 2 +- .../radix-lyra/button-group-input-group.json | 18 + .../styles/radix-lyra/button-group-input.json | 18 + .../radix-lyra/button-group-nested.json | 17 + .../radix-lyra/button-group-orientation.json | 17 + .../radix-lyra/button-group-popover.json | 20 + .../radix-lyra/button-group-select.json | 19 + .../radix-lyra/button-group-separator.json | 17 + .../styles/radix-lyra/button-group-size.json | 17 + .../styles/radix-lyra/button-group-split.json | 18 + .../r/styles/radix-lyra/button-group.json | 2 +- .../r/styles/radix-lyra/button-icon.json | 16 + .../r/styles/radix-lyra/button-link.json | 16 + .../r/styles/radix-lyra/button-loading.json | 17 + .../r/styles/radix-lyra/button-outline.json | 16 + .../r/styles/radix-lyra/button-rounded.json | 16 + .../r/styles/radix-lyra/button-secondary.json | 16 + .../r/styles/radix-lyra/button-size.json | 16 + .../r/styles/radix-lyra/button-with-icon.json | 16 + .../v4/public/r/styles/radix-lyra/button.json | 2 +- .../r/styles/radix-lyra/calendar-demo.json | 16 + .../r/styles/radix-lyra/calendar-example.json | 2 +- .../r/styles/radix-lyra/calendar-hijri.json | 16 + .../public/r/styles/radix-lyra/calendar.json | 2 +- .../public/r/styles/radix-lyra/card-demo.json | 19 + .../r/styles/radix-lyra/card-example.json | 2 +- apps/v4/public/r/styles/radix-lyra/card.json | 2 +- .../r/styles/radix-lyra/carousel-api.json | 17 + .../r/styles/radix-lyra/carousel-demo.json | 17 + .../r/styles/radix-lyra/carousel-example.json | 2 +- .../radix-lyra/carousel-orientation.json | 17 + .../r/styles/radix-lyra/carousel-plugin.json | 17 + .../r/styles/radix-lyra/carousel-size.json | 17 + .../r/styles/radix-lyra/carousel-spacing.json | 17 + .../public/r/styles/radix-lyra/carousel.json | 2 +- .../radix-lyra/chart-bar-demo-axis.json | 16 + .../radix-lyra/chart-bar-demo-grid.json | 16 + .../radix-lyra/chart-bar-demo-legend.json | 16 + .../radix-lyra/chart-bar-demo-tooltip.json | 16 + .../r/styles/radix-lyra/chart-bar-demo.json | 16 + .../r/styles/radix-lyra/chart-example.json | 2 +- apps/v4/public/r/styles/radix-lyra/chart.json | 2 +- .../public/r/styles/radix-lyra/chatgpt.json | 2 +- .../r/styles/radix-lyra/checkbox-demo.json | 17 + .../styles/radix-lyra/checkbox-disabled.json | 16 + .../r/styles/radix-lyra/checkbox-example.json | 2 +- .../styles/radix-lyra/checkbox-with-text.json | 16 + .../public/r/styles/radix-lyra/checkbox.json | 2 +- .../r/styles/radix-lyra/collapsible-demo.json | 17 + .../radix-lyra/collapsible-example.json | 2 +- .../r/styles/radix-lyra/combobox-demo.json | 18 + .../radix-lyra/combobox-dropdown-menu.json | 18 + .../r/styles/radix-lyra/combobox-example.json | 2 +- .../r/styles/radix-lyra/combobox-popover.json | 18 + .../radix-lyra/combobox-responsive.json | 6 +- .../public/r/styles/radix-lyra/combobox.json | 2 +- .../r/styles/radix-lyra/command-demo.json | 16 + .../r/styles/radix-lyra/command-dialog.json | 16 + .../r/styles/radix-lyra/command-example.json | 2 +- .../public/r/styles/radix-lyra/command.json | 2 +- .../styles/radix-lyra/component-example.json | 2 +- .../styles/radix-lyra/context-menu-demo.json | 16 + .../radix-lyra/context-menu-example.json | 2 +- .../r/styles/radix-lyra/context-menu.json | 2 +- .../r/styles/radix-lyra/data-table-demo.json | 20 + .../r/styles/radix-lyra/date-picker-demo.json | 18 + .../radix-lyra/date-picker-with-presets.json | 19 + .../radix-lyra/date-picker-with-range.json | 18 + .../radix-lyra/dialog-close-button.json | 19 + .../r/styles/radix-lyra/dialog-demo.json | 19 + .../r/styles/radix-lyra/dialog-example.json | 2 +- .../v4/public/r/styles/radix-lyra/dialog.json | 2 +- .../r/styles/radix-lyra/drawer-demo.json | 17 + .../r/styles/radix-lyra/drawer-dialog.json | 20 + .../r/styles/radix-lyra/drawer-example.json | 2 +- .../v4/public/r/styles/radix-lyra/drawer.json | 2 +- .../radix-lyra/dropdown-menu-checkboxes.json | 17 + .../styles/radix-lyra/dropdown-menu-demo.json | 17 + .../radix-lyra/dropdown-menu-dialog.json | 22 + .../radix-lyra/dropdown-menu-example.json | 2 +- .../radix-lyra/dropdown-menu-radio-group.json | 17 + .../r/styles/radix-lyra/dropdown-menu.json | 2 +- .../r/styles/radix-lyra/elevenlabs.json | 2 +- .../styles/radix-lyra/empty-avatar-group.json | 18 + .../r/styles/radix-lyra/empty-avatar.json | 18 + .../r/styles/radix-lyra/empty-background.json | 17 + .../r/styles/radix-lyra/empty-demo.json | 17 + .../r/styles/radix-lyra/empty-example.json | 2 +- .../r/styles/radix-lyra/empty-icon.json | 16 + .../styles/radix-lyra/empty-input-group.json | 18 + .../r/styles/radix-lyra/empty-outline.json | 17 + apps/v4/public/r/styles/radix-lyra/empty.json | 2 +- .../public/r/styles/radix-lyra/example.json | 2 +- .../r/styles/radix-lyra/field-checkbox.json | 17 + .../styles/radix-lyra/field-choice-card.json | 17 + .../r/styles/radix-lyra/field-demo.json | 21 + .../r/styles/radix-lyra/field-example.json | 2 +- .../r/styles/radix-lyra/field-fieldset.json | 17 + .../r/styles/radix-lyra/field-group.json | 17 + .../r/styles/radix-lyra/field-input.json | 17 + .../r/styles/radix-lyra/field-radio.json | 17 + .../r/styles/radix-lyra/field-responsive.json | 19 + .../r/styles/radix-lyra/field-select.json | 17 + .../r/styles/radix-lyra/field-slider.json | 17 + .../r/styles/radix-lyra/field-switch.json | 17 + .../r/styles/radix-lyra/field-textarea.json | 17 + apps/v4/public/r/styles/radix-lyra/field.json | 2 +- .../v4/public/r/styles/radix-lyra/github.json | 2 +- .../r/styles/radix-lyra/hover-card-demo.json | 18 + .../styles/radix-lyra/hover-card-example.json | 2 +- .../r/styles/radix-lyra/hover-card.json | 2 +- .../r/styles/radix-lyra/input-demo.json | 16 + .../r/styles/radix-lyra/input-disabled.json | 16 + .../r/styles/radix-lyra/input-example.json | 2 +- .../r/styles/radix-lyra/input-file.json | 17 + .../radix-lyra/input-group-button-group.json | 18 + .../styles/radix-lyra/input-group-button.json | 16 + .../styles/radix-lyra/input-group-custom.json | 16 + .../r/styles/radix-lyra/input-group-demo.json | 19 + .../radix-lyra/input-group-dropdown.json | 17 + .../radix-lyra/input-group-example.json | 2 +- .../r/styles/radix-lyra/input-group-icon.json | 16 + .../styles/radix-lyra/input-group-label.json | 17 + .../radix-lyra/input-group-spinner.json | 17 + .../r/styles/radix-lyra/input-group-text.json | 16 + .../radix-lyra/input-group-textarea.json | 16 + .../radix-lyra/input-group-tooltip.json | 17 + .../r/styles/radix-lyra/input-group.json | 2 +- .../radix-lyra/input-otp-controlled.json | 16 + .../r/styles/radix-lyra/input-otp-demo.json | 16 + .../styles/radix-lyra/input-otp-example.json | 2 +- .../styles/radix-lyra/input-otp-pattern.json | 16 + .../radix-lyra/input-otp-separator.json | 16 + .../public/r/styles/radix-lyra/input-otp.json | 2 +- .../styles/radix-lyra/input-with-button.json | 17 + .../r/styles/radix-lyra/input-with-label.json | 17 + .../r/styles/radix-lyra/input-with-text.json | 17 + apps/v4/public/r/styles/radix-lyra/input.json | 2 +- .../r/styles/radix-lyra/item-avatar.json | 18 + .../public/r/styles/radix-lyra/item-demo.json | 17 + .../r/styles/radix-lyra/item-dropdown.json | 18 + .../r/styles/radix-lyra/item-example.json | 2 +- .../r/styles/radix-lyra/item-group.json | 18 + .../r/styles/radix-lyra/item-header.json | 16 + .../public/r/styles/radix-lyra/item-icon.json | 17 + .../r/styles/radix-lyra/item-image.json | 16 + .../public/r/styles/radix-lyra/item-link.json | 16 + .../public/r/styles/radix-lyra/item-size.json | 17 + .../r/styles/radix-lyra/item-variant.json | 16 + apps/v4/public/r/styles/radix-lyra/item.json | 2 +- .../r/styles/radix-lyra/kbd-button.json | 17 + .../public/r/styles/radix-lyra/kbd-demo.json | 16 + .../r/styles/radix-lyra/kbd-example.json | 2 +- .../public/r/styles/radix-lyra/kbd-group.json | 16 + .../r/styles/radix-lyra/kbd-input-group.json | 17 + .../r/styles/radix-lyra/kbd-tooltip.json | 19 + apps/v4/public/r/styles/radix-lyra/kbd.json | 2 +- .../r/styles/radix-lyra/label-demo.json | 17 + .../r/styles/radix-lyra/label-example.json | 2 +- apps/v4/public/r/styles/radix-lyra/label.json | 2 +- .../r/styles/radix-lyra/menubar-demo.json | 16 + .../r/styles/radix-lyra/menubar-example.json | 2 +- .../public/r/styles/radix-lyra/menubar.json | 2 +- .../styles/radix-lyra/native-select-demo.json | 16 + .../radix-lyra/native-select-disabled.json | 16 + .../radix-lyra/native-select-example.json | 2 +- .../radix-lyra/native-select-groups.json | 16 + .../radix-lyra/native-select-invalid.json | 16 + .../r/styles/radix-lyra/native-select.json | 2 +- .../radix-lyra/navigation-menu-demo.json | 16 + .../radix-lyra/navigation-menu-example.json | 2 +- .../r/styles/radix-lyra/navigation-menu.json | 2 +- .../r/styles/radix-lyra/pagination-demo.json | 16 + .../styles/radix-lyra/pagination-example.json | 2 +- .../r/styles/radix-lyra/pagination.json | 2 +- .../r/styles/radix-lyra/popover-demo.json | 19 + .../r/styles/radix-lyra/popover-example.json | 2 +- .../public/r/styles/radix-lyra/popover.json | 2 +- .../public/r/styles/radix-lyra/preview.json | 2 +- .../r/styles/radix-lyra/progress-demo.json | 16 + .../r/styles/radix-lyra/progress-example.json | 2 +- .../public/r/styles/radix-lyra/progress.json | 2 +- .../r/styles/radix-lyra/radio-group-demo.json | 6 +- .../radix-lyra/radio-group-example.json | 2 +- .../r/styles/radix-lyra/radio-group.json | 2 +- .../public/r/styles/radix-lyra/registry.json | 2962 +++- .../resizable-demo-with-handle.json | 16 + .../r/styles/radix-lyra/resizable-demo.json | 16 + .../styles/radix-lyra/resizable-example.json | 2 +- .../r/styles/radix-lyra/resizable-handle.json | 16 + .../styles/radix-lyra/resizable-vertical.json | 16 + .../public/r/styles/radix-lyra/resizable.json | 2 +- .../r/styles/radix-lyra/scroll-area-demo.json | 17 + .../radix-lyra/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/radix-lyra/scroll-area.json | 2 +- .../r/styles/radix-lyra/select-demo.json | 16 + .../r/styles/radix-lyra/select-example.json | 2 +- .../styles/radix-lyra/select-scrollable.json | 16 + .../v4/public/r/styles/radix-lyra/select.json | 2 +- .../r/styles/radix-lyra/separator-demo.json | 2 +- .../styles/radix-lyra/separator-example.json | 2 +- .../public/r/styles/radix-lyra/separator.json | 2 +- .../r/styles/radix-lyra/sheet-demo.json | 6 +- .../r/styles/radix-lyra/sheet-example.json | 2 +- .../r/styles/radix-lyra/sheet-side.json | 6 +- apps/v4/public/r/styles/radix-lyra/sheet.json | 2 +- .../r/styles/radix-lyra/sidebar-example.json | 2 +- .../radix-lyra/sidebar-floating-example.json | 2 +- .../radix-lyra/sidebar-icon-example.json | 2 +- .../radix-lyra/sidebar-inset-example.json | 2 +- .../public/r/styles/radix-lyra/sidebar.json | 2 +- apps/v4/public/r/styles/radix-lyra/sink.json | 2 +- .../r/styles/radix-lyra/skeleton-card.json | 16 + .../r/styles/radix-lyra/skeleton-demo.json | 16 + .../r/styles/radix-lyra/skeleton-example.json | 2 +- .../public/r/styles/radix-lyra/skeleton.json | 2 +- .../r/styles/radix-lyra/slider-demo.json | 16 + .../r/styles/radix-lyra/slider-example.json | 2 +- .../v4/public/r/styles/radix-lyra/slider.json | 2 +- .../r/styles/radix-lyra/sonner-demo.json | 17 + .../r/styles/radix-lyra/sonner-example.json | 2 +- .../r/styles/radix-lyra/sonner-types.json | 17 + .../r/styles/radix-lyra/spinner-badge.json | 17 + .../r/styles/radix-lyra/spinner-basic.json | 16 + .../r/styles/radix-lyra/spinner-button.json | 17 + .../r/styles/radix-lyra/spinner-color.json | 16 + .../r/styles/radix-lyra/spinner-custom.json | 16 + .../r/styles/radix-lyra/spinner-demo.json | 16 + .../r/styles/radix-lyra/spinner-empty.json | 17 + .../r/styles/radix-lyra/spinner-example.json | 2 +- .../radix-lyra/spinner-input-group.json | 17 + .../r/styles/radix-lyra/spinner-item.json | 19 + .../r/styles/radix-lyra/spinner-size.json | 16 + .../public/r/styles/radix-lyra/spinner.json | 2 +- .../r/styles/radix-lyra/switch-demo.json | 17 + .../r/styles/radix-lyra/switch-example.json | 2 +- .../v4/public/r/styles/radix-lyra/switch.json | 2 +- .../r/styles/radix-lyra/table-demo.json | 16 + .../r/styles/radix-lyra/table-example.json | 2 +- apps/v4/public/r/styles/radix-lyra/table.json | 2 +- .../public/r/styles/radix-lyra/tabs-demo.json | 20 + .../r/styles/radix-lyra/tabs-example.json | 2 +- apps/v4/public/r/styles/radix-lyra/tabs.json | 2 +- .../r/styles/radix-lyra/textarea-demo.json | 2 +- .../styles/radix-lyra/textarea-disabled.json | 2 +- .../r/styles/radix-lyra/textarea-example.json | 2 +- .../radix-lyra/textarea-with-button.json | 6 +- .../radix-lyra/textarea-with-label.json | 6 +- .../styles/radix-lyra/textarea-with-text.json | 6 +- .../public/r/styles/radix-lyra/textarea.json | 2 +- .../r/styles/radix-lyra/toggle-demo.json | 16 + .../r/styles/radix-lyra/toggle-disabled.json | 16 + .../r/styles/radix-lyra/toggle-example.json | 2 +- .../styles/radix-lyra/toggle-group-demo.json | 16 + .../radix-lyra/toggle-group-disabled.json | 16 + .../radix-lyra/toggle-group-example.json | 2 +- .../r/styles/radix-lyra/toggle-group-lg.json | 16 + .../radix-lyra/toggle-group-outline.json | 16 + .../radix-lyra/toggle-group-single.json | 16 + .../r/styles/radix-lyra/toggle-group-sm.json | 16 + .../radix-lyra/toggle-group-spacing.json | 16 + .../r/styles/radix-lyra/toggle-group.json | 2 +- .../public/r/styles/radix-lyra/toggle-lg.json | 16 + .../r/styles/radix-lyra/toggle-outline.json | 16 + .../public/r/styles/radix-lyra/toggle-sm.json | 16 + .../r/styles/radix-lyra/toggle-with-text.json | 16 + .../v4/public/r/styles/radix-lyra/toggle.json | 2 +- .../r/styles/radix-lyra/tooltip-demo.json | 17 + .../r/styles/radix-lyra/tooltip-example.json | 2 +- .../public/r/styles/radix-lyra/tooltip.json | 2 +- .../radix-lyra/typography-blockquote.json | 14 + .../r/styles/radix-lyra/typography-demo.json | 14 + .../r/styles/radix-lyra/typography-h1.json | 14 + .../r/styles/radix-lyra/typography-h2.json | 14 + .../r/styles/radix-lyra/typography-h3.json | 14 + .../r/styles/radix-lyra/typography-h4.json | 14 + .../radix-lyra/typography-inline-code.json | 14 + .../r/styles/radix-lyra/typography-large.json | 14 + .../r/styles/radix-lyra/typography-lead.json | 14 + .../r/styles/radix-lyra/typography-list.json | 14 + .../r/styles/radix-lyra/typography-muted.json | 14 + .../r/styles/radix-lyra/typography-p.json | 14 + .../r/styles/radix-lyra/typography-small.json | 14 + .../r/styles/radix-lyra/typography-table.json | 14 + .../v4/public/r/styles/radix-lyra/vercel.json | 2 +- .../r/styles/radix-maia/accordion-demo.json | 2 +- .../styles/radix-maia/accordion-disabled.json | 2 +- .../styles/radix-maia/accordion-example.json | 2 +- .../styles/radix-maia/accordion-multiple.json | 2 +- .../public/r/styles/radix-maia/accordion.json | 2 +- .../r/styles/radix-maia/alert-demo.json | 16 + .../styles/radix-maia/alert-destructive.json | 16 + .../styles/radix-maia/alert-dialog-demo.json | 17 + .../radix-maia/alert-dialog-example.json | 2 +- .../r/styles/radix-maia/alert-dialog.json | 2 +- .../r/styles/radix-maia/alert-example.json | 2 +- apps/v4/public/r/styles/radix-maia/alert.json | 2 +- .../styles/radix-maia/aspect-ratio-demo.json | 16 + .../radix-maia/aspect-ratio-example.json | 2 +- .../r/styles/radix-maia/avatar-demo.json | 16 + .../r/styles/radix-maia/avatar-example.json | 2 +- .../v4/public/r/styles/radix-maia/avatar.json | 2 +- .../r/styles/radix-maia/badge-demo.json | 16 + .../styles/radix-maia/badge-destructive.json | 16 + .../r/styles/radix-maia/badge-example.json | 2 +- .../r/styles/radix-maia/badge-outline.json | 16 + .../r/styles/radix-maia/badge-secondary.json | 16 + apps/v4/public/r/styles/radix-maia/badge.json | 2 +- .../r/styles/radix-maia/breadcrumb-demo.json | 17 + .../radix-maia/breadcrumb-dropdown.json | 17 + .../radix-maia/breadcrumb-ellipsis.json | 17 + .../styles/radix-maia/breadcrumb-example.json | 2 +- .../r/styles/radix-maia/breadcrumb-link.json | 16 + .../radix-maia/breadcrumb-responsive.json | 19 + .../radix-maia/breadcrumb-separator.json | 16 + .../r/styles/radix-maia/breadcrumb.json | 2 +- .../r/styles/radix-maia/button-as-child.json | 16 + .../r/styles/radix-maia/button-default.json | 16 + .../r/styles/radix-maia/button-demo.json | 16 + .../styles/radix-maia/button-destructive.json | 16 + .../r/styles/radix-maia/button-example.json | 2 +- .../r/styles/radix-maia/button-ghost.json | 16 + .../styles/radix-maia/button-group-demo.json | 17 + .../radix-maia/button-group-dropdown.json | 18 + .../radix-maia/button-group-example.json | 2 +- .../radix-maia/button-group-input-group.json | 18 + .../styles/radix-maia/button-group-input.json | 18 + .../radix-maia/button-group-nested.json | 17 + .../radix-maia/button-group-orientation.json | 17 + .../radix-maia/button-group-popover.json | 20 + .../radix-maia/button-group-select.json | 19 + .../radix-maia/button-group-separator.json | 17 + .../styles/radix-maia/button-group-size.json | 17 + .../styles/radix-maia/button-group-split.json | 18 + .../r/styles/radix-maia/button-group.json | 2 +- .../r/styles/radix-maia/button-icon.json | 16 + .../r/styles/radix-maia/button-link.json | 16 + .../r/styles/radix-maia/button-loading.json | 17 + .../r/styles/radix-maia/button-outline.json | 16 + .../r/styles/radix-maia/button-rounded.json | 16 + .../r/styles/radix-maia/button-secondary.json | 16 + .../r/styles/radix-maia/button-size.json | 16 + .../r/styles/radix-maia/button-with-icon.json | 16 + .../v4/public/r/styles/radix-maia/button.json | 2 +- .../r/styles/radix-maia/calendar-demo.json | 16 + .../r/styles/radix-maia/calendar-example.json | 2 +- .../r/styles/radix-maia/calendar-hijri.json | 16 + .../public/r/styles/radix-maia/calendar.json | 2 +- .../public/r/styles/radix-maia/card-demo.json | 19 + .../r/styles/radix-maia/card-example.json | 2 +- apps/v4/public/r/styles/radix-maia/card.json | 2 +- .../r/styles/radix-maia/carousel-api.json | 17 + .../r/styles/radix-maia/carousel-demo.json | 17 + .../r/styles/radix-maia/carousel-example.json | 2 +- .../radix-maia/carousel-orientation.json | 17 + .../r/styles/radix-maia/carousel-plugin.json | 17 + .../r/styles/radix-maia/carousel-size.json | 17 + .../r/styles/radix-maia/carousel-spacing.json | 17 + .../public/r/styles/radix-maia/carousel.json | 2 +- .../radix-maia/chart-bar-demo-axis.json | 16 + .../radix-maia/chart-bar-demo-grid.json | 16 + .../radix-maia/chart-bar-demo-legend.json | 16 + .../radix-maia/chart-bar-demo-tooltip.json | 16 + .../r/styles/radix-maia/chart-bar-demo.json | 16 + .../r/styles/radix-maia/chart-example.json | 2 +- apps/v4/public/r/styles/radix-maia/chart.json | 2 +- .../public/r/styles/radix-maia/chatgpt.json | 2 +- .../r/styles/radix-maia/checkbox-demo.json | 17 + .../styles/radix-maia/checkbox-disabled.json | 16 + .../r/styles/radix-maia/checkbox-example.json | 2 +- .../styles/radix-maia/checkbox-with-text.json | 16 + .../public/r/styles/radix-maia/checkbox.json | 2 +- .../r/styles/radix-maia/collapsible-demo.json | 17 + .../radix-maia/collapsible-example.json | 2 +- .../r/styles/radix-maia/combobox-demo.json | 18 + .../radix-maia/combobox-dropdown-menu.json | 18 + .../r/styles/radix-maia/combobox-example.json | 2 +- .../r/styles/radix-maia/combobox-popover.json | 18 + .../radix-maia/combobox-responsive.json | 6 +- .../public/r/styles/radix-maia/combobox.json | 2 +- .../r/styles/radix-maia/command-demo.json | 16 + .../r/styles/radix-maia/command-dialog.json | 16 + .../r/styles/radix-maia/command-example.json | 2 +- .../public/r/styles/radix-maia/command.json | 2 +- .../styles/radix-maia/component-example.json | 2 +- .../styles/radix-maia/context-menu-demo.json | 16 + .../radix-maia/context-menu-example.json | 2 +- .../r/styles/radix-maia/context-menu.json | 2 +- .../r/styles/radix-maia/data-table-demo.json | 20 + .../r/styles/radix-maia/date-picker-demo.json | 18 + .../radix-maia/date-picker-with-presets.json | 19 + .../radix-maia/date-picker-with-range.json | 18 + .../radix-maia/dialog-close-button.json | 19 + .../r/styles/radix-maia/dialog-demo.json | 19 + .../r/styles/radix-maia/dialog-example.json | 2 +- .../v4/public/r/styles/radix-maia/dialog.json | 2 +- .../r/styles/radix-maia/drawer-demo.json | 17 + .../r/styles/radix-maia/drawer-dialog.json | 20 + .../r/styles/radix-maia/drawer-example.json | 2 +- .../v4/public/r/styles/radix-maia/drawer.json | 2 +- .../radix-maia/dropdown-menu-checkboxes.json | 17 + .../styles/radix-maia/dropdown-menu-demo.json | 17 + .../radix-maia/dropdown-menu-dialog.json | 22 + .../radix-maia/dropdown-menu-example.json | 2 +- .../radix-maia/dropdown-menu-radio-group.json | 17 + .../r/styles/radix-maia/dropdown-menu.json | 2 +- .../r/styles/radix-maia/elevenlabs.json | 2 +- .../styles/radix-maia/empty-avatar-group.json | 18 + .../r/styles/radix-maia/empty-avatar.json | 18 + .../r/styles/radix-maia/empty-background.json | 17 + .../r/styles/radix-maia/empty-demo.json | 17 + .../r/styles/radix-maia/empty-example.json | 2 +- .../r/styles/radix-maia/empty-icon.json | 16 + .../styles/radix-maia/empty-input-group.json | 18 + .../r/styles/radix-maia/empty-outline.json | 17 + apps/v4/public/r/styles/radix-maia/empty.json | 2 +- .../public/r/styles/radix-maia/example.json | 2 +- .../r/styles/radix-maia/field-checkbox.json | 17 + .../styles/radix-maia/field-choice-card.json | 17 + .../r/styles/radix-maia/field-demo.json | 21 + .../r/styles/radix-maia/field-example.json | 2 +- .../r/styles/radix-maia/field-fieldset.json | 17 + .../r/styles/radix-maia/field-group.json | 17 + .../r/styles/radix-maia/field-input.json | 17 + .../r/styles/radix-maia/field-radio.json | 17 + .../r/styles/radix-maia/field-responsive.json | 19 + .../r/styles/radix-maia/field-select.json | 17 + .../r/styles/radix-maia/field-slider.json | 17 + .../r/styles/radix-maia/field-switch.json | 17 + .../r/styles/radix-maia/field-textarea.json | 17 + apps/v4/public/r/styles/radix-maia/field.json | 2 +- .../v4/public/r/styles/radix-maia/github.json | 2 +- .../r/styles/radix-maia/hover-card-demo.json | 18 + .../styles/radix-maia/hover-card-example.json | 2 +- .../r/styles/radix-maia/hover-card.json | 2 +- .../r/styles/radix-maia/input-demo.json | 16 + .../r/styles/radix-maia/input-disabled.json | 16 + .../r/styles/radix-maia/input-example.json | 2 +- .../r/styles/radix-maia/input-file.json | 17 + .../radix-maia/input-group-button-group.json | 18 + .../styles/radix-maia/input-group-button.json | 16 + .../styles/radix-maia/input-group-custom.json | 16 + .../r/styles/radix-maia/input-group-demo.json | 19 + .../radix-maia/input-group-dropdown.json | 17 + .../radix-maia/input-group-example.json | 2 +- .../r/styles/radix-maia/input-group-icon.json | 16 + .../styles/radix-maia/input-group-label.json | 17 + .../radix-maia/input-group-spinner.json | 17 + .../r/styles/radix-maia/input-group-text.json | 16 + .../radix-maia/input-group-textarea.json | 16 + .../radix-maia/input-group-tooltip.json | 17 + .../r/styles/radix-maia/input-group.json | 2 +- .../radix-maia/input-otp-controlled.json | 16 + .../r/styles/radix-maia/input-otp-demo.json | 16 + .../styles/radix-maia/input-otp-example.json | 2 +- .../styles/radix-maia/input-otp-pattern.json | 16 + .../radix-maia/input-otp-separator.json | 16 + .../public/r/styles/radix-maia/input-otp.json | 2 +- .../styles/radix-maia/input-with-button.json | 17 + .../r/styles/radix-maia/input-with-label.json | 17 + .../r/styles/radix-maia/input-with-text.json | 17 + apps/v4/public/r/styles/radix-maia/input.json | 2 +- .../r/styles/radix-maia/item-avatar.json | 18 + .../public/r/styles/radix-maia/item-demo.json | 17 + .../r/styles/radix-maia/item-dropdown.json | 18 + .../r/styles/radix-maia/item-example.json | 2 +- .../r/styles/radix-maia/item-group.json | 18 + .../r/styles/radix-maia/item-header.json | 16 + .../public/r/styles/radix-maia/item-icon.json | 17 + .../r/styles/radix-maia/item-image.json | 16 + .../public/r/styles/radix-maia/item-link.json | 16 + .../public/r/styles/radix-maia/item-size.json | 17 + .../r/styles/radix-maia/item-variant.json | 16 + apps/v4/public/r/styles/radix-maia/item.json | 2 +- .../r/styles/radix-maia/kbd-button.json | 17 + .../public/r/styles/radix-maia/kbd-demo.json | 16 + .../r/styles/radix-maia/kbd-example.json | 2 +- .../public/r/styles/radix-maia/kbd-group.json | 16 + .../r/styles/radix-maia/kbd-input-group.json | 17 + .../r/styles/radix-maia/kbd-tooltip.json | 19 + apps/v4/public/r/styles/radix-maia/kbd.json | 2 +- .../r/styles/radix-maia/label-demo.json | 17 + .../r/styles/radix-maia/label-example.json | 2 +- apps/v4/public/r/styles/radix-maia/label.json | 2 +- .../r/styles/radix-maia/menubar-demo.json | 16 + .../r/styles/radix-maia/menubar-example.json | 2 +- .../public/r/styles/radix-maia/menubar.json | 2 +- .../styles/radix-maia/native-select-demo.json | 16 + .../radix-maia/native-select-disabled.json | 16 + .../radix-maia/native-select-example.json | 2 +- .../radix-maia/native-select-groups.json | 16 + .../radix-maia/native-select-invalid.json | 16 + .../r/styles/radix-maia/native-select.json | 2 +- .../radix-maia/navigation-menu-demo.json | 16 + .../radix-maia/navigation-menu-example.json | 2 +- .../r/styles/radix-maia/navigation-menu.json | 2 +- .../r/styles/radix-maia/pagination-demo.json | 16 + .../styles/radix-maia/pagination-example.json | 2 +- .../r/styles/radix-maia/pagination.json | 2 +- .../r/styles/radix-maia/popover-demo.json | 19 + .../r/styles/radix-maia/popover-example.json | 2 +- .../public/r/styles/radix-maia/popover.json | 2 +- .../public/r/styles/radix-maia/preview.json | 2 +- .../r/styles/radix-maia/progress-demo.json | 16 + .../r/styles/radix-maia/progress-example.json | 2 +- .../public/r/styles/radix-maia/progress.json | 2 +- .../r/styles/radix-maia/radio-group-demo.json | 6 +- .../radix-maia/radio-group-example.json | 2 +- .../r/styles/radix-maia/radio-group.json | 2 +- .../public/r/styles/radix-maia/registry.json | 2962 +++- .../resizable-demo-with-handle.json | 16 + .../r/styles/radix-maia/resizable-demo.json | 16 + .../styles/radix-maia/resizable-example.json | 2 +- .../r/styles/radix-maia/resizable-handle.json | 16 + .../styles/radix-maia/resizable-vertical.json | 16 + .../public/r/styles/radix-maia/resizable.json | 2 +- .../r/styles/radix-maia/scroll-area-demo.json | 17 + .../radix-maia/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/radix-maia/scroll-area.json | 2 +- .../r/styles/radix-maia/select-demo.json | 16 + .../r/styles/radix-maia/select-example.json | 2 +- .../styles/radix-maia/select-scrollable.json | 16 + .../v4/public/r/styles/radix-maia/select.json | 2 +- .../r/styles/radix-maia/separator-demo.json | 2 +- .../styles/radix-maia/separator-example.json | 2 +- .../public/r/styles/radix-maia/separator.json | 2 +- .../r/styles/radix-maia/sheet-demo.json | 6 +- .../r/styles/radix-maia/sheet-example.json | 2 +- .../r/styles/radix-maia/sheet-side.json | 6 +- apps/v4/public/r/styles/radix-maia/sheet.json | 2 +- .../r/styles/radix-maia/sidebar-example.json | 2 +- .../radix-maia/sidebar-floating-example.json | 2 +- .../radix-maia/sidebar-icon-example.json | 2 +- .../radix-maia/sidebar-inset-example.json | 2 +- .../public/r/styles/radix-maia/sidebar.json | 2 +- apps/v4/public/r/styles/radix-maia/sink.json | 2 +- .../r/styles/radix-maia/skeleton-card.json | 16 + .../r/styles/radix-maia/skeleton-demo.json | 16 + .../r/styles/radix-maia/skeleton-example.json | 2 +- .../public/r/styles/radix-maia/skeleton.json | 2 +- .../r/styles/radix-maia/slider-demo.json | 16 + .../r/styles/radix-maia/slider-example.json | 2 +- .../v4/public/r/styles/radix-maia/slider.json | 2 +- .../r/styles/radix-maia/sonner-demo.json | 17 + .../r/styles/radix-maia/sonner-example.json | 2 +- .../r/styles/radix-maia/sonner-types.json | 17 + .../r/styles/radix-maia/spinner-badge.json | 17 + .../r/styles/radix-maia/spinner-basic.json | 16 + .../r/styles/radix-maia/spinner-button.json | 17 + .../r/styles/radix-maia/spinner-color.json | 16 + .../r/styles/radix-maia/spinner-custom.json | 16 + .../r/styles/radix-maia/spinner-demo.json | 16 + .../r/styles/radix-maia/spinner-empty.json | 17 + .../r/styles/radix-maia/spinner-example.json | 2 +- .../radix-maia/spinner-input-group.json | 17 + .../r/styles/radix-maia/spinner-item.json | 19 + .../r/styles/radix-maia/spinner-size.json | 16 + .../public/r/styles/radix-maia/spinner.json | 2 +- .../r/styles/radix-maia/switch-demo.json | 17 + .../r/styles/radix-maia/switch-example.json | 2 +- .../v4/public/r/styles/radix-maia/switch.json | 2 +- .../r/styles/radix-maia/table-demo.json | 16 + .../r/styles/radix-maia/table-example.json | 2 +- apps/v4/public/r/styles/radix-maia/table.json | 2 +- .../public/r/styles/radix-maia/tabs-demo.json | 20 + .../r/styles/radix-maia/tabs-example.json | 2 +- apps/v4/public/r/styles/radix-maia/tabs.json | 2 +- .../r/styles/radix-maia/textarea-demo.json | 2 +- .../styles/radix-maia/textarea-disabled.json | 2 +- .../r/styles/radix-maia/textarea-example.json | 2 +- .../radix-maia/textarea-with-button.json | 6 +- .../radix-maia/textarea-with-label.json | 6 +- .../styles/radix-maia/textarea-with-text.json | 6 +- .../public/r/styles/radix-maia/textarea.json | 2 +- .../r/styles/radix-maia/toggle-demo.json | 16 + .../r/styles/radix-maia/toggle-disabled.json | 16 + .../r/styles/radix-maia/toggle-example.json | 2 +- .../styles/radix-maia/toggle-group-demo.json | 16 + .../radix-maia/toggle-group-disabled.json | 16 + .../radix-maia/toggle-group-example.json | 2 +- .../r/styles/radix-maia/toggle-group-lg.json | 16 + .../radix-maia/toggle-group-outline.json | 16 + .../radix-maia/toggle-group-single.json | 16 + .../r/styles/radix-maia/toggle-group-sm.json | 16 + .../radix-maia/toggle-group-spacing.json | 16 + .../r/styles/radix-maia/toggle-group.json | 2 +- .../public/r/styles/radix-maia/toggle-lg.json | 16 + .../r/styles/radix-maia/toggle-outline.json | 16 + .../public/r/styles/radix-maia/toggle-sm.json | 16 + .../r/styles/radix-maia/toggle-with-text.json | 16 + .../v4/public/r/styles/radix-maia/toggle.json | 2 +- .../r/styles/radix-maia/tooltip-demo.json | 17 + .../r/styles/radix-maia/tooltip-example.json | 2 +- .../public/r/styles/radix-maia/tooltip.json | 2 +- .../radix-maia/typography-blockquote.json | 14 + .../r/styles/radix-maia/typography-demo.json | 14 + .../r/styles/radix-maia/typography-h1.json | 14 + .../r/styles/radix-maia/typography-h2.json | 14 + .../r/styles/radix-maia/typography-h3.json | 14 + .../r/styles/radix-maia/typography-h4.json | 14 + .../radix-maia/typography-inline-code.json | 14 + .../r/styles/radix-maia/typography-large.json | 14 + .../r/styles/radix-maia/typography-lead.json | 14 + .../r/styles/radix-maia/typography-list.json | 14 + .../r/styles/radix-maia/typography-muted.json | 14 + .../r/styles/radix-maia/typography-p.json | 14 + .../r/styles/radix-maia/typography-small.json | 14 + .../r/styles/radix-maia/typography-table.json | 14 + .../v4/public/r/styles/radix-maia/vercel.json | 2 +- .../r/styles/radix-mira/accordion-demo.json | 2 +- .../styles/radix-mira/accordion-disabled.json | 2 +- .../styles/radix-mira/accordion-example.json | 2 +- .../styles/radix-mira/accordion-multiple.json | 2 +- .../public/r/styles/radix-mira/accordion.json | 2 +- .../r/styles/radix-mira/alert-demo.json | 16 + .../styles/radix-mira/alert-destructive.json | 16 + .../styles/radix-mira/alert-dialog-demo.json | 17 + .../radix-mira/alert-dialog-example.json | 2 +- .../r/styles/radix-mira/alert-dialog.json | 2 +- .../r/styles/radix-mira/alert-example.json | 2 +- apps/v4/public/r/styles/radix-mira/alert.json | 2 +- .../styles/radix-mira/aspect-ratio-demo.json | 16 + .../radix-mira/aspect-ratio-example.json | 2 +- .../r/styles/radix-mira/avatar-demo.json | 16 + .../r/styles/radix-mira/avatar-example.json | 2 +- .../v4/public/r/styles/radix-mira/avatar.json | 2 +- .../r/styles/radix-mira/badge-demo.json | 16 + .../styles/radix-mira/badge-destructive.json | 16 + .../r/styles/radix-mira/badge-example.json | 2 +- .../r/styles/radix-mira/badge-outline.json | 16 + .../r/styles/radix-mira/badge-secondary.json | 16 + apps/v4/public/r/styles/radix-mira/badge.json | 2 +- .../r/styles/radix-mira/breadcrumb-demo.json | 17 + .../radix-mira/breadcrumb-dropdown.json | 17 + .../radix-mira/breadcrumb-ellipsis.json | 17 + .../styles/radix-mira/breadcrumb-example.json | 2 +- .../r/styles/radix-mira/breadcrumb-link.json | 16 + .../radix-mira/breadcrumb-responsive.json | 19 + .../radix-mira/breadcrumb-separator.json | 16 + .../r/styles/radix-mira/breadcrumb.json | 2 +- .../r/styles/radix-mira/button-as-child.json | 16 + .../r/styles/radix-mira/button-default.json | 16 + .../r/styles/radix-mira/button-demo.json | 16 + .../styles/radix-mira/button-destructive.json | 16 + .../r/styles/radix-mira/button-example.json | 2 +- .../r/styles/radix-mira/button-ghost.json | 16 + .../styles/radix-mira/button-group-demo.json | 17 + .../radix-mira/button-group-dropdown.json | 18 + .../radix-mira/button-group-example.json | 2 +- .../radix-mira/button-group-input-group.json | 18 + .../styles/radix-mira/button-group-input.json | 18 + .../radix-mira/button-group-nested.json | 17 + .../radix-mira/button-group-orientation.json | 17 + .../radix-mira/button-group-popover.json | 20 + .../radix-mira/button-group-select.json | 19 + .../radix-mira/button-group-separator.json | 17 + .../styles/radix-mira/button-group-size.json | 17 + .../styles/radix-mira/button-group-split.json | 18 + .../r/styles/radix-mira/button-group.json | 2 +- .../r/styles/radix-mira/button-icon.json | 16 + .../r/styles/radix-mira/button-link.json | 16 + .../r/styles/radix-mira/button-loading.json | 17 + .../r/styles/radix-mira/button-outline.json | 16 + .../r/styles/radix-mira/button-rounded.json | 16 + .../r/styles/radix-mira/button-secondary.json | 16 + .../r/styles/radix-mira/button-size.json | 16 + .../r/styles/radix-mira/button-with-icon.json | 16 + .../v4/public/r/styles/radix-mira/button.json | 2 +- .../r/styles/radix-mira/calendar-demo.json | 16 + .../r/styles/radix-mira/calendar-example.json | 2 +- .../r/styles/radix-mira/calendar-hijri.json | 16 + .../public/r/styles/radix-mira/calendar.json | 2 +- .../public/r/styles/radix-mira/card-demo.json | 19 + .../r/styles/radix-mira/card-example.json | 2 +- apps/v4/public/r/styles/radix-mira/card.json | 2 +- .../r/styles/radix-mira/carousel-api.json | 17 + .../r/styles/radix-mira/carousel-demo.json | 17 + .../r/styles/radix-mira/carousel-example.json | 2 +- .../radix-mira/carousel-orientation.json | 17 + .../r/styles/radix-mira/carousel-plugin.json | 17 + .../r/styles/radix-mira/carousel-size.json | 17 + .../r/styles/radix-mira/carousel-spacing.json | 17 + .../public/r/styles/radix-mira/carousel.json | 2 +- .../radix-mira/chart-bar-demo-axis.json | 16 + .../radix-mira/chart-bar-demo-grid.json | 16 + .../radix-mira/chart-bar-demo-legend.json | 16 + .../radix-mira/chart-bar-demo-tooltip.json | 16 + .../r/styles/radix-mira/chart-bar-demo.json | 16 + .../r/styles/radix-mira/chart-example.json | 2 +- apps/v4/public/r/styles/radix-mira/chart.json | 2 +- .../public/r/styles/radix-mira/chatgpt.json | 2 +- .../r/styles/radix-mira/checkbox-demo.json | 17 + .../styles/radix-mira/checkbox-disabled.json | 16 + .../r/styles/radix-mira/checkbox-example.json | 2 +- .../styles/radix-mira/checkbox-with-text.json | 16 + .../public/r/styles/radix-mira/checkbox.json | 2 +- .../r/styles/radix-mira/collapsible-demo.json | 17 + .../radix-mira/collapsible-example.json | 2 +- .../r/styles/radix-mira/combobox-demo.json | 18 + .../radix-mira/combobox-dropdown-menu.json | 18 + .../r/styles/radix-mira/combobox-example.json | 2 +- .../r/styles/radix-mira/combobox-popover.json | 18 + .../radix-mira/combobox-responsive.json | 6 +- .../public/r/styles/radix-mira/combobox.json | 2 +- .../r/styles/radix-mira/command-demo.json | 16 + .../r/styles/radix-mira/command-dialog.json | 16 + .../r/styles/radix-mira/command-example.json | 2 +- .../public/r/styles/radix-mira/command.json | 2 +- .../styles/radix-mira/component-example.json | 2 +- .../styles/radix-mira/context-menu-demo.json | 16 + .../radix-mira/context-menu-example.json | 2 +- .../r/styles/radix-mira/context-menu.json | 2 +- .../r/styles/radix-mira/data-table-demo.json | 20 + .../r/styles/radix-mira/date-picker-demo.json | 18 + .../radix-mira/date-picker-with-presets.json | 19 + .../radix-mira/date-picker-with-range.json | 18 + .../radix-mira/dialog-close-button.json | 19 + .../r/styles/radix-mira/dialog-demo.json | 19 + .../r/styles/radix-mira/dialog-example.json | 2 +- .../v4/public/r/styles/radix-mira/dialog.json | 2 +- .../r/styles/radix-mira/drawer-demo.json | 17 + .../r/styles/radix-mira/drawer-dialog.json | 20 + .../r/styles/radix-mira/drawer-example.json | 2 +- .../v4/public/r/styles/radix-mira/drawer.json | 2 +- .../radix-mira/dropdown-menu-checkboxes.json | 17 + .../styles/radix-mira/dropdown-menu-demo.json | 17 + .../radix-mira/dropdown-menu-dialog.json | 22 + .../radix-mira/dropdown-menu-example.json | 2 +- .../radix-mira/dropdown-menu-radio-group.json | 17 + .../r/styles/radix-mira/dropdown-menu.json | 2 +- .../r/styles/radix-mira/elevenlabs.json | 2 +- .../styles/radix-mira/empty-avatar-group.json | 18 + .../r/styles/radix-mira/empty-avatar.json | 18 + .../r/styles/radix-mira/empty-background.json | 17 + .../r/styles/radix-mira/empty-demo.json | 17 + .../r/styles/radix-mira/empty-example.json | 2 +- .../r/styles/radix-mira/empty-icon.json | 16 + .../styles/radix-mira/empty-input-group.json | 18 + .../r/styles/radix-mira/empty-outline.json | 17 + apps/v4/public/r/styles/radix-mira/empty.json | 2 +- .../public/r/styles/radix-mira/example.json | 2 +- .../r/styles/radix-mira/field-checkbox.json | 17 + .../styles/radix-mira/field-choice-card.json | 17 + .../r/styles/radix-mira/field-demo.json | 21 + .../r/styles/radix-mira/field-example.json | 2 +- .../r/styles/radix-mira/field-fieldset.json | 17 + .../r/styles/radix-mira/field-group.json | 17 + .../r/styles/radix-mira/field-input.json | 17 + .../r/styles/radix-mira/field-radio.json | 17 + .../r/styles/radix-mira/field-responsive.json | 19 + .../r/styles/radix-mira/field-select.json | 17 + .../r/styles/radix-mira/field-slider.json | 17 + .../r/styles/radix-mira/field-switch.json | 17 + .../r/styles/radix-mira/field-textarea.json | 17 + apps/v4/public/r/styles/radix-mira/field.json | 2 +- .../v4/public/r/styles/radix-mira/github.json | 2 +- .../r/styles/radix-mira/hover-card-demo.json | 18 + .../styles/radix-mira/hover-card-example.json | 2 +- .../r/styles/radix-mira/hover-card.json | 2 +- .../r/styles/radix-mira/input-demo.json | 16 + .../r/styles/radix-mira/input-disabled.json | 16 + .../r/styles/radix-mira/input-example.json | 2 +- .../r/styles/radix-mira/input-file.json | 17 + .../radix-mira/input-group-button-group.json | 18 + .../styles/radix-mira/input-group-button.json | 16 + .../styles/radix-mira/input-group-custom.json | 16 + .../r/styles/radix-mira/input-group-demo.json | 19 + .../radix-mira/input-group-dropdown.json | 17 + .../radix-mira/input-group-example.json | 2 +- .../r/styles/radix-mira/input-group-icon.json | 16 + .../styles/radix-mira/input-group-label.json | 17 + .../radix-mira/input-group-spinner.json | 17 + .../r/styles/radix-mira/input-group-text.json | 16 + .../radix-mira/input-group-textarea.json | 16 + .../radix-mira/input-group-tooltip.json | 17 + .../r/styles/radix-mira/input-group.json | 2 +- .../radix-mira/input-otp-controlled.json | 16 + .../r/styles/radix-mira/input-otp-demo.json | 16 + .../styles/radix-mira/input-otp-example.json | 2 +- .../styles/radix-mira/input-otp-pattern.json | 16 + .../radix-mira/input-otp-separator.json | 16 + .../public/r/styles/radix-mira/input-otp.json | 2 +- .../styles/radix-mira/input-with-button.json | 17 + .../r/styles/radix-mira/input-with-label.json | 17 + .../r/styles/radix-mira/input-with-text.json | 17 + apps/v4/public/r/styles/radix-mira/input.json | 2 +- .../r/styles/radix-mira/item-avatar.json | 18 + .../public/r/styles/radix-mira/item-demo.json | 17 + .../r/styles/radix-mira/item-dropdown.json | 18 + .../r/styles/radix-mira/item-example.json | 2 +- .../r/styles/radix-mira/item-group.json | 18 + .../r/styles/radix-mira/item-header.json | 16 + .../public/r/styles/radix-mira/item-icon.json | 17 + .../r/styles/radix-mira/item-image.json | 16 + .../public/r/styles/radix-mira/item-link.json | 16 + .../public/r/styles/radix-mira/item-size.json | 17 + .../r/styles/radix-mira/item-variant.json | 16 + apps/v4/public/r/styles/radix-mira/item.json | 2 +- .../r/styles/radix-mira/kbd-button.json | 17 + .../public/r/styles/radix-mira/kbd-demo.json | 16 + .../r/styles/radix-mira/kbd-example.json | 2 +- .../public/r/styles/radix-mira/kbd-group.json | 16 + .../r/styles/radix-mira/kbd-input-group.json | 17 + .../r/styles/radix-mira/kbd-tooltip.json | 19 + apps/v4/public/r/styles/radix-mira/kbd.json | 2 +- .../r/styles/radix-mira/label-demo.json | 17 + .../r/styles/radix-mira/label-example.json | 2 +- apps/v4/public/r/styles/radix-mira/label.json | 2 +- .../r/styles/radix-mira/menubar-demo.json | 16 + .../r/styles/radix-mira/menubar-example.json | 2 +- .../public/r/styles/radix-mira/menubar.json | 2 +- .../styles/radix-mira/native-select-demo.json | 16 + .../radix-mira/native-select-disabled.json | 16 + .../radix-mira/native-select-example.json | 2 +- .../radix-mira/native-select-groups.json | 16 + .../radix-mira/native-select-invalid.json | 16 + .../r/styles/radix-mira/native-select.json | 2 +- .../radix-mira/navigation-menu-demo.json | 16 + .../radix-mira/navigation-menu-example.json | 2 +- .../r/styles/radix-mira/navigation-menu.json | 2 +- .../r/styles/radix-mira/pagination-demo.json | 16 + .../styles/radix-mira/pagination-example.json | 2 +- .../r/styles/radix-mira/pagination.json | 2 +- .../r/styles/radix-mira/popover-demo.json | 19 + .../r/styles/radix-mira/popover-example.json | 2 +- .../public/r/styles/radix-mira/popover.json | 2 +- .../public/r/styles/radix-mira/preview.json | 2 +- .../r/styles/radix-mira/progress-demo.json | 16 + .../r/styles/radix-mira/progress-example.json | 2 +- .../public/r/styles/radix-mira/progress.json | 2 +- .../r/styles/radix-mira/radio-group-demo.json | 6 +- .../radix-mira/radio-group-example.json | 2 +- .../r/styles/radix-mira/radio-group.json | 2 +- .../public/r/styles/radix-mira/registry.json | 2962 +++- .../resizable-demo-with-handle.json | 16 + .../r/styles/radix-mira/resizable-demo.json | 16 + .../styles/radix-mira/resizable-example.json | 2 +- .../r/styles/radix-mira/resizable-handle.json | 16 + .../styles/radix-mira/resizable-vertical.json | 16 + .../public/r/styles/radix-mira/resizable.json | 2 +- .../r/styles/radix-mira/scroll-area-demo.json | 17 + .../radix-mira/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/radix-mira/scroll-area.json | 2 +- .../r/styles/radix-mira/select-demo.json | 16 + .../r/styles/radix-mira/select-example.json | 2 +- .../styles/radix-mira/select-scrollable.json | 16 + .../v4/public/r/styles/radix-mira/select.json | 2 +- .../r/styles/radix-mira/separator-demo.json | 2 +- .../styles/radix-mira/separator-example.json | 2 +- .../public/r/styles/radix-mira/separator.json | 2 +- .../r/styles/radix-mira/sheet-demo.json | 6 +- .../r/styles/radix-mira/sheet-example.json | 2 +- .../r/styles/radix-mira/sheet-side.json | 6 +- apps/v4/public/r/styles/radix-mira/sheet.json | 2 +- .../r/styles/radix-mira/sidebar-example.json | 2 +- .../radix-mira/sidebar-floating-example.json | 2 +- .../radix-mira/sidebar-icon-example.json | 2 +- .../radix-mira/sidebar-inset-example.json | 2 +- .../public/r/styles/radix-mira/sidebar.json | 2 +- apps/v4/public/r/styles/radix-mira/sink.json | 2 +- .../r/styles/radix-mira/skeleton-card.json | 16 + .../r/styles/radix-mira/skeleton-demo.json | 16 + .../r/styles/radix-mira/skeleton-example.json | 2 +- .../public/r/styles/radix-mira/skeleton.json | 2 +- .../r/styles/radix-mira/slider-demo.json | 16 + .../r/styles/radix-mira/slider-example.json | 2 +- .../v4/public/r/styles/radix-mira/slider.json | 2 +- .../r/styles/radix-mira/sonner-demo.json | 17 + .../r/styles/radix-mira/sonner-example.json | 2 +- .../r/styles/radix-mira/sonner-types.json | 17 + .../r/styles/radix-mira/spinner-badge.json | 17 + .../r/styles/radix-mira/spinner-basic.json | 16 + .../r/styles/radix-mira/spinner-button.json | 17 + .../r/styles/radix-mira/spinner-color.json | 16 + .../r/styles/radix-mira/spinner-custom.json | 16 + .../r/styles/radix-mira/spinner-demo.json | 16 + .../r/styles/radix-mira/spinner-empty.json | 17 + .../r/styles/radix-mira/spinner-example.json | 2 +- .../radix-mira/spinner-input-group.json | 17 + .../r/styles/radix-mira/spinner-item.json | 19 + .../r/styles/radix-mira/spinner-size.json | 16 + .../public/r/styles/radix-mira/spinner.json | 2 +- .../r/styles/radix-mira/switch-demo.json | 17 + .../r/styles/radix-mira/switch-example.json | 2 +- .../v4/public/r/styles/radix-mira/switch.json | 2 +- .../r/styles/radix-mira/table-demo.json | 16 + .../r/styles/radix-mira/table-example.json | 2 +- apps/v4/public/r/styles/radix-mira/table.json | 2 +- .../public/r/styles/radix-mira/tabs-demo.json | 20 + .../r/styles/radix-mira/tabs-example.json | 2 +- apps/v4/public/r/styles/radix-mira/tabs.json | 2 +- .../r/styles/radix-mira/textarea-demo.json | 2 +- .../styles/radix-mira/textarea-disabled.json | 2 +- .../r/styles/radix-mira/textarea-example.json | 2 +- .../radix-mira/textarea-with-button.json | 6 +- .../radix-mira/textarea-with-label.json | 6 +- .../styles/radix-mira/textarea-with-text.json | 6 +- .../public/r/styles/radix-mira/textarea.json | 2 +- .../r/styles/radix-mira/toggle-demo.json | 16 + .../r/styles/radix-mira/toggle-disabled.json | 16 + .../r/styles/radix-mira/toggle-example.json | 2 +- .../styles/radix-mira/toggle-group-demo.json | 16 + .../radix-mira/toggle-group-disabled.json | 16 + .../radix-mira/toggle-group-example.json | 2 +- .../r/styles/radix-mira/toggle-group-lg.json | 16 + .../radix-mira/toggle-group-outline.json | 16 + .../radix-mira/toggle-group-single.json | 16 + .../r/styles/radix-mira/toggle-group-sm.json | 16 + .../radix-mira/toggle-group-spacing.json | 16 + .../r/styles/radix-mira/toggle-group.json | 2 +- .../public/r/styles/radix-mira/toggle-lg.json | 16 + .../r/styles/radix-mira/toggle-outline.json | 16 + .../public/r/styles/radix-mira/toggle-sm.json | 16 + .../r/styles/radix-mira/toggle-with-text.json | 16 + .../v4/public/r/styles/radix-mira/toggle.json | 2 +- .../r/styles/radix-mira/tooltip-demo.json | 17 + .../r/styles/radix-mira/tooltip-example.json | 2 +- .../public/r/styles/radix-mira/tooltip.json | 2 +- .../radix-mira/typography-blockquote.json | 14 + .../r/styles/radix-mira/typography-demo.json | 14 + .../r/styles/radix-mira/typography-h1.json | 14 + .../r/styles/radix-mira/typography-h2.json | 14 + .../r/styles/radix-mira/typography-h3.json | 14 + .../r/styles/radix-mira/typography-h4.json | 14 + .../radix-mira/typography-inline-code.json | 14 + .../r/styles/radix-mira/typography-large.json | 14 + .../r/styles/radix-mira/typography-lead.json | 14 + .../r/styles/radix-mira/typography-list.json | 14 + .../r/styles/radix-mira/typography-muted.json | 14 + .../r/styles/radix-mira/typography-p.json | 14 + .../r/styles/radix-mira/typography-small.json | 14 + .../r/styles/radix-mira/typography-table.json | 14 + .../v4/public/r/styles/radix-mira/vercel.json | 2 +- .../styles/radix-nova/accordion-example.json | 2 +- .../public/r/styles/radix-nova/accordion.json | 2 +- .../r/styles/radix-nova/alert-demo.json | 16 + .../styles/radix-nova/alert-destructive.json | 16 + .../styles/radix-nova/alert-dialog-demo.json | 17 + .../radix-nova/alert-dialog-example.json | 2 +- .../r/styles/radix-nova/alert-dialog.json | 2 +- .../r/styles/radix-nova/alert-example.json | 2 +- apps/v4/public/r/styles/radix-nova/alert.json | 2 +- .../styles/radix-nova/aspect-ratio-demo.json | 16 + .../radix-nova/aspect-ratio-example.json | 2 +- .../r/styles/radix-nova/avatar-demo.json | 16 + .../r/styles/radix-nova/avatar-example.json | 2 +- .../v4/public/r/styles/radix-nova/avatar.json | 2 +- .../r/styles/radix-nova/badge-demo.json | 16 + .../styles/radix-nova/badge-destructive.json | 16 + .../r/styles/radix-nova/badge-example.json | 2 +- .../r/styles/radix-nova/badge-outline.json | 16 + .../r/styles/radix-nova/badge-secondary.json | 16 + apps/v4/public/r/styles/radix-nova/badge.json | 2 +- .../r/styles/radix-nova/breadcrumb-demo.json | 17 + .../radix-nova/breadcrumb-dropdown.json | 17 + .../radix-nova/breadcrumb-ellipsis.json | 17 + .../styles/radix-nova/breadcrumb-example.json | 2 +- .../r/styles/radix-nova/breadcrumb-link.json | 16 + .../radix-nova/breadcrumb-responsive.json | 19 + .../radix-nova/breadcrumb-separator.json | 16 + .../r/styles/radix-nova/breadcrumb.json | 2 +- .../r/styles/radix-nova/button-as-child.json | 16 + .../r/styles/radix-nova/button-default.json | 16 + .../r/styles/radix-nova/button-demo.json | 16 + .../styles/radix-nova/button-destructive.json | 16 + .../r/styles/radix-nova/button-example.json | 2 +- .../r/styles/radix-nova/button-ghost.json | 16 + .../styles/radix-nova/button-group-demo.json | 17 + .../radix-nova/button-group-dropdown.json | 18 + .../radix-nova/button-group-example.json | 2 +- .../radix-nova/button-group-input-group.json | 18 + .../styles/radix-nova/button-group-input.json | 18 + .../radix-nova/button-group-nested.json | 17 + .../radix-nova/button-group-orientation.json | 17 + .../radix-nova/button-group-popover.json | 20 + .../radix-nova/button-group-select.json | 19 + .../radix-nova/button-group-separator.json | 17 + .../styles/radix-nova/button-group-size.json | 17 + .../styles/radix-nova/button-group-split.json | 18 + .../r/styles/radix-nova/button-group.json | 2 +- .../r/styles/radix-nova/button-icon.json | 16 + .../r/styles/radix-nova/button-link.json | 16 + .../r/styles/radix-nova/button-loading.json | 17 + .../r/styles/radix-nova/button-outline.json | 16 + .../r/styles/radix-nova/button-rounded.json | 16 + .../r/styles/radix-nova/button-secondary.json | 16 + .../r/styles/radix-nova/button-size.json | 16 + .../r/styles/radix-nova/button-with-icon.json | 16 + .../v4/public/r/styles/radix-nova/button.json | 2 +- .../r/styles/radix-nova/calendar-demo.json | 16 + .../r/styles/radix-nova/calendar-example.json | 2 +- .../r/styles/radix-nova/calendar-hijri.json | 16 + .../public/r/styles/radix-nova/calendar.json | 2 +- .../public/r/styles/radix-nova/card-demo.json | 19 + .../r/styles/radix-nova/card-example.json | 2 +- apps/v4/public/r/styles/radix-nova/card.json | 2 +- .../r/styles/radix-nova/carousel-api.json | 17 + .../r/styles/radix-nova/carousel-demo.json | 17 + .../r/styles/radix-nova/carousel-example.json | 2 +- .../radix-nova/carousel-orientation.json | 17 + .../r/styles/radix-nova/carousel-plugin.json | 17 + .../r/styles/radix-nova/carousel-size.json | 17 + .../r/styles/radix-nova/carousel-spacing.json | 17 + .../public/r/styles/radix-nova/carousel.json | 2 +- .../radix-nova/chart-bar-demo-axis.json | 16 + .../radix-nova/chart-bar-demo-grid.json | 16 + .../radix-nova/chart-bar-demo-legend.json | 16 + .../radix-nova/chart-bar-demo-tooltip.json | 16 + .../r/styles/radix-nova/chart-bar-demo.json | 16 + .../r/styles/radix-nova/chart-example.json | 2 +- apps/v4/public/r/styles/radix-nova/chart.json | 2 +- .../public/r/styles/radix-nova/chatgpt.json | 2 +- .../r/styles/radix-nova/checkbox-demo.json | 17 + .../styles/radix-nova/checkbox-disabled.json | 16 + .../r/styles/radix-nova/checkbox-example.json | 2 +- .../styles/radix-nova/checkbox-with-text.json | 16 + .../public/r/styles/radix-nova/checkbox.json | 2 +- .../r/styles/radix-nova/collapsible-demo.json | 17 + .../radix-nova/collapsible-example.json | 2 +- .../r/styles/radix-nova/combobox-demo.json | 18 + .../radix-nova/combobox-dropdown-menu.json | 18 + .../r/styles/radix-nova/combobox-example.json | 2 +- .../r/styles/radix-nova/combobox-popover.json | 18 + .../radix-nova/combobox-responsive.json | 4 +- .../public/r/styles/radix-nova/combobox.json | 2 +- .../r/styles/radix-nova/command-demo.json | 16 + .../r/styles/radix-nova/command-dialog.json | 16 + .../r/styles/radix-nova/command-example.json | 2 +- .../public/r/styles/radix-nova/command.json | 2 +- .../styles/radix-nova/component-example.json | 2 +- .../styles/radix-nova/context-menu-demo.json | 16 + .../radix-nova/context-menu-example.json | 2 +- .../r/styles/radix-nova/context-menu.json | 2 +- .../r/styles/radix-nova/data-table-demo.json | 20 + .../r/styles/radix-nova/date-picker-demo.json | 18 + .../radix-nova/date-picker-with-presets.json | 19 + .../radix-nova/date-picker-with-range.json | 18 + .../radix-nova/dialog-close-button.json | 19 + .../r/styles/radix-nova/dialog-demo.json | 19 + .../r/styles/radix-nova/dialog-example.json | 2 +- .../v4/public/r/styles/radix-nova/dialog.json | 2 +- .../r/styles/radix-nova/drawer-demo.json | 17 + .../r/styles/radix-nova/drawer-dialog.json | 20 + .../r/styles/radix-nova/drawer-example.json | 2 +- .../v4/public/r/styles/radix-nova/drawer.json | 2 +- .../radix-nova/dropdown-menu-checkboxes.json | 17 + .../styles/radix-nova/dropdown-menu-demo.json | 17 + .../radix-nova/dropdown-menu-dialog.json | 22 + .../radix-nova/dropdown-menu-example.json | 2 +- .../radix-nova/dropdown-menu-radio-group.json | 17 + .../r/styles/radix-nova/dropdown-menu.json | 2 +- .../r/styles/radix-nova/elevenlabs.json | 2 +- .../styles/radix-nova/empty-avatar-group.json | 18 + .../r/styles/radix-nova/empty-avatar.json | 18 + .../r/styles/radix-nova/empty-background.json | 17 + .../r/styles/radix-nova/empty-demo.json | 17 + .../r/styles/radix-nova/empty-example.json | 2 +- .../r/styles/radix-nova/empty-icon.json | 16 + .../styles/radix-nova/empty-input-group.json | 18 + .../r/styles/radix-nova/empty-outline.json | 17 + apps/v4/public/r/styles/radix-nova/empty.json | 2 +- .../public/r/styles/radix-nova/example.json | 2 +- .../r/styles/radix-nova/field-checkbox.json | 17 + .../styles/radix-nova/field-choice-card.json | 17 + .../r/styles/radix-nova/field-demo.json | 21 + .../r/styles/radix-nova/field-example.json | 2 +- .../r/styles/radix-nova/field-fieldset.json | 17 + .../r/styles/radix-nova/field-group.json | 17 + .../r/styles/radix-nova/field-input.json | 17 + .../r/styles/radix-nova/field-radio.json | 17 + .../r/styles/radix-nova/field-responsive.json | 19 + .../r/styles/radix-nova/field-select.json | 17 + .../r/styles/radix-nova/field-slider.json | 17 + .../r/styles/radix-nova/field-switch.json | 17 + .../r/styles/radix-nova/field-textarea.json | 17 + apps/v4/public/r/styles/radix-nova/field.json | 2 +- .../v4/public/r/styles/radix-nova/github.json | 2 +- .../r/styles/radix-nova/hover-card-demo.json | 18 + .../styles/radix-nova/hover-card-example.json | 2 +- .../r/styles/radix-nova/hover-card.json | 2 +- .../r/styles/radix-nova/input-demo.json | 16 + .../r/styles/radix-nova/input-disabled.json | 16 + .../r/styles/radix-nova/input-example.json | 2 +- .../r/styles/radix-nova/input-file.json | 17 + .../radix-nova/input-group-button-group.json | 18 + .../styles/radix-nova/input-group-button.json | 16 + .../styles/radix-nova/input-group-custom.json | 16 + .../r/styles/radix-nova/input-group-demo.json | 19 + .../radix-nova/input-group-dropdown.json | 17 + .../radix-nova/input-group-example.json | 2 +- .../r/styles/radix-nova/input-group-icon.json | 16 + .../styles/radix-nova/input-group-label.json | 17 + .../radix-nova/input-group-spinner.json | 17 + .../r/styles/radix-nova/input-group-text.json | 16 + .../radix-nova/input-group-textarea.json | 16 + .../radix-nova/input-group-tooltip.json | 17 + .../r/styles/radix-nova/input-group.json | 2 +- .../radix-nova/input-otp-controlled.json | 16 + .../r/styles/radix-nova/input-otp-demo.json | 16 + .../styles/radix-nova/input-otp-example.json | 2 +- .../styles/radix-nova/input-otp-pattern.json | 16 + .../radix-nova/input-otp-separator.json | 16 + .../public/r/styles/radix-nova/input-otp.json | 2 +- .../styles/radix-nova/input-with-button.json | 17 + .../r/styles/radix-nova/input-with-label.json | 17 + .../r/styles/radix-nova/input-with-text.json | 17 + apps/v4/public/r/styles/radix-nova/input.json | 2 +- .../r/styles/radix-nova/item-avatar.json | 18 + .../public/r/styles/radix-nova/item-demo.json | 17 + .../r/styles/radix-nova/item-dropdown.json | 18 + .../r/styles/radix-nova/item-example.json | 2 +- .../r/styles/radix-nova/item-group.json | 18 + .../r/styles/radix-nova/item-header.json | 16 + .../public/r/styles/radix-nova/item-icon.json | 17 + .../r/styles/radix-nova/item-image.json | 16 + .../public/r/styles/radix-nova/item-link.json | 16 + .../public/r/styles/radix-nova/item-size.json | 17 + .../r/styles/radix-nova/item-variant.json | 16 + apps/v4/public/r/styles/radix-nova/item.json | 2 +- .../r/styles/radix-nova/kbd-button.json | 17 + .../public/r/styles/radix-nova/kbd-demo.json | 16 + .../r/styles/radix-nova/kbd-example.json | 2 +- .../public/r/styles/radix-nova/kbd-group.json | 16 + .../r/styles/radix-nova/kbd-input-group.json | 17 + .../r/styles/radix-nova/kbd-tooltip.json | 19 + apps/v4/public/r/styles/radix-nova/kbd.json | 2 +- .../r/styles/radix-nova/label-demo.json | 17 + .../r/styles/radix-nova/label-example.json | 2 +- apps/v4/public/r/styles/radix-nova/label.json | 2 +- .../r/styles/radix-nova/menubar-demo.json | 16 + .../r/styles/radix-nova/menubar-example.json | 2 +- .../public/r/styles/radix-nova/menubar.json | 2 +- .../styles/radix-nova/native-select-demo.json | 16 + .../radix-nova/native-select-disabled.json | 16 + .../radix-nova/native-select-example.json | 2 +- .../radix-nova/native-select-groups.json | 16 + .../radix-nova/native-select-invalid.json | 16 + .../r/styles/radix-nova/native-select.json | 2 +- .../radix-nova/navigation-menu-demo.json | 16 + .../radix-nova/navigation-menu-example.json | 2 +- .../r/styles/radix-nova/navigation-menu.json | 2 +- .../r/styles/radix-nova/pagination-demo.json | 16 + .../styles/radix-nova/pagination-example.json | 2 +- .../r/styles/radix-nova/pagination.json | 2 +- .../r/styles/radix-nova/popover-demo.json | 19 + .../r/styles/radix-nova/popover-example.json | 2 +- .../public/r/styles/radix-nova/popover.json | 2 +- .../public/r/styles/radix-nova/preview.json | 2 +- .../r/styles/radix-nova/progress-demo.json | 16 + .../r/styles/radix-nova/progress-example.json | 2 +- .../public/r/styles/radix-nova/progress.json | 2 +- .../r/styles/radix-nova/radio-group-demo.json | 4 +- .../radix-nova/radio-group-example.json | 2 +- .../r/styles/radix-nova/radio-group.json | 2 +- .../public/r/styles/radix-nova/registry.json | 2962 +++- .../resizable-demo-with-handle.json | 16 + .../r/styles/radix-nova/resizable-demo.json | 16 + .../styles/radix-nova/resizable-example.json | 2 +- .../r/styles/radix-nova/resizable-handle.json | 16 + .../styles/radix-nova/resizable-vertical.json | 16 + .../public/r/styles/radix-nova/resizable.json | 2 +- .../r/styles/radix-nova/scroll-area-demo.json | 17 + .../radix-nova/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/radix-nova/scroll-area.json | 2 +- .../r/styles/radix-nova/select-demo.json | 16 + .../r/styles/radix-nova/select-example.json | 2 +- .../styles/radix-nova/select-scrollable.json | 16 + .../v4/public/r/styles/radix-nova/select.json | 2 +- .../styles/radix-nova/separator-example.json | 2 +- .../public/r/styles/radix-nova/separator.json | 2 +- .../r/styles/radix-nova/sheet-demo.json | 4 +- .../r/styles/radix-nova/sheet-example.json | 2 +- .../r/styles/radix-nova/sheet-side.json | 4 +- apps/v4/public/r/styles/radix-nova/sheet.json | 2 +- .../r/styles/radix-nova/sidebar-example.json | 2 +- .../radix-nova/sidebar-floating-example.json | 2 +- .../radix-nova/sidebar-icon-example.json | 2 +- .../radix-nova/sidebar-inset-example.json | 2 +- .../public/r/styles/radix-nova/sidebar.json | 2 +- apps/v4/public/r/styles/radix-nova/sink.json | 2 +- .../r/styles/radix-nova/skeleton-card.json | 16 + .../r/styles/radix-nova/skeleton-demo.json | 16 + .../r/styles/radix-nova/skeleton-example.json | 2 +- .../public/r/styles/radix-nova/skeleton.json | 2 +- .../r/styles/radix-nova/slider-demo.json | 16 + .../r/styles/radix-nova/slider-example.json | 2 +- .../v4/public/r/styles/radix-nova/slider.json | 2 +- .../r/styles/radix-nova/sonner-demo.json | 17 + .../r/styles/radix-nova/sonner-example.json | 2 +- .../r/styles/radix-nova/sonner-types.json | 17 + .../r/styles/radix-nova/spinner-badge.json | 17 + .../r/styles/radix-nova/spinner-basic.json | 16 + .../r/styles/radix-nova/spinner-button.json | 17 + .../r/styles/radix-nova/spinner-color.json | 16 + .../r/styles/radix-nova/spinner-custom.json | 16 + .../r/styles/radix-nova/spinner-demo.json | 16 + .../r/styles/radix-nova/spinner-empty.json | 17 + .../r/styles/radix-nova/spinner-example.json | 2 +- .../radix-nova/spinner-input-group.json | 17 + .../r/styles/radix-nova/spinner-item.json | 19 + .../r/styles/radix-nova/spinner-size.json | 16 + .../public/r/styles/radix-nova/spinner.json | 2 +- .../r/styles/radix-nova/switch-demo.json | 17 + .../r/styles/radix-nova/switch-example.json | 2 +- .../v4/public/r/styles/radix-nova/switch.json | 2 +- .../r/styles/radix-nova/table-demo.json | 16 + .../r/styles/radix-nova/table-example.json | 2 +- apps/v4/public/r/styles/radix-nova/table.json | 2 +- .../public/r/styles/radix-nova/tabs-demo.json | 20 + .../r/styles/radix-nova/tabs-example.json | 2 +- apps/v4/public/r/styles/radix-nova/tabs.json | 2 +- .../r/styles/radix-nova/textarea-example.json | 2 +- .../radix-nova/textarea-with-button.json | 4 +- .../radix-nova/textarea-with-label.json | 4 +- .../styles/radix-nova/textarea-with-text.json | 4 +- .../public/r/styles/radix-nova/textarea.json | 2 +- .../r/styles/radix-nova/toggle-demo.json | 16 + .../r/styles/radix-nova/toggle-disabled.json | 16 + .../r/styles/radix-nova/toggle-example.json | 2 +- .../styles/radix-nova/toggle-group-demo.json | 16 + .../radix-nova/toggle-group-disabled.json | 16 + .../radix-nova/toggle-group-example.json | 2 +- .../r/styles/radix-nova/toggle-group-lg.json | 16 + .../radix-nova/toggle-group-outline.json | 16 + .../radix-nova/toggle-group-single.json | 16 + .../r/styles/radix-nova/toggle-group-sm.json | 16 + .../radix-nova/toggle-group-spacing.json | 16 + .../r/styles/radix-nova/toggle-group.json | 2 +- .../public/r/styles/radix-nova/toggle-lg.json | 16 + .../r/styles/radix-nova/toggle-outline.json | 16 + .../public/r/styles/radix-nova/toggle-sm.json | 16 + .../r/styles/radix-nova/toggle-with-text.json | 16 + .../v4/public/r/styles/radix-nova/toggle.json | 2 +- .../r/styles/radix-nova/tooltip-demo.json | 17 + .../r/styles/radix-nova/tooltip-example.json | 2 +- .../public/r/styles/radix-nova/tooltip.json | 2 +- .../radix-nova/typography-blockquote.json | 14 + .../r/styles/radix-nova/typography-demo.json | 14 + .../r/styles/radix-nova/typography-h1.json | 14 + .../r/styles/radix-nova/typography-h2.json | 14 + .../r/styles/radix-nova/typography-h3.json | 14 + .../r/styles/radix-nova/typography-h4.json | 14 + .../radix-nova/typography-inline-code.json | 14 + .../r/styles/radix-nova/typography-large.json | 14 + .../r/styles/radix-nova/typography-lead.json | 14 + .../r/styles/radix-nova/typography-list.json | 14 + .../r/styles/radix-nova/typography-muted.json | 14 + .../r/styles/radix-nova/typography-p.json | 14 + .../r/styles/radix-nova/typography-small.json | 14 + .../r/styles/radix-nova/typography-table.json | 14 + .../v4/public/r/styles/radix-nova/vercel.json | 2 +- .../r/styles/radix-vega/accordion-demo.json | 2 +- .../styles/radix-vega/accordion-disabled.json | 2 +- .../styles/radix-vega/accordion-example.json | 2 +- .../styles/radix-vega/accordion-multiple.json | 2 +- .../public/r/styles/radix-vega/accordion.json | 2 +- .../r/styles/radix-vega/alert-demo.json | 16 + .../styles/radix-vega/alert-destructive.json | 16 + .../styles/radix-vega/alert-dialog-demo.json | 17 + .../radix-vega/alert-dialog-example.json | 2 +- .../r/styles/radix-vega/alert-dialog.json | 2 +- .../r/styles/radix-vega/alert-example.json | 2 +- apps/v4/public/r/styles/radix-vega/alert.json | 2 +- .../styles/radix-vega/aspect-ratio-demo.json | 16 + .../radix-vega/aspect-ratio-example.json | 2 +- .../r/styles/radix-vega/avatar-demo.json | 16 + .../r/styles/radix-vega/avatar-example.json | 2 +- .../v4/public/r/styles/radix-vega/avatar.json | 2 +- .../r/styles/radix-vega/badge-demo.json | 16 + .../styles/radix-vega/badge-destructive.json | 16 + .../r/styles/radix-vega/badge-example.json | 2 +- .../r/styles/radix-vega/badge-outline.json | 16 + .../r/styles/radix-vega/badge-secondary.json | 16 + apps/v4/public/r/styles/radix-vega/badge.json | 2 +- .../r/styles/radix-vega/breadcrumb-demo.json | 17 + .../radix-vega/breadcrumb-dropdown.json | 17 + .../radix-vega/breadcrumb-ellipsis.json | 17 + .../styles/radix-vega/breadcrumb-example.json | 2 +- .../r/styles/radix-vega/breadcrumb-link.json | 16 + .../radix-vega/breadcrumb-responsive.json | 19 + .../radix-vega/breadcrumb-separator.json | 16 + .../r/styles/radix-vega/breadcrumb.json | 2 +- .../r/styles/radix-vega/button-as-child.json | 16 + .../r/styles/radix-vega/button-default.json | 16 + .../r/styles/radix-vega/button-demo.json | 16 + .../styles/radix-vega/button-destructive.json | 16 + .../r/styles/radix-vega/button-example.json | 2 +- .../r/styles/radix-vega/button-ghost.json | 16 + .../styles/radix-vega/button-group-demo.json | 17 + .../radix-vega/button-group-dropdown.json | 18 + .../radix-vega/button-group-example.json | 2 +- .../radix-vega/button-group-input-group.json | 18 + .../styles/radix-vega/button-group-input.json | 18 + .../radix-vega/button-group-nested.json | 17 + .../radix-vega/button-group-orientation.json | 17 + .../radix-vega/button-group-popover.json | 20 + .../radix-vega/button-group-select.json | 19 + .../radix-vega/button-group-separator.json | 17 + .../styles/radix-vega/button-group-size.json | 17 + .../styles/radix-vega/button-group-split.json | 18 + .../r/styles/radix-vega/button-group.json | 2 +- .../r/styles/radix-vega/button-icon.json | 16 + .../r/styles/radix-vega/button-link.json | 16 + .../r/styles/radix-vega/button-loading.json | 17 + .../r/styles/radix-vega/button-outline.json | 16 + .../r/styles/radix-vega/button-rounded.json | 16 + .../r/styles/radix-vega/button-secondary.json | 16 + .../r/styles/radix-vega/button-size.json | 16 + .../r/styles/radix-vega/button-with-icon.json | 16 + .../v4/public/r/styles/radix-vega/button.json | 2 +- .../r/styles/radix-vega/calendar-demo.json | 16 + .../r/styles/radix-vega/calendar-example.json | 2 +- .../r/styles/radix-vega/calendar-hijri.json | 16 + .../public/r/styles/radix-vega/calendar.json | 2 +- .../public/r/styles/radix-vega/card-demo.json | 19 + .../r/styles/radix-vega/card-example.json | 2 +- apps/v4/public/r/styles/radix-vega/card.json | 2 +- .../r/styles/radix-vega/carousel-api.json | 17 + .../r/styles/radix-vega/carousel-demo.json | 17 + .../r/styles/radix-vega/carousel-example.json | 2 +- .../radix-vega/carousel-orientation.json | 17 + .../r/styles/radix-vega/carousel-plugin.json | 17 + .../r/styles/radix-vega/carousel-size.json | 17 + .../r/styles/radix-vega/carousel-spacing.json | 17 + .../public/r/styles/radix-vega/carousel.json | 2 +- .../radix-vega/chart-bar-demo-axis.json | 16 + .../radix-vega/chart-bar-demo-grid.json | 16 + .../radix-vega/chart-bar-demo-legend.json | 16 + .../radix-vega/chart-bar-demo-tooltip.json | 16 + .../r/styles/radix-vega/chart-bar-demo.json | 16 + .../r/styles/radix-vega/chart-example.json | 2 +- apps/v4/public/r/styles/radix-vega/chart.json | 2 +- .../public/r/styles/radix-vega/chatgpt.json | 2 +- .../r/styles/radix-vega/checkbox-demo.json | 17 + .../styles/radix-vega/checkbox-disabled.json | 16 + .../r/styles/radix-vega/checkbox-example.json | 2 +- .../styles/radix-vega/checkbox-with-text.json | 16 + .../public/r/styles/radix-vega/checkbox.json | 2 +- .../r/styles/radix-vega/collapsible-demo.json | 17 + .../radix-vega/collapsible-example.json | 2 +- .../r/styles/radix-vega/combobox-demo.json | 18 + .../radix-vega/combobox-dropdown-menu.json | 18 + .../r/styles/radix-vega/combobox-example.json | 2 +- .../r/styles/radix-vega/combobox-popover.json | 18 + .../radix-vega/combobox-responsive.json | 6 +- .../public/r/styles/radix-vega/combobox.json | 2 +- .../r/styles/radix-vega/command-demo.json | 16 + .../r/styles/radix-vega/command-dialog.json | 16 + .../r/styles/radix-vega/command-example.json | 2 +- .../public/r/styles/radix-vega/command.json | 2 +- .../styles/radix-vega/component-example.json | 2 +- .../styles/radix-vega/context-menu-demo.json | 16 + .../radix-vega/context-menu-example.json | 2 +- .../r/styles/radix-vega/context-menu.json | 2 +- .../r/styles/radix-vega/data-table-demo.json | 20 + .../r/styles/radix-vega/date-picker-demo.json | 18 + .../radix-vega/date-picker-with-presets.json | 19 + .../radix-vega/date-picker-with-range.json | 18 + .../radix-vega/dialog-close-button.json | 19 + .../r/styles/radix-vega/dialog-demo.json | 19 + .../r/styles/radix-vega/dialog-example.json | 2 +- .../v4/public/r/styles/radix-vega/dialog.json | 2 +- .../r/styles/radix-vega/drawer-demo.json | 17 + .../r/styles/radix-vega/drawer-dialog.json | 20 + .../r/styles/radix-vega/drawer-example.json | 2 +- .../v4/public/r/styles/radix-vega/drawer.json | 2 +- .../radix-vega/dropdown-menu-checkboxes.json | 17 + .../styles/radix-vega/dropdown-menu-demo.json | 17 + .../radix-vega/dropdown-menu-dialog.json | 22 + .../radix-vega/dropdown-menu-example.json | 2 +- .../radix-vega/dropdown-menu-radio-group.json | 17 + .../r/styles/radix-vega/dropdown-menu.json | 2 +- .../r/styles/radix-vega/elevenlabs.json | 2 +- .../styles/radix-vega/empty-avatar-group.json | 18 + .../r/styles/radix-vega/empty-avatar.json | 18 + .../r/styles/radix-vega/empty-background.json | 17 + .../r/styles/radix-vega/empty-demo.json | 17 + .../r/styles/radix-vega/empty-example.json | 2 +- .../r/styles/radix-vega/empty-icon.json | 16 + .../styles/radix-vega/empty-input-group.json | 18 + .../r/styles/radix-vega/empty-outline.json | 17 + apps/v4/public/r/styles/radix-vega/empty.json | 2 +- .../public/r/styles/radix-vega/example.json | 2 +- .../r/styles/radix-vega/field-checkbox.json | 17 + .../styles/radix-vega/field-choice-card.json | 17 + .../r/styles/radix-vega/field-demo.json | 21 + .../r/styles/radix-vega/field-example.json | 2 +- .../r/styles/radix-vega/field-fieldset.json | 17 + .../r/styles/radix-vega/field-group.json | 17 + .../r/styles/radix-vega/field-input.json | 17 + .../r/styles/radix-vega/field-radio.json | 17 + .../r/styles/radix-vega/field-responsive.json | 19 + .../r/styles/radix-vega/field-select.json | 17 + .../r/styles/radix-vega/field-slider.json | 17 + .../r/styles/radix-vega/field-switch.json | 17 + .../r/styles/radix-vega/field-textarea.json | 17 + apps/v4/public/r/styles/radix-vega/field.json | 2 +- .../v4/public/r/styles/radix-vega/github.json | 2 +- .../r/styles/radix-vega/hover-card-demo.json | 18 + .../styles/radix-vega/hover-card-example.json | 2 +- .../r/styles/radix-vega/hover-card.json | 2 +- .../r/styles/radix-vega/input-demo.json | 16 + .../r/styles/radix-vega/input-disabled.json | 16 + .../r/styles/radix-vega/input-example.json | 2 +- .../r/styles/radix-vega/input-file.json | 17 + .../radix-vega/input-group-button-group.json | 18 + .../styles/radix-vega/input-group-button.json | 16 + .../styles/radix-vega/input-group-custom.json | 16 + .../r/styles/radix-vega/input-group-demo.json | 19 + .../radix-vega/input-group-dropdown.json | 17 + .../radix-vega/input-group-example.json | 2 +- .../r/styles/radix-vega/input-group-icon.json | 16 + .../styles/radix-vega/input-group-label.json | 17 + .../radix-vega/input-group-spinner.json | 17 + .../r/styles/radix-vega/input-group-text.json | 16 + .../radix-vega/input-group-textarea.json | 16 + .../radix-vega/input-group-tooltip.json | 17 + .../r/styles/radix-vega/input-group.json | 2 +- .../radix-vega/input-otp-controlled.json | 16 + .../r/styles/radix-vega/input-otp-demo.json | 16 + .../styles/radix-vega/input-otp-example.json | 2 +- .../styles/radix-vega/input-otp-pattern.json | 16 + .../radix-vega/input-otp-separator.json | 16 + .../public/r/styles/radix-vega/input-otp.json | 2 +- .../styles/radix-vega/input-with-button.json | 17 + .../r/styles/radix-vega/input-with-label.json | 17 + .../r/styles/radix-vega/input-with-text.json | 17 + apps/v4/public/r/styles/radix-vega/input.json | 2 +- .../r/styles/radix-vega/item-avatar.json | 18 + .../public/r/styles/radix-vega/item-demo.json | 17 + .../r/styles/radix-vega/item-dropdown.json | 18 + .../r/styles/radix-vega/item-example.json | 2 +- .../r/styles/radix-vega/item-group.json | 18 + .../r/styles/radix-vega/item-header.json | 16 + .../public/r/styles/radix-vega/item-icon.json | 17 + .../r/styles/radix-vega/item-image.json | 16 + .../public/r/styles/radix-vega/item-link.json | 16 + .../public/r/styles/radix-vega/item-size.json | 17 + .../r/styles/radix-vega/item-variant.json | 16 + apps/v4/public/r/styles/radix-vega/item.json | 2 +- .../r/styles/radix-vega/kbd-button.json | 17 + .../public/r/styles/radix-vega/kbd-demo.json | 16 + .../r/styles/radix-vega/kbd-example.json | 2 +- .../public/r/styles/radix-vega/kbd-group.json | 16 + .../r/styles/radix-vega/kbd-input-group.json | 17 + .../r/styles/radix-vega/kbd-tooltip.json | 19 + apps/v4/public/r/styles/radix-vega/kbd.json | 2 +- .../r/styles/radix-vega/label-demo.json | 17 + .../r/styles/radix-vega/label-example.json | 2 +- apps/v4/public/r/styles/radix-vega/label.json | 2 +- .../r/styles/radix-vega/menubar-demo.json | 16 + .../r/styles/radix-vega/menubar-example.json | 2 +- .../public/r/styles/radix-vega/menubar.json | 2 +- .../styles/radix-vega/native-select-demo.json | 16 + .../radix-vega/native-select-disabled.json | 16 + .../radix-vega/native-select-example.json | 2 +- .../radix-vega/native-select-groups.json | 16 + .../radix-vega/native-select-invalid.json | 16 + .../r/styles/radix-vega/native-select.json | 2 +- .../radix-vega/navigation-menu-demo.json | 16 + .../radix-vega/navigation-menu-example.json | 2 +- .../r/styles/radix-vega/navigation-menu.json | 2 +- .../r/styles/radix-vega/pagination-demo.json | 16 + .../styles/radix-vega/pagination-example.json | 2 +- .../r/styles/radix-vega/pagination.json | 2 +- .../r/styles/radix-vega/popover-demo.json | 19 + .../r/styles/radix-vega/popover-example.json | 2 +- .../public/r/styles/radix-vega/popover.json | 2 +- .../public/r/styles/radix-vega/preview.json | 2 +- .../r/styles/radix-vega/progress-demo.json | 16 + .../r/styles/radix-vega/progress-example.json | 2 +- .../public/r/styles/radix-vega/progress.json | 2 +- .../r/styles/radix-vega/radio-group-demo.json | 6 +- .../radix-vega/radio-group-example.json | 2 +- .../r/styles/radix-vega/radio-group.json | 2 +- .../public/r/styles/radix-vega/registry.json | 2962 +++- .../resizable-demo-with-handle.json | 16 + .../r/styles/radix-vega/resizable-demo.json | 16 + .../styles/radix-vega/resizable-example.json | 2 +- .../r/styles/radix-vega/resizable-handle.json | 16 + .../styles/radix-vega/resizable-vertical.json | 16 + .../public/r/styles/radix-vega/resizable.json | 2 +- .../r/styles/radix-vega/scroll-area-demo.json | 17 + .../radix-vega/scroll-area-example.json | 2 +- .../scroll-area-horizontal-demo.json | 16 + .../r/styles/radix-vega/scroll-area.json | 2 +- .../r/styles/radix-vega/select-demo.json | 16 + .../r/styles/radix-vega/select-example.json | 2 +- .../styles/radix-vega/select-scrollable.json | 16 + .../v4/public/r/styles/radix-vega/select.json | 2 +- .../r/styles/radix-vega/separator-demo.json | 2 +- .../styles/radix-vega/separator-example.json | 2 +- .../public/r/styles/radix-vega/separator.json | 2 +- .../r/styles/radix-vega/sheet-demo.json | 6 +- .../r/styles/radix-vega/sheet-example.json | 2 +- .../r/styles/radix-vega/sheet-side.json | 6 +- apps/v4/public/r/styles/radix-vega/sheet.json | 2 +- .../r/styles/radix-vega/sidebar-example.json | 2 +- .../radix-vega/sidebar-floating-example.json | 2 +- .../radix-vega/sidebar-icon-example.json | 2 +- .../radix-vega/sidebar-inset-example.json | 2 +- .../public/r/styles/radix-vega/sidebar.json | 2 +- apps/v4/public/r/styles/radix-vega/sink.json | 2 +- .../r/styles/radix-vega/skeleton-card.json | 16 + .../r/styles/radix-vega/skeleton-demo.json | 16 + .../r/styles/radix-vega/skeleton-example.json | 2 +- .../public/r/styles/radix-vega/skeleton.json | 2 +- .../r/styles/radix-vega/slider-demo.json | 16 + .../r/styles/radix-vega/slider-example.json | 2 +- .../v4/public/r/styles/radix-vega/slider.json | 2 +- .../r/styles/radix-vega/sonner-demo.json | 17 + .../r/styles/radix-vega/sonner-example.json | 2 +- .../r/styles/radix-vega/sonner-types.json | 17 + .../r/styles/radix-vega/spinner-badge.json | 17 + .../r/styles/radix-vega/spinner-basic.json | 16 + .../r/styles/radix-vega/spinner-button.json | 17 + .../r/styles/radix-vega/spinner-color.json | 16 + .../r/styles/radix-vega/spinner-custom.json | 16 + .../r/styles/radix-vega/spinner-demo.json | 16 + .../r/styles/radix-vega/spinner-empty.json | 17 + .../r/styles/radix-vega/spinner-example.json | 2 +- .../radix-vega/spinner-input-group.json | 17 + .../r/styles/radix-vega/spinner-item.json | 19 + .../r/styles/radix-vega/spinner-size.json | 16 + .../public/r/styles/radix-vega/spinner.json | 2 +- .../r/styles/radix-vega/switch-demo.json | 17 + .../r/styles/radix-vega/switch-example.json | 2 +- .../v4/public/r/styles/radix-vega/switch.json | 2 +- .../r/styles/radix-vega/table-demo.json | 16 + .../r/styles/radix-vega/table-example.json | 2 +- apps/v4/public/r/styles/radix-vega/table.json | 2 +- .../public/r/styles/radix-vega/tabs-demo.json | 20 + .../r/styles/radix-vega/tabs-example.json | 2 +- apps/v4/public/r/styles/radix-vega/tabs.json | 2 +- .../r/styles/radix-vega/textarea-demo.json | 2 +- .../styles/radix-vega/textarea-disabled.json | 2 +- .../r/styles/radix-vega/textarea-example.json | 2 +- .../radix-vega/textarea-with-button.json | 6 +- .../radix-vega/textarea-with-label.json | 6 +- .../styles/radix-vega/textarea-with-text.json | 6 +- .../public/r/styles/radix-vega/textarea.json | 2 +- .../r/styles/radix-vega/toggle-demo.json | 16 + .../r/styles/radix-vega/toggle-disabled.json | 16 + .../r/styles/radix-vega/toggle-example.json | 2 +- .../styles/radix-vega/toggle-group-demo.json | 16 + .../radix-vega/toggle-group-disabled.json | 16 + .../radix-vega/toggle-group-example.json | 2 +- .../r/styles/radix-vega/toggle-group-lg.json | 16 + .../radix-vega/toggle-group-outline.json | 16 + .../radix-vega/toggle-group-single.json | 16 + .../r/styles/radix-vega/toggle-group-sm.json | 16 + .../radix-vega/toggle-group-spacing.json | 16 + .../r/styles/radix-vega/toggle-group.json | 2 +- .../public/r/styles/radix-vega/toggle-lg.json | 16 + .../r/styles/radix-vega/toggle-outline.json | 16 + .../public/r/styles/radix-vega/toggle-sm.json | 16 + .../r/styles/radix-vega/toggle-with-text.json | 16 + .../v4/public/r/styles/radix-vega/toggle.json | 2 +- .../r/styles/radix-vega/tooltip-demo.json | 17 + .../r/styles/radix-vega/tooltip-example.json | 2 +- .../public/r/styles/radix-vega/tooltip.json | 2 +- .../radix-vega/typography-blockquote.json | 14 + .../r/styles/radix-vega/typography-demo.json | 14 + .../r/styles/radix-vega/typography-h1.json | 14 + .../r/styles/radix-vega/typography-h2.json | 14 + .../r/styles/radix-vega/typography-h3.json | 14 + .../r/styles/radix-vega/typography-h4.json | 14 + .../radix-vega/typography-inline-code.json | 14 + .../r/styles/radix-vega/typography-large.json | 14 + .../r/styles/radix-vega/typography-lead.json | 14 + .../r/styles/radix-vega/typography-list.json | 14 + .../r/styles/radix-vega/typography-muted.json | 14 + .../r/styles/radix-vega/typography-p.json | 14 + .../r/styles/radix-vega/typography-small.json | 14 + .../r/styles/radix-vega/typography-table.json | 14 + .../v4/public/r/styles/radix-vega/vercel.json | 2 +- apps/v4/registry/__blocks__.json | 40 + apps/v4/registry/__index__.tsx | 12544 ++++++++++++++++ apps/v4/registry/base-nova/blocks/chatgpt.tsx | 26 +- .../registry/base-nova/blocks/elevenlabs.tsx | 6 +- apps/v4/registry/base-nova/blocks/github.tsx | 46 +- apps/v4/registry/base-nova/blocks/preview.tsx | 52 +- apps/v4/registry/base-nova/blocks/vercel.tsx | 32 +- .../registry/base-nova/components/example.tsx | 2 +- apps/v4/registry/base-nova/demo/_registry.ts | 742 - .../base-nova/examples/accordion-example.tsx | 8 +- .../examples/alert-dialog-example.tsx | 8 +- .../base-nova/examples/alert-example.tsx | 8 +- .../examples/aspect-ratio-example.tsx | 4 +- .../base-nova/examples/avatar-example.tsx | 8 +- .../base-nova/examples/badge-example.tsx | 6 +- .../base-nova/examples/breadcrumb-example.tsx | 8 +- .../base-nova/examples/button-example.tsx | 4 +- .../examples/button-group-example.tsx | 20 +- .../base-nova/examples/calendar-example.tsx | 14 +- .../base-nova/examples/card-example.tsx | 12 +- .../base-nova/examples/carousel-example.tsx | 6 +- .../base-nova/examples/chart-example.tsx | 6 +- .../base-nova/examples/checkbox-example.tsx | 8 +- .../examples/collapsible-example.tsx | 14 +- .../base-nova/examples/combobox-example.tsx | 20 +- .../base-nova/examples/command-example.tsx | 6 +- .../base-nova/examples/component-example.tsx | 22 +- .../examples/context-menu-example.tsx | 8 +- .../base-nova/examples/dialog-example.tsx | 28 +- .../base-nova/examples/drawer-example.tsx | 6 +- .../examples/dropdown-menu-example.tsx | 10 +- .../base-nova/examples/empty-example.tsx | 10 +- .../base-nova/examples/field-example.tsx | 24 +- .../base-nova/examples/hover-card-example.tsx | 8 +- .../base-nova/examples/input-example.tsx | 12 +- .../examples/input-group-example.tsx | 26 +- .../base-nova/examples/input-otp-example.tsx | 10 +- .../base-nova/examples/item-example.tsx | 6 +- .../base-nova/examples/kbd-example.tsx | 10 +- .../base-nova/examples/label-example.tsx | 12 +- .../base-nova/examples/menubar-example.tsx | 8 +- .../examples/native-select-example.tsx | 6 +- .../examples/navigation-menu-example.tsx | 4 +- .../base-nova/examples/pagination-example.tsx | 8 +- .../base-nova/examples/popover-example.tsx | 12 +- .../base-nova/examples/progress-example.tsx | 8 +- .../examples/radio-group-example.tsx | 6 +- .../base-nova/examples/resizable-example.tsx | 4 +- .../examples/scroll-area-example.tsx | 6 +- .../base-nova/examples/select-example.tsx | 16 +- .../base-nova/examples/separator-example.tsx | 4 +- .../base-nova/examples/sheet-example.tsx | 10 +- .../base-nova/examples/sidebar-example.tsx | 8 +- .../examples/sidebar-floating-example.tsx | 12 +- .../examples/sidebar-icon-example.tsx | 12 +- .../examples/sidebar-inset-example.tsx | 4 +- .../base-nova/examples/skeleton-example.tsx | 6 +- .../base-nova/examples/slider-example.tsx | 6 +- .../base-nova/examples/sonner-example.tsx | 4 +- .../base-nova/examples/spinner-example.tsx | 14 +- .../base-nova/examples/switch-example.tsx | 8 +- .../base-nova/examples/table-example.tsx | 12 +- .../base-nova/examples/tabs-example.tsx | 10 +- .../base-nova/examples/textarea-example.tsx | 6 +- .../base-nova/examples/toggle-example.tsx | 6 +- .../examples/toggle-group-example.tsx | 8 +- .../base-nova/examples/tooltip-example.tsx | 8 +- apps/v4/registry/base-nova/internal/sink.tsx | 108 +- apps/v4/registry/base-nova/registry.ts | 2777 +++- apps/v4/registry/base-nova/ui/accordion.tsx | 2 +- .../v4/registry/base-nova/ui/alert-dialog.tsx | 4 +- apps/v4/registry/base-nova/ui/alert.tsx | 2 +- .../v4/registry/base-nova/ui/aspect-ratio.tsx | 2 +- apps/v4/registry/base-nova/ui/avatar.tsx | 2 +- apps/v4/registry/base-nova/ui/badge.tsx | 2 +- apps/v4/registry/base-nova/ui/breadcrumb.tsx | 2 +- .../v4/registry/base-nova/ui/button-group.tsx | 4 +- apps/v4/registry/base-nova/ui/button.tsx | 2 +- apps/v4/registry/base-nova/ui/calendar.tsx | 4 +- apps/v4/registry/base-nova/ui/card.tsx | 2 +- apps/v4/registry/base-nova/ui/carousel.tsx | 4 +- apps/v4/registry/base-nova/ui/chart.tsx | 2 +- apps/v4/registry/base-nova/ui/checkbox.tsx | 2 +- apps/v4/registry/base-nova/ui/combobox.tsx | 6 +- apps/v4/registry/base-nova/ui/command.tsx | 6 +- .../v4/registry/base-nova/ui/context-menu.tsx | 2 +- apps/v4/registry/base-nova/ui/dialog.tsx | 4 +- apps/v4/registry/base-nova/ui/drawer.tsx | 2 +- .../registry/base-nova/ui/dropdown-menu.tsx | 2 +- apps/v4/registry/base-nova/ui/empty.tsx | 2 +- apps/v4/registry/base-nova/ui/field.tsx | 6 +- apps/v4/registry/base-nova/ui/hover-card.tsx | 2 +- apps/v4/registry/base-nova/ui/input-group.tsx | 8 +- apps/v4/registry/base-nova/ui/input-otp.tsx | 2 +- apps/v4/registry/base-nova/ui/input.tsx | 2 +- apps/v4/registry/base-nova/ui/item.tsx | 4 +- apps/v4/registry/base-nova/ui/kbd.tsx | 2 +- apps/v4/registry/base-nova/ui/label.tsx | 2 +- apps/v4/registry/base-nova/ui/menubar.tsx | 4 +- .../registry/base-nova/ui/native-select.tsx | 2 +- .../registry/base-nova/ui/navigation-menu.tsx | 2 +- apps/v4/registry/base-nova/ui/pagination.tsx | 4 +- apps/v4/registry/base-nova/ui/popover.tsx | 2 +- apps/v4/registry/base-nova/ui/progress.tsx | 2 +- apps/v4/registry/base-nova/ui/radio-group.tsx | 2 +- apps/v4/registry/base-nova/ui/resizable.tsx | 2 +- apps/v4/registry/base-nova/ui/scroll-area.tsx | 2 +- apps/v4/registry/base-nova/ui/select.tsx | 2 +- apps/v4/registry/base-nova/ui/separator.tsx | 2 +- apps/v4/registry/base-nova/ui/sheet.tsx | 4 +- apps/v4/registry/base-nova/ui/sidebar.tsx | 14 +- apps/v4/registry/base-nova/ui/skeleton.tsx | 2 +- apps/v4/registry/base-nova/ui/slider.tsx | 2 +- apps/v4/registry/base-nova/ui/spinner.tsx | 2 +- apps/v4/registry/base-nova/ui/switch.tsx | 2 +- apps/v4/registry/base-nova/ui/table.tsx | 2 +- apps/v4/registry/base-nova/ui/tabs.tsx | 2 +- apps/v4/registry/base-nova/ui/textarea.tsx | 2 +- .../v4/registry/base-nova/ui/toggle-group.tsx | 4 +- apps/v4/registry/base-nova/ui/toggle.tsx | 2 +- apps/v4/registry/base-nova/ui/tooltip.tsx | 2 +- apps/v4/registry/bases/__index__.tsx | 7640 +++++++++- apps/v4/registry/bases/base/demo/_registry.ts | 2416 ++- .../bases/base/demo/accordion-demo.tsx | 2 +- .../bases/base/demo/accordion-disabled.tsx | 2 +- .../bases/base/demo/accordion-multiple.tsx | 2 +- .../registry/bases/base/demo/alert-demo.tsx | 39 + .../bases/base/demo/alert-destructive.tsx | 19 + .../bases/base/demo/alert-dialog-demo.tsx | 35 + .../bases/base/demo/aspect-ratio-demo.tsx | 16 + .../registry/bases/base/demo/avatar-demo.tsx | 43 + .../registry/bases/base/demo/badge-demo.tsx | 40 + .../bases/base/demo/badge-destructive.tsx | 5 + .../bases/base/demo/badge-outline.tsx | 5 + .../bases/base/demo/badge-secondary.tsx | 5 + .../bases/base/demo/breadcrumb-demo.tsx | 53 + .../bases/base/demo/breadcrumb-dropdown.tsx | 51 + .../bases/base/demo/breadcrumb-ellipsis.tsx | 37 + .../bases/base/demo/breadcrumb-link.tsx | 32 + .../bases/base/demo/breadcrumb-responsive.tsx | 135 + .../bases/base/demo/breadcrumb-separator.tsx | 37 + .../bases/base/demo/button-as-child.tsx | 9 + .../bases/base/demo/button-default.tsx | 5 + .../registry/bases/base/demo/button-demo.tsx | 14 + .../bases/base/demo/button-destructive.tsx | 5 + .../registry/bases/base/demo/button-ghost.tsx | 5 + .../bases/base/demo/button-group-demo.tsx | 114 + .../bases/base/demo/button-group-dropdown.tsx | 73 + .../base/demo/button-group-input-group.tsx | 58 + .../bases/base/demo/button-group-input.tsx | 16 + .../bases/base/demo/button-group-nested.tsx | 38 + .../base/demo/button-group-orientation.tsx | 21 + .../bases/base/demo/button-group-popover.tsx | 45 + .../bases/base/demo/button-group-select.tsx | 57 + .../base/demo/button-group-separator.tsx | 19 + .../bases/base/demo/button-group-size.tsx | 47 + .../bases/base/demo/button-group-split.tsx | 19 + .../registry/bases/base/demo/button-icon.tsx | 11 + .../registry/bases/base/demo/button-link.tsx | 5 + .../bases/base/demo/button-loading.tsx | 11 + .../bases/base/demo/button-outline.tsx | 5 + .../bases/base/demo/button-rounded.tsx | 13 + .../bases/base/demo/button-secondary.tsx | 5 + .../registry/bases/base/demo/button-size.tsx | 32 + .../bases/base/demo/button-with-icon.tsx | 11 + .../bases/base/demo/calendar-demo.tsx | 19 + .../bases/base/demo/calendar-hijri.tsx | 229 + .../v4/registry/bases/base/demo/card-demo.tsx | 63 + .../registry/bases/base/demo/carousel-api.tsx | 55 + .../bases/base/demo/carousel-demo.tsx | 32 + .../bases/base/demo/carousel-orientation.tsx | 38 + .../bases/base/demo/carousel-plugin.tsx | 44 + .../bases/base/demo/carousel-size.tsx | 37 + .../bases/base/demo/carousel-spacing.tsx | 32 + .../bases/base/demo/chart-bar-demo-axis.tsx | 47 + .../bases/base/demo/chart-bar-demo-grid.tsx | 40 + .../bases/base/demo/chart-bar-demo-legend.tsx | 53 + .../base/demo/chart-bar-demo-tooltip.tsx | 50 + .../bases/base/demo/chart-bar-demo.tsx | 39 + .../bases/base/demo/checkbox-demo.tsx | 43 + .../bases/base/demo/checkbox-disabled.tsx | 15 + .../bases/base/demo/checkbox-with-text.tsx | 22 + .../bases/base/demo/collapsible-demo.tsx | 46 + .../bases/base/demo/combobox-demo.tsx | 94 + .../base/demo/combobox-dropdown-menu.tsx | 102 + .../bases/base/demo/combobox-popover.tsx | 91 + .../bases/base/demo/combobox-responsive.tsx | 8 +- .../registry/bases/base/demo/command-demo.tsx | 62 + .../bases/base/demo/command-dialog.tsx | 87 + .../bases/base/demo/context-menu-demo.tsx | 64 + .../bases/base/demo/data-table-demo.tsx | 312 + .../bases/base/demo/date-picker-demo.tsx | 43 + .../base/demo/date-picker-with-presets.tsx | 65 + .../base/demo/date-picker-with-range.tsx | 65 + .../bases/base/demo/dialog-close-button.tsx | 50 + .../registry/bases/base/demo/dialog-demo.tsx | 50 + .../registry/bases/base/demo/drawer-demo.tsx | 136 + .../bases/base/demo/drawer-dialog.tsx | 90 + .../base/demo/dropdown-menu-checkboxes.tsx | 53 + .../bases/base/demo/dropdown-menu-demo.tsx | 74 + .../bases/base/demo/dropdown-menu-dialog.tsx | 115 + .../base/demo/dropdown-menu-radio-group.tsx | 35 + .../bases/base/demo/empty-avatar-group.tsx | 57 + .../registry/bases/base/demo/empty-avatar.tsx | 40 + .../bases/base/demo/empty-background.tsx | 34 + .../registry/bases/base/demo/empty-demo.tsx | 45 + .../registry/bases/base/demo/empty-icon.tsx | 68 + .../bases/base/demo/empty-input-group.tsx | 43 + .../bases/base/demo/empty-outline.tsx | 32 + .../bases/base/demo/field-checkbox.tsx | 80 + .../bases/base/demo/field-choice-card.tsx | 54 + .../registry/bases/base/demo/field-demo.tsx | 151 + .../bases/base/demo/field-fieldset.tsx | 38 + .../registry/bases/base/demo/field-group.tsx | 55 + .../registry/bases/base/demo/field-input.tsx | 33 + .../registry/bases/base/demo/field-radio.tsx | 43 + .../bases/base/demo/field-responsive.tsx | 61 + .../registry/bases/base/demo/field-select.tsx | 40 + .../registry/bases/base/demo/field-slider.tsx | 35 + .../registry/bases/base/demo/field-switch.tsx | 24 + .../bases/base/demo/field-textarea.tsx | 30 + .../bases/base/demo/hover-card-demo.tsx | 38 + .../registry/bases/base/demo/input-demo.tsx | 5 + .../bases/base/demo/input-disabled.tsx | 5 + .../registry/bases/base/demo/input-file.tsx | 11 + .../base/demo/input-group-button-group.tsx | 31 + .../bases/base/demo/input-group-button.tsx | 86 + .../bases/base/demo/input-group-custom.tsx | 28 + .../bases/base/demo/input-group-demo.tsx | 98 + .../bases/base/demo/input-group-dropdown.tsx | 59 + .../bases/base/demo/input-group-icon.tsx | 49 + .../bases/base/demo/input-group-label.tsx | 50 + .../bases/base/demo/input-group-spinner.tsx | 46 + .../bases/base/demo/input-group-text.tsx | 46 + .../bases/base/demo/input-group-textarea.tsx | 46 + .../bases/base/demo/input-group-tooltip.tsx | 77 + .../bases/base/demo/input-otp-controlled.tsx | 39 + .../bases/base/demo/input-otp-demo.tsx | 24 + .../bases/base/demo/input-otp-pattern.tsx | 24 + .../bases/base/demo/input-otp-separator.tsx | 27 + .../bases/base/demo/input-with-button.tsx | 13 + .../bases/base/demo/input-with-label.tsx | 11 + .../bases/base/demo/input-with-text.tsx | 12 + .../registry/bases/base/demo/item-avatar.tsx | 80 + .../v4/registry/bases/base/demo/item-demo.tsx | 42 + .../bases/base/demo/item-dropdown.tsx | 71 + .../registry/bases/base/demo/item-group.tsx | 68 + .../registry/bases/base/demo/item-header.tsx | 60 + .../v4/registry/bases/base/demo/item-icon.tsx | 34 + .../registry/bases/base/demo/item-image.tsx | 68 + .../v4/registry/bases/base/demo/item-link.tsx | 38 + .../v4/registry/bases/base/demo/item-size.tsx | 42 + .../registry/bases/base/demo/item-variant.tsx | 54 + .../registry/bases/base/demo/kbd-button.tsx | 15 + apps/v4/registry/bases/base/demo/kbd-demo.tsx | 19 + .../v4/registry/bases/base/demo/kbd-group.tsx | 16 + .../bases/base/demo/kbd-input-group.tsx | 25 + .../registry/bases/base/demo/kbd-tooltip.tsx | 45 + .../registry/bases/base/demo/label-demo.tsx | 13 + .../registry/bases/base/demo/menubar-demo.tsx | 107 + .../bases/base/demo/native-select-demo.tsx | 16 + .../base/demo/native-select-disabled.tsx | 16 + .../bases/base/demo/native-select-groups.tsx | 38 + .../bases/base/demo/native-select-invalid.tsx | 16 + .../bases/base/demo/navigation-menu-demo.tsx | 215 + .../bases/base/demo/pagination-demo.tsx | 38 + .../registry/bases/base/demo/popover-demo.tsx | 62 + .../bases/base/demo/progress-demo.tsx | 16 + .../bases/base/demo/radio-group-demo.tsx | 4 +- .../base/demo/resizable-demo-with-handle.tsx | 36 + .../bases/base/demo/resizable-demo.tsx | 36 + .../bases/base/demo/resizable-handle.tsx | 26 + .../bases/base/demo/resizable-vertical.tsx | 26 + .../bases/base/demo/scroll-area-demo.tsx | 24 + .../base/demo/scroll-area-horizontal-demo.tsx | 53 + .../registry/bases/base/demo/select-demo.tsx | 31 + .../bases/base/demo/select-scrollable.tsx | 75 + .../bases/base/demo/separator-demo.tsx | 2 +- .../registry/bases/base/demo/sheet-demo.tsx | 8 +- .../registry/bases/base/demo/sheet-side.tsx | 8 +- .../bases/base/demo/skeleton-card.tsx | 13 + .../bases/base/demo/skeleton-demo.tsx | 13 + .../registry/bases/base/demo/slider-demo.tsx | 16 + .../registry/bases/base/demo/sonner-demo.tsx | 24 + .../registry/bases/base/demo/sonner-types.tsx | 61 + .../bases/base/demo/spinner-badge.tsx | 21 + .../bases/base/demo/spinner-basic.tsx | 9 + .../bases/base/demo/spinner-button.tsx | 21 + .../bases/base/demo/spinner-color.tsx | 13 + .../bases/base/demo/spinner-custom.tsx | 22 + .../registry/bases/base/demo/spinner-demo.tsx | 25 + .../bases/base/demo/spinner-empty.tsx | 31 + .../bases/base/demo/spinner-input-group.tsx | 33 + .../registry/bases/base/demo/spinner-item.tsx | 36 + .../registry/bases/base/demo/spinner-size.tsx | 12 + .../registry/bases/base/demo/switch-demo.tsx | 11 + .../registry/bases/base/demo/table-demo.tsx | 87 + .../v4/registry/bases/base/demo/tabs-demo.tsx | 78 + .../bases/base/demo/textarea-demo.tsx | 2 +- .../bases/base/demo/textarea-disabled.tsx | 2 +- .../bases/base/demo/textarea-with-button.tsx | 4 +- .../bases/base/demo/textarea-with-label.tsx | 4 +- .../bases/base/demo/textarea-with-text.tsx | 4 +- .../registry/bases/base/demo/toggle-demo.tsx | 17 + .../bases/base/demo/toggle-disabled.tsx | 11 + .../bases/base/demo/toggle-group-demo.tsx | 22 + .../bases/base/demo/toggle-group-disabled.tsx | 22 + .../bases/base/demo/toggle-group-lg.tsx | 22 + .../bases/base/demo/toggle-group-outline.tsx | 22 + .../bases/base/demo/toggle-group-single.tsx | 22 + .../bases/base/demo/toggle-group-sm.tsx | 22 + .../bases/base/demo/toggle-group-spacing.tsx | 37 + .../v4/registry/bases/base/demo/toggle-lg.tsx | 11 + .../bases/base/demo/toggle-outline.tsx | 11 + .../v4/registry/bases/base/demo/toggle-sm.tsx | 11 + .../bases/base/demo/toggle-with-text.tsx | 12 + .../registry/bases/base/demo/tooltip-demo.tsx | 19 + .../bases/base/demo/typography-blockquote.tsx | 8 + .../bases/base/demo/typography-demo.tsx | 119 + .../bases/base/demo/typography-h1.tsx | 7 + .../bases/base/demo/typography-h2.tsx | 7 + .../bases/base/demo/typography-h3.tsx | 7 + .../bases/base/demo/typography-h4.tsx | 7 + .../base/demo/typography-inline-code.tsx | 7 + .../bases/base/demo/typography-large.tsx | 3 + .../bases/base/demo/typography-lead.tsx | 8 + .../bases/base/demo/typography-list.tsx | 9 + .../bases/base/demo/typography-muted.tsx | 5 + .../registry/bases/base/demo/typography-p.tsx | 8 + .../bases/base/demo/typography-small.tsx | 5 + .../bases/base/demo/typography-table.tsx | 44 + .../v4/registry/bases/radix/demo/_registry.ts | 2430 ++- .../bases/radix/demo/accordion-demo.tsx | 2 +- .../bases/radix/demo/accordion-disabled.tsx | 2 +- .../bases/radix/demo/accordion-multiple.tsx | 2 +- .../registry/bases/radix/demo/alert-demo.tsx | 39 + .../bases/radix/demo/alert-destructive.tsx | 19 + .../bases/radix/demo/alert-dialog-demo.tsx | 35 + .../bases/radix/demo/aspect-ratio-demo.tsx | 16 + .../registry/bases/radix/demo/avatar-demo.tsx | 43 + .../registry/bases/radix/demo/badge-demo.tsx | 40 + .../bases/radix/demo/badge-destructive.tsx | 5 + .../bases/radix/demo/badge-outline.tsx | 5 + .../bases/radix/demo/badge-secondary.tsx | 5 + .../bases/radix/demo/breadcrumb-demo.tsx | 55 + .../bases/radix/demo/breadcrumb-dropdown.tsx | 53 + .../bases/radix/demo/breadcrumb-ellipsis.tsx | 39 + .../bases/radix/demo/breadcrumb-link.tsx | 34 + .../radix/demo/breadcrumb-responsive.tsx | 135 + .../bases/radix/demo/breadcrumb-separator.tsx | 39 + .../bases/radix/demo/button-as-child.tsx | 11 + .../bases/radix/demo/button-default.tsx | 5 + .../registry/bases/radix/demo/button-demo.tsx | 14 + .../bases/radix/demo/button-destructive.tsx | 5 + .../bases/radix/demo/button-ghost.tsx | 5 + .../bases/radix/demo/button-group-demo.tsx | 114 + .../radix/demo/button-group-dropdown.tsx | 73 + .../radix/demo/button-group-input-group.tsx | 58 + .../bases/radix/demo/button-group-input.tsx | 16 + .../bases/radix/demo/button-group-nested.tsx | 38 + .../radix/demo/button-group-orientation.tsx | 21 + .../bases/radix/demo/button-group-popover.tsx | 45 + .../bases/radix/demo/button-group-select.tsx | 57 + .../radix/demo/button-group-separator.tsx | 19 + .../bases/radix/demo/button-group-size.tsx | 47 + .../bases/radix/demo/button-group-split.tsx | 19 + .../registry/bases/radix/demo/button-icon.tsx | 11 + .../registry/bases/radix/demo/button-link.tsx | 5 + .../bases/radix/demo/button-loading.tsx | 11 + .../bases/radix/demo/button-outline.tsx | 5 + .../bases/radix/demo/button-rounded.tsx | 13 + .../bases/radix/demo/button-secondary.tsx | 5 + .../registry/bases/radix/demo/button-size.tsx | 32 + .../bases/radix/demo/button-with-icon.tsx | 11 + .../bases/radix/demo/calendar-demo.tsx | 19 + .../radix/demo/calendar-hijri.tsx} | 88 +- .../registry/bases/radix/demo/card-demo.tsx | 63 + .../bases/radix/demo/carousel-api.tsx | 55 + .../bases/radix/demo/carousel-demo.tsx | 32 + .../bases/radix/demo/carousel-orientation.tsx | 38 + .../bases/radix/demo/carousel-plugin.tsx | 44 + .../bases/radix/demo/carousel-size.tsx | 37 + .../bases/radix/demo/carousel-spacing.tsx | 32 + .../bases/radix/demo/chart-bar-demo-axis.tsx | 47 + .../bases/radix/demo/chart-bar-demo-grid.tsx | 40 + .../radix/demo/chart-bar-demo-legend.tsx | 53 + .../radix/demo/chart-bar-demo-tooltip.tsx | 50 + .../bases/radix/demo/chart-bar-demo.tsx | 39 + .../bases/radix/demo/checkbox-demo.tsx | 43 + .../bases/radix/demo/checkbox-disabled.tsx | 15 + .../bases/radix/demo/checkbox-with-text.tsx | 22 + .../bases/radix/demo/collapsible-demo.tsx | 46 + .../bases/radix/demo/combobox-demo.tsx | 94 + .../radix/demo/combobox-dropdown-menu.tsx | 102 + .../bases/radix/demo/combobox-popover.tsx | 91 + .../bases/radix/demo/combobox-responsive.tsx | 8 +- .../bases/radix/demo/command-demo.tsx | 62 + .../bases/radix/demo/command-dialog.tsx | 87 + .../bases/radix/demo/context-menu-demo.tsx | 64 + .../bases/radix/demo/data-table-demo.tsx | 312 + .../bases/radix/demo/date-picker-demo.tsx | 43 + .../radix/demo/date-picker-with-presets.tsx | 65 + .../radix/demo/date-picker-with-range.tsx | 65 + .../bases/radix/demo/dialog-close-button.tsx | 50 + .../registry/bases/radix/demo/dialog-demo.tsx | 50 + .../registry/bases/radix/demo/drawer-demo.tsx | 136 + .../bases/radix/demo/drawer-dialog.tsx | 90 + .../radix/demo/dropdown-menu-checkboxes.tsx | 53 + .../bases/radix/demo/dropdown-menu-demo.tsx | 74 + .../bases/radix/demo/dropdown-menu-dialog.tsx | 115 + .../radix/demo/dropdown-menu-radio-group.tsx | 35 + .../bases/radix/demo/empty-avatar-group.tsx | 57 + .../bases/radix/demo/empty-avatar.tsx | 40 + .../bases/radix/demo/empty-background.tsx | 34 + .../registry/bases/radix/demo/empty-demo.tsx | 45 + .../registry/bases/radix/demo/empty-icon.tsx | 68 + .../bases/radix/demo/empty-input-group.tsx | 43 + .../bases/radix/demo/empty-outline.tsx | 32 + .../bases/radix/demo/field-checkbox.tsx | 80 + .../bases/radix/demo/field-choice-card.tsx | 54 + .../registry/bases/radix/demo/field-demo.tsx | 151 + .../bases/radix/demo/field-fieldset.tsx | 38 + .../registry/bases/radix/demo/field-group.tsx | 55 + .../registry/bases/radix/demo/field-input.tsx | 33 + .../registry/bases/radix/demo/field-radio.tsx | 43 + .../bases/radix/demo/field-responsive.tsx | 61 + .../bases/radix/demo/field-select.tsx | 40 + .../bases/radix/demo/field-slider.tsx | 35 + .../bases/radix/demo/field-switch.tsx | 24 + .../bases/radix/demo/field-textarea.tsx | 30 + .../bases/radix/demo/hover-card-demo.tsx | 38 + .../registry/bases/radix/demo/input-demo.tsx | 5 + .../bases/radix/demo/input-disabled.tsx | 5 + .../registry/bases/radix/demo/input-file.tsx | 11 + .../radix/demo/input-group-button-group.tsx | 31 + .../bases/radix/demo/input-group-button.tsx | 86 + .../bases/radix/demo/input-group-custom.tsx | 28 + .../bases/radix/demo/input-group-demo.tsx | 98 + .../bases/radix/demo/input-group-dropdown.tsx | 59 + .../bases/radix/demo/input-group-icon.tsx | 49 + .../bases/radix/demo/input-group-label.tsx | 50 + .../bases/radix/demo/input-group-spinner.tsx | 46 + .../bases/radix/demo/input-group-text.tsx | 46 + .../bases/radix/demo/input-group-textarea.tsx | 46 + .../bases/radix/demo/input-group-tooltip.tsx | 77 + .../bases/radix/demo/input-otp-controlled.tsx | 39 + .../bases/radix/demo/input-otp-demo.tsx | 24 + .../bases/radix/demo/input-otp-pattern.tsx | 24 + .../bases/radix/demo/input-otp-separator.tsx | 27 + .../bases/radix/demo/input-with-button.tsx | 13 + .../bases/radix/demo/input-with-label.tsx | 11 + .../bases/radix/demo/input-with-text.tsx | 12 + .../registry/bases/radix/demo/item-avatar.tsx | 80 + .../registry/bases/radix/demo/item-demo.tsx | 44 + .../bases/radix/demo/item-dropdown.tsx | 73 + .../registry/bases/radix/demo/item-group.tsx | 68 + .../registry/bases/radix/demo/item-header.tsx | 60 + .../registry/bases/radix/demo/item-icon.tsx | 34 + .../registry/bases/radix/demo/item-image.tsx | 65 + .../registry/bases/radix/demo/item-link.tsx | 42 + .../registry/bases/radix/demo/item-size.tsx | 44 + .../bases/radix/demo/item-variant.tsx | 54 + .../registry/bases/radix/demo/kbd-button.tsx | 15 + .../v4/registry/bases/radix/demo/kbd-demo.tsx | 19 + .../registry/bases/radix/demo/kbd-group.tsx | 16 + .../bases/radix/demo/kbd-input-group.tsx | 25 + .../registry/bases/radix/demo/kbd-tooltip.tsx | 45 + .../registry/bases/radix/demo/label-demo.tsx | 13 + .../bases/radix/demo/menubar-demo.tsx | 107 + .../bases/radix/demo/native-select-demo.tsx | 16 + .../radix/demo/native-select-disabled.tsx | 16 + .../bases/radix/demo/native-select-groups.tsx | 38 + .../radix/demo/native-select-invalid.tsx | 16 + .../bases/radix/demo/navigation-menu-demo.tsx | 215 + .../bases/radix/demo/pagination-demo.tsx | 38 + .../bases/radix/demo/popover-demo.tsx | 62 + .../bases/radix/demo/progress-demo.tsx | 16 + .../bases/radix/demo/radio-group-demo.tsx | 4 +- .../radix/demo/resizable-demo-with-handle.tsx | 36 + .../bases/radix/demo/resizable-demo.tsx | 36 + .../bases/radix/demo/resizable-handle.tsx | 26 + .../bases/radix/demo/resizable-vertical.tsx | 26 + .../bases/radix/demo/scroll-area-demo.tsx | 24 + .../demo/scroll-area-horizontal-demo.tsx | 53 + .../registry/bases/radix/demo/select-demo.tsx | 31 + .../bases/radix/demo/select-scrollable.tsx | 75 + .../bases/radix/demo/separator-demo.tsx | 2 +- .../registry/bases/radix/demo/sheet-demo.tsx | 8 +- .../registry/bases/radix/demo/sheet-side.tsx | 8 +- .../bases/radix/demo/skeleton-card.tsx | 13 + .../bases/radix/demo/skeleton-demo.tsx | 13 + .../registry/bases/radix/demo/slider-demo.tsx | 16 + .../registry/bases/radix/demo/sonner-demo.tsx | 24 + .../bases/radix/demo/sonner-types.tsx | 61 + .../bases/radix/demo/spinner-badge.tsx | 21 + .../bases/radix/demo/spinner-basic.tsx | 9 + .../bases/radix/demo/spinner-button.tsx | 21 + .../bases/radix/demo/spinner-color.tsx | 13 + .../bases/radix/demo/spinner-custom.tsx | 22 + .../bases/radix/demo/spinner-demo.tsx | 25 + .../bases/radix/demo/spinner-empty.tsx | 31 + .../bases/radix/demo/spinner-input-group.tsx | 33 + .../bases/radix/demo/spinner-item.tsx | 36 + .../bases/radix/demo/spinner-size.tsx | 12 + .../registry/bases/radix/demo/switch-demo.tsx | 11 + .../registry/bases/radix/demo/table-demo.tsx | 87 + .../registry/bases/radix/demo/tabs-demo.tsx | 78 + .../bases/radix/demo/textarea-demo.tsx | 2 +- .../bases/radix/demo/textarea-disabled.tsx | 2 +- .../bases/radix/demo/textarea-with-button.tsx | 4 +- .../bases/radix/demo/textarea-with-label.tsx | 4 +- .../bases/radix/demo/textarea-with-text.tsx | 4 +- .../registry/bases/radix/demo/toggle-demo.tsx | 17 + .../bases/radix/demo/toggle-disabled.tsx | 11 + .../bases/radix/demo/toggle-group-demo.tsx | 22 + .../radix/demo/toggle-group-disabled.tsx | 22 + .../bases/radix/demo/toggle-group-lg.tsx | 22 + .../bases/radix/demo/toggle-group-outline.tsx | 22 + .../bases/radix/demo/toggle-group-single.tsx | 22 + .../bases/radix/demo/toggle-group-sm.tsx | 22 + .../bases/radix/demo/toggle-group-spacing.tsx | 37 + .../registry/bases/radix/demo/toggle-lg.tsx | 11 + .../bases/radix/demo/toggle-outline.tsx | 11 + .../registry/bases/radix/demo/toggle-sm.tsx | 11 + .../bases/radix/demo/toggle-with-text.tsx | 12 + .../bases/radix/demo/tooltip-demo.tsx | 19 + .../radix/demo/typography-blockquote.tsx | 8 + .../bases/radix/demo/typography-demo.tsx | 119 + .../bases/radix/demo/typography-h1.tsx | 7 + .../bases/radix/demo/typography-h2.tsx | 7 + .../bases/radix/demo/typography-h3.tsx | 7 + .../bases/radix/demo/typography-h4.tsx | 7 + .../radix/demo/typography-inline-code.tsx | 7 + .../bases/radix/demo/typography-large.tsx | 3 + .../bases/radix/demo/typography-lead.tsx | 8 + .../bases/radix/demo/typography-list.tsx | 9 + .../bases/radix/demo/typography-muted.tsx | 5 + .../bases/radix/demo/typography-p.tsx | 8 + .../bases/radix/demo/typography-small.tsx | 5 + .../bases/radix/demo/typography-table.tsx | 44 + .../v4/registry/radix-nova/blocks/chatgpt.tsx | 26 +- .../registry/radix-nova/blocks/elevenlabs.tsx | 6 +- apps/v4/registry/radix-nova/blocks/github.tsx | 44 +- .../v4/registry/radix-nova/blocks/preview.tsx | 52 +- apps/v4/registry/radix-nova/blocks/vercel.tsx | 32 +- .../radix-nova/components/example.tsx | 2 +- apps/v4/registry/radix-nova/demo/_registry.ts | 742 - .../radix-nova/examples/accordion-example.tsx | 8 +- .../examples/alert-dialog-example.tsx | 8 +- .../radix-nova/examples/alert-example.tsx | 8 +- .../examples/aspect-ratio-example.tsx | 4 +- .../radix-nova/examples/avatar-example.tsx | 8 +- .../radix-nova/examples/badge-example.tsx | 6 +- .../examples/breadcrumb-example.tsx | 8 +- .../radix-nova/examples/button-example.tsx | 4 +- .../examples/button-group-example.tsx | 20 +- .../radix-nova/examples/calendar-example.tsx | 14 +- .../radix-nova/examples/card-example.tsx | 12 +- .../radix-nova/examples/carousel-example.tsx | 6 +- .../radix-nova/examples/chart-example.tsx | 6 +- .../radix-nova/examples/checkbox-example.tsx | 8 +- .../examples/collapsible-example.tsx | 14 +- .../radix-nova/examples/combobox-example.tsx | 20 +- .../radix-nova/examples/command-example.tsx | 6 +- .../radix-nova/examples/component-example.tsx | 22 +- .../examples/context-menu-example.tsx | 8 +- .../radix-nova/examples/dialog-example.tsx | 28 +- .../radix-nova/examples/drawer-example.tsx | 6 +- .../examples/dropdown-menu-example.tsx | 10 +- .../radix-nova/examples/empty-example.tsx | 10 +- .../radix-nova/examples/field-example.tsx | 24 +- .../examples/hover-card-example.tsx | 8 +- .../radix-nova/examples/input-example.tsx | 12 +- .../examples/input-group-example.tsx | 26 +- .../radix-nova/examples/input-otp-example.tsx | 10 +- .../radix-nova/examples/item-example.tsx | 6 +- .../radix-nova/examples/kbd-example.tsx | 10 +- .../radix-nova/examples/label-example.tsx | 12 +- .../radix-nova/examples/menubar-example.tsx | 8 +- .../examples/native-select-example.tsx | 6 +- .../examples/navigation-menu-example.tsx | 4 +- .../examples/pagination-example.tsx | 8 +- .../radix-nova/examples/popover-example.tsx | 12 +- .../radix-nova/examples/progress-example.tsx | 10 +- .../examples/radio-group-example.tsx | 6 +- .../radix-nova/examples/resizable-example.tsx | 4 +- .../examples/scroll-area-example.tsx | 6 +- .../radix-nova/examples/select-example.tsx | 16 +- .../radix-nova/examples/separator-example.tsx | 4 +- .../radix-nova/examples/sheet-example.tsx | 10 +- .../radix-nova/examples/sidebar-example.tsx | 10 +- .../examples/sidebar-floating-example.tsx | 12 +- .../examples/sidebar-icon-example.tsx | 12 +- .../examples/sidebar-inset-example.tsx | 4 +- .../radix-nova/examples/skeleton-example.tsx | 6 +- .../radix-nova/examples/slider-example.tsx | 6 +- .../radix-nova/examples/sonner-example.tsx | 4 +- .../radix-nova/examples/spinner-example.tsx | 14 +- .../radix-nova/examples/switch-example.tsx | 8 +- .../radix-nova/examples/table-example.tsx | 12 +- .../radix-nova/examples/tabs-example.tsx | 10 +- .../radix-nova/examples/textarea-example.tsx | 6 +- .../radix-nova/examples/toggle-example.tsx | 6 +- .../examples/toggle-group-example.tsx | 8 +- .../radix-nova/examples/tooltip-example.tsx | 8 +- apps/v4/registry/radix-nova/internal/sink.tsx | 108 +- apps/v4/registry/radix-nova/registry.ts | 2751 +++- apps/v4/registry/radix-nova/ui/accordion.tsx | 2 +- .../registry/radix-nova/ui/alert-dialog.tsx | 4 +- apps/v4/registry/radix-nova/ui/alert.tsx | 2 +- apps/v4/registry/radix-nova/ui/avatar.tsx | 2 +- apps/v4/registry/radix-nova/ui/badge.tsx | 2 +- apps/v4/registry/radix-nova/ui/breadcrumb.tsx | 2 +- .../registry/radix-nova/ui/button-group.tsx | 4 +- apps/v4/registry/radix-nova/ui/button.tsx | 2 +- apps/v4/registry/radix-nova/ui/calendar.tsx | 4 +- apps/v4/registry/radix-nova/ui/card.tsx | 2 +- apps/v4/registry/radix-nova/ui/carousel.tsx | 4 +- apps/v4/registry/radix-nova/ui/chart.tsx | 2 +- apps/v4/registry/radix-nova/ui/checkbox.tsx | 2 +- apps/v4/registry/radix-nova/ui/combobox.tsx | 6 +- apps/v4/registry/radix-nova/ui/command.tsx | 6 +- .../registry/radix-nova/ui/context-menu.tsx | 2 +- apps/v4/registry/radix-nova/ui/dialog.tsx | 4 +- apps/v4/registry/radix-nova/ui/drawer.tsx | 2 +- .../registry/radix-nova/ui/dropdown-menu.tsx | 2 +- apps/v4/registry/radix-nova/ui/empty.tsx | 2 +- apps/v4/registry/radix-nova/ui/field.tsx | 6 +- apps/v4/registry/radix-nova/ui/hover-card.tsx | 2 +- .../v4/registry/radix-nova/ui/input-group.tsx | 8 +- apps/v4/registry/radix-nova/ui/input-otp.tsx | 2 +- apps/v4/registry/radix-nova/ui/input.tsx | 2 +- apps/v4/registry/radix-nova/ui/item.tsx | 4 +- apps/v4/registry/radix-nova/ui/kbd.tsx | 2 +- apps/v4/registry/radix-nova/ui/label.tsx | 2 +- apps/v4/registry/radix-nova/ui/menubar.tsx | 2 +- .../registry/radix-nova/ui/native-select.tsx | 2 +- .../radix-nova/ui/navigation-menu.tsx | 2 +- apps/v4/registry/radix-nova/ui/pagination.tsx | 4 +- apps/v4/registry/radix-nova/ui/popover.tsx | 2 +- apps/v4/registry/radix-nova/ui/progress.tsx | 2 +- .../v4/registry/radix-nova/ui/radio-group.tsx | 2 +- apps/v4/registry/radix-nova/ui/resizable.tsx | 2 +- .../v4/registry/radix-nova/ui/scroll-area.tsx | 2 +- apps/v4/registry/radix-nova/ui/select.tsx | 2 +- apps/v4/registry/radix-nova/ui/separator.tsx | 2 +- apps/v4/registry/radix-nova/ui/sheet.tsx | 4 +- apps/v4/registry/radix-nova/ui/sidebar.tsx | 14 +- apps/v4/registry/radix-nova/ui/skeleton.tsx | 2 +- apps/v4/registry/radix-nova/ui/slider.tsx | 2 +- apps/v4/registry/radix-nova/ui/spinner.tsx | 2 +- apps/v4/registry/radix-nova/ui/switch.tsx | 2 +- apps/v4/registry/radix-nova/ui/table.tsx | 2 +- apps/v4/registry/radix-nova/ui/tabs.tsx | 2 +- apps/v4/registry/radix-nova/ui/textarea.tsx | 2 +- .../registry/radix-nova/ui/toggle-group.tsx | 4 +- apps/v4/registry/radix-nova/ui/toggle.tsx | 2 +- apps/v4/registry/radix-nova/ui/tooltip.tsx | 2 +- .../radix-vega/demo/accordion-demo.tsx | 38 - .../radix-vega/demo/accordion-disabled.tsx | 36 - .../radix-vega/demo/accordion-multiple.tsx | 46 - .../radix-vega/demo/chart-tooltip-demo.tsx | 218 - .../radix-vega/demo/combobox-responsive.tsx | 123 - .../radix-vega/demo/radio-group-demo.tsx | 24 - .../radix-vega/demo/separator-demo.tsx | 22 - .../registry/radix-vega/demo/sheet-demo.tsx | 47 - .../registry/radix-vega/demo/sheet-side.tsx | 61 - .../radix-vega/demo/textarea-demo.tsx | 5 - .../radix-vega/demo/textarea-disabled.tsx | 5 - .../radix-vega/demo/textarea-with-button.tsx | 11 - .../radix-vega/demo/textarea-with-label.tsx | 11 - .../radix-vega/demo/textarea-with-text.tsx | 14 - apps/v4/registry/radix-vega/registry.ts | 2524 ---- apps/v4/registry/radix-vega/ui/accordion.tsx | 95 - .../registry/radix-vega/ui/alert-dialog.tsx | 184 - apps/v4/registry/radix-vega/ui/alert.tsx | 72 - .../registry/radix-vega/ui/aspect-ratio.tsx | 11 - apps/v4/registry/radix-vega/ui/avatar.tsx | 109 - apps/v4/registry/radix-vega/ui/badge.tsx | 45 - apps/v4/registry/radix-vega/ui/breadcrumb.tsx | 131 - .../registry/radix-vega/ui/button-group.tsx | 83 - apps/v4/registry/radix-vega/ui/button.tsx | 60 - apps/v4/registry/radix-vega/ui/card.tsx | 94 - apps/v4/registry/radix-vega/ui/carousel.tsx | 252 - apps/v4/registry/radix-vega/ui/chart.tsx | 356 - apps/v4/registry/radix-vega/ui/checkbox.tsx | 37 - .../v4/registry/radix-vega/ui/collapsible.tsx | 33 - apps/v4/registry/radix-vega/ui/combobox.tsx | 321 - apps/v4/registry/radix-vega/ui/command.tsx | 198 - .../registry/radix-vega/ui/context-menu.tsx | 269 - apps/v4/registry/radix-vega/ui/dialog.tsx | 159 - apps/v4/registry/radix-vega/ui/drawer.tsx | 125 - .../registry/radix-vega/ui/dropdown-menu.tsx | 275 - apps/v4/registry/radix-vega/ui/empty.tsx | 104 - apps/v4/registry/radix-vega/ui/field.tsx | 227 - apps/v4/registry/radix-vega/ui/hover-card.tsx | 44 - .../v4/registry/radix-vega/ui/input-group.tsx | 147 - apps/v4/registry/radix-vega/ui/input-otp.tsx | 91 - apps/v4/registry/radix-vega/ui/input.tsx | 19 - apps/v4/registry/radix-vega/ui/item.tsx | 195 - apps/v4/registry/radix-vega/ui/kbd.tsx | 26 - apps/v4/registry/radix-vega/ui/label.tsx | 24 - apps/v4/registry/radix-vega/ui/menubar.tsx | 283 - .../registry/radix-vega/ui/native-select.tsx | 60 - .../radix-vega/ui/navigation-menu.tsx | 168 - apps/v4/registry/radix-vega/ui/pagination.tsx | 148 - apps/v4/registry/radix-vega/ui/popover.tsx | 89 - apps/v4/registry/radix-vega/ui/progress.tsx | 31 - .../v4/registry/radix-vega/ui/radio-group.tsx | 51 - apps/v4/registry/radix-vega/ui/resizable.tsx | 53 - .../v4/registry/radix-vega/ui/scroll-area.tsx | 55 - apps/v4/registry/radix-vega/ui/select.tsx | 210 - apps/v4/registry/radix-vega/ui/separator.tsx | 28 - apps/v4/registry/radix-vega/ui/sheet.tsx | 138 - apps/v4/registry/radix-vega/ui/sidebar.tsx | 706 - apps/v4/registry/radix-vega/ui/skeleton.tsx | 13 - apps/v4/registry/radix-vega/ui/slider.tsx | 59 - apps/v4/registry/radix-vega/ui/sonner.tsx | 80 - apps/v4/registry/radix-vega/ui/spinner.tsx | 19 - apps/v4/registry/radix-vega/ui/switch.tsx | 33 - apps/v4/registry/radix-vega/ui/table.tsx | 101 - apps/v4/registry/radix-vega/ui/tabs.tsx | 90 - apps/v4/registry/radix-vega/ui/textarea.tsx | 18 - .../registry/radix-vega/ui/toggle-group.tsx | 89 - apps/v4/registry/radix-vega/ui/toggle.tsx | 46 - apps/v4/registry/radix-vega/ui/tooltip.tsx | 61 - apps/v4/scripts/build-registry.mts | 32 +- 3971 files changed, 108735 insertions(+), 15897 deletions(-) create mode 100644 apps/v4/public/r/styles/base-lyra/alert-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/alert-destructive.json create mode 100644 apps/v4/public/r/styles/base-lyra/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/avatar-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/badge-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/badge-destructive.json create mode 100644 apps/v4/public/r/styles/base-lyra/badge-outline.json create mode 100644 apps/v4/public/r/styles/base-lyra/badge-secondary.json create mode 100644 apps/v4/public/r/styles/base-lyra/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/base-lyra/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/base-lyra/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/base-lyra/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/base-lyra/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-as-child.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-default.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-destructive.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-ghost.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-input.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-nested.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-popover.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-select.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-separator.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-size.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-group-split.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-icon.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-link.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-loading.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-outline.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-rounded.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-secondary.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-size.json create mode 100644 apps/v4/public/r/styles/base-lyra/button-with-icon.json create mode 100644 apps/v4/public/r/styles/base-lyra/calendar-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/base-lyra/card-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/carousel-api.json create mode 100644 apps/v4/public/r/styles/base-lyra/carousel-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/base-lyra/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/base-lyra/carousel-size.json create mode 100644 apps/v4/public/r/styles/base-lyra/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/base-lyra/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/base-lyra/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/base-lyra/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/base-lyra/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/base-lyra/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/base-lyra/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/base-lyra/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/combobox-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/base-lyra/combobox-popover.json create mode 100644 apps/v4/public/r/styles/base-lyra/command-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/command-dialog.json create mode 100644 apps/v4/public/r/styles/base-lyra/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/data-table-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/base-lyra/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/base-lyra/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/base-lyra/dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/drawer-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/base-lyra/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/base-lyra/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/base-lyra/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/empty-avatar.json create mode 100644 apps/v4/public/r/styles/base-lyra/empty-background.json create mode 100644 apps/v4/public/r/styles/base-lyra/empty-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/empty-icon.json create mode 100644 apps/v4/public/r/styles/base-lyra/empty-input-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/empty-outline.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-checkbox.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-choice-card.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-fieldset.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-input.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-radio.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-responsive.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-select.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-slider.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-switch.json create mode 100644 apps/v4/public/r/styles/base-lyra/field-textarea.json create mode 100644 apps/v4/public/r/styles/base-lyra/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-disabled.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-file.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-button.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-custom.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-icon.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-label.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-text.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-with-button.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-with-label.json create mode 100644 apps/v4/public/r/styles/base-lyra/input-with-text.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-avatar.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-dropdown.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-header.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-icon.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-image.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-link.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-size.json create mode 100644 apps/v4/public/r/styles/base-lyra/item-variant.json create mode 100644 apps/v4/public/r/styles/base-lyra/kbd-button.json create mode 100644 apps/v4/public/r/styles/base-lyra/kbd-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/kbd-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/base-lyra/label-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/menubar-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/native-select-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/base-lyra/native-select-groups.json create mode 100644 apps/v4/public/r/styles/base-lyra/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/base-lyra/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/pagination-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/popover-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/progress-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/base-lyra/resizable-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/resizable-handle.json create mode 100644 apps/v4/public/r/styles/base-lyra/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/base-lyra/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/select-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/select-scrollable.json create mode 100644 apps/v4/public/r/styles/base-lyra/skeleton-card.json create mode 100644 apps/v4/public/r/styles/base-lyra/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/slider-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/sonner-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/sonner-types.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-badge.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-basic.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-button.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-color.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-custom.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-empty.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-item.json create mode 100644 apps/v4/public/r/styles/base-lyra/spinner-size.json create mode 100644 apps/v4/public/r/styles/base-lyra/switch-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/table-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/tabs-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-lg.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-outline.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-sm.json create mode 100644 apps/v4/public/r/styles/base-lyra/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/base-lyra/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-demo.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-h1.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-h2.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-h3.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-h4.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-large.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-lead.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-list.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-muted.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-p.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-small.json create mode 100644 apps/v4/public/r/styles/base-lyra/typography-table.json create mode 100644 apps/v4/public/r/styles/base-maia/alert-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/alert-destructive.json create mode 100644 apps/v4/public/r/styles/base-maia/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/avatar-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/badge-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/badge-destructive.json create mode 100644 apps/v4/public/r/styles/base-maia/badge-outline.json create mode 100644 apps/v4/public/r/styles/base-maia/badge-secondary.json create mode 100644 apps/v4/public/r/styles/base-maia/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/base-maia/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/base-maia/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/base-maia/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/base-maia/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/base-maia/button-as-child.json create mode 100644 apps/v4/public/r/styles/base-maia/button-default.json create mode 100644 apps/v4/public/r/styles/base-maia/button-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/button-destructive.json create mode 100644 apps/v4/public/r/styles/base-maia/button-ghost.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-input.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-nested.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-popover.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-select.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-separator.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-size.json create mode 100644 apps/v4/public/r/styles/base-maia/button-group-split.json create mode 100644 apps/v4/public/r/styles/base-maia/button-icon.json create mode 100644 apps/v4/public/r/styles/base-maia/button-link.json create mode 100644 apps/v4/public/r/styles/base-maia/button-loading.json create mode 100644 apps/v4/public/r/styles/base-maia/button-outline.json create mode 100644 apps/v4/public/r/styles/base-maia/button-rounded.json create mode 100644 apps/v4/public/r/styles/base-maia/button-secondary.json create mode 100644 apps/v4/public/r/styles/base-maia/button-size.json create mode 100644 apps/v4/public/r/styles/base-maia/button-with-icon.json create mode 100644 apps/v4/public/r/styles/base-maia/calendar-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/base-maia/card-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/carousel-api.json create mode 100644 apps/v4/public/r/styles/base-maia/carousel-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/base-maia/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/base-maia/carousel-size.json create mode 100644 apps/v4/public/r/styles/base-maia/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/base-maia/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/base-maia/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/base-maia/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/base-maia/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/base-maia/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/base-maia/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/base-maia/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/combobox-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/base-maia/combobox-popover.json create mode 100644 apps/v4/public/r/styles/base-maia/command-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/command-dialog.json create mode 100644 apps/v4/public/r/styles/base-maia/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/data-table-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/base-maia/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/base-maia/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/base-maia/dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/drawer-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/base-maia/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/base-maia/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/base-maia/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/base-maia/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/base-maia/empty-avatar.json create mode 100644 apps/v4/public/r/styles/base-maia/empty-background.json create mode 100644 apps/v4/public/r/styles/base-maia/empty-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/empty-icon.json create mode 100644 apps/v4/public/r/styles/base-maia/empty-input-group.json create mode 100644 apps/v4/public/r/styles/base-maia/empty-outline.json create mode 100644 apps/v4/public/r/styles/base-maia/field-checkbox.json create mode 100644 apps/v4/public/r/styles/base-maia/field-choice-card.json create mode 100644 apps/v4/public/r/styles/base-maia/field-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/field-fieldset.json create mode 100644 apps/v4/public/r/styles/base-maia/field-group.json create mode 100644 apps/v4/public/r/styles/base-maia/field-input.json create mode 100644 apps/v4/public/r/styles/base-maia/field-radio.json create mode 100644 apps/v4/public/r/styles/base-maia/field-responsive.json create mode 100644 apps/v4/public/r/styles/base-maia/field-select.json create mode 100644 apps/v4/public/r/styles/base-maia/field-slider.json create mode 100644 apps/v4/public/r/styles/base-maia/field-switch.json create mode 100644 apps/v4/public/r/styles/base-maia/field-textarea.json create mode 100644 apps/v4/public/r/styles/base-maia/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/input-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/input-disabled.json create mode 100644 apps/v4/public/r/styles/base-maia/input-file.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-button.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-custom.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-icon.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-label.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-text.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/base-maia/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/base-maia/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/base-maia/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/base-maia/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/base-maia/input-with-button.json create mode 100644 apps/v4/public/r/styles/base-maia/input-with-label.json create mode 100644 apps/v4/public/r/styles/base-maia/input-with-text.json create mode 100644 apps/v4/public/r/styles/base-maia/item-avatar.json create mode 100644 apps/v4/public/r/styles/base-maia/item-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/item-dropdown.json create mode 100644 apps/v4/public/r/styles/base-maia/item-group.json create mode 100644 apps/v4/public/r/styles/base-maia/item-header.json create mode 100644 apps/v4/public/r/styles/base-maia/item-icon.json create mode 100644 apps/v4/public/r/styles/base-maia/item-image.json create mode 100644 apps/v4/public/r/styles/base-maia/item-link.json create mode 100644 apps/v4/public/r/styles/base-maia/item-size.json create mode 100644 apps/v4/public/r/styles/base-maia/item-variant.json create mode 100644 apps/v4/public/r/styles/base-maia/kbd-button.json create mode 100644 apps/v4/public/r/styles/base-maia/kbd-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/kbd-group.json create mode 100644 apps/v4/public/r/styles/base-maia/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/base-maia/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/base-maia/label-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/menubar-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/native-select-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/base-maia/native-select-groups.json create mode 100644 apps/v4/public/r/styles/base-maia/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/base-maia/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/pagination-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/popover-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/progress-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/base-maia/resizable-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/resizable-handle.json create mode 100644 apps/v4/public/r/styles/base-maia/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/base-maia/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/select-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/select-scrollable.json create mode 100644 apps/v4/public/r/styles/base-maia/skeleton-card.json create mode 100644 apps/v4/public/r/styles/base-maia/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/slider-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/sonner-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/sonner-types.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-badge.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-basic.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-button.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-color.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-custom.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-empty.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-item.json create mode 100644 apps/v4/public/r/styles/base-maia/spinner-size.json create mode 100644 apps/v4/public/r/styles/base-maia/switch-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/table-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/tabs-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-lg.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-outline.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-sm.json create mode 100644 apps/v4/public/r/styles/base-maia/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/base-maia/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-demo.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-h1.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-h2.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-h3.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-h4.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-large.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-lead.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-list.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-muted.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-p.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-small.json create mode 100644 apps/v4/public/r/styles/base-maia/typography-table.json create mode 100644 apps/v4/public/r/styles/base-mira/alert-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/alert-destructive.json create mode 100644 apps/v4/public/r/styles/base-mira/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/avatar-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/badge-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/badge-destructive.json create mode 100644 apps/v4/public/r/styles/base-mira/badge-outline.json create mode 100644 apps/v4/public/r/styles/base-mira/badge-secondary.json create mode 100644 apps/v4/public/r/styles/base-mira/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/base-mira/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/base-mira/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/base-mira/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/base-mira/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/base-mira/button-as-child.json create mode 100644 apps/v4/public/r/styles/base-mira/button-default.json create mode 100644 apps/v4/public/r/styles/base-mira/button-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/button-destructive.json create mode 100644 apps/v4/public/r/styles/base-mira/button-ghost.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-input.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-nested.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-popover.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-select.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-separator.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-size.json create mode 100644 apps/v4/public/r/styles/base-mira/button-group-split.json create mode 100644 apps/v4/public/r/styles/base-mira/button-icon.json create mode 100644 apps/v4/public/r/styles/base-mira/button-link.json create mode 100644 apps/v4/public/r/styles/base-mira/button-loading.json create mode 100644 apps/v4/public/r/styles/base-mira/button-outline.json create mode 100644 apps/v4/public/r/styles/base-mira/button-rounded.json create mode 100644 apps/v4/public/r/styles/base-mira/button-secondary.json create mode 100644 apps/v4/public/r/styles/base-mira/button-size.json create mode 100644 apps/v4/public/r/styles/base-mira/button-with-icon.json create mode 100644 apps/v4/public/r/styles/base-mira/calendar-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/base-mira/card-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/carousel-api.json create mode 100644 apps/v4/public/r/styles/base-mira/carousel-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/base-mira/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/base-mira/carousel-size.json create mode 100644 apps/v4/public/r/styles/base-mira/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/base-mira/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/base-mira/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/base-mira/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/base-mira/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/base-mira/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/base-mira/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/base-mira/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/combobox-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/base-mira/combobox-popover.json create mode 100644 apps/v4/public/r/styles/base-mira/command-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/command-dialog.json create mode 100644 apps/v4/public/r/styles/base-mira/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/data-table-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/base-mira/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/base-mira/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/base-mira/dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/drawer-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/base-mira/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/base-mira/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/base-mira/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/base-mira/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/base-mira/empty-avatar.json create mode 100644 apps/v4/public/r/styles/base-mira/empty-background.json create mode 100644 apps/v4/public/r/styles/base-mira/empty-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/empty-icon.json create mode 100644 apps/v4/public/r/styles/base-mira/empty-input-group.json create mode 100644 apps/v4/public/r/styles/base-mira/empty-outline.json create mode 100644 apps/v4/public/r/styles/base-mira/field-checkbox.json create mode 100644 apps/v4/public/r/styles/base-mira/field-choice-card.json create mode 100644 apps/v4/public/r/styles/base-mira/field-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/field-fieldset.json create mode 100644 apps/v4/public/r/styles/base-mira/field-group.json create mode 100644 apps/v4/public/r/styles/base-mira/field-input.json create mode 100644 apps/v4/public/r/styles/base-mira/field-radio.json create mode 100644 apps/v4/public/r/styles/base-mira/field-responsive.json create mode 100644 apps/v4/public/r/styles/base-mira/field-select.json create mode 100644 apps/v4/public/r/styles/base-mira/field-slider.json create mode 100644 apps/v4/public/r/styles/base-mira/field-switch.json create mode 100644 apps/v4/public/r/styles/base-mira/field-textarea.json create mode 100644 apps/v4/public/r/styles/base-mira/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/input-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/input-disabled.json create mode 100644 apps/v4/public/r/styles/base-mira/input-file.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-button.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-custom.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-icon.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-label.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-text.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/base-mira/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/base-mira/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/base-mira/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/base-mira/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/base-mira/input-with-button.json create mode 100644 apps/v4/public/r/styles/base-mira/input-with-label.json create mode 100644 apps/v4/public/r/styles/base-mira/input-with-text.json create mode 100644 apps/v4/public/r/styles/base-mira/item-avatar.json create mode 100644 apps/v4/public/r/styles/base-mira/item-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/item-dropdown.json create mode 100644 apps/v4/public/r/styles/base-mira/item-group.json create mode 100644 apps/v4/public/r/styles/base-mira/item-header.json create mode 100644 apps/v4/public/r/styles/base-mira/item-icon.json create mode 100644 apps/v4/public/r/styles/base-mira/item-image.json create mode 100644 apps/v4/public/r/styles/base-mira/item-link.json create mode 100644 apps/v4/public/r/styles/base-mira/item-size.json create mode 100644 apps/v4/public/r/styles/base-mira/item-variant.json create mode 100644 apps/v4/public/r/styles/base-mira/kbd-button.json create mode 100644 apps/v4/public/r/styles/base-mira/kbd-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/kbd-group.json create mode 100644 apps/v4/public/r/styles/base-mira/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/base-mira/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/base-mira/label-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/menubar-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/native-select-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/base-mira/native-select-groups.json create mode 100644 apps/v4/public/r/styles/base-mira/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/base-mira/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/pagination-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/popover-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/progress-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/base-mira/resizable-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/resizable-handle.json create mode 100644 apps/v4/public/r/styles/base-mira/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/base-mira/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/select-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/select-scrollable.json create mode 100644 apps/v4/public/r/styles/base-mira/skeleton-card.json create mode 100644 apps/v4/public/r/styles/base-mira/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/slider-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/sonner-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/sonner-types.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-badge.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-basic.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-button.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-color.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-custom.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-empty.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-item.json create mode 100644 apps/v4/public/r/styles/base-mira/spinner-size.json create mode 100644 apps/v4/public/r/styles/base-mira/switch-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/table-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/tabs-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-lg.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-outline.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-sm.json create mode 100644 apps/v4/public/r/styles/base-mira/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/base-mira/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-demo.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-h1.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-h2.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-h3.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-h4.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-large.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-lead.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-list.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-muted.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-p.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-small.json create mode 100644 apps/v4/public/r/styles/base-mira/typography-table.json create mode 100644 apps/v4/public/r/styles/base-nova/alert-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/alert-destructive.json create mode 100644 apps/v4/public/r/styles/base-nova/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/avatar-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/badge-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/badge-destructive.json create mode 100644 apps/v4/public/r/styles/base-nova/badge-outline.json create mode 100644 apps/v4/public/r/styles/base-nova/badge-secondary.json create mode 100644 apps/v4/public/r/styles/base-nova/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/base-nova/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/base-nova/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/base-nova/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/base-nova/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/base-nova/button-as-child.json create mode 100644 apps/v4/public/r/styles/base-nova/button-default.json create mode 100644 apps/v4/public/r/styles/base-nova/button-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/button-destructive.json create mode 100644 apps/v4/public/r/styles/base-nova/button-ghost.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-input.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-nested.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-popover.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-select.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-separator.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-size.json create mode 100644 apps/v4/public/r/styles/base-nova/button-group-split.json create mode 100644 apps/v4/public/r/styles/base-nova/button-icon.json create mode 100644 apps/v4/public/r/styles/base-nova/button-link.json create mode 100644 apps/v4/public/r/styles/base-nova/button-loading.json create mode 100644 apps/v4/public/r/styles/base-nova/button-outline.json create mode 100644 apps/v4/public/r/styles/base-nova/button-rounded.json create mode 100644 apps/v4/public/r/styles/base-nova/button-secondary.json create mode 100644 apps/v4/public/r/styles/base-nova/button-size.json create mode 100644 apps/v4/public/r/styles/base-nova/button-with-icon.json create mode 100644 apps/v4/public/r/styles/base-nova/calendar-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/base-nova/card-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/carousel-api.json create mode 100644 apps/v4/public/r/styles/base-nova/carousel-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/base-nova/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/base-nova/carousel-size.json create mode 100644 apps/v4/public/r/styles/base-nova/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/base-nova/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/base-nova/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/base-nova/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/base-nova/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/base-nova/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/base-nova/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/base-nova/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/combobox-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/base-nova/combobox-popover.json create mode 100644 apps/v4/public/r/styles/base-nova/command-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/command-dialog.json create mode 100644 apps/v4/public/r/styles/base-nova/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/data-table-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/base-nova/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/base-nova/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/base-nova/dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/drawer-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/base-nova/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/base-nova/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/base-nova/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/base-nova/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/base-nova/empty-avatar.json create mode 100644 apps/v4/public/r/styles/base-nova/empty-background.json create mode 100644 apps/v4/public/r/styles/base-nova/empty-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/empty-icon.json create mode 100644 apps/v4/public/r/styles/base-nova/empty-input-group.json create mode 100644 apps/v4/public/r/styles/base-nova/empty-outline.json create mode 100644 apps/v4/public/r/styles/base-nova/field-checkbox.json create mode 100644 apps/v4/public/r/styles/base-nova/field-choice-card.json create mode 100644 apps/v4/public/r/styles/base-nova/field-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/field-fieldset.json create mode 100644 apps/v4/public/r/styles/base-nova/field-group.json create mode 100644 apps/v4/public/r/styles/base-nova/field-input.json create mode 100644 apps/v4/public/r/styles/base-nova/field-radio.json create mode 100644 apps/v4/public/r/styles/base-nova/field-responsive.json create mode 100644 apps/v4/public/r/styles/base-nova/field-select.json create mode 100644 apps/v4/public/r/styles/base-nova/field-slider.json create mode 100644 apps/v4/public/r/styles/base-nova/field-switch.json create mode 100644 apps/v4/public/r/styles/base-nova/field-textarea.json create mode 100644 apps/v4/public/r/styles/base-nova/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/input-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/input-disabled.json create mode 100644 apps/v4/public/r/styles/base-nova/input-file.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-button.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-custom.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-icon.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-label.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-text.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/base-nova/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/base-nova/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/base-nova/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/base-nova/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/base-nova/input-with-button.json create mode 100644 apps/v4/public/r/styles/base-nova/input-with-label.json create mode 100644 apps/v4/public/r/styles/base-nova/input-with-text.json create mode 100644 apps/v4/public/r/styles/base-nova/item-avatar.json create mode 100644 apps/v4/public/r/styles/base-nova/item-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/item-dropdown.json create mode 100644 apps/v4/public/r/styles/base-nova/item-group.json create mode 100644 apps/v4/public/r/styles/base-nova/item-header.json create mode 100644 apps/v4/public/r/styles/base-nova/item-icon.json create mode 100644 apps/v4/public/r/styles/base-nova/item-image.json create mode 100644 apps/v4/public/r/styles/base-nova/item-link.json create mode 100644 apps/v4/public/r/styles/base-nova/item-size.json create mode 100644 apps/v4/public/r/styles/base-nova/item-variant.json create mode 100644 apps/v4/public/r/styles/base-nova/kbd-button.json create mode 100644 apps/v4/public/r/styles/base-nova/kbd-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/kbd-group.json create mode 100644 apps/v4/public/r/styles/base-nova/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/base-nova/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/base-nova/label-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/menubar-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/native-select-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/base-nova/native-select-groups.json create mode 100644 apps/v4/public/r/styles/base-nova/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/base-nova/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/pagination-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/popover-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/progress-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/base-nova/resizable-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/resizable-handle.json create mode 100644 apps/v4/public/r/styles/base-nova/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/base-nova/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/select-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/select-scrollable.json create mode 100644 apps/v4/public/r/styles/base-nova/skeleton-card.json create mode 100644 apps/v4/public/r/styles/base-nova/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/slider-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/sonner-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/sonner-types.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-badge.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-basic.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-button.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-color.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-custom.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-empty.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-item.json create mode 100644 apps/v4/public/r/styles/base-nova/spinner-size.json create mode 100644 apps/v4/public/r/styles/base-nova/switch-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/table-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/tabs-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-lg.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-outline.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-sm.json create mode 100644 apps/v4/public/r/styles/base-nova/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/base-nova/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-demo.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-h1.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-h2.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-h3.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-h4.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-large.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-lead.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-list.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-muted.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-p.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-small.json create mode 100644 apps/v4/public/r/styles/base-nova/typography-table.json create mode 100644 apps/v4/public/r/styles/base-vega/alert-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/alert-destructive.json create mode 100644 apps/v4/public/r/styles/base-vega/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/avatar-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/badge-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/badge-destructive.json create mode 100644 apps/v4/public/r/styles/base-vega/badge-outline.json create mode 100644 apps/v4/public/r/styles/base-vega/badge-secondary.json create mode 100644 apps/v4/public/r/styles/base-vega/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/base-vega/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/base-vega/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/base-vega/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/base-vega/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/base-vega/button-as-child.json create mode 100644 apps/v4/public/r/styles/base-vega/button-default.json create mode 100644 apps/v4/public/r/styles/base-vega/button-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/button-destructive.json create mode 100644 apps/v4/public/r/styles/base-vega/button-ghost.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-input.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-nested.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-popover.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-select.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-separator.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-size.json create mode 100644 apps/v4/public/r/styles/base-vega/button-group-split.json create mode 100644 apps/v4/public/r/styles/base-vega/button-icon.json create mode 100644 apps/v4/public/r/styles/base-vega/button-link.json create mode 100644 apps/v4/public/r/styles/base-vega/button-loading.json create mode 100644 apps/v4/public/r/styles/base-vega/button-outline.json create mode 100644 apps/v4/public/r/styles/base-vega/button-rounded.json create mode 100644 apps/v4/public/r/styles/base-vega/button-secondary.json create mode 100644 apps/v4/public/r/styles/base-vega/button-size.json create mode 100644 apps/v4/public/r/styles/base-vega/button-with-icon.json create mode 100644 apps/v4/public/r/styles/base-vega/calendar-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/base-vega/card-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/carousel-api.json create mode 100644 apps/v4/public/r/styles/base-vega/carousel-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/base-vega/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/base-vega/carousel-size.json create mode 100644 apps/v4/public/r/styles/base-vega/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/base-vega/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/base-vega/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/base-vega/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/base-vega/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/base-vega/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/base-vega/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/base-vega/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/combobox-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/base-vega/combobox-popover.json create mode 100644 apps/v4/public/r/styles/base-vega/command-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/command-dialog.json create mode 100644 apps/v4/public/r/styles/base-vega/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/data-table-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/base-vega/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/base-vega/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/base-vega/dialog-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/drawer-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/base-vega/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/base-vega/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/base-vega/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/base-vega/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/base-vega/empty-avatar.json create mode 100644 apps/v4/public/r/styles/base-vega/empty-background.json create mode 100644 apps/v4/public/r/styles/base-vega/empty-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/empty-icon.json create mode 100644 apps/v4/public/r/styles/base-vega/empty-input-group.json create mode 100644 apps/v4/public/r/styles/base-vega/empty-outline.json create mode 100644 apps/v4/public/r/styles/base-vega/field-checkbox.json create mode 100644 apps/v4/public/r/styles/base-vega/field-choice-card.json create mode 100644 apps/v4/public/r/styles/base-vega/field-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/field-fieldset.json create mode 100644 apps/v4/public/r/styles/base-vega/field-group.json create mode 100644 apps/v4/public/r/styles/base-vega/field-input.json create mode 100644 apps/v4/public/r/styles/base-vega/field-radio.json create mode 100644 apps/v4/public/r/styles/base-vega/field-responsive.json create mode 100644 apps/v4/public/r/styles/base-vega/field-select.json create mode 100644 apps/v4/public/r/styles/base-vega/field-slider.json create mode 100644 apps/v4/public/r/styles/base-vega/field-switch.json create mode 100644 apps/v4/public/r/styles/base-vega/field-textarea.json create mode 100644 apps/v4/public/r/styles/base-vega/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/input-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/input-disabled.json create mode 100644 apps/v4/public/r/styles/base-vega/input-file.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-button.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-custom.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-icon.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-label.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-text.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/base-vega/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/base-vega/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/base-vega/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/base-vega/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/base-vega/input-with-button.json create mode 100644 apps/v4/public/r/styles/base-vega/input-with-label.json create mode 100644 apps/v4/public/r/styles/base-vega/input-with-text.json create mode 100644 apps/v4/public/r/styles/base-vega/item-avatar.json create mode 100644 apps/v4/public/r/styles/base-vega/item-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/item-dropdown.json create mode 100644 apps/v4/public/r/styles/base-vega/item-group.json create mode 100644 apps/v4/public/r/styles/base-vega/item-header.json create mode 100644 apps/v4/public/r/styles/base-vega/item-icon.json create mode 100644 apps/v4/public/r/styles/base-vega/item-image.json create mode 100644 apps/v4/public/r/styles/base-vega/item-link.json create mode 100644 apps/v4/public/r/styles/base-vega/item-size.json create mode 100644 apps/v4/public/r/styles/base-vega/item-variant.json create mode 100644 apps/v4/public/r/styles/base-vega/kbd-button.json create mode 100644 apps/v4/public/r/styles/base-vega/kbd-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/kbd-group.json create mode 100644 apps/v4/public/r/styles/base-vega/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/base-vega/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/base-vega/label-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/menubar-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/native-select-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/base-vega/native-select-groups.json create mode 100644 apps/v4/public/r/styles/base-vega/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/base-vega/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/pagination-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/popover-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/progress-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/base-vega/resizable-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/resizable-handle.json create mode 100644 apps/v4/public/r/styles/base-vega/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/base-vega/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/select-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/select-scrollable.json create mode 100644 apps/v4/public/r/styles/base-vega/skeleton-card.json create mode 100644 apps/v4/public/r/styles/base-vega/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/slider-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/sonner-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/sonner-types.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-badge.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-basic.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-button.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-color.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-custom.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-empty.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-item.json create mode 100644 apps/v4/public/r/styles/base-vega/spinner-size.json create mode 100644 apps/v4/public/r/styles/base-vega/switch-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/table-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/tabs-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-lg.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-outline.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-sm.json create mode 100644 apps/v4/public/r/styles/base-vega/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/base-vega/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-demo.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-h1.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-h2.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-h3.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-h4.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-large.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-lead.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-list.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-muted.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-p.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-small.json create mode 100644 apps/v4/public/r/styles/base-vega/typography-table.json create mode 100644 apps/v4/public/r/styles/radix-lyra/alert-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/alert-destructive.json create mode 100644 apps/v4/public/r/styles/radix-lyra/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/avatar-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/badge-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/badge-destructive.json create mode 100644 apps/v4/public/r/styles/radix-lyra/badge-outline.json create mode 100644 apps/v4/public/r/styles/radix-lyra/badge-secondary.json create mode 100644 apps/v4/public/r/styles/radix-lyra/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-lyra/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/radix-lyra/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/radix-lyra/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/radix-lyra/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-as-child.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-default.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-destructive.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-ghost.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-input.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-nested.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-popover.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-select.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-separator.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-size.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-group-split.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-icon.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-link.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-loading.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-outline.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-rounded.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-secondary.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-size.json create mode 100644 apps/v4/public/r/styles/radix-lyra/button-with-icon.json create mode 100644 apps/v4/public/r/styles/radix-lyra/calendar-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/radix-lyra/card-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/carousel-api.json create mode 100644 apps/v4/public/r/styles/radix-lyra/carousel-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/radix-lyra/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/radix-lyra/carousel-size.json create mode 100644 apps/v4/public/r/styles/radix-lyra/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/radix-lyra/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/radix-lyra/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/radix-lyra/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/radix-lyra/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-lyra/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/radix-lyra/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/radix-lyra/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/combobox-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/radix-lyra/combobox-popover.json create mode 100644 apps/v4/public/r/styles/radix-lyra/command-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/command-dialog.json create mode 100644 apps/v4/public/r/styles/radix-lyra/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/data-table-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/radix-lyra/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/radix-lyra/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/radix-lyra/dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/drawer-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/radix-lyra/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/radix-lyra/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/radix-lyra/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/empty-avatar.json create mode 100644 apps/v4/public/r/styles/radix-lyra/empty-background.json create mode 100644 apps/v4/public/r/styles/radix-lyra/empty-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/empty-icon.json create mode 100644 apps/v4/public/r/styles/radix-lyra/empty-input-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/empty-outline.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-checkbox.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-choice-card.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-fieldset.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-input.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-radio.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-responsive.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-select.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-slider.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-switch.json create mode 100644 apps/v4/public/r/styles/radix-lyra/field-textarea.json create mode 100644 apps/v4/public/r/styles/radix-lyra/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-disabled.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-file.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-button.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-custom.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-icon.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-label.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-text.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-with-button.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-with-label.json create mode 100644 apps/v4/public/r/styles/radix-lyra/input-with-text.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-avatar.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-header.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-icon.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-image.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-link.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-size.json create mode 100644 apps/v4/public/r/styles/radix-lyra/item-variant.json create mode 100644 apps/v4/public/r/styles/radix-lyra/kbd-button.json create mode 100644 apps/v4/public/r/styles/radix-lyra/kbd-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/kbd-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-lyra/label-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/menubar-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/native-select-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/radix-lyra/native-select-groups.json create mode 100644 apps/v4/public/r/styles/radix-lyra/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/radix-lyra/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/pagination-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/popover-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/progress-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/radix-lyra/resizable-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/resizable-handle.json create mode 100644 apps/v4/public/r/styles/radix-lyra/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/radix-lyra/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/select-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/select-scrollable.json create mode 100644 apps/v4/public/r/styles/radix-lyra/skeleton-card.json create mode 100644 apps/v4/public/r/styles/radix-lyra/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/slider-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/sonner-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/sonner-types.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-badge.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-basic.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-button.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-color.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-custom.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-empty.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-item.json create mode 100644 apps/v4/public/r/styles/radix-lyra/spinner-size.json create mode 100644 apps/v4/public/r/styles/radix-lyra/switch-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/table-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/tabs-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-lg.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-outline.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-sm.json create mode 100644 apps/v4/public/r/styles/radix-lyra/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/radix-lyra/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-demo.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-h1.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-h2.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-h3.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-h4.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-large.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-lead.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-list.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-muted.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-p.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-small.json create mode 100644 apps/v4/public/r/styles/radix-lyra/typography-table.json create mode 100644 apps/v4/public/r/styles/radix-maia/alert-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/alert-destructive.json create mode 100644 apps/v4/public/r/styles/radix-maia/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/avatar-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/badge-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/badge-destructive.json create mode 100644 apps/v4/public/r/styles/radix-maia/badge-outline.json create mode 100644 apps/v4/public/r/styles/radix-maia/badge-secondary.json create mode 100644 apps/v4/public/r/styles/radix-maia/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-maia/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/radix-maia/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/radix-maia/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/radix-maia/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-as-child.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-default.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-destructive.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-ghost.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-input.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-nested.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-popover.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-select.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-separator.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-size.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-group-split.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-icon.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-link.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-loading.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-outline.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-rounded.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-secondary.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-size.json create mode 100644 apps/v4/public/r/styles/radix-maia/button-with-icon.json create mode 100644 apps/v4/public/r/styles/radix-maia/calendar-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/radix-maia/card-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/carousel-api.json create mode 100644 apps/v4/public/r/styles/radix-maia/carousel-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/radix-maia/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/radix-maia/carousel-size.json create mode 100644 apps/v4/public/r/styles/radix-maia/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/radix-maia/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/radix-maia/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/radix-maia/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/radix-maia/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-maia/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/radix-maia/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/radix-maia/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/combobox-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/radix-maia/combobox-popover.json create mode 100644 apps/v4/public/r/styles/radix-maia/command-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/command-dialog.json create mode 100644 apps/v4/public/r/styles/radix-maia/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/data-table-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/radix-maia/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/radix-maia/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/radix-maia/dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/drawer-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/radix-maia/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/radix-maia/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/radix-maia/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/empty-avatar.json create mode 100644 apps/v4/public/r/styles/radix-maia/empty-background.json create mode 100644 apps/v4/public/r/styles/radix-maia/empty-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/empty-icon.json create mode 100644 apps/v4/public/r/styles/radix-maia/empty-input-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/empty-outline.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-checkbox.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-choice-card.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-fieldset.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-input.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-radio.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-responsive.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-select.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-slider.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-switch.json create mode 100644 apps/v4/public/r/styles/radix-maia/field-textarea.json create mode 100644 apps/v4/public/r/styles/radix-maia/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-disabled.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-file.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-button.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-custom.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-icon.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-label.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-text.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-with-button.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-with-label.json create mode 100644 apps/v4/public/r/styles/radix-maia/input-with-text.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-avatar.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-header.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-icon.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-image.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-link.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-size.json create mode 100644 apps/v4/public/r/styles/radix-maia/item-variant.json create mode 100644 apps/v4/public/r/styles/radix-maia/kbd-button.json create mode 100644 apps/v4/public/r/styles/radix-maia/kbd-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/kbd-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-maia/label-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/menubar-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/native-select-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/radix-maia/native-select-groups.json create mode 100644 apps/v4/public/r/styles/radix-maia/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/radix-maia/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/pagination-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/popover-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/progress-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/radix-maia/resizable-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/resizable-handle.json create mode 100644 apps/v4/public/r/styles/radix-maia/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/radix-maia/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/select-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/select-scrollable.json create mode 100644 apps/v4/public/r/styles/radix-maia/skeleton-card.json create mode 100644 apps/v4/public/r/styles/radix-maia/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/slider-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/sonner-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/sonner-types.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-badge.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-basic.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-button.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-color.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-custom.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-empty.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-item.json create mode 100644 apps/v4/public/r/styles/radix-maia/spinner-size.json create mode 100644 apps/v4/public/r/styles/radix-maia/switch-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/table-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/tabs-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-lg.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-outline.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-sm.json create mode 100644 apps/v4/public/r/styles/radix-maia/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/radix-maia/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-demo.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-h1.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-h2.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-h3.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-h4.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-large.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-lead.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-list.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-muted.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-p.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-small.json create mode 100644 apps/v4/public/r/styles/radix-maia/typography-table.json create mode 100644 apps/v4/public/r/styles/radix-mira/alert-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/alert-destructive.json create mode 100644 apps/v4/public/r/styles/radix-mira/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/avatar-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/badge-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/badge-destructive.json create mode 100644 apps/v4/public/r/styles/radix-mira/badge-outline.json create mode 100644 apps/v4/public/r/styles/radix-mira/badge-secondary.json create mode 100644 apps/v4/public/r/styles/radix-mira/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-mira/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/radix-mira/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/radix-mira/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/radix-mira/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-as-child.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-default.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-destructive.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-ghost.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-input.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-nested.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-popover.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-select.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-separator.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-size.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-group-split.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-icon.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-link.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-loading.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-outline.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-rounded.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-secondary.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-size.json create mode 100644 apps/v4/public/r/styles/radix-mira/button-with-icon.json create mode 100644 apps/v4/public/r/styles/radix-mira/calendar-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/radix-mira/card-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/carousel-api.json create mode 100644 apps/v4/public/r/styles/radix-mira/carousel-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/radix-mira/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/radix-mira/carousel-size.json create mode 100644 apps/v4/public/r/styles/radix-mira/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/radix-mira/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/radix-mira/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/radix-mira/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/radix-mira/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-mira/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/radix-mira/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/radix-mira/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/combobox-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/radix-mira/combobox-popover.json create mode 100644 apps/v4/public/r/styles/radix-mira/command-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/command-dialog.json create mode 100644 apps/v4/public/r/styles/radix-mira/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/data-table-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/radix-mira/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/radix-mira/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/radix-mira/dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/drawer-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/radix-mira/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/radix-mira/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/radix-mira/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/empty-avatar.json create mode 100644 apps/v4/public/r/styles/radix-mira/empty-background.json create mode 100644 apps/v4/public/r/styles/radix-mira/empty-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/empty-icon.json create mode 100644 apps/v4/public/r/styles/radix-mira/empty-input-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/empty-outline.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-checkbox.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-choice-card.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-fieldset.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-input.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-radio.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-responsive.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-select.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-slider.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-switch.json create mode 100644 apps/v4/public/r/styles/radix-mira/field-textarea.json create mode 100644 apps/v4/public/r/styles/radix-mira/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-disabled.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-file.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-button.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-custom.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-icon.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-label.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-text.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-with-button.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-with-label.json create mode 100644 apps/v4/public/r/styles/radix-mira/input-with-text.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-avatar.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-header.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-icon.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-image.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-link.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-size.json create mode 100644 apps/v4/public/r/styles/radix-mira/item-variant.json create mode 100644 apps/v4/public/r/styles/radix-mira/kbd-button.json create mode 100644 apps/v4/public/r/styles/radix-mira/kbd-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/kbd-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-mira/label-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/menubar-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/native-select-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/radix-mira/native-select-groups.json create mode 100644 apps/v4/public/r/styles/radix-mira/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/radix-mira/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/pagination-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/popover-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/progress-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/radix-mira/resizable-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/resizable-handle.json create mode 100644 apps/v4/public/r/styles/radix-mira/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/radix-mira/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/select-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/select-scrollable.json create mode 100644 apps/v4/public/r/styles/radix-mira/skeleton-card.json create mode 100644 apps/v4/public/r/styles/radix-mira/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/slider-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/sonner-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/sonner-types.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-badge.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-basic.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-button.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-color.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-custom.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-empty.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-item.json create mode 100644 apps/v4/public/r/styles/radix-mira/spinner-size.json create mode 100644 apps/v4/public/r/styles/radix-mira/switch-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/table-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/tabs-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-lg.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-outline.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-sm.json create mode 100644 apps/v4/public/r/styles/radix-mira/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/radix-mira/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-demo.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-h1.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-h2.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-h3.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-h4.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-large.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-lead.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-list.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-muted.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-p.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-small.json create mode 100644 apps/v4/public/r/styles/radix-mira/typography-table.json create mode 100644 apps/v4/public/r/styles/radix-nova/alert-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/alert-destructive.json create mode 100644 apps/v4/public/r/styles/radix-nova/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/avatar-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/badge-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/badge-destructive.json create mode 100644 apps/v4/public/r/styles/radix-nova/badge-outline.json create mode 100644 apps/v4/public/r/styles/radix-nova/badge-secondary.json create mode 100644 apps/v4/public/r/styles/radix-nova/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-nova/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/radix-nova/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/radix-nova/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/radix-nova/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-as-child.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-default.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-destructive.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-ghost.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-input.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-nested.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-popover.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-select.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-separator.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-size.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-group-split.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-icon.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-link.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-loading.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-outline.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-rounded.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-secondary.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-size.json create mode 100644 apps/v4/public/r/styles/radix-nova/button-with-icon.json create mode 100644 apps/v4/public/r/styles/radix-nova/calendar-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/radix-nova/card-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/carousel-api.json create mode 100644 apps/v4/public/r/styles/radix-nova/carousel-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/radix-nova/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/radix-nova/carousel-size.json create mode 100644 apps/v4/public/r/styles/radix-nova/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/radix-nova/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/radix-nova/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/radix-nova/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/radix-nova/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-nova/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/radix-nova/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/radix-nova/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/combobox-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/radix-nova/combobox-popover.json create mode 100644 apps/v4/public/r/styles/radix-nova/command-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/command-dialog.json create mode 100644 apps/v4/public/r/styles/radix-nova/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/data-table-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/radix-nova/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/radix-nova/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/radix-nova/dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/drawer-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/radix-nova/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/radix-nova/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/radix-nova/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/empty-avatar.json create mode 100644 apps/v4/public/r/styles/radix-nova/empty-background.json create mode 100644 apps/v4/public/r/styles/radix-nova/empty-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/empty-icon.json create mode 100644 apps/v4/public/r/styles/radix-nova/empty-input-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/empty-outline.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-checkbox.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-choice-card.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-fieldset.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-input.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-radio.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-responsive.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-select.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-slider.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-switch.json create mode 100644 apps/v4/public/r/styles/radix-nova/field-textarea.json create mode 100644 apps/v4/public/r/styles/radix-nova/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-disabled.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-file.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-button.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-custom.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-icon.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-label.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-text.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-with-button.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-with-label.json create mode 100644 apps/v4/public/r/styles/radix-nova/input-with-text.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-avatar.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-header.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-icon.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-image.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-link.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-size.json create mode 100644 apps/v4/public/r/styles/radix-nova/item-variant.json create mode 100644 apps/v4/public/r/styles/radix-nova/kbd-button.json create mode 100644 apps/v4/public/r/styles/radix-nova/kbd-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/kbd-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-nova/label-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/menubar-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/native-select-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/radix-nova/native-select-groups.json create mode 100644 apps/v4/public/r/styles/radix-nova/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/radix-nova/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/pagination-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/popover-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/progress-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/radix-nova/resizable-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/resizable-handle.json create mode 100644 apps/v4/public/r/styles/radix-nova/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/radix-nova/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/select-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/select-scrollable.json create mode 100644 apps/v4/public/r/styles/radix-nova/skeleton-card.json create mode 100644 apps/v4/public/r/styles/radix-nova/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/slider-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/sonner-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/sonner-types.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-badge.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-basic.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-button.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-color.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-custom.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-empty.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-item.json create mode 100644 apps/v4/public/r/styles/radix-nova/spinner-size.json create mode 100644 apps/v4/public/r/styles/radix-nova/switch-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/table-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/tabs-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-lg.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-outline.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-sm.json create mode 100644 apps/v4/public/r/styles/radix-nova/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/radix-nova/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-demo.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-h1.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-h2.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-h3.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-h4.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-large.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-lead.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-list.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-muted.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-p.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-small.json create mode 100644 apps/v4/public/r/styles/radix-nova/typography-table.json create mode 100644 apps/v4/public/r/styles/radix-vega/alert-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/alert-destructive.json create mode 100644 apps/v4/public/r/styles/radix-vega/alert-dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/aspect-ratio-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/avatar-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/badge-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/badge-destructive.json create mode 100644 apps/v4/public/r/styles/radix-vega/badge-outline.json create mode 100644 apps/v4/public/r/styles/radix-vega/badge-secondary.json create mode 100644 apps/v4/public/r/styles/radix-vega/breadcrumb-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/breadcrumb-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-vega/breadcrumb-ellipsis.json create mode 100644 apps/v4/public/r/styles/radix-vega/breadcrumb-link.json create mode 100644 apps/v4/public/r/styles/radix-vega/breadcrumb-responsive.json create mode 100644 apps/v4/public/r/styles/radix-vega/breadcrumb-separator.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-as-child.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-default.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-destructive.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-ghost.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-input-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-input.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-nested.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-orientation.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-popover.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-select.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-separator.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-size.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-group-split.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-icon.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-link.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-loading.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-outline.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-rounded.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-secondary.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-size.json create mode 100644 apps/v4/public/r/styles/radix-vega/button-with-icon.json create mode 100644 apps/v4/public/r/styles/radix-vega/calendar-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/calendar-hijri.json create mode 100644 apps/v4/public/r/styles/radix-vega/card-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/carousel-api.json create mode 100644 apps/v4/public/r/styles/radix-vega/carousel-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/carousel-orientation.json create mode 100644 apps/v4/public/r/styles/radix-vega/carousel-plugin.json create mode 100644 apps/v4/public/r/styles/radix-vega/carousel-size.json create mode 100644 apps/v4/public/r/styles/radix-vega/carousel-spacing.json create mode 100644 apps/v4/public/r/styles/radix-vega/chart-bar-demo-axis.json create mode 100644 apps/v4/public/r/styles/radix-vega/chart-bar-demo-grid.json create mode 100644 apps/v4/public/r/styles/radix-vega/chart-bar-demo-legend.json create mode 100644 apps/v4/public/r/styles/radix-vega/chart-bar-demo-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-vega/chart-bar-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/checkbox-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/checkbox-disabled.json create mode 100644 apps/v4/public/r/styles/radix-vega/checkbox-with-text.json create mode 100644 apps/v4/public/r/styles/radix-vega/collapsible-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/combobox-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/combobox-dropdown-menu.json create mode 100644 apps/v4/public/r/styles/radix-vega/combobox-popover.json create mode 100644 apps/v4/public/r/styles/radix-vega/command-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/command-dialog.json create mode 100644 apps/v4/public/r/styles/radix-vega/context-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/data-table-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/date-picker-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/date-picker-with-presets.json create mode 100644 apps/v4/public/r/styles/radix-vega/date-picker-with-range.json create mode 100644 apps/v4/public/r/styles/radix-vega/dialog-close-button.json create mode 100644 apps/v4/public/r/styles/radix-vega/dialog-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/drawer-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/drawer-dialog.json create mode 100644 apps/v4/public/r/styles/radix-vega/dropdown-menu-checkboxes.json create mode 100644 apps/v4/public/r/styles/radix-vega/dropdown-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/dropdown-menu-dialog.json create mode 100644 apps/v4/public/r/styles/radix-vega/dropdown-menu-radio-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/empty-avatar-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/empty-avatar.json create mode 100644 apps/v4/public/r/styles/radix-vega/empty-background.json create mode 100644 apps/v4/public/r/styles/radix-vega/empty-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/empty-icon.json create mode 100644 apps/v4/public/r/styles/radix-vega/empty-input-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/empty-outline.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-checkbox.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-choice-card.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-fieldset.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-input.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-radio.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-responsive.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-select.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-slider.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-switch.json create mode 100644 apps/v4/public/r/styles/radix-vega/field-textarea.json create mode 100644 apps/v4/public/r/styles/radix-vega/hover-card-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-disabled.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-file.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-button-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-button.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-custom.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-icon.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-label.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-spinner.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-text.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-textarea.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-group-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-otp-controlled.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-otp-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-otp-pattern.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-otp-separator.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-with-button.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-with-label.json create mode 100644 apps/v4/public/r/styles/radix-vega/input-with-text.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-avatar.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-dropdown.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-header.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-icon.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-image.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-link.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-size.json create mode 100644 apps/v4/public/r/styles/radix-vega/item-variant.json create mode 100644 apps/v4/public/r/styles/radix-vega/kbd-button.json create mode 100644 apps/v4/public/r/styles/radix-vega/kbd-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/kbd-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/kbd-input-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/kbd-tooltip.json create mode 100644 apps/v4/public/r/styles/radix-vega/label-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/menubar-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/native-select-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/native-select-disabled.json create mode 100644 apps/v4/public/r/styles/radix-vega/native-select-groups.json create mode 100644 apps/v4/public/r/styles/radix-vega/native-select-invalid.json create mode 100644 apps/v4/public/r/styles/radix-vega/navigation-menu-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/pagination-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/popover-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/progress-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/resizable-demo-with-handle.json create mode 100644 apps/v4/public/r/styles/radix-vega/resizable-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/resizable-handle.json create mode 100644 apps/v4/public/r/styles/radix-vega/resizable-vertical.json create mode 100644 apps/v4/public/r/styles/radix-vega/scroll-area-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/scroll-area-horizontal-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/select-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/select-scrollable.json create mode 100644 apps/v4/public/r/styles/radix-vega/skeleton-card.json create mode 100644 apps/v4/public/r/styles/radix-vega/skeleton-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/slider-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/sonner-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/sonner-types.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-badge.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-basic.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-button.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-color.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-custom.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-empty.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-input-group.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-item.json create mode 100644 apps/v4/public/r/styles/radix-vega/spinner-size.json create mode 100644 apps/v4/public/r/styles/radix-vega/switch-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/table-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/tabs-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-disabled.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-group-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-group-disabled.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-group-lg.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-group-outline.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-group-single.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-group-sm.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-group-spacing.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-lg.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-outline.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-sm.json create mode 100644 apps/v4/public/r/styles/radix-vega/toggle-with-text.json create mode 100644 apps/v4/public/r/styles/radix-vega/tooltip-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-blockquote.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-demo.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-h1.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-h2.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-h3.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-h4.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-inline-code.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-large.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-lead.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-list.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-muted.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-p.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-small.json create mode 100644 apps/v4/public/r/styles/radix-vega/typography-table.json delete mode 100644 apps/v4/registry/base-nova/demo/_registry.ts create mode 100644 apps/v4/registry/bases/base/demo/alert-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/alert-destructive.tsx create mode 100644 apps/v4/registry/bases/base/demo/alert-dialog-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/aspect-ratio-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/avatar-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/badge-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/badge-destructive.tsx create mode 100644 apps/v4/registry/bases/base/demo/badge-outline.tsx create mode 100644 apps/v4/registry/bases/base/demo/badge-secondary.tsx create mode 100644 apps/v4/registry/bases/base/demo/breadcrumb-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/breadcrumb-dropdown.tsx create mode 100644 apps/v4/registry/bases/base/demo/breadcrumb-ellipsis.tsx create mode 100644 apps/v4/registry/bases/base/demo/breadcrumb-link.tsx create mode 100644 apps/v4/registry/bases/base/demo/breadcrumb-responsive.tsx create mode 100644 apps/v4/registry/bases/base/demo/breadcrumb-separator.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-as-child.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-default.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-destructive.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-ghost.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-dropdown.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-input-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-input.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-nested.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-orientation.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-popover.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-select.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-separator.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-size.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-group-split.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-icon.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-link.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-loading.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-outline.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-rounded.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-secondary.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-size.tsx create mode 100644 apps/v4/registry/bases/base/demo/button-with-icon.tsx create mode 100644 apps/v4/registry/bases/base/demo/calendar-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/calendar-hijri.tsx create mode 100644 apps/v4/registry/bases/base/demo/card-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/carousel-api.tsx create mode 100644 apps/v4/registry/bases/base/demo/carousel-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/carousel-orientation.tsx create mode 100644 apps/v4/registry/bases/base/demo/carousel-plugin.tsx create mode 100644 apps/v4/registry/bases/base/demo/carousel-size.tsx create mode 100644 apps/v4/registry/bases/base/demo/carousel-spacing.tsx create mode 100644 apps/v4/registry/bases/base/demo/chart-bar-demo-axis.tsx create mode 100644 apps/v4/registry/bases/base/demo/chart-bar-demo-grid.tsx create mode 100644 apps/v4/registry/bases/base/demo/chart-bar-demo-legend.tsx create mode 100644 apps/v4/registry/bases/base/demo/chart-bar-demo-tooltip.tsx create mode 100644 apps/v4/registry/bases/base/demo/chart-bar-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/checkbox-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/checkbox-disabled.tsx create mode 100644 apps/v4/registry/bases/base/demo/checkbox-with-text.tsx create mode 100644 apps/v4/registry/bases/base/demo/collapsible-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/combobox-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/combobox-dropdown-menu.tsx create mode 100644 apps/v4/registry/bases/base/demo/combobox-popover.tsx create mode 100644 apps/v4/registry/bases/base/demo/command-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/command-dialog.tsx create mode 100644 apps/v4/registry/bases/base/demo/context-menu-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/data-table-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/date-picker-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/date-picker-with-presets.tsx create mode 100644 apps/v4/registry/bases/base/demo/date-picker-with-range.tsx create mode 100644 apps/v4/registry/bases/base/demo/dialog-close-button.tsx create mode 100644 apps/v4/registry/bases/base/demo/dialog-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/drawer-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/drawer-dialog.tsx create mode 100644 apps/v4/registry/bases/base/demo/dropdown-menu-checkboxes.tsx create mode 100644 apps/v4/registry/bases/base/demo/dropdown-menu-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/dropdown-menu-dialog.tsx create mode 100644 apps/v4/registry/bases/base/demo/dropdown-menu-radio-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/empty-avatar-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/empty-avatar.tsx create mode 100644 apps/v4/registry/bases/base/demo/empty-background.tsx create mode 100644 apps/v4/registry/bases/base/demo/empty-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/empty-icon.tsx create mode 100644 apps/v4/registry/bases/base/demo/empty-input-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/empty-outline.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-checkbox.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-choice-card.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-fieldset.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-input.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-radio.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-responsive.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-select.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-slider.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-switch.tsx create mode 100644 apps/v4/registry/bases/base/demo/field-textarea.tsx create mode 100644 apps/v4/registry/bases/base/demo/hover-card-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-disabled.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-file.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-button-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-button.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-custom.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-dropdown.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-icon.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-label.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-spinner.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-text.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-textarea.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-group-tooltip.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-otp-controlled.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-otp-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-otp-pattern.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-otp-separator.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-with-button.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-with-label.tsx create mode 100644 apps/v4/registry/bases/base/demo/input-with-text.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-avatar.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-dropdown.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-header.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-icon.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-image.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-link.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-size.tsx create mode 100644 apps/v4/registry/bases/base/demo/item-variant.tsx create mode 100644 apps/v4/registry/bases/base/demo/kbd-button.tsx create mode 100644 apps/v4/registry/bases/base/demo/kbd-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/kbd-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/kbd-input-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/kbd-tooltip.tsx create mode 100644 apps/v4/registry/bases/base/demo/label-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/menubar-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/native-select-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/native-select-disabled.tsx create mode 100644 apps/v4/registry/bases/base/demo/native-select-groups.tsx create mode 100644 apps/v4/registry/bases/base/demo/native-select-invalid.tsx create mode 100644 apps/v4/registry/bases/base/demo/navigation-menu-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/pagination-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/popover-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/progress-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/resizable-demo-with-handle.tsx create mode 100644 apps/v4/registry/bases/base/demo/resizable-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/resizable-handle.tsx create mode 100644 apps/v4/registry/bases/base/demo/resizable-vertical.tsx create mode 100644 apps/v4/registry/bases/base/demo/scroll-area-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/scroll-area-horizontal-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/select-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/select-scrollable.tsx create mode 100644 apps/v4/registry/bases/base/demo/skeleton-card.tsx create mode 100644 apps/v4/registry/bases/base/demo/skeleton-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/slider-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/sonner-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/sonner-types.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-badge.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-basic.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-button.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-color.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-custom.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-empty.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-input-group.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-item.tsx create mode 100644 apps/v4/registry/bases/base/demo/spinner-size.tsx create mode 100644 apps/v4/registry/bases/base/demo/switch-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/table-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/tabs-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-disabled.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-group-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-group-disabled.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-group-lg.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-group-outline.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-group-single.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-group-sm.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-group-spacing.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-lg.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-outline.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-sm.tsx create mode 100644 apps/v4/registry/bases/base/demo/toggle-with-text.tsx create mode 100644 apps/v4/registry/bases/base/demo/tooltip-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-blockquote.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-demo.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-h1.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-h2.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-h3.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-h4.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-inline-code.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-large.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-lead.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-list.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-muted.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-p.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-small.tsx create mode 100644 apps/v4/registry/bases/base/demo/typography-table.tsx create mode 100644 apps/v4/registry/bases/radix/demo/alert-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/alert-destructive.tsx create mode 100644 apps/v4/registry/bases/radix/demo/alert-dialog-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/aspect-ratio-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/avatar-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/badge-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/badge-destructive.tsx create mode 100644 apps/v4/registry/bases/radix/demo/badge-outline.tsx create mode 100644 apps/v4/registry/bases/radix/demo/badge-secondary.tsx create mode 100644 apps/v4/registry/bases/radix/demo/breadcrumb-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/breadcrumb-dropdown.tsx create mode 100644 apps/v4/registry/bases/radix/demo/breadcrumb-ellipsis.tsx create mode 100644 apps/v4/registry/bases/radix/demo/breadcrumb-link.tsx create mode 100644 apps/v4/registry/bases/radix/demo/breadcrumb-responsive.tsx create mode 100644 apps/v4/registry/bases/radix/demo/breadcrumb-separator.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-as-child.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-default.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-destructive.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-ghost.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-dropdown.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-input-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-input.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-nested.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-orientation.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-popover.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-select.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-separator.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-size.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-group-split.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-icon.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-link.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-loading.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-outline.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-rounded.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-secondary.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-size.tsx create mode 100644 apps/v4/registry/bases/radix/demo/button-with-icon.tsx create mode 100644 apps/v4/registry/bases/radix/demo/calendar-demo.tsx rename apps/v4/registry/{radix-vega/ui/calendar.tsx => bases/radix/demo/calendar-hijri.tsx} (62%) create mode 100644 apps/v4/registry/bases/radix/demo/card-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/carousel-api.tsx create mode 100644 apps/v4/registry/bases/radix/demo/carousel-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/carousel-orientation.tsx create mode 100644 apps/v4/registry/bases/radix/demo/carousel-plugin.tsx create mode 100644 apps/v4/registry/bases/radix/demo/carousel-size.tsx create mode 100644 apps/v4/registry/bases/radix/demo/carousel-spacing.tsx create mode 100644 apps/v4/registry/bases/radix/demo/chart-bar-demo-axis.tsx create mode 100644 apps/v4/registry/bases/radix/demo/chart-bar-demo-grid.tsx create mode 100644 apps/v4/registry/bases/radix/demo/chart-bar-demo-legend.tsx create mode 100644 apps/v4/registry/bases/radix/demo/chart-bar-demo-tooltip.tsx create mode 100644 apps/v4/registry/bases/radix/demo/chart-bar-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/checkbox-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/checkbox-disabled.tsx create mode 100644 apps/v4/registry/bases/radix/demo/checkbox-with-text.tsx create mode 100644 apps/v4/registry/bases/radix/demo/collapsible-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/combobox-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/combobox-dropdown-menu.tsx create mode 100644 apps/v4/registry/bases/radix/demo/combobox-popover.tsx create mode 100644 apps/v4/registry/bases/radix/demo/command-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/command-dialog.tsx create mode 100644 apps/v4/registry/bases/radix/demo/context-menu-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/data-table-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/date-picker-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/date-picker-with-presets.tsx create mode 100644 apps/v4/registry/bases/radix/demo/date-picker-with-range.tsx create mode 100644 apps/v4/registry/bases/radix/demo/dialog-close-button.tsx create mode 100644 apps/v4/registry/bases/radix/demo/dialog-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/drawer-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/drawer-dialog.tsx create mode 100644 apps/v4/registry/bases/radix/demo/dropdown-menu-checkboxes.tsx create mode 100644 apps/v4/registry/bases/radix/demo/dropdown-menu-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/dropdown-menu-dialog.tsx create mode 100644 apps/v4/registry/bases/radix/demo/dropdown-menu-radio-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/empty-avatar-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/empty-avatar.tsx create mode 100644 apps/v4/registry/bases/radix/demo/empty-background.tsx create mode 100644 apps/v4/registry/bases/radix/demo/empty-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/empty-icon.tsx create mode 100644 apps/v4/registry/bases/radix/demo/empty-input-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/empty-outline.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-checkbox.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-choice-card.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-fieldset.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-input.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-radio.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-responsive.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-select.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-slider.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-switch.tsx create mode 100644 apps/v4/registry/bases/radix/demo/field-textarea.tsx create mode 100644 apps/v4/registry/bases/radix/demo/hover-card-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-disabled.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-file.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-button-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-button.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-custom.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-dropdown.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-icon.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-label.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-spinner.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-text.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-textarea.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-group-tooltip.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-otp-controlled.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-otp-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-otp-pattern.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-otp-separator.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-with-button.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-with-label.tsx create mode 100644 apps/v4/registry/bases/radix/demo/input-with-text.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-avatar.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-dropdown.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-header.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-icon.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-image.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-link.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-size.tsx create mode 100644 apps/v4/registry/bases/radix/demo/item-variant.tsx create mode 100644 apps/v4/registry/bases/radix/demo/kbd-button.tsx create mode 100644 apps/v4/registry/bases/radix/demo/kbd-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/kbd-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/kbd-input-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/kbd-tooltip.tsx create mode 100644 apps/v4/registry/bases/radix/demo/label-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/menubar-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/native-select-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/native-select-disabled.tsx create mode 100644 apps/v4/registry/bases/radix/demo/native-select-groups.tsx create mode 100644 apps/v4/registry/bases/radix/demo/native-select-invalid.tsx create mode 100644 apps/v4/registry/bases/radix/demo/navigation-menu-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/pagination-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/popover-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/progress-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/resizable-demo-with-handle.tsx create mode 100644 apps/v4/registry/bases/radix/demo/resizable-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/resizable-handle.tsx create mode 100644 apps/v4/registry/bases/radix/demo/resizable-vertical.tsx create mode 100644 apps/v4/registry/bases/radix/demo/scroll-area-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/scroll-area-horizontal-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/select-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/select-scrollable.tsx create mode 100644 apps/v4/registry/bases/radix/demo/skeleton-card.tsx create mode 100644 apps/v4/registry/bases/radix/demo/skeleton-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/slider-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/sonner-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/sonner-types.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-badge.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-basic.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-button.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-color.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-custom.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-empty.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-input-group.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-item.tsx create mode 100644 apps/v4/registry/bases/radix/demo/spinner-size.tsx create mode 100644 apps/v4/registry/bases/radix/demo/switch-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/table-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/tabs-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-disabled.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-group-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-group-disabled.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-group-lg.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-group-outline.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-group-single.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-group-sm.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-group-spacing.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-lg.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-outline.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-sm.tsx create mode 100644 apps/v4/registry/bases/radix/demo/toggle-with-text.tsx create mode 100644 apps/v4/registry/bases/radix/demo/tooltip-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-blockquote.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-demo.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-h1.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-h2.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-h3.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-h4.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-inline-code.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-large.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-lead.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-list.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-muted.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-p.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-small.tsx create mode 100644 apps/v4/registry/bases/radix/demo/typography-table.tsx delete mode 100644 apps/v4/registry/radix-nova/demo/_registry.ts delete mode 100644 apps/v4/registry/radix-vega/demo/accordion-demo.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/accordion-disabled.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/accordion-multiple.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/chart-tooltip-demo.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/combobox-responsive.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/radio-group-demo.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/separator-demo.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/sheet-demo.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/sheet-side.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/textarea-demo.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/textarea-disabled.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/textarea-with-button.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/textarea-with-label.tsx delete mode 100644 apps/v4/registry/radix-vega/demo/textarea-with-text.tsx delete mode 100644 apps/v4/registry/radix-vega/registry.ts delete mode 100644 apps/v4/registry/radix-vega/ui/accordion.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/alert-dialog.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/alert.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/aspect-ratio.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/avatar.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/badge.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/breadcrumb.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/button-group.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/button.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/card.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/carousel.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/chart.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/checkbox.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/collapsible.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/combobox.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/command.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/context-menu.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/dialog.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/drawer.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/dropdown-menu.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/empty.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/field.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/hover-card.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/input-group.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/input-otp.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/input.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/item.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/kbd.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/label.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/menubar.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/native-select.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/navigation-menu.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/pagination.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/popover.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/progress.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/radio-group.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/resizable.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/scroll-area.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/select.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/separator.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/sheet.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/sidebar.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/skeleton.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/slider.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/sonner.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/spinner.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/switch.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/table.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/tabs.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/textarea.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/toggle-group.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/toggle.tsx delete mode 100644 apps/v4/registry/radix-vega/ui/tooltip.tsx diff --git a/apps/v4/lib/registry.ts b/apps/v4/lib/registry.ts index 6c4d1b67b8..ec78b2e500 100644 --- a/apps/v4/lib/registry.ts +++ b/apps/v4/lib/registry.ts @@ -8,8 +8,16 @@ import { type z } from "zod" import { Index as StylesIndex } from "@/registry/__index__" import { Index as BasesIndex } from "@/registry/bases/__index__" +// Styles that have their own index in StylesIndex (built with style transforms). +const INDEXED_STYLES = ["new-york-v4", "radix-nova", "base-nova"] + // Map style names to their corresponding index and key. function getIndexForStyle(styleName: string) { + // Use StylesIndex for styles that are built with transforms. + if (INDEXED_STYLES.includes(styleName)) { + return { index: StylesIndex, key: styleName } + } + // Fall back to BasesIndex for other base-style combinations. if (styleName.startsWith("radix-")) { return { index: BasesIndex, key: "radix" } } diff --git a/apps/v4/public/r/styles/base-lyra/Elevenlabs.json b/apps/v4/public/r/styles/base-lyra/Elevenlabs.json index 590e85d42a..8f3dc53572 100644 --- a/apps/v4/public/r/styles/base-lyra/Elevenlabs.json +++ b/apps/v4/public/r/styles/base-lyra/Elevenlabs.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/blocks/elevenlabs.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/registry/bases/base/ui/card\"\n\nexport default function ElevenlabsBlocks() {\n return (\n \n \n \n \n )\n}\n\nfunction BarVisualizerDemo() {\n const [state, setState] = useState(\"speaking\")\n\n return (\n \n \n \n Audio Frequency Visualizer\n \n Real-time frequency band visualization with animated state\n transitions\n \n \n \n \n \n \n setState(\"connecting\")}\n >\n Connecting\n \n setState(\"listening\")}\n >\n Listening\n \n setState(\"speaking\")}\n >\n Speaking\n \n \n \n \n )\n}\n\nfunction WaveformDemo() {\n const [active, setActive] = useState(false)\n const [processing, setProcessing] = useState(true)\n const [mode, setMode] = useState<\"static\" | \"scrolling\">(\"static\")\n const handleToggleActive = () => {\n setActive(!active)\n if (!active) {\n setProcessing(false)\n }\n }\n const handleToggleProcessing = () => {\n setProcessing(!processing)\n if (!processing) {\n setActive(false)\n }\n }\n return (\n \n \n \n Live Audio Waveform\n \n Real-time microphone input visualization with audio reactivity\n \n \n \n \n \n \n \n {active ? \"Stop\" : \"Start\"} Listening\n \n \n {processing ? \"Stop\" : \"Start\"} Processing\n \n setMode(mode === \"static\" ? \"scrolling\" : \"static\")}\n >\n {mode === \"static\" ? \"Static\" : \"Scrolling\"}\n \n \n \n \n )\n}\n\nexport interface AudioAnalyserOptions {\n fftSize?: number\n smoothingTimeConstant?: number\n minDecibels?: number\n maxDecibels?: number\n}\n\nfunction createAudioAnalyser(\n mediaStream: MediaStream,\n options: AudioAnalyserOptions = {}\n) {\n const audioContext = new (window.AudioContext ||\n (window as unknown as { webkitAudioContext: typeof AudioContext })\n .webkitAudioContext)()\n const source = audioContext.createMediaStreamSource(mediaStream)\n const analyser = audioContext.createAnalyser()\n\n if (options.fftSize) analyser.fftSize = options.fftSize\n if (options.smoothingTimeConstant !== undefined) {\n analyser.smoothingTimeConstant = options.smoothingTimeConstant\n }\n if (options.minDecibels !== undefined)\n analyser.minDecibels = options.minDecibels\n if (options.maxDecibels !== undefined)\n analyser.maxDecibels = options.maxDecibels\n\n source.connect(analyser)\n\n const cleanup = () => {\n source.disconnect()\n audioContext.close()\n }\n\n return { analyser, audioContext, cleanup }\n}\n\n/**\n * Hook for tracking the volume of an audio stream using the Web Audio API.\n * @param mediaStream - The MediaStream to analyze\n * @param options - Audio analyser options\n * @returns The current volume level (0-1)\n */\nexport function useAudioVolume(\n mediaStream?: MediaStream | null,\n options: AudioAnalyserOptions = { fftSize: 32, smoothingTimeConstant: 0 }\n) {\n const [volume, setVolume] = useState(0)\n const volumeRef = useRef(0)\n const frameId = useRef(undefined)\n\n // Memoize options to prevent unnecessary re-renders\n const memoizedOptions = useMemo(() => options, [options])\n\n useEffect(() => {\n if (!mediaStream) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setVolume(0)\n volumeRef.current = 0\n return\n }\n\n const { analyser, cleanup } = createAudioAnalyser(\n mediaStream,\n memoizedOptions\n )\n\n const bufferLength = analyser.frequencyBinCount\n const dataArray = new Uint8Array(bufferLength)\n let lastUpdate = 0\n const updateInterval = 1000 / 30 // 30 FPS\n\n const updateVolume = (timestamp: number) => {\n if (timestamp - lastUpdate >= updateInterval) {\n analyser.getByteFrequencyData(dataArray)\n let sum = 0\n for (let i = 0; i < dataArray.length; i++) {\n const a = dataArray[i]\n sum += a * a\n }\n const newVolume = Math.sqrt(sum / dataArray.length) / 255\n\n // Only update state if volume changed significantly\n if (Math.abs(newVolume - volumeRef.current) > 0.01) {\n volumeRef.current = newVolume\n setVolume(newVolume)\n }\n lastUpdate = timestamp\n }\n frameId.current = requestAnimationFrame(updateVolume)\n }\n\n frameId.current = requestAnimationFrame(updateVolume)\n\n return () => {\n cleanup()\n if (frameId.current) {\n cancelAnimationFrame(frameId.current)\n }\n }\n }, [mediaStream, memoizedOptions])\n\n return volume\n}\n\nexport interface MultiBandVolumeOptions {\n bands?: number\n loPass?: number // Low frequency cutoff\n hiPass?: number // High frequency cutoff\n updateInterval?: number // Update interval in ms\n analyserOptions?: AudioAnalyserOptions\n}\n\nconst multibandDefaults: MultiBandVolumeOptions = {\n bands: 5,\n loPass: 100,\n hiPass: 600,\n updateInterval: 32,\n analyserOptions: { fftSize: 2048 },\n}\n\n// Memoized normalization function to avoid recreating on each render\nconst normalizeDb = (value: number) => {\n if (value === -Infinity) return 0\n const minDb = -100\n const maxDb = -10\n const db = 1 - (Math.max(minDb, Math.min(maxDb, value)) * -1) / 100\n return Math.sqrt(db)\n}\n\n/**\n * Hook for tracking volume across multiple frequency bands\n * @param mediaStream - The MediaStream to analyze\n * @param options - Multiband options\n * @returns Array of volume levels for each frequency band\n */\nexport function useMultibandVolume(\n mediaStream?: MediaStream | null,\n options: MultiBandVolumeOptions = {}\n) {\n const opts = useMemo(() => ({ ...multibandDefaults, ...options }), [options])\n\n const [frequencyBands, setFrequencyBands] = useState(() =>\n new Array(opts.bands).fill(0)\n )\n const bandsRef = useRef(new Array(opts.bands).fill(0))\n const frameId = useRef(undefined)\n\n useEffect(() => {\n if (!mediaStream) {\n const emptyBands = new Array(opts.bands).fill(0)\n setTimeout(() => {\n setFrequencyBands(emptyBands)\n }, 0)\n bandsRef.current = emptyBands\n return\n }\n\n const { analyser, cleanup } = createAudioAnalyser(\n mediaStream,\n opts.analyserOptions\n )\n\n const bufferLength = analyser.frequencyBinCount\n const dataArray = new Float32Array(bufferLength)\n const sliceStart = opts.loPass!\n const sliceEnd = opts.hiPass!\n const sliceLength = sliceEnd - sliceStart\n const chunkSize = Math.ceil(sliceLength / opts.bands!)\n\n let lastUpdate = 0\n const updateInterval = opts.updateInterval!\n\n const updateVolume = (timestamp: number) => {\n if (timestamp - lastUpdate >= updateInterval) {\n analyser.getFloatFrequencyData(dataArray)\n\n // Process directly without creating intermediate arrays\n const chunks = new Array(opts.bands!)\n\n for (let i = 0; i < opts.bands!; i++) {\n let sum = 0\n let count = 0\n const startIdx = sliceStart + i * chunkSize\n const endIdx = Math.min(sliceStart + (i + 1) * chunkSize, sliceEnd)\n\n for (let j = startIdx; j < endIdx; j++) {\n sum += normalizeDb(dataArray[j])\n count++\n }\n\n chunks[i] = count > 0 ? sum / count : 0\n }\n\n // Only update state if bands changed significantly\n let hasChanged = false\n for (let i = 0; i < chunks.length; i++) {\n if (Math.abs(chunks[i] - bandsRef.current[i]) > 0.01) {\n hasChanged = true\n break\n }\n }\n\n if (hasChanged) {\n bandsRef.current = chunks\n setFrequencyBands(chunks)\n }\n\n lastUpdate = timestamp\n }\n\n frameId.current = requestAnimationFrame(updateVolume)\n }\n\n frameId.current = requestAnimationFrame(updateVolume)\n\n return () => {\n cleanup()\n if (frameId.current) {\n cancelAnimationFrame(frameId.current)\n }\n }\n }, [mediaStream, opts])\n\n return frequencyBands\n}\n\ntype AnimationState =\n | \"connecting\"\n | \"initializing\"\n | \"listening\"\n | \"speaking\"\n | \"thinking\"\n | undefined\n\nexport const useBarAnimator = (\n state: AnimationState,\n columns: number,\n interval: number\n): number[] => {\n const indexRef = useRef(0)\n const [currentFrame, setCurrentFrame] = useState([])\n const animationFrameId = useRef(null)\n\n // Memoize sequence generation\n const sequence = useMemo(() => {\n if (state === \"thinking\" || state === \"listening\") {\n return generateListeningSequenceBar(columns)\n } else if (state === \"connecting\" || state === \"initializing\") {\n return generateConnectingSequenceBar(columns)\n } else if (state === undefined || state === \"speaking\") {\n return [new Array(columns).fill(0).map((_, idx) => idx)]\n } else {\n return [[]]\n }\n }, [state, columns])\n\n useEffect(() => {\n indexRef.current = 0\n setTimeout(() => {\n setCurrentFrame(sequence[0] || [])\n }, 0)\n }, [sequence])\n\n useEffect(() => {\n let startTime = performance.now()\n\n const animate = (time: DOMHighResTimeStamp) => {\n const timeElapsed = time - startTime\n\n if (timeElapsed >= interval) {\n indexRef.current = (indexRef.current + 1) % sequence.length\n setCurrentFrame(sequence[indexRef.current] || [])\n startTime = time\n }\n\n animationFrameId.current = requestAnimationFrame(animate)\n }\n\n animationFrameId.current = requestAnimationFrame(animate)\n\n return () => {\n if (animationFrameId.current !== null) {\n cancelAnimationFrame(animationFrameId.current)\n }\n }\n }, [interval, sequence])\n\n return currentFrame\n}\n\n// Memoize sequence generators\nconst generateConnectingSequenceBar = (columns: number): number[][] => {\n const seq = []\n for (let x = 0; x < columns; x++) {\n seq.push([x, columns - 1 - x])\n }\n return seq\n}\n\nconst generateListeningSequenceBar = (columns: number): number[][] => {\n const center = Math.floor(columns / 2)\n const noIndex = -1\n return [[center], [noIndex]]\n}\n\nexport type AgentState =\n | \"connecting\"\n | \"initializing\"\n | \"listening\"\n | \"speaking\"\n | \"thinking\"\n\nexport interface BarVisualizerProps\n extends React.HTMLAttributes {\n /** Voice assistant state */\n state?: AgentState\n /** Number of bars to display */\n barCount?: number\n /** Audio source */\n mediaStream?: MediaStream | null\n /** Min/max height as percentage */\n minHeight?: number\n maxHeight?: number\n /** Enable demo mode with fake audio data */\n demo?: boolean\n /** Align bars from center instead of bottom */\n centerAlign?: boolean\n}\n\nconst BarVisualizerComponent = React.forwardRef<\n HTMLDivElement,\n BarVisualizerProps\n>(\n (\n {\n state,\n barCount = 15,\n mediaStream,\n minHeight = 20,\n maxHeight = 100,\n demo = false,\n centerAlign = false,\n className,\n style,\n ...props\n },\n ref\n ) => {\n // Audio processing\n const realVolumeBands = useMultibandVolume(mediaStream, {\n bands: barCount,\n loPass: 100,\n hiPass: 200,\n })\n\n // Generate fake volume data for demo mode using refs to avoid state updates\n const fakeVolumeBandsRef = useRef(new Array(barCount).fill(0.2))\n const [fakeVolumeBands, setFakeVolumeBands] = useState(() =>\n new Array(barCount).fill(0.2)\n )\n const fakeAnimationRef = useRef(undefined)\n\n // Animate fake volume bands for speaking and listening states\n useEffect(() => {\n if (!demo) return\n\n if (state !== \"speaking\" && state !== \"listening\") {\n const bands = new Array(barCount).fill(0.2)\n fakeVolumeBandsRef.current = bands\n setTimeout(() => {\n setFakeVolumeBands(bands)\n }, 0)\n return\n }\n\n let lastUpdate = 0\n const updateInterval = 50\n const startTime = Date.now() / 1000\n\n const updateFakeVolume = (timestamp: number) => {\n if (timestamp - lastUpdate >= updateInterval) {\n const time = Date.now() / 1000 - startTime\n const newBands = new Array(barCount)\n\n for (let i = 0; i < barCount; i++) {\n const waveOffset = i * 0.5\n const baseVolume = Math.sin(time * 2 + waveOffset) * 0.3 + 0.5\n const randomNoise = Math.random() * 0.2\n newBands[i] = Math.max(0.1, Math.min(1, baseVolume + randomNoise))\n }\n\n // Only update if values changed significantly\n let hasChanged = false\n for (let i = 0; i < barCount; i++) {\n if (Math.abs(newBands[i] - fakeVolumeBandsRef.current[i]) > 0.05) {\n hasChanged = true\n break\n }\n }\n\n if (hasChanged) {\n fakeVolumeBandsRef.current = newBands\n setFakeVolumeBands(newBands)\n }\n\n lastUpdate = timestamp\n }\n\n fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)\n }\n\n fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)\n\n return () => {\n if (fakeAnimationRef.current) {\n cancelAnimationFrame(fakeAnimationRef.current)\n }\n }\n }, [demo, state, barCount])\n\n // Use fake or real volume data based on demo mode\n const volumeBands = useMemo(\n () => (demo ? fakeVolumeBands : realVolumeBands),\n [demo, fakeVolumeBands, realVolumeBands]\n )\n\n // Animation sequencing\n const highlightedIndices = useBarAnimator(\n state,\n barCount,\n state === \"connecting\"\n ? 2000 / barCount\n : state === \"thinking\"\n ? 150\n : state === \"listening\"\n ? 500\n : 1000\n )\n\n return (\n \n {volumeBands.map((volume, index) => {\n const heightPct = Math.min(\n maxHeight,\n Math.max(minHeight, volume * 100 + 5)\n )\n const isHighlighted = highlightedIndices?.includes(index) ?? false\n\n return (\n \n )\n })}\n \n )\n }\n)\n\n// Memoized Bar component to prevent unnecessary re-renders\nconst Bar = React.memo<{\n heightPct: number\n isHighlighted: boolean\n state?: AgentState\n}>(({ heightPct, isHighlighted, state }) => (\n \n))\n\nBar.displayName = \"Bar\"\n\n// Wrap the main component with React.memo for prop comparison optimization\nconst BarVisualizer = React.memo(\n BarVisualizerComponent,\n (prevProps, nextProps) => {\n return (\n prevProps.state === nextProps.state &&\n prevProps.barCount === nextProps.barCount &&\n prevProps.mediaStream === nextProps.mediaStream &&\n prevProps.minHeight === nextProps.minHeight &&\n prevProps.maxHeight === nextProps.maxHeight &&\n prevProps.demo === nextProps.demo &&\n prevProps.centerAlign === nextProps.centerAlign &&\n prevProps.className === nextProps.className &&\n JSON.stringify(prevProps.style) === JSON.stringify(nextProps.style)\n )\n }\n)\n\nBarVisualizerComponent.displayName = \"BarVisualizerComponent\"\nBarVisualizer.displayName = \"BarVisualizer\"\n\nexport type LiveWaveformProps = React.HTMLAttributes & {\n active?: boolean\n processing?: boolean\n deviceId?: string\n barWidth?: number\n barHeight?: number\n barGap?: number\n barRadius?: number\n barColor?: string\n fadeEdges?: boolean\n fadeWidth?: number\n height?: string | number\n sensitivity?: number\n smoothingTimeConstant?: number\n fftSize?: number\n historySize?: number\n updateRate?: number\n mode?: \"scrolling\" | \"static\"\n onError?: (error: Error) => void\n onStreamReady?: (stream: MediaStream) => void\n onStreamEnd?: () => void\n}\nexport const LiveWaveform = ({\n active = false,\n processing = false,\n deviceId,\n barWidth = 3,\n barGap = 1,\n barRadius = 1.5,\n barColor,\n fadeEdges = true,\n fadeWidth = 24,\n barHeight: baseBarHeight = 4,\n height = 64,\n sensitivity = 1,\n smoothingTimeConstant = 0.8,\n fftSize = 256,\n historySize = 60,\n updateRate = 30,\n mode = \"static\",\n onError,\n onStreamReady,\n onStreamEnd,\n className,\n ...props\n}: LiveWaveformProps) => {\n const canvasRef = useRef(null)\n const containerRef = useRef(null)\n const historyRef = useRef([])\n const analyserRef = useRef(null)\n const audioContextRef = useRef(null)\n const streamRef = useRef(null)\n const animationRef = useRef(0)\n const lastUpdateRef = useRef(0)\n const processingAnimationRef = useRef(null)\n const lastActiveDataRef = useRef([])\n const transitionProgressRef = useRef(0)\n const staticBarsRef = useRef([])\n const needsRedrawRef = useRef(true)\n const gradientCacheRef = useRef(null)\n const lastWidthRef = useRef(0)\n const heightStyle = typeof height === \"number\" ? `${height}px` : height\n // Handle canvas resizing\n useEffect(() => {\n const canvas = canvasRef.current\n const container = containerRef.current\n if (!canvas || !container) return\n const resizeObserver = new ResizeObserver(() => {\n const rect = container.getBoundingClientRect()\n const dpr = window.devicePixelRatio || 1\n canvas.width = rect.width * dpr\n canvas.height = rect.height * dpr\n canvas.style.width = `${rect.width}px`\n canvas.style.height = `${rect.height}px`\n const ctx = canvas.getContext(\"2d\")\n if (ctx) {\n ctx.scale(dpr, dpr)\n }\n gradientCacheRef.current = null\n lastWidthRef.current = rect.width\n needsRedrawRef.current = true\n })\n resizeObserver.observe(container)\n return () => resizeObserver.disconnect()\n }, [])\n useEffect(() => {\n if (processing && !active) {\n let time = 0\n transitionProgressRef.current = 0\n const animateProcessing = () => {\n time += 0.03\n transitionProgressRef.current = Math.min(\n 1,\n transitionProgressRef.current + 0.02\n )\n const processingData = []\n const barCount = Math.floor(\n (containerRef.current?.getBoundingClientRect().width || 200) /\n (barWidth + barGap)\n )\n if (mode === \"static\") {\n const halfCount = Math.floor(barCount / 2)\n for (let i = 0; i < barCount; i++) {\n const normalizedPosition = (i - halfCount) / halfCount\n const centerWeight = 1 - Math.abs(normalizedPosition) * 0.4\n const wave1 = Math.sin(time * 1.5 + normalizedPosition * 3) * 0.25\n const wave2 = Math.sin(time * 0.8 - normalizedPosition * 2) * 0.2\n const wave3 = Math.cos(time * 2 + normalizedPosition) * 0.15\n const combinedWave = wave1 + wave2 + wave3\n const processingValue = (0.2 + combinedWave) * centerWeight\n let finalValue = processingValue\n if (\n lastActiveDataRef.current.length > 0 &&\n transitionProgressRef.current < 1\n ) {\n const lastDataIndex = Math.min(\n i,\n lastActiveDataRef.current.length - 1\n )\n const lastValue = lastActiveDataRef.current[lastDataIndex] || 0\n finalValue =\n lastValue * (1 - transitionProgressRef.current) +\n processingValue * transitionProgressRef.current\n }\n processingData.push(Math.max(0.05, Math.min(1, finalValue)))\n }\n } else {\n for (let i = 0; i < barCount; i++) {\n const normalizedPosition = (i - barCount / 2) / (barCount / 2)\n const centerWeight = 1 - Math.abs(normalizedPosition) * 0.4\n const wave1 = Math.sin(time * 1.5 + i * 0.15) * 0.25\n const wave2 = Math.sin(time * 0.8 - i * 0.1) * 0.2\n const wave3 = Math.cos(time * 2 + i * 0.05) * 0.15\n const combinedWave = wave1 + wave2 + wave3\n const processingValue = (0.2 + combinedWave) * centerWeight\n let finalValue = processingValue\n if (\n lastActiveDataRef.current.length > 0 &&\n transitionProgressRef.current < 1\n ) {\n const lastDataIndex = Math.floor(\n (i / barCount) * lastActiveDataRef.current.length\n )\n const lastValue = lastActiveDataRef.current[lastDataIndex] || 0\n finalValue =\n lastValue * (1 - transitionProgressRef.current) +\n processingValue * transitionProgressRef.current\n }\n processingData.push(Math.max(0.05, Math.min(1, finalValue)))\n }\n }\n if (mode === \"static\") {\n staticBarsRef.current = processingData\n } else {\n historyRef.current = processingData\n }\n needsRedrawRef.current = true\n processingAnimationRef.current =\n requestAnimationFrame(animateProcessing)\n }\n animateProcessing()\n return () => {\n if (processingAnimationRef.current) {\n cancelAnimationFrame(processingAnimationRef.current)\n }\n }\n } else if (!active && !processing) {\n const hasData =\n mode === \"static\"\n ? staticBarsRef.current.length > 0\n : historyRef.current.length > 0\n if (hasData) {\n let fadeProgress = 0\n const fadeToIdle = () => {\n fadeProgress += 0.03\n if (fadeProgress < 1) {\n if (mode === \"static\") {\n staticBarsRef.current = staticBarsRef.current.map(\n (value) => value * (1 - fadeProgress)\n )\n } else {\n historyRef.current = historyRef.current.map(\n (value) => value * (1 - fadeProgress)\n )\n }\n needsRedrawRef.current = true\n requestAnimationFrame(fadeToIdle)\n } else {\n if (mode === \"static\") {\n staticBarsRef.current = []\n } else {\n historyRef.current = []\n }\n }\n }\n fadeToIdle()\n }\n }\n }, [processing, active, barWidth, barGap, mode])\n // Handle microphone setup and teardown\n useEffect(() => {\n if (!active) {\n if (streamRef.current) {\n streamRef.current.getTracks().forEach((track) => track.stop())\n streamRef.current = null\n onStreamEnd?.()\n }\n if (\n audioContextRef.current &&\n audioContextRef.current.state !== \"closed\"\n ) {\n audioContextRef.current.close()\n audioContextRef.current = null\n }\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = 0\n }\n return\n }\n const setupMicrophone = async () => {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: deviceId\n ? {\n deviceId: { exact: deviceId },\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n }\n : {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n },\n })\n streamRef.current = stream\n onStreamReady?.(stream)\n const AudioContextConstructor =\n window.AudioContext ||\n (window as unknown as { webkitAudioContext: typeof AudioContext })\n .webkitAudioContext\n const audioContext = new AudioContextConstructor()\n const analyser = audioContext.createAnalyser()\n analyser.fftSize = fftSize\n analyser.smoothingTimeConstant = smoothingTimeConstant\n const source = audioContext.createMediaStreamSource(stream)\n source.connect(analyser)\n audioContextRef.current = audioContext\n analyserRef.current = analyser\n // Clear history when starting\n historyRef.current = []\n } catch (error) {\n onError?.(error as Error)\n }\n }\n setupMicrophone()\n return () => {\n if (streamRef.current) {\n streamRef.current.getTracks().forEach((track) => track.stop())\n streamRef.current = null\n onStreamEnd?.()\n }\n if (\n audioContextRef.current &&\n audioContextRef.current.state !== \"closed\"\n ) {\n audioContextRef.current.close()\n audioContextRef.current = null\n }\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = 0\n }\n }\n }, [\n active,\n deviceId,\n fftSize,\n smoothingTimeConstant,\n onError,\n onStreamReady,\n onStreamEnd,\n ])\n // Animation loop\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n let rafId: number\n const animate = (currentTime: number) => {\n // Render waveform\n const rect = canvas.getBoundingClientRect()\n // Update audio data if active\n if (active && currentTime - lastUpdateRef.current > updateRate) {\n lastUpdateRef.current = currentTime\n if (analyserRef.current) {\n const dataArray = new Uint8Array(\n analyserRef.current.frequencyBinCount\n )\n analyserRef.current.getByteFrequencyData(dataArray)\n if (mode === \"static\") {\n // For static mode, update bars in place\n const startFreq = Math.floor(dataArray.length * 0.05)\n const endFreq = Math.floor(dataArray.length * 0.4)\n const relevantData = dataArray.slice(startFreq, endFreq)\n const barCount = Math.floor(rect.width / (barWidth + barGap))\n const halfCount = Math.floor(barCount / 2)\n const newBars: number[] = []\n // Mirror the data for symmetric display\n for (let i = halfCount - 1; i >= 0; i--) {\n const dataIndex = Math.floor(\n (i / halfCount) * relevantData.length\n )\n const value = Math.min(\n 1,\n (relevantData[dataIndex] / 255) * sensitivity\n )\n newBars.push(Math.max(0.05, value))\n }\n for (let i = 0; i < halfCount; i++) {\n const dataIndex = Math.floor(\n (i / halfCount) * relevantData.length\n )\n const value = Math.min(\n 1,\n (relevantData[dataIndex] / 255) * sensitivity\n )\n newBars.push(Math.max(0.05, value))\n }\n staticBarsRef.current = newBars\n lastActiveDataRef.current = newBars\n } else {\n // Scrolling mode - original behavior\n let sum = 0\n const startFreq = Math.floor(dataArray.length * 0.05)\n const endFreq = Math.floor(dataArray.length * 0.4)\n const relevantData = dataArray.slice(startFreq, endFreq)\n for (let i = 0; i < relevantData.length; i++) {\n sum += relevantData[i]\n }\n const average = (sum / relevantData.length / 255) * sensitivity\n // Add to history\n historyRef.current.push(Math.min(1, Math.max(0.05, average)))\n lastActiveDataRef.current = [...historyRef.current]\n // Maintain history size\n if (historyRef.current.length > historySize) {\n historyRef.current.shift()\n }\n }\n needsRedrawRef.current = true\n }\n }\n // Only redraw if needed\n if (!needsRedrawRef.current && !active) {\n rafId = requestAnimationFrame(animate)\n return\n }\n needsRedrawRef.current = active\n ctx.clearRect(0, 0, rect.width, rect.height)\n const computedBarColor =\n barColor ||\n (() => {\n const style = getComputedStyle(canvas)\n // Try to get the computed color value directly\n const color = style.color\n return color || \"#000\"\n })()\n const step = barWidth + barGap\n const barCount = Math.floor(rect.width / step)\n const centerY = rect.height / 2\n // Draw bars based on mode\n if (mode === \"static\") {\n // Static mode - bars in fixed positions\n const dataToRender = processing\n ? staticBarsRef.current\n : active\n ? staticBarsRef.current\n : staticBarsRef.current.length > 0\n ? staticBarsRef.current\n : []\n for (let i = 0; i < barCount && i < dataToRender.length; i++) {\n const value = dataToRender[i] || 0.1\n const x = i * step\n const barHeight = Math.max(baseBarHeight, value * rect.height * 0.8)\n const y = centerY - barHeight / 2\n ctx.fillStyle = computedBarColor\n ctx.globalAlpha = 0.4 + value * 0.6\n if (barRadius > 0) {\n ctx.beginPath()\n ctx.roundRect(x, y, barWidth, barHeight, barRadius)\n ctx.fill()\n } else {\n ctx.fillRect(x, y, barWidth, barHeight)\n }\n }\n } else {\n // Scrolling mode - original behavior\n for (let i = 0; i < barCount && i < historyRef.current.length; i++) {\n const dataIndex = historyRef.current.length - 1 - i\n const value = historyRef.current[dataIndex] || 0.1\n const x = rect.width - (i + 1) * step\n const barHeight = Math.max(baseBarHeight, value * rect.height * 0.8)\n const y = centerY - barHeight / 2\n ctx.fillStyle = computedBarColor\n ctx.globalAlpha = 0.4 + value * 0.6\n if (barRadius > 0) {\n ctx.beginPath()\n ctx.roundRect(x, y, barWidth, barHeight, barRadius)\n ctx.fill()\n } else {\n ctx.fillRect(x, y, barWidth, barHeight)\n }\n }\n }\n // Apply edge fading\n if (fadeEdges && fadeWidth > 0 && rect.width > 0) {\n // Cache gradient if width hasn't changed\n if (!gradientCacheRef.current || lastWidthRef.current !== rect.width) {\n const gradient = ctx.createLinearGradient(0, 0, rect.width, 0)\n const fadePercent = Math.min(0.3, fadeWidth / rect.width)\n // destination-out: removes destination where source alpha is high\n // We want: fade edges out, keep center solid\n // Left edge: start opaque (1) = remove, fade to transparent (0) = keep\n gradient.addColorStop(0, \"rgba(255,255,255,1)\")\n gradient.addColorStop(fadePercent, \"rgba(255,255,255,0)\")\n // Center stays transparent = keep everything\n gradient.addColorStop(1 - fadePercent, \"rgba(255,255,255,0)\")\n // Right edge: fade from transparent (0) = keep to opaque (1) = remove\n gradient.addColorStop(1, \"rgba(255,255,255,1)\")\n gradientCacheRef.current = gradient\n lastWidthRef.current = rect.width\n }\n ctx.globalCompositeOperation = \"destination-out\"\n ctx.fillStyle = gradientCacheRef.current\n ctx.fillRect(0, 0, rect.width, rect.height)\n ctx.globalCompositeOperation = \"source-over\"\n }\n ctx.globalAlpha = 1\n rafId = requestAnimationFrame(animate)\n }\n rafId = requestAnimationFrame(animate)\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId)\n }\n }\n }, [\n active,\n processing,\n sensitivity,\n updateRate,\n historySize,\n barWidth,\n baseBarHeight,\n barGap,\n barRadius,\n barColor,\n fadeEdges,\n fadeWidth,\n mode,\n ])\n return (\n \n {!active && !processing && (\n
\n )}\n \n
\n )\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-lyra/ui/card\"\n\nexport default function ElevenlabsBlocks() {\n return (\n \n \n \n \n )\n}\n\nfunction BarVisualizerDemo() {\n const [state, setState] = useState(\"speaking\")\n\n return (\n \n \n \n Audio Frequency Visualizer\n \n Real-time frequency band visualization with animated state\n transitions\n \n \n \n \n \n \n setState(\"connecting\")}\n >\n Connecting\n \n setState(\"listening\")}\n >\n Listening\n \n setState(\"speaking\")}\n >\n Speaking\n \n \n \n \n )\n}\n\nfunction WaveformDemo() {\n const [active, setActive] = useState(false)\n const [processing, setProcessing] = useState(true)\n const [mode, setMode] = useState<\"static\" | \"scrolling\">(\"static\")\n const handleToggleActive = () => {\n setActive(!active)\n if (!active) {\n setProcessing(false)\n }\n }\n const handleToggleProcessing = () => {\n setProcessing(!processing)\n if (!processing) {\n setActive(false)\n }\n }\n return (\n \n \n \n Live Audio Waveform\n \n Real-time microphone input visualization with audio reactivity\n \n \n \n \n \n \n \n {active ? \"Stop\" : \"Start\"} Listening\n \n \n {processing ? \"Stop\" : \"Start\"} Processing\n \n setMode(mode === \"static\" ? \"scrolling\" : \"static\")}\n >\n {mode === \"static\" ? \"Static\" : \"Scrolling\"}\n \n \n \n \n )\n}\n\nexport interface AudioAnalyserOptions {\n fftSize?: number\n smoothingTimeConstant?: number\n minDecibels?: number\n maxDecibels?: number\n}\n\nfunction createAudioAnalyser(\n mediaStream: MediaStream,\n options: AudioAnalyserOptions = {}\n) {\n const audioContext = new (window.AudioContext ||\n (window as unknown as { webkitAudioContext: typeof AudioContext })\n .webkitAudioContext)()\n const source = audioContext.createMediaStreamSource(mediaStream)\n const analyser = audioContext.createAnalyser()\n\n if (options.fftSize) analyser.fftSize = options.fftSize\n if (options.smoothingTimeConstant !== undefined) {\n analyser.smoothingTimeConstant = options.smoothingTimeConstant\n }\n if (options.minDecibels !== undefined)\n analyser.minDecibels = options.minDecibels\n if (options.maxDecibels !== undefined)\n analyser.maxDecibels = options.maxDecibels\n\n source.connect(analyser)\n\n const cleanup = () => {\n source.disconnect()\n audioContext.close()\n }\n\n return { analyser, audioContext, cleanup }\n}\n\n/**\n * Hook for tracking the volume of an audio stream using the Web Audio API.\n * @param mediaStream - The MediaStream to analyze\n * @param options - Audio analyser options\n * @returns The current volume level (0-1)\n */\nexport function useAudioVolume(\n mediaStream?: MediaStream | null,\n options: AudioAnalyserOptions = { fftSize: 32, smoothingTimeConstant: 0 }\n) {\n const [volume, setVolume] = useState(0)\n const volumeRef = useRef(0)\n const frameId = useRef(undefined)\n\n // Memoize options to prevent unnecessary re-renders\n const memoizedOptions = useMemo(() => options, [options])\n\n useEffect(() => {\n if (!mediaStream) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setVolume(0)\n volumeRef.current = 0\n return\n }\n\n const { analyser, cleanup } = createAudioAnalyser(\n mediaStream,\n memoizedOptions\n )\n\n const bufferLength = analyser.frequencyBinCount\n const dataArray = new Uint8Array(bufferLength)\n let lastUpdate = 0\n const updateInterval = 1000 / 30 // 30 FPS\n\n const updateVolume = (timestamp: number) => {\n if (timestamp - lastUpdate >= updateInterval) {\n analyser.getByteFrequencyData(dataArray)\n let sum = 0\n for (let i = 0; i < dataArray.length; i++) {\n const a = dataArray[i]\n sum += a * a\n }\n const newVolume = Math.sqrt(sum / dataArray.length) / 255\n\n // Only update state if volume changed significantly\n if (Math.abs(newVolume - volumeRef.current) > 0.01) {\n volumeRef.current = newVolume\n setVolume(newVolume)\n }\n lastUpdate = timestamp\n }\n frameId.current = requestAnimationFrame(updateVolume)\n }\n\n frameId.current = requestAnimationFrame(updateVolume)\n\n return () => {\n cleanup()\n if (frameId.current) {\n cancelAnimationFrame(frameId.current)\n }\n }\n }, [mediaStream, memoizedOptions])\n\n return volume\n}\n\nexport interface MultiBandVolumeOptions {\n bands?: number\n loPass?: number // Low frequency cutoff\n hiPass?: number // High frequency cutoff\n updateInterval?: number // Update interval in ms\n analyserOptions?: AudioAnalyserOptions\n}\n\nconst multibandDefaults: MultiBandVolumeOptions = {\n bands: 5,\n loPass: 100,\n hiPass: 600,\n updateInterval: 32,\n analyserOptions: { fftSize: 2048 },\n}\n\n// Memoized normalization function to avoid recreating on each render\nconst normalizeDb = (value: number) => {\n if (value === -Infinity) return 0\n const minDb = -100\n const maxDb = -10\n const db = 1 - (Math.max(minDb, Math.min(maxDb, value)) * -1) / 100\n return Math.sqrt(db)\n}\n\n/**\n * Hook for tracking volume across multiple frequency bands\n * @param mediaStream - The MediaStream to analyze\n * @param options - Multiband options\n * @returns Array of volume levels for each frequency band\n */\nexport function useMultibandVolume(\n mediaStream?: MediaStream | null,\n options: MultiBandVolumeOptions = {}\n) {\n const opts = useMemo(() => ({ ...multibandDefaults, ...options }), [options])\n\n const [frequencyBands, setFrequencyBands] = useState(() =>\n new Array(opts.bands).fill(0)\n )\n const bandsRef = useRef(new Array(opts.bands).fill(0))\n const frameId = useRef(undefined)\n\n useEffect(() => {\n if (!mediaStream) {\n const emptyBands = new Array(opts.bands).fill(0)\n setTimeout(() => {\n setFrequencyBands(emptyBands)\n }, 0)\n bandsRef.current = emptyBands\n return\n }\n\n const { analyser, cleanup } = createAudioAnalyser(\n mediaStream,\n opts.analyserOptions\n )\n\n const bufferLength = analyser.frequencyBinCount\n const dataArray = new Float32Array(bufferLength)\n const sliceStart = opts.loPass!\n const sliceEnd = opts.hiPass!\n const sliceLength = sliceEnd - sliceStart\n const chunkSize = Math.ceil(sliceLength / opts.bands!)\n\n let lastUpdate = 0\n const updateInterval = opts.updateInterval!\n\n const updateVolume = (timestamp: number) => {\n if (timestamp - lastUpdate >= updateInterval) {\n analyser.getFloatFrequencyData(dataArray)\n\n // Process directly without creating intermediate arrays\n const chunks = new Array(opts.bands!)\n\n for (let i = 0; i < opts.bands!; i++) {\n let sum = 0\n let count = 0\n const startIdx = sliceStart + i * chunkSize\n const endIdx = Math.min(sliceStart + (i + 1) * chunkSize, sliceEnd)\n\n for (let j = startIdx; j < endIdx; j++) {\n sum += normalizeDb(dataArray[j])\n count++\n }\n\n chunks[i] = count > 0 ? sum / count : 0\n }\n\n // Only update state if bands changed significantly\n let hasChanged = false\n for (let i = 0; i < chunks.length; i++) {\n if (Math.abs(chunks[i] - bandsRef.current[i]) > 0.01) {\n hasChanged = true\n break\n }\n }\n\n if (hasChanged) {\n bandsRef.current = chunks\n setFrequencyBands(chunks)\n }\n\n lastUpdate = timestamp\n }\n\n frameId.current = requestAnimationFrame(updateVolume)\n }\n\n frameId.current = requestAnimationFrame(updateVolume)\n\n return () => {\n cleanup()\n if (frameId.current) {\n cancelAnimationFrame(frameId.current)\n }\n }\n }, [mediaStream, opts])\n\n return frequencyBands\n}\n\ntype AnimationState =\n | \"connecting\"\n | \"initializing\"\n | \"listening\"\n | \"speaking\"\n | \"thinking\"\n | undefined\n\nexport const useBarAnimator = (\n state: AnimationState,\n columns: number,\n interval: number\n): number[] => {\n const indexRef = useRef(0)\n const [currentFrame, setCurrentFrame] = useState([])\n const animationFrameId = useRef(null)\n\n // Memoize sequence generation\n const sequence = useMemo(() => {\n if (state === \"thinking\" || state === \"listening\") {\n return generateListeningSequenceBar(columns)\n } else if (state === \"connecting\" || state === \"initializing\") {\n return generateConnectingSequenceBar(columns)\n } else if (state === undefined || state === \"speaking\") {\n return [new Array(columns).fill(0).map((_, idx) => idx)]\n } else {\n return [[]]\n }\n }, [state, columns])\n\n useEffect(() => {\n indexRef.current = 0\n setTimeout(() => {\n setCurrentFrame(sequence[0] || [])\n }, 0)\n }, [sequence])\n\n useEffect(() => {\n let startTime = performance.now()\n\n const animate = (time: DOMHighResTimeStamp) => {\n const timeElapsed = time - startTime\n\n if (timeElapsed >= interval) {\n indexRef.current = (indexRef.current + 1) % sequence.length\n setCurrentFrame(sequence[indexRef.current] || [])\n startTime = time\n }\n\n animationFrameId.current = requestAnimationFrame(animate)\n }\n\n animationFrameId.current = requestAnimationFrame(animate)\n\n return () => {\n if (animationFrameId.current !== null) {\n cancelAnimationFrame(animationFrameId.current)\n }\n }\n }, [interval, sequence])\n\n return currentFrame\n}\n\n// Memoize sequence generators\nconst generateConnectingSequenceBar = (columns: number): number[][] => {\n const seq = []\n for (let x = 0; x < columns; x++) {\n seq.push([x, columns - 1 - x])\n }\n return seq\n}\n\nconst generateListeningSequenceBar = (columns: number): number[][] => {\n const center = Math.floor(columns / 2)\n const noIndex = -1\n return [[center], [noIndex]]\n}\n\nexport type AgentState =\n | \"connecting\"\n | \"initializing\"\n | \"listening\"\n | \"speaking\"\n | \"thinking\"\n\nexport interface BarVisualizerProps\n extends React.HTMLAttributes {\n /** Voice assistant state */\n state?: AgentState\n /** Number of bars to display */\n barCount?: number\n /** Audio source */\n mediaStream?: MediaStream | null\n /** Min/max height as percentage */\n minHeight?: number\n maxHeight?: number\n /** Enable demo mode with fake audio data */\n demo?: boolean\n /** Align bars from center instead of bottom */\n centerAlign?: boolean\n}\n\nconst BarVisualizerComponent = React.forwardRef<\n HTMLDivElement,\n BarVisualizerProps\n>(\n (\n {\n state,\n barCount = 15,\n mediaStream,\n minHeight = 20,\n maxHeight = 100,\n demo = false,\n centerAlign = false,\n className,\n style,\n ...props\n },\n ref\n ) => {\n // Audio processing\n const realVolumeBands = useMultibandVolume(mediaStream, {\n bands: barCount,\n loPass: 100,\n hiPass: 200,\n })\n\n // Generate fake volume data for demo mode using refs to avoid state updates\n const fakeVolumeBandsRef = useRef(new Array(barCount).fill(0.2))\n const [fakeVolumeBands, setFakeVolumeBands] = useState(() =>\n new Array(barCount).fill(0.2)\n )\n const fakeAnimationRef = useRef(undefined)\n\n // Animate fake volume bands for speaking and listening states\n useEffect(() => {\n if (!demo) return\n\n if (state !== \"speaking\" && state !== \"listening\") {\n const bands = new Array(barCount).fill(0.2)\n fakeVolumeBandsRef.current = bands\n setTimeout(() => {\n setFakeVolumeBands(bands)\n }, 0)\n return\n }\n\n let lastUpdate = 0\n const updateInterval = 50\n const startTime = Date.now() / 1000\n\n const updateFakeVolume = (timestamp: number) => {\n if (timestamp - lastUpdate >= updateInterval) {\n const time = Date.now() / 1000 - startTime\n const newBands = new Array(barCount)\n\n for (let i = 0; i < barCount; i++) {\n const waveOffset = i * 0.5\n const baseVolume = Math.sin(time * 2 + waveOffset) * 0.3 + 0.5\n const randomNoise = Math.random() * 0.2\n newBands[i] = Math.max(0.1, Math.min(1, baseVolume + randomNoise))\n }\n\n // Only update if values changed significantly\n let hasChanged = false\n for (let i = 0; i < barCount; i++) {\n if (Math.abs(newBands[i] - fakeVolumeBandsRef.current[i]) > 0.05) {\n hasChanged = true\n break\n }\n }\n\n if (hasChanged) {\n fakeVolumeBandsRef.current = newBands\n setFakeVolumeBands(newBands)\n }\n\n lastUpdate = timestamp\n }\n\n fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)\n }\n\n fakeAnimationRef.current = requestAnimationFrame(updateFakeVolume)\n\n return () => {\n if (fakeAnimationRef.current) {\n cancelAnimationFrame(fakeAnimationRef.current)\n }\n }\n }, [demo, state, barCount])\n\n // Use fake or real volume data based on demo mode\n const volumeBands = useMemo(\n () => (demo ? fakeVolumeBands : realVolumeBands),\n [demo, fakeVolumeBands, realVolumeBands]\n )\n\n // Animation sequencing\n const highlightedIndices = useBarAnimator(\n state,\n barCount,\n state === \"connecting\"\n ? 2000 / barCount\n : state === \"thinking\"\n ? 150\n : state === \"listening\"\n ? 500\n : 1000\n )\n\n return (\n \n {volumeBands.map((volume, index) => {\n const heightPct = Math.min(\n maxHeight,\n Math.max(minHeight, volume * 100 + 5)\n )\n const isHighlighted = highlightedIndices?.includes(index) ?? false\n\n return (\n \n )\n })}\n \n )\n }\n)\n\n// Memoized Bar component to prevent unnecessary re-renders\nconst Bar = React.memo<{\n heightPct: number\n isHighlighted: boolean\n state?: AgentState\n}>(({ heightPct, isHighlighted, state }) => (\n \n))\n\nBar.displayName = \"Bar\"\n\n// Wrap the main component with React.memo for prop comparison optimization\nconst BarVisualizer = React.memo(\n BarVisualizerComponent,\n (prevProps, nextProps) => {\n return (\n prevProps.state === nextProps.state &&\n prevProps.barCount === nextProps.barCount &&\n prevProps.mediaStream === nextProps.mediaStream &&\n prevProps.minHeight === nextProps.minHeight &&\n prevProps.maxHeight === nextProps.maxHeight &&\n prevProps.demo === nextProps.demo &&\n prevProps.centerAlign === nextProps.centerAlign &&\n prevProps.className === nextProps.className &&\n JSON.stringify(prevProps.style) === JSON.stringify(nextProps.style)\n )\n }\n)\n\nBarVisualizerComponent.displayName = \"BarVisualizerComponent\"\nBarVisualizer.displayName = \"BarVisualizer\"\n\nexport type LiveWaveformProps = React.HTMLAttributes & {\n active?: boolean\n processing?: boolean\n deviceId?: string\n barWidth?: number\n barHeight?: number\n barGap?: number\n barRadius?: number\n barColor?: string\n fadeEdges?: boolean\n fadeWidth?: number\n height?: string | number\n sensitivity?: number\n smoothingTimeConstant?: number\n fftSize?: number\n historySize?: number\n updateRate?: number\n mode?: \"scrolling\" | \"static\"\n onError?: (error: Error) => void\n onStreamReady?: (stream: MediaStream) => void\n onStreamEnd?: () => void\n}\nexport const LiveWaveform = ({\n active = false,\n processing = false,\n deviceId,\n barWidth = 3,\n barGap = 1,\n barRadius = 1.5,\n barColor,\n fadeEdges = true,\n fadeWidth = 24,\n barHeight: baseBarHeight = 4,\n height = 64,\n sensitivity = 1,\n smoothingTimeConstant = 0.8,\n fftSize = 256,\n historySize = 60,\n updateRate = 30,\n mode = \"static\",\n onError,\n onStreamReady,\n onStreamEnd,\n className,\n ...props\n}: LiveWaveformProps) => {\n const canvasRef = useRef(null)\n const containerRef = useRef(null)\n const historyRef = useRef([])\n const analyserRef = useRef(null)\n const audioContextRef = useRef(null)\n const streamRef = useRef(null)\n const animationRef = useRef(0)\n const lastUpdateRef = useRef(0)\n const processingAnimationRef = useRef(null)\n const lastActiveDataRef = useRef([])\n const transitionProgressRef = useRef(0)\n const staticBarsRef = useRef([])\n const needsRedrawRef = useRef(true)\n const gradientCacheRef = useRef(null)\n const lastWidthRef = useRef(0)\n const heightStyle = typeof height === \"number\" ? `${height}px` : height\n // Handle canvas resizing\n useEffect(() => {\n const canvas = canvasRef.current\n const container = containerRef.current\n if (!canvas || !container) return\n const resizeObserver = new ResizeObserver(() => {\n const rect = container.getBoundingClientRect()\n const dpr = window.devicePixelRatio || 1\n canvas.width = rect.width * dpr\n canvas.height = rect.height * dpr\n canvas.style.width = `${rect.width}px`\n canvas.style.height = `${rect.height}px`\n const ctx = canvas.getContext(\"2d\")\n if (ctx) {\n ctx.scale(dpr, dpr)\n }\n gradientCacheRef.current = null\n lastWidthRef.current = rect.width\n needsRedrawRef.current = true\n })\n resizeObserver.observe(container)\n return () => resizeObserver.disconnect()\n }, [])\n useEffect(() => {\n if (processing && !active) {\n let time = 0\n transitionProgressRef.current = 0\n const animateProcessing = () => {\n time += 0.03\n transitionProgressRef.current = Math.min(\n 1,\n transitionProgressRef.current + 0.02\n )\n const processingData = []\n const barCount = Math.floor(\n (containerRef.current?.getBoundingClientRect().width || 200) /\n (barWidth + barGap)\n )\n if (mode === \"static\") {\n const halfCount = Math.floor(barCount / 2)\n for (let i = 0; i < barCount; i++) {\n const normalizedPosition = (i - halfCount) / halfCount\n const centerWeight = 1 - Math.abs(normalizedPosition) * 0.4\n const wave1 = Math.sin(time * 1.5 + normalizedPosition * 3) * 0.25\n const wave2 = Math.sin(time * 0.8 - normalizedPosition * 2) * 0.2\n const wave3 = Math.cos(time * 2 + normalizedPosition) * 0.15\n const combinedWave = wave1 + wave2 + wave3\n const processingValue = (0.2 + combinedWave) * centerWeight\n let finalValue = processingValue\n if (\n lastActiveDataRef.current.length > 0 &&\n transitionProgressRef.current < 1\n ) {\n const lastDataIndex = Math.min(\n i,\n lastActiveDataRef.current.length - 1\n )\n const lastValue = lastActiveDataRef.current[lastDataIndex] || 0\n finalValue =\n lastValue * (1 - transitionProgressRef.current) +\n processingValue * transitionProgressRef.current\n }\n processingData.push(Math.max(0.05, Math.min(1, finalValue)))\n }\n } else {\n for (let i = 0; i < barCount; i++) {\n const normalizedPosition = (i - barCount / 2) / (barCount / 2)\n const centerWeight = 1 - Math.abs(normalizedPosition) * 0.4\n const wave1 = Math.sin(time * 1.5 + i * 0.15) * 0.25\n const wave2 = Math.sin(time * 0.8 - i * 0.1) * 0.2\n const wave3 = Math.cos(time * 2 + i * 0.05) * 0.15\n const combinedWave = wave1 + wave2 + wave3\n const processingValue = (0.2 + combinedWave) * centerWeight\n let finalValue = processingValue\n if (\n lastActiveDataRef.current.length > 0 &&\n transitionProgressRef.current < 1\n ) {\n const lastDataIndex = Math.floor(\n (i / barCount) * lastActiveDataRef.current.length\n )\n const lastValue = lastActiveDataRef.current[lastDataIndex] || 0\n finalValue =\n lastValue * (1 - transitionProgressRef.current) +\n processingValue * transitionProgressRef.current\n }\n processingData.push(Math.max(0.05, Math.min(1, finalValue)))\n }\n }\n if (mode === \"static\") {\n staticBarsRef.current = processingData\n } else {\n historyRef.current = processingData\n }\n needsRedrawRef.current = true\n processingAnimationRef.current =\n requestAnimationFrame(animateProcessing)\n }\n animateProcessing()\n return () => {\n if (processingAnimationRef.current) {\n cancelAnimationFrame(processingAnimationRef.current)\n }\n }\n } else if (!active && !processing) {\n const hasData =\n mode === \"static\"\n ? staticBarsRef.current.length > 0\n : historyRef.current.length > 0\n if (hasData) {\n let fadeProgress = 0\n const fadeToIdle = () => {\n fadeProgress += 0.03\n if (fadeProgress < 1) {\n if (mode === \"static\") {\n staticBarsRef.current = staticBarsRef.current.map(\n (value) => value * (1 - fadeProgress)\n )\n } else {\n historyRef.current = historyRef.current.map(\n (value) => value * (1 - fadeProgress)\n )\n }\n needsRedrawRef.current = true\n requestAnimationFrame(fadeToIdle)\n } else {\n if (mode === \"static\") {\n staticBarsRef.current = []\n } else {\n historyRef.current = []\n }\n }\n }\n fadeToIdle()\n }\n }\n }, [processing, active, barWidth, barGap, mode])\n // Handle microphone setup and teardown\n useEffect(() => {\n if (!active) {\n if (streamRef.current) {\n streamRef.current.getTracks().forEach((track) => track.stop())\n streamRef.current = null\n onStreamEnd?.()\n }\n if (\n audioContextRef.current &&\n audioContextRef.current.state !== \"closed\"\n ) {\n audioContextRef.current.close()\n audioContextRef.current = null\n }\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = 0\n }\n return\n }\n const setupMicrophone = async () => {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n audio: deviceId\n ? {\n deviceId: { exact: deviceId },\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n }\n : {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n },\n })\n streamRef.current = stream\n onStreamReady?.(stream)\n const AudioContextConstructor =\n window.AudioContext ||\n (window as unknown as { webkitAudioContext: typeof AudioContext })\n .webkitAudioContext\n const audioContext = new AudioContextConstructor()\n const analyser = audioContext.createAnalyser()\n analyser.fftSize = fftSize\n analyser.smoothingTimeConstant = smoothingTimeConstant\n const source = audioContext.createMediaStreamSource(stream)\n source.connect(analyser)\n audioContextRef.current = audioContext\n analyserRef.current = analyser\n // Clear history when starting\n historyRef.current = []\n } catch (error) {\n onError?.(error as Error)\n }\n }\n setupMicrophone()\n return () => {\n if (streamRef.current) {\n streamRef.current.getTracks().forEach((track) => track.stop())\n streamRef.current = null\n onStreamEnd?.()\n }\n if (\n audioContextRef.current &&\n audioContextRef.current.state !== \"closed\"\n ) {\n audioContextRef.current.close()\n audioContextRef.current = null\n }\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = 0\n }\n }\n }, [\n active,\n deviceId,\n fftSize,\n smoothingTimeConstant,\n onError,\n onStreamReady,\n onStreamEnd,\n ])\n // Animation loop\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n let rafId: number\n const animate = (currentTime: number) => {\n // Render waveform\n const rect = canvas.getBoundingClientRect()\n // Update audio data if active\n if (active && currentTime - lastUpdateRef.current > updateRate) {\n lastUpdateRef.current = currentTime\n if (analyserRef.current) {\n const dataArray = new Uint8Array(\n analyserRef.current.frequencyBinCount\n )\n analyserRef.current.getByteFrequencyData(dataArray)\n if (mode === \"static\") {\n // For static mode, update bars in place\n const startFreq = Math.floor(dataArray.length * 0.05)\n const endFreq = Math.floor(dataArray.length * 0.4)\n const relevantData = dataArray.slice(startFreq, endFreq)\n const barCount = Math.floor(rect.width / (barWidth + barGap))\n const halfCount = Math.floor(barCount / 2)\n const newBars: number[] = []\n // Mirror the data for symmetric display\n for (let i = halfCount - 1; i >= 0; i--) {\n const dataIndex = Math.floor(\n (i / halfCount) * relevantData.length\n )\n const value = Math.min(\n 1,\n (relevantData[dataIndex] / 255) * sensitivity\n )\n newBars.push(Math.max(0.05, value))\n }\n for (let i = 0; i < halfCount; i++) {\n const dataIndex = Math.floor(\n (i / halfCount) * relevantData.length\n )\n const value = Math.min(\n 1,\n (relevantData[dataIndex] / 255) * sensitivity\n )\n newBars.push(Math.max(0.05, value))\n }\n staticBarsRef.current = newBars\n lastActiveDataRef.current = newBars\n } else {\n // Scrolling mode - original behavior\n let sum = 0\n const startFreq = Math.floor(dataArray.length * 0.05)\n const endFreq = Math.floor(dataArray.length * 0.4)\n const relevantData = dataArray.slice(startFreq, endFreq)\n for (let i = 0; i < relevantData.length; i++) {\n sum += relevantData[i]\n }\n const average = (sum / relevantData.length / 255) * sensitivity\n // Add to history\n historyRef.current.push(Math.min(1, Math.max(0.05, average)))\n lastActiveDataRef.current = [...historyRef.current]\n // Maintain history size\n if (historyRef.current.length > historySize) {\n historyRef.current.shift()\n }\n }\n needsRedrawRef.current = true\n }\n }\n // Only redraw if needed\n if (!needsRedrawRef.current && !active) {\n rafId = requestAnimationFrame(animate)\n return\n }\n needsRedrawRef.current = active\n ctx.clearRect(0, 0, rect.width, rect.height)\n const computedBarColor =\n barColor ||\n (() => {\n const style = getComputedStyle(canvas)\n // Try to get the computed color value directly\n const color = style.color\n return color || \"#000\"\n })()\n const step = barWidth + barGap\n const barCount = Math.floor(rect.width / step)\n const centerY = rect.height / 2\n // Draw bars based on mode\n if (mode === \"static\") {\n // Static mode - bars in fixed positions\n const dataToRender = processing\n ? staticBarsRef.current\n : active\n ? staticBarsRef.current\n : staticBarsRef.current.length > 0\n ? staticBarsRef.current\n : []\n for (let i = 0; i < barCount && i < dataToRender.length; i++) {\n const value = dataToRender[i] || 0.1\n const x = i * step\n const barHeight = Math.max(baseBarHeight, value * rect.height * 0.8)\n const y = centerY - barHeight / 2\n ctx.fillStyle = computedBarColor\n ctx.globalAlpha = 0.4 + value * 0.6\n if (barRadius > 0) {\n ctx.beginPath()\n ctx.roundRect(x, y, barWidth, barHeight, barRadius)\n ctx.fill()\n } else {\n ctx.fillRect(x, y, barWidth, barHeight)\n }\n }\n } else {\n // Scrolling mode - original behavior\n for (let i = 0; i < barCount && i < historyRef.current.length; i++) {\n const dataIndex = historyRef.current.length - 1 - i\n const value = historyRef.current[dataIndex] || 0.1\n const x = rect.width - (i + 1) * step\n const barHeight = Math.max(baseBarHeight, value * rect.height * 0.8)\n const y = centerY - barHeight / 2\n ctx.fillStyle = computedBarColor\n ctx.globalAlpha = 0.4 + value * 0.6\n if (barRadius > 0) {\n ctx.beginPath()\n ctx.roundRect(x, y, barWidth, barHeight, barRadius)\n ctx.fill()\n } else {\n ctx.fillRect(x, y, barWidth, barHeight)\n }\n }\n }\n // Apply edge fading\n if (fadeEdges && fadeWidth > 0 && rect.width > 0) {\n // Cache gradient if width hasn't changed\n if (!gradientCacheRef.current || lastWidthRef.current !== rect.width) {\n const gradient = ctx.createLinearGradient(0, 0, rect.width, 0)\n const fadePercent = Math.min(0.3, fadeWidth / rect.width)\n // destination-out: removes destination where source alpha is high\n // We want: fade edges out, keep center solid\n // Left edge: start opaque (1) = remove, fade to transparent (0) = keep\n gradient.addColorStop(0, \"rgba(255,255,255,1)\")\n gradient.addColorStop(fadePercent, \"rgba(255,255,255,0)\")\n // Center stays transparent = keep everything\n gradient.addColorStop(1 - fadePercent, \"rgba(255,255,255,0)\")\n // Right edge: fade from transparent (0) = keep to opaque (1) = remove\n gradient.addColorStop(1, \"rgba(255,255,255,1)\")\n gradientCacheRef.current = gradient\n lastWidthRef.current = rect.width\n }\n ctx.globalCompositeOperation = \"destination-out\"\n ctx.fillStyle = gradientCacheRef.current\n ctx.fillRect(0, 0, rect.width, rect.height)\n ctx.globalCompositeOperation = \"source-over\"\n }\n ctx.globalAlpha = 1\n rafId = requestAnimationFrame(animate)\n }\n rafId = requestAnimationFrame(animate)\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId)\n }\n }\n }, [\n active,\n processing,\n sensitivity,\n updateRate,\n historySize,\n barWidth,\n baseBarHeight,\n barGap,\n barRadius,\n barColor,\n fadeEdges,\n fadeWidth,\n mode,\n ])\n return (\n \n {!active && !processing && (\n
\n )}\n \n
\n )\n}\n", "type": "registry:block" } ], diff --git a/apps/v4/public/r/styles/base-lyra/accordion-demo.json b/apps/v4/public/r/styles/base-lyra/accordion-demo.json index 83f5834afd..3641deba65 100644 --- a/apps/v4/public/r/styles/base-lyra/accordion-demo.json +++ b/apps/v4/public/r/styles/base-lyra/accordion-demo.json @@ -8,7 +8,7 @@ "files": [ { "path": "registry/base-lyra/demo/accordion-demo.tsx", - "content": "import {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/base-nova/ui/accordion\"\n\nexport default function AccordionDemo() {\n return (\n \n \n Is Base it accessible?\n \n Yes. It adheres to the WAI-ARIA design pattern.\n \n \n \n Is it styled?\n \n Yes. It comes with default styles that matches the other\n components' aesthetic.\n \n \n \n Is it animated?\n \n Yes. It's animated by default, but you can disable it if you\n prefer.\n \n \n \n )\n}\n", + "content": "import {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/base-lyra/ui/accordion\"\n\nexport default function AccordionDemo() {\n return (\n \n \n Is Base it accessible?\n \n Yes. It adheres to the WAI-ARIA design pattern.\n \n \n \n Is it styled?\n \n Yes. It comes with default styles that matches the other\n components' aesthetic.\n \n \n \n Is it animated?\n \n Yes. It's animated by default, but you can disable it if you\n prefer.\n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/accordion-disabled.json b/apps/v4/public/r/styles/base-lyra/accordion-disabled.json index f461b17b04..3fe8231afa 100644 --- a/apps/v4/public/r/styles/base-lyra/accordion-disabled.json +++ b/apps/v4/public/r/styles/base-lyra/accordion-disabled.json @@ -8,7 +8,7 @@ "files": [ { "path": "registry/base-lyra/demo/accordion-disabled.tsx", - "content": "import {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/base-nova/ui/accordion\"\n\nexport default function AccordionDisabled() {\n return (\n \n \n Can I access my account history?\n \n Yes, you can view your complete account history including all\n transactions, plan changes, and support tickets in the Account History\n section of your dashboard.\n \n \n \n Premium feature information\n \n This section contains information about premium features. Upgrade your\n plan to access this content.\n \n \n \n How do I update my email address?\n \n You can update your email address in your account settings.\n You'll receive a verification email at your new address to\n confirm the change.\n \n \n \n )\n}\n", + "content": "import {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/base-lyra/ui/accordion\"\n\nexport default function AccordionDisabled() {\n return (\n \n \n Can I access my account history?\n \n Yes, you can view your complete account history including all\n transactions, plan changes, and support tickets in the Account History\n section of your dashboard.\n \n \n \n Premium feature information\n \n This section contains information about premium features. Upgrade your\n plan to access this content.\n \n \n \n How do I update my email address?\n \n You can update your email address in your account settings.\n You'll receive a verification email at your new address to\n confirm the change.\n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/accordion-example.json b/apps/v4/public/r/styles/base-lyra/accordion-example.json index b10b004647..6642c0d713 100644 --- a/apps/v4/public/r/styles/base-lyra/accordion-example.json +++ b/apps/v4/public/r/styles/base-lyra/accordion-example.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/base-lyra/examples/accordion-example.tsx", - "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/bases/base/ui/accordion\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AccordionExample() {\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction AccordionBasic() {\n const items = [\n {\n value: \"item-1\",\n trigger: \"Is it accessible?\",\n content: \"Yes. It adheres to the WAI-ARIA design pattern.\",\n },\n {\n value: \"item-2\",\n trigger: \"Is it styled?\",\n content:\n \"Yes. It comes with default styles that matches the other components' aesthetic.\",\n },\n {\n value: \"item-3\",\n trigger: \"Is it animated?\",\n content:\n \"Yes. It's animated by default, but you can disable it if you prefer.\",\n },\n ]\n\n return (\n \n \n {items.map((item) => (\n \n {item.trigger}\n {item.content}\n \n ))}\n \n \n )\n}\n\nfunction AccordionMultiple() {\n const items = [\n {\n value: \"item-1\",\n trigger:\n \"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\",\n content:\n \"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\",\n },\n {\n value: \"item-2\",\n trigger:\n \"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\",\n content:\n \"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\",\n },\n ]\n\n return (\n \n \n {items.map((item) => (\n \n {item.trigger}\n {item.content}\n \n ))}\n \n \n )\n}\n\nfunction AccordionWithBorders() {\n const items = [\n {\n value: \"billing\",\n trigger: \"How does billing work?\",\n content:\n \"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\",\n },\n {\n value: \"security\",\n trigger: \"Is my data secure?\",\n content:\n \"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\",\n },\n {\n value: \"integration\",\n trigger: \"What integrations do you support?\",\n content: (\n <>\n

\n We integrate with 500+ popular tools including Slack, Zapier,\n Salesforce, HubSpot, and more. You can also build custom\n integrations using our REST API and webhooks.{\" \"}\n

\n

\n Our API documentation includes code examples in 10+ programming\n languages.\n

\n \n ),\n },\n ]\n\n return (\n \n \n {items.map((item) => (\n \n \n {item.trigger}\n \n \n {item.content}\n \n \n ))}\n \n \n )\n}\n\nfunction AccordionInCard() {\n const items = [\n {\n value: \"plans\",\n trigger: \"What subscription plans do you offer?\",\n content: (\n <>\n

\n We offer three subscription tiers: Starter ($9/month), Professional\n ($29/month), and Enterprise ($99/month). Each plan includes\n increasing storage limits, API access, priority support, and team\n collaboration features.\n

\n

\n Annual billing is available with a 20% discount. All\n plans include a 14-day free trial with no credit card required.\n

\n \n \n ),\n },\n {\n value: \"billing\",\n trigger: \"How does billing work?\",\n content: (\n <>\n

\n Billing occurs automatically at the start of each billing cycle. We\n accept all major credit cards, PayPal, and ACH transfers for\n enterprise customers.\n

\n

\n You'll receive an invoice via email after each payment. You can\n update your payment method or billing information anytime in your\n account settings. Failed payments will trigger automated retry\n attempts and email notifications.\n

\n \n ),\n },\n {\n value: \"upgrade\",\n trigger: \"Can I upgrade or downgrade my plan?\",\n content: (\n <>\n

\n Yes, you can change your plan at any time. When upgrading,\n you'll be charged a prorated amount for the remainder of your\n billing cycle and immediately gain access to new features.\n

\n

\n When downgrading, the change takes effect at the end of your current\n billing period, and you'll retain access to premium features\n until then. No refunds are provided for downgrades.\n

\n \n ),\n },\n {\n value: \"cancel\",\n trigger: \"How do I cancel my subscription?\",\n content: (\n <>\n

\n You can cancel your subscription anytime from your account settings.\n There are no cancellation fees or penalties. Your access will\n continue until the end of your current billing period.\n

\n

\n After cancellation, your data is retained for 30 days in case you\n want to reactivate. You can export all your data before or after\n canceling. We'd love to hear your feedback about why\n you're leaving.\n

\n \n ),\n },\n {\n value: \"refund\",\n trigger: \"What is your refund policy?\",\n content: (\n <>\n

\n We offer a 30-day money-back guarantee for new subscriptions. If\n you're not satisfied within the first 30 days, contact our\n support team for a full refund.\n

\n

\n After 30 days, we don't provide refunds for partial billing\n periods, but you can cancel anytime to avoid future charges.\n Enterprise customers have custom refund terms outlined in their\n contracts.\n

\n \n ),\n },\n ]\n\n return (\n \n \n \n Subscription & Billing\n \n Common questions about your account, plans, and payments\n \n \n \n \n {items.map((item) => (\n \n {item.trigger}\n {item.content}\n \n ))}\n \n \n \n \n )\n}\n\nfunction AccordionWithDisabled() {\n const items = [\n {\n value: \"item-1\",\n trigger: \"Can I access my account history?\",\n content:\n \"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\",\n disabled: false,\n },\n {\n value: \"item-2\",\n trigger: \"Premium feature information\",\n content:\n \"This section contains information about premium features. Upgrade your plan to access this content.\",\n disabled: true,\n },\n {\n value: \"item-3\",\n trigger: \"How do I update my email address?\",\n content:\n \"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\",\n disabled: false,\n },\n ]\n\n return (\n \n \n {items.map((item) => (\n \n \n {item.trigger}\n \n \n {item.content}\n \n \n ))}\n \n \n )\n}\n", + "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/base-lyra/ui/accordion\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-lyra/ui/card\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AccordionExample() {\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction AccordionBasic() {\n const items = [\n {\n value: \"item-1\",\n trigger: \"Is it accessible?\",\n content: \"Yes. It adheres to the WAI-ARIA design pattern.\",\n },\n {\n value: \"item-2\",\n trigger: \"Is it styled?\",\n content:\n \"Yes. It comes with default styles that matches the other components' aesthetic.\",\n },\n {\n value: \"item-3\",\n trigger: \"Is it animated?\",\n content:\n \"Yes. It's animated by default, but you can disable it if you prefer.\",\n },\n ]\n\n return (\n \n \n {items.map((item) => (\n \n {item.trigger}\n {item.content}\n \n ))}\n \n \n )\n}\n\nfunction AccordionMultiple() {\n const items = [\n {\n value: \"item-1\",\n trigger:\n \"What are the key considerations when implementing a comprehensive enterprise-level authentication system?\",\n content:\n \"Implementing a robust enterprise authentication system requires careful consideration of multiple factors. This includes secure password hashing and storage, multi-factor authentication (MFA) implementation, session management, OAuth2 and SSO integration, regular security audits, rate limiting to prevent brute force attacks, and maintaining detailed audit logs. Additionally, you'll need to consider scalability, performance impact, and compliance with relevant data protection regulations such as GDPR or HIPAA.\",\n },\n {\n value: \"item-2\",\n trigger:\n \"How does modern distributed system architecture handle eventual consistency and data synchronization across multiple regions?\",\n content:\n \"Modern distributed systems employ various strategies to maintain data consistency across regions. This often involves using techniques like CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip protocols. Systems might implement event sourcing patterns, utilize message queues for asynchronous updates, and employ sophisticated conflict resolution strategies. Popular solutions like Amazon's DynamoDB and Google's Spanner demonstrate different approaches to solving these challenges, balancing between consistency, availability, and partition tolerance as described in the CAP theorem.\",\n },\n ]\n\n return (\n \n \n {items.map((item) => (\n \n {item.trigger}\n {item.content}\n \n ))}\n \n \n )\n}\n\nfunction AccordionWithBorders() {\n const items = [\n {\n value: \"billing\",\n trigger: \"How does billing work?\",\n content:\n \"We offer monthly and annual subscription plans. Billing is charged at the beginning of each cycle, and you can cancel anytime. All plans include automatic backups, 24/7 support, and unlimited team members. There are no hidden fees or setup costs.\",\n },\n {\n value: \"security\",\n trigger: \"Is my data secure?\",\n content:\n \"Yes. We use end-to-end encryption, SOC 2 Type II compliance, and regular third-party security audits. All data is encrypted at rest and in transit using industry-standard protocols. We also offer optional two-factor authentication and single sign-on for enterprise customers.\",\n },\n {\n value: \"integration\",\n trigger: \"What integrations do you support?\",\n content: (\n <>\n

\n We integrate with 500+ popular tools including Slack, Zapier,\n Salesforce, HubSpot, and more. You can also build custom\n integrations using our REST API and webhooks.{\" \"}\n

\n

\n Our API documentation includes code examples in 10+ programming\n languages.\n

\n \n ),\n },\n ]\n\n return (\n \n \n {items.map((item) => (\n \n \n {item.trigger}\n \n \n {item.content}\n \n \n ))}\n \n \n )\n}\n\nfunction AccordionInCard() {\n const items = [\n {\n value: \"plans\",\n trigger: \"What subscription plans do you offer?\",\n content: (\n <>\n

\n We offer three subscription tiers: Starter ($9/month), Professional\n ($29/month), and Enterprise ($99/month). Each plan includes\n increasing storage limits, API access, priority support, and team\n collaboration features.\n

\n

\n Annual billing is available with a 20% discount. All\n plans include a 14-day free trial with no credit card required.\n

\n \n \n ),\n },\n {\n value: \"billing\",\n trigger: \"How does billing work?\",\n content: (\n <>\n

\n Billing occurs automatically at the start of each billing cycle. We\n accept all major credit cards, PayPal, and ACH transfers for\n enterprise customers.\n

\n

\n You'll receive an invoice via email after each payment. You can\n update your payment method or billing information anytime in your\n account settings. Failed payments will trigger automated retry\n attempts and email notifications.\n

\n \n ),\n },\n {\n value: \"upgrade\",\n trigger: \"Can I upgrade or downgrade my plan?\",\n content: (\n <>\n

\n Yes, you can change your plan at any time. When upgrading,\n you'll be charged a prorated amount for the remainder of your\n billing cycle and immediately gain access to new features.\n

\n

\n When downgrading, the change takes effect at the end of your current\n billing period, and you'll retain access to premium features\n until then. No refunds are provided for downgrades.\n

\n \n ),\n },\n {\n value: \"cancel\",\n trigger: \"How do I cancel my subscription?\",\n content: (\n <>\n

\n You can cancel your subscription anytime from your account settings.\n There are no cancellation fees or penalties. Your access will\n continue until the end of your current billing period.\n

\n

\n After cancellation, your data is retained for 30 days in case you\n want to reactivate. You can export all your data before or after\n canceling. We'd love to hear your feedback about why\n you're leaving.\n

\n \n ),\n },\n {\n value: \"refund\",\n trigger: \"What is your refund policy?\",\n content: (\n <>\n

\n We offer a 30-day money-back guarantee for new subscriptions. If\n you're not satisfied within the first 30 days, contact our\n support team for a full refund.\n

\n

\n After 30 days, we don't provide refunds for partial billing\n periods, but you can cancel anytime to avoid future charges.\n Enterprise customers have custom refund terms outlined in their\n contracts.\n

\n \n ),\n },\n ]\n\n return (\n \n \n \n Subscription & Billing\n \n Common questions about your account, plans, and payments\n \n \n \n \n {items.map((item) => (\n \n {item.trigger}\n {item.content}\n \n ))}\n \n \n \n \n )\n}\n\nfunction AccordionWithDisabled() {\n const items = [\n {\n value: \"item-1\",\n trigger: \"Can I access my account history?\",\n content:\n \"Yes, you can view your complete account history including all transactions, plan changes, and support tickets in the Account History section of your dashboard.\",\n disabled: false,\n },\n {\n value: \"item-2\",\n trigger: \"Premium feature information\",\n content:\n \"This section contains information about premium features. Upgrade your plan to access this content.\",\n disabled: true,\n },\n {\n value: \"item-3\",\n trigger: \"How do I update my email address?\",\n content:\n \"You can update your email address in your account settings. You'll receive a verification email at your new address to confirm the change.\",\n disabled: false,\n },\n ]\n\n return (\n \n \n {items.map((item) => (\n \n \n {item.trigger}\n \n \n {item.content}\n \n \n ))}\n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/accordion-multiple.json b/apps/v4/public/r/styles/base-lyra/accordion-multiple.json index c41df3a915..27214b59f1 100644 --- a/apps/v4/public/r/styles/base-lyra/accordion-multiple.json +++ b/apps/v4/public/r/styles/base-lyra/accordion-multiple.json @@ -8,7 +8,7 @@ "files": [ { "path": "registry/base-lyra/demo/accordion-multiple.tsx", - "content": "import {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/base-nova/ui/accordion\"\n\nexport default function AccordionMultiple() {\n return (\n \n \n \n What are the key considerations when implementing a comprehensive\n enterprise-level authentication system?\n \n \n Implementing a robust enterprise authentication system requires\n careful consideration of multiple factors. This includes secure\n password hashing and storage, multi-factor authentication (MFA)\n implementation, session management, OAuth2 and SSO integration,\n regular security audits, rate limiting to prevent brute force attacks,\n and maintaining detailed audit logs. Additionally, you'll need to\n consider scalability, performance impact, and compliance with relevant\n data protection regulations such as GDPR or HIPAA.\n \n \n \n \n How does modern distributed system architecture handle eventual\n consistency and data synchronization across multiple regions?\n \n \n Modern distributed systems employ various strategies to maintain data\n consistency across regions. This often involves using techniques like\n CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip\n protocols. Systems might implement event sourcing patterns, utilize\n message queues for asynchronous updates, and employ sophisticated\n conflict resolution strategies. Popular solutions like Amazon's\n DynamoDB and Google's Spanner demonstrate different approaches to\n solving these challenges, balancing between consistency, availability,\n and partition tolerance as described in the CAP theorem.\n \n \n \n )\n}\n", + "content": "import {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/base-lyra/ui/accordion\"\n\nexport default function AccordionMultiple() {\n return (\n \n \n \n What are the key considerations when implementing a comprehensive\n enterprise-level authentication system?\n \n \n Implementing a robust enterprise authentication system requires\n careful consideration of multiple factors. This includes secure\n password hashing and storage, multi-factor authentication (MFA)\n implementation, session management, OAuth2 and SSO integration,\n regular security audits, rate limiting to prevent brute force attacks,\n and maintaining detailed audit logs. Additionally, you'll need to\n consider scalability, performance impact, and compliance with relevant\n data protection regulations such as GDPR or HIPAA.\n \n \n \n \n How does modern distributed system architecture handle eventual\n consistency and data synchronization across multiple regions?\n \n \n Modern distributed systems employ various strategies to maintain data\n consistency across regions. This often involves using techniques like\n CRDT (Conflict-Free Replicated Data Types), vector clocks, and gossip\n protocols. Systems might implement event sourcing patterns, utilize\n message queues for asynchronous updates, and employ sophisticated\n conflict resolution strategies. Popular solutions like Amazon's\n DynamoDB and Google's Spanner demonstrate different approaches to\n solving these challenges, balancing between consistency, availability,\n and partition tolerance as described in the CAP theorem.\n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/accordion.json b/apps/v4/public/r/styles/base-lyra/accordion.json index beef25c92e..e00a7dbe53 100644 --- a/apps/v4/public/r/styles/base-lyra/accordion.json +++ b/apps/v4/public/r/styles/base-lyra/accordion.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/accordion.tsx", - "content": "\"use client\"\n\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n \n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n \n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n \n \n {children}\n \n \n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n \n \n {children}\n \n \n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n", + "content": "\"use client\"\n\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n \n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n \n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n \n \n {children}\n \n \n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n \n \n {children}\n \n \n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/alert-demo.json b/apps/v4/public/r/styles/base-lyra/alert-demo.json new file mode 100644 index 0000000000..fdf1b2e28e --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/alert-demo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "alert-demo", + "title": "Alert Demo", + "registryDependencies": [ + "alert" + ], + "files": [ + { + "path": "registry/base-lyra/demo/alert-demo.tsx", + "content": "import { AlertCircleIcon, CheckCircle2Icon, PopcornIcon } from \"lucide-react\"\n\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n} from \"@/registry/base-lyra/ui/alert\"\n\nexport default function AlertDemo() {\n return (\n
\n \n \n Success! Your changes have been saved\n \n This is an alert with icon, title and description.\n \n \n \n \n \n This Alert has a title and an icon. No description.\n \n \n \n \n Unable to process your payment.\n \n

Please verify your billing information and try again.

\n
    \n
  • Check your card details
  • \n
  • Ensure sufficient funds
  • \n
  • Verify billing address
  • \n
\n
\n
\n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/alert-destructive.json b/apps/v4/public/r/styles/base-lyra/alert-destructive.json new file mode 100644 index 0000000000..31b821d658 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/alert-destructive.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "alert-destructive", + "title": "Alert Destructive", + "registryDependencies": [ + "alert" + ], + "files": [ + { + "path": "registry/base-lyra/demo/alert-destructive.tsx", + "content": "import { AlertCircleIcon } from \"lucide-react\"\n\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n} from \"@/registry/base-lyra/ui/alert\"\n\nexport default function AlertDestructive() {\n return (\n \n \n Error\n \n Your session has expired. Please log in again.\n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/alert-dialog-demo.json b/apps/v4/public/r/styles/base-lyra/alert-dialog-demo.json new file mode 100644 index 0000000000..2a2d37ac8a --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/alert-dialog-demo.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "alert-dialog-demo", + "title": "Alert Dialog Demo", + "registryDependencies": [ + "alert-dialog", + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/alert-dialog-demo.tsx", + "content": "import {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/registry/base-lyra/ui/alert-dialog\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function AlertDialogDemo() {\n return (\n \n }>\n Show Dialog\n \n \n \n Are you absolutely sure?\n \n This action cannot be undone. This will permanently delete your\n account and remove your data from our servers.\n \n \n \n Cancel\n Continue\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/alert-dialog-example.json b/apps/v4/public/r/styles/base-lyra/alert-dialog-example.json index 9c1043e479..44c8f321c9 100644 --- a/apps/v4/public/r/styles/base-lyra/alert-dialog-example.json +++ b/apps/v4/public/r/styles/base-lyra/alert-dialog-example.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/base-lyra/examples/alert-dialog-example.tsx", - "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/registry/bases/base/ui/alert-dialog\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AlertDialogExample() {\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nfunction AlertDialogBasic() {\n return (\n \n \n Default}\n />\n \n \n Are you absolutely sure?\n \n This action cannot be undone. This will permanently delete your\n account and remove your data from our servers.\n \n \n \n Cancel\n Continue\n \n \n \n \n )\n}\n\nfunction AlertDialogSmall() {\n return (\n \n \n Small} />\n \n \n Allow accessory to connect?\n \n Do you want to allow the USB accessory to connect to this device?\n \n \n \n Don't allow\n Allow\n \n \n \n \n )\n}\n\nfunction AlertDialogWithMedia() {\n return (\n \n \n Default (Media)}\n />\n \n \n \n \n \n Are you absolutely sure?\n \n This will permanently delete your account and remove your data\n from our servers.\n \n \n \n Cancel\n Continue\n \n \n \n \n )\n}\n\nfunction AlertDialogSmallWithMedia() {\n return (\n \n \n Small (Media)}\n />\n\n \n \n \n \n \n Allow accessory to connect?\n \n Do you want to allow the USB accessory to connect to this device?\n \n \n \n Don't allow\n Allow\n \n \n \n \n )\n}\n\nfunction AlertDialogDestructive() {\n return (\n \n \n Delete Chat}\n />\n \n \n \n \n \n Delete chat?\n \n This will permanently delete this chat conversation. View{\" \"}\n Settings delete any memories saved during this\n chat.\n \n \n \n Cancel\n Delete\n \n \n \n \n )\n}\n\nfunction AlertDialogInDialog() {\n return (\n \n \n }>\n Open Dialog\n \n \n \n Alert Dialog Example\n \n Click the button below to open an alert dialog.\n \n \n \n \n }>\n Open Alert Dialog\n \n \n \n Are you absolutely sure?\n \n This action cannot be undone. This will permanently delete\n your account and remove your data from our servers.\n \n \n \n Cancel\n Continue\n \n \n \n \n \n \n \n )\n}\n", + "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/registry/base-lyra/ui/alert-dialog\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/base-lyra/ui/dialog\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AlertDialogExample() {\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nfunction AlertDialogBasic() {\n return (\n \n \n Default}\n />\n \n \n Are you absolutely sure?\n \n This action cannot be undone. This will permanently delete your\n account and remove your data from our servers.\n \n \n \n Cancel\n Continue\n \n \n \n \n )\n}\n\nfunction AlertDialogSmall() {\n return (\n \n \n Small} />\n \n \n Allow accessory to connect?\n \n Do you want to allow the USB accessory to connect to this device?\n \n \n \n Don't allow\n Allow\n \n \n \n \n )\n}\n\nfunction AlertDialogWithMedia() {\n return (\n \n \n Default (Media)}\n />\n \n \n \n \n \n Are you absolutely sure?\n \n This will permanently delete your account and remove your data\n from our servers.\n \n \n \n Cancel\n Continue\n \n \n \n \n )\n}\n\nfunction AlertDialogSmallWithMedia() {\n return (\n \n \n Small (Media)}\n />\n\n \n \n \n \n \n Allow accessory to connect?\n \n Do you want to allow the USB accessory to connect to this device?\n \n \n \n Don't allow\n Allow\n \n \n \n \n )\n}\n\nfunction AlertDialogDestructive() {\n return (\n \n \n Delete Chat}\n />\n \n \n \n \n \n Delete chat?\n \n This will permanently delete this chat conversation. View{\" \"}\n Settings delete any memories saved during this\n chat.\n \n \n \n Cancel\n Delete\n \n \n \n \n )\n}\n\nfunction AlertDialogInDialog() {\n return (\n \n \n }>\n Open Dialog\n \n \n \n Alert Dialog Example\n \n Click the button below to open an alert dialog.\n \n \n \n \n }>\n Open Alert Dialog\n \n \n \n Are you absolutely sure?\n \n This action cannot be undone. This will permanently delete\n your account and remove your data from our servers.\n \n \n \n Cancel\n Continue\n \n \n \n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/alert-dialog.json b/apps/v4/public/r/styles/base-lyra/alert-dialog.json index 038d13ce46..3a5f5706ac 100644 --- a/apps/v4/public/r/styles/base-lyra/alert-dialog.json +++ b/apps/v4/public/r/styles/base-lyra/alert-dialog.json @@ -7,7 +7,7 @@ "files": [ { "path": "registry/base-lyra/ui/alert-dialog.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return \n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n \n \n \n \n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick, \"variant\" | \"size\">) {\n return (\n }\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return \n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n \n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n \n \n \n \n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick, \"variant\" | \"size\">) {\n return (\n }\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/alert-example.json b/apps/v4/public/r/styles/base-lyra/alert-example.json index a373268410..93978a4026 100644 --- a/apps/v4/public/r/styles/base-lyra/alert-example.json +++ b/apps/v4/public/r/styles/base-lyra/alert-example.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/examples/alert-example.tsx", - "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n Alert,\n AlertAction,\n AlertDescription,\n AlertTitle,\n} from \"@/registry/bases/base/ui/alert\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AlertExample() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction AlertExample1() {\n return (\n \n
\n \n Success! Your changes have been saved.\n \n \n Success! Your changes have been saved.\n \n This is an alert with title and description.\n \n \n \n \n This one has a description only. No title. No icon.\n \n \n
\n
\n )\n}\n\nfunction AlertExample2() {\n return (\n \n
\n \n \n \n Let's try one with icon, title and a link.\n \n \n \n \n \n This one has an icon and a description only. No title.{\" \"}\n But it has a link and a second link.\n \n \n\n \n \n Success! Your changes have been saved\n \n This is an alert with icon, title and description.\n \n \n \n \n \n This is a very long alert title that demonstrates how the component\n handles extended text content and potentially wraps across multiple\n lines\n \n \n \n \n \n This is a very long alert description that demonstrates how the\n component handles extended text content and potentially wraps across\n multiple lines\n \n \n \n \n \n This is an extremely long alert title that spans multiple lines to\n demonstrate how the component handles very lengthy headings while\n maintaining readability and proper text wrapping behavior\n \n \n This is an equally long description that contains detailed\n information about the alert. It shows how the component can\n accommodate extensive content while preserving proper spacing,\n alignment, and readability across different screen sizes and\n viewport widths. This helps ensure the user experience remains\n consistent regardless of the content length.\n \n \n
\n
\n )\n}\n\nfunction AlertExample3() {\n return (\n \n
\n \n \n Something went wrong!\n \n Your session has expired. Please log in again.\n \n \n \n \n Unable to process your payment.\n \n

\n Please verify your billing information and try\n again.\n

\n
    \n
  • Check your card details
  • \n
  • Ensure sufficient funds
  • \n
  • Verify billing address
  • \n
\n
\n
\n
\n
\n )\n}\n\nfunction AlertExample4() {\n return (\n \n
\n \n \n The selected emails have been marked as spam.\n \n \n \n \n \n \n The selected emails have been marked as spam.\n \n This is a very long alert title that demonstrates how the component\n handles extended text content.\n \n \n Badge\n \n \n
\n
\n )\n}\n", + "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport {\n Alert,\n AlertAction,\n AlertDescription,\n AlertTitle,\n} from \"@/registry/base-lyra/ui/alert\"\nimport { Badge } from \"@/registry/base-lyra/ui/badge\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AlertExample() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction AlertExample1() {\n return (\n \n
\n \n Success! Your changes have been saved.\n \n \n Success! Your changes have been saved.\n \n This is an alert with title and description.\n \n \n \n \n This one has a description only. No title. No icon.\n \n \n
\n
\n )\n}\n\nfunction AlertExample2() {\n return (\n \n
\n \n \n \n Let's try one with icon, title and a link.\n \n \n \n \n \n This one has an icon and a description only. No title.{\" \"}\n But it has a link and a second link.\n \n \n\n \n \n Success! Your changes have been saved\n \n This is an alert with icon, title and description.\n \n \n \n \n \n This is a very long alert title that demonstrates how the component\n handles extended text content and potentially wraps across multiple\n lines\n \n \n \n \n \n This is a very long alert description that demonstrates how the\n component handles extended text content and potentially wraps across\n multiple lines\n \n \n \n \n \n This is an extremely long alert title that spans multiple lines to\n demonstrate how the component handles very lengthy headings while\n maintaining readability and proper text wrapping behavior\n \n \n This is an equally long description that contains detailed\n information about the alert. It shows how the component can\n accommodate extensive content while preserving proper spacing,\n alignment, and readability across different screen sizes and\n viewport widths. This helps ensure the user experience remains\n consistent regardless of the content length.\n \n \n
\n
\n )\n}\n\nfunction AlertExample3() {\n return (\n \n
\n \n \n Something went wrong!\n \n Your session has expired. Please log in again.\n \n \n \n \n Unable to process your payment.\n \n

\n Please verify your billing information and try\n again.\n

\n
    \n
  • Check your card details
  • \n
  • Ensure sufficient funds
  • \n
  • Verify billing address
  • \n
\n
\n
\n
\n
\n )\n}\n\nfunction AlertExample4() {\n return (\n \n
\n \n \n The selected emails have been marked as spam.\n \n \n \n \n \n \n The selected emails have been marked as spam.\n \n This is a very long alert title that demonstrates how the component\n handles extended text content.\n \n \n Badge\n \n \n
\n
\n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/alert.json b/apps/v4/public/r/styles/base-lyra/alert.json index b26b5b7aa7..756c2bd501 100644 --- a/apps/v4/public/r/styles/base-lyra/alert.json +++ b/apps/v4/public/r/styles/base-lyra/alert.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/alert.tsx", - "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nconst alertVariants = cva(\"grid gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\", {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive: \"text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n", + "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst alertVariants = cva(\"grid gap-0.5 rounded-none border px-2.5 py-2 text-left text-xs has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\", {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive: \"text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/aspect-ratio-demo.json b/apps/v4/public/r/styles/base-lyra/aspect-ratio-demo.json new file mode 100644 index 0000000000..188068f069 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/aspect-ratio-demo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "aspect-ratio-demo", + "title": "Aspect Ratio Demo", + "registryDependencies": [ + "aspect-ratio" + ], + "files": [ + { + "path": "registry/base-lyra/demo/aspect-ratio-demo.tsx", + "content": "import Image from \"next/image\"\n\nimport { AspectRatio } from \"@/registry/base-lyra/ui/aspect-ratio\"\n\nexport default function AspectRatioDemo() {\n return (\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/aspect-ratio-example.json b/apps/v4/public/r/styles/base-lyra/aspect-ratio-example.json index b258d205b0..444c8c3573 100644 --- a/apps/v4/public/r/styles/base-lyra/aspect-ratio-example.json +++ b/apps/v4/public/r/styles/base-lyra/aspect-ratio-example.json @@ -9,7 +9,7 @@ "files": [ { "path": "registry/base-lyra/examples/aspect-ratio-example.tsx", - "content": "import Image from \"next/image\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { AspectRatio } from \"@/registry/bases/base/ui/aspect-ratio\"\n\nexport default function AspectRatioExample() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction AspectRatio16x9() {\n return (\n \n \n \n \n \n )\n}\n\nfunction AspectRatio1x1() {\n return (\n \n \n \n \n \n )\n}\n\nfunction AspectRatio9x16() {\n return (\n \n \n \n \n \n )\n}\n\nfunction AspectRatio21x9() {\n return (\n \n \n \n \n \n )\n}\n", + "content": "import Image from \"next/image\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { AspectRatio } from \"@/registry/base-lyra/ui/aspect-ratio\"\n\nexport default function AspectRatioExample() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction AspectRatio16x9() {\n return (\n \n \n \n \n \n )\n}\n\nfunction AspectRatio1x1() {\n return (\n \n \n \n \n \n )\n}\n\nfunction AspectRatio9x16() {\n return (\n \n \n \n \n \n )\n}\n\nfunction AspectRatio21x9() {\n return (\n \n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/aspect-ratio.json b/apps/v4/public/r/styles/base-lyra/aspect-ratio.json index 2a470d4034..af630760ea 100644 --- a/apps/v4/public/r/styles/base-lyra/aspect-ratio.json +++ b/apps/v4/public/r/styles/base-lyra/aspect-ratio.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/aspect-ratio.tsx", - "content": "import { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction AspectRatio({\n ratio,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & { ratio: number }) {\n return (\n \n )\n}\n\nexport { AspectRatio }\n", + "content": "import { cn } from \"@/registry/base-lyra/lib/utils\"\n\nfunction AspectRatio({\n ratio,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & { ratio: number }) {\n return (\n \n )\n}\n\nexport { AspectRatio }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/avatar-demo.json b/apps/v4/public/r/styles/base-lyra/avatar-demo.json new file mode 100644 index 0000000000..f22bf2da00 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/avatar-demo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "avatar-demo", + "title": "Avatar Demo", + "registryDependencies": [ + "avatar" + ], + "files": [ + { + "path": "registry/base-lyra/demo/avatar-demo.tsx", + "content": "import {\n Avatar,\n AvatarFallback,\n AvatarImage,\n} from \"@/registry/base-lyra/ui/avatar\"\n\nexport default function AvatarDemo() {\n return (\n
\n \n \n CN\n \n \n \n ER\n \n
\n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n
\n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/avatar-example.json b/apps/v4/public/r/styles/base-lyra/avatar-example.json index 0ee1fdc80d..5652ddbbc7 100644 --- a/apps/v4/public/r/styles/base-lyra/avatar-example.json +++ b/apps/v4/public/r/styles/base-lyra/avatar-example.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/base-lyra/examples/avatar-example.tsx", - "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n Avatar,\n AvatarBadge,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"@/registry/bases/base/ui/empty\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AvatarExample() {\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction AvatarSizes() {\n return (\n \n
\n \n \n CN\n \n \n \n CN\n \n \n \n CN\n \n
\n
\n \n CN\n \n \n CN\n \n \n CN\n \n
\n
\n )\n}\n\nfunction AvatarWithBadge() {\n return (\n \n
\n \n \n JZ\n \n \n \n \n JZ\n \n \n \n \n JZ\n \n \n
\n
\n \n JZ\n \n \n \n JZ\n \n \n \n JZ\n \n \n
\n
\n )\n}\n\nfunction AvatarWithBadgeIcon() {\n return (\n \n
\n \n \n PP\n \n \n \n \n \n \n PP\n \n \n \n \n \n \n PP\n \n \n \n \n
\n
\n \n PP\n \n \n \n \n \n PP\n \n \n \n \n \n PP\n \n \n \n \n
\n
\n )\n}\n\nfunction AvatarGroupExample() {\n return (\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n )\n}\n\nfunction AvatarGroupWithCount() {\n return (\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n +3\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n +3\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n +3\n \n \n )\n}\n\nfunction AvatarGroupWithIconCount() {\n return (\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n \n )\n}\n\nfunction AvatarInEmpty() {\n return (\n \n \n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n \n No Team Members\n \n Invite your team to collaborate on this project.\n \n \n \n \n \n \n \n )\n}\n", + "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport {\n Avatar,\n AvatarBadge,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n} from \"@/registry/base-lyra/ui/avatar\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"@/registry/base-lyra/ui/empty\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function AvatarExample() {\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction AvatarSizes() {\n return (\n \n
\n \n \n CN\n \n \n \n CN\n \n \n \n CN\n \n
\n
\n \n CN\n \n \n CN\n \n \n CN\n \n
\n
\n )\n}\n\nfunction AvatarWithBadge() {\n return (\n \n
\n \n \n JZ\n \n \n \n \n JZ\n \n \n \n \n JZ\n \n \n
\n
\n \n JZ\n \n \n \n JZ\n \n \n \n JZ\n \n \n
\n
\n )\n}\n\nfunction AvatarWithBadgeIcon() {\n return (\n \n
\n \n \n PP\n \n \n \n \n \n \n PP\n \n \n \n \n \n \n PP\n \n \n \n \n
\n
\n \n PP\n \n \n \n \n \n PP\n \n \n \n \n \n PP\n \n \n \n \n
\n
\n )\n}\n\nfunction AvatarGroupExample() {\n return (\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n )\n}\n\nfunction AvatarGroupWithCount() {\n return (\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n +3\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n +3\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n +3\n \n \n )\n}\n\nfunction AvatarGroupWithIconCount() {\n return (\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n \n )\n}\n\nfunction AvatarInEmpty() {\n return (\n \n \n \n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n \n \n \n \n \n No Team Members\n \n Invite your team to collaborate on this project.\n \n \n \n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/avatar.json b/apps/v4/public/r/styles/base-lyra/avatar.json index cf8e6378c2..871f9ea6ba 100644 --- a/apps/v4/public/r/styles/base-lyra/avatar.json +++ b/apps/v4/public/r/styles/base-lyra/avatar.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/avatar.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n \n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n \n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n \n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n \n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n \n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: AvatarPrimitive.Fallback.Props) {\n return (\n \n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/badge-demo.json b/apps/v4/public/r/styles/base-lyra/badge-demo.json new file mode 100644 index 0000000000..53844ccf13 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/badge-demo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "badge-demo", + "title": "Badge Demo", + "registryDependencies": [ + "badge" + ], + "files": [ + { + "path": "registry/base-lyra/demo/badge-demo.tsx", + "content": "import { BadgeCheckIcon } from \"lucide-react\"\n\nimport { Badge } from \"@/registry/base-lyra/ui/badge\"\n\nexport default function BadgeDemo() {\n return (\n
\n
\n Badge\n Secondary\n Destructive\n Outline\n
\n
\n \n \n Verified\n \n \n 8\n \n \n 99\n \n \n 20+\n \n
\n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/badge-destructive.json b/apps/v4/public/r/styles/base-lyra/badge-destructive.json new file mode 100644 index 0000000000..281bd844f1 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/badge-destructive.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "badge-destructive", + "title": "Badge Destructive", + "registryDependencies": [ + "badge" + ], + "files": [ + { + "path": "registry/base-lyra/demo/badge-destructive.tsx", + "content": "import { Badge } from \"@/registry/base-lyra/ui/badge\"\n\nexport default function BadgeDestructive() {\n return Destructive\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/badge-example.json b/apps/v4/public/r/styles/base-lyra/badge-example.json index 9667dc1755..d0ab241264 100644 --- a/apps/v4/public/r/styles/base-lyra/badge-example.json +++ b/apps/v4/public/r/styles/base-lyra/badge-example.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/examples/badge-example.tsx", - "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Spinner } from \"@/registry/bases/base/ui/spinner\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function BadgeExample() {\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction BadgeVariants() {\n return (\n \n
\n Default\n Secondary\n Destructive\n Outline\n Ghost\n Link\n
\n
\n )\n}\n\nfunction BadgeWithIconLeft() {\n return (\n \n
\n \n \n Default\n \n \n \n Secondary\n \n \n \n Destructive\n \n \n \n Outline\n \n \n \n Ghost\n \n \n \n Link\n \n
\n
\n )\n}\n\nfunction BadgeWithIconRight() {\n return (\n \n
\n \n Default\n \n \n \n Secondary\n \n \n \n Destructive\n \n \n \n Outline\n \n \n \n Ghost\n \n \n \n Link\n \n \n
\n
\n )\n}\n\nfunction BadgeWithSpinner() {\n return (\n \n
\n \n \n Default\n \n \n \n Secondary\n \n \n \n Destructive\n \n \n \n Outline\n \n \n \n Ghost\n \n \n \n Link\n \n
\n
\n )\n}\n\nfunction BadgeAsLink() {\n return (\n \n
\n \n Link{\" \"}\n \n \n }\n />\n \n Link{\" \"}\n \n \n }\n />\n \n Link{\" \"}\n \n \n }\n />\n \n Link{\" \"}\n \n \n }\n />\n
\n
\n )\n}\n\nfunction BadgeLongText() {\n return (\n \n
\n \n A badge with a lot of text to see how it wraps\n \n
\n
\n )\n}\n\nfunction BadgeCustomColors() {\n return (\n \n
\n \n Blue\n \n \n Green\n \n \n Sky\n \n \n Purple\n \n \n Blue\n \n \n Green\n \n \n Sky\n \n \n Purple\n \n \n Red\n \n
\n
\n )\n}\n", + "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Badge } from \"@/registry/base-lyra/ui/badge\"\nimport { Spinner } from \"@/registry/base-lyra/ui/spinner\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function BadgeExample() {\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction BadgeVariants() {\n return (\n \n
\n Default\n Secondary\n Destructive\n Outline\n Ghost\n Link\n
\n
\n )\n}\n\nfunction BadgeWithIconLeft() {\n return (\n \n
\n \n \n Default\n \n \n \n Secondary\n \n \n \n Destructive\n \n \n \n Outline\n \n \n \n Ghost\n \n \n \n Link\n \n
\n
\n )\n}\n\nfunction BadgeWithIconRight() {\n return (\n \n
\n \n Default\n \n \n \n Secondary\n \n \n \n Destructive\n \n \n \n Outline\n \n \n \n Ghost\n \n \n \n Link\n \n \n
\n
\n )\n}\n\nfunction BadgeWithSpinner() {\n return (\n \n
\n \n \n Default\n \n \n \n Secondary\n \n \n \n Destructive\n \n \n \n Outline\n \n \n \n Ghost\n \n \n \n Link\n \n
\n
\n )\n}\n\nfunction BadgeAsLink() {\n return (\n \n
\n \n Link{\" \"}\n \n \n }\n />\n \n Link{\" \"}\n \n \n }\n />\n \n Link{\" \"}\n \n \n }\n />\n \n Link{\" \"}\n \n \n }\n />\n
\n
\n )\n}\n\nfunction BadgeLongText() {\n return (\n \n
\n \n A badge with a lot of text to see how it wraps\n \n
\n
\n )\n}\n\nfunction BadgeCustomColors() {\n return (\n \n
\n \n Blue\n \n \n Green\n \n \n Sky\n \n \n Purple\n \n \n Blue\n \n \n Green\n \n \n Sky\n \n \n Purple\n \n \n Red\n \n
\n
\n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/badge-outline.json b/apps/v4/public/r/styles/base-lyra/badge-outline.json new file mode 100644 index 0000000000..f6ef43734e --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/badge-outline.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "badge-outline", + "title": "Badge Outline", + "registryDependencies": [ + "badge" + ], + "files": [ + { + "path": "registry/base-lyra/demo/badge-outline.tsx", + "content": "import { Badge } from \"@/registry/base-lyra/ui/badge\"\n\nexport default function BadgeOutline() {\n return Outline\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/badge-secondary.json b/apps/v4/public/r/styles/base-lyra/badge-secondary.json new file mode 100644 index 0000000000..9be71d6f43 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/badge-secondary.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "badge-secondary", + "title": "Badge Secondary", + "registryDependencies": [ + "badge" + ], + "files": [ + { + "path": "registry/base-lyra/demo/badge-secondary.tsx", + "content": "import { Badge } from \"@/registry/base-lyra/ui/badge\"\n\nexport default function BadgeSecondary() {\n return Secondary\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/badge.json b/apps/v4/public/r/styles/base-lyra/badge.json index 13c12502b8..b1af5c6a47 100644 --- a/apps/v4/public/r/styles/base-lyra/badge.json +++ b/apps/v4/public/r/styles/base-lyra/badge.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/badge.tsx", - "content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-none border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary: \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive: \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline: \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost: \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n", + "content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-none border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary: \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive: \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline: \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost: \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb-demo.json b/apps/v4/public/r/styles/base-lyra/breadcrumb-demo.json new file mode 100644 index 0000000000..ce2c93d24f --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb-demo.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "breadcrumb-demo", + "title": "Breadcrumb Demo", + "registryDependencies": [ + "breadcrumb", + "dropdown-menu" + ], + "files": [ + { + "path": "registry/base-lyra/demo/breadcrumb-demo.tsx", + "content": "import Link from \"next/link\"\n\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/base-lyra/ui/breadcrumb\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\n\nexport function BreadcrumbDemo() {\n return (\n \n \n \n }>Home\n \n \n \n \n \n \n Toggle menu\n \n \n Documentation\n Themes\n GitHub\n \n \n \n \n \n }>\n Components\n \n \n \n \n Breadcrumb\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb-dropdown.json b/apps/v4/public/r/styles/base-lyra/breadcrumb-dropdown.json new file mode 100644 index 0000000000..997064b456 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb-dropdown.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "breadcrumb-dropdown", + "title": "Breadcrumb Dropdown", + "registryDependencies": [ + "breadcrumb", + "dropdown-menu" + ], + "files": [ + { + "path": "registry/base-lyra/demo/breadcrumb-dropdown.tsx", + "content": "import Link from \"next/link\"\nimport { ChevronDownIcon, SlashIcon } from \"lucide-react\"\n\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/base-lyra/ui/breadcrumb\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\n\nexport function BreadcrumbDropdown() {\n return (\n \n \n \n }>Home\n \n \n \n \n \n \n \n Components\n \n \n \n Documentation\n Themes\n GitHub\n \n \n \n \n \n \n \n Breadcrumb\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb-ellipsis.json b/apps/v4/public/r/styles/base-lyra/breadcrumb-ellipsis.json new file mode 100644 index 0000000000..5886894467 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb-ellipsis.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "breadcrumb-ellipsis", + "title": "Breadcrumb Ellipsis", + "registryDependencies": [ + "breadcrumb" + ], + "files": [ + { + "path": "registry/base-lyra/demo/breadcrumb-ellipsis.tsx", + "content": "import Link from \"next/link\"\n\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/base-lyra/ui/breadcrumb\"\n\nexport function BreadcrumbEllipsisDemo() {\n return (\n \n \n \n }>Home\n \n \n \n \n \n \n \n }>\n Components\n \n \n \n \n Breadcrumb\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb-example.json b/apps/v4/public/r/styles/base-lyra/breadcrumb-example.json index a35d5e5395..00b7c8c490 100644 --- a/apps/v4/public/r/styles/base-lyra/breadcrumb-example.json +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb-example.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/examples/breadcrumb-example.tsx", - "content": "import Link from \"next/link\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/bases/base/ui/breadcrumb\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\n\nexport default function BreadcrumbExample() {\n return (\n \n \n \n \n \n )\n}\n\nfunction BreadcrumbBasic() {\n return (\n \n \n \n \n Home\n \n \n \n Components\n \n \n \n Breadcrumb\n \n \n \n \n )\n}\n\nfunction BreadcrumbWithDropdown() {\n return (\n \n \n \n \n Home\n \n \n \n \n }\n >\n \n Toggle menu\n \n \n Documentation\n Themes\n GitHub\n \n \n \n \n \n Components\n \n \n \n Breadcrumb\n \n \n \n \n )\n}\n\nfunction BreadcrumbWithLink() {\n return (\n \n \n \n \n Home} />\n \n \n \n \n \n \n \n Components} />\n \n \n \n Breadcrumb\n \n \n \n \n )\n}\n", + "content": "import Link from \"next/link\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/base-lyra/ui/breadcrumb\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\n\nexport default function BreadcrumbExample() {\n return (\n \n \n \n \n \n )\n}\n\nfunction BreadcrumbBasic() {\n return (\n \n \n \n \n Home\n \n \n \n Components\n \n \n \n Breadcrumb\n \n \n \n \n )\n}\n\nfunction BreadcrumbWithDropdown() {\n return (\n \n \n \n \n Home\n \n \n \n \n }\n >\n \n Toggle menu\n \n \n Documentation\n Themes\n GitHub\n \n \n \n \n \n Components\n \n \n \n Breadcrumb\n \n \n \n \n )\n}\n\nfunction BreadcrumbWithLink() {\n return (\n \n \n \n \n Home} />\n \n \n \n \n \n \n \n Components} />\n \n \n \n Breadcrumb\n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb-link.json b/apps/v4/public/r/styles/base-lyra/breadcrumb-link.json new file mode 100644 index 0000000000..312f0f878b --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb-link.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "breadcrumb-link", + "title": "Breadcrumb Link", + "registryDependencies": [ + "breadcrumb" + ], + "files": [ + { + "path": "registry/base-lyra/demo/breadcrumb-link.tsx", + "content": "import Link from \"next/link\"\n\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/base-lyra/ui/breadcrumb\"\n\nexport function BreadcrumbLinkDemo() {\n return (\n \n \n \n }>Home\n \n \n \n }>\n Components\n \n \n \n \n Breadcrumb\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb-responsive.json b/apps/v4/public/r/styles/base-lyra/breadcrumb-responsive.json new file mode 100644 index 0000000000..b421002499 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb-responsive.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "breadcrumb-responsive", + "title": "Breadcrumb Responsive", + "registryDependencies": [ + "breadcrumb", + "button", + "drawer", + "dropdown-menu" + ], + "files": [ + { + "path": "registry/base-lyra/demo/breadcrumb-responsive.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Link from \"next/link\"\n\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/base-lyra/ui/breadcrumb\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"@/registry/base-lyra/ui/drawer\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\n\nconst items = [\n { href: \"#\", label: \"Home\" },\n { href: \"#\", label: \"Documentation\" },\n { href: \"#\", label: \"Building Your Application\" },\n { href: \"#\", label: \"Data Fetching\" },\n { label: \"Caching and Revalidating\" },\n]\n\nconst ITEMS_TO_DISPLAY = 3\n\nexport function BreadcrumbResponsive() {\n const [open, setOpen] = React.useState(false)\n const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n\n return (\n \n \n \n }>\n {items[0].label}\n \n \n \n {items.length > ITEMS_TO_DISPLAY ? (\n <>\n \n {isDesktop ? (\n \n \n \n \n \n {items.slice(1, -2).map((item, index) => (\n \n \n {item.label}\n \n \n ))}\n \n \n ) : (\n \n \n \n \n \n \n Navigate to\n \n Select a page to navigate to.\n \n \n
\n {items.slice(1, -2).map((item, index) => (\n \n {item.label}\n \n ))}\n
\n \n \n \n \n \n
\n
\n )}\n
\n \n \n ) : null}\n {items.slice(-ITEMS_TO_DISPLAY + 1).map((item, index) => (\n \n {item.href ? (\n <>\n }\n className=\"max-w-20 truncate md:max-w-none\"\n >\n {item.label}\n \n \n \n ) : (\n \n {item.label}\n \n )}\n \n ))}\n
\n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb-separator.json b/apps/v4/public/r/styles/base-lyra/breadcrumb-separator.json new file mode 100644 index 0000000000..0037f2bb82 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb-separator.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "breadcrumb-separator", + "title": "Breadcrumb Separator", + "registryDependencies": [ + "breadcrumb" + ], + "files": [ + { + "path": "registry/base-lyra/demo/breadcrumb-separator.tsx", + "content": "import Link from \"next/link\"\nimport { SlashIcon } from \"lucide-react\"\n\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/registry/base-lyra/ui/breadcrumb\"\n\nexport function BreadcrumbSeparatorDemo() {\n return (\n \n \n \n }>Home\n \n \n \n \n \n }>\n Components\n \n \n \n \n \n \n Breadcrumb\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/breadcrumb.json b/apps/v4/public/r/styles/base-lyra/breadcrumb.json index d903abfeba..859dafa182 100644 --- a/apps/v4/public/r/styles/base-lyra/breadcrumb.json +++ b/apps/v4/public/r/styles/base-lyra/breadcrumb.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/breadcrumb.tsx", - "content": "import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"hover:text-foreground transition-colors\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? (\n \n )}\n \n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n svg]:size-4 flex items-center justify-center\",\n className\n )}\n {...props}\n >\n \n More\n \n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n", + "content": "import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"hover:text-foreground transition-colors\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n \n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? (\n \n )}\n \n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n svg]:size-4 flex items-center justify-center\",\n className\n )}\n {...props}\n >\n \n More\n \n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/button-as-child.json b/apps/v4/public/r/styles/base-lyra/button-as-child.json new file mode 100644 index 0000000000..b4d8746f5b --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-as-child.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-as-child", + "title": "Button As Child", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-as-child.tsx", + "content": "import Link from \"next/link\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonAsChild() {\n return (\n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-default.json b/apps/v4/public/r/styles/base-lyra/button-default.json new file mode 100644 index 0000000000..9f1643174b --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-default.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-default", + "title": "Button Default", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-default.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonDefault() {\n return \n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-demo.json b/apps/v4/public/r/styles/base-lyra/button-demo.json new file mode 100644 index 0000000000..918a1d6e4e --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-demo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-demo", + "title": "Button Demo", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-demo.tsx", + "content": "import { ArrowUpIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonDemo() {\n return (\n
\n \n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-destructive.json b/apps/v4/public/r/styles/base-lyra/button-destructive.json new file mode 100644 index 0000000000..2f1e067fb3 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-destructive.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-destructive", + "title": "Button Destructive", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-destructive.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonDestructive() {\n return \n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-example.json b/apps/v4/public/r/styles/base-lyra/button-example.json index 50e7773318..e77e1ce69a 100644 --- a/apps/v4/public/r/styles/base-lyra/button-example.json +++ b/apps/v4/public/r/styles/base-lyra/button-example.json @@ -9,7 +9,7 @@ "files": [ { "path": "registry/base-lyra/examples/button-example.tsx", - "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ButtonExample() {\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonVariantsAndSizes() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonIconRight() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonIconLeft() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonIconOnly() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonExamples() {\n return (\n \n
\n
\n \n \n
\n
\n \n \n
\n \n
\n
\n )\n}\n\nfunction ButtonInvalidStates() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n", + "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ButtonExample() {\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonVariantsAndSizes() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonIconRight() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonIconLeft() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonIconOnly() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonExamples() {\n return (\n \n
\n
\n \n \n
\n
\n \n \n
\n \n
\n
\n )\n}\n\nfunction ButtonInvalidStates() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/button-ghost.json b/apps/v4/public/r/styles/base-lyra/button-ghost.json new file mode 100644 index 0000000000..1ba0d66fbf --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-ghost.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-ghost", + "title": "Button Ghost", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-ghost.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonGhost() {\n return \n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-demo.json b/apps/v4/public/r/styles/base-lyra/button-group-demo.json new file mode 100644 index 0000000000..23f0d016db --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-demo.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-demo", + "title": "Button Group Demo", + "registryDependencies": [ + "button", + "button-group", + "dropdown-menu" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-demo.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n ArchiveIcon,\n ArrowLeftIcon,\n CalendarPlusIcon,\n ClockIcon,\n ListFilterIcon,\n MailCheckIcon,\n MoreHorizontalIcon,\n TagIcon,\n Trash2Icon,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\n\nexport default function ButtonGroupDemo() {\n const [label, setLabel] = React.useState(\"personal\")\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Mark as Read\n \n \n \n Archive\n \n \n \n \n \n \n Snooze\n \n \n \n Add to Calendar\n \n \n \n Add to List\n \n \n \n \n Label As...\n \n \n \n \n Personal\n \n \n Work\n \n \n Other\n \n \n \n \n \n \n \n \n \n Trash\n \n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-dropdown.json b/apps/v4/public/r/styles/base-lyra/button-group-dropdown.json new file mode 100644 index 0000000000..70d8799e0d --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-dropdown.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-dropdown", + "title": "Button Group Dropdown", + "registryDependencies": [ + "button", + "button-group", + "dropdown-menu" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-dropdown.tsx", + "content": "\"use client\"\n\nimport {\n AlertTriangleIcon,\n CheckIcon,\n ChevronDownIcon,\n CopyIcon,\n ShareIcon,\n TrashIcon,\n UserRoundXIcon,\n VolumeOffIcon,\n} from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\n\nexport default function ButtonGroupDropdown() {\n return (\n \n \n \n \n \n \n \n \n \n \n Mute Conversation\n \n \n \n Mark as Read\n \n \n \n Report Conversation\n \n \n \n Block User\n \n \n \n Share Conversation\n \n \n \n Copy Conversation\n \n \n \n \n \n \n Delete Conversation\n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-example.json b/apps/v4/public/r/styles/base-lyra/button-group-example.json index 2e4ad5e00a..9257f35dd8 100644 --- a/apps/v4/public/r/styles/base-lyra/button-group-example.json +++ b/apps/v4/public/r/styles/base-lyra/button-group-example.json @@ -18,7 +18,7 @@ "files": [ { "path": "registry/base-lyra/examples/button-group-example.tsx", - "content": "\"use client\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n ButtonGroup,\n ButtonGroupText,\n} from \"@/registry/bases/base/ui/button-group\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { Label } from \"@/registry/bases/base/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ButtonGroupExample() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupBasic() {\n return (\n \n
\n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithInput() {\n return (\n \n
\n \n \n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithText() {\n return (\n \n
\n \n Text\n \n \n \n }>\n GPU Size\n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithDropdown() {\n return (\n \n
\n \n \n \n }\n >\n \n \n \n Disable\n \n Uninstall\n \n \n \n \n \n \n \n }\n >\n \n \n \n \n \n \n Mute Conversation\n \n \n \n Mark as Read\n \n \n \n Report Conversation\n \n \n \n Block User\n \n \n \n Share Conversation\n \n \n \n Copy Conversation\n \n \n \n \n \n \n Delete Conversation\n \n \n \n \n \n
\n
\n )\n}\n\nconst currencyItems = [\n { label: \"$\", value: \"$\" },\n { label: \"€\", value: \"€\" },\n { label: \"£\", value: \"£\" },\n]\n\nfunction ButtonGroupWithSelect() {\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupWithIcons() {\n return (\n \n
\n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithInputGroup() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithFields() {\n return (\n \n \n \n \n \n \n \n \n W\n \n \n px\n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupWithLike() {\n return (\n \n \n \n }\n nativeButton={false}\n >\n 1.2K\n \n \n \n )\n}\n\nconst durationItems = [\n { label: \"Hours\", value: \"hours\" },\n { label: \"Days\", value: \"days\" },\n { label: \"Weeks\", value: \"weeks\" },\n]\n\nfunction ButtonGroupWithSelectAndInput() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupNested() {\n return (\n \n \n \n \n \n \n \n \n \n }>\n \n \n Voice Mode\n \n \n \n \n \n )\n}\n\nfunction ButtonGroupPagination() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupPaginationSplit() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupNavigation() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupTextAlignment() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupVertical() {\n return (\n \n
\n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupVerticalNested() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n", + "content": "\"use client\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n ButtonGroup,\n ButtonGroupText,\n} from \"@/registry/base-lyra/ui/button-group\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\nimport { Field, FieldGroup } from \"@/registry/base-lyra/ui/field\"\nimport { Input } from \"@/registry/base-lyra/ui/input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@/registry/base-lyra/ui/input-group\"\nimport { Label } from \"@/registry/base-lyra/ui/label\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/base-lyra/ui/select\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/registry/base-lyra/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ButtonGroupExample() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupBasic() {\n return (\n \n
\n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithInput() {\n return (\n \n
\n \n \n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithText() {\n return (\n \n
\n \n Text\n \n \n \n }>\n GPU Size\n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithDropdown() {\n return (\n \n
\n \n \n \n }\n >\n \n \n \n Disable\n \n Uninstall\n \n \n \n \n \n \n \n }\n >\n \n \n \n \n \n \n Mute Conversation\n \n \n \n Mark as Read\n \n \n \n Report Conversation\n \n \n \n Block User\n \n \n \n Share Conversation\n \n \n \n Copy Conversation\n \n \n \n \n \n \n Delete Conversation\n \n \n \n \n \n
\n
\n )\n}\n\nconst currencyItems = [\n { label: \"$\", value: \"$\" },\n { label: \"€\", value: \"€\" },\n { label: \"£\", value: \"£\" },\n]\n\nfunction ButtonGroupWithSelect() {\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupWithIcons() {\n return (\n \n
\n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithInputGroup() {\n return (\n \n
\n \n \n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupWithFields() {\n return (\n \n \n \n \n \n \n \n \n W\n \n \n px\n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupWithLike() {\n return (\n \n \n \n }\n nativeButton={false}\n >\n 1.2K\n \n \n \n )\n}\n\nconst durationItems = [\n { label: \"Hours\", value: \"hours\" },\n { label: \"Days\", value: \"days\" },\n { label: \"Weeks\", value: \"weeks\" },\n]\n\nfunction ButtonGroupWithSelectAndInput() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupNested() {\n return (\n \n \n \n \n \n \n \n \n \n }>\n \n \n Voice Mode\n \n \n \n \n \n )\n}\n\nfunction ButtonGroupPagination() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupPaginationSplit() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupNavigation() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupTextAlignment() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction ButtonGroupVertical() {\n return (\n \n
\n \n \n \n \n
\n
\n )\n}\n\nfunction ButtonGroupVerticalNested() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/button-group-input-group.json b/apps/v4/public/r/styles/base-lyra/button-group-input-group.json new file mode 100644 index 0000000000..c195c45e8d --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-input-group.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-input-group", + "title": "Button Group Input Group", + "registryDependencies": [ + "button", + "button-group", + "input-group", + "tooltip" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-input-group.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { AudioLinesIcon, PlusIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"@/registry/base-lyra/ui/input-group\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/registry/base-lyra/ui/tooltip\"\n\nexport default function ButtonGroupInputGroup() {\n const [voiceEnabled, setVoiceEnabled] = React.useState(false)\n\n return (\n \n \n \n \n \n \n \n \n \n \n setVoiceEnabled(!voiceEnabled)}\n size=\"icon-xs\"\n data-active={voiceEnabled}\n className=\"data-[active=true]:bg-orange-100 data-[active=true]:text-orange-700 dark:data-[active=true]:bg-orange-800 dark:data-[active=true]:text-orange-100\"\n aria-pressed={voiceEnabled}\n >\n \n \n \n Voice Mode\n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-input.json b/apps/v4/public/r/styles/base-lyra/button-group-input.json new file mode 100644 index 0000000000..d6371de5cf --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-input.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-input", + "title": "Button Group Input", + "registryDependencies": [ + "button", + "button-group", + "input" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-input.tsx", + "content": "import { SearchIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\nimport { Input } from \"@/registry/base-lyra/ui/input\"\n\nexport default function ButtonGroupInput() {\n return (\n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-nested.json b/apps/v4/public/r/styles/base-lyra/button-group-nested.json new file mode 100644 index 0000000000..0aad399280 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-nested.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-nested", + "title": "Button Group Nested", + "registryDependencies": [ + "button", + "button-group" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-nested.tsx", + "content": "\"use client\"\n\nimport { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\n\nexport default function ButtonGroupNested() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-orientation.json b/apps/v4/public/r/styles/base-lyra/button-group-orientation.json new file mode 100644 index 0000000000..e3611c33d6 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-orientation.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-orientation", + "title": "Button Group Orientation", + "registryDependencies": [ + "button", + "button-group" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-orientation.tsx", + "content": "import { MinusIcon, PlusIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\n\nexport default function ButtonGroupOrientation() {\n return (\n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-popover.json b/apps/v4/public/r/styles/base-lyra/button-group-popover.json new file mode 100644 index 0000000000..70d88824e1 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-popover.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-popover", + "title": "Button Group Popover", + "registryDependencies": [ + "button", + "button-group", + "popover", + "separator", + "textarea" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-popover.tsx", + "content": "import { BotIcon, ChevronDownIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/base-lyra/ui/popover\"\nimport { Separator } from \"@/registry/base-lyra/ui/separator\"\nimport { Textarea } from \"@/registry/base-lyra/ui/textarea\"\n\nexport default function ButtonGroupPopover() {\n return (\n \n \n \n \n \n \n \n
\n
Agent Tasks
\n
\n \n
\n \n

Start a new task with Copilot

\n

\n Describe your task in natural language. Copilot will work in the\n background and open a pull request for your review.\n

\n
\n
\n
\n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-select.json b/apps/v4/public/r/styles/base-lyra/button-group-select.json new file mode 100644 index 0000000000..d8b91c54fc --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-select.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-select", + "title": "Button Group Select", + "registryDependencies": [ + "button", + "button-group", + "input", + "select" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-select.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ArrowRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\nimport { Input } from \"@/registry/base-lyra/ui/input\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n} from \"@/registry/base-lyra/ui/select\"\n\nconst CURRENCIES = [\n {\n value: \"$\",\n label: \"US Dollar\",\n },\n {\n value: \"€\",\n label: \"Euro\",\n },\n {\n value: \"£\",\n label: \"British Pound\",\n },\n]\n\nexport default function ButtonGroupSelect() {\n const [currency, setCurrency] = React.useState(\"$\")\n\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-separator.json b/apps/v4/public/r/styles/base-lyra/button-group-separator.json new file mode 100644 index 0000000000..5f3141eea3 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-separator.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-separator", + "title": "Button Group Separator", + "registryDependencies": [ + "button", + "button-group" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-separator.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n} from \"@/registry/base-lyra/ui/button-group\"\n\nexport default function ButtonGroupSeparatorDemo() {\n return (\n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-size.json b/apps/v4/public/r/styles/base-lyra/button-group-size.json new file mode 100644 index 0000000000..936a2ed36e --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-size.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-size", + "title": "Button Group Size", + "registryDependencies": [ + "button", + "button-group" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-size.tsx", + "content": "import { PlusIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { ButtonGroup } from \"@/registry/base-lyra/ui/button-group\"\n\nexport default function ButtonGroupSize() {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group-split.json b/apps/v4/public/r/styles/base-lyra/button-group-split.json new file mode 100644 index 0000000000..0c950a31bc --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-group-split.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-group-split", + "title": "Button Group Split", + "registryDependencies": [ + "button", + "button-group" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-group-split.tsx", + "content": "import { IconPlus } from \"@tabler/icons-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n} from \"@/registry/base-lyra/ui/button-group\"\n\nexport default function ButtonGroupSplit() {\n return (\n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-group.json b/apps/v4/public/r/styles/base-lyra/button-group.json index a7f0751143..d27b4b0c5b 100644 --- a/apps/v4/public/r/styles/base-lyra/button-group.json +++ b/apps/v4/public/r/styles/base-lyra/button-group.json @@ -7,7 +7,7 @@ "files": [ { "path": "registry/base-lyra/ui/button-group.tsx", - "content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Separator } from \"@/registry/bases/base/ui/separator\"\n\nconst buttonGroupVariants = cva(\n \"rounded-none has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-none flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0 [&>[data-slot]]:rounded-r-none\",\n vertical:\n \"flex-col [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0 [&>[data-slot]]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"bg-muted gap-2 rounded-none border px-2.5 text-xs font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n })\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n", + "content": "import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Separator } from \"@/registry/base-lyra/ui/separator\"\n\nconst buttonGroupVariants = cva(\n \"rounded-none has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-none flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0 [&>[data-slot]]:rounded-r-none\",\n vertical:\n \"flex-col [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0 [&>[data-slot]]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"bg-muted gap-2 rounded-none border px-2.5 text-xs font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n })\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/button-icon.json b/apps/v4/public/r/styles/base-lyra/button-icon.json new file mode 100644 index 0000000000..a0c74e45de --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-icon.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-icon", + "title": "Button Icon", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-icon.tsx", + "content": "import { CircleFadingArrowUpIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonIcon() {\n return (\n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-link.json b/apps/v4/public/r/styles/base-lyra/button-link.json new file mode 100644 index 0000000000..03ba6f3093 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-link.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-link", + "title": "Button Link", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-link.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonLink() {\n return \n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-loading.json b/apps/v4/public/r/styles/base-lyra/button-loading.json new file mode 100644 index 0000000000..a681891779 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-loading.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-loading", + "title": "Button Loading", + "registryDependencies": [ + "button", + "spinner" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-loading.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\nimport { Spinner } from \"@/registry/base-lyra/ui/spinner\"\n\nexport default function ButtonLoading() {\n return (\n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-outline.json b/apps/v4/public/r/styles/base-lyra/button-outline.json new file mode 100644 index 0000000000..60eee12783 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-outline.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-outline", + "title": "Button Outline", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-outline.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonOutline() {\n return \n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-rounded.json b/apps/v4/public/r/styles/base-lyra/button-rounded.json new file mode 100644 index 0000000000..4aafcfe6a6 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-rounded.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-rounded", + "title": "Button Rounded", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-rounded.tsx", + "content": "import { ArrowUpIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonRounded() {\n return (\n
\n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-secondary.json b/apps/v4/public/r/styles/base-lyra/button-secondary.json new file mode 100644 index 0000000000..be23dc747d --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-secondary.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-secondary", + "title": "Button Secondary", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-secondary.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonSecondary() {\n return \n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-size.json b/apps/v4/public/r/styles/base-lyra/button-size.json new file mode 100644 index 0000000000..e8a6bdf51d --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-size.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-size", + "title": "Button Size", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-size.tsx", + "content": "import { ArrowUpRightIcon } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonSize() {\n return (\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button-with-icon.json b/apps/v4/public/r/styles/base-lyra/button-with-icon.json new file mode 100644 index 0000000000..4a6e388e19 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/button-with-icon.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "button-with-icon", + "title": "Button With Icon", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/button-with-icon.tsx", + "content": "import { IconGitBranch } from \"@tabler/icons-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\n\nexport default function ButtonWithIcon() {\n return (\n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/button.json b/apps/v4/public/r/styles/base-lyra/button.json index 960ea0aaf0..400acc6784 100644 --- a/apps/v4/public/r/styles/base-lyra/button.json +++ b/apps/v4/public/r/styles/base-lyra/button.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/button.tsx", - "content": "\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-none border border-transparent bg-clip-padding text-xs font-medium focus-visible:ring-1 aria-invalid:ring-1 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline: \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-none px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\": \"size-6 rounded-none [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-7 rounded-none\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps) {\n return (\n \n )\n}\n\nexport { Button, buttonVariants }\n", + "content": "\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-none border border-transparent bg-clip-padding text-xs font-medium focus-visible:ring-1 aria-invalid:ring-1 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline: \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-none px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-none px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\": \"size-6 rounded-none [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-7 rounded-none\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps) {\n return (\n \n )\n}\n\nexport { Button, buttonVariants }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/calendar-demo.json b/apps/v4/public/r/styles/base-lyra/calendar-demo.json new file mode 100644 index 0000000000..8f89099cc4 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/calendar-demo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "calendar-demo", + "title": "Calendar Demo", + "registryDependencies": [ + "calendar" + ], + "files": [ + { + "path": "registry/base-lyra/demo/calendar-demo.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Calendar } from \"@/registry/base-lyra/ui/calendar\"\n\nexport default function CalendarDemo() {\n const [date, setDate] = React.useState(new Date())\n\n return (\n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/calendar-example.json b/apps/v4/public/r/styles/base-lyra/calendar-example.json index ccab7c5e65..ae9c9ee23d 100644 --- a/apps/v4/public/r/styles/base-lyra/calendar-example.json +++ b/apps/v4/public/r/styles/base-lyra/calendar-example.json @@ -15,7 +15,7 @@ "files": [ { "path": "registry/base-lyra/examples/calendar-example.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays, format } from \"date-fns\"\nimport { type DateRange } from \"react-day-picker\"\nimport { es } from \"react-day-picker/locale\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Calendar, CalendarDayButton } from \"@/registry/bases/base/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/bases/base/ui/popover\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CalendarExample() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarSingle() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n )\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarMultiple() {\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarRange() {\n const [dateRange, setDateRange] = React.useState({\n from: new Date(new Date().getFullYear(), 0, 12),\n to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\n })\n\n return (\n \n \n \n \n date > new Date() || date < new Date(\"1900-01-01\")\n }\n />\n \n \n \n )\n}\n\nfunction CalendarRangeMultipleMonths() {\n const [range, setRange] = React.useState({\n from: new Date(new Date().getFullYear(), 3, 12),\n to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\n })\n\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarBookedDates() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), 1, 3)\n )\n const bookedDates = Array.from(\n { length: 15 },\n (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\n )\n\n return (\n \n \n \n button]:line-through opacity-100\",\n }}\n />\n \n \n \n )\n}\n\nfunction CalendarWithTime() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n )\n\n return (\n \n \n \n \n \n \n \n \n Start Time\n \n \n \n \n \n \n \n \n End Time\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarCustomDays() {\n const [range, setRange] = React.useState({\n from: new Date(new Date().getFullYear(), 11, 8),\n to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\n })\n\n return (\n \n \n \n {\n return date.toLocaleString(\"default\", { month: \"long\" })\n },\n }}\n components={{\n DayButton: ({ children, modifiers, day, ...props }) => {\n const isWeekend =\n day.date.getDay() === 0 || day.date.getDay() === 6\n\n return (\n \n {children}\n {!modifiers.outside && (\n {isWeekend ? \"$120\" : \"$100\"}\n )}\n \n )\n },\n }}\n />\n \n \n \n )\n}\n\nfunction CalendarWithPresets() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), 1, 12)\n )\n const [currentMonth, setCurrentMonth] = React.useState(\n new Date(new Date().getFullYear(), new Date().getMonth(), 1)\n )\n\n return (\n \n \n \n \n \n \n {[\n { label: \"Today\", value: 0 },\n { label: \"Tomorrow\", value: 1 },\n { label: \"In 3 days\", value: 3 },\n { label: \"In a week\", value: 7 },\n { label: \"In 2 weeks\", value: 14 },\n ].map((preset) => (\n {\n const newDate = addDays(new Date(), preset.value)\n setDate(newDate)\n setCurrentMonth(\n new Date(newDate.getFullYear(), newDate.getMonth(), 1)\n )\n }}\n >\n {preset.label}\n \n ))}\n \n \n \n )\n}\n\nfunction DatePickerSimple() {\n const [date, setDate] = React.useState()\n\n return (\n \n \n Date\n \n \n }\n >\n \n {date ? format(date, \"PPP\") : Pick a date}\n \n \n \n \n \n \n \n )\n}\n\nfunction DatePickerWithRange() {\n const [date, setDate] = React.useState({\n from: new Date(new Date().getFullYear(), 0, 20),\n to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\n })\n\n return (\n \n \n Date Picker Range\n \n \n }\n >\n \n {date?.from ? (\n date.to ? (\n <>\n {format(date.from, \"LLL dd, y\")} -{\" \"}\n {format(date.to, \"LLL dd, y\")}\n \n ) : (\n format(date.from, \"LLL dd, y\")\n )\n ) : (\n Pick a date\n )}\n \n \n \n \n \n \n \n )\n}\n\nfunction DataPickerWithDropdowns() {\n const [date, setDate] = React.useState()\n const [open, setOpen] = React.useState(false)\n\n return (\n \n \n \n \n Date\n \n \n }\n >\n \n {date ? format(date, \"PPP\") : Pick a date}\n \n \n \n
\n setOpen(false)}\n >\n Done\n \n
\n
\n
\n
\n
\n )\n}\n\nfunction CalendarWeekNumbers() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), 1, 3)\n )\n\n return (\n \n \n \n \n \n \n \n )\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { addDays, format } from \"date-fns\"\nimport { type DateRange } from \"react-day-picker\"\nimport { es } from \"react-day-picker/locale\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { Calendar, CalendarDayButton } from \"@/registry/base-lyra/ui/calendar\"\nimport { Card, CardContent, CardFooter } from \"@/registry/base-lyra/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/base-lyra/ui/field\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@/registry/base-lyra/ui/input-group\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/base-lyra/ui/popover\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CalendarExample() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarSingle() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n )\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarMultiple() {\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarRange() {\n const [dateRange, setDateRange] = React.useState({\n from: new Date(new Date().getFullYear(), 0, 12),\n to: addDays(new Date(new Date().getFullYear(), 0, 12), 30),\n })\n\n return (\n \n \n \n \n date > new Date() || date < new Date(\"1900-01-01\")\n }\n />\n \n \n \n )\n}\n\nfunction CalendarRangeMultipleMonths() {\n const [range, setRange] = React.useState({\n from: new Date(new Date().getFullYear(), 3, 12),\n to: addDays(new Date(new Date().getFullYear(), 3, 12), 60),\n })\n\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarBookedDates() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), 1, 3)\n )\n const bookedDates = Array.from(\n { length: 15 },\n (_, i) => new Date(new Date().getFullYear(), 1, 12 + i)\n )\n\n return (\n \n \n \n button]:line-through opacity-100\",\n }}\n />\n \n \n \n )\n}\n\nfunction CalendarWithTime() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), new Date().getMonth(), 12)\n )\n\n return (\n \n \n \n \n \n \n \n \n Start Time\n \n \n \n \n \n \n \n \n End Time\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction CalendarCustomDays() {\n const [range, setRange] = React.useState({\n from: new Date(new Date().getFullYear(), 11, 8),\n to: addDays(new Date(new Date().getFullYear(), 11, 8), 10),\n })\n\n return (\n \n \n \n {\n return date.toLocaleString(\"default\", { month: \"long\" })\n },\n }}\n components={{\n DayButton: ({ children, modifiers, day, ...props }) => {\n const isWeekend =\n day.date.getDay() === 0 || day.date.getDay() === 6\n\n return (\n \n {children}\n {!modifiers.outside && (\n {isWeekend ? \"$120\" : \"$100\"}\n )}\n \n )\n },\n }}\n />\n \n \n \n )\n}\n\nfunction CalendarWithPresets() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), 1, 12)\n )\n const [currentMonth, setCurrentMonth] = React.useState(\n new Date(new Date().getFullYear(), new Date().getMonth(), 1)\n )\n\n return (\n \n \n \n \n \n \n {[\n { label: \"Today\", value: 0 },\n { label: \"Tomorrow\", value: 1 },\n { label: \"In 3 days\", value: 3 },\n { label: \"In a week\", value: 7 },\n { label: \"In 2 weeks\", value: 14 },\n ].map((preset) => (\n {\n const newDate = addDays(new Date(), preset.value)\n setDate(newDate)\n setCurrentMonth(\n new Date(newDate.getFullYear(), newDate.getMonth(), 1)\n )\n }}\n >\n {preset.label}\n \n ))}\n \n \n \n )\n}\n\nfunction DatePickerSimple() {\n const [date, setDate] = React.useState()\n\n return (\n \n \n Date\n \n \n }\n >\n \n {date ? format(date, \"PPP\") : Pick a date}\n \n \n \n \n \n \n \n )\n}\n\nfunction DatePickerWithRange() {\n const [date, setDate] = React.useState({\n from: new Date(new Date().getFullYear(), 0, 20),\n to: addDays(new Date(new Date().getFullYear(), 0, 20), 20),\n })\n\n return (\n \n \n Date Picker Range\n \n \n }\n >\n \n {date?.from ? (\n date.to ? (\n <>\n {format(date.from, \"LLL dd, y\")} -{\" \"}\n {format(date.to, \"LLL dd, y\")}\n \n ) : (\n format(date.from, \"LLL dd, y\")\n )\n ) : (\n Pick a date\n )}\n \n \n \n \n \n \n \n )\n}\n\nfunction DataPickerWithDropdowns() {\n const [date, setDate] = React.useState()\n const [open, setOpen] = React.useState(false)\n\n return (\n \n \n \n \n Date\n \n \n }\n >\n \n {date ? format(date, \"PPP\") : Pick a date}\n \n \n \n
\n setOpen(false)}\n >\n Done\n \n
\n
\n
\n
\n
\n )\n}\n\nfunction CalendarWeekNumbers() {\n const [date, setDate] = React.useState(\n new Date(new Date().getFullYear(), 1, 3)\n )\n\n return (\n \n \n \n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/calendar-hijri.json b/apps/v4/public/r/styles/base-lyra/calendar-hijri.json new file mode 100644 index 0000000000..01b0f80818 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/calendar-hijri.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "calendar-hijri", + "title": "Calendar Hijri", + "registryDependencies": [ + "button" + ], + "files": [ + { + "path": "registry/base-lyra/demo/calendar-hijri.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport { getDefaultClassNames, type DayButton } from \"react-day-picker\"\nimport { DayPicker } from \"react-day-picker/persian\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/base-lyra/ui/button\"\n\nexport default function CalendarHijri() {\n const [date, setDate] = React.useState(\n new Date(2025, 5, 12)\n )\n\n return (\n \n )\n}\n\n// ----------------------------------------------------------------------------\n// The code below is for this example only.\n// For your own calendar, you would edit the calendar.tsx component directly.\n// ----------------------------------------------------------------------------\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps & {\n buttonVariant?: React.ComponentProps[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\"absolute inset-0 opacity-0\", defaultClassNames.dropdown),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n \n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n \n )\n }\n\n if (orientation === \"right\") {\n return (\n \n )\n }\n\n return (\n \n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n \n
\n {children}\n
\n \n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/calendar.json b/apps/v4/public/r/styles/base-lyra/calendar.json index 5de2511806..82352cc293 100644 --- a/apps/v4/public/r/styles/base-lyra/calendar.json +++ b/apps/v4/public/r/styles/base-lyra/calendar.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/base-lyra/ui/calendar.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps & {\n buttonVariant?: React.ComponentProps[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative cn-calendar-dropdown-root rounded-(--cell-radius)\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"cn-calendar-caption-label rounded-(--cell-radius) flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-(--cell-radius) flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full rounded-(--cell-radius) h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-(--cell-radius) bg-muted elative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:right-0 -z-0 isolate\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"rounded-r-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:left-0 -z-0 isolate\",\n defaultClassNames.range_end\n ),\n today: cn(\n \"bg-muted text-foreground rounded-(--cell-radius) data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n \n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n \n )\n }\n\n if (orientation === \"right\") {\n return (\n \n )\n }\n\n return (\n \n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n \n
\n {children}\n
\n \n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Button, buttonVariants } from \"@/registry/base-lyra/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps & {\n buttonVariant?: React.ComponentProps[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative cn-calendar-dropdown-root rounded-(--cell-radius)\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"cn-calendar-caption-label rounded-(--cell-radius) flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-(--cell-radius) flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full rounded-(--cell-radius) h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-(--cell-radius) bg-muted elative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:right-0 -z-0 isolate\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"rounded-r-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:left-0 -z-0 isolate\",\n defaultClassNames.range_end\n ),\n today: cn(\n \"bg-muted text-foreground rounded-(--cell-radius) data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n \n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n \n )\n }\n\n if (orientation === \"right\") {\n return (\n \n )\n }\n\n return (\n \n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n \n
\n {children}\n
\n \n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/card-demo.json b/apps/v4/public/r/styles/base-lyra/card-demo.json new file mode 100644 index 0000000000..160f836f5a --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/card-demo.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "card-demo", + "title": "Card Demo", + "registryDependencies": [ + "button", + "card", + "input", + "label" + ], + "files": [ + { + "path": "registry/base-lyra/demo/card-demo.tsx", + "content": "import { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-lyra/ui/card\"\nimport { Input } from \"@/registry/base-lyra/ui/input\"\nimport { Label } from \"@/registry/base-lyra/ui/label\"\n\nexport default function CardDemo() {\n return (\n \n \n Login to your account\n \n Enter your email below to login to your account\n \n \n \n \n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n Forgot your password?\n \n
\n \n
\n
\n
\n
\n \n \n \n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/card-example.json b/apps/v4/public/r/styles/base-lyra/card-example.json index c2251de459..865f804679 100644 --- a/apps/v4/public/r/styles/base-lyra/card-example.json +++ b/apps/v4/public/r/styles/base-lyra/card-example.json @@ -13,7 +13,7 @@ "files": [ { "path": "registry/base-lyra/examples/card-example.tsx", - "content": "import Image from \"next/image\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n} from \"@/registry/bases/base/ui/avatar\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CardExample() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction CardLogin() {\n return (\n \n \n \n Login to your account\n \n Enter your email below to login to your account\n \n \n \n
\n \n \n Email\n \n \n \n
\n Password\n \n Forgot your password?\n \n
\n \n
\n
\n
\n
\n \n \n \n
\n Don't have an account?{\" \"}\n \n Sign up\n \n
\n
\n
\n
\n )\n}\n\nfunction CardMeetingNotes() {\n return (\n \n \n \n Meeting Notes\n \n Transcript from the meeting with the client.\n \n \n \n \n \n \n

\n Client requested dashboard redesign with focus on mobile\n responsiveness.\n

\n
    \n
  1. New analytics widgets for daily/weekly metrics
  2. \n
  3. Simplified navigation menu
  4. \n
  5. Dark mode support
  6. \n
  7. Timeline: 6 weeks
  8. \n
  9. Follow-up meeting scheduled for next Tuesday
  10. \n
\n
\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n +8\n \n \n
\n
\n )\n}\n\nfunction CardWithImage() {\n return (\n \n \n
\n \n \n Beautiful Landscape\n \n A stunning view that captures the essence of natural beauty.\n \n \n \n \n \n \n \n )\n}\n\nfunction CardWithImageSmall() {\n return (\n \n \n
\n \n \n Beautiful Landscape\n \n A stunning view that captures the essence of natural beauty.\n \n \n \n \n \n \n \n )\n}\n\nfunction CardHeaderWithBorder() {\n return (\n \n \n \n Header with Border\n \n This is a card with a header that has a bottom border.\n \n \n \n

\n The header has a border-b class applied, creating a visual\n separation between the header and content sections.\n

\n
\n
\n
\n )\n}\n\nfunction CardFooterWithBorder() {\n return (\n \n \n \n

\n The footer has a border-t class applied, creating a visual\n separation between the content and footer sections.\n

\n
\n \n \n \n
\n
\n )\n}\n\nfunction CardDefault() {\n return (\n \n \n \n Default Card\n \n This card uses the default size variant.\n \n \n \n

\n The card component supports a size prop that defaults to\n "default" for standard spacing and sizing.\n

\n
\n \n \n \n
\n
\n )\n}\n\nfunction CardSmall() {\n return (\n \n \n \n Small Card\n \n This card uses the small size variant.\n \n \n \n

\n The card component supports a size prop that can be set to\n "sm" for a more compact appearance.\n

\n
\n \n \n \n
\n
\n )\n}\n\nfunction CardHeaderWithBorderSmall() {\n return (\n \n \n \n Header with Border\n \n This is a small card with a header that has a bottom border.\n \n \n \n

\n The header has a border-b class applied, creating a visual\n separation between the header and content sections.\n

\n
\n
\n
\n )\n}\n\nfunction CardFooterWithBorderSmall() {\n return (\n \n \n \n

\n The footer has a border-t class applied, creating a visual\n separation between the content and footer sections.\n

\n
\n \n \n \n
\n
\n )\n}\n", + "content": "import Image from \"next/image\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n} from \"@/registry/base-lyra/ui/avatar\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-lyra/ui/card\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/base-lyra/ui/field\"\nimport { Input } from \"@/registry/base-lyra/ui/input\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CardExample() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction CardLogin() {\n return (\n \n \n \n Login to your account\n \n Enter your email below to login to your account\n \n \n \n
\n \n \n Email\n \n \n \n
\n Password\n \n Forgot your password?\n \n
\n \n
\n
\n
\n
\n \n \n \n
\n Don't have an account?{\" \"}\n \n Sign up\n \n
\n
\n
\n
\n )\n}\n\nfunction CardMeetingNotes() {\n return (\n \n \n \n Meeting Notes\n \n Transcript from the meeting with the client.\n \n \n \n \n \n \n

\n Client requested dashboard redesign with focus on mobile\n responsiveness.\n

\n
    \n
  1. New analytics widgets for daily/weekly metrics
  2. \n
  3. Simplified navigation menu
  4. \n
  5. Dark mode support
  6. \n
  7. Timeline: 6 weeks
  8. \n
  9. Follow-up meeting scheduled for next Tuesday
  10. \n
\n
\n \n \n \n \n CN\n \n \n \n LR\n \n \n \n ER\n \n +8\n \n \n
\n
\n )\n}\n\nfunction CardWithImage() {\n return (\n \n \n
\n \n \n Beautiful Landscape\n \n A stunning view that captures the essence of natural beauty.\n \n \n \n \n \n \n \n )\n}\n\nfunction CardWithImageSmall() {\n return (\n \n \n
\n \n \n Beautiful Landscape\n \n A stunning view that captures the essence of natural beauty.\n \n \n \n \n \n \n \n )\n}\n\nfunction CardHeaderWithBorder() {\n return (\n \n \n \n Header with Border\n \n This is a card with a header that has a bottom border.\n \n \n \n

\n The header has a border-b class applied, creating a visual\n separation between the header and content sections.\n

\n
\n
\n
\n )\n}\n\nfunction CardFooterWithBorder() {\n return (\n \n \n \n

\n The footer has a border-t class applied, creating a visual\n separation between the content and footer sections.\n

\n
\n \n \n \n
\n
\n )\n}\n\nfunction CardDefault() {\n return (\n \n \n \n Default Card\n \n This card uses the default size variant.\n \n \n \n

\n The card component supports a size prop that defaults to\n "default" for standard spacing and sizing.\n

\n
\n \n \n \n
\n
\n )\n}\n\nfunction CardSmall() {\n return (\n \n \n \n Small Card\n \n This card uses the small size variant.\n \n \n \n

\n The card component supports a size prop that can be set to\n "sm" for a more compact appearance.\n

\n
\n \n \n \n
\n
\n )\n}\n\nfunction CardHeaderWithBorderSmall() {\n return (\n \n \n \n Header with Border\n \n This is a small card with a header that has a bottom border.\n \n \n \n

\n The header has a border-b class applied, creating a visual\n separation between the header and content sections.\n

\n
\n
\n
\n )\n}\n\nfunction CardFooterWithBorderSmall() {\n return (\n \n \n \n

\n The footer has a border-t class applied, creating a visual\n separation between the content and footer sections.\n

\n
\n \n \n \n
\n
\n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/card.json b/apps/v4/public/r/styles/base-lyra/card.json index eceacd82b3..75bc7325c5 100644 --- a/apps/v4/public/r/styles/base-lyra/card.json +++ b/apps/v4/public/r/styles/base-lyra/card.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/card.tsx", - "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/carousel-api.json b/apps/v4/public/r/styles/base-lyra/carousel-api.json new file mode 100644 index 0000000000..60e41e5d15 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/carousel-api.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "carousel-api", + "title": "Carousel Api", + "registryDependencies": [ + "card", + "carousel" + ], + "files": [ + { + "path": "registry/base-lyra/demo/carousel-api.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/base-lyra/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n type CarouselApi,\n} from \"@/registry/base-lyra/ui/carousel\"\n\nexport default function CarouselDApiDemo() {\n const [api, setApi] = React.useState()\n const [current, setCurrent] = React.useState(0)\n const [count, setCount] = React.useState(0)\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\n setCount(api.scrollSnapList().length)\n setCurrent(api.selectedScrollSnap() + 1)\n\n api.on(\"select\", () => {\n setCurrent(api.selectedScrollSnap() + 1)\n })\n }, [api])\n\n return (\n
\n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n \n \n {index + 1}\n \n \n \n ))}\n \n \n \n \n
\n Slide {current} of {count}\n
\n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/carousel-demo.json b/apps/v4/public/r/styles/base-lyra/carousel-demo.json new file mode 100644 index 0000000000..ab8fc7bb98 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/carousel-demo.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "carousel-demo", + "title": "Carousel Demo", + "registryDependencies": [ + "card", + "carousel" + ], + "files": [ + { + "path": "registry/base-lyra/demo/carousel-demo.tsx", + "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/base-lyra/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/registry/base-lyra/ui/carousel\"\n\nexport default function CarouselDemo() {\n return (\n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/carousel-example.json b/apps/v4/public/r/styles/base-lyra/carousel-example.json index 42fcaecb9c..d8baf97dfa 100644 --- a/apps/v4/public/r/styles/base-lyra/carousel-example.json +++ b/apps/v4/public/r/styles/base-lyra/carousel-example.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/examples/carousel-example.tsx", - "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Card, CardContent } from \"@/registry/bases/base/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/registry/bases/base/ui/carousel\"\n\nexport default function CarouselExample() {\n return (\n \n \n \n \n \n )\n}\n\nfunction CarouselBasic() {\n return (\n \n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n
\n
\n )\n}\n\nfunction CarouselMultiple() {\n return (\n \n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n \n
\n )\n}\n\nfunction CarouselWithGap() {\n return (\n \n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n
\n
\n )\n}\n", + "content": "import {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Card, CardContent } from \"@/registry/base-lyra/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/registry/base-lyra/ui/carousel\"\n\nexport default function CarouselExample() {\n return (\n \n \n \n \n \n )\n}\n\nfunction CarouselBasic() {\n return (\n \n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n
\n
\n )\n}\n\nfunction CarouselMultiple() {\n return (\n \n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n \n
\n )\n}\n\nfunction CarouselWithGap() {\n return (\n \n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n
\n
\n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/carousel-orientation.json b/apps/v4/public/r/styles/base-lyra/carousel-orientation.json new file mode 100644 index 0000000000..0e941d3cc3 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/carousel-orientation.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "carousel-orientation", + "title": "Carousel Orientation", + "registryDependencies": [ + "card", + "carousel" + ], + "files": [ + { + "path": "registry/base-lyra/demo/carousel-orientation.tsx", + "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/base-lyra/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/registry/base-lyra/ui/carousel\"\n\nexport default function CarouselOrientation() {\n return (\n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/carousel-plugin.json b/apps/v4/public/r/styles/base-lyra/carousel-plugin.json new file mode 100644 index 0000000000..40efb1ac21 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/carousel-plugin.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "carousel-plugin", + "title": "Carousel Plugin", + "registryDependencies": [ + "card", + "carousel" + ], + "files": [ + { + "path": "registry/base-lyra/demo/carousel-plugin.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport Autoplay from \"embla-carousel-autoplay\"\n\nimport { Card, CardContent } from \"@/registry/base-lyra/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/registry/base-lyra/ui/carousel\"\n\nexport default function CarouselPlugin() {\n const plugin = React.useRef(\n Autoplay({ delay: 2000, stopOnInteraction: true })\n )\n\n return (\n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/carousel-size.json b/apps/v4/public/r/styles/base-lyra/carousel-size.json new file mode 100644 index 0000000000..db826d436f --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/carousel-size.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "carousel-size", + "title": "Carousel Size", + "registryDependencies": [ + "card", + "carousel" + ], + "files": [ + { + "path": "registry/base-lyra/demo/carousel-size.tsx", + "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/base-lyra/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/registry/base-lyra/ui/carousel\"\n\nexport default function CarouselSize() {\n return (\n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/carousel-spacing.json b/apps/v4/public/r/styles/base-lyra/carousel-spacing.json new file mode 100644 index 0000000000..56da2b1ced --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/carousel-spacing.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "carousel-spacing", + "title": "Carousel Spacing", + "registryDependencies": [ + "card", + "carousel" + ], + "files": [ + { + "path": "registry/base-lyra/demo/carousel-spacing.tsx", + "content": "import * as React from \"react\"\n\nimport { Card, CardContent } from \"@/registry/base-lyra/ui/card\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/registry/base-lyra/ui/carousel\"\n\nexport default function CarouselSpacing() {\n return (\n \n \n {Array.from({ length: 5 }).map((_, index) => (\n \n
\n \n \n {index + 1}\n \n \n
\n
\n ))}\n
\n \n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/carousel.json b/apps/v4/public/r/styles/base-lyra/carousel.json index 4de2f3f7aa..782e6d231b 100644 --- a/apps/v4/public/r/styles/base-lyra/carousel.json +++ b/apps/v4/public/r/styles/base-lyra/carousel.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/ui/carousel.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType[0]\n api: ReturnType[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a \")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n \n \n {children}\n
\n \n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n \n \n
\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n \n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon-sm\",\n ...props\n}: React.ComponentProps) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n \n \n Previous slide\n \n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon-sm\",\n ...props\n}: React.ComponentProps) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n \n \n Next slide\n \n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n useCarousel,\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType[0]\n api: ReturnType[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a \")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n \n \n {children}\n
\n \n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n \n \n
\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n \n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon-sm\",\n ...props\n}: React.ComponentProps) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n \n \n Previous slide\n \n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon-sm\",\n ...props\n}: React.ComponentProps) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n \n \n Next slide\n \n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n useCarousel,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/chart-bar-demo-axis.json b/apps/v4/public/r/styles/base-lyra/chart-bar-demo-axis.json new file mode 100644 index 0000000000..0c16c510a6 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/chart-bar-demo-axis.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "chart-bar-demo-axis", + "title": "Chart Bar Demo Axis", + "registryDependencies": [ + "chart" + ], + "files": [ + { + "path": "registry/base-lyra/demo/chart-bar-demo-axis.tsx", + "content": "\"use client\"\n\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n ChartContainer,\n type ChartConfig,\n} from \"@/registry/base-lyra/ui/chart\"\n\nconst chartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"#2563eb\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"#60a5fa\",\n },\n} satisfies ChartConfig\n\nexport function ChartBarDemoAxis() {\n return (\n \n \n \n value.slice(0, 3)}\n />\n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/chart-bar-demo-grid.json b/apps/v4/public/r/styles/base-lyra/chart-bar-demo-grid.json new file mode 100644 index 0000000000..1091b58c5c --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/chart-bar-demo-grid.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "chart-bar-demo-grid", + "title": "Chart Bar Demo Grid", + "registryDependencies": [ + "chart" + ], + "files": [ + { + "path": "registry/base-lyra/demo/chart-bar-demo-grid.tsx", + "content": "\"use client\"\n\nimport { Bar, BarChart, CartesianGrid } from \"recharts\"\n\nimport {\n ChartContainer,\n type ChartConfig,\n} from \"@/registry/base-lyra/ui/chart\"\n\nconst chartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"#2563eb\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"#60a5fa\",\n },\n} satisfies ChartConfig\n\nexport function ChartBarDemoGrid() {\n return (\n \n \n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/chart-bar-demo-legend.json b/apps/v4/public/r/styles/base-lyra/chart-bar-demo-legend.json new file mode 100644 index 0000000000..067b000e6b --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/chart-bar-demo-legend.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "chart-bar-demo-legend", + "title": "Chart Bar Demo Legend", + "registryDependencies": [ + "chart" + ], + "files": [ + { + "path": "registry/base-lyra/demo/chart-bar-demo-legend.tsx", + "content": "\"use client\"\n\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n type ChartConfig,\n} from \"@/registry/base-lyra/ui/chart\"\n\nconst chartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"#2563eb\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"#60a5fa\",\n },\n} satisfies ChartConfig\n\nexport function ChartBarDemoLegend() {\n return (\n \n \n \n value.slice(0, 3)}\n />\n } />\n } />\n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/chart-bar-demo-tooltip.json b/apps/v4/public/r/styles/base-lyra/chart-bar-demo-tooltip.json new file mode 100644 index 0000000000..64e160f338 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/chart-bar-demo-tooltip.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "chart-bar-demo-tooltip", + "title": "Chart Bar Demo Tooltip", + "registryDependencies": [ + "chart" + ], + "files": [ + { + "path": "registry/base-lyra/demo/chart-bar-demo-tooltip.tsx", + "content": "\"use client\"\n\nimport { Bar, BarChart, CartesianGrid, XAxis } from \"recharts\"\n\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n type ChartConfig,\n} from \"@/registry/base-lyra/ui/chart\"\n\nconst chartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"#2563eb\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"#60a5fa\",\n },\n} satisfies ChartConfig\n\nexport function ChartBarDemoTooltip() {\n return (\n \n \n \n value.slice(0, 3)}\n />\n } />\n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/chart-bar-demo.json b/apps/v4/public/r/styles/base-lyra/chart-bar-demo.json new file mode 100644 index 0000000000..3422006d01 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/chart-bar-demo.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "chart-bar-demo", + "title": "Chart Bar Demo", + "registryDependencies": [ + "chart" + ], + "files": [ + { + "path": "registry/base-lyra/demo/chart-bar-demo.tsx", + "content": "\"use client\"\n\nimport { Bar, BarChart } from \"recharts\"\n\nimport {\n ChartContainer,\n type ChartConfig,\n} from \"@/registry/base-lyra/ui/chart\"\n\nconst chartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst chartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"#2563eb\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"#60a5fa\",\n },\n} satisfies ChartConfig\n\nexport function ChartBarDemo() {\n return (\n \n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/chart-example.json b/apps/v4/public/r/styles/base-lyra/chart-example.json index de9c9f80c2..904b639810 100644 --- a/apps/v4/public/r/styles/base-lyra/chart-example.json +++ b/apps/v4/public/r/styles/base-lyra/chart-example.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/examples/chart-example.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n Area,\n AreaChart,\n Bar,\n BarChart,\n CartesianGrid,\n Label,\n Line,\n LineChart,\n Pie,\n PieChart,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n Radar,\n RadarChart,\n RadialBar,\n RadialBarChart,\n XAxis,\n} from \"recharts\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n type ChartConfig,\n} from \"@/registry/bases/base/ui/chart\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst areaChartData = [\n { month: \"January\", desktop: 186 },\n { month: \"February\", desktop: 305 },\n { month: \"March\", desktop: 237 },\n { month: \"April\", desktop: 73 },\n { month: \"May\", desktop: 209 },\n { month: \"June\", desktop: 214 },\n]\n\nconst areaChartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"var(--chart-1)\",\n },\n} satisfies ChartConfig\n\nexport default function ChartExample() {\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction ChartAreaExample() {\n return (\n \n \n \n Area Chart\n \n Showing total visitors for the last 6 months\n \n \n \n \n \n \n value.slice(0, 3)}\n />\n }\n />\n \n \n \n \n \n
\n
\n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n January - June 2024\n
\n
\n
\n
\n
\n
\n )\n}\n\nconst barChartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst barChartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"var(--chart-1)\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"var(--chart-2)\",\n },\n} satisfies ChartConfig\n\nfunction ChartBarExample() {\n return (\n \n \n \n Bar Chart - Multiple\n January - June 2024\n \n \n \n \n \n value.slice(0, 3)}\n />\n }\n />\n \n \n \n \n \n \n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n Showing total visitors for the last 6 months\n
\n
\n
\n
\n )\n}\n\nconst lineChartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst lineChartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"var(--chart-1)\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"var(--chart-2)\",\n },\n} satisfies ChartConfig\n\nfunction ChartLineExample() {\n return (\n \n \n \n Line Chart - Multiple\n January - June 2024\n \n \n \n \n \n value.slice(0, 3)}\n />\n } />\n \n \n \n \n \n \n
\n
\n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n Showing total visitors for the last 6 months\n
\n
\n
\n
\n
\n
\n )\n}\n\nconst pieChartData = [\n { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n { browser: \"firefox\", visitors: 287, fill: \"var(--color-firefox)\" },\n { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n { browser: \"other\", visitors: 190, fill: \"var(--color-other)\" },\n]\n\nconst pieChartConfig = {\n visitors: {\n label: \"Visitors\",\n },\n chrome: {\n label: \"Chrome\",\n color: \"var(--chart-1)\",\n },\n safari: {\n label: \"Safari\",\n color: \"var(--chart-2)\",\n },\n firefox: {\n label: \"Firefox\",\n color: \"var(--chart-3)\",\n },\n edge: {\n label: \"Edge\",\n color: \"var(--chart-4)\",\n },\n other: {\n label: \"Other\",\n color: \"var(--chart-5)\",\n },\n} satisfies ChartConfig\n\nfunction ChartPieExample() {\n const totalVisitors = React.useMemo(() => {\n return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\n }, [])\n\n return (\n \n \n \n Pie Chart - Donut with Text\n January - June 2024\n \n \n \n \n }\n />\n \n {\n if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n return (\n \n \n {totalVisitors.toLocaleString()}\n \n \n Visitors\n \n \n )\n }\n }}\n />\n \n \n \n \n \n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n Showing total visitors for the last 6 months\n
\n
\n
\n
\n )\n}\n\nconst radarChartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst radarChartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"var(--chart-1)\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"var(--chart-2)\",\n },\n} satisfies ChartConfig\n\nfunction ChartRadarExample() {\n return (\n \n \n \n Radar Chart - Multiple\n \n Showing total visitors for the last 6 months\n \n \n \n \n \n }\n />\n \n \n \n \n \n \n \n \n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n January - June 2024\n
\n
\n
\n
\n )\n}\n\nconst radialChartData = [\n { browser: \"safari\", visitors: 1260, fill: \"var(--color-safari)\" },\n]\n\nconst radialChartConfig = {\n visitors: {\n label: \"Visitors\",\n },\n safari: {\n label: \"Safari\",\n color: \"var(--chart-2)\",\n },\n} satisfies ChartConfig\n\nfunction ChartRadialExample() {\n return (\n \n \n \n Radial Chart - Shape\n January - June 2024\n \n \n \n \n \n \n \n {\n if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n return (\n \n \n {radialChartData[0].visitors.toLocaleString()}\n \n \n Visitors\n \n \n )\n }\n }}\n />\n \n \n \n \n \n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n Showing total visitors for the last 6 months\n
\n
\n
\n
\n )\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n Area,\n AreaChart,\n Bar,\n BarChart,\n CartesianGrid,\n Label,\n Line,\n LineChart,\n Pie,\n PieChart,\n PolarAngleAxis,\n PolarGrid,\n PolarRadiusAxis,\n Radar,\n RadarChart,\n RadialBar,\n RadialBarChart,\n XAxis,\n} from \"recharts\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-lyra/ui/card\"\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n type ChartConfig,\n} from \"@/registry/base-lyra/ui/chart\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst areaChartData = [\n { month: \"January\", desktop: 186 },\n { month: \"February\", desktop: 305 },\n { month: \"March\", desktop: 237 },\n { month: \"April\", desktop: 73 },\n { month: \"May\", desktop: 209 },\n { month: \"June\", desktop: 214 },\n]\n\nconst areaChartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"var(--chart-1)\",\n },\n} satisfies ChartConfig\n\nexport default function ChartExample() {\n return (\n \n \n \n \n \n \n \n )\n}\n\nfunction ChartAreaExample() {\n return (\n \n \n \n Area Chart\n \n Showing total visitors for the last 6 months\n \n \n \n \n \n \n value.slice(0, 3)}\n />\n }\n />\n \n \n \n \n \n
\n
\n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n January - June 2024\n
\n
\n
\n
\n
\n
\n )\n}\n\nconst barChartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst barChartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"var(--chart-1)\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"var(--chart-2)\",\n },\n} satisfies ChartConfig\n\nfunction ChartBarExample() {\n return (\n \n \n \n Bar Chart - Multiple\n January - June 2024\n \n \n \n \n \n value.slice(0, 3)}\n />\n }\n />\n \n \n \n \n \n \n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n Showing total visitors for the last 6 months\n
\n
\n
\n
\n )\n}\n\nconst lineChartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst lineChartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"var(--chart-1)\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"var(--chart-2)\",\n },\n} satisfies ChartConfig\n\nfunction ChartLineExample() {\n return (\n \n \n \n Line Chart - Multiple\n January - June 2024\n \n \n \n \n \n value.slice(0, 3)}\n />\n } />\n \n \n \n \n \n \n
\n
\n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n Showing total visitors for the last 6 months\n
\n
\n
\n
\n
\n
\n )\n}\n\nconst pieChartData = [\n { browser: \"chrome\", visitors: 275, fill: \"var(--color-chrome)\" },\n { browser: \"safari\", visitors: 200, fill: \"var(--color-safari)\" },\n { browser: \"firefox\", visitors: 287, fill: \"var(--color-firefox)\" },\n { browser: \"edge\", visitors: 173, fill: \"var(--color-edge)\" },\n { browser: \"other\", visitors: 190, fill: \"var(--color-other)\" },\n]\n\nconst pieChartConfig = {\n visitors: {\n label: \"Visitors\",\n },\n chrome: {\n label: \"Chrome\",\n color: \"var(--chart-1)\",\n },\n safari: {\n label: \"Safari\",\n color: \"var(--chart-2)\",\n },\n firefox: {\n label: \"Firefox\",\n color: \"var(--chart-3)\",\n },\n edge: {\n label: \"Edge\",\n color: \"var(--chart-4)\",\n },\n other: {\n label: \"Other\",\n color: \"var(--chart-5)\",\n },\n} satisfies ChartConfig\n\nfunction ChartPieExample() {\n const totalVisitors = React.useMemo(() => {\n return pieChartData.reduce((acc, curr) => acc + curr.visitors, 0)\n }, [])\n\n return (\n \n \n \n Pie Chart - Donut with Text\n January - June 2024\n \n \n \n \n }\n />\n \n {\n if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n return (\n \n \n {totalVisitors.toLocaleString()}\n \n \n Visitors\n \n \n )\n }\n }}\n />\n \n \n \n \n \n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n Showing total visitors for the last 6 months\n
\n
\n
\n
\n )\n}\n\nconst radarChartData = [\n { month: \"January\", desktop: 186, mobile: 80 },\n { month: \"February\", desktop: 305, mobile: 200 },\n { month: \"March\", desktop: 237, mobile: 120 },\n { month: \"April\", desktop: 73, mobile: 190 },\n { month: \"May\", desktop: 209, mobile: 130 },\n { month: \"June\", desktop: 214, mobile: 140 },\n]\n\nconst radarChartConfig = {\n desktop: {\n label: \"Desktop\",\n color: \"var(--chart-1)\",\n },\n mobile: {\n label: \"Mobile\",\n color: \"var(--chart-2)\",\n },\n} satisfies ChartConfig\n\nfunction ChartRadarExample() {\n return (\n \n \n \n Radar Chart - Multiple\n \n Showing total visitors for the last 6 months\n \n \n \n \n \n }\n />\n \n \n \n \n \n \n \n \n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n January - June 2024\n
\n
\n
\n
\n )\n}\n\nconst radialChartData = [\n { browser: \"safari\", visitors: 1260, fill: \"var(--color-safari)\" },\n]\n\nconst radialChartConfig = {\n visitors: {\n label: \"Visitors\",\n },\n safari: {\n label: \"Safari\",\n color: \"var(--chart-2)\",\n },\n} satisfies ChartConfig\n\nfunction ChartRadialExample() {\n return (\n \n \n \n Radial Chart - Shape\n January - June 2024\n \n \n \n \n \n \n \n {\n if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n return (\n \n \n {radialChartData[0].visitors.toLocaleString()}\n \n \n Visitors\n \n \n )\n }\n }}\n />\n \n \n \n \n \n
\n Trending up by 5.2% this month{\" \"}\n \n
\n
\n Showing total visitors for the last 6 months\n
\n
\n
\n
\n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/chart.json b/apps/v4/public/r/styles/base-lyra/chart.json index 4d9c4ea31a..a624970661 100644 --- a/apps/v4/public/r/styles/base-lyra/chart.json +++ b/apps/v4/public/r/styles/base-lyra/chart.json @@ -10,7 +10,7 @@ "files": [ { "path": "registry/base-lyra/ui/chart.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a \")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n \n \n \n \n {children}\n \n \n \n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n
\n {labelFormatter(value, payload)}\n
\n )\n }\n\n if (!value) {\n return null\n }\n\n return
{value}
\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n \n {!nestLabel ? tooltipLabel : null}\n
\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n \n ) : (\n !hideIndicator && (\n \n )\n )}\n \n
\n {nestLabel ? tooltipLabel : null}\n \n {itemConfig?.label || item.name}\n \n
\n {item.value && (\n \n {item.value.toLocaleString()}\n \n )}\n
\n \n )}\n \n )\n })}\n \n \n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n \n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n \n ) : (\n \n )}\n {itemConfig?.label}\n \n )\n })}\n \n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a \")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n \n \n \n \n {children}\n \n \n \n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n
\n {labelFormatter(value, payload)}\n
\n )\n }\n\n if (!value) {\n return null\n }\n\n return
{value}
\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n \n {!nestLabel ? tooltipLabel : null}\n
\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n \n ) : (\n !hideIndicator && (\n \n )\n )}\n \n
\n {nestLabel ? tooltipLabel : null}\n \n {itemConfig?.label || item.name}\n \n
\n {item.value && (\n \n {item.value.toLocaleString()}\n \n )}\n
\n \n )}\n \n )\n })}\n \n \n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n \n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n \n ) : (\n \n )}\n {itemConfig?.label}\n \n )\n })}\n \n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/chatgpt.json b/apps/v4/public/r/styles/base-lyra/chatgpt.json index cd24da9e2d..41b3a32278 100644 --- a/apps/v4/public/r/styles/base-lyra/chatgpt.json +++ b/apps/v4/public/r/styles/base-lyra/chatgpt.json @@ -20,7 +20,7 @@ "files": [ { "path": "registry/base-lyra/blocks/chatgpt.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Alert, AlertDescription } from \"@/registry/bases/base/ui/alert\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/registry/bases/base/ui/alert-dialog\"\nimport { Badge } from \"@/registry/bases/base/ui/badge\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"@/registry/bases/base/ui/dropdown-menu\"\nimport {\n Field,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupTextarea,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n Item,\n ItemContent,\n ItemDescription,\n ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport { Kbd } from \"@/registry/bases/base/ui/kbd\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/bases/base/ui/popover\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/registry/bases/base/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ChatGPTBlock() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction PromptForm() {\n const [dictateEnabled, setDictateEnabled] = React.useState(false)\n\n return (\n \n \n \n Prompt\n \n \n \n \n \n \n setDictateEnabled(!dictateEnabled)}\n className=\"rounded-4xl\"\n />\n }\n />\n }\n >\n \n \n \n Add files and more /\n \n \n \n \n \n \n Add photos & files\n \n \n \n Deep research\n \n \n \n Shopping research\n \n \n \n Create image\n \n \n \n \n Agent mode\n \n }\n />\n \n
35 left
\n
\n More available for purchase\n
\n
\n
\n
\n \n \n \n More\n \n \n \n \n \n \n Add sources\n \n \n \n Study and learn\n \n \n \n Web search\n \n \n \n Canvas\n \n \n \n \n \n
\n
\n \n setDictateEnabled(!dictateEnabled)}\n className=\"ml-auto rounded-4xl\"\n />\n }\n >\n \n \n Dictate\n \n \n \n \n
\n
\n
\n
\n )\n}\n\nfunction ModelSelector() {\n const [mode, setMode] = React.useState(\"auto\")\n const [model, setModel] = React.useState(\"gpt-5.1\")\n\n return (\n \n \n }\n >\n ChatGPT 5.1\n \n \n \n \n \n GPT-5.1\n \n \n \n \n \n Auto\n \n Decides how long to think\n \n \n \n \n \n \n \n Instant\n \n Answers right away\n \n \n \n \n \n \n \n Thinking\n \n Thinks longer for better answers\n \n \n \n \n \n \n \n \n \n Legacy models\n \n \n \n \n \n \n GPT-4\n \n \n GPT-4 Turbo\n \n \n GPT-3.5\n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction GroupChatDialog() {\n return (\n \n \n }>\n Start Group Chat\n \n \n \n Use ChatGPT together\n \n Add people to your chats to plan, share ideas, and get creative.\n \n \n \n \n Learn more\n \n
\n Cancel\n Start group chat\n
\n
\n
\n
\n
\n )\n}\n\nconst categories = [\n {\n id: \"homework\",\n label: \"Homework\",\n },\n {\n id: \"writing\",\n label: \"Writing\",\n },\n {\n id: \"health\",\n label: \"Health\",\n },\n {\n id: \"travel\",\n label: \"Travel\",\n },\n]\n\nfunction CreateProjectForm() {\n const [projectName, setProjectName] = React.useState(\"\")\n const [selectedCategory, setSelectedCategory] = React.useState(\n categories[0].id\n )\n const [memorySetting, setMemorySetting] = React.useState<\n \"default\" | \"project-only\"\n >(\"default\")\n const [selectedColor, setSelectedColor] = React.useState(\n \"var(--foreground)\"\n )\n\n return (\n \n \n \n Create Project\n \n Start a new project to keep chats, files, and custom instructions in\n one place.\n \n \n \n }\n >\n \n Memory\n \n \n \n {\n setMemorySetting(value as \"default\" | \"project-only\")\n }}\n >\n \n \n \n Default\n \n Project can access memories from outside chats, and\n vice versa.\n \n \n \n \n \n \n \n Project Only\n \n Project can only access its own memories. Its\n memories are hidden from outside chats.\n \n \n \n \n \n \n \n \n \n Note that this setting can't be changed later.\n \n \n \n \n \n \n \n \n \n \n Project Name\n \n \n {\n setProjectName(e.target.value)\n }}\n />\n \n \n \n }\n >\n \n \n \n
\n {[\n \"var(--foreground)\",\n \"#fa423e\",\n \"#f59e0b\",\n \"#8b5cf6\",\n \"#ec4899\",\n \"#10b981\",\n \"#6366f1\",\n \"#14b8a6\",\n \"#f97316\",\n \"#fbbc04\",\n ].map((color) => (\n {\n setSelectedColor(color)\n }}\n >\n \n {color}\n \n ))}\n
\n
\n
\n
\n
\n \n {categories.map((category) => (\n {\n setSelectedCategory(\n selectedCategory === category.id\n ? null\n : category.id\n )\n }}\n />\n }\n >\n \n {category.label}\n \n ))}\n \n
\n \n \n \n \n Projects keep chats, files, and custom instructions in one\n place. Use them for ongoing work, or just to keep things tidy.\n \n \n \n
\n
\n
\n
\n )\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Alert, AlertDescription } from \"@/registry/base-lyra/ui/alert\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/registry/base-lyra/ui/alert-dialog\"\nimport { Badge } from \"@/registry/base-lyra/ui/badge\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-lyra/ui/card\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\nimport {\n Field,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n} from \"@/registry/base-lyra/ui/field\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupTextarea,\n} from \"@/registry/base-lyra/ui/input-group\"\nimport {\n Item,\n ItemContent,\n ItemDescription,\n ItemTitle,\n} from \"@/registry/base-lyra/ui/item\"\nimport { Kbd } from \"@/registry/base-lyra/ui/kbd\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/base-lyra/ui/popover\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/registry/base-lyra/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ChatGPTBlock() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction PromptForm() {\n const [dictateEnabled, setDictateEnabled] = React.useState(false)\n\n return (\n \n \n \n Prompt\n \n \n \n \n \n \n setDictateEnabled(!dictateEnabled)}\n className=\"rounded-4xl\"\n />\n }\n />\n }\n >\n \n \n \n Add files and more /\n \n \n \n \n \n \n Add photos & files\n \n \n \n Deep research\n \n \n \n Shopping research\n \n \n \n Create image\n \n \n \n \n Agent mode\n \n }\n />\n \n
35 left
\n
\n More available for purchase\n
\n
\n
\n
\n \n \n \n More\n \n \n \n \n \n \n Add sources\n \n \n \n Study and learn\n \n \n \n Web search\n \n \n \n Canvas\n \n \n \n \n \n
\n
\n \n setDictateEnabled(!dictateEnabled)}\n className=\"ml-auto rounded-4xl\"\n />\n }\n >\n \n \n Dictate\n \n \n \n \n
\n
\n
\n
\n )\n}\n\nfunction ModelSelector() {\n const [mode, setMode] = React.useState(\"auto\")\n const [model, setModel] = React.useState(\"gpt-5.1\")\n\n return (\n \n \n }\n >\n ChatGPT 5.1\n \n \n \n \n \n GPT-5.1\n \n \n \n \n \n Auto\n \n Decides how long to think\n \n \n \n \n \n \n \n Instant\n \n Answers right away\n \n \n \n \n \n \n \n Thinking\n \n Thinks longer for better answers\n \n \n \n \n \n \n \n \n \n Legacy models\n \n \n \n \n \n \n GPT-4\n \n \n GPT-4 Turbo\n \n \n GPT-3.5\n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction GroupChatDialog() {\n return (\n \n \n }>\n Start Group Chat\n \n \n \n Use ChatGPT together\n \n Add people to your chats to plan, share ideas, and get creative.\n \n \n \n \n Learn more\n \n
\n Cancel\n Start group chat\n
\n
\n
\n
\n
\n )\n}\n\nconst categories = [\n {\n id: \"homework\",\n label: \"Homework\",\n },\n {\n id: \"writing\",\n label: \"Writing\",\n },\n {\n id: \"health\",\n label: \"Health\",\n },\n {\n id: \"travel\",\n label: \"Travel\",\n },\n]\n\nfunction CreateProjectForm() {\n const [projectName, setProjectName] = React.useState(\"\")\n const [selectedCategory, setSelectedCategory] = React.useState(\n categories[0].id\n )\n const [memorySetting, setMemorySetting] = React.useState<\n \"default\" | \"project-only\"\n >(\"default\")\n const [selectedColor, setSelectedColor] = React.useState(\n \"var(--foreground)\"\n )\n\n return (\n \n \n \n Create Project\n \n Start a new project to keep chats, files, and custom instructions in\n one place.\n \n \n \n }\n >\n \n Memory\n \n \n \n {\n setMemorySetting(value as \"default\" | \"project-only\")\n }}\n >\n \n \n \n Default\n \n Project can access memories from outside chats, and\n vice versa.\n \n \n \n \n \n \n \n Project Only\n \n Project can only access its own memories. Its\n memories are hidden from outside chats.\n \n \n \n \n \n \n \n \n \n Note that this setting can't be changed later.\n \n \n \n \n \n \n \n \n \n \n Project Name\n \n \n {\n setProjectName(e.target.value)\n }}\n />\n \n \n \n }\n >\n \n \n \n
\n {[\n \"var(--foreground)\",\n \"#fa423e\",\n \"#f59e0b\",\n \"#8b5cf6\",\n \"#ec4899\",\n \"#10b981\",\n \"#6366f1\",\n \"#14b8a6\",\n \"#f97316\",\n \"#fbbc04\",\n ].map((color) => (\n {\n setSelectedColor(color)\n }}\n >\n \n {color}\n \n ))}\n
\n
\n
\n
\n
\n \n {categories.map((category) => (\n {\n setSelectedCategory(\n selectedCategory === category.id\n ? null\n : category.id\n )\n }}\n />\n }\n >\n \n {category.label}\n \n ))}\n \n
\n \n \n \n \n Projects keep chats, files, and custom instructions in one\n place. Use them for ongoing work, or just to keep things tidy.\n \n \n \n
\n
\n
\n
\n )\n}\n", "type": "registry:block" } ], diff --git a/apps/v4/public/r/styles/base-lyra/checkbox-demo.json b/apps/v4/public/r/styles/base-lyra/checkbox-demo.json new file mode 100644 index 0000000000..685017cc7b --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/checkbox-demo.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "checkbox-demo", + "title": "Checkbox Demo", + "registryDependencies": [ + "checkbox", + "label" + ], + "files": [ + { + "path": "registry/base-lyra/demo/checkbox-demo.tsx", + "content": "\"use client\"\n\nimport { Checkbox } from \"@/registry/base-lyra/ui/checkbox\"\nimport { Label } from \"@/registry/base-lyra/ui/label\"\n\nexport default function CheckboxDemo() {\n return (\n
\n
\n \n \n
\n
\n \n
\n \n

\n By clicking this checkbox, you agree to the terms and conditions.\n

\n
\n
\n
\n \n \n
\n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/checkbox-disabled.json b/apps/v4/public/r/styles/base-lyra/checkbox-disabled.json new file mode 100644 index 0000000000..ee3187d6b3 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/checkbox-disabled.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "checkbox-disabled", + "title": "Checkbox Disabled", + "registryDependencies": [ + "checkbox" + ], + "files": [ + { + "path": "registry/base-lyra/demo/checkbox-disabled.tsx", + "content": "import { Checkbox } from \"@/registry/base-lyra/ui/checkbox\"\n\nexport default function CheckboxDisabled() {\n return (\n
\n \n \n Accept terms and conditions\n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/checkbox-example.json b/apps/v4/public/r/styles/base-lyra/checkbox-example.json index c0819b9971..e1ef5772fb 100644 --- a/apps/v4/public/r/styles/base-lyra/checkbox-example.json +++ b/apps/v4/public/r/styles/base-lyra/checkbox-example.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/base-lyra/examples/checkbox-example.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Checkbox } from \"@/registry/bases/base/ui/checkbox\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n FieldTitle,\n} from \"@/registry/bases/base/ui/field\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/registry/bases/base/ui/table\"\n\nexport default function CheckboxExample() {\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction CheckboxBasic() {\n return (\n \n \n \n Accept terms and conditions\n \n \n )\n}\n\nfunction CheckboxWithDescription() {\n return (\n \n \n \n \n Accept terms and conditions\n \n By clicking this checkbox, you agree to the terms and conditions.\n \n \n \n \n )\n}\n\nfunction CheckboxInvalid() {\n return (\n \n \n \n Accept terms and conditions\n \n \n )\n}\n\nfunction CheckboxDisabled() {\n return (\n \n \n \n Enable notifications\n \n \n )\n}\n\nfunction CheckboxWithTitle() {\n return (\n \n \n \n \n \n \n Enable notifications\n \n You can enable or disable notifications at any time.\n \n \n \n \n \n \n \n \n Enable notifications\n \n You can enable or disable notifications at any time.\n \n \n \n \n \n \n )\n}\n\nconst tableData = [\n {\n id: \"1\",\n name: \"Sarah Chen\",\n email: \"sarah.chen@example.com\",\n role: \"Admin\",\n },\n {\n id: \"2\",\n name: \"Marcus Rodriguez\",\n email: \"marcus.rodriguez@example.com\",\n role: \"User\",\n },\n {\n id: \"3\",\n name: \"Priya Patel\",\n email: \"priya.patel@example.com\",\n role: \"User\",\n },\n {\n id: \"4\",\n name: \"David Kim\",\n email: \"david.kim@example.com\",\n role: \"Editor\",\n },\n]\n\nfunction CheckboxInTable() {\n const [selectedRows, setSelectedRows] = React.useState>(\n new Set([\"1\"])\n )\n\n const selectAll = selectedRows.size === tableData.length\n\n const handleSelectAll = (checked: boolean) => {\n if (checked) {\n setSelectedRows(new Set(tableData.map((row) => row.id)))\n } else {\n setSelectedRows(new Set())\n }\n }\n\n const handleSelectRow = (id: string, checked: boolean) => {\n const newSelected = new Set(selectedRows)\n if (checked) {\n newSelected.add(id)\n } else {\n newSelected.delete(id)\n }\n setSelectedRows(newSelected)\n }\n\n return (\n \n \n \n \n \n \n \n Name\n Email\n Role\n \n \n \n {tableData.map((row) => (\n \n \n \n handleSelectRow(row.id, checked === true)\n }\n />\n \n {row.name}\n {row.email}\n {row.role}\n \n ))}\n \n
\n
\n )\n}\n\nfunction CheckboxGroup() {\n return (\n \n \n Show these items on the desktop:\n \n \n \n Hard disks\n \n \n \n \n \n External disks\n \n \n \n \n \n CDs, DVDs, and iPods\n \n \n \n \n \n Connected servers\n \n \n \n \n )\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Checkbox } from \"@/registry/base-lyra/ui/checkbox\"\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n FieldTitle,\n} from \"@/registry/base-lyra/ui/field\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/registry/base-lyra/ui/table\"\n\nexport default function CheckboxExample() {\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction CheckboxBasic() {\n return (\n \n \n \n Accept terms and conditions\n \n \n )\n}\n\nfunction CheckboxWithDescription() {\n return (\n \n \n \n \n Accept terms and conditions\n \n By clicking this checkbox, you agree to the terms and conditions.\n \n \n \n \n )\n}\n\nfunction CheckboxInvalid() {\n return (\n \n \n \n Accept terms and conditions\n \n \n )\n}\n\nfunction CheckboxDisabled() {\n return (\n \n \n \n Enable notifications\n \n \n )\n}\n\nfunction CheckboxWithTitle() {\n return (\n \n \n \n \n \n \n Enable notifications\n \n You can enable or disable notifications at any time.\n \n \n \n \n \n \n \n \n Enable notifications\n \n You can enable or disable notifications at any time.\n \n \n \n \n \n \n )\n}\n\nconst tableData = [\n {\n id: \"1\",\n name: \"Sarah Chen\",\n email: \"sarah.chen@example.com\",\n role: \"Admin\",\n },\n {\n id: \"2\",\n name: \"Marcus Rodriguez\",\n email: \"marcus.rodriguez@example.com\",\n role: \"User\",\n },\n {\n id: \"3\",\n name: \"Priya Patel\",\n email: \"priya.patel@example.com\",\n role: \"User\",\n },\n {\n id: \"4\",\n name: \"David Kim\",\n email: \"david.kim@example.com\",\n role: \"Editor\",\n },\n]\n\nfunction CheckboxInTable() {\n const [selectedRows, setSelectedRows] = React.useState>(\n new Set([\"1\"])\n )\n\n const selectAll = selectedRows.size === tableData.length\n\n const handleSelectAll = (checked: boolean) => {\n if (checked) {\n setSelectedRows(new Set(tableData.map((row) => row.id)))\n } else {\n setSelectedRows(new Set())\n }\n }\n\n const handleSelectRow = (id: string, checked: boolean) => {\n const newSelected = new Set(selectedRows)\n if (checked) {\n newSelected.add(id)\n } else {\n newSelected.delete(id)\n }\n setSelectedRows(newSelected)\n }\n\n return (\n \n \n \n \n \n \n \n Name\n Email\n Role\n \n \n \n {tableData.map((row) => (\n \n \n \n handleSelectRow(row.id, checked === true)\n }\n />\n \n {row.name}\n {row.email}\n {row.role}\n \n ))}\n \n
\n
\n )\n}\n\nfunction CheckboxGroup() {\n return (\n \n \n Show these items on the desktop:\n \n \n \n Hard disks\n \n \n \n \n \n External disks\n \n \n \n \n \n CDs, DVDs, and iPods\n \n \n \n \n \n Connected servers\n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/checkbox-with-text.json b/apps/v4/public/r/styles/base-lyra/checkbox-with-text.json new file mode 100644 index 0000000000..9b7409ebfb --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/checkbox-with-text.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "checkbox-with-text", + "title": "Checkbox With Text", + "registryDependencies": [ + "checkbox" + ], + "files": [ + { + "path": "registry/base-lyra/demo/checkbox-with-text.tsx", + "content": "\"use client\"\n\nimport { Checkbox } from \"@/registry/base-lyra/ui/checkbox\"\n\nexport default function CheckboxWithText() {\n return (\n
\n \n
\n \n Accept terms and conditions\n \n

\n You agree to our Terms of Service and Privacy Policy.\n

\n
\n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/checkbox.json b/apps/v4/public/r/styles/base-lyra/checkbox.json index 6c89458e9f..359e63c2a7 100644 --- a/apps/v4/public/r/styles/base-lyra/checkbox.json +++ b/apps/v4/public/r/styles/base-lyra/checkbox.json @@ -4,7 +4,7 @@ "files": [ { "path": "registry/base-lyra/ui/checkbox.tsx", - "content": "\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n \n svg]:size-3.5 grid place-content-center text-current transition-none\"\n >\n \n \n \n )\n}\n\nexport { Checkbox }\n", + "content": "\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@/registry/base-lyra/lib/utils\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n \n svg]:size-3.5 grid place-content-center text-current transition-none\"\n >\n \n \n \n )\n}\n\nexport { Checkbox }\n", "type": "registry:ui" } ], diff --git a/apps/v4/public/r/styles/base-lyra/collapsible-demo.json b/apps/v4/public/r/styles/base-lyra/collapsible-demo.json new file mode 100644 index 0000000000..ff3d684ce7 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/collapsible-demo.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "collapsible-demo", + "title": "Collapsible Demo", + "registryDependencies": [ + "button", + "collapsible" + ], + "files": [ + { + "path": "registry/base-lyra/demo/collapsible-demo.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronsUpDown } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/registry/base-lyra/ui/collapsible\"\n\nexport default function CollapsibleDemo() {\n const [isOpen, setIsOpen] = React.useState(false)\n\n return (\n \n
\n

\n @peduarte starred 3 repositories\n

\n \n \n \n
\n
\n @radix-ui/primitives\n
\n \n
\n @radix-ui/colors\n
\n
\n @stitches/react\n
\n
\n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/collapsible-example.json b/apps/v4/public/r/styles/base-lyra/collapsible-example.json index 209ae3808b..aa2f0d33b3 100644 --- a/apps/v4/public/r/styles/base-lyra/collapsible-example.json +++ b/apps/v4/public/r/styles/base-lyra/collapsible-example.json @@ -14,7 +14,7 @@ "files": [ { "path": "registry/base-lyra/examples/collapsible-example.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/bases/base/ui/card\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/registry/bases/base/ui/collapsible\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/registry/bases/base/ui/tabs\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CollapsibleExample() {\n return (\n \n \n \n \n )\n}\n\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\n\nfunction CollapsibleFileTree() {\n const fileTree: FileTreeItem[] = [\n {\n name: \"components\",\n items: [\n {\n name: \"ui\",\n items: [\n { name: \"button.tsx\" },\n { name: \"card.tsx\" },\n { name: \"dialog.tsx\" },\n { name: \"input.tsx\" },\n { name: \"select.tsx\" },\n { name: \"table.tsx\" },\n ],\n },\n { name: \"login-form.tsx\" },\n { name: \"register-form.tsx\" },\n ],\n },\n {\n name: \"lib\",\n items: [{ name: \"utils.ts\" }, { name: \"cn.ts\" }, { name: \"api.ts\" }],\n },\n {\n name: \"hooks\",\n items: [\n { name: \"use-media-query.ts\" },\n { name: \"use-debounce.ts\" },\n { name: \"use-local-storage.ts\" },\n ],\n },\n {\n name: \"types\",\n items: [{ name: \"index.d.ts\" }, { name: \"api.d.ts\" }],\n },\n {\n name: \"public\",\n items: [\n { name: \"favicon.ico\" },\n { name: \"logo.svg\" },\n { name: \"images\" },\n ],\n },\n { name: \"app.tsx\" },\n { name: \"layout.tsx\" },\n { name: \"globals.css\" },\n { name: \"package.json\" },\n { name: \"tsconfig.json\" },\n { name: \"README.md\" },\n { name: \".gitignore\" },\n ]\n\n const renderItem = (fileItem: FileTreeItem) => {\n if (\"items\" in fileItem) {\n return (\n \n \n }\n >\n \n \n {fileItem.name}\n \n \n
\n {fileItem.items.map((child) => renderItem(child))}\n
\n
\n
\n )\n }\n return (\n \n \n {fileItem.name}\n \n )\n }\n\n return (\n \n \n \n \n \n Explorer\n Outline\n \n \n \n \n
\n {fileTree.map((item) => renderItem(item))}\n
\n
\n
\n
\n )\n}\n\nfunction CollapsibleSettings() {\n const [isOpen, setIsOpen] = React.useState(false)\n\n return (\n \n \n \n Radius\n \n Set the corner radius of the element.\n \n \n \n \n \n \n \n Radius X\n \n \n \n \n \n Radius Y\n \n \n \n \n \n \n Radius X\n \n \n \n \n \n Radius Y\n \n \n \n \n \n }\n >\n {isOpen ? (\n \n ) : (\n \n )}\n \n \n \n \n \n )\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/base-lyra/ui/card\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/registry/base-lyra/ui/collapsible\"\nimport { Field, FieldGroup, FieldLabel } from \"@/registry/base-lyra/ui/field\"\nimport { Input } from \"@/registry/base-lyra/ui/input\"\nimport { Tabs, TabsList, TabsTrigger } from \"@/registry/base-lyra/ui/tabs\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function CollapsibleExample() {\n return (\n \n \n \n \n )\n}\n\ntype FileTreeItem = { name: string } | { name: string; items: FileTreeItem[] }\n\nfunction CollapsibleFileTree() {\n const fileTree: FileTreeItem[] = [\n {\n name: \"components\",\n items: [\n {\n name: \"ui\",\n items: [\n { name: \"button.tsx\" },\n { name: \"card.tsx\" },\n { name: \"dialog.tsx\" },\n { name: \"input.tsx\" },\n { name: \"select.tsx\" },\n { name: \"table.tsx\" },\n ],\n },\n { name: \"login-form.tsx\" },\n { name: \"register-form.tsx\" },\n ],\n },\n {\n name: \"lib\",\n items: [{ name: \"utils.ts\" }, { name: \"cn.ts\" }, { name: \"api.ts\" }],\n },\n {\n name: \"hooks\",\n items: [\n { name: \"use-media-query.ts\" },\n { name: \"use-debounce.ts\" },\n { name: \"use-local-storage.ts\" },\n ],\n },\n {\n name: \"types\",\n items: [{ name: \"index.d.ts\" }, { name: \"api.d.ts\" }],\n },\n {\n name: \"public\",\n items: [\n { name: \"favicon.ico\" },\n { name: \"logo.svg\" },\n { name: \"images\" },\n ],\n },\n { name: \"app.tsx\" },\n { name: \"layout.tsx\" },\n { name: \"globals.css\" },\n { name: \"package.json\" },\n { name: \"tsconfig.json\" },\n { name: \"README.md\" },\n { name: \".gitignore\" },\n ]\n\n const renderItem = (fileItem: FileTreeItem) => {\n if (\"items\" in fileItem) {\n return (\n \n \n }\n >\n \n \n {fileItem.name}\n \n \n
\n {fileItem.items.map((child) => renderItem(child))}\n
\n
\n
\n )\n }\n return (\n \n \n {fileItem.name}\n \n )\n }\n\n return (\n \n \n \n \n \n Explorer\n Outline\n \n \n \n \n
\n {fileTree.map((item) => renderItem(item))}\n
\n
\n
\n
\n )\n}\n\nfunction CollapsibleSettings() {\n const [isOpen, setIsOpen] = React.useState(false)\n\n return (\n \n \n \n Radius\n \n Set the corner radius of the element.\n \n \n \n \n \n \n \n Radius X\n \n \n \n \n \n Radius Y\n \n \n \n \n \n \n Radius X\n \n \n \n \n \n Radius Y\n \n \n \n \n \n }\n >\n {isOpen ? (\n \n ) : (\n \n )}\n \n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/combobox-demo.json b/apps/v4/public/r/styles/base-lyra/combobox-demo.json new file mode 100644 index 0000000000..072420f7a8 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/combobox-demo.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "combobox-demo", + "title": "Combobox Demo", + "registryDependencies": [ + "button", + "command", + "popover" + ], + "files": [ + { + "path": "registry/base-lyra/demo/combobox-demo.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Check, ChevronsUpDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/base-lyra/ui/command\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/base-lyra/ui/popover\"\n\nconst frameworks = [\n {\n value: \"next.js\",\n label: \"Next.js\",\n },\n {\n value: \"sveltekit\",\n label: \"SvelteKit\",\n },\n {\n value: \"nuxt.js\",\n label: \"Nuxt.js\",\n },\n {\n value: \"remix\",\n label: \"Remix\",\n },\n {\n value: \"astro\",\n label: \"Astro\",\n },\n]\n\nexport default function ComboboxDemo() {\n const [open, setOpen] = React.useState(false)\n const [value, setValue] = React.useState(\"\")\n\n return (\n \n \n \n {value\n ? frameworks.find((framework) => framework.value === value)?.label\n : \"Select framework...\"}\n \n \n \n \n \n \n \n No framework found.\n \n {frameworks.map((framework) => (\n {\n setValue(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }}\n >\n {framework.label}\n \n \n ))}\n \n \n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/combobox-dropdown-menu.json b/apps/v4/public/r/styles/base-lyra/combobox-dropdown-menu.json new file mode 100644 index 0000000000..84e5634ae6 --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/combobox-dropdown-menu.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "combobox-dropdown-menu", + "title": "Combobox Dropdown Menu", + "registryDependencies": [ + "button", + "command", + "dropdown-menu" + ], + "files": [ + { + "path": "registry/base-lyra/demo/combobox-dropdown-menu.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { MoreHorizontal } from \"lucide-react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/base-lyra/ui/command\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"@/registry/base-lyra/ui/dropdown-menu\"\n\nconst labels = [\n \"feature\",\n \"bug\",\n \"enhancement\",\n \"documentation\",\n \"design\",\n \"question\",\n \"maintenance\",\n]\n\nexport default function ComboboxDropdownMenu() {\n const [label, setLabel] = React.useState(\"feature\")\n const [open, setOpen] = React.useState(false)\n\n return (\n
\n

\n \n {label}\n \n Create a new project\n

\n \n \n \n \n \n Actions\n \n Assign to...\n Set due date...\n \n \n Apply label\n \n \n \n \n No label found.\n \n {labels.map((label) => (\n {\n setLabel(value)\n setOpen(false)\n }}\n >\n {label}\n \n ))}\n \n \n \n \n \n \n \n Delete\n ⌘⌫\n \n \n \n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/combobox-example.json b/apps/v4/public/r/styles/base-lyra/combobox-example.json index 0e4f09d128..5440f0211b 100644 --- a/apps/v4/public/r/styles/base-lyra/combobox-example.json +++ b/apps/v4/public/r/styles/base-lyra/combobox-example.json @@ -17,7 +17,7 @@ "files": [ { "path": "registry/base-lyra/examples/combobox-example.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { toast } from \"sonner\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/bases/base/components/example\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/bases/base/ui/card\"\nimport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxInput,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList,\n ComboboxSeparator,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n} from \"@/registry/bases/base/ui/combobox\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/bases/base/ui/dialog\"\nimport {\n Field,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n} from \"@/registry/bases/base/ui/field\"\nimport { Input } from \"@/registry/bases/base/ui/input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport {\n Item,\n ItemContent,\n ItemDescription,\n ItemTitle,\n} from \"@/registry/bases/base/ui/item\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/bases/base/ui/select\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ComboboxExample() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nconst frameworks = [\n \"Next.js\",\n \"SvelteKit\",\n \"Nuxt.js\",\n \"Remix\",\n \"Astro\",\n] as const\n\nconst countries = [\n { code: \"\", value: \"\", continent: \"\", label: \"Select country\" },\n { code: \"af\", value: \"afghanistan\", label: \"Afghanistan\", continent: \"Asia\" },\n { code: \"al\", value: \"albania\", label: \"Albania\", continent: \"Europe\" },\n { code: \"dz\", value: \"algeria\", label: \"Algeria\", continent: \"Africa\" },\n { code: \"ad\", value: \"andorra\", label: \"Andorra\", continent: \"Europe\" },\n { code: \"ao\", value: \"angola\", label: \"Angola\", continent: \"Africa\" },\n {\n code: \"ar\",\n value: \"argentina\",\n label: \"Argentina\",\n continent: \"South America\",\n },\n { code: \"am\", value: \"armenia\", label: \"Armenia\", continent: \"Asia\" },\n { code: \"au\", value: \"australia\", label: \"Australia\", continent: \"Oceania\" },\n { code: \"at\", value: \"austria\", label: \"Austria\", continent: \"Europe\" },\n { code: \"az\", value: \"azerbaijan\", label: \"Azerbaijan\", continent: \"Asia\" },\n {\n code: \"bs\",\n value: \"bahamas\",\n label: \"Bahamas\",\n continent: \"North America\",\n },\n { code: \"bh\", value: \"bahrain\", label: \"Bahrain\", continent: \"Asia\" },\n { code: \"bd\", value: \"bangladesh\", label: \"Bangladesh\", continent: \"Asia\" },\n {\n code: \"bb\",\n value: \"barbados\",\n label: \"Barbados\",\n continent: \"North America\",\n },\n { code: \"by\", value: \"belarus\", label: \"Belarus\", continent: \"Europe\" },\n { code: \"be\", value: \"belgium\", label: \"Belgium\", continent: \"Europe\" },\n { code: \"bz\", value: \"belize\", label: \"Belize\", continent: \"North America\" },\n { code: \"bj\", value: \"benin\", label: \"Benin\", continent: \"Africa\" },\n { code: \"bt\", value: \"bhutan\", label: \"Bhutan\", continent: \"Asia\" },\n {\n code: \"bo\",\n value: \"bolivia\",\n label: \"Bolivia\",\n continent: \"South America\",\n },\n {\n code: \"ba\",\n value: \"bosnia-and-herzegovina\",\n label: \"Bosnia and Herzegovina\",\n continent: \"Europe\",\n },\n { code: \"bw\", value: \"botswana\", label: \"Botswana\", continent: \"Africa\" },\n { code: \"br\", value: \"brazil\", label: \"Brazil\", continent: \"South America\" },\n { code: \"bn\", value: \"brunei\", label: \"Brunei\", continent: \"Asia\" },\n { code: \"bg\", value: \"bulgaria\", label: \"Bulgaria\", continent: \"Europe\" },\n {\n code: \"bf\",\n value: \"burkina-faso\",\n label: \"Burkina Faso\",\n continent: \"Africa\",\n },\n { code: \"bi\", value: \"burundi\", label: \"Burundi\", continent: \"Africa\" },\n { code: \"kh\", value: \"cambodia\", label: \"Cambodia\", continent: \"Asia\" },\n { code: \"cm\", value: \"cameroon\", label: \"Cameroon\", continent: \"Africa\" },\n { code: \"ca\", value: \"canada\", label: \"Canada\", continent: \"North America\" },\n { code: \"cv\", value: \"cape-verde\", label: \"Cape Verde\", continent: \"Africa\" },\n {\n code: \"cf\",\n value: \"central-african-republic\",\n label: \"Central African Republic\",\n continent: \"Africa\",\n },\n { code: \"td\", value: \"chad\", label: \"Chad\", continent: \"Africa\" },\n { code: \"cl\", value: \"chile\", label: \"Chile\", continent: \"South America\" },\n { code: \"cn\", value: \"china\", label: \"China\", continent: \"Asia\" },\n {\n code: \"co\",\n value: \"colombia\",\n label: \"Colombia\",\n continent: \"South America\",\n },\n { code: \"km\", value: \"comoros\", label: \"Comoros\", continent: \"Africa\" },\n { code: \"cg\", value: \"congo\", label: \"Congo\", continent: \"Africa\" },\n {\n code: \"cr\",\n value: \"costa-rica\",\n label: \"Costa Rica\",\n continent: \"North America\",\n },\n { code: \"hr\", value: \"croatia\", label: \"Croatia\", continent: \"Europe\" },\n { code: \"cu\", value: \"cuba\", label: \"Cuba\", continent: \"North America\" },\n { code: \"cy\", value: \"cyprus\", label: \"Cyprus\", continent: \"Asia\" },\n {\n code: \"cz\",\n value: \"czech-republic\",\n label: \"Czech Republic\",\n continent: \"Europe\",\n },\n { code: \"dk\", value: \"denmark\", label: \"Denmark\", continent: \"Europe\" },\n { code: \"dj\", value: \"djibouti\", label: \"Djibouti\", continent: \"Africa\" },\n {\n code: \"dm\",\n value: \"dominica\",\n label: \"Dominica\",\n continent: \"North America\",\n },\n {\n code: \"do\",\n value: \"dominican-republic\",\n label: \"Dominican Republic\",\n continent: \"North America\",\n },\n {\n code: \"ec\",\n value: \"ecuador\",\n label: \"Ecuador\",\n continent: \"South America\",\n },\n { code: \"eg\", value: \"egypt\", label: \"Egypt\", continent: \"Africa\" },\n {\n code: \"sv\",\n value: \"el-salvador\",\n label: \"El Salvador\",\n continent: \"North America\",\n },\n {\n code: \"gq\",\n value: \"equatorial-guinea\",\n label: \"Equatorial Guinea\",\n continent: \"Africa\",\n },\n { code: \"er\", value: \"eritrea\", label: \"Eritrea\", continent: \"Africa\" },\n { code: \"ee\", value: \"estonia\", label: \"Estonia\", continent: \"Europe\" },\n { code: \"et\", value: \"ethiopia\", label: \"Ethiopia\", continent: \"Africa\" },\n { code: \"fj\", value: \"fiji\", label: \"Fiji\", continent: \"Oceania\" },\n { code: \"fi\", value: \"finland\", label: \"Finland\", continent: \"Europe\" },\n { code: \"fr\", value: \"france\", label: \"France\", continent: \"Europe\" },\n { code: \"ga\", value: \"gabon\", label: \"Gabon\", continent: \"Africa\" },\n { code: \"gm\", value: \"gambia\", label: \"Gambia\", continent: \"Africa\" },\n { code: \"ge\", value: \"georgia\", label: \"Georgia\", continent: \"Asia\" },\n { code: \"de\", value: \"germany\", label: \"Germany\", continent: \"Europe\" },\n { code: \"gh\", value: \"ghana\", label: \"Ghana\", continent: \"Africa\" },\n { code: \"gr\", value: \"greece\", label: \"Greece\", continent: \"Europe\" },\n {\n code: \"gd\",\n value: \"grenada\",\n label: \"Grenada\",\n continent: \"North America\",\n },\n {\n code: \"gt\",\n value: \"guatemala\",\n label: \"Guatemala\",\n continent: \"North America\",\n },\n { code: \"gn\", value: \"guinea\", label: \"Guinea\", continent: \"Africa\" },\n {\n code: \"gw\",\n value: \"guinea-bissau\",\n label: \"Guinea-Bissau\",\n continent: \"Africa\",\n },\n { code: \"gy\", value: \"guyana\", label: \"Guyana\", continent: \"South America\" },\n { code: \"ht\", value: \"haiti\", label: \"Haiti\", continent: \"North America\" },\n {\n code: \"hn\",\n value: \"honduras\",\n label: \"Honduras\",\n continent: \"North America\",\n },\n { code: \"hu\", value: \"hungary\", label: \"Hungary\", continent: \"Europe\" },\n { code: \"is\", value: \"iceland\", label: \"Iceland\", continent: \"Europe\" },\n { code: \"in\", value: \"india\", label: \"India\", continent: \"Asia\" },\n { code: \"id\", value: \"indonesia\", label: \"Indonesia\", continent: \"Asia\" },\n { code: \"ir\", value: \"iran\", label: \"Iran\", continent: \"Asia\" },\n { code: \"iq\", value: \"iraq\", label: \"Iraq\", continent: \"Asia\" },\n { code: \"ie\", value: \"ireland\", label: \"Ireland\", continent: \"Europe\" },\n { code: \"il\", value: \"israel\", label: \"Israel\", continent: \"Asia\" },\n { code: \"it\", value: \"italy\", label: \"Italy\", continent: \"Europe\" },\n {\n code: \"jm\",\n value: \"jamaica\",\n label: \"Jamaica\",\n continent: \"North America\",\n },\n { code: \"jp\", value: \"japan\", label: \"Japan\", continent: \"Asia\" },\n { code: \"jo\", value: \"jordan\", label: \"Jordan\", continent: \"Asia\" },\n { code: \"kz\", value: \"kazakhstan\", label: \"Kazakhstan\", continent: \"Asia\" },\n { code: \"ke\", value: \"kenya\", label: \"Kenya\", continent: \"Africa\" },\n { code: \"kw\", value: \"kuwait\", label: \"Kuwait\", continent: \"Asia\" },\n { code: \"kg\", value: \"kyrgyzstan\", label: \"Kyrgyzstan\", continent: \"Asia\" },\n { code: \"la\", value: \"laos\", label: \"Laos\", continent: \"Asia\" },\n { code: \"lv\", value: \"latvia\", label: \"Latvia\", continent: \"Europe\" },\n { code: \"lb\", value: \"lebanon\", label: \"Lebanon\", continent: \"Asia\" },\n { code: \"ls\", value: \"lesotho\", label: \"Lesotho\", continent: \"Africa\" },\n { code: \"lr\", value: \"liberia\", label: \"Liberia\", continent: \"Africa\" },\n { code: \"ly\", value: \"libya\", label: \"Libya\", continent: \"Africa\" },\n {\n code: \"li\",\n value: \"liechtenstein\",\n label: \"Liechtenstein\",\n continent: \"Europe\",\n },\n { code: \"lt\", value: \"lithuania\", label: \"Lithuania\", continent: \"Europe\" },\n { code: \"lu\", value: \"luxembourg\", label: \"Luxembourg\", continent: \"Europe\" },\n { code: \"mg\", value: \"madagascar\", label: \"Madagascar\", continent: \"Africa\" },\n { code: \"mw\", value: \"malawi\", label: \"Malawi\", continent: \"Africa\" },\n { code: \"my\", value: \"malaysia\", label: \"Malaysia\", continent: \"Asia\" },\n { code: \"mv\", value: \"maldives\", label: \"Maldives\", continent: \"Asia\" },\n { code: \"ml\", value: \"mali\", label: \"Mali\", continent: \"Africa\" },\n { code: \"mt\", value: \"malta\", label: \"Malta\", continent: \"Europe\" },\n {\n code: \"mh\",\n value: \"marshall-islands\",\n label: \"Marshall Islands\",\n continent: \"Oceania\",\n },\n { code: \"mr\", value: \"mauritania\", label: \"Mauritania\", continent: \"Africa\" },\n { code: \"mu\", value: \"mauritius\", label: \"Mauritius\", continent: \"Africa\" },\n { code: \"mx\", value: \"mexico\", label: \"Mexico\", continent: \"North America\" },\n {\n code: \"fm\",\n value: \"micronesia\",\n label: \"Micronesia\",\n continent: \"Oceania\",\n },\n { code: \"md\", value: \"moldova\", label: \"Moldova\", continent: \"Europe\" },\n { code: \"mc\", value: \"monaco\", label: \"Monaco\", continent: \"Europe\" },\n { code: \"mn\", value: \"mongolia\", label: \"Mongolia\", continent: \"Asia\" },\n { code: \"me\", value: \"montenegro\", label: \"Montenegro\", continent: \"Europe\" },\n { code: \"ma\", value: \"morocco\", label: \"Morocco\", continent: \"Africa\" },\n { code: \"mz\", value: \"mozambique\", label: \"Mozambique\", continent: \"Africa\" },\n { code: \"mm\", value: \"myanmar\", label: \"Myanmar\", continent: \"Asia\" },\n { code: \"na\", value: \"namibia\", label: \"Namibia\", continent: \"Africa\" },\n { code: \"nr\", value: \"nauru\", label: \"Nauru\", continent: \"Oceania\" },\n { code: \"np\", value: \"nepal\", label: \"Nepal\", continent: \"Asia\" },\n {\n code: \"nl\",\n value: \"netherlands\",\n label: \"Netherlands\",\n continent: \"Europe\",\n },\n {\n code: \"nz\",\n value: \"new-zealand\",\n label: \"New Zealand\",\n continent: \"Oceania\",\n },\n {\n code: \"ni\",\n value: \"nicaragua\",\n label: \"Nicaragua\",\n continent: \"North America\",\n },\n { code: \"ne\", value: \"niger\", label: \"Niger\", continent: \"Africa\" },\n { code: \"ng\", value: \"nigeria\", label: \"Nigeria\", continent: \"Africa\" },\n { code: \"kp\", value: \"north-korea\", label: \"North Korea\", continent: \"Asia\" },\n {\n code: \"mk\",\n value: \"north-macedonia\",\n label: \"North Macedonia\",\n continent: \"Europe\",\n },\n { code: \"no\", value: \"norway\", label: \"Norway\", continent: \"Europe\" },\n { code: \"om\", value: \"oman\", label: \"Oman\", continent: \"Asia\" },\n { code: \"pk\", value: \"pakistan\", label: \"Pakistan\", continent: \"Asia\" },\n { code: \"pw\", value: \"palau\", label: \"Palau\", continent: \"Oceania\" },\n { code: \"ps\", value: \"palestine\", label: \"Palestine\", continent: \"Asia\" },\n { code: \"pa\", value: \"panama\", label: \"Panama\", continent: \"North America\" },\n {\n code: \"pg\",\n value: \"papua-new-guinea\",\n label: \"Papua New Guinea\",\n continent: \"Oceania\",\n },\n {\n code: \"py\",\n value: \"paraguay\",\n label: \"Paraguay\",\n continent: \"South America\",\n },\n { code: \"pe\", value: \"peru\", label: \"Peru\", continent: \"South America\" },\n { code: \"ph\", value: \"philippines\", label: \"Philippines\", continent: \"Asia\" },\n { code: \"pl\", value: \"poland\", label: \"Poland\", continent: \"Europe\" },\n { code: \"pt\", value: \"portugal\", label: \"Portugal\", continent: \"Europe\" },\n { code: \"qa\", value: \"qatar\", label: \"Qatar\", continent: \"Asia\" },\n { code: \"ro\", value: \"romania\", label: \"Romania\", continent: \"Europe\" },\n { code: \"ru\", value: \"russia\", label: \"Russia\", continent: \"Europe\" },\n { code: \"rw\", value: \"rwanda\", label: \"Rwanda\", continent: \"Africa\" },\n { code: \"ws\", value: \"samoa\", label: \"Samoa\", continent: \"Oceania\" },\n { code: \"sm\", value: \"san-marino\", label: \"San Marino\", continent: \"Europe\" },\n {\n code: \"sa\",\n value: \"saudi-arabia\",\n label: \"Saudi Arabia\",\n continent: \"Asia\",\n },\n { code: \"sn\", value: \"senegal\", label: \"Senegal\", continent: \"Africa\" },\n { code: \"rs\", value: \"serbia\", label: \"Serbia\", continent: \"Europe\" },\n { code: \"sc\", value: \"seychelles\", label: \"Seychelles\", continent: \"Africa\" },\n {\n code: \"sl\",\n value: \"sierra-leone\",\n label: \"Sierra Leone\",\n continent: \"Africa\",\n },\n { code: \"sg\", value: \"singapore\", label: \"Singapore\", continent: \"Asia\" },\n { code: \"sk\", value: \"slovakia\", label: \"Slovakia\", continent: \"Europe\" },\n { code: \"si\", value: \"slovenia\", label: \"Slovenia\", continent: \"Europe\" },\n {\n code: \"sb\",\n value: \"solomon-islands\",\n label: \"Solomon Islands\",\n continent: \"Oceania\",\n },\n { code: \"so\", value: \"somalia\", label: \"Somalia\", continent: \"Africa\" },\n {\n code: \"za\",\n value: \"south-africa\",\n label: \"South Africa\",\n continent: \"Africa\",\n },\n { code: \"kr\", value: \"south-korea\", label: \"South Korea\", continent: \"Asia\" },\n {\n code: \"ss\",\n value: \"south-sudan\",\n label: \"South Sudan\",\n continent: \"Africa\",\n },\n { code: \"es\", value: \"spain\", label: \"Spain\", continent: \"Europe\" },\n { code: \"lk\", value: \"sri-lanka\", label: \"Sri Lanka\", continent: \"Asia\" },\n { code: \"sd\", value: \"sudan\", label: \"Sudan\", continent: \"Africa\" },\n {\n code: \"sr\",\n value: \"suriname\",\n label: \"Suriname\",\n continent: \"South America\",\n },\n { code: \"se\", value: \"sweden\", label: \"Sweden\", continent: \"Europe\" },\n {\n code: \"ch\",\n value: \"switzerland\",\n label: \"Switzerland\",\n continent: \"Europe\",\n },\n { code: \"sy\", value: \"syria\", label: \"Syria\", continent: \"Asia\" },\n { code: \"tw\", value: \"taiwan\", label: \"Taiwan\", continent: \"Asia\" },\n { code: \"tj\", value: \"tajikistan\", label: \"Tajikistan\", continent: \"Asia\" },\n { code: \"tz\", value: \"tanzania\", label: \"Tanzania\", continent: \"Africa\" },\n { code: \"th\", value: \"thailand\", label: \"Thailand\", continent: \"Asia\" },\n { code: \"tl\", value: \"timor-leste\", label: \"Timor-Leste\", continent: \"Asia\" },\n { code: \"tg\", value: \"togo\", label: \"Togo\", continent: \"Africa\" },\n { code: \"to\", value: \"tonga\", label: \"Tonga\", continent: \"Oceania\" },\n {\n code: \"tt\",\n value: \"trinidad-and-tobago\",\n label: \"Trinidad and Tobago\",\n continent: \"North America\",\n },\n { code: \"tn\", value: \"tunisia\", label: \"Tunisia\", continent: \"Africa\" },\n { code: \"tr\", value: \"turkey\", label: \"Turkey\", continent: \"Asia\" },\n {\n code: \"tm\",\n value: \"turkmenistan\",\n label: \"Turkmenistan\",\n continent: \"Asia\",\n },\n { code: \"tv\", value: \"tuvalu\", label: \"Tuvalu\", continent: \"Oceania\" },\n { code: \"ug\", value: \"uganda\", label: \"Uganda\", continent: \"Africa\" },\n { code: \"ua\", value: \"ukraine\", label: \"Ukraine\", continent: \"Europe\" },\n {\n code: \"ae\",\n value: \"united-arab-emirates\",\n label: \"United Arab Emirates\",\n continent: \"Asia\",\n },\n {\n code: \"gb\",\n value: \"united-kingdom\",\n label: \"United Kingdom\",\n continent: \"Europe\",\n },\n {\n code: \"us\",\n value: \"united-states\",\n label: \"United States\",\n continent: \"North America\",\n },\n {\n code: \"uy\",\n value: \"uruguay\",\n label: \"Uruguay\",\n continent: \"South America\",\n },\n { code: \"uz\", value: \"uzbekistan\", label: \"Uzbekistan\", continent: \"Asia\" },\n { code: \"vu\", value: \"vanuatu\", label: \"Vanuatu\", continent: \"Oceania\" },\n {\n code: \"va\",\n value: \"vatican-city\",\n label: \"Vatican City\",\n continent: \"Europe\",\n },\n {\n code: \"ve\",\n value: \"venezuela\",\n label: \"Venezuela\",\n continent: \"South America\",\n },\n { code: \"vn\", value: \"vietnam\", label: \"Vietnam\", continent: \"Asia\" },\n { code: \"ye\", value: \"yemen\", label: \"Yemen\", continent: \"Asia\" },\n { code: \"zm\", value: \"zambia\", label: \"Zambia\", continent: \"Africa\" },\n { code: \"zw\", value: \"zimbabwe\", label: \"Zimbabwe\", continent: \"Africa\" },\n]\n\nconst timezones = [\n {\n value: \"Americas\",\n items: [\n \"(GMT-5) New York\",\n \"(GMT-8) Los Angeles\",\n \"(GMT-6) Chicago\",\n \"(GMT-5) Toronto\",\n \"(GMT-8) Vancouver\",\n \"(GMT-3) São Paulo\",\n ],\n },\n {\n value: \"Europe\",\n items: [\n \"(GMT+0) London\",\n \"(GMT+1) Paris\",\n \"(GMT+1) Berlin\",\n \"(GMT+1) Rome\",\n \"(GMT+1) Madrid\",\n \"(GMT+1) Amsterdam\",\n ],\n },\n {\n value: \"Asia/Pacific\",\n items: [\n \"(GMT+9) Tokyo\",\n \"(GMT+8) Shanghai\",\n \"(GMT+8) Singapore\",\n \"(GMT+4) Dubai\",\n \"(GMT+11) Sydney\",\n \"(GMT+9) Seoul\",\n ],\n },\n] as const\n\nfunction ComboboxBasic() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxDisabled() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxInvalid() {\n return (\n \n
\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n Framework\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n Please select a valid framework.\n \n \n
\n
\n )\n}\n\nfunction ComboboxWithClear() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxWithGroups() {\n return (\n \n \n \n \n No timezones found.\n \n {(group) => (\n \n {group.value}\n \n {(item) => (\n \n {item}\n \n )}\n \n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxWithGroupsAndSeparator() {\n return (\n \n \n \n \n No timezones found.\n \n {(group) => (\n \n {group.value}\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxWithForm() {\n const handleSubmit = (event: React.FormEvent) => {\n event.preventDefault()\n const formData = new FormData(event.target as HTMLFormElement)\n const framework = formData.get(\"framework\") as string\n toast(`You selected ${framework} as your framework.`)\n }\n\n return (\n \n \n \n \n \n \n Framework\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\n\nfunction ComboboxLargeList() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxAutoHighlight() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboxboxInputAddon() {\n return (\n \n \n \n \n \n \n \n \n No timezones found.\n \n {(group) => (\n \n {group.value}\n \n {(item) => (\n \n {item}\n \n )}\n \n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxInPopup() {\n return (\n \n \n \n }\n >\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item.label}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxMultiple() {\n const anchor = useComboboxAnchor()\n\n return (\n \n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n {value}\n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxMultipleDisabled() {\n const anchor = useComboboxAnchor()\n\n return (\n \n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n {value}\n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxMultipleInvalid() {\n const anchor1 = useComboboxAnchor()\n const anchor2 = useComboboxAnchor()\n\n return (\n \n
\n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n {value}\n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n Frameworks\n \n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n {value}\n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n Please select at least one framework.\n \n \n \n
\n
\n )\n}\n\nfunction ComboboxMultipleNoRemove() {\n const anchor = useComboboxAnchor()\n\n return (\n \n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n \n {value}\n \n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxWithCustomItems() {\n return (\n \n country.code !== \"\")}\n itemToStringValue={(country: (typeof countries)[number]) =>\n country.label\n }\n >\n \n \n No countries found.\n \n {(country) => (\n \n \n \n \n {country.label}\n \n \n {country.continent} ({country.code})\n \n \n \n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxInDialog() {\n const [open, setOpen] = React.useState(false)\n\n return (\n \n \n }>\n Open Dialog\n \n \n \n Select Framework\n \n Choose your preferred framework from the list below.\n \n \n \n \n Framework\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n setOpen(false)}\n >\n Cancel\n \n {\n toast(\"Framework selected.\")\n setOpen(false)\n }}\n >\n Confirm\n \n \n \n \n \n )\n}\n\nconst items = [\n {\n label: \"Select a framework\",\n value: null,\n },\n {\n label: \"React\",\n value: \"react\",\n },\n {\n label: \"Vue\",\n value: \"vue\",\n },\n {\n label: \"Angular\",\n value: \"angular\",\n },\n {\n label: \"Svelte\",\n value: \"svelte\",\n },\n {\n label: \"Solid\",\n value: \"solid\",\n },\n {\n label: \"Preact\",\n value: \"preact\",\n },\n {\n label: \"Next.js\",\n value: \"next.js\",\n },\n]\n\nfunction ComboboxWithOtherInputs() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n Select a framework\n \n \n \n \n \n \n \n \n \n \n )\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { toast } from \"sonner\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/base-lyra/components/example\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport { Card, CardContent, CardFooter } from \"@/registry/base-lyra/ui/card\"\nimport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxInput,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList,\n ComboboxSeparator,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor,\n} from \"@/registry/base-lyra/ui/combobox\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/registry/base-lyra/ui/dialog\"\nimport {\n Field,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n} from \"@/registry/base-lyra/ui/field\"\nimport { Input } from \"@/registry/base-lyra/ui/input\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@/registry/base-lyra/ui/input-group\"\nimport {\n Item,\n ItemContent,\n ItemDescription,\n ItemTitle,\n} from \"@/registry/base-lyra/ui/item\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/registry/base-lyra/ui/select\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ComboboxExample() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nconst frameworks = [\n \"Next.js\",\n \"SvelteKit\",\n \"Nuxt.js\",\n \"Remix\",\n \"Astro\",\n] as const\n\nconst countries = [\n { code: \"\", value: \"\", continent: \"\", label: \"Select country\" },\n { code: \"af\", value: \"afghanistan\", label: \"Afghanistan\", continent: \"Asia\" },\n { code: \"al\", value: \"albania\", label: \"Albania\", continent: \"Europe\" },\n { code: \"dz\", value: \"algeria\", label: \"Algeria\", continent: \"Africa\" },\n { code: \"ad\", value: \"andorra\", label: \"Andorra\", continent: \"Europe\" },\n { code: \"ao\", value: \"angola\", label: \"Angola\", continent: \"Africa\" },\n {\n code: \"ar\",\n value: \"argentina\",\n label: \"Argentina\",\n continent: \"South America\",\n },\n { code: \"am\", value: \"armenia\", label: \"Armenia\", continent: \"Asia\" },\n { code: \"au\", value: \"australia\", label: \"Australia\", continent: \"Oceania\" },\n { code: \"at\", value: \"austria\", label: \"Austria\", continent: \"Europe\" },\n { code: \"az\", value: \"azerbaijan\", label: \"Azerbaijan\", continent: \"Asia\" },\n {\n code: \"bs\",\n value: \"bahamas\",\n label: \"Bahamas\",\n continent: \"North America\",\n },\n { code: \"bh\", value: \"bahrain\", label: \"Bahrain\", continent: \"Asia\" },\n { code: \"bd\", value: \"bangladesh\", label: \"Bangladesh\", continent: \"Asia\" },\n {\n code: \"bb\",\n value: \"barbados\",\n label: \"Barbados\",\n continent: \"North America\",\n },\n { code: \"by\", value: \"belarus\", label: \"Belarus\", continent: \"Europe\" },\n { code: \"be\", value: \"belgium\", label: \"Belgium\", continent: \"Europe\" },\n { code: \"bz\", value: \"belize\", label: \"Belize\", continent: \"North America\" },\n { code: \"bj\", value: \"benin\", label: \"Benin\", continent: \"Africa\" },\n { code: \"bt\", value: \"bhutan\", label: \"Bhutan\", continent: \"Asia\" },\n {\n code: \"bo\",\n value: \"bolivia\",\n label: \"Bolivia\",\n continent: \"South America\",\n },\n {\n code: \"ba\",\n value: \"bosnia-and-herzegovina\",\n label: \"Bosnia and Herzegovina\",\n continent: \"Europe\",\n },\n { code: \"bw\", value: \"botswana\", label: \"Botswana\", continent: \"Africa\" },\n { code: \"br\", value: \"brazil\", label: \"Brazil\", continent: \"South America\" },\n { code: \"bn\", value: \"brunei\", label: \"Brunei\", continent: \"Asia\" },\n { code: \"bg\", value: \"bulgaria\", label: \"Bulgaria\", continent: \"Europe\" },\n {\n code: \"bf\",\n value: \"burkina-faso\",\n label: \"Burkina Faso\",\n continent: \"Africa\",\n },\n { code: \"bi\", value: \"burundi\", label: \"Burundi\", continent: \"Africa\" },\n { code: \"kh\", value: \"cambodia\", label: \"Cambodia\", continent: \"Asia\" },\n { code: \"cm\", value: \"cameroon\", label: \"Cameroon\", continent: \"Africa\" },\n { code: \"ca\", value: \"canada\", label: \"Canada\", continent: \"North America\" },\n { code: \"cv\", value: \"cape-verde\", label: \"Cape Verde\", continent: \"Africa\" },\n {\n code: \"cf\",\n value: \"central-african-republic\",\n label: \"Central African Republic\",\n continent: \"Africa\",\n },\n { code: \"td\", value: \"chad\", label: \"Chad\", continent: \"Africa\" },\n { code: \"cl\", value: \"chile\", label: \"Chile\", continent: \"South America\" },\n { code: \"cn\", value: \"china\", label: \"China\", continent: \"Asia\" },\n {\n code: \"co\",\n value: \"colombia\",\n label: \"Colombia\",\n continent: \"South America\",\n },\n { code: \"km\", value: \"comoros\", label: \"Comoros\", continent: \"Africa\" },\n { code: \"cg\", value: \"congo\", label: \"Congo\", continent: \"Africa\" },\n {\n code: \"cr\",\n value: \"costa-rica\",\n label: \"Costa Rica\",\n continent: \"North America\",\n },\n { code: \"hr\", value: \"croatia\", label: \"Croatia\", continent: \"Europe\" },\n { code: \"cu\", value: \"cuba\", label: \"Cuba\", continent: \"North America\" },\n { code: \"cy\", value: \"cyprus\", label: \"Cyprus\", continent: \"Asia\" },\n {\n code: \"cz\",\n value: \"czech-republic\",\n label: \"Czech Republic\",\n continent: \"Europe\",\n },\n { code: \"dk\", value: \"denmark\", label: \"Denmark\", continent: \"Europe\" },\n { code: \"dj\", value: \"djibouti\", label: \"Djibouti\", continent: \"Africa\" },\n {\n code: \"dm\",\n value: \"dominica\",\n label: \"Dominica\",\n continent: \"North America\",\n },\n {\n code: \"do\",\n value: \"dominican-republic\",\n label: \"Dominican Republic\",\n continent: \"North America\",\n },\n {\n code: \"ec\",\n value: \"ecuador\",\n label: \"Ecuador\",\n continent: \"South America\",\n },\n { code: \"eg\", value: \"egypt\", label: \"Egypt\", continent: \"Africa\" },\n {\n code: \"sv\",\n value: \"el-salvador\",\n label: \"El Salvador\",\n continent: \"North America\",\n },\n {\n code: \"gq\",\n value: \"equatorial-guinea\",\n label: \"Equatorial Guinea\",\n continent: \"Africa\",\n },\n { code: \"er\", value: \"eritrea\", label: \"Eritrea\", continent: \"Africa\" },\n { code: \"ee\", value: \"estonia\", label: \"Estonia\", continent: \"Europe\" },\n { code: \"et\", value: \"ethiopia\", label: \"Ethiopia\", continent: \"Africa\" },\n { code: \"fj\", value: \"fiji\", label: \"Fiji\", continent: \"Oceania\" },\n { code: \"fi\", value: \"finland\", label: \"Finland\", continent: \"Europe\" },\n { code: \"fr\", value: \"france\", label: \"France\", continent: \"Europe\" },\n { code: \"ga\", value: \"gabon\", label: \"Gabon\", continent: \"Africa\" },\n { code: \"gm\", value: \"gambia\", label: \"Gambia\", continent: \"Africa\" },\n { code: \"ge\", value: \"georgia\", label: \"Georgia\", continent: \"Asia\" },\n { code: \"de\", value: \"germany\", label: \"Germany\", continent: \"Europe\" },\n { code: \"gh\", value: \"ghana\", label: \"Ghana\", continent: \"Africa\" },\n { code: \"gr\", value: \"greece\", label: \"Greece\", continent: \"Europe\" },\n {\n code: \"gd\",\n value: \"grenada\",\n label: \"Grenada\",\n continent: \"North America\",\n },\n {\n code: \"gt\",\n value: \"guatemala\",\n label: \"Guatemala\",\n continent: \"North America\",\n },\n { code: \"gn\", value: \"guinea\", label: \"Guinea\", continent: \"Africa\" },\n {\n code: \"gw\",\n value: \"guinea-bissau\",\n label: \"Guinea-Bissau\",\n continent: \"Africa\",\n },\n { code: \"gy\", value: \"guyana\", label: \"Guyana\", continent: \"South America\" },\n { code: \"ht\", value: \"haiti\", label: \"Haiti\", continent: \"North America\" },\n {\n code: \"hn\",\n value: \"honduras\",\n label: \"Honduras\",\n continent: \"North America\",\n },\n { code: \"hu\", value: \"hungary\", label: \"Hungary\", continent: \"Europe\" },\n { code: \"is\", value: \"iceland\", label: \"Iceland\", continent: \"Europe\" },\n { code: \"in\", value: \"india\", label: \"India\", continent: \"Asia\" },\n { code: \"id\", value: \"indonesia\", label: \"Indonesia\", continent: \"Asia\" },\n { code: \"ir\", value: \"iran\", label: \"Iran\", continent: \"Asia\" },\n { code: \"iq\", value: \"iraq\", label: \"Iraq\", continent: \"Asia\" },\n { code: \"ie\", value: \"ireland\", label: \"Ireland\", continent: \"Europe\" },\n { code: \"il\", value: \"israel\", label: \"Israel\", continent: \"Asia\" },\n { code: \"it\", value: \"italy\", label: \"Italy\", continent: \"Europe\" },\n {\n code: \"jm\",\n value: \"jamaica\",\n label: \"Jamaica\",\n continent: \"North America\",\n },\n { code: \"jp\", value: \"japan\", label: \"Japan\", continent: \"Asia\" },\n { code: \"jo\", value: \"jordan\", label: \"Jordan\", continent: \"Asia\" },\n { code: \"kz\", value: \"kazakhstan\", label: \"Kazakhstan\", continent: \"Asia\" },\n { code: \"ke\", value: \"kenya\", label: \"Kenya\", continent: \"Africa\" },\n { code: \"kw\", value: \"kuwait\", label: \"Kuwait\", continent: \"Asia\" },\n { code: \"kg\", value: \"kyrgyzstan\", label: \"Kyrgyzstan\", continent: \"Asia\" },\n { code: \"la\", value: \"laos\", label: \"Laos\", continent: \"Asia\" },\n { code: \"lv\", value: \"latvia\", label: \"Latvia\", continent: \"Europe\" },\n { code: \"lb\", value: \"lebanon\", label: \"Lebanon\", continent: \"Asia\" },\n { code: \"ls\", value: \"lesotho\", label: \"Lesotho\", continent: \"Africa\" },\n { code: \"lr\", value: \"liberia\", label: \"Liberia\", continent: \"Africa\" },\n { code: \"ly\", value: \"libya\", label: \"Libya\", continent: \"Africa\" },\n {\n code: \"li\",\n value: \"liechtenstein\",\n label: \"Liechtenstein\",\n continent: \"Europe\",\n },\n { code: \"lt\", value: \"lithuania\", label: \"Lithuania\", continent: \"Europe\" },\n { code: \"lu\", value: \"luxembourg\", label: \"Luxembourg\", continent: \"Europe\" },\n { code: \"mg\", value: \"madagascar\", label: \"Madagascar\", continent: \"Africa\" },\n { code: \"mw\", value: \"malawi\", label: \"Malawi\", continent: \"Africa\" },\n { code: \"my\", value: \"malaysia\", label: \"Malaysia\", continent: \"Asia\" },\n { code: \"mv\", value: \"maldives\", label: \"Maldives\", continent: \"Asia\" },\n { code: \"ml\", value: \"mali\", label: \"Mali\", continent: \"Africa\" },\n { code: \"mt\", value: \"malta\", label: \"Malta\", continent: \"Europe\" },\n {\n code: \"mh\",\n value: \"marshall-islands\",\n label: \"Marshall Islands\",\n continent: \"Oceania\",\n },\n { code: \"mr\", value: \"mauritania\", label: \"Mauritania\", continent: \"Africa\" },\n { code: \"mu\", value: \"mauritius\", label: \"Mauritius\", continent: \"Africa\" },\n { code: \"mx\", value: \"mexico\", label: \"Mexico\", continent: \"North America\" },\n {\n code: \"fm\",\n value: \"micronesia\",\n label: \"Micronesia\",\n continent: \"Oceania\",\n },\n { code: \"md\", value: \"moldova\", label: \"Moldova\", continent: \"Europe\" },\n { code: \"mc\", value: \"monaco\", label: \"Monaco\", continent: \"Europe\" },\n { code: \"mn\", value: \"mongolia\", label: \"Mongolia\", continent: \"Asia\" },\n { code: \"me\", value: \"montenegro\", label: \"Montenegro\", continent: \"Europe\" },\n { code: \"ma\", value: \"morocco\", label: \"Morocco\", continent: \"Africa\" },\n { code: \"mz\", value: \"mozambique\", label: \"Mozambique\", continent: \"Africa\" },\n { code: \"mm\", value: \"myanmar\", label: \"Myanmar\", continent: \"Asia\" },\n { code: \"na\", value: \"namibia\", label: \"Namibia\", continent: \"Africa\" },\n { code: \"nr\", value: \"nauru\", label: \"Nauru\", continent: \"Oceania\" },\n { code: \"np\", value: \"nepal\", label: \"Nepal\", continent: \"Asia\" },\n {\n code: \"nl\",\n value: \"netherlands\",\n label: \"Netherlands\",\n continent: \"Europe\",\n },\n {\n code: \"nz\",\n value: \"new-zealand\",\n label: \"New Zealand\",\n continent: \"Oceania\",\n },\n {\n code: \"ni\",\n value: \"nicaragua\",\n label: \"Nicaragua\",\n continent: \"North America\",\n },\n { code: \"ne\", value: \"niger\", label: \"Niger\", continent: \"Africa\" },\n { code: \"ng\", value: \"nigeria\", label: \"Nigeria\", continent: \"Africa\" },\n { code: \"kp\", value: \"north-korea\", label: \"North Korea\", continent: \"Asia\" },\n {\n code: \"mk\",\n value: \"north-macedonia\",\n label: \"North Macedonia\",\n continent: \"Europe\",\n },\n { code: \"no\", value: \"norway\", label: \"Norway\", continent: \"Europe\" },\n { code: \"om\", value: \"oman\", label: \"Oman\", continent: \"Asia\" },\n { code: \"pk\", value: \"pakistan\", label: \"Pakistan\", continent: \"Asia\" },\n { code: \"pw\", value: \"palau\", label: \"Palau\", continent: \"Oceania\" },\n { code: \"ps\", value: \"palestine\", label: \"Palestine\", continent: \"Asia\" },\n { code: \"pa\", value: \"panama\", label: \"Panama\", continent: \"North America\" },\n {\n code: \"pg\",\n value: \"papua-new-guinea\",\n label: \"Papua New Guinea\",\n continent: \"Oceania\",\n },\n {\n code: \"py\",\n value: \"paraguay\",\n label: \"Paraguay\",\n continent: \"South America\",\n },\n { code: \"pe\", value: \"peru\", label: \"Peru\", continent: \"South America\" },\n { code: \"ph\", value: \"philippines\", label: \"Philippines\", continent: \"Asia\" },\n { code: \"pl\", value: \"poland\", label: \"Poland\", continent: \"Europe\" },\n { code: \"pt\", value: \"portugal\", label: \"Portugal\", continent: \"Europe\" },\n { code: \"qa\", value: \"qatar\", label: \"Qatar\", continent: \"Asia\" },\n { code: \"ro\", value: \"romania\", label: \"Romania\", continent: \"Europe\" },\n { code: \"ru\", value: \"russia\", label: \"Russia\", continent: \"Europe\" },\n { code: \"rw\", value: \"rwanda\", label: \"Rwanda\", continent: \"Africa\" },\n { code: \"ws\", value: \"samoa\", label: \"Samoa\", continent: \"Oceania\" },\n { code: \"sm\", value: \"san-marino\", label: \"San Marino\", continent: \"Europe\" },\n {\n code: \"sa\",\n value: \"saudi-arabia\",\n label: \"Saudi Arabia\",\n continent: \"Asia\",\n },\n { code: \"sn\", value: \"senegal\", label: \"Senegal\", continent: \"Africa\" },\n { code: \"rs\", value: \"serbia\", label: \"Serbia\", continent: \"Europe\" },\n { code: \"sc\", value: \"seychelles\", label: \"Seychelles\", continent: \"Africa\" },\n {\n code: \"sl\",\n value: \"sierra-leone\",\n label: \"Sierra Leone\",\n continent: \"Africa\",\n },\n { code: \"sg\", value: \"singapore\", label: \"Singapore\", continent: \"Asia\" },\n { code: \"sk\", value: \"slovakia\", label: \"Slovakia\", continent: \"Europe\" },\n { code: \"si\", value: \"slovenia\", label: \"Slovenia\", continent: \"Europe\" },\n {\n code: \"sb\",\n value: \"solomon-islands\",\n label: \"Solomon Islands\",\n continent: \"Oceania\",\n },\n { code: \"so\", value: \"somalia\", label: \"Somalia\", continent: \"Africa\" },\n {\n code: \"za\",\n value: \"south-africa\",\n label: \"South Africa\",\n continent: \"Africa\",\n },\n { code: \"kr\", value: \"south-korea\", label: \"South Korea\", continent: \"Asia\" },\n {\n code: \"ss\",\n value: \"south-sudan\",\n label: \"South Sudan\",\n continent: \"Africa\",\n },\n { code: \"es\", value: \"spain\", label: \"Spain\", continent: \"Europe\" },\n { code: \"lk\", value: \"sri-lanka\", label: \"Sri Lanka\", continent: \"Asia\" },\n { code: \"sd\", value: \"sudan\", label: \"Sudan\", continent: \"Africa\" },\n {\n code: \"sr\",\n value: \"suriname\",\n label: \"Suriname\",\n continent: \"South America\",\n },\n { code: \"se\", value: \"sweden\", label: \"Sweden\", continent: \"Europe\" },\n {\n code: \"ch\",\n value: \"switzerland\",\n label: \"Switzerland\",\n continent: \"Europe\",\n },\n { code: \"sy\", value: \"syria\", label: \"Syria\", continent: \"Asia\" },\n { code: \"tw\", value: \"taiwan\", label: \"Taiwan\", continent: \"Asia\" },\n { code: \"tj\", value: \"tajikistan\", label: \"Tajikistan\", continent: \"Asia\" },\n { code: \"tz\", value: \"tanzania\", label: \"Tanzania\", continent: \"Africa\" },\n { code: \"th\", value: \"thailand\", label: \"Thailand\", continent: \"Asia\" },\n { code: \"tl\", value: \"timor-leste\", label: \"Timor-Leste\", continent: \"Asia\" },\n { code: \"tg\", value: \"togo\", label: \"Togo\", continent: \"Africa\" },\n { code: \"to\", value: \"tonga\", label: \"Tonga\", continent: \"Oceania\" },\n {\n code: \"tt\",\n value: \"trinidad-and-tobago\",\n label: \"Trinidad and Tobago\",\n continent: \"North America\",\n },\n { code: \"tn\", value: \"tunisia\", label: \"Tunisia\", continent: \"Africa\" },\n { code: \"tr\", value: \"turkey\", label: \"Turkey\", continent: \"Asia\" },\n {\n code: \"tm\",\n value: \"turkmenistan\",\n label: \"Turkmenistan\",\n continent: \"Asia\",\n },\n { code: \"tv\", value: \"tuvalu\", label: \"Tuvalu\", continent: \"Oceania\" },\n { code: \"ug\", value: \"uganda\", label: \"Uganda\", continent: \"Africa\" },\n { code: \"ua\", value: \"ukraine\", label: \"Ukraine\", continent: \"Europe\" },\n {\n code: \"ae\",\n value: \"united-arab-emirates\",\n label: \"United Arab Emirates\",\n continent: \"Asia\",\n },\n {\n code: \"gb\",\n value: \"united-kingdom\",\n label: \"United Kingdom\",\n continent: \"Europe\",\n },\n {\n code: \"us\",\n value: \"united-states\",\n label: \"United States\",\n continent: \"North America\",\n },\n {\n code: \"uy\",\n value: \"uruguay\",\n label: \"Uruguay\",\n continent: \"South America\",\n },\n { code: \"uz\", value: \"uzbekistan\", label: \"Uzbekistan\", continent: \"Asia\" },\n { code: \"vu\", value: \"vanuatu\", label: \"Vanuatu\", continent: \"Oceania\" },\n {\n code: \"va\",\n value: \"vatican-city\",\n label: \"Vatican City\",\n continent: \"Europe\",\n },\n {\n code: \"ve\",\n value: \"venezuela\",\n label: \"Venezuela\",\n continent: \"South America\",\n },\n { code: \"vn\", value: \"vietnam\", label: \"Vietnam\", continent: \"Asia\" },\n { code: \"ye\", value: \"yemen\", label: \"Yemen\", continent: \"Asia\" },\n { code: \"zm\", value: \"zambia\", label: \"Zambia\", continent: \"Africa\" },\n { code: \"zw\", value: \"zimbabwe\", label: \"Zimbabwe\", continent: \"Africa\" },\n]\n\nconst timezones = [\n {\n value: \"Americas\",\n items: [\n \"(GMT-5) New York\",\n \"(GMT-8) Los Angeles\",\n \"(GMT-6) Chicago\",\n \"(GMT-5) Toronto\",\n \"(GMT-8) Vancouver\",\n \"(GMT-3) São Paulo\",\n ],\n },\n {\n value: \"Europe\",\n items: [\n \"(GMT+0) London\",\n \"(GMT+1) Paris\",\n \"(GMT+1) Berlin\",\n \"(GMT+1) Rome\",\n \"(GMT+1) Madrid\",\n \"(GMT+1) Amsterdam\",\n ],\n },\n {\n value: \"Asia/Pacific\",\n items: [\n \"(GMT+9) Tokyo\",\n \"(GMT+8) Shanghai\",\n \"(GMT+8) Singapore\",\n \"(GMT+4) Dubai\",\n \"(GMT+11) Sydney\",\n \"(GMT+9) Seoul\",\n ],\n },\n] as const\n\nfunction ComboboxBasic() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxDisabled() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxInvalid() {\n return (\n \n
\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n Framework\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n Please select a valid framework.\n \n \n
\n
\n )\n}\n\nfunction ComboboxWithClear() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxWithGroups() {\n return (\n \n \n \n \n No timezones found.\n \n {(group) => (\n \n {group.value}\n \n {(item) => (\n \n {item}\n \n )}\n \n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxWithGroupsAndSeparator() {\n return (\n \n \n \n \n No timezones found.\n \n {(group) => (\n \n {group.value}\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxWithForm() {\n const handleSubmit = (event: React.FormEvent) => {\n event.preventDefault()\n const formData = new FormData(event.target as HTMLFormElement)\n const framework = formData.get(\"framework\") as string\n toast(`You selected ${framework} as your framework.`)\n }\n\n return (\n \n \n \n \n \n \n Framework\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nconst largeListItems = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`)\n\nfunction ComboboxLargeList() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxAutoHighlight() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboxboxInputAddon() {\n return (\n \n \n \n \n \n \n \n \n No timezones found.\n \n {(group) => (\n \n {group.value}\n \n {(item) => (\n \n {item}\n \n )}\n \n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxInPopup() {\n return (\n \n \n \n }\n >\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item.label}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxMultiple() {\n const anchor = useComboboxAnchor()\n\n return (\n \n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n {value}\n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxMultipleDisabled() {\n const anchor = useComboboxAnchor()\n\n return (\n \n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n {value}\n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxMultipleInvalid() {\n const anchor1 = useComboboxAnchor()\n const anchor2 = useComboboxAnchor()\n\n return (\n \n
\n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n {value}\n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n Frameworks\n \n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n {value}\n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n Please select at least one framework.\n \n \n \n
\n
\n )\n}\n\nfunction ComboboxMultipleNoRemove() {\n const anchor = useComboboxAnchor()\n\n return (\n \n \n \n \n {(values) => (\n \n {values.map((value: string) => (\n \n {value}\n \n ))}\n \n \n )}\n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxWithCustomItems() {\n return (\n \n country.code !== \"\")}\n itemToStringValue={(country: (typeof countries)[number]) =>\n country.label\n }\n >\n \n \n No countries found.\n \n {(country) => (\n \n \n \n \n {country.label}\n \n \n {country.continent} ({country.code})\n \n \n \n \n )}\n \n \n \n \n )\n}\n\nfunction ComboboxInDialog() {\n const [open, setOpen] = React.useState(false)\n\n return (\n \n \n }>\n Open Dialog\n \n \n \n Select Framework\n \n Choose your preferred framework from the list below.\n \n \n \n \n Framework\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n setOpen(false)}\n >\n Cancel\n \n {\n toast(\"Framework selected.\")\n setOpen(false)\n }}\n >\n Confirm\n \n \n \n \n \n )\n}\n\nconst items = [\n {\n label: \"Select a framework\",\n value: null,\n },\n {\n label: \"React\",\n value: \"react\",\n },\n {\n label: \"Vue\",\n value: \"vue\",\n },\n {\n label: \"Angular\",\n value: \"angular\",\n },\n {\n label: \"Svelte\",\n value: \"svelte\",\n },\n {\n label: \"Solid\",\n value: \"solid\",\n },\n {\n label: \"Preact\",\n value: \"preact\",\n },\n {\n label: \"Next.js\",\n value: \"next.js\",\n },\n]\n\nfunction ComboboxWithOtherInputs() {\n return (\n \n \n \n \n No items found.\n \n {(item) => (\n \n {item}\n \n )}\n \n \n \n \n \n Select a framework\n \n \n \n \n \n \n \n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/combobox-popover.json b/apps/v4/public/r/styles/base-lyra/combobox-popover.json new file mode 100644 index 0000000000..39b6b1c01d --- /dev/null +++ b/apps/v4/public/r/styles/base-lyra/combobox-popover.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "combobox-popover", + "title": "Combobox Popover", + "registryDependencies": [ + "button", + "command", + "popover" + ], + "files": [ + { + "path": "registry/base-lyra/demo/combobox-popover.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/base-lyra/ui/command\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/base-lyra/ui/popover\"\n\ntype Status = {\n value: string\n label: string\n}\n\nconst statuses: Status[] = [\n {\n value: \"backlog\",\n label: \"Backlog\",\n },\n {\n value: \"todo\",\n label: \"Todo\",\n },\n {\n value: \"in progress\",\n label: \"In Progress\",\n },\n {\n value: \"done\",\n label: \"Done\",\n },\n {\n value: \"canceled\",\n label: \"Canceled\",\n },\n]\n\nexport default function ComboboxPopover() {\n const [open, setOpen] = React.useState(false)\n const [selectedStatus, setSelectedStatus] = React.useState(\n null\n )\n\n return (\n
\n

Status

\n \n \n \n \n \n \n \n \n No results found.\n \n {statuses.map((status) => (\n {\n setSelectedStatus(\n statuses.find((priority) => priority.value === value) ||\n null\n )\n setOpen(false)\n }}\n >\n {status.label}\n \n ))}\n \n \n \n \n \n
\n )\n}\n", + "type": "registry:example" + } + ], + "type": "registry:example" +} \ No newline at end of file diff --git a/apps/v4/public/r/styles/base-lyra/combobox-responsive.json b/apps/v4/public/r/styles/base-lyra/combobox-responsive.json index e8a0054e2d..2ffc6ae4a5 100644 --- a/apps/v4/public/r/styles/base-lyra/combobox-responsive.json +++ b/apps/v4/public/r/styles/base-lyra/combobox-responsive.json @@ -3,15 +3,15 @@ "name": "combobox-responsive", "title": "Combobox Responsive", "registryDependencies": [ + "button", "command", - "popover", "drawer", - "button" + "popover" ], "files": [ { "path": "registry/base-lyra/demo/combobox-responsive.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\nimport { Button } from \"@/registry/base-nova/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/base-nova/ui/command\"\nimport {\n Drawer,\n DrawerContent,\n DrawerTrigger,\n} from \"@/registry/base-nova/ui/drawer\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/base-nova/ui/popover\"\n\ntype Status = {\n value: string\n label: string\n}\n\nconst statuses: Status[] = [\n {\n value: \"backlog\",\n label: \"Backlog\",\n },\n {\n value: \"todo\",\n label: \"Todo\",\n },\n {\n value: \"in progress\",\n label: \"In Progress\",\n },\n {\n value: \"done\",\n label: \"Done\",\n },\n {\n value: \"canceled\",\n label: \"Canceled\",\n },\n]\n\nexport default function ComboBoxResponsive() {\n const [open, setOpen] = React.useState(false)\n const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n const [selectedStatus, setSelectedStatus] = React.useState(\n null\n )\n\n if (isDesktop) {\n return (\n \n \n \n \n \n \n \n \n )\n }\n\n return (\n \n \n \n \n \n
\n \n
\n
\n
\n )\n}\n\nfunction StatusList({\n setOpen,\n setSelectedStatus,\n}: {\n setOpen: (open: boolean) => void\n setSelectedStatus: (status: Status | null) => void\n}) {\n return (\n \n \n \n No results found.\n \n {statuses.map((status) => (\n {\n setSelectedStatus(\n statuses.find((priority) => priority.value === value) || null\n )\n setOpen(false)\n }}\n >\n {status.label}\n \n ))}\n \n \n \n )\n}\n", + "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { useMediaQuery } from \"@/hooks/use-media-query\"\nimport { Button } from \"@/registry/base-lyra/ui/button\"\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/registry/base-lyra/ui/command\"\nimport {\n Drawer,\n DrawerContent,\n DrawerTrigger,\n} from \"@/registry/base-lyra/ui/drawer\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/base-lyra/ui/popover\"\n\ntype Status = {\n value: string\n label: string\n}\n\nconst statuses: Status[] = [\n {\n value: \"backlog\",\n label: \"Backlog\",\n },\n {\n value: \"todo\",\n label: \"Todo\",\n },\n {\n value: \"in progress\",\n label: \"In Progress\",\n },\n {\n value: \"done\",\n label: \"Done\",\n },\n {\n value: \"canceled\",\n label: \"Canceled\",\n },\n]\n\nexport default function ComboBoxResponsive() {\n const [open, setOpen] = React.useState(false)\n const isDesktop = useMediaQuery(\"(min-width: 768px)\")\n const [selectedStatus, setSelectedStatus] = React.useState(\n null\n )\n\n if (isDesktop) {\n return (\n \n \n \n \n \n \n \n \n )\n }\n\n return (\n \n \n \n \n \n
\n \n
\n
\n
\n )\n}\n\nfunction StatusList({\n setOpen,\n setSelectedStatus,\n}: {\n setOpen: (open: boolean) => void\n setSelectedStatus: (status: Status | null) => void\n}) {\n return (\n \n \n \n No results found.\n \n {statuses.map((status) => (\n {\n setSelectedStatus(\n statuses.find((priority) => priority.value === value) || null\n )\n setOpen(false)\n }}\n >\n {status.label}\n \n ))}\n \n \n \n )\n}\n", "type": "registry:example" } ], diff --git a/apps/v4/public/r/styles/base-lyra/combobox.json b/apps/v4/public/r/styles/base-lyra/combobox.json index 63851fa9b3..aa39b4eef5 100644 --- a/apps/v4/public/r/styles/base-lyra/combobox.json +++ b/apps/v4/public/r/styles/base-lyra/combobox.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/base-lyra/ui/combobox.tsx", - "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\nimport { Button } from \"@/registry/bases/base/ui/button\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from \"@/registry/bases/base/ui/input-group\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n return \n}\n\nfunction ComboboxTrigger({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Trigger.Props) {\n return (\n \n {children}\n \n \n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n return (\n }\n className={cn(className)}\n {...props}\n >\n \n \n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n showTrigger = true,\n showClear = false,\n ...props\n}: ComboboxPrimitive.Input.Props & {\n showTrigger?: boolean\n showClear?: boolean\n}) {\n return (\n \n }\n {...props}\n />\n \n {showTrigger && (\n }\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n />\n )}\n {showClear && }\n \n {children}\n \n )\n}\n\nfunction ComboboxContent({\n className,\n side = \"bottom\",\n sideOffset = 6,\n align = \"start\",\n alignOffset = 0,\n anchor,\n ...props\n}: ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n \"side\" | \"align\" | \"sideOffset\" | \"alignOffset\" | \"anchor\"\n >) {\n return (\n \n \n \n \n \n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n return (\n \n )\n}\n\nfunction ComboboxItem({\n className,\n children,\n ...props\n}: ComboboxPrimitive.Item.Props) {\n return (\n \n {children}\n }\n >\n \n \n \n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n return (\n \n )\n}\n\nfunction ComboboxLabel({\n className,\n ...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n return (\n \n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props) {\n return (\n \n )\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n return (\n