@webdevarif/dashui 0.1.2 → 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 +53 -1
- package/dist/index.d.ts +53 -1
- package/dist/index.js +327 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +319 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -326,4 +326,56 @@ declare function usePagination(total: number, pageSize?: number): {
|
|
|
326
326
|
|
|
327
327
|
declare function cn(...inputs: ClassValue[]): string;
|
|
328
328
|
|
|
329
|
-
|
|
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
|
@@ -326,4 +326,56 @@ declare function usePagination(total: number, pageSize?: number): {
|
|
|
326
326
|
|
|
327
327
|
declare function cn(...inputs: ClassValue[]): string;
|
|
328
328
|
|
|
329
|
-
|
|
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,
|
|
@@ -1558,12 +1566,331 @@ function usePagination(total, pageSize = 20) {
|
|
|
1558
1566
|
return { page, setPage, pageSize, total, totalPages };
|
|
1559
1567
|
}
|
|
1560
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
|
+
|
|
1561
1880
|
// src/index.ts
|
|
1562
1881
|
var import_next_themes = require("next-themes");
|
|
1563
1882
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1564
1883
|
0 && (module.exports = {
|
|
1565
1884
|
Alert,
|
|
1566
1885
|
AppShell,
|
|
1886
|
+
AuthButton,
|
|
1887
|
+
AuthCard,
|
|
1888
|
+
AuthDivider,
|
|
1889
|
+
AuthField,
|
|
1890
|
+
AuthFootnote,
|
|
1891
|
+
AuthHeader,
|
|
1892
|
+
AuthLogo,
|
|
1893
|
+
AuthShell,
|
|
1567
1894
|
Badge,
|
|
1568
1895
|
Button,
|
|
1569
1896
|
Card,
|