@gentleduck/registry-ui 0.2.1

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 (175) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/index.css +3 -0
  3. package/package.json +59 -0
  4. package/src/_old/_table/index.ts +5 -0
  5. package/src/_old/_table/table-advanced.constants.tsx +24 -0
  6. package/src/_old/_table/table-advanced.tsx +311 -0
  7. package/src/_old/_table/table-advanced.types.ts +272 -0
  8. package/src/_old/_table/table.constants.ts +2 -0
  9. package/src/_old/_table/table.hook.tsx +115 -0
  10. package/src/_old/_table/table.lib.ts +85 -0
  11. package/src/_old/_table/table.tsx +916 -0
  12. package/src/_old/_table/table.types.ts +118 -0
  13. package/src/_old/_table/todo.md +11 -0
  14. package/src/_old/_upload/index.ts +9 -0
  15. package/src/_old/_upload/todo.md +38 -0
  16. package/src/_old/_upload/upload-advanced-chunks.tsx +1624 -0
  17. package/src/_old/_upload/upload-advanced.tsx +507 -0
  18. package/src/_old/_upload/upload-sonner.tsx +58 -0
  19. package/src/_old/_upload/upload.assets.tsx +239 -0
  20. package/src/_old/_upload/upload.constants.tsx +75 -0
  21. package/src/_old/_upload/upload.dto.ts +19 -0
  22. package/src/_old/_upload/upload.lib.tsx +630 -0
  23. package/src/_old/_upload/upload.tsx +491 -0
  24. package/src/_old/_upload/upload.types.ts +436 -0
  25. package/src/accordion/accordion.tsx +247 -0
  26. package/src/accordion/index.ts +1 -0
  27. package/src/alert/alert.constants.ts +17 -0
  28. package/src/alert/alert.tsx +52 -0
  29. package/src/alert/index.ts +2 -0
  30. package/src/alert-dialog/alert-dialog.tsx +107 -0
  31. package/src/alert-dialog/index.ts +1 -0
  32. package/src/aspect-ratio/aspect-ratio.tsx +33 -0
  33. package/src/aspect-ratio/index.ts +1 -0
  34. package/src/audio/audio-record.tsx +776 -0
  35. package/src/audio/audio-visualizer.tsx +377 -0
  36. package/src/audio/audio.libs.ts +5 -0
  37. package/src/audio/audio.types.ts +50 -0
  38. package/src/audio/index.ts +2 -0
  39. package/src/avatar/avatar.tsx +78 -0
  40. package/src/avatar/index.ts +1 -0
  41. package/src/badge/badge.constants.ts +38 -0
  42. package/src/badge/badge.tsx +19 -0
  43. package/src/badge/index.ts +2 -0
  44. package/src/breadcrumb/breadcrumb.tsx +119 -0
  45. package/src/breadcrumb/index.ts +1 -0
  46. package/src/button/button.constants.ts +44 -0
  47. package/src/button/button.tsx +79 -0
  48. package/src/button/button.types.ts +38 -0
  49. package/src/button/index.ts +3 -0
  50. package/src/button-group/button-group.constants.ts +26 -0
  51. package/src/button-group/button-group.tsx +65 -0
  52. package/src/button-group/index.ts +2 -0
  53. package/src/calendar/calendar.tsx +191 -0
  54. package/src/calendar/index.ts +1 -0
  55. package/src/card/card.tsx +81 -0
  56. package/src/card/index.ts +1 -0
  57. package/src/carousel/carousel.tsx +211 -0
  58. package/src/carousel/carousel.types.ts +23 -0
  59. package/src/carousel/index.ts +2 -0
  60. package/src/chart/chart.libs.ts +27 -0
  61. package/src/chart/chart.tsx +260 -0
  62. package/src/chart/chart.types.ts +38 -0
  63. package/src/chart/index.ts +3 -0
  64. package/src/checkbox/checkbox.tsx +144 -0
  65. package/src/checkbox/checkbox.types.ts +24 -0
  66. package/src/checkbox/index.ts +2 -0
  67. package/src/collapsible/collapsible.tsx +151 -0
  68. package/src/collapsible/index.ts +1 -0
  69. package/src/combobox/combobox.tsx +132 -0
  70. package/src/combobox/index.ts +1 -0
  71. package/src/command/command.tsx +192 -0
  72. package/src/command/command.types.ts +11 -0
  73. package/src/command/index.ts +2 -0
  74. package/src/context-menu/context-menu.tsx +178 -0
  75. package/src/context-menu/index.ts +1 -0
  76. package/src/dialog/dialog-responsive.tsx +137 -0
  77. package/src/dialog/dialog.tsx +97 -0
  78. package/src/dialog/index.ts +2 -0
  79. package/src/direction/direction.tsx +13 -0
  80. package/src/direction/index.ts +1 -0
  81. package/src/drawer/drawer.tsx +185 -0
  82. package/src/drawer/index.ts +1 -0
  83. package/src/dropdown-menu/dropdown-menu.tsx +181 -0
  84. package/src/dropdown-menu/index.ts +1 -0
  85. package/src/empty/empty.constants.ts +15 -0
  86. package/src/empty/empty.tsx +73 -0
  87. package/src/empty/index.ts +2 -0
  88. package/src/field/field.constants.ts +22 -0
  89. package/src/field/field.tsx +203 -0
  90. package/src/field/index.ts +2 -0
  91. package/src/hover-card/hover-card.tsx +79 -0
  92. package/src/hover-card/index.ts +1 -0
  93. package/src/input/index.ts +1 -0
  94. package/src/input/input.tsx +45 -0
  95. package/src/input-group/index.ts +1 -0
  96. package/src/input-group/input-group.tsx +170 -0
  97. package/src/input-otp/index.ts +1 -0
  98. package/src/input-otp/input-otp.tsx +66 -0
  99. package/src/item/index.ts +2 -0
  100. package/src/item/item.constants.ts +22 -0
  101. package/src/item/item.tsx +185 -0
  102. package/src/json-editor/index.ts +4 -0
  103. package/src/json-editor/json-editor.hooks.ts +21 -0
  104. package/src/json-editor/json-editor.libs.ts +34 -0
  105. package/src/json-editor/json-editor.tsx +425 -0
  106. package/src/json-editor/json-editor.types.ts +80 -0
  107. package/src/json-editor/json-editor.view.tsx +110 -0
  108. package/src/json-editor/json-text-area.tsx +7 -0
  109. package/src/kbd/index.ts +1 -0
  110. package/src/kbd/kbd.tsx +39 -0
  111. package/src/label/index.ts +1 -0
  112. package/src/label/label.tsx +28 -0
  113. package/src/menubar/index.ts +1 -0
  114. package/src/menubar/menubar.tsx +213 -0
  115. package/src/navigation-menu/index.ts +1 -0
  116. package/src/navigation-menu/navigation-menu.tsx +152 -0
  117. package/src/pagination/index.ts +2 -0
  118. package/src/pagination/pagination.tsx +191 -0
  119. package/src/pagination/pagination.types.ts +17 -0
  120. package/src/popover/index.ts +1 -0
  121. package/src/popover/popover.tsx +35 -0
  122. package/src/preview-panel/index.ts +3 -0
  123. package/src/preview-panel/preview-panel-dialog.tsx +99 -0
  124. package/src/preview-panel/preview-panel.tsx +389 -0
  125. package/src/preview-panel/preview-panel.types.ts +49 -0
  126. package/src/progress/index.ts +1 -0
  127. package/src/progress/progress.tsx +32 -0
  128. package/src/radio-group/index.ts +1 -0
  129. package/src/radio-group/radio-group.tsx +92 -0
  130. package/src/resizable/index.ts +1 -0
  131. package/src/resizable/resizable.tsx +52 -0
  132. package/src/scroll-area/index.ts +1 -0
  133. package/src/scroll-area/scroll-area.tsx +30 -0
  134. package/src/select/index.ts +1 -0
  135. package/src/select/select.tsx +138 -0
  136. package/src/separator/index.ts +1 -0
  137. package/src/separator/separator.tsx +28 -0
  138. package/src/sheet/index.ts +2 -0
  139. package/src/sheet/sheet.constants.tsx +20 -0
  140. package/src/sheet/sheet.tsx +92 -0
  141. package/src/sidebar/index.ts +4 -0
  142. package/src/sidebar/sidebar.constants.ts +30 -0
  143. package/src/sidebar/sidebar.hooks.ts +13 -0
  144. package/src/sidebar/sidebar.tsx +676 -0
  145. package/src/sidebar/sidebar.types.ts +28 -0
  146. package/src/skeleton/index.ts +1 -0
  147. package/src/skeleton/skeleton.tsx +22 -0
  148. package/src/slider/index.ts +1 -0
  149. package/src/slider/slider.tsx +57 -0
  150. package/src/sonner/index.ts +4 -0
  151. package/src/sonner/sonner.chunks.tsx +80 -0
  152. package/src/sonner/sonner.libs.ts +13 -0
  153. package/src/sonner/sonner.tsx +31 -0
  154. package/src/sonner/sonner.types.ts +9 -0
  155. package/src/switch/index.ts +1 -0
  156. package/src/switch/switch.tsx +63 -0
  157. package/src/table/index.ts +1 -0
  158. package/src/table/table.tsx +95 -0
  159. package/src/tabs/index.ts +1 -0
  160. package/src/tabs/tabs.tsx +151 -0
  161. package/src/textarea/index.ts +1 -0
  162. package/src/textarea/textarea.tsx +24 -0
  163. package/src/toggle/index.ts +2 -0
  164. package/src/toggle/toggle.constants.ts +22 -0
  165. package/src/toggle/toggle.tsx +24 -0
  166. package/src/toggle-group/index.ts +1 -0
  167. package/src/toggle-group/toggle-group.tsx +69 -0
  168. package/src/tooltip/index.ts +1 -0
  169. package/src/tooltip/tooltip.tsx +32 -0
  170. package/src/upload/index.ts +1 -0
  171. package/src/upload/upload.constants.tsx +19 -0
  172. package/src/upload/upload.libs.ts +97 -0
  173. package/src/upload/upload.tsx +340 -0
  174. package/src/upload/upload.types.ts +44 -0
  175. package/tsconfig.json +25 -0
