@webdevarif/dashui 0.3.1 → 0.3.3
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/index.d.mts +10 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.js +135 -39
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +134 -39
- package/dist/index.mjs.map +1 -1
- package/dist/styles/globals.css +23 -4
- package/package.json +80 -79
package/dist/index.d.mts
CHANGED
|
@@ -536,6 +536,15 @@ interface PostSidebarSectionProps {
|
|
|
536
536
|
}
|
|
537
537
|
declare function PostSidebarSection({ title, children, defaultOpen, className, }: PostSidebarSectionProps): react_jsx_runtime.JSX.Element;
|
|
538
538
|
|
|
539
|
+
interface HslColorInputProps {
|
|
540
|
+
value: string;
|
|
541
|
+
onChange: (value: string) => void;
|
|
542
|
+
className?: string;
|
|
543
|
+
inputClassName?: string;
|
|
544
|
+
disabled?: boolean;
|
|
545
|
+
}
|
|
546
|
+
declare function HslColorInput({ value, onChange, className, inputClassName, disabled }: HslColorInputProps): react_jsx_runtime.JSX.Element;
|
|
547
|
+
|
|
539
548
|
declare function useDisclosure(initial?: boolean): {
|
|
540
549
|
isOpen: boolean;
|
|
541
550
|
open: () => void;
|
|
@@ -620,4 +629,4 @@ interface SkeletonProps {
|
|
|
620
629
|
}
|
|
621
630
|
declare function Skeleton({ width, height, rounded, style }: SkeletonProps): react_jsx_runtime.JSX.Element;
|
|
622
631
|
|
|
623
|
-
export { Alert, type AlertProps, AppShell, type AppShellProps, AuthButton, AuthCard, AuthDivider, AuthField, AuthFootnote, AuthHeader, AuthLogo, AuthShell, Badge, type BadgeProps, type Breadcrumb, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, type Column, ConfirmDialog, type ConfirmDialogProps, DashboardLayout, type DashboardLayoutProps, DataTable, type DataTableProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, FormField, type FormFieldProps, FormLayout, type FormLayoutProps, FormSection, type FormSectionProps, ImagePickerField, type ImagePickerFieldProps, Input, type InputProps, Label, LoadingSpinner, type LoadingSpinnerProps, MediaCard, type MediaCardFile, type MediaCardProps, MediaGrid, type MediaGridProps, MediaPickerDialog, type MediaPickerDialogFolder, type MediaPickerDialogProps, type NavItem, NotificationBell, type NotificationBellProps, Page, type PageProps, PageSection, type PageSectionProps, Pagination, type PaginationProps, PlanBadge, type PlanBadgeProps, type PlanId, Popover, PopoverContent, PopoverTrigger, PostEditorShell, type PostEditorShellProps, PostFiltersBar, type PostFiltersBarProps, type PostListItem, PostListTable, type PostListTableProps, PostSidebarSection, type PostSidebarSectionProps, type PostStatus, PostStatusBadge, type PostStatusBadgeProps, SearchBar, type SearchBarProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sidebar, type SidebarItem, type SidebarProps, Skeleton, SlugInput, type SlugInputProps, type Stat, Stats, type StatsProps, StorageBar, type StorageBarProps, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, ThemeToggle, type ThemeToggleProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopBar, type TopBarProps, type UploadItem, badgeVariants, buttonVariants, cn, useDisclosure, usePagination };
|
|
632
|
+
export { Alert, type AlertProps, AppShell, type AppShellProps, AuthButton, AuthCard, AuthDivider, AuthField, AuthFootnote, AuthHeader, AuthLogo, AuthShell, Badge, type BadgeProps, type Breadcrumb, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, type Column, ConfirmDialog, type ConfirmDialogProps, DashboardLayout, type DashboardLayoutProps, DataTable, type DataTableProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, FormField, type FormFieldProps, FormLayout, type FormLayoutProps, FormSection, type FormSectionProps, HslColorInput, ImagePickerField, type ImagePickerFieldProps, Input, type InputProps, Label, LoadingSpinner, type LoadingSpinnerProps, MediaCard, type MediaCardFile, type MediaCardProps, MediaGrid, type MediaGridProps, MediaPickerDialog, type MediaPickerDialogFolder, type MediaPickerDialogProps, type NavItem, NotificationBell, type NotificationBellProps, Page, type PageProps, PageSection, type PageSectionProps, Pagination, type PaginationProps, PlanBadge, type PlanBadgeProps, type PlanId, Popover, PopoverContent, PopoverTrigger, PostEditorShell, type PostEditorShellProps, PostFiltersBar, type PostFiltersBarProps, type PostListItem, PostListTable, type PostListTableProps, PostSidebarSection, type PostSidebarSectionProps, type PostStatus, PostStatusBadge, type PostStatusBadgeProps, SearchBar, type SearchBarProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sidebar, type SidebarItem, type SidebarProps, Skeleton, SlugInput, type SlugInputProps, type Stat, Stats, type StatsProps, StorageBar, type StorageBarProps, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, ThemeToggle, type ThemeToggleProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopBar, type TopBarProps, type UploadItem, badgeVariants, buttonVariants, cn, useDisclosure, usePagination };
|
package/dist/index.d.ts
CHANGED
|
@@ -536,6 +536,15 @@ interface PostSidebarSectionProps {
|
|
|
536
536
|
}
|
|
537
537
|
declare function PostSidebarSection({ title, children, defaultOpen, className, }: PostSidebarSectionProps): react_jsx_runtime.JSX.Element;
|
|
538
538
|
|
|
539
|
+
interface HslColorInputProps {
|
|
540
|
+
value: string;
|
|
541
|
+
onChange: (value: string) => void;
|
|
542
|
+
className?: string;
|
|
543
|
+
inputClassName?: string;
|
|
544
|
+
disabled?: boolean;
|
|
545
|
+
}
|
|
546
|
+
declare function HslColorInput({ value, onChange, className, inputClassName, disabled }: HslColorInputProps): react_jsx_runtime.JSX.Element;
|
|
547
|
+
|
|
539
548
|
declare function useDisclosure(initial?: boolean): {
|
|
540
549
|
isOpen: boolean;
|
|
541
550
|
open: () => void;
|
|
@@ -620,4 +629,4 @@ interface SkeletonProps {
|
|
|
620
629
|
}
|
|
621
630
|
declare function Skeleton({ width, height, rounded, style }: SkeletonProps): react_jsx_runtime.JSX.Element;
|
|
622
631
|
|
|
623
|
-
export { Alert, type AlertProps, AppShell, type AppShellProps, AuthButton, AuthCard, AuthDivider, AuthField, AuthFootnote, AuthHeader, AuthLogo, AuthShell, Badge, type BadgeProps, type Breadcrumb, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, type Column, ConfirmDialog, type ConfirmDialogProps, DashboardLayout, type DashboardLayoutProps, DataTable, type DataTableProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, FormField, type FormFieldProps, FormLayout, type FormLayoutProps, FormSection, type FormSectionProps, ImagePickerField, type ImagePickerFieldProps, Input, type InputProps, Label, LoadingSpinner, type LoadingSpinnerProps, MediaCard, type MediaCardFile, type MediaCardProps, MediaGrid, type MediaGridProps, MediaPickerDialog, type MediaPickerDialogFolder, type MediaPickerDialogProps, type NavItem, NotificationBell, type NotificationBellProps, Page, type PageProps, PageSection, type PageSectionProps, Pagination, type PaginationProps, PlanBadge, type PlanBadgeProps, type PlanId, Popover, PopoverContent, PopoverTrigger, PostEditorShell, type PostEditorShellProps, PostFiltersBar, type PostFiltersBarProps, type PostListItem, PostListTable, type PostListTableProps, PostSidebarSection, type PostSidebarSectionProps, type PostStatus, PostStatusBadge, type PostStatusBadgeProps, SearchBar, type SearchBarProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sidebar, type SidebarItem, type SidebarProps, Skeleton, SlugInput, type SlugInputProps, type Stat, Stats, type StatsProps, StorageBar, type StorageBarProps, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, ThemeToggle, type ThemeToggleProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopBar, type TopBarProps, type UploadItem, badgeVariants, buttonVariants, cn, useDisclosure, usePagination };
|
|
632
|
+
export { Alert, type AlertProps, AppShell, type AppShellProps, AuthButton, AuthCard, AuthDivider, AuthField, AuthFootnote, AuthHeader, AuthLogo, AuthShell, Badge, type BadgeProps, type Breadcrumb, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, type Column, ConfirmDialog, type ConfirmDialogProps, DashboardLayout, type DashboardLayoutProps, DataTable, type DataTableProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, FormField, type FormFieldProps, FormLayout, type FormLayoutProps, FormSection, type FormSectionProps, HslColorInput, ImagePickerField, type ImagePickerFieldProps, Input, type InputProps, Label, LoadingSpinner, type LoadingSpinnerProps, MediaCard, type MediaCardFile, type MediaCardProps, MediaGrid, type MediaGridProps, MediaPickerDialog, type MediaPickerDialogFolder, type MediaPickerDialogProps, type NavItem, NotificationBell, type NotificationBellProps, Page, type PageProps, PageSection, type PageSectionProps, Pagination, type PaginationProps, PlanBadge, type PlanBadgeProps, type PlanId, Popover, PopoverContent, PopoverTrigger, PostEditorShell, type PostEditorShellProps, PostFiltersBar, type PostFiltersBarProps, type PostListItem, PostListTable, type PostListTableProps, PostSidebarSection, type PostSidebarSectionProps, type PostStatus, PostStatusBadge, type PostStatusBadgeProps, SearchBar, type SearchBarProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sidebar, type SidebarItem, type SidebarProps, Skeleton, SlugInput, type SlugInputProps, type Stat, Stats, type StatsProps, StorageBar, type StorageBarProps, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, ThemeToggle, type ThemeToggleProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopBar, type TopBarProps, type UploadItem, badgeVariants, buttonVariants, cn, useDisclosure, usePagination };
|
package/dist/index.js
CHANGED
|
@@ -81,6 +81,7 @@ __export(index_exports, {
|
|
|
81
81
|
FormField: () => FormField,
|
|
82
82
|
FormLayout: () => FormLayout,
|
|
83
83
|
FormSection: () => FormSection,
|
|
84
|
+
HslColorInput: () => HslColorInput,
|
|
84
85
|
ImagePickerField: () => ImagePickerField,
|
|
85
86
|
Input: () => Input,
|
|
86
87
|
Label: () => Label2,
|
|
@@ -3306,10 +3307,104 @@ function PostSidebarSection({
|
|
|
3306
3307
|
] });
|
|
3307
3308
|
}
|
|
3308
3309
|
|
|
3309
|
-
// src/
|
|
3310
|
+
// src/components/ui/hsl-color-input.tsx
|
|
3310
3311
|
var import_react = require("react");
|
|
3312
|
+
var import_react_colorful = require("react-colorful");
|
|
3313
|
+
var Popover2 = __toESM(require("@radix-ui/react-popover"));
|
|
3314
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
3315
|
+
function parseHsl(value) {
|
|
3316
|
+
if (!value) return { h: 0, s: 0, l: 0 };
|
|
3317
|
+
const parts = value.trim().split(/\s+/);
|
|
3318
|
+
return {
|
|
3319
|
+
h: parseFloat(parts[0]) || 0,
|
|
3320
|
+
s: parseFloat(parts[1]) || 0,
|
|
3321
|
+
l: parseFloat(parts[2]) || 0
|
|
3322
|
+
};
|
|
3323
|
+
}
|
|
3324
|
+
function formatHsl(color) {
|
|
3325
|
+
return `${Math.round(color.h)} ${Math.round(color.s)}% ${Math.round(color.l)}%`;
|
|
3326
|
+
}
|
|
3327
|
+
function HslColorInput({ value, onChange, className, inputClassName, disabled }) {
|
|
3328
|
+
const [inputVal, setInputVal] = (0, import_react.useState)(value);
|
|
3329
|
+
(0, import_react.useEffect)(() => {
|
|
3330
|
+
setInputVal(value);
|
|
3331
|
+
}, [value]);
|
|
3332
|
+
const hslColor = parseHsl(value);
|
|
3333
|
+
const cssColor = value ? `hsl(${value})` : "transparent";
|
|
3334
|
+
const handlePickerChange = (0, import_react.useCallback)((color) => {
|
|
3335
|
+
const formatted = formatHsl(color);
|
|
3336
|
+
setInputVal(formatted);
|
|
3337
|
+
onChange(formatted);
|
|
3338
|
+
}, [onChange]);
|
|
3339
|
+
const handleInputChange = (e) => {
|
|
3340
|
+
const v = e.target.value;
|
|
3341
|
+
setInputVal(v);
|
|
3342
|
+
if (/^\d+(\.\d+)?\s+\d+(\.\d+)?%?\s+\d+(\.\d+)?%?$/.test(v.trim())) {
|
|
3343
|
+
onChange(v);
|
|
3344
|
+
}
|
|
3345
|
+
};
|
|
3346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: cn("flex items-center gap-1.5", className), children: [
|
|
3347
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Popover2.Root, { children: [
|
|
3348
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Popover2.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3349
|
+
"button",
|
|
3350
|
+
{
|
|
3351
|
+
type: "button",
|
|
3352
|
+
className: cn(
|
|
3353
|
+
"w-5 h-5 rounded border border-white/10 shrink-0 transition-all",
|
|
3354
|
+
"hover:scale-110 hover:border-white/30 focus:outline-none focus:ring-1 focus:ring-white/20",
|
|
3355
|
+
disabled && "opacity-50 cursor-not-allowed"
|
|
3356
|
+
),
|
|
3357
|
+
style: { background: cssColor },
|
|
3358
|
+
"aria-label": "Open color picker"
|
|
3359
|
+
}
|
|
3360
|
+
) }),
|
|
3361
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Popover2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
3362
|
+
Popover2.Content,
|
|
3363
|
+
{
|
|
3364
|
+
sideOffset: 8,
|
|
3365
|
+
align: "start",
|
|
3366
|
+
className: cn(
|
|
3367
|
+
"z-[9999] rounded-xl shadow-2xl p-3",
|
|
3368
|
+
"bg-[#1a1c2e] border border-white/10",
|
|
3369
|
+
"flex flex-col gap-3",
|
|
3370
|
+
"animate-in fade-in-0 zoom-in-95"
|
|
3371
|
+
),
|
|
3372
|
+
children: [
|
|
3373
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_colorful.HslColorPicker, { color: hslColor, onChange: handlePickerChange }),
|
|
3374
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3375
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "w-6 h-6 rounded border border-white/10 shrink-0", style: { background: cssColor } }),
|
|
3376
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-xs font-mono text-white/50 truncate", children: value || "none" })
|
|
3377
|
+
] }),
|
|
3378
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Popover2.Arrow, { className: "fill-white/10" })
|
|
3379
|
+
]
|
|
3380
|
+
}
|
|
3381
|
+
) })
|
|
3382
|
+
] }),
|
|
3383
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3384
|
+
"input",
|
|
3385
|
+
{
|
|
3386
|
+
type: "text",
|
|
3387
|
+
value: inputVal,
|
|
3388
|
+
onChange: handleInputChange,
|
|
3389
|
+
onBlur: () => setInputVal(value),
|
|
3390
|
+
disabled,
|
|
3391
|
+
placeholder: "H S% L%",
|
|
3392
|
+
className: cn(
|
|
3393
|
+
"w-28 bg-white/5 border border-white/10 rounded px-1.5 py-0.5",
|
|
3394
|
+
"text-xs text-white/70 font-mono outline-none",
|
|
3395
|
+
"focus:border-white/30 placeholder:text-white/20",
|
|
3396
|
+
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
3397
|
+
inputClassName
|
|
3398
|
+
)
|
|
3399
|
+
}
|
|
3400
|
+
)
|
|
3401
|
+
] });
|
|
3402
|
+
}
|
|
3403
|
+
|
|
3404
|
+
// src/hooks/index.ts
|
|
3405
|
+
var import_react2 = require("react");
|
|
3311
3406
|
function useDisclosure(initial = false) {
|
|
3312
|
-
const [isOpen, setIsOpen] = (0,
|
|
3407
|
+
const [isOpen, setIsOpen] = (0, import_react2.useState)(initial);
|
|
3313
3408
|
return {
|
|
3314
3409
|
isOpen,
|
|
3315
3410
|
open: () => setIsOpen(true),
|
|
@@ -3319,15 +3414,15 @@ function useDisclosure(initial = false) {
|
|
|
3319
3414
|
};
|
|
3320
3415
|
}
|
|
3321
3416
|
function usePagination(total, pageSize = 20) {
|
|
3322
|
-
const [page, setPage] = (0,
|
|
3417
|
+
const [page, setPage] = (0, import_react2.useState)(1);
|
|
3323
3418
|
const totalPages = Math.ceil(total / pageSize);
|
|
3324
3419
|
return { page, setPage, pageSize, total, totalPages };
|
|
3325
3420
|
}
|
|
3326
3421
|
|
|
3327
3422
|
// src/components/auth/AuthShell.tsx
|
|
3328
|
-
var
|
|
3423
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
3329
3424
|
function AuthShell({ children, pattern = "dots", maxWidth = "520px" }) {
|
|
3330
|
-
return /* @__PURE__ */ (0,
|
|
3425
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
3331
3426
|
"div",
|
|
3332
3427
|
{
|
|
3333
3428
|
style: {
|
|
@@ -3342,7 +3437,7 @@ function AuthShell({ children, pattern = "dots", maxWidth = "520px" }) {
|
|
|
3342
3437
|
overflow: "hidden"
|
|
3343
3438
|
},
|
|
3344
3439
|
children: [
|
|
3345
|
-
pattern === "dots" && /* @__PURE__ */ (0,
|
|
3440
|
+
pattern === "dots" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
3346
3441
|
"div",
|
|
3347
3442
|
{
|
|
3348
3443
|
"aria-hidden": true,
|
|
@@ -3356,7 +3451,7 @@ function AuthShell({ children, pattern = "dots", maxWidth = "520px" }) {
|
|
|
3356
3451
|
}
|
|
3357
3452
|
}
|
|
3358
3453
|
),
|
|
3359
|
-
pattern === "grid" && /* @__PURE__ */ (0,
|
|
3454
|
+
pattern === "grid" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
3360
3455
|
"div",
|
|
3361
3456
|
{
|
|
3362
3457
|
"aria-hidden": true,
|
|
@@ -3370,16 +3465,16 @@ function AuthShell({ children, pattern = "dots", maxWidth = "520px" }) {
|
|
|
3370
3465
|
}
|
|
3371
3466
|
}
|
|
3372
3467
|
),
|
|
3373
|
-
/* @__PURE__ */ (0,
|
|
3468
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { style: { position: "relative", zIndex: 1, width: "100%", maxWidth }, children })
|
|
3374
3469
|
]
|
|
3375
3470
|
}
|
|
3376
3471
|
);
|
|
3377
3472
|
}
|
|
3378
3473
|
|
|
3379
3474
|
// src/components/auth/AuthCard.tsx
|
|
3380
|
-
var
|
|
3475
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
3381
3476
|
function AuthCard({ children, padding = "24px 28px" }) {
|
|
3382
|
-
return /* @__PURE__ */ (0,
|
|
3477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
3383
3478
|
"div",
|
|
3384
3479
|
{
|
|
3385
3480
|
style: {
|
|
@@ -3396,10 +3491,10 @@ function AuthCard({ children, padding = "24px 28px" }) {
|
|
|
3396
3491
|
}
|
|
3397
3492
|
|
|
3398
3493
|
// src/components/auth/AuthLogo.tsx
|
|
3399
|
-
var
|
|
3494
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
3400
3495
|
function AuthLogo({ appName = "Builify CMS", letter = "B", imageUrl, size = 36 }) {
|
|
3401
|
-
return /* @__PURE__ */ (0,
|
|
3402
|
-
imageUrl ? /* @__PURE__ */ (0,
|
|
3496
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", gap: "10px", marginBottom: "28px" }, children: [
|
|
3497
|
+
imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
3403
3498
|
"img",
|
|
3404
3499
|
{
|
|
3405
3500
|
src: imageUrl,
|
|
@@ -3408,7 +3503,7 @@ function AuthLogo({ appName = "Builify CMS", letter = "B", imageUrl, size = 36 }
|
|
|
3408
3503
|
height: size,
|
|
3409
3504
|
style: { borderRadius: "calc(var(--radius, 0.5rem) * 1.2)", flexShrink: 0, display: "block" }
|
|
3410
3505
|
}
|
|
3411
|
-
) : /* @__PURE__ */ (0,
|
|
3506
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
3412
3507
|
"div",
|
|
3413
3508
|
{
|
|
3414
3509
|
style: {
|
|
@@ -3427,7 +3522,7 @@ function AuthLogo({ appName = "Builify CMS", letter = "B", imageUrl, size = 36 }
|
|
|
3427
3522
|
children: letter
|
|
3428
3523
|
}
|
|
3429
3524
|
),
|
|
3430
|
-
/* @__PURE__ */ (0,
|
|
3525
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
3431
3526
|
"span",
|
|
3432
3527
|
{
|
|
3433
3528
|
style: {
|
|
@@ -3443,10 +3538,10 @@ function AuthLogo({ appName = "Builify CMS", letter = "B", imageUrl, size = 36 }
|
|
|
3443
3538
|
}
|
|
3444
3539
|
|
|
3445
3540
|
// src/components/auth/AuthHeader.tsx
|
|
3446
|
-
var
|
|
3541
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
3447
3542
|
function AuthHeader({ title, description }) {
|
|
3448
|
-
return /* @__PURE__ */ (0,
|
|
3449
|
-
/* @__PURE__ */ (0,
|
|
3543
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { style: { marginBottom: "24px", textAlign: "center" }, children: [
|
|
3544
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
3450
3545
|
"h1",
|
|
3451
3546
|
{
|
|
3452
3547
|
style: {
|
|
@@ -3459,7 +3554,7 @@ function AuthHeader({ title, description }) {
|
|
|
3459
3554
|
children: title
|
|
3460
3555
|
}
|
|
3461
3556
|
),
|
|
3462
|
-
description && /* @__PURE__ */ (0,
|
|
3557
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
3463
3558
|
"p",
|
|
3464
3559
|
{
|
|
3465
3560
|
style: {
|
|
@@ -3475,12 +3570,12 @@ function AuthHeader({ title, description }) {
|
|
|
3475
3570
|
}
|
|
3476
3571
|
|
|
3477
3572
|
// src/components/auth/AuthField.tsx
|
|
3478
|
-
var
|
|
3573
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
3479
3574
|
function AuthField({ label, error, hint, rightLabel, id, ...props }) {
|
|
3480
3575
|
const fieldId = id ?? label.toLowerCase().replace(/\s+/g, "-");
|
|
3481
|
-
return /* @__PURE__ */ (0,
|
|
3482
|
-
/* @__PURE__ */ (0,
|
|
3483
|
-
/* @__PURE__ */ (0,
|
|
3576
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "6px" }, children: [
|
|
3577
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [
|
|
3578
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3484
3579
|
"label",
|
|
3485
3580
|
{
|
|
3486
3581
|
htmlFor: fieldId,
|
|
@@ -3492,9 +3587,9 @@ function AuthField({ label, error, hint, rightLabel, id, ...props }) {
|
|
|
3492
3587
|
children: label
|
|
3493
3588
|
}
|
|
3494
3589
|
),
|
|
3495
|
-
rightLabel && /* @__PURE__ */ (0,
|
|
3590
|
+
rightLabel && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { style: { fontSize: "0.8125rem" }, children: rightLabel })
|
|
3496
3591
|
] }),
|
|
3497
|
-
/* @__PURE__ */ (0,
|
|
3592
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3498
3593
|
"input",
|
|
3499
3594
|
{
|
|
3500
3595
|
id: fieldId,
|
|
@@ -3524,13 +3619,13 @@ function AuthField({ label, error, hint, rightLabel, id, ...props }) {
|
|
|
3524
3619
|
...props
|
|
3525
3620
|
}
|
|
3526
3621
|
),
|
|
3527
|
-
error && /* @__PURE__ */ (0,
|
|
3528
|
-
hint && !error && /* @__PURE__ */ (0,
|
|
3622
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { style: { fontSize: "0.8rem", color: "var(--destructive)", margin: 0 }, children: error }),
|
|
3623
|
+
hint && !error && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { style: { fontSize: "0.8rem", color: "var(--muted-foreground)", margin: 0 }, children: hint })
|
|
3529
3624
|
] });
|
|
3530
3625
|
}
|
|
3531
3626
|
|
|
3532
3627
|
// src/components/auth/AuthButton.tsx
|
|
3533
|
-
var
|
|
3628
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
3534
3629
|
function AuthButton({
|
|
3535
3630
|
loading,
|
|
3536
3631
|
variant = "primary",
|
|
@@ -3573,7 +3668,7 @@ function AuthButton({
|
|
|
3573
3668
|
color: "var(--foreground)"
|
|
3574
3669
|
}
|
|
3575
3670
|
};
|
|
3576
|
-
return /* @__PURE__ */ (0,
|
|
3671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
3577
3672
|
"button",
|
|
3578
3673
|
{
|
|
3579
3674
|
disabled: loading || disabled,
|
|
@@ -3585,8 +3680,8 @@ function AuthButton({
|
|
|
3585
3680
|
e.currentTarget.style.filter = "none";
|
|
3586
3681
|
},
|
|
3587
3682
|
...props,
|
|
3588
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
3589
|
-
/* @__PURE__ */ (0,
|
|
3683
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
|
|
3684
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
3590
3685
|
"span",
|
|
3591
3686
|
{
|
|
3592
3687
|
style: {
|
|
@@ -3607,19 +3702,19 @@ function AuthButton({
|
|
|
3607
3702
|
}
|
|
3608
3703
|
|
|
3609
3704
|
// src/components/auth/AuthDivider.tsx
|
|
3610
|
-
var
|
|
3705
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
3611
3706
|
function AuthDivider({ label = "or" }) {
|
|
3612
|
-
return /* @__PURE__ */ (0,
|
|
3613
|
-
/* @__PURE__ */ (0,
|
|
3614
|
-
/* @__PURE__ */ (0,
|
|
3615
|
-
/* @__PURE__ */ (0,
|
|
3707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "12px", margin: "20px 0" }, children: [
|
|
3708
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { style: { flex: 1, height: 1, background: "var(--border)" } }),
|
|
3709
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { style: { fontSize: "0.75rem", color: "var(--muted-foreground)", userSelect: "none" }, children: label }),
|
|
3710
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { style: { flex: 1, height: 1, background: "var(--border)" } })
|
|
3616
3711
|
] });
|
|
3617
3712
|
}
|
|
3618
3713
|
|
|
3619
3714
|
// src/components/auth/AuthFootnote.tsx
|
|
3620
|
-
var
|
|
3715
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
3621
3716
|
function AuthFootnote({ text, linkText, linkHref }) {
|
|
3622
|
-
return /* @__PURE__ */ (0,
|
|
3717
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("p", { style: {
|
|
3623
3718
|
textAlign: "center",
|
|
3624
3719
|
marginTop: "20px",
|
|
3625
3720
|
fontSize: "0.8125rem",
|
|
@@ -3627,7 +3722,7 @@ function AuthFootnote({ text, linkText, linkHref }) {
|
|
|
3627
3722
|
}, children: [
|
|
3628
3723
|
text,
|
|
3629
3724
|
" ",
|
|
3630
|
-
/* @__PURE__ */ (0,
|
|
3725
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
3631
3726
|
"a",
|
|
3632
3727
|
{
|
|
3633
3728
|
href: linkHref,
|
|
@@ -3699,6 +3794,7 @@ var import_next_themes2 = require("next-themes");
|
|
|
3699
3794
|
FormField,
|
|
3700
3795
|
FormLayout,
|
|
3701
3796
|
FormSection,
|
|
3797
|
+
HslColorInput,
|
|
3702
3798
|
ImagePickerField,
|
|
3703
3799
|
Input,
|
|
3704
3800
|
Label,
|