@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 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
- export { Alert, type AlertProps, AppShell, type AppShellProps, 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 };
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
- export { Alert, type AlertProps, AppShell, type AppShellProps, 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 };
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,