@deckspec/theme-noir-display 0.1.0 → 0.1.2

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 (95) hide show
  1. package/dist/components/card/index.d.ts +12 -0
  2. package/dist/components/card/index.d.ts.map +1 -0
  3. package/dist/components/card/index.js +19 -0
  4. package/dist/components/card/index.js.map +1 -0
  5. package/dist/components/index.d.ts +3 -0
  6. package/dist/components/index.d.ts.map +1 -0
  7. package/dist/components/index.js +3 -0
  8. package/dist/components/index.js.map +1 -0
  9. package/dist/components/slide-header/index.d.ts +13 -0
  10. package/dist/components/slide-header/index.d.ts.map +1 -0
  11. package/dist/components/slide-header/index.js +22 -0
  12. package/dist/components/slide-header/index.js.map +1 -0
  13. package/dist/patterns/_lib/chart-colors.d.ts +3 -0
  14. package/dist/patterns/_lib/chart-colors.d.ts.map +1 -0
  15. package/dist/patterns/_lib/chart-colors.js +12 -0
  16. package/dist/patterns/_lib/chart-colors.js.map +1 -0
  17. package/dist/patterns/_lib/icon.d.ts +10 -0
  18. package/dist/patterns/_lib/icon.d.ts.map +1 -0
  19. package/dist/patterns/_lib/icon.js +33 -0
  20. package/dist/patterns/_lib/icon.js.map +1 -0
  21. package/dist/patterns/big-number/index.d.ts +24 -0
  22. package/dist/patterns/big-number/index.d.ts.map +1 -0
  23. package/dist/patterns/big-number/index.js +44 -0
  24. package/dist/patterns/big-number/index.js.map +1 -0
  25. package/dist/patterns/body-message/index.d.ts +62 -0
  26. package/dist/patterns/body-message/index.d.ts.map +1 -0
  27. package/dist/patterns/body-message/index.js +163 -0
  28. package/dist/patterns/body-message/index.js.map +1 -0
  29. package/dist/patterns/bullet-list/index.d.ts +33 -0
  30. package/dist/patterns/bullet-list/index.d.ts.map +1 -0
  31. package/dist/patterns/bullet-list/index.js +72 -0
  32. package/dist/patterns/bullet-list/index.js.map +1 -0
  33. package/dist/patterns/challenge-cards/index.d.ts +38 -0
  34. package/dist/patterns/challenge-cards/index.d.ts.map +1 -0
  35. package/dist/patterns/challenge-cards/index.js +58 -0
  36. package/dist/patterns/challenge-cards/index.js.map +1 -0
  37. package/dist/patterns/chart-bar/index.d.ts +44 -0
  38. package/dist/patterns/chart-bar/index.d.ts.map +1 -0
  39. package/dist/patterns/chart-bar/index.js +43 -0
  40. package/dist/patterns/chart-bar/index.js.map +1 -0
  41. package/dist/patterns/comparison-columns/index.d.ts +35 -0
  42. package/dist/patterns/comparison-columns/index.d.ts.map +1 -0
  43. package/dist/patterns/comparison-columns/index.js +57 -0
  44. package/dist/patterns/comparison-columns/index.js.map +1 -0
  45. package/dist/patterns/feature-metrics/index.d.ts +33 -0
  46. package/dist/patterns/feature-metrics/index.d.ts.map +1 -0
  47. package/dist/patterns/feature-metrics/index.js +51 -0
  48. package/dist/patterns/feature-metrics/index.js.map +1 -0
  49. package/dist/patterns/flow-diagram/index.d.ts +33 -0
  50. package/dist/patterns/flow-diagram/index.d.ts.map +1 -0
  51. package/dist/patterns/flow-diagram/index.js +80 -0
  52. package/dist/patterns/flow-diagram/index.js.map +1 -0
  53. package/dist/patterns/hero-statement/index.d.ts +18 -0
  54. package/dist/patterns/hero-statement/index.d.ts.map +1 -0
  55. package/dist/patterns/hero-statement/index.js +36 -0
  56. package/dist/patterns/hero-statement/index.js.map +1 -0
  57. package/dist/patterns/icon-grid/index.d.ts +38 -0
  58. package/dist/patterns/icon-grid/index.d.ts.map +1 -0
  59. package/dist/patterns/icon-grid/index.js +73 -0
  60. package/dist/patterns/icon-grid/index.js.map +1 -0
  61. package/dist/patterns/index.d.ts +18 -0
  62. package/dist/patterns/index.d.ts.map +1 -0
  63. package/dist/patterns/index.js +18 -0
  64. package/dist/patterns/index.js.map +1 -0
  65. package/dist/patterns/phased-roadmap/index.d.ts +41 -0
  66. package/dist/patterns/phased-roadmap/index.d.ts.map +1 -0
  67. package/dist/patterns/phased-roadmap/index.js +99 -0
  68. package/dist/patterns/phased-roadmap/index.js.map +1 -0
  69. package/dist/patterns/photo-split/index.d.ts +28 -0
  70. package/dist/patterns/photo-split/index.d.ts.map +1 -0
  71. package/dist/patterns/photo-split/index.js +55 -0
  72. package/dist/patterns/photo-split/index.js.map +1 -0
  73. package/dist/patterns/pricing-tiers/index.d.ts +45 -0
  74. package/dist/patterns/pricing-tiers/index.d.ts.map +1 -0
  75. package/dist/patterns/pricing-tiers/index.js +62 -0
  76. package/dist/patterns/pricing-tiers/index.js.map +1 -0
  77. package/dist/patterns/showcase-grid/index.d.ts +38 -0
  78. package/dist/patterns/showcase-grid/index.d.ts.map +1 -0
  79. package/dist/patterns/showcase-grid/index.js +54 -0
  80. package/dist/patterns/showcase-grid/index.js.map +1 -0
  81. package/dist/patterns/thank-you/index.d.ts +21 -0
  82. package/dist/patterns/thank-you/index.d.ts.map +1 -0
  83. package/dist/patterns/thank-you/index.js +45 -0
  84. package/dist/patterns/thank-you/index.js.map +1 -0
  85. package/dist/patterns/three-pillars/index.d.ts +38 -0
  86. package/dist/patterns/three-pillars/index.d.ts.map +1 -0
  87. package/dist/patterns/three-pillars/index.js +61 -0
  88. package/dist/patterns/three-pillars/index.js.map +1 -0
  89. package/dist/patterns/title-center/index.d.ts +15 -0
  90. package/dist/patterns/title-center/index.d.ts.map +1 -0
  91. package/dist/patterns/title-center/index.js +26 -0
  92. package/dist/patterns/title-center/index.js.map +1 -0
  93. package/dist/tsconfig.tsbuildinfo +1 -0
  94. package/package.json +9 -1
  95. package/tsconfig.json +0 -13
