@moontra/moonui 2.1.9 → 2.2.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 (45) hide show
  1. package/dist/index.d.mts +1579 -0
  2. package/dist/index.d.ts +1579 -0
  3. package/dist/index.js +182 -149
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +182 -149
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +4 -4
  8. package/src/components/ui/accordion.tsx +1 -1
  9. package/src/components/ui/alert.tsx +3 -3
  10. package/src/components/ui/aspect-ratio.tsx +1 -1
  11. package/src/components/ui/avatar.tsx +6 -6
  12. package/src/components/ui/badge.tsx +1 -1
  13. package/src/components/ui/breadcrumb.tsx +10 -10
  14. package/src/components/ui/button.tsx +48 -51
  15. package/src/components/ui/calendar.tsx +1 -1
  16. package/src/components/ui/card.tsx +7 -7
  17. package/src/components/ui/checkbox.tsx +1 -1
  18. package/src/components/ui/collapsible.tsx +3 -3
  19. package/src/components/ui/color-picker.tsx +2 -2
  20. package/src/components/ui/command.tsx +4 -4
  21. package/src/components/ui/data-table.tsx +1 -1
  22. package/src/components/ui/date-picker.tsx +9 -8
  23. package/src/components/ui/dialog.tsx +2 -2
  24. package/src/components/ui/draggable-list.tsx +1 -1
  25. package/src/components/ui/dropdown-menu.tsx +2 -2
  26. package/src/components/ui/file-upload.tsx +2 -2
  27. package/src/components/ui/github-stars.tsx +1 -1
  28. package/src/components/ui/index.ts +0 -1
  29. package/src/components/ui/input.tsx +1 -1
  30. package/src/components/ui/moon-logo.tsx +1 -1
  31. package/src/components/ui/pagination.tsx +8 -8
  32. package/src/components/ui/popover.tsx +3 -3
  33. package/src/components/ui/progress.tsx +1 -1
  34. package/src/components/ui/radio-group.tsx +1 -1
  35. package/src/components/ui/select.tsx +2 -2
  36. package/src/components/ui/skeleton.tsx +19 -7
  37. package/src/components/ui/slider.tsx +1 -1
  38. package/src/components/ui/switch.tsx +1 -1
  39. package/src/components/ui/table.tsx +5 -5
  40. package/src/components/ui/tabs.tsx +4 -1
  41. package/src/components/ui/textarea.tsx +1 -1
  42. package/src/components/ui/toast.tsx +3 -3
  43. package/src/components/ui/toggle.tsx +2 -3
  44. package/src/components/ui/tooltip.tsx +2 -5
  45. package/src/lib/micro-interactions.ts +2 -1
