@codeswayam/ui 1.0.0

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.
Files changed (42) hide show
  1. package/README.md +597 -0
  2. package/dist/components/base/avatar.d.ts +7 -0
  3. package/dist/components/base/avatar.d.ts.map +1 -0
  4. package/dist/components/base/avatar.js +11 -0
  5. package/dist/components/base/badge.d.ts +10 -0
  6. package/dist/components/base/badge.d.ts.map +1 -0
  7. package/dist/components/base/badge.js +24 -0
  8. package/dist/components/base/button.d.ts +12 -0
  9. package/dist/components/base/button.d.ts.map +1 -0
  10. package/dist/components/base/button.js +33 -0
  11. package/dist/components/base/card.d.ts +9 -0
  12. package/dist/components/base/card.d.ts.map +1 -0
  13. package/dist/components/base/card.js +16 -0
  14. package/dist/components/base/dropdown-menu.d.ts +28 -0
  15. package/dist/components/base/dropdown-menu.d.ts.map +1 -0
  16. package/dist/components/base/dropdown-menu.js +35 -0
  17. package/dist/components/base/input.d.ts +4 -0
  18. package/dist/components/base/input.d.ts.map +1 -0
  19. package/dist/components/base/input.js +8 -0
  20. package/dist/components/base/label.d.ts +5 -0
  21. package/dist/components/base/label.d.ts.map +1 -0
  22. package/dist/components/base/label.js +12 -0
  23. package/dist/components/layout/GlobalFooter.d.ts +2 -0
  24. package/dist/components/layout/GlobalFooter.d.ts.map +1 -0
  25. package/dist/components/layout/GlobalFooter.js +47 -0
  26. package/dist/components/layout/GlobalNavbar.d.ts +2 -0
  27. package/dist/components/layout/GlobalNavbar.d.ts.map +1 -0
  28. package/dist/components/layout/GlobalNavbar.js +65 -0
  29. package/dist/components/saas/status-badge.d.ts +10 -0
  30. package/dist/components/saas/status-badge.d.ts.map +1 -0
  31. package/dist/components/saas/status-badge.js +28 -0
  32. package/dist/components/saas/user-menu.d.ts +23 -0
  33. package/dist/components/saas/user-menu.d.ts.map +1 -0
  34. package/dist/components/saas/user-menu.js +26 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +16 -0
  38. package/dist/tsconfig.tsbuildinfo +1 -0
  39. package/dist/utils/cn.d.ts +3 -0
  40. package/dist/utils/cn.d.ts.map +1 -0
  41. package/dist/utils/cn.js +5 -0
  42. package/package.json +37 -0
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
3
+ declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
4
+ declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLParagraphElement>>;
5
+ declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
6
+ declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
7
+ declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
8
+ export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
9
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/base/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,IAAI,6GAIT,CAAC;AAGF,QAAA,MAAM,UAAU,6GAIf,CAAC;AAGF,QAAA,MAAM,SAAS,uHAId,CAAC;AAGF,QAAA,MAAM,eAAe,yHAIpB,CAAC;AAGF,QAAA,MAAM,WAAW,6GAIhB,CAAC;AAGF,QAAA,MAAM,UAAU,6GAIf,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../utils/cn";
4
+ const Card = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("rounded-xl border bg-card text-card-foreground shadow", className), ...props })));
5
+ Card.displayName = "Card";
6
+ const CardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })));
7
+ CardHeader.displayName = "CardHeader";
8
+ const CardTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx("h3", { ref: ref, className: cn("font-semibold leading-none tracking-tight", className), ...props })));
9
+ CardTitle.displayName = "CardTitle";
10
+ const CardDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx("p", { ref: ref, className: cn("text-sm text-muted-foreground", className), ...props })));
11
+ CardDescription.displayName = "CardDescription";
12
+ const CardContent = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("p-6 pt-0", className), ...props })));
13
+ CardContent.displayName = "CardContent";
14
+ const CardFooter = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("flex items-center p-6 pt-0", className), ...props })));
15
+ CardFooter.displayName = "CardFooter";
16
+ export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
@@ -0,0 +1,28 @@
1
+ import * as React from "react";
2
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
3
+ declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
4
+ declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
6
+ declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
7
+ declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
8
+ declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
9
+ declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
10
+ inset?: boolean;
11
+ } & React.RefAttributes<HTMLDivElement>>;
12
+ declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
14
+ declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
15
+ inset?: boolean;
16
+ } & React.RefAttributes<HTMLDivElement>>;
17
+ declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
18
+ declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
19
+ declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
20
+ inset?: boolean;
21
+ } & React.RefAttributes<HTMLDivElement>>;
22
+ declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
23
+ declare const DropdownMenuShortcut: {
24
+ ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): import("react/jsx-runtime").JSX.Element;
25
+ displayName: string;
26
+ };
27
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, };
28
+ //# sourceMappingURL=dropdown-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../../src/components/base/dropdown-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAA;AAItE,QAAA,MAAM,YAAY,mDAA6B,CAAA;AAC/C,QAAA,MAAM,mBAAmB,0HAAgC,CAAA;AACzD,QAAA,MAAM,iBAAiB,qHAA8B,CAAA;AACrD,QAAA,MAAM,kBAAkB,yDAA+B,CAAA;AACvD,QAAA,MAAM,eAAe,sDAA4B,CAAA;AACjD,QAAA,MAAM,sBAAsB,0HAAmC,CAAA;AAE/D,QAAA,MAAM,sBAAsB;YAGhB,OAAO;wCAejB,CAAA;AAIF,QAAA,MAAM,sBAAsB,6KAY1B,CAAA;AAIF,QAAA,MAAM,mBAAmB,0KAevB,CAAA;AAGF,QAAA,MAAM,gBAAgB;YAGV,OAAO;wCAYjB,CAAA;AAGF,QAAA,MAAM,wBAAwB,+KAoB5B,CAAA;AAIF,QAAA,MAAM,qBAAqB,4KAmBzB,CAAA;AAGF,QAAA,MAAM,iBAAiB;YAGX,OAAO;wCAYjB,CAAA;AAGF,QAAA,MAAM,qBAAqB,4KASzB,CAAA;AAGF,QAAA,MAAM,oBAAoB;8BAGvB,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;;CAOvC,CAAA;AAGD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
4
+ import { Check, ChevronRight, Circle } from "lucide-react";
5
+ import { cn } from "../../utils/cn";
6
+ const DropdownMenu = DropdownMenuPrimitive.Root;
7
+ const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
8
+ const DropdownMenuGroup = DropdownMenuPrimitive.Group;
9
+ const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
10
+ const DropdownMenuSub = DropdownMenuPrimitive.Sub;
11
+ const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
12
+ const DropdownMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.SubTrigger, { ref: ref, className: cn("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent", inset && "pl-8", className), ...props, children: [children, _jsx(ChevronRight, { className: "ml-auto h-4 w-4" })] })));
13
+ DropdownMenuSubTrigger.displayName =
14
+ DropdownMenuPrimitive.SubTrigger.displayName;
15
+ const DropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(DropdownMenuPrimitive.SubContent, { ref: ref, className: cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props })));
16
+ DropdownMenuSubContent.displayName =
17
+ DropdownMenuPrimitive.SubContent.displayName;
18
+ const DropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }) })));
19
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
20
+ const DropdownMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Item, { ref: ref, className: cn("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", className), ...props })));
21
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
22
+ const DropdownMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.CheckboxItem, { ref: ref, className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), checked: checked, ...props, children: [_jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(Check, { className: "h-4 w-4" }) }) }), children] })));
23
+ DropdownMenuCheckboxItem.displayName =
24
+ DropdownMenuPrimitive.CheckboxItem.displayName;
25
+ const DropdownMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DropdownMenuPrimitive.RadioItem, { ref: ref, className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), ...props, children: [_jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }), children] })));
26
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
27
+ const DropdownMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Label, { ref: ref, className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className), ...props })));
28
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
29
+ const DropdownMenuSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(DropdownMenuPrimitive.Separator, { ref: ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props })));
30
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
31
+ const DropdownMenuShortcut = ({ className, ...props }) => {
32
+ return (_jsx("span", { className: cn("ml-auto text-xs tracking-widest opacity-60", className), ...props }));
33
+ };
34
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
35
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, };
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ declare const Input: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>;
3
+ export { Input };
4
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/base/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,KAAK,sHAcV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../utils/cn";
4
+ const Input = React.forwardRef(({ className, type, ...props }, ref) => {
5
+ return (_jsx("input", { type: type, className: cn("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref, ...props }));
6
+ });
7
+ Input.displayName = "Input";
8
+ export { Input };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const Label: React.ForwardRefExoticComponent<React.LabelHTMLAttributes<HTMLLabelElement> & VariantProps<(props?: import("class-variance-authority/types").ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
4
+ export { Label };
5
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/base/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOlE,QAAA,MAAM,KAAK,yNAMT,CAAC;AAGH,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import * as LabelPrimitive from "@radix-ui/react-label";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "../../utils/cn";
6
+ const labelVariants = cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
7
+ const Label = React.forwardRef(({ className, ...props }, ref) => {
8
+ const Comp = LabelPrimitive.Root;
9
+ return _jsx(Comp, { ref: ref, className: cn(labelVariants(), className), ...props });
10
+ });
11
+ Label.displayName = LabelPrimitive.Root.displayName;
12
+ export { Label };
@@ -0,0 +1,2 @@
1
+ export declare function GlobalFooter(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=GlobalFooter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalFooter.d.ts","sourceRoot":"","sources":["../../../src/components/layout/GlobalFooter.tsx"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,4CAiL3B"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import Link from 'next/link';
3
+ export function GlobalFooter() {
4
+ return (_jsxs("footer", { className: "relative overflow-hidden", style: { background: 'hsl(222 47% 5%)' }, children: [_jsx("div", { className: "absolute inset-0 mesh-dark opacity-60" }), _jsx("div", { className: "absolute inset-0 dot-grid opacity-10" }), _jsx("div", { className: "absolute top-0 left-0 right-0 h-px", style: { background: 'linear-gradient(90deg, transparent, hsl(258 90% 60% / 0.5), transparent)' } }), _jsxs("div", { className: "relative z-10 max-w-7xl mx-auto px-5 md:px-8 pt-16 pb-8", children: [_jsxs("div", { className: "mb-16 rounded-2xl p-8 md:p-10 border border-white/8\n flex flex-col md:flex-row items-start md:items-center gap-6 justify-between\n bg-white/4 backdrop-blur-sm", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-xl md:text-2xl font-bold text-white mb-2", style: { fontFamily: "'Plus Jakarta Sans', sans-serif" }, children: "Stay in the loop" }), _jsx("p", { className: "text-sm text-white/50", children: "Product updates, tutorials & launch announcements \u2014 straight to your inbox." })] }), _jsxs("div", { className: "flex gap-3 w-full md:w-auto", children: [_jsx("input", { type: "email", placeholder: "you@example.com", className: "flex-1 md:w-64 px-4 py-2.5 rounded-xl text-sm text-white\n bg-white/8 border border-white/12 placeholder:text-white/30\n outline-none focus:border-primary/50 focus:ring-2 focus:ring-primary/20 transition-all" }), _jsx("button", { className: "btn-primary px-6 py-2.5 rounded-xl text-sm whitespace-nowrap text-white", children: "Subscribe" })] })] }), _jsxs("div", { className: "grid grid-cols-2 md:grid-cols-5 gap-8 mb-16", children: [_jsxs("div", { className: "col-span-2 md:col-span-2 pr-6", children: [_jsxs(Link, { href: "/", className: "inline-flex items-center gap-2.5 mb-5 group", children: [_jsx("div", { className: "w-9 h-9 rounded-xl flex items-center justify-center shadow-md flex-shrink-0", style: { background: 'linear-gradient(135deg, hsl(258 90% 58%), hsl(280 85% 65%))' }, children: _jsx("span", { className: "font-black text-xs tracking-wider text-white", children: "CS" }) }), _jsxs("span", { className: "text-xl font-black tracking-tight text-white", style: { fontFamily: "'Plus Jakarta Sans', sans-serif" }, children: ["Code", _jsx("span", { style: {
5
+ background: 'linear-gradient(135deg, hsl(258 90% 65%), hsl(280 85% 72%))',
6
+ backgroundClip: 'text',
7
+ WebkitBackgroundClip: 'text',
8
+ color: 'transparent',
9
+ }, children: "Swayam" })] })] }), _jsx("p", { className: "text-sm leading-relaxed mb-6 text-white/45", children: "The central hub for building, launching, and scaling SaaS products. A comprehensive ecosystem of professional tools and services." }), _jsx("div", { className: "flex gap-2", children: [
10
+ {
11
+ label: 'Twitter / X',
12
+ href: '#',
13
+ svg: _jsx("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.741l7.732-8.835L1.254 2.25H8.08l4.261 5.632 5.903-5.632zm-1.161 17.52h1.833L7.084 4.126H5.117z" }),
14
+ },
15
+ {
16
+ label: 'GitHub',
17
+ href: '#',
18
+ svg: _jsx("path", { d: "M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" }),
19
+ },
20
+ {
21
+ label: 'LinkedIn',
22
+ href: '#',
23
+ svg: _jsx("path", { d: "M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z M4 6a2 2 0 100-4 2 2 0 000 4z" }),
24
+ },
25
+ ].map(s => (_jsx("a", { href: s.href, "aria-label": s.label, className: "w-9 h-9 flex items-center justify-center rounded-xl\n text-white/40 hover:text-white border border-white/8\n hover:border-primary/40 hover:bg-primary/10 transition-all duration-300", children: _jsx("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 24 24", children: s.svg }) }, s.label))) })] }), _jsxs("div", { children: [_jsx("h4", { className: "text-sm font-bold text-white mb-5 tracking-wide", children: "Products" }), _jsxs("nav", { className: "flex flex-col gap-3", children: [['Auraflow AI', 'ChatLift', 'MailTracker'].map(p => (_jsx("a", { href: "#", className: "text-sm text-white/45 hover:text-white transition-colors font-medium", children: p }, p))), _jsx(Link, { href: "/products", className: "text-sm font-bold mt-1 inline-flex items-center gap-1", style: {
26
+ background: 'linear-gradient(135deg, hsl(258 90% 65%), hsl(280 85% 72%))',
27
+ backgroundClip: 'text',
28
+ WebkitBackgroundClip: 'text',
29
+ color: 'transparent',
30
+ }, children: "View All 20+ \u2192" })] })] }), _jsxs("div", { children: [_jsx("h4", { className: "text-sm font-bold text-white mb-5 tracking-wide", children: "Services" }), _jsx("nav", { className: "flex flex-col gap-3", children: [
31
+ { label: 'Consulting', href: '/services' },
32
+ { label: 'Custom Dev', href: '/services' },
33
+ { label: 'Case Studies', href: '/case-studies' },
34
+ { label: 'Resources', href: '/blog' },
35
+ ].map(item => (_jsx(Link, { href: item.href, className: "text-sm text-white/45 hover:text-white transition-colors font-medium", children: item.label }, item.label))) })] }), _jsxs("div", { children: [_jsx("h4", { className: "text-sm font-bold text-white mb-5 tracking-wide", children: "Company" }), _jsx("nav", { className: "flex flex-col gap-3", children: [
36
+ { label: 'About', href: '/about' },
37
+ { label: 'Team', href: '/team' },
38
+ { label: 'Blog', href: '/blog' },
39
+ { label: 'Contact', href: '/contact-us' },
40
+ { label: 'Pricing', href: '/pricing' },
41
+ ].map(item => (_jsx(Link, { href: item.href, className: "text-sm text-white/45 hover:text-white transition-colors font-medium", children: item.label }, item.label))) })] })] }), _jsx("div", { className: "gradient-divider mb-8 opacity-30" }), _jsxs("div", { className: "flex flex-col md:flex-row items-center justify-between gap-4", children: [_jsxs("p", { className: "text-sm text-white/30", children: ["\u00A9 ", new Date().getFullYear(), " Code Swayam Inc. All rights reserved."] }), _jsx("div", { className: "flex gap-6 flex-wrap justify-center", children: [
42
+ { label: 'Privacy', href: '/privacy-policy' },
43
+ { label: 'Terms', href: '/terms-and-conditions' },
44
+ { label: 'Refunds', href: '/refund-policy' },
45
+ { label: 'Delivery', href: '/delivery-policy' },
46
+ ].map(item => (_jsx(Link, { href: item.href, className: "text-sm text-white/30 hover:text-white/70 transition-colors font-medium", children: item.label }, item.label))) })] })] })] }));
47
+ }
@@ -0,0 +1,2 @@
1
+ export declare function GlobalNavbar(): import("react/jsx-runtime").JSX.Element | null;
2
+ //# sourceMappingURL=GlobalNavbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalNavbar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/GlobalNavbar.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,YAAY,mDA6K3B"}
@@ -0,0 +1,65 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useEffect } from 'react';
4
+ import Link from 'next/link';
5
+ import { usePathname } from 'next/navigation';
6
+ import { ChevronDown } from 'lucide-react';
7
+ function getAuthUrl(path) {
8
+ if (typeof window !== 'undefined') {
9
+ const isLocal = window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1';
10
+ const base = isLocal ? 'http://localhost:3003' : 'https://auth.codeswayam.com';
11
+ return `${base}${path}?redirect_url=${encodeURIComponent(window.location.href)}`;
12
+ }
13
+ return `https://auth.codeswayam.com${path}`;
14
+ }
15
+ const NAV_LINKS = {
16
+ services: [
17
+ { label: 'All Services', href: '/services', icon: '⚙️' },
18
+ { label: 'Custom SaaS Dev', href: '/services', icon: '🚀' },
19
+ { label: 'IT Consulting', href: '/services', icon: '💡' },
20
+ { label: 'Case Studies', href: '/case-studies', icon: '📊' },
21
+ ],
22
+ products: [
23
+ { label: 'All Products', href: '/products', icon: '🗂️' },
24
+ { label: 'Auraflow AI', href: '/products', icon: '✨' },
25
+ { label: 'ChatLift', href: '/products', icon: '💬' },
26
+ { label: 'MailTracker', href: '/products', icon: '📧' },
27
+ ],
28
+ };
29
+ export function GlobalNavbar() {
30
+ const [scrolled, setScrolled] = useState(false);
31
+ const [menuOpen, setMenuOpen] = useState(false);
32
+ const pathname = usePathname();
33
+ useEffect(() => {
34
+ const handleScroll = () => setScrolled(window.scrollY > 16);
35
+ window.addEventListener('scroll', handleScroll, { passive: true });
36
+ return () => window.removeEventListener('scroll', handleScroll);
37
+ }, []);
38
+ useEffect(() => { setMenuOpen(false); }, [pathname]);
39
+ const isAppRoute = pathname && (pathname.startsWith('/app') || pathname.startsWith('/dashboard'));
40
+ if (isAppRoute)
41
+ return null;
42
+ return (_jsxs("nav", { className: `w-full fixed top-0 z-50 transition-all duration-300 ${scrolled ? 'py-3' : 'py-4 md:py-5'}`, style: {
43
+ backgroundColor: scrolled ? 'rgba(255,255,255,0.88)' : 'transparent',
44
+ backdropFilter: scrolled ? 'blur(20px) saturate(180%)' : 'none',
45
+ WebkitBackdropFilter: scrolled ? 'blur(20px) saturate(180%)' : 'none',
46
+ borderBottom: scrolled ? '1px solid hsl(var(--border))' : '1px solid transparent',
47
+ boxShadow: scrolled ? '0 1px 32px rgba(0,0,0,0.06)' : 'none',
48
+ }, children: [_jsxs("div", { className: "max-w-7xl mx-auto px-5 md:px-8 flex items-center justify-between", children: [_jsxs(Link, { href: "/", className: "flex items-center gap-2.5 group z-50", children: [_jsxs("div", { className: "w-9 h-9 rounded-xl flex items-center justify-center relative overflow-hidden shadow-md", style: { background: 'linear-gradient(135deg, hsl(258 90% 58%), hsl(280 85% 65%))' }, children: [_jsx("span", { className: "font-black text-xs tracking-wider text-white z-10", children: "CS" }), _jsx("div", { className: "absolute inset-0 bg-white/20 opacity-0 group-hover:opacity-100 transition-opacity duration-300" })] }), _jsxs("div", { className: "text-xl font-black tracking-tight", style: { fontFamily: "'Plus Jakarta Sans', sans-serif" }, children: [_jsx("span", { className: "text-foreground", children: "Code" }), _jsx("span", { style: {
49
+ background: 'linear-gradient(135deg, hsl(258 90% 58%), hsl(280 85% 68%))',
50
+ backgroundClip: 'text',
51
+ WebkitBackgroundClip: 'text',
52
+ color: 'transparent',
53
+ }, children: "Swayam" })] })] }), _jsxs("div", { className: "hidden md:flex items-center gap-1 text-sm font-semibold text-muted-foreground", children: [_jsxs("div", { className: "relative group", children: [_jsxs("button", { className: "px-4 py-2 rounded-lg hover:text-foreground hover:bg-primary/5\n transition-all duration-200 flex items-center gap-1.5 focus:outline-none", children: ["Services", _jsx(ChevronDown, { className: "w-3.5 h-3.5 transition-transform duration-200 group-hover:rotate-180" })] }), _jsx("div", { className: "absolute left-0 mt-2 w-56 opacity-0 invisible\n group-hover:opacity-100 group-hover:visible\n transition-all duration-200 translate-y-2 group-hover:translate-y-0 pt-1", children: _jsx("div", { className: "glass rounded-2xl shadow-xl border border-white/50 overflow-hidden p-1.5", children: NAV_LINKS.services.map(item => (_jsxs(Link, { href: item.href, className: "flex items-center gap-3 px-3 py-2.5 rounded-xl\n hover:bg-primary/8 hover:text-primary transition-all duration-200\n text-sm text-muted-foreground font-medium group/item", children: [_jsx("span", { className: "text-base group-hover/item:scale-110 transition-transform", children: item.icon }), item.label] }, item.label))) }) })] }), _jsxs("div", { className: "relative group", children: [_jsxs("button", { className: "px-4 py-2 rounded-lg hover:text-foreground hover:bg-primary/5\n transition-all duration-200 flex items-center gap-1.5 focus:outline-none", children: ["Products", _jsx(ChevronDown, { className: "w-3.5 h-3.5 transition-transform duration-200 group-hover:rotate-180" })] }), _jsx("div", { className: "absolute left-0 mt-2 w-56 opacity-0 invisible\n group-hover:opacity-100 group-hover:visible\n transition-all duration-200 translate-y-2 group-hover:translate-y-0 pt-1", children: _jsx("div", { className: "glass rounded-2xl shadow-xl border border-white/50 overflow-hidden p-1.5", children: NAV_LINKS.products.map(item => (_jsxs(Link, { href: item.href, className: "flex items-center gap-3 px-3 py-2.5 rounded-xl\n hover:bg-primary/8 hover:text-primary transition-all duration-200\n text-sm text-muted-foreground font-medium group/item", children: [_jsx("span", { className: "text-base group-hover/item:scale-110 transition-transform", children: item.icon }), item.label] }, item.label))) }) })] }), _jsx(Link, { href: "/pricing", className: "px-4 py-2 rounded-lg hover:text-foreground hover:bg-primary/5 transition-all duration-200", children: "Pricing" }), _jsx(Link, { href: "/blog", className: "px-4 py-2 rounded-lg hover:text-foreground hover:bg-primary/5 transition-all duration-200", children: "Blog" }), _jsx(Link, { href: "/about", className: "px-4 py-2 rounded-lg hover:text-foreground hover:bg-primary/5 transition-all duration-200", children: "About" })] }), _jsxs("div", { className: "hidden md:flex items-center gap-3 flex-shrink-0", children: [_jsx(Link, { href: getAuthUrl('/login'), className: "text-sm font-semibold text-muted-foreground hover:text-foreground transition-colors px-3 py-2", children: "Sign in" }), _jsx(Link, { href: getAuthUrl('/signup'), className: "btn-primary px-5 py-2.5 rounded-xl text-sm text-white", children: "Get Started \u2192" })] }), _jsx("button", { onClick: () => setMenuOpen(!menuOpen), className: "md:hidden p-2.5 rounded-xl text-muted-foreground hover:bg-muted/60 transition-colors", "aria-label": "Toggle menu", children: _jsxs("div", { className: "w-5 h-4 flex flex-col justify-between relative", children: [_jsx("span", { className: `block h-[2px] w-full rounded-full bg-foreground transition-all duration-300
54
+ ${menuOpen ? 'rotate-45 translate-y-[7px]' : ''}` }), _jsx("span", { className: `block h-[2px] w-full rounded-full bg-foreground transition-all duration-300
55
+ ${menuOpen ? 'opacity-0 scale-x-0' : ''}` }), _jsx("span", { className: `block h-[2px] w-full rounded-full bg-foreground transition-all duration-300
56
+ ${menuOpen ? '-rotate-45 -translate-y-[7px]' : ''}` })] }) })] }), _jsx("div", { className: `md:hidden transition-all duration-300 overflow-hidden
57
+ ${menuOpen ? 'max-h-screen opacity-100' : 'max-h-0 opacity-0'}`, children: _jsx("div", { className: "glass border-t border-white/30 mx-3 my-2 rounded-2xl shadow-xl overflow-hidden", children: _jsxs("div", { className: "px-4 py-5 flex flex-col gap-1", children: [[
58
+ { label: 'Services', href: '/services', icon: '⚙️' },
59
+ { label: 'Products', href: '/products', icon: '🗂️' },
60
+ { label: 'Pricing', href: '/pricing', icon: '💳' },
61
+ { label: 'Blog', href: '/blog', icon: '✍️' },
62
+ { label: 'About', href: '/about', icon: '👋' },
63
+ { label: 'Case Studies', href: '/case-studies', icon: '📊' },
64
+ ].map(item => (_jsxs(Link, { href: item.href, onClick: () => setMenuOpen(false), className: "flex items-center gap-3 px-4 py-3 text-muted-foreground\n hover:text-primary hover:bg-primary/5 rounded-xl font-semibold transition-all", children: [_jsx("span", { className: "text-base", children: item.icon }), item.label] }, item.label))), _jsxs("div", { className: "mt-3 pt-4 border-t border-border flex flex-col gap-2.5", children: [_jsx(Link, { href: getAuthUrl('/login'), onClick: () => setMenuOpen(false), className: "btn-outline px-4 py-3 rounded-xl text-center font-semibold", children: "Sign in" }), _jsx(Link, { href: getAuthUrl('/signup'), onClick: () => setMenuOpen(false), className: "btn-primary px-4 py-3 rounded-xl text-center", children: "Get Started \u2192" })] })] }) }) })] }));
65
+ }
@@ -0,0 +1,10 @@
1
+ export type SubscriptionStatus = 'active' | 'past_due' | 'canceled' | 'pending_cancellation';
2
+ export interface StatusBadgeProps {
3
+ status: SubscriptionStatus | string;
4
+ className?: string;
5
+ }
6
+ /**
7
+ * Smart Status Badge for Subscription management.
8
+ */
9
+ export declare function StatusBadge({ status, className }: StatusBadgeProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=status-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../../src/components/saas/status-badge.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,sBAAsB,CAAC;AAE7F,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAiClE"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Badge } from "../base/badge";
3
+ import { cn } from "../../utils/cn";
4
+ /**
5
+ * Smart Status Badge for Subscription management.
6
+ */
7
+ export function StatusBadge({ status, className }) {
8
+ const normalized = status.toLowerCase();
9
+ let variant = "outline";
10
+ let label = status;
11
+ if (normalized === 'active') {
12
+ variant = "default"; // Usually green/primary
13
+ label = "Active";
14
+ }
15
+ else if (normalized === 'pending_cancellation') {
16
+ variant = "secondary";
17
+ label = "Pending Cancel";
18
+ }
19
+ else if (normalized === 'canceled') {
20
+ variant = "destructive";
21
+ label = "Canceled";
22
+ }
23
+ else if (normalized === 'past_due') {
24
+ variant = "destructive";
25
+ label = "Past Due";
26
+ }
27
+ return (_jsx(Badge, { variant: variant, className: cn("capitalize font-semibold", normalized === 'active' && "bg-green-500/10 text-green-600 border-green-200 hover:bg-green-500/20", normalized === 'pending_cancellation' && "bg-amber-500/10 text-amber-600 border-amber-200 hover:bg-amber-500/20", className), children: label }));
28
+ }
@@ -0,0 +1,23 @@
1
+ export interface UserMenuProps {
2
+ user: {
3
+ name?: string | null;
4
+ email: string;
5
+ image?: string | null;
6
+ } | null;
7
+ onLogout: () => void;
8
+ onProfileClick?: () => void;
9
+ onSecurityClick?: () => void;
10
+ className?: string;
11
+ }
12
+ /**
13
+ * High-end User Profile & Logout Dropdown for SaaS Navigation.
14
+ */
15
+ export declare function UserMenu({ user, onLogout, onProfileClick, onSecurityClick, className, }: UserMenuProps): import("react/jsx-runtime").JSX.Element | null;
16
+ /**
17
+ * Standard App Logo component for consistency across platforms.
18
+ */
19
+ export declare function AppLogo({ className, showText }: {
20
+ className?: string;
21
+ showText?: boolean;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=user-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-menu.d.ts","sourceRoot":"","sources":["../../../src/components/saas/user-menu.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,GAAG,IAAI,CAAC;IACT,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,eAAe,EACf,SAAS,GACV,EAAE,aAAa,kDAkEf;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,QAAe,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,2CAWjG"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { LogOut, User, Shield, Zap } from "lucide-react";
3
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "../base/dropdown-menu";
4
+ import { Avatar, AvatarFallback, AvatarImage } from "../base/avatar";
5
+ import { cn } from "../../utils/cn";
6
+ /**
7
+ * High-end User Profile & Logout Dropdown for SaaS Navigation.
8
+ */
9
+ export function UserMenu({ user, onLogout, onProfileClick, onSecurityClick, className, }) {
10
+ if (!user)
11
+ return null;
12
+ const displayName = user.name || user.email.split("@")[0] || "User";
13
+ const initials = displayName
14
+ .split(" ")
15
+ .map((w) => w[0])
16
+ .join("")
17
+ .toUpperCase()
18
+ .slice(0, 2);
19
+ return (_jsx("div", { className: cn("flex items-center gap-4", className), children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs("button", { className: "flex items-center gap-2.5 hover:bg-accent/50 p-1.5 rounded-xl transition-all border border-transparent hover:border-border outline-none", children: [_jsxs(Avatar, { className: "h-8 w-8 rounded-lg shadow-sm", children: [user.image && _jsx(AvatarImage, { src: user.image, alt: displayName }), _jsx(AvatarFallback, { className: "rounded-lg bg-primary/10 text-primary text-xs font-bold ring-2 ring-background", children: initials })] }), _jsxs("div", { className: "hidden sm:block text-left", children: [_jsx("p", { className: "text-xs font-semibold leading-none", children: displayName }), _jsx("p", { className: "text-[10px] text-muted-foreground mt-0.5", children: user.email })] })] }) }), _jsxs(DropdownMenuContent, { align: "end", className: "w-56 mt-2 rounded-xl shadow-xl border-border/50 animate-in fade-in-0 zoom-in-95 duration-200", children: [_jsx(DropdownMenuLabel, { className: "font-normal p-3", children: _jsxs("div", { className: "flex flex-col space-y-1", children: [_jsx("p", { className: "text-sm font-semibold leading-none", children: displayName }), _jsx("p", { className: "text-xs leading-none text-muted-foreground", children: user.email })] }) }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: onProfileClick, className: "cursor-pointer rounded-lg py-2 mx-1", children: [_jsx(User, { size: 14, className: "mr-2" }), " Profile Settings"] }), _jsxs(DropdownMenuItem, { onClick: onSecurityClick, className: "cursor-pointer rounded-lg py-2 mx-1", children: [_jsx(Shield, { size: 14, className: "mr-2" }), " Security"] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: onLogout, className: "text-destructive focus:text-destructive cursor-pointer rounded-lg py-2 mx-1", children: [_jsx(LogOut, { size: 14, className: "mr-2" }), " Sign Out"] })] })] }) }));
20
+ }
21
+ /**
22
+ * Standard App Logo component for consistency across platforms.
23
+ */
24
+ export function AppLogo({ className, showText = true }) {
25
+ return (_jsxs("div", { className: cn("flex items-center gap-2", className), children: [_jsx("div", { className: "w-8 h-8 rounded-xl bg-primary flex items-center justify-center shadow-lg shadow-primary/20", children: _jsx(Zap, { size: 16, className: "text-primary-foreground fill-current" }) }), showText && (_jsx("span", { className: "font-bold text-base tracking-tight", children: "CodeSwayam" }))] }));
26
+ }
@@ -0,0 +1,13 @@
1
+ export * from "./components/base/button";
2
+ export * from "./components/base/card";
3
+ export * from "./components/base/badge";
4
+ export * from "./components/base/input";
5
+ export * from "./components/base/label";
6
+ export * from "./components/base/avatar";
7
+ export * from "./components/base/dropdown-menu";
8
+ export * from "./components/saas/user-menu";
9
+ export * from "./components/saas/status-badge";
10
+ export * from "./components/layout/GlobalNavbar";
11
+ export * from "./components/layout/GlobalFooter";
12
+ export { cn } from "./utils/cn";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAGjD,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ // Base components
2
+ export * from "./components/base/button";
3
+ export * from "./components/base/card";
4
+ export * from "./components/base/badge";
5
+ export * from "./components/base/input";
6
+ export * from "./components/base/label";
7
+ export * from "./components/base/avatar";
8
+ export * from "./components/base/dropdown-menu";
9
+ // SaaS Components
10
+ export * from "./components/saas/user-menu";
11
+ export * from "./components/saas/status-badge";
12
+ // Layout components
13
+ export * from "./components/layout/GlobalNavbar";
14
+ export * from "./components/layout/GlobalFooter";
15
+ // Utils
16
+ export { cn } from "./utils/cn";