@webdevarif/dashui 0.1.1 → 0.1.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 +54 -1
- package/dist/index.d.ts +54 -1
- package/dist/index.js +336 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +325 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +18 -4
package/dist/index.d.mts
CHANGED
|
@@ -13,6 +13,7 @@ import * as SwitchPrimitives from '@radix-ui/react-switch';
|
|
|
13
13
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
14
14
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
15
15
|
import { ClassValue } from 'clsx';
|
|
16
|
+
export { ThemeProvider, useTheme } from 'next-themes';
|
|
16
17
|
|
|
17
18
|
declare const buttonVariants: (props?: ({
|
|
18
19
|
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
|
|
@@ -325,4 +326,56 @@ declare function usePagination(total: number, pageSize?: number): {
|
|
|
325
326
|
|
|
326
327
|
declare function cn(...inputs: ClassValue[]): string;
|
|
327
328
|
|
|
328
|
-
|
|
329
|
+
interface AuthShellProps {
|
|
330
|
+
children: React$1.ReactNode;
|
|
331
|
+
/** Optional background pattern — 'dots' | 'grid' | 'none' */
|
|
332
|
+
pattern?: 'dots' | 'grid' | 'none';
|
|
333
|
+
}
|
|
334
|
+
declare function AuthShell({ children, pattern }: AuthShellProps): react_jsx_runtime.JSX.Element;
|
|
335
|
+
|
|
336
|
+
interface AuthCardProps {
|
|
337
|
+
children: React$1.ReactNode;
|
|
338
|
+
}
|
|
339
|
+
declare function AuthCard({ children }: AuthCardProps): react_jsx_runtime.JSX.Element;
|
|
340
|
+
|
|
341
|
+
interface AuthLogoProps {
|
|
342
|
+
/** App name shown next to the logo mark */
|
|
343
|
+
appName?: string;
|
|
344
|
+
/** Single letter shown inside the logo box */
|
|
345
|
+
letter?: string;
|
|
346
|
+
}
|
|
347
|
+
declare function AuthLogo({ appName, letter }: AuthLogoProps): react_jsx_runtime.JSX.Element;
|
|
348
|
+
|
|
349
|
+
interface AuthHeaderProps {
|
|
350
|
+
title: string;
|
|
351
|
+
description?: string;
|
|
352
|
+
}
|
|
353
|
+
declare function AuthHeader({ title, description }: AuthHeaderProps): react_jsx_runtime.JSX.Element;
|
|
354
|
+
|
|
355
|
+
interface AuthFieldProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
|
|
356
|
+
label: string;
|
|
357
|
+
error?: string;
|
|
358
|
+
hint?: string;
|
|
359
|
+
rightLabel?: React$1.ReactNode;
|
|
360
|
+
}
|
|
361
|
+
declare function AuthField({ label, error, hint, rightLabel, id, ...props }: AuthFieldProps): react_jsx_runtime.JSX.Element;
|
|
362
|
+
|
|
363
|
+
interface AuthButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
364
|
+
loading?: boolean;
|
|
365
|
+
variant?: 'primary' | 'outline' | 'ghost';
|
|
366
|
+
fullWidth?: boolean;
|
|
367
|
+
}
|
|
368
|
+
declare function AuthButton({ loading, variant, fullWidth, children, disabled, style, ...props }: AuthButtonProps): react_jsx_runtime.JSX.Element;
|
|
369
|
+
|
|
370
|
+
declare function AuthDivider({ label }: {
|
|
371
|
+
label?: string;
|
|
372
|
+
}): react_jsx_runtime.JSX.Element;
|
|
373
|
+
|
|
374
|
+
interface AuthFootnoteProps {
|
|
375
|
+
text: string;
|
|
376
|
+
linkText: string;
|
|
377
|
+
linkHref: string;
|
|
378
|
+
}
|
|
379
|
+
declare function AuthFootnote({ text, linkText, linkHref }: AuthFootnoteProps): react_jsx_runtime.JSX.Element;
|
|
380
|
+
|
|
381
|
+
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, 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, Input, type InputProps, Label, LoadingSpinner, type LoadingSpinnerProps, Page, type PageProps, PageSection, type PageSectionProps, Pagination, type PaginationProps, Popover, PopoverContent, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sidebar, type SidebarItem, type SidebarProps, Skeleton, type Stat, Stats, type StatsProps, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopBar, type TopBarProps, badgeVariants, buttonVariants, cn, useDisclosure, usePagination };
|
package/dist/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ import * as SwitchPrimitives from '@radix-ui/react-switch';
|
|
|
13
13
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
14
14
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
15
15
|
import { ClassValue } from 'clsx';
|
|
16
|
+
export { ThemeProvider, useTheme } from 'next-themes';
|
|
16
17
|
|
|
17
18
|
declare const buttonVariants: (props?: ({
|
|
18
19
|
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
|
|
@@ -325,4 +326,56 @@ declare function usePagination(total: number, pageSize?: number): {
|
|
|
325
326
|
|
|
326
327
|
declare function cn(...inputs: ClassValue[]): string;
|
|
327
328
|
|
|
328
|
-
|
|
329
|
+
interface AuthShellProps {
|
|
330
|
+
children: React$1.ReactNode;
|
|
331
|
+
/** Optional background pattern — 'dots' | 'grid' | 'none' */
|
|
332
|
+
pattern?: 'dots' | 'grid' | 'none';
|
|
333
|
+
}
|
|
334
|
+
declare function AuthShell({ children, pattern }: AuthShellProps): react_jsx_runtime.JSX.Element;
|
|
335
|
+
|
|
336
|
+
interface AuthCardProps {
|
|
337
|
+
children: React$1.ReactNode;
|
|
338
|
+
}
|
|
339
|
+
declare function AuthCard({ children }: AuthCardProps): react_jsx_runtime.JSX.Element;
|
|
340
|
+
|
|
341
|
+
interface AuthLogoProps {
|
|
342
|
+
/** App name shown next to the logo mark */
|
|
343
|
+
appName?: string;
|
|
344
|
+
/** Single letter shown inside the logo box */
|
|
345
|
+
letter?: string;
|
|
346
|
+
}
|
|
347
|
+
declare function AuthLogo({ appName, letter }: AuthLogoProps): react_jsx_runtime.JSX.Element;
|
|
348
|
+
|
|
349
|
+
interface AuthHeaderProps {
|
|
350
|
+
title: string;
|
|
351
|
+
description?: string;
|
|
352
|
+
}
|
|
353
|
+
declare function AuthHeader({ title, description }: AuthHeaderProps): react_jsx_runtime.JSX.Element;
|
|
354
|
+
|
|
355
|
+
interface AuthFieldProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
|
|
356
|
+
label: string;
|
|
357
|
+
error?: string;
|
|
358
|
+
hint?: string;
|
|
359
|
+
rightLabel?: React$1.ReactNode;
|
|
360
|
+
}
|
|
361
|
+
declare function AuthField({ label, error, hint, rightLabel, id, ...props }: AuthFieldProps): react_jsx_runtime.JSX.Element;
|
|
362
|
+
|
|
363
|
+
interface AuthButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
364
|
+
loading?: boolean;
|
|
365
|
+
variant?: 'primary' | 'outline' | 'ghost';
|
|
366
|
+
fullWidth?: boolean;
|
|
367
|
+
}
|
|
368
|
+
declare function AuthButton({ loading, variant, fullWidth, children, disabled, style, ...props }: AuthButtonProps): react_jsx_runtime.JSX.Element;
|
|
369
|
+
|
|
370
|
+
declare function AuthDivider({ label }: {
|
|
371
|
+
label?: string;
|
|
372
|
+
}): react_jsx_runtime.JSX.Element;
|
|
373
|
+
|
|
374
|
+
interface AuthFootnoteProps {
|
|
375
|
+
text: string;
|
|
376
|
+
linkText: string;
|
|
377
|
+
linkHref: string;
|
|
378
|
+
}
|
|
379
|
+
declare function AuthFootnote({ text, linkText, linkHref }: AuthFootnoteProps): react_jsx_runtime.JSX.Element;
|
|
380
|
+
|
|
381
|
+
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, 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, Input, type InputProps, Label, LoadingSpinner, type LoadingSpinnerProps, Page, type PageProps, PageSection, type PageSectionProps, Pagination, type PaginationProps, Popover, PopoverContent, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sidebar, type SidebarItem, type SidebarProps, Skeleton, type Stat, Stats, type StatsProps, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopBar, type TopBarProps, badgeVariants, buttonVariants, cn, useDisclosure, usePagination };
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,14 @@ var index_exports = {};
|
|
|
32
32
|
__export(index_exports, {
|
|
33
33
|
Alert: () => Alert,
|
|
34
34
|
AppShell: () => AppShell,
|
|
35
|
+
AuthButton: () => AuthButton,
|
|
36
|
+
AuthCard: () => AuthCard,
|
|
37
|
+
AuthDivider: () => AuthDivider,
|
|
38
|
+
AuthField: () => AuthField,
|
|
39
|
+
AuthFootnote: () => AuthFootnote,
|
|
40
|
+
AuthHeader: () => AuthHeader,
|
|
41
|
+
AuthLogo: () => AuthLogo,
|
|
42
|
+
AuthShell: () => AuthShell,
|
|
35
43
|
Badge: () => Badge,
|
|
36
44
|
Button: () => Button,
|
|
37
45
|
Card: () => Card,
|
|
@@ -101,6 +109,7 @@ __export(index_exports, {
|
|
|
101
109
|
TabsList: () => TabsList,
|
|
102
110
|
TabsTrigger: () => TabsTrigger,
|
|
103
111
|
Textarea: () => Textarea,
|
|
112
|
+
ThemeProvider: () => import_next_themes.ThemeProvider,
|
|
104
113
|
Tooltip: () => Tooltip,
|
|
105
114
|
TooltipContent: () => TooltipContent,
|
|
106
115
|
TooltipProvider: () => TooltipProvider,
|
|
@@ -110,7 +119,8 @@ __export(index_exports, {
|
|
|
110
119
|
buttonVariants: () => buttonVariants,
|
|
111
120
|
cn: () => cn,
|
|
112
121
|
useDisclosure: () => useDisclosure,
|
|
113
|
-
usePagination: () => usePagination
|
|
122
|
+
usePagination: () => usePagination,
|
|
123
|
+
useTheme: () => import_next_themes.useTheme
|
|
114
124
|
});
|
|
115
125
|
module.exports = __toCommonJS(index_exports);
|
|
116
126
|
|
|
@@ -1555,10 +1565,332 @@ function usePagination(total, pageSize = 20) {
|
|
|
1555
1565
|
const totalPages = Math.ceil(total / pageSize);
|
|
1556
1566
|
return { page, setPage, pageSize, total, totalPages };
|
|
1557
1567
|
}
|
|
1568
|
+
|
|
1569
|
+
// src/components/auth/AuthShell.tsx
|
|
1570
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1571
|
+
function AuthShell({ children, pattern = "dots" }) {
|
|
1572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
1573
|
+
"div",
|
|
1574
|
+
{
|
|
1575
|
+
style: {
|
|
1576
|
+
minHeight: "100vh",
|
|
1577
|
+
display: "flex",
|
|
1578
|
+
flexDirection: "column",
|
|
1579
|
+
alignItems: "center",
|
|
1580
|
+
justifyContent: "center",
|
|
1581
|
+
padding: "24px",
|
|
1582
|
+
background: "var(--background)",
|
|
1583
|
+
position: "relative",
|
|
1584
|
+
overflow: "hidden"
|
|
1585
|
+
},
|
|
1586
|
+
children: [
|
|
1587
|
+
pattern === "dots" && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1588
|
+
"div",
|
|
1589
|
+
{
|
|
1590
|
+
"aria-hidden": true,
|
|
1591
|
+
style: {
|
|
1592
|
+
position: "absolute",
|
|
1593
|
+
inset: 0,
|
|
1594
|
+
backgroundImage: "radial-gradient(circle, var(--border) 1px, transparent 1px)",
|
|
1595
|
+
backgroundSize: "28px 28px",
|
|
1596
|
+
opacity: 0.5,
|
|
1597
|
+
pointerEvents: "none"
|
|
1598
|
+
}
|
|
1599
|
+
}
|
|
1600
|
+
),
|
|
1601
|
+
pattern === "grid" && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1602
|
+
"div",
|
|
1603
|
+
{
|
|
1604
|
+
"aria-hidden": true,
|
|
1605
|
+
style: {
|
|
1606
|
+
position: "absolute",
|
|
1607
|
+
inset: 0,
|
|
1608
|
+
backgroundImage: "linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px)",
|
|
1609
|
+
backgroundSize: "32px 32px",
|
|
1610
|
+
opacity: 0.4,
|
|
1611
|
+
pointerEvents: "none"
|
|
1612
|
+
}
|
|
1613
|
+
}
|
|
1614
|
+
),
|
|
1615
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { style: { position: "relative", zIndex: 1, width: "100%", maxWidth: "440px" }, children })
|
|
1616
|
+
]
|
|
1617
|
+
}
|
|
1618
|
+
);
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
// src/components/auth/AuthCard.tsx
|
|
1622
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1623
|
+
function AuthCard({ children }) {
|
|
1624
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1625
|
+
"div",
|
|
1626
|
+
{
|
|
1627
|
+
style: {
|
|
1628
|
+
background: "var(--card)",
|
|
1629
|
+
border: "1px solid var(--border)",
|
|
1630
|
+
borderRadius: "calc(var(--radius, 0.5rem) * 1.5)",
|
|
1631
|
+
boxShadow: "0 4px 32px rgba(0,0,0,0.06), 0 1px 4px rgba(0,0,0,0.04)",
|
|
1632
|
+
padding: "36px 40px",
|
|
1633
|
+
width: "100%"
|
|
1634
|
+
},
|
|
1635
|
+
children
|
|
1636
|
+
}
|
|
1637
|
+
);
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1640
|
+
// src/components/auth/AuthLogo.tsx
|
|
1641
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1642
|
+
function AuthLogo({ appName = "Builify CMS", letter = "B" }) {
|
|
1643
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", gap: "10px", marginBottom: "28px" }, children: [
|
|
1644
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1645
|
+
"div",
|
|
1646
|
+
{
|
|
1647
|
+
style: {
|
|
1648
|
+
width: 36,
|
|
1649
|
+
height: 36,
|
|
1650
|
+
background: "var(--primary)",
|
|
1651
|
+
borderRadius: "calc(var(--radius, 0.5rem) * 1.2)",
|
|
1652
|
+
display: "flex",
|
|
1653
|
+
alignItems: "center",
|
|
1654
|
+
justifyContent: "center",
|
|
1655
|
+
color: "var(--primary-foreground)",
|
|
1656
|
+
fontWeight: 800,
|
|
1657
|
+
fontSize: "1rem",
|
|
1658
|
+
flexShrink: 0
|
|
1659
|
+
},
|
|
1660
|
+
children: letter
|
|
1661
|
+
}
|
|
1662
|
+
),
|
|
1663
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1664
|
+
"span",
|
|
1665
|
+
{
|
|
1666
|
+
style: {
|
|
1667
|
+
fontWeight: 700,
|
|
1668
|
+
fontSize: "1.125rem",
|
|
1669
|
+
color: "var(--foreground)",
|
|
1670
|
+
letterSpacing: "-0.02em"
|
|
1671
|
+
},
|
|
1672
|
+
children: appName
|
|
1673
|
+
}
|
|
1674
|
+
)
|
|
1675
|
+
] });
|
|
1676
|
+
}
|
|
1677
|
+
|
|
1678
|
+
// src/components/auth/AuthHeader.tsx
|
|
1679
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
1680
|
+
function AuthHeader({ title, description }) {
|
|
1681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { style: { marginBottom: "24px", textAlign: "center" }, children: [
|
|
1682
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1683
|
+
"h1",
|
|
1684
|
+
{
|
|
1685
|
+
style: {
|
|
1686
|
+
fontSize: "1.375rem",
|
|
1687
|
+
fontWeight: 700,
|
|
1688
|
+
color: "var(--foreground)",
|
|
1689
|
+
margin: 0,
|
|
1690
|
+
letterSpacing: "-0.02em"
|
|
1691
|
+
},
|
|
1692
|
+
children: title
|
|
1693
|
+
}
|
|
1694
|
+
),
|
|
1695
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1696
|
+
"p",
|
|
1697
|
+
{
|
|
1698
|
+
style: {
|
|
1699
|
+
marginTop: "6px",
|
|
1700
|
+
fontSize: "0.875rem",
|
|
1701
|
+
color: "var(--muted-foreground)",
|
|
1702
|
+
lineHeight: 1.5
|
|
1703
|
+
},
|
|
1704
|
+
children: description
|
|
1705
|
+
}
|
|
1706
|
+
)
|
|
1707
|
+
] });
|
|
1708
|
+
}
|
|
1709
|
+
|
|
1710
|
+
// src/components/auth/AuthField.tsx
|
|
1711
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
1712
|
+
function AuthField({ label, error, hint, rightLabel, id, ...props }) {
|
|
1713
|
+
const fieldId = id ?? label.toLowerCase().replace(/\s+/g, "-");
|
|
1714
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "6px" }, children: [
|
|
1715
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [
|
|
1716
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1717
|
+
"label",
|
|
1718
|
+
{
|
|
1719
|
+
htmlFor: fieldId,
|
|
1720
|
+
style: {
|
|
1721
|
+
fontSize: "0.8125rem",
|
|
1722
|
+
fontWeight: 500,
|
|
1723
|
+
color: "var(--foreground)"
|
|
1724
|
+
},
|
|
1725
|
+
children: label
|
|
1726
|
+
}
|
|
1727
|
+
),
|
|
1728
|
+
rightLabel && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { style: { fontSize: "0.8125rem" }, children: rightLabel })
|
|
1729
|
+
] }),
|
|
1730
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1731
|
+
"input",
|
|
1732
|
+
{
|
|
1733
|
+
id: fieldId,
|
|
1734
|
+
style: {
|
|
1735
|
+
height: "40px",
|
|
1736
|
+
padding: "0 12px",
|
|
1737
|
+
background: "var(--background)",
|
|
1738
|
+
border: `1px solid ${error ? "var(--destructive)" : "var(--border)"}`,
|
|
1739
|
+
borderRadius: "var(--radius, 0.5rem)",
|
|
1740
|
+
color: "var(--foreground)",
|
|
1741
|
+
fontSize: "0.875rem",
|
|
1742
|
+
outline: "none",
|
|
1743
|
+
width: "100%",
|
|
1744
|
+
boxSizing: "border-box",
|
|
1745
|
+
transition: "border-color 0.15s, box-shadow 0.15s"
|
|
1746
|
+
},
|
|
1747
|
+
onFocus: (e) => {
|
|
1748
|
+
e.currentTarget.style.borderColor = "var(--ring)";
|
|
1749
|
+
e.currentTarget.style.boxShadow = "0 0 0 3px color-mix(in oklab, var(--ring) 20%, transparent)";
|
|
1750
|
+
props.onFocus?.(e);
|
|
1751
|
+
},
|
|
1752
|
+
onBlur: (e) => {
|
|
1753
|
+
e.currentTarget.style.borderColor = error ? "var(--destructive)" : "var(--border)";
|
|
1754
|
+
e.currentTarget.style.boxShadow = "none";
|
|
1755
|
+
props.onBlur?.(e);
|
|
1756
|
+
},
|
|
1757
|
+
...props
|
|
1758
|
+
}
|
|
1759
|
+
),
|
|
1760
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { style: { fontSize: "0.8rem", color: "var(--destructive)", margin: 0 }, children: error }),
|
|
1761
|
+
hint && !error && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { style: { fontSize: "0.8rem", color: "var(--muted-foreground)", margin: 0 }, children: hint })
|
|
1762
|
+
] });
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
// src/components/auth/AuthButton.tsx
|
|
1766
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
1767
|
+
function AuthButton({
|
|
1768
|
+
loading,
|
|
1769
|
+
variant = "primary",
|
|
1770
|
+
fullWidth = true,
|
|
1771
|
+
children,
|
|
1772
|
+
disabled,
|
|
1773
|
+
style,
|
|
1774
|
+
...props
|
|
1775
|
+
}) {
|
|
1776
|
+
const base = {
|
|
1777
|
+
height: "42px",
|
|
1778
|
+
padding: "0 20px",
|
|
1779
|
+
borderRadius: "var(--radius, 0.5rem)",
|
|
1780
|
+
fontSize: "0.875rem",
|
|
1781
|
+
fontWeight: 600,
|
|
1782
|
+
cursor: loading || disabled ? "not-allowed" : "pointer",
|
|
1783
|
+
opacity: loading || disabled ? 0.65 : 1,
|
|
1784
|
+
display: "inline-flex",
|
|
1785
|
+
alignItems: "center",
|
|
1786
|
+
justifyContent: "center",
|
|
1787
|
+
gap: "8px",
|
|
1788
|
+
border: "none",
|
|
1789
|
+
outline: "none",
|
|
1790
|
+
transition: "opacity 0.15s, filter 0.15s",
|
|
1791
|
+
width: fullWidth ? "100%" : "auto",
|
|
1792
|
+
...style
|
|
1793
|
+
};
|
|
1794
|
+
const variantStyles = {
|
|
1795
|
+
primary: {
|
|
1796
|
+
background: "var(--primary)",
|
|
1797
|
+
color: "var(--primary-foreground)"
|
|
1798
|
+
},
|
|
1799
|
+
outline: {
|
|
1800
|
+
background: "transparent",
|
|
1801
|
+
color: "var(--foreground)",
|
|
1802
|
+
border: "1px solid var(--border)"
|
|
1803
|
+
},
|
|
1804
|
+
ghost: {
|
|
1805
|
+
background: "transparent",
|
|
1806
|
+
color: "var(--foreground)"
|
|
1807
|
+
}
|
|
1808
|
+
};
|
|
1809
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1810
|
+
"button",
|
|
1811
|
+
{
|
|
1812
|
+
disabled: loading || disabled,
|
|
1813
|
+
style: { ...base, ...variantStyles[variant] },
|
|
1814
|
+
onMouseEnter: (e) => {
|
|
1815
|
+
if (!loading && !disabled) e.currentTarget.style.filter = "brightness(0.9)";
|
|
1816
|
+
},
|
|
1817
|
+
onMouseLeave: (e) => {
|
|
1818
|
+
e.currentTarget.style.filter = "none";
|
|
1819
|
+
},
|
|
1820
|
+
...props,
|
|
1821
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
|
|
1822
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1823
|
+
"span",
|
|
1824
|
+
{
|
|
1825
|
+
style: {
|
|
1826
|
+
width: 14,
|
|
1827
|
+
height: 14,
|
|
1828
|
+
border: "2px solid currentColor",
|
|
1829
|
+
borderTopColor: "transparent",
|
|
1830
|
+
borderRadius: "50%",
|
|
1831
|
+
display: "inline-block",
|
|
1832
|
+
animation: "dashui-spin 0.7s linear infinite"
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
),
|
|
1836
|
+
children
|
|
1837
|
+
] }) : children
|
|
1838
|
+
}
|
|
1839
|
+
);
|
|
1840
|
+
}
|
|
1841
|
+
|
|
1842
|
+
// src/components/auth/AuthDivider.tsx
|
|
1843
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
1844
|
+
function AuthDivider({ label = "or" }) {
|
|
1845
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "12px", margin: "20px 0" }, children: [
|
|
1846
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { style: { flex: 1, height: 1, background: "var(--border)" } }),
|
|
1847
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { style: { fontSize: "0.75rem", color: "var(--muted-foreground)", userSelect: "none" }, children: label }),
|
|
1848
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { style: { flex: 1, height: 1, background: "var(--border)" } })
|
|
1849
|
+
] });
|
|
1850
|
+
}
|
|
1851
|
+
|
|
1852
|
+
// src/components/auth/AuthFootnote.tsx
|
|
1853
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
1854
|
+
function AuthFootnote({ text, linkText, linkHref }) {
|
|
1855
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("p", { style: {
|
|
1856
|
+
textAlign: "center",
|
|
1857
|
+
marginTop: "20px",
|
|
1858
|
+
fontSize: "0.8125rem",
|
|
1859
|
+
color: "var(--muted-foreground)"
|
|
1860
|
+
}, children: [
|
|
1861
|
+
text,
|
|
1862
|
+
" ",
|
|
1863
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
1864
|
+
"a",
|
|
1865
|
+
{
|
|
1866
|
+
href: linkHref,
|
|
1867
|
+
style: {
|
|
1868
|
+
color: "var(--primary)",
|
|
1869
|
+
fontWeight: 600,
|
|
1870
|
+
textDecoration: "none"
|
|
1871
|
+
},
|
|
1872
|
+
onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
|
|
1873
|
+
onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
|
|
1874
|
+
children: linkText
|
|
1875
|
+
}
|
|
1876
|
+
)
|
|
1877
|
+
] });
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
// src/index.ts
|
|
1881
|
+
var import_next_themes = require("next-themes");
|
|
1558
1882
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1559
1883
|
0 && (module.exports = {
|
|
1560
1884
|
Alert,
|
|
1561
1885
|
AppShell,
|
|
1886
|
+
AuthButton,
|
|
1887
|
+
AuthCard,
|
|
1888
|
+
AuthDivider,
|
|
1889
|
+
AuthField,
|
|
1890
|
+
AuthFootnote,
|
|
1891
|
+
AuthHeader,
|
|
1892
|
+
AuthLogo,
|
|
1893
|
+
AuthShell,
|
|
1562
1894
|
Badge,
|
|
1563
1895
|
Button,
|
|
1564
1896
|
Card,
|
|
@@ -1628,6 +1960,7 @@ function usePagination(total, pageSize = 20) {
|
|
|
1628
1960
|
TabsList,
|
|
1629
1961
|
TabsTrigger,
|
|
1630
1962
|
Textarea,
|
|
1963
|
+
ThemeProvider,
|
|
1631
1964
|
Tooltip,
|
|
1632
1965
|
TooltipContent,
|
|
1633
1966
|
TooltipProvider,
|
|
@@ -1637,6 +1970,7 @@ function usePagination(total, pageSize = 20) {
|
|
|
1637
1970
|
buttonVariants,
|
|
1638
1971
|
cn,
|
|
1639
1972
|
useDisclosure,
|
|
1640
|
-
usePagination
|
|
1973
|
+
usePagination,
|
|
1974
|
+
useTheme
|
|
1641
1975
|
});
|
|
1642
1976
|
//# sourceMappingURL=index.js.map
|