@@ -178,7 +178,7 @@ export function GitHubStarButton({
178
178
  <Button
179
179
  variant="outline"
180
180
  size={size}
181
- className={cn("group", className)}
181
+ className={cn("moonui-theme", "group", className)}
182
182
  asChild
183
183
  >
184
184
  <a
@@ -23,7 +23,6 @@ export * from "./gesture-drawer"
23
23
  export * from "./github-stars"
24
24
  export * from "./input"
25
25
  export * from "./label"
26
- export * from "./locked-component"
27
26
  export * from "./moon-logo"
28
27
  export * from "./pagination"
29
28
  export * from "./popover"
@@ -146,7 +146,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
146
146
 
147
147
  return (
148
148
  <div className="space-y-1.5 w-full">
149
- <div className={cn(inputWrapperVariants({ size }), wrapperClassName)}>
149
+ <div className={cn("moonui-theme", inputWrapperVariants({ size }), wrapperClassName)}>
150
150
  {leftIcon && (
151
151
  <div className="absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none">
152
152
  {loading ? <Loader2 className="h-4 w-4 animate-spin" /> : leftIcon}
@@ -18,7 +18,7 @@ export function MoonLogo({
18
18
  const gradientId = `moon-gradient-${logoId}`
19
19
 
20
20
  return (
21
- <div className={cn("flex items-center gap-2", className)}>
21
+ <div className={cn("moonui-theme", "flex items-center gap-2", className)}>
22
22
  {/* Moon Icon */}
23
23
  <svg
24
24
  width="32"
@@ -7,7 +7,7 @@ const Pagination = ({ className, ...props }: React.ComponentProps<"nav">) => (
7
7
  <nav
8
8
  role="navigation"
9
9
  aria-label="pagination"
10
- className={cn("mx-auto flex w-full justify-center", className)}
10
+ className={cn("moonui-theme", "mx-auto flex w-full justify-center", className)}
11
11
  {...props}
12
12
  />
13
13
  )
@@ -19,7 +19,7 @@ const PaginationContent = React.forwardRef<
19
19
  >(({ className, ...props }, ref) => (
20
20
  <ul
21
21
  ref={ref}
22
- className={cn("flex flex-row items-center gap-1", className)}
22
+ className={cn("moonui-theme", "flex flex-row items-center gap-1", className)}
23
23
  {...props}
24
24
  />
25
25
  ))
@@ -29,7 +29,7 @@ const PaginationItem = React.forwardRef<
29
29
  HTMLLIElement,
30
30
  React.ComponentProps<"li">
31
31
  >(({ className, ...props }, ref) => (
32
- <li ref={ref} className={cn("", className)} {...props} />
32
+ <li ref={ref} className={cn("moonui-theme", "", className)} {...props} />
33
33
  ))
34
34
  PaginationItem.displayName = "PaginationItem"
35
35
 
@@ -64,8 +64,8 @@ const PaginationPrevious = ({
64
64
  }: React.ComponentProps<typeof PaginationLink>) => (
65
65
  <PaginationLink
66
66
  aria-label="Go to previous page"
67
- size="default"
68
- className={cn("gap-1 pl-2.5", className)}
67
+ size="md"
68
+ className={cn("moonui-theme", "gap-1 pl-2.5", className)}
69
69
  {...props}
70
70
  >
71
71
  <ChevronLeft className="h-4 w-4" />
@@ -80,8 +80,8 @@ const PaginationNext = ({
80
80
  }: React.ComponentProps<typeof PaginationLink>) => (
81
81
  <PaginationLink
82
82
  aria-label="Go to next page"
83
- size="default"
84
- className={cn("gap-1 pr-2.5", className)}
83
+ size="md"
84
+ className={cn("moonui-theme", "gap-1 pr-2.5", className)}
85
85
  {...props}
86
86
  >
87
87
  <span>Next</span>
@@ -96,7 +96,7 @@ const PaginationEllipsis = ({
96
96
  }: React.ComponentProps<"span">) => (
97
97
  <span
98
98
  aria-hidden
99
- className={cn("flex h-9 w-9 items-center justify-center", className)}
99
+ className={cn("moonui-theme", "flex h-9 w-9 items-center justify-center", className)}
100
100
  {...props}
101
101
  >
102
102
  <MoreHorizontal className="h-4 w-4" />
@@ -142,7 +142,7 @@ const PopoverClose = PopoverPrimitive.Close;
142
142
  */
143
143
  const PopoverSeparator = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
144
144
  <div
145
- className={cn("my-2 h-px bg-border", className)}
145
+ className={cn("moonui-theme", "my-2 h-px bg-border", className)}
146
146
  {...props}
147
147
  />
148
148
  );
@@ -153,7 +153,7 @@ PopoverSeparator.displayName = "PopoverSeparator";
153
153
  */
154
154
  const PopoverHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
155
155
  <div
156
- className={cn("-mx-4 -mt-4 mb-3 px-4 pt-4 pb-3 border-b border-border", className)}
156
+ className={cn("moonui-theme", "-mx-4 -mt-4 mb-3 px-4 pt-4 pb-3 border-b border-border", className)}
157
157
  {...props}
158
158
  />
159
159
  );
@@ -164,7 +164,7 @@ PopoverHeader.displayName = "PopoverHeader";
164
164
  */
165
165
  const PopoverFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
166
166
  <div
167
- className={cn("-mx-4 -mb-4 mt-3 px-4 pt-3 pb-4 border-t border-border", className)}
167
+ className={cn("moonui-theme", "-mx-4 -mb-4 mt-3 px-4 pt-3 pb-4 border-t border-border", className)}
168
168
  {...props}
169
169
  />
170
170
  );
@@ -155,7 +155,7 @@ const Progress = React.forwardRef<
155
155
  )}
156
156
  <div
157
157
  ref={ref}
158
- className={cn(progressVariants({ variant, size, radius, animation }), className)}
158
+ className={cn("moonui-theme", progressVariants({ variant, size, radius, animation }), className)}
159
159
  role="progressbar"
160
160
  aria-valuemin={0}
161
161
  aria-valuemax={max}
@@ -69,7 +69,7 @@ const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(
69
69
  <div
70
70
  ref={ref}
71
71
  role="radiogroup"
72
- className={cn("grid gap-2", className)}
72
+ className={cn("moonui-theme", "grid gap-2", className)}
73
73
  {...props}
74
74
  />
75
75
  </RadioGroupContext.Provider>
@@ -185,7 +185,7 @@ const SelectLabel = React.forwardRef<
185
185
  >(({ className, ...props }, ref) => (
186
186
  <SelectPrimitive.Label
187
187
  ref={ref}
188
- className={cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className)}
188
+ className={cn("moonui-theme", "py-1.5 pl-8 pr-2 text-sm font-semibold", className)}
189
189
  {...props}
190
190
  />
191
191
  ))
@@ -253,7 +253,7 @@ const SelectSeparator = React.forwardRef<
253
253
  >(({ className, ...props }, ref) => (
254
254
  <SelectPrimitive.Separator
255
255
  ref={ref}
256
- className={cn("-mx-1 my-1 h-px bg-muted dark:bg-gray-700", className)}
256
+ className={cn("moonui-theme", "-mx-1 my-1 h-px bg-muted dark:bg-gray-700", className)}
257
257
  {...props}
258
258
  />
259
259
  ))
@@ -4,7 +4,7 @@ import * as React from "react";
4
4
  import { cva, type VariantProps } from "class-variance-authority";
5
5
  import { cn } from "../../lib/utils";
6
6
  import { motion } from "framer-motion";
7
- import { skeletonAnimation } from "@/lib/micro-interactions";
7
+ import { skeletonAnimation } from "../../lib/micro-interactions";
8
8
 
9
9
  /**
10
10
  * Skeleton Component
@@ -93,6 +93,17 @@ export const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(
93
93
  style,
94
94
  ...props
95
95
  }, ref) => {
96
+ // Filter out HTML event handlers that conflict with Framer Motion
97
+ const {
98
+ onDrag,
99
+ onDragEnd,
100
+ onDragStart,
101
+ onAnimationStart,
102
+ onAnimationEnd,
103
+ onAnimationIteration,
104
+ ...filteredProps
105
+ } = props;
106
+
96
107
  // Show content when loaded
97
108
  if (isLoaded && children) {
98
109
  if (useMotion) {
@@ -102,13 +113,13 @@ export const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(
102
113
  initial={{ opacity: 0 }}
103
114
  animate={{ opacity: 1 }}
104
115
  transition={{ duration: fadeInDuration / 1000 }}
105
- className={className}
116
+ className={cn("moonui-theme", className)}
106
117
  style={{
107
118
  height,
108
119
  width,
109
120
  ...style,
110
121
  }}
111
- {...props}
122
+ {...filteredProps}
112
123
  >
113
124
  {children}
114
125
  </motion.div>
@@ -118,7 +129,7 @@ export const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(
118
129
  return (
119
130
  <div
120
131
  ref={ref}
121
- className={cn("animate-fade-in", className)}
132
+ className={cn("moonui-theme", "animate-fade-in", className)}
122
133
  style={{
123
134
  animationDuration: `${fadeInDuration}ms`,
124
135
  height,
@@ -138,6 +149,7 @@ export const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(
138
149
  <SkeletonElement
139
150
  ref={ref}
140
151
  className={cn(
152
+ "moonui-theme",
141
153
  skeletonVariants({ variant, size, shape, animation }),
142
154
  "relative isolate",
143
155
  className
@@ -148,7 +160,7 @@ export const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(
148
160
  ...style,
149
161
  }}
150
162
  {...(useMotion ? skeletonAnimation : {})}
151
- {...props}
163
+ {...filteredProps}
152
164
  />
153
165
  );
154
166
  }
@@ -198,7 +210,7 @@ export const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(
198
210
  return (
199
211
  <div
200
212
  ref={ref}
201
- className={cn("flex flex-col", className)}
213
+ className={cn("moonui-theme", "flex flex-col", className)}
202
214
  style={{ gap: spacing }}
203
215
  {...props}
204
216
  >
@@ -254,7 +266,7 @@ export const SkeletonAvatar = React.forwardRef<HTMLDivElement, SkeletonAvatarPro
254
266
  variant={variant}
255
267
  animation={animation}
256
268
  shape="circle"
257
- className={cn("shrink-0", className)}
269
+ className={cn("moonui-theme", "shrink-0", className)}
258
270
  style={{
259
271
  height: size,
260
272
  width: size,
@@ -296,7 +296,7 @@ const Slider = React.forwardRef<
296
296
  )}
297
297
 
298
298
  <div
299
- className={cn(sliderVariants({ size }), className)}
299
+ className={cn("moonui-theme", sliderVariants({ size }), className)}
300
300
  data-disabled={disabled ? true : undefined}
301
301
  >
302
302
  {/* Track */}
@@ -27,7 +27,7 @@ const Switch = React.forwardRef<
27
27
  React.ElementRef<typeof SwitchPrimitives.Root>,
28
28
  SwitchProps
29
29
  >(({ className, size = "md", variant = "primary", loading, leftIcon, rightIcon, description, ...props }, ref) => (
30
- <div className="inline-flex items-center gap-2">
30
+ <div className="moonui-theme inline-flex items-center gap-2">
31
31
  {leftIcon && <span className="text-muted-foreground">{leftIcon}</span>}
32
32
  <SwitchPrimitives.Root
33
33
  className={cn(
@@ -127,7 +127,7 @@ const TableHeader = React.forwardRef<
127
127
  HTMLTableSectionElement,
128
128
  React.HTMLAttributes<HTMLTableSectionElement>
129
129
  >(({ className, ...props }, ref) => (
130
- <thead ref={ref} className={cn("[&_tr]:border-b", className)} {...props} />
130
+ <thead ref={ref} className={cn("moonui-theme", "[&_tr]:border-b", className)} {...props} />
131
131
  ));
132
132
  TableHeader.displayName = "TableHeader";
133
133
 
@@ -148,7 +148,7 @@ const TableBody = React.forwardRef<
148
148
  return (
149
149
  <tbody
150
150
  ref={ref}
151
- className={cn("[&_tr:last-child]:border-0", className)}
151
+ className={cn("moonui-theme", "[&_tr:last-child]:border-0", className)}
152
152
  {...props}
153
153
  >
154
154
  {hasChildren ? (
@@ -177,7 +177,7 @@ const TableFooter = React.forwardRef<
177
177
  >(({ className, ...props }, ref) => (
178
178
  <tfoot
179
179
  ref={ref}
180
- className={cn("bg-primary text-primary-foreground font-medium", className)}
180
+ className={cn("moonui-theme", "bg-primary text-primary-foreground font-medium", className)}
181
181
  {...props}
182
182
  />
183
183
  ));
@@ -290,7 +290,7 @@ const TableCell = React.forwardRef<
290
290
  >(({ className, ...props }, ref) => (
291
291
  <td
292
292
  ref={ref}
293
- className={cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className)}
293
+ className={cn("moonui-theme", "p-4 align-middle [&:has([role=checkbox])]:pr-0", className)}
294
294
  {...props}
295
295
  />
296
296
  ));
@@ -302,7 +302,7 @@ const TableCaption = React.forwardRef<
302
302
  >(({ className, ...props }, ref) => (
303
303
  <caption
304
304
  ref={ref}
305
- className={cn("mt-4 text-sm text-muted-foreground", className)}
305
+ className={cn("moonui-theme", "mt-4 text-sm text-muted-foreground", className)}
306
306
  {...props}
307
307
  />
308
308
  ));
@@ -18,6 +18,7 @@ const Tabs = React.forwardRef<
18
18
  >(({ vertical = false, ...props }, ref) => (
19
19
  <TabsPrimitive.Root
20
20
  ref={ref}
21
+ className={cn("moonui-theme", props.className)}
21
22
  orientation={vertical ? "vertical" : "horizontal"}
22
23
  {...props}
23
24
  />
@@ -68,7 +69,7 @@ const TabsList = React.forwardRef<
68
69
  >(({ className, variant, orientation, fullWidth, ...props }, ref) => (
69
70
  <TabsPrimitive.List
70
71
  ref={ref}
71
- className={cn(tabsListVariants({ variant, orientation, fullWidth, className }))}
72
+ className={cn("moonui-theme", tabsListVariants({ variant, orientation, fullWidth, className }))}
72
73
  {...props}
73
74
  />
74
75
  ));
@@ -145,6 +146,7 @@ const TabsTrigger = React.forwardRef<
145
146
  <TabsPrimitive.Trigger
146
147
  ref={ref}
147
148
  className={cn(
149
+ "moonui-theme",
148
150
  tabsTriggerVariants({ variant, size, orientation, fullWidth }),
149
151
  fadeTabs && "data-[state=inactive]:opacity-60",
150
152
  className
@@ -182,6 +184,7 @@ const TabsContent = React.forwardRef<
182
184
  <TabsPrimitive.Content
183
185
  ref={ref}
184
186
  className={cn(
187
+ "moonui-theme",
185
188
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
186
189
  animated && "data-[state=active]:animate-fadeIn data-[state=inactive]:animate-fadeOut",
187
190
  className
@@ -31,7 +31,7 @@ const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
31
31
  }, ref) => {
32
32
  return (
33
33
  <textarea
34
- className={cn(
34
+ className={cn("moonui-theme",
35
35
  "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
36
36
  className
37
37
  )}
@@ -57,7 +57,7 @@ const Toast = React.forwardRef<
57
57
  return (
58
58
  <ToastPrimitives.Root
59
59
  ref={ref}
60
- className={cn(toastVariants({ variant }), className)}
60
+ className={cn("moonui-theme", toastVariants({ variant }), className)}
61
61
  {...props}
62
62
  />
63
63
  );
@@ -103,7 +103,7 @@ const ToastTitle = React.forwardRef<
103
103
  >(({ className, ...props }, ref) => (
104
104
  <ToastPrimitives.Title
105
105
  ref={ref}
106
- className={cn("text-sm font-semibold [&+div]:text-xs", className)}
106
+ className={cn("moonui-theme", "text-sm font-semibold [&+div]:text-xs", className)}
107
107
  {...props}
108
108
  />
109
109
  ));
@@ -115,7 +115,7 @@ const ToastDescription = React.forwardRef<
115
115
  >(({ className, ...props }, ref) => (
116
116
  <ToastPrimitives.Description
117
117
  ref={ref}
118
- className={cn("text-sm opacity-90", className)}
118
+ className={cn("moonui-theme", "text-sm opacity-90", className)}
119
119
  {...props}
120
120
  />
121
121
  ));
@@ -36,12 +36,11 @@ const Toggle = React.forwardRef<
36
36
  >(({ className, variant, size, ...props }, ref) => (
37
37
  <TogglePrimitive.Root
38
38
  ref={ref}
39
- className={cn(toggleVariants({ variant, size, className }))}
39
+ className={cn("moonui-theme", toggleVariants({ variant, size, className }))}
40
40
  {...props}
41
41
  />
42
42
  ))
43
43
 
44
44
  Toggle.displayName = TogglePrimitive.Root.displayName
45
45
 
46
- export { Toggle, toggleVariants }
47
- export type { ToggleProps }
46
+ export { Toggle, toggleVariants }
@@ -43,7 +43,7 @@ const TooltipArrow = React.forwardRef<
43
43
  >(({ className, ...props }, ref) => (
44
44
  <TooltipPrimitive.Arrow
45
45
  ref={ref}
46
- className={cn("fill-current", className)}
46
+ className={cn("moonui-theme", "fill-current", className)}
47
47
  {...props}
48
48
  />
49
49
  ))
@@ -62,7 +62,7 @@ const TooltipContent = React.forwardRef<
62
62
  <TooltipPrimitive.Content
63
63
  ref={ref}
64
64
  sideOffset={sideOffset}
65
- className={cn(tooltipVariants({ variant, size }), className)}
65
+ className={cn("moonui-theme", tooltipVariants({ variant, size }), className)}
66
66
  {...props}
67
67
  >
68
68
  {props.children}
@@ -80,7 +80,6 @@ export interface SimpleTooltipProps {
80
80
  side?: "top" | "right" | "bottom" | "left"
81
81
  align?: "start" | "center" | "end"
82
82
  delayDuration?: number
83
- skipDelayDuration?: number
84
83
  sideOffset?: number
85
84
  showArrow?: boolean
86
85
  className?: string
@@ -102,7 +101,6 @@ const SimpleTooltip = React.forwardRef<
102
101
  side = "top",
103
102
  align = "center",
104
103
  delayDuration = 400,
105
- skipDelayDuration = 300,
106
104
  sideOffset = 4,
107
105
  showArrow = false,
108
106
  className,
@@ -119,7 +117,6 @@ const SimpleTooltip = React.forwardRef<
119
117
  defaultOpen={defaultOpen}
120
118
  onOpenChange={onOpenChange}
121
119
  delayDuration={delayDuration}
122
- skipDelayDuration={skipDelayDuration}
123
120
  >
124
121
  <TooltipTrigger asChild>{children}</TooltipTrigger>
125
122
  <TooltipContent
@@ -252,4 +252,5 @@ export const notificationAnimation = {
252
252
  transition: springAnimations.bouncy,
253
253
  };
254
254
 
255
- export type MicroInteractionProps = VariantProps<typeof microInteractionVariants>;
255
+ export type MicroInteractionProps = VariantProps<typeof microInteractionVariants>;
256
+