@webdevarif/dashui 0.3.1 → 0.3.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/index.d.mts +10 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.js +157 -39
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +156 -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,126 @@ 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 import_jsx_runtime49 = require("react/jsx-runtime");
|
|
3314
|
+
function parseHsl(value) {
|
|
3315
|
+
if (!value) return { h: 0, s: 0, l: 0 };
|
|
3316
|
+
const parts = value.trim().split(/\s+/);
|
|
3317
|
+
const h = parseFloat(parts[0]) || 0;
|
|
3318
|
+
const s = parseFloat(parts[1]) || 0;
|
|
3319
|
+
const l = parseFloat(parts[2]) || 0;
|
|
3320
|
+
return { h, s, l };
|
|
3321
|
+
}
|
|
3322
|
+
function formatHsl(color) {
|
|
3323
|
+
return `${Math.round(color.h)} ${Math.round(color.s)}% ${Math.round(color.l)}%`;
|
|
3324
|
+
}
|
|
3325
|
+
function HslColorInput({
|
|
3326
|
+
value,
|
|
3327
|
+
onChange,
|
|
3328
|
+
className,
|
|
3329
|
+
inputClassName,
|
|
3330
|
+
disabled
|
|
3331
|
+
}) {
|
|
3332
|
+
const [open, setOpen] = (0, import_react.useState)(false);
|
|
3333
|
+
const [inputVal, setInputVal] = (0, import_react.useState)(value);
|
|
3334
|
+
const containerRef = (0, import_react.useRef)(null);
|
|
3335
|
+
(0, import_react.useEffect)(() => {
|
|
3336
|
+
setInputVal(value);
|
|
3337
|
+
}, [value]);
|
|
3338
|
+
(0, import_react.useEffect)(() => {
|
|
3339
|
+
if (!open) return;
|
|
3340
|
+
const handler = (e) => {
|
|
3341
|
+
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
3342
|
+
setOpen(false);
|
|
3343
|
+
}
|
|
3344
|
+
};
|
|
3345
|
+
document.addEventListener("mousedown", handler);
|
|
3346
|
+
return () => document.removeEventListener("mousedown", handler);
|
|
3347
|
+
}, [open]);
|
|
3348
|
+
const hslColor = parseHsl(value);
|
|
3349
|
+
const cssColor = value ? `hsl(${value})` : "transparent";
|
|
3350
|
+
const handlePickerChange = (0, import_react.useCallback)((color) => {
|
|
3351
|
+
const formatted = formatHsl(color);
|
|
3352
|
+
setInputVal(formatted);
|
|
3353
|
+
onChange(formatted);
|
|
3354
|
+
}, [onChange]);
|
|
3355
|
+
const handleInputChange = (e) => {
|
|
3356
|
+
const v = e.target.value;
|
|
3357
|
+
setInputVal(v);
|
|
3358
|
+
if (/^\d+\s+\d+%?\s+\d+%?$/.test(v.trim()) || /^\d+(\.\d+)?\s+\d+(\.\d+)?%\s+\d+(\.\d+)?%$/.test(v.trim())) {
|
|
3359
|
+
onChange(v);
|
|
3360
|
+
}
|
|
3361
|
+
};
|
|
3362
|
+
const handleInputBlur = () => {
|
|
3363
|
+
setInputVal(value);
|
|
3364
|
+
};
|
|
3365
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { ref: containerRef, className: cn("relative flex items-center gap-1.5", className), children: [
|
|
3366
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3367
|
+
"button",
|
|
3368
|
+
{
|
|
3369
|
+
type: "button",
|
|
3370
|
+
disabled,
|
|
3371
|
+
onClick: () => setOpen((o) => !o),
|
|
3372
|
+
className: cn(
|
|
3373
|
+
"w-5 h-5 rounded border border-white/10 shrink-0 transition-all",
|
|
3374
|
+
"hover:scale-110 hover:border-white/30 focus:outline-none focus:ring-1 focus:ring-white/20",
|
|
3375
|
+
disabled && "opacity-50 cursor-not-allowed"
|
|
3376
|
+
),
|
|
3377
|
+
style: { background: cssColor },
|
|
3378
|
+
title: value,
|
|
3379
|
+
"aria-label": "Open color picker"
|
|
3380
|
+
}
|
|
3381
|
+
),
|
|
3382
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3383
|
+
"input",
|
|
3384
|
+
{
|
|
3385
|
+
type: "text",
|
|
3386
|
+
value: inputVal,
|
|
3387
|
+
onChange: handleInputChange,
|
|
3388
|
+
onBlur: handleInputBlur,
|
|
3389
|
+
disabled,
|
|
3390
|
+
placeholder: "0 0% 0%",
|
|
3391
|
+
className: cn(
|
|
3392
|
+
"w-28 bg-white/5 border border-white/10 rounded px-1.5 py-0.5",
|
|
3393
|
+
"text-xs text-white/70 font-mono outline-none",
|
|
3394
|
+
"focus:border-white/30 placeholder:text-white/20",
|
|
3395
|
+
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
3396
|
+
inputClassName
|
|
3397
|
+
)
|
|
3398
|
+
}
|
|
3399
|
+
),
|
|
3400
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: cn(
|
|
3401
|
+
"absolute z-50 top-full left-0 mt-2",
|
|
3402
|
+
"bg-[#1a1c2e] border border-white/10 rounded-xl shadow-2xl p-3",
|
|
3403
|
+
"flex flex-col gap-3"
|
|
3404
|
+
), children: [
|
|
3405
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3406
|
+
import_react_colorful.HslColorPicker,
|
|
3407
|
+
{
|
|
3408
|
+
color: hslColor,
|
|
3409
|
+
onChange: handlePickerChange
|
|
3410
|
+
}
|
|
3411
|
+
),
|
|
3412
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3413
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3414
|
+
"div",
|
|
3415
|
+
{
|
|
3416
|
+
className: "w-6 h-6 rounded border border-white/10 shrink-0",
|
|
3417
|
+
style: { background: cssColor }
|
|
3418
|
+
}
|
|
3419
|
+
),
|
|
3420
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-xs font-mono text-white/50 truncate", children: value || "none" })
|
|
3421
|
+
] })
|
|
3422
|
+
] })
|
|
3423
|
+
] });
|
|
3424
|
+
}
|
|
3425
|
+
|
|
3426
|
+
// src/hooks/index.ts
|
|
3427
|
+
var import_react2 = require("react");
|
|
3311
3428
|
function useDisclosure(initial = false) {
|
|
3312
|
-
const [isOpen, setIsOpen] = (0,
|
|
3429
|
+
const [isOpen, setIsOpen] = (0, import_react2.useState)(initial);
|
|
3313
3430
|
return {
|
|
3314
3431
|
isOpen,
|
|
3315
3432
|
open: () => setIsOpen(true),
|
|
@@ -3319,15 +3436,15 @@ function useDisclosure(initial = false) {
|
|
|
3319
3436
|
};
|
|
3320
3437
|
}
|
|
3321
3438
|
function usePagination(total, pageSize = 20) {
|
|
3322
|
-
const [page, setPage] = (0,
|
|
3439
|
+
const [page, setPage] = (0, import_react2.useState)(1);
|
|
3323
3440
|
const totalPages = Math.ceil(total / pageSize);
|
|
3324
3441
|
return { page, setPage, pageSize, total, totalPages };
|
|
3325
3442
|
}
|
|
3326
3443
|
|
|
3327
3444
|
// src/components/auth/AuthShell.tsx
|
|
3328
|
-
var
|
|
3445
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
3329
3446
|
function AuthShell({ children, pattern = "dots", maxWidth = "520px" }) {
|
|
3330
|
-
return /* @__PURE__ */ (0,
|
|
3447
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
3331
3448
|
"div",
|
|
3332
3449
|
{
|
|
3333
3450
|
style: {
|
|
@@ -3342,7 +3459,7 @@ function AuthShell({ children, pattern = "dots", maxWidth = "520px" }) {
|
|
|
3342
3459
|
overflow: "hidden"
|
|
3343
3460
|
},
|
|
3344
3461
|
children: [
|
|
3345
|
-
pattern === "dots" && /* @__PURE__ */ (0,
|
|
3462
|
+
pattern === "dots" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
3346
3463
|
"div",
|
|
3347
3464
|
{
|
|
3348
3465
|
"aria-hidden": true,
|
|
@@ -3356,7 +3473,7 @@ function AuthShell({ children, pattern = "dots", maxWidth = "520px" }) {
|
|
|
3356
3473
|
}
|
|
3357
3474
|
}
|
|
3358
3475
|
),
|
|
3359
|
-
pattern === "grid" && /* @__PURE__ */ (0,
|
|
3476
|
+
pattern === "grid" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
3360
3477
|
"div",
|
|
3361
3478
|
{
|
|
3362
3479
|
"aria-hidden": true,
|
|
@@ -3370,16 +3487,16 @@ function AuthShell({ children, pattern = "dots", maxWidth = "520px" }) {
|
|
|
3370
3487
|
}
|
|
3371
3488
|
}
|
|
3372
3489
|
),
|
|
3373
|
-
/* @__PURE__ */ (0,
|
|
3490
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { style: { position: "relative", zIndex: 1, width: "100%", maxWidth }, children })
|
|
3374
3491
|
]
|
|
3375
3492
|
}
|
|
3376
3493
|
);
|
|
3377
3494
|
}
|
|
3378
3495
|
|
|
3379
3496
|
// src/components/auth/AuthCard.tsx
|
|
3380
|
-
var
|
|
3497
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
3381
3498
|
function AuthCard({ children, padding = "24px 28px" }) {
|
|
3382
|
-
return /* @__PURE__ */ (0,
|
|
3499
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
3383
3500
|
"div",
|
|
3384
3501
|
{
|
|
3385
3502
|
style: {
|
|
@@ -3396,10 +3513,10 @@ function AuthCard({ children, padding = "24px 28px" }) {
|
|
|
3396
3513
|
}
|
|
3397
3514
|
|
|
3398
3515
|
// src/components/auth/AuthLogo.tsx
|
|
3399
|
-
var
|
|
3516
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
3400
3517
|
function AuthLogo({ appName = "Builify CMS", letter = "B", imageUrl, size = 36 }) {
|
|
3401
|
-
return /* @__PURE__ */ (0,
|
|
3402
|
-
imageUrl ? /* @__PURE__ */ (0,
|
|
3518
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", gap: "10px", marginBottom: "28px" }, children: [
|
|
3519
|
+
imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
3403
3520
|
"img",
|
|
3404
3521
|
{
|
|
3405
3522
|
src: imageUrl,
|
|
@@ -3408,7 +3525,7 @@ function AuthLogo({ appName = "Builify CMS", letter = "B", imageUrl, size = 36 }
|
|
|
3408
3525
|
height: size,
|
|
3409
3526
|
style: { borderRadius: "calc(var(--radius, 0.5rem) * 1.2)", flexShrink: 0, display: "block" }
|
|
3410
3527
|
}
|
|
3411
|
-
) : /* @__PURE__ */ (0,
|
|
3528
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
3412
3529
|
"div",
|
|
3413
3530
|
{
|
|
3414
3531
|
style: {
|
|
@@ -3427,7 +3544,7 @@ function AuthLogo({ appName = "Builify CMS", letter = "B", imageUrl, size = 36 }
|
|
|
3427
3544
|
children: letter
|
|
3428
3545
|
}
|
|
3429
3546
|
),
|
|
3430
|
-
/* @__PURE__ */ (0,
|
|
3547
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
3431
3548
|
"span",
|
|
3432
3549
|
{
|
|
3433
3550
|
style: {
|
|
@@ -3443,10 +3560,10 @@ function AuthLogo({ appName = "Builify CMS", letter = "B", imageUrl, size = 36 }
|
|
|
3443
3560
|
}
|
|
3444
3561
|
|
|
3445
3562
|
// src/components/auth/AuthHeader.tsx
|
|
3446
|
-
var
|
|
3563
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
3447
3564
|
function AuthHeader({ title, description }) {
|
|
3448
|
-
return /* @__PURE__ */ (0,
|
|
3449
|
-
/* @__PURE__ */ (0,
|
|
3565
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { style: { marginBottom: "24px", textAlign: "center" }, children: [
|
|
3566
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
3450
3567
|
"h1",
|
|
3451
3568
|
{
|
|
3452
3569
|
style: {
|
|
@@ -3459,7 +3576,7 @@ function AuthHeader({ title, description }) {
|
|
|
3459
3576
|
children: title
|
|
3460
3577
|
}
|
|
3461
3578
|
),
|
|
3462
|
-
description && /* @__PURE__ */ (0,
|
|
3579
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
3463
3580
|
"p",
|
|
3464
3581
|
{
|
|
3465
3582
|
style: {
|
|
@@ -3475,12 +3592,12 @@ function AuthHeader({ title, description }) {
|
|
|
3475
3592
|
}
|
|
3476
3593
|
|
|
3477
3594
|
// src/components/auth/AuthField.tsx
|
|
3478
|
-
var
|
|
3595
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
3479
3596
|
function AuthField({ label, error, hint, rightLabel, id, ...props }) {
|
|
3480
3597
|
const fieldId = id ?? label.toLowerCase().replace(/\s+/g, "-");
|
|
3481
|
-
return /* @__PURE__ */ (0,
|
|
3482
|
-
/* @__PURE__ */ (0,
|
|
3483
|
-
/* @__PURE__ */ (0,
|
|
3598
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "6px" }, children: [
|
|
3599
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [
|
|
3600
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3484
3601
|
"label",
|
|
3485
3602
|
{
|
|
3486
3603
|
htmlFor: fieldId,
|
|
@@ -3492,9 +3609,9 @@ function AuthField({ label, error, hint, rightLabel, id, ...props }) {
|
|
|
3492
3609
|
children: label
|
|
3493
3610
|
}
|
|
3494
3611
|
),
|
|
3495
|
-
rightLabel && /* @__PURE__ */ (0,
|
|
3612
|
+
rightLabel && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { style: { fontSize: "0.8125rem" }, children: rightLabel })
|
|
3496
3613
|
] }),
|
|
3497
|
-
/* @__PURE__ */ (0,
|
|
3614
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
3498
3615
|
"input",
|
|
3499
3616
|
{
|
|
3500
3617
|
id: fieldId,
|
|
@@ -3524,13 +3641,13 @@ function AuthField({ label, error, hint, rightLabel, id, ...props }) {
|
|
|
3524
3641
|
...props
|
|
3525
3642
|
}
|
|
3526
3643
|
),
|
|
3527
|
-
error && /* @__PURE__ */ (0,
|
|
3528
|
-
hint && !error && /* @__PURE__ */ (0,
|
|
3644
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { style: { fontSize: "0.8rem", color: "var(--destructive)", margin: 0 }, children: error }),
|
|
3645
|
+
hint && !error && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { style: { fontSize: "0.8rem", color: "var(--muted-foreground)", margin: 0 }, children: hint })
|
|
3529
3646
|
] });
|
|
3530
3647
|
}
|
|
3531
3648
|
|
|
3532
3649
|
// src/components/auth/AuthButton.tsx
|
|
3533
|
-
var
|
|
3650
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
3534
3651
|
function AuthButton({
|
|
3535
3652
|
loading,
|
|
3536
3653
|
variant = "primary",
|
|
@@ -3573,7 +3690,7 @@ function AuthButton({
|
|
|
3573
3690
|
color: "var(--foreground)"
|
|
3574
3691
|
}
|
|
3575
3692
|
};
|
|
3576
|
-
return /* @__PURE__ */ (0,
|
|
3693
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
3577
3694
|
"button",
|
|
3578
3695
|
{
|
|
3579
3696
|
disabled: loading || disabled,
|
|
@@ -3585,8 +3702,8 @@ function AuthButton({
|
|
|
3585
3702
|
e.currentTarget.style.filter = "none";
|
|
3586
3703
|
},
|
|
3587
3704
|
...props,
|
|
3588
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
3589
|
-
/* @__PURE__ */ (0,
|
|
3705
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
|
|
3706
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
3590
3707
|
"span",
|
|
3591
3708
|
{
|
|
3592
3709
|
style: {
|
|
@@ -3607,19 +3724,19 @@ function AuthButton({
|
|
|
3607
3724
|
}
|
|
3608
3725
|
|
|
3609
3726
|
// src/components/auth/AuthDivider.tsx
|
|
3610
|
-
var
|
|
3727
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
3611
3728
|
function AuthDivider({ label = "or" }) {
|
|
3612
|
-
return /* @__PURE__ */ (0,
|
|
3613
|
-
/* @__PURE__ */ (0,
|
|
3614
|
-
/* @__PURE__ */ (0,
|
|
3615
|
-
/* @__PURE__ */ (0,
|
|
3729
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "12px", margin: "20px 0" }, children: [
|
|
3730
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { style: { flex: 1, height: 1, background: "var(--border)" } }),
|
|
3731
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { style: { fontSize: "0.75rem", color: "var(--muted-foreground)", userSelect: "none" }, children: label }),
|
|
3732
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { style: { flex: 1, height: 1, background: "var(--border)" } })
|
|
3616
3733
|
] });
|
|
3617
3734
|
}
|
|
3618
3735
|
|
|
3619
3736
|
// src/components/auth/AuthFootnote.tsx
|
|
3620
|
-
var
|
|
3737
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
3621
3738
|
function AuthFootnote({ text, linkText, linkHref }) {
|
|
3622
|
-
return /* @__PURE__ */ (0,
|
|
3739
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("p", { style: {
|
|
3623
3740
|
textAlign: "center",
|
|
3624
3741
|
marginTop: "20px",
|
|
3625
3742
|
fontSize: "0.8125rem",
|
|
@@ -3627,7 +3744,7 @@ function AuthFootnote({ text, linkText, linkHref }) {
|
|
|
3627
3744
|
}, children: [
|
|
3628
3745
|
text,
|
|
3629
3746
|
" ",
|
|
3630
|
-
/* @__PURE__ */ (0,
|
|
3747
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
3631
3748
|
"a",
|
|
3632
3749
|
{
|
|
3633
3750
|
href: linkHref,
|
|
@@ -3699,6 +3816,7 @@ var import_next_themes2 = require("next-themes");
|
|
|
3699
3816
|
FormField,
|
|
3700
3817
|
FormLayout,
|
|
3701
3818
|
FormSection,
|
|
3819
|
+
HslColorInput,
|
|
3702
3820
|
ImagePickerField,
|
|
3703
3821
|
Input,
|
|
3704
3822
|
Label,
|