pixelize-design-library 2.1.68 → 2.1.69

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.
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { PaymentCardProps } from "./PaymentCardProps";
3
+ declare const PaymentCard: ({ plan, isActive, isNextUpgrade, billingCycle, onSelect, onHover, }: PaymentCardProps) => React.JSX.Element;
4
+ export default PaymentCard;
@@ -0,0 +1,65 @@
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
+ var react_1 = __importDefault(require("react"));
7
+ var react_2 = require("@chakra-ui/react");
8
+ var lucide_react_1 = require("lucide-react");
9
+ var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
10
+ var PaymentCard = function (_a) {
11
+ var plan = _a.plan, _b = _a.isActive, isActive = _b === void 0 ? false : _b, _c = _a.isNextUpgrade, isNextUpgrade = _c === void 0 ? false : _c, billingCycle = _a.billingCycle, onSelect = _a.onSelect, onHover = _a.onHover;
12
+ var theme = (0, useCustomTheme_1.useCustomTheme)();
13
+ var badgeText = "";
14
+ var badgeColor = "";
15
+ var buttonColor = "";
16
+ var buttonColor50 = "";
17
+ if (isActive) {
18
+ badgeText = "Active Plan";
19
+ badgeColor = "0.125rem solid ".concat(theme.colors.green[500]);
20
+ buttonColor = theme.colors.green[500];
21
+ buttonColor50 = theme.colors.green[50];
22
+ }
23
+ else if (isNextUpgrade) {
24
+ badgeText = "Upgrade Your Plan";
25
+ badgeColor = "0.125rem solid ".concat(theme.colors.primary[500]);
26
+ buttonColor = theme.colors.primary[500];
27
+ buttonColor50 = theme.colors.primary[50];
28
+ }
29
+ else if (plan.popular) {
30
+ badgeText = "Most Popular";
31
+ badgeColor = "0.125rem solid ".concat(theme.colors.primary[500]);
32
+ buttonColor = theme.colors.primary[500];
33
+ buttonColor50 = theme.colors.primary[50];
34
+ }
35
+ else {
36
+ buttonColor = theme.colors.primary[500];
37
+ buttonColor50 = theme.colors.primary[50];
38
+ }
39
+ return (react_1.default.createElement(react_2.GridItem, null,
40
+ react_1.default.createElement(react_2.Box, { bg: "white", minH: "100%", borderRadius: "lg", p: 8, borderWidth: "0.063rem", borderColor: theme.colors.gray[200], boxShadow: "md", position: "relative", transition: "all 0.2s", transform: plan.popular ? "scale(1.03)" : "none", border: badgeColor, _hover: { transform: "translateY(-0.313rem)", shadow: "xl" }, onMouseEnter: function () { return onHover === null || onHover === void 0 ? void 0 : onHover(plan.id, "card", true); }, onMouseLeave: function () { return onHover === null || onHover === void 0 ? void 0 : onHover(plan.id, "card", false); } },
41
+ badgeText && (react_1.default.createElement(react_2.Badge, { position: "absolute", top: "-0.75rem", left: "50%", transform: "translateX(-50%)", bg: buttonColor, color: theme.colors.white, fontSize: "sm", px: 4, py: 1, borderRadius: "full" }, badgeText)),
42
+ react_1.default.createElement(react_2.Box, { textAlign: "center", mb: 6 },
43
+ react_1.default.createElement(react_2.Flex, { justify: "center", align: "center", w: "3.125rem", h: "3.125rem", borderRadius: "lg", bg: buttonColor50, color: buttonColor, mx: "auto", mb: 4 }, plan.icon),
44
+ react_1.default.createElement(react_2.Heading, { as: "h3", size: "lg", mb: 4, color: theme.colors.gray[800] }, plan.name),
45
+ react_1.default.createElement(react_2.Heading, { as: "h4", size: "2xl", mb: 1, color: theme.colors.gray[800], display: "flex", justifyContent: "center" },
46
+ react_1.default.createElement(react_2.Box, { fontSize: "1.5rem" }, "\u20B9"),
47
+ billingCycle === "yearly" ? plan.yearlyPrice : plan.monthlyPrice,
48
+ react_1.default.createElement(react_2.Box, { display: "flex", flexDirection: "column", justifyContent: "end", ml: 1 },
49
+ react_1.default.createElement(react_2.Text, { fontSize: "0.9rem", fontWeight: "normal", color: theme.colors.gray[600] }, plan.billing),
50
+ react_1.default.createElement(react_2.Text, { fontSize: "0.7rem", fontWeight: "normal", color: theme.colors.gray[600] }, plan.tax))),
51
+ react_1.default.createElement(react_2.Text, { color: theme.colors.gray[600], mt: 3 }, plan.description)),
52
+ !isActive && (react_1.default.createElement(react_2.Button, { w: "full", colorScheme: plan.buttonVariant === "outline" ? undefined : "primary", variant: plan.buttonVariant, mb: 6, onClick: function () { return onSelect === null || onSelect === void 0 ? void 0 : onSelect(plan.id); }, onMouseEnter: function () { return onHover === null || onHover === void 0 ? void 0 : onHover(plan.id, "button", true); }, onMouseLeave: function () { return onHover === null || onHover === void 0 ? void 0 : onHover(plan.id, "button", false); }, _hover: {
53
+ bg: plan.buttonVariant === "outline" ? buttonColor50 : undefined,
54
+ }, sx: {
55
+ "&.chakra-button": {
56
+ backgroundColor: plan.buttonVariant === "solid" ? buttonColor : undefined,
57
+ borderColor: plan.buttonVariant === "outline" ? buttonColor : undefined,
58
+ color: plan.buttonVariant === "outline" ? buttonColor : "white",
59
+ },
60
+ } }, plan.buttonText)),
61
+ react_1.default.createElement(react_2.VStack, { align: "start", spacing: 3 }, plan.features.map(function (feature, i) { return (react_1.default.createElement(react_2.Flex, { key: i, align: "center" },
62
+ react_1.default.createElement(react_2.Icon, { as: lucide_react_1.Check, color: theme.colors.green[500], mr: 2 }),
63
+ react_1.default.createElement(react_2.Text, { fontSize: "sm" }, feature))); })))));
64
+ };
65
+ exports.default = PaymentCard;
@@ -0,0 +1,23 @@
1
+ /// <reference types="react" />
2
+ export type PaymentCardProps = {
3
+ plan: Plan;
4
+ isActive?: boolean;
5
+ isNextUpgrade?: boolean;
6
+ billingCycle: "monthly" | "yearly";
7
+ onSelect?: (planId: number) => void;
8
+ onHover?: (planId: number, type: "card" | "button", state: boolean) => void;
9
+ };
10
+ export type Plan = {
11
+ id: number;
12
+ name: string;
13
+ description: string;
14
+ monthlyPrice: number;
15
+ yearlyPrice: number;
16
+ billing: string;
17
+ tax: string;
18
+ features: string[];
19
+ icon: React.ReactNode;
20
+ buttonText: string;
21
+ buttonVariant: "solid" | "outline";
22
+ popular?: boolean;
23
+ };
@@ -30,7 +30,59 @@ var react_1 = __importDefault(require("react"));
30
30
  var Card_1 = __importDefault(require("../Components/Card/Card"));
