@mbao01/common 0.0.20 → 0.0.21

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 (37) hide show
  1. package/dist/types/components/Command/Command.d.ts +5 -5
  2. package/dist/types/components/Menu/ContextMenu/ContextMenu.d.ts +36 -0
  3. package/dist/types/components/Menu/ContextMenu/constants.d.ts +0 -0
  4. package/dist/types/components/Menu/ContextMenu/index.d.ts +1 -0
  5. package/dist/types/components/Menu/ContextMenu/types.d.ts +14 -0
  6. package/dist/types/components/Menu/DropdownMenu/DropdownMenu.d.ts +36 -0
  7. package/dist/types/components/Menu/DropdownMenu/index.d.ts +1 -0
  8. package/dist/types/components/Menu/DropdownMenu/types.d.ts +14 -0
  9. package/dist/types/components/Menu/Menubar/Menubar.d.ts +43 -0
  10. package/dist/types/components/Menu/Menubar/constants.d.ts +25 -0
  11. package/dist/types/components/Menu/Menubar/index.d.ts +1 -0
  12. package/dist/types/components/Menu/Menubar/types.d.ts +15 -0
  13. package/dist/types/components/Menu/NavigationMenu/NavigationMenu.d.ts +17 -0
  14. package/dist/types/components/Menu/NavigationMenu/constants.d.ts +8 -0
  15. package/dist/types/components/Menu/NavigationMenu/index.d.ts +1 -0
  16. package/dist/types/components/Menu/NavigationMenu/types.d.ts +10 -0
  17. package/dist/types/components/Menu/index.d.ts +4 -0
  18. package/dist/types/components/Skeleton/constants.d.ts +2 -2
  19. package/dist/types/index.d.ts +1 -0
  20. package/package.json +6 -2
  21. package/src/components/Menu/ContextMenu/ContextMenu.tsx +180 -0
  22. package/src/components/Menu/ContextMenu/constants.ts +0 -0
  23. package/src/components/Menu/ContextMenu/index.ts +1 -0
  24. package/src/components/Menu/ContextMenu/types.ts +60 -0
  25. package/src/components/Menu/DropdownMenu/DropdownMenu.tsx +183 -0
  26. package/src/components/Menu/DropdownMenu/index.ts +1 -0
  27. package/src/components/Menu/DropdownMenu/types.ts +60 -0
  28. package/src/components/Menu/Menubar/Menubar.tsx +204 -0
  29. package/src/components/Menu/Menubar/constants.ts +107 -0
  30. package/src/components/Menu/Menubar/index.ts +1 -0
  31. package/src/components/Menu/Menubar/types.ts +66 -0
  32. package/src/components/Menu/NavigationMenu/NavigationMenu.tsx +117 -0
  33. package/src/components/Menu/NavigationMenu/constants.ts +47 -0
  34. package/src/components/Menu/NavigationMenu/index.ts +1 -0
  35. package/src/components/Menu/NavigationMenu/types.ts +40 -0
  36. package/src/components/Menu/index.ts +4 -0
  37. package/src/index.ts +1 -0
