flarecms 0.1.0 → 0.1.2

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.
Files changed (113) hide show
  1. package/LICENSE +21 -0
  2. package/dist/auth/index.js +201 -1
  3. package/dist/cli/commands.js +5554 -55
  4. package/dist/cli/index.js +5554 -55
  5. package/dist/cli/mcp.js +30 -0
  6. package/dist/client/index.js +23576 -0
  7. package/dist/db/index.js +10392 -25
  8. package/dist/index.js +56776 -7582
  9. package/dist/server/index.js +43280 -0
  10. package/dist/style.css +5536 -0
  11. package/package.json +33 -30
  12. package/scripts/fix-api-paths.mjs +0 -32
  13. package/scripts/fix-imports.mjs +0 -38
  14. package/scripts/prefix-css.mjs +0 -45
  15. package/src/api/lib/cache.ts +0 -45
  16. package/src/api/lib/response.ts +0 -40
  17. package/src/api/middlewares/auth.ts +0 -186
  18. package/src/api/middlewares/cors.ts +0 -10
  19. package/src/api/middlewares/rbac.ts +0 -85
  20. package/src/api/routes/auth.ts +0 -377
  21. package/src/api/routes/collections.ts +0 -205
  22. package/src/api/routes/content.ts +0 -175
  23. package/src/api/routes/device.ts +0 -160
  24. package/src/api/routes/magic.ts +0 -150
  25. package/src/api/routes/mcp.ts +0 -273
  26. package/src/api/routes/oauth.ts +0 -160
  27. package/src/api/routes/settings.ts +0 -43
  28. package/src/api/routes/setup.ts +0 -307
  29. package/src/api/routes/tokens.ts +0 -80
  30. package/src/api/schemas/auth.ts +0 -15
  31. package/src/api/schemas/index.ts +0 -51
  32. package/src/api/schemas/tokens.ts +0 -24
  33. package/src/auth/index.ts +0 -28
  34. package/src/cli/commands.ts +0 -217
  35. package/src/cli/index.ts +0 -21
  36. package/src/cli/mcp.ts +0 -210
  37. package/src/cli/tests/cli.test.ts +0 -40
  38. package/src/cli/tests/create.test.ts +0 -87
  39. package/src/client/FlareAdminRouter.tsx +0 -47
  40. package/src/client/app.tsx +0 -175
  41. package/src/client/components/app-sidebar.tsx +0 -227
  42. package/src/client/components/collection-modal.tsx +0 -215
  43. package/src/client/components/content-list.tsx +0 -247
  44. package/src/client/components/dynamic-form.tsx +0 -190
  45. package/src/client/components/field-modal.tsx +0 -221
  46. package/src/client/components/settings/api-token-section.tsx +0 -400
  47. package/src/client/components/settings/general-section.tsx +0 -224
  48. package/src/client/components/settings/security-section.tsx +0 -154
  49. package/src/client/components/settings/seo-section.tsx +0 -200
  50. package/src/client/components/settings/signup-section.tsx +0 -257
  51. package/src/client/components/ui/accordion.tsx +0 -78
  52. package/src/client/components/ui/avatar.tsx +0 -107
  53. package/src/client/components/ui/badge.tsx +0 -52
  54. package/src/client/components/ui/button.tsx +0 -60
  55. package/src/client/components/ui/card.tsx +0 -103
  56. package/src/client/components/ui/checkbox.tsx +0 -27
  57. package/src/client/components/ui/collapsible.tsx +0 -19
  58. package/src/client/components/ui/dialog.tsx +0 -162
  59. package/src/client/components/ui/icon-picker.tsx +0 -485
  60. package/src/client/components/ui/icons-data.ts +0 -8476
  61. package/src/client/components/ui/input.tsx +0 -20
  62. package/src/client/components/ui/label.tsx +0 -20
  63. package/src/client/components/ui/popover.tsx +0 -91
  64. package/src/client/components/ui/select.tsx +0 -204
  65. package/src/client/components/ui/separator.tsx +0 -23
  66. package/src/client/components/ui/sheet.tsx +0 -141
  67. package/src/client/components/ui/sidebar.tsx +0 -722
  68. package/src/client/components/ui/skeleton.tsx +0 -13
  69. package/src/client/components/ui/sonner.tsx +0 -47
  70. package/src/client/components/ui/switch.tsx +0 -30
  71. package/src/client/components/ui/table.tsx +0 -116
  72. package/src/client/components/ui/tabs.tsx +0 -80
  73. package/src/client/components/ui/textarea.tsx +0 -18
  74. package/src/client/components/ui/tooltip.tsx +0 -68
  75. package/src/client/hooks/use-mobile.ts +0 -19
  76. package/src/client/index.css +0 -149
  77. package/src/client/index.ts +0 -7
  78. package/src/client/layouts/admin-layout.tsx +0 -93
  79. package/src/client/layouts/settings-layout.tsx +0 -104
  80. package/src/client/lib/api.ts +0 -72
  81. package/src/client/lib/utils.ts +0 -6
  82. package/src/client/main.tsx +0 -10
  83. package/src/client/pages/collection-detail.tsx +0 -634
  84. package/src/client/pages/collections.tsx +0 -180
  85. package/src/client/pages/dashboard.tsx +0 -133
  86. package/src/client/pages/device.tsx +0 -66
  87. package/src/client/pages/document-detail-page.tsx +0 -139
  88. package/src/client/pages/documents-page.tsx +0 -103
  89. package/src/client/pages/login.tsx +0 -345
  90. package/src/client/pages/settings.tsx +0 -65
  91. package/src/client/pages/setup.tsx +0 -129
  92. package/src/client/pages/signup.tsx +0 -188
  93. package/src/client/store/auth.ts +0 -30
  94. package/src/client/store/collections.ts +0 -13
  95. package/src/client/store/config.ts +0 -12
  96. package/src/client/store/fetcher.ts +0 -30
  97. package/src/client/store/router.ts +0 -95
  98. package/src/client/store/schema.ts +0 -39
  99. package/src/client/store/settings.ts +0 -31
  100. package/src/client/types.ts +0 -34
  101. package/src/db/dynamic.ts +0 -70
  102. package/src/db/index.ts +0 -16
  103. package/src/db/migrations/001_initial_schema.ts +0 -57
  104. package/src/db/migrations/002_auth_tables.ts +0 -84
  105. package/src/db/migrator.ts +0 -61
  106. package/src/db/schema.ts +0 -142
  107. package/src/index.ts +0 -12
  108. package/src/server/index.ts +0 -66
  109. package/src/types.ts +0 -20
  110. package/tests/css.test.ts +0 -21
  111. package/tests/modular.test.ts +0 -29
  112. package/tsconfig.json +0 -10
  113. /package/{style.css.d.ts → dist/style.css.d.ts} +0 -0