31
31
  var ProfileCard_1 = __importStar(require("../Components/ProfileCard/ProfileCard"));
32
32
  var react_2 = require("@chakra-ui/react");
33
+ var lucide_react_1 = require("lucide-react");
34
+ var PaymentCard_1 = __importDefault(require("../Components/Card/PaymentCard/PaymentCard"));
35
+ var plans = [
36
+ {
37
+ id: 1,
38
+ name: "Free",
39
+ description: "Basic features for small teams",
40
+ monthlyPrice: 0,
41
+ yearlyPrice: 0,
42
+ billing: "per month",
43
+ tax: "+ GST",
44
+ features: ["User Management (1 User)", "Single Pipeline", "500 Records", "Contacts, Products & Activities Management", "Automations (3)"],
45
+ icon: react_1.default.createElement(lucide_react_1.Star, { size: 20 }),
46
+ buttonText: "Choose Starter",
47
+ buttonVariant: "solid",
48
+ },
49
+ {
50
+ id: 2,
51
+ name: "Pro",
52
+ description: "Perfect for small teams and growing businesses.",
53
+ monthlyPrice: 499,
54
+ yearlyPrice: 399,
55
+ billing: "per month",
56
+ tax: "+ GST",
57
+ features: ["User Management (5 User)", "Everything in Free Edition +", "Team Pipelines (3)", "50,000 Records", "Email & WhatsApp Business Integration", "Automations (30)", "Mass emails with email insights", "10 custom fields/module"],
58
+ icon: react_1.default.createElement(lucide_react_1.Zap, { size: 20 }),
59
+ buttonText: "Choose Pro",
60
+ buttonVariant: "outline",
61
+ popular: true,
62
+ },
63
+ {
64
+ id: 3,
65
+ name: "Enterprise",
66
+ description: "Unlimited access for large organizations",
67
+ monthlyPrice: 1499,
68
+ yearlyPrice: 1399,
69
+ billing: "per month",
70
+ tax: "+ GST",
71
+ features: ["User Management (Unlimited Users)", "Everything in Premier Edition +", "Team Pipelines (15)", "1 Million Records", "Advanced Automation Rules (100)", "File Cabinet pre-installed with 5 GB storage", "50 custom fields/module", "1000 mass mails/day", "Highest limits for features"],
72
+ icon: react_1.default.createElement(lucide_react_1.Gem, { size: 20 }),
73
+ buttonText: "Contact Sales",
74
+ buttonVariant: "solid",
75
+ },
76
+ ];
33
77
  var CardPage = function () {
78
+ var activePlanId = 2; // Example: current active plan
79
+ var nextUpgradeId = 3; // Example: suggest upgrade
80
+ var handleSelect = function (planId) {
81
+ console.log("Selected plan:", planId);
82
+ };
83
+ var handleHover = function (planId, type, state) {
84
+ console.log("".concat(type, " hover ").concat(state ? "enter" : "leave", " on plan"), planId);
85
+ };
34
86
  return (react_1.default.createElement("div", null,
35
87
  react_1.default.createElement(Card_1.default, null,
36
88
  react_1.default.createElement("div", null, "hello")),
@@ -43,6 +95,10 @@ var CardPage = function () {
43
95
  react_1.default.createElement(ProfileCard_1.ProfileCardBody, null,
44
96
  react_1.default.createElement(react_2.Text, null, "View a summary of all your customers over the last month.")),
45
97
  react_1.default.createElement(ProfileCard_1.ProfileCardFooter, null,
46
- react_1.default.createElement(react_2.Button, { color: "blue" }, "View here")))));
98
+ react_1.default.createElement(react_2.Button, { color: "blue" }, "View here"))),
99
+ react_1.default.createElement("br", null),
100
+ react_1.default.createElement("br", null),
101
+ react_1.default.createElement("br", null),
102
+ react_1.default.createElement(react_2.SimpleGrid, { columns: { base: 1, md: 3 }, spacing: 6 }, plans.map(function (plan) { return (react_1.default.createElement(PaymentCard_1.default, { key: plan.id, plan: plan, billingCycle: "monthly", isActive: plan.id === activePlanId, isNextUpgrade: plan.id === nextUpgradeId, onSelect: handleSelect, onHover: handleHover })); }))));
47
103
  };
