@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.
- package/dist/{chunk-WE4QIIVN.cjs → chunk-6BXKRDK5.cjs} +4 -12
- package/dist/chunk-6BXKRDK5.cjs.map +1 -0
- package/dist/{chunk-R3ZECV5P.cjs → chunk-FVSL5YMB.cjs} +13 -34
- package/dist/chunk-FVSL5YMB.cjs.map +1 -0
- package/dist/{chunk-HHQ6J7B6.js → chunk-KSEETC4E.js} +4 -12
- package/dist/chunk-KSEETC4E.js.map +1 -0
- package/dist/{chunk-27Y5ESMM.js → chunk-VFO2MUPI.js} +13 -33
- package/dist/chunk-VFO2MUPI.js.map +1 -0
- package/dist/{index-BJ8rBqrO.d.cts → index-C8A3X92-.d.cts} +1 -1
- package/dist/{index-BxMqCbqE.d.ts → index-wZPBPkOV.d.ts} +1 -1
- package/dist/index.cjs +31 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +0 -108
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/marketing/index.cjs +25 -25
- package/dist/marketing/index.d.cts +1 -1
- package/dist/marketing/index.d.ts +1 -1
- package/dist/marketing/index.js +1 -1
- package/dist/styles/styles.css +0 -109
- package/dist/theme/index.cjs +3 -7
- package/dist/theme/index.css +0 -108
- package/dist/theme/index.css.map +1 -1
- package/dist/theme/index.d.cts +1 -28
- package/dist/theme/index.d.ts +1 -28
- package/dist/theme/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-27Y5ESMM.js.map +0 -1
- package/dist/chunk-HHQ6J7B6.js.map +0 -1
- package/dist/chunk-R3ZECV5P.cjs.map +0 -1
- package/dist/chunk-WE4QIIVN.cjs.map +0 -1
|
@@ -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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
140
|
+
export { ColorPicker, ThemeSelector };
|
|
161
141
|
//# sourceMappingURL=out.js.map
|
|
162
|
-
//# sourceMappingURL=chunk-
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
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
|
|
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
|
|
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
|
|
441
|
+
get: function () { return chunkFVSL5YMB_cjs.ColorPicker; }
|
|
442
442
|
});
|
|
443
443
|
Object.defineProperty(exports, "ThemeSelector", {
|
|
444
444
|
enumerable: true,
|
|
445
|
-
get: function () { return
|
|
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
|
|
741
|
+
get: function () { return chunk6BXKRDK5_cjs.ArchitectureDiagram; }
|
|
746
742
|
});
|
|
747
743
|
Object.defineProperty(exports, "AuroraVoid", {
|
|
748
744
|
enumerable: true,
|
|
749
|
-
get: function () { return
|
|
745
|
+
get: function () { return chunk6BXKRDK5_cjs.AuroraVoid; }
|
|
750
746
|
});
|
|
751
747
|
Object.defineProperty(exports, "BeforeAfterBlock", {
|
|
752
748
|
enumerable: true,
|
|
753
|
-
get: function () { return
|
|
749
|
+
get: function () { return chunk6BXKRDK5_cjs.BeforeAfterBlock; }
|
|
754
750
|
});
|
|
755
751
|
Object.defineProperty(exports, "BookingEmbed", {
|
|
756
752
|
enumerable: true,
|
|
757
|
-
get: function () { return
|
|
753
|
+
get: function () { return chunk6BXKRDK5_cjs.BookingEmbed; }
|
|
758
754
|
});
|
|
759
755
|
Object.defineProperty(exports, "CaseStudyCard", {
|
|
760
756
|
enumerable: true,
|
|
761
|
-
get: function () { return
|
|
757
|
+
get: function () { return chunk6BXKRDK5_cjs.CaseStudyCard; }
|
|
762
758
|
});
|
|
763
759
|
Object.defineProperty(exports, "ComparisonTable", {
|
|
764
760
|
enumerable: true,
|
|
765
|
-
get: function () { return
|
|
761
|
+
get: function () { return chunk6BXKRDK5_cjs.ComparisonTable; }
|
|
766
762
|
});
|
|
767
763
|
Object.defineProperty(exports, "CompetitorDiff", {
|
|
768
764
|
enumerable: true,
|
|
769
|
-
get: function () { return
|
|
765
|
+
get: function () { return chunk6BXKRDK5_cjs.CompetitorDiff; }
|
|
770
766
|
});
|
|
771
767
|
Object.defineProperty(exports, "ComplianceGrid", {
|
|
772
768
|
enumerable: true,
|
|
773
|
-
get: function () { return
|
|
769
|
+
get: function () { return chunk6BXKRDK5_cjs.ComplianceGrid; }
|
|
774
770
|
});
|
|
775
771
|
Object.defineProperty(exports, "EcosystemDiagram", {
|
|
776
772
|
enumerable: true,
|
|
777
|
-
get: function () { return
|
|
773
|
+
get: function () { return chunk6BXKRDK5_cjs.EcosystemDiagram; }
|
|
778
774
|
});
|
|
779
775
|
Object.defineProperty(exports, "EnterpriseSignaling", {
|
|
780
776
|
enumerable: true,
|
|
781
|
-
get: function () { return
|
|
777
|
+
get: function () { return chunk6BXKRDK5_cjs.EnterpriseSignaling; }
|
|
782
778
|
});
|
|
783
779
|
Object.defineProperty(exports, "EvolutionTimeline", {
|
|
784
780
|
enumerable: true,
|
|
785
|
-
get: function () { return
|
|
781
|
+
get: function () { return chunk6BXKRDK5_cjs.EvolutionTimeline; }
|
|
786
782
|
});
|
|
787
783
|
Object.defineProperty(exports, "GridOverlay", {
|
|
788
784
|
enumerable: true,
|
|
789
|
-
get: function () { return
|
|
785
|
+
get: function () { return chunk6BXKRDK5_cjs.GridOverlay; }
|
|
790
786
|
});
|
|
791
787
|
Object.defineProperty(exports, "GuaranteeHighlight", {
|
|
792
788
|
enumerable: true,
|
|
793
|
-
get: function () { return
|
|
789
|
+
get: function () { return chunk6BXKRDK5_cjs.GuaranteeHighlight; }
|
|
794
790
|
});
|
|
795
791
|
Object.defineProperty(exports, "HeroComposition", {
|
|
796
792
|
enumerable: true,
|
|
797
|
-
get: function () { return
|
|
793
|
+
get: function () { return chunk6BXKRDK5_cjs.HeroComposition; }
|
|
798
794
|
});
|
|
799
795
|
Object.defineProperty(exports, "ICPFilter", {
|
|
800
796
|
enumerable: true,
|
|
801
|
-
get: function () { return
|
|
797
|
+
get: function () { return chunk6BXKRDK5_cjs.ICPFilter; }
|
|
802
798
|
});
|
|
803
799
|
Object.defineProperty(exports, "IntelligenceBlock", {
|
|
804
800
|
enumerable: true,
|
|
805
|
-
get: function () { return
|
|
801
|
+
get: function () { return chunk6BXKRDK5_cjs.IntelligenceBlock; }
|
|
806
802
|
});
|
|
807
803
|
Object.defineProperty(exports, "IntentCTA", {
|
|
808
804
|
enumerable: true,
|
|
809
|
-
get: function () { return
|
|
805
|
+
get: function () { return chunk6BXKRDK5_cjs.IntentCTA; }
|
|
810
806
|
});
|
|
811
807
|
Object.defineProperty(exports, "KPIPanel", {
|
|
812
808
|
enumerable: true,
|
|
813
|
-
get: function () { return
|
|
809
|
+
get: function () { return chunk6BXKRDK5_cjs.KPIPanel; }
|
|
814
810
|
});
|
|
815
811
|
Object.defineProperty(exports, "ObjectionFAQ", {
|
|
816
812
|
enumerable: true,
|
|
817
|
-
get: function () { return
|
|
813
|
+
get: function () { return chunk6BXKRDK5_cjs.ObjectionFAQ; }
|
|
818
814
|
});
|
|
819
815
|
Object.defineProperty(exports, "PartnerValueProp", {
|
|
820
816
|
enumerable: true,
|
|
821
|
-
get: function () { return
|
|
817
|
+
get: function () { return chunk6BXKRDK5_cjs.PartnerValueProp; }
|
|
822
818
|
});
|
|
823
819
|
Object.defineProperty(exports, "PricingCard", {
|
|
824
820
|
enumerable: true,
|
|
825
|
-
get: function () { return
|
|
821
|
+
get: function () { return chunk6BXKRDK5_cjs.PricingCard; }
|
|
826
822
|
});
|
|
827
823
|
Object.defineProperty(exports, "ProblemAgitation", {
|
|
828
824
|
enumerable: true,
|
|
829
|
-
get: function () { return
|
|
825
|
+
get: function () { return chunk6BXKRDK5_cjs.ProblemAgitation; }
|
|
830
826
|
});
|
|
831
827
|
Object.defineProperty(exports, "ROICalculator", {
|
|
832
828
|
enumerable: true,
|
|
833
|
-
get: function () { return
|
|
829
|
+
get: function () { return chunk6BXKRDK5_cjs.ROICalculator; }
|
|
834
830
|
});
|
|
835
831
|
Object.defineProperty(exports, "SegmentSwitch", {
|
|
836
832
|
enumerable: true,
|
|
837
|
-
get: function () { return
|
|
833
|
+
get: function () { return chunk6BXKRDK5_cjs.SegmentSwitch; }
|
|
838
834
|
});
|
|
839
835
|
Object.defineProperty(exports, "StickyActionBar", {
|
|
840
836
|
enumerable: true,
|
|
841
|
-
get: function () { return
|
|
837
|
+
get: function () { return chunk6BXKRDK5_cjs.StickyActionBar; }
|
|
842
838
|
});
|
|
843
839
|
Object.defineProperty(exports, "ValueAnchor", {
|
|
844
840
|
enumerable: true,
|
|
845
|
-
get: function () { return
|
|
841
|
+
get: function () { return chunk6BXKRDK5_cjs.ValueAnchor; }
|
|
846
842
|
});
|
|
847
843
|
Object.defineProperty(exports, "Vignette", {
|
|
848
844
|
enumerable: true,
|
|
849
|
-
get: function () { return
|
|
845
|
+
get: function () { return chunk6BXKRDK5_cjs.Vignette; }
|
|
850
846
|
});
|
|
851
847
|
Object.defineProperty(exports, "Badge", {
|
|
852
848
|
enumerable: true,
|
package/dist/index.cjs.map
CHANGED
|
@@ -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 “{quote}”\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 “{quote}”\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;
|