@oppulence/design-system 1.0.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 (80) hide show
  1. package/README.md +115 -0
  2. package/components.json +21 -0
  3. package/hooks/use-mobile.tsx +21 -0
  4. package/lib/utils.ts +6 -0
  5. package/package.json +104 -0
  6. package/postcss.config.mjs +8 -0
  7. package/src/components/atoms/aspect-ratio.tsx +21 -0
  8. package/src/components/atoms/avatar.tsx +91 -0
  9. package/src/components/atoms/badge.tsx +47 -0
  10. package/src/components/atoms/button.tsx +128 -0
  11. package/src/components/atoms/checkbox.tsx +24 -0
  12. package/src/components/atoms/container.tsx +42 -0
  13. package/src/components/atoms/heading.tsx +56 -0
  14. package/src/components/atoms/index.ts +21 -0
  15. package/src/components/atoms/input.tsx +18 -0
  16. package/src/components/atoms/kbd.tsx +23 -0
  17. package/src/components/atoms/label.tsx +15 -0
  18. package/src/components/atoms/logo.tsx +52 -0
  19. package/src/components/atoms/progress.tsx +79 -0
  20. package/src/components/atoms/separator.tsx +17 -0
  21. package/src/components/atoms/skeleton.tsx +13 -0
  22. package/src/components/atoms/slider.tsx +56 -0
  23. package/src/components/atoms/spinner.tsx +14 -0
  24. package/src/components/atoms/stack.tsx +126 -0
  25. package/src/components/atoms/switch.tsx +26 -0
  26. package/src/components/atoms/text.tsx +69 -0
  27. package/src/components/atoms/textarea.tsx +19 -0
  28. package/src/components/atoms/toggle.tsx +40 -0
  29. package/src/components/molecules/accordion.tsx +72 -0
  30. package/src/components/molecules/ai-chat.tsx +251 -0
  31. package/src/components/molecules/alert.tsx +131 -0
  32. package/src/components/molecules/breadcrumb.tsx +301 -0
  33. package/src/components/molecules/button-group.tsx +96 -0
  34. package/src/components/molecules/card.tsx +184 -0
  35. package/src/components/molecules/collapsible.tsx +21 -0
  36. package/src/components/molecules/command-search.tsx +148 -0
  37. package/src/components/molecules/empty.tsx +98 -0
  38. package/src/components/molecules/field.tsx +217 -0
  39. package/src/components/molecules/grid.tsx +141 -0
  40. package/src/components/molecules/hover-card.tsx +45 -0
  41. package/src/components/molecules/index.ts +29 -0
  42. package/src/components/molecules/input-group.tsx +151 -0
  43. package/src/components/molecules/input-otp.tsx +74 -0
  44. package/src/components/molecules/item.tsx +194 -0
  45. package/src/components/molecules/page-header.tsx +89 -0
  46. package/src/components/molecules/pagination.tsx +130 -0
  47. package/src/components/molecules/popover.tsx +96 -0
  48. package/src/components/molecules/radio-group.tsx +37 -0
  49. package/src/components/molecules/resizable.tsx +52 -0
  50. package/src/components/molecules/scroll-area.tsx +45 -0
  51. package/src/components/molecules/section.tsx +108 -0
  52. package/src/components/molecules/select.tsx +201 -0
  53. package/src/components/molecules/settings.tsx +197 -0
  54. package/src/components/molecules/table.tsx +111 -0
  55. package/src/components/molecules/tabs.tsx +74 -0
  56. package/src/components/molecules/theme-switcher.tsx +187 -0
  57. package/src/components/molecules/toggle-group.tsx +89 -0
  58. package/src/components/molecules/tooltip.tsx +66 -0
  59. package/src/components/organisms/alert-dialog.tsx +152 -0
  60. package/src/components/organisms/app-shell.tsx +939 -0
  61. package/src/components/organisms/calendar.tsx +212 -0
  62. package/src/components/organisms/carousel.tsx +230 -0
  63. package/src/components/organisms/chart.tsx +333 -0
  64. package/src/components/organisms/combobox.tsx +274 -0
  65. package/src/components/organisms/command.tsx +200 -0
  66. package/src/components/organisms/context-menu.tsx +229 -0
  67. package/src/components/organisms/dialog.tsx +134 -0
  68. package/src/components/organisms/drawer.tsx +123 -0
  69. package/src/components/organisms/dropdown-menu.tsx +256 -0
  70. package/src/components/organisms/index.ts +17 -0
  71. package/src/components/organisms/menubar.tsx +203 -0
  72. package/src/components/organisms/navigation-menu.tsx +143 -0
  73. package/src/components/organisms/page-layout.tsx +105 -0
  74. package/src/components/organisms/sheet.tsx +126 -0
  75. package/src/components/organisms/sidebar.tsx +723 -0
  76. package/src/components/organisms/sonner.tsx +41 -0
  77. package/src/components/ui/index.ts +3 -0
  78. package/src/index.ts +3 -0
  79. package/src/styles/globals.css +297 -0
  80. package/tailwind.config.ts +77 -0
@@ -0,0 +1,66 @@
1
+ "use client";
2
+
3
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
4
+
5
+ function TooltipProvider({
6
+ delay = 0,
7
+ ...props
8
+ }: TooltipPrimitive.Provider.Props) {
9
+ return (
10
+ <TooltipPrimitive.Provider
11
+ data-slot="tooltip-provider"
12
+ delay={delay}
13
+ {...props}
14
+ />
15
+ );
16
+ }
17
+
18
+ function Tooltip({ ...props }: TooltipPrimitive.Root.Props) {
19
+ return (
20
+ <TooltipProvider>
21
+ <TooltipPrimitive.Root data-slot="tooltip" {...props} />
22
+ </TooltipProvider>
23
+ );
24
+ }
25
+
26
+ function TooltipTrigger({
27
+ ...props
28
+ }: Omit<TooltipPrimitive.Trigger.Props, "className">) {
29
+ return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />;
30
+ }
31
+
32
+ function TooltipContent({
33
+ side = "top",
34
+ sideOffset = 4,
35
+ align = "center",
36
+ alignOffset = 0,
37
+ children,
38
+ ...props
39
+ }: Omit<TooltipPrimitive.Popup.Props, "className"> &
40
+ Pick<
41
+ TooltipPrimitive.Positioner.Props,
42
+ "align" | "alignOffset" | "side" | "sideOffset"
43
+ >) {
44
+ return (
45
+ <TooltipPrimitive.Portal>
46
+ <TooltipPrimitive.Positioner
47
+ align={align}
48
+ alignOffset={alignOffset}
49
+ side={side}
50
+ sideOffset={sideOffset}
51
+ className="isolate z-50"
52
+ >
53
+ <TooltipPrimitive.Popup
54
+ data-slot="tooltip-content"
55
+ className="data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-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 rounded-md px-3 py-1.5 text-xs bg-foreground text-background z-50 w-fit max-w-xs origin-(--transform-origin)"
56
+ {...props}
57
+ >
58
+ {children}
59
+ <TooltipPrimitive.Arrow className="size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" />
60
+ </TooltipPrimitive.Popup>
61
+ </TooltipPrimitive.Positioner>
62
+ </TooltipPrimitive.Portal>
63
+ );
64
+ }
65
+
66
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -0,0 +1,152 @@
1
+ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
2
+
3
+ import { Button } from "../atoms/button";
4
+
5
+ function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {
6
+ return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />;
7
+ }
8
+
9
+ function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {
10
+ return (
11
+ <AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} />
12
+ );
13
+ }
14
+
15
+ function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {
16
+ return (
17
+ <AlertDialogPrimitive.Portal data-slot="alert-dialog-portal" {...props} />
18
+ );
19
+ }
20
+
21
+ function AlertDialogOverlay({
22
+ ...props
23
+ }: Omit<AlertDialogPrimitive.Backdrop.Props, "className">) {
24
+ return (
25
+ <AlertDialogPrimitive.Backdrop
26
+ data-slot="alert-dialog-overlay"
27
+ className="data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50"
28
+ {...props}
29
+ />
30
+ );
31
+ }
32
+
33
+ function AlertDialogContent({
34
+ size = "default",
35
+ ...props
36
+ }: Omit<AlertDialogPrimitive.Popup.Props, "className"> & {
37
+ size?: "default" | "sm";
38
+ }) {
39
+ return (
40
+ <AlertDialogPortal>
41
+ <AlertDialogOverlay />
42
+ <AlertDialogPrimitive.Popup
43
+ data-slot="alert-dialog-content"
44
+ data-size={size}
45
+ className="data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-4 rounded-xl p-4 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none"
46
+ {...props}
47
+ />
48
+ </AlertDialogPortal>
49
+ );
50
+ }
51
+
52
+ function AlertDialogHeader({
53
+ ...props
54
+ }: Omit<React.ComponentProps<"div">, "className">) {
55
+ return (
56
+ <div
57
+ data-slot="alert-dialog-header"
58
+ className="grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]"
59
+ {...props}
60
+ />
61
+ );
62
+ }
63
+
64
+ function AlertDialogFooter({
65
+ ...props
66
+ }: Omit<React.ComponentProps<"div">, "className">) {
67
+ return (
68
+ <div
69
+ data-slot="alert-dialog-footer"
70
+ className="bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end"
71
+ {...props}
72
+ />
73
+ );
74
+ }
75
+
76
+ function AlertDialogMedia({
77
+ ...props
78
+ }: Omit<React.ComponentProps<"div">, "className">) {
79
+ return (
80
+ <div
81
+ data-slot="alert-dialog-media"
82
+ className="bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6"
83
+ {...props}
84
+ />
85
+ );
86
+ }
87
+
88
+ function AlertDialogTitle({
89
+ ...props
90
+ }: Omit<React.ComponentProps<typeof AlertDialogPrimitive.Title>, "className">) {
91
+ return (
92
+ <AlertDialogPrimitive.Title
93
+ data-slot="alert-dialog-title"
94
+ className="text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2"
95
+ {...props}
96
+ />
97
+ );
98
+ }
99
+
100
+ function AlertDialogDescription({
101
+ ...props
102
+ }: Omit<
103
+ React.ComponentProps<typeof AlertDialogPrimitive.Description>,
104
+ "className"
105
+ >) {
106
+ return (
107
+ <AlertDialogPrimitive.Description
108
+ data-slot="alert-dialog-description"
109
+ className="text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3"
110
+ {...props}
111
+ />
112
+ );
113
+ }
114
+
115
+ function AlertDialogAction({
116
+ variant = "default",
117
+ ...props
118
+ }: Omit<React.ComponentProps<typeof Button>, "className">) {
119
+ return (
120
+ <Button data-slot="alert-dialog-action" variant={variant} {...props} />
121
+ );
122
+ }
123
+
124
+ function AlertDialogCancel({
125
+ variant = "secondary",
126
+ size = "default",
127
+ ...props
128
+ }: Omit<AlertDialogPrimitive.Close.Props, "className"> &
129
+ Pick<React.ComponentProps<typeof Button>, "variant" | "size">) {
130
+ return (
131
+ <AlertDialogPrimitive.Close
132
+ data-slot="alert-dialog-cancel"
133
+ render={<Button variant={variant} size={size} />}
134
+ {...props}
135
+ />
136
+ );
137
+ }
138
+
139
+ export {
140
+ AlertDialog,
141
+ AlertDialogAction,
142
+ AlertDialogCancel,
143
+ AlertDialogContent,
144
+ AlertDialogDescription,
145
+ AlertDialogFooter,
146
+ AlertDialogHeader,
147
+ AlertDialogMedia,
148
+ AlertDialogOverlay,
149
+ AlertDialogPortal,
150
+ AlertDialogTitle,
151
+ AlertDialogTrigger,
152
+ };