@appcorp/shadcn 1.0.29 → 1.0.36
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/shadcn-example/coming-soon/countdown.d.ts +2 -0
- package/components/shadcn-example/coming-soon/countdown.js +82 -0
- package/components/shadcn-example/coming-soon/index.d.ts +10 -0
- package/components/shadcn-example/coming-soon/index.js +42 -0
- package/package.json +1 -1
- package/utils/transform-breadcrumbs.d.ts +4 -0
- package/utils/transform-breadcrumbs.js +11 -0
- package/utils/transform-navitems.d.ts +7 -0
- package/utils/transform-navitems.js +33 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.Countdown = void 0;
|
|
38
|
+
var react_1 = __importStar(require("react"));
|
|
39
|
+
var calculateTimeLeft = function (targetDate) {
|
|
40
|
+
var difference = +targetDate - +new Date();
|
|
41
|
+
var timeLeft = {
|
|
42
|
+
days: 0,
|
|
43
|
+
hours: 0,
|
|
44
|
+
minutes: 0,
|
|
45
|
+
seconds: 0,
|
|
46
|
+
};
|
|
47
|
+
if (difference > 0) {
|
|
48
|
+
timeLeft = {
|
|
49
|
+
days: Math.floor(difference / (1000 * 60 * 60 * 24)),
|
|
50
|
+
hours: Math.floor((difference / (1000 * 60 * 60)) % 24),
|
|
51
|
+
minutes: Math.floor((difference / 1000 / 60) % 60),
|
|
52
|
+
seconds: Math.floor((difference / 1000) % 60),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return timeLeft;
|
|
56
|
+
};
|
|
57
|
+
var Countdown = function () {
|
|
58
|
+
// Initialize targetDate only once using useState's functional update
|
|
59
|
+
var targetDate = (0, react_1.useState)(function () {
|
|
60
|
+
var date = new Date();
|
|
61
|
+
date.setDate(date.getDate() + 30); // Set to 30 days from the initial render time
|
|
62
|
+
return date;
|
|
63
|
+
})[0];
|
|
64
|
+
var _a = (0, react_1.useState)(calculateTimeLeft(targetDate)), timeLeft = _a[0], setTimeLeft = _a[1];
|
|
65
|
+
(0, react_1.useEffect)(function () {
|
|
66
|
+
// Use setInterval for continuous updates
|
|
67
|
+
var timer = setInterval(function () {
|
|
68
|
+
setTimeLeft(calculateTimeLeft(targetDate));
|
|
69
|
+
}, 1000); // Update every second
|
|
70
|
+
// Clean up the interval when the component unmounts or targetDate changes (though targetDate is stable here)
|
|
71
|
+
return function () { return clearInterval(timer); };
|
|
72
|
+
}, [targetDate]); // Dependency array ensures effect runs only if targetDate changes (which it won't after initial render)
|
|
73
|
+
var timerComponents = [];
|
|
74
|
+
Object.keys(timeLeft).forEach(function (interval) {
|
|
75
|
+
var value = timeLeft[interval];
|
|
76
|
+
timerComponents.push(react_1.default.createElement("div", { key: interval, className: "flex flex-col items-center" },
|
|
77
|
+
react_1.default.createElement("span", { className: "text-5xl font-bold" }, value < 10 ? "0".concat(value) : value),
|
|
78
|
+
react_1.default.createElement("span", { className: "text-sm uppercase opacity-80" }, interval)));
|
|
79
|
+
});
|
|
80
|
+
return (react_1.default.createElement("div", { className: "flex justify-center gap-6 md:gap-8" }, timerComponents.length ? timerComponents : react_1.default.createElement("span", null, "Time up!")));
|
|
81
|
+
};
|
|
82
|
+
exports.Countdown = Countdown;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ComingSoon = void 0;
|
|
7
|
+
var link_1 = __importDefault(require("next/link"));
|
|
8
|
+
var lucide_react_1 = require("lucide-react");
|
|
9
|
+
var input_1 = require("../../input");
|
|
10
|
+
var button_1 = require("../../button");
|
|
11
|
+
var countdown_1 = require("./countdown");
|
|
12
|
+
// import { Logo } from "@/components/logo";
|
|
13
|
+
var image_1 = __importDefault(require("next/image"));
|
|
14
|
+
var react_1 = __importDefault(require("react"));
|
|
15
|
+
var ComingSoon = function (_a) {
|
|
16
|
+
var backgroundImage = _a.backgroundImage, footerLinks = _a.footerLinks, logo = _a.logo;
|
|
17
|
+
console.log("Background Image:", backgroundImage);
|
|
18
|
+
return (react_1.default.createElement("div", { className: "grid min-h-screen lg:grid-cols-2" },
|
|
19
|
+
react_1.default.createElement("div", { className: "posi relative flex flex-1 flex-col items-center justify-between bg-top p-8 lg:p-12", style: {
|
|
20
|
+
background: "url(".concat(backgroundImage, ")"),
|
|
21
|
+
backgroundSize: "cover",
|
|
22
|
+
backgroundRepeat: "no-repeat",
|
|
23
|
+
} },
|
|
24
|
+
react_1.default.createElement("div", { className: "z-10 flex w-full items-center justify-start" },
|
|
25
|
+
react_1.default.createElement("div", { className: "flex items-center gap-2" },
|
|
26
|
+
react_1.default.createElement(image_1.default, { src: logo, width: 30, height: 30, alt: "logo" }))),
|
|
27
|
+
react_1.default.createElement("nav", { className: "relative z-10 mt-8 flex w-full justify-center gap-6 text-gray-600 lg:justify-start" }, footerLinks.slice(0, 4).map(function (link) { return (react_1.default.createElement(link_1.default, { key: link.label, href: link.href, className: "text-black hover:underline" }, link.label)); }))),
|
|
28
|
+
react_1.default.createElement("div", { className: "relative flex flex-1 flex-col items-center justify-center bg-gradient-to-br p-8 lg:p-12" },
|
|
29
|
+
react_1.default.createElement("div", { className: "flex w-full items-center justify-end" },
|
|
30
|
+
react_1.default.createElement(lucide_react_1.Share2, { className: "h-6 w-6 cursor-pointer opacity-80 hover:opacity-100" })),
|
|
31
|
+
react_1.default.createElement("div", { className: "flex flex-col items-center space-y-20 text-center" },
|
|
32
|
+
react_1.default.createElement("div", { className: "relative z-10 flex flex-col items-center space-y-2 text-center" },
|
|
33
|
+
react_1.default.createElement("h1", { className: "text-4xl font-bold text-[#6a5acd] lg:text-5xl" }, "Coming Soon"),
|
|
34
|
+
react_1.default.createElement("p", { className: "text-muted-foreground lg:text-lg" }, "Stay Connected, Stay Updated!")),
|
|
35
|
+
react_1.default.createElement(countdown_1.Countdown, null),
|
|
36
|
+
react_1.default.createElement("div", { className: "space-y-6" },
|
|
37
|
+
react_1.default.createElement("h2", { className: "text-xl font-semibold md:text-2xl" }, "Get Updates!"),
|
|
38
|
+
react_1.default.createElement("form", { className: "flex w-full max-w-sm rounded-full border p-1" },
|
|
39
|
+
react_1.default.createElement(input_1.Input, { type: "email", placeholder: "Email Address", className: "flex-1 rounded-full border-none bg-transparent px-4 focus-visible:ring-0 focus-visible:ring-offset-0" }),
|
|
40
|
+
react_1.default.createElement(button_1.Button, { type: "submit", className: "rounded-full" }, "Send Now")))))));
|
|
41
|
+
};
|
|
42
|
+
exports.ComingSoon = ComingSoon;
|
package/package.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformBreadcrumbs = void 0;
|
|
4
|
+
var transformBreadcrumbs = function (string) {
|
|
5
|
+
var items = string.split("/").filter(Boolean);
|
|
6
|
+
return items.map(function (item) { return ({
|
|
7
|
+
label: item.charAt(0).toUpperCase() + item.slice(1).replace(/-/g, " "),
|
|
8
|
+
href: "#",
|
|
9
|
+
}); });
|
|
10
|
+
};
|
|
11
|
+
exports.transformBreadcrumbs = transformBreadcrumbs;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DashboardNavItem } from "../data/admin-dashboard";
|
|
2
|
+
/**
|
|
3
|
+
* Updates navItems to set isActive based on current pathname
|
|
4
|
+
* Checks both main nav URLs and subItem URLs for matches
|
|
5
|
+
* Also marks individual subItems as active when their URL matches
|
|
6
|
+
*/
|
|
7
|
+
export declare const transformNavItems: (navItems: DashboardNavItem[], pathname: string) => DashboardNavItem[];
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.transformNavItems = void 0;
|
|
15
|
+
/**
|
|
16
|
+
* Updates navItems to set isActive based on current pathname
|
|
17
|
+
* Checks both main nav URLs and subItem URLs for matches
|
|
18
|
+
* Also marks individual subItems as active when their URL matches
|
|
19
|
+
*/
|
|
20
|
+
var transformNavItems = function (navItems, pathname) {
|
|
21
|
+
return navItems.map(function (navItem) {
|
|
22
|
+
// Check if main nav item URL matches
|
|
23
|
+
var isMainActive = navItem.url !== "#" && pathname === navItem.url;
|
|
24
|
+
// Transform subItems to mark active ones
|
|
25
|
+
var updatedSubItems = navItem.subItems.map(function (subItem) {
|
|
26
|
+
return __assign(__assign({}, subItem), { isActive: subItem.url !== "#" && pathname === subItem.url });
|
|
27
|
+
});
|
|
28
|
+
// Check if any subItem is active
|
|
29
|
+
var hasActiveSubItem = updatedSubItems.some(function (subItem) { return subItem.isActive; });
|
|
30
|
+
return __assign(__assign({}, navItem), { isActive: isMainActive || hasActiveSubItem, subItems: updatedSubItems });
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
exports.transformNavItems = transformNavItems;
|