@appcorp/shadcn 1.1.83 → 1.1.86
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/components/enhanced-slider.d.ts +19 -0
- package/components/enhanced-slider.js +80 -0
- package/components/shadcn-io/copy-button/index.d.ts +1 -1
- package/components/ui/badge.d.ts +1 -1
- package/components/ui/button.d.ts +1 -1
- package/components/ui/slider.js +9 -1
- package/package.json +3 -2
- package/templates/appcorp-v1/footer/bottom-bar.d.ts +6 -0
- package/templates/appcorp-v1/footer/bottom-bar.js +25 -0
- package/templates/appcorp-v1/footer/cta.d.ts +6 -0
- package/templates/appcorp-v1/footer/cta.js +21 -0
- package/templates/appcorp-v1/footer/footer-grid.d.ts +14 -0
- package/templates/appcorp-v1/footer/footer-grid.js +52 -0
- package/templates/appcorp-v1/footer/index.d.ts +3 -0
- package/templates/appcorp-v1/footer/index.js +28 -0
- package/templates/appcorp-v1/footer/newsletter.d.ts +11 -0
- package/templates/appcorp-v1/footer/newsletter.js +28 -0
- package/templates/appcorp-v1/footer/stats.d.ts +6 -0
- package/templates/appcorp-v1/footer/stats.js +15 -0
- package/templates/appcorp-v1/header/announcement-bar.d.ts +3 -0
- package/templates/appcorp-v1/header/announcement-bar.js +15 -0
- package/templates/appcorp-v1/header/dropdown-panel.d.ts +8 -0
- package/templates/appcorp-v1/header/dropdown-panel.js +72 -0
- package/templates/appcorp-v1/header/index.d.ts +12 -0
- package/templates/appcorp-v1/header/index.js +16 -0
- package/templates/appcorp-v1/header/mobile-menu.d.ts +14 -0
- package/templates/appcorp-v1/header/mobile-menu.js +101 -0
- package/templates/appcorp-v1/header/navigation-bar.d.ts +3 -0
- package/templates/appcorp-v1/header/navigation-bar.js +117 -0
- package/templates/appcorp-v1/header/social-button.d.ts +7 -0
- package/templates/appcorp-v1/header/social-button.js +48 -0
- package/templates/appcorp-v1/home.d.ts +3 -0
- package/templates/appcorp-v1/home.js +27 -0
- package/templates/data/appcorp-v1.d.ts +93 -0
- package/templates/data/appcorp-v1.js +348 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.MobileMenu = MobileMenu;
|
|
40
|
+
var lucide_react_1 = require("lucide-react");
|
|
41
|
+
var image_1 = __importDefault(require("next/image"));
|
|
42
|
+
var link_1 = __importDefault(require("next/link"));
|
|
43
|
+
var react_1 = __importStar(require("react"));
|
|
44
|
+
var Icons = __importStar(require("lucide-react"));
|
|
45
|
+
var badge_1 = require("../../../components/ui/badge");
|
|
46
|
+
var button_1 = require("../../../components/ui/button");
|
|
47
|
+
var lucide_react_2 = require("lucide-react");
|
|
48
|
+
function MobileMenu(_a) {
|
|
49
|
+
var headerCta = _a.headerCta, items = _a.items, logo = _a.logo, onClose = _a.onClose, email = _a.email, phone = _a.phone, location = _a.location;
|
|
50
|
+
var _b = (0, react_1.useState)(null), openSection = _b[0], setOpenSection = _b[1];
|
|
51
|
+
var toggle = function (label) {
|
|
52
|
+
return setOpenSection(function (prev) { return (prev === label ? null : label); });
|
|
53
|
+
};
|
|
54
|
+
return (react_1.default.createElement("div", { className: "fixed inset-x-0 bottom-0 z-50 flex flex-col bg-background top-8" },
|
|
55
|
+
react_1.default.createElement("div", { className: "flex h-16 items-center justify-between border-b border-border/40 px-6" },
|
|
56
|
+
react_1.default.createElement(link_1.default, { href: "/", onClick: onClose, className: "flex items-center gap-2.5" },
|
|
57
|
+
react_1.default.createElement(image_1.default, { src: logo, alt: "App Corp icon", width: 32, height: 32, className: "h-8 w-8", priority: true }),
|
|
58
|
+
react_1.default.createElement("span", { className: "text-base font-semibold tracking-tight text-foreground" }, "App Corp")),
|
|
59
|
+
react_1.default.createElement("button", { onClick: onClose, "aria-label": "Close menu", className: "flex h-9 w-9 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground" },
|
|
60
|
+
react_1.default.createElement(lucide_react_1.X, { className: "h-5 w-5" }))),
|
|
61
|
+
react_1.default.createElement("nav", { className: "flex-1 overflow-y-auto px-4 py-4" }, items.map(function (item) {
|
|
62
|
+
var isOpen = openSection === item.label;
|
|
63
|
+
if (item.dropdown) {
|
|
64
|
+
return (react_1.default.createElement("div", { key: item.label, className: "mb-1" },
|
|
65
|
+
react_1.default.createElement("button", { onClick: function () { return toggle(item.label); }, className: "flex w-full items-center justify-between rounded-xl px-4 py-3 text-sm font-medium text-foreground transition-colors hover:bg-muted" },
|
|
66
|
+
item.label,
|
|
67
|
+
react_1.default.createElement(lucide_react_1.ChevronDown, { className: "h-4 w-4 text-muted-foreground transition-transform duration-200 ".concat(isOpen ? "rotate-180" : "") })),
|
|
68
|
+
isOpen && (react_1.default.createElement("div", { className: "mb-2 mt-1 space-y-0.5 pl-2" }, item.dropdown.map(function (sub) {
|
|
69
|
+
var IconComp = Icons[sub.icon] || Icons.Circle;
|
|
70
|
+
return (react_1.default.createElement(link_1.default, { key: sub.href, href: sub.href, onClick: onClose, className: "group flex items-start gap-3 rounded-xl px-4 py-3 transition-colors hover:bg-muted/60" },
|
|
71
|
+
react_1.default.createElement("span", { className: "mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 transition-colors group-hover:bg-primary/15" },
|
|
72
|
+
react_1.default.createElement(IconComp, { className: "h-4 w-4 text-primary" })),
|
|
73
|
+
react_1.default.createElement("span", null,
|
|
74
|
+
react_1.default.createElement("span", { className: "flex items-center gap-2 text-sm font-medium text-foreground" },
|
|
75
|
+
sub.label,
|
|
76
|
+
sub.badge && (react_1.default.createElement(badge_1.Badge, { className: "h-4 rounded-full bg-emerald-500/15 px-1.5 py-0 text-[10px] font-semibold text-emerald-600 border-0" }, sub.badge))),
|
|
77
|
+
react_1.default.createElement("span", { className: "mt-0.5 line-clamp-1 text-xs text-muted-foreground" }, sub.description))));
|
|
78
|
+
})))));
|
|
79
|
+
}
|
|
80
|
+
return (react_1.default.createElement(link_1.default, { key: item.label, href: item.href, onClick: onClose, className: "flex items-center justify-between rounded-xl px-4 py-3 text-sm font-medium text-foreground transition-colors hover:bg-muted" },
|
|
81
|
+
item.label,
|
|
82
|
+
react_1.default.createElement(lucide_react_1.ArrowRight, { className: "h-3.5 w-3.5 text-muted-foreground" })));
|
|
83
|
+
})),
|
|
84
|
+
react_1.default.createElement("div", { className: "border-t border-border/40 p-5 space-y-3" },
|
|
85
|
+
react_1.default.createElement("div", { className: "flex items-center gap-2 text-xs text-muted-foreground" },
|
|
86
|
+
react_1.default.createElement(lucide_react_2.Mail, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
87
|
+
react_1.default.createElement("span", null, email)),
|
|
88
|
+
phone && (react_1.default.createElement("div", { className: "flex items-center gap-2 text-xs text-muted-foreground" },
|
|
89
|
+
react_1.default.createElement(lucide_react_2.Phone, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
90
|
+
react_1.default.createElement("span", null, phone))),
|
|
91
|
+
react_1.default.createElement("div", { className: "flex items-center gap-2 text-xs text-muted-foreground" },
|
|
92
|
+
react_1.default.createElement(lucide_react_2.MapPin, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
93
|
+
react_1.default.createElement("span", null, location)),
|
|
94
|
+
react_1.default.createElement("div", { className: "flex flex-row gap-3 mt-1" }, headerCta
|
|
95
|
+
.filter(function (cta) { return cta.enabled; })
|
|
96
|
+
.sort(function (a, b) { return a.order - b.order; })
|
|
97
|
+
.map(function (cta) {
|
|
98
|
+
return (react_1.default.createElement(button_1.Button, { asChild: true, className: "flex-1 rounded-full ".concat(cta.type === "primary" ? "bg-primary text-white" : "bg-secondary text-foreground hover:bg-foreground hover:text-background"), key: cta.href, size: "default" },
|
|
99
|
+
react_1.default.createElement(link_1.default, { href: cta.href }, cta.label)));
|
|
100
|
+
})))));
|
|
101
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.NavigationBar = void 0;
|
|
40
|
+
var lucide_react_1 = require("lucide-react");
|
|
41
|
+
var image_1 = __importDefault(require("next/image"));
|
|
42
|
+
var link_1 = __importDefault(require("next/link"));
|
|
43
|
+
var navigation_1 = require("next/navigation");
|
|
44
|
+
var react_1 = __importStar(require("react"));
|
|
45
|
+
var button_1 = require("../../../components/ui/button");
|
|
46
|
+
var dropdown_panel_1 = require("./dropdown-panel");
|
|
47
|
+
var mobile_menu_1 = require("./mobile-menu");
|
|
48
|
+
var NavigationBar = function (_a) {
|
|
49
|
+
var headerCta = _a.headerCta, logo = _a.logo, navItems = _a.navItems, email = _a.email, phone = _a.phone, location = _a.location;
|
|
50
|
+
var pathname = (0, navigation_1.usePathname)();
|
|
51
|
+
var _b = (0, react_1.useState)(false), scrolled = _b[0], setScrolled = _b[1];
|
|
52
|
+
var _c = (0, react_1.useState)(false), mobileOpen = _c[0], setMobileOpen = _c[1];
|
|
53
|
+
var _d = (0, react_1.useState)(null), activeDropdown = _d[0], setActiveDropdown = _d[1];
|
|
54
|
+
var timeoutRef = (0, react_1.useRef)(null);
|
|
55
|
+
// Scroll detection
|
|
56
|
+
(0, react_1.useEffect)(function () {
|
|
57
|
+
var onScroll = function () { return setScrolled(window.scrollY > 20); };
|
|
58
|
+
window.addEventListener("scroll", onScroll, { passive: true });
|
|
59
|
+
return function () { return window.removeEventListener("scroll", onScroll); };
|
|
60
|
+
}, []);
|
|
61
|
+
// Lock body scroll when mobile menu open
|
|
62
|
+
(0, react_1.useEffect)(function () {
|
|
63
|
+
document.body.style.overflow = mobileOpen ? "hidden" : "";
|
|
64
|
+
return function () {
|
|
65
|
+
document.body.style.overflow = "";
|
|
66
|
+
};
|
|
67
|
+
}, [mobileOpen]);
|
|
68
|
+
var openDropdown = function (label) {
|
|
69
|
+
if (timeoutRef.current)
|
|
70
|
+
clearTimeout(timeoutRef.current);
|
|
71
|
+
setActiveDropdown(label);
|
|
72
|
+
};
|
|
73
|
+
var closeDropdown = function () {
|
|
74
|
+
timeoutRef.current = setTimeout(function () { return setActiveDropdown(null); }, 150);
|
|
75
|
+
};
|
|
76
|
+
var keepOpen = function () {
|
|
77
|
+
if (timeoutRef.current)
|
|
78
|
+
clearTimeout(timeoutRef.current);
|
|
79
|
+
};
|
|
80
|
+
return (react_1.default.createElement("header", { className: "fixed left-0 right-0 z-40 transition-all duration-300 top-8\n ".concat(scrolled
|
|
81
|
+
? "border-b border-border/40 bg-background/95 shadow-sm backdrop-blur-md"
|
|
82
|
+
: "bg-transparent") },
|
|
83
|
+
react_1.default.createElement("div", { className: "relative mx-auto flex h-17 w-full max-w-350 items-center justify-between px-6 md:px-10" },
|
|
84
|
+
react_1.default.createElement(link_1.default, { href: "/", className: "flex shrink-0 items-center gap-2.5", "aria-label": "App Corp \u2014 home" },
|
|
85
|
+
react_1.default.createElement(image_1.default, { src: logo, alt: "App Corp icon", width: 32, height: 32, className: "h-8 w-8", priority: true }),
|
|
86
|
+
react_1.default.createElement("span", { className: "text-base font-semibold tracking-tight text-foreground" }, "App Corp")),
|
|
87
|
+
react_1.default.createElement("nav", { className: "absolute left-1/2 top-1/2 hidden -translate-x-1/2 -translate-y-1/2 lg:block", "aria-label": "Main navigation" },
|
|
88
|
+
react_1.default.createElement("ul", { className: "flex items-center gap-1" }, navItems
|
|
89
|
+
.filter(function (item) { return item.enabled; })
|
|
90
|
+
.sort(function (a, b) { return a.order - b.order; })
|
|
91
|
+
.map(function (item) {
|
|
92
|
+
var hasDropdown = !!item.dropdown;
|
|
93
|
+
var isActive = activeDropdown === item.label;
|
|
94
|
+
return (react_1.default.createElement("li", { key: item.label, className: "relative" },
|
|
95
|
+
hasDropdown ? (react_1.default.createElement("button", { onMouseEnter: function () { return openDropdown(item.label); }, onMouseLeave: closeDropdown, onFocus: function () { return openDropdown(item.label); }, onBlur: closeDropdown, className: "inline-flex items-center gap-1.5 rounded-xl px-3.5 py-2 text-sm font-medium transition-colors\n ".concat(isActive
|
|
96
|
+
? "bg-muted text-foreground"
|
|
97
|
+
: "text-muted-foreground hover:bg-muted/70 hover:text-foreground"), "aria-expanded": isActive },
|
|
98
|
+
item.label,
|
|
99
|
+
react_1.default.createElement(lucide_react_1.ChevronDown, { className: "h-3.5 w-3.5 transition-transform duration-200 ".concat(isActive ? "rotate-180" : "") }))) : (react_1.default.createElement(link_1.default, { href: item.href, className: "inline-flex items-center gap-1.5 rounded-xl px-3.5 py-2 text-sm font-medium transition-colors\n ".concat(pathname === item.href
|
|
100
|
+
? "text-foreground bg-muted"
|
|
101
|
+
: "text-muted-foreground hover:bg-muted/70 hover:text-foreground") }, item.label)),
|
|
102
|
+
hasDropdown && isActive && (react_1.default.createElement("div", { onMouseEnter: keepOpen, onMouseLeave: closeDropdown },
|
|
103
|
+
react_1.default.createElement(dropdown_panel_1.DropdownPanel, { item: item, onClose: function () { return setActiveDropdown(null); } })))));
|
|
104
|
+
}))),
|
|
105
|
+
react_1.default.createElement("div", { className: "flex shrink-0 items-center gap-3" },
|
|
106
|
+
headerCta
|
|
107
|
+
.filter(function (cta) { return cta.enabled; })
|
|
108
|
+
.sort(function (a, b) { return a.order - b.order; })
|
|
109
|
+
.map(function (cta) {
|
|
110
|
+
return (react_1.default.createElement(button_1.Button, { asChild: true, className: "hidden rounded-full px-5 text-sm shadow-sm transition-all hover:bg-foreground/90 lg:inline-flex ".concat(cta.type === "primary" ? "bg-primary text-white" : "bg-secondary text-foreground hover:bg-foreground hover:text-background"), key: cta.href, size: "default" },
|
|
111
|
+
react_1.default.createElement(link_1.default, { href: cta.href }, cta.label)));
|
|
112
|
+
}),
|
|
113
|
+
react_1.default.createElement("button", { onClick: function () { return setMobileOpen(true); }, "aria-label": "Open menu", className: "flex h-9 w-9 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted hover:text-foreground lg:hidden" },
|
|
114
|
+
react_1.default.createElement(lucide_react_1.Menu, { className: "h-5 w-5" })),
|
|
115
|
+
mobileOpen && (react_1.default.createElement(mobile_menu_1.MobileMenu, { items: navItems, onClose: function () { return setMobileOpen(false); }, logo: logo, headerCta: headerCta, email: email, phone: phone, location: location }))))));
|
|
116
|
+
};
|
|
117
|
+
exports.NavigationBar = NavigationBar;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.SocialButton = void 0;
|
|
40
|
+
var react_1 = __importDefault(require("react"));
|
|
41
|
+
var Icons = __importStar(require("lucide-react"));
|
|
42
|
+
var SocialButton = function (_a) {
|
|
43
|
+
var label = _a.label, href = _a.href, icon = _a.icon;
|
|
44
|
+
var IconComp = Icons[icon] || Icons.Globe;
|
|
45
|
+
return (react_1.default.createElement("a", { "aria-label": label, className: "flex h-9 w-9 items-center justify-center rounded-full border border-white/10 bg-white/5 text-white/60 transition-all hover:border-white/25 hover:bg-white/10 hover:text-white", href: href, rel: "noopener noreferrer", target: "_blank" },
|
|
46
|
+
react_1.default.createElement(IconComp, { className: "h-4 w-4" })));
|
|
47
|
+
};
|
|
48
|
+
exports.SocialButton = SocialButton;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.AppCorpV1HomeTemplate = void 0;
|
|
18
|
+
var react_1 = __importDefault(require("react"));
|
|
19
|
+
var footer_1 = require("./footer");
|
|
20
|
+
var header_1 = require("./header");
|
|
21
|
+
var AppCorpV1HomeTemplate = function (_a) {
|
|
22
|
+
var siteHeader = _a.siteHeader, siteFooter = _a.siteFooter;
|
|
23
|
+
return (react_1.default.createElement("div", null,
|
|
24
|
+
react_1.default.createElement(header_1.SiteHeader, __assign({}, siteHeader)),
|
|
25
|
+
react_1.default.createElement(footer_1.SiteFooter, __assign({}, siteFooter))));
|
|
26
|
+
};
|
|
27
|
+
exports.AppCorpV1HomeTemplate = AppCorpV1HomeTemplate;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export type AnnouncementBar = {
|
|
2
|
+
text: string;
|
|
3
|
+
cta: string;
|
|
4
|
+
href: string;
|
|
5
|
+
};
|
|
6
|
+
export interface NavDropdownItem {
|
|
7
|
+
badge?: string;
|
|
8
|
+
description: string;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
href: string;
|
|
11
|
+
icon: string;
|
|
12
|
+
label: string;
|
|
13
|
+
order: number;
|
|
14
|
+
}
|
|
15
|
+
export interface NavItem {
|
|
16
|
+
dropdown?: NavDropdownItem[];
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
href?: string;
|
|
19
|
+
label: string;
|
|
20
|
+
order: number;
|
|
21
|
+
}
|
|
22
|
+
export interface Cta {
|
|
23
|
+
href: string;
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
label: string;
|
|
26
|
+
order: number;
|
|
27
|
+
type: "primary" | "secondary";
|
|
28
|
+
}
|
|
29
|
+
export interface FooterLinkItem {
|
|
30
|
+
label: string;
|
|
31
|
+
href: string;
|
|
32
|
+
badge?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface FooterColumn {
|
|
35
|
+
heading: string;
|
|
36
|
+
links: FooterLinkItem[];
|
|
37
|
+
}
|
|
38
|
+
export interface SocialLink {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
href: string;
|
|
41
|
+
icon: string;
|
|
42
|
+
label: string;
|
|
43
|
+
order: number;
|
|
44
|
+
}
|
|
45
|
+
export interface FooterStat {
|
|
46
|
+
value: string;
|
|
47
|
+
label: string;
|
|
48
|
+
}
|
|
49
|
+
export interface TechBadge {
|
|
50
|
+
label: string;
|
|
51
|
+
enabled: boolean;
|
|
52
|
+
order: number;
|
|
53
|
+
}
|
|
54
|
+
export interface HeaderProps {
|
|
55
|
+
navItems: NavItem[];
|
|
56
|
+
announcementBar: AnnouncementBar;
|
|
57
|
+
headerCta: Cta[];
|
|
58
|
+
logo: string;
|
|
59
|
+
email: string;
|
|
60
|
+
phone: string;
|
|
61
|
+
location: string;
|
|
62
|
+
}
|
|
63
|
+
export interface FooterProps {
|
|
64
|
+
badges: TechBadge[];
|
|
65
|
+
columns: FooterColumn[];
|
|
66
|
+
ctas: Cta[];
|
|
67
|
+
description: string;
|
|
68
|
+
email: string;
|
|
69
|
+
founded: string;
|
|
70
|
+
location: string;
|
|
71
|
+
logo: string;
|
|
72
|
+
name: string;
|
|
73
|
+
newsletterBody: string;
|
|
74
|
+
newsletterCta: string;
|
|
75
|
+
newsletterDisclaimer: string;
|
|
76
|
+
newsletterHeading: string;
|
|
77
|
+
newsletterPlaceholder: string;
|
|
78
|
+
phone: string;
|
|
79
|
+
socialLinks: SocialLink[];
|
|
80
|
+
stats: FooterStat[];
|
|
81
|
+
tagline: string;
|
|
82
|
+
year: string;
|
|
83
|
+
}
|
|
84
|
+
export interface AppCorpV1HomeTemplateProps {
|
|
85
|
+
siteHeader: HeaderProps;
|
|
86
|
+
siteFooter: FooterProps;
|
|
87
|
+
}
|
|
88
|
+
export declare const announcementBar: AnnouncementBar;
|
|
89
|
+
export declare const navItems: NavItem[];
|
|
90
|
+
export declare const headerCta: Cta[];
|
|
91
|
+
export declare const header: HeaderProps;
|
|
92
|
+
export declare const footer: FooterProps;
|
|
93
|
+
export declare const homePageData: AppCorpV1HomeTemplateProps;
|