@@ -0,0 +1,12 @@
1
+ import type { ReactElement, ReactNode, CSSProperties } from "react";
2
+ interface CardProps {
3
+ children: ReactNode;
4
+ highlight?: boolean;
5
+ style?: CSSProperties;
6
+ }
7
+ /**
8
+ * Dark card with subtle border and rounded corners.
9
+ */
10
+ export declare function Card({ children, highlight, style }: CardProps): ReactElement;
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/card/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEpE,UAAU,SAAS;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,YAAY,CAmB5E"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Dark card with subtle border and rounded corners.
4
+ */
5
+ export function Card({ children, highlight, style }) {
6
+ return (_jsx("div", { style: {
7
+ backgroundColor: "var(--color-card-background)",
8
+ borderRadius: "var(--radius)",
9
+ border: highlight
10
+ ? "1px solid var(--color-primary)"
11
+ : "1px solid var(--color-border)",
12
+ padding: "32px",
13
+ display: "flex",
14
+ flexDirection: "column",
15
+ gap: 12,
16
+ ...style,
17
+ }, children: children }));
18
+ }
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/card/index.tsx"],"names":[],"mappings":";AAQA;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAa;IAC5D,OAAO,CACL,cACE,KAAK,EAAE;YACL,eAAe,EAAE,8BAA8B;YAC/C,YAAY,EAAE,eAAe;YAC7B,MAAM,EAAE,SAAS;gBACf,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,+BAA+B;YACnC,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,EAAE,EAAE;YACP,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { SlideHeader } from "./slide-header/index.js";
2
+ export { Card } from "./card/index.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { SlideHeader } from "./slide-header/index.js";
2
+ export { Card } from "./card/index.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ReactElement } from "react";
2
+ interface SlideHeaderProps {
3
+ label?: string;
4
+ heading: string;
5
+ headingSize?: number;
6
+ }
7
+ /**
8
+ * Minimal slide header — optional muted label + display heading.
9
+ * Apple-style: label is small muted text, heading is large semibold.
10
+ */
11
+ export declare function SlideHeader({ label, heading, headingSize, }: SlideHeaderProps): ReactElement;
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/slide-header/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,WAAgB,GACjB,EAAE,gBAAgB,GAAG,YAAY,CA8BjC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Minimal slide header — optional muted label + display heading.
4
+ * Apple-style: label is small muted text, heading is large semibold.
5
+ */
6
+ export function SlideHeader({ label, heading, headingSize = 40, }) {
7
+ return (_jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 8 }, children: [label && (_jsx("span", { style: {
8
+ fontSize: 14,
9
+ fontWeight: 600,
10
+ letterSpacing: "-0.016em",
11
+ color: "var(--color-accent)",
12
+ }, children: label })), _jsx("h2", { style: {
13
+ fontFamily: "var(--font-heading)",
14
+ fontSize: headingSize,
15
+ fontWeight: 600,
16
+ lineHeight: 1.1,
17
+ letterSpacing: headingSize >= 48 ? "-0.015em" : "-0.009em",
18
+ color: "var(--color-foreground)",
19
+ margin: 0,
20
+ }, children: heading })] }));
21
+ }
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/slide-header/index.tsx"],"names":[],"mappings":";AAQA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,WAAW,GAAG,EAAE,GACC;IACjB,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aAC7D,KAAK,IAAI,CACR,eACE,KAAK,EAAE;oBACL,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,GAAG;oBACf,aAAa,EAAE,UAAU;oBACzB,KAAK,EAAE,qBAAqB;iBAC7B,YAEA,KAAK,GACD,CACR,EACD,aACE,KAAK,EAAE;oBACL,UAAU,EAAE,qBAAqB;oBACjC,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,GAAG;oBACf,aAAa,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;oBAC1D,KAAK,EAAE,yBAAyB;oBAChC,MAAM,EAAE,CAAC;iBACV,YAEA,OAAO,GACL,IACD,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const chartColors: string[];
2
+ export declare function getChartColor(index: number): string;
3
+ //# sourceMappingURL=chart-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-colors.d.ts","sourceRoot":"","sources":["../../../patterns/_lib/chart-colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,UAOvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,12 @@
1
+ export const chartColors = [
2
+ "var(--color-primary)",
3
+ "var(--color-foreground)",
4
+ "var(--color-muted-foreground)",
5
+ "#6366f1", // indigo accent
6
+ "#0891b2", // cyan accent
7
+ "#059669", // emerald accent
8
+ ];
9
+ export function getChartColor(index) {
10
+ return chartColors[index % chartColors.length];
11
+ }
12
+ //# sourceMappingURL=chart-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-colors.js","sourceRoot":"","sources":["../../../patterns/_lib/chart-colors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,sBAAsB;IACtB,yBAAyB;IACzB,+BAA+B;IAC/B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,iBAAiB;CAC7B,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type ReactElement } from "react";
2
+ interface IconProps {
3
+ name: string;
4
+ size?: number;
5
+ color?: string;
6
+ strokeWidth?: number;
7
+ }
8
+ export declare function Icon({ name, size, color, strokeWidth, }: IconProps): ReactElement;
9
+ export {};
10
+ //# sourceMappingURL=icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../patterns/_lib/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAM7E,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,IAAS,EACT,KAAsB,EACtB,WAAe,GAChB,EAAE,SAAS,GAAG,YAAY,CAwB1B"}
@@ -0,0 +1,33 @@
1
+ import { createElement } from "react";
2
+ import * as lucideIcons from "lucide-react";
3
+ import * as phIcons from "@phosphor-icons/react";
4
+ function toPascalCase(kebab) {
5
+ return kebab
6
+ .split("-")
7
+ .map((s) => s.charAt(0).toUpperCase() + s.slice(1))
8
+ .join("");
9
+ }
10
+ export function Icon({ name, size = 24, color = "currentColor", strokeWidth = 2, }) {
11
+ // Support "ph:icon-name" prefix for explicit Phosphor selection
12
+ const [lib, iconName] = name.includes(":")
13
+ ? name.split(":", 2)
14
+ : ["lucide", name];
15
+ const pascalName = toPascalCase(iconName);
16
+ if (lib === "ph") {
17
+ const PhIcon = phIcons[pascalName];
18
+ if (PhIcon) {
19
+ return createElement(PhIcon, { size, color, weight: "regular" });
20
+ }
21
+ }
22
+ else {
23
+ const LucideIcon = lucideIcons[pascalName];
24
+ if (LucideIcon) {
25
+ return createElement(LucideIcon, { size, color, strokeWidth });
26
+ }
27
+ }
28
+ // Fallback: empty placeholder
29
+ return createElement("span", {
30
+ style: { display: "inline-block", width: size, height: size },
31
+ });
32
+ }
33
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../patterns/_lib/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyC,MAAM,OAAO,CAAC;AAC7E,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAWjD,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EACnB,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,KAAK,GAAG,cAAc,EACtB,WAAW,GAAG,CAAC,GACL;IACV,gEAAgE;IAChE,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QACxC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAsB;QAC1C,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAErB,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE1C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,MAAM,GAAI,OAA8B,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAI,WAAkC,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,aAAa,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,OAAO,aAAa,CAAC,MAAM,EAAE;QAC3B,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;KAC9D,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ export declare const schema: z.ZodObject<{
3
+ label: z.ZodOptional<z.ZodString>;
4
+ value: z.ZodString;
5
+ unit: z.ZodOptional<z.ZodString>;
6
+ headline: z.ZodString;
7
+ description: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ value: string;
10
+ headline: string;
11
+ label?: string | undefined;
12
+ description?: string | undefined;
13
+ unit?: string | undefined;
14
+ }, {
15
+ value: string;
16
+ headline: string;
17
+ label?: string | undefined;
18
+ description?: string | undefined;
19
+ unit?: string | undefined;
20
+ }>;
21
+ type Props = z.infer<typeof schema>;
22
+ export default function BigNumber({ label, value, unit, headline, description }: Props): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../patterns/big-number/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;EAMjB,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAEpC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,2CA0ErF"}
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { z } from "zod";
3
+ export const schema = z.object({
4
+ label: z.string().min(1).max(30).optional().describe("Accent eyebrow"),
5
+ value: z.string().min(1).max(20).describe("Massive display number"),
6
+ unit: z.string().max(10).optional().describe("Unit after number"),
7
+ headline: z.string().min(1).max(60).describe("Headline"),
8
+ description: z.string().max(200).optional().describe("Body text"),
9
+ });
10
+ export default function BigNumber({ label, value, unit, headline, description }) {
11
+ return (_jsx("div", { className: "slide", style: { display: "flex", alignItems: "center", justifyContent: "center", background: "#ffffff" }, children: _jsxs("div", { className: "stack-center", style: { gap: 20, maxWidth: 800, marginBottom: 32 }, children: [label && (_jsx("span", { style: {
12
+ fontSize: 17,
13
+ fontWeight: 600,
14
+ letterSpacing: "-0.022em",
15
+ color: "var(--color-primary)",
16
+ }, children: label })), _jsxs("div", { style: { display: "flex", alignItems: "baseline", gap: 8 }, children: [_jsx("span", { style: {
17
+ fontSize: 120,
18
+ fontWeight: 600,
19
+ fontFamily: "var(--font-heading)",
20
+ lineHeight: 1,
21
+ letterSpacing: "-0.025em",
22
+ color: "var(--color-foreground)",
23
+ }, children: value }), unit && (_jsx("span", { style: {
24
+ fontSize: 40,
25
+ fontWeight: 600,
26
+ fontFamily: "var(--font-heading)",
27
+ letterSpacing: "-0.009em",
28
+ color: "var(--color-muted-foreground)",
29
+ }, children: unit }))] }), _jsx("h3", { style: {
30
+ fontSize: 28,
31
+ fontWeight: 600,
32
+ lineHeight: 1.14,
33
+ letterSpacing: "0.007em",
34
+ }, children: headline }), description && (_jsx("p", { style: {
35
+ fontSize: 17,
36
+ fontWeight: 400,
37
+ lineHeight: 1.47,
38
+ letterSpacing: "-0.022em",
39
+ color: "var(--color-muted-foreground)",
40
+ maxWidth: 600,
41
+ textAlign: "center",
42
+ }, children: description }))] }) }));
43
+ }
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../patterns/big-number/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;IACxD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;CAClE,CAAC,CAAC;AAIH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAS;IACpF,OAAO,CACL,cAAK,SAAS,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,YACtH,eAAK,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,aAC9E,KAAK,IAAI,CACR,eACE,KAAK,EAAE;wBACL,QAAQ,EAAE,EAAE;wBACZ,UAAU,EAAE,GAAG;wBACf,aAAa,EAAE,UAAU;wBACzB,KAAK,EAAE,sBAAsB;qBAC9B,YAEA,KAAK,GACD,CACR,EAED,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,aAC7D,eACE,KAAK,EAAE;gCACL,QAAQ,EAAE,GAAG;gCACb,UAAU,EAAE,GAAG;gCACf,UAAU,EAAE,qBAAqB;gCACjC,UAAU,EAAE,CAAC;gCACb,aAAa,EAAE,UAAU;gCACzB,KAAK,EAAE,yBAAyB;6BACjC,YAEA,KAAK,GACD,EACN,IAAI,IAAI,CACP,eACE,KAAK,EAAE;gCACL,QAAQ,EAAE,EAAE;gCACZ,UAAU,EAAE,GAAG;gCACf,UAAU,EAAE,qBAAqB;gCACjC,aAAa,EAAE,UAAU;gCACzB,KAAK,EAAE,+BAA+B;6BACvC,YAEA,IAAI,GACA,CACR,IACG,EAEN,aACE,KAAK,EAAE;wBACL,QAAQ,EAAE,EAAE;wBACZ,UAAU,EAAE,GAAG;wBACf,UAAU,EAAE,IAAI;wBAChB,aAAa,EAAE,SAAS;qBACzB,YAEA,QAAQ,GACN,EAEJ,WAAW,IAAI,CACd,YACE,KAAK,EAAE;wBACL,QAAQ,EAAE,EAAE;wBACZ,UAAU,EAAE,GAAG;wBACf,UAAU,EAAE,IAAI;wBAChB,aAAa,EAAE,UAAU;wBACzB,KAAK,EAAE,+BAA+B;wBACtC,QAAQ,EAAE,GAAG;wBACb,SAAS,EAAE,QAAQ;qBACpB,YAEA,WAAW,GACV,CACL,IACG,GACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ export declare const schema: z.ZodObject<{
3
+ label: z.ZodOptional<z.ZodString>;
4
+ heading: z.ZodString;
5
+ center: z.ZodString;
6
+ nodes: z.ZodArray<z.ZodObject<{
7
+ id: z.ZodString;
8
+ title: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ title: string;
11
+ id: string;
12
+ }, {
13
+ title: string;
14
+ id: string;
15
+ }>, "many">;
16
+ explanations: z.ZodArray<z.ZodObject<{
17
+ id: z.ZodString;
18
+ title: z.ZodString;
19
+ items: z.ZodArray<z.ZodString, "many">;
20
+ }, "strip", z.ZodTypeAny, {
21
+ title: string;
22
+ items: string[];
23
+ id: string;
24
+ }, {
25
+ title: string;
26
+ items: string[];
27
+ id: string;
28
+ }>, "many">;
29
+ footer: z.ZodOptional<z.ZodString>;
30
+ }, "strip", z.ZodTypeAny, {
31
+ center: string;
32
+ heading: string;
33
+ nodes: {
34
+ title: string;
35
+ id: string;
36
+ }[];
37
+ explanations: {
38
+ title: string;
39
+ items: string[];
40
+ id: string;
41
+ }[];
42
+ label?: string | undefined;
43
+ footer?: string | undefined;
44
+ }, {
45
+ center: string;
46
+ heading: string;
47
+ nodes: {
48
+ title: string;
49
+ id: string;
50
+ }[];
51
+ explanations: {
52
+ title: string;
53
+ items: string[];
54
+ id: string;
55
+ }[];
56
+ label?: string | undefined;
57
+ footer?: string | undefined;
58
+ }>;
59
+ type Props = z.infer<typeof schema>;
60
+ export default function BodyMessage({ label, heading, center, nodes, explanations, footer, }: Props): import("react/jsx-runtime").JSX.Element;
61
+ export {};
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../patterns/body-message/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOjB,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAEpC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,YAAY,EACZ,MAAM,GACP,EAAE,KAAK,2CAyPP"}
@@ -0,0 +1,163 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { z } from "zod";
3
+ import { SlideHeader } from "../../components/index.js";
4
+ const nodeSchema = z.object({
5
+ id: z.string().min(1).max(3).describe("Node ID (A, B, C)"),
6
+ title: z.string().min(1).max(30).describe("Node title"),
7
+ });
8
+ const explanationSchema = z.object({
9
+ id: z.string().min(1).max(3).describe("Explanation ID matching node"),
10
+ title: z.string().min(1).max(30).describe("Explanation title"),
11
+ items: z.array(z.string()).min(1).max(5).describe("Detail points"),
12
+ });
13
+ export const schema = z.object({
14
+ label: z.string().min(1).max(30).optional().describe("Accent eyebrow"),
15
+ heading: z.string().min(1).max(60).describe("Section heading"),
16
+ center: z.string().min(1).max(40).describe("Central concept"),
17
+ nodes: z.array(nodeSchema).min(2).max(5).describe("Surrounding nodes"),
18
+ explanations: z.array(explanationSchema).min(2).max(5).describe("Explanations for each node"),
19
+ footer: z.string().min(1).max(100).optional().describe("Footer message"),
20
+ });
21
+ export default function BodyMessage({ label, heading, center, nodes, explanations, footer, }) {
22
+ // Position nodes around the center concept in a radial layout
23
+ const nodePositions = getNodePositions(nodes.length);
24
+ return (_jsxs("div", { className: "slide", style: {
25
+ display: "flex",
26
+ flexDirection: "column",
27
+ background: "var(--color-card-background)",
28
+ padding: "40px 60px",
29
+ gap: 20,
30
+ }, children: [_jsx(SlideHeader, { label: label, heading: heading }), _jsxs("div", { style: { display: "flex", gap: 32, flex: 1, minHeight: 0 }, children: [_jsxs("div", { style: {
31
+ width: "58%",
32
+ position: "relative",
33
+ display: "flex",
34
+ alignItems: "center",
35
+ justifyContent: "center",
36
+ }, children: [_jsx("div", { style: {
37
+ position: "absolute",
38
+ left: "50%",
39
+ top: "50%",
40
+ transform: "translate(-50%, -50%)",
41
+ backgroundColor: "var(--color-card-background)",
42
+ border: "2px solid var(--color-primary)",
43
+ borderRadius: 16,
44
+ padding: "20px 28px",
45
+ textAlign: "center",
46
+ zIndex: 2,
47
+ boxShadow: "4px 4px 12px rgba(0,0,0,0.06)",
48
+ }, children: _jsx("span", { style: {
49
+ fontSize: 19,
50
+ fontWeight: 600,
51
+ fontFamily: "var(--font-heading)",
52
+ letterSpacing: "-0.022em",
53
+ color: "var(--color-foreground)",
54
+ lineHeight: 1.3,
55
+ }, children: center }) }), nodes.map((node, i) => {
56
+ const pos = nodePositions[i];
57
+ return (_jsxs("div", { style: {
58
+ position: "absolute",
59
+ left: `${pos.x}%`,
60
+ top: `${pos.y}%`,
61
+ transform: "translate(-50%, -50%)",
62
+ backgroundColor: "var(--color-muted)",
63
+ borderRadius: 12,
64
+ padding: "12px 18px",
65
+ textAlign: "center",
66
+ zIndex: 1,
67
+ minWidth: 100,
68
+ }, children: [_jsx("span", { style: {
69
+ fontSize: 12,
70
+ fontWeight: 600,
71
+ fontFamily: "var(--font-heading)",
72
+ color: "var(--color-primary)",
73
+ display: "block",
74
+ marginBottom: 2,
75
+ }, children: node.id }), _jsx("span", { style: {
76
+ fontSize: 14,
77
+ fontWeight: 600,
78
+ fontFamily: "var(--font-heading)",
79
+ letterSpacing: "-0.016em",
80
+ color: "var(--color-foreground)",
81
+ lineHeight: 1.3,
82
+ }, children: node.title })] }, i));
83
+ }), _jsx("svg", { style: {
84
+ position: "absolute",
85
+ left: 0,
86
+ top: 0,
87
+ width: "100%",
88
+ height: "100%",
89
+ zIndex: 0,
90
+ overflow: "visible",
91
+ }, viewBox: "0 0 100 100", preserveAspectRatio: "none", children: nodes.map((_, i) => {
92
+ const pos = nodePositions[i];
93
+ return (_jsx("line", { x1: "50", y1: "50", x2: pos.x, y2: pos.y, stroke: "var(--color-border)", strokeWidth: "0.4", strokeDasharray: "1,1" }, i));
94
+ }) })] }), _jsx("div", { style: {
95
+ width: "42%",
96
+ display: "flex",
97
+ flexDirection: "column",
98
+ justifyContent: "center",
99
+ gap: 16,
100
+ }, children: explanations.map((exp, i) => (_jsxs("div", { style: {
101
+ display: "flex",
102
+ flexDirection: "column",
103
+ gap: 6,
104
+ }, children: [_jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [_jsx("span", { style: {
105
+ fontSize: 13,
106
+ fontWeight: 600,
107
+ fontFamily: "var(--font-heading)",
108
+ color: "var(--color-primary)",
109
+ backgroundColor: "var(--color-background)",
110
+ borderRadius: 6,
111
+ padding: "2px 8px",
112
+ lineHeight: 1.4,
113
+ }, children: exp.id }), _jsx("span", { style: {
114
+ fontSize: 17,
115
+ fontWeight: 600,
116
+ fontFamily: "var(--font-heading)",
117
+ letterSpacing: "-0.022em",
118
+ color: "var(--color-foreground)",
119
+ lineHeight: 1.3,
120
+ }, children: exp.title })] }), _jsx("ul", { style: {
121
+ listStyle: "none",
122
+ margin: 0,
123
+ padding: 0,
124
+ display: "flex",
125
+ flexDirection: "column",
126
+ gap: 4,
127
+ paddingLeft: 4,
128
+ }, children: exp.items.map((item, j) => (_jsxs("li", { style: {
129
+ fontSize: 14,
130
+ fontWeight: 400,
131
+ fontFamily: "var(--font-body)",
132
+ letterSpacing: "-0.016em",
133
+ lineHeight: 1.43,
134
+ color: "var(--color-muted-foreground)",
135
+ paddingLeft: 14,
136
+ position: "relative",
137
+ }, children: [_jsx("span", { style: {
138
+ position: "absolute",
139
+ left: 0,
140
+ top: 0,
141
+ color: "var(--color-muted-foreground)",
142
+ }, children: "\u2022" }), item] }, j))) })] }, i))) })] }), footer && (_jsx("div", { style: { textAlign: "center" }, children: _jsx("span", { style: {
143
+ fontSize: 14,
144
+ fontWeight: 400,
145
+ fontFamily: "var(--font-body)",
146
+ letterSpacing: "-0.016em",
147
+ color: "var(--color-muted-foreground)",
148
+ lineHeight: 1.43,
149
+ }, children: footer }) }))] }));
150
+ }
151
+ /** Compute radial positions (%) for nodes around center (50,50) */
152
+ function getNodePositions(count) {
153
+ const radius = 36;
154
+ const startAngle = -Math.PI / 2; // Start from top
155
+ return Array.from({ length: count }, (_, i) => {
156
+ const angle = startAngle + (2 * Math.PI * i) / count;
157
+ return {
158
+ x: 50 + radius * Math.cos(angle),
159
+ y: 50 + radius * Math.sin(angle),
160
+ };
161
+ });
162
+ }
163
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../patterns/body-message/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ export declare const schema: z.ZodObject<{
3
+ label: z.ZodOptional<z.ZodString>;
4
+ heading: z.ZodString;
5
+ items: z.ZodArray<z.ZodObject<{
6
+ title: z.ZodString;
7
+ description: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ title: string;
10
+ description?: string | undefined;
11
+ }, {
12
+ title: string;
13
+ description?: string | undefined;
14
+ }>, "many">;
15
+ }, "strip", z.ZodTypeAny, {
16
+ heading: string;
17
+ items: {
18
+ title: string;
19
+ description?: string | undefined;
20
+ }[];
21
+ label?: string | undefined;
22
+ }, {
23
+ heading: string;
24
+ items: {
25
+ title: string;
26
+ description?: string | undefined;
27
+ }[];
28
+ label?: string | undefined;
29
+ }>;
30
+ type Props = z.infer<typeof schema>;
31
+ export default function BulletList({ label, heading, items }: Props): import("react/jsx-runtime").JSX.Element;
32
+ export {};
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../patterns/bullet-list/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIjB,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAEpC,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,2CAoHlE"}
@@ -0,0 +1,72 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { z } from "zod";
3
+ const itemSchema = z.object({
4
+ title: z.string().min(1).describe("Item title"),
5
+ description: z.string().optional().describe("Item description"),
6
+ });
7
+ export const schema = z.object({
8
+ label: z.string().min(1).max(30).optional().describe("Accent eyebrow"),
9
+ heading: z.string().min(1).max(80).describe("Section heading"),
10
+ items: z.array(itemSchema).min(2).max(6).describe("List items"),
11
+ });
12
+ export default function BulletList({ label, heading, items }) {
13
+ return (_jsxs("div", { className: "slide", style: {
14
+ display: "flex",
15
+ background: "#ffffff",
16
+ overflow: "hidden",
17
+ }, children: [_jsxs("div", { style: {
18
+ width: "40%",
19
+ padding: "60px 48px 60px 80px",
20
+ display: "flex",
21
+ flexDirection: "column",
22
+ justifyContent: "center",
23
+ gap: 8,
24
+ }, children: [label && (_jsx("span", { style: {
25
+ fontSize: 17,
26
+ fontWeight: 600,
27
+ letterSpacing: "-0.022em",
28
+ color: "var(--color-primary)",
29
+ }, children: label })), _jsx("h2", { style: {
30
+ fontSize: 40,
31
+ fontWeight: 600,
32
+ lineHeight: 1.1,
33
+ letterSpacing: "-0.009em",
34
+ }, children: heading })] }), _jsx("div", { style: {
35
+ flex: 1,
36
+ padding: "60px 80px 60px 0",
37
+ display: "flex",
38
+ flexDirection: "column",
39
+ justifyContent: "center",
40
+ }, children: items.map((item, i) => (_jsxs("div", { style: {
41
+ display: "flex",
42
+ alignItems: "baseline",
43
+ gap: 16,
44
+ padding: "14px 0",
45
+ borderBottom: i < items.length - 1
46
+ ? "1px solid rgba(0,0,0,0.08)"
47
+ : "none",
48
+ }, children: [_jsx("span", { style: {
49
+ fontSize: 14,
50
+ fontWeight: 600,
51
+ fontFamily: "var(--font-heading)",
52
+ color: "var(--color-muted-foreground)",
53
+ letterSpacing: "-0.016em",
54
+ minWidth: 24,
55
+ flexShrink: 0,
56
+ }, children: String(i + 1).padStart(2, "0") }), _jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 4 }, children: [_jsx("span", { style: {
57
+ fontSize: 19,
58
+ fontWeight: 600,
59
+ fontFamily: "var(--font-heading)",
60
+ letterSpacing: "0.012em",
61
+ color: "var(--color-foreground)",
62
+ lineHeight: 1.37,
63
+ }, children: item.title }), item.description && (_jsx("span", { style: {
64
+ fontSize: 15,
65
+ fontWeight: 400,
66
+ fontFamily: "var(--font-body)",
67
+ letterSpacing: "-0.022em",
68
+ color: "var(--color-muted-foreground)",
69
+ lineHeight: 1.47,
70
+ }, children: item.description }))] })] }, i))) })] }));
71
+ }
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../patterns/bullet-list/index.tsx"],"names":[],"mappings":"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"}