@dyrected/admin 2.0.1 → 2.4.0

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 (67) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/package.json +4 -4
  3. package/scripts/prefix-tailwind-precision.py +98 -0
  4. package/scripts/prefix-tailwind.py +67 -0
  5. package/src/components/auth/auth-gate.tsx +4 -4
  6. package/src/components/error-boundary.tsx +4 -4
  7. package/src/components/forms/fields/block-builder.tsx +24 -24
  8. package/src/components/forms/fields/date-picker.tsx +7 -7
  9. package/src/components/forms/fields/json-editor.tsx +5 -5
  10. package/src/components/forms/fields/media-picker.tsx +39 -39
  11. package/src/components/forms/fields/multi-select.tsx +12 -12
  12. package/src/components/forms/fields/radio-field.tsx +8 -8
  13. package/src/components/forms/fields/relationship-picker.tsx +13 -13
  14. package/src/components/forms/fields/rich-text-editor.tsx +22 -22
  15. package/src/components/forms/fields/select-field.tsx +3 -3
  16. package/src/components/forms/form-engine.tsx +3 -3
  17. package/src/components/forms/form-field-renderer.tsx +37 -37
  18. package/src/components/layout/admin-shell.tsx +60 -60
  19. package/src/components/live-preview/LivePreviewPane.tsx +14 -14
  20. package/src/components/media/focal-point-picker.tsx +9 -9
  21. package/src/components/media/media-card.tsx +10 -10
  22. package/src/components/media/media-grid.tsx +3 -3
  23. package/src/components/media/media-library-dialog.tsx +105 -105
  24. package/src/components/ui/badge.tsx +5 -5
  25. package/src/components/ui/button.tsx +11 -11
  26. package/src/components/ui/calendar.tsx +36 -36
  27. package/src/components/ui/card.tsx +6 -6
  28. package/src/components/ui/checkbox.tsx +3 -3
  29. package/src/components/ui/command.tsx +12 -12
  30. package/src/components/ui/data-table.tsx +18 -18
  31. package/src/components/ui/dialog.tsx +9 -9
  32. package/src/components/ui/dropdown-menu.tsx +16 -16
  33. package/src/components/ui/form.tsx +4 -4
  34. package/src/components/ui/input.tsx +3 -3
  35. package/src/components/ui/label.tsx +1 -1
  36. package/src/components/ui/page-header.tsx +6 -6
  37. package/src/components/ui/pagination.tsx +6 -6
  38. package/src/components/ui/popover.tsx +1 -1
  39. package/src/components/ui/progress.tsx +2 -2
  40. package/src/components/ui/radio-group.tsx +4 -4
  41. package/src/components/ui/render-cell.tsx +16 -16
  42. package/src/components/ui/scroll-area.tsx +6 -6
  43. package/src/components/ui/select.tsx +14 -14
  44. package/src/components/ui/separator.tsx +2 -2
  45. package/src/components/ui/sheet.tsx +13 -13
  46. package/src/components/ui/sidebar.tsx +60 -60
  47. package/src/components/ui/skeleton.tsx +1 -1
  48. package/src/components/ui/sonner.tsx +1 -1
  49. package/src/components/ui/switch.tsx +2 -2
  50. package/src/components/ui/table.tsx +7 -7
  51. package/src/components/ui/tabs.tsx +3 -3
  52. package/src/components/ui/textarea.tsx +1 -1
  53. package/src/components/ui/toggle.tsx +6 -6
  54. package/src/components/ui/tooltip.tsx +1 -1
  55. package/src/index.css +27 -27
  56. package/src/index.tsx +4 -4
  57. package/src/lib/utils.ts +7 -3
  58. package/src/pages/auth/first-user-page.tsx +18 -18
  59. package/src/pages/auth/login-page.tsx +14 -14
  60. package/src/pages/collections/edit-page.tsx +37 -37
  61. package/src/pages/collections/list-page.tsx +23 -23
  62. package/src/pages/dashboard/dashboard.tsx +49 -49
  63. package/src/pages/globals/editor-page.tsx +13 -13
  64. package/src/pages/media/media-page.tsx +106 -106
  65. package/src/pages/setup/setup-prompt.tsx +48 -48
  66. package/tailwind.config.ts +1 -0
  67. package/vite.config.ts +0 -1