@@ -0,0 +1,117 @@
1
+ import { forwardRef } from "react";
2
+ import { ChevronDownIcon } from "@radix-ui/react-icons";
3
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
4
+ import type {
5
+ NavigationMenuContentProps,
6
+ NavigationMenuIndicatorProps,
7
+ NavigationMenuListProps,
8
+ NavigationMenuProps,
9
+ NavigationMenuTriggerProps,
10
+ NavigationMenuViewportProps,
11
+ } from "./types";
12
+ import { cn } from "../../../utilities";
13
+ import {
14
+ getNavigationMenuClasses,
15
+ getNavigationMenuContentClasses,
16
+ getNavigationMenuIndicatorClasses,
17
+ getNavigationMenuListClasses,
18
+ getNavigationMenuTriggerClasses,
19
+ getNavigationMenuViewportClasses,
20
+ } from "./constants";
21
+
22
+ const NavigationMenu = ({
23
+ className,
24
+ children,
25
+ ...props
26
+ }: NavigationMenuProps) => (
27
+ <NavigationMenuPrimitive.Root
28
+ className={cn(getNavigationMenuClasses(), className)}
29
+ {...props}
30
+ >
31
+ {children}
32
+ <NavigationMenuViewport />
33
+ </NavigationMenuPrimitive.Root>
34
+ );
35
+ NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
36
+
37
+ const NavigationMenuList = forwardRef<
38
+ React.ElementRef<typeof NavigationMenuPrimitive.List>,
39
+ NavigationMenuListProps
40
+ >(({ className, ...props }, ref) => (
41
+ <NavigationMenuPrimitive.List
42
+ ref={ref}
43
+ className={cn(getNavigationMenuListClasses(), className)}
44
+ {...props}
45
+ />
46
+ ));
47
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
48
+
49
+ const NavigationMenuTrigger = forwardRef<
50
+ React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,
51
+ NavigationMenuTriggerProps
52
+ >(({ className, children, variant, ...props }, ref) => (
53
+ <NavigationMenuPrimitive.Trigger
54
+ ref={ref}
55
+ className={cn(getNavigationMenuTriggerClasses({ variant }), className)}
56
+ {...props}
57
+ >
58
+ {children}{" "}
59
+ <ChevronDownIcon
60
+ className="relative top-[1px] ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180"
61
+ aria-hidden="true"
62
+ />
63
+ </NavigationMenuPrimitive.Trigger>
64
+ ));
65
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
66
+
67
+ const NavigationMenuContent = forwardRef<
68
+ React.ElementRef<typeof NavigationMenuPrimitive.Content>,
69
+ NavigationMenuContentProps
70
+ >(({ className, ...props }, ref) => (
71
+ <NavigationMenuPrimitive.Content
72
+ ref={ref}
73
+ className={cn(getNavigationMenuContentClasses(), className)}
74
+ {...props}
75
+ />
76
+ ));
77
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
78
+
79
+ const NavigationMenuViewport = forwardRef<
80
+ React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,
81
+ NavigationMenuViewportProps
82
+ >(({ className, ...props }, ref) => (
83
+ <div className={cn("absolute left-0 top-full flex justify-center")}>
84
+ <NavigationMenuPrimitive.Viewport
85
+ className={cn(getNavigationMenuViewportClasses(), className)}
86
+ ref={ref}
87
+ {...props}
88
+ />
89
+ </div>
90
+ ));
91
+ NavigationMenuViewport.displayName =
92
+ NavigationMenuPrimitive.Viewport.displayName;
93
+
94
+ const NavigationMenuIndicator = forwardRef<
95
+ React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,
96
+ NavigationMenuIndicatorProps
97
+ >(({ className, ...props }, ref) => (
98
+ <NavigationMenuPrimitive.Indicator
99
+ ref={ref}
100
+ className={cn(getNavigationMenuIndicatorClasses(), className)}
101
+ {...props}
102
+ >
103
+ <div className="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
104
+ </NavigationMenuPrimitive.Indicator>
105
+ ));
106
+ NavigationMenuIndicator.displayName =
107
+ NavigationMenuPrimitive.Indicator.displayName;
108
+
109
+ NavigationMenu.List = NavigationMenuList;
110
+ NavigationMenu.Item = NavigationMenuPrimitive.Item;
111
+ NavigationMenu.Content = NavigationMenuContent;
112
+ NavigationMenu.Trigger = NavigationMenuTrigger;
113
+ NavigationMenu.Link = NavigationMenuPrimitive.Link;
114
+ NavigationMenu.Indicator = NavigationMenuIndicator;
115
+ NavigationMenu.Viewport = NavigationMenuViewport;
116
+
117
+ export { NavigationMenu };
@@ -0,0 +1,47 @@
1
+ import { cva } from "../../../libs";
2
+
3
+ export const getNavigationMenuClasses = cva(
4
+ "relative z-10 flex max-w-max flex-1 items-center justify-center"
5
+ );
6
+
7
+ export const getNavigationMenuListClasses = cva(
8
+ "group flex flex-1 list-none items-center justify-center space-x-1"
9
+ );
10
+
11
+ export const getNavigationMenuTriggerClasses = cva(
12
+ "group inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors focus:outline-none disabled:pointer-events-none disabled:opacity-50",
13
+ {
14
+ variants: {
15
+ variant: {
16
+ primary:
17
+ "hover:bg-primary hover:text-primary-content focus:bg-primary focus:text-primary-content data-[active]:bg-primary/50 data-[state=open]:bg-primary/50",
18
+ secondary:
19
+ "hover:bg-secondary hover:text-secondary-content focus:bg-secondary focus:text-secondary-content data-[active]:bg-secondary/50 data-[state=open]:bg-secondary/50",
20
+ accent:
21
+ "hover:bg-accent hover:text-accent-content focus:bg-accent focus:text-accent-content data-[active]:bg-accent/50 data-[state=open]:bg-accent/50",
22
+ neutral:
23
+ "hover:bg-neutral hover:text-neutral-content focus:bg-neutral focus:text-neutral-content data-[active]:bg-neutral/50 data-[state=open]:bg-neutral/50",
24
+ base: "hover:bg-base-300 hover:text-base-content focus:bg-base-300 focus:text-base-content data-[active]:bg-base-300/50 data-[state=open]:bg-base-300/50",
25
+ info: "hover:bg-info hover:text-info-content focus:bg-info focus:text-info-content data-[active]:bg-info/50 data-[state=open]:bg-info/50",
26
+ success:
27
+ "hover:bg-success hover:text-success-content focus:bg-success focus:text-success-content data-[active]:bg-success/50 data-[state=open]:bg-success/50",
28
+ warning:
29
+ "hover:bg-warning hover:text-warning-content focus:bg-warning focus:text-warning-content data-[active]:bg-warning/50 data-[state=open]:bg-warning/50",
30
+ error:
31
+ "hover:bg-error hover:text-error-content focus:bg-error focus:text-error-content data-[active]:bg-error/50 data-[state=open]:bg-error/50",
32
+ },
33
+ },
34
+ }
35
+ );
36
+
37
+ export const getNavigationMenuContentClasses = cva(
38
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto"
39
+ );
40
+
41
+ export const getNavigationMenuViewportClasses = cva(
42
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-base-100 shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]"
43
+ );
44
+
45
+ export const getNavigationMenuIndicatorClasses = cva(
46
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in"
47
+ );
@@ -0,0 +1 @@
1
+ export { NavigationMenu } from "./NavigationMenu";
@@ -0,0 +1,40 @@
1
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
2
+ import { type VariantProps } from "../../../libs";
3
+ import {
4
+ getNavigationMenuClasses,
5
+ getNavigationMenuContentClasses,
6
+ getNavigationMenuIndicatorClasses,
7
+ getNavigationMenuListClasses,
8
+ getNavigationMenuTriggerClasses,
9
+ getNavigationMenuViewportClasses,
10
+ } from "./constants";
11
+
12
+ export type NavigationMenuProps = React.ComponentPropsWithoutRef<
13
+ typeof NavigationMenuPrimitive.Root
14
+ > &
15
+ VariantProps<typeof getNavigationMenuClasses>;
16
+
17
+ export type NavigationMenuListProps = React.ComponentPropsWithoutRef<
18
+ typeof NavigationMenuPrimitive.List
19
+ > &
20
+ VariantProps<typeof getNavigationMenuListClasses>;
21
+
22
+ export type NavigationMenuTriggerProps = React.ComponentPropsWithoutRef<
23
+ typeof NavigationMenuPrimitive.Trigger
24
+ > &
25
+ VariantProps<typeof getNavigationMenuTriggerClasses>;
26
+
27
+ export type NavigationMenuContentProps = React.ComponentPropsWithoutRef<
28
+ typeof NavigationMenuPrimitive.Content
29
+ > &
30
+ VariantProps<typeof getNavigationMenuContentClasses>;
31
+
32
+ export type NavigationMenuViewportProps = React.ComponentPropsWithoutRef<
33
+ typeof NavigationMenuPrimitive.Viewport
34
+ > &
35
+ VariantProps<typeof getNavigationMenuViewportClasses>;
36
+
37
+ export type NavigationMenuIndicatorProps = React.ComponentPropsWithoutRef<
38
+ typeof NavigationMenuPrimitive.Indicator
39
+ > &
40
+ VariantProps<typeof getNavigationMenuIndicatorClasses>;
@@ -0,0 +1,4 @@
1
+ export { ContextMenu } from "./ContextMenu";
2
+ export { DropdownMenu } from "./DropdownMenu";
3
+ export { Menubar } from "./Menubar";
4
+ export { NavigationMenu } from "./NavigationMenu";
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /** actions */
2
2
  export * from "./components/Button";
3
3
  export * from "./components/Breadcrumbs";
4
+ export * from "./components/Menu";
4
5
  export * from "./components/Pagination";
5
6
  export * from "./components/Toggle";
6
7
  export * from "./components/ToggleGroup";