@salesmind-ai/design-system 0.7.0 → 1.0.0

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.
@@ -1,40 +1,20 @@
1
1
  import { useAppearance } from './chunk-MBAG654R.js';
2
- import React from 'react';
3
- import clsx2 from 'clsx';
4
- import { jsxs, jsx } from 'react/jsx-runtime';
5
2
  import { Sun, Moon } from 'lucide-react';
3
+ import clsx from 'clsx';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+ import React from 'react';
6
6
 
7
- var VoidBackground = React.forwardRef(
8
- ({ showGrid = true, showGrain = true, className, children }, ref) => {
9
- if (process.env.NODE_ENV !== "production") {
10
- console.warn(
11
- "VoidBackground is deprecated since v2; use AuroraVoid from @salesmind-ai/design-system. Will be removed in v3."
12
- );
13
- }
14
- return /* @__PURE__ */ jsxs("div", { ref, className: clsx2("void", className), children: [
15
- /* @__PURE__ */ jsx("div", { className: "void__base", "aria-hidden": "true" }),
16
- /* @__PURE__ */ jsxs("div", { className: "void__orbs", "aria-hidden": "true", children: [
17
- /* @__PURE__ */ jsx("div", { className: "void__orb void__orb--warm" }),
18
- /* @__PURE__ */ jsx("div", { className: "void__orb void__orb--purple" })
19
- ] }),
20
- showGrid && /* @__PURE__ */ jsx("div", { className: "void__grid", "aria-hidden": "true" }),
21
- showGrain && /* @__PURE__ */ jsx("div", { className: "void__grain", "aria-hidden": "true" }),
22
- children && /* @__PURE__ */ jsx("div", { className: "void__content", children })
23
- ] });
24
- }
25
- );
26
- VoidBackground.displayName = "VoidBackground";
27
7
  var ThemeSelector = ({ className, style }) => {
28
8
  const { theme, setTheme } = useAppearance();
29
9
  const handleThemeChange = (newTheme) => {
30
10
  setTheme(newTheme);
31
11
  };
32
- return /* @__PURE__ */ jsxs("div", { className: clsx2("ds-theme-selector", className), style, role: "group", "aria-label": "Theme Selector", children: [
12
+ return /* @__PURE__ */ jsxs("div", { className: clsx("ds-theme-selector", className), style, role: "group", "aria-label": "Theme Selector", children: [
33
13
  /* @__PURE__ */ jsxs(
34
14
  "button",
35
15
  {
36
16
  type: "button",
37
- className: clsx2("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "light" }),
17
+ className: clsx("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "light" }),
38
18
  onClick: () => handleThemeChange("light"),
39
19
  "aria-pressed": theme === "light",
40
20
  children: [
@@ -47,7 +27,7 @@ var ThemeSelector = ({ className, style }) => {
47
27
  "button",
48
28
  {
49
29
  type: "button",
50
- className: clsx2("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "light-contrast" }),
30
+ className: clsx("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "light-contrast" }),
51
31
  onClick: () => handleThemeChange("light-contrast"),
52
32
  "aria-pressed": theme === "light-contrast",
53
33
  children: [
@@ -60,7 +40,7 @@ var ThemeSelector = ({ className, style }) => {
60
40
  "button",
61
41
  {
62
42
  type: "button",
63
- className: clsx2("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "dark" }),
43
+ className: clsx("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "dark" }),
64
44
  onClick: () => handleThemeChange("dark"),
65
45
  "aria-pressed": theme === "dark",
66
46
  children: [
@@ -73,7 +53,7 @@ var ThemeSelector = ({ className, style }) => {
73
53
  "button",
74
54
  {
75
55
  type: "button",
76
- className: clsx2("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "dark-contrast" }),
56
+ className: clsx("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "dark-contrast" }),
77
57
  onClick: () => handleThemeChange("dark-contrast"),
78
58
  "aria-pressed": theme === "dark-contrast",
79
59
  children: [
@@ -96,7 +76,7 @@ var ColorPicker = React.forwardRef(
96
76
  "div",
97
77
  {
98
78
  ref,
99
- className: clsx2("ds-color-picker", className),
79
+ className: clsx("ds-color-picker", className),
100
80
  style,
101
81
  role: "group",
102
82
  "aria-label": "Brand Color",
@@ -105,7 +85,7 @@ var ColorPicker = React.forwardRef(
105
85
  "button",
106
86
  {
107
87
  type: "button",
108
- className: clsx2("ds-color-picker__swatch", {
88
+ className: clsx("ds-color-picker__swatch", {
109
89
  "ds-color-picker__swatch--active": brand === value
110
90
  }),
111
91
  onClick: () => setBrand(value),
@@ -125,7 +105,7 @@ var ColorPicker = React.forwardRef(
125
105
  !hideCustom && /* @__PURE__ */ jsxs(
126
106
  "label",
127
107
  {
128
- className: clsx2("ds-color-picker__swatch", "ds-color-picker__swatch--custom", {
108
+ className: clsx("ds-color-picker__swatch", "ds-color-picker__swatch--custom", {
129
109
  "ds-color-picker__swatch--active": brand === "custom"
130
110
  }),
131
111
  title: `Custom: ${customColor}`,
@@ -157,6 +137,6 @@ var ColorPicker = React.forwardRef(
157
137
  );
158
138
  ColorPicker.displayName = "ColorPicker";
159
139
 
160
- export { ColorPicker, ThemeSelector, VoidBackground };
140
+ export { ColorPicker, ThemeSelector };
161
141
  //# sourceMappingURL=out.js.map
162
- //# sourceMappingURL=chunk-27Y5ESMM.js.map
142
+ //# sourceMappingURL=chunk-VFO2MUPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ThemeSelector/ThemeSelector.tsx","../src/components/ColorPicker/ColorPicker.tsx"],"names":["clsx","jsx","jsxs"],"mappings":";;;;;AACA,SAAS,KAAK,YAAY;AAC1B,OAAO,UAAU;AAkBL,SAMI,KANJ;AATL,IAAM,gBAA8C,CAAC,EAAE,WAAW,MAAM,MAAM;AACjF,QAAM,EAAE,OAAO,SAAS,IAAI,cAAc;AAE1C,QAAM,oBAAoB,CAAC,aAAoB;AAC3C,aAAS,QAAQ;AAAA,EACrB;AAEA,SACI,qBAAC,SAAI,WAAW,KAAK,qBAAqB,SAAS,GAAG,OAAc,MAAK,SAAQ,cAAW,kBACxF;AAAA;AAAA,MAAC;AAAA;AAAA,QACG,MAAK;AAAA,QACL,WAAW,KAAK,0BAA0B,EAAE,kCAAkC,UAAU,QAAQ,CAAC;AAAA,QACjG,SAAS,MAAM,kBAAkB,OAAO;AAAA,QACxC,gBAAc,UAAU;AAAA,QAExB;AAAA,8BAAC,OAAI,WAAU,2BAA0B;AAAA,UACzC,oBAAC,UAAK,WAAU,4BAA2B,mBAAK;AAAA;AAAA;AAAA,IACpD;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACG,MAAK;AAAA,QACL,WAAW,KAAK,0BAA0B,EAAE,kCAAkC,UAAU,iBAAiB,CAAC;AAAA,QAC1G,SAAS,MAAM,kBAAkB,gBAAgB;AAAA,QACjD,gBAAc,UAAU;AAAA,QAExB;AAAA,8BAAC,OAAI,WAAU,2BAA0B;AAAA,UACzC,oBAAC,UAAK,WAAU,4BAA2B,sBAAQ;AAAA;AAAA;AAAA,IACvD;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACG,MAAK;AAAA,QACL,WAAW,KAAK,0BAA0B,EAAE,kCAAkC,UAAU,OAAO,CAAC;AAAA,QAChG,SAAS,MAAM,kBAAkB,MAAM;AAAA,QACvC,gBAAc,UAAU;AAAA,QAExB;AAAA,8BAAC,QAAK,WAAU,2BAA0B;AAAA,UAC1C,oBAAC,UAAK,WAAU,4BAA2B,kBAAI;AAAA;AAAA;AAAA,IACnD;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACG,MAAK;AAAA,QACL,WAAW,KAAK,0BAA0B,EAAE,kCAAkC,UAAU,gBAAgB,CAAC;AAAA,QACzG,SAAS,MAAM,kBAAkB,eAAe;AAAA,QAChD,gBAAc,UAAU;AAAA,QAExB;AAAA,8BAAC,QAAK,WAAU,2BAA0B;AAAA,UAC1C,oBAAC,UAAK,WAAU,4BAA2B,qBAAO;AAAA;AAAA;AAAA,IACtD;AAAA,KACJ;AAER;AAEA,cAAc,cAAc;;;AC/D5B,OAAO,WAAW;AAClB,OAAOA,WAAU;AAsDL,gBAAAC,MASF,QAAAC,aATE;AAjDZ,IAAM,gBAAkE;AAAA,EACtE,EAAE,OAAO,WAAW,OAAO,qBAAqB,OAAO,UAAU;AAAA,EACjE,EAAE,OAAO,aAAa,OAAO,aAAa,OAAO,UAAU;AAC7D;AAsBO,IAAM,cAAc,MAAM;AAAA,EAC/B,CAAC,EAAE,WAAW,OAAO,aAAa,MAAM,GAAG,QAAQ;AACjD,UAAM,EAAE,OAAO,UAAU,aAAa,eAAe,IAAI,cAAc;AAEvE,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAWF,MAAK,mBAAmB,SAAS;AAAA,QAC5C;AAAA,QACA,MAAK;AAAA,QACL,cAAW;AAAA,QAEV;AAAA,wBAAc,IAAI,CAAC,EAAE,OAAO,OAAO,MAAM,MACxC,gBAAAC;AAAA,YAAC;AAAA;AAAA,cAEC,MAAK;AAAA,cACL,WAAWD,MAAK,2BAA2B;AAAA,gBACzC,mCAAmC,UAAU;AAAA,cAC/C,CAAC;AAAA,cACD,SAAS,MAAM,SAAS,KAAK;AAAA,cAC7B,cAAY,aAAa,KAAK;AAAA,cAC9B,gBAAc,UAAU;AAAA,cACxB,OAAO;AAAA,cAEP,0BAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO,EAAE,kBAAkB,MAAM;AAAA;AAAA,cACnC;AAAA;AAAA,YAbK;AAAA,UAcP,CACD;AAAA,UAGA,CAAC,cACA,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,WAAWF,MAAK,2BAA2B,mCAAmC;AAAA,gBAC5E,mCAAmC,UAAU;AAAA,cAC/C,CAAC;AAAA,cACD,OAAO,WAAW,WAAW;AAAA,cAE7B;AAAA,gCAAAC;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO,EAAE,kBAAkB,YAAY;AAAA;AAAA,gBACzC;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,OAAO;AAAA,oBACP,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,oBAC9C,WAAU;AAAA,oBACV,cAAW;AAAA;AAAA,gBACb;AAAA;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc","sourcesContent":["import React from 'react';\nimport { Sun, Moon } from 'lucide-react';\nimport clsx from 'clsx';\nimport { useAppearance, Theme } from '../../theme/AppearanceProvider';\nimport './ThemeSelector.css';\n\nexport interface ThemeSelectorProps {\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const ThemeSelector: React.FC<ThemeSelectorProps> = ({ className, style }) => {\n const { theme, setTheme } = useAppearance();\n\n const handleThemeChange = (newTheme: Theme) => {\n setTheme(newTheme);\n };\n\n return (\n <div className={clsx('ds-theme-selector', className)} style={style} role=\"group\" aria-label=\"Theme Selector\">\n <button\n type=\"button\"\n className={clsx('ds-theme-selector__btn', { 'ds-theme-selector__btn--active': theme === 'light' })}\n onClick={() => handleThemeChange('light')}\n aria-pressed={theme === 'light'}\n >\n <Sun className=\"ds-theme-selector__icon\" />\n <span className=\"ds-theme-selector__label\">Light</span>\n </button>\n\n <button\n type=\"button\"\n className={clsx('ds-theme-selector__btn', { 'ds-theme-selector__btn--active': theme === 'light-contrast' })}\n onClick={() => handleThemeChange('light-contrast')}\n aria-pressed={theme === 'light-contrast'}\n >\n <Sun className=\"ds-theme-selector__icon\" />\n <span className=\"ds-theme-selector__label\">Light HC</span>\n </button>\n\n <button\n type=\"button\"\n className={clsx('ds-theme-selector__btn', { 'ds-theme-selector__btn--active': theme === 'dark' })}\n onClick={() => handleThemeChange('dark')}\n aria-pressed={theme === 'dark'}\n >\n <Moon className=\"ds-theme-selector__icon\" />\n <span className=\"ds-theme-selector__label\">Dark</span>\n </button>\n\n <button\n type=\"button\"\n className={clsx('ds-theme-selector__btn', { 'ds-theme-selector__btn--active': theme === 'dark-contrast' })}\n onClick={() => handleThemeChange('dark-contrast')}\n aria-pressed={theme === 'dark-contrast'}\n >\n <Moon className=\"ds-theme-selector__icon\" />\n <span className=\"ds-theme-selector__label\">Dark HC</span>\n </button>\n </div>\n );\n};\n\nThemeSelector.displayName = 'ThemeSelector';\n","import React from 'react';\nimport clsx from 'clsx';\nimport { useAppearance, Brand } from '../../theme/AppearanceProvider';\nimport './ColorPicker.css';\n\n/** Pre-configured brand presets shown as swatches. */\nconst BRAND_PRESETS: { value: Brand; label: string; color: string }[] = [\n { value: 'default', label: 'Warm Intelligence', color: '#f97316' },\n { value: 'salesmind', label: 'SalesMind', color: '#ff005a' },\n];\n\nexport interface ColorPickerProps {\n /** Additional CSS class name. */\n className?: string;\n /** Inline styles. */\n style?: React.CSSProperties;\n /**\n * Hide the custom color swatch and native color input.\n * When `true`, only the curated brand presets are shown.\n * Use this on production surfaces (e.g., marketing website footer)\n * where arbitrary custom colors would undermine brand consistency.\n * @default false\n */\n hideCustom?: boolean;\n}\n\n/**\n * Compact brand/accent color picker.\n * Renders preset brand swatches and an optional custom color input.\n * Consumes the `useAppearance()` context for state.\n */\nexport const ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n ({ className, style, hideCustom = false }, ref) => {\n const { brand, setBrand, customColor, setCustomColor } = useAppearance();\n\n return (\n <div\n ref={ref}\n className={clsx('ds-color-picker', className)}\n style={style}\n role=\"group\"\n aria-label=\"Brand Color\"\n >\n {BRAND_PRESETS.map(({ value, label, color }) => (\n <button\n key={value}\n type=\"button\"\n className={clsx('ds-color-picker__swatch', {\n 'ds-color-picker__swatch--active': brand === value,\n })}\n onClick={() => setBrand(value)}\n aria-label={`Switch to ${label} color scheme`}\n aria-pressed={brand === value}\n title={label}\n >\n <span\n className=\"ds-color-picker__dot\"\n style={{ '--swatch-color': color } as React.CSSProperties}\n />\n </button>\n ))}\n\n {/* Custom color — clicking the dot opens the native color picker */}\n {!hideCustom && (\n <label\n className={clsx('ds-color-picker__swatch', 'ds-color-picker__swatch--custom', {\n 'ds-color-picker__swatch--active': brand === 'custom',\n })}\n title={`Custom: ${customColor}`}\n >\n <span\n className=\"ds-color-picker__dot\"\n style={{ '--swatch-color': customColor } as React.CSSProperties}\n />\n <input\n type=\"color\"\n value={customColor}\n onChange={(e) => setCustomColor(e.target.value)}\n className=\"ds-color-picker__native-input\"\n aria-label=\"Pick a custom accent color\"\n />\n </label>\n )}\n </div>\n );\n },\n);\n\nColorPicker.displayName = 'ColorPicker';\n"]}
@@ -39,7 +39,7 @@ interface AuroraVoidProps {
39
39
  * - prefers-reduced-motion: kills animation, holds static composition
40
40
  *
41
41
  * @since v2
42
- * @replaces VoidBackground
42
+ * @since v2
43
43
  */
44
44
  declare const AuroraVoid: React__default.ForwardRefExoticComponent<AuroraVoidProps & React__default.RefAttributes<HTMLDivElement>>;
45
45
 
@@ -39,7 +39,7 @@ interface AuroraVoidProps {
39
39
  * - prefers-reduced-motion: kills animation, holds static composition
40
40
  *
41
41
  * @since v2
42
- * @replaces VoidBackground
42
+ * @since v2
43
43
  */
44
44
  declare const AuroraVoid: React__default.ForwardRefExoticComponent<AuroraVoidProps & React__default.RefAttributes<HTMLDivElement>>;
45
45
 
package/dist/index.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chunkOMP6FAZ6_cjs = require('./chunk-OMP6FAZ6.cjs');
4
4
  var chunkMQDEE7HC_cjs = require('./chunk-MQDEE7HC.cjs');
5
- var chunkR3ZECV5P_cjs = require('./chunk-R3ZECV5P.cjs');
5
+ var chunkFVSL5YMB_cjs = require('./chunk-FVSL5YMB.cjs');
6
6
  var chunkLUD52ZJF_cjs = require('./chunk-LUD52ZJF.cjs');
7
7
  var chunkEPD4ZEPY_cjs = require('./chunk-EPD4ZEPY.cjs');
8
8
  var chunkCVLD5RQK_cjs = require('./chunk-CVLD5RQK.cjs');
@@ -10,7 +10,7 @@ var chunk3NS6X2R4_cjs = require('./chunk-3NS6X2R4.cjs');
10
10
  var chunkNT4LBP7D_cjs = require('./chunk-NT4LBP7D.cjs');
11
11
  var chunkFXYOSA4E_cjs = require('./chunk-FXYOSA4E.cjs');
12
12
  var chunkUGKYP6F3_cjs = require('./chunk-UGKYP6F3.cjs');
13
- var chunkWE4QIIVN_cjs = require('./chunk-WE4QIIVN.cjs');
13
+ var chunk6BXKRDK5_cjs = require('./chunk-6BXKRDK5.cjs');
14
14
  var chunkJPUJWI7F_cjs = require('./chunk-JPUJWI7F.cjs');
15
15
  var chunk7EUR3AKV_cjs = require('./chunk-7EUR3AKV.cjs');
16
16
  var chunkDP74LUXG_cjs = require('./chunk-DP74LUXG.cjs');
@@ -438,15 +438,11 @@ Object.defineProperty(exports, "validateUtmField", {
438
438
  });
439
439
  Object.defineProperty(exports, "ColorPicker", {
440
440
  enumerable: true,
441
- get: function () { return chunkR3ZECV5P_cjs.ColorPicker; }
441
+ get: function () { return chunkFVSL5YMB_cjs.ColorPicker; }
442
442
  });
443
443
  Object.defineProperty(exports, "ThemeSelector", {
444
444
  enumerable: true,
445
- get: function () { return chunkR3ZECV5P_cjs.ThemeSelector; }
446
- });
447
- Object.defineProperty(exports, "VoidBackground", {
448
- enumerable: true,
449
- get: function () { return chunkR3ZECV5P_cjs.VoidBackground; }
445
+ get: function () { return chunkFVSL5YMB_cjs.ThemeSelector; }
450
446
  });
451
447
  Object.defineProperty(exports, "BREAKPOINTS", {
452
448
  enumerable: true,
@@ -742,111 +738,111 @@ Object.defineProperty(exports, "VideoLightbox", {
742
738
  });
743
739
  Object.defineProperty(exports, "ArchitectureDiagram", {
744
740
  enumerable: true,
745
- get: function () { return chunkWE4QIIVN_cjs.ArchitectureDiagram; }
741
+ get: function () { return chunk6BXKRDK5_cjs.ArchitectureDiagram; }
746
742
  });
747
743
  Object.defineProperty(exports, "AuroraVoid", {
748
744
  enumerable: true,
749
- get: function () { return chunkWE4QIIVN_cjs.AuroraVoid; }
745
+ get: function () { return chunk6BXKRDK5_cjs.AuroraVoid; }
750
746
  });
751
747
  Object.defineProperty(exports, "BeforeAfterBlock", {
752
748
  enumerable: true,
753
- get: function () { return chunkWE4QIIVN_cjs.BeforeAfterBlock; }
749
+ get: function () { return chunk6BXKRDK5_cjs.BeforeAfterBlock; }
754
750
  });
755
751
  Object.defineProperty(exports, "BookingEmbed", {
756
752
  enumerable: true,
757
- get: function () { return chunkWE4QIIVN_cjs.BookingEmbed; }
753
+ get: function () { return chunk6BXKRDK5_cjs.BookingEmbed; }
758
754
  });
759
755
  Object.defineProperty(exports, "CaseStudyCard", {
760
756
  enumerable: true,
761
- get: function () { return chunkWE4QIIVN_cjs.CaseStudyCard; }
757
+ get: function () { return chunk6BXKRDK5_cjs.CaseStudyCard; }
762
758
  });
763
759
  Object.defineProperty(exports, "ComparisonTable", {
764
760
  enumerable: true,
765
- get: function () { return chunkWE4QIIVN_cjs.ComparisonTable; }
761
+ get: function () { return chunk6BXKRDK5_cjs.ComparisonTable; }
766
762
  });
767
763
  Object.defineProperty(exports, "CompetitorDiff", {
768
764
  enumerable: true,
769
- get: function () { return chunkWE4QIIVN_cjs.CompetitorDiff; }
765
+ get: function () { return chunk6BXKRDK5_cjs.CompetitorDiff; }
770
766
  });
771
767
  Object.defineProperty(exports, "ComplianceGrid", {
772
768
  enumerable: true,
773
- get: function () { return chunkWE4QIIVN_cjs.ComplianceGrid; }
769
+ get: function () { return chunk6BXKRDK5_cjs.ComplianceGrid; }
774
770
  });
775
771
  Object.defineProperty(exports, "EcosystemDiagram", {
776
772
  enumerable: true,
777
- get: function () { return chunkWE4QIIVN_cjs.EcosystemDiagram; }
773
+ get: function () { return chunk6BXKRDK5_cjs.EcosystemDiagram; }
778
774
  });
779
775
  Object.defineProperty(exports, "EnterpriseSignaling", {
780
776
  enumerable: true,
781
- get: function () { return chunkWE4QIIVN_cjs.EnterpriseSignaling; }
777
+ get: function () { return chunk6BXKRDK5_cjs.EnterpriseSignaling; }
782
778
  });
783
779
  Object.defineProperty(exports, "EvolutionTimeline", {
784
780
  enumerable: true,
785
- get: function () { return chunkWE4QIIVN_cjs.EvolutionTimeline; }
781
+ get: function () { return chunk6BXKRDK5_cjs.EvolutionTimeline; }
786
782
  });
787
783
  Object.defineProperty(exports, "GridOverlay", {
788
784
  enumerable: true,
789
- get: function () { return chunkWE4QIIVN_cjs.GridOverlay; }
785
+ get: function () { return chunk6BXKRDK5_cjs.GridOverlay; }
790
786
  });
791
787
  Object.defineProperty(exports, "GuaranteeHighlight", {
792
788
  enumerable: true,
793
- get: function () { return chunkWE4QIIVN_cjs.GuaranteeHighlight; }
789
+ get: function () { return chunk6BXKRDK5_cjs.GuaranteeHighlight; }
794
790
  });
795
791
  Object.defineProperty(exports, "HeroComposition", {
796
792
  enumerable: true,
797
- get: function () { return chunkWE4QIIVN_cjs.HeroComposition; }
793
+ get: function () { return chunk6BXKRDK5_cjs.HeroComposition; }
798
794
  });
799
795
  Object.defineProperty(exports, "ICPFilter", {
800
796
  enumerable: true,
801
- get: function () { return chunkWE4QIIVN_cjs.ICPFilter; }
797
+ get: function () { return chunk6BXKRDK5_cjs.ICPFilter; }
802
798
  });
803
799
  Object.defineProperty(exports, "IntelligenceBlock", {
804
800
  enumerable: true,
805
- get: function () { return chunkWE4QIIVN_cjs.IntelligenceBlock; }
801
+ get: function () { return chunk6BXKRDK5_cjs.IntelligenceBlock; }
806
802
  });
807
803
  Object.defineProperty(exports, "IntentCTA", {
808
804
  enumerable: true,
809
- get: function () { return chunkWE4QIIVN_cjs.IntentCTA; }
805
+ get: function () { return chunk6BXKRDK5_cjs.IntentCTA; }
810
806
  });
811
807
  Object.defineProperty(exports, "KPIPanel", {
812
808
  enumerable: true,
813
- get: function () { return chunkWE4QIIVN_cjs.KPIPanel; }
809
+ get: function () { return chunk6BXKRDK5_cjs.KPIPanel; }
814
810
  });
815
811
  Object.defineProperty(exports, "ObjectionFAQ", {
816
812
  enumerable: true,
817
- get: function () { return chunkWE4QIIVN_cjs.ObjectionFAQ; }
813
+ get: function () { return chunk6BXKRDK5_cjs.ObjectionFAQ; }
818
814
  });
819
815
  Object.defineProperty(exports, "PartnerValueProp", {
820
816
  enumerable: true,
821
- get: function () { return chunkWE4QIIVN_cjs.PartnerValueProp; }
817
+ get: function () { return chunk6BXKRDK5_cjs.PartnerValueProp; }
822
818
  });
823
819
  Object.defineProperty(exports, "PricingCard", {
824
820
  enumerable: true,
825
- get: function () { return chunkWE4QIIVN_cjs.PricingCard; }
821
+ get: function () { return chunk6BXKRDK5_cjs.PricingCard; }
826
822
  });
827
823
  Object.defineProperty(exports, "ProblemAgitation", {
828
824
  enumerable: true,
829
- get: function () { return chunkWE4QIIVN_cjs.ProblemAgitation; }
825
+ get: function () { return chunk6BXKRDK5_cjs.ProblemAgitation; }
830
826
  });
831
827
  Object.defineProperty(exports, "ROICalculator", {
832
828
  enumerable: true,
833
- get: function () { return chunkWE4QIIVN_cjs.ROICalculator; }
829
+ get: function () { return chunk6BXKRDK5_cjs.ROICalculator; }
834
830
  });
835
831
  Object.defineProperty(exports, "SegmentSwitch", {
836
832
  enumerable: true,
837
- get: function () { return chunkWE4QIIVN_cjs.SegmentSwitch; }
833
+ get: function () { return chunk6BXKRDK5_cjs.SegmentSwitch; }
838
834
  });
839
835
  Object.defineProperty(exports, "StickyActionBar", {
840
836
  enumerable: true,
841
- get: function () { return chunkWE4QIIVN_cjs.StickyActionBar; }
837
+ get: function () { return chunk6BXKRDK5_cjs.StickyActionBar; }
842
838
  });
843
839
  Object.defineProperty(exports, "ValueAnchor", {
844
840
  enumerable: true,
845
- get: function () { return chunkWE4QIIVN_cjs.ValueAnchor; }
841
+ get: function () { return chunk6BXKRDK5_cjs.ValueAnchor; }
846
842
  });
847
843
  Object.defineProperty(exports, "Vignette", {
848
844
  enumerable: true,
849
- get: function () { return chunkWE4QIIVN_cjs.Vignette; }
845
+ get: function () { return chunk6BXKRDK5_cjs.Vignette; }
850
846
  });
851
847
  Object.defineProperty(exports, "Badge", {
852
848
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/GradientText/GradientText.tsx","../src/components/StatusBadge/StatusBadge.tsx","../src/components/Chip/Chip.tsx","../src/components/LeadNotification/LeadNotification.tsx","../src/components/MarkLockup/MarkLockup.tsx","../src/components/MarkLockup/_markSvg.tsx","../src/components/Logo/Logo.tsx","../src/components/FlowchartBadge/FlowchartBadge.tsx","../src/components/FlowchartConnector/FlowchartConnector.tsx","../src/components/FlowchartCard/FlowchartCard.tsx"],"names":["React","clsx","jsx","forwardRef","jsxs"],"mappings":"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","sourcesContent":["import React, { forwardRef } from 'react'\nimport clsx from 'clsx'\nimport './GradientText.css'\n\nexport type GradientPreset = 'brand' | 'rainbow' | 'sunset' | 'aurora-pink-gold' | 'aurora-plum-pink' | 'display-headline'\n\nexport interface GradientTextProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Gradient color preset. Default: 'brand' (SalesMind pink→gold) */\n gradient?: GradientPreset\n /** HTML element tag. Default: 'span' */\n as?: 'span' | 'em' | 'strong' | 'mark'\n children: React.ReactNode\n}\n\nconst GradientText = forwardRef<HTMLSpanElement, GradientTextProps>(\n ({ gradient = 'brand', as: Tag = 'span', className, children, ...props }, ref) => {\n return (\n <Tag\n ref={ref}\n className={clsx('ds-gradient-text', `ds-gradient-text--${gradient}`, className)}\n {...props}\n >\n {children}\n </Tag>\n )\n }\n)\nGradientText.displayName = 'GradientText'\n\nexport { GradientText }\n","import React from 'react';\nimport clsx from 'clsx';\nimport './StatusBadge.css';\n\n/** Semantic tone values shared across Badge, Chip, and StatusBadge. */\nexport type BadgeTone =\n | 'aurora-pink'\n | 'aurora-gold'\n | 'aurora-plum'\n | 'status-success'\n | 'status-warning'\n | 'status-error'\n | 'neutral';\n\nexport interface StatusBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * Semantic tone — maps to a colour family.\n * - `'aurora-pink'` / `'aurora-gold'` / `'aurora-plum'` — aurora colour tones\n * - `'status-success'` — green; used for \"Lead replied\", positive states\n * - `'status-warning'` — amber; used for \"Pending\", needs-attention states\n * - `'status-error'` — red; used for failure or critical states\n * - `'neutral'` — muted glass, no colour association\n * @default 'neutral'\n */\n tone?: BadgeTone;\n /**\n * When true, renders a small colour dot before the label.\n * Useful for \"online\" or state indicators.\n * @default false\n */\n dot?: boolean;\n}\n\n/**\n * StatusBadge — state indicator with optional dot and tone system.\n *\n * **Semantic distinction:**\n * - `Badge` = static metadata (e.g. \"NEW\", \"BETA\")\n * - `StatusBadge` = dynamic state indicator (success/warning/error/info)\n * - `Chip` = removable selection token\n *\n * @example\n * <StatusBadge tone=\"status-success\" dot>Lead replied</StatusBadge>\n * <StatusBadge tone=\"status-warning\">Pending</StatusBadge>\n */\nexport const StatusBadge = React.forwardRef<HTMLSpanElement, StatusBadgeProps>(\n ({ className, tone = 'neutral', dot = false, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={clsx(\n 'ds-status-badge',\n `ds-status-badge--${tone}`,\n dot && 'ds-status-badge--dot',\n className,\n )}\n {...props}\n >\n {dot && <span className=\"ds-status-badge__dot\" aria-hidden=\"true\" />}\n {children}\n </span>\n );\n },\n);\n\nStatusBadge.displayName = 'StatusBadge';\n","import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport './Chip.css';\n\nimport type { BadgeTone } from '../StatusBadge/StatusBadge';\n\nexport type { BadgeTone };\n\nexport interface ChipProps {\n /**\n * Display label of the chip.\n * @example 'KEEN: AURORA'\n */\n label: string;\n /**\n * Callback invoked when the dismiss (×) button is clicked.\n * When provided, a dismiss button is rendered.\n */\n onRemove?: () => void;\n /**\n * Semantic tone — maps to a colour family.\n * - `'aurora-pink'` / `'aurora-gold'` / `'aurora-plum'` — aurora palette\n * - `'status-success'` / `'status-warning'` / `'status-error'` — state colours\n * - `'neutral'` — muted glass (default)\n * @default 'neutral'\n */\n tone?: BadgeTone;\n /**\n * When true, the chip is non-interactive and shows reduced opacity.\n * @default false\n */\n disabled?: boolean;\n /**\n * Size variant.\n * - `'sm'` = compact pill, 0.6875rem text\n * - `'md'` = standard pill, 0.75rem text (default)\n * @default 'md'\n */\n size?: 'sm' | 'md';\n /** Additional CSS class names. */\n className?: string;\n}\n\n/**\n * Chip — removable selection token (filter pill).\n *\n * **Semantic distinction:**\n * - `Badge` = static metadata (e.g. \"NEW\", \"BETA\")\n * - `StatusBadge` = dynamic state indicator (success/warning/error)\n * - `Chip` = removable selection token with dismiss action\n *\n * @example\n * <Chip label=\"KEEN: AURORA\" tone=\"aurora-pink\" onRemove={() => remove('aurora')} />\n * <Chip label=\"Glass\" tone=\"neutral\" />\n */\nexport const Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n label,\n onRemove,\n tone = 'neutral',\n disabled = false,\n size = 'md',\n className,\n },\n ref,\n ) => {\n return (\n <span\n ref={ref}\n className={clsx(\n 'ds-chip',\n `ds-chip--${tone}`,\n `ds-chip--${size}`,\n disabled && 'ds-chip--disabled',\n className,\n )}\n aria-disabled={disabled || undefined}\n >\n <span className=\"ds-chip__label\">{label}</span>\n {onRemove && (\n <button\n type=\"button\"\n className=\"ds-chip__dismiss\"\n onClick={disabled ? undefined : onRemove}\n disabled={disabled}\n aria-label={`Remove ${label}`}\n >\n ×\n </button>\n )}\n </span>\n );\n },\n);\n\nChip.displayName = 'Chip';\n","import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { Card } from '../Card/Card';\nimport { StatusBadge } from '../StatusBadge/StatusBadge';\nimport { Button } from '../Button/Button';\nimport './LeadNotification.css';\n\n/* ============================================================================\n D7 — Fictional brands ONLY in demo data:\n Acme, Northwind, Examplco, Initech, Globex, Stark\n NEVER: Vercel, Stripe, Linear, Notion, Airbnb\n ============================================================================ */\n\nexport type LeadStatus = 'replied' | 'opened' | 'pending';\n\nexport interface LeadAction {\n /** Button label. */\n label: string;\n /** Callback invoked on click. */\n onClick: () => void;\n}\n\nexport interface LeadNotificationProps {\n /**\n * Lead first + last name.\n * @example 'Sarah Patel'\n */\n name?: string;\n /**\n * Lead company name. Use fictional brands only (D7: Acme, Northwind, Examplco, etc.)\n * @example 'Acme'\n */\n company?: string;\n /**\n * Quoted excerpt from the lead's reply.\n * @example 'This looks promising — can we hop on a 15-minute call this week?'\n */\n quote?: string;\n /**\n * Current lead status — determines StatusBadge tone and label.\n * - `'replied'` → success tone (\"Lead replied\")\n * - `'opened'` → warning tone (\"Email opened\")\n * - `'pending'` → neutral tone (\"Awaiting reply\")\n * @default 'replied'\n */\n status?: LeadStatus;\n /**\n * Primary CTA button (accept, schedule, etc.).\n * @default { label: 'Accept', onClick: noop }\n */\n primaryAction?: LeadAction;\n /**\n * Secondary CTA button (snooze, dismiss, etc.).\n * @default { label: 'Snooze 1h', onClick: noop }\n */\n secondaryAction?: LeadAction;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst noop = () => {};\n\nconst STATUS_CONFIG: Record<\n LeadStatus,\n { label: string; tone: 'status-success' | 'status-warning' | 'neutral' }\n> = {\n replied: { label: 'Lead replied', tone: 'status-success' },\n opened: { label: 'Email opened', tone: 'status-warning' },\n pending: { label: 'Awaiting reply', tone: 'neutral' },\n};\n\n/**\n * LeadNotification — hero notification card for an active lead reply.\n *\n * Composes Card v2 (tier=1, aurora=true) + StatusBadge + Button v2.\n * Fictional demo brands only (D7): Acme, Northwind, Examplco, Initech, Globex.\n *\n * @example\n * <LeadNotification\n * name=\"Sarah Patel\"\n * company=\"Acme\"\n * quote=\"This looks promising — can we hop on a 15-minute call?\"\n * status=\"replied\"\n * primaryAction={{ label: 'Accept', onClick: handleAccept }}\n * secondaryAction={{ label: 'Snooze 1h', onClick: handleSnooze }}\n * />\n */\nexport const LeadNotification = forwardRef<HTMLDivElement, LeadNotificationProps>(\n (\n {\n name = 'Sarah Patel',\n company = 'Acme',\n quote = 'This looks promising — can we hop on a 15-minute call this week?',\n status = 'replied',\n primaryAction = { label: 'Accept', onClick: noop },\n secondaryAction = { label: 'Snooze 1h', onClick: noop },\n className,\n },\n ref,\n ) => {\n const { label: statusLabel, tone } = STATUS_CONFIG[status];\n\n return (\n <Card\n ref={ref}\n tier={1}\n aurora\n radius=\"card\"\n className={clsx('ds-lead-notification', className)}\n >\n {/* Status indicator row */}\n <div className=\"ds-lead-notification__status\">\n <StatusBadge tone={tone} dot>\n {statusLabel}\n </StatusBadge>\n </div>\n\n {/* Headline */}\n <h3 className=\"ds-lead-notification__headline\">\n <span className=\"ds-lead-notification__name\">{name}</span>\n {' from '}\n <span className=\"ds-lead-notification__company\">{company}</span>\n </h3>\n\n {/* Quote */}\n <blockquote className=\"ds-lead-notification__quote\">\n &ldquo;{quote}&rdquo;\n </blockquote>\n\n {/* Actions */}\n <div className=\"ds-lead-notification__actions\">\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={primaryAction.onClick}\n >\n {primaryAction.label}\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </Button>\n </div>\n </Card>\n );\n },\n);\n\nLeadNotification.displayName = 'LeadNotification';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithRef } from 'react';\nimport clsx from 'clsx';\nimport { MarkSvg, MARK_SIZES } from './_markSvg';\nimport './MarkLockup.css';\n\nexport interface MarkLockupOwnProps {\n /**\n * Size scale of the lockup.\n * - `'sm'` = 20px ellipse mark, 14px wordmark\n * - `'md'` = 28px ellipse mark, 16px wordmark (default)\n * - `'lg'` = 40px ellipse mark, 18px wordmark\n * @default 'md'\n */\n size?: keyof typeof MARK_SIZES;\n /**\n * When true, renders the wordmark in light colour (--text-primary at full opacity).\n * Use on aurora-gradient or dark backgrounds.\n * @default false\n */\n inverted?: boolean;\n /** Additional CSS class names. */\n className?: string;\n}\n\n// Merge own props with HTML div attributes\nexport type MarkLockupProps = MarkLockupOwnProps &\n Omit<ComponentPropsWithRef<'div'>, keyof MarkLockupOwnProps>;\n\n\n/**\n * MarkLockup — SalesMind AI brand mark + wordmark.\n *\n * Renders an inline SVG ellipse mark (aurora-pink → aurora-gold gradient)\n * alongside the \"SalesMind AI\" wordmark in Anton (--font-family-display).\n *\n * @example\n * <MarkLockup />\n * <MarkLockup size=\"lg\" inverted />\n */\nexport const MarkLockup = forwardRef<HTMLDivElement, MarkLockupProps>(\n ({ size = 'md', inverted = false, className, ...props }, ref) => {\n const gradientId = `aurora-mark-gradient-${size}`;\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'ds-mark-lockup',\n `ds-mark-lockup--${size}`,\n inverted && 'ds-mark-lockup--inverted',\n className,\n )}\n {...props}\n >\n <MarkSvg size={size} gradientId={gradientId} className=\"ds-mark-lockup__mark\" />\n {/* Wordmark */}\n <span className=\"ds-mark-lockup__wordmark\">SalesMind AI</span>\n </div>\n );\n },\n);\n\nMarkLockup.displayName = 'MarkLockup';\n","/**\n * _markSvg — internal shared SVG ellipse mark.\n *\n * Single source of truth for the SalesMind AI aurora ellipse mark.\n * Used by MarkLockup and Logo to avoid duplication.\n *\n * @internal — not exported from the barrel; import via relative path only.\n */\n\nexport const MARK_SIZES = {\n sm: 20,\n md: 28,\n lg: 40,\n} as const;\n\nexport type MarkSize = keyof typeof MARK_SIZES;\n\nexport interface MarkSvgProps {\n size: MarkSize;\n /** Unique SVG gradient id — caller is responsible for uniqueness in the page. */\n gradientId: string;\n /** Gradient start colour (stop 0%). Defaults to aurora-pink-raw. */\n stopStart?: string;\n /** Gradient end colour (stop 100%). Defaults to aurora-gold-raw. */\n stopEnd?: string;\n className?: string;\n}\n\n/**\n * MarkSvg — the aurora ellipse SVG mark with a configurable linear gradient.\n */\nexport function MarkSvg({\n size,\n gradientId,\n stopStart = 'var(--aurora-pink-raw)',\n stopEnd = 'var(--aurora-gold-raw)',\n className,\n}: MarkSvgProps) {\n const markSize = MARK_SIZES[size];\n return (\n <svg\n className={className}\n width={markSize}\n height={markSize}\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <defs>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={stopStart} />\n <stop offset=\"100%\" stopColor={stopEnd} />\n </linearGradient>\n </defs>\n {/* Ellipse mark — aurora-pink to aurora-gold diagonal */}\n <ellipse\n cx=\"20\"\n cy=\"20\"\n rx=\"18\"\n ry=\"14\"\n fill={`url(#${gradientId})`}\n transform=\"rotate(-20 20 20)\"\n />\n </svg>\n );\n}\n","import { forwardRef } from 'react';\nimport type { HTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport { MarkSvg } from '../MarkLockup/_markSvg';\nimport './Logo.css';\n\nexport type LogoVariant = 'mark-only' | 'wordmark-only' | 'lockup';\nexport type LogoTone = 'aurora' | 'mono-light' | 'mono-dark';\nexport type LogoSize = 'sm' | 'md' | 'lg';\n\nexport interface LogoOwnProps {\n /**\n * Visual variant.\n * - `'lockup'` — mark + wordmark side by side (default)\n * - `'mark-only'` — aurora ellipse mark alone\n * - `'wordmark-only'` — \"SalesMind AI\" text alone\n * @default 'lockup'\n */\n variant?: LogoVariant;\n /**\n * Colour tone for surface adaptation.\n * - `'aurora'` — coloured aurora gradient mark, dark wordmark (default)\n * - `'mono-light'` — white mark + white wordmark (for dark/coloured backgrounds)\n * - `'mono-dark'` — dark-tone mark + dark wordmark (for light backgrounds)\n * @default 'aurora'\n */\n tone?: LogoTone;\n /**\n * Size scale.\n * - `'sm'` = 20px mark, 14px wordmark\n * - `'md'` = 28px mark, 16px wordmark (default)\n * - `'lg'` = 40px mark, 18px wordmark\n * @default 'md'\n */\n size?: LogoSize;\n /** Additional CSS class names. */\n className?: string;\n}\n\nexport type LogoProps = LogoOwnProps &\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof LogoOwnProps>;\n\nconst MARK_COLORS: Record<LogoTone, { stopStart: string; stopEnd: string }> = {\n aurora: {\n stopStart: 'var(--aurora-pink-raw)',\n stopEnd: 'var(--aurora-gold-raw)',\n },\n 'mono-light': {\n stopStart: 'rgba(255, 255, 255, 0.95)',\n stopEnd: 'rgba(255, 255, 255, 0.75)',\n },\n 'mono-dark': {\n stopStart: 'var(--text-primary)',\n stopEnd: 'var(--aurora-plum-raw)',\n },\n};\n\n/**\n * Logo — SalesMind AI brand identity component.\n *\n * Composes the aurora ellipse mark and/or \"SalesMind AI\" wordmark.\n * Uses the same mark SVG as MarkLockup (single source of truth).\n *\n * @example\n * <Logo />\n * <Logo variant=\"mark-only\" size=\"lg\" />\n * <Logo variant=\"wordmark-only\" tone=\"mono-light\" />\n */\nexport const Logo = forwardRef<HTMLDivElement, LogoProps>(\n ({ variant = 'lockup', tone = 'aurora', size = 'md', className, ...props }, ref) => {\n const gradientId = `logo-mark-gradient-${size}-${tone}`;\n const colors = MARK_COLORS[tone];\n const showMark = variant === 'lockup' || variant === 'mark-only';\n const showWordmark = variant === 'lockup' || variant === 'wordmark-only';\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'ds-logo',\n `ds-logo--${variant}`,\n `ds-logo--tone-${tone}`,\n `ds-logo--${size}`,\n className,\n )}\n {...props}\n >\n {showMark && (\n <MarkSvg\n size={size}\n gradientId={gradientId}\n stopStart={colors.stopStart}\n stopEnd={colors.stopEnd}\n className=\"ds-logo__mark\"\n />\n )}\n {showWordmark && (\n <span className=\"ds-logo__wordmark\">SalesMind AI</span>\n )}\n </div>\n );\n },\n);\n\nLogo.displayName = 'Logo';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './FlowchartBadge.css';\n\nexport interface FlowchartBadgeProps extends React.ComponentPropsWithoutRef<'div'> {\n icon?: React.ReactNode;\n color?: 'default' | 'accent' | 'success' | 'warning';\n size?: 'sm' | 'md';\n}\n\nexport const FlowchartBadge = React.forwardRef<HTMLDivElement, FlowchartBadgeProps>(\n ({ className, icon, color = 'default', size = 'md', children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={clsx('ds-flowchart-badge', `ds-flowchart-badge--${color}`, `ds-flowchart-badge--${size}`, className)}\n {...props}\n >\n {icon}\n {children}\n </div>\n );\n },\n);\n\nFlowchartBadge.displayName = 'FlowchartBadge';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './FlowchartConnector.css';\n\nexport interface FlowchartConnectorProps extends React.ComponentPropsWithoutRef<'div'> {\n direction?: 'down' | 'up';\n showArrow?: boolean;\n showJunction?: boolean;\n length?: 'sm' | 'md' | 'lg';\n}\n\nexport const FlowchartConnector = React.forwardRef<HTMLDivElement, FlowchartConnectorProps>(\n (\n {\n className,\n direction = 'down',\n showArrow = true,\n showJunction = false,\n length = 'md',\n ...props\n },\n ref,\n ) => {\n const classes = clsx(\n 'ds-flowchart-connector',\n `ds-flowchart-connector--${direction}`,\n `ds-flowchart-connector--${length}`,\n showArrow && 'ds-flowchart-connector--arrow',\n showJunction && 'ds-flowchart-connector--junction',\n className,\n );\n\n return <div ref={ref} className={classes} {...props} aria-hidden=\"true\" />;\n },\n);\n\nFlowchartConnector.displayName = 'FlowchartConnector';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './FlowchartCard.css';\n\n/* ============================================================================\n FLOWCHART CARD — Compound component for flowchart step cards\n ============================================================================ */\n\nexport interface FlowchartCardProps extends React.ComponentPropsWithoutRef<'div'> {\n /** Highlights the card as the currently active step */\n active?: boolean;\n /** Visual density variant */\n variant?: 'default' | 'compact';\n}\n\nexport const FlowchartCard = React.forwardRef<HTMLDivElement, FlowchartCardProps>(\n ({ className, active, variant, ...props }, ref) => (\n <div\n ref={ref}\n className={clsx(\n 'ds-flowchart-card',\n active && 'ds-flowchart-card--active',\n variant === 'compact' && 'ds-flowchart-card--compact',\n className,\n )}\n {...props}\n />\n ),\n);\nFlowchartCard.displayName = 'FlowchartCard';\n\nexport const FlowchartCardHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={clsx('ds-flowchart-card__header', className)} {...props} />\n));\nFlowchartCardHeader.displayName = 'FlowchartCardHeader';\n\nexport const FlowchartCardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.ComponentPropsWithoutRef<'h3'>\n>(({ className, ...props }, ref) => (\n <h3 ref={ref} className={clsx('ds-flowchart-card__title', className)} {...props} />\n));\nFlowchartCardTitle.displayName = 'FlowchartCardTitle';\n\nexport const FlowchartCardContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={clsx('ds-flowchart-card__content', className)} {...props} />\n));\nFlowchartCardContent.displayName = 'FlowchartCardContent';\n"]}
1
+ {"version":3,"sources":["../src/components/GradientText/GradientText.tsx","../src/components/StatusBadge/StatusBadge.tsx","../src/components/Chip/Chip.tsx","../src/components/LeadNotification/LeadNotification.tsx","../src/components/MarkLockup/MarkLockup.tsx","../src/components/MarkLockup/_markSvg.tsx","../src/components/Logo/Logo.tsx","../src/components/FlowchartBadge/FlowchartBadge.tsx","../src/components/FlowchartConnector/FlowchartConnector.tsx","../src/components/FlowchartCard/FlowchartCard.tsx"],"names":["React","clsx","jsx","forwardRef","jsxs"],"mappings":"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","sourcesContent":["import React, { forwardRef } from 'react'\nimport clsx from 'clsx'\nimport './GradientText.css'\n\nexport type GradientPreset = 'brand' | 'rainbow' | 'sunset' | 'aurora-pink-gold' | 'aurora-plum-pink' | 'display-headline'\n\nexport interface GradientTextProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Gradient color preset. Default: 'brand' (SalesMind pink→gold) */\n gradient?: GradientPreset\n /** HTML element tag. Default: 'span' */\n as?: 'span' | 'em' | 'strong' | 'mark'\n children: React.ReactNode\n}\n\nconst GradientText = forwardRef<HTMLSpanElement, GradientTextProps>(\n ({ gradient = 'brand', as: Tag = 'span', className, children, ...props }, ref) => {\n return (\n <Tag\n ref={ref}\n className={clsx('ds-gradient-text', `ds-gradient-text--${gradient}`, className)}\n {...props}\n >\n {children}\n </Tag>\n )\n }\n)\nGradientText.displayName = 'GradientText'\n\nexport { GradientText }\n","import React from 'react';\nimport clsx from 'clsx';\nimport './StatusBadge.css';\n\n/** Semantic tone values shared across Badge, Chip, and StatusBadge. */\nexport type BadgeTone =\n | 'aurora-pink'\n | 'aurora-gold'\n | 'aurora-plum'\n | 'status-success'\n | 'status-warning'\n | 'status-error'\n | 'neutral';\n\nexport interface StatusBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * Semantic tone — maps to a colour family.\n * - `'aurora-pink'` / `'aurora-gold'` / `'aurora-plum'` — aurora colour tones\n * - `'status-success'` — green; used for \"Lead replied\", positive states\n * - `'status-warning'` — amber; used for \"Pending\", needs-attention states\n * - `'status-error'` — red; used for failure or critical states\n * - `'neutral'` — muted glass, no colour association\n * @default 'neutral'\n */\n tone?: BadgeTone;\n /**\n * When true, renders a small colour dot before the label.\n * Useful for \"online\" or state indicators.\n * @default false\n */\n dot?: boolean;\n}\n\n/**\n * StatusBadge — state indicator with optional dot and tone system.\n *\n * **Semantic distinction:**\n * - `Badge` = static metadata (e.g. \"NEW\", \"BETA\")\n * - `StatusBadge` = dynamic state indicator (success/warning/error/info)\n * - `Chip` = removable selection token\n *\n * @example\n * <StatusBadge tone=\"status-success\" dot>Lead replied</StatusBadge>\n * <StatusBadge tone=\"status-warning\">Pending</StatusBadge>\n */\nexport const StatusBadge = React.forwardRef<HTMLSpanElement, StatusBadgeProps>(\n ({ className, tone = 'neutral', dot = false, children, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={clsx(\n 'ds-status-badge',\n `ds-status-badge--${tone}`,\n dot && 'ds-status-badge--dot',\n className,\n )}\n {...props}\n >\n {dot && <span className=\"ds-status-badge__dot\" aria-hidden=\"true\" />}\n {children}\n </span>\n );\n },\n);\n\nStatusBadge.displayName = 'StatusBadge';\n","import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport './Chip.css';\n\nimport type { BadgeTone } from '../StatusBadge/StatusBadge';\n\nexport type { BadgeTone };\n\nexport interface ChipProps {\n /**\n * Display label of the chip.\n * @example 'KEEN: AURORA'\n */\n label: string;\n /**\n * Callback invoked when the dismiss (×) button is clicked.\n * When provided, a dismiss button is rendered.\n */\n onRemove?: () => void;\n /**\n * Semantic tone — maps to a colour family.\n * - `'aurora-pink'` / `'aurora-gold'` / `'aurora-plum'` — aurora palette\n * - `'status-success'` / `'status-warning'` / `'status-error'` — state colours\n * - `'neutral'` — muted glass (default)\n * @default 'neutral'\n */\n tone?: BadgeTone;\n /**\n * When true, the chip is non-interactive and shows reduced opacity.\n * @default false\n */\n disabled?: boolean;\n /**\n * Size variant.\n * - `'sm'` = compact pill, 0.6875rem text\n * - `'md'` = standard pill, 0.75rem text (default)\n * @default 'md'\n */\n size?: 'sm' | 'md';\n /** Additional CSS class names. */\n className?: string;\n}\n\n/**\n * Chip — removable selection token (filter pill).\n *\n * **Semantic distinction:**\n * - `Badge` = static metadata (e.g. \"NEW\", \"BETA\")\n * - `StatusBadge` = dynamic state indicator (success/warning/error)\n * - `Chip` = removable selection token with dismiss action\n *\n * @example\n * <Chip label=\"KEEN: AURORA\" tone=\"aurora-pink\" onRemove={() => remove('aurora')} />\n * <Chip label=\"Glass\" tone=\"neutral\" />\n */\nexport const Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n label,\n onRemove,\n tone = 'neutral',\n disabled = false,\n size = 'md',\n className,\n },\n ref,\n ) => {\n return (\n <span\n ref={ref}\n className={clsx(\n 'ds-chip',\n `ds-chip--${tone}`,\n `ds-chip--${size}`,\n disabled && 'ds-chip--disabled',\n className,\n )}\n aria-disabled={disabled || undefined}\n >\n <span className=\"ds-chip__label\">{label}</span>\n {onRemove && (\n <button\n type=\"button\"\n className=\"ds-chip__dismiss\"\n onClick={disabled ? undefined : onRemove}\n disabled={disabled}\n aria-label={`Remove ${label}`}\n >\n ×\n </button>\n )}\n </span>\n );\n },\n);\n\nChip.displayName = 'Chip';\n","import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { Card } from '../Card/Card';\nimport { StatusBadge } from '../StatusBadge/StatusBadge';\nimport { Button } from '../Button/Button';\nimport './LeadNotification.css';\n\n/* ============================================================================\n D7 — Fictional brands ONLY in demo data:\n Acme, Northwind, Examplco, Initech, Globex, Stark\n NEVER: Vercel, Stripe, Linear, Notion, Airbnb\n ============================================================================ */\n\nexport type LeadStatus = 'replied' | 'opened' | 'pending';\n\nexport interface LeadAction {\n /** Button label. */\n label: string;\n /** Callback invoked on click. */\n onClick: () => void;\n}\n\nexport interface LeadNotificationProps {\n /**\n * Lead first + last name.\n * @example 'Sarah Patel'\n */\n name?: string;\n /**\n * Lead company name. Use fictional brands only (D7: Acme, Northwind, Examplco, etc.)\n * @example 'Acme'\n */\n company?: string;\n /**\n * Quoted excerpt from the lead's reply.\n * @example 'This looks promising — can we hop on a 15-minute call this week?'\n */\n quote?: string;\n /**\n * Current lead status — determines StatusBadge tone and label.\n * - `'replied'` → success tone (\"Lead replied\")\n * - `'opened'` → warning tone (\"Email opened\")\n * - `'pending'` → neutral tone (\"Awaiting reply\")\n * @default 'replied'\n */\n status?: LeadStatus;\n /**\n * Primary CTA button (accept, schedule, etc.).\n * @default { label: 'Accept', onClick: noop }\n */\n primaryAction?: LeadAction;\n /**\n * Secondary CTA button (snooze, dismiss, etc.).\n * @default { label: 'Snooze 1h', onClick: noop }\n */\n secondaryAction?: LeadAction;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst noop = () => {};\n\nconst STATUS_CONFIG: Record<\n LeadStatus,\n { label: string; tone: 'status-success' | 'status-warning' | 'neutral' }\n> = {\n replied: { label: 'Lead replied', tone: 'status-success' },\n opened: { label: 'Email opened', tone: 'status-warning' },\n pending: { label: 'Awaiting reply', tone: 'neutral' },\n};\n\n/**\n * LeadNotification — hero notification card for an active lead reply.\n *\n * Composes Card v2 (tier=1, aurora=true) + StatusBadge + Button v2.\n * Fictional demo brands only (D7): Acme, Northwind, Examplco, Initech, Globex.\n *\n * @example\n * <LeadNotification\n * name=\"Sarah Patel\"\n * company=\"Acme\"\n * quote=\"This looks promising — can we hop on a 15-minute call?\"\n * status=\"replied\"\n * primaryAction={{ label: 'Accept', onClick: handleAccept }}\n * secondaryAction={{ label: 'Snooze 1h', onClick: handleSnooze }}\n * />\n */\nexport const LeadNotification = forwardRef<HTMLDivElement, LeadNotificationProps>(\n (\n {\n name = 'Sarah Patel',\n company = 'Acme',\n quote = 'This looks promising — can we hop on a 15-minute call this week?',\n status = 'replied',\n primaryAction = { label: 'Accept', onClick: noop },\n secondaryAction = { label: 'Snooze 1h', onClick: noop },\n className,\n },\n ref,\n ) => {\n const { label: statusLabel, tone } = STATUS_CONFIG[status];\n\n return (\n <Card\n ref={ref}\n tier={1}\n aurora\n radius=\"card\"\n className={clsx('ds-lead-notification', className)}\n >\n {/* Status indicator row */}\n <div className=\"ds-lead-notification__status\">\n <StatusBadge tone={tone} dot>\n {statusLabel}\n </StatusBadge>\n </div>\n\n {/* Headline */}\n <h3 className=\"ds-lead-notification__headline\">\n <span className=\"ds-lead-notification__name\">{name}</span>\n {' from '}\n <span className=\"ds-lead-notification__company\">{company}</span>\n </h3>\n\n {/* Quote */}\n <blockquote className=\"ds-lead-notification__quote\">\n &ldquo;{quote}&rdquo;\n </blockquote>\n\n {/* Actions */}\n <div className=\"ds-lead-notification__actions\">\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={primaryAction.onClick}\n >\n {primaryAction.label}\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </Button>\n </div>\n </Card>\n );\n },\n);\n\nLeadNotification.displayName = 'LeadNotification';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithRef } from 'react';\nimport clsx from 'clsx';\nimport { MarkSvg, MARK_SIZES } from './_markSvg';\nimport './MarkLockup.css';\n\nexport interface MarkLockupOwnProps {\n /**\n * Size scale of the lockup.\n * - `'sm'` = 20px ellipse mark, 14px wordmark\n * - `'md'` = 28px ellipse mark, 16px wordmark (default)\n * - `'lg'` = 40px ellipse mark, 18px wordmark\n * @default 'md'\n */\n size?: keyof typeof MARK_SIZES;\n /**\n * When true, renders the wordmark in light colour (--text-primary at full opacity).\n * Use on aurora-gradient or dark backgrounds.\n * @default false\n */\n inverted?: boolean;\n /** Additional CSS class names. */\n className?: string;\n}\n\n// Merge own props with HTML div attributes\nexport type MarkLockupProps = MarkLockupOwnProps &\n Omit<ComponentPropsWithRef<'div'>, keyof MarkLockupOwnProps>;\n\n\n/**\n * MarkLockup — SalesMind AI brand mark + wordmark.\n *\n * Renders an inline SVG ellipse mark (aurora-pink → aurora-gold gradient)\n * alongside the \"SalesMind AI\" wordmark in Anton (--font-family-display).\n *\n * @example\n * <MarkLockup />\n * <MarkLockup size=\"lg\" inverted />\n */\nexport const MarkLockup = forwardRef<HTMLDivElement, MarkLockupProps>(\n ({ size = 'md', inverted = false, className, ...props }, ref) => {\n const gradientId = `aurora-mark-gradient-${size}`;\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'ds-mark-lockup',\n `ds-mark-lockup--${size}`,\n inverted && 'ds-mark-lockup--inverted',\n className,\n )}\n {...props}\n >\n <MarkSvg size={size} gradientId={gradientId} className=\"ds-mark-lockup__mark\" />\n {/* Wordmark */}\n <span className=\"ds-mark-lockup__wordmark\">SalesMind AI</span>\n </div>\n );\n },\n);\n\nMarkLockup.displayName = 'MarkLockup';\n","/**\n * _markSvg — internal shared SVG ellipse mark.\n *\n * Single source of truth for the SalesMind AI aurora ellipse mark.\n * Used by MarkLockup and Logo to avoid duplication.\n *\n * @internal — not exported from the barrel; import via relative path only.\n */\n\nexport const MARK_SIZES = {\n sm: 20,\n md: 28,\n lg: 40,\n} as const;\n\nexport type MarkSize = keyof typeof MARK_SIZES;\n\nexport interface MarkSvgProps {\n size: MarkSize;\n /** Unique SVG gradient id — caller is responsible for uniqueness in the page. */\n gradientId: string;\n /** Gradient start colour (stop 0%). Defaults to aurora-pink-raw. */\n stopStart?: string;\n /** Gradient end colour (stop 100%). Defaults to aurora-gold-raw. */\n stopEnd?: string;\n className?: string;\n}\n\n/**\n * MarkSvg — the aurora ellipse SVG mark with a configurable linear gradient.\n */\nexport function MarkSvg({\n size,\n gradientId,\n stopStart = 'var(--aurora-pink-raw)',\n stopEnd = 'var(--aurora-gold-raw)',\n className,\n}: MarkSvgProps) {\n const markSize = MARK_SIZES[size];\n return (\n <svg\n className={className}\n width={markSize}\n height={markSize}\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <defs>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={stopStart} />\n <stop offset=\"100%\" stopColor={stopEnd} />\n </linearGradient>\n </defs>\n {/* Ellipse mark — aurora-pink to aurora-gold diagonal */}\n <ellipse\n cx=\"20\"\n cy=\"20\"\n rx=\"18\"\n ry=\"14\"\n fill={`url(#${gradientId})`}\n transform=\"rotate(-20 20 20)\"\n />\n </svg>\n );\n}\n","import { forwardRef } from 'react';\nimport type { HTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport { MarkSvg } from '../MarkLockup/_markSvg';\nimport './Logo.css';\n\nexport type LogoVariant = 'mark-only' | 'wordmark-only' | 'lockup';\nexport type LogoTone = 'aurora' | 'mono-light' | 'mono-dark';\nexport type LogoSize = 'sm' | 'md' | 'lg';\n\nexport interface LogoOwnProps {\n /**\n * Visual variant.\n * - `'lockup'` — mark + wordmark side by side (default)\n * - `'mark-only'` — aurora ellipse mark alone\n * - `'wordmark-only'` — \"SalesMind AI\" text alone\n * @default 'lockup'\n */\n variant?: LogoVariant;\n /**\n * Colour tone for surface adaptation.\n * - `'aurora'` — coloured aurora gradient mark, dark wordmark (default)\n * - `'mono-light'` — white mark + white wordmark (for dark/coloured backgrounds)\n * - `'mono-dark'` — dark-tone mark + dark wordmark (for light backgrounds)\n * @default 'aurora'\n */\n tone?: LogoTone;\n /**\n * Size scale.\n * - `'sm'` = 20px mark, 14px wordmark\n * - `'md'` = 28px mark, 16px wordmark (default)\n * - `'lg'` = 40px mark, 18px wordmark\n * @default 'md'\n */\n size?: LogoSize;\n /** Additional CSS class names. */\n className?: string;\n}\n\nexport type LogoProps = LogoOwnProps &\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof LogoOwnProps>;\n\nconst MARK_COLORS: Record<LogoTone, { stopStart: string; stopEnd: string }> = {\n aurora: {\n stopStart: 'var(--aurora-pink-raw)',\n stopEnd: 'var(--aurora-gold-raw)',\n },\n 'mono-light': {\n stopStart: 'rgba(255, 255, 255, 0.95)',\n stopEnd: 'rgba(255, 255, 255, 0.75)',\n },\n 'mono-dark': {\n stopStart: 'var(--text-primary)',\n stopEnd: 'var(--aurora-plum-raw)',\n },\n};\n\n/**\n * Logo — SalesMind AI brand identity component.\n *\n * Composes the aurora ellipse mark and/or \"SalesMind AI\" wordmark.\n * Uses the same mark SVG as MarkLockup (single source of truth).\n *\n * @example\n * <Logo />\n * <Logo variant=\"mark-only\" size=\"lg\" />\n * <Logo variant=\"wordmark-only\" tone=\"mono-light\" />\n */\nexport const Logo = forwardRef<HTMLDivElement, LogoProps>(\n ({ variant = 'lockup', tone = 'aurora', size = 'md', className, ...props }, ref) => {\n const gradientId = `logo-mark-gradient-${size}-${tone}`;\n const colors = MARK_COLORS[tone];\n const showMark = variant === 'lockup' || variant === 'mark-only';\n const showWordmark = variant === 'lockup' || variant === 'wordmark-only';\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'ds-logo',\n `ds-logo--${variant}`,\n `ds-logo--tone-${tone}`,\n `ds-logo--${size}`,\n className,\n )}\n {...props}\n >\n {showMark && (\n <MarkSvg\n size={size}\n gradientId={gradientId}\n stopStart={colors.stopStart}\n stopEnd={colors.stopEnd}\n className=\"ds-logo__mark\"\n />\n )}\n {showWordmark && (\n <span className=\"ds-logo__wordmark\">SalesMind AI</span>\n )}\n </div>\n );\n },\n);\n\nLogo.displayName = 'Logo';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './FlowchartBadge.css';\n\nexport interface FlowchartBadgeProps extends React.ComponentPropsWithoutRef<'div'> {\n icon?: React.ReactNode;\n color?: 'default' | 'accent' | 'success' | 'warning';\n size?: 'sm' | 'md';\n}\n\nexport const FlowchartBadge = React.forwardRef<HTMLDivElement, FlowchartBadgeProps>(\n ({ className, icon, color = 'default', size = 'md', children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={clsx('ds-flowchart-badge', `ds-flowchart-badge--${color}`, `ds-flowchart-badge--${size}`, className)}\n {...props}\n >\n {icon}\n {children}\n </div>\n );\n },\n);\n\nFlowchartBadge.displayName = 'FlowchartBadge';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './FlowchartConnector.css';\n\nexport interface FlowchartConnectorProps extends React.ComponentPropsWithoutRef<'div'> {\n direction?: 'down' | 'up';\n showArrow?: boolean;\n showJunction?: boolean;\n length?: 'sm' | 'md' | 'lg';\n}\n\nexport const FlowchartConnector = React.forwardRef<HTMLDivElement, FlowchartConnectorProps>(\n (\n {\n className,\n direction = 'down',\n showArrow = true,\n showJunction = false,\n length = 'md',\n ...props\n },\n ref,\n ) => {\n const classes = clsx(\n 'ds-flowchart-connector',\n `ds-flowchart-connector--${direction}`,\n `ds-flowchart-connector--${length}`,\n showArrow && 'ds-flowchart-connector--arrow',\n showJunction && 'ds-flowchart-connector--junction',\n className,\n );\n\n return <div ref={ref} className={classes} {...props} aria-hidden=\"true\" />;\n },\n);\n\nFlowchartConnector.displayName = 'FlowchartConnector';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './FlowchartCard.css';\n\n/* ============================================================================\n FLOWCHART CARD — Compound component for flowchart step cards\n ============================================================================ */\n\nexport interface FlowchartCardProps extends React.ComponentPropsWithoutRef<'div'> {\n /** Highlights the card as the currently active step */\n active?: boolean;\n /** Visual density variant */\n variant?: 'default' | 'compact';\n}\n\nexport const FlowchartCard = React.forwardRef<HTMLDivElement, FlowchartCardProps>(\n ({ className, active, variant, ...props }, ref) => (\n <div\n ref={ref}\n className={clsx(\n 'ds-flowchart-card',\n active && 'ds-flowchart-card--active',\n variant === 'compact' && 'ds-flowchart-card--compact',\n className,\n )}\n {...props}\n />\n ),\n);\nFlowchartCard.displayName = 'FlowchartCard';\n\nexport const FlowchartCardHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={clsx('ds-flowchart-card__header', className)} {...props} />\n));\nFlowchartCardHeader.displayName = 'FlowchartCardHeader';\n\nexport const FlowchartCardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.ComponentPropsWithoutRef<'h3'>\n>(({ className, ...props }, ref) => (\n <h3 ref={ref} className={clsx('ds-flowchart-card__title', className)} {...props} />\n));\nFlowchartCardTitle.displayName = 'FlowchartCardTitle';\n\nexport const FlowchartCardContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={clsx('ds-flowchart-card__content', className)} {...props} />\n));\nFlowchartCardContent.displayName = 'FlowchartCardContent';\n"]}
package/dist/index.css CHANGED
@@ -143,114 +143,6 @@
143
143
  -webkit-mask-image: var(--grid-overlay-mask);
144
144
  }
145
145
 
146
- /* src/components/VoidBackground/VoidBackground.css */
147
- .void {
148
- position: relative;
149
- display: flex;
150
- flex-direction: column;
151
- width: 100%;
152
- min-height: 100vh;
153
- overflow: hidden;
154
- isolation: isolate;
155
- }
156
- .void__base {
157
- position: absolute;
158
- inset: 0;
159
- background-color: var(--void-base);
160
- z-index: -4;
161
- }
162
- .void__orbs {
163
- position: absolute;
164
- inset: 0;
165
- z-index: -3;
166
- pointer-events: none;
167
- }
168
- .void__orb {
169
- position: absolute;
170
- border-radius: 50%;
171
- mix-blend-mode: screen;
172
- filter: blur(140px);
173
- opacity: 0.6;
174
- }
175
- .void__orb--warm {
176
- width: 800px;
177
- height: 800px;
178
- top: 10%;
179
- right: 10%;
180
- background:
181
- radial-gradient(
182
- circle at center,
183
- rgba(var(--void-orb-yellow-rgb), 0.4) 0%,
184
- rgba(var(--void-orb-pink-rgb), 0.3) 40%,
185
- transparent 70%);
186
- }
187
- .void__orb--purple {
188
- width: 600px;
189
- height: 600px;
190
- bottom: 10%;
191
- left: 10%;
192
- background:
193
- radial-gradient(
194
- circle at center,
195
- rgba(var(--void-orb-purple-rgb), 0.5) 0%,
196
- rgba(var(--void-orb-purple-rgb), 0.2) 50%,
197
- transparent 70%);
198
- }
199
- .void__grid {
200
- position: absolute;
201
- inset: 0;
202
- z-index: -2;
203
- pointer-events: none;
204
- background-image:
205
- linear-gradient(
206
- to right,
207
- var(--void-grid-color) 1px,
208
- transparent 1px),
209
- linear-gradient(
210
- to bottom,
211
- var(--void-grid-color) 1px,
212
- transparent 1px);
213
- background-size: var(--grid-cell-web) var(--grid-cell-web);
214
- mask-image:
215
- radial-gradient(
216
- ellipse 70% 60% at 50% 40%,
217
- black 0%,
218
- transparent 100%);
219
- -webkit-mask-image:
220
- radial-gradient(
221
- ellipse 70% 60% at 50% 40%,
222
- black 0%,
223
- transparent 100%);
224
- }
225
- .void__grain {
226
- position: absolute;
227
- inset: 0;
228
- z-index: -1;
229
- pointer-events: none;
230
- opacity: var(--void-grid-grain-opacity, 0.04);
231
- background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
232
- background-repeat: repeat;
233
- background-size: 200px 200px;
234
- }
235
- .void__content {
236
- position: relative;
237
- z-index: 1;
238
- flex: 1;
239
- display: flex;
240
- flex-direction: column;
241
- }
242
- .void--inline {
243
- min-height: auto;
244
- }
245
- .void--inline .void__content {
246
- min-height: auto;
247
- }
248
- @media (prefers-reduced-motion: reduce) {
249
- .void__orb {
250
- animation: none;
251
- }
252
- }
253
-
254
146
  /* src/components/Card/Card.css */
255
147
  .ds-card {
256
148
  position: relative;