48
104
  exports.default = CardPage;
@@ -60,37 +60,6 @@ var calculateLeftOffset = function (columns, index) {
60
60
  return columns.slice(0, index).reduce(function (sum, width) { return sum + width; }, 0);
61
61
  };
62
62
  exports.calculateLeftOffset = calculateLeftOffset;
63
- // export const searchAndSortData = (
64
- // data: DataObject[],
65
- // searchValues: Record<string, string>
66
- // ) => {
67
- // const filteredData = data.filter((item) => {
68
- // return Object.keys(searchValues).every((key) => {
69
- // const searchValue = searchValues[key].toLowerCase();
70
- // return item[key].toString().toLowerCase().includes(searchValue);
71
- // });
72
- // });
73
- // return filteredData.sort((a, b) => {
74
- // let aMatchCount = 0;
75
- // let bMatchCount = 0;
76
- // Object.keys(searchValues).forEach((key) => {
77
- // const searchValue = searchValues[key].toLowerCase();
78
- // if (a[key] && a[key].toString().toLowerCase() === searchValue) {
79
- // aMatchCount++;
80
- // }
81
- // if (b[key] && b[key].toString().toLowerCase() === searchValue) {
82
- // bMatchCount++;
83
- // }
84
- // if (a[key] && a[key].toString().toLowerCase().includes(searchValue)) {
85
- // aMatchCount += 0.5;
86
- // }
87
- // if (b[key] && b[key].toString().toLowerCase().includes(searchValue)) {
88
- // bMatchCount += 0.5;
89
- // }
90
- // });
91
- // return bMatchCount - aMatchCount;
92
- // });
93
- // };
94
63
  var extractTextFromReactNode = function (node) {
95
64
  if (typeof node === "string" || typeof node === "number") {
96
65
  return String(node);