@@ -0,0 +1,17 @@
1
+ import { cva } from '@gentleduck/variants'
2
+
3
+ export const alertVariants = cva(
4
+ 'relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',
5
+ {
6
+ defaultVariants: {
7
+ variant: 'default',
8
+ },
9
+ variants: {
10
+ variant: {
11
+ default: 'bg-card text-card-foreground',
12
+ destructive:
13
+ 'bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current',
14
+ },
15
+ },
16
+ },
17
+ )
@@ -0,0 +1,52 @@
1
+ import { cn } from '@gentleduck/libs/cn'
2
+ import { type Direction, useDirection } from '@gentleduck/primitives/direction'
3
+ import type { VariantProps } from '@gentleduck/variants'
4
+ import * as React from 'react'
5
+ import { alertVariants } from './alert.constants'
6
+
7
+ const Alert = React.forwardRef<
8
+ HTMLDivElement,
9
+ React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>
10
+ >(({ className, variant, dir, ...props }, ref) => {
11
+ const direction = useDirection(dir as Direction)
12
+ return (
13
+ <div
14
+ ref={ref}
15
+ className={cn(alertVariants({ variant }), className)}
16
+ data-slot="alert"
17
+ dir={direction}
18
+ role="alert"
19
+ {...props}
20
+ />
21
+ )
22
+ })
23
+ Alert.displayName = 'Alert'
24
+
25
+ const AlertTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
26
+ ({ className, ...props }, ref) => (
27
+ <div
28
+ ref={ref}
29
+ className={cn('col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight', className)}
30
+ data-slot="alert-title"
31
+ {...props}
32
+ />
33
+ ),
34
+ )
35
+ AlertTitle.displayName = 'AlertTitle'
36
+
37
+ const AlertDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
38
+ ({ className, ...props }, ref) => (
39
+ <div
40
+ ref={ref}
41
+ className={cn(
42
+ 'col-start-2 grid justify-items-start gap-1 text-muted-foreground text-sm [&_p]:leading-relaxed',
43
+ className,
44
+ )}
45
+ data-slot="alert-description"
46
+ {...props}
47
+ />
48
+ ),
49
+ )
50
+ AlertDescription.displayName = 'AlertDescription'
51
+
52
+ export { Alert, AlertTitle, AlertDescription }
@@ -0,0 +1,2 @@
1
+ export * from './alert'
2
+ export * from './alert.constants'
@@ -0,0 +1,107 @@
1
+ 'use client'
2
+
3
+ import { cn } from '@gentleduck/libs/cn'
4
+ import * as AlertDialogPrimitive from '@gentleduck/primitives/alert-dialog'
5
+ import * as React from 'react'
6
+ import { buttonVariants } from '../button'
7
+
8
+ const AlertDialog = AlertDialogPrimitive.Root
9
+
10
+ const AlertDialogTrigger = AlertDialogPrimitive.Trigger
11
+
12
+ const AlertDialogPortal = AlertDialogPrimitive.Portal
13
+
14
+ const AlertDialogOverlay = React.forwardRef<
15
+ React.ComponentRef<typeof AlertDialogPrimitive.Overlay>,
16
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>
17
+ >(({ className, ...props }, ref) => (
18
+ <AlertDialogPrimitive.Overlay
19
+ className={cn(
20
+ 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80 data-[state=closed]:animate-out data-[state=open]:animate-in',
21
+ 'transition-all transition-discrete duration-[200ms,150ms] ease-(--duck-motion-ease)',
22
+ className,
23
+ )}
24
+ {...props}
25
+ ref={ref}
26
+ />
27
+ ))
28
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName
29
+
30
+ const AlertDialogContent = React.forwardRef<
31
+ React.ComponentRef<typeof AlertDialogPrimitive.Content>,
32
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>
33
+ >(({ className, ...props }, ref) => (
34
+ <AlertDialogPortal>
35
+ <AlertDialogOverlay />
36
+ <AlertDialogPrimitive.Content
37
+ ref={ref}
38
+ className={cn(
39
+ 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-1/2 left-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg data-[state=closed]:animate-out data-[state=open]:animate-in sm:rounded-lg',
40
+ 'transition-all transition-discrete duration-[200ms,150ms] ease-(--duck-motion-ease)',
41
+ className,
42
+ )}
43
+ {...props}
44
+ />
45
+ </AlertDialogPortal>
46
+ ))
47
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName
48
+
49
+ const AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
50
+ <div className={cn('flex flex-col space-y-2 text-center sm:text-start', className)} {...props} />
51
+ )
52
+ AlertDialogHeader.displayName = 'AlertDialogHeader'
53
+
54
+ const AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
55
+ <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-2', className)} {...props} />
56
+ )
57
+ AlertDialogFooter.displayName = 'AlertDialogFooter'
58
+
59
+ const AlertDialogTitle = React.forwardRef<
60
+ React.ComponentRef<typeof AlertDialogPrimitive.Title>,
61
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>
62
+ >(({ className, ...props }, ref) => (
63
+ <AlertDialogPrimitive.Title ref={ref} className={cn('font-semibold text-lg', className)} {...props} />
64
+ ))
65
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName
66
+
67
+ const AlertDialogDescription = React.forwardRef<
68
+ React.ComponentRef<typeof AlertDialogPrimitive.Description>,
69
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>
70
+ >(({ className, ...props }, ref) => (
71
+ <AlertDialogPrimitive.Description ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />
72
+ ))
73
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName
74
+
75
+ const AlertDialogAction = React.forwardRef<
76
+ React.ComponentRef<typeof AlertDialogPrimitive.Action>,
77
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>
78
+ >(({ className, ...props }, ref) => (
79
+ <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />
80
+ ))
81
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName
82
+
83
+ const AlertDialogCancel = React.forwardRef<
84
+ React.ComponentRef<typeof AlertDialogPrimitive.Cancel>,
85
+ React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>
86
+ >(({ className, ...props }, ref) => (
87
+ <AlertDialogPrimitive.Cancel
88
+ ref={ref}
89
+ className={cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className)}
90
+ {...props}
91
+ />
92
+ ))
93
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName
94
+
95
+ export {
96
+ AlertDialog,
97
+ AlertDialogPortal,
98
+ AlertDialogOverlay,
99
+ AlertDialogTrigger,
100
+ AlertDialogContent,
101
+ AlertDialogHeader,
102
+ AlertDialogFooter,
103
+ AlertDialogTitle,
104
+ AlertDialogDescription,
105
+ AlertDialogAction,
106
+ AlertDialogCancel,
107
+ }
@@ -0,0 +1 @@
1
+ export * from './alert-dialog'
@@ -0,0 +1,33 @@
1
+ 'use client'
2
+
3
+ import { cn } from '@gentleduck/libs/cn'
4
+ import { type Direction, useDirection } from '@gentleduck/primitives/direction'
5
+ import { Slot } from '@gentleduck/primitives/slot'
6
+
7
+ function AspectRatio({
8
+ style,
9
+ className,
10
+ ratio,
11
+ ref,
12
+ dir,
13
+ ...props
14
+ }: React.ComponentPropsWithRef<typeof Slot> & {
15
+ ratio: string
16
+ }) {
17
+ const direction = useDirection(dir as Direction)
18
+ return (
19
+ <Slot
20
+ className={cn('relative h-auto w-full overflow-hidden', className)}
21
+ dir={direction}
22
+ ref={ref}
23
+ style={{
24
+ aspectRatio: ratio,
25
+ ...style,
26
+ }}
27
+ {...props}
28
+ data-slot="aspect-ratio"
29
+ />
30
+ )
31
+ }
32
+
33
+ export { AspectRatio }
@@ -0,0 +1 @@
1
+ export * from './aspect-ratio'