@@ -27,7 +27,7 @@ function Calendar({
27
27
  <DayPicker
28
28
  showOutsideDays={showOutsideDays}
29
29
  className={cn(
30
- "bg-white group/calendar p-4 [--cell-size:2.25rem] shadow-sm rounded-xl border border-border/40",
30
+ "dy-bg-white dy-group/calendar dy-p-4 [--cell-size:dy-2.25rem] dy-shadow-sm dy-rounded-xl dy-border dy-border-border/40",
31
31
  String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
32
32
  String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
33
33
  className
@@ -39,14 +39,14 @@ function Calendar({
39
39
  ...formatters,
40
40
  }}
41
41
  classNames={{
42
- root: cn("w-fit", defaultClassNames.root),
42
+ root: cn("dy-w-fit", defaultClassNames.root),
43
43
  months: cn(
44
- "relative flex flex-col gap-4 md:flex-row",
44
+ "dy-relative dy-flex dy-flex-col dy-gap-4 md:dy-flex-row",
45
45
  defaultClassNames.months
46
46
  ),
47
- month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
47
+ month: cn("dy-flex dy-w-full dy-flex-col dy-gap-4", defaultClassNames.month),
48
48
  nav: cn(
49
- "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
49
+ "dy-absolute dy-inset-x-0 dy-top-0 dy-flex dy-w-full dy-items-center dy-justify-between dy-gap-1",
50
50
  defaultClassNames.nav
51
51
  ),
52
52
  button_previous: cn(
@@ -60,66 +60,66 @@ function Calendar({
60
60
  defaultClassNames.button_next
61
61
  ),
62
62
  month_caption: cn(
63
- "flex h-[--cell-size] w-full items-center justify-center px-[--cell-size] mb-4",
63
+ "dy-flex dy-h-[--cell-size] dy-w-full dy-items-center dy-justify-center dy-px-[--cell-size] dy-mb-4",
64
64
  defaultClassNames.month_caption
65
65
  ),
66
66
  dropdowns: cn(
67
- "flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",
67
+ "dy-flex dy-h-[--cell-size] dy-w-full dy-items-center dy-justify-center dy-gap-1.5 dy-text-sm dy-font-medium",
68
68
  defaultClassNames.dropdowns
69
69
  ),
70
70
  dropdown_root: cn(
71
- "has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",
71
+ "has-focus:dy-border-ring dy-border-input dy-shadow-xs has-focus:dy-ring-ring/50 has-focus:dy-ring-[3px] dy-relative dy-rounded-md dy-border",
72
72
  defaultClassNames.dropdown_root
73
73
  ),
74
74
  dropdown: cn(
75
- "bg-popover absolute inset-0 opacity-0",
75
+ "dy-bg-popover dy-absolute dy-inset-0 dy-opacity-0",
76
76
  defaultClassNames.dropdown
77
77
  ),
78
78
  caption_label: cn(
79
- "select-none font-semibold text-lg tracking-tight",
79
+ "dy-select-none dy-font-semibold dy-text-lg dy-tracking-tight",
80
80
  captionLayout === "label"
81
- ? "text-sm"
82
- : "[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",
81
+ ? "dy-text-sm"
82
+ : "[&>svg]:dy-text-muted-foreground dy-flex dy-h-8 dy-items-center dy-gap-1 dy-rounded-md dy-pl-2 dy-pr-1 dy-text-sm [&>svg]:dy-size-3.5",
83
83
  defaultClassNames.caption_label
84
84
  ),
85
85
  table: "w-full border-collapse",
86
- weekdays: cn("grid grid-cols-7 mb-2", defaultClassNames.weekdays),
86
+ weekdays: cn("dy-grid dy-grid-cols-7 dy-mb-2", defaultClassNames.weekdays),
87
87
  weekday: cn(
88
- "text-muted-foreground text-center select-none text-[0.8rem] font-medium",
88
+ "dy-text-muted-foreground dy-text-center dy-select-none dy-text-[0.8rem] dy-font-medium",
89
89
  defaultClassNames.weekday
90
90
  ),
91
- week: cn("grid grid-cols-7 w-full mt-1", defaultClassNames.week),
91
+ week: cn("dy-grid dy-grid-cols-7 dy-w-full dy-mt-1", defaultClassNames.week),
92
92
  week_number_header: cn(
93
- "w-[--cell-size] select-none",
93
+ "dy-w-[--cell-size] dy-select-none",
94
94
  defaultClassNames.week_number_header
95
95
  ),
96
96
  week_number: cn(
97
- "text-muted-foreground select-none text-[0.8rem]",
97
+ "dy-text-muted-foreground dy-select-none dy-text-[0.8rem]",
98
98
  defaultClassNames.week_number
99
99
  ),
100
100
  day: cn(
101
- "group/day relative flex items-center justify-center h-[--cell-size] w-full select-none p-0 text-center",
101
+ "dy-group/day dy-relative dy-flex dy-items-center dy-justify-center dy-h-[--cell-size] dy-w-full dy-select-none dy-p-0 dy-text-center",
102
102
  defaultClassNames.day
103
103
  ),
104
104
  range_start: cn(
105
- "bg-primary text-primary-foreground rounded-l-md",
105
+ "dy-bg-primary dy-text-primary-foreground dy-rounded-l-md",
106
106
  defaultClassNames.range_start
107
107
  ),
108
- range_middle: cn("bg-accent text-accent-foreground rounded-none", defaultClassNames.range_middle),
109
- range_end: cn("bg-primary text-primary-foreground rounded-r-md", defaultClassNames.range_end),
108
+ range_middle: cn("dy-bg-accent dy-text-accent-foreground dy-rounded-none", defaultClassNames.range_middle),
109
+ range_end: cn("dy-bg-primary dy-text-primary-foreground dy-rounded-r-md", defaultClassNames.range_end),
110
110
  today: cn(
111
- "bg-accent/50 text-accent-foreground font-bold rounded-md",
111
+ "dy-bg-accent/50 dy-text-accent-foreground dy-font-bold dy-rounded-md",
112
112
  defaultClassNames.today
113
113
  ),
114
114
  outside: cn(
115
- "text-muted-foreground/40 aria-selected:text-muted-foreground/40 opacity-50",
115
+ "dy-text-muted-foreground/40 aria-selected:dy-text-muted-foreground/40 dy-opacity-50",
116
116
  defaultClassNames.outside
117
117
  ),
118
118
  disabled: cn(
119
- "text-muted-foreground opacity-50",
119
+ "dy-text-muted-foreground dy-opacity-50",
120
120
  defaultClassNames.disabled
121
121
  ),
122
- hidden: cn("invisible", defaultClassNames.hidden),
122
+ hidden: cn("dy-invisible", defaultClassNames.hidden),
123
123
  ...classNames,
124
124
  }}
125
125
  components={{
@@ -136,28 +136,28 @@ function Calendar({
136
136
  Chevron: ({ className, orientation, ...props }) => {
137
137
  if (orientation === "left") {
138
138
  return (
139
- <ChevronLeftIcon className={cn("size-4", className)} {...props} />
139
+ <ChevronLeftIcon className={cn("dy-size-4", className)} {...props} />
140
140
  )
141
141
  }
142
142
 
143
143
  if (orientation === "right") {
144
144
  return (
145
145
  <ChevronRightIcon
146
- className={cn("size-4", className)}
146
+ className={cn("dy-size-4", className)}
147
147
  {...props}
148
148
  />
149
149
  )
150
150
  }
151
151
 
152
152
  return (
153
- <ChevronDownIcon className={cn("size-4", className)} {...props} />
153
+ <ChevronDownIcon className={cn("dy-size-4", className)} {...props} />
154
154
  )
155
155
  },
156
156
  DayButton: CalendarDayButton,
157
157
  WeekNumber: ({ children, ...props }) => {
158
158
  return (
159
159
  <td {...props}>
160
- <div className="flex size-[--cell-size] items-center justify-center text-center">
160
+ <div className="dy-flex dy-size-[--cell-size] dy-items-center dy-justify-center dy-text-center">
161
161
  {children}
162
162
  </div>
163
163
  </td>
@@ -197,13 +197,13 @@ function CalendarDayButton({
197
197
  data-range-end={modifiers.range_end}
198
198
  data-range-middle={modifiers.range_middle}
199
199
  className={cn(
200
- "flex items-center justify-center h-[--cell-size] w-full min-w-[--cell-size] p-0 font-normal transition-all",
201
- "hover:bg-accent hover:text-accent-foreground",
202
- "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[selected-single=true]:rounded-full data-[selected-single=true]:shadow-lg",
203
- "data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-middle=true]:rounded-none",
204
- "data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-start=true]:rounded-l-md",
205
- "data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-end=true]:rounded-r-md",
206
- "group-data-[focused=true]/day:ring-2 group-data-[focused=true]/day:ring-ring group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10",
200
+ "dy-flex dy-items-center dy-justify-center dy-h-[--cell-size] dy-w-full dy-min-w-[--cell-size] dy-p-0 dy-font-normal dy-transition-all",
201
+ "hover:dy-bg-accent hover:dy-text-accent-foreground",
202
+ "data-[selected-single=true]:dy-bg-primary data-[selected-single=true]:dy-text-primary-foreground data-[selected-single=true]:dy-rounded-full data-[selected-single=true]:dy-shadow-lg",
203
+ "data-[range-middle=true]:dy-bg-accent data-[range-middle=true]:dy-text-accent-foreground data-[range-middle=true]:dy-rounded-none",
204
+ "data-[range-start=true]:dy-bg-primary data-[range-start=true]:dy-text-primary-foreground data-[range-start=true]:dy-rounded-l-md",
205
+ "data-[range-end=true]:dy-bg-primary data-[range-end=true]:dy-text-primary-foreground data-[range-end=true]:dy-rounded-r-md",
206
+ "dy-group-data-[focused=true]/day:dy-ring-2 dy-group-data-[focused=true]/day:dy-ring-ring dy-group-data-[focused=true]/day:dy-relative dy-group-data-[focused=true]/day:dy-z-10",
207
207
  className
208
208
  )}
209
209
  {...props}
@@ -9,7 +9,7 @@ const Card = React.forwardRef<
9
9
  <div
10
10
  ref={ref}
11
11
  className={cn(
12
- "rounded-lg border bg-card text-card-foreground shadow-sm",
12
+ "dy-rounded-lg dy-border dy-bg-card dy-text-card-foreground dy-shadow-sm",
13
13
  className
14
14
  )}
15
15
  {...props}
@@ -23,7 +23,7 @@ const CardHeader = React.forwardRef<
23
23
  >(({ className, ...props }, ref) => (
24
24
  <div
25
25
  ref={ref}
26
- className={cn("flex flex-col space-y-1.5 p-6", className)}
26
+ className={cn("dy-flex dy-flex-col dy-space-y-1.5 dy-p-6", className)}
27
27
  {...props}
28
28
  />
29
29
  ))
@@ -36,7 +36,7 @@ const CardTitle = React.forwardRef<
36
36
  <div
37
37
  ref={ref}
38
38
  className={cn(
39
- "text-2xl font-semibold leading-none tracking-tight",
39
+ "dy-text-2xl dy-font-semibold dy-leading-none dy-tracking-tight",
40
40
  className
41
41
  )}
42
42
  {...props}
@@ -50,7 +50,7 @@ const CardDescription = React.forwardRef<
50
50
  >(({ className, ...props }, ref) => (
51
51
  <div
52
52
  ref={ref}
53
- className={cn("text-sm text-muted-foreground", className)}
53
+ className={cn("dy-text-sm dy-text-muted-foreground", className)}
54
54
  {...props}
55
55
  />
56
56
  ))
@@ -60,7 +60,7 @@ const CardContent = React.forwardRef<
60
60
  HTMLDivElement,
61
61
  React.HTMLAttributes<HTMLDivElement>
62
62
  >(({ className, ...props }, ref) => (
63
- <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
63
+ <div ref={ref} className={cn("dy-p-6 dy-pt-0", className)} {...props} />
64
64
  ))
65
65
  CardContent.displayName = "CardContent"
66
66
 
@@ -70,7 +70,7 @@ const CardFooter = React.forwardRef<
70
70
  >(({ className, ...props }, ref) => (
71
71
  <div
72
72
  ref={ref}
73
- className={cn("flex items-center p-6 pt-0", className)}
73
+ className={cn("dy-flex dy-items-center dy-p-6 dy-pt-0", className)}
74
74
  {...props}
75
75
  />
76
76
  ))
@@ -11,15 +11,15 @@ const Checkbox = React.forwardRef<
11
11
  <CheckboxPrimitive.Root
12
12
  ref={ref}
13
13
  className={cn(
14
- "grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
14
+ "dy-grid dy-place-content-center dy-peer dy-h-4 dy-w-4 dy-shrink-0 dy-rounded-sm dy-border dy-border-primary dy-ring-offset-background focus-visible:dy-outline-none focus-visible:dy-ring-2 focus-visible:dy-ring-ring focus-visible:dy-ring-offset-2 disabled:dy-cursor-not-allowed disabled:dy-opacity-50 data-[state=checked]:dy-bg-primary data-[state=checked]:dy-text-primary-foreground",
15
15
  className
16
16
  )}
17
17
  {...props}
18
18
  >
19
19
  <CheckboxPrimitive.Indicator
20
- className={cn("grid place-content-center text-current")}
20
+ className={cn("dy-grid dy-place-content-center dy-text-current")}
21
21
  >
22
- <Check className="h-4 w-4" />
22
+ <Check className="dy-h-4 dy-w-4" />
23
23
  </CheckboxPrimitive.Indicator>
24
24
  </CheckboxPrimitive.Root>
25
25
  ))
@@ -13,7 +13,7 @@ const Command = React.forwardRef<
13
13
  <CommandPrimitive
14
14
  ref={ref}
15
15
  className={cn(
16
- "flex h-full w-full flex-col overflow-hidden rounded-md bg-white text-popover-foreground",
16
+ "dy-flex dy-h-full dy-w-full dy-flex-col dy-overflow-hidden dy-rounded-md dy-bg-white dy-text-popover-foreground",
17
17
  className
18
18
  )}
19
19
  {...props}
@@ -24,8 +24,8 @@ Command.displayName = CommandPrimitive.displayName
24
24
  const CommandDialog = ({ children, ...props }: DialogProps) => {
25
25
  return (
26
26
  <Dialog {...props}>
27
- <DialogContent className="overflow-hidden p-0 shadow-lg">
28
- <Command className="[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5">
27
+ <DialogContent className="dy-overflow-hidden dy-p-0 dy-shadow-lg">
28
+ <Command className="[&_[cmdk-group-heading]]:dy-px-2 [&_[cmdk-group-heading]]:dy-font-medium [&_[cmdk-group-heading]]:dy-text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:dy-pt-0 [&_[cmdk-group]]:dy-px-2 [&_[cmdk-input-wrapper]_svg]:dy-h-5 [&_[cmdk-input-wrapper]_svg]:dy-w-5 [&_[cmdk-input]]:dy-h-12 [&_[cmdk-item]]:dy-px-2 [&_[cmdk-item]]:dy-py-3 [&_[cmdk-item]_svg]:dy-h-5 [&_[cmdk-item]_svg]:dy-w-5">
29
29
  {children}
30
30
  </Command>
31
31
  </DialogContent>
@@ -37,12 +37,12 @@ const CommandInput = React.forwardRef<
37
37
  React.ElementRef<typeof CommandPrimitive.Input>,
38
38
  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>
39
39
  >(({ className, ...props }, ref) => (
40
- <div className="flex items-center border-b px-3" cmdk-input-wrapper="">
41
- <Search className="mr-2 h-4 w-4 shrink-0 opacity-50" />
40
+ <div className="dy-flex dy-items-center dy-border-b dy-px-3" cmdk-input-wrapper="">
41
+ <Search className="dy-mr-2 dy-h-4 dy-w-4 dy-shrink-0 dy-opacity-50" />
42
42
  <CommandPrimitive.Input
43
43
  ref={ref}
44
44
  className={cn(
45
- "flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
45
+ "dy-flex dy-h-11 dy-w-full dy-rounded-md dy-bg-transparent dy-py-3 dy-text-sm dy-outline-none placeholder:dy-text-muted-foreground disabled:dy-cursor-not-allowed disabled:dy-opacity-50",
46
46
  className
47
47
  )}
48
48
  {...props}
@@ -58,7 +58,7 @@ const CommandList = React.forwardRef<
58
58
  >(({ className, ...props }, ref) => (
59
59
  <CommandPrimitive.List
60
60
  ref={ref}
61
- className={cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className)}
61
+ className={cn("dy-max-h-[300px] dy-overflow-y-auto dy-overflow-x-hidden", className)}
62
62
  {...props}
63
63
  />
64
64
  ))
@@ -71,7 +71,7 @@ const CommandEmpty = React.forwardRef<
71
71
  >((props, ref) => (
72
72
  <CommandPrimitive.Empty
73
73
  ref={ref}
74
- className="py-6 text-center text-sm"
74
+ className="dy-py-6 dy-text-center dy-text-sm"
75
75
  {...props}
76
76
  />
77
77
  ))
@@ -85,7 +85,7 @@ const CommandGroup = React.forwardRef<
85
85
  <CommandPrimitive.Group
86
86
  ref={ref}
87
87
  className={cn(
88
- "overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
88
+ "dy-overflow-hidden dy-p-1 dy-text-foreground [&_[cmdk-group-heading]]:dy-px-2 [&_[cmdk-group-heading]]:dy-py-1.5 [&_[cmdk-group-heading]]:dy-text-xs [&_[cmdk-group-heading]]:dy-font-medium [&_[cmdk-group-heading]]:dy-text-muted-foreground",
89
89
  className
90
90
  )}
91
91
  {...props}
@@ -100,7 +100,7 @@ const CommandSeparator = React.forwardRef<
100
100
  >(({ className, ...props }, ref) => (
101
101
  <CommandPrimitive.Separator
102
102
  ref={ref}
103
- className={cn("-mx-1 h-px bg-border", className)}
103
+ className={cn("dy--mx-1 dy-h-px dy-bg-border", className)}
104
104
  {...props}
105
105
  />
106
106
  ))
@@ -113,7 +113,7 @@ const CommandItem = React.forwardRef<
113
113
  <CommandPrimitive.Item
114
114
  ref={ref}
115
115
  className={cn(
116
- "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
116
+ "dy-relative dy-flex dy-cursor-default dy-gap-2 dy-select-none dy-items-center dy-rounded-sm dy-px-2 dy-py-1.5 dy-text-sm dy-outline-none data-[disabled=true]:dy-pointer-events-none data-[selected='true']:dy-bg-accent data-[selected=true]:dy-text-accent-foreground data-[disabled=true]:dy-opacity-50 [&_svg]:dy-pointer-events-none [&_svg]:dy-size-4 [&_svg]:dy-shrink-0",
117
117
  className
118
118
  )}
119
119
  {...props}
@@ -129,7 +129,7 @@ const CommandShortcut = ({
129
129
  return (
130
130
  <span
131
131
  className={cn(
132
- "ml-auto text-xs tracking-widest text-muted-foreground",
132
+ "dy-ml-auto dy-text-xs dy-tracking-widest dy-text-muted-foreground",
133
133
  className
134
134
  )}
135
135
  {...props}
@@ -88,8 +88,8 @@ export function DataTable<TData, TValue>({
88
88
  })
89
89
 
90
90
  return (
91
- <div className="w-full space-y-4">
92
- <div className="flex items-center gap-4">
91
+ <div className="dy-w-full dy-space-y-4">
92
+ <div className="dy-flex dy-items-center dy-gap-4">
93
93
  {searchKey && (
94
94
  <Input
95
95
  placeholder={`Search ${searchKey}...`}
@@ -97,11 +97,11 @@ export function DataTable<TData, TValue>({
97
97
  onChange={(event) =>
98
98
  table.getColumn(searchKey)?.setFilterValue(event.target.value)
99
99
  }
100
- className="max-w-sm"
100
+ className="dy-max-w-sm"
101
101
  />
102
102
  )}
103
103
  {bulkActions && table.getFilteredSelectedRowModel().rows.length > 0 && (
104
- <div className="flex items-center gap-2 animate-in slide-in-from-left-2">
104
+ <div className="dy-flex dy-items-center dy-gap-2 dy-animate-in dy-slide-in-from-left-2">
105
105
  {bulkActions(
106
106
  table
107
107
  .getFilteredSelectedRowModel()
@@ -111,8 +111,8 @@ export function DataTable<TData, TValue>({
111
111
  )}
112
112
  <DropdownMenu>
113
113
  <DropdownMenuTrigger asChild>
114
- <Button variant="outline" size="sm" className="ml-auto flex h-8 gap-2">
115
- <Settings2 className="h-4 w-4" />
114
+ <Button variant="outline" size="sm" className="dy-ml-auto dy-flex dy-h-8 dy-gap-2">
115
+ <Settings2 className="dy-h-4 dy-w-4" />
116
116
  View
117
117
  </Button>
118
118
  </DropdownMenuTrigger>
@@ -124,7 +124,7 @@ export function DataTable<TData, TValue>({
124
124
  return (
125
125
  <DropdownMenuCheckboxItem
126
126
  key={column.id}
127
- className="capitalize"
127
+ className="dy-capitalize"
128
128
  checked={column.getIsVisible()}
129
129
  onCheckedChange={(value) => column.toggleVisibility(!!value)}
130
130
  >
@@ -135,7 +135,7 @@ export function DataTable<TData, TValue>({
135
135
  </DropdownMenuContent>
136
136
  </DropdownMenu>
137
137
  </div>
138
- <div className="overflow-hidden">
138
+ <div className="dy-overflow-hidden">
139
139
  <Table>
140
140
  <TableHeader>
141
141
  {table.getHeaderGroups().map((headerGroup) => (
@@ -155,16 +155,16 @@ export function DataTable<TData, TValue>({
155
155
  </TableRow>
156
156
  ))}
157
157
  </TableHeader>
158
- <TableBody className="border-t border-border/40">
158
+ <TableBody className="dy-border-t dy-border-border/40">
159
159
  {table.getRowModel().rows?.length ? (
160
160
  table.getRowModel().rows.map((row) => (
161
161
  <TableRow
162
162
  key={row.id}
163
163
  data-state={row.getIsSelected() && "selected"}
164
- className="border-none even:bg-primary/[0.03] hover:bg-primary/[0.06] transition-colors duration-200"
164
+ className="dy-border-none even:dy-bg-primary/[0.03] hover:dy-bg-primary/[0.06] dy-transition-colors dy-duration-200"
165
165
  >
166
166
  {row.getVisibleCells().map((cell) => (
167
- <TableCell key={cell.id} className="py-4 px-4 border-none first:pl-4 last:pr-4">
167
+ <TableCell key={cell.id} className="dy-py-4 dy-px-4 dy-border-none first:dy-pl-4 last:dy-pr-4">
168
168
  {flexRender(
169
169
  cell.column.columnDef.cell,
170
170
  cell.getContext()
@@ -177,7 +177,7 @@ export function DataTable<TData, TValue>({
177
177
  <TableRow>
178
178
  <TableCell
179
179
  colSpan={columns.length}
180
- className="h-24 text-center"
180
+ className="dy-h-24 dy-text-center"
181
181
  >
182
182
  No results.
183
183
  </TableCell>
@@ -186,21 +186,21 @@ export function DataTable<TData, TValue>({
186
186
  </TableBody>
187
187
  </Table>
188
188
  </div>
189
- <div className="flex items-center justify-between px-2">
190
- <div className="flex-1 text-sm text-muted-foreground">
189
+ <div className="dy-flex dy-items-center dy-justify-between dy-px-2">
190
+ <div className="dy-flex-1 dy-text-sm dy-text-muted-foreground">
191
191
  {table.getFilteredSelectedRowModel().rows.length} of{" "}
192
192
  {table.getFilteredRowModel().rows.length} row(s) selected.
193
193
  </div>
194
- <div className="flex items-center space-x-2">
194
+ <div className="dy-flex dy-items-center dy-space-x-2">
195
195
  <Button
196
196
  variant="outline"
197
197
  size="sm"
198
198
  onClick={() => table.previousPage()}
199
199
  disabled={!table.getCanPreviousPage()}
200
200
  >
201
- <ChevronLeft className="h-4 w-4" />
201
+ <ChevronLeft className="dy-h-4 dy-w-4" />
202
202
  </Button>
203
- <span className="text-sm font-medium">
203
+ <span className="dy-text-sm dy-font-medium">
204
204
  Page {table.getState().pagination.pageIndex + 1} of{" "}
205
205
  {table.getPageCount()}
206
206
  </span>
@@ -210,7 +210,7 @@ export function DataTable<TData, TValue>({
210
210
  onClick={() => table.nextPage()}
211
211
  disabled={!table.getCanNextPage()}
212
212
  >
213
- <ChevronRight className="h-4 w-4" />
213
+ <ChevronRight className="dy-h-4 dy-w-4" />
214
214
  </Button>
215
215
  </div>
216
216
  </div>
@@ -21,7 +21,7 @@ const DialogOverlay = React.forwardRef<
21
21
  <DialogPrimitive.Overlay
22
22
  ref={ref}
23
23
  className={cn(
24
- "fixed inset-0 z-50 bg-black/40 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
24
+ "dy-fixed dy-inset-0 dy-z-50 dy-bg-black/40 dy-backdrop-blur-[2px] data-[state=open]:dy-animate-in data-[state=closed]:dy-animate-out data-[state=closed]:dy-fade-out-0 data-[state=open]:dy-fade-in-0",
25
25
  className
26
26
  )}
27
27
  {...props}
@@ -38,15 +38,15 @@ const DialogContent = React.forwardRef<
38
38
  <DialogPrimitive.Content
39
39
  ref={ref}
40
40
  className={cn(
41
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-white p-6 shadow-2xl duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-xl",
41
+ "dy-fixed dy-left-[50%] dy-top-[50%] dy-z-50 dy-grid dy-w-full dy-max-w-lg dy-translate-x-[-50%] dy-translate-y-[-50%] dy-gap-4 dy-border dy-bg-white dy-p-6 dy-shadow-2xl dy-duration-200 data-[state=open]:dy-animate-in data-[state=closed]:dy-animate-out data-[state=closed]:dy-fade-out-0 data-[state=open]:dy-fade-in-0 data-[state=closed]:dy-zoom-out-95 data-[state=open]:dy-zoom-in-95 data-[state=closed]:dy-slide-out-to-left-1/2 data-[state=closed]:dy-slide-out-to-top-[48%] data-[state=open]:dy-slide-in-from-left-1/2 data-[state=open]:dy-slide-in-from-top-[48%] sm:dy-rounded-xl",
42
42
  className
43
43
  )}
44
44
  {...props}
45
45
  >
46
46
  {children}
47
- <DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
48
- <X className="h-4 w-4" />
49
- <span className="sr-only">Close</span>
47
+ <DialogPrimitive.Close className="dy-absolute dy-right-4 dy-top-4 dy-rounded-sm dy-opacity-70 dy-ring-offset-background dy-transition-opacity hover:dy-opacity-100 focus:dy-outline-none focus:dy-ring-2 focus:dy-ring-ring focus:dy-ring-offset-2 disabled:dy-pointer-events-none data-[state=open]:dy-bg-accent data-[state=open]:dy-text-muted-foreground">
48
+ <X className="dy-h-4 dy-w-4" />
49
+ <span className="dy-sr-only">Close</span>
50
50
  </DialogPrimitive.Close>
51
51
  </DialogPrimitive.Content>
52
52
  </DialogPortal>
@@ -59,7 +59,7 @@ const DialogHeader = ({
59
59
  }: React.HTMLAttributes<HTMLDivElement>) => (
60
60
  <div
61
61
  className={cn(
62
- "flex flex-col space-y-1.5 text-center sm:text-left",
62
+ "dy-flex dy-flex-col dy-space-y-1.5 dy-text-center sm:dy-text-left",
63
63
  className
64
64
  )}
65
65
  {...props}
@@ -73,7 +73,7 @@ const DialogFooter = ({
73
73
  }: React.HTMLAttributes<HTMLDivElement>) => (
74
74
  <div
75
75
  className={cn(
76
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
76
+ "dy-flex dy-flex-col-reverse sm:dy-flex-row sm:dy-justify-end sm:dy-space-x-2",
77
77
  className
78
78
  )}
79
79
  {...props}
@@ -88,7 +88,7 @@ const DialogTitle = React.forwardRef<
88
88
  <DialogPrimitive.Title
89
89
  ref={ref}
90
90
  className={cn(
91
- "text-lg font-semibold leading-none tracking-tight",
91
+ "dy-text-lg dy-font-semibold dy-leading-none dy-tracking-tight",
92
92
  className
93
93
  )}
94
94
  {...props}
@@ -102,7 +102,7 @@ const DialogDescription = React.forwardRef<
102
102
  >(({ className, ...props }, ref) => (
103
103
  <DialogPrimitive.Description
104
104
  ref={ref}
105
- className={cn("text-sm text-muted-foreground", className)}
105
+ className={cn("dy-text-sm dy-text-muted-foreground", className)}
106
106
  {...props}
107
107
  />
108
108
  ))
@@ -27,14 +27,14 @@ const DropdownMenuSubTrigger = React.forwardRef<
27
27
  <DropdownMenuPrimitive.SubTrigger
28
28
  ref={ref}
29
29
  className={cn(
30
- "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
31
- inset && "pl-8",
30
+ "dy-flex dy-cursor-default dy-select-none dy-items-center dy-gap-2 dy-rounded-sm dy-px-2 dy-py-1.5 dy-text-sm dy-outline-none focus:dy-bg-accent data-[state=open]:dy-bg-accent [&_svg]:dy-pointer-events-none [&_svg]:dy-size-4 [&_svg]:dy-shrink-0",
31
+ inset && "dy-pl-8",
32
32
  className
33
33
  )}
34
34
  {...props}
35
35
  >
36
36
  {children}
37
- <ChevronRight className="ml-auto" />
37
+ <ChevronRight className="dy-ml-auto" />
38
38
  </DropdownMenuPrimitive.SubTrigger>
39
39
  ))
40
40
  DropdownMenuSubTrigger.displayName =
@@ -47,7 +47,7 @@ const DropdownMenuSubContent = React.forwardRef<
47
47
  <DropdownMenuPrimitive.SubContent
48
48
  ref={ref}
49
49
  className={cn(
50
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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 origin-[--radix-dropdown-menu-content-transform-origin]",
50
+ "dy-z-50 dy-min-w-[8rem] dy-overflow-hidden dy-rounded-md dy-border dy-bg-popover dy-p-1 dy-text-popover-foreground dy-shadow-lg data-[state=open]:dy-animate-in data-[state=closed]:dy-animate-out data-[state=closed]:dy-fade-out-0 data-[state=open]:dy-fade-in-0 data-[state=closed]:dy-zoom-out-95 data-[state=open]:dy-zoom-in-95 data-[side=bottom]:dy-slide-in-from-top-2 data-[side=left]:dy-slide-in-from-right-2 data-[side=right]:dy-slide-in-from-left-2 data-[side=top]:dy-slide-in-from-bottom-2 dy-origin-[--radix-dropdown-menu-content-transform-origin]",
51
51
  className
52
52
  )}
53
53
  {...props}
@@ -83,8 +83,8 @@ const DropdownMenuItem = React.forwardRef<
83
83
  <DropdownMenuPrimitive.Item
84
84
  ref={ref}
85
85
  className={cn(
86
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
87
- inset && "pl-8",
86
+ "dy-relative dy-flex dy-cursor-default dy-select-none dy-items-center dy-gap-2 dy-rounded-sm dy-px-2 dy-py-1.5 dy-text-sm dy-outline-none dy-transition-colors focus:dy-bg-accent focus:dy-text-accent-foreground data-[disabled]:dy-pointer-events-none data-[disabled]:dy-opacity-50 [&_svg]:dy-pointer-events-none [&_svg]:dy-size-4 [&_svg]:dy-shrink-0",
87
+ inset && "dy-pl-8",
88
88
  className
89
89
  )}
90
90
  {...props}
@@ -99,15 +99,15 @@ const DropdownMenuCheckboxItem = React.forwardRef<
99
99
  <DropdownMenuPrimitive.CheckboxItem
100
100
  ref={ref}
101
101
  className={cn(
102
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
102
+ "dy-relative dy-flex dy-cursor-default dy-select-none dy-items-center dy-rounded-sm dy-py-1.5 dy-pl-8 dy-pr-2 dy-text-sm dy-outline-none dy-transition-colors focus:dy-bg-accent focus:dy-text-accent-foreground data-[disabled]:dy-pointer-events-none data-[disabled]:dy-opacity-50",
103
103
  className
104
104
  )}
105
105
  checked={checked}
106
106
  {...props}
107
107
  >
108
- <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
108
+ <span className="dy-absolute dy-left-2 dy-flex dy-h-3.5 dy-w-3.5 dy-items-center dy-justify-center">
109
109
  <DropdownMenuPrimitive.ItemIndicator>
110
- <Check className="h-4 w-4" />
110
+ <Check className="dy-h-4 dy-w-4" />
111
111
  </DropdownMenuPrimitive.ItemIndicator>
112
112
  </span>
113
113
  {children}
@@ -123,14 +123,14 @@ const DropdownMenuRadioItem = React.forwardRef<
123
123
  <DropdownMenuPrimitive.RadioItem
124
124
  ref={ref}
125
125
  className={cn(
126
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
126
+ "dy-relative dy-flex dy-cursor-default dy-select-none dy-items-center dy-rounded-sm dy-py-1.5 dy-pl-8 dy-pr-2 dy-text-sm dy-outline-none dy-transition-colors focus:dy-bg-accent focus:dy-text-accent-foreground data-[disabled]:dy-pointer-events-none data-[disabled]:dy-opacity-50",
127
127
  className
128
128
  )}
129
129
  {...props}
130
130
  >
131
- <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
131
+ <span className="dy-absolute dy-left-2 dy-flex dy-h-3.5 dy-w-3.5 dy-items-center dy-justify-center">
132
132
  <DropdownMenuPrimitive.ItemIndicator>
133
- <Circle className="h-2 w-2 fill-current" />
133
+ <Circle className="dy-h-2 dy-w-2 dy-fill-current" />
134
134
  </DropdownMenuPrimitive.ItemIndicator>
135
135
  </span>
136
136
  {children}
@@ -147,8 +147,8 @@ const DropdownMenuLabel = React.forwardRef<
147
147
  <DropdownMenuPrimitive.Label
148
148
  ref={ref}
149
149
  className={cn(
150
- "px-2 py-1.5 text-sm font-semibold",
151
- inset && "pl-8",
150
+ "dy-px-2 dy-py-1.5 dy-text-sm dy-font-semibold",
151
+ inset && "dy-pl-8",
152
152
  className
153
153
  )}
154
154
  {...props}
@@ -162,7 +162,7 @@ const DropdownMenuSeparator = React.forwardRef<
162
162
  >(({ className, ...props }, ref) => (
163
163
  <DropdownMenuPrimitive.Separator
164
164
  ref={ref}
165
- className={cn("-mx-1 my-1 h-px bg-muted", className)}
165
+ className={cn("dy--mx-1 dy-my-1 dy-h-px dy-bg-muted", className)}
166
166
  {...props}
167
167
  />
168
168
  ))
@@ -174,7 +174,7 @@ const DropdownMenuShortcut = ({
174
174
  }: React.HTMLAttributes<HTMLSpanElement>) => {
175
175
  return (
176
176
  <span
177
- className={cn("ml-auto text-xs tracking-widest opacity-60", className)}
177
+ className={cn("dy-ml-auto dy-text-xs dy-tracking-widest dy-opacity-60", className)}
178
178
  {...props}
179
179
  />
180
180
  )