Skip to content

Commit c9bd155

Browse files
committed
feat: implement StackBlitz utility for opening demos with proper dependencies and templates
1 parent 77a8f56 commit c9bd155

12 files changed

Lines changed: 413 additions & 42 deletions

File tree

apps/showcase/assets/menu/submenu/menu-tailwind.data.ts

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,41 @@ export const tailwindMenu = [
2828
name: 'ColorPicker',
2929
href: '/docs/tailwind/components/colorpicker'
3030
},
31+
{
32+
name: 'InputOtp',
33+
href: '/docs/tailwind/components/inputotp'
34+
},
3135
{
3236
name: 'InputText',
3337
href: '/docs/tailwind/components/inputtext'
3438
},
39+
{
40+
name: 'Label',
41+
href: '/docs/tailwind/components/label'
42+
},
3543
{
3644
name: 'RadioButton',
3745
href: '/docs/tailwind/components/radiobutton'
3846
},
47+
{
48+
name: 'Slider',
49+
href: '/docs/tailwind/components/slider'
50+
},
3951
{
4052
name: 'Switch',
4153
href: '/docs/tailwind/components/switch'
54+
},
55+
{
56+
name: 'Textarea',
57+
href: '/docs/tailwind/components/textarea'
58+
},
59+
{
60+
name: 'ToggleButton',
61+
href: '/docs/tailwind/components/togglebutton'
62+
},
63+
{
64+
name: 'ToggleButtonGroup',
65+
href: '/docs/tailwind/components/togglebuttongroup'
4266
}
4367
]
4468
},
@@ -48,10 +72,37 @@ export const tailwindMenu = [
4872
{
4973
name: 'Button',
5074
href: '/docs/tailwind/components/button'
75+
}
76+
]
77+
},
78+
{
79+
name: 'Data',
80+
children: [
81+
{
82+
name: 'Paginator',
83+
href: '/docs/tailwind/components/paginator'
84+
}
85+
]
86+
},
87+
{
88+
name: 'Panel',
89+
children: [
90+
{
91+
name: 'Accordion',
92+
href: '/docs/tailwind/components/accordion'
5193
},
5294
{
53-
name: 'SpeedDial',
54-
href: '/docs/tailwind/components/speeddial'
95+
name: 'Divider',
96+
href: '/docs/tailwind/components/divider'
97+
}
98+
]
99+
},
100+
{
101+
name: 'Overlay',
102+
children: [
103+
{
104+
name: 'Dialog',
105+
href: '/docs/tailwind/components/dialog'
55106
}
56107
]
57108
},
@@ -70,6 +121,10 @@ export const tailwindMenu = [
70121
{
71122
name: 'Avatar',
72123
href: '/docs/tailwind/components/avatar'
124+
},
125+
{
126+
name: 'Badge',
127+
href: '/docs/tailwind/components/badge'
73128
}
74129
]
75130
}

apps/showcase/public/r/accordion.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"name": "accordion",
44
"type": "registry:ui",
55
"dependencies": [
6-
"@primeicons/react"
6+
"@primeicons/react@^8.0.0-alpha.7"
77
],
88
"registryDependencies": [
99
"https://v11.primereact.org/public/r/utils.json"
@@ -12,7 +12,7 @@
1212
{
1313
"path": "components/ui/accordion.tsx",
1414
"type": "registry:ui",
15-
"content": "'use client';\nimport { cn } from '@/lib/utils';\nimport { ChevronDown, ChevronUp } from '@primeicons/react';\nimport { AccordionContentProps, AccordionPanelProps, AccordionRootProps, AccordionTriggerProps } from '@primereact/types/shared/accordion';\nimport { Accordion as PRAccordion } from 'primereact/accordion';\nimport * as React from 'react';\n\nfunction Accordion({ className, ...props }: AccordionRootProps) {\n return <PRAccordion.Root className={cn('', className)} motionProps={{ hideStrategy: 'none' }} {...props} />;\n}\n\nfunction AccordionPanel({ className, ...props }: AccordionPanelProps) {\n return <PRAccordion.Panel className={cn('flex flex-col border-b border-surface-200 dark:border-surface-700', className)} {...props} />;\n}\n\nfunction AccordionTrigger({ className, children, ...props }: AccordionTriggerProps) {\n return (\n <PRAccordion.Header>\n <PRAccordion.Trigger\n className={cn(\n `cursor-pointer disabled:pointer-events-none disabled:opacity-60 flex items-center justify-between p-4 font-semibold w-full\n bg-surface-0 dark:bg-surface-900\n text-surface-500 dark:text-surface-400 text-sm\n hover:text-surface-700 dark:hover:text-surface-0\n data-content-open:text-surface-700 dark:data-content-open:text-surface-0\n transition-colors duration-200\n focus-visible:outline-1 focus-visible:-outline-offset-1 focus-visible:outline-primary`,\n className\n )}\n {...props}\n >\n {children}\n <PRAccordion.Indicator match=\"open\">\n <ChevronUp />\n </PRAccordion.Indicator>\n\n <PRAccordion.Indicator match=\"closed\">\n <ChevronDown />\n </PRAccordion.Indicator>\n </PRAccordion.Trigger>\n </PRAccordion.Header>\n );\n}\n\nfunction AccordionContent({ className, children, ...props }: AccordionContentProps) {\n return (\n <PRAccordion.Content className={cn('bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 text-sm h-(--height) transition-[height] duration-200 ease-out overflow-hidden', className)} {...props}>\n <div className=\"px-4 pb-4\">{children}</div>\n </PRAccordion.Content>\n );\n}\n\nexport { Accordion, AccordionContent, AccordionPanel, AccordionTrigger };\n"
15+
"content": "'use client';\nimport { cn } from '@/lib/utils';\nimport { ChevronDown, ChevronUp } from '@primeicons/react';\nimport { AccordionContentProps, AccordionPanelProps, AccordionRootProps, AccordionTriggerProps } from '@primereact/types/shared/accordion';\nimport { Accordion as PRAccordion } from 'primereact/accordion';\nimport * as React from 'react';\n\nfunction Accordion({ className, ...props }: AccordionRootProps) {\n return <PRAccordion.Root className={cn('', className)} motionProps={{ hideStrategy: 'none' }} {...props} />;\n}\n\nfunction AccordionPanel({ className, ...props }: AccordionPanelProps) {\n return <PRAccordion.Panel className={cn('flex flex-col border-b border-surface-200 dark:border-surface-700', className)} {...props} />;\n}\n\nfunction AccordionTrigger({ className, children, ...props }: AccordionTriggerProps) {\n return (\n <PRAccordion.Header>\n <PRAccordion.Trigger\n className={cn(\n `cursor-pointer disabled:pointer-events-none disabled:opacity-60 flex items-center justify-between p-4 font-semibold w-full\n bg-surface-0 dark:bg-surface-900\n text-surface-500 dark:text-surface-400 text-sm\n hover:text-surface-700 dark:hover:text-surface-0\n data-content-open:text-surface-700 dark:data-content-open:text-surface-0\n transition-colors duration-200\n focus-visible:outline-1 focus-visible:-outline-offset-1 focus-visible:outline-primary`,\n className\n )}\n {...props}\n >\n {children}\n <PRAccordion.Indicator match=\"open\">\n <ChevronUp />\n </PRAccordion.Indicator>\n\n <PRAccordion.Indicator match=\"closed\">\n <ChevronDown />\n </PRAccordion.Indicator>\n </PRAccordion.Trigger>\n </PRAccordion.Header>\n );\n}\n\nfunction AccordionContent({ className, children, ...props }: AccordionContentProps) {\n return (\n <PRAccordion.Content className={cn('bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 text-sm h-(--accordion-content-height) transition-[height] duration-200 ease-out overflow-hidden', className)} {...props}>\n <div className=\"px-4 pb-4\">{children}</div>\n </PRAccordion.Content>\n );\n}\n\nexport { Accordion, AccordionContent, AccordionPanel, AccordionTrigger };\n"
1616
}
1717
]
1818
}

apps/showcase/public/r/checkbox.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
"name": "checkbox",
44
"type": "registry:ui",
55
"dependencies": [
6-
"@primeicons/react/check",
7-
"@primeicons/react/minus",
6+
"@primeicons/react@^8.0.0-alpha.7",
87
"class-variance-authority"
98
],
109
"registryDependencies": [
@@ -14,7 +13,7 @@
1413
{
1514
"path": "components/ui/checkbox.tsx",
1615
"type": "registry:ui",
17-
"content": "'use client';\nimport { cn } from '@/lib/utils';\nimport { Check } from '@primeicons/react/check';\nimport { Minus } from '@primeicons/react/minus';\nimport { CheckboxRootProps } from '@primereact/types/shared/checkbox';\nimport { cva } from 'class-variance-authority';\nimport { Checkbox as PRCheckbox } from 'primereact/checkbox';\nimport * as React from 'react';\n\nconst checkboxVariants = cva(\n `\n relative inline-flex items-center justify-center select-none align-bottom\n rounded-sm border border-surface-300 dark:border-surface-700\n text-surface-700 dark:text-surface-0\n has-[input:hover]:border-surface-400 dark:has-[input:hover]:border-surface-600\n data-checked:border-primary data-checked:bg-primary data-checked:text-primary-contrast\n has-[input:hover]:data-checked:bg-primary-emphasis has-[input:hover]:data-checked:border-primary-emphasis\n has-[input:focus-visible]:outline-1 has-[input:focus-visible]:outline-offset-2 has-[input:focus-visible]:outline-primary has-[input:focus-visible]:outline\n data-invalid:border-red-400 dark:data-invalid:border-red-300\n shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] transition-colors duration-200\n data-disabled:pointer-events-none data-disabled:bg-surface-200 dark:data-disabled:bg-surface-700 data-disabled:border-surface-300 dark:data-disabled:border-surface-600 data-disabled:text-surface-700 dark:data-disabled:text-surface-400\n `,\n {\n variants: {\n variant: {\n outlined: 'bg-surface-0 dark:bg-surface-950',\n filled: 'bg-surface-50 dark:bg-surface-800'\n },\n size: {\n small: 'size-3.5 **:data-[scope=checkboxindicator]:size-2.5!',\n normal: 'size-4.5 **:data-[scope=checkboxindicator]:size-3.5!',\n large: 'size-5 **:data-[scope=checkboxindicator]:size-4!'\n }\n },\n defaultVariants: {\n size: 'normal',\n variant: 'outlined'\n }\n }\n);\n\nfunction Checkbox({ variant = 'outlined', size = 'normal', className, ...props }: CheckboxRootProps) {\n return (\n <PRCheckbox.Root\n variant={variant}\n size={size}\n className={cn(checkboxVariants({ size, variant, className }))}\n inputClassName=\"peer cursor-pointer disabled:cursor-default appearance-none\n absolute start-0 top-0 w-full h-full m-0 p-0 opacity-0 z-10\n border border-transparent rounded-xs\"\n {...props}\n >\n <PRCheckbox.Indicator className=\"data-checked:block! hidden!\" as={Check} />\n <PRCheckbox.Indicator className=\"data-indeterminate:data-unchecked:block! hidden!\" as={Minus} />\n </PRCheckbox.Root>\n );\n}\n\nexport { Checkbox };\n"
16+
"content": "'use client';\nimport { cn } from '@/lib/utils';\nimport { Check, Minus } from '@primeicons/react';\nimport { CheckboxRootProps } from '@primereact/types/shared/checkbox';\nimport { cva } from 'class-variance-authority';\nimport { Checkbox as PRCheckbox } from 'primereact/checkbox';\nimport * as React from 'react';\n\nconst checkboxVariants = cva(\n `\n relative inline-flex items-center justify-center select-none align-bottom\n rounded-sm border border-surface-300 dark:border-surface-700\n text-surface-700 dark:text-surface-0\n has-[input:hover]:border-surface-400 dark:has-[input:hover]:border-surface-600\n data-checked:border-primary data-checked:bg-primary data-checked:text-primary-contrast\n has-[input:hover]:data-checked:bg-primary-emphasis has-[input:hover]:data-checked:border-primary-emphasis\n has-[input:focus-visible]:outline-1 has-[input:focus-visible]:outline-offset-2 has-[input:focus-visible]:outline-primary has-[input:focus-visible]:outline\n data-invalid:border-red-400 dark:data-invalid:border-red-300\n shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] transition-colors duration-200\n data-disabled:pointer-events-none data-disabled:bg-surface-200 dark:data-disabled:bg-surface-700 data-disabled:border-surface-300 dark:data-disabled:border-surface-600 data-disabled:text-surface-700 dark:data-disabled:text-surface-400\n `,\n {\n variants: {\n variant: {\n outlined: 'bg-surface-0 dark:bg-surface-950',\n filled: 'bg-surface-50 dark:bg-surface-800'\n },\n size: {\n small: 'size-3.5 **:data-[scope=checkboxindicator]:size-2.5!',\n normal: 'size-4.5 **:data-[scope=checkboxindicator]:size-3.5!',\n large: 'size-5 **:data-[scope=checkboxindicator]:size-4!'\n }\n },\n defaultVariants: {\n size: 'normal',\n variant: 'outlined'\n }\n }\n);\n\nfunction Checkbox({ variant = 'outlined', size = 'normal', className, ...props }: CheckboxRootProps) {\n return (\n <PRCheckbox.Root\n variant={variant}\n size={size}\n className={cn(checkboxVariants({ size, variant, className }))}\n inputClassName=\"peer cursor-pointer disabled:cursor-default appearance-none\n absolute start-0 top-0 w-full h-full m-0 p-0 opacity-0 z-10\n border border-transparent rounded-xs\"\n {...props}\n >\n <PRCheckbox.Indicator className=\"data-checked:block! hidden!\" as={Check} />\n <PRCheckbox.Indicator className=\"data-indeterminate:data-unchecked:block! hidden!\" as={Minus} />\n </PRCheckbox.Root>\n );\n}\n\nexport { Checkbox };\n"
1817
}
1918
]
2019
}

apps/showcase/public/r/index.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"dependencies": [
55
"primereact@11.0.0-alpha.10",
66
"@primeuix/utils",
7-
"@primereact/types"
7+
"@primereact/types",
8+
"tailwindcss-primeui"
89
],
910
"registryDependencies": [
1011
"https://v11.primereact.org/public/r/utils.json"

0 commit comments

Comments
 (0)