@@ -1,78 +0,0 @@
1
- import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion';
2
-
3
- import { cn } from '../../lib/utils';
4
- import { ChevronDownIcon, ChevronUpIcon } from 'lucide-react';
5
-
6
- function Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {
7
- return (
8
- <AccordionPrimitive.Root
9
- data-slot="accordion"
10
- className={cn('flex w-full flex-col', className)}
11
- {...props}
12
- />
13
- );
14
- }
15
-
16
- function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {
17
- return (
18
- <AccordionPrimitive.Item
19
- data-slot="accordion-item"
20
- className={cn('not-last:border-b', className)}
21
- {...props}
22
- />
23
- );
24
- }
25
-
26
- function AccordionTrigger({
27
- className,
28
- children,
29
- ...props
30
- }: AccordionPrimitive.Trigger.Props) {
31
- return (
32
- <AccordionPrimitive.Header className="flex">
33
- <AccordionPrimitive.Trigger
34
- data-slot="accordion-trigger"
35
- className={cn(
36
- 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',
37
- className,
38
- )}
39
- {...props}
40
- >
41
- {children}
42
- <ChevronDownIcon
43
- data-slot="accordion-trigger-icon"
44
- className="pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
45
- />
46
- <ChevronUpIcon
47
- data-slot="accordion-trigger-icon"
48
- className="pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
49
- />
50
- </AccordionPrimitive.Trigger>
51
- </AccordionPrimitive.Header>
52
- );
53
- }
54
-
55
- function AccordionContent({
56
- className,
57
- children,
58
- ...props
59
- }: AccordionPrimitive.Panel.Props) {
60
- return (
61
- <AccordionPrimitive.Panel
62
- data-slot="accordion-content"
63
- className="overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up"
64
- {...props}
65
- >
66
- <div
67
- className={cn(
68
- 'h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',
69
- className,
70
- )}
71
- >
72
- {children}
73
- </div>
74
- </AccordionPrimitive.Panel>
75
- );
76
- }
77
-
78
- export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -1,107 +0,0 @@
1
- import * as React from "react"
2
- import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar"
3
-
4
- import { cn } from "../../lib/utils"
5
-
6
- const Avatar = React.forwardRef<
7
- HTMLDivElement,
8
- AvatarPrimitive.Root.Props & { size?: "default" | "sm" | "lg" }
9
- >(({ className, size = "default", ...props }, ref) => {
10
- return (
11
- <AvatarPrimitive.Root
12
- ref={ref}
13
- data-slot="avatar"
14
- data-size={size}
15
- className={cn(
16
- "group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",
17
- className
18
- )}
19
- {...props}
20
- />
21
- )
22
- })
23
-
24
- Avatar.displayName = "Avatar"
25
-
26
- function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {
27
- return (
28
- <AvatarPrimitive.Image
29
- data-slot="avatar-image"
30
- className={cn(
31
- "aspect-square size-full rounded-full object-cover",
32
- className
33
- )}
34
- {...props}
35
- />
36
- )
37
- }
38
-
39
- function AvatarFallback({
40
- className,
41
- ...props
42
- }: AvatarPrimitive.Fallback.Props) {
43
- return (
44
- <AvatarPrimitive.Fallback
45
- data-slot="avatar-fallback"
46
- className={cn(
47
- "flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
48
- className
49
- )}
50
- {...props}
51
- />
52
- )
53
- }
54
-
55
- function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) {
56
- return (
57
- <span
58
- data-slot="avatar-badge"
59
- className={cn(
60
- "absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none",
61
- "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
62
- "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
63
- "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
64
- className
65
- )}
66
- {...props}
67
- />
68
- )
69
- }
70
-
71
- function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) {
72
- return (
73
- <div
74
- data-slot="avatar-group"
75
- className={cn(
76
- "group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
77
- className
78
- )}
79
- {...props}
80
- />
81
- )
82
- }
83
-
84
- function AvatarGroupCount({
85
- className,
86
- ...props
87
- }: React.ComponentProps<"div">) {
88
- return (
89
- <div
90
- data-slot="avatar-group-count"
91
- className={cn(
92
- "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background 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",
93
- className
94
- )}
95
- {...props}
96
- />
97
- )
98
- }
99
-
100
- export {
101
- Avatar,
102
- AvatarImage,
103
- AvatarFallback,
104
- AvatarGroup,
105
- AvatarGroupCount,
106
- AvatarBadge,
107
- }
@@ -1,52 +0,0 @@
1
- import { mergeProps } from '@base-ui/react/merge-props';
2
- import { useRender } from '@base-ui/react/use-render';
3
- import { cva, type VariantProps } from 'class-variance-authority';
4
-
5
- import { cn } from '../../lib/utils';
6
-
7
- const badgeVariants = cva(
8
- 'group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!',
9
- {
10
- variants: {
11
- variant: {
12
- default: 'bg-primary text-primary-foreground [a]:hover:bg-primary/80',
13
- secondary:
14
- 'bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80',
15
- destructive:
16
- 'bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20',
17
- outline:
18
- 'border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground',
19
- ghost:
20
- 'hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50',
21
- link: 'text-primary underline-offset-4 hover:underline',
22
- },
23
- },
24
- defaultVariants: {
25
- variant: 'default',
26
- },
27
- },
28
- );
29
-
30
- function Badge({
31
- className,
32
- variant = 'default',
33
- render,
34
- ...props
35
- }: useRender.ComponentProps<'span'> & VariantProps<typeof badgeVariants>) {
36
- return useRender({
37
- defaultTagName: 'span',
38
- props: mergeProps<'span'>(
39
- {
40
- className: cn(badgeVariants({ variant }), className),
41
- },
42
- props,
43
- ),
44
- render,
45
- state: {
46
- slot: 'badge',
47
- variant,
48
- },
49
- });
50
- }
51
-
52
- export { Badge, badgeVariants };
@@ -1,60 +0,0 @@
1
- import * as React from 'react';
2
- import { Button as ButtonPrimitive } from '@base-ui/react/button';
3
- import { cva, type VariantProps } from 'class-variance-authority';
4
-
5
- import { cn } from '../../lib/utils';
6
-
7
- const buttonVariants = cva(
8
- "group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
9
- {
10
- variants: {
11
- variant: {
12
- default: 'bg-primary text-primary-foreground [a]:hover:bg-primary/80',
13
- outline:
14
- 'border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50',
15
- secondary:
16
- 'bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',
17
- ghost:
18
- 'hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50',
19
- destructive:
20
- 'bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40',
21
- link: 'text-primary underline-offset-4 hover:underline',
22
- },
23
- size: {
24
- default:
25
- 'h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',
26
- 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",
27
- 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",
28
- lg: 'h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',
29
- icon: 'size-8',
30
- 'icon-xs':
31
- "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
32
- 'icon-sm':
33
- 'size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg',
34
- 'icon-lg': 'size-9',
35
- },
36
- },
37
- defaultVariants: {
38
- variant: 'default',
39
- size: 'default',
40
- },
41
- },
42
- );
43
-
44
- const Button = React.forwardRef<
45
- HTMLButtonElement,
46
- ButtonPrimitive.Props & VariantProps<typeof buttonVariants>
47
- >(({ className, variant = 'default', size = 'default', ...props }, ref) => {
48
- return (
49
- <ButtonPrimitive
50
- ref={ref}
51
- data-slot="button"
52
- className={cn(buttonVariants({ variant, size, className }))}
53
- {...props}
54
- />
55
- );
56
- });
57
-
58
- Button.displayName = 'Button';
59
-
60
- export { Button, buttonVariants };
@@ -1,103 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { cn } from "../../lib/utils"
4
-
5
- function Card({
6
- className,
7
- size = "default",
8
- ...props
9
- }: React.ComponentProps<"div"> & { size?: "default" | "sm" }) {
10
- return (
11
- <div
12
- data-slot="card"
13
- data-size={size}
14
- className={cn(
15
- "group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 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",
16
- className
17
- )}
18
- {...props}
19
- />
20
- )
21
- }
22
-
23
- function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
24
- return (
25
- <div
26
- data-slot="card-header"
27
- className={cn(
28
- "group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",
29
- className
30
- )}
31
- {...props}
32
- />
33
- )
34
- }
35
-
36
- function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
37
- return (
38
- <div
39
- data-slot="card-title"
40
- className={cn(
41
- "font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",
42
- className
43
- )}
44
- {...props}
45
- />
46
- )
47
- }
48
-
49
- function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
50
- return (
51
- <div
52
- data-slot="card-description"
53
- className={cn("text-sm text-muted-foreground", className)}
54
- {...props}
55
- />
56
- )
57
- }
58
-
59
- function CardAction({ className, ...props }: React.ComponentProps<"div">) {
60
- return (
61
- <div
62
- data-slot="card-action"
63
- className={cn(
64
- "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
65
- className
66
- )}
67
- {...props}
68
- />
69
- )
70
- }
71
-
72
- function CardContent({ className, ...props }: React.ComponentProps<"div">) {
73
- return (
74
- <div
75
- data-slot="card-content"
76
- className={cn("px-4 group-data-[size=sm]/card:px-3", className)}
77
- {...props}
78
- />
79
- )
80
- }
81
-
82
- function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
83
- return (
84
- <div
85
- data-slot="card-footer"
86
- className={cn(
87
- "flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3",
88
- className
89
- )}
90
- {...props}
91
- />
92
- )
93
- }
94
-
95
- export {
96
- Card,
97
- CardHeader,
98
- CardFooter,
99
- CardTitle,
100
- CardAction,
101
- CardDescription,
102
- CardContent,
103
- }
@@ -1,27 +0,0 @@
1
- import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox"
2
-
3
- import { cn } from "../../lib/utils"
4
- import { CheckIcon } from "lucide-react"
5
-
6
- function Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {
7
- return (
8
- <CheckboxPrimitive.Root
9
- data-slot="checkbox"
10
- className={cn(
11
- "peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary",
12
- className
13
- )}
14
- {...props}
15
- >
16
- <CheckboxPrimitive.Indicator
17
- data-slot="checkbox-indicator"
18
- className="grid place-content-center text-current transition-none [&>svg]:size-3.5"
19
- >
20
- <CheckIcon
21
- />
22
- </CheckboxPrimitive.Indicator>
23
- </CheckboxPrimitive.Root>
24
- )
25
- }
26
-
27
- export { Checkbox }
@@ -1,19 +0,0 @@
1
- import { Collapsible as CollapsiblePrimitive } from "@base-ui/react/collapsible"
2
-
3
- function Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {
4
- return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />
5
- }
6
-
7
- function CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props) {
8
- return (
9
- <CollapsiblePrimitive.Trigger data-slot="collapsible-trigger" {...props} />
10
- )
11
- }
12
-
13
- function CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {
14
- return (
15
- <CollapsiblePrimitive.Panel data-slot="collapsible-content" {...props} />
16
- )
17
- }
18
-
19
- export { Collapsible, CollapsibleTrigger, CollapsibleContent }
@@ -1,162 +0,0 @@
1
- import * as React from "react"
2
- import { Dialog as DialogPrimitive } from "@base-ui/react/dialog"
3
-
4
- import { cn } from "../../lib/utils"
5
- import { Button } from "./button"
6
- import { XIcon } from "lucide-react"
7
-
8
- function Dialog({ ...props }: DialogPrimitive.Root.Props) {
9
- return <DialogPrimitive.Root data-slot="dialog" {...props} />
10
- }
11
-
12
- function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {
13
- return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />
14
- }
15
-
16
- function DialogPortal({ children, ...props }: DialogPrimitive.Portal.Props) {
17
- return (
18
- <DialogPrimitive.Portal data-slot="dialog-portal" {...props}>
19
- <div className="flare-admin text-foreground">{children}</div>
20
- </DialogPrimitive.Portal>
21
- )
22
- }
23
-
24
- function DialogClose({ ...props }: DialogPrimitive.Close.Props) {
25
- return <DialogPrimitive.Close data-slot="dialog-close" {...props} />
26
- }
27
-
28
- function DialogOverlay({
29
- className,
30
- ...props
31
- }: DialogPrimitive.Backdrop.Props) {
32
- return (
33
- <DialogPrimitive.Backdrop
34
- data-slot="dialog-overlay"
35
- className={cn(
36
- "fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
37
- className
38
- )}
39
- {...props}
40
- />
41
- )
42
- }
43
-
44
- function DialogContent({
45
- className,
46
- children,
47
- showCloseButton = true,
48
- ...props
49
- }: DialogPrimitive.Popup.Props & {
50
- showCloseButton?: boolean
51
- }) {
52
- return (
53
- <DialogPortal>
54
- <DialogOverlay />
55
- <DialogPrimitive.Popup
56
- data-slot="dialog-content"
57
- className={cn(
58
- "fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
59
- className
60
- )}
61
- {...props}
62
- >
63
- {children}
64
- {showCloseButton && (
65
- <DialogPrimitive.Close
66
- data-slot="dialog-close"
67
- render={
68
- <Button
69
- variant="ghost"
70
- className="absolute top-2 right-2"
71
- size="icon-sm"
72
- />
73
- }
74
- >
75
- <XIcon
76
- />
77
- <span className="sr-only">Close</span>
78
- </DialogPrimitive.Close>
79
- )}
80
- </DialogPrimitive.Popup>
81
- </DialogPortal>
82
- )
83
- }
84
-
85
- function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
86
- return (
87
- <div
88
- data-slot="dialog-header"
89
- className={cn("flex flex-col gap-2", className)}
90
- {...props}
91
- />
92
- )
93
- }
94
-
95
- function DialogFooter({
96
- className,
97
- showCloseButton = false,
98
- children,
99
- ...props
100
- }: React.ComponentProps<"div"> & {
101
- showCloseButton?: boolean
102
- }) {
103
- return (
104
- <div
105
- data-slot="dialog-footer"
106
- className={cn(
107
- "-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",
108
- className
109
- )}
110
- {...props}
111
- >
112
- {children}
113
- {showCloseButton && (
114
- <DialogPrimitive.Close render={<Button variant="outline" />}>
115
- Close
116
- </DialogPrimitive.Close>
117
- )}
118
- </div>
119
- )
120
- }
121
-
122
- function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {
123
- return (
124
- <DialogPrimitive.Title
125
- data-slot="dialog-title"
126
- className={cn(
127
- "font-heading text-base leading-none font-medium",
128
- className
129
- )}
130
- {...props}
131
- />
132
- )
133
- }
134
-
135
- function DialogDescription({
136
- className,
137
- ...props
138
- }: DialogPrimitive.Description.Props) {
139
- return (
140
- <DialogPrimitive.Description
141
- data-slot="dialog-description"
142
- className={cn(
143
- "text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
144
- className
145
- )}
146
- {...props}
147
- />
148
- )
149
- }
150
-
151
- export {
152
- Dialog,
153
- DialogClose,
154
- DialogContent,
155
- DialogDescription,
156
- DialogFooter,
157
- DialogHeader,
158
- DialogOverlay,
159
- DialogPortal,
160
- DialogTitle,
161
- DialogTrigger,
162
- }