sprawlify 0.0.101 → 0.0.102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +2118 -57
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import { existsSync } from "fs";
|
|
|
8
8
|
import prompts from "prompts";
|
|
9
9
|
import { faker } from "@faker-js/faker";
|
|
10
10
|
//#region package.json
|
|
11
|
-
var version = "0.0.
|
|
11
|
+
var version = "0.0.102";
|
|
12
12
|
//#endregion
|
|
13
13
|
//#region src/utils/file-helper.ts
|
|
14
14
|
const FILE_BACKUP_SUFFIX = ".bak";
|
|
@@ -197,17 +197,49 @@ const METAFRAMEWORKS = {
|
|
|
197
197
|
const PRESETS = {
|
|
198
198
|
clay: {
|
|
199
199
|
name: "Clay",
|
|
200
|
-
frameworks: { react: {
|
|
200
|
+
frameworks: { react: {
|
|
201
|
+
dependencies: {
|
|
202
|
+
"class-variance-authority": "^0.7.1",
|
|
203
|
+
react: "^18.2.0",
|
|
204
|
+
"@sprawlify/react": "^0.0.100",
|
|
205
|
+
clsx: "^2.1.1",
|
|
206
|
+
"tailwind-merge": "^3.3.1"
|
|
207
|
+
},
|
|
208
|
+
devDependencies: {},
|
|
209
|
+
items: [{
|
|
210
|
+
name: "button",
|
|
211
|
+
dependencies: [
|
|
212
|
+
"class-variance-authority",
|
|
213
|
+
"react",
|
|
214
|
+
"@/lib/utils",
|
|
215
|
+
"@sprawlify/react"
|
|
216
|
+
],
|
|
217
|
+
files: [{
|
|
218
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\r\nimport * as React from \"react\";\r\nimport { cn } from \"@/lib/utils\";\r\nimport { sprawlify } from \"@sprawlify/react\";\r\n\r\nconst buttonVariants = cva(\r\n \"[&_svg]:-mx-0.5 relative inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-lg border font-medium text-base outline-none transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 sm:text-sm [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\r\n {\r\n defaultVariants: {\r\n size: \"default\",\r\n variant: \"default\",\r\n },\r\n variants: {\r\n size: {\r\n default: \"h-9 px-[calc(--spacing(3)-1px)] sm:h-8\",\r\n icon: \"size-9 sm:size-8\",\r\n \"icon-lg\": \"size-10 sm:size-9\",\r\n \"icon-sm\": \"size-8 sm:size-7\",\r\n \"icon-xl\":\r\n \"size-11 sm:size-10 [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5\",\r\n \"icon-xs\":\r\n \"size-7 rounded-md before:rounded-[calc(var(--radius-md)-1px)] sm:size-6 not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-4 sm:not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-3.5\",\r\n lg: \"h-10 px-[calc(--spacing(3.5)-1px)] sm:h-9\",\r\n sm: \"h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:h-7\",\r\n xl: \"h-11 px-[calc(--spacing(4)-1px)] text-lg sm:h-10 sm:text-base [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5\",\r\n xs: \"h-7 gap-1 rounded-md px-[calc(--spacing(2)-1px)] text-sm before:rounded-[calc(var(--radius-md)-1px)] sm:h-6 sm:text-xs [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5\",\r\n },\r\n variant: {\r\n default:\r\n \"not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] border-primary bg-primary text-primary-foreground shadow-primary/24 shadow-xs [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-primary/90\",\r\n destructive:\r\n \"not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] border-destructive bg-destructive text-white shadow-destructive/24 shadow-xs [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-destructive/90\",\r\n \"destructive-outline\":\r\n \"border-input bg-popover not-dark:bg-clip-padding text-destructive-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:border-destructive/32 [:hover,[data-pressed]]:bg-destructive/4\",\r\n ghost:\r\n \"border-transparent text-foreground data-pressed:bg-accent [:hover,[data-pressed]]:bg-accent\",\r\n link: \"border-transparent underline-offset-4 [:hover,[data-pressed]]:underline\",\r\n outline:\r\n \"border-input bg-popover not-dark:bg-clip-padding text-foreground shadow-xs/5 not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64\",\r\n secondary:\r\n \"border-transparent bg-secondary text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80 [:hover,[data-pressed]]:bg-secondary/90\",\r\n },\r\n },\r\n },\r\n);\r\n\r\ninterface ButtonProps extends React.ComponentProps<typeof sprawlify.button> {\r\n variant?: VariantProps<typeof buttonVariants>[\"variant\"];\r\n size?: VariantProps<typeof buttonVariants>[\"size\"];\r\n}\r\n\r\nfunction Button({ className, variant, size, ...props }: ButtonProps) {\r\n const defaultProps = {\r\n className: cn(buttonVariants({ className, size, variant })),\r\n \"data-scope\": \"button\",\r\n \"data-part\": \"root\",\r\n \"data-slot\": \"button\"\r\n };\r\n\r\n return (\r\n <sprawlify.button\r\n {...defaultProps}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Button, buttonVariants };\r\n",
|
|
219
|
+
type: "registry:ui",
|
|
220
|
+
path: "button.tsx"
|
|
221
|
+
}]
|
|
222
|
+
}, {
|
|
223
|
+
name: "utils",
|
|
224
|
+
dependencies: ["clsx", "tailwind-merge"],
|
|
225
|
+
files: [{
|
|
226
|
+
content: "import { clsx, type ClassValue } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n \r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}",
|
|
227
|
+
type: "registry:utils",
|
|
228
|
+
path: "utils.ts"
|
|
229
|
+
}]
|
|
230
|
+
}]
|
|
231
|
+
} }
|
|
201
232
|
},
|
|
202
233
|
monochrome: {
|
|
203
234
|
name: "Monochrome",
|
|
204
235
|
frameworks: {
|
|
205
236
|
react: {
|
|
206
237
|
dependencies: {
|
|
207
|
-
|
|
238
|
+
react: "^18.2.0",
|
|
208
239
|
"class-variance-authority": "^0.7.1",
|
|
240
|
+
"@sprawlify/react": "^0.0.100",
|
|
241
|
+
"lucide-react": "^0.400.0",
|
|
209
242
|
clsx: "^2.1.1",
|
|
210
|
-
react: "^18.2.0",
|
|
211
243
|
"tailwind-merge": "^3.3.1"
|
|
212
244
|
},
|
|
213
245
|
devDependencies: {},
|
|
@@ -240,7 +272,7 @@ const PRESETS = {
|
|
|
240
272
|
dependencies: [
|
|
241
273
|
"react",
|
|
242
274
|
"@sprawlify/react",
|
|
243
|
-
"@/lib"
|
|
275
|
+
"@/lib/utils"
|
|
244
276
|
],
|
|
245
277
|
files: [{
|
|
246
278
|
content: "import * as React from \"react\";\nimport { Avatar as AvatarPrimitive } from \"@sprawlify/react/avatar\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: \"default\" | \"sm\" | \"lg\";\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square rounded-[inherit] size-full overflow-hidden\", className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"rounded-[inherit] overflow-hidden bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<typeof sprawlify.span>) {\n return (\n <sprawlify.span\n data-scope=\"avatar\"\n data-part=\"badge\"\n data-slot=\"avatar-badge\"\n className={cn(\n \"bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"avatar\"\n data-paert=\"group\"\n data-slot=\"avatar-group\"\n className={cn(\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"avatar\"\n data-paert=\"group-count\"\n data-slot=\"avatar-group-count\"\n className={cn(\n \"bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n",
|
|
@@ -263,32 +295,31 @@ const PRESETS = {
|
|
|
263
295
|
}]
|
|
264
296
|
},
|
|
265
297
|
{
|
|
266
|
-
name: "button
|
|
267
|
-
type: "registry:ui",
|
|
298
|
+
name: "button",
|
|
268
299
|
dependencies: [
|
|
300
|
+
"react",
|
|
269
301
|
"class-variance-authority",
|
|
270
302
|
"@/lib/utils",
|
|
271
|
-
"@/components/ui/separator",
|
|
272
303
|
"@sprawlify/react"
|
|
273
304
|
],
|
|
274
305
|
files: [{
|
|
275
|
-
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport {
|
|
306
|
+
content: "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof sprawlify.button> & VariantProps<typeof buttonVariants>) {\n return (\n <sprawlify.button\n data-scope=\"button\"\n data-part=\"root\"\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n",
|
|
276
307
|
type: "registry:ui",
|
|
277
|
-
path: "button
|
|
308
|
+
path: "button.tsx"
|
|
278
309
|
}]
|
|
279
310
|
},
|
|
280
311
|
{
|
|
281
|
-
name: "button",
|
|
312
|
+
name: "button-group",
|
|
282
313
|
dependencies: [
|
|
283
|
-
"react",
|
|
284
314
|
"class-variance-authority",
|
|
285
315
|
"@/lib/utils",
|
|
316
|
+
"@/components/ui/separator",
|
|
286
317
|
"@sprawlify/react"
|
|
287
318
|
],
|
|
288
319
|
files: [{
|
|
289
|
-
content: "import
|
|
320
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nconst buttonGroupVariants = cva(\n \"has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg flex w-fit items-stretch *:focus-visible:z-10 *:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<typeof sprawlify.div> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <sprawlify.div\n data-scope=\"button-group\"\n data-part=\"root\"\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation, className }))}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupText({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n className={cn(\n \"bg-muted gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-scope=\"button-group\"\n data-part=\"separator\"\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"bg-input relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };\n",
|
|
290
321
|
type: "registry:ui",
|
|
291
|
-
path: "button.tsx"
|
|
322
|
+
path: "button-group.tsx"
|
|
292
323
|
}]
|
|
293
324
|
},
|
|
294
325
|
{
|
|
@@ -318,6 +349,191 @@ const PRESETS = {
|
|
|
318
349
|
path: "checkbox.tsx"
|
|
319
350
|
}]
|
|
320
351
|
},
|
|
352
|
+
{
|
|
353
|
+
name: "collapsible",
|
|
354
|
+
dependencies: ["@sprawlify/react"],
|
|
355
|
+
files: [{
|
|
356
|
+
content: "import { Collapsible as CollapsiblePrimitive } from \"@sprawlify/react/collapsible\";\n\nfunction Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Trigger>) {\n return <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />;\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Content>) {\n return <CollapsiblePrimitive.Content data-slot=\"collapsible-content\" {...props} />;\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n",
|
|
357
|
+
type: "registry:ui",
|
|
358
|
+
path: "collapsible.tsx"
|
|
359
|
+
}]
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
name: "dropdown-menu",
|
|
363
|
+
dependencies: [
|
|
364
|
+
"react",
|
|
365
|
+
"@sprawlify/react",
|
|
366
|
+
"@/lib/utils",
|
|
367
|
+
"lucide-react"
|
|
368
|
+
],
|
|
369
|
+
files: [{
|
|
370
|
+
content: "import * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/react/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\";\nimport { Portal } from \"@sprawlify/react/portal\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return (\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n positioning={{ offset: { mainAxis: 4 } }}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuPortal({ ...props }: React.ComponentProps<typeof Portal>) {\n return <Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <Portal>\n <DropdownMenuPrimitive.Positioner>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"focus-visible:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-(--z-index) max-h-(--available-height) w-(--reference-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Positioner>\n </Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.ItemGroup>) {\n return <DropdownMenuPrimitive.ItemGroup data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"data-[variant=destructive]:text-destructive data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[variant=destructive]:data-highlighted:bg-destructive/10 dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:data-highlighted:*:[svg]:text-destructive not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItemGroup>) {\n return <DropdownMenuPrimitive.RadioItemGroup data-slot=\"dropdown-menu-radio-group\" {...props} />;\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <span\n className=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.ItemGroupLabel> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.ItemGroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<typeof sprawlify.span>) {\n return (\n <sprawlify.span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.TriggerItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.TriggerItem\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"w-full data-[state=open]:bg-accent data-[state=open]:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n </DropdownMenuPrimitive.TriggerItem>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <Portal>\n <DropdownMenuPrimitive.Positioner>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"focus-visible:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-lg p-1 shadow-lg ring-1 duration-100 origin-(--transform-origin) overflow-hidden\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Positioner>\n </Portal>\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n",
|
|
371
|
+
type: "registry:ui",
|
|
372
|
+
path: "dropdown-menu.tsx"
|
|
373
|
+
}]
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
name: "empty",
|
|
377
|
+
dependencies: [
|
|
378
|
+
"class-variance-authority",
|
|
379
|
+
"@/lib/utils",
|
|
380
|
+
"@sprawlify/react"
|
|
381
|
+
],
|
|
382
|
+
files: [{
|
|
383
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"empty\"\n data-part=\"root\"\n data-slot=\"empty\"\n className={cn(\n \"gap-4 rounded-xl border-dashed p-6 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-slot=\"empty-header\"\n className={cn(\"gap-2 flex max-w-sm flex-col items-center\", className)}\n {...props}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof sprawlify.div> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <sprawlify.div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-slot=\"empty-title\"\n className={cn(\"text-sm font-medium tracking-tight\", className)}\n {...props}\n />\n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<typeof sprawlify.p>) {\n return (\n <sprawlify.p\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-slot=\"empty-content\"\n className={cn(\n \"gap-2.5 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia };\n",
|
|
384
|
+
type: "registry:ui",
|
|
385
|
+
path: "empty.tsx"
|
|
386
|
+
}]
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
name: "field",
|
|
390
|
+
dependencies: [
|
|
391
|
+
"react",
|
|
392
|
+
"class-variance-authority",
|
|
393
|
+
"@/lib/utils",
|
|
394
|
+
"@/components/ui/label",
|
|
395
|
+
"@/components/ui/separator",
|
|
396
|
+
"@sprawlify/react"
|
|
397
|
+
],
|
|
398
|
+
files: [{
|
|
399
|
+
content: "import { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"@/components/ui/label\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<typeof sprawlify.fieldset>) {\n return (\n <sprawlify.fieldset\n data-scope=\"field\"\n data-part=\"set\"\n data-slot=\"field-set\"\n className={cn(\n \"gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<typeof sprawlify.legend> & { variant?: \"legend\" | \"label\" }) {\n return (\n <sprawlify.legend\n data-scope=\"field\"\n data-part=\"legend\"\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"group\"\n data-slot=\"field-group\"\n className={cn(\n \"gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\"data-[invalid=true]:text-destructive gap-2 group/field flex w-full\", {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n});\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof sprawlify.div> & VariantProps<typeof fieldVariants>) {\n return (\n <sprawlify.div\n role=\"group\"\n data-scope=\"field\"\n data-part=\"root\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"content\"\n data-slot=\"field-content\"\n className={cn(\"gap-0.5 group/field-content flex flex-1 flex-col leading-snug\", className)}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-scope=\"field\"\n data-part=\"label\"\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"title\"\n data-slot=\"field-title\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<typeof sprawlify.p>) {\n return (\n <sprawlify.p\n data-scope=\"field\"\n data-part=\"description\"\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-data-horizontal/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<typeof sprawlify.div> & {\n children?: React.ReactNode;\n}) {\n return (\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"separator\"\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-scope=\"field\"\n data-part=\"separator-content\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </sprawlify.div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<typeof sprawlify.div> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map((error, index) => error?.message && <li key={index}>{error.message}</li>)}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <sprawlify.div\n role=\"alert\"\n data-scope=\"field\"\n data-part=\"error\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </sprawlify.div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n",
|
|
400
|
+
type: "registry:ui",
|
|
401
|
+
path: "field.tsx"
|
|
402
|
+
}]
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
name: "input",
|
|
406
|
+
dependencies: [
|
|
407
|
+
"react",
|
|
408
|
+
"@/lib/utils",
|
|
409
|
+
"@sprawlify/react"
|
|
410
|
+
],
|
|
411
|
+
files: [{
|
|
412
|
+
content: "import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<typeof sprawlify.input>) {\n return (\n <sprawlify.input\n type={type}\n data-scope=\"input\"\n data-part=\"root\"\n data-slot=\"input\"\n className={cn(\n \"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n",
|
|
413
|
+
type: "registry:ui",
|
|
414
|
+
path: "input.tsx"
|
|
415
|
+
}]
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
name: "input-group",
|
|
419
|
+
dependencies: [
|
|
420
|
+
"react",
|
|
421
|
+
"class-variance-authority",
|
|
422
|
+
"@/lib/utils",
|
|
423
|
+
"@/components/ui/button",
|
|
424
|
+
"@/components/ui/input",
|
|
425
|
+
"@/components/ui/textarea",
|
|
426
|
+
"@sprawlify/react"
|
|
427
|
+
],
|
|
428
|
+
files: [{
|
|
429
|
+
content: "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"input-group\"\n data-part=\"root\"\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-lg border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n \"inline-start\": \"pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem] order-first\",\n \"inline-end\": \"pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem] order-last\",\n \"block-start\":\n \"px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start\",\n \"block-end\":\n \"px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<typeof sprawlify.div> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <sprawlify.div\n role=\"group\"\n data-scope=\"input-group\"\n data-part=\"addon\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\"gap-2 text-sm shadow-none flex items-center\", {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n});\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n data-scope=\"input-group\"\n data-part=\"button\"\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<typeof sprawlify.span>) {\n return (\n <sprawlify.span\n data-scope=\"input-group\"\n data-part=\"text\"\n data-slot=\"input-group-text\"\n className={cn(\n \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({ className, ...props }: React.ComponentProps<typeof sprawlify.input>) {\n return (\n <Input\n data-scope=\"input-group\"\n data-part=\"control\"\n data-slot=\"input-group-control\"\n className={cn(\n \"rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<typeof sprawlify.textarea>) {\n return (\n <Textarea\n data-scope=\"input-group\"\n data-part=\"control\"\n data-slot=\"input-group-control\"\n className={cn(\n \"rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1 resize-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n",
|
|
430
|
+
type: "registry:ui",
|
|
431
|
+
path: "input-group.tsx"
|
|
432
|
+
}]
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
name: "item",
|
|
436
|
+
dependencies: [
|
|
437
|
+
"react",
|
|
438
|
+
"class-variance-authority",
|
|
439
|
+
"@/lib/utils",
|
|
440
|
+
"@/components/ui/separator",
|
|
441
|
+
"@sprawlify/react"
|
|
442
|
+
],
|
|
443
|
+
files: [{
|
|
444
|
+
content: "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n role=\"list\"\n data-scope=\"item\"\n data-part=\"group\"\n data-slot=\"item-group\"\n className={cn(\n \"gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2 group/item-group flex w-full flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-scope=\"item\"\n data-part=\"separator\"\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-2\", className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"[a]:hover:bg-muted rounded-lg border text-sm w-full group/item focus-visible:border-ring focus-visible:ring-ring/50 flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:ring-[3px] [a]:transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50 border-transparent\",\n },\n size: {\n default: \"gap-2.5 px-3 py-2.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof sprawlify.div> & VariantProps<typeof itemVariants>) {\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"root\"\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nconst itemMediaVariants = cva(\n \"gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start flex shrink-0 items-center justify-center [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof sprawlify.div> & VariantProps<typeof itemMediaVariants>) {\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"media\"\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"content\"\n data-slot=\"item-content\"\n className={cn(\n \"gap-1 group-data-[size=xs]/item:gap-0 flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"title\"\n data-slot=\"item-title\"\n className={cn(\n \"gap-2 text-sm leading-snug font-medium underline-offset-4 line-clamp-1 flex w-fit items-center\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<typeof sprawlify.p>) {\n return (\n <sprawlify.p\n data-scope=\"item\"\n data-part=\"description\"\n data-slot=\"item-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs [&>a:hover]:text-primary line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"actions\"\n data-slot=\"item-actions\"\n className={cn(\"gap-2 flex items-center\", className)}\n {...props}\n />\n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"header\"\n data-slot=\"item-header\"\n className={cn(\"gap-2 flex basis-full items-center justify-between\", className)}\n {...props}\n />\n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<typeof sprawlify.div>) {\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"footer\"\n data-slot=\"item-footer\"\n className={cn(\"gap-2 flex basis-full items-center justify-between\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n",
|
|
445
|
+
type: "registry:ui",
|
|
446
|
+
path: "item.tsx"
|
|
447
|
+
}]
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
name: "kbd",
|
|
451
|
+
dependencies: ["@/lib/utils", "@sprawlify/react"],
|
|
452
|
+
files: [{
|
|
453
|
+
content: "import { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction Kbd({ className, ...props }: React.ComponentProps<typeof sprawlify.kbd>) {\n return (\n <sprawlify.kbd\n data-scope=\"kbd\"\n data-part=\"root\"\n data-slot=\"kbd\"\n className={cn(\n \"bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 pointer-events-none inline-flex items-center justify-center select-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<typeof sprawlify.kbd>) {\n return (\n <sprawlify.kbd\n data-scope=\"kbd\"\n data-part=\"group\"\n data-slot=\"kbd-group\"\n className={cn(\"gap-1 inline-flex items-center\", className)}\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n",
|
|
454
|
+
type: "registry:ui",
|
|
455
|
+
path: "kbd.tsx"
|
|
456
|
+
}]
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
name: "label",
|
|
460
|
+
dependencies: [
|
|
461
|
+
"react",
|
|
462
|
+
"@/lib/utils",
|
|
463
|
+
"@sprawlify/react"
|
|
464
|
+
],
|
|
465
|
+
files: [{
|
|
466
|
+
content: "import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction Label({ className, ...props }: React.ComponentProps<typeof sprawlify.label>) {\n return (\n <sprawlify.label\n data-scope=\"label\"\n data-part=\"root\"\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n",
|
|
467
|
+
type: "registry:ui",
|
|
468
|
+
path: "label.tsx"
|
|
469
|
+
}]
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
name: "native-select",
|
|
473
|
+
dependencies: [
|
|
474
|
+
"react",
|
|
475
|
+
"@/lib/utils",
|
|
476
|
+
"lucide-react"
|
|
477
|
+
],
|
|
478
|
+
files: [{
|
|
479
|
+
content: "import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\ntype NativeSelectProps = Omit<React.ComponentProps<\"select\">, \"size\"> & {\n size?: \"sm\" | \"default\";\n};\n\nfunction NativeSelect({ className, size = \"default\", ...props }: NativeSelectProps) {\n return (\n <div\n className={cn(\n \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\n className,\n )}\n data-scope=\"native-select\"\n data-part=\"root\"\n data-slot=\"native-select-root\"\n data-size={size}\n >\n <select\n data-slot=\"native-select\"\n data-size={size}\n className=\"border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 outline-none disabled:pointer-events-none disabled:cursor-not-allowed\"\n {...props}\n />\n <ChevronDownIcon\n className=\"text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none\"\n aria-hidden=\"true\"\n data-slot=\"native-select-icon\"\n />\n </div>\n );\n}\n\nfunction NativeSelectOption({ ...props }: React.ComponentProps<\"option\">) {\n return (\n <option\n data-scope=\"native-select\"\n data-part=\"option\"\n data-slot=\"native-select-option\"\n {...props}\n />\n );\n}\n\nfunction NativeSelectOptGroup({ className, ...props }: React.ComponentProps<\"optgroup\">) {\n return (\n <optgroup\n data-scope=\"native-select\"\n data-part=\"optgroup\"\n data-slot=\"native-select-optgroup\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption };\n",
|
|
480
|
+
type: "registry:ui",
|
|
481
|
+
path: "native-select.tsx"
|
|
482
|
+
}]
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
name: "scroll-area",
|
|
486
|
+
dependencies: [
|
|
487
|
+
"react",
|
|
488
|
+
"@sprawlify/react",
|
|
489
|
+
"@/lib/utils"
|
|
490
|
+
],
|
|
491
|
+
files: [{
|
|
492
|
+
content: "import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"@sprawlify/react/scroll-area\";\nimport { cn } from \"@/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 scrollbar-none\"\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.Scrollbar>) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-l data-[orientation=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",
|
|
493
|
+
type: "registry:ui",
|
|
494
|
+
path: "scroll-area.tsx"
|
|
495
|
+
}]
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
name: "separator",
|
|
499
|
+
dependencies: [
|
|
500
|
+
"react",
|
|
501
|
+
"@sprawlify/react",
|
|
502
|
+
"@/lib/utils"
|
|
503
|
+
],
|
|
504
|
+
files: [{
|
|
505
|
+
content: "import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"@sprawlify/react/separator\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n",
|
|
506
|
+
type: "registry:ui",
|
|
507
|
+
path: "separator.tsx"
|
|
508
|
+
}]
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
name: "tabs",
|
|
512
|
+
dependencies: [
|
|
513
|
+
"react",
|
|
514
|
+
"class-variance-authority",
|
|
515
|
+
"@sprawlify/react",
|
|
516
|
+
"@/lib/utils"
|
|
517
|
+
],
|
|
518
|
+
files: [{
|
|
519
|
+
content: "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Tabs as TabsPrimitive } from \"@sprawlify/react/tabs\";\nimport { cn } from \"@/lib/utils\";\n\nfunction Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\", className)}\n {...props}\n />\n );\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-8 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium group-data-[variant=default]/tabs-list:data-selected:shadow-sm group-data-[variant=line]/tabs-list:data-selected:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-selected:bg-transparent dark:group-data-[variant=line]/tabs-list:data-selected:border-transparent dark:group-data-[variant=line]/tabs-list:data-selected:bg-transparent\",\n \"data-selected:bg-background dark:data-selected:text-foreground dark:data-selected:border-input dark:data-selected:bg-input/30 data-selected:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-selected:after:opacity-100\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"text-sm flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };\n",
|
|
520
|
+
type: "registry:ui",
|
|
521
|
+
path: "tabs.tsx"
|
|
522
|
+
}]
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
name: "textarea",
|
|
526
|
+
dependencies: [
|
|
527
|
+
"react",
|
|
528
|
+
"@/lib/utils",
|
|
529
|
+
"@sprawlify/react"
|
|
530
|
+
],
|
|
531
|
+
files: [{
|
|
532
|
+
content: "import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/react\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<typeof sprawlify.textarea>) {\n return (\n <sprawlify.textarea\n data-scope=\"textarea\"\n data-part=\"root\"\n data-slot=\"textarea\"\n className={cn(\n \"border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors focus-visible:ring-3 aria-invalid:ring-3 md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n",
|
|
533
|
+
type: "registry:ui",
|
|
534
|
+
path: "textarea.tsx"
|
|
535
|
+
}]
|
|
536
|
+
},
|
|
321
537
|
{
|
|
322
538
|
name: "utils",
|
|
323
539
|
dependencies: ["clsx", "tailwind-merge"],
|
|
@@ -331,54 +547,1899 @@ const PRESETS = {
|
|
|
331
547
|
},
|
|
332
548
|
solid: {
|
|
333
549
|
dependencies: {
|
|
550
|
+
"solid-js": "^1.8.0",
|
|
334
551
|
"class-variance-authority": "^0.7.1",
|
|
552
|
+
"@sprawlify/solid": "^0.0.100",
|
|
553
|
+
"lucide-solid": "^0.400.0",
|
|
335
554
|
clsx: "^2.1.1",
|
|
336
555
|
"tailwind-merge": "^3.3.1"
|
|
337
556
|
},
|
|
338
557
|
devDependencies: {},
|
|
339
|
-
items: [
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
558
|
+
items: [
|
|
559
|
+
{
|
|
560
|
+
name: "alert",
|
|
561
|
+
dependencies: [
|
|
562
|
+
"solid-js",
|
|
563
|
+
"class-variance-authority",
|
|
564
|
+
"@/lib/utils",
|
|
565
|
+
"@sprawlify/solid"
|
|
566
|
+
],
|
|
567
|
+
files: [{
|
|
568
|
+
content: "import { type ComponentProps, splitProps } from \"solid-js\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\n\nconst alertVariants = cva(\n \"grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = (\n props: ComponentProps<typeof sprawlify.div> & VariantProps<typeof alertVariants>,\n) => {\n const [local, others] = splitProps(props, [\"variant\", \"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"alert\"\n data-part=\"root\"\n data-slot=\"alert\"\n role=\"alert\"\n class={cn(alertVariants({ variant: local.variant }), local.class)}\n {...others}\n />\n );\n};\n\nconst AlertTitle = (props: ComponentProps<typeof sprawlify.div>) => {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"alert\"\n data-part=\"title\"\n data-slot=\"alert-title\"\n class={cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n local.class,\n )}\n {...others}\n />\n );\n};\n\nconst AlertDescription = (props: ComponentProps<typeof sprawlify.div>) => {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"alert\"\n data-part=\"description\"\n data-slot=\"alert-description\"\n class={cn(\n \"text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n local.class,\n )}\n {...others}\n />\n );\n};\n\nconst AlertAction = (props: ComponentProps<typeof sprawlify.div>) => {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"alert\"\n data-part=\"action\"\n data-slot=\"alert-action\"\n class={cn(\"absolute top-2 right-2\", local.class)}\n {...others}\n />\n );\n};\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\n",
|
|
569
|
+
type: "registry:ui",
|
|
570
|
+
path: "alert.tsx"
|
|
571
|
+
}]
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
name: "aspect-ratio",
|
|
575
|
+
dependencies: ["@sprawlify/solid", "solid-js"],
|
|
576
|
+
files: [{
|
|
577
|
+
content: "import { AspectRatio as AspectRatioPrimitive } from \"@sprawlify/solid/aspect-ratio\";\nimport type { ComponentProps } from \"solid-js\";\n\nfunction AspectRatio(props: ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return (\n <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props}>\n <AspectRatioPrimitive.Content data-slot=\"aspect-ratio-content\">\n {props.children}\n </AspectRatioPrimitive.Content>\n </AspectRatioPrimitive.Root>\n );\n}\n\nexport { AspectRatio };\n",
|
|
578
|
+
type: "registry:ui",
|
|
579
|
+
path: "aspect-ratio.tsx"
|
|
580
|
+
}]
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
name: "avatar",
|
|
584
|
+
dependencies: [
|
|
585
|
+
"@sprawlify/solid",
|
|
586
|
+
"solid-js",
|
|
587
|
+
"@/lib/utils"
|
|
588
|
+
],
|
|
589
|
+
files: [{
|
|
590
|
+
content: "import { Avatar as AvatarPrimitive } from \"@sprawlify/solid/avatar\";\nimport { type ComponentProps, splitProps } from \"solid-js\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\n\nfunction Avatar(\n props: ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: \"default\" | \"sm\" | \"lg\";\n },\n) {\n const [local, others] = splitProps(props, [\"class\", \"size\"]);\n const size = () => local.size ?? \"default\";\n\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size()}\n class={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction AvatarImage(props: ComponentProps<typeof AvatarPrimitive.Image>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n class={cn(\"aspect-square rounded-[inherit] size-full overflow-hidden\", local.class)}\n {...others}\n />\n );\n}\n\nfunction AvatarFallback(props: ComponentProps<typeof AvatarPrimitive.Fallback>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n class={cn(\n \"rounded-[inherit] overflow-hidden bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction AvatarBadge(props: ComponentProps<typeof sprawlify.span>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.span\n data-scope=\"avatar\"\n data-part=\"badge\"\n data-slot=\"avatar-badge\"\n class={cn(\n \"bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction AvatarGroup(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"avatar\"\n data-paert=\"group\"\n data-slot=\"avatar-group\"\n class={cn(\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction AvatarGroupCount(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"avatar\"\n data-paert=\"group-count\"\n data-slot=\"avatar-group-count\"\n class={cn(\n \"bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n",
|
|
591
|
+
type: "registry:ui",
|
|
592
|
+
path: "avatar.tsx"
|
|
593
|
+
}]
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
name: "badge",
|
|
597
|
+
dependencies: [
|
|
598
|
+
"class-variance-authority",
|
|
599
|
+
"@/lib/utils",
|
|
600
|
+
"@sprawlify/solid",
|
|
601
|
+
"solid-js"
|
|
602
|
+
],
|
|
603
|
+
files: [{
|
|
604
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary: \"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n ghost: \"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 [a&]:hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge(props: ComponentProps<typeof sprawlify.span> & VariantProps<typeof badgeVariants>) {\n const [local, others] = splitProps(props, [\"variant\", \"class\"]);\n const variant = () => local.variant ?? \"default\";\n\n return (\n <sprawlify.span\n data-scope=\"badge\"\n data-part=\"root\"\n data-slot=\"badge\"\n data-variant={variant()}\n class={cn(badgeVariants({ variant: variant(), class: local.class }))}\n {...others}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n",
|
|
605
|
+
type: "registry:ui",
|
|
606
|
+
path: "badge.tsx"
|
|
607
|
+
}]
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
name: "button",
|
|
611
|
+
dependencies: [
|
|
612
|
+
"class-variance-authority",
|
|
613
|
+
"@/lib/utils",
|
|
614
|
+
"@sprawlify/solid",
|
|
615
|
+
"solid-js"
|
|
616
|
+
],
|
|
617
|
+
files: [{
|
|
618
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button(\n props: ComponentProps<typeof sprawlify.button> & VariantProps<typeof buttonVariants>,\n) {\n const [local, others] = splitProps(props, [\"variant\", \"size\", \"class\"]);\n const variant = () => local.variant ?? \"default\";\n const size = () => local.size ?? \"default\";\n\n return (\n <sprawlify.button\n data-scope=\"button\"\n data-part=\"root\"\n data-slot=\"button\"\n data-variant={variant()}\n data-size={size()}\n class={cn(buttonVariants({ variant: variant(), size: size(), class: local.class }))}\n {...others}\n />\n );\n}\n\nexport { Button, buttonVariants };\n",
|
|
619
|
+
type: "registry:ui",
|
|
620
|
+
path: "button.tsx"
|
|
621
|
+
}]
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
name: "button-group",
|
|
625
|
+
dependencies: [
|
|
626
|
+
"class-variance-authority",
|
|
627
|
+
"@/lib/utils",
|
|
628
|
+
"@/components/ui/separator",
|
|
629
|
+
"@sprawlify/solid",
|
|
630
|
+
"solid-js"
|
|
631
|
+
],
|
|
632
|
+
files: [{
|
|
633
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\n\nconst buttonGroupVariants = cva(\n \"has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg flex w-fit items-stretch *:focus-visible:z-10 *:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup(\n props: ComponentProps<typeof sprawlify.div> & VariantProps<typeof buttonGroupVariants>,\n) {\n const [local, others] = splitProps(props, [\"orientation\", \"class\"]);\n const orientation = () => local.orientation;\n\n return (\n <sprawlify.div\n data-scope=\"button-group\"\n data-part=\"root\"\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation()}\n class={cn(buttonGroupVariants({ orientation: orientation() }), local.class)}\n {...others}\n />\n );\n}\n\nfunction ButtonGroupText(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n class={cn(\n \"bg-muted gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction ButtonGroupSeparator(props: ComponentProps<typeof Separator>) {\n const [local, others] = splitProps(props, [\"orientation\", \"class\"]);\n const orientation = () => local.orientation ?? \"vertical\";\n\n return (\n <Separator\n data-scope=\"button-group\"\n data-part=\"separator\"\n data-slot=\"button-group-separator\"\n orientation={orientation()}\n class={cn(\n \"bg-input relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };\n",
|
|
634
|
+
type: "registry:ui",
|
|
635
|
+
path: "button-group.tsx"
|
|
636
|
+
}]
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
name: "card",
|
|
640
|
+
dependencies: [
|
|
641
|
+
"@/lib/utils",
|
|
642
|
+
"@sprawlify/solid",
|
|
643
|
+
"solid-js"
|
|
644
|
+
],
|
|
645
|
+
files: [{
|
|
646
|
+
content: "import { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\n\nfunction Card(props: ComponentProps<typeof sprawlify.div> & { size?: \"default\" | \"sm\" }) {\n const [local, others] = splitProps(props, [\"class\", \"size\"]);\n const size = () => local.size ?? \"default\";\n\n return (\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"root\"\n data-slot=\"card\"\n data-size={size()}\n class={cn(\n \"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction CardHeader(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"header\"\n data-slot=\"card-header\"\n class={cn(\n \"gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction CardTitle(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"title\"\n data-slot=\"card-title\"\n class={cn(\n \"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction CardDescription(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"description\"\n data-slot=\"card-description\"\n class={cn(\"text-muted-foreground text-sm\", local.class)}\n {...others}\n />\n );\n}\n\nfunction CardAction(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"action\"\n data-slot=\"card-action\"\n class={cn(\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\", local.class)}\n {...others}\n />\n );\n}\n\nfunction CardContent(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"content\"\n data-slot=\"card-content\"\n class={cn(\"px-4 group-data-[size=sm]/card:px-3\", local.class)}\n {...others}\n />\n );\n}\n\nfunction CardFooter(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"footer\"\n data-slot=\"card-footer\"\n class={cn(\n \"bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent };\n",
|
|
647
|
+
type: "registry:ui",
|
|
648
|
+
path: "card.tsx"
|
|
649
|
+
}]
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
name: "checkbox",
|
|
653
|
+
dependencies: [
|
|
654
|
+
"@/lib/utils",
|
|
655
|
+
"@sprawlify/solid",
|
|
656
|
+
"lucide-solid",
|
|
657
|
+
"solid-js"
|
|
658
|
+
],
|
|
659
|
+
files: [{
|
|
660
|
+
content: "import { cn } from \"@/lib/utils\";\nimport { Checkbox as CheckboxPrimitive } from \"@sprawlify/solid/checkbox\";\nimport { CheckIcon } from \"lucide-solid\";\nimport { type ComponentProps, splitProps } from \"solid-js\";\n\nfunction Checkbox(props: ComponentProps<typeof CheckboxPrimitive.Root>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n class={cn(\n \"border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50\",\n local.class,\n )}\n {...others}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n class=\"[&>svg]:size-3.5 grid place-content-center text-current transition-none\"\n >\n <CheckIcon />\n </CheckboxPrimitive.Indicator>\n <CheckboxPrimitive.HiddenInput />\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n",
|
|
661
|
+
type: "registry:ui",
|
|
662
|
+
path: "checkbox.tsx"
|
|
663
|
+
}]
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
name: "collapsible",
|
|
667
|
+
dependencies: ["@sprawlify/solid", "solid-js"],
|
|
668
|
+
files: [{
|
|
669
|
+
content: "import { Collapsible as CollapsiblePrimitive } from \"@sprawlify/solid/collapsible\";\nimport type { ComponentProps } from \"solid-js\";\n\nfunction Collapsible(props: ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger(props: ComponentProps<typeof CollapsiblePrimitive.Trigger>) {\n return <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />;\n}\n\nfunction CollapsibleContent(props: ComponentProps<typeof CollapsiblePrimitive.Content>) {\n return <CollapsiblePrimitive.Content data-slot=\"collapsible-content\" {...props} />;\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n",
|
|
670
|
+
type: "registry:ui",
|
|
671
|
+
path: "collapsible.tsx"
|
|
672
|
+
}]
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
name: "dropdown-menu",
|
|
676
|
+
dependencies: [
|
|
677
|
+
"@sprawlify/solid",
|
|
678
|
+
"@/lib/utils",
|
|
679
|
+
"lucide-solid",
|
|
680
|
+
"solid-js",
|
|
681
|
+
"solid-js/web"
|
|
682
|
+
],
|
|
683
|
+
files: [{
|
|
684
|
+
content: "import { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/solid/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { CheckIcon, ChevronRightIcon } from \"lucide-solid\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\n\nfunction DropdownMenu(props: ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return (\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n positioning={{ offset: { mainAxis: 4 } }}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuPortal(props: ComponentProps<any>) {\n return <Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger(props: ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent(props: ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n const [local, others] = splitProps(props, [\"class\"]);\n return (\n <Portal>\n <DropdownMenuPrimitive.Positioner>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n class={cn(\n \"focus-visible:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-(--z-index) max-h-(--available-height) w-(--reference-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden\",\n local.class,\n )}\n {...others}\n />\n </DropdownMenuPrimitive.Positioner>\n </Portal>\n );\n}\n\nfunction DropdownMenuGroup(props: ComponentProps<typeof DropdownMenuPrimitive.ItemGroup>) {\n return <DropdownMenuPrimitive.ItemGroup data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuItem(\n props: ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n },\n) {\n const [local, others] = splitProps(props, [\"class\", \"inset\", \"variant\"]);\n const variant = () => local.variant ?? \"default\";\n\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={local.inset}\n data-variant={variant()}\n class={cn(\n \"gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"data-[variant=destructive]:text-destructive data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[variant=destructive]:data-highlighted:bg-destructive/10 dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:data-highlighted:*:[svg]:text-destructive not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem(\n props: ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n },\n) {\n const [local, others] = splitProps(props, [\"class\", \"children\", \"checked\", \"inset\"]);\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={local.inset}\n class={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n local.class,\n )}\n checked={local.checked}\n {...others}\n >\n <span\n class=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {local.children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup(\n props: ComponentProps<typeof DropdownMenuPrimitive.RadioItemGroup>,\n) {\n return <DropdownMenuPrimitive.RadioItemGroup data-slot=\"dropdown-menu-radio-group\" {...props} />;\n}\n\nfunction DropdownMenuRadioItem(\n props: ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean;\n },\n) {\n const [local, others] = splitProps(props, [\"class\", \"children\", \"inset\"]);\n\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={local.inset}\n class={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n local.class,\n )}\n {...others}\n >\n <span\n class=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {local.children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel(\n props: ComponentProps<typeof DropdownMenuPrimitive.ItemGroupLabel> & {\n inset?: boolean;\n },\n) {\n const [local, others] = splitProps(props, [\"class\", \"inset\"]);\n\n return (\n <DropdownMenuPrimitive.ItemGroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={local.inset}\n class={cn(\n \"text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction DropdownMenuSeparator(props: ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n class={cn(\"bg-border -mx-1 my-1 h-px\", local.class)}\n {...others}\n />\n );\n}\n\nfunction DropdownMenuShortcut(props: ComponentProps<\"span\">) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n class={cn(\n \"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction DropdownMenuSub(props: ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger(\n props: ComponentProps<typeof DropdownMenuPrimitive.TriggerItem> & {\n inset?: boolean;\n },\n) {\n const [local, others] = splitProps(props, [\"class\", \"inset\", \"children\"]);\n\n return (\n <DropdownMenuPrimitive.TriggerItem\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={local.inset}\n class={cn(\n \"w-full data-[state=open]:bg-accent data-[state=open]:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n local.class,\n )}\n {...others}\n >\n {local.children}\n <ChevronRightIcon class=\"cn-rtl-flip ml-auto\" />\n </DropdownMenuPrimitive.TriggerItem>\n );\n}\n\nfunction DropdownMenuSubContent(props: ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <DropdownMenuPrimitive.Positioner>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-sub-content\"\n class={cn(\n \"focus-visible:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-lg p-1 shadow-lg ring-1 duration-100 origin-(--transform-origin) overflow-hidden\",\n local.class,\n )}\n {...others}\n />\n </DropdownMenuPrimitive.Positioner>\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n",
|
|
685
|
+
type: "registry:ui",
|
|
686
|
+
path: "dropdown-menu.tsx"
|
|
687
|
+
}]
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
name: "empty",
|
|
691
|
+
dependencies: [
|
|
692
|
+
"class-variance-authority",
|
|
693
|
+
"@/lib/utils",
|
|
694
|
+
"@sprawlify/solid",
|
|
695
|
+
"solid-js"
|
|
696
|
+
],
|
|
697
|
+
files: [{
|
|
698
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport { splitProps, type ComponentProps } from \"solid-js\";\n\nfunction Empty(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"empty\"\n data-part=\"root\"\n data-slot=\"empty\"\n class={cn(\n \"gap-4 rounded-xl border-dashed p-6 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction EmptyHeader(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-slot=\"empty-header\"\n class={cn(\"gap-2 flex max-w-sm flex-col items-center\", local.class)}\n {...others}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia(\n props: ComponentProps<typeof sprawlify.div> &\n VariantProps<typeof emptyMediaVariants> & { variant?: \"default\" | \"icon\" },\n) {\n const [local, others] = splitProps(props, [\"class\", \"variant\"]);\n const variant = () => local.variant || \"default\";\n\n return (\n <sprawlify.div\n data-slot=\"empty-icon\"\n data-variant={variant()}\n class={cn(emptyMediaVariants({ variant: variant(), class: local.class }))}\n {...others}\n />\n );\n}\n\nfunction EmptyTitle(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-slot=\"empty-title\"\n class={cn(\"text-sm font-medium tracking-tight\", local.class)}\n {...others}\n />\n );\n}\n\nfunction EmptyDescription(props: ComponentProps<typeof sprawlify.p>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.p\n data-slot=\"empty-description\"\n class={cn(\n \"text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction EmptyContent(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-slot=\"empty-content\"\n class={cn(\n \"gap-2.5 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia };\n",
|
|
699
|
+
type: "registry:ui",
|
|
700
|
+
path: "empty.tsx"
|
|
701
|
+
}]
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
name: "field",
|
|
705
|
+
dependencies: [
|
|
706
|
+
"class-variance-authority",
|
|
707
|
+
"@/lib/utils",
|
|
708
|
+
"@/components/ui/label",
|
|
709
|
+
"@/components/ui/separator",
|
|
710
|
+
"@sprawlify/solid",
|
|
711
|
+
"solid-js"
|
|
712
|
+
],
|
|
713
|
+
files: [{
|
|
714
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"@/components/ui/label\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport { type ComponentProps, splitProps } from \"solid-js\";\n\nfunction FieldSet(props: ComponentProps<typeof sprawlify.fieldset>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.fieldset\n data-scope=\"field\"\n data-part=\"set\"\n data-slot=\"field-set\"\n class={cn(\n \"gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction FieldLegend(\n props: ComponentProps<typeof sprawlify.legend> & { variant?: \"legend\" | \"label\" },\n) {\n const [local, others] = splitProps(props, [\"class\", \"variant\"]);\n const variant = () => local.variant ?? \"legend\";\n\n return (\n <sprawlify.legend\n data-scope=\"field\"\n data-part=\"legend\"\n data-slot=\"field-legend\"\n data-variant={variant()}\n class={cn(\n \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction FieldGroup(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"group\"\n data-slot=\"field-group\"\n class={cn(\n \"gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nconst fieldVariants = cva(\"data-[invalid=true]:text-destructive gap-2 group/field flex w-full\", {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n});\n\nfunction Field(props: ComponentProps<typeof sprawlify.div> & VariantProps<typeof fieldVariants>) {\n const [local, others] = splitProps(props, [\"class\", \"orientation\"]);\n const orientation = () => local.orientation ?? \"vertical\";\n\n return (\n <sprawlify.div\n role=\"group\"\n data-scope=\"field\"\n data-part=\"root\"\n data-slot=\"field\"\n data-orientation={orientation()}\n class={cn(fieldVariants({ orientation: orientation() }), local.class)}\n {...others}\n />\n );\n}\n\nfunction FieldContent(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"content\"\n data-slot=\"field-content\"\n class={cn(\"gap-0.5 group/field-content flex flex-1 flex-col leading-snug\", local.class)}\n {...others}\n />\n );\n}\n\nfunction FieldLabel(props: ComponentProps<typeof Label>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <Label\n data-scope=\"field\"\n data-part=\"label\"\n data-slot=\"field-label\"\n class={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction FieldTitle(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"title\"\n data-slot=\"field-title\"\n class={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction FieldDescription(props: ComponentProps<typeof sprawlify.p>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.p\n data-scope=\"field\"\n data-part=\"description\"\n data-slot=\"field-description\"\n class={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-data-horizontal/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction FieldSeparator(\n props: ComponentProps<typeof sprawlify.div> & {\n children?: any;\n },\n) {\n const [local, others] = splitProps(props, [\"children\", \"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"separator\"\n data-slot=\"field-separator\"\n data-content={!!local.children}\n class={cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n local.class,\n )}\n {...others}\n >\n <Separator class=\"absolute inset-0 top-1/2\" />\n {local.children && (\n <span\n class=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-scope=\"field\"\n data-part=\"separator-content\"\n data-slot=\"field-separator-content\"\n >\n {local.children}\n </span>\n )}\n </sprawlify.div>\n );\n}\n\nexport {\n Field,\n FieldContent,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldTitle,\n};\n",
|
|
715
|
+
type: "registry:ui",
|
|
716
|
+
path: "field.tsx"
|
|
717
|
+
}]
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
name: "input",
|
|
721
|
+
dependencies: [
|
|
722
|
+
"@/lib/utils",
|
|
723
|
+
"@sprawlify/solid",
|
|
724
|
+
"solid-js"
|
|
725
|
+
],
|
|
726
|
+
files: [{
|
|
727
|
+
content: "import { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\n\nfunction Input(props: ComponentProps<typeof sprawlify.input>) {\n const [local, others] = splitProps(props, [\"class\", \"type\"]);\n\n return (\n <sprawlify.input\n type={local.type}\n data-scope=\"input\"\n data-part=\"root\"\n data-slot=\"input\"\n class={cn(\n \"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport { Input };\n",
|
|
728
|
+
type: "registry:ui",
|
|
729
|
+
path: "input.tsx"
|
|
730
|
+
}]
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
name: "input-group",
|
|
734
|
+
dependencies: [
|
|
735
|
+
"class-variance-authority",
|
|
736
|
+
"@/lib/utils",
|
|
737
|
+
"@/components/ui/button",
|
|
738
|
+
"@/components/ui/input",
|
|
739
|
+
"@/components/ui/textarea",
|
|
740
|
+
"@sprawlify/solid",
|
|
741
|
+
"solid-js"
|
|
742
|
+
],
|
|
743
|
+
files: [{
|
|
744
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport { type ComponentProps, splitProps } from \"solid-js\";\n\nfunction InputGroup(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"input-group\"\n data-part=\"root\"\n data-slot=\"input-group\"\n role=\"group\"\n class={cn(\n \"border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-lg border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n \"inline-start\": \"pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem] order-first\",\n \"inline-end\": \"pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem] order-last\",\n \"block-start\":\n \"px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start\",\n \"block-end\":\n \"px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nfunction InputGroupAddon(\n props: ComponentProps<typeof sprawlify.div> & VariantProps<typeof inputGroupAddonVariants>,\n) {\n const [local, others] = splitProps(props, [\"class\", \"align\"]);\n const align = () => local.align ?? \"inline-start\";\n\n return (\n <sprawlify.div\n role=\"group\"\n data-scope=\"input-group\"\n data-part=\"addon\"\n data-slot=\"input-group-addon\"\n data-align={align()}\n class={cn(inputGroupAddonVariants({ align: align() }), local.class)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...others}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\"gap-2 text-sm shadow-none flex items-center\", {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n});\n\nfunction InputGroupButton(\n props: Omit<ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>,\n) {\n const [local, others] = splitProps(props, [\"class\", \"type\", \"variant\", \"size\"]);\n const type = () => local.type ?? \"button\";\n const variant = () => local.variant ?? \"ghost\";\n const size = () => local.size ?? \"xs\";\n\n return (\n <Button\n data-scope=\"input-group\"\n data-part=\"button\"\n type={type()}\n data-size={size()}\n variant={variant()}\n class={cn(inputGroupButtonVariants({ size: size() }), local.class)}\n {...others}\n />\n );\n}\n\nfunction InputGroupText(props: ComponentProps<typeof sprawlify.span>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.span\n data-scope=\"input-group\"\n data-part=\"text\"\n data-slot=\"input-group-text\"\n class={cn(\n \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction InputGroupInput(props: ComponentProps<typeof sprawlify.input>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <Input\n data-scope=\"input-group\"\n data-part=\"control\"\n data-slot=\"input-group-control\"\n class={cn(\n \"rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction InputGroupTextarea(props: ComponentProps<typeof sprawlify.textarea>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <Textarea\n data-scope=\"input-group\"\n data-part=\"control\"\n data-slot=\"input-group-control\"\n class={cn(\n \"rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n",
|
|
745
|
+
type: "registry:ui",
|
|
746
|
+
path: "input-group.tsx"
|
|
747
|
+
}]
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
name: "item",
|
|
751
|
+
dependencies: [
|
|
752
|
+
"class-variance-authority",
|
|
753
|
+
"@/lib/utils",
|
|
754
|
+
"@/components/ui/separator",
|
|
755
|
+
"@sprawlify/solid",
|
|
756
|
+
"solid-js"
|
|
757
|
+
],
|
|
758
|
+
files: [{
|
|
759
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\n\nfunction ItemGroup(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n role=\"list\"\n data-scope=\"item\"\n data-part=\"group\"\n data-slot=\"item-group\"\n class={cn(\n \"gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2 group/item-group flex w-full flex-col\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction ItemSeparator(props: ComponentProps<typeof Separator>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <Separator\n data-scope=\"item\"\n data-part=\"separator\"\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n class={cn(\"my-2\", local.class)}\n {...others}\n />\n );\n}\n\nconst itemVariants = cva(\n \"[a]:hover:bg-muted rounded-lg border text-sm w-full group/item focus-visible:border-ring focus-visible:ring-ring/50 flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:ring-[3px] [a]:transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50 border-transparent\",\n },\n size: {\n default: \"gap-2.5 px-3 py-2.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Item(props: ComponentProps<typeof sprawlify.div> & VariantProps<typeof itemVariants>) {\n const [local, others] = splitProps(props, [\"variant\", \"size\", \"class\"]);\n const variant = () => local.variant ?? \"default\";\n const size = () => local.size ?? \"default\";\n\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"root\"\n data-slot=\"item\"\n data-variant={variant()}\n data-size={size()}\n class={cn(itemVariants({ variant: variant(), size: size(), class: local.class }))}\n {...others}\n />\n );\n}\n\nconst itemMediaVariants = cva(\n \"gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start flex shrink-0 items-center justify-center [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction ItemMedia(\n props: ComponentProps<typeof sprawlify.div> & VariantProps<typeof itemMediaVariants>,\n) {\n const [local, others] = splitProps(props, [\"variant\", \"class\"]);\n const variant = () => local.variant ?? \"default\";\n\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"media\"\n data-slot=\"item-media\"\n data-variant={variant()}\n class={cn(itemMediaVariants({ variant: variant(), class: local.class }))}\n {...others}\n />\n );\n}\n\nfunction ItemContent(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"content\"\n data-slot=\"item-content\"\n class={cn(\n \"gap-1 group-data-[size=xs]/item:gap-0 flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction ItemTitle(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"title\"\n data-slot=\"item-title\"\n class={cn(\n \"gap-2 text-sm leading-snug font-medium underline-offset-4 line-clamp-1 flex w-fit items-center\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction ItemDescription(props: ComponentProps<typeof sprawlify.p>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.p\n data-scope=\"item\"\n data-part=\"description\"\n data-slot=\"item-description\"\n class={cn(\n \"text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs [&>a:hover]:text-primary line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction ItemActions(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"actions\"\n data-slot=\"item-actions\"\n class={cn(\"gap-2 flex items-center\", local.class)}\n {...others}\n />\n );\n}\n\nfunction ItemHeader(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"header\"\n data-slot=\"item-header\"\n class={cn(\"gap-2 flex basis-full items-center justify-between\", local.class)}\n {...others}\n />\n );\n}\n\nfunction ItemFooter(props: ComponentProps<typeof sprawlify.div>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"footer\"\n data-slot=\"item-footer\"\n class={cn(\"gap-2 flex basis-full items-center justify-between\", local.class)}\n {...others}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n",
|
|
760
|
+
type: "registry:ui",
|
|
761
|
+
path: "item.tsx"
|
|
762
|
+
}]
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
name: "kbd",
|
|
766
|
+
dependencies: [
|
|
767
|
+
"@/lib/utils",
|
|
768
|
+
"@sprawlify/solid",
|
|
769
|
+
"solid-js"
|
|
770
|
+
],
|
|
771
|
+
files: [{
|
|
772
|
+
content: "import { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport { splitProps, type ComponentProps } from \"solid-js\";\n\nfunction Kbd(props: ComponentProps<typeof sprawlify.kbd>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.kbd\n data-scope=\"kbd\"\n data-part=\"root\"\n data-slot=\"kbd\"\n class={cn(\n \"bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 pointer-events-none inline-flex items-center justify-center select-none\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction KbdGroup(props: ComponentProps<typeof sprawlify.kbd>) {\n const [local, others] = splitProps(props, [\"class\"]);\n return (\n <sprawlify.kbd\n data-scope=\"kbd\"\n data-part=\"group\"\n data-slot=\"kbd-group\"\n class={cn(\"gap-1 inline-flex items-center\", local.class)}\n {...others}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n",
|
|
773
|
+
type: "registry:ui",
|
|
774
|
+
path: "kbd.tsx"
|
|
775
|
+
}]
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
name: "label",
|
|
779
|
+
dependencies: [
|
|
780
|
+
"@/lib/utils",
|
|
781
|
+
"@sprawlify/solid",
|
|
782
|
+
"solid-js"
|
|
783
|
+
],
|
|
784
|
+
files: [{
|
|
785
|
+
content: "import { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport { type ComponentProps, splitProps } from \"solid-js\";\n\nfunction Label(props: ComponentProps<typeof sprawlify.label>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.label\n data-scope=\"label\"\n data-part=\"root\"\n data-slot=\"label\"\n class={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport { Label };\n",
|
|
786
|
+
type: "registry:ui",
|
|
787
|
+
path: "label.tsx"
|
|
788
|
+
}]
|
|
789
|
+
},
|
|
790
|
+
{
|
|
791
|
+
name: "native-select",
|
|
792
|
+
dependencies: [
|
|
793
|
+
"@/lib/utils",
|
|
794
|
+
"@sprawlify/solid",
|
|
795
|
+
"lucide-solid",
|
|
796
|
+
"solid-js"
|
|
797
|
+
],
|
|
798
|
+
files: [{
|
|
799
|
+
content: "import { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport { ChevronDownIcon } from \"lucide-solid\";\nimport { splitProps, type ComponentProps } from \"solid-js\";\n\ntype NativeSelectProps = Omit<ComponentProps<typeof sprawlify.select>, \"size\"> & {\n size?: \"sm\" | \"default\";\n};\n\nfunction NativeSelect(props: NativeSelectProps) {\n const [local, others] = splitProps(props, [\"class\", \"size\"]);\n const size = () => local.size || \"default\";\n\n return (\n <div\n class={cn(\"group/native-select relative w-fit has-[select:disabled]:opacity-50\", local.class)}\n data-scope=\"native-select\"\n data-part=\"root\"\n data-slot=\"native-select-root\"\n data-size={size()}\n >\n <sprawlify.select\n data-slot=\"native-select\"\n data-size={size()}\n class=\"border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 outline-none disabled:pointer-events-none disabled:cursor-not-allowed\"\n {...others}\n />\n <ChevronDownIcon\n class=\"text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none\"\n aria-hidden=\"true\"\n data-slot=\"native-select-icon\"\n />\n </div>\n );\n}\n\nfunction NativeSelectOption(props: ComponentProps<typeof sprawlify.option>) {\n return (\n <sprawlify.option\n data-scope=\"native-select\"\n data-part=\"option\"\n data-slot=\"native-select-option\"\n {...props}\n />\n );\n}\n\nfunction NativeSelectOptGroup(props: ComponentProps<typeof sprawlify.optgroup>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.optgroup\n data-scope=\"native-select\"\n data-part=\"optgroup\"\n data-slot=\"native-select-optgroup\"\n class={cn(local.class)}\n {...others}\n />\n );\n}\n\nexport { NativeSelect, NativeSelectOptGroup, NativeSelectOption };\n",
|
|
800
|
+
type: "registry:ui",
|
|
801
|
+
path: "native-select.tsx"
|
|
802
|
+
}]
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
name: "scroll-area",
|
|
806
|
+
dependencies: [
|
|
807
|
+
"@sprawlify/solid",
|
|
808
|
+
"@/lib/utils",
|
|
809
|
+
"solid-js"
|
|
810
|
+
],
|
|
811
|
+
files: [{
|
|
812
|
+
content: "import { ScrollArea as ScrollAreaPrimitive } from \"@sprawlify/solid/scroll-area\";\nimport { cn } from \"@/lib/utils\";\nimport { type ComponentProps, splitProps } from \"solid-js\";\n\nfunction ScrollArea(props: ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n const [local, others] = splitProps(props, [\"class\", \"children\"]);\n\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n class={cn(\"relative\", local.class)}\n {...others}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n class=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 scrollbar-none\"\n >\n {local.children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar(props: ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>) {\n const [local, others] = splitProps(props, [\"class\", \"orientation\"]);\n const orientation = () => local.orientation ?? \"vertical\";\n\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation()}\n orientation={orientation()}\n class={cn(\n \"data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-l data-[orientation=vertical]:border-l-transparent flex touch-none p-px transition-colors select-none\",\n local.class,\n )}\n {...others}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n class=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n",
|
|
813
|
+
type: "registry:ui",
|
|
814
|
+
path: "scroll-area.tsx"
|
|
815
|
+
}]
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
name: "separator",
|
|
819
|
+
dependencies: [
|
|
820
|
+
"@sprawlify/solid",
|
|
821
|
+
"@/lib/utils",
|
|
822
|
+
"solid-js"
|
|
823
|
+
],
|
|
824
|
+
files: [{
|
|
825
|
+
content: "import { Separator as SeparatorPrimitive } from \"@sprawlify/solid/separator\";\nimport { cn } from \"@/lib/utils\";\nimport { type ComponentProps, splitProps } from \"solid-js\";\n\nfunction Separator(props: ComponentProps<typeof SeparatorPrimitive.Root>) {\n const [local, others] = splitProps(props, [\"class\", \"orientation\", \"decorative\"]);\n const orientation = () => local.orientation ?? \"horizontal\";\n const decorative = () => local.decorative ?? true;\n\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative()}\n orientation={orientation()}\n class={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport { Separator };\n",
|
|
826
|
+
type: "registry:ui",
|
|
827
|
+
path: "separator.tsx"
|
|
828
|
+
}]
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
name: "tabs",
|
|
832
|
+
dependencies: [
|
|
833
|
+
"class-variance-authority",
|
|
834
|
+
"@/lib/utils",
|
|
835
|
+
"@sprawlify/solid",
|
|
836
|
+
"solid-js"
|
|
837
|
+
],
|
|
838
|
+
files: [{
|
|
839
|
+
content: "import { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Tabs as TabsPrimitive } from \"@sprawlify/solid/tabs\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\n\nfunction Tabs(props: ComponentProps<typeof TabsPrimitive.Root>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n class={cn(\"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\", local.class)}\n {...others}\n />\n );\n}\n\nconst tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-8 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction TabsList(\n props: ComponentProps<typeof TabsPrimitive.List> & VariantProps<typeof tabsListVariants>,\n) {\n const [local, others] = splitProps(props, [\"class\", \"variant\"]);\n const variant = () => local.variant ?? \"default\";\n\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant()}\n class={cn(tabsListVariants({ variant: variant(), class: local.class }))}\n {...others}\n />\n );\n}\n\nfunction TabsTrigger(props: ComponentProps<typeof TabsPrimitive.Trigger>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n class={cn(\n \"gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium group-data-[variant=default]/tabs-list:data-selected:shadow-sm group-data-[variant=line]/tabs-list:data-selected:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-selected:bg-transparent dark:group-data-[variant=line]/tabs-list:data-selected:border-transparent dark:group-data-[variant=line]/tabs-list:data-selected:bg-transparent\",\n \"data-selected:bg-background dark:data-selected:text-foreground dark:data-selected:border-input dark:data-selected:bg-input/30 data-selected:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-selected:after:opacity-100\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nfunction TabsContent(props: ComponentProps<typeof TabsPrimitive.Content>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n class={cn(\"text-sm flex-1 outline-none\", local.class)}\n {...others}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };\n",
|
|
840
|
+
type: "registry:ui",
|
|
841
|
+
path: "tabs.tsx"
|
|
842
|
+
}]
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
name: "textarea",
|
|
846
|
+
dependencies: [
|
|
847
|
+
"@/lib/utils",
|
|
848
|
+
"@sprawlify/solid",
|
|
849
|
+
"solid-js"
|
|
850
|
+
],
|
|
851
|
+
files: [{
|
|
852
|
+
content: "import { cn } from \"@/lib/utils\";\nimport { sprawlify } from \"@sprawlify/solid\";\nimport type { ComponentProps } from \"solid-js\";\nimport { splitProps } from \"solid-js\";\n\nfunction Textarea(props: ComponentProps<typeof sprawlify.textarea>) {\n const [local, others] = splitProps(props, [\"class\"]);\n\n return (\n <sprawlify.textarea\n data-scope=\"textarea\"\n data-part=\"root\"\n data-slot=\"textarea\"\n class={cn(\n \"border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors focus-visible:ring-3 aria-invalid:ring-3 md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n local.class,\n )}\n {...others}\n />\n );\n}\n\nexport { Textarea };\n",
|
|
853
|
+
type: "registry:ui",
|
|
854
|
+
path: "textarea.tsx"
|
|
855
|
+
}]
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
name: "utils",
|
|
859
|
+
dependencies: ["clsx", "tailwind-merge"],
|
|
860
|
+
files: [{
|
|
861
|
+
content: "import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n",
|
|
862
|
+
type: "registry:utils",
|
|
863
|
+
path: "utils.ts"
|
|
864
|
+
}]
|
|
865
|
+
}
|
|
866
|
+
]
|
|
867
|
+
},
|
|
868
|
+
svelte: {
|
|
869
|
+
dependencies: {
|
|
870
|
+
"@sprawlify/svelte": "^0.0.100",
|
|
871
|
+
svelte: "^4.0.0",
|
|
872
|
+
"class-variance-authority": "^0.7.1",
|
|
873
|
+
"lucide-svelte": "^0.400.0",
|
|
874
|
+
clsx: "^2.1.1",
|
|
875
|
+
"tailwind-merge": "^3.3.1"
|
|
876
|
+
},
|
|
877
|
+
devDependencies: {},
|
|
878
|
+
items: [
|
|
879
|
+
{
|
|
880
|
+
name: "alert",
|
|
881
|
+
dependencies: [
|
|
882
|
+
"@/lib/utils",
|
|
883
|
+
"@sprawlify/svelte",
|
|
884
|
+
"svelte/elements",
|
|
885
|
+
"svelte",
|
|
886
|
+
"class-variance-authority"
|
|
887
|
+
],
|
|
888
|
+
files: [
|
|
889
|
+
{
|
|
890
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> { }\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"alert\"\r\n data-part=\"action\"\r\n data-slot=\"alert-action\"\r\n class={cn(\"absolute top-2 right-2\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
891
|
+
type: "registry:ui",
|
|
892
|
+
path: "alert/alert-action.svelte"
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { Snippet } from \"svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> { }\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"alert\"\r\n data-part=\"description\"\r\n data-slot=\"alert-description\"\r\n class={cn(\"text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
896
|
+
type: "registry:ui",
|
|
897
|
+
path: "alert/alert-description.svelte"
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> { }\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"alert\"\r\n data-part=\"title\"\r\n data-slot=\"alert-title\"\r\n class={cn(\"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
901
|
+
type: "registry:ui",
|
|
902
|
+
path: "alert/alert-title.svelte"
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
content: "<script module lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nexport const alertVariants = cva(\"grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\", {\r\n variants: {\r\n variant: {\r\n default: \"bg-card text-card-foreground\",\r\n destructive: \"text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\r\n },\r\n },\r\n defaultVariants: { variant: \"default\" },\r\n})\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants>, PolymorphicProps<\"div\"> { }\r\n\r\nlet { class: className, variant = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"alert\"\r\n data-part=\"root\"\r\n data-slot=\"alert\"\r\n role=\"alert\"\r\n class={cn(alertVariants({ variant }), className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
906
|
+
type: "registry:ui",
|
|
907
|
+
path: "alert/alert.svelte"
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
content: "export { default as Alert, alertVariants } from \"./alert.svelte\";\nexport { default as AlertTitle } from \"./alert-title.svelte\";\nexport { default as AlertDescription } from \"./alert-description.svelte\";\nexport { default as AlertAction } from \"./alert-action.svelte\";\n",
|
|
911
|
+
type: "registry:ui",
|
|
912
|
+
path: "alert/index.ts"
|
|
913
|
+
}
|
|
914
|
+
]
|
|
915
|
+
},
|
|
916
|
+
{
|
|
917
|
+
name: "aspect-ratio",
|
|
918
|
+
dependencies: ["@sprawlify/svelte", "svelte"],
|
|
919
|
+
files: [{
|
|
920
|
+
content: "<script lang=\"ts\">\r\nimport { AspectRatio as AspectRatioPrimitive } from \"@sprawlify/svelte/aspect-ratio\"\r\nimport type { ComponentProps } from \"svelte\";\r\n\r\ninterface Props extends ComponentProps<typeof AspectRatioPrimitive.Root> {}\r\n\r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...rest}>\r\n <AspectRatioPrimitive.Content data-slot=\"aspect-ratio-content\">\r\n {@render children?.()}\r\n </AspectRatioPrimitive.Content>\r\n</AspectRatioPrimitive.Root>",
|
|
921
|
+
type: "registry:ui",
|
|
922
|
+
path: "aspect-ratio/aspect-ratio.svelte"
|
|
923
|
+
}, {
|
|
924
|
+
content: "export { default as AspectRatio } from \"./aspect-ratio.svelte\";\n",
|
|
925
|
+
type: "registry:ui",
|
|
926
|
+
path: "aspect-ratio/index.ts"
|
|
927
|
+
}]
|
|
928
|
+
},
|
|
929
|
+
{
|
|
930
|
+
name: "avatar",
|
|
931
|
+
dependencies: [
|
|
932
|
+
"@/lib/utils",
|
|
933
|
+
"@sprawlify/svelte",
|
|
934
|
+
"svelte/elements",
|
|
935
|
+
"svelte"
|
|
936
|
+
],
|
|
937
|
+
files: [
|
|
938
|
+
{
|
|
939
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLSpanElement>, PolymorphicProps<\"span\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"span\"\r\n data-scope=\"avatar\"\r\n data-part=\"badge\"\r\n data-slot=\"avatar-badge\"\r\n class={cn(\r\n \"bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 select-none\",\r\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\r\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\r\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
940
|
+
type: "registry:ui",
|
|
941
|
+
path: "avatar/avatar-badge.svelte"
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
content: "<script lang=\"ts\">\r\nimport { Avatar as AvatarPrimitive } from \"@sprawlify/svelte/avatar\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof AvatarPrimitive.Fallback> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<AvatarPrimitive.Fallback\r\n data-slot=\"avatar-fallback\"\r\n class={cn(\r\n \"rounded-[inherit] overflow-hidden bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</AvatarPrimitive.Fallback>",
|
|
945
|
+
type: "registry:ui",
|
|
946
|
+
path: "avatar/avatar-fallback.svelte"
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"avatar\"\r\n data-part=\"group-count\"\r\n data-slot=\"avatar-group-count\"\r\n class={cn(\r\n \"bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
950
|
+
type: "registry:ui",
|
|
951
|
+
path: "avatar/avatar-group-count.svelte"
|
|
952
|
+
},
|
|
953
|
+
{
|
|
954
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"avatar\"\r\n data-part=\"group\"\r\n data-slot=\"avatar-group\"\r\n class={cn(\r\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
955
|
+
type: "registry:ui",
|
|
956
|
+
path: "avatar/avatar-group.svelte"
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
content: "<script lang=\"ts\">\r\nimport { Avatar as AvatarPrimitive } from \"@sprawlify/svelte/avatar\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof AvatarPrimitive.Image> {}\r\n\r\nlet { class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<AvatarPrimitive.Image\r\n data-slot=\"avatar-image\"\r\n class={cn(\"aspect-square rounded-[inherit] size-full overflow-hidden\", className)}\r\n {...rest}\r\n/>",
|
|
960
|
+
type: "registry:ui",
|
|
961
|
+
path: "avatar/avatar-image.svelte"
|
|
962
|
+
},
|
|
963
|
+
{
|
|
964
|
+
content: "<script lang=\"ts\">\r\nimport { Avatar as AvatarPrimitive } from \"@sprawlify/svelte/avatar\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof AvatarPrimitive.Root> {\r\n size?: \"default\" | \"sm\" | \"lg\"\r\n}\r\n\r\nlet { class: className, size = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<AvatarPrimitive.Root\r\n data-slot=\"avatar\"\r\n data-size={size}\r\n class={cn(\r\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</AvatarPrimitive.Root>",
|
|
965
|
+
type: "registry:ui",
|
|
966
|
+
path: "avatar/avatar.svelte"
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
content: "export { default as Avatar } from \"./avatar.svelte\";\nexport { default as AvatarImage } from \"./avatar-image.svelte\";\nexport { default as AvatarFallback } from \"./avatar-fallback.svelte\";\nexport { default as AvatarBadge } from \"./avatar-badge.svelte\";\nexport { default as AvatarGroup } from \"./avatar-group.svelte\";\nexport { default as AvatarGroupCount } from \"./avatar-group-count.svelte\";\n",
|
|
970
|
+
type: "registry:ui",
|
|
971
|
+
path: "avatar/index.ts"
|
|
972
|
+
}
|
|
973
|
+
]
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
name: "badge",
|
|
977
|
+
dependencies: [
|
|
978
|
+
"class-variance-authority",
|
|
979
|
+
"@/lib/utils",
|
|
980
|
+
"@sprawlify/svelte",
|
|
981
|
+
"svelte/elements"
|
|
982
|
+
],
|
|
983
|
+
files: [{
|
|
984
|
+
content: "<script module lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nexport const badgeVariants = cva(\r\n \"inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\r\n secondary:\r\n \"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\r\n destructive:\r\n \"bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\r\n outline:\r\n \"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\r\n ghost: \"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\r\n link: \"text-primary underline-offset-4 [a&]:hover:underline\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants>, PolymorphicProps<\"span\"> {}\r\n \r\nlet { class: className, variant = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"span\"\r\n data-scope=\"badge\"\r\n data-part=\"root\"\r\n data-slot=\"badge\"\r\n data-variant={variant}\r\n class={cn(badgeVariants({ variant, className }))}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
985
|
+
type: "registry:ui",
|
|
986
|
+
path: "badge/badge.svelte"
|
|
987
|
+
}, {
|
|
988
|
+
content: "export { default as Badge, badgeVariants } from \"./badge.svelte\";\n",
|
|
989
|
+
type: "registry:ui",
|
|
990
|
+
path: "badge/index.ts"
|
|
991
|
+
}]
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
name: "button",
|
|
995
|
+
dependencies: [
|
|
996
|
+
"class-variance-authority",
|
|
997
|
+
"@/lib/utils",
|
|
998
|
+
"@sprawlify/svelte",
|
|
999
|
+
"svelte/elements"
|
|
1000
|
+
],
|
|
1001
|
+
files: [{
|
|
1002
|
+
content: "<script module lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nexport const buttonVariants = cva(\r\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\r\n outline: \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\r\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\r\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\r\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\r\n link: \"text-primary underline-offset-4 hover:underline\",\r\n },\r\n size: {\r\n default: \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\r\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\r\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\r\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\r\n icon: \"size-8\",\r\n \"icon-xs\": \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\r\n \"icon-sm\": \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\r\n \"icon-lg\": \"size-9\",\r\n },\r\n },\r\n defaultVariants: { \r\n variant: \"default\", \r\n size: \"default\" \r\n },\r\n }\r\n)\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLButtonAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLButtonAttributes, VariantProps<typeof buttonVariants>, PolymorphicProps<\"button\"> {}\r\n \r\nlet { class: className, variant = \"default\", size = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"button\"\r\n data-scope=\"button\"\r\n data-part=\"root\"\r\n data-slot=\"button\"\r\n data-variant={variant}\r\n data-size={size}\r\n class={cn(buttonVariants({ variant, size, className }))}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1003
|
+
type: "registry:ui",
|
|
1004
|
+
path: "button/button.svelte"
|
|
1005
|
+
}, {
|
|
1006
|
+
content: "export { default as Button, buttonVariants } from \"./button.svelte\";\n",
|
|
1007
|
+
type: "registry:ui",
|
|
1008
|
+
path: "button/index.ts"
|
|
1009
|
+
}]
|
|
1010
|
+
},
|
|
1011
|
+
{
|
|
1012
|
+
name: "button-group",
|
|
1013
|
+
dependencies: [
|
|
1014
|
+
"@/lib/utils",
|
|
1015
|
+
"svelte",
|
|
1016
|
+
"@sprawlify/svelte",
|
|
1017
|
+
"svelte/elements",
|
|
1018
|
+
"class-variance-authority"
|
|
1019
|
+
],
|
|
1020
|
+
files: [
|
|
1021
|
+
{
|
|
1022
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\";\r\nimport { Separator } from \"../separator\"\r\n\r\ninterface Props extends ComponentProps<typeof Separator> {}\r\n\r\nlet { class: className, orientation = \"vertical\", ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Separator\r\n data-scope=\"button-group\"\r\n data-part=\"separator\"\r\n data-slot=\"button-group-separator\"\r\n {orientation}\r\n class={cn(\"bg-input relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\", className)}\r\n {...rest}\r\n/>",
|
|
1023
|
+
type: "registry:ui",
|
|
1024
|
+
path: "button-group/button-group-separator.svelte"
|
|
1025
|
+
},
|
|
1026
|
+
{
|
|
1027
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> { }\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n class={cn(\"bg-muted gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1028
|
+
type: "registry:ui",
|
|
1029
|
+
path: "button-group/button-group-text.svelte"
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
content: "<script module lang=\"ts\">\r\nimport { cva } from \"class-variance-authority\"\r\nexport const buttonGroupVariants = cva(\r\n \"has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg flex w-fit items-stretch *:focus-visible:z-10 *:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\r\n {\r\n variants: {\r\n orientation: {\r\n horizontal: \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\r\n vertical: \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\r\n },\r\n },\r\n defaultVariants: { orientation: \"horizontal\" },\r\n }\r\n)\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\nimport type { VariantProps } from \"class-variance-authority\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof buttonGroupVariants>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, orientation = \"horizontal\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"button-group\"\r\n data-part=\"root\"\r\n role=\"group\"\r\n data-slot=\"button-group\"\r\n data-orientation={orientation}\r\n class={cn(buttonGroupVariants({ orientation, className }))}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1033
|
+
type: "registry:ui",
|
|
1034
|
+
path: "button-group/button-group.svelte"
|
|
1035
|
+
},
|
|
1036
|
+
{
|
|
1037
|
+
content: "export { default as ButtonGroup, buttonGroupVariants } from \"./button-group.svelte\";\nexport { default as ButtonGroupSeparator } from \"./button-group-separator.svelte\";\nexport { default as ButtonGroupText } from \"./button-group-text.svelte\";\n",
|
|
1038
|
+
type: "registry:ui",
|
|
1039
|
+
path: "button-group/index.ts"
|
|
1040
|
+
}
|
|
1041
|
+
]
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
name: "card",
|
|
1045
|
+
dependencies: [
|
|
1046
|
+
"@/lib/utils",
|
|
1047
|
+
"@sprawlify/svelte",
|
|
1048
|
+
"svelte/elements"
|
|
1049
|
+
],
|
|
1050
|
+
files: [
|
|
1051
|
+
{
|
|
1052
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"card\"\r\n data-part=\"action\"\r\n data-slot=\"card-action\"\r\n class={cn(\r\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1053
|
+
type: "registry:ui",
|
|
1054
|
+
path: "card/card-action.svelte"
|
|
1055
|
+
},
|
|
1056
|
+
{
|
|
1057
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"card\"\r\n data-part=\"content\"\r\n data-slot=\"card-content\"\r\n class={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1058
|
+
type: "registry:ui",
|
|
1059
|
+
path: "card/card-content.svelte"
|
|
1060
|
+
},
|
|
1061
|
+
{
|
|
1062
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"card\"\r\n data-part=\"description\"\r\n data-slot=\"card-description\"\r\n class={cn(\"text-muted-foreground text-sm\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1063
|
+
type: "registry:ui",
|
|
1064
|
+
path: "card/card-description.svelte"
|
|
1065
|
+
},
|
|
1066
|
+
{
|
|
1067
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"card\"\r\n data-part=\"footer\"\r\n data-slot=\"card-footer\"\r\n class={cn(\"bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1068
|
+
type: "registry:ui",
|
|
1069
|
+
path: "card/card-footer.svelte"
|
|
1070
|
+
},
|
|
1071
|
+
{
|
|
1072
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"card\"\r\n data-part=\"header\"\r\n data-slot=\"card-header\"\r\n class={cn(\r\n \"gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1073
|
+
type: "registry:ui",
|
|
1074
|
+
path: "card/card-header.svelte"
|
|
1075
|
+
},
|
|
1076
|
+
{
|
|
1077
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"card\"\r\n data-part=\"title\"\r\n data-slot=\"card-title\"\r\n class={cn(\"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1078
|
+
type: "registry:ui",
|
|
1079
|
+
path: "card/card-title.svelte"
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {\r\n size?: \"default\" | \"sm\"\r\n}\r\n\r\nlet { class: className, size = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"card\"\r\n data-part=\"root\"\r\n data-slot=\"card\"\r\n data-size={size}\r\n class={cn(\"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1083
|
+
type: "registry:ui",
|
|
1084
|
+
path: "card/card.svelte"
|
|
1085
|
+
},
|
|
1086
|
+
{
|
|
1087
|
+
content: "export { default as Card } from \"./card.svelte\";\nexport { default as CardHeader } from \"./card-header.svelte\";\nexport { default as CardTitle } from \"./card-title.svelte\";\nexport { default as CardDescription } from \"./card-description.svelte\";\nexport { default as CardAction } from \"./card-action.svelte\";\nexport { default as CardContent } from \"./card-content.svelte\";\nexport { default as CardFooter } from \"./card-footer.svelte\";\n",
|
|
1088
|
+
type: "registry:ui",
|
|
1089
|
+
path: "card/index.ts"
|
|
1090
|
+
}
|
|
1091
|
+
]
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
name: "checkbox",
|
|
1095
|
+
dependencies: [
|
|
1096
|
+
"@/lib/utils",
|
|
1097
|
+
"@sprawlify/svelte",
|
|
1098
|
+
"lucide-svelte",
|
|
1099
|
+
"svelte"
|
|
1100
|
+
],
|
|
1101
|
+
files: [{
|
|
1102
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Checkbox as CheckboxPrimitive } from \"@sprawlify/svelte/checkbox\"\r\nimport { Check } from \"lucide-svelte\"\r\nimport type { ComponentProps } from \"svelte\";\r\n\r\ninterface Props extends ComponentProps<typeof CheckboxPrimitive.Root> {}\r\n \r\nlet { class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<CheckboxPrimitive.Root\r\n data-slot=\"checkbox\"\r\n class={cn(\r\n \"border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n <CheckboxPrimitive.Indicator\r\n data-slot=\"checkbox-indicator\"\r\n class=\"[&>svg]:size-3.5 grid place-content-center text-current transition-none\"\r\n >\r\n <Check />\r\n </CheckboxPrimitive.Indicator>\r\n <CheckboxPrimitive.HiddenInput />\r\n</CheckboxPrimitive.Root>",
|
|
1103
|
+
type: "registry:ui",
|
|
1104
|
+
path: "checkbox/checkbox.svelte"
|
|
1105
|
+
}, {
|
|
1106
|
+
content: "export { default as Checkbox } from \"./checkbox.svelte\";\n",
|
|
1107
|
+
type: "registry:ui",
|
|
1108
|
+
path: "checkbox/index.ts"
|
|
1109
|
+
}]
|
|
1110
|
+
},
|
|
1111
|
+
{
|
|
1112
|
+
name: "collapsible",
|
|
1113
|
+
dependencies: ["@sprawlify/svelte", "svelte"],
|
|
1114
|
+
files: [
|
|
1115
|
+
{
|
|
1116
|
+
content: "<script lang=\"ts\">\r\nimport { Collapsible as CollapsiblePrimitive } from \"@sprawlify/svelte/collapsible\"\r\nimport type { ComponentProps } from \"svelte\";\r\n\r\ninterface Props extends ComponentProps<typeof CollapsiblePrimitive.Content> {}\r\n \r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<CollapsiblePrimitive.Content data-slot=\"collapsible-content\" {...rest}>\r\n {@render children?.()}\r\n</CollapsiblePrimitive.Content>",
|
|
1117
|
+
type: "registry:ui",
|
|
1118
|
+
path: "collapsible/collapsible-content.svelte"
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
content: "<script lang=\"ts\">\r\nimport { Collapsible as CollapsiblePrimitive } from \"@sprawlify/svelte/collapsible\"\r\nimport type { ComponentProps } from \"svelte\";\r\n\r\ninterface Props extends ComponentProps<typeof CollapsiblePrimitive.Trigger> {}\r\n \r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...rest}>\r\n {@render children?.()}\r\n</CollapsiblePrimitive.Trigger>",
|
|
1122
|
+
type: "registry:ui",
|
|
1123
|
+
path: "collapsible/collapsible-trigger.svelte"
|
|
1124
|
+
},
|
|
1125
|
+
{
|
|
1126
|
+
content: "<script lang=\"ts\">\r\nimport { Collapsible as CollapsiblePrimitive } from \"@sprawlify/svelte/collapsible\"\r\nimport type { ComponentProps } from \"svelte\";\r\n\r\ninterface Props extends ComponentProps<typeof CollapsiblePrimitive.Root> {}\r\n \r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<CollapsiblePrimitive.Root data-slot=\"collapsible\" {...rest}>\r\n {@render children?.()}\r\n</CollapsiblePrimitive.Root>",
|
|
1127
|
+
type: "registry:ui",
|
|
1128
|
+
path: "collapsible/collapsible.svelte"
|
|
1129
|
+
},
|
|
1130
|
+
{
|
|
1131
|
+
content: "export { default as Collapsible } from \"./collapsible.svelte\";\nexport { default as CollapsibleTrigger } from \"./collapsible-trigger.svelte\";\nexport { default as CollapsibleContent } from \"./collapsible-content.svelte\";\n",
|
|
1132
|
+
type: "registry:ui",
|
|
1133
|
+
path: "collapsible/index.ts"
|
|
1134
|
+
}
|
|
1135
|
+
]
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
name: "dropdown-menu",
|
|
1139
|
+
dependencies: [
|
|
1140
|
+
"@sprawlify/svelte",
|
|
1141
|
+
"lucide-svelte",
|
|
1142
|
+
"@/lib/utils",
|
|
1143
|
+
"svelte",
|
|
1144
|
+
"svelte/elements"
|
|
1145
|
+
],
|
|
1146
|
+
files: [
|
|
1147
|
+
{
|
|
1148
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport { CheckIcon } from \"lucide-svelte\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> {\r\n inset?: boolean\r\n}\r\n \r\nlet { class: className, inset, checked, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.CheckboxItem\r\n data-slot=\"dropdown-menu-checkbox-item\"\r\n data-inset={inset}\r\n class={cn(\r\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\r\n className\r\n )}\r\n {checked}\r\n {...rest}\r\n>\r\n <span\r\n class=\"absolute right-2 flex items-center justify-center pointer-events-none\"\r\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\r\n >\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <CheckIcon />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.CheckboxItem>",
|
|
1149
|
+
type: "registry:ui",
|
|
1150
|
+
path: "dropdown-menu/dropdown-menu-checkbox-item.svelte"
|
|
1151
|
+
},
|
|
1152
|
+
{
|
|
1153
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport { Portal } from \"@sprawlify/svelte/portal\";\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.Content> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Portal>\r\n <DropdownMenuPrimitive.Positioner>\r\n <DropdownMenuPrimitive.Content\r\n data-slot=\"dropdown-menu-content\"\r\n class={cn(\"focus-visible:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-(--z-index) max-h-(--available-height) w-(--reference-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden\", className)}\r\n {...rest}\r\n >\r\n {@render children?.()}\r\n </DropdownMenuPrimitive.Content>\r\n </DropdownMenuPrimitive.Positioner>\r\n</Portal>",
|
|
1154
|
+
type: "registry:ui",
|
|
1155
|
+
path: "dropdown-menu/dropdown-menu-content.svelte"
|
|
1156
|
+
},
|
|
1157
|
+
{
|
|
1158
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.ItemGroup> { }\r\n\r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.ItemGroup data-slot=\"dropdown-menu-group\" {...rest}>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.ItemGroup>",
|
|
1159
|
+
type: "registry:ui",
|
|
1160
|
+
path: "dropdown-menu/dropdown-menu-group.svelte"
|
|
1161
|
+
},
|
|
1162
|
+
{
|
|
1163
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.Item> {\r\n inset?: boolean\r\n variant?: \"default\" | \"destructive\"\r\n}\r\n\r\nlet { class: className, inset, variant = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.Item\r\n data-slot=\"dropdown-menu-item\"\r\n data-inset={inset}\r\n data-variant={variant}\r\n class={cn(\r\n \"gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\r\n \"data-[variant=destructive]:text-destructive data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[variant=destructive]:data-highlighted:bg-destructive/10 dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:data-highlighted:*:[svg]:text-destructive not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.Item>",
|
|
1164
|
+
type: "registry:ui",
|
|
1165
|
+
path: "dropdown-menu/dropdown-menu-item.svelte"
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.ItemGroupLabel> {\r\n inset?: boolean\r\n}\r\n\r\nlet { class: className, inset, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.ItemGroupLabel\r\n data-slot=\"dropdown-menu-label\"\r\n data-inset={inset}\r\n class={cn(\"text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.ItemGroupLabel>",
|
|
1169
|
+
type: "registry:ui",
|
|
1170
|
+
path: "dropdown-menu/dropdown-menu-label.svelte"
|
|
1171
|
+
},
|
|
1172
|
+
{
|
|
1173
|
+
content: "<script lang=\"ts\">\r\nimport { Portal } from \"@sprawlify/svelte/portal\";\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof Portal> { \r\n \"data-slot\"?: string\r\n}\r\n\r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Portal data-slot=\"dropdown-menu-portal\" {...rest}>\r\n {@render children?.()}\r\n</Portal>",
|
|
1174
|
+
type: "registry:ui",
|
|
1175
|
+
path: "dropdown-menu/dropdown-menu-portal.svelte"
|
|
1176
|
+
},
|
|
1177
|
+
{
|
|
1178
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.RadioItemGroup> { }\r\n \r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.RadioItemGroup data-slot=\"dropdown-menu-radio-group\" {...rest}>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.RadioItemGroup>",
|
|
1179
|
+
type: "registry:ui",
|
|
1180
|
+
path: "dropdown-menu/dropdown-menu-radio-group.svelte"
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport { CheckIcon } from \"lucide-svelte\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.RadioItem> { inset?: boolean }\r\n\r\nlet { class: className, inset, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.RadioItem\r\n data-slot=\"dropdown-menu-radio-item\"\r\n data-inset={inset}\r\n class={cn(\r\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n <span\r\n class=\"absolute right-2 flex items-center justify-center pointer-events-none\"\r\n data-slot=\"dropdown-menu-radio-item-indicator\"\r\n >\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <CheckIcon />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.RadioItem>",
|
|
1184
|
+
type: "registry:ui",
|
|
1185
|
+
path: "dropdown-menu/dropdown-menu-radio-item.svelte"
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.Separator> { }\r\n\r\nlet { class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.Separator\r\n data-slot=\"dropdown-menu-separator\"\r\n class={cn(\"bg-border -mx-1 my-1 h-px\", className)}\r\n {...rest}\r\n/>",
|
|
1189
|
+
type: "registry:ui",
|
|
1190
|
+
path: "dropdown-menu/dropdown-menu-separator.svelte"
|
|
1191
|
+
},
|
|
1192
|
+
{
|
|
1193
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLSpanElement>, PolymorphicProps<\"span\"> { }\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"span\"\r\n data-slot=\"dropdown-menu-shortcut\"\r\n class={cn(\"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1194
|
+
type: "registry:ui",
|
|
1195
|
+
path: "dropdown-menu/dropdown-menu-shortcut.svelte"
|
|
1196
|
+
},
|
|
1197
|
+
{
|
|
1198
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\nimport { Portal } from \"@sprawlify/svelte/portal\";\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.Content> { }\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Portal>\r\n <DropdownMenuPrimitive.Positioner>\r\n <DropdownMenuPrimitive.Content\r\n data-slot=\"dropdown-menu-sub-content\"\r\n class={cn(\"focus-visible:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-lg p-1 shadow-lg ring-1 duration-100 origin-(--transform-origin) overflow-hidden\", className)}\r\n {...rest}\r\n >\r\n {@render children?.()}\r\n </DropdownMenuPrimitive.Content>\r\n </DropdownMenuPrimitive.Positioner>\r\n</Portal>",
|
|
1199
|
+
type: "registry:ui",
|
|
1200
|
+
path: "dropdown-menu/dropdown-menu-sub-content.svelte"
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport { ChevronRightIcon } from \"lucide-svelte\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.TriggerItem> { inset?: boolean }\r\n\r\nlet { class: className, inset, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.TriggerItem\r\n data-slot=\"dropdown-menu-sub-trigger\"\r\n data-inset={inset}\r\n class={cn(\r\n \"w-full data-[state=open]:bg-accent data-[state=open]:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n <ChevronRightIcon class=\"cn-rtl-flip ml-auto\" />\r\n</DropdownMenuPrimitive.TriggerItem>",
|
|
1204
|
+
type: "registry:ui",
|
|
1205
|
+
path: "dropdown-menu/dropdown-menu-sub-trigger.svelte"
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.Root> {\r\n \"data-slot\"?: string\r\n}\r\n\r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.Root data-slot=\"dropdown-menu-sub\" {...rest}>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.Root>",
|
|
1209
|
+
type: "registry:ui",
|
|
1210
|
+
path: "dropdown-menu/dropdown-menu-sub.svelte"
|
|
1211
|
+
},
|
|
1212
|
+
{
|
|
1213
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.Trigger> { }\r\n\r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...rest}>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.Trigger>",
|
|
1214
|
+
type: "registry:ui",
|
|
1215
|
+
path: "dropdown-menu/dropdown-menu-trigger.svelte"
|
|
1216
|
+
},
|
|
1217
|
+
{
|
|
1218
|
+
content: "<script lang=\"ts\">\r\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/svelte/dropdown-menu\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof DropdownMenuPrimitive.Root> { \r\n \"data-slot\"?: string\r\n}\r\n\r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" positioning={{ offset: { mainAxis: 4 } }} {...rest}>\r\n {@render children?.()}\r\n</DropdownMenuPrimitive.Root>",
|
|
1219
|
+
type: "registry:ui",
|
|
1220
|
+
path: "dropdown-menu/dropdown-menu.svelte"
|
|
1221
|
+
},
|
|
1222
|
+
{
|
|
1223
|
+
content: "export { default as DropdownMenu } from \"./dropdown-menu.svelte\";\nexport { default as DropdownMenuPortal } from \"./dropdown-menu-portal.svelte\";\nexport { default as DropdownMenuTrigger } from \"./dropdown-menu-trigger.svelte\";\nexport { default as DropdownMenuContent } from \"./dropdown-menu-content.svelte\";\nexport { default as DropdownMenuGroup } from \"./dropdown-menu-group.svelte\";\nexport { default as DropdownMenuItem } from \"./dropdown-menu-item.svelte\";\nexport { default as DropdownMenuCheckboxItem } from \"./dropdown-menu-checkbox-item.svelte\";\nexport { default as DropdownMenuRadioGroup } from \"./dropdown-menu-radio-group.svelte\";\nexport { default as DropdownMenuRadioItem } from \"./dropdown-menu-radio-item.svelte\";\nexport { default as DropdownMenuLabel } from \"./dropdown-menu-label.svelte\";\nexport { default as DropdownMenuSeparator } from \"./dropdown-menu-separator.svelte\";\nexport { default as DropdownMenuShortcut } from \"./dropdown-menu-shortcut.svelte\";\nexport { default as DropdownMenuSub } from \"./dropdown-menu-sub.svelte\";\nexport { default as DropdownMenuSubTrigger } from \"./dropdown-menu-sub-trigger.svelte\";\nexport { default as DropdownMenuSubContent } from \"./dropdown-menu-sub-content.svelte\";\n",
|
|
1224
|
+
type: "registry:ui",
|
|
1225
|
+
path: "dropdown-menu/index.ts"
|
|
1226
|
+
}
|
|
1227
|
+
]
|
|
1228
|
+
},
|
|
1229
|
+
{
|
|
1230
|
+
name: "empty",
|
|
1231
|
+
dependencies: [
|
|
1232
|
+
"@/lib/utils",
|
|
1233
|
+
"@sprawlify/svelte",
|
|
1234
|
+
"svelte/elements",
|
|
1235
|
+
"class-variance-authority"
|
|
1236
|
+
],
|
|
1237
|
+
files: [
|
|
1238
|
+
{
|
|
1239
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-slot=\"empty-content\"\r\n class={cn(\r\n \"gap-2.5 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1240
|
+
type: "registry:ui",
|
|
1241
|
+
path: "empty/empty-content.svelte"
|
|
1242
|
+
},
|
|
1243
|
+
{
|
|
1244
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLParagraphElement>, PolymorphicProps<\"p\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"p\"\r\n data-slot=\"empty-description\"\r\n class={cn(\r\n \"text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1245
|
+
type: "registry:ui",
|
|
1246
|
+
path: "empty/empty-description.svelte"
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-slot=\"empty-header\"\r\n class={cn(\r\n \"gap-2 flex max-w-sm flex-col items-center\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1250
|
+
type: "registry:ui",
|
|
1251
|
+
path: "empty/empty-header.svelte"
|
|
1252
|
+
},
|
|
1253
|
+
{
|
|
1254
|
+
content: "<script module lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nexport const emptyMediaVariants = cva(\r\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n icon: \"bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof emptyMediaVariants>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, variant = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-slot=\"empty-icon\"\r\n data-variant={variant}\r\n class={cn(emptyMediaVariants({ variant, className }))}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1255
|
+
type: "registry:ui",
|
|
1256
|
+
path: "empty/empty-media.svelte"
|
|
1257
|
+
},
|
|
1258
|
+
{
|
|
1259
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-slot=\"empty-title\"\r\n class={cn(\"text-sm font-medium tracking-tight\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1260
|
+
type: "registry:ui",
|
|
1261
|
+
path: "empty/empty-title.svelte"
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"empty\"\r\n data-part=\"root\"\r\n data-slot=\"empty\"\r\n class={cn(\r\n \"gap-4 rounded-xl border-dashed p-6 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1265
|
+
type: "registry:ui",
|
|
1266
|
+
path: "empty/empty.svelte"
|
|
1267
|
+
},
|
|
1268
|
+
{
|
|
1269
|
+
content: "export { default as Empty } from \"./empty.svelte\";\nexport { default as EmptyHeader } from \"./empty-header.svelte\";\nexport { default as EmptyMedia } from \"./empty-media.svelte\";\nexport { default as EmptyTitle } from \"./empty-title.svelte\";\nexport { default as EmptyDescription } from \"./empty-description.svelte\";\nexport { default as EmptyContent } from \"./empty-content.svelte\";\n",
|
|
1270
|
+
type: "registry:ui",
|
|
1271
|
+
path: "empty/index.ts"
|
|
1272
|
+
}
|
|
1273
|
+
]
|
|
1274
|
+
},
|
|
1275
|
+
{
|
|
1276
|
+
name: "field",
|
|
1277
|
+
dependencies: [
|
|
1278
|
+
"@/lib/utils",
|
|
1279
|
+
"svelte/elements",
|
|
1280
|
+
"@sprawlify/svelte",
|
|
1281
|
+
"@/components/ui/label",
|
|
1282
|
+
"svelte",
|
|
1283
|
+
"@/components/ui/separator",
|
|
1284
|
+
"class-variance-authority"
|
|
1285
|
+
],
|
|
1286
|
+
files: [
|
|
1287
|
+
{
|
|
1288
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"field\"\r\n data-part=\"content\" \r\n data-slot=\"field-content\"\r\n class={cn(\r\n \"gap-0.5 group/field-content flex flex-1 flex-col leading-snug\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1289
|
+
type: "registry:ui",
|
|
1290
|
+
path: "field/field-content.svelte"
|
|
1291
|
+
},
|
|
1292
|
+
{
|
|
1293
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\n import type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLParagraphElement>, PolymorphicProps<\"p\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"p\"\r\n data-scope=\"field\"\r\n data-part=\"description\"\r\n data-slot=\"field-description\"\r\n class={cn(\r\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-data-horizontal/field:text-balance\",\r\n \"last:mt-0 nth-last-2:-mt-1\",\r\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1294
|
+
type: "registry:ui",
|
|
1295
|
+
path: "field/field-description.svelte"
|
|
1296
|
+
},
|
|
1297
|
+
{
|
|
1298
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {\r\n errors?: Array<{ message?: string } | undefined>\r\n}\r\n\r\nlet { class: className, children, errors, ...rest }: Props = $props()\r\n\r\nlet content = $derived.by(() => {\r\n if (children) {\r\n return children\r\n }\r\n\r\n if (!errors?.length) {\r\n return null\r\n }\r\n\r\n const uniqueErrors = [\r\n ...new Map(errors.map((error) => [error?.message, error])).values(),\r\n ]\r\n\r\n if (uniqueErrors?.length == 1) {\r\n return uniqueErrors[0]?.message\r\n }\r\n\r\n return uniqueErrors.filter(error => error?.message)\r\n})\r\n<\/script>\r\n\r\n{#if content !== null}\r\n <Sprawlify\r\n as=\"div\"\r\n role=\"alert\"\r\n data-scope=\"field\"\r\n data-part=\"error\"\r\n data-slot=\"field-error\"\r\n class={cn(\"text-destructive text-sm font-normal\", className)}\r\n {...rest}\r\n >\r\n {#if typeof content === 'string'}\r\n {content}\r\n {:else if Array.isArray(content)}\r\n <ul class=\"ml-4 flex list-disc flex-col gap-1\">\r\n {#each content as error, index (index)}\r\n {#if error?.message}\r\n <li>{error.message}</li>\r\n {/if}\r\n {/each}\r\n </ul>\r\n {:else}\r\n {@render children?.()}\r\n {/if}\r\n </Sprawlify>\r\n{/if}",
|
|
1299
|
+
type: "registry:ui",
|
|
1300
|
+
path: "field/field-error.svelte"
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"field\"\r\n data-part=\"group\"\r\n data-slot=\"field-group\"\r\n class={cn(\r\n \"gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1304
|
+
type: "registry:ui",
|
|
1305
|
+
path: "field/field-group.svelte"
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Label } from \"@/components/ui/label\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof Label> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Label\r\n data-scope=\"field\"\r\n data-part=\"label\"\r\n data-slot=\"field-label\"\r\n class={cn(\r\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 group/field-label peer/field-label flex w-fit leading-snug\",\r\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Label>",
|
|
1309
|
+
type: "registry:ui",
|
|
1310
|
+
path: "field/field-label.svelte"
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { PolymorphicProps } from \"@sprawlify/svelte\";\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLLegendElement>, PolymorphicProps<\"legend\"> {\r\n variant?: \"legend\" | \"label\"\r\n}\r\n\r\nlet { class: className, variant = \"legend\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<legend\r\n data-scope=\"field\"\r\n data-part=\"legend\" \r\n data-slot=\"field-legend\"\r\n data-variant={variant}\r\n class={cn(\"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</legend>",
|
|
1314
|
+
type: "registry:ui",
|
|
1315
|
+
path: "field/field-legend.svelte"
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Separator } from \"@/components/ui/separator\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"field\"\r\n data-part=\"separator\"\r\n data-slot=\"field-separator\"\r\n data-content={!!children}\r\n class={cn(\"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\", className)}\r\n {...rest}\r\n>\r\n <Separator class=\"absolute inset-0 top-1/2\" />\r\n {#if children}\r\n <span\r\n class=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\r\n data-scope=\"field\"\r\n data-part=\"separator-content\"\r\n data-slot=\"field-separator-content\"\r\n >\r\n {@render children()}\r\n </span>\r\n {/if}\r\n</Sprawlify>",
|
|
1319
|
+
type: "registry:ui",
|
|
1320
|
+
path: "field/field-separator.svelte"
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { type PolymorphicProps, Sprawlify } from \"@sprawlify/svelte\";\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLFieldSetElement>, PolymorphicProps<\"fieldset\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"fieldset\"\r\n data-scope=\"field\"\r\n data-part=\"set\"\r\n data-slot=\"field-set\"\r\n class={cn(\"gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1324
|
+
type: "registry:ui",
|
|
1325
|
+
path: "field/field-set.svelte"
|
|
1326
|
+
},
|
|
1327
|
+
{
|
|
1328
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"field\"\r\n data-part=\"title\"\r\n data-slot=\"field-title\" \r\n class={cn(\r\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1329
|
+
type: "registry:ui",
|
|
1330
|
+
path: "field/field-title.svelte"
|
|
1331
|
+
},
|
|
1332
|
+
{
|
|
1333
|
+
content: "<script lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\n\r\nexport const fieldVariants = cva(\"data-[invalid=true]:text-destructive gap-2 group/field flex w-full\", {\r\n variants: {\r\n orientation: {\r\n vertical:\r\n \"flex-col *:w-full [&>.sr-only]:w-auto\",\r\n horizontal:\r\n \"flex-row items-center *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\r\n responsive:\r\n \"flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"vertical\",\r\n },\r\n})\r\n\r\ninterface FieldProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof fieldVariants>, PolymorphicProps<\"div\"> {}\r\n\r\nlet { class: className, orientation = \"vertical\", children, ...rest }: FieldProps = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n role=\"group\"\r\n data-scope=\"field\"\r\n data-part=\"root\"\r\n data-slot=\"field\"\r\n data-orientation={orientation}\r\n class={cn(fieldVariants({ orientation }), className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1334
|
+
type: "registry:ui",
|
|
1335
|
+
path: "field/field.svelte"
|
|
1336
|
+
},
|
|
1337
|
+
{
|
|
1338
|
+
content: "export { default as Field } from \"./field.svelte\";\nexport { default as FieldSet } from \"./field-set.svelte\";\nexport { default as FieldLegend } from \"./field-legend.svelte\";\nexport { default as FieldGroup } from \"./field-group.svelte\";\nexport { default as FieldContent } from \"./field-content.svelte\";\nexport { default as FieldLabel } from \"./field-label.svelte\";\nexport { default as FieldTitle } from \"./field-title.svelte\";\nexport { default as FieldDescription } from \"./field-description.svelte\";\nexport { default as FieldSeparator } from \"./field-separator.svelte\";\nexport { default as FieldError } from \"./field-error.svelte\";\n",
|
|
1339
|
+
type: "registry:ui",
|
|
1340
|
+
path: "field/index.ts"
|
|
1341
|
+
}
|
|
1342
|
+
]
|
|
1343
|
+
},
|
|
1344
|
+
{
|
|
1345
|
+
name: "input",
|
|
1346
|
+
dependencies: [
|
|
1347
|
+
"@/lib/utils",
|
|
1348
|
+
"@sprawlify/svelte",
|
|
1349
|
+
"svelte/elements"
|
|
1350
|
+
],
|
|
1351
|
+
files: [{
|
|
1352
|
+
content: "export { default as Input } from \"./input.svelte\";\n",
|
|
1353
|
+
type: "registry:ui",
|
|
1354
|
+
path: "input/index.ts"
|
|
1355
|
+
}, {
|
|
1356
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLInputAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLInputAttributes, PolymorphicProps<\"input\"> {}\r\n \r\nlet { class: className, type, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"input\"\r\n type={type}\r\n data-scope=\"input\"\r\n data-part=\"root\"\r\n data-slot=\"input\"\r\n class={cn(\r\n \"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...rest}\r\n/>",
|
|
1357
|
+
type: "registry:ui",
|
|
1358
|
+
path: "input/input.svelte"
|
|
1359
|
+
}]
|
|
1360
|
+
},
|
|
1361
|
+
{
|
|
1362
|
+
name: "input-group",
|
|
1363
|
+
dependencies: [
|
|
1364
|
+
"class-variance-authority",
|
|
1365
|
+
"@/lib/utils",
|
|
1366
|
+
"@sprawlify/svelte",
|
|
1367
|
+
"svelte/elements",
|
|
1368
|
+
"@/components/ui/button",
|
|
1369
|
+
"svelte",
|
|
1370
|
+
"@/components/ui/input",
|
|
1371
|
+
"@/components/ui/textarea"
|
|
1372
|
+
],
|
|
1373
|
+
files: [
|
|
1374
|
+
{
|
|
1375
|
+
content: "export { default as InputGroup } from \"./input-group.svelte\";\nexport { default as InputGroupAddon } from \"./input-group-addon.svelte\";\nexport { default as InputGroupButton } from \"./input-group-button.svelte\";\nexport { default as InputGroupText } from \"./input-group-text.svelte\";\nexport { default as InputGroupInput } from \"./input-group-input.svelte\";\nexport { default as InputGroupTextarea } from \"./input-group-textarea.svelte\";\n",
|
|
1376
|
+
type: "registry:ui",
|
|
1377
|
+
path: "input-group/index.ts"
|
|
1378
|
+
},
|
|
1379
|
+
{
|
|
1380
|
+
content: "<script module lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport const inputGroupAddonVariants = cva(\r\n \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\r\n {\r\n variants: {\r\n align: {\r\n \"inline-start\": \"pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem] order-first\",\r\n \"inline-end\": \"pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem] order-last\",\r\n \"block-start\":\r\n \"px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start\",\r\n \"block-end\":\r\n \"px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start\",\r\n },\r\n },\r\n defaultVariants: {\r\n align: \"inline-start\",\r\n },\r\n }\r\n)\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\n import type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof inputGroupAddonVariants>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, align = \"inline-start\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n role=\"group\"\r\n data-scope=\"input-group\"\r\n data-part=\"addon\"\r\n data-slot=\"input-group-addon\"\r\n data-align={align}\r\n class={cn(inputGroupAddonVariants({ align }), className)}\r\n onclick={(e) => {\r\n if ((e.target as HTMLElement).closest(\"button\")) {\r\n return\r\n }\r\n e.currentTarget?.parentElement?.querySelector(\"input\")?.focus()\r\n }}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1381
|
+
type: "registry:ui",
|
|
1382
|
+
path: "input-group/input-group-addon.svelte"
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
content: "<script module lang=\"ts\">\r\nimport { cva } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nexport const inputGroupButtonVariants = cva(\r\n \"gap-2 text-sm shadow-none flex items-center\",\r\n {\r\n variants: {\r\n size: {\r\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\r\n sm: \"\",\r\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\r\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"xs\",\r\n },\r\n }\r\n)\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { Button } from \"@/components/ui/button\"\r\nimport type { VariantProps } from \"class-variance-authority\"\r\nimport type { ComponentProps } from \"svelte\";\r\n\r\ninterface Props extends Omit<ComponentProps<typeof Button>, \"size\">, VariantProps<typeof inputGroupButtonVariants> {}\r\n \r\nlet { class: className, type = \"button\", variant = \"ghost\", size = \"xs\", ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Button\r\n data-scope=\"input-group\"\r\n data-part=\"button\"\r\n type={type}\r\n data-size={size}\r\n variant={variant}\r\n class={cn(inputGroupButtonVariants({ size }), className)}\r\n {...rest}\r\n/>",
|
|
1386
|
+
type: "registry:ui",
|
|
1387
|
+
path: "input-group/input-group-button.svelte"
|
|
1388
|
+
},
|
|
1389
|
+
{
|
|
1390
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Input } from \"@/components/ui/input\"\r\nimport type { HTMLInputAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLInputAttributes {}\r\n \r\nlet { class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Input\r\n data-scope=\"input-group\"\r\n data-part=\"control\"\r\n data-slot=\"input-group-control\"\r\n class={cn(\"rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1\", className)}\r\n {...rest}\r\n/>",
|
|
1391
|
+
type: "registry:ui",
|
|
1392
|
+
path: "input-group/input-group-input.svelte"
|
|
1393
|
+
},
|
|
1394
|
+
{
|
|
1395
|
+
content: "<script module lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLAttributes<HTMLSpanElement>, PolymorphicProps<\"span\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"span\"\r\n data-scope=\"input-group\"\r\n data-part=\"text\"\r\n data-slot=\"input-group-text\"\r\n class={cn(\r\n \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1396
|
+
type: "registry:ui",
|
|
1397
|
+
path: "input-group/input-group-text.svelte"
|
|
1398
|
+
},
|
|
1399
|
+
{
|
|
1400
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Textarea } from \"@/components/ui/textarea\"\r\nimport type { HTMLTextareaAttributes } from \"svelte/elements\"\r\nimport type { PolymorphicProps } from \"@sprawlify/svelte\";\r\n\r\ninterface Props extends HTMLTextareaAttributes, PolymorphicProps<\"textarea\"> {}\r\n \r\nlet { class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Textarea\r\n data-scope=\"input-group\"\r\n data-part=\"control\"\r\n data-slot=\"input-group-control\"\r\n class={cn(\"rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1 resize-none\", className)}\r\n {...rest}\r\n/>",
|
|
1401
|
+
type: "registry:ui",
|
|
1402
|
+
path: "input-group/input-group-textarea.svelte"
|
|
1403
|
+
},
|
|
1404
|
+
{
|
|
1405
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"input-group\"\r\n data-part=\"root\"\r\n data-slot=\"input-group\"\r\n role=\"group\"\r\n class={cn(\r\n \"border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-lg border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1406
|
+
type: "registry:ui",
|
|
1407
|
+
path: "input-group/input-group.svelte"
|
|
1408
|
+
}
|
|
1409
|
+
]
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
name: "item",
|
|
1413
|
+
dependencies: [
|
|
1414
|
+
"@/lib/utils",
|
|
1415
|
+
"@sprawlify/svelte",
|
|
1416
|
+
"svelte/elements",
|
|
1417
|
+
"class-variance-authority",
|
|
1418
|
+
"svelte"
|
|
1419
|
+
],
|
|
1420
|
+
files: [
|
|
1421
|
+
{
|
|
1422
|
+
content: "export { default as Item } from \"./item.svelte\";\nexport { default as ItemMedia } from \"./item-media.svelte\";\nexport { default as ItemContent } from \"./item-content.svelte\";\nexport { default as ItemActions } from \"./item-actions.svelte\";\nexport { default as ItemGroup } from \"./item-group.svelte\";\nexport { default as ItemSeparator } from \"./item-separator.svelte\";\nexport { default as ItemTitle } from \"./item-title.svelte\";\nexport { default as ItemDescription } from \"./item-description.svelte\";\nexport { default as ItemHeader } from \"./item-header.svelte\";\nexport { default as ItemFooter } from \"./item-footer.svelte\";\n",
|
|
1423
|
+
type: "registry:ui",
|
|
1424
|
+
path: "item/index.ts"
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"item\"\r\n data-part=\"actions\"\r\n data-slot=\"item-actions\"\r\n class={cn(\"gap-2 flex items-center\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1428
|
+
type: "registry:ui",
|
|
1429
|
+
path: "item/item-actions.svelte"
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"item\"\r\n data-part=\"content\"\r\n data-slot=\"item-content\"\r\n class={cn(\r\n \"gap-1 group-data-[size=xs]/item:gap-0 flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1433
|
+
type: "registry:ui",
|
|
1434
|
+
path: "item/item-content.svelte"
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLParagraphElement>, PolymorphicProps<\"p\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"p\"\r\n data-scope=\"item\"\r\n data-part=\"description\"\r\n data-slot=\"item-description\"\r\n class={cn(\r\n \"text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs [&>a:hover]:text-primary line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1438
|
+
type: "registry:ui",
|
|
1439
|
+
path: "item/item-description.svelte"
|
|
1440
|
+
},
|
|
1441
|
+
{
|
|
1442
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"item\"\r\n data-part=\"footer\"\r\n data-slot=\"item-footer\"\r\n class={cn(\r\n \"gap-2 flex basis-full items-center justify-between\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1443
|
+
type: "registry:ui",
|
|
1444
|
+
path: "item/item-footer.svelte"
|
|
1445
|
+
},
|
|
1446
|
+
{
|
|
1447
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n role=\"list\"\r\n data-scope=\"item\"\r\n data-part=\"group\"\r\n data-slot=\"item-group\"\r\n class={cn(\r\n \"gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2 group/item-group flex w-full flex-col\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1448
|
+
type: "registry:ui",
|
|
1449
|
+
path: "item/item-group.svelte"
|
|
1450
|
+
},
|
|
1451
|
+
{
|
|
1452
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"item\"\r\n data-part=\"header\"\r\n data-slot=\"item-header\"\r\n class={cn(\r\n \"gap-2 flex basis-full items-center justify-between\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1453
|
+
type: "registry:ui",
|
|
1454
|
+
path: "item/item-header.svelte"
|
|
1455
|
+
},
|
|
1456
|
+
{
|
|
1457
|
+
content: "<script lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\nconst itemMediaVariants = cva(\r\n \"gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start flex shrink-0 items-center justify-center [&_svg]:pointer-events-none\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\r\n image: \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\">, VariantProps<typeof itemMediaVariants> {}\r\n \r\nlet { class: className, variant = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"item\"\r\n data-part=\"media\"\r\n data-slot=\"item-media\"\r\n data-variant={variant}\r\n class={cn(itemMediaVariants({ variant, className }))}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1458
|
+
type: "registry:ui",
|
|
1459
|
+
path: "item/item-media.svelte"
|
|
1460
|
+
},
|
|
1461
|
+
{
|
|
1462
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Separator } from \"../separator\"\r\nimport type { ComponentProps } from \"svelte\";\r\n\r\ninterface Props extends ComponentProps<typeof Separator> {}\r\n\r\nlet { class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Separator\r\n data-scope=\"item\"\r\n data-part=\"separator\"\r\n data-slot=\"item-separator\"\r\n orientation=\"horizontal\"\r\n class={cn(\"my-2\", className)}\r\n {...rest}\r\n/>",
|
|
1463
|
+
type: "registry:ui",
|
|
1464
|
+
path: "item/item-separator.svelte"
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"item\"\r\n data-part=\"title\"\r\n data-slot=\"item-title\"\r\n class={cn(\r\n \"gap-2 text-sm leading-snug font-medium underline-offset-4 line-clamp-1 flex w-fit items-center\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1468
|
+
type: "registry:ui",
|
|
1469
|
+
path: "item/item-title.svelte"
|
|
1470
|
+
},
|
|
1471
|
+
{
|
|
1472
|
+
content: "<script lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\nconst itemVariants = cva(\r\n \"[a]:hover:bg-muted rounded-lg border text-sm w-full group/item focus-visible:border-ring focus-visible:ring-ring/50 flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:ring-[3px] [a]:transition-colors\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border-transparent\",\r\n outline: \"border-border\",\r\n muted: \"bg-muted/50 border-transparent\",\r\n },\r\n size: {\r\n default: \"gap-2.5 px-3 py-2.5\",\r\n sm: \"gap-2.5 px-3 py-2.5\",\r\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n)\r\n\r\ninterface Props extends HTMLAttributes<HTMLDivElement>, PolymorphicProps<\"div\">, VariantProps<typeof itemVariants> {}\r\n \r\nlet { class: className, variant = \"default\", size = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"item\"\r\n data-part=\"root\"\r\n data-slot=\"item\"\r\n data-variant={variant}\r\n data-size={size}\r\n class={cn(itemVariants({ variant, size, className }))}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1473
|
+
type: "registry:ui",
|
|
1474
|
+
path: "item/item.svelte"
|
|
1475
|
+
}
|
|
1476
|
+
]
|
|
1477
|
+
},
|
|
1478
|
+
{
|
|
1479
|
+
name: "kbd",
|
|
1480
|
+
dependencies: [
|
|
1481
|
+
"@/lib/utils",
|
|
1482
|
+
"@sprawlify/svelte",
|
|
1483
|
+
"svelte/elements"
|
|
1484
|
+
],
|
|
1485
|
+
files: [
|
|
1486
|
+
{
|
|
1487
|
+
content: "export { default as Kbd } from \"./kbd.svelte\";\nexport { default as KbdGroup } from \"./kbd-group.svelte\";\n",
|
|
1488
|
+
type: "registry:ui",
|
|
1489
|
+
path: "kbd/index.ts"
|
|
1490
|
+
},
|
|
1491
|
+
{
|
|
1492
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLElement>, PolymorphicProps<\"div\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"div\"\r\n data-scope=\"kbd\"\r\n data-part=\"group\"\r\n data-slot=\"kbd-group\"\r\n class={cn(\"gap-1 inline-flex items-center\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1493
|
+
type: "registry:ui",
|
|
1494
|
+
path: "kbd/kbd-group.svelte"
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLAttributes } from \"svelte/elements\";\r\n\r\ninterface Props extends HTMLAttributes<HTMLElement>, PolymorphicProps<\"kbd\"> {}\r\n \r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"kbd\"\r\n data-scope=\"kbd\"\r\n data-part=\"root\"\r\n data-slot=\"kbd\"\r\n class={cn(\r\n \"bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 pointer-events-none inline-flex items-center justify-center select-none\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1498
|
+
type: "registry:ui",
|
|
1499
|
+
path: "kbd/kbd.svelte"
|
|
1500
|
+
}
|
|
1501
|
+
]
|
|
1502
|
+
},
|
|
1503
|
+
{
|
|
1504
|
+
name: "label",
|
|
1505
|
+
dependencies: [
|
|
1506
|
+
"@/lib/utils",
|
|
1507
|
+
"svelte/elements",
|
|
1508
|
+
"@sprawlify/svelte"
|
|
1509
|
+
],
|
|
1510
|
+
files: [{
|
|
1511
|
+
content: "export { default as Label } from \"./label.svelte\";\n",
|
|
1512
|
+
type: "registry:ui",
|
|
1513
|
+
path: "label/index.ts"
|
|
1514
|
+
}, {
|
|
1515
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { HTMLLabelAttributes } from \"svelte/elements\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\";\r\n\r\ninterface Props extends HTMLLabelAttributes, PolymorphicProps<\"label\"> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"label\"\r\n data-scope=\"label\"\r\n data-part=\"root\"\r\n data-slot=\"label\"\r\n class={cn(\r\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</Sprawlify>",
|
|
1516
|
+
type: "registry:ui",
|
|
1517
|
+
path: "label/label.svelte"
|
|
1518
|
+
}]
|
|
1519
|
+
},
|
|
1520
|
+
{
|
|
1521
|
+
name: "native-select",
|
|
1522
|
+
dependencies: [
|
|
1523
|
+
"@/lib/utils",
|
|
1524
|
+
"svelte/elements",
|
|
1525
|
+
"lucide-svelte"
|
|
1526
|
+
],
|
|
1527
|
+
files: [
|
|
1528
|
+
{
|
|
1529
|
+
content: "export { default as NativeSelect } from \"./native-select.svelte\";\nexport { default as NativeSelectOption } from \"./native-select-option.svelte\";\nexport { default as NativeSelectOptGroup } from \"./native-select-opt-group.svelte\";\n",
|
|
1530
|
+
type: "registry:ui",
|
|
1531
|
+
path: "native-select/index.ts"
|
|
1532
|
+
},
|
|
1533
|
+
{
|
|
1534
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { HTMLOptgroupAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLOptgroupAttributes {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<optgroup\r\n data-scope=\"native-select\"\r\n data-part=\"optgroup\"\r\n data-slot=\"native-select-optgroup\"\r\n class={cn(className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</optgroup>",
|
|
1535
|
+
type: "registry:ui",
|
|
1536
|
+
path: "native-select/native-select-opt-group.svelte"
|
|
1537
|
+
},
|
|
1538
|
+
{
|
|
1539
|
+
content: "<script lang=\"ts\">\r\nimport type { HTMLOptionAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLOptionAttributes {}\r\n\r\nlet { children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<option data-scope=\"native-select\" data-part=\"option\" data-slot=\"native-select-option\" {...rest}>\r\n {@render children?.()}\r\n</option>",
|
|
1540
|
+
type: "registry:ui",
|
|
1541
|
+
path: "native-select/native-select-option.svelte"
|
|
1542
|
+
},
|
|
1543
|
+
{
|
|
1544
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { ChevronDownIcon } from \"lucide-svelte\"\r\nimport type { HTMLSelectAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends Omit<HTMLSelectAttributes, \"size\"> {\r\n size?: \"sm\" | \"default\"\r\n}\r\n\r\nlet { class: className, size = \"default\", children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<div\r\n class={cn(\r\n \"group/native-select relative w-fit has-[select:disabled]:opacity-50\",\r\n className\r\n )}\r\n data-scope=\"native-select\"\r\n data-part=\"root\"\r\n data-slot=\"native-select-root\"\r\n data-size={size}\r\n>\r\n <select\r\n data-slot=\"native-select\"\r\n data-size={size}\r\n class=\"border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 outline-none disabled:pointer-events-none disabled:cursor-not-allowed\"\r\n {...rest}\r\n >\r\n {@render children?.()}\r\n </select>\r\n <ChevronDownIcon class=\"text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none\" aria-hidden=\"true\" data-slot=\"native-select-icon\" />\r\n</div>",
|
|
1545
|
+
type: "registry:ui",
|
|
1546
|
+
path: "native-select/native-select.svelte"
|
|
1547
|
+
}
|
|
1548
|
+
]
|
|
1549
|
+
},
|
|
1550
|
+
{
|
|
1551
|
+
name: "scroll-area",
|
|
1552
|
+
dependencies: [
|
|
1553
|
+
"@sprawlify/svelte",
|
|
1554
|
+
"@/lib/utils",
|
|
1555
|
+
"svelte"
|
|
1556
|
+
],
|
|
1557
|
+
files: [
|
|
1558
|
+
{
|
|
1559
|
+
content: "export { default as ScrollArea } from \"./scroll-area.svelte\";\nexport { default as ScrollBar } from \"./scroll-bar.svelte\";\n",
|
|
1560
|
+
type: "registry:ui",
|
|
1561
|
+
path: "scroll-area/index.ts"
|
|
1562
|
+
},
|
|
1563
|
+
{
|
|
1564
|
+
content: "<script lang=\"ts\">\r\nimport { ScrollArea as ScrollAreaPrimitive } from \"@sprawlify/svelte/scroll-area\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport ScrollBar from \"./scroll-bar.svelte\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof ScrollAreaPrimitive.Root> {}\r\n\r\nlet { class: className, children, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<ScrollAreaPrimitive.Root\r\n data-slot=\"scroll-area\"\r\n class={cn(\"relative\", className)}\r\n {...rest}\r\n>\r\n <ScrollAreaPrimitive.Viewport\r\n data-slot=\"scroll-area-viewport\"\r\n class=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 scrollbar-none\"\r\n >\r\n {@render children?.()}\r\n </ScrollAreaPrimitive.Viewport>\r\n <ScrollBar />\r\n <ScrollAreaPrimitive.Corner />\r\n</ScrollAreaPrimitive.Root>",
|
|
1565
|
+
type: "registry:ui",
|
|
1566
|
+
path: "scroll-area/scroll-area.svelte"
|
|
1567
|
+
},
|
|
1568
|
+
{
|
|
1569
|
+
content: "<script lang=\"ts\">\r\nimport { ScrollArea as ScrollAreaPrimitive } from \"@sprawlify/svelte/scroll-area\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof ScrollAreaPrimitive.Scrollbar> {}\r\n\r\nlet { class: className, orientation = \"vertical\", ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<ScrollAreaPrimitive.Scrollbar\r\n data-slot=\"scroll-area-scrollbar\"\r\n data-orientation={orientation}\r\n {orientation}\r\n class={cn(\r\n \"data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-l data-[orientation=vertical]:border-l-transparent flex touch-none p-px transition-colors select-none\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n <ScrollAreaPrimitive.Thumb\r\n data-slot=\"scroll-area-thumb\"\r\n class=\"rounded-full bg-border relative flex-1\"\r\n />\r\n</ScrollAreaPrimitive.Scrollbar>",
|
|
1570
|
+
type: "registry:ui",
|
|
1571
|
+
path: "scroll-area/scroll-bar.svelte"
|
|
1572
|
+
}
|
|
1573
|
+
]
|
|
1574
|
+
},
|
|
1575
|
+
{
|
|
1576
|
+
name: "separator",
|
|
1577
|
+
dependencies: [
|
|
1578
|
+
"@sprawlify/svelte",
|
|
1579
|
+
"@/lib/utils",
|
|
1580
|
+
"svelte"
|
|
1581
|
+
],
|
|
1582
|
+
files: [{
|
|
1583
|
+
content: "export { default as Separator } from \"./separator.svelte\";\n",
|
|
1584
|
+
type: "registry:ui",
|
|
1585
|
+
path: "separator/index.ts"
|
|
1586
|
+
}, {
|
|
1587
|
+
content: "<script lang=\"ts\">\r\nimport { Separator as SeparatorPrimitive } from \"@sprawlify/svelte/separator\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\";\r\n\r\ninterface Props extends ComponentProps<typeof SeparatorPrimitive.Root> {}\r\n\r\nlet { class: className, orientation = \"horizontal\", decorative = true, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<SeparatorPrimitive.Root\r\n data-slot=\"separator\"\r\n {decorative}\r\n {orientation}\r\n class={cn(\"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\", className)}\r\n {...rest}\r\n/>",
|
|
1588
|
+
type: "registry:ui",
|
|
1589
|
+
path: "separator/separator.svelte"
|
|
1590
|
+
}]
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
name: "tabs",
|
|
1594
|
+
dependencies: [
|
|
1595
|
+
"@sprawlify/svelte",
|
|
1596
|
+
"@/lib/utils",
|
|
1597
|
+
"svelte",
|
|
1598
|
+
"class-variance-authority"
|
|
1599
|
+
],
|
|
1600
|
+
files: [
|
|
1601
|
+
{
|
|
1602
|
+
content: "export { default as Tabs } from \"./tabs.svelte\";\nexport { default as TabsList, tabsListVariants } from \"./tabs-list.svelte\";\nexport { default as TabsTrigger } from \"./tabs-trigger.svelte\";\nexport { default as TabsContent } from \"./tabs-content.svelte\";\n",
|
|
1603
|
+
type: "registry:ui",
|
|
1604
|
+
path: "tabs/index.ts"
|
|
1605
|
+
},
|
|
1606
|
+
{
|
|
1607
|
+
content: "<script lang=\"ts\">\r\nimport { Tabs as TabsPrimitive } from \"@sprawlify/svelte/tabs\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof TabsPrimitive.Content> { }\r\n\r\nlet { children, class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<TabsPrimitive.Content\r\n data-slot=\"tabs-content\"\r\n class={cn(\"text-sm flex-1 outline-none\", className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</TabsPrimitive.Content>",
|
|
1608
|
+
type: "registry:ui",
|
|
1609
|
+
path: "tabs/tabs-content.svelte"
|
|
1610
|
+
},
|
|
1611
|
+
{
|
|
1612
|
+
content: "<script module lang=\"ts\">\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nexport const tabsListVariants = cva(\r\n \"rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-8 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-muted\",\r\n line: \"gap-1 bg-transparent\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n<\/script>\r\n\r\n<script lang=\"ts\">\r\nimport { Tabs as TabsPrimitive } from \"@sprawlify/svelte/tabs\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof TabsPrimitive.List>, VariantProps<typeof tabsListVariants> {}\r\n\r\nlet { children, class: className, variant = \"default\", ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<TabsPrimitive.List\r\n data-slot=\"tabs-list\"\r\n data-variant={variant}\r\n class={cn(tabsListVariants({ variant }), className)}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</TabsPrimitive.List>",
|
|
1613
|
+
type: "registry:ui",
|
|
1614
|
+
path: "tabs/tabs-list.svelte"
|
|
1615
|
+
},
|
|
1616
|
+
{
|
|
1617
|
+
content: "<script lang=\"ts\">\r\nimport { Tabs as TabsPrimitive } from \"@sprawlify/svelte/tabs\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof TabsPrimitive.Trigger> { }\r\n\r\nlet { children, class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<TabsPrimitive.Trigger\r\n data-slot=\"tabs-trigger\"\r\n class={cn(\r\n \"gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium group-data-[variant=default]/tabs-list:data-selected:shadow-sm group-data-[variant=line]/tabs-list:data-selected:shadow-none [&_svg:not([class*='size-'])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\r\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-selected:bg-transparent dark:group-data-[variant=line]/tabs-list:data-selected:border-transparent dark:group-data-[variant=line]/tabs-list:data-selected:bg-transparent\",\r\n \"data-selected:bg-background dark:data-selected:text-foreground dark:data-selected:border-input dark:data-selected:bg-input/30 data-selected:text-foreground\",\r\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-selected:after:opacity-100\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</TabsPrimitive.Trigger>",
|
|
1618
|
+
type: "registry:ui",
|
|
1619
|
+
path: "tabs/tabs-trigger.svelte"
|
|
1620
|
+
},
|
|
1621
|
+
{
|
|
1622
|
+
content: "<script lang=\"ts\">\r\nimport { Tabs as TabsPrimitive } from \"@sprawlify/svelte/tabs\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport type { ComponentProps } from \"svelte\"\r\n\r\ninterface Props extends ComponentProps<typeof TabsPrimitive.Root> {}\r\n\r\nlet { children, class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<TabsPrimitive.Root\r\n data-slot=\"tabs\"\r\n class={cn(\r\n \"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\",\r\n className\r\n )}\r\n {...rest}\r\n>\r\n {@render children?.()}\r\n</TabsPrimitive.Root>",
|
|
1623
|
+
type: "registry:ui",
|
|
1624
|
+
path: "tabs/tabs.svelte"
|
|
1625
|
+
}
|
|
1626
|
+
]
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
name: "textarea",
|
|
1630
|
+
dependencies: [
|
|
1631
|
+
"@/lib/utils",
|
|
1632
|
+
"@sprawlify/svelte",
|
|
1633
|
+
"svelte/elements"
|
|
1634
|
+
],
|
|
1635
|
+
files: [{
|
|
1636
|
+
content: "export { default as Textarea } from \"./textarea.svelte\";\n",
|
|
1637
|
+
type: "registry:ui",
|
|
1638
|
+
path: "textarea/index.ts"
|
|
1639
|
+
}, {
|
|
1640
|
+
content: "<script lang=\"ts\">\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Sprawlify, type PolymorphicProps } from \"@sprawlify/svelte\"\r\nimport type { HTMLTextareaAttributes } from \"svelte/elements\"\r\n\r\ninterface Props extends HTMLTextareaAttributes, PolymorphicProps<\"textarea\"> {}\r\n \r\nlet { class: className, ...rest }: Props = $props()\r\n<\/script>\r\n\r\n<Sprawlify\r\n as=\"textarea\"\r\n data-scope=\"textarea\"\r\n data-part=\"root\"\r\n data-slot=\"textarea\"\r\n class={cn(\r\n \"border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors focus-visible:ring-3 aria-invalid:ring-3 md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...rest}\r\n/>",
|
|
1641
|
+
type: "registry:ui",
|
|
1642
|
+
path: "textarea/textarea.svelte"
|
|
1643
|
+
}]
|
|
1644
|
+
},
|
|
1645
|
+
{
|
|
1646
|
+
name: "utils",
|
|
1647
|
+
dependencies: ["clsx", "tailwind-merge"],
|
|
1648
|
+
files: [{
|
|
1649
|
+
content: "import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n",
|
|
1650
|
+
type: "registry:utils",
|
|
1651
|
+
path: "utils.ts"
|
|
1652
|
+
}]
|
|
1653
|
+
}
|
|
1654
|
+
]
|
|
1655
|
+
},
|
|
1656
|
+
vue: {
|
|
1657
|
+
dependencies: {
|
|
1658
|
+
"@sprawlify/vue": "^0.0.100",
|
|
1659
|
+
vue: "^3.4.0",
|
|
1660
|
+
"class-variance-authority": "^0.7.1",
|
|
1661
|
+
"lucide-vue-next": "^0.400.0",
|
|
1662
|
+
clsx: "^2.1.1",
|
|
1663
|
+
"tailwind-merge": "^3.3.1"
|
|
1664
|
+
},
|
|
1665
|
+
devDependencies: {},
|
|
1666
|
+
items: [
|
|
1667
|
+
{
|
|
1668
|
+
name: "alert",
|
|
1669
|
+
dependencies: [
|
|
1670
|
+
"@sprawlify/vue",
|
|
1671
|
+
"vue",
|
|
1672
|
+
"@/lib/utils",
|
|
1673
|
+
"class-variance-authority"
|
|
1674
|
+
],
|
|
1675
|
+
files: [
|
|
1676
|
+
{
|
|
1677
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport { type HTMLAttributes } from \"vue\";\n\nexport interface AlertActionProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<AlertActionProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"absolute top-2 right-2\", attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"alert\"\n data-part=\"action\"\n data-slot=\"alert-action\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1678
|
+
type: "registry:ui",
|
|
1679
|
+
path: "alert/alert-action.vue"
|
|
1680
|
+
},
|
|
1681
|
+
{
|
|
1682
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface AlertDescriptionProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<AlertDescriptionProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"alert\"\n data-part=\"description\"\n data-slot=\"alert-description\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1683
|
+
type: "registry:ui",
|
|
1684
|
+
path: "alert/alert-description.vue"
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface AlertTitleProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<AlertTitleProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"alert\"\n data-part=\"title\"\n data-slot=\"alert-title\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1688
|
+
type: "registry:ui",
|
|
1689
|
+
path: "alert/alert-title.vue"
|
|
1690
|
+
},
|
|
1691
|
+
{
|
|
1692
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport const alertVariants = cva(\n \"grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface AlertProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {\n variant?: VariantProps<typeof alertVariants>[\"variant\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, role = \"alert\", variant = \"default\", ...rest } = defineProps<AlertProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(alertVariants({ variant }), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n :role=\"role\"\n data-scope=\"alert\"\n data-part=\"root\"\n :data-variant=\"variant\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1693
|
+
type: "registry:ui",
|
|
1694
|
+
path: "alert/alert.vue"
|
|
1695
|
+
},
|
|
1696
|
+
{
|
|
1697
|
+
content: "export { default as Alert } from \"./alert.vue\";\nexport { default as AlertTitle } from \"./alert-title.vue\";\nexport { default as AlertDescription } from \"./alert-description.vue\";\nexport { default as AlertAction } from \"./alert-action.vue\";\n",
|
|
1698
|
+
type: "registry:ui",
|
|
1699
|
+
path: "alert/index.ts"
|
|
1700
|
+
}
|
|
1701
|
+
]
|
|
1702
|
+
},
|
|
1703
|
+
{
|
|
1704
|
+
name: "aspect-ratio",
|
|
1705
|
+
dependencies: ["@sprawlify/vue"],
|
|
1706
|
+
files: [{
|
|
1707
|
+
content: "<script lang=\"ts\">\nimport type { AspectRatioRootProps } from \"@sprawlify/vue/aspect-ratio\";\n\nexport interface AspectRatioProps extends /* @vue-ignore */ AspectRatioRootProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { AspectRatio as AspectRatioPrimitive } from \"@sprawlify/vue/aspect-ratio\";\n\nconst { asChild, ...rest } = defineProps<AspectRatioProps>();\n<\/script>\n\n<template>\n <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" v-bind=\"rest\" :as-child=\"asChild\">\n <AspectRatioPrimitive.Content data-slot=\"aspect-ratio-content\">\n <slot />\n </AspectRatioPrimitive.Content>\n </AspectRatioPrimitive.Root>\n</template>\n",
|
|
1708
|
+
type: "registry:ui",
|
|
1709
|
+
path: "aspect-ratio/aspect-ratio.vue"
|
|
1710
|
+
}, {
|
|
1711
|
+
content: "export { default as AspectRatio } from \"./aspect-ratio.vue\";\n",
|
|
1712
|
+
type: "registry:ui",
|
|
1713
|
+
path: "aspect-ratio/index.ts"
|
|
1714
|
+
}]
|
|
1715
|
+
},
|
|
1716
|
+
{
|
|
1717
|
+
name: "avatar",
|
|
1718
|
+
dependencies: [
|
|
1719
|
+
"@sprawlify/vue",
|
|
1720
|
+
"vue",
|
|
1721
|
+
"@/lib/utils"
|
|
1722
|
+
],
|
|
1723
|
+
files: [
|
|
1724
|
+
{
|
|
1725
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface AvatarBadgeProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<AvatarBadgeProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.span\n data-scope=\"avatar\"\n data-part=\"badge\"\n data-slot=\"avatar-badge\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.span>\n</template>\n",
|
|
1726
|
+
type: "registry:ui",
|
|
1727
|
+
path: "avatar/avatar-badge.vue"
|
|
1728
|
+
},
|
|
1729
|
+
{
|
|
1730
|
+
content: "<script lang=\"ts\">\nimport type { AvatarFallbackProps as AvatarPrimitiveFallbackProps } from \"@sprawlify/vue/avatar\";\n\nexport interface AvatarFallbackProps extends /* @vue-ignore */ AvatarPrimitiveFallbackProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Avatar as AvatarPrimitive } from \"@sprawlify/vue/avatar\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<AvatarFallbackProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"rounded-[inherit] overflow-hidden bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </AvatarPrimitive.Fallback>\n</template>\n",
|
|
1731
|
+
type: "registry:ui",
|
|
1732
|
+
path: "avatar/avatar-fallback.vue"
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface AvatarGroupCountProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<AvatarGroupCountProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"avatar\"\n data-part=\"group-count\"\n data-slot=\"avatar-group-count\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1736
|
+
type: "registry:ui",
|
|
1737
|
+
path: "avatar/avatar-group-count.vue"
|
|
1738
|
+
},
|
|
1739
|
+
{
|
|
1740
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface AvatarGroupProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<AvatarGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"avatar\"\n data-part=\"group\"\n data-slot=\"avatar-group\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1741
|
+
type: "registry:ui",
|
|
1742
|
+
path: "avatar/avatar-group.vue"
|
|
1743
|
+
},
|
|
1744
|
+
{
|
|
1745
|
+
content: "<script lang=\"ts\">\nimport type { AvatarImageProps as AvatarPrimitiveImageProps } from \"@sprawlify/vue/avatar\";\n\nexport interface AvatarImageProps extends /* @vue-ignore */ AvatarPrimitiveImageProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Avatar as AvatarPrimitive } from \"@sprawlify/vue/avatar\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<AvatarImageProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\"aspect-square rounded-[inherit] size-full overflow-hidden\", attrs.class as string),\n);\n<\/script>\n\n<template>\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n />\n</template>\n",
|
|
1746
|
+
type: "registry:ui",
|
|
1747
|
+
path: "avatar/avatar-image.vue"
|
|
1748
|
+
},
|
|
1749
|
+
{
|
|
1750
|
+
content: "<script lang=\"ts\">\nimport type { AvatarRootProps } from \"@sprawlify/vue/avatar\";\n\nexport interface AvatarProps extends /* @vue-ignore */ AvatarRootProps {\n size?: \"default\" | \"sm\" | \"lg\";\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Avatar as AvatarPrimitive } from \"@sprawlify/vue/avatar\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, size = \"default\", ...rest } = defineProps<AvatarProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n :data-size=\"size\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </AvatarPrimitive.Root>\n</template>\n",
|
|
1751
|
+
type: "registry:ui",
|
|
1752
|
+
path: "avatar/avatar.vue"
|
|
1753
|
+
},
|
|
1754
|
+
{
|
|
1755
|
+
content: "export { default as Avatar } from \"./avatar.vue\";\nexport { default as AvatarImage } from \"./avatar-image.vue\";\nexport { default as AvatarFallback } from \"./avatar-fallback.vue\";\nexport { default as AvatarBadge } from \"./avatar-badge.vue\";\nexport { default as AvatarGroup } from \"./avatar-group.vue\";\nexport { default as AvatarGroupCount } from \"./avatar-group-count.vue\";\n",
|
|
1756
|
+
type: "registry:ui",
|
|
1757
|
+
path: "avatar/index.ts"
|
|
1758
|
+
}
|
|
1759
|
+
]
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
name: "badge",
|
|
1763
|
+
dependencies: [
|
|
1764
|
+
"@sprawlify/vue",
|
|
1765
|
+
"vue",
|
|
1766
|
+
"class-variance-authority",
|
|
1767
|
+
"@/lib/utils"
|
|
1768
|
+
],
|
|
1769
|
+
files: [{
|
|
1770
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary: \"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n ghost: \"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 [a&]:hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {\n variant?: VariantProps<typeof badgeVariants>[\"variant\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { variant = \"default\", ...rest } = defineProps<BadgeProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(badgeVariants({ variant }), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.span\n data-scope=\"badge\"\n data-part=\"root\"\n data-slot=\"badge\"\n :data-variant=\"variant\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.span>\n</template>\n",
|
|
1771
|
+
type: "registry:ui",
|
|
1772
|
+
path: "badge/badge.vue"
|
|
1773
|
+
}, {
|
|
1774
|
+
content: "export { default as Badge } from \"./badge.vue\";\n",
|
|
1775
|
+
type: "registry:ui",
|
|
1776
|
+
path: "badge/index.ts"
|
|
1777
|
+
}]
|
|
1778
|
+
},
|
|
1779
|
+
{
|
|
1780
|
+
name: "button",
|
|
1781
|
+
dependencies: [
|
|
1782
|
+
"@sprawlify/vue",
|
|
1783
|
+
"vue",
|
|
1784
|
+
"class-variance-authority",
|
|
1785
|
+
"@/lib/utils"
|
|
1786
|
+
],
|
|
1787
|
+
files: [{
|
|
1788
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { ButtonHTMLAttributes } from \"vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive:\n \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps extends PolymorphicProps, /* @vue-ignore */ ButtonHTMLAttributes {\n variant?: VariantProps<typeof buttonVariants>[\"variant\"];\n size?: VariantProps<typeof buttonVariants>[\"size\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { variant = \"default\", size = \"default\", ...rest } = defineProps<ButtonProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(buttonVariants({ variant, size }), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.button\n data-scope=\"button\"\n data-part=\"root\"\n data-slot=\"button\"\n :data-variant=\"variant\"\n :data-size=\"size\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.button>\n</template>\n",
|
|
1789
|
+
type: "registry:ui",
|
|
1790
|
+
path: "button/button.vue"
|
|
1791
|
+
}, {
|
|
1792
|
+
content: "export { default as Button, buttonVariants, type ButtonProps } from \"./button.vue\";\n",
|
|
1793
|
+
type: "registry:ui",
|
|
1794
|
+
path: "button/index.ts"
|
|
1795
|
+
}]
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
name: "button-group",
|
|
1799
|
+
dependencies: [
|
|
1800
|
+
"@/components/ui/separator",
|
|
1801
|
+
"vue",
|
|
1802
|
+
"@/lib/utils",
|
|
1803
|
+
"@sprawlify/vue",
|
|
1804
|
+
"class-variance-authority"
|
|
1805
|
+
],
|
|
1806
|
+
files: [
|
|
1807
|
+
{
|
|
1808
|
+
content: "<script lang=\"ts\">\nimport type { SeparatorProps } from \"@/components/ui/separator\";\n\nexport interface ButtonGroupSeparatorProps extends /* @vue-ignore */ SeparatorProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nconst { orientation = \"vertical\", ...rest } = defineProps<ButtonGroupSeparatorProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"bg-input relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <Separator\n data-scope=\"button-group\"\n data-part=\"separator\"\n data-slot=\"button-group-separator\"\n :orientation=\"orientation\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </Separator>\n</template>\n",
|
|
1809
|
+
type: "registry:ui",
|
|
1810
|
+
path: "button-group/button-group-separator.vue"
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface ButtonGroupTextProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<ButtonGroupTextProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"bg-muted gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div :class=\"className\" v-bind=\"rest\" :as-child=\"asChild\">\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1814
|
+
type: "registry:ui",
|
|
1815
|
+
path: "button-group/button-group-text.vue"
|
|
1816
|
+
},
|
|
1817
|
+
{
|
|
1818
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport const buttonGroupVariants = cva(\n \"has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg flex w-fit items-stretch *:focus-visible:z-10 *:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nexport interface ButtonGroupProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n orientation?: VariantProps<typeof buttonGroupVariants>[\"orientation\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { orientation = \"horizontal\", role = \"group\", ...rest } = defineProps<ButtonGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(buttonGroupVariants({ orientation }), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"button-group\"\n data-part=\"root\"\n :role=\"role\"\n data-slot=\"button-group\"\n :data-orientation=\"orientation\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1819
|
+
type: "registry:ui",
|
|
1820
|
+
path: "button-group/button-group.vue"
|
|
1821
|
+
},
|
|
1822
|
+
{
|
|
1823
|
+
content: "export { default as ButtonGroup } from \"./button-group.vue\";\nexport { default as ButtonGroupText } from \"./button-group-text.vue\";\nexport { default as ButtonGroupSeparator } from \"./button-group-separator.vue\";\n",
|
|
1824
|
+
type: "registry:ui",
|
|
1825
|
+
path: "button-group/index.ts"
|
|
1826
|
+
}
|
|
1827
|
+
]
|
|
1828
|
+
},
|
|
1829
|
+
{
|
|
1830
|
+
name: "card",
|
|
1831
|
+
dependencies: [
|
|
1832
|
+
"@sprawlify/vue",
|
|
1833
|
+
"vue",
|
|
1834
|
+
"@/lib/utils",
|
|
1835
|
+
"class-variance-authority"
|
|
1836
|
+
],
|
|
1837
|
+
files: [
|
|
1838
|
+
{
|
|
1839
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface CardActionProps extends PolymorphicProps, /* @vue-ignore */ HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<CardActionProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\", attrs.class as string),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"action\"\n data-slot=\"card-action\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1840
|
+
type: "registry:ui",
|
|
1841
|
+
path: "card/card-action.vue"
|
|
1842
|
+
},
|
|
1843
|
+
{
|
|
1844
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface CardContentProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<CardContentProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"px-4 group-data-[size=sm]/card:px-3\", attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"content\"\n data-slot=\"card-content\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1845
|
+
type: "registry:ui",
|
|
1846
|
+
path: "card/card-content.vue"
|
|
1847
|
+
},
|
|
1848
|
+
{
|
|
1849
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface CardDescriptionProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<CardDescriptionProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"text-muted-foreground text-sm\", attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"description\"\n data-slot=\"card-description\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1850
|
+
type: "registry:ui",
|
|
1851
|
+
path: "card/card-description.vue"
|
|
1852
|
+
},
|
|
1853
|
+
{
|
|
1854
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface CardFooterProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<CardFooterProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"footer\"\n data-slot=\"card-footer\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1855
|
+
type: "registry:ui",
|
|
1856
|
+
path: "card/card-footer.vue"
|
|
1857
|
+
},
|
|
1858
|
+
{
|
|
1859
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface CardHeaderProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<CardHeaderProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"header\"\n data-slot=\"card-header\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1860
|
+
type: "registry:ui",
|
|
1861
|
+
path: "card/card-header.vue"
|
|
1862
|
+
},
|
|
1863
|
+
{
|
|
1864
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface CardTitleProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<CardTitleProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\", attrs.class as string),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"title\"\n data-slot=\"card-title\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1865
|
+
type: "registry:ui",
|
|
1866
|
+
path: "card/card-title.vue"
|
|
1867
|
+
},
|
|
1868
|
+
{
|
|
1869
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\nimport { cva } from \"class-variance-authority\";\n\nexport const cardVariants = cva(\n \"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\",\n);\n\nexport interface CardProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n size?: \"default\" | \"sm\";\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { size = \"default\", asChild, ...rest } = defineProps<CardProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(cardVariants(), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"card\"\n data-part=\"root\"\n data-slot=\"card\"\n :class=\"className\"\n :data-size=\"size\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
1870
|
+
type: "registry:ui",
|
|
1871
|
+
path: "card/card.vue"
|
|
1872
|
+
},
|
|
1873
|
+
{
|
|
1874
|
+
content: "export { default as Card } from \"./card.vue\";\nexport { default as CardHeader } from \"./card-header.vue\";\nexport { default as CardTitle } from \"./card-title.vue\";\nexport { default as CardDescription } from \"./card-description.vue\";\nexport { default as CardAction } from \"./card-action.vue\";\nexport { default as CardContent } from \"./card-content.vue\";\nexport { default as CardFooter } from \"./card-footer.vue\";\n",
|
|
1875
|
+
type: "registry:ui",
|
|
1876
|
+
path: "card/index.ts"
|
|
1877
|
+
}
|
|
1878
|
+
]
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
name: "checkbox",
|
|
1882
|
+
dependencies: [
|
|
1883
|
+
"@sprawlify/vue",
|
|
1884
|
+
"vue",
|
|
1885
|
+
"@/lib/utils",
|
|
1886
|
+
"lucide-vue-next"
|
|
1887
|
+
],
|
|
1888
|
+
files: [{
|
|
1889
|
+
content: "<script lang=\"ts\">\nimport type { CheckboxRootProps } from \"@sprawlify/vue/checkbox\";\n\nexport interface CheckboxProps extends /* @vue-ignore */ CheckboxRootProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Checkbox as CheckboxPrimitive } from \"@sprawlify/vue/checkbox\";\nimport { cn } from \"@/lib/utils\";\nimport { CheckIcon } from \"lucide-vue-next\";\n\nconst { ...rest } = defineProps<CheckboxProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <CheckboxPrimitive.Root data-slot=\"checkbox\" :class=\"className\" v-bind=\"rest\">\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n class=\"[&>svg]:size-3.5 grid place-content-center text-current transition-none\"\n >\n <CheckIcon />\n </CheckboxPrimitive.Indicator>\n <CheckboxPrimitive.HiddenInput />\n </CheckboxPrimitive.Root>\n</template>\n",
|
|
1890
|
+
type: "registry:ui",
|
|
1891
|
+
path: "checkbox/checkbox.vue"
|
|
1892
|
+
}, {
|
|
1893
|
+
content: "export { default as Checkbox } from \"./checkbox.vue\";\n",
|
|
1894
|
+
type: "registry:ui",
|
|
1895
|
+
path: "checkbox/index.ts"
|
|
1896
|
+
}]
|
|
1897
|
+
},
|
|
1898
|
+
{
|
|
1899
|
+
name: "collapsible",
|
|
1900
|
+
dependencies: [
|
|
1901
|
+
"@sprawlify/vue",
|
|
1902
|
+
"vue",
|
|
1903
|
+
"@/lib/utils"
|
|
1904
|
+
],
|
|
1905
|
+
files: [
|
|
1906
|
+
{
|
|
1907
|
+
content: "<script lang=\"ts\">\nimport type { CollapsibleContentProps as CollapsiblePrimitiveContentProps } from \"@sprawlify/vue/collapsible\";\n\nexport interface CollapsibleContentProps\n extends /* @vue-ignore */ CollapsiblePrimitiveContentProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Collapsible as CollapsiblePrimitive } from \"@sprawlify/vue/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\nconst { ...rest } = defineProps<CollapsibleContentProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <CollapsiblePrimitive.Content data-slot=\"collapsible-content\" :class=\"className\" v-bind=\"rest\">\n <slot />\n </CollapsiblePrimitive.Content>\n</template>\n",
|
|
1908
|
+
type: "registry:ui",
|
|
1909
|
+
path: "collapsible/collapsible-content.vue"
|
|
1910
|
+
},
|
|
1911
|
+
{
|
|
1912
|
+
content: "<script lang=\"ts\">\nimport type { CollapsibleTriggerProps as CollapsiblePrimitiveTriggerProps } from \"@sprawlify/vue/collapsible\";\n\nexport interface CollapsibleTriggerProps\n extends /* @vue-ignore */ CollapsiblePrimitiveTriggerProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Collapsible as CollapsiblePrimitive } from \"@sprawlify/vue/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\nconst { ...rest } = defineProps<CollapsibleTriggerProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" :class=\"className\" v-bind=\"rest\">\n <slot />\n </CollapsiblePrimitive.Trigger>\n</template>\n",
|
|
1913
|
+
type: "registry:ui",
|
|
1914
|
+
path: "collapsible/collapsible-trigger.vue"
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
content: "<script lang=\"ts\">\nimport type { CollapsibleRootProps } from \"@sprawlify/vue/collapsible\";\n\nexport interface CollapsibleProps extends /* @vue-ignore */ CollapsibleRootProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Collapsible as CollapsiblePrimitive } from \"@sprawlify/vue/collapsible\";\nimport { cn } from \"@/lib/utils\";\n\nconst { ...rest } = defineProps<CollapsibleProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <CollapsiblePrimitive.Root data-slot=\"collapsible\" :class=\"className\" v-bind=\"rest\">\n <slot />\n </CollapsiblePrimitive.Root>\n</template>\n",
|
|
1918
|
+
type: "registry:ui",
|
|
1919
|
+
path: "collapsible/collapsible.vue"
|
|
1920
|
+
},
|
|
1921
|
+
{
|
|
1922
|
+
content: "export { default as Collapsible } from \"./collapsible.vue\";\nexport { default as CollapsibleTrigger } from \"./collapsible-trigger.vue\";\nexport { default as CollapsibleContent } from \"./collapsible-content.vue\";\n",
|
|
1923
|
+
type: "registry:ui",
|
|
1924
|
+
path: "collapsible/index.ts"
|
|
1925
|
+
}
|
|
1926
|
+
]
|
|
1927
|
+
},
|
|
1928
|
+
{
|
|
1929
|
+
name: "dropdown-menu",
|
|
1930
|
+
dependencies: [
|
|
1931
|
+
"@sprawlify/vue",
|
|
1932
|
+
"vue",
|
|
1933
|
+
"@/lib/utils",
|
|
1934
|
+
"lucide-vue-next"
|
|
1935
|
+
],
|
|
1936
|
+
files: [
|
|
1937
|
+
{
|
|
1938
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuCheckboxItemProps as DropdownMenuCheckboxItemPrimitiveProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuCheckboxItemProps\n extends /* @vue-ignore */ DropdownMenuCheckboxItemPrimitiveProps {\n inset?: boolean;\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { CheckIcon } from \"lucide-vue-next\";\n\nconst { inset, value, checked, ...rest } = defineProps<DropdownMenuCheckboxItemProps>();\n\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-[inset=true]:pl-7 [&_svg:not([class*=size-])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n :data-inset=\"inset\"\n :value=\"value\"\n :checked=\"checked\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <span\n class=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <slot />\n </DropdownMenuPrimitive.CheckboxItem>\n</template>\n",
|
|
1939
|
+
type: "registry:ui",
|
|
1940
|
+
path: "dropdown-menu/dropdown-menu-checkbox-item.vue"
|
|
1941
|
+
},
|
|
1942
|
+
{
|
|
1943
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuContentProps as DropdownMenuPrimitiveContentProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuContentProps\n extends /* @vue-ignore */ DropdownMenuPrimitiveContentProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<DropdownMenuContentProps>();\n\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"focus-visible:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-(--z-index) max-h-(--available-height) w-(--reference-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <Teleport to=\"body\">\n <DropdownMenuPrimitive.Positioner>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Positioner>\n </Teleport>\n</template>\n",
|
|
1944
|
+
type: "registry:ui",
|
|
1945
|
+
path: "dropdown-menu/dropdown-menu-content.vue"
|
|
1946
|
+
},
|
|
1947
|
+
{
|
|
1948
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuItemGroupProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuGroupProps extends /* @vue-ignore */ DropdownMenuItemGroupProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<DropdownMenuGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.ItemGroup\n data-slot=\"dropdown-menu-group\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.ItemGroup>\n</template>\n",
|
|
1949
|
+
type: "registry:ui",
|
|
1950
|
+
path: "dropdown-menu/dropdown-menu-group.vue"
|
|
1951
|
+
},
|
|
1952
|
+
{
|
|
1953
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuItemProps as DropdownMenuPrimitiveItemProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuItemProps extends /* @vue-ignore */ DropdownMenuPrimitiveItemProps {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { inset, variant = \"default\", asChild, ...rest } = defineProps<DropdownMenuItemProps>();\n\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-1.5 rounded-md px-1.5 py-1 text-sm data-[inset=true]:pl-7 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"data-[variant=destructive]:text-destructive data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[variant=destructive]:data-highlighted:bg-destructive/10 dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:data-highlighted:*:[svg]:text-destructive not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n :data-inset=\"inset\"\n :data-variant=\"variant\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.Item>\n</template>\n",
|
|
1954
|
+
type: "registry:ui",
|
|
1955
|
+
path: "dropdown-menu/dropdown-menu-item.vue"
|
|
1956
|
+
},
|
|
1957
|
+
{
|
|
1958
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuItemGroupLabelProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuLabelProps extends /* @vue-ignore */ DropdownMenuItemGroupLabelProps {\n inset?: boolean;\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { inset, asChild, ...rest } = defineProps<DropdownMenuLabelProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"text-muted-foreground px-1.5 py-1 text-xs font-medium data-[inset=true]:pl-7\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.ItemGroupLabel\n data-slot=\"dropdown-menu-label\"\n :data-inset=\"inset\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.ItemGroupLabel>\n</template>\n",
|
|
1959
|
+
type: "registry:ui",
|
|
1960
|
+
path: "dropdown-menu/dropdown-menu-label.vue"
|
|
1961
|
+
},
|
|
1962
|
+
{
|
|
1963
|
+
content: "<script lang=\"ts\">\nexport interface DropdownMenuPortalProps {\n to?: string | Element;\n disabled?: boolean;\n}\n<\/script>\n\n<script setup lang=\"ts\">\nconst { to, disabled, ...rest } = defineProps<DropdownMenuPortalProps>();\n<\/script>\n\n<template>\n <Teleport\n data-slot=\"dropdown-menu-portal\"\n :to=\"to || 'body'\"\n :disabled=\"disabled || false\"\n v-bind=\"rest\"\n >\n <slot />\n </Teleport>\n</template>\n",
|
|
1964
|
+
type: "registry:ui",
|
|
1965
|
+
path: "dropdown-menu/dropdown-menu-portal.vue"
|
|
1966
|
+
},
|
|
1967
|
+
{
|
|
1968
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuRadioItemGroupProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuRadioGroupProps\n extends /* @vue-ignore */ DropdownMenuRadioItemGroupProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<DropdownMenuRadioGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.RadioItemGroup\n data-slot=\"dropdown-menu-radio-group\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.RadioItemGroup>\n</template>\n",
|
|
1969
|
+
type: "registry:ui",
|
|
1970
|
+
path: "dropdown-menu/dropdown-menu-radio-group.vue"
|
|
1971
|
+
},
|
|
1972
|
+
{
|
|
1973
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuRadioItemProps as DropdownMenuPrimitiveRadioItemProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuRadioItemProps\n extends /* @vue-ignore */ DropdownMenuPrimitiveRadioItemProps {\n inset?: boolean;\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { CheckIcon } from \"lucide-vue-next\";\n\nconst { inset, value, ...rest } = defineProps<DropdownMenuRadioItemProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-[inset=true]:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n :data-inset=\"inset\"\n :value=\"value\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <span\n class=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n <slot />\n </DropdownMenuPrimitive.RadioItem>\n</template>\n",
|
|
1974
|
+
type: "registry:ui",
|
|
1975
|
+
path: "dropdown-menu/dropdown-menu-radio-item.vue"
|
|
1976
|
+
},
|
|
1977
|
+
{
|
|
1978
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuSeparatorProps as DropdownMenuPrimitiveSeparatorProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuSeparatorProps\n extends /* @vue-ignore */ DropdownMenuPrimitiveSeparatorProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<DropdownMenuSeparatorProps>();\n\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"bg-border -mx-1 my-1 h-px\", attrs.class as string));\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n />\n</template>\n",
|
|
1979
|
+
type: "registry:ui",
|
|
1980
|
+
path: "dropdown-menu/dropdown-menu-separator.vue"
|
|
1981
|
+
},
|
|
1982
|
+
{
|
|
1983
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface DropdownMenuShortcutProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<DropdownMenuShortcutProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.span\n data-slot=\"dropdown-menu-shortcut\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.span>\n</template>\n",
|
|
1984
|
+
type: "registry:ui",
|
|
1985
|
+
path: "dropdown-menu/dropdown-menu-shortcut.vue"
|
|
1986
|
+
},
|
|
1987
|
+
{
|
|
1988
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuContentProps as DropdownMenuPrimitiveContentProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuSubContentProps\n extends /* @vue-ignore */ DropdownMenuPrimitiveContentProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<DropdownMenuSubContentProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"focus-visible:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-lg p-1 shadow-lg ring-1 duration-100 origin-(--transform-origin) overflow-hidden\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <Teleport to=\"body\">\n <DropdownMenuPrimitive.Positioner>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-sub-content\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Positioner>\n </Teleport>\n</template>\n",
|
|
1989
|
+
type: "registry:ui",
|
|
1990
|
+
path: "dropdown-menu/dropdown-menu-sub-content.vue"
|
|
1991
|
+
},
|
|
1992
|
+
{
|
|
1993
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuTriggerItemProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuSubTriggerProps\n extends /* @vue-ignore */ DropdownMenuTriggerItemProps {\n inset?: boolean;\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronRightIcon } from \"lucide-vue-next\";\n\nconst { inset, ...rest } = defineProps<DropdownMenuSubTriggerProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"w-full data-[state=open]:bg-accent data-[state=open]:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-1.5 py-1 text-sm data-[inset=true]:pl-7 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.TriggerItem\n data-slot=\"dropdown-menu-sub-trigger\"\n :data-inset=\"inset\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <slot />\n <ChevronRightIcon class=\"cn-rtl-flip ml-auto\" />\n </DropdownMenuPrimitive.TriggerItem>\n</template>\n",
|
|
1994
|
+
type: "registry:ui",
|
|
1995
|
+
path: "dropdown-menu/dropdown-menu-sub-trigger.vue"
|
|
1996
|
+
},
|
|
1997
|
+
{
|
|
1998
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuRootProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuSubProps extends /* @vue-ignore */ DropdownMenuRootProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<DropdownMenuSubProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu-sub\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.Root>\n</template>\n",
|
|
1999
|
+
type: "registry:ui",
|
|
2000
|
+
path: "dropdown-menu/dropdown-menu-sub.vue"
|
|
2001
|
+
},
|
|
2002
|
+
{
|
|
2003
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuTriggerProps as DropdownMenuPrimitiveTriggerProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuTriggerProps\n extends /* @vue-ignore */ DropdownMenuPrimitiveTriggerProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<DropdownMenuTriggerProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.Trigger>\n</template>\n",
|
|
2004
|
+
type: "registry:ui",
|
|
2005
|
+
path: "dropdown-menu/dropdown-menu-trigger.vue"
|
|
2006
|
+
},
|
|
2007
|
+
{
|
|
2008
|
+
content: "<script lang=\"ts\">\nimport type { DropdownMenuRootProps } from \"@sprawlify/vue/dropdown-menu\";\n\nexport interface DropdownMenuProps extends /* @vue-ignore */ DropdownMenuRootProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"@sprawlify/vue/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, positioning, ...rest } = defineProps<DropdownMenuProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <DropdownMenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n :positioning=\"{ offset: { mainAxis: 4 }, ...positioning }\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </DropdownMenuPrimitive.Root>\n</template>\n",
|
|
2009
|
+
type: "registry:ui",
|
|
2010
|
+
path: "dropdown-menu/dropdown-menu.vue"
|
|
2011
|
+
},
|
|
2012
|
+
{
|
|
2013
|
+
content: "export { default as DropdownMenu } from \"./dropdown-menu.vue\";\nexport { default as DropdownMenuPortal } from \"./dropdown-menu-portal.vue\";\nexport { default as DropdownMenuTrigger } from \"./dropdown-menu-trigger.vue\";\nexport { default as DropdownMenuContent } from \"./dropdown-menu-content.vue\";\nexport { default as DropdownMenuGroup } from \"./dropdown-menu-group.vue\";\nexport { default as DropdownMenuItem } from \"./dropdown-menu-item.vue\";\nexport { default as DropdownMenuCheckboxItem } from \"./dropdown-menu-checkbox-item.vue\";\nexport { default as DropdownMenuRadioGroup } from \"./dropdown-menu-radio-group.vue\";\nexport { default as DropdownMenuRadioItem } from \"./dropdown-menu-radio-item.vue\";\nexport { default as DropdownMenuLabel } from \"./dropdown-menu-label.vue\";\nexport { default as DropdownMenuSeparator } from \"./dropdown-menu-separator.vue\";\nexport { default as DropdownMenuShortcut } from \"./dropdown-menu-shortcut.vue\";\nexport { default as DropdownMenuSub } from \"./dropdown-menu-sub.vue\";\nexport { default as DropdownMenuSubTrigger } from \"./dropdown-menu-sub-trigger.vue\";\nexport { default as DropdownMenuSubContent } from \"./dropdown-menu-sub-content.vue\";\n",
|
|
2014
|
+
type: "registry:ui",
|
|
2015
|
+
path: "dropdown-menu/index.ts"
|
|
2016
|
+
}
|
|
2017
|
+
]
|
|
2018
|
+
},
|
|
2019
|
+
{
|
|
2020
|
+
name: "empty",
|
|
2021
|
+
dependencies: [
|
|
2022
|
+
"@sprawlify/vue",
|
|
2023
|
+
"vue",
|
|
2024
|
+
"@/lib/utils",
|
|
2025
|
+
"class-variance-authority"
|
|
2026
|
+
],
|
|
2027
|
+
files: [
|
|
2028
|
+
{
|
|
2029
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface EmptyContentProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<EmptyContentProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-2.5 text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div data-slot=\"empty-content\" :class=\"className\" v-bind=\"rest\" :as-child=\"asChild\">\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2030
|
+
type: "registry:ui",
|
|
2031
|
+
path: "empty/empty-content.vue"
|
|
2032
|
+
},
|
|
2033
|
+
{
|
|
2034
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface EmptyDescriptionProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<EmptyDescriptionProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.p data-slot=\"empty-description\" :class=\"className\" v-bind=\"rest\" :as-child=\"asChild\">\n <slot />\n </sprawlify.p>\n</template>\n",
|
|
2035
|
+
type: "registry:ui",
|
|
2036
|
+
path: "empty/empty-description.vue"
|
|
2037
|
+
},
|
|
2038
|
+
{
|
|
2039
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface EmptyHeaderProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<EmptyHeaderProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\"gap-2 flex max-w-sm flex-col items-center\", attrs.class as string),\n);\n<\/script>\n\n<template>\n <sprawlify.div data-slot=\"empty-header\" :class=\"className\" v-bind=\"rest\" :as-child=\"asChild\">\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2040
|
+
type: "registry:ui",
|
|
2041
|
+
path: "empty/empty-header.vue"
|
|
2042
|
+
},
|
|
2043
|
+
{
|
|
2044
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface EmptyMediaProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n variant?: VariantProps<typeof emptyMediaVariants>[\"variant\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { variant = \"default\", ...rest } = defineProps<EmptyMediaProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(emptyMediaVariants({ variant }), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-slot=\"empty-icon\"\n :data-variant=\"variant\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2045
|
+
type: "registry:ui",
|
|
2046
|
+
path: "empty/empty-media.vue"
|
|
2047
|
+
},
|
|
2048
|
+
{
|
|
2049
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface EmptyTitleProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<EmptyTitleProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"text-sm font-medium tracking-tight\", attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div data-slot=\"empty-title\" :class=\"className\" v-bind=\"rest\" :as-child=\"asChild\">\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2050
|
+
type: "registry:ui",
|
|
2051
|
+
path: "empty/empty-title.vue"
|
|
2052
|
+
},
|
|
2053
|
+
{
|
|
2054
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface EmptyProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<EmptyProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-4 rounded-xl border-dashed p-6 flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"empty\"\n data-part=\"root\"\n data-slot=\"empty\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2055
|
+
type: "registry:ui",
|
|
2056
|
+
path: "empty/empty.vue"
|
|
2057
|
+
},
|
|
2058
|
+
{
|
|
2059
|
+
content: "export { default as Empty } from \"./empty.vue\";\nexport { default as EmptyHeader } from \"./empty-header.vue\";\nexport { default as EmptyMedia } from \"./empty-media.vue\";\nexport { default as EmptyTitle } from \"./empty-title.vue\";\nexport { default as EmptyDescription } from \"./empty-description.vue\";\nexport { default as EmptyContent } from \"./empty-content.vue\";\n",
|
|
2060
|
+
type: "registry:ui",
|
|
2061
|
+
path: "empty/index.ts"
|
|
2062
|
+
}
|
|
2063
|
+
]
|
|
2064
|
+
},
|
|
2065
|
+
{
|
|
2066
|
+
name: "field",
|
|
2067
|
+
dependencies: [
|
|
2068
|
+
"@sprawlify/vue",
|
|
2069
|
+
"vue",
|
|
2070
|
+
"@/lib/utils",
|
|
2071
|
+
"@/components/ui/label",
|
|
2072
|
+
"@/components/ui/separator",
|
|
2073
|
+
"class-variance-authority"
|
|
2074
|
+
],
|
|
2075
|
+
files: [
|
|
2076
|
+
{
|
|
2077
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldContentProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<FieldContentProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\"gap-0.5 group/field-content flex flex-1 flex-col leading-snug\", attrs.class as string),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"content\"\n data-slot=\"field-content\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2078
|
+
type: "registry:ui",
|
|
2079
|
+
path: "field/field-content.vue"
|
|
2080
|
+
},
|
|
2081
|
+
{
|
|
2082
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldDescriptionProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<FieldDescriptionProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-data-horizontal/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.p\n data-scope=\"field\"\n data-part=\"description\"\n data-slot=\"field-description\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.p>\n</template>\n",
|
|
2083
|
+
type: "registry:ui",
|
|
2084
|
+
path: "field/field-description.vue"
|
|
2085
|
+
},
|
|
2086
|
+
{
|
|
2087
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldErrorProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n errors?: Array<{ message?: string } | undefined>;\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { role = \"alert\", errors, ...rest } = defineProps<FieldErrorProps>();\nconst attrs = useAttrs();\nconst slots = useSlots();\n\nconst className = computed(() => cn(\"text-destructive text-sm font-normal\", attrs.class as string));\n\nconst content = computed(() => {\n if (slots.default) {\n return \"slot\";\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];\n\n if (uniqueErrors?.length === 1) {\n return uniqueErrors[0]?.message;\n }\n\n return uniqueErrors.filter((error) => error?.message);\n});\n\nconst hasContent = computed(() => {\n return slots.default || content.value;\n});\n<\/script>\n\n<template>\n <sprawlify.div\n v-if=\"hasContent\"\n :role=\"role\"\n data-scope=\"field\"\n data-part=\"error\"\n data-slot=\"field-error\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <slot v-if=\"slots.default\" />\n <template v-else-if=\"typeof content === 'string'\">\n {{ content }}\n </template>\n <ul v-else-if=\"Array.isArray(content)\" class=\"ml-4 flex list-disc flex-col gap-1\">\n <li v-for=\"(error, index) in content\" :key=\"index\">\n {{ error?.message }}\n </li>\n </ul>\n </sprawlify.div>\n</template>\n",
|
|
2088
|
+
type: "registry:ui",
|
|
2089
|
+
path: "field/field-error.vue"
|
|
2090
|
+
},
|
|
2091
|
+
{
|
|
2092
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldGroupProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<FieldGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"group\"\n data-slot=\"field-group\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2093
|
+
type: "registry:ui",
|
|
2094
|
+
path: "field/field-group.vue"
|
|
2095
|
+
},
|
|
2096
|
+
{
|
|
2097
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldLabelProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<FieldLabelProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <Label\n data-scope=\"field\"\n data-part=\"label\"\n data-slot=\"field-label\"\n v-bind=\"rest\"\n :class=\"className\"\n :as-child=\"asChild\"\n >\n <slot />\n </Label>\n</template>\n",
|
|
2098
|
+
type: "registry:ui",
|
|
2099
|
+
path: "field/field-label.vue"
|
|
2100
|
+
},
|
|
2101
|
+
{
|
|
2102
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldLegendProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n variant?: \"legend\" | \"label\";\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, variant = \"legend\", ...rest } = defineProps<FieldLegendProps>();\n\nconst className = computed(() =>\n cn(\n \"mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n rest.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.legend\n data-scope=\"field\"\n data-part=\"legend\"\n data-slot=\"field-legend\"\n :data-variant=\"variant\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.legend>\n</template>\n",
|
|
2103
|
+
type: "registry:ui",
|
|
2104
|
+
path: "field/field-legend.vue"
|
|
2105
|
+
},
|
|
2106
|
+
{
|
|
2107
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldSeparatorProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs, useSlots } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nconst { ...rest } = defineProps<FieldSeparatorProps>();\n\nconst attrs = useAttrs();\nconst slots = useSlots();\n\nconst className = computed(() =>\n cn(\n \"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\",\n attrs.class as string,\n ),\n);\n\nconst hasContent = computed(() => !!slots.default);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"separator\"\n data-slot=\"field-separator\"\n :data-content=\"hasContent\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <Separator class=\"absolute inset-0 top-1/2\" />\n <span\n v-if=\"hasContent\"\n class=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-scope=\"field\"\n data-part=\"separator-content\"\n data-slot=\"field-separator-content\"\n >\n <slot />\n </span>\n </sprawlify.div>\n</template>\n",
|
|
2108
|
+
type: "registry:ui",
|
|
2109
|
+
path: "field/field-separator.vue"
|
|
2110
|
+
},
|
|
2111
|
+
{
|
|
2112
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldSetProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<FieldSetProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.fieldset\n data-scope=\"field\"\n data-part=\"set\"\n data-slot=\"field-set\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.fieldset>\n</template>\n",
|
|
2113
|
+
type: "registry:ui",
|
|
2114
|
+
path: "field/field-set.vue"
|
|
2115
|
+
},
|
|
2116
|
+
{
|
|
2117
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface FieldTitleProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<FieldTitleProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"field\"\n data-part=\"title\"\n data-slot=\"field-title\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2118
|
+
type: "registry:ui",
|
|
2119
|
+
path: "field/field-title.vue"
|
|
2120
|
+
},
|
|
2121
|
+
{
|
|
2122
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const fieldVariants = cva(\n \"data-[invalid=true]:text-destructive gap-2 group/field flex w-full\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nexport interface FieldProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n orientation?: VariantProps<typeof fieldVariants>[\"orientation\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, orientation = \"vertical\", role = \"group\", ...rest } = defineProps<FieldProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(fieldVariants({ orientation }), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n :role=\"role\"\n data-scope=\"field\"\n data-part=\"root\"\n data-slot=\"field\"\n :data-orientation=\"orientation\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2123
|
+
type: "registry:ui",
|
|
2124
|
+
path: "field/field.vue"
|
|
2125
|
+
},
|
|
2126
|
+
{
|
|
2127
|
+
content: "export { default as Field } from \"./field.vue\";\nexport { default as FieldSet } from \"./field-set.vue\";\nexport { default as FieldLegend } from \"./field-legend.vue\";\nexport { default as FieldGroup } from \"./field-group.vue\";\nexport { default as FieldContent } from \"./field-content.vue\";\nexport { default as FieldLabel } from \"./field-label.vue\";\nexport { default as FieldTitle } from \"./field-title.vue\";\nexport { default as FieldDescription } from \"./field-description.vue\";\nexport { default as FieldSeparator } from \"./field-separator.vue\";\nexport { default as FieldError } from \"./field-error.vue\";\n",
|
|
2128
|
+
type: "registry:ui",
|
|
2129
|
+
path: "field/index.ts"
|
|
2130
|
+
}
|
|
2131
|
+
]
|
|
2132
|
+
},
|
|
2133
|
+
{
|
|
2134
|
+
name: "input",
|
|
2135
|
+
dependencies: [
|
|
2136
|
+
"@sprawlify/vue",
|
|
2137
|
+
"vue",
|
|
2138
|
+
"@/lib/utils"
|
|
2139
|
+
],
|
|
2140
|
+
files: [{
|
|
2141
|
+
content: "export { default as Input } from \"./input.vue\";\n",
|
|
2142
|
+
type: "registry:ui",
|
|
2143
|
+
path: "input/index.ts"
|
|
2144
|
+
}, {
|
|
2145
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { InputHTMLAttributes } from \"vue\";\n\nexport interface InputProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n InputHTMLAttributes {\n type?: string;\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, type, ...rest } = defineProps<InputProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.input\n :type=\"type\"\n data-scope=\"input\"\n data-part=\"root\"\n data-slot=\"input\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n />\n</template>\n",
|
|
2146
|
+
type: "registry:ui",
|
|
2147
|
+
path: "input/input.vue"
|
|
2148
|
+
}]
|
|
2149
|
+
},
|
|
2150
|
+
{
|
|
2151
|
+
name: "input-group",
|
|
2152
|
+
dependencies: [
|
|
2153
|
+
"@sprawlify/vue",
|
|
2154
|
+
"vue",
|
|
2155
|
+
"class-variance-authority",
|
|
2156
|
+
"@/lib/utils",
|
|
2157
|
+
"@/components/ui/button",
|
|
2158
|
+
"@/components/ui/input",
|
|
2159
|
+
"@/components/ui/textarea"
|
|
2160
|
+
],
|
|
2161
|
+
files: [
|
|
2162
|
+
{
|
|
2163
|
+
content: "export { default as InputGroup } from \"./input-group.vue\";\nexport { default as InputGroupAddon } from \"./input-group-addon.vue\";\nexport { default as InputGroupButton } from \"./input-group-button.vue\";\nexport { default as InputGroupText } from \"./input-group-text.vue\";\nexport { default as InputGroupInput } from \"./input-group-input.vue\";\nexport { default as InputGroupTextarea } from \"./input-group-textarea.vue\";\n",
|
|
2164
|
+
type: "registry:ui",
|
|
2165
|
+
path: "input-group/index.ts"
|
|
2166
|
+
},
|
|
2167
|
+
{
|
|
2168
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const inputGroupAddonVariants = cva(\n \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n \"inline-start\": \"pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem] order-first\",\n \"inline-end\": \"pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem] order-last\",\n \"block-start\":\n \"px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start\",\n \"block-end\":\n \"px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nexport interface InputGroupAddonProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n align?: VariantProps<typeof inputGroupAddonVariants>[\"align\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { align = \"inline-start\", role = \"group\", ...rest } = defineProps<InputGroupAddonProps>();\n\nconst className = computed(() => cn(inputGroupAddonVariants({ align }), rest.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n :role=\"role\"\n data-scope=\"input-group\"\n data-part=\"addon\"\n data-slot=\"input-group-addon\"\n :data-align=\"align\"\n v-bind=\"{ ...rest, class: className }\"\n :as-child=\"asChild\"\n @click=\"\n (e) => {\n if ((e.target as HTMLElement).closest('button')) {\n return;\n }\n (e.currentTarget as HTMLElement).parentElement?.querySelector('input')?.focus();\n }\n \"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2169
|
+
type: "registry:ui",
|
|
2170
|
+
path: "input-group/input-group-addon.vue"
|
|
2171
|
+
},
|
|
2172
|
+
{
|
|
2173
|
+
content: "<script lang=\"ts\">\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type { ButtonProps } from \"@/components/ui/button\";\n\nexport const inputGroupButtonVariants = cva(\"gap-2 text-sm shadow-none flex items-center\", {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n});\n\nexport interface InputGroupButtonProps extends Omit<ButtonProps, \"size\"> {\n size?: VariantProps<typeof inputGroupButtonVariants>[\"size\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\nconst {\n size = \"xs\",\n type = \"button\",\n variant = \"ghost\",\n ...rest\n} = defineProps<InputGroupButtonProps>();\n\nconst className = computed(() => cn(inputGroupButtonVariants({ size }), rest.class as string));\n<\/script>\n\n<template>\n <Button\n data-scope=\"input-group\"\n data-part=\"button\"\n :type=\"type\"\n :data-size=\"size\"\n :variant=\"variant\"\n v-bind=\"{ ...rest, class: className }\"\n :as-child=\"asChild\"\n >\n <slot />\n </Button>\n</template>\n",
|
|
2174
|
+
type: "registry:ui",
|
|
2175
|
+
path: "input-group/input-group-button.vue"
|
|
2176
|
+
},
|
|
2177
|
+
{
|
|
2178
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { InputHTMLAttributes } from \"vue\";\n\nexport interface InputGroupInputProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n InputHTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Input } from \"@/components/ui/input\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, type, ...rest } = defineProps<InputGroupInputProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <Input\n data-scope=\"input-group\"\n data-part=\"control\"\n data-slot=\"input-group-control\"\n :type=\"type\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n />\n</template>\n",
|
|
2179
|
+
type: "registry:ui",
|
|
2180
|
+
path: "input-group/input-group-input.vue"
|
|
2181
|
+
},
|
|
2182
|
+
{
|
|
2183
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface InputGroupTextProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<InputGroupTextProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.span\n data-scope=\"input-group\"\n data-part=\"text\"\n data-slot=\"input-group-text\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.span>\n</template>\n",
|
|
2184
|
+
type: "registry:ui",
|
|
2185
|
+
path: "input-group/input-group-text.vue"
|
|
2186
|
+
},
|
|
2187
|
+
{
|
|
2188
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { TextareaHTMLAttributes } from \"vue\";\n\nexport interface InputGroupTextareaProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n TextareaHTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\n\nconst props = defineProps<InputGroupTextareaProps>();\n\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1 resize-none\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <Textarea\n data-scope=\"input-group\"\n data-part=\"control\"\n data-slot=\"input-group-control\"\n v-bind=\"{ ...attrs, class: className }\"\n :as-child=\"asChild\"\n />\n</template>\n",
|
|
2189
|
+
type: "registry:ui",
|
|
2190
|
+
path: "input-group/input-group-textarea.vue"
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface InputGroupProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, role = \"group\", ...rest } = defineProps<InputGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-lg border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"input-group\"\n data-part=\"root\"\n data-slot=\"input-group\"\n :role=\"role\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2194
|
+
type: "registry:ui",
|
|
2195
|
+
path: "input-group/input-group.vue"
|
|
2196
|
+
}
|
|
2197
|
+
]
|
|
2198
|
+
},
|
|
2199
|
+
{
|
|
2200
|
+
name: "item",
|
|
2201
|
+
dependencies: [
|
|
2202
|
+
"@sprawlify/vue",
|
|
2203
|
+
"vue",
|
|
2204
|
+
"@/lib/utils",
|
|
2205
|
+
"class-variance-authority",
|
|
2206
|
+
"@/components/ui/separator"
|
|
2207
|
+
],
|
|
2208
|
+
files: [
|
|
2209
|
+
{
|
|
2210
|
+
content: "export { default as Item } from \"./item.vue\";\nexport { default as ItemGroup } from \"./item-group.vue\";\nexport { default as ItemSeparator } from \"./item-separator.vue\";\nexport { default as ItemMedia } from \"./item-media.vue\";\nexport { default as ItemContent } from \"./item-content.vue\";\nexport { default as ItemTitle } from \"./item-title.vue\";\nexport { default as ItemDescription } from \"./item-description.vue\";\nexport { default as ItemActions } from \"./item-actions.vue\";\nexport { default as ItemHeader } from \"./item-header.vue\";\nexport { default as ItemFooter } from \"./item-footer.vue\";\n",
|
|
2211
|
+
type: "registry:ui",
|
|
2212
|
+
path: "item/index.ts"
|
|
2213
|
+
},
|
|
2214
|
+
{
|
|
2215
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface ItemActionsProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<ItemActionsProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"gap-2 flex items-center\", attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"actions\"\n data-slot=\"item-actions\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2216
|
+
type: "registry:ui",
|
|
2217
|
+
path: "item/item-actions.vue"
|
|
2218
|
+
},
|
|
2219
|
+
{
|
|
2220
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface ItemContentProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<ItemContentProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-1 group-data-[size=xs]/item:gap-0 flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"content\"\n data-slot=\"item-content\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2221
|
+
type: "registry:ui",
|
|
2222
|
+
path: "item/item-content.vue"
|
|
2223
|
+
},
|
|
2224
|
+
{
|
|
2225
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface ItemDescriptionProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<ItemDescriptionProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"text-muted-foreground text-left text-sm leading-normal group-data-[size=xs]/item:text-xs [&>a:hover]:text-primary line-clamp-2 font-normal [&>a]:underline [&>a]:underline-offset-4\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.p\n data-scope=\"item\"\n data-part=\"description\"\n data-slot=\"item-description\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.p>\n</template>\n",
|
|
2226
|
+
type: "registry:ui",
|
|
2227
|
+
path: "item/item-description.vue"
|
|
2228
|
+
},
|
|
2229
|
+
{
|
|
2230
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface ItemFooterProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<ItemFooterProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\"gap-2 flex basis-full items-center justify-between\", attrs.class as string),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"footer\"\n data-slot=\"item-footer\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2231
|
+
type: "registry:ui",
|
|
2232
|
+
path: "item/item-footer.vue"
|
|
2233
|
+
},
|
|
2234
|
+
{
|
|
2235
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface ItemGroupProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, role = \"list\", ...rest } = defineProps<ItemGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2 group/item-group flex w-full flex-col\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n :role=\"role\"\n data-scope=\"item\"\n data-part=\"group\"\n data-slot=\"item-group\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2236
|
+
type: "registry:ui",
|
|
2237
|
+
path: "item/item-group.vue"
|
|
2238
|
+
},
|
|
2239
|
+
{
|
|
2240
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface ItemHeaderProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<ItemHeaderProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\"gap-2 flex basis-full items-center justify-between\", attrs.class as string),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"header\"\n data-slot=\"item-header\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2241
|
+
type: "registry:ui",
|
|
2242
|
+
path: "item/item-header.vue"
|
|
2243
|
+
},
|
|
2244
|
+
{
|
|
2245
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const itemMediaVariants = cva(\n \"gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start flex shrink-0 items-center justify-center [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"[&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ItemMediaProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n variant?: VariantProps<typeof itemMediaVariants>[\"variant\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, variant = \"default\", ...rest } = defineProps<ItemMediaProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(itemMediaVariants({ variant }), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"media\"\n data-slot=\"item-media\"\n :data-variant=\"variant\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2246
|
+
type: "registry:ui",
|
|
2247
|
+
path: "item/item-media.vue"
|
|
2248
|
+
},
|
|
2249
|
+
{
|
|
2250
|
+
content: "<script lang=\"ts\">\nimport type { SeparatorProps } from \"@/components/ui/separator\";\n\nexport interface ItemSeparatorProps extends SeparatorProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, orientation = \"horizontal\", ...rest } = defineProps<ItemSeparatorProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"my-2\", attrs.class as string));\n<\/script>\n\n<template>\n <Separator\n data-scope=\"item\"\n data-part=\"separator\"\n data-slot=\"item-separator\"\n :orientation=\"orientation\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </Separator>\n</template>\n",
|
|
2251
|
+
type: "registry:ui",
|
|
2252
|
+
path: "item/item-separator.vue"
|
|
2253
|
+
},
|
|
2254
|
+
{
|
|
2255
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface ItemTitleProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<ItemTitleProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-2 text-sm leading-snug font-medium underline-offset-4 line-clamp-1 flex w-fit items-center\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"title\"\n data-slot=\"item-title\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2256
|
+
type: "registry:ui",
|
|
2257
|
+
path: "item/item-title.vue"
|
|
2258
|
+
},
|
|
2259
|
+
{
|
|
2260
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const itemVariants = cva(\n \"[a]:hover:bg-muted rounded-lg border text-sm w-full group/item focus-visible:border-ring focus-visible:ring-ring/50 flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:ring-[3px] [a]:transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50 border-transparent\",\n },\n size: {\n default: \"gap-2.5 px-3 py-2.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ItemProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {\n variant?: VariantProps<typeof itemVariants>[\"variant\"];\n size?: VariantProps<typeof itemVariants>[\"size\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, variant = \"default\", size = \"default\", ...rest } = defineProps<ItemProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(itemVariants({ variant, size }), attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.div\n data-scope=\"item\"\n data-part=\"root\"\n data-slot=\"item\"\n :data-variant=\"variant\"\n :data-size=\"size\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.div>\n</template>\n",
|
|
2261
|
+
type: "registry:ui",
|
|
2262
|
+
path: "item/item.vue"
|
|
2263
|
+
}
|
|
2264
|
+
]
|
|
2265
|
+
},
|
|
2266
|
+
{
|
|
2267
|
+
name: "kbd",
|
|
2268
|
+
dependencies: [
|
|
2269
|
+
"@sprawlify/vue",
|
|
2270
|
+
"vue",
|
|
2271
|
+
"@/lib/utils"
|
|
2272
|
+
],
|
|
2273
|
+
files: [
|
|
2274
|
+
{
|
|
2275
|
+
content: "export { default as Kbd } from \"./kbd.vue\";\nexport { default as KbdGroup } from \"./kbd-group.vue\";\n",
|
|
2276
|
+
type: "registry:ui",
|
|
2277
|
+
path: "kbd/index.ts"
|
|
2278
|
+
},
|
|
2279
|
+
{
|
|
2280
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface KbdGroupProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<KbdGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"gap-1 inline-flex items-center\", attrs.class as string));\n<\/script>\n\n<template>\n <sprawlify.kbd\n data-scope=\"kbd\"\n data-part=\"group\"\n data-slot=\"kbd-group\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.kbd>\n</template>\n",
|
|
2281
|
+
type: "registry:ui",
|
|
2282
|
+
path: "kbd/kbd-group.vue"
|
|
2283
|
+
},
|
|
2284
|
+
{
|
|
2285
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface KbdProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<KbdProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 pointer-events-none inline-flex items-center justify-center select-none\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.kbd\n data-scope=\"kbd\"\n data-part=\"root\"\n data-slot=\"kbd\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.kbd>\n</template>\n",
|
|
2286
|
+
type: "registry:ui",
|
|
2287
|
+
path: "kbd/kbd.vue"
|
|
2288
|
+
}
|
|
2289
|
+
]
|
|
2290
|
+
},
|
|
2291
|
+
{
|
|
2292
|
+
name: "label",
|
|
2293
|
+
dependencies: [
|
|
2294
|
+
"@sprawlify/vue",
|
|
2295
|
+
"vue",
|
|
2296
|
+
"@/lib/utils"
|
|
2297
|
+
],
|
|
2298
|
+
files: [{
|
|
2299
|
+
content: "export { default as Label } from \"./label.vue\";\n",
|
|
2300
|
+
type: "registry:ui",
|
|
2301
|
+
path: "label/index.ts"
|
|
2302
|
+
}, {
|
|
2303
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { HTMLAttributes } from \"vue\";\n\nexport interface LabelProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n HTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { asChild, ...rest } = defineProps<LabelProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.label\n data-scope=\"label\"\n data-part=\"root\"\n data-slot=\"label\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </sprawlify.label>\n</template>\n",
|
|
2304
|
+
type: "registry:ui",
|
|
2305
|
+
path: "label/label.vue"
|
|
2306
|
+
}]
|
|
2307
|
+
},
|
|
2308
|
+
{
|
|
2309
|
+
name: "native-select",
|
|
2310
|
+
dependencies: [
|
|
2311
|
+
"vue",
|
|
2312
|
+
"@/lib/utils",
|
|
2313
|
+
"lucide-vue-next"
|
|
2314
|
+
],
|
|
2315
|
+
files: [
|
|
2316
|
+
{
|
|
2317
|
+
content: "export { default as NativeSelect } from \"./native-select.vue\";\nexport { default as NativeSelectOption } from \"./native-select-option.vue\";\nexport { default as NativeSelectOptGroup } from \"./native-select-optgroup.vue\";\n",
|
|
2318
|
+
type: "registry:ui",
|
|
2319
|
+
path: "native-select/index.ts"
|
|
2320
|
+
},
|
|
2321
|
+
{
|
|
2322
|
+
content: "<script lang=\"ts\">\nimport type { OptgroupHTMLAttributes } from \"vue\";\n\nexport interface NativeSelectOptGroupProps extends /* @vue-ignore */ OptgroupHTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { ...rest } = defineProps<NativeSelectOptGroupProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <optgroup\n data-scope=\"native-select\"\n data-part=\"optgroup\"\n data-slot=\"native-select-optgroup\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <slot />\n </optgroup>\n</template>\n",
|
|
2323
|
+
type: "registry:ui",
|
|
2324
|
+
path: "native-select/native-select-optgroup.vue"
|
|
2325
|
+
},
|
|
2326
|
+
{
|
|
2327
|
+
content: "<script lang=\"ts\">\nimport type { OptionHTMLAttributes } from \"vue\";\n\nexport interface NativeSelectOptionProps extends /* @vue-ignore */ OptionHTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { ...rest } = defineProps<NativeSelectOptionProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(attrs.class as string));\n<\/script>\n\n<template>\n <option\n data-scope=\"native-select\"\n data-part=\"option\"\n data-slot=\"native-select-option\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <slot />\n </option>\n</template>\n",
|
|
2328
|
+
type: "registry:ui",
|
|
2329
|
+
path: "native-select/native-select-option.vue"
|
|
2330
|
+
},
|
|
2331
|
+
{
|
|
2332
|
+
content: "<script lang=\"ts\">\nimport type { SelectHTMLAttributes } from \"vue\";\nimport { ChevronDownIcon } from \"lucide-vue-next\";\n\nexport interface NativeSelectProps extends /* @vue-ignore */ Omit<SelectHTMLAttributes, \"size\"> {\n size?: \"sm\" | \"default\";\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst { size = \"default\", ...rest } = defineProps<NativeSelectProps>();\nconst attrs = useAttrs();\n\nconst wrapperClassName = computed(() =>\n cn(\"group/native-select relative w-fit has-[select:disabled]:opacity-50\", attrs.class as string),\n);\n\nconst selectClassName = computed(() =>\n cn(\n \"border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-8 w-full min-w-0 appearance-none rounded-lg border bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 outline-none disabled:pointer-events-none disabled:cursor-not-allowed\",\n ),\n);\n<\/script>\n\n<template>\n <div\n :class=\"wrapperClassName\"\n data-scope=\"native-select\"\n data-part=\"root\"\n data-slot=\"native-select-root\"\n :data-size=\"size\"\n >\n <select data-slot=\"native-select\" :data-size=\"size\" :class=\"selectClassName\" v-bind=\"rest\">\n <slot />\n </select>\n <ChevronDownIcon\n class=\"text-muted-foreground top-1/2 right-2.5 size-4 -translate-y-1/2 pointer-events-none absolute select-none\"\n aria-hidden=\"true\"\n data-slot=\"native-select-icon\"\n />\n </div>\n</template>\n",
|
|
2333
|
+
type: "registry:ui",
|
|
2334
|
+
path: "native-select/native-select.vue"
|
|
2335
|
+
}
|
|
2336
|
+
]
|
|
2337
|
+
},
|
|
2338
|
+
{
|
|
2339
|
+
name: "scroll-area",
|
|
2340
|
+
dependencies: [
|
|
2341
|
+
"@sprawlify/vue",
|
|
2342
|
+
"vue",
|
|
2343
|
+
"@/lib/utils"
|
|
2344
|
+
],
|
|
2345
|
+
files: [
|
|
2346
|
+
{
|
|
2347
|
+
content: "export { default as ScrollArea } from \"./scroll-area.vue\";\nexport { default as ScrollBar } from \"./scroll-bar.vue\";\n",
|
|
2348
|
+
type: "registry:ui",
|
|
2349
|
+
path: "scroll-area/index.ts"
|
|
2350
|
+
},
|
|
2351
|
+
{
|
|
2352
|
+
content: "<script lang=\"ts\">\nimport type { ScrollAreaRootProps } from \"@sprawlify/vue/scroll-area\";\n\nexport interface ScrollAreaProps extends /* @vue-ignore */ ScrollAreaRootProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"@sprawlify/vue/scroll-area\";\nimport { cn } from \"@/lib/utils\";\nimport ScrollBar from \"./scroll-bar.vue\";\n\nconst { ...rest } = defineProps<ScrollAreaProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"relative\", attrs.class as string));\n<\/script>\n\n<template>\n <ScrollAreaPrimitive.Root data-slot=\"scroll-area\" :class=\"className\" v-bind=\"rest\">\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n class=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 scrollbar-none\"\n >\n <slot />\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n</template>\n",
|
|
2353
|
+
type: "registry:ui",
|
|
2354
|
+
path: "scroll-area/scroll-area.vue"
|
|
2355
|
+
},
|
|
2356
|
+
{
|
|
2357
|
+
content: "<script lang=\"ts\">\nimport type { ScrollAreaScrollbarProps } from \"@sprawlify/vue/scroll-area\";\n\nexport interface ScrollBarProps extends /* @vue-ignore */ ScrollAreaScrollbarProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { ScrollArea as ScrollAreaPrimitive } from \"@sprawlify/vue/scroll-area\";\nimport { cn } from \"@/lib/utils\";\n\nconst { orientation = \"vertical\", ...rest } = defineProps<ScrollBarProps>();\n\nconst className = cn(\n \"data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-l data-[orientation=vertical]:border-l-transparent flex touch-none p-px transition-colors select-none\",\n rest.class as string,\n);\n<\/script>\n\n<template>\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n :data-orientation=\"orientation || 'vertical'\"\n :orientation=\"orientation\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n class=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n</template>\n",
|
|
2358
|
+
type: "registry:ui",
|
|
2359
|
+
path: "scroll-area/scroll-bar.vue"
|
|
2360
|
+
}
|
|
2361
|
+
]
|
|
2362
|
+
},
|
|
2363
|
+
{
|
|
2364
|
+
name: "separator",
|
|
2365
|
+
dependencies: [
|
|
2366
|
+
"@sprawlify/vue",
|
|
2367
|
+
"vue",
|
|
2368
|
+
"@/lib/utils"
|
|
2369
|
+
],
|
|
2370
|
+
files: [{
|
|
2371
|
+
content: "export { default as Separator, type SeparatorProps } from \"./separator.vue\";\n",
|
|
2372
|
+
type: "registry:ui",
|
|
2373
|
+
path: "separator/index.ts"
|
|
2374
|
+
}, {
|
|
2375
|
+
content: "<script lang=\"ts\">\nimport type { SeparatorRootProps } from \"@sprawlify/vue/separator\";\n\nexport interface SeparatorProps extends /* @vue-ignore */ SeparatorRootProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Separator as SeparatorPrimitive } from \"@sprawlify/vue/separator\";\nimport { cn } from \"@/lib/utils\";\n\nconst {\n orientation = \"horizontal\",\n decorative = true,\n asChild,\n ...rest\n} = defineProps<SeparatorProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n :decorative=\"decorative\"\n :orientation=\"orientation\"\n :class=\"className\"\n v-bind=\"rest\"\n :as-child=\"asChild\"\n >\n <slot />\n </SeparatorPrimitive.Root>\n</template>\n",
|
|
2376
|
+
type: "registry:ui",
|
|
2377
|
+
path: "separator/separator.vue"
|
|
2378
|
+
}]
|
|
2379
|
+
},
|
|
2380
|
+
{
|
|
2381
|
+
name: "tabs",
|
|
2382
|
+
dependencies: [
|
|
2383
|
+
"@sprawlify/vue",
|
|
2384
|
+
"vue",
|
|
2385
|
+
"@/lib/utils",
|
|
2386
|
+
"class-variance-authority"
|
|
2387
|
+
],
|
|
2388
|
+
files: [
|
|
2389
|
+
{
|
|
2390
|
+
content: "export { default as Tabs } from \"./tabs.vue\";\nexport { default as TabsList } from \"./tabs-list.vue\";\nexport { default as TabsTrigger } from \"./tabs-trigger.vue\";\nexport { default as TabsContent } from \"./tabs-content.vue\";\n",
|
|
2391
|
+
type: "registry:ui",
|
|
2392
|
+
path: "tabs/index.ts"
|
|
2393
|
+
},
|
|
2394
|
+
{
|
|
2395
|
+
content: "<script lang=\"ts\">\nimport type { TabContentProps } from \"@sprawlify/vue/tabs\";\n\nexport interface TabsContentProps extends /* @vue-ignore */ TabContentProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Tabs as TabsPrimitive } from \"@sprawlify/vue/tabs\";\nimport { cn } from \"@/lib/utils\";\n\nconst { value, ...rest } = defineProps<TabsContentProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(\"text-sm flex-1 outline-none\", attrs.class as string));\n<\/script>\n\n<template>\n <TabsPrimitive.Content data-slot=\"tabs-content\" :class=\"className\" :value=\"value\" v-bind=\"rest\">\n <slot />\n </TabsPrimitive.Content>\n</template>\n",
|
|
2396
|
+
type: "registry:ui",
|
|
2397
|
+
path: "tabs/tabs-content.vue"
|
|
2398
|
+
},
|
|
2399
|
+
{
|
|
2400
|
+
content: "<script lang=\"ts\">\nimport type { TabListProps } from \"@sprawlify/vue/tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const tabsListVariants = cva(\n \"rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-8 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface TabsListProps extends /* @vue-ignore */ TabListProps {\n variant?: VariantProps<typeof tabsListVariants>[\"variant\"];\n}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Tabs as TabsPrimitive } from \"@sprawlify/vue/tabs\";\nimport { cn } from \"@/lib/utils\";\n\nconst { variant = \"default\", ...rest } = defineProps<TabsListProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() => cn(tabsListVariants({ variant }), attrs.class as string));\n<\/script>\n\n<template>\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n :data-variant=\"variant\"\n :class=\"className\"\n v-bind=\"rest\"\n >\n <slot />\n </TabsPrimitive.List>\n</template>\n",
|
|
2401
|
+
type: "registry:ui",
|
|
2402
|
+
path: "tabs/tabs-list.vue"
|
|
2403
|
+
},
|
|
2404
|
+
{
|
|
2405
|
+
content: "<script lang=\"ts\">\nimport type { TabTriggerProps } from \"@sprawlify/vue/tabs\";\n\nexport interface TabsTriggerProps extends /* @vue-ignore */ TabTriggerProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Tabs as TabsPrimitive } from \"@sprawlify/vue/tabs\";\nimport { cn } from \"@/lib/utils\";\n\nconst { value, ...rest } = defineProps<TabsTriggerProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium group-data-[variant=default]/tabs-list:data-selected:shadow-sm group-data-[variant=line]/tabs-list:data-selected:shadow-none [&_svg:not([class*=size-])]:size-4 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-selected:bg-transparent dark:group-data-[variant=line]/tabs-list:data-selected:border-transparent dark:group-data-[variant=line]/tabs-list:data-selected:bg-transparent\",\n \"data-selected:bg-background dark:data-selected:text-foreground dark:data-selected:border-input dark:data-selected:bg-input/30 data-selected:text-foreground\",\n \"after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-selected:after:opacity-100\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <TabsPrimitive.Trigger data-slot=\"tabs-trigger\" :value=\"value\" :class=\"className\" v-bind=\"rest\">\n <slot />\n </TabsPrimitive.Trigger>\n</template>\n",
|
|
2406
|
+
type: "registry:ui",
|
|
2407
|
+
path: "tabs/tabs-trigger.vue"
|
|
2408
|
+
},
|
|
2409
|
+
{
|
|
2410
|
+
content: "<script lang=\"ts\">\nimport type { TabsRootProps } from \"@sprawlify/vue/tabs\";\n\nexport interface TabsProps extends /* @vue-ignore */ TabsRootProps {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { Tabs as TabsPrimitive } from \"@sprawlify/vue/tabs\";\nimport { cn } from \"@/lib/utils\";\n\nconst { orientation = \"horizontal\", ...rest } = defineProps<TabsProps>();\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\"gap-2 group/tabs flex data-[orientation=horizontal]:flex-col\", attrs.class as string),\n);\n<\/script>\n\n<template>\n <TabsPrimitive.Root data-slot=\"tabs\" :class=\"className\" v-bind=\"rest\">\n <slot />\n </TabsPrimitive.Root>\n</template>\n",
|
|
2411
|
+
type: "registry:ui",
|
|
2412
|
+
path: "tabs/tabs.vue"
|
|
2413
|
+
}
|
|
2414
|
+
]
|
|
2415
|
+
},
|
|
2416
|
+
{
|
|
2417
|
+
name: "textarea",
|
|
2418
|
+
dependencies: [
|
|
2419
|
+
"@sprawlify/vue",
|
|
2420
|
+
"vue",
|
|
2421
|
+
"@/lib/utils"
|
|
2422
|
+
],
|
|
2423
|
+
files: [{
|
|
2424
|
+
content: "export { default as Textarea } from \"./textarea.vue\";\n",
|
|
2425
|
+
type: "registry:ui",
|
|
2426
|
+
path: "textarea/index.ts"
|
|
2427
|
+
}, {
|
|
2428
|
+
content: "<script lang=\"ts\">\nimport type { PolymorphicProps } from \"@sprawlify/vue\";\nimport type { TextareaHTMLAttributes } from \"vue\";\n\nexport interface TextareaProps\n extends\n PolymorphicProps,\n /* @vue-ignore */\n TextareaHTMLAttributes {}\n<\/script>\n\n<script setup lang=\"ts\">\nimport { computed, useAttrs } from \"vue\";\nimport { sprawlify } from \"@sprawlify/vue\";\nimport { cn } from \"@/lib/utils\";\n\nconst props = defineProps<TextareaProps>();\n\nconst attrs = useAttrs();\n\nconst className = computed(() =>\n cn(\n \"border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors focus-visible:ring-3 aria-invalid:ring-3 md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n attrs.class as string,\n ),\n);\n<\/script>\n\n<template>\n <sprawlify.textarea\n data-scope=\"textarea\"\n data-part=\"root\"\n data-slot=\"textarea\"\n v-bind=\"{ ...attrs, class: className }\"\n :as-child=\"asChild\"\n />\n</template>\n",
|
|
2429
|
+
type: "registry:ui",
|
|
2430
|
+
path: "textarea/textarea.vue"
|
|
2431
|
+
}]
|
|
2432
|
+
},
|
|
2433
|
+
{
|
|
2434
|
+
name: "utils",
|
|
2435
|
+
dependencies: ["clsx", "tailwind-merge"],
|
|
2436
|
+
files: [{
|
|
2437
|
+
content: "import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n",
|
|
2438
|
+
type: "registry:utils",
|
|
2439
|
+
path: "utils.ts"
|
|
2440
|
+
}]
|
|
2441
|
+
}
|
|
2442
|
+
]
|
|
382
2443
|
}
|
|
383
2444
|
}
|
|
384
2445
|
}
|