@mesob/ui 0.2.1 → 0.2.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.
- package/dist/components/alert-dialog.js +14 -14
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/app-header-actions.js +70 -70
- package/dist/components/app-header-actions.js.map +1 -1
- package/dist/components/app-sidebar.js +57 -52
- package/dist/components/app-sidebar.js.map +1 -1
- package/dist/components/button.js +4 -4
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.js +12 -12
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/carousel.js +14 -14
- package/dist/components/carousel.js.map +1 -1
- package/dist/components/data-table/index.js +57 -57
- package/dist/components/data-table/index.js.map +1 -1
- package/dist/components/entity/index.js +177 -177
- package/dist/components/entity/index.js.map +1 -1
- package/dist/components/input-group.js +15 -15
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/page/index.js +21 -21
- package/dist/components/page/index.js.map +1 -1
- package/dist/components/pagination.js +12 -12
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/section/index.js +15 -15
- package/dist/components/section/index.js.map +1 -1
- package/dist/components/shell.js +47 -42
- package/dist/components/shell.js.map +1 -1
- package/dist/components/sidebar-context.d.ts +19 -0
- package/dist/components/sidebar-context.js +17 -0
- package/dist/components/sidebar-context.js.map +1 -0
- package/dist/components/sidebar.d.ts +2 -15
- package/dist/components/sidebar.js +82 -77
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/spotlight-search.js +38 -38
- package/dist/components/spotlight-search.js.map +1 -1
- package/dist/components/theme-toggle.js +8 -8
- package/dist/components/theme-toggle.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,7 +10,7 @@ function cn(...inputs) {
|
|
|
10
10
|
// src/components/button.tsx
|
|
11
11
|
import { Slot } from "@radix-ui/react-slot";
|
|
12
12
|
import { cva } from "class-variance-authority";
|
|
13
|
-
import { jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
14
14
|
var buttonVariants = cva(
|
|
15
15
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
16
16
|
{
|
|
@@ -41,27 +41,27 @@ var buttonVariants = cva(
|
|
|
41
41
|
|
|
42
42
|
// src/components/alert-dialog.tsx
|
|
43
43
|
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
44
|
-
import { jsx, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
44
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
45
45
|
function AlertDialog({
|
|
46
46
|
...props
|
|
47
47
|
}) {
|
|
48
|
-
return /* @__PURE__ */
|
|
48
|
+
return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
49
49
|
}
|
|
50
50
|
function AlertDialogTrigger({
|
|
51
51
|
...props
|
|
52
52
|
}) {
|
|
53
|
-
return /* @__PURE__ */
|
|
53
|
+
return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
|
|
54
54
|
}
|
|
55
55
|
function AlertDialogPortal({
|
|
56
56
|
...props
|
|
57
57
|
}) {
|
|
58
|
-
return /* @__PURE__ */
|
|
58
|
+
return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
|
|
59
59
|
}
|
|
60
60
|
function AlertDialogOverlay({
|
|
61
61
|
className,
|
|
62
62
|
...props
|
|
63
63
|
}) {
|
|
64
|
-
return /* @__PURE__ */
|
|
64
|
+
return /* @__PURE__ */ jsx2(
|
|
65
65
|
AlertDialogPrimitive.Overlay,
|
|
66
66
|
{
|
|
67
67
|
"data-slot": "alert-dialog-overlay",
|
|
@@ -78,8 +78,8 @@ function AlertDialogContent({
|
|
|
78
78
|
...props
|
|
79
79
|
}) {
|
|
80
80
|
return /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
|
|
81
|
-
/* @__PURE__ */
|
|
82
|
-
/* @__PURE__ */
|
|
81
|
+
/* @__PURE__ */ jsx2(AlertDialogOverlay, {}),
|
|
82
|
+
/* @__PURE__ */ jsx2(
|
|
83
83
|
AlertDialogPrimitive.Content,
|
|
84
84
|
{
|
|
85
85
|
"data-slot": "alert-dialog-content",
|
|
@@ -96,7 +96,7 @@ function AlertDialogHeader({
|
|
|
96
96
|
className,
|
|
97
97
|
...props
|
|
98
98
|
}) {
|
|
99
|
-
return /* @__PURE__ */
|
|
99
|
+
return /* @__PURE__ */ jsx2(
|
|
100
100
|
"div",
|
|
101
101
|
{
|
|
102
102
|
"data-slot": "alert-dialog-header",
|
|
@@ -109,7 +109,7 @@ function AlertDialogFooter({
|
|
|
109
109
|
className,
|
|
110
110
|
...props
|
|
111
111
|
}) {
|
|
112
|
-
return /* @__PURE__ */
|
|
112
|
+
return /* @__PURE__ */ jsx2(
|
|
113
113
|
"div",
|
|
114
114
|
{
|
|
115
115
|
"data-slot": "alert-dialog-footer",
|
|
@@ -125,7 +125,7 @@ function AlertDialogTitle({
|
|
|
125
125
|
className,
|
|
126
126
|
...props
|
|
127
127
|
}) {
|
|
128
|
-
return /* @__PURE__ */
|
|
128
|
+
return /* @__PURE__ */ jsx2(
|
|
129
129
|
AlertDialogPrimitive.Title,
|
|
130
130
|
{
|
|
131
131
|
"data-slot": "alert-dialog-title",
|
|
@@ -138,7 +138,7 @@ function AlertDialogDescription({
|
|
|
138
138
|
className,
|
|
139
139
|
...props
|
|
140
140
|
}) {
|
|
141
|
-
return /* @__PURE__ */
|
|
141
|
+
return /* @__PURE__ */ jsx2(
|
|
142
142
|
AlertDialogPrimitive.Description,
|
|
143
143
|
{
|
|
144
144
|
"data-slot": "alert-dialog-description",
|
|
@@ -151,7 +151,7 @@ function AlertDialogAction({
|
|
|
151
151
|
className,
|
|
152
152
|
...props
|
|
153
153
|
}) {
|
|
154
|
-
return /* @__PURE__ */
|
|
154
|
+
return /* @__PURE__ */ jsx2(
|
|
155
155
|
AlertDialogPrimitive.Action,
|
|
156
156
|
{
|
|
157
157
|
className: cn(buttonVariants(), className),
|
|
@@ -163,7 +163,7 @@ function AlertDialogCancel({
|
|
|
163
163
|
className,
|
|
164
164
|
...props
|
|
165
165
|
}) {
|
|
166
|
-
return /* @__PURE__ */
|
|
166
|
+
return /* @__PURE__ */ jsx2(
|
|
167
167
|
AlertDialogPrimitive.Cancel,
|
|
168
168
|
{
|
|
169
169
|
className: cn(buttonVariants({ variant: "outline" }), className),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/button.tsx","../../src/components/alert-dialog.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { cn } from '@mesob/ui/lib/utils';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n 'bg-primary text-primary-foreground hover:bg-primary-600 dark:hover:bg-primary-400',\n destructive:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40',\n outline:\n 'border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary-600 dark:hover:bg-secondary-400',\n ghost:\n 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:text-primary-600 dark:hover:text-primary-400 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>svg]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',\n icon: 'size-9',\n 'icon-sm': 'size-8',\n 'icon-lg': 'size-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\ntype ButtonProps = React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n };\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n leftIcon,\n rightIcon,\n children,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n >\n {leftIcon}\n
|
|
1
|
+
{"version":3,"sources":["../../src/lib/utils.ts","../../src/components/button.tsx","../../src/components/alert-dialog.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { cn } from '@mesob/ui/lib/utils';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n 'bg-primary text-primary-foreground hover:bg-primary-600 dark:hover:bg-primary-400',\n destructive:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40',\n outline:\n 'border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary-600 dark:hover:bg-secondary-400',\n ghost:\n 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:text-primary-600 dark:hover:text-primary-400 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>svg]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',\n icon: 'size-9',\n 'icon-sm': 'size-8',\n 'icon-lg': 'size-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\ntype ButtonProps = React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n };\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n leftIcon,\n rightIcon,\n children,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <>\n {leftIcon}\n {children}\n {rightIcon}\n </>\n )}\n </Comp>\n );\n}\n\nexport { Button, buttonVariants };\n","'use client';\n\nimport { buttonVariants } from '@mesob/ui/components/button';\nimport { cn } from '@mesob/ui/lib/utils';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport type * as React from 'react';\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=open]:opacity-100 fixed inset-0 z-50 bg-[var(--overlay,oklch(0_0_0/0.5))]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n 'bg-background text-foreground border-border 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 fixed top-[50%] left-[50%] z-[51] grid w-full min-w-[280px] max-w-[calc(100vw-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:min-w-[320px] sm:max-w-[32rem]',\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn('text-lg font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: 'outline' }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n"],"mappings":"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","names":["jsx","jsxs"]}
|
|
@@ -59,7 +59,7 @@ function AvatarFallback({
|
|
|
59
59
|
// src/components/button.tsx
|
|
60
60
|
import { Slot } from "@radix-ui/react-slot";
|
|
61
61
|
import { cva } from "class-variance-authority";
|
|
62
|
-
import { jsxs } from "react/jsx-runtime";
|
|
62
|
+
import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
63
63
|
var buttonVariants = cva(
|
|
64
64
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
65
65
|
{
|
|
@@ -98,17 +98,17 @@ function Button({
|
|
|
98
98
|
...props
|
|
99
99
|
}) {
|
|
100
100
|
const Comp = asChild ? Slot : "button";
|
|
101
|
-
return /* @__PURE__ */
|
|
101
|
+
return /* @__PURE__ */ jsx2(
|
|
102
102
|
Comp,
|
|
103
103
|
{
|
|
104
104
|
"data-slot": "button",
|
|
105
105
|
className: cn(buttonVariants({ variant, size, className })),
|
|
106
106
|
...props,
|
|
107
|
-
children: [
|
|
107
|
+
children: asChild ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
108
108
|
leftIcon,
|
|
109
109
|
children,
|
|
110
110
|
rightIcon
|
|
111
|
-
]
|
|
111
|
+
] })
|
|
112
112
|
}
|
|
113
113
|
);
|
|
114
114
|
}
|
|
@@ -116,16 +116,16 @@ function Button({
|
|
|
116
116
|
// src/components/dropdown-menu.tsx
|
|
117
117
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
118
118
|
import { IconCheck, IconChevronRight, IconCircle } from "@tabler/icons-react";
|
|
119
|
-
import { jsx as
|
|
119
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
120
120
|
function DropdownMenu({
|
|
121
121
|
...props
|
|
122
122
|
}) {
|
|
123
|
-
return /* @__PURE__ */
|
|
123
|
+
return /* @__PURE__ */ jsx3(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
124
124
|
}
|
|
125
125
|
function DropdownMenuTrigger({
|
|
126
126
|
...props
|
|
127
127
|
}) {
|
|
128
|
-
return /* @__PURE__ */
|
|
128
|
+
return /* @__PURE__ */ jsx3(
|
|
129
129
|
DropdownMenuPrimitive.Trigger,
|
|
130
130
|
{
|
|
131
131
|
"data-slot": "dropdown-menu-trigger",
|
|
@@ -138,7 +138,7 @@ function DropdownMenuContent({
|
|
|
138
138
|
sideOffset = 4,
|
|
139
139
|
...props
|
|
140
140
|
}) {
|
|
141
|
-
return /* @__PURE__ */
|
|
141
|
+
return /* @__PURE__ */ jsx3(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx3(
|
|
142
142
|
DropdownMenuPrimitive.Content,
|
|
143
143
|
{
|
|
144
144
|
"data-slot": "dropdown-menu-content",
|
|
@@ -157,7 +157,7 @@ function DropdownMenuItem({
|
|
|
157
157
|
variant = "default",
|
|
158
158
|
...props
|
|
159
159
|
}) {
|
|
160
|
-
return /* @__PURE__ */
|
|
160
|
+
return /* @__PURE__ */ jsx3(
|
|
161
161
|
DropdownMenuPrimitive.Item,
|
|
162
162
|
{
|
|
163
163
|
"data-slot": "dropdown-menu-item",
|
|
@@ -175,7 +175,7 @@ function DropdownMenuSeparator({
|
|
|
175
175
|
className,
|
|
176
176
|
...props
|
|
177
177
|
}) {
|
|
178
|
-
return /* @__PURE__ */
|
|
178
|
+
return /* @__PURE__ */ jsx3(
|
|
179
179
|
DropdownMenuPrimitive.Separator,
|
|
180
180
|
{
|
|
181
181
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -187,7 +187,7 @@ function DropdownMenuSeparator({
|
|
|
187
187
|
|
|
188
188
|
// src/components/tooltip.tsx
|
|
189
189
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
190
|
-
import { jsx as
|
|
190
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
191
191
|
|
|
192
192
|
// src/components/mesob-context.tsx
|
|
193
193
|
import {
|
|
@@ -195,14 +195,14 @@ import {
|
|
|
195
195
|
useContext,
|
|
196
196
|
useMemo
|
|
197
197
|
} from "react";
|
|
198
|
-
import { jsx as
|
|
198
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
199
199
|
var MesobContext = createContext(null);
|
|
200
200
|
function useMesob() {
|
|
201
201
|
return useContext(MesobContext);
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
// src/components/link.tsx
|
|
205
|
-
import { jsx as
|
|
205
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
206
206
|
function Link({
|
|
207
207
|
href,
|
|
208
208
|
children,
|
|
@@ -213,9 +213,9 @@ function Link({
|
|
|
213
213
|
const mesob = useMesob();
|
|
214
214
|
const LinkComponent = mesob?.linkComponent ?? "a";
|
|
215
215
|
if (LinkComponent === "a") {
|
|
216
|
-
return /* @__PURE__ */
|
|
216
|
+
return /* @__PURE__ */ jsx6("a", { href, className, onClick, ...props, children });
|
|
217
217
|
}
|
|
218
|
-
return /* @__PURE__ */
|
|
218
|
+
return /* @__PURE__ */ jsx6(
|
|
219
219
|
LinkComponent,
|
|
220
220
|
{
|
|
221
221
|
href,
|
|
@@ -230,22 +230,22 @@ function Link({
|
|
|
230
230
|
// src/components/dialog.tsx
|
|
231
231
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
232
232
|
import { IconX } from "@tabler/icons-react";
|
|
233
|
-
import { jsx as
|
|
233
|
+
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
234
234
|
function Dialog({
|
|
235
235
|
...props
|
|
236
236
|
}) {
|
|
237
|
-
return /* @__PURE__ */
|
|
237
|
+
return /* @__PURE__ */ jsx7(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
|
|
238
238
|
}
|
|
239
239
|
function DialogPortal({
|
|
240
240
|
...props
|
|
241
241
|
}) {
|
|
242
|
-
return /* @__PURE__ */
|
|
242
|
+
return /* @__PURE__ */ jsx7(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
|
|
243
243
|
}
|
|
244
244
|
function DialogOverlay({
|
|
245
245
|
className,
|
|
246
246
|
...props
|
|
247
247
|
}) {
|
|
248
|
-
return /* @__PURE__ */
|
|
248
|
+
return /* @__PURE__ */ jsx7(
|
|
249
249
|
DialogPrimitive.Overlay,
|
|
250
250
|
{
|
|
251
251
|
"data-slot": "dialog-overlay",
|
|
@@ -264,7 +264,7 @@ function DialogContent({
|
|
|
264
264
|
...props
|
|
265
265
|
}) {
|
|
266
266
|
return /* @__PURE__ */ jsxs4(DialogPortal, { "data-slot": "dialog-portal", children: [
|
|
267
|
-
/* @__PURE__ */
|
|
267
|
+
/* @__PURE__ */ jsx7(DialogOverlay, {}),
|
|
268
268
|
/* @__PURE__ */ jsxs4(
|
|
269
269
|
DialogPrimitive.Content,
|
|
270
270
|
{
|
|
@@ -282,8 +282,8 @@ function DialogContent({
|
|
|
282
282
|
"data-slot": "dialog-close",
|
|
283
283
|
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
284
284
|
children: [
|
|
285
|
-
/* @__PURE__ */
|
|
286
|
-
/* @__PURE__ */
|
|
285
|
+
/* @__PURE__ */ jsx7(IconX, {}),
|
|
286
|
+
/* @__PURE__ */ jsx7("span", { className: "sr-only", children: "Close" })
|
|
287
287
|
]
|
|
288
288
|
}
|
|
289
289
|
)
|
|
@@ -293,7 +293,7 @@ function DialogContent({
|
|
|
293
293
|
] });
|
|
294
294
|
}
|
|
295
295
|
function DialogHeader({ className, ...props }) {
|
|
296
|
-
return /* @__PURE__ */
|
|
296
|
+
return /* @__PURE__ */ jsx7(
|
|
297
297
|
"div",
|
|
298
298
|
{
|
|
299
299
|
"data-slot": "dialog-header",
|
|
@@ -306,7 +306,7 @@ function DialogTitle({
|
|
|
306
306
|
className,
|
|
307
307
|
...props
|
|
308
308
|
}) {
|
|
309
|
-
return /* @__PURE__ */
|
|
309
|
+
return /* @__PURE__ */ jsx7(
|
|
310
310
|
DialogPrimitive.Title,
|
|
311
311
|
{
|
|
312
312
|
"data-slot": "dialog-title",
|
|
@@ -319,7 +319,7 @@ function DialogDescription({
|
|
|
319
319
|
className,
|
|
320
320
|
...props
|
|
321
321
|
}) {
|
|
322
|
-
return /* @__PURE__ */
|
|
322
|
+
return /* @__PURE__ */ jsx7(
|
|
323
323
|
DialogPrimitive.Description,
|
|
324
324
|
{
|
|
325
325
|
"data-slot": "dialog-description",
|
|
@@ -332,12 +332,12 @@ function DialogDescription({
|
|
|
332
332
|
// src/components/command.tsx
|
|
333
333
|
import { IconSearch } from "@tabler/icons-react";
|
|
334
334
|
import { Command as CommandPrimitive } from "cmdk";
|
|
335
|
-
import { jsx as
|
|
335
|
+
import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
336
336
|
function Command({
|
|
337
337
|
className,
|
|
338
338
|
...props
|
|
339
339
|
}) {
|
|
340
|
-
return /* @__PURE__ */
|
|
340
|
+
return /* @__PURE__ */ jsx8(
|
|
341
341
|
CommandPrimitive,
|
|
342
342
|
{
|
|
343
343
|
"data-slot": "command",
|
|
@@ -359,15 +359,15 @@ function CommandDialog({
|
|
|
359
359
|
}) {
|
|
360
360
|
return /* @__PURE__ */ jsxs5(Dialog, { ...props, children: [
|
|
361
361
|
/* @__PURE__ */ jsxs5(DialogHeader, { className: "sr-only", children: [
|
|
362
|
-
/* @__PURE__ */
|
|
363
|
-
/* @__PURE__ */
|
|
362
|
+
/* @__PURE__ */ jsx8(DialogTitle, { children: title }),
|
|
363
|
+
/* @__PURE__ */ jsx8(DialogDescription, { children: description })
|
|
364
364
|
] }),
|
|
365
|
-
/* @__PURE__ */
|
|
365
|
+
/* @__PURE__ */ jsx8(
|
|
366
366
|
DialogContent,
|
|
367
367
|
{
|
|
368
368
|
className: cn("overflow-hidden p-0", className),
|
|
369
369
|
showCloseButton,
|
|
370
|
-
children: /* @__PURE__ */
|
|
370
|
+
children: /* @__PURE__ */ jsx8(Command, { className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[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", children })
|
|
371
371
|
}
|
|
372
372
|
)
|
|
373
373
|
] });
|
|
@@ -382,8 +382,8 @@ function CommandInput({
|
|
|
382
382
|
"data-slot": "command-input-wrapper",
|
|
383
383
|
className: "border-border flex h-9 items-center gap-2 border-b px-3",
|
|
384
384
|
children: [
|
|
385
|
-
/* @__PURE__ */
|
|
386
|
-
/* @__PURE__ */
|
|
385
|
+
/* @__PURE__ */ jsx8(IconSearch, { className: "size-4 shrink-0 opacity-50" }),
|
|
386
|
+
/* @__PURE__ */ jsx8(
|
|
387
387
|
CommandPrimitive.Input,
|
|
388
388
|
{
|
|
389
389
|
"data-slot": "command-input",
|
|
@@ -402,7 +402,7 @@ function CommandList({
|
|
|
402
402
|
className,
|
|
403
403
|
...props
|
|
404
404
|
}) {
|
|
405
|
-
return /* @__PURE__ */
|
|
405
|
+
return /* @__PURE__ */ jsx8(
|
|
406
406
|
CommandPrimitive.List,
|
|
407
407
|
{
|
|
408
408
|
"data-slot": "command-list",
|
|
@@ -417,7 +417,7 @@ function CommandList({
|
|
|
417
417
|
function CommandEmpty({
|
|
418
418
|
...props
|
|
419
419
|
}) {
|
|
420
|
-
return /* @__PURE__ */
|
|
420
|
+
return /* @__PURE__ */ jsx8(
|
|
421
421
|
CommandPrimitive.Empty,
|
|
422
422
|
{
|
|
423
423
|
"data-slot": "command-empty",
|
|
@@ -430,7 +430,7 @@ function CommandGroup({
|
|
|
430
430
|
className,
|
|
431
431
|
...props
|
|
432
432
|
}) {
|
|
433
|
-
return /* @__PURE__ */
|
|
433
|
+
return /* @__PURE__ */ jsx8(
|
|
434
434
|
CommandPrimitive.Group,
|
|
435
435
|
{
|
|
436
436
|
"data-slot": "command-group",
|
|
@@ -446,7 +446,7 @@ function CommandSeparator({
|
|
|
446
446
|
className,
|
|
447
447
|
...props
|
|
448
448
|
}) {
|
|
449
|
-
return /* @__PURE__ */
|
|
449
|
+
return /* @__PURE__ */ jsx8(
|
|
450
450
|
CommandPrimitive.Separator,
|
|
451
451
|
{
|
|
452
452
|
"data-slot": "command-separator",
|
|
@@ -459,7 +459,7 @@ function CommandItem({
|
|
|
459
459
|
className,
|
|
460
460
|
...props
|
|
461
461
|
}) {
|
|
462
|
-
return /* @__PURE__ */
|
|
462
|
+
return /* @__PURE__ */ jsx8(
|
|
463
463
|
CommandPrimitive.Item,
|
|
464
464
|
{
|
|
465
465
|
"data-slot": "command-item",
|
|
@@ -475,7 +475,7 @@ function CommandItem({
|
|
|
475
475
|
// src/components/spotlight-search.tsx
|
|
476
476
|
import { IconSearch as IconSearch2 } from "@tabler/icons-react";
|
|
477
477
|
import * as React from "react";
|
|
478
|
-
import { Fragment as
|
|
478
|
+
import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
479
479
|
function SpotlightSearch({
|
|
480
480
|
groups = [],
|
|
481
481
|
placeholder = "Search...",
|
|
@@ -495,7 +495,7 @@ function SpotlightSearch({
|
|
|
495
495
|
document.addEventListener("keydown", down);
|
|
496
496
|
return () => document.removeEventListener("keydown", down);
|
|
497
497
|
}, []);
|
|
498
|
-
return /* @__PURE__ */ jsxs6(
|
|
498
|
+
return /* @__PURE__ */ jsxs6(Fragment3, { children: [
|
|
499
499
|
/* @__PURE__ */ jsxs6(
|
|
500
500
|
Button,
|
|
501
501
|
{
|
|
@@ -506,10 +506,10 @@ function SpotlightSearch({
|
|
|
506
506
|
),
|
|
507
507
|
onClick: () => setOpen(true),
|
|
508
508
|
children: [
|
|
509
|
-
/* @__PURE__ */
|
|
510
|
-
/* @__PURE__ */
|
|
509
|
+
/* @__PURE__ */ jsx9(IconSearch2, { className: "h-4 w-4 xl:mr-2" }),
|
|
510
|
+
/* @__PURE__ */ jsx9("span", { className: "hidden xl:inline-flex", children: "Search..." }),
|
|
511
511
|
/* @__PURE__ */ jsxs6("kbd", { className: "border-border pointer-events-none absolute right-1.5 top-1/2 hidden h-5 -translate-y-1/2 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 xl:flex", children: [
|
|
512
|
-
/* @__PURE__ */
|
|
512
|
+
/* @__PURE__ */ jsx9("span", { className: "text-xs", children: "\u2318" }),
|
|
513
513
|
"K"
|
|
514
514
|
] })
|
|
515
515
|
]
|
|
@@ -525,12 +525,12 @@ function SpotlightSearch({
|
|
|
525
525
|
showCloseButton: false,
|
|
526
526
|
className,
|
|
527
527
|
children: [
|
|
528
|
-
/* @__PURE__ */
|
|
528
|
+
/* @__PURE__ */ jsx9(CommandInput, { placeholder, onValueChange: onSearch }),
|
|
529
529
|
/* @__PURE__ */ jsxs6(CommandList, { children: [
|
|
530
|
-
/* @__PURE__ */
|
|
530
|
+
/* @__PURE__ */ jsx9(CommandEmpty, { children: emptyMessage }),
|
|
531
531
|
groups.map((group, index) => /* @__PURE__ */ jsxs6(React.Fragment, { children: [
|
|
532
|
-
index > 0 && /* @__PURE__ */
|
|
533
|
-
/* @__PURE__ */
|
|
532
|
+
index > 0 && /* @__PURE__ */ jsx9(CommandSeparator, {}),
|
|
533
|
+
/* @__PURE__ */ jsx9(CommandGroup, { heading: group.heading, children: group.items.map((item) => /* @__PURE__ */ jsxs6(
|
|
534
534
|
CommandItem,
|
|
535
535
|
{
|
|
536
536
|
onSelect: () => {
|
|
@@ -539,8 +539,8 @@ function SpotlightSearch({
|
|
|
539
539
|
},
|
|
540
540
|
children: [
|
|
541
541
|
item.icon,
|
|
542
|
-
/* @__PURE__ */
|
|
543
|
-
item.shortcut && /* @__PURE__ */
|
|
542
|
+
/* @__PURE__ */ jsx9("span", { children: item.title }),
|
|
543
|
+
item.shortcut && /* @__PURE__ */ jsx9("kbd", { className: "border-border pointer-events-none ml-auto hidden h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex", children: item.shortcut })
|
|
544
544
|
]
|
|
545
545
|
},
|
|
546
546
|
item.id
|
|
@@ -555,7 +555,7 @@ function SpotlightSearch({
|
|
|
555
555
|
|
|
556
556
|
// src/components/app-header-actions.tsx
|
|
557
557
|
import { IconBell, IconLogout } from "@tabler/icons-react";
|
|
558
|
-
import { Fragment as
|
|
558
|
+
import { Fragment as Fragment4, jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
559
559
|
function AppHeaderActions({
|
|
560
560
|
user,
|
|
561
561
|
onLogout,
|
|
@@ -570,67 +570,67 @@ function AppHeaderActions({
|
|
|
570
570
|
const displayName = user?.fullName ?? "Account";
|
|
571
571
|
const displaySubtext = user?.email ?? user?.phone ?? user?.handle ?? "";
|
|
572
572
|
return /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2", children: [
|
|
573
|
-
/* @__PURE__ */
|
|
573
|
+
/* @__PURE__ */ jsx10(SpotlightSearch, { groups: searchGroups }),
|
|
574
574
|
actions,
|
|
575
|
-
/* @__PURE__ */
|
|
575
|
+
/* @__PURE__ */ jsx10(Button, { variant: "ghost", size: "icon", className: "relative", children: /* @__PURE__ */ jsx10(IconBell, { className: "size-5" }) }),
|
|
576
576
|
/* @__PURE__ */ jsxs7(DropdownMenu, { children: [
|
|
577
|
-
/* @__PURE__ */
|
|
577
|
+
/* @__PURE__ */ jsx10(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs7(
|
|
578
578
|
Button,
|
|
579
579
|
{
|
|
580
580
|
variant: "ghost",
|
|
581
581
|
className: "flex items-center gap-3 px-3 py-2 h-auto rounded-md min-h-9 hover:bg-accent/70 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
582
582
|
children: [
|
|
583
583
|
/* @__PURE__ */ jsxs7(Avatar, { className: "size-8 shrink-0", children: [
|
|
584
|
-
/* @__PURE__ */
|
|
585
|
-
/* @__PURE__ */
|
|
584
|
+
/* @__PURE__ */ jsx10(AvatarImage, { src: user?.image ?? void 0 }),
|
|
585
|
+
/* @__PURE__ */ jsx10(AvatarFallback, { className: "text-xs", children: initials })
|
|
586
586
|
] }),
|
|
587
587
|
/* @__PURE__ */ jsxs7("div", { className: "hidden flex-col items-start text-left md:flex min-w-0", children: [
|
|
588
|
-
/* @__PURE__ */
|
|
589
|
-
/* @__PURE__ */
|
|
588
|
+
/* @__PURE__ */ jsx10("span", { className: "text-sm font-medium", children: displayName }),
|
|
589
|
+
/* @__PURE__ */ jsx10("span", { className: "text-xs text-muted-foreground", children: displaySubtext })
|
|
590
590
|
] })
|
|
591
591
|
]
|
|
592
592
|
}
|
|
593
593
|
) }),
|
|
594
594
|
/* @__PURE__ */ jsxs7(DropdownMenuContent, { align: "end", className: "w-56", children: [
|
|
595
|
-
topMenuItems.map((item) => /* @__PURE__ */
|
|
595
|
+
topMenuItems.map((item) => /* @__PURE__ */ jsx10(
|
|
596
596
|
DropdownMenuItem,
|
|
597
597
|
{
|
|
598
598
|
onClick: item.onClick,
|
|
599
599
|
variant: item.variant,
|
|
600
600
|
asChild: item.href ? true : void 0,
|
|
601
601
|
children: item.href ? /* @__PURE__ */ jsxs7(Link, { href: item.href, onClick: item.onClick, children: [
|
|
602
|
-
item.icon && /* @__PURE__ */
|
|
602
|
+
item.icon && /* @__PURE__ */ jsx10("span", { className: "mr-2", children: item.icon }),
|
|
603
603
|
item.label
|
|
604
|
-
] }) : /* @__PURE__ */ jsxs7(
|
|
605
|
-
item.icon && /* @__PURE__ */
|
|
604
|
+
] }) : /* @__PURE__ */ jsxs7(Fragment4, { children: [
|
|
605
|
+
item.icon && /* @__PURE__ */ jsx10("span", { className: "mr-2", children: item.icon }),
|
|
606
606
|
item.label
|
|
607
607
|
] })
|
|
608
608
|
},
|
|
609
609
|
item.href ?? item.label
|
|
610
610
|
)),
|
|
611
|
-
topMenuItems.length > 0 && menuItems.length > 0 && /* @__PURE__ */
|
|
612
|
-
menuItems.map((item) => /* @__PURE__ */
|
|
611
|
+
topMenuItems.length > 0 && menuItems.length > 0 && /* @__PURE__ */ jsx10(DropdownMenuSeparator, {}),
|
|
612
|
+
menuItems.map((item) => /* @__PURE__ */ jsx10(
|
|
613
613
|
DropdownMenuItem,
|
|
614
614
|
{
|
|
615
615
|
onClick: item.onClick,
|
|
616
616
|
variant: item.variant,
|
|
617
617
|
asChild: item.href ? true : void 0,
|
|
618
618
|
children: item.href ? /* @__PURE__ */ jsxs7(Link, { href: item.href, onClick: item.onClick, children: [
|
|
619
|
-
item.icon && /* @__PURE__ */
|
|
619
|
+
item.icon && /* @__PURE__ */ jsx10("span", { className: "mr-2", children: item.icon }),
|
|
620
620
|
item.label
|
|
621
|
-
] }) : /* @__PURE__ */ jsxs7(
|
|
622
|
-
item.icon && /* @__PURE__ */
|
|
621
|
+
] }) : /* @__PURE__ */ jsxs7(Fragment4, { children: [
|
|
622
|
+
item.icon && /* @__PURE__ */ jsx10("span", { className: "mr-2", children: item.icon }),
|
|
623
623
|
item.label
|
|
624
624
|
] })
|
|
625
625
|
},
|
|
626
626
|
item.href ?? item.label
|
|
627
627
|
)),
|
|
628
|
-
accountMenuFooter && (topMenuItems.length > 0 || menuItems.length > 0) && /* @__PURE__ */
|
|
628
|
+
accountMenuFooter && (topMenuItems.length > 0 || menuItems.length > 0) && /* @__PURE__ */ jsx10(DropdownMenuSeparator, {}),
|
|
629
629
|
accountMenuFooter,
|
|
630
|
-
onLogout && /* @__PURE__ */ jsxs7(
|
|
631
|
-
(topMenuItems.length > 0 || menuItems.length > 0 || accountMenuFooter) && /* @__PURE__ */
|
|
630
|
+
onLogout && /* @__PURE__ */ jsxs7(Fragment4, { children: [
|
|
631
|
+
(topMenuItems.length > 0 || menuItems.length > 0 || accountMenuFooter) && /* @__PURE__ */ jsx10(DropdownMenuSeparator, {}),
|
|
632
632
|
/* @__PURE__ */ jsxs7(DropdownMenuItem, { onClick: onLogout, variant: "destructive", children: [
|
|
633
|
-
isLoggingOut ? /* @__PURE__ */
|
|
633
|
+
isLoggingOut ? /* @__PURE__ */ jsx10("span", { className: "mr-2", children: "..." }) : /* @__PURE__ */ jsx10(IconLogout, { className: "mr-2 size-4" }),
|
|
634
634
|
"Log out"
|
|
635
635
|
] })
|
|
636
636
|
] })
|