Compare commits

..

18 Commits

Author SHA1 Message Date
shadcn
f1131db844 fix 2025-12-15 14:44:43 +04:00
Gravityy
b15d7e8221 feat : add animbits to trusted registries (#8910)
* Add @animbits registry URL to registries.json and directory.json

* Add @animbits registry URL to registries.json and directory.json

* fix

---------

Co-authored-by: shadcn <m@shadcn.com>
2025-12-15 14:38:24 +04:00
shadcn
46e3c26a6e chore: registry build 2025-12-15 14:33:37 +04:00
Bundui.io
f36e25f703 feat(registry): Add BundUI Components to the registry index (#8473)
* feat(registry): Add BundUI Components to the registry index

* fix

---------

Co-authored-by: shadcn <m@shadcn.com>
2025-12-15 14:19:50 +04:00
MUDAVATH KUMAR
55f5d1c7cc feat: add Ein UI to registry directory (#9068)
Add Ein UI registry entry with:
- Registry URL: https://ui.eindev.ir/r/{name}.json
- Homepage: https://ui.eindev.ir
- Description: Beautiful, responsive Shadcn components with frosted glass morphism
- Custom gradient logo with glass theme

Resolves: #9048

Co-authored-by: Clacky <develop@clacky.ai>
2025-12-15 13:44:50 +04:00
Tham Kei Lok
db19605996 feat: add @8starlabs-ui to directory.json and registries.json (#8976) 2025-12-15 13:44:24 +04:00
Agustín Mayol
40012adb14 feat: add @optics to directory.json and registries.json (#8971) 2025-12-15 13:44:10 +04:00
Ali Hussein
ad8104e473 feat: add @cardcn registry #8902 (#8919) 2025-12-15 13:43:52 +04:00
Gildas Garcia
5fb0c4d19a Add shadcn-admin-kit to the registry index (#9018)
This PR adds https://marmelab.com/shadcn-admin-kit to the trusted registries.
2025-12-15 13:43:01 +04:00
Bruno Pérez
31c86f9fd5 feat: add @manifest registry (#9010) (#9011) 2025-12-15 13:42:11 +04:00
Gxuri
aad175ff87 feat: add @skiper-ui to directory.json (#9007)
* feat: add @skiper-ui to directory.json

* fix: update URL format for @skiper-ui in directory.json
2025-12-15 13:41:48 +04:00
Muskri
081c91c461 feat: add new registry entry for @pureui with logo and description (#8911) 2025-12-15 13:40:01 +04:00
Dominik K.
7dbf3688fb fix: rename hugeicons dot icon (#9033)
Renames the hugeicons icon from MoreHorizontalIcon to the actual component name MoreHorizontalCircle01Icon
2025-12-15 13:35:56 +04:00
Manuel
99ad18b389 fix: remove duplicate 'text-left' class from SelectValue component (#9045)
* fix: remove duplicate 'text-left' class from SelectValue component

* fix: select for base

---------

Co-authored-by: shadcn <m@shadcn.com>
2025-12-15 13:33:27 +04:00
Junaid Anjum
fabb886de9 minor typo in the recent changelog (#9024) 2025-12-15 13:29:04 +04:00
ateeb a.
4b561cf050 fix:select color-format component and color copy-to-clipboard (#9056)
* fix:Nuqs adapter scope, select color-format component and color copy-to-clipboard

* chore: remove changeset

---------

Co-authored-by: shadcn <m@shadcn.com>
2025-12-15 13:27:10 +04:00
Mert
0c2373f592 fix(lint): resolve @typescript-eslint/no-unused-vars warns in combobox and scroll-area (#9060) 2025-12-15 13:24:30 +04:00
François Best
ff42c27d41 refactor: nuqs APIs (#9055)
* ref: replace cache with loader + inferParserType

* ref: expose useDesignSystemSearchParams hook

* ref: use loader & exported hook to simplify iframe sync

* ref: remove unused code

* fix: params.size is non-nullable

* ref: move items shallow option to the parser level

---------

Co-authored-by: shadcn <m@shadcn.com>
2025-12-15 13:19:32 +04:00
68 changed files with 741 additions and 2319 deletions

View File

@@ -1,7 +1,5 @@
"use client" "use client"
import { useQueryStates } from "nuqs"
import { MENU_ACCENTS, type MenuAccentValue } from "@/registry/config" import { MENU_ACCENTS, type MenuAccentValue } from "@/registry/config"
import { LockButton } from "@/app/(create)/components/lock-button" import { LockButton } from "@/app/(create)/components/lock-button"
import { import {
@@ -12,7 +10,7 @@ import {
PickerRadioItem, PickerRadioItem,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function MenuAccentPicker({ export function MenuAccentPicker({
isMobile, isMobile,
@@ -21,10 +19,7 @@ export function MenuAccentPicker({
isMobile: boolean isMobile: boolean
anchorRef: React.RefObject<HTMLDivElement | null> anchorRef: React.RefObject<HTMLDivElement | null>
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentAccent = MENU_ACCENTS.find( const currentAccent = MENU_ACCENTS.find(
(accent) => accent.value === params.menuAccent (accent) => accent.value === params.menuAccent

View File

@@ -2,7 +2,6 @@
import * as React from "react" import * as React from "react"
import { useTheme } from "next-themes" import { useTheme } from "next-themes"
import { useQueryStates } from "nuqs"
import { useMounted } from "@/hooks/use-mounted" import { useMounted } from "@/hooks/use-mounted"
import { BASE_COLORS, type BaseColorName } from "@/registry/config" import { BASE_COLORS, type BaseColorName } from "@/registry/config"
@@ -17,7 +16,7 @@ import {
PickerSeparator, PickerSeparator,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function BaseColorPicker({ export function BaseColorPicker({
isMobile, isMobile,
@@ -28,10 +27,7 @@ export function BaseColorPicker({
}) { }) {
const { resolvedTheme, setTheme } = useTheme() const { resolvedTheme, setTheme } = useTheme()
const mounted = useMounted() const mounted = useMounted()
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentBaseColor = React.useMemo( const currentBaseColor = React.useMemo(
() => BASE_COLORS.find((baseColor) => baseColor.name === params.baseColor), () => BASE_COLORS.find((baseColor) => baseColor.name === params.baseColor),

View File

@@ -1,7 +1,6 @@
"use client" "use client"
import * as React from "react" import * as React from "react"
import { useQueryStates } from "nuqs"
import { BASES } from "@/registry/config" import { BASES } from "@/registry/config"
import { import {
@@ -12,7 +11,7 @@ import {
PickerRadioItem, PickerRadioItem,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function BasePicker({ export function BasePicker({
isMobile, isMobile,
@@ -21,10 +20,7 @@ export function BasePicker({
isMobile: boolean isMobile: boolean
anchorRef: React.RefObject<HTMLDivElement | null> anchorRef: React.RefObject<HTMLDivElement | null>
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentBase = React.useMemo( const currentBase = React.useMemo(
() => BASES.find((base) => base.name === params.base), () => BASES.find((base) => base.name === params.base),

View File

@@ -1,11 +1,9 @@
"use client" "use client"
import * as React from "react" import * as React from "react"
import { useRouter } from "next/navigation"
import Script from "next/script" import Script from "next/script"
import { DiceFaces05Icon, Undo02Icon } from "@hugeicons/core-free-icons" import { DiceFaces05Icon, Undo02Icon } from "@hugeicons/core-free-icons"
import { HugeiconsIcon } from "@hugeicons/react" import { HugeiconsIcon } from "@hugeicons/react"
import { useQueryStates } from "nuqs"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { import {
@@ -20,11 +18,6 @@ import {
} from "@/registry/config" } from "@/registry/config"
import { Button } from "@/registry/new-york-v4/ui/button" import { Button } from "@/registry/new-york-v4/ui/button"
import { Kbd } from "@/registry/new-york-v4/ui/kbd" import { Kbd } from "@/registry/new-york-v4/ui/kbd"
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from "@/registry/new-york-v4/ui/tooltip"
import { useLocks } from "@/app/(create)/hooks/use-locks" import { useLocks } from "@/app/(create)/hooks/use-locks"
import { FONTS } from "@/app/(create)/lib/fonts" import { FONTS } from "@/app/(create)/lib/fonts"
import { import {
@@ -32,7 +25,7 @@ import {
RANDOMIZE_BIASES, RANDOMIZE_BIASES,
type RandomizeContext, type RandomizeContext,
} from "@/app/(create)/lib/randomize-biases" } from "@/app/(create)/lib/randomize-biases"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export const RANDOMIZE_FORWARD_TYPE = "randomize-forward" export const RANDOMIZE_FORWARD_TYPE = "randomize-forward"
@@ -41,12 +34,8 @@ function randomItem<T>(array: readonly T[]): T {
} }
export function CustomizerControls({ className }: { className?: string }) { export function CustomizerControls({ className }: { className?: string }) {
const router = useRouter()
const { locks } = useLocks() const { locks } = useLocks()
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const handleReset = React.useCallback(() => { const handleReset = React.useCallback(() => {
setParams({ setParams({

View File

@@ -3,7 +3,6 @@
import * as React from "react" import * as React from "react"
import { Settings05Icon } from "@hugeicons/core-free-icons" import { Settings05Icon } from "@hugeicons/core-free-icons"
import { HugeiconsIcon } from "@hugeicons/react" import { HugeiconsIcon } from "@hugeicons/react"
import { useQueryStates } from "nuqs"
import { useIsMobile } from "@/hooks/use-mobile" import { useIsMobile } from "@/hooks/use-mobile"
import { getThemesForBaseColor, PRESETS, STYLES } from "@/registry/config" import { getThemesForBaseColor, PRESETS, STYLES } from "@/registry/config"
@@ -20,10 +19,10 @@ import { RadiusPicker } from "@/app/(create)/components/radius-picker"
import { StylePicker } from "@/app/(create)/components/style-picker" import { StylePicker } from "@/app/(create)/components/style-picker"
import { ThemePicker } from "@/app/(create)/components/theme-picker" import { ThemePicker } from "@/app/(create)/components/theme-picker"
import { FONTS } from "@/app/(create)/lib/fonts" import { FONTS } from "@/app/(create)/lib/fonts"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function Customizer() { export function Customizer() {
const [params] = useQueryStates(designSystemSearchParams) const [params] = useDesignSystemSearchParams()
const isMobile = useIsMobile() const isMobile = useIsMobile()
const anchorRef = React.useRef<HTMLDivElement | null>(null) const anchorRef = React.useRef<HTMLDivElement | null>(null)

View File

@@ -1,7 +1,6 @@
"use client" "use client"
import * as React from "react" import * as React from "react"
import { useQueryStates } from "nuqs"
import { import {
Item, Item,
@@ -21,7 +20,7 @@ import {
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { type Font } from "@/app/(create)/lib/fonts" import { type Font } from "@/app/(create)/lib/fonts"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function FontPicker({ export function FontPicker({
fonts, fonts,
@@ -32,10 +31,7 @@ export function FontPicker({
isMobile: boolean isMobile: boolean
anchorRef: React.RefObject<HTMLDivElement | null> anchorRef: React.RefObject<HTMLDivElement | null>
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentFont = React.useMemo( const currentFont = React.useMemo(
() => fonts.find((font) => font.value === params.font), () => fonts.find((font) => font.value === params.font),

View File

@@ -2,7 +2,6 @@
import * as React from "react" import * as React from "react"
import { lazy, memo, Suspense } from "react" import { lazy, memo, Suspense } from "react"
import { useQueryStates } from "nuqs"
import { Item, ItemContent, ItemTitle } from "@/registry/bases/radix/ui/item" import { Item, ItemContent, ItemTitle } from "@/registry/bases/radix/ui/item"
import { import {
@@ -20,7 +19,7 @@ import {
PickerSeparator, PickerSeparator,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
const IconLucide = lazy(() => const IconLucide = lazy(() =>
import("@/registry/icons/icon-lucide").then((mod) => ({ import("@/registry/icons/icon-lucide").then((mod) => ({
@@ -79,7 +78,7 @@ const PREVIEW_ICONS = {
"Delete02Icon", "Delete02Icon",
"Share03Icon", "Share03Icon",
"ShoppingBag01Icon", "ShoppingBag01Icon",
"MoreHorizontalIcon", "MoreHorizontalCircle01Icon",
"Loading03Icon", "Loading03Icon",
"PlusSignIcon", "PlusSignIcon",
"MinusSignIcon", "MinusSignIcon",
@@ -164,10 +163,7 @@ export function IconLibraryPicker({
isMobile: boolean isMobile: boolean
anchorRef: React.RefObject<HTMLDivElement | null> anchorRef: React.RefObject<HTMLDivElement | null>
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentIconLibrary = React.useMemo( const currentIconLibrary = React.useMemo(
() => iconLibraries[params.iconLibrary as keyof typeof iconLibraries], () => iconLibraries[params.iconLibrary as keyof typeof iconLibraries],

View File

@@ -3,7 +3,6 @@
import * as React from "react" import * as React from "react"
import Link from "next/link" import Link from "next/link"
import { ChevronRightIcon } from "lucide-react" import { ChevronRightIcon } from "lucide-react"
import { useQueryStates } from "nuqs"
import { type RegistryItem } from "shadcn/schema" import { type RegistryItem } from "shadcn/schema"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
@@ -22,7 +21,7 @@ import {
SidebarMenuButton, SidebarMenuButton,
SidebarMenuItem, SidebarMenuItem,
} from "@/registry/new-york-v4/ui/sidebar" } from "@/registry/new-york-v4/ui/sidebar"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
import { groupItemsByType } from "@/app/(create)/lib/utils" import { groupItemsByType } from "@/app/(create)/lib/utils"
const cachedGroupedItems = React.cache( const cachedGroupedItems = React.cache(
@@ -38,10 +37,7 @@ export function ItemExplorer({
base: Base["name"] base: Base["name"]
items: Pick<RegistryItem, "name" | "title" | "type">[] items: Pick<RegistryItem, "name" | "title" | "type">[]
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
history: "push",
shallow: true,
})
const groupedItems = React.useMemo(() => cachedGroupedItems(items), [items]) const groupedItems = React.useMemo(() => cachedGroupedItems(items), [items])

View File

@@ -4,7 +4,6 @@ import * as React from "react"
import Script from "next/script" import Script from "next/script"
import { Search01Icon } from "@hugeicons/core-free-icons" import { Search01Icon } from "@hugeicons/core-free-icons"
import { HugeiconsIcon } from "@hugeicons/react" import { HugeiconsIcon } from "@hugeicons/react"
import { useQueryStates } from "nuqs"
import { type RegistryItem } from "shadcn/schema" import { type RegistryItem } from "shadcn/schema"
import { Button } from "@/registry/new-york-v4/ui/button" import { Button } from "@/registry/new-york-v4/ui/button"
@@ -21,7 +20,7 @@ import {
ComboboxTrigger, ComboboxTrigger,
ComboboxValue, ComboboxValue,
} from "@/registry/new-york-v4/ui/combobox" } from "@/registry/new-york-v4/ui/combobox"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
import { groupItemsByType } from "@/app/(create)/lib/utils" import { groupItemsByType } from "@/app/(create)/lib/utils"
export const CMD_K_FORWARD_TYPE = "cmd-k-forward" export const CMD_K_FORWARD_TYPE = "cmd-k-forward"
@@ -38,10 +37,7 @@ export function ItemPicker({
items: Pick<RegistryItem, "name" | "title" | "type">[] items: Pick<RegistryItem, "name" | "title" | "type">[]
}) { }) {
const [open, setOpen] = React.useState(false) const [open, setOpen] = React.useState(false)
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
history: "push",
shallow: true,
})
const groupedItems = React.useMemo(() => cachedGroupedItems(items), [items]) const groupedItems = React.useMemo(() => cachedGroupedItems(items), [items])

View File

@@ -2,7 +2,6 @@
import * as React from "react" import * as React from "react"
import { useTheme } from "next-themes" import { useTheme } from "next-themes"
import { useQueryStates } from "nuqs"
import { useMounted } from "@/hooks/use-mounted" import { useMounted } from "@/hooks/use-mounted"
import { type MenuColorValue } from "@/registry/config" import { type MenuColorValue } from "@/registry/config"
@@ -15,7 +14,7 @@ import {
PickerRadioItem, PickerRadioItem,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
const MENU_OPTIONS = [ const MENU_OPTIONS = [
{ {
@@ -114,10 +113,7 @@ export function MenuColorPicker({
}) { }) {
const { resolvedTheme } = useTheme() const { resolvedTheme } = useTheme()
const mounted = useMounted() const mounted = useMounted()
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentMenu = MENU_OPTIONS.find( const currentMenu = MENU_OPTIONS.find(
(menu) => menu.value === params.menuColor (menu) => menu.value === params.menuColor
) )

View File

@@ -1,9 +1,8 @@
"use client" "use client"
import * as React from "react" import * as React from "react"
import { useQueryStates } from "nuqs"
import { BASES, STYLES, type Preset } from "@/registry/config" import { STYLES, type Preset } from "@/registry/config"
import { import {
Picker, Picker,
PickerContent, PickerContent,
@@ -12,7 +11,7 @@ import {
PickerRadioItem, PickerRadioItem,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function PresetPicker({ export function PresetPicker({
presets, presets,
@@ -23,10 +22,7 @@ export function PresetPicker({
isMobile: boolean isMobile: boolean
anchorRef: React.RefObject<HTMLDivElement | null> anchorRef: React.RefObject<HTMLDivElement | null>
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentPreset = React.useMemo(() => { const currentPreset = React.useMemo(() => {
return presets.find( return presets.find(

View File

@@ -1,27 +1,26 @@
"use client" "use client"
import { Monitor, Smartphone, Tablet } from "lucide-react" import { Monitor, Smartphone, Tablet } from "lucide-react"
import { useQueryStates } from "nuqs"
import { import {
ToggleGroup, ToggleGroup,
ToggleGroupItem, ToggleGroupItem,
} from "@/registry/new-york-v4/ui/toggle-group" } from "@/registry/new-york-v4/ui/toggle-group"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function PreviewControls() { export function PreviewControls() {
const [urlParams, setUrlParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams({
shallow: false, history: "replace",
}) })
return ( return (
<div className="flex h-8 items-center gap-1.5 rounded-md border p-1"> <div className="flex h-8 items-center gap-1.5 rounded-md border p-1">
<ToggleGroup <ToggleGroup
type="single" type="single"
value={(urlParams.size ?? 100).toString()} value={params.size.toString()}
onValueChange={(newValue) => { onValueChange={(newValue) => {
if (newValue) { if (newValue) {
setUrlParams({ size: parseInt(newValue) }) setParams({ size: parseInt(newValue) })
} }
}} }}
className="gap-1 *:data-[slot=toggle-group-item]:!size-6 *:data-[slot=toggle-group-item]:!rounded-sm" className="gap-1 *:data-[slot=toggle-group-item]:!size-6 *:data-[slot=toggle-group-item]:!rounded-sm"

View File

@@ -1,7 +1,5 @@
"use client" "use client"
import { useQueryStates } from "nuqs"
import { RADII, type RadiusValue } from "@/registry/config" import { RADII, type RadiusValue } from "@/registry/config"
import { LockButton } from "@/app/(create)/components/lock-button" import { LockButton } from "@/app/(create)/components/lock-button"
import { import {
@@ -13,7 +11,7 @@ import {
PickerSeparator, PickerSeparator,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function RadiusPicker({ export function RadiusPicker({
isMobile, isMobile,
@@ -22,10 +20,7 @@ export function RadiusPicker({
isMobile: boolean isMobile: boolean
anchorRef: React.RefObject<HTMLDivElement | null> anchorRef: React.RefObject<HTMLDivElement | null>
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentRadius = RADII.find((radius) => radius.name === params.radius) const currentRadius = RADII.find((radius) => radius.name === params.radius)
const defaultRadius = RADII.find((radius) => radius.name === "default") const defaultRadius = RADII.find((radius) => radius.name === "default")

View File

@@ -3,7 +3,6 @@
import * as React from "react" import * as React from "react"
import { Share03Icon, Tick02Icon } from "@hugeicons/core-free-icons" import { Share03Icon, Tick02Icon } from "@hugeicons/core-free-icons"
import { HugeiconsIcon } from "@hugeicons/react" import { HugeiconsIcon } from "@hugeicons/react"
import { useQueryStates } from "nuqs"
import { copyToClipboardWithMeta } from "@/components/copy-button" import { copyToClipboardWithMeta } from "@/components/copy-button"
import { Button } from "@/registry/new-york-v4/ui/button" import { Button } from "@/registry/new-york-v4/ui/button"
@@ -12,12 +11,10 @@ import {
TooltipContent, TooltipContent,
TooltipTrigger, TooltipTrigger,
} from "@/registry/new-york-v4/ui/tooltip" } from "@/registry/new-york-v4/ui/tooltip"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function ShareButton() { export function ShareButton() {
const [params] = useQueryStates(designSystemSearchParams, { const [params] = useDesignSystemSearchParams()
shallow: false,
})
const [hasCopied, setHasCopied] = React.useState(false) const [hasCopied, setHasCopied] = React.useState(false)
const shareUrl = React.useMemo(() => { const shareUrl = React.useMemo(() => {

View File

@@ -1,7 +1,6 @@
"use client" "use client"
import * as React from "react" import * as React from "react"
import { useQueryStates } from "nuqs"
import { type Style, type StyleName } from "@/registry/config" import { type Style, type StyleName } from "@/registry/config"
import { LockButton } from "@/app/(create)/components/lock-button" import { LockButton } from "@/app/(create)/components/lock-button"
@@ -14,7 +13,7 @@ import {
PickerSeparator, PickerSeparator,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function StylePicker({ export function StylePicker({
styles, styles,
@@ -25,10 +24,7 @@ export function StylePicker({
isMobile: boolean isMobile: boolean
anchorRef: React.RefObject<HTMLDivElement | null> anchorRef: React.RefObject<HTMLDivElement | null>
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentStyle = styles.find((style) => style.name === params.style) const currentStyle = styles.find((style) => style.name === params.style)

View File

@@ -1,7 +1,5 @@
"use client" "use client"
import { useQueryStates } from "nuqs"
import { import {
Picker, Picker,
PickerContent, PickerContent,
@@ -10,7 +8,7 @@ import {
PickerRadioItem, PickerRadioItem,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
const TEMPLATES = [ const TEMPLATES = [
{ {
@@ -37,10 +35,7 @@ export function TemplatePicker({
isMobile: boolean isMobile: boolean
anchorRef: React.RefObject<HTMLDivElement | null> anchorRef: React.RefObject<HTMLDivElement | null>
}) { }) {
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentTemplate = TEMPLATES.find( const currentTemplate = TEMPLATES.find(
(template) => template.value === params.template (template) => template.value === params.template

View File

@@ -2,7 +2,6 @@
import * as React from "react" import * as React from "react"
import { useTheme } from "next-themes" import { useTheme } from "next-themes"
import { useQueryStates } from "nuqs"
import { useMounted } from "@/hooks/use-mounted" import { useMounted } from "@/hooks/use-mounted"
import { BASE_COLORS, type Theme, type ThemeName } from "@/registry/config" import { BASE_COLORS, type Theme, type ThemeName } from "@/registry/config"
@@ -11,13 +10,12 @@ import {
Picker, Picker,
PickerContent, PickerContent,
PickerGroup, PickerGroup,
PickerLabel,
PickerRadioGroup, PickerRadioGroup,
PickerRadioItem, PickerRadioItem,
PickerSeparator, PickerSeparator,
PickerTrigger, PickerTrigger,
} from "@/app/(create)/components/picker" } from "@/app/(create)/components/picker"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function ThemePicker({ export function ThemePicker({
themes, themes,
@@ -30,10 +28,7 @@ export function ThemePicker({
}) { }) {
const { resolvedTheme } = useTheme() const { resolvedTheme } = useTheme()
const mounted = useMounted() const mounted = useMounted()
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const currentTheme = React.useMemo( const currentTheme = React.useMemo(
() => themes.find((theme) => theme.name === params.theme), () => themes.find((theme) => theme.name === params.theme),

View File

@@ -7,7 +7,6 @@ import {
Tick02Icon, Tick02Icon,
} from "@hugeicons/core-free-icons" } from "@hugeicons/core-free-icons"
import { HugeiconsIcon } from "@hugeicons/react" import { HugeiconsIcon } from "@hugeicons/react"
import { useQueryStates } from "nuqs"
import { toast } from "sonner" import { toast } from "sonner"
import { useConfig } from "@/hooks/use-config" import { useConfig } from "@/hooks/use-config"
@@ -43,7 +42,7 @@ import {
TooltipContent, TooltipContent,
TooltipTrigger, TooltipTrigger,
} from "@/registry/new-york-v4/ui/tooltip" } from "@/registry/new-york-v4/ui/tooltip"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
const TEMPLATES = [ const TEMPLATES = [
{ {
@@ -65,10 +64,7 @@ const TEMPLATES = [
export function ToolbarControls() { export function ToolbarControls() {
const [open, setOpen] = React.useState(false) const [open, setOpen] = React.useState(false)
const [params, setParams] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const [config, setConfig] = useConfig() const [config, setConfig] = useConfig()
const [hasCopied, setHasCopied] = React.useState(false) const [hasCopied, setHasCopied] = React.useState(false)

View File

@@ -1,7 +1,5 @@
"use client" "use client"
import { useQueryStates } from "nuqs"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { useIsMobile } from "@/hooks/use-mobile" import { useIsMobile } from "@/hooks/use-mobile"
import { useMounted } from "@/hooks/use-mounted" import { useMounted } from "@/hooks/use-mounted"
@@ -13,13 +11,10 @@ import {
TooltipContent, TooltipContent,
TooltipTrigger, TooltipTrigger,
} from "@/registry/new-york-v4/ui/tooltip" } from "@/registry/new-york-v4/ui/tooltip"
import { designSystemSearchParams } from "@/app/(create)/lib/search-params" import { useDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export function V0Button({ className }: { className?: string }) { export function V0Button({ className }: { className?: string }) {
const [params] = useQueryStates(designSystemSearchParams, { const [params, setParams] = useDesignSystemSearchParams()
shallow: false,
history: "push",
})
const isMobile = useIsMobile() const isMobile = useIsMobile()
const isMounted = useMounted() const isMounted = useMounted()

View File

@@ -21,7 +21,7 @@ import { ToolbarControls } from "@/app/(create)/components/toolbar-controls"
import { V0Button } from "@/app/(create)/components/v0-button" import { V0Button } from "@/app/(create)/components/v0-button"
import { WelcomeDialog } from "@/app/(create)/components/welcome-dialog" import { WelcomeDialog } from "@/app/(create)/components/welcome-dialog"
import { getItemsForBase } from "@/app/(create)/lib/api" import { getItemsForBase } from "@/app/(create)/lib/api"
import { designSystemSearchParamsCache } from "@/app/(create)/lib/search-params" import { loadDesignSystemSearchParams } from "@/app/(create)/lib/search-params"
export const revalidate = false export const revalidate = false
export const dynamic = "force-static" export const dynamic = "force-static"
@@ -60,7 +60,7 @@ export default async function CreatePage({
}: { }: {
searchParams: Promise<SearchParams> searchParams: Promise<SearchParams>
}) { }) {
const params = await designSystemSearchParamsCache.parse(searchParams) const params = await loadDesignSystemSearchParams(searchParams)
const base = BASES.find((b) => b.name === params.base) ?? BASES[0] const base = BASES.find((b) => b.name === params.base) ?? BASES[0]
const items = await getItemsForBase(base.name) const items = await getItemsForBase(base.name)

View File

@@ -1,64 +1,25 @@
"use client" "use client"
import { useQueryStates } from "nuqs"
import { import {
createIframeSyncStore, createIframeSyncStore,
useIframeSyncAll, useIframeSyncAll,
useIframeSyncValue, useIframeSyncValue,
} from "@/app/(create)/hooks/use-iframe-sync" } from "@/app/(create)/hooks/use-iframe-sync"
import { import {
designSystemSearchParams, loadDesignSystemSearchParams,
useDesignSystemSearchParams,
type DesignSystemSearchParams, type DesignSystemSearchParams,
} from "@/app/(create)/lib/search-params" } from "@/app/(create)/lib/search-params"
const MESSAGE_TYPE = "design-system-params" const MESSAGE_TYPE = "design-system-params"
const getInitialValues = (): DesignSystemSearchParams => { const getInitialValues = (): DesignSystemSearchParams => {
if (typeof window === "undefined") { const initialValues = loadDesignSystemSearchParams(
return { typeof window === "undefined" ? "" : location.search
base: "radix", )
iconLibrary: "lucide", // Override defaults for iframe use case
theme: "neutral", initialValues.item = "cover-example"
style: "vega", return initialValues
font: "inter",
item: "cover-example",
baseColor: "neutral",
menuAccent: "subtle",
menuColor: "default",
radius: "default",
size: 100,
custom: false,
template: "next",
}
}
const searchParams = new URLSearchParams(window.location.search)
return {
base: (searchParams.get("base") ||
"radix") as DesignSystemSearchParams["base"],
iconLibrary: (searchParams.get("iconLibrary") ||
"lucide") as DesignSystemSearchParams["iconLibrary"],
theme: (searchParams.get("theme") ||
"neutral") as DesignSystemSearchParams["theme"],
style: (searchParams.get("style") ||
"vega") as DesignSystemSearchParams["style"],
font: (searchParams.get("font") ||
"inter") as DesignSystemSearchParams["font"],
item: searchParams.get("item") || "cover-example",
baseColor: (searchParams.get("baseColor") ||
"neutral") as DesignSystemSearchParams["baseColor"],
menuAccent: (searchParams.get("menuAccent") ||
"subtle") as DesignSystemSearchParams["menuAccent"],
menuColor: (searchParams.get("menuColor") ||
"default") as DesignSystemSearchParams["menuColor"],
radius: (searchParams.get("radius") ||
"default") as DesignSystemSearchParams["radius"],
size: parseInt(searchParams.get("size") || "100"),
custom: (searchParams.get("custom") || "false") === "true",
template: (searchParams.get("template") ||
"next") as DesignSystemSearchParams["template"],
}
} }
const designSystemStore = createIframeSyncStore( const designSystemStore = createIframeSyncStore(
@@ -67,13 +28,9 @@ const designSystemStore = createIframeSyncStore(
) )
export function useDesignSystemSync() { export function useDesignSystemSync() {
const [urlParams] = useQueryStates(designSystemSearchParams, { const [urlParams] = useDesignSystemSearchParams()
shallow: false,
})
const keys = Object.keys( const keys = Object.keys(urlParams) as (keyof DesignSystemSearchParams)[]
designSystemSearchParams
) as (keyof DesignSystemSearchParams)[]
return useIframeSyncAll(designSystemStore, keys, urlParams) return useIframeSyncAll(designSystemStore, keys, urlParams)
} }
@@ -81,9 +38,7 @@ export function useDesignSystemSync() {
export function useDesignSystemParam<K extends keyof DesignSystemSearchParams>( export function useDesignSystemParam<K extends keyof DesignSystemSearchParams>(
key: K key: K
) { ) {
const [urlParams] = useQueryStates(designSystemSearchParams, { const [urlParams] = useDesignSystemSearchParams()
shallow: false,
})
return useIframeSyncValue(designSystemStore, key, urlParams[key]) return useIframeSyncValue(designSystemStore, key, urlParams[key])
} }

View File

@@ -1,9 +1,12 @@
import { useQueryStates } from "nuqs"
import { import {
createSearchParamsCache, createLoader,
parseAsBoolean, parseAsBoolean,
parseAsInteger, parseAsInteger,
parseAsString, parseAsString,
parseAsStringLiteral, parseAsStringLiteral,
type inferParserType,
type Options,
} from "nuqs/server" } from "nuqs/server"
import { import {
@@ -28,7 +31,7 @@ import {
} from "@/registry/config" } from "@/registry/config"
import { FONTS } from "@/app/(create)/lib/fonts" import { FONTS } from "@/app/(create)/lib/fonts"
export const designSystemSearchParams = { const designSystemSearchParams = {
base: parseAsStringLiteral<BaseName>(BASES.map((b) => b.name)).withDefault( base: parseAsStringLiteral<BaseName>(BASES.map((b) => b.name)).withDefault(
DEFAULT_CONFIG.base DEFAULT_CONFIG.base
), ),
@@ -57,19 +60,26 @@ export const designSystemSearchParams = {
radius: parseAsStringLiteral<RadiusValue>( radius: parseAsStringLiteral<RadiusValue>(
RADII.map((r) => r.name) RADII.map((r) => r.name)
).withDefault("default"), ).withDefault("default"),
template: parseAsStringLiteral<"next" | "start" | "vite">([ template: parseAsStringLiteral([
"next", "next",
"start", "start",
"vite", "vite",
]).withDefault("next"), ] as const).withDefault("next"),
size: parseAsInteger.withDefault(100), size: parseAsInteger.withDefault(100),
custom: parseAsBoolean.withDefault(false), custom: parseAsBoolean.withDefault(false),
} }
export const designSystemSearchParamsCache = createSearchParamsCache( export const loadDesignSystemSearchParams = createLoader(
designSystemSearchParams designSystemSearchParams
) )
export type DesignSystemSearchParams = Awaited< export const useDesignSystemSearchParams = (options: Options = {}) =>
ReturnType<typeof designSystemSearchParamsCache.parse> useQueryStates(designSystemSearchParams, {
shallow: false,
history: "push",
...options,
})
export type DesignSystemSearchParams = inferParserType<
typeof designSystemSearchParams
> >

View File

@@ -91,9 +91,11 @@ export default function RootLayout({
<ThemeProvider> <ThemeProvider>
<LayoutProvider> <LayoutProvider>
<ActiveThemeProvider> <ActiveThemeProvider>
<NuqsAdapter>{children}</NuqsAdapter> <NuqsAdapter>
{children}
<Toaster position="top-center" />
</NuqsAdapter>
<TailwindIndicator /> <TailwindIndicator />
<Toaster position="top-center" />
<Analytics /> <Analytics />
</ActiveThemeProvider> </ActiveThemeProvider>
</LayoutProvider> </LayoutProvider>

View File

@@ -40,7 +40,7 @@ export function ColorFormatSelector({
<span className="font-medium">Format: </span> <span className="font-medium">Format: </span>
<span className="text-muted-foreground font-mono">{format}</span> <span className="text-muted-foreground font-mono">{format}</span>
</SelectTrigger> </SelectTrigger>
<SelectContent align="end" className="rounded-xl"> <SelectContent align="end" position="popper" className="rounded-xl">
{Object.entries(formats).map(([format, value]) => ( {Object.entries(formats).map(([format, value]) => (
<SelectItem <SelectItem
key={format} key={format}

View File

@@ -1,5 +1,6 @@
{ {
"@8bitcn": "https://8bitcn.com/r/{name}.json", "@8bitcn": "https://8bitcn.com/r/{name}.json",
"@8starlabs-ui": "https://ui.8starlabs.com/r/{name}.json",
"@97cn": "https://97cn.itzik.co/r/{name}.json", "@97cn": "https://97cn.itzik.co/r/{name}.json",
"@abstract": "https://build.abs.xyz/r/{name}/json", "@abstract": "https://build.abs.xyz/r/{name}/json",
"@abui": "https://abui.io/r/{name}.json", "@abui": "https://abui.io/r/{name}.json",
@@ -19,6 +20,8 @@
"@billingsdk": "https://billingsdk.com/r/{name}.json", "@billingsdk": "https://billingsdk.com/r/{name}.json",
"@blocks": "https://blocks.so/r/{name}.json", "@blocks": "https://blocks.so/r/{name}.json",
"@bucharitesh": "https://bucharitesh.in/r/{name}.json", "@bucharitesh": "https://bucharitesh.in/r/{name}.json",
"@bundui": "https://bundui.io/r/{name}.json",
"@cardcn": "https://cardcn.dev/r/{name}.json",
"@clerk": "https://clerk.com/r/{name}.json", "@clerk": "https://clerk.com/r/{name}.json",
"@coss": "https://coss.com/ui/r/{name}.json", "@coss": "https://coss.com/ui/r/{name}.json",
"@commercn": "https://commercn.com/r/{name}.json", "@commercn": "https://commercn.com/r/{name}.json",
@@ -28,6 +31,7 @@
"@diceui": "https://diceui.com/r/{name}.json", "@diceui": "https://diceui.com/r/{name}.json",
"@doras-ui": "https://ui.doras.to/r/{name}.json", "@doras-ui": "https://ui.doras.to/r/{name}.json",
"@efferd": "https://efferd.com/r/{name}.json", "@efferd": "https://efferd.com/r/{name}.json",
"@einui": "https://ui.eindev.ir/r/{name}.json",
"@eldoraui": "https://eldoraui.site/r/{name}.json", "@eldoraui": "https://eldoraui.site/r/{name}.json",
"@elements": "https://tryelements.dev/r/{name}.json", "@elements": "https://tryelements.dev/r/{name}.json",
"@elevenlabs-ui": "https://ui.elevenlabs.io/r/{name}.json", "@elevenlabs-ui": "https://ui.elevenlabs.io/r/{name}.json",
@@ -45,14 +49,17 @@
"@limeplay": "https://limeplay.winoffrg.dev/r/{name}.json", "@limeplay": "https://limeplay.winoffrg.dev/r/{name}.json",
"@lucide-animated": "https://lucide-animated.com/r/{name}.json", "@lucide-animated": "https://lucide-animated.com/r/{name}.json",
"@lytenyte": "https://www.1771technologies.com/r/{name}.json", "@lytenyte": "https://www.1771technologies.com/r/{name}.json",
"@marmelab": "https://marmelab.com/shadcn-admin-kit/r/{name}.json",
"@magicui": "https://magicui.design/r/{name}.json", "@magicui": "https://magicui.design/r/{name}.json",
"@magicui-pro": "https://pro.magicui.design/registry/{name}", "@magicui-pro": "https://pro.magicui.design/registry/{name}",
"@motion-primitives": "https://motion-primitives.com/c/{name}.json", "@motion-primitives": "https://motion-primitives.com/c/{name}.json",
"@manifest": "https://ui.manifest.build/r/{name}.json",
"@mui-treasury": "https://mui-treasury.com/r/{name}.json", "@mui-treasury": "https://mui-treasury.com/r/{name}.json",
"@nativeui": "https://nativeui.io/registry/{name}.json", "@nativeui": "https://nativeui.io/registry/{name}.json",
"@nexus-elements": "https://elements.nexus.availproject.org/r/{name}.json", "@nexus-elements": "https://elements.nexus.availproject.org/r/{name}.json",
"@ncdai": "https://chanhdai.com/r/{name}.json", "@ncdai": "https://chanhdai.com/r/{name}.json",
"@nuqs": "https://nuqs.dev/r/{name}.json", "@nuqs": "https://nuqs.dev/r/{name}.json",
"@optics": "https://optics.agusmayol.com.ar/r/{name}.json",
"@oui": "https://oui.mw10013.workers.dev/r/{name}.json", "@oui": "https://oui.mw10013.workers.dev/r/{name}.json",
"@paceui": "https://ui.paceui.com/r/{name}.json", "@paceui": "https://ui.paceui.com/r/{name}.json",
"@plate": "https://platejs.org/r/{name}.json", "@plate": "https://platejs.org/r/{name}.json",
@@ -86,6 +93,7 @@
"@tailwind-builder": "https://tailwindbuilder.ai/r/{name}.json", "@tailwind-builder": "https://tailwindbuilder.ai/r/{name}.json",
"@tweakcn": "https://tweakcn.com/r/themes/{name}.json", "@tweakcn": "https://tweakcn.com/r/themes/{name}.json",
"@wds": "https://wds-shadcn-registry.netlify.app/r/{name}.json", "@wds": "https://wds-shadcn-registry.netlify.app/r/{name}.json",
"@animbits": "https://animbits.dev/r/{name}.json",
"@wandry-ui": "https://ui.wandry.com.ua/r/{name}.json", "@wandry-ui": "https://ui.wandry.com.ua/r/{name}.json",
"@wigggle-ui": "https://wigggle-ui.vercel.app/r/{name}.json", "@wigggle-ui": "https://wigggle-ui.vercel.app/r/{name}.json",
"@paykit-sdk": "https://www.usepaykit.dev/r/{name}.json", "@paykit-sdk": "https://www.usepaykit.dev/r/{name}.json",
@@ -102,6 +110,7 @@
"@uicapsule": "https://uicapsule.com/r/{name}.json", "@uicapsule": "https://uicapsule.com/r/{name}.json",
"@uitripled": "https://ui.tripled.work/r/{name}.json", "@uitripled": "https://ui.tripled.work/r/{name}.json",
"@ui-layouts": "https://ui-layouts.com/r/{name}.json", "@ui-layouts": "https://ui-layouts.com/r/{name}.json",
"@pureui": "https://pure.kam-ui.com/r/{name}.json",
"@tour": "https://onboarding-tour.vercel.app/r/{name}.json", "@tour": "https://onboarding-tour.vercel.app/r/{name}.json",
"@tb-blocks": "https://tailwindbuilder.ai/r/blocks/{name}.json", "@tb-blocks": "https://tailwindbuilder.ai/r/blocks/{name}.json",
"@ui-layouts": "https://ui-layouts.com/r/{name}.json" "@ui-layouts": "https://ui-layouts.com/r/{name}.json"

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-lyra/ui/scroll-area.tsx", "path": "registry/base-lyra/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-none bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-none bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-lyra/hooks/use-mobile.ts", "path": "registry/base-lyra/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-maia/ui/scroll-area.tsx", "path": "registry/base-maia/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-maia/hooks/use-mobile.ts", "path": "registry/base-maia/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-mira/ui/scroll-area.tsx", "path": "registry/base-mira/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-mira/hooks/use-mobile.ts", "path": "registry/base-mira/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-nova/ui/scroll-area.tsx", "path": "registry/base-nova/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-nova/hooks/use-mobile.ts", "path": "registry/base-nova/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-vega/ui/scroll-area.tsx", "path": "registry/base-vega/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"@/registry/bases/base/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/base-vega/hooks/use-mobile.ts", "path": "registry/base-vega/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-lyra/ui/scroll-area.tsx", "path": "registry/radix-lyra/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-none bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-none bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-lyra/hooks/use-mobile.ts", "path": "registry/radix-lyra/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-maia/ui/scroll-area.tsx", "path": "registry/radix-maia/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-maia/hooks/use-mobile.ts", "path": "registry/radix-maia/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-mira/ui/scroll-area.tsx", "path": "registry/radix-mira/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-mira/hooks/use-mobile.ts", "path": "registry/radix-mira/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-nova/ui/scroll-area.tsx", "path": "registry/radix-nova/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-nova/hooks/use-mobile.ts", "path": "registry/radix-nova/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-vega/ui/scroll-area.tsx", "path": "registry/radix-vega/ui/scroll-area.tsx",
"content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className=\"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\"\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/registry/bases/radix/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
"type": "registry:ui" "type": "registry:ui"
} }
], ],

View File

@@ -4,7 +4,7 @@
"files": [ "files": [
{ {
"path": "registry/radix-vega/hooks/use-mobile.ts", "path": "registry/radix-vega/hooks/use-mobile.ts",
"content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n\n", "content": "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n",
"type": "registry:hook" "type": "registry:hook"
} }
], ],

File diff suppressed because it is too large Load Diff

View File

@@ -277,7 +277,6 @@ function ComboboxChip({
function ComboboxChipsInput({ function ComboboxChipsInput({
className, className,
children,
...props ...props
}: ComboboxPrimitive.Input.Props) { }: ComboboxPrimitive.Input.Props) {
return ( return (

View File

@@ -38,7 +38,10 @@ function ScrollBar({
data-slot="scroll-area-scrollbar" data-slot="scroll-area-scrollbar"
data-orientation={orientation} data-orientation={orientation}
orientation={orientation} orientation={orientation}
className="cn-scroll-area-scrollbar flex touch-none p-px transition-colors select-none" className={cn(
"cn-scroll-area-scrollbar flex touch-none p-px transition-colors select-none",
className
)}
{...props} {...props}
> >
<ScrollAreaPrimitive.Thumb <ScrollAreaPrimitive.Thumb

View File

@@ -22,7 +22,7 @@ function SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {
return ( return (
<SelectPrimitive.Value <SelectPrimitive.Value
data-slot="select-value" data-slot="select-value"
className={cn("cn-select-value text-left", className)} className={cn("cn-select-value", className)}
{...props} {...props}
/> />
) )

View File

@@ -279,7 +279,6 @@ function ComboboxChip({
function ComboboxChipsInput({ function ComboboxChipsInput({
className, className,
children,
...props ...props
}: ComboboxPrimitive.Input.Props) { }: ComboboxPrimitive.Input.Props) {
return ( return (

View File

@@ -38,7 +38,10 @@ function ScrollBar({
data-slot="scroll-area-scrollbar" data-slot="scroll-area-scrollbar"
data-orientation={orientation} data-orientation={orientation}
orientation={orientation} orientation={orientation}
className="cn-scroll-area-scrollbar flex touch-none p-px transition-colors select-none" className={cn(
"cn-scroll-area-scrollbar flex touch-none p-px transition-colors select-none",
className
)}
{...props} {...props}
> >
<ScrollAreaPrimitive.ScrollAreaThumb <ScrollAreaPrimitive.ScrollAreaThumb

File diff suppressed because one or more lines are too long

View File

@@ -14,6 +14,7 @@
"@billingsdk": "https://billingsdk.com/r/{name}.json", "@billingsdk": "https://billingsdk.com/r/{name}.json",
"@blocks": "https://blocks.so/r/{name}.json", "@blocks": "https://blocks.so/r/{name}.json",
"@bucharitesh": "https://bucharitesh.in/r/{name}.json", "@bucharitesh": "https://bucharitesh.in/r/{name}.json",
"@bundui": "https://bundui.io/r/{name}.json",
"@clerk": "https://clerk.com/r/{name}.json", "@clerk": "https://clerk.com/r/{name}.json",
"@coss": "https://coss.com/ui/r/{name}.json", "@coss": "https://coss.com/ui/r/{name}.json",
"@chisom-ui": "https://chisom-ui.netlify.app/r/{name}.json", "@chisom-ui": "https://chisom-ui.netlify.app/r/{name}.json",