pixelize-design-library 2.4.1-beta.3 → 2.4.1-beta.4

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 (30) hide show
  1. package/dist/Components/LimitReachedModal/LimitReachedModal.d.ts +5 -0
  2. package/dist/Components/LimitReachedModal/LimitReachedModal.d.ts.map +1 -0
  3. package/dist/Components/LimitReachedModal/LimitReachedModal.js +40 -0
  4. package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts +16 -0
  5. package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts.map +1 -0
  6. package/dist/Components/LimitReachedModal/LimitReachedModalProps.js +2 -0
  7. package/dist/Components/LimitReachedModal/limitReachedCopy.d.ts +7 -0
  8. package/dist/Components/LimitReachedModal/limitReachedCopy.d.ts.map +1 -0
  9. package/dist/Components/LimitReachedModal/limitReachedCopy.js +54 -0
  10. package/dist/Components/PlanBadge/PlanBadge.d.ts +12 -0
  11. package/dist/Components/PlanBadge/PlanBadge.d.ts.map +1 -0
  12. package/dist/Components/PlanBadge/PlanBadge.js +22 -0
  13. package/dist/Components/PlanBadge/PlanBadgeProps.d.ts +11 -0
  14. package/dist/Components/PlanBadge/PlanBadgeProps.d.ts.map +1 -0
  15. package/dist/Components/PlanBadge/PlanBadgeProps.js +2 -0
  16. package/dist/Components/PlanPill/PlanPill.d.ts.map +1 -1
  17. package/dist/Components/PlanPill/PlanPill.js +6 -5
  18. package/dist/Components/PlanPill/planPillGradient.d.ts +22 -0
  19. package/dist/Components/PlanPill/planPillGradient.d.ts.map +1 -0
  20. package/dist/Components/PlanPill/planPillGradient.js +20 -0
  21. package/dist/Utils/planBadge.d.ts +39 -0
  22. package/dist/Utils/planBadge.d.ts.map +1 -0
  23. package/dist/Utils/planBadge.js +108 -0
  24. package/dist/Utils/planExpiry.d.ts +16 -0
  25. package/dist/Utils/planExpiry.d.ts.map +1 -1
  26. package/dist/Utils/planExpiry.js +54 -0
  27. package/dist/index.d.ts +9 -2
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +11 -3
  30. package/package.json +2 -2
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import { LimitReachedModalProps } from "./LimitReachedModalProps";
3
+ declare const LimitReachedModal: React.FC<LimitReachedModalProps>;
4
+ export default LimitReachedModal;
5
+ //# sourceMappingURL=LimitReachedModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LimitReachedModal.d.ts","sourceRoot":"","sources":["../../../src/Components/LimitReachedModal/LimitReachedModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAyB3C,OAAO,EAAa,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAW7E,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAuHvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,40 @@
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
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("@chakra-ui/react");
8
+ const lucide_react_1 = require("lucide-react");
9
+ const Button_1 = __importDefault(require("../Button/Button"));
10
+ const UpgradeButton_1 = __importDefault(require("../UpgradeButton/UpgradeButton"));
11
+ const useCustomTheme_1 = require("../../Theme/useCustomTheme");
12
+ const accentText_1 = require("../../Theme/tokens/builders/accentText");
13
+ const limitReachedCopy_1 = require("./limitReachedCopy");
14
+ const KIND_ICON = {
15
+ record: lucide_react_1.Crown,
16
+ automation: lucide_react_1.Crown,
17
+ custom_modules: lucide_react_1.Crown,
18
+ user: lucide_react_1.Users,
19
+ projects: lucide_react_1.Crown,
20
+ tickets: lucide_react_1.Crown,
21
+ };
22
+ const LimitReachedModal = ({ isOpen, onClose, kind, limit = null, used = null, canManageBilling, onUpgrade, title, message, features, }) => {
23
+ var _a, _b, _c, _d, _e, _f, _g, _h;
24
+ const { colors } = (0, useCustomTheme_1.useCustomTheme)();
25
+ const copy = (0, limitReachedCopy_1.resolveLimitCopy)(kind, canManageBilling);
26
+ const usage = (0, limitReachedCopy_1.formatLimitUsage)(kind, used, limit);
27
+ const KindIcon = KIND_ICON[kind];
28
+ const gradient = (_a = colors === null || colors === void 0 ? void 0 : colors.gradient) !== null && _a !== void 0 ? _a : {
29
+ from: colors.primary[500],
30
+ to: colors.primary[700],
31
+ };
32
+ // Header banner uses the brand gradient (not a fixed blue/purple) so it reads correctly
33
+ // across all 9 brand themes, with ink picked for AA against whichever stop is lighter.
34
+ const ink = (0, accentText_1.onGradient)(gradient.from, gradient.to, colors.white, colors.black);
35
+ return ((0, jsx_runtime_1.jsxs)(react_1.Modal, { isOpen: isOpen, onClose: onClose, isCentered: true, size: "lg", motionPreset: "slideInBottom", children: [(0, jsx_runtime_1.jsx)(react_1.ModalOverlay, { backdropFilter: "blur(5px)" }), (0, jsx_runtime_1.jsxs)(react_1.ModalContent, { borderRadius: "xl", overflow: "hidden", boxShadow: "2xl", mx: 4, bg: (_b = colors === null || colors === void 0 ? void 0 : colors.background) === null || _b === void 0 ? void 0 : _b[50], children: [(0, jsx_runtime_1.jsxs)(react_1.Box, { bgGradient: `linear(to-r, ${gradient.from}, ${gradient.to})`, color: ink, children: [(0, jsx_runtime_1.jsx)(react_1.ModalHeader, { pb: 4, children: (0, jsx_runtime_1.jsxs)(react_1.Flex, { align: "center", children: [(0, jsx_runtime_1.jsx)(react_1.Icon, { as: KindIcon, boxSize: "24px", mr: "12px" }), (0, jsx_runtime_1.jsx)(react_1.Text, { fontSize: "xl", fontWeight: "bold", children: title !== null && title !== void 0 ? title : copy.title })] }) }), (0, jsx_runtime_1.jsx)(react_1.ModalCloseButton, { "aria-label": "Dismiss", color: ink, _hover: { opacity: 0.7 } })] }), (0, jsx_runtime_1.jsxs)(react_1.ModalBody, { py: 6, children: [(0, jsx_runtime_1.jsx)(react_1.Text, { textAlign: "center", fontSize: "md", fontWeight: 600, color: (_d = (_c = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _c === void 0 ? void 0 : _c[700]) !== null && _d !== void 0 ? _d : (_e = colors === null || colors === void 0 ? void 0 : colors.text) === null || _e === void 0 ? void 0 : _e[700], children: message !== null && message !== void 0 ? message : copy.message }), usage && ((0, jsx_runtime_1.jsx)(react_1.Text, { textAlign: "center", fontSize: "sm", color: (_g = (_f = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _f === void 0 ? void 0 : _f[500]) !== null && _g !== void 0 ? _g : (_h = colors === null || colors === void 0 ? void 0 : colors.text) === null || _h === void 0 ? void 0 : _h[500], mt: 2, children: usage })), features && features.length > 0 && ((0, jsx_runtime_1.jsx)(react_1.List, { spacing: 2, mt: 5, children: features.map((feature) => {
36
+ var _a, _b, _c, _d, _e, _f, _g;
37
+ return ((0, jsx_runtime_1.jsxs)(react_1.ListItem, { display: "flex", alignItems: "center", fontSize: "sm", color: (_b = (_a = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _a === void 0 ? void 0 : _a[600]) !== null && _b !== void 0 ? _b : (_c = colors === null || colors === void 0 ? void 0 : colors.text) === null || _c === void 0 ? void 0 : _c[600], children: [(0, jsx_runtime_1.jsx)(react_1.ListIcon, { as: lucide_react_1.CheckCircle, color: (_f = (_e = (_d = colors === null || colors === void 0 ? void 0 : colors.semantic) === null || _d === void 0 ? void 0 : _d.success) === null || _e === void 0 ? void 0 : _e[500]) !== null && _f !== void 0 ? _f : (_g = colors === null || colors === void 0 ? void 0 : colors.green) === null || _g === void 0 ? void 0 : _g[500] }), feature] }, feature));
38
+ }) }))] }), (0, jsx_runtime_1.jsx)(react_1.Divider, {}), (0, jsx_runtime_1.jsx)(react_1.ModalFooter, { children: (0, jsx_runtime_1.jsxs)(react_1.HStack, { spacing: 3, children: [(0, jsx_runtime_1.jsx)(Button_1.default, { label: canManageBilling ? "Maybe later" : "Close", variant: "outline", colorScheme: "gray", size: "md", onClick: onClose }), canManageBilling && ((0, jsx_runtime_1.jsx)(UpgradeButton_1.default, { label: "Upgrade plan", size: "md", onClick: () => onUpgrade === null || onUpgrade === void 0 ? void 0 : onUpgrade() }))] }) })] })] }));
39
+ };
40
+ exports.default = LimitReachedModal;
@@ -0,0 +1,16 @@
1
+ export type LimitKind = "record" | "automation" | "custom_modules" | "user" | "projects" | "tickets";
2
+ export interface LimitReachedModalProps {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ kind: LimitKind;
6
+ /** Plan limit for `kind`. Pass with `used` to show an inline usage line. */
7
+ limit?: number | null;
8
+ used?: number | null;
9
+ /** false hides the upgrade CTA and swaps in "contact your administrator" copy. */
10
+ canManageBilling: boolean;
11
+ onUpgrade?: () => void;
12
+ title?: string;
13
+ message?: string;
14
+ features?: string[];
15
+ }
16
+ //# sourceMappingURL=LimitReachedModalProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LimitReachedModalProps.d.ts","sourceRoot":"","sources":["../../../src/Components/LimitReachedModal/LimitReachedModalProps.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,MAAM,GACN,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kFAAkF;IAClF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { LimitKind } from "./LimitReachedModalProps";
2
+ export declare function resolveLimitCopy(kind: LimitKind, canManageBilling: boolean): {
3
+ title: string;
4
+ message: string;
5
+ };
6
+ export declare function formatLimitUsage(kind: LimitKind, used?: number | null, limit?: number | null): string | null;
7
+ //# sourceMappingURL=limitReachedCopy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitReachedCopy.d.ts","sourceRoot":"","sources":["../../../src/Components/LimitReachedModal/limitReachedCopy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA0DrD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,OAAO,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAGpC;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,GAAG,IAAI,CAGf"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveLimitCopy = resolveLimitCopy;
4
+ exports.formatLimitUsage = formatLimitUsage;
5
+ // Canonical strings ported from crm-frontend's orgPlanLimits.ts / orgRecordLimit.ts and
6
+ // account-frontend's useSeatLimitGate.ts, kept verbatim so the promoted modal reads exactly
7
+ // like the copies it replaces. `projects`/`tickets` are new — matched to the same voice.
8
+ const COPY = {
9
+ record: {
10
+ title: "Record limit reached",
11
+ unit: "records",
12
+ admin: "You have reached your plan record limit. Upgrade to add more records.",
13
+ member: "Your organization has reached its record limit. Contact your organization administrator to upgrade the plan.",
14
+ },
15
+ automation: {
16
+ title: "Automation limit reached",
17
+ unit: "automations",
18
+ admin: "You have reached your plan automation limit. Upgrade to create more workflows and cadences.",
19
+ member: "Your organization has reached its automation limit. Contact your organization administrator to upgrade the plan.",
20
+ },
21
+ custom_modules: {
22
+ title: "Custom module limit reached",
23
+ unit: "custom modules",
24
+ admin: "You have reached your plan custom module limit. Upgrade to add more custom modules.",
25
+ member: "Your organization has reached its custom module limit. Contact your organization administrator to upgrade the plan.",
26
+ },
27
+ user: {
28
+ title: "Seat limit reached",
29
+ unit: "users",
30
+ admin: "You have reached the number of users included on your plan. Upgrade to add more.",
31
+ member: "Your organization has reached its user limit. Contact your organization administrator to upgrade the plan.",
32
+ },
33
+ projects: {
34
+ title: "Project limit reached",
35
+ unit: "projects",
36
+ admin: "You have reached your plan project limit. Upgrade to create more projects.",
37
+ member: "Your organization has reached its project limit. Contact your organization administrator to upgrade the plan.",
38
+ },
39
+ tickets: {
40
+ title: "Ticket limit reached",
41
+ unit: "tickets",
42
+ admin: "You have reached your plan ticket limit. Upgrade to create more tickets.",
43
+ member: "Your organization has reached its ticket limit. Contact your organization administrator to upgrade the plan.",
44
+ },
45
+ };
46
+ function resolveLimitCopy(kind, canManageBilling) {
47
+ const c = COPY[kind];
48
+ return { title: c.title, message: canManageBilling ? c.admin : c.member };
49
+ }
50
+ function formatLimitUsage(kind, used, limit) {
51
+ if (used == null || limit == null)
52
+ return null;
53
+ return `${used} of ${limit} ${COPY[kind].unit} used`;
54
+ }
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import { PlanBadgeProps } from "./PlanBadgeProps";
3
+ /**
4
+ * The top-bar plan badge: resolves an org's plan state into a `PlanPill`, or
5
+ * renders nothing when there is nothing to say (or nobody who can act on it).
6
+ *
7
+ * Use this when the app has the plan state to hand; drop to `PlanPill` directly
8
+ * for a badge whose copy is decided elsewhere.
9
+ */
10
+ declare const PlanBadge: React.FC<PlanBadgeProps>;
11
+ export default PlanBadge;
12
+ //# sourceMappingURL=PlanBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanBadge.d.ts","sourceRoot":"","sources":["../../../src/Components/PlanBadge/PlanBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;GAMG;AACH,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAsBvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,22 @@
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
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const planBadge_1 = require("../../Utils/planBadge");
8
+ const PlanPill_1 = __importDefault(require("../PlanPill/PlanPill"));
9
+ /**
10
+ * The top-bar plan badge: resolves an org's plan state into a `PlanPill`, or
11
+ * renders nothing when there is nothing to say (or nobody who can act on it).
12
+ *
13
+ * Use this when the app has the plan state to hand; drop to `PlanPill` directly
14
+ * for a badge whose copy is decided elsewhere.
15
+ */
16
+ const PlanBadge = ({ input, maxLabelWidth, ariaLabel, onClick, }) => {
17
+ const { visible, label, mobileLabel, subtitle, tone } = (0, planBadge_1.resolvePlanBadge)(input);
18
+ if (!visible)
19
+ return null;
20
+ return ((0, jsx_runtime_1.jsx)(PlanPill_1.default, { label: label, mobileLabel: mobileLabel, status: subtitle, tone: tone, maxLabelWidth: maxLabelWidth, ariaLabel: ariaLabel, onClick: onClick }));
21
+ };
22
+ exports.default = PlanBadge;
@@ -0,0 +1,11 @@
1
+ import { PlanBadgeInput } from "../../Utils/planBadge";
2
+ export interface PlanBadgeProps {
3
+ /** The org's plan state. Resolved into label, tone and chip text internally. */
4
+ input: PlanBadgeInput;
5
+ /** Truncate the label beyond this width. */
6
+ maxLabelWidth?: string;
7
+ /** Accessible label (falls back to `label — status`). */
8
+ ariaLabel?: string;
9
+ onClick?: React.MouseEventHandler<HTMLButtonElement>;
10
+ }
11
+ //# sourceMappingURL=PlanBadgeProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanBadgeProps.d.ts","sourceRoot":"","sources":["../../../src/Components/PlanBadge/PlanBadgeProps.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,KAAK,EAAE,cAAc,CAAC;IACtB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACtD"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"PlanPill.d.ts","sourceRoot":"","sources":["../../../src/Components/PlanPill/PlanPill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,aAAa,EAAgB,MAAM,iBAAiB,CAAC;AAQ9D,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAuGrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"PlanPill.d.ts","sourceRoot":"","sources":["../../../src/Components/PlanPill/PlanPill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAE,aAAa,EAAgB,MAAM,iBAAiB,CAAC;AAQ9D,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwGrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -5,19 +5,17 @@ const react_1 = require("@chakra-ui/react");
5
5
  const lucide_react_1 = require("lucide-react");
6
6
  const useCustomTheme_1 = require("../../Theme/useCustomTheme");
7
7
  const accentText_1 = require("../../Theme/tokens/builders/accentText");
8
+ const planPillGradient_1 = require("./planPillGradient");
8
9
  const TONE_ICON = {
9
10
  normal: lucide_react_1.Sparkles,
10
11
  warning: lucide_react_1.Clock,
11
12
  danger: lucide_react_1.AlertCircle,
12
13
  };
13
14
  const PlanPill = ({ label, mobileLabel, status, tone = "normal", icon, gradient, maxLabelWidth = "150px", ariaLabel, onClick, }) => {
14
- var _a;
15
15
  const theme = (0, useCustomTheme_1.useCustomTheme)();
16
16
  const c = theme.colors;
17
- // Only reachable if a consumer hand-builds a palette without `gradient`; every shipped brand sets it.
18
- const themeGradient = (_a = c.gradient) !== null && _a !== void 0 ? _a : { from: c.primary[500], to: c.primary[700] };
19
17
  const toneGradient = {
20
- normal: themeGradient,
18
+ normal: planPillGradient_1.ACCENT_GRADIENT,
21
19
  warning: { from: c.semantic.warning[400], to: c.semantic.warning[600] },
22
20
  danger: { from: c.semantic.error[400], to: c.semantic.error[600] },
23
21
  };
@@ -31,7 +29,10 @@ const PlanPill = ({ label, mobileLabel, status, tone = "normal", icon, gradient,
31
29
  return ((0, jsx_runtime_1.jsxs)(react_1.Box, { as: "button", type: "button", "aria-label": ariaLabel || (status ? `${label} — ${status}` : label), onClick: onClick, display: "inline-flex", alignItems: "center", gap: "7px", pl: "12px", pr: status ? "5px" : "12px", py: "3px", bgImage: `linear-gradient(135deg, ${resolved.from} 0%, ${resolved.to} 100%)`, color: ink, borderRadius: "999px", whiteSpace: "nowrap", cursor: "pointer", transition: "transform 0.2s ease, box-shadow 0.2s ease", _hover: {
32
30
  transform: "translateY(-1px)",
33
31
  boxShadow: `0 6px 18px ${resolved.from}59`,
34
- }, _focusVisible: { outline: "none", boxShadow: `0 0 0 3px ${resolved.from}55` }, sx: {
32
+ }, _focusVisible: {
33
+ outline: "none",
34
+ boxShadow: `0 0 0 3px ${resolved.from}55`,
35
+ }, sx: {
35
36
  "@media (prefers-reduced-motion: reduce)": {
36
37
  transition: "none",
37
38
  _hover: { transform: "none" },
@@ -0,0 +1,22 @@
1
+ export type Gradient = {
2
+ from: string;
3
+ to: string;
4
+ };
5
+ /**
6
+ * The plan badge's `normal` tone is a single fixed accent — not brand-driven, and
7
+ * not mode-dependent.
8
+ *
9
+ * Its tone carries meaning (normal / warning / danger), and a brand gradient can
10
+ * collide with that: rosewood's `#c74962 → #ea0727` is red, so a healthy plan
11
+ * rendered as if it had expired. Greyscale brands failed the other way, sinking
12
+ * the badge into the header chrome.
13
+ *
14
+ * One accent for both color modes is deliberate: a lighter dark-mode variant was
15
+ * tried and flipped `onGradient`'s ink to black, which read as a washed-out candy
16
+ * pill on dark chrome. These stops keep white ink in both modes, so the badge looks
17
+ * like the same component everywhere. Verified at AA (>= 4.5:1) on both stops.
18
+ *
19
+ * Consumers who genuinely want another colour still pass `gradient`.
20
+ */
21
+ export declare const ACCENT_GRADIENT: Gradient;
22
+ //# sourceMappingURL=planPillGradient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planPillGradient.d.ts","sourceRoot":"","sources":["../../../src/Components/PlanPill/planPillGradient.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,QAA6C,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ACCENT_GRADIENT = void 0;
4
+ /**
5
+ * The plan badge's `normal` tone is a single fixed accent — not brand-driven, and
6
+ * not mode-dependent.
7
+ *
8
+ * Its tone carries meaning (normal / warning / danger), and a brand gradient can
9
+ * collide with that: rosewood's `#c74962 → #ea0727` is red, so a healthy plan
10
+ * rendered as if it had expired. Greyscale brands failed the other way, sinking
11
+ * the badge into the header chrome.
12
+ *
13
+ * One accent for both color modes is deliberate: a lighter dark-mode variant was
14
+ * tried and flipped `onGradient`'s ink to black, which read as a washed-out candy
15
+ * pill on dark chrome. These stops keep white ink in both modes, so the badge looks
16
+ * like the same component everywhere. Verified at AA (>= 4.5:1) on both stops.
17
+ *
18
+ * Consumers who genuinely want another colour still pass `gradient`.
19
+ */
20
+ exports.ACCENT_GRADIENT = { from: "#8B3FC8", to: "#df187a" };
@@ -0,0 +1,39 @@
1
+ import { PlanPillTone } from "../Components/PlanPill/PlanPillProps";
2
+ import { PlanExpiryInput } from "./planExpiry";
3
+ export type PlanBadgeInput = {
4
+ /**
5
+ * Whether the org is on any plan at all. Defaults to true, so a caller that
6
+ * only knows the plan's name/code can omit it.
7
+ */
8
+ hasPlan?: boolean;
9
+ planName?: string | null;
10
+ /** Plan code, e.g. `"free"`. Used to detect the free plan when `isFreePlan` is omitted. */
11
+ planCode?: string | null;
12
+ /** Legacy numeric plan id, where `1` is the free plan. */
13
+ planId?: number | null;
14
+ /** Explicit free-plan flag. Overrides detection from `planCode`/`planId`/`planName`. */
15
+ isFreePlan?: boolean;
16
+ isTrial?: boolean;
17
+ isExpired?: boolean;
18
+ expiryDate?: PlanExpiryInput;
19
+ /** The badge is hidden entirely for anyone who cannot act on it. */
20
+ canManageBilling?: boolean;
21
+ /** Injectable clock, for tests. */
22
+ now?: Date;
23
+ };
24
+ export type PlanBadgeResult = {
25
+ visible: boolean;
26
+ label: string;
27
+ mobileLabel: string;
28
+ subtitle: string;
29
+ tone: PlanPillTone;
30
+ };
31
+ /**
32
+ * Turns an org's plan state into the label, urgency tone and inset-chip text for
33
+ * a `PlanPill` — the "Upgrade your plan" badge in an app's top bar.
34
+ *
35
+ * Copy and thresholds are centralized here so every app shows the same badge for
36
+ * the same org.
37
+ */
38
+ export declare function resolvePlanBadge(input: PlanBadgeInput): PlanBadgeResult;
39
+ //# sourceMappingURL=planBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planBadge.d.ts","sourceRoot":"","sources":["../../src/Utils/planBadge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EACL,eAAe,EAGhB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mCAAmC;IACnC,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AA0DF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAuDvE"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvePlanBadge = resolvePlanBadge;
4
+ const planExpiry_1 = require("./planExpiry");
5
+ const UPGRADE_LABEL = "Upgrade your plan";
6
+ const UPGRADE_MOBILE_LABEL = "Upgrade";
7
+ const EXPIRED_MOBILE_LABEL = "Expired";
8
+ const TRIAL_LABEL = "Trial";
9
+ const GENERIC_PLAN_NAME = "Plan";
10
+ const LEGACY_FREE_PLAN_ID = 1;
11
+ const TRIAL_DANGER_DAYS = 3;
12
+ const ACTIVE_WARNING_DAYS = 15;
13
+ const HIDDEN = {
14
+ visible: false,
15
+ label: "",
16
+ mobileLabel: "",
17
+ subtitle: "",
18
+ tone: "normal",
19
+ };
20
+ const upgrade = (subtitle, tone = "normal") => ({
21
+ visible: true,
22
+ label: UPGRADE_LABEL,
23
+ mobileLabel: UPGRADE_MOBILE_LABEL,
24
+ subtitle,
25
+ tone,
26
+ });
27
+ const normalize = (value) => String(value !== null && value !== void 0 ? value : "")
28
+ .trim()
29
+ .toLowerCase();
30
+ function isFreePlan(input, planName) {
31
+ if (input.isFreePlan !== undefined)
32
+ return input.isFreePlan;
33
+ if (normalize(input.planCode) === "free")
34
+ return true;
35
+ if (input.planId !== null && input.planId !== undefined) {
36
+ return Number(input.planId) === LEGACY_FREE_PLAN_ID;
37
+ }
38
+ return normalize(planName) === "free";
39
+ }
40
+ /** Whole days from today to the expiry day; null when there is no usable date. */
41
+ function daysUntil(expiryDate, now) {
42
+ if (expiryDate === null || expiryDate === undefined || expiryDate === "") {
43
+ return null;
44
+ }
45
+ const expiry = expiryDate instanceof Date ? expiryDate : new Date(expiryDate);
46
+ if (isNaN(expiry.getTime()))
47
+ return null;
48
+ const startOfDay = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
49
+ return Math.round((startOfDay(expiry).getTime() - startOfDay(now).getTime()) / 86400000);
50
+ }
51
+ /**
52
+ * Turns an org's plan state into the label, urgency tone and inset-chip text for
53
+ * a `PlanPill` — the "Upgrade your plan" badge in an app's top bar.
54
+ *
55
+ * Copy and thresholds are centralized here so every app shows the same badge for
56
+ * the same org.
57
+ */
58
+ function resolvePlanBadge(input) {
59
+ var _a, _b;
60
+ if (!input.canManageBilling)
61
+ return HIDDEN;
62
+ const now = (_a = input.now) !== null && _a !== void 0 ? _a : new Date();
63
+ const planName = ((_b = input.planName) === null || _b === void 0 ? void 0 : _b.trim()) || "";
64
+ const daysLeft = daysUntil(input.expiryDate, now);
65
+ const remaining = (0, planExpiry_1.formatPlanRemaining)(input.expiryDate, now);
66
+ const elapsed = (0, planExpiry_1.formatPlanElapsed)(input.expiryDate, now);
67
+ // Checked before the expiry branch: a lapsed org is downgraded to free, and
68
+ // "Free expired" is not a state worth shouting about.
69
+ if (isFreePlan(input, planName))
70
+ return upgrade("");
71
+ if (input.isExpired || elapsed !== "") {
72
+ // "<plan> expired" as the label with the elapsed time in the inset chip —
73
+ // folding both behind "Upgrade your plan" made the pill wide enough to
74
+ // crowd the header.
75
+ return {
76
+ visible: true,
77
+ label: `${planName || GENERIC_PLAN_NAME} expired`,
78
+ mobileLabel: EXPIRED_MOBILE_LABEL,
79
+ subtitle: elapsed,
80
+ tone: "danger",
81
+ };
82
+ }
83
+ if (input.hasPlan === false)
84
+ return upgrade("");
85
+ if (input.isTrial) {
86
+ return {
87
+ visible: true,
88
+ label: TRIAL_LABEL,
89
+ mobileLabel: TRIAL_LABEL,
90
+ subtitle: remaining,
91
+ tone: daysLeft !== null && daysLeft <= TRIAL_DANGER_DAYS
92
+ ? "danger"
93
+ : "warning",
94
+ };
95
+ }
96
+ const tone = daysLeft !== null && daysLeft < ACTIVE_WARNING_DAYS ? "warning" : "normal";
97
+ // An active paid plan names itself — falling through to "Upgrade your plan"
98
+ // told users with years remaining that they were on nothing.
99
+ if (!planName)
100
+ return upgrade(remaining, tone);
101
+ return {
102
+ visible: true,
103
+ label: planName,
104
+ mobileLabel: planName,
105
+ subtitle: remaining,
106
+ tone,
107
+ };
108
+ }
@@ -16,4 +16,20 @@ export declare function splitMonthsAndDays(from: Date, to: Date): {
16
16
  * consuming app owns.
17
17
  */
18
18
  export declare function formatPlanExpiry(expiryDate: PlanExpiryInput, now?: Date): string;
19
+ /**
20
+ * Time left on a plan, to the minute in the final day: `"3mo left"`, `"18d left"`,
21
+ * then `"23h 45m left"` down to `"1m left"`. `""` once lapsed.
22
+ *
23
+ * Differs from `formatPlanExpiry` only in that last day: a calendar-day count
24
+ * reads as "Expires today" for the whole day, which goes stale next to a live
25
+ * countdown. Prefer this for a badge that sits on screen; `formatPlanExpiry`
26
+ * stays the cheaper day-granular option.
27
+ */
28
+ export declare function formatPlanRemaining(expiryDate: PlanExpiryInput, now?: Date): string;
29
+ /**
30
+ * How long ago a plan lapsed: `"1h 10m ago"` under a day, `"2d ago"` / `"1mo ago"`
31
+ * beyond it. `""` while the plan is still live — so a badge can say how stale a
32
+ * lapse is rather than a bare "expired".
33
+ */
34
+ export declare function formatPlanElapsed(expiryDate: PlanExpiryInput, now?: Date): string;
19
35
  //# sourceMappingURL=planExpiry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"planExpiry.d.ts","sourceRoot":"","sources":["../../src/Utils/planExpiry.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAoCxE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,GACP;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAOlC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,eAAe,EAC3B,GAAG,CAAC,EAAE,IAAI,GACT,MAAM,CAaR"}
1
+ {"version":3,"file":"planExpiry.d.ts","sourceRoot":"","sources":["../../src/Utils/planExpiry.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAoCxE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,GACP;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAOlC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,eAAe,EAC3B,GAAG,CAAC,EAAE,IAAI,GACT,MAAM,CAaR;AAYD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,eAAe,EAC3B,GAAG,CAAC,EAAE,IAAI,GACT,MAAM,CAgBR;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAC3B,GAAG,CAAC,EAAE,IAAI,GACT,MAAM,CAgBR"}
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.splitMonthsAndDays = splitMonthsAndDays;
4
4
  exports.formatPlanExpiry = formatPlanExpiry;
5
+ exports.formatPlanRemaining = formatPlanRemaining;
6
+ exports.formatPlanElapsed = formatPlanElapsed;
5
7
  const MS_PER_DAY = 24 * 60 * 60 * 1000;
6
8
  function toDate(value) {
7
9
  if (value === null || value === undefined || value === "")
@@ -59,3 +61,55 @@ function formatPlanExpiry(expiryDate, now) {
59
61
  const { months, days } = splitMonthsAndDays(today, expiryDay);
60
62
  return months > 0 ? `${unit(months, "mo")} left` : `${unit(days, "d")} left`;
61
63
  }
64
+ /** Never reports `0m`; the final stretch reads `1m`. */
65
+ function formatHoursMinutes(ms, suffix) {
66
+ const totalMinutes = Math.floor(ms / 60000);
67
+ const hours = Math.floor(totalMinutes / 60);
68
+ const minutes = totalMinutes % 60;
69
+ return hours > 0
70
+ ? `${unit(hours, "h")} ${unit(minutes, "m")} ${suffix}`
71
+ : `${unit(Math.max(minutes, 1), "m")} ${suffix}`;
72
+ }
73
+ /**
74
+ * Time left on a plan, to the minute in the final day: `"3mo left"`, `"18d left"`,
75
+ * then `"23h 45m left"` down to `"1m left"`. `""` once lapsed.
76
+ *
77
+ * Differs from `formatPlanExpiry` only in that last day: a calendar-day count
78
+ * reads as "Expires today" for the whole day, which goes stale next to a live
79
+ * countdown. Prefer this for a badge that sits on screen; `formatPlanExpiry`
80
+ * stays the cheaper day-granular option.
81
+ */
82
+ function formatPlanRemaining(expiryDate, now) {
83
+ const expiry = toDate(expiryDate);
84
+ if (!expiry)
85
+ return "";
86
+ const referenceNow = now !== null && now !== void 0 ? now : new Date();
87
+ const msLeft = expiry.getTime() - referenceNow.getTime();
88
+ if (msLeft < 0)
89
+ return "";
90
+ if (msLeft < MS_PER_DAY) {
91
+ return msLeft === 0 ? "Expires today" : formatHoursMinutes(msLeft, "left");
92
+ }
93
+ const { months, days } = splitMonthsAndDays(startOfDay(referenceNow), startOfDay(expiry));
94
+ return months > 0 ? `${unit(months, "mo")} left` : `${unit(days, "d")} left`;
95
+ }
96
+ /**
97
+ * How long ago a plan lapsed: `"1h 10m ago"` under a day, `"2d ago"` / `"1mo ago"`
98
+ * beyond it. `""` while the plan is still live — so a badge can say how stale a
99
+ * lapse is rather than a bare "expired".
100
+ */
101
+ function formatPlanElapsed(expiryDate, now) {
102
+ const expiry = toDate(expiryDate);
103
+ if (!expiry)
104
+ return "";
105
+ const referenceNow = now !== null && now !== void 0 ? now : new Date();
106
+ const msAgo = referenceNow.getTime() - expiry.getTime();
107
+ if (msAgo <= 0)
108
+ return "";
109
+ if (msAgo < MS_PER_DAY)
110
+ return formatHoursMinutes(msAgo, "ago");
111
+ const { months, days } = splitMonthsAndDays(startOfDay(expiry), startOfDay(referenceNow));
112
+ return months > 0
113
+ ? `${unit(months, "mo")} ago`
114
+ : `${unit(Math.max(days, 1), "d")} ago`;
115
+ }
package/dist/index.d.ts CHANGED
@@ -79,13 +79,16 @@ import StageItem from "./Components/StageProgress/StageItem";
79
79
  import OrgSwitcher from "./Components/OrgSwitcher/OrgSwitcher";
80
80
  import UpgradeButton from "./Components/UpgradeButton/UpgradeButton";
81
81
  import PlanPill from "./Components/PlanPill/PlanPill";
82
- import { formatPlanExpiry, splitMonthsAndDays } from "./Utils/planExpiry";
82
+ import PlanBadge from "./Components/PlanBadge/PlanBadge";
83
+ import LimitReachedModal from "./Components/LimitReachedModal/LimitReachedModal";
84
+ import { formatPlanElapsed, formatPlanExpiry, formatPlanRemaining, splitMonthsAndDays } from "./Utils/planExpiry";
85
+ import { resolvePlanBadge } from "./Utils/planBadge";
83
86
  import UserDetails from "./Components/UserDetails/UserDetails";
84
87
  import RolesPermission from "./Components/RolesPermission/RolesPermission";
85
88
  import CustomModulesTable from "./Components/CustomModulesTable/CustomModulesTable";
86
89
  import SignInActivityTable from "./Components/SignInActivityTable/SignInActivityTable";
87
90
  import OrganizationDetails from "./Components/OrganizationDetails/OrganizationDetails";
88
- export { Accordian, AlertDialog, ApexBarChart, ApexPieChart, ApexPolarChart, ApexLineChart, Breadcrumbs, Button, ButtonGroupIcon, Card, Checkbox, ContactForm, DatePicker, Drawer, DrawerHeader, DrawerBody, DrawerFooter, Dropdown, Editor, EmptyState, WorkspaceWindow, WorkspaceTray, WorkspaceTrayPreview, FieldSelectModal, FilePreview, FilePreviewTrigger, FileUpload, FileUploader, FilterSidebar, FormWrapper, LazyWrapper, MoreItems, PdfViewer, ScrollToTop, CopyButton, StageProgress, StageItem, OrgSwitcher, UpgradeButton, PlanPill, formatPlanExpiry, splitMonthsAndDays, UserDetails, RolesPermission, CustomModulesTable, SignInActivityTable, OrganizationDetails, Header, HeaderActions, InputTextArea, InputSwitch, KanbanBoard, Loading, Modal, ModalHeader, ModalBody, ModalFooter, NavigationBar, Notification, NoteTextArea, MultiSelect, NumberInput, PaymentCard, PhoneNumberInput, PinInput, ProductCard, ProductDetails, ProfileCard, ProfileCardHeader, ProfileCardBody, ProfileCardFooter, ProfilePhotoViewer, ProgressBar, RadioButton, RadioButtonGroup, Reorder, Search, Select, SelectV2, SearchSelect, SelectSearch, SideBar, Slider, Skeletons, Switch, Table, TableToggle, Tag, TextInput, Timeline, Toaster, ToolTip, OverflowToolTip, useToaster, VerifyEmailOtp, useSidebarPrefs, useIsTruncated, useCustomTheme, ThemesList, debounce, };
91
+ export { Accordian, AlertDialog, ApexBarChart, ApexPieChart, ApexPolarChart, ApexLineChart, Breadcrumbs, Button, ButtonGroupIcon, Card, Checkbox, ContactForm, DatePicker, Drawer, DrawerHeader, DrawerBody, DrawerFooter, Dropdown, Editor, EmptyState, WorkspaceWindow, WorkspaceTray, WorkspaceTrayPreview, FieldSelectModal, FilePreview, FilePreviewTrigger, FileUpload, FileUploader, FilterSidebar, FormWrapper, LazyWrapper, MoreItems, PdfViewer, ScrollToTop, CopyButton, StageProgress, StageItem, OrgSwitcher, LimitReachedModal, UpgradeButton, PlanPill, PlanBadge, formatPlanElapsed, formatPlanExpiry, formatPlanRemaining, resolvePlanBadge, splitMonthsAndDays, UserDetails, RolesPermission, CustomModulesTable, SignInActivityTable, OrganizationDetails, Header, HeaderActions, InputTextArea, InputSwitch, KanbanBoard, Loading, Modal, ModalHeader, ModalBody, ModalFooter, NavigationBar, Notification, NoteTextArea, MultiSelect, NumberInput, PaymentCard, PhoneNumberInput, PinInput, ProductCard, ProductDetails, ProfileCard, ProfileCardHeader, ProfileCardBody, ProfileCardFooter, ProfilePhotoViewer, ProgressBar, RadioButton, RadioButtonGroup, Reorder, Search, Select, SelectV2, SearchSelect, SelectSearch, SideBar, Slider, Skeletons, Switch, Table, TableToggle, Tag, TextInput, Timeline, Toaster, ToolTip, OverflowToolTip, useToaster, VerifyEmailOtp, useSidebarPrefs, useIsTruncated, useCustomTheme, ThemesList, debounce, };
89
92
  export default withTheme;
90
93
  export type { UserDetailsProps, UserDetailsLabels, UserListItem, SelectedUserDetail, UserDetailRow, RoleOption, AddUserFormValues, ChangeRoleSubmitPayload, } from "./Components/UserDetails/UserDetailsProps";
91
94
  export type { WorkspaceWindowProps, WorkspaceWindowState, WorkspaceTrayProps, WorkspaceTrayItem, WorkspaceTrayPreviewProps, } from "./Components/WorkspaceWindow/WorkspaceWindowProps";
@@ -109,4 +112,8 @@ export { hexToRgb, hexToRgba, compositeOver, rgbToHex, rgbToHsl, hslToRgb, hexTo
109
112
  export type { Rgb, Hsl } from "./Theme/tokens/builders/color";
110
113
  export type { SelectV2Props, SelectV2Size, OptionProp as SelectV2Option } from "./Components/SelectV2/SelectV2Props";
111
114
  export type { PlanPillProps, PlanPillTone } from "./Components/PlanPill/PlanPillProps";
115
+ export type { PlanBadgeProps } from "./Components/PlanBadge/PlanBadgeProps";
116
+ export type { PlanBadgeInput, PlanBadgeResult } from "./Utils/planBadge";
117
+ export type { PlanExpiryInput } from "./Utils/planExpiry";
118
+ export type { LimitReachedModalProps, LimitKind, } from "./Components/LimitReachedModal/LimitReachedModalProps";
112
119
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -37,9 +37,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
38
  };
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.InputTextArea = exports.HeaderActions = exports.Header = exports.OrganizationDetails = exports.SignInActivityTable = exports.CustomModulesTable = exports.RolesPermission = exports.UserDetails = exports.splitMonthsAndDays = exports.formatPlanExpiry = exports.PlanPill = exports.UpgradeButton = exports.OrgSwitcher = exports.StageItem = exports.StageProgress = exports.CopyButton = exports.ScrollToTop = exports.PdfViewer = exports.MoreItems = exports.LazyWrapper = exports.FormWrapper = exports.FilterSidebar = exports.FileUploader = exports.FileUpload = exports.FilePreviewTrigger = exports.FilePreview = exports.FieldSelectModal = exports.WorkspaceTrayPreview = exports.WorkspaceTray = exports.WorkspaceWindow = exports.EmptyState = exports.Editor = exports.Dropdown = exports.DrawerFooter = exports.DrawerBody = exports.DrawerHeader = exports.Drawer = exports.DatePicker = exports.ContactForm = exports.Checkbox = exports.Card = exports.ButtonGroupIcon = exports.Button = exports.Breadcrumbs = exports.ApexLineChart = exports.ApexPolarChart = exports.ApexPieChart = exports.ApexBarChart = exports.AlertDialog = exports.Accordian = void 0;
41
- exports.debounce = exports.ThemesList = exports.useCustomTheme = exports.useIsTruncated = exports.useSidebarPrefs = exports.VerifyEmailOtp = exports.useToaster = exports.OverflowToolTip = exports.ToolTip = exports.Toaster = exports.Timeline = exports.TextInput = exports.Tag = exports.TableToggle = exports.Table = exports.Switch = exports.Skeletons = exports.Slider = exports.SideBar = exports.SelectSearch = exports.SearchSelect = exports.SelectV2 = exports.Select = exports.Search = exports.Reorder = exports.RadioButtonGroup = exports.RadioButton = exports.ProgressBar = exports.ProfilePhotoViewer = exports.ProfileCardFooter = exports.ProfileCardBody = exports.ProfileCardHeader = exports.ProfileCard = exports.ProductDetails = exports.ProductCard = exports.PinInput = exports.PhoneNumberInput = exports.PaymentCard = exports.NumberInput = exports.MultiSelect = exports.NoteTextArea = exports.Notification = exports.NavigationBar = exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Modal = exports.Loading = exports.KanbanBoard = exports.InputSwitch = void 0;
42
- exports.contrastRatio = exports.relativeLuminance = exports.mix = exports.withLightness = exports.hslToHex = exports.hexToHsl = exports.hslToRgb = exports.rgbToHsl = exports.rgbToHex = exports.compositeOver = exports.hexToRgba = exports.hexToRgb = exports.DARK_CANVAS_LUMINANCE = exports.AA_NORMAL_TEXT = exports.pickAccentText = exports.accentTextOnCanvas = exports.onGradient = exports.onFilled = exports.isDarkCanvas = exports.resolveStatusTone = exports.resolveAvatarFill = exports.meetsBodyText = exports.avatarFillFor = exports.AVATAR_SEEDS = exports.withOutlineRung = exports.liftToContrast = exports.AA_NON_TEXT = exports.buildDarkPalette = exports.themeNames = exports.palettes = exports.darkPalettes = exports.lightPalettes = exports.brandThemes = exports.ThemeSwitcher = exports.useThemeMode = exports.PixelizeThemeProvider = void 0;
40
+ exports.CustomModulesTable = exports.RolesPermission = exports.UserDetails = exports.splitMonthsAndDays = exports.resolvePlanBadge = exports.formatPlanRemaining = exports.formatPlanExpiry = exports.formatPlanElapsed = exports.PlanBadge = exports.PlanPill = exports.UpgradeButton = exports.LimitReachedModal = exports.OrgSwitcher = exports.StageItem = exports.StageProgress = exports.CopyButton = exports.ScrollToTop = exports.PdfViewer = exports.MoreItems = exports.LazyWrapper = exports.FormWrapper = exports.FilterSidebar = exports.FileUploader = exports.FileUpload = exports.FilePreviewTrigger = exports.FilePreview = exports.FieldSelectModal = exports.WorkspaceTrayPreview = exports.WorkspaceTray = exports.WorkspaceWindow = exports.EmptyState = exports.Editor = exports.Dropdown = exports.DrawerFooter = exports.DrawerBody = exports.DrawerHeader = exports.Drawer = exports.DatePicker = exports.ContactForm = exports.Checkbox = exports.Card = exports.ButtonGroupIcon = exports.Button = exports.Breadcrumbs = exports.ApexLineChart = exports.ApexPolarChart = exports.ApexPieChart = exports.ApexBarChart = exports.AlertDialog = exports.Accordian = void 0;
41
+ exports.VerifyEmailOtp = exports.useToaster = exports.OverflowToolTip = exports.ToolTip = exports.Toaster = exports.Timeline = exports.TextInput = exports.Tag = exports.TableToggle = exports.Table = exports.Switch = exports.Skeletons = exports.Slider = exports.SideBar = exports.SelectSearch = exports.SearchSelect = exports.SelectV2 = exports.Select = exports.Search = exports.Reorder = exports.RadioButtonGroup = exports.RadioButton = exports.ProgressBar = exports.ProfilePhotoViewer = exports.ProfileCardFooter = exports.ProfileCardBody = exports.ProfileCardHeader = exports.ProfileCard = exports.ProductDetails = exports.ProductCard = exports.PinInput = exports.PhoneNumberInput = exports.PaymentCard = exports.NumberInput = exports.MultiSelect = exports.NoteTextArea = exports.Notification = exports.NavigationBar = exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Modal = exports.Loading = exports.KanbanBoard = exports.InputSwitch = exports.InputTextArea = exports.HeaderActions = exports.Header = exports.OrganizationDetails = exports.SignInActivityTable = void 0;
42
+ exports.contrastRatio = exports.relativeLuminance = exports.mix = exports.withLightness = exports.hslToHex = exports.hexToHsl = exports.hslToRgb = exports.rgbToHsl = exports.rgbToHex = exports.compositeOver = exports.hexToRgba = exports.hexToRgb = exports.DARK_CANVAS_LUMINANCE = exports.AA_NORMAL_TEXT = exports.pickAccentText = exports.accentTextOnCanvas = exports.onGradient = exports.onFilled = exports.isDarkCanvas = exports.resolveStatusTone = exports.resolveAvatarFill = exports.meetsBodyText = exports.avatarFillFor = exports.AVATAR_SEEDS = exports.withOutlineRung = exports.liftToContrast = exports.AA_NON_TEXT = exports.buildDarkPalette = exports.themeNames = exports.palettes = exports.darkPalettes = exports.lightPalettes = exports.brandThemes = exports.ThemeSwitcher = exports.useThemeMode = exports.PixelizeThemeProvider = exports.debounce = exports.ThemesList = exports.useCustomTheme = exports.useIsTruncated = exports.useSidebarPrefs = void 0;
43
43
  const Accordion_1 = __importDefault(require("./Components/Accordion/Accordion"));
44
44
  exports.Accordian = Accordion_1.default;
45
45
  const AlertDialog_1 = __importDefault(require("./Components/AlertDialog/AlertDialog"));
@@ -215,9 +215,17 @@ const UpgradeButton_1 = __importDefault(require("./Components/UpgradeButton/Upgr
215
215
  exports.UpgradeButton = UpgradeButton_1.default;
216
216
  const PlanPill_1 = __importDefault(require("./Components/PlanPill/PlanPill"));
217
217
  exports.PlanPill = PlanPill_1.default;
218
+ const PlanBadge_1 = __importDefault(require("./Components/PlanBadge/PlanBadge"));
219
+ exports.PlanBadge = PlanBadge_1.default;
220
+ const LimitReachedModal_1 = __importDefault(require("./Components/LimitReachedModal/LimitReachedModal"));
221
+ exports.LimitReachedModal = LimitReachedModal_1.default;
218
222
  const planExpiry_1 = require("./Utils/planExpiry");
223
+ Object.defineProperty(exports, "formatPlanElapsed", { enumerable: true, get: function () { return planExpiry_1.formatPlanElapsed; } });
219
224
  Object.defineProperty(exports, "formatPlanExpiry", { enumerable: true, get: function () { return planExpiry_1.formatPlanExpiry; } });
225
+ Object.defineProperty(exports, "formatPlanRemaining", { enumerable: true, get: function () { return planExpiry_1.formatPlanRemaining; } });
220
226
  Object.defineProperty(exports, "splitMonthsAndDays", { enumerable: true, get: function () { return planExpiry_1.splitMonthsAndDays; } });
227
+ const planBadge_1 = require("./Utils/planBadge");
228
+ Object.defineProperty(exports, "resolvePlanBadge", { enumerable: true, get: function () { return planBadge_1.resolvePlanBadge; } });
221
229
  const UserDetails_1 = __importDefault(require("./Components/UserDetails/UserDetails"));
222
230
  exports.UserDetails = UserDetails_1.default;
223
231
  const RolesPermission_1 = __importDefault(require("./Components/RolesPermission/RolesPermission"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "2.4.1-beta.3",
3
+ "version": "2.4.1-beta.4",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -137,4 +137,4 @@
137
137
  "react": "^18.3.1",
138
138
  "react-dom": "^18.3.1"
139
139
  }
140
- }
140
+ }