@salesmind-ai/design-system 0.6.0 → 0.7.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/README.md +2 -0
- package/dist/Anton-Regular-MLEXVTB2.woff2 +0 -0
- package/dist/admin/index.cjs +5 -61
- package/dist/admin/index.css +0 -3918
- package/dist/admin/index.css.map +1 -1
- package/dist/admin/index.d.cts +1 -422
- package/dist/admin/index.d.ts +1 -422
- package/dist/admin/index.js +1 -5
- package/dist/blog/index.cjs +13 -34
- package/dist/blog/index.css +0 -579
- package/dist/blog/index.css.map +1 -1
- package/dist/blog/index.d.cts +1 -54
- package/dist/blog/index.d.ts +1 -54
- package/dist/blog/index.js +5 -6
- package/dist/charts/index.cjs +0 -46
- package/dist/charts/index.d.cts +1 -452
- package/dist/charts/index.d.ts +1 -452
- package/dist/charts/index.js +1 -3
- package/dist/{chunk-HDVAMYSG.js → chunk-27Y5ESMM.js} +7 -2
- package/dist/chunk-27Y5ESMM.js.map +1 -0
- package/dist/{chunk-YTYDQBVY.cjs → chunk-2VVRZBUR.cjs} +4 -4
- package/dist/{chunk-GQELL2MF.cjs → chunk-3NS6X2R4.cjs} +20 -203
- package/dist/chunk-3NS6X2R4.cjs.map +1 -0
- package/dist/{chunk-XEX2AEZK.cjs → chunk-65DTHLVX.cjs} +66 -186
- package/dist/chunk-65DTHLVX.cjs.map +1 -0
- package/dist/{chunk-QALDZ7WQ.js → chunk-6BUS7RMS.js} +21 -198
- package/dist/chunk-6BUS7RMS.js.map +1 -0
- package/dist/{chunk-BJZ2DKS5.cjs → chunk-6QIQCUYC.cjs} +11 -10
- package/dist/chunk-6QIQCUYC.cjs.map +1 -0
- package/dist/{chunk-H2Y6BSTL.cjs → chunk-7EUR3AKV.cjs} +1 -1
- package/dist/chunk-7EUR3AKV.cjs.map +1 -0
- package/dist/{chunk-VFJZQQZU.js → chunk-AMNY5TS3.js} +11 -10
- package/dist/chunk-AMNY5TS3.js.map +1 -0
- package/dist/{chunk-YJ6C3EKW.js → chunk-CLXLQCNQ.js} +52 -168
- package/dist/chunk-CLXLQCNQ.js.map +1 -0
- package/dist/{chunk-H2KQ3WSH.cjs → chunk-CVLD5RQK.cjs} +12 -14
- package/dist/chunk-CVLD5RQK.cjs.map +1 -0
- package/dist/chunk-EPD4ZEPY.cjs +344 -0
- package/dist/chunk-EPD4ZEPY.cjs.map +1 -0
- package/dist/chunk-FXYOSA4E.cjs +118 -0
- package/dist/chunk-FXYOSA4E.cjs.map +1 -0
- package/dist/{chunk-ECXBTUH6.cjs → chunk-GPHQGLR5.cjs} +27 -204
- package/dist/chunk-GPHQGLR5.cjs.map +1 -0
- package/dist/{chunk-Y26OHHMX.js → chunk-HHQ6J7B6.js} +513 -888
- package/dist/chunk-HHQ6J7B6.js.map +1 -0
- package/dist/chunk-JPUJWI7F.cjs +73 -0
- package/dist/chunk-JPUJWI7F.cjs.map +1 -0
- package/dist/{chunk-6UNG76Y2.js → chunk-K526GN7P.js} +2 -2
- package/dist/{chunk-SICKWUWB.js → chunk-KJHPOB3J.js} +1 -1
- package/dist/chunk-KJHPOB3J.js.map +1 -0
- package/dist/chunk-KXVFFEGD.js +60 -0
- package/dist/chunk-KXVFFEGD.js.map +1 -0
- package/dist/chunk-LQB7QLD3.js +288 -0
- package/dist/chunk-LQB7QLD3.js.map +1 -0
- package/dist/chunk-LUD52ZJF.cjs +726 -0
- package/dist/chunk-LUD52ZJF.cjs.map +1 -0
- package/dist/{chunk-7UZ5DETZ.js → chunk-MBAG654R.js} +4 -216
- package/dist/chunk-MBAG654R.js.map +1 -0
- package/dist/chunk-OMP6FAZ6.cjs +183 -0
- package/dist/chunk-OMP6FAZ6.cjs.map +1 -0
- package/dist/{chunk-WYH4TKS5.js → chunk-PBYRTNQ5.js} +6 -8
- package/dist/chunk-PBYRTNQ5.js.map +1 -0
- package/dist/chunk-PYREXCZK.js +679 -0
- package/dist/chunk-PYREXCZK.js.map +1 -0
- package/dist/{chunk-6D22TFLA.cjs → chunk-R3ZECV5P.cjs} +9 -4
- package/dist/chunk-R3ZECV5P.cjs.map +1 -0
- package/dist/{chunk-P5BOFE5A.js → chunk-RSLA2FJN.js} +28 -183
- package/dist/chunk-RSLA2FJN.js.map +1 -0
- package/dist/chunk-S46SKHMD.js +173 -0
- package/dist/chunk-S46SKHMD.js.map +1 -0
- package/dist/chunk-SFXTB7JL.js +190 -0
- package/dist/chunk-SFXTB7JL.js.map +1 -0
- package/dist/chunk-SGYXYMKZ.cjs +214 -0
- package/dist/chunk-SGYXYMKZ.cjs.map +1 -0
- package/dist/chunk-UGKYP6F3.cjs +296 -0
- package/dist/chunk-UGKYP6F3.cjs.map +1 -0
- package/dist/chunk-WB6XDNU7.js +115 -0
- package/dist/chunk-WB6XDNU7.js.map +1 -0
- package/dist/{chunk-LTPTW2US.cjs → chunk-WE4QIIVN.cjs} +592 -974
- package/dist/chunk-WE4QIIVN.cjs.map +1 -0
- package/dist/core/index.cjs +144 -626
- package/dist/core/index.css +178 -3567
- package/dist/core/index.css.map +1 -1
- package/dist/core/index.d.cts +940 -902
- package/dist/core/index.d.ts +940 -902
- package/dist/core/index.js +6 -12
- package/dist/i18n/index.cjs +54 -49
- package/dist/i18n/index.d.cts +46 -11
- package/dist/i18n/index.d.ts +46 -11
- package/dist/i18n/index.js +2 -1
- package/dist/index-BJ8rBqrO.d.cts +1100 -0
- package/dist/index-BxMqCbqE.d.ts +1100 -0
- package/dist/index.cjs +507 -1001
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +6057 -16713
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +306 -21
- package/dist/index.d.ts +306 -21
- package/dist/index.js +274 -39
- package/dist/index.js.map +1 -1
- package/dist/marketing/index.cjs +33 -76
- package/dist/marketing/index.css +1896 -3234
- package/dist/marketing/index.css.map +1 -1
- package/dist/marketing/index.d.cts +3 -1351
- package/dist/marketing/index.d.ts +3 -1351
- package/dist/marketing/index.js +5 -8
- package/dist/motion/index.cjs +3 -20
- package/dist/motion/index.css +0 -580
- package/dist/motion/index.css.map +1 -1
- package/dist/motion/index.d.cts +1 -37
- package/dist/motion/index.d.ts +1 -37
- package/dist/motion/index.js +1 -2
- package/dist/nav/index.cjs +10 -35
- package/dist/nav/index.css +28 -580
- package/dist/nav/index.css.map +1 -1
- package/dist/nav/index.d.cts +2 -60
- package/dist/nav/index.d.ts +2 -60
- package/dist/nav/index.js +1 -2
- package/dist/report/index.cjs +1166 -175
- package/dist/report/index.cjs.map +1 -1
- package/dist/report/index.d.cts +208 -5
- package/dist/report/index.d.ts +208 -5
- package/dist/report/index.js +1141 -3
- package/dist/report/index.js.map +1 -1
- package/dist/sections/index.cjs +8 -10
- package/dist/sections/index.cjs.map +1 -1
- package/dist/sections/index.css +0 -206
- package/dist/sections/index.css.map +1 -1
- package/dist/sections/index.js +2 -4
- package/dist/sections/index.js.map +1 -1
- package/dist/social-media/index.cjs +4 -0
- package/dist/social-media/index.cjs.map +1 -0
- package/dist/social-media/index.d.cts +2 -0
- package/dist/social-media/index.d.ts +2 -0
- package/dist/social-media/index.js +3 -0
- package/dist/social-media/index.js.map +1 -0
- package/dist/social-proof/index.cjs +4 -36
- package/dist/social-proof/index.css +3 -1106
- package/dist/social-proof/index.css.map +1 -1
- package/dist/social-proof/index.d.cts +26 -171
- package/dist/social-proof/index.d.ts +26 -171
- package/dist/social-proof/index.js +1 -5
- package/dist/styles/styles.css +657 -2990
- package/dist/theme/index.cjs +12 -16
- package/dist/theme/index.css +1 -245
- package/dist/theme/index.css.map +1 -1
- package/dist/theme/index.d.cts +4 -1
- package/dist/theme/index.d.ts +4 -1
- package/dist/theme/index.js +2 -2
- package/dist/web/client/index.cjs +10 -10
- package/dist/web/client/index.css +118 -0
- package/dist/web/client/index.css.map +1 -1
- package/dist/web/client/index.js +2 -2
- package/dist/web/index.cjs +10 -10
- package/dist/web/index.css +118 -0
- package/dist/web/index.css.map +1 -1
- package/dist/web/index.js +2 -2
- package/package.json +10 -4
- package/dist/AppearancePanel-UT57J69V.d.cts +0 -51
- package/dist/AppearancePanel-UT57J69V.d.ts +0 -51
- package/dist/ExportMenu-A2TLFiVv.d.cts +0 -311
- package/dist/ExportMenu-C8qck5AT.d.ts +0 -311
- package/dist/Select-BdZmK0Lt.d.cts +0 -66
- package/dist/Select-BdZmK0Lt.d.ts +0 -66
- package/dist/chart-types-BGVVO-zl.d.cts +0 -208
- package/dist/chart-types-BGVVO-zl.d.ts +0 -208
- package/dist/charts/index.css +0 -1167
- package/dist/charts/index.css.map +0 -1
- package/dist/chunk-3BAQDW3V.cjs +0 -1207
- package/dist/chunk-3BAQDW3V.cjs.map +0 -1
- package/dist/chunk-3NKRFUAR.js +0 -37
- package/dist/chunk-3NKRFUAR.js.map +0 -1
- package/dist/chunk-3TGSIILM.cjs +0 -201
- package/dist/chunk-3TGSIILM.cjs.map +0 -1
- package/dist/chunk-4GM5BGBN.cjs +0 -801
- package/dist/chunk-4GM5BGBN.cjs.map +0 -1
- package/dist/chunk-5LA3T22E.cjs +0 -562
- package/dist/chunk-5LA3T22E.cjs.map +0 -1
- package/dist/chunk-5SN66B2X.js +0 -2542
- package/dist/chunk-5SN66B2X.js.map +0 -1
- package/dist/chunk-6D22TFLA.cjs.map +0 -1
- package/dist/chunk-6H4DSTXR.js +0 -786
- package/dist/chunk-6H4DSTXR.js.map +0 -1
- package/dist/chunk-6HKQ5ILL.cjs +0 -1624
- package/dist/chunk-6HKQ5ILL.cjs.map +0 -1
- package/dist/chunk-7PX2AZ6Y.js +0 -39
- package/dist/chunk-7PX2AZ6Y.js.map +0 -1
- package/dist/chunk-7UZ5DETZ.js.map +0 -1
- package/dist/chunk-B6AVAX4F.js +0 -1415
- package/dist/chunk-B6AVAX4F.js.map +0 -1
- package/dist/chunk-BJZ2DKS5.cjs.map +0 -1
- package/dist/chunk-BUTQSDQH.js +0 -200
- package/dist/chunk-BUTQSDQH.js.map +0 -1
- package/dist/chunk-C2BCDNAV.js +0 -24
- package/dist/chunk-C2BCDNAV.js.map +0 -1
- package/dist/chunk-CJ2MKVAF.cjs +0 -46
- package/dist/chunk-CJ2MKVAF.cjs.map +0 -1
- package/dist/chunk-E7D6EKJ4.cjs +0 -44
- package/dist/chunk-E7D6EKJ4.cjs.map +0 -1
- package/dist/chunk-ECXBTUH6.cjs.map +0 -1
- package/dist/chunk-FAFAP4L5.js +0 -183
- package/dist/chunk-FAFAP4L5.js.map +0 -1
- package/dist/chunk-G2XGBO5V.cjs +0 -2565
- package/dist/chunk-G2XGBO5V.cjs.map +0 -1
- package/dist/chunk-GQELL2MF.cjs.map +0 -1
- package/dist/chunk-H2KQ3WSH.cjs.map +0 -1
- package/dist/chunk-H2Y6BSTL.cjs.map +0 -1
- package/dist/chunk-HCZW5AJN.cjs +0 -234
- package/dist/chunk-HCZW5AJN.cjs.map +0 -1
- package/dist/chunk-HDVAMYSG.js.map +0 -1
- package/dist/chunk-HN4PHABT.js +0 -126
- package/dist/chunk-HN4PHABT.js.map +0 -1
- package/dist/chunk-LTPTW2US.cjs.map +0 -1
- package/dist/chunk-MDB2WCRQ.cjs +0 -137
- package/dist/chunk-MDB2WCRQ.cjs.map +0 -1
- package/dist/chunk-MQRB634A.cjs +0 -34
- package/dist/chunk-MQRB634A.cjs.map +0 -1
- package/dist/chunk-NN3TUHIH.js +0 -28
- package/dist/chunk-NN3TUHIH.js.map +0 -1
- package/dist/chunk-OWS2KAXZ.js +0 -701
- package/dist/chunk-OWS2KAXZ.js.map +0 -1
- package/dist/chunk-P5BOFE5A.js.map +0 -1
- package/dist/chunk-PUPSK3DI.cjs +0 -216
- package/dist/chunk-PUPSK3DI.cjs.map +0 -1
- package/dist/chunk-Q2MFGYTE.cjs +0 -1449
- package/dist/chunk-Q2MFGYTE.cjs.map +0 -1
- package/dist/chunk-Q75DBVDY.cjs +0 -68
- package/dist/chunk-Q75DBVDY.cjs.map +0 -1
- package/dist/chunk-QALDZ7WQ.js.map +0 -1
- package/dist/chunk-QWE2RNCS.js +0 -1195
- package/dist/chunk-QWE2RNCS.js.map +0 -1
- package/dist/chunk-RQUFZAZ7.js +0 -1608
- package/dist/chunk-RQUFZAZ7.js.map +0 -1
- package/dist/chunk-SICKWUWB.js.map +0 -1
- package/dist/chunk-TCFC7XTB.js +0 -212
- package/dist/chunk-TCFC7XTB.js.map +0 -1
- package/dist/chunk-UTVXGAQP.cjs +0 -2437
- package/dist/chunk-UTVXGAQP.cjs.map +0 -1
- package/dist/chunk-UVEMY3FQ.cjs +0 -717
- package/dist/chunk-UVEMY3FQ.cjs.map +0 -1
- package/dist/chunk-VFJZQQZU.js.map +0 -1
- package/dist/chunk-WH7PYHZY.cjs +0 -35
- package/dist/chunk-WH7PYHZY.cjs.map +0 -1
- package/dist/chunk-WYH4TKS5.js.map +0 -1
- package/dist/chunk-XEX2AEZK.cjs.map +0 -1
- package/dist/chunk-XPTVHPCN.js +0 -2320
- package/dist/chunk-XPTVHPCN.js.map +0 -1
- package/dist/chunk-XWPDRMZG.js +0 -62
- package/dist/chunk-XWPDRMZG.js.map +0 -1
- package/dist/chunk-Y26OHHMX.js.map +0 -1
- package/dist/chunk-YJ6C3EKW.js.map +0 -1
- package/dist/motion-C651Ry6d.d.cts +0 -832
- package/dist/motion-C651Ry6d.d.ts +0 -832
- package/dist/report/index.css +0 -1239
- package/dist/report/index.css.map +0 -1
- /package/dist/{chunk-6UNG76Y2.js.map → chunk-2VVRZBUR.cjs.map} +0 -0
- /package/dist/{chunk-YTYDQBVY.cjs.map → chunk-K526GN7P.js.map} +0 -0
package/dist/report/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"sources":["../../src/report-engine/constants.ts","../../src/report-engine/confidence.ts","../../src/report-engine/context.tsx","../../src/report-engine/chart-types.ts","../../src/report-engine/validation.ts"],"names":["React","getComponentName","isChart"],"mappings":"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","sourcesContent":["/* ============================================================================\n REPORT ENGINE — CONSTANTS & CONFIGURATION\n ============================================================================ */\n\nimport type {\n ReportModeConfig,\n ConfidenceThreshold,\n InsightTypeContract,\n InsightType,\n} from './types';\n\n/**\n * Executive mode configuration - minimal detail, boardroom-ready.\n */\nexport const EXECUTIVE_MODE: ReportModeConfig = {\n mode: 'executive',\n features: {\n showMethodology: false,\n showConfidenceScores: false,\n showRawData: false,\n showStatisticalTests: false,\n chartDetailLevel: 'summary',\n maxInsightsShown: 5,\n allowDrilldown: false,\n },\n};\n\n/**\n * Analyst mode configuration - full detail, internal use.\n */\nexport const ANALYST_MODE: ReportModeConfig = {\n mode: 'analyst',\n features: {\n showMethodology: true,\n showConfidenceScores: true,\n showRawData: true,\n showStatisticalTests: true,\n chartDetailLevel: 'detailed',\n maxInsightsShown: 20,\n allowDrilldown: true,\n },\n};\n\n/**\n * Confidence level thresholds.\n */\nexport const CONFIDENCE_THRESHOLDS: ConfidenceThreshold[] = [\n { level: 'high', min: 90, max: 100, label: 'High Confidence', color: 'var(--status-success)' },\n {\n level: 'moderate',\n min: 70,\n max: 89,\n label: 'Moderate Confidence',\n color: 'var(--status-info)',\n },\n { level: 'low', min: 50, max: 69, label: 'Low Confidence', color: 'var(--status-warning)' },\n {\n level: 'insufficient',\n min: 0,\n max: 49,\n label: 'Insufficient Data',\n color: 'var(--status-error)',\n },\n];\n\n/**\n * Minimum sample sizes for different analysis types.\n */\nexport const MINIMUM_SAMPLE_SIZES = {\n overall: 30,\n segment: 30,\n mbtiType: 50,\n correlation: 100,\n timeSeries: 7,\n} as const;\n\n/**\n * Insight type contracts defining allowed charts and requirements.\n */\nexport const INSIGHT_TYPE_CONTRACTS: Record<InsightType, InsightTypeContract> = {\n 'performance-delta': {\n type: 'performance-delta',\n allowedCharts: ['BarChart', 'LineChart', 'KeyMetric'],\n requiredFields: ['metric_name', 'current_value', 'previous_value', 'time_period'],\n minSampleSize: 30,\n headlinePattern: '{metric} {direction} by {delta}% {timeframe}',\n recommendationFormats: ['maintain-strategy', 'investigate-decline', 'scale-success'],\n },\n 'behavioral-correlation': {\n type: 'behavioral-correlation',\n allowedCharts: ['HeatmapChart', 'BarChart'],\n requiredFields: ['variable_a', 'variable_b', 'correlation_coefficient'],\n minSampleSize: 100,\n headlinePattern: '{variable_a} correlates with {variable_b}',\n recommendationFormats: ['leverage-correlation', 'investigate-causation'],\n },\n 'funnel-leakage': {\n type: 'funnel-leakage',\n allowedCharts: ['FunnelChart', 'BarChart'],\n requiredFields: ['stages', 'stage_counts', 'drop_rates'],\n minSampleSize: 50,\n headlinePattern: '{drop_rate}% drop-off at {stage}',\n recommendationFormats: ['optimize-stage', 'remove-friction'],\n },\n 'audience-mismatch': {\n type: 'audience-mismatch',\n allowedCharts: ['BarChart', 'PieChart'],\n requiredFields: ['target_audience', 'actual_audience', 'overlap_percentage'],\n minSampleSize: 50,\n headlinePattern: 'Target audience differs by {mismatch}%',\n recommendationFormats: ['refine-targeting', 'expand-audience'],\n },\n 'message-fatigue': {\n type: 'message-fatigue',\n allowedCharts: ['LineChart', 'BarChart'],\n requiredFields: ['message_sequence', 'engagement_rates', 'fatigue_point'],\n minSampleSize: 100,\n headlinePattern: 'Engagement drops {drop}% after message {n}',\n recommendationFormats: ['reduce-frequency', 'vary-content'],\n },\n 'psychological-resonance': {\n type: 'psychological-resonance',\n allowedCharts: ['MBTIRadar', 'MBTITypeGrid', 'BarChart'],\n requiredFields: ['mbti_types', 'response_rates', 'message_type'],\n minSampleSize: 50,\n headlinePattern: '{mbti_type} responds {rate}% better to {message_type}',\n recommendationFormats: ['personalize-messaging', 'segment-by-type'],\n },\n 'timing-pattern': {\n type: 'timing-pattern',\n allowedCharts: ['HeatmapChart', 'LineChart'],\n requiredFields: ['time_slots', 'engagement_rates'],\n minSampleSize: 100,\n headlinePattern: 'Best engagement on {day} at {time}',\n recommendationFormats: ['optimize-timing', 'schedule-sends'],\n },\n 'segment-outperformance': {\n type: 'segment-outperformance',\n allowedCharts: ['BarChart', 'KeyMetric'],\n requiredFields: ['segments', 'performance_metrics', 'baseline'],\n minSampleSize: 30,\n headlinePattern: '{segment} outperforms by {delta}%',\n recommendationFormats: ['double-down', 'investigate-success'],\n },\n 'anomaly-detection': {\n type: 'anomaly-detection',\n allowedCharts: ['LineChart', 'BarChart'],\n requiredFields: ['metric', 'expected_value', 'actual_value', 'deviation'],\n minSampleSize: 30,\n headlinePattern: 'Unusual {direction} in {metric}',\n recommendationFormats: ['investigate', 'monitor'],\n },\n 'competitive-benchmark': {\n type: 'competitive-benchmark',\n allowedCharts: ['BarChart', 'KeyMetric'],\n requiredFields: ['metric', 'our_value', 'benchmark_value'],\n minSampleSize: 30,\n headlinePattern: '{position} industry benchmark by {delta}%',\n recommendationFormats: ['maintain-lead', 'close-gap'],\n },\n};\n\n/**\n * Analytical state metadata for UI rendering.\n */\nexport const ANALYTICAL_STATE_CONFIG = {\n VALID: {\n label: 'Valid',\n icon: 'check',\n color: 'var(--status-success)',\n action: null,\n },\n INSUFFICIENT_SAMPLE: {\n label: 'Insufficient Sample',\n icon: 'alert-triangle',\n color: 'var(--status-warning)',\n action: 'Add more data',\n },\n LOW_CONFIDENCE: {\n label: 'Low Confidence',\n icon: 'alert-circle',\n color: 'var(--status-warning)',\n action: 'Interpret with caution',\n },\n PARTIAL_TIME_WINDOW: {\n label: 'Partial Data',\n icon: 'clock',\n color: 'var(--status-info)',\n action: 'Expand date range',\n },\n DATA_SKEW_DETECTED: {\n label: 'Data Skew',\n icon: 'bar-chart-2',\n color: 'var(--status-warning)',\n action: 'Review methodology',\n },\n CONFLICTING_SIGNALS: {\n label: 'Conflicting Signals',\n icon: 'git-merge',\n color: 'var(--status-error)',\n action: 'Manual review needed',\n },\n INFERRED_NOT_OBSERVED: {\n label: 'AI Generated',\n icon: 'cpu',\n color: 'var(--status-info)',\n action: 'Verify with data',\n },\n STALE_DATA: {\n label: 'Stale Data',\n icon: 'clock',\n color: 'var(--status-warning)',\n action: 'Refresh data',\n },\n FIELD_MISSING: {\n label: 'Missing Field',\n icon: 'file-x',\n color: 'var(--status-error)',\n action: 'Upload complete data',\n },\n CALCULATION_ERROR: {\n label: 'Calculation Error',\n icon: 'x-circle',\n color: 'var(--status-error)',\n action: 'Contact support',\n },\n} as const;\n","/* ============================================================================\n REPORT ENGINE — CONFIDENCE SCORING\n ============================================================================ */\n\nimport type { ConfidenceLevel } from './types';\nimport { CONFIDENCE_THRESHOLDS } from './constants';\n\nexport interface ConfidenceParams {\n sampleSize: number;\n requiredSize: number;\n completeness: number; // 0-1: percentage of non-null fields\n recency: number; // 0-1: how recent the data is\n variance: number; // 0-1: normalized variance (higher = worse)\n aiInference: boolean; // Whether AI generated the insight\n}\n\n/**\n * Calculate confidence score based on data quality factors.\n * Returns a score from 0-100.\n */\nexport function calculateConfidence(params: ConfidenceParams): number {\n const { sampleSize, requiredSize, completeness, recency, variance, aiInference } = params;\n\n // Base score from sample size (0-40 points)\n const sampleScore = Math.min(40, (sampleSize / requiredSize) * 40);\n\n // Completeness bonus (0-20 points)\n const completenessScore = completeness * 20;\n\n // Recency bonus (0-20 points)\n const recencyScore = recency * 20;\n\n // Variance penalty (0-10 points deducted for high variance)\n const variancePenalty = variance * 10;\n\n // AI inference penalty (10 points if AI-generated)\n const aiPenalty = aiInference ? 10 : 0;\n\n const rawScore = sampleScore + completenessScore + recencyScore - variancePenalty - aiPenalty;\n\n return Math.max(0, Math.min(100, Math.round(rawScore)));\n}\n\n/**\n * Get confidence level from score.\n */\nexport function getConfidenceLevel(score: number): ConfidenceLevel {\n const threshold = CONFIDENCE_THRESHOLDS.find((t) => score >= t.min && score <= t.max);\n return threshold?.level ?? 'insufficient';\n}\n\n/**\n * Get confidence threshold config from score.\n */\nexport function getConfidenceThreshold(score: number) {\n return (\n CONFIDENCE_THRESHOLDS.find((t) => score >= t.min && score <= t.max) ??\n CONFIDENCE_THRESHOLDS[CONFIDENCE_THRESHOLDS.length - 1]\n );\n}\n\n/**\n * Calculate recency score based on data age.\n * @param dataDate - The date of the most recent data point\n * @param maxAgeDays - Maximum acceptable age in days (default 30)\n */\nexport function calculateRecency(dataDate: Date, maxAgeDays = 30): number {\n const now = new Date();\n const ageInDays = (now.getTime() - dataDate.getTime()) / (1000 * 60 * 60 * 24);\n\n if (ageInDays <= 0) return 1;\n if (ageInDays >= maxAgeDays) return 0;\n\n return 1 - ageInDays / maxAgeDays;\n}\n\n/**\n * Calculate data completeness from an array of records.\n * @param data - Array of data objects\n * @param requiredFields - Fields to check for completeness\n */\nexport function calculateCompleteness(\n data: Record<string, unknown>[],\n requiredFields: string[],\n): number {\n if (data.length === 0 || requiredFields.length === 0) return 0;\n\n let totalFields = 0;\n let filledFields = 0;\n\n for (const record of data) {\n for (const field of requiredFields) {\n totalFields++;\n const value = record[field];\n if (value !== null && value !== undefined && value !== '') {\n filledFields++;\n }\n }\n }\n\n return totalFields > 0 ? filledFields / totalFields : 0;\n}\n\n/**\n * Calculate normalized variance for a numeric dataset.\n * Returns 0-1 where 0 is low variance and 1 is high variance.\n */\nexport function calculateNormalizedVariance(values: number[]): number {\n if (values.length < 2) return 0;\n\n const mean = values.reduce((a, b) => a + b, 0) / values.length;\n const squaredDiffs = values.map((v) => Math.pow(v - mean, 2));\n const variance = squaredDiffs.reduce((a, b) => a + b, 0) / values.length;\n const stdDev = Math.sqrt(variance);\n\n // Coefficient of variation (CV) normalized to 0-1\n // CV > 1 is considered high variance\n const cv = mean !== 0 ? stdDev / Math.abs(mean) : 0;\n\n return Math.min(1, cv);\n}\n","/* ============================================================================\n REPORT ENGINE — CONTEXT & HOOKS\n ============================================================================ */\n\n/* eslint-disable react-refresh/only-export-components */\n// This is a library file exporting hooks alongside providers - fast refresh doesn't apply\n\nimport React, { createContext, useContext, useMemo } from 'react';\nimport type { ReportMode, ReportModeConfig, AnalyticalState, DataStateDetails } from './types';\nimport { EXECUTIVE_MODE, ANALYST_MODE, MINIMUM_SAMPLE_SIZES } from './constants';\nimport { calculateConfidence, getConfidenceLevel, type ConfidenceParams } from './confidence';\n\n/* --------------------------------------------------------------------------\n Report Mode Context\n -------------------------------------------------------------------------- */\n\ninterface ReportModeContextValue extends ReportModeConfig {\n setMode?: (mode: ReportMode) => void;\n}\n\nconst ReportModeContext = createContext<ReportModeContextValue | null>(null);\n\nexport interface ReportModeProviderProps {\n mode?: ReportMode;\n children: React.ReactNode;\n onModeChange?: (mode: ReportMode) => void;\n}\n\n/**\n * Provider for report mode context.\n * Wrap your report with this to control executive vs analyst mode.\n */\nexport function ReportModeProvider({\n mode = 'executive',\n children,\n onModeChange,\n}: ReportModeProviderProps) {\n const config = mode === 'executive' ? EXECUTIVE_MODE : ANALYST_MODE;\n\n const value = useMemo(\n () => ({\n ...config,\n setMode: onModeChange,\n }),\n [config, onModeChange],\n );\n\n return <ReportModeContext.Provider value={value}>{children}</ReportModeContext.Provider>;\n}\n\n/**\n * Hook to access report mode configuration.\n */\nexport function useReportMode(): ReportModeContextValue {\n const context = useContext(ReportModeContext);\n\n if (!context) {\n // Return default executive mode if used outside provider\n return EXECUTIVE_MODE;\n }\n\n return context;\n}\n\n/* --------------------------------------------------------------------------\n Data State Hook\n -------------------------------------------------------------------------- */\n\nexport interface UseDataStateParams {\n sampleSize: number;\n requiredSize?: number;\n completeness?: number;\n recency?: number;\n variance?: number;\n aiInferred?: boolean;\n missingFields?: string[];\n staleDays?: number;\n}\n\nexport interface UseDataStateResult {\n state: AnalyticalState;\n confidence: number;\n confidenceLevel: ReturnType<typeof getConfidenceLevel>;\n details: DataStateDetails;\n isValid: boolean;\n}\n\n/**\n * Hook to compute analytical state from data parameters.\n */\nexport function useDataState(params: UseDataStateParams): UseDataStateResult {\n const {\n sampleSize,\n requiredSize = MINIMUM_SAMPLE_SIZES.overall,\n completeness = 1,\n recency = 1,\n variance = 0,\n aiInferred = false,\n missingFields = [],\n staleDays,\n } = params;\n\n return useMemo(() => {\n // Calculate confidence\n const confidenceParams: ConfidenceParams = {\n sampleSize,\n requiredSize,\n completeness,\n recency,\n variance,\n aiInference: aiInferred,\n };\n\n const confidence = calculateConfidence(confidenceParams);\n const confidenceLevel = getConfidenceLevel(confidence);\n\n // Determine analytical state\n let state: AnalyticalState = 'VALID';\n\n if (missingFields.length > 0) {\n state = 'FIELD_MISSING';\n } else if (sampleSize < requiredSize) {\n state = 'INSUFFICIENT_SAMPLE';\n } else if (staleDays && staleDays > 30) {\n state = 'STALE_DATA';\n } else if (aiInferred) {\n state = 'INFERRED_NOT_OBSERVED';\n } else if (confidence < 50) {\n state = 'LOW_CONFIDENCE';\n } else if (variance > 0.7) {\n state = 'DATA_SKEW_DETECTED';\n } else if (recency < 0.3) {\n state = 'PARTIAL_TIME_WINDOW';\n }\n\n const details: DataStateDetails = {\n sampleSize,\n requiredSize,\n confidence,\n missingFields: missingFields.length > 0 ? missingFields : undefined,\n staleDays,\n };\n\n return {\n state,\n confidence,\n confidenceLevel,\n details,\n isValid: state === 'VALID',\n };\n }, [\n sampleSize,\n requiredSize,\n completeness,\n recency,\n variance,\n aiInferred,\n missingFields,\n staleDays,\n ]);\n}\n\n/* --------------------------------------------------------------------------\n Chart Data Validation Hook\n -------------------------------------------------------------------------- */\n\nexport interface UseChartDataParams<T> {\n data: T[];\n requiredFields: string[];\n minSampleSize?: number;\n insightType?: string;\n}\n\nexport interface UseChartDataResult<T> {\n data: T[];\n state: AnalyticalState;\n confidence: number;\n isRenderable: boolean;\n message?: string;\n}\n\n/**\n * Hook to validate chart data against data contracts.\n */\nexport function useChartData<T extends Record<string, unknown>>({\n data,\n requiredFields,\n minSampleSize = MINIMUM_SAMPLE_SIZES.overall,\n}: UseChartDataParams<T>): UseChartDataResult<T> {\n return useMemo(() => {\n // Check for missing required fields\n const missingFields: string[] = [];\n if (data.length > 0) {\n const firstRecord = data[0];\n for (const field of requiredFields) {\n if (!(field in firstRecord)) {\n missingFields.push(field);\n }\n }\n }\n\n // Calculate completeness\n let completeness = 1;\n if (data.length > 0 && requiredFields.length > 0) {\n let filled = 0;\n let total = 0;\n for (const record of data) {\n for (const field of requiredFields) {\n total++;\n const value = record[field];\n if (value !== null && value !== undefined && value !== '') {\n filled++;\n }\n }\n }\n completeness = total > 0 ? filled / total : 0;\n }\n\n // Determine state\n let state: AnalyticalState = 'VALID';\n let message: string | undefined;\n\n if (missingFields.length > 0) {\n state = 'FIELD_MISSING';\n message = `Missing fields: ${missingFields.join(', ')}`;\n } else if (data.length === 0) {\n state = 'INSUFFICIENT_SAMPLE';\n message = 'No data available';\n } else if (data.length < minSampleSize) {\n state = 'INSUFFICIENT_SAMPLE';\n message = `Sample size ${data.length} is below minimum ${minSampleSize}`;\n } else if (completeness < 0.7) {\n state = 'LOW_CONFIDENCE';\n message = `Data completeness is ${Math.round(completeness * 100)}%`;\n }\n\n // Calculate confidence\n const confidence = calculateConfidence({\n sampleSize: data.length,\n requiredSize: minSampleSize,\n completeness,\n recency: 1, // Assume fresh data if not specified\n variance: 0,\n aiInference: false,\n });\n\n const isRenderable = state === 'VALID' || state === 'LOW_CONFIDENCE';\n\n return {\n data,\n state,\n confidence,\n isRenderable,\n message,\n };\n }, [data, requiredFields, minSampleSize]);\n}\n","/* ============================================================================\n CHART ABSTRACTION LAYER — TYPE DEFINITIONS & CONTRACTS\n \n This module defines the governed chart system with:\n - Chart taxonomy (semantic families)\n - Data contracts per chart type\n - Switching rules\n - Guardrails and fallback behaviors\n ============================================================================ */\n\n/* ============================================================================\n CHART INTENT (Semantic Families)\n ============================================================================ */\n\n/**\n * Chart intent defines the semantic purpose of visualization.\n * This is the primary classifier that governs switching rules.\n */\nexport type ChartIntent =\n | 'trend' // Time-based evolution, deltas, momentum\n | 'comparison' // Comparing discrete categories\n | 'composition' // Proportions and distributions\n | 'distribution' // Statistical spread and density\n | 'relationship' // Correlation and clustering\n | 'geo'; // Geographic data\n\n/* ============================================================================\n CHART TYPE TAXONOMY\n ============================================================================ */\n\n/**\n * All supported chart types organized by intent.\n */\n\n// Trend charts (time-based)\nexport type TrendChartType = 'line' | 'smooth_line' | 'area' | 'stacked_area' | 'area_100pct';\n\n// Comparison charts (categorical)\nexport type ComparisonChartType =\n | 'bar'\n | 'column'\n | 'stacked_bar'\n | 'stacked_column'\n | 'column_100pct'\n | 'combo'; // Phase 2\n\n// Composition charts\nexport type CompositionChartType = 'pie' | 'donut' | 'treemap'; // Phase 2\n\n// Distribution charts\nexport type DistributionChartType = 'histogram' | 'radar'; // Phase 2\n\n// Relationship charts\nexport type RelationshipChartType =\n | 'scatter' // Phase 2\n | 'bubble' // Phase 2\n | 'heatmap';\n\n// Geographic charts\nexport type GeoChartType =\n | 'geo' // Phase 2\n | 'choropleth'; // Phase 2\n\n/**\n * Union of all chart types\n */\nexport type ChartTypeId =\n | TrendChartType\n | ComparisonChartType\n | CompositionChartType\n | DistributionChartType\n | RelationshipChartType\n | GeoChartType\n | 'funnel' // Special: conversion flows\n | 'waterfall' // Phase 2: sequential changes\n | 'timeline'; // Phase 2: event sequences\n\n/**\n * Chart phase classification\n */\nexport type ChartPhase = 'mvp' | 'phase2' | 'phase3';\n\n/* ============================================================================\n CHART METADATA & REGISTRY\n ============================================================================ */\n\nexport interface ChartTypeMetadata {\n id: ChartTypeId;\n name: string;\n description: string;\n intent: ChartIntent;\n phase: ChartPhase;\n\n // Data requirements\n contract: ChartDataContract;\n\n // Allowed switches within same intent\n switchableTo: ChartTypeId[];\n\n // Visual configuration\n supportsStacking: boolean;\n supportsMultipleSeries: boolean;\n requiresTimeAxis: boolean;\n maxCategories?: number;\n maxSlices?: number;\n}\n\nexport interface ChartDataContract {\n // Required data shape\n requiredDimensions: number; // e.g., 1 for pie, 2 for scatter\n requiredMeasures: number; // Number of numeric fields required\n\n // Sample size requirements\n minDataPoints: number;\n idealDataPoints: number;\n maxDataPoints?: number;\n\n // Value constraints\n allowNegativeValues: boolean;\n requireNonZeroTotal: boolean;\n\n // Warnings\n warningThresholds: {\n tooManyCategories?: number;\n imbalancedRatio?: number;\n sparseData?: number;\n };\n\n // Fallback behavior\n fallback: ChartFallbackBehavior;\n}\n\nexport type ChartFallbackBehavior =\n | { type: 'hide' }\n | { type: 'show_kpi'; message: string }\n | { type: 'aggregate'; strategy: 'other_bucket' | 'top_n' }\n | { type: 'warn'; message: string };\n\n/* ============================================================================\n CHART REGISTRY (Canonical List)\n ============================================================================ */\n\nexport const CHART_REGISTRY: Record<ChartTypeId, ChartTypeMetadata> = {\n // ══════════════════════════════════════════════════════════════════════════\n // TREND CHARTS (MVP)\n // ══════════════════════════════════════════════════════════════════════════\n line: {\n id: 'line',\n name: 'Line Chart',\n description: 'Shows trends over time with connected data points',\n intent: 'trend',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 3,\n idealDataPoints: 7,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { sparseData: 3 },\n fallback: { type: 'show_kpi', message: 'Insufficient data for trend visualization' },\n },\n switchableTo: ['smooth_line', 'area', 'stacked_area'],\n supportsStacking: false,\n supportsMultipleSeries: true,\n requiresTimeAxis: true,\n },\n\n smooth_line: {\n id: 'smooth_line',\n name: 'Smooth Line Chart',\n description: 'Curved line chart for smoother trend visualization',\n intent: 'trend',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 3,\n idealDataPoints: 7,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { sparseData: 3 },\n fallback: { type: 'show_kpi', message: 'Insufficient data for trend visualization' },\n },\n switchableTo: ['line', 'area', 'stacked_area'],\n supportsStacking: false,\n supportsMultipleSeries: true,\n requiresTimeAxis: true,\n },\n\n area: {\n id: 'area',\n name: 'Area Chart',\n description: 'Filled area under line, emphasizes volume over time',\n intent: 'trend',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 3,\n idealDataPoints: 7,\n allowNegativeValues: false,\n requireNonZeroTotal: false,\n warningThresholds: { sparseData: 3 },\n fallback: { type: 'show_kpi', message: 'Insufficient data for area visualization' },\n },\n switchableTo: ['line', 'smooth_line', 'stacked_area', 'area_100pct'],\n supportsStacking: true,\n supportsMultipleSeries: true,\n requiresTimeAxis: true,\n },\n\n stacked_area: {\n id: 'stacked_area',\n name: 'Stacked Area Chart',\n description: 'Multiple series stacked to show cumulative trends',\n intent: 'trend',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 2,\n minDataPoints: 3,\n idealDataPoints: 7,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { sparseData: 3 },\n fallback: { type: 'warn', message: 'Stacked area requires non-negative values' },\n },\n switchableTo: ['line', 'area', 'area_100pct'],\n supportsStacking: true,\n supportsMultipleSeries: true,\n requiresTimeAxis: true,\n },\n\n area_100pct: {\n id: 'area_100pct',\n name: '100% Stacked Area',\n description: 'Shows proportional contribution over time',\n intent: 'trend',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 2,\n minDataPoints: 3,\n idealDataPoints: 7,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { sparseData: 3 },\n fallback: { type: 'warn', message: '100% stacked requires positive totals' },\n },\n switchableTo: ['stacked_area', 'area'],\n supportsStacking: true,\n supportsMultipleSeries: true,\n requiresTimeAxis: true,\n },\n\n // ══════════════════════════════════════════════════════════════════════════\n // COMPARISON CHARTS (MVP)\n // ══════════════════════════════════════════════════════════════════════════\n bar: {\n id: 'bar',\n name: 'Horizontal Bar Chart',\n description: 'Horizontal bars for comparing categories',\n intent: 'comparison',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 2,\n idealDataPoints: 5,\n maxDataPoints: 15,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { tooManyCategories: 12 },\n fallback: { type: 'aggregate', strategy: 'top_n' },\n },\n switchableTo: ['column', 'stacked_bar', 'stacked_column'],\n supportsStacking: true,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n column: {\n id: 'column',\n name: 'Vertical Column Chart',\n description: 'Vertical bars for comparing categories',\n intent: 'comparison',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 2,\n idealDataPoints: 5,\n maxDataPoints: 12,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { tooManyCategories: 10 },\n fallback: { type: 'aggregate', strategy: 'top_n' },\n },\n switchableTo: ['bar', 'stacked_column', 'stacked_bar'],\n supportsStacking: true,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n stacked_bar: {\n id: 'stacked_bar',\n name: 'Stacked Horizontal Bar',\n description: 'Horizontal stacked bars showing composition per category',\n intent: 'comparison',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 2,\n minDataPoints: 2,\n idealDataPoints: 5,\n maxDataPoints: 10,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { tooManyCategories: 8, imbalancedRatio: 0.9 },\n fallback: { type: 'aggregate', strategy: 'other_bucket' },\n },\n switchableTo: ['bar', 'stacked_column', 'column_100pct'],\n supportsStacking: true,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n stacked_column: {\n id: 'stacked_column',\n name: 'Stacked Vertical Column',\n description: 'Vertical stacked columns showing composition per category',\n intent: 'comparison',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 2,\n minDataPoints: 2,\n idealDataPoints: 5,\n maxDataPoints: 10,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { tooManyCategories: 8, imbalancedRatio: 0.9 },\n fallback: { type: 'aggregate', strategy: 'other_bucket' },\n },\n switchableTo: ['column', 'stacked_bar', 'column_100pct'],\n supportsStacking: true,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n column_100pct: {\n id: 'column_100pct',\n name: '100% Stacked Column',\n description: 'Shows proportional composition per category',\n intent: 'comparison',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 2,\n minDataPoints: 2,\n idealDataPoints: 5,\n maxDataPoints: 10,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { tooManyCategories: 8 },\n fallback: { type: 'warn', message: '100% stacked requires positive totals' },\n },\n switchableTo: ['stacked_column', 'stacked_bar'],\n supportsStacking: true,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n combo: {\n id: 'combo',\n name: 'Combo Chart',\n description: 'Combines bars with line overlay (Phase 2)',\n intent: 'comparison',\n phase: 'phase2',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 2,\n minDataPoints: 3,\n idealDataPoints: 6,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { tooManyCategories: 10 },\n fallback: { type: 'warn', message: 'Combo chart requires dual measures' },\n },\n switchableTo: ['column', 'line'],\n supportsStacking: false,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n // ══════════════════════════════════════════════════════════════════════════\n // COMPOSITION CHARTS (MVP)\n // ══════════════════════════════════════════════════════════════════════════\n pie: {\n id: 'pie',\n name: 'Pie Chart',\n description: 'Shows proportional composition of a whole',\n intent: 'composition',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 2,\n idealDataPoints: 4,\n maxDataPoints: 6,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { tooManyCategories: 6, imbalancedRatio: 0.95 },\n fallback: { type: 'aggregate', strategy: 'other_bucket' },\n },\n switchableTo: ['donut', 'column_100pct'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n maxSlices: 6,\n },\n\n donut: {\n id: 'donut',\n name: 'Donut Chart',\n description: 'Pie chart with center cutout, can display total',\n intent: 'composition',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 2,\n idealDataPoints: 4,\n maxDataPoints: 6,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { tooManyCategories: 6, imbalancedRatio: 0.95 },\n fallback: { type: 'aggregate', strategy: 'other_bucket' },\n },\n switchableTo: ['pie', 'column_100pct'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n maxSlices: 6,\n },\n\n treemap: {\n id: 'treemap',\n name: 'Treemap',\n description: 'Nested rectangles showing hierarchical composition (Phase 2)',\n intent: 'composition',\n phase: 'phase2',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 3,\n idealDataPoints: 10,\n maxDataPoints: 50,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { tooManyCategories: 30 },\n fallback: { type: 'aggregate', strategy: 'top_n' },\n },\n switchableTo: ['pie', 'donut'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n },\n\n // ══════════════════════════════════════════════════════════════════════════\n // DISTRIBUTION CHARTS (MVP)\n // ══════════════════════════════════════════════════════════════════════════\n histogram: {\n id: 'histogram',\n name: 'Histogram',\n description: 'Shows distribution of values across bins',\n intent: 'distribution',\n phase: 'mvp',\n contract: {\n requiredDimensions: 0,\n requiredMeasures: 1,\n minDataPoints: 10,\n idealDataPoints: 50,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { sparseData: 10 },\n fallback: { type: 'show_kpi', message: 'Insufficient data for distribution' },\n },\n switchableTo: ['radar'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n },\n\n radar: {\n id: 'radar',\n name: 'Radar Chart',\n description: 'Multi-dimensional comparison in radial layout (Phase 2)',\n intent: 'distribution',\n phase: 'phase2',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 3,\n minDataPoints: 3,\n idealDataPoints: 6,\n maxDataPoints: 8,\n allowNegativeValues: false,\n requireNonZeroTotal: false,\n warningThresholds: { tooManyCategories: 8 },\n fallback: { type: 'warn', message: 'Radar works best with 3-8 dimensions' },\n },\n switchableTo: ['histogram'],\n supportsStacking: false,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n // ══════════════════════════════════════════════════════════════════════════\n // RELATIONSHIP CHARTS\n // ══════════════════════════════════════════════════════════════════════════\n heatmap: {\n id: 'heatmap',\n name: 'Heatmap',\n description: 'Color-coded matrix showing intensity',\n intent: 'relationship',\n phase: 'mvp',\n contract: {\n requiredDimensions: 2,\n requiredMeasures: 1,\n minDataPoints: 9,\n idealDataPoints: 25,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { sparseData: 9 },\n fallback: { type: 'warn', message: 'Heatmap requires grid data' },\n },\n switchableTo: ['scatter'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n },\n\n scatter: {\n id: 'scatter',\n name: 'Scatter Plot',\n description: 'Shows correlation between two variables (Phase 2)',\n intent: 'relationship',\n phase: 'phase2',\n contract: {\n requiredDimensions: 0,\n requiredMeasures: 2,\n minDataPoints: 20,\n idealDataPoints: 100,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { sparseData: 20 },\n fallback: { type: 'show_kpi', message: 'Scatter requires 20+ points' },\n },\n switchableTo: ['bubble', 'heatmap'],\n supportsStacking: false,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n bubble: {\n id: 'bubble',\n name: 'Bubble Chart',\n description: 'Scatter with sized points for third dimension (Phase 2)',\n intent: 'relationship',\n phase: 'phase2',\n contract: {\n requiredDimensions: 0,\n requiredMeasures: 3,\n minDataPoints: 10,\n idealDataPoints: 50,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { sparseData: 10 },\n fallback: { type: 'show_kpi', message: 'Bubble requires 3 measures' },\n },\n switchableTo: ['scatter'],\n supportsStacking: false,\n supportsMultipleSeries: true,\n requiresTimeAxis: false,\n },\n\n // ══════════════════════════════════════════════════════════════════════════\n // GEOGRAPHIC CHARTS (Phase 2)\n // ══════════════════════════════════════════════════════════════════════════\n geo: {\n id: 'geo',\n name: 'Geographic Map',\n description: 'Map with regional data markers (Phase 2)',\n intent: 'geo',\n phase: 'phase2',\n contract: {\n requiredDimensions: 1, // geo dimension (country/region)\n requiredMeasures: 1,\n minDataPoints: 1,\n idealDataPoints: 10,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: {},\n fallback: { type: 'hide' },\n },\n switchableTo: ['choropleth'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n },\n\n choropleth: {\n id: 'choropleth',\n name: 'Choropleth Map',\n description: 'Color-shaded regions by value (Phase 2)',\n intent: 'geo',\n phase: 'phase2',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 3,\n idealDataPoints: 20,\n allowNegativeValues: false,\n requireNonZeroTotal: false,\n warningThresholds: {},\n fallback: { type: 'hide' },\n },\n switchableTo: ['geo'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n },\n\n // ══════════════════════════════════════════════════════════════════════════\n // SPECIAL CHARTS\n // ══════════════════════════════════════════════════════════════════════════\n funnel: {\n id: 'funnel',\n name: 'Funnel Chart',\n description: 'Shows conversion through sequential stages',\n intent: 'comparison',\n phase: 'mvp',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 3,\n idealDataPoints: 5,\n maxDataPoints: 7,\n allowNegativeValues: false,\n requireNonZeroTotal: true,\n warningThresholds: { tooManyCategories: 7 },\n fallback: { type: 'warn', message: 'Funnel requires sequential stages' },\n },\n switchableTo: ['bar'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n },\n\n waterfall: {\n id: 'waterfall',\n name: 'Waterfall Chart',\n description: 'Shows cumulative effect of sequential changes (Phase 2)',\n intent: 'comparison',\n phase: 'phase2',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 1,\n minDataPoints: 3,\n idealDataPoints: 6,\n maxDataPoints: 12,\n allowNegativeValues: true,\n requireNonZeroTotal: false,\n warningThresholds: { tooManyCategories: 10 },\n fallback: { type: 'warn', message: 'Waterfall requires sequential data' },\n },\n switchableTo: ['bar', 'column'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: false,\n },\n\n timeline: {\n id: 'timeline',\n name: 'Timeline',\n description: 'Shows events along time axis (Phase 2)',\n intent: 'trend',\n phase: 'phase2',\n contract: {\n requiredDimensions: 1,\n requiredMeasures: 0,\n minDataPoints: 2,\n idealDataPoints: 10,\n allowNegativeValues: false,\n requireNonZeroTotal: false,\n warningThresholds: {},\n fallback: { type: 'hide' },\n },\n switchableTo: ['line'],\n supportsStacking: false,\n supportsMultipleSeries: false,\n requiresTimeAxis: true,\n },\n};\n\n/* ============================================================================\n CHART FAMILY SWITCHING RULES\n ============================================================================ */\n\n/**\n * Maps intent to allowed chart types for switching.\n * Users can ONLY switch within the same intent family.\n */\nexport const INTENT_CHART_FAMILIES: Record<ChartIntent, ChartTypeId[]> = {\n trend: ['line', 'smooth_line', 'area', 'stacked_area', 'area_100pct'],\n comparison: ['bar', 'column', 'stacked_bar', 'stacked_column', 'column_100pct', 'funnel'],\n composition: ['pie', 'donut'],\n distribution: ['histogram'],\n relationship: ['heatmap'],\n geo: [],\n};\n\n/**\n * Get allowed chart types for switching from a given type.\n */\nexport function getAllowedSwitchTargets(currentType: ChartTypeId): ChartTypeId[] {\n const metadata = CHART_REGISTRY[currentType];\n if (!metadata) return [];\n\n // Only return MVP charts that are in the same family\n return metadata.switchableTo.filter((type) => {\n const targetMeta = CHART_REGISTRY[type];\n return targetMeta && targetMeta.phase === 'mvp';\n });\n}\n\n/**\n * Check if switching from one chart type to another is allowed.\n */\nexport function canSwitchChart(from: ChartTypeId, to: ChartTypeId): boolean {\n const fromMeta = CHART_REGISTRY[from];\n const toMeta = CHART_REGISTRY[to];\n\n if (!fromMeta || !toMeta) return false;\n\n // Must be same intent\n if (fromMeta.intent !== toMeta.intent) return false;\n\n // Must be in allowed list\n return fromMeta.switchableTo.includes(to);\n}\n\n/* ============================================================================\n DATA VALIDATION\n ============================================================================ */\n\nexport interface ChartValidationResult {\n isValid: boolean;\n warnings: string[];\n errors: string[];\n suggestedType?: ChartTypeId;\n fallbackAction?: ChartFallbackBehavior;\n}\n\n/**\n * Validate data against a chart's contract.\n */\nexport function validateChartData(\n chartType: ChartTypeId,\n data: unknown[],\n dimensions: string[],\n measures: string[],\n): ChartValidationResult {\n const metadata = CHART_REGISTRY[chartType];\n if (!metadata) {\n return {\n isValid: false,\n warnings: [],\n errors: [`Unknown chart type: ${chartType}`],\n };\n }\n\n const contract = metadata.contract;\n const warnings: string[] = [];\n const errors: string[] = [];\n\n // Check data points\n if (data.length < contract.minDataPoints) {\n errors.push(`Requires at least ${contract.minDataPoints} data points, got ${data.length}`);\n }\n\n if (contract.maxDataPoints && data.length > contract.maxDataPoints) {\n warnings.push(`Chart works best with ≤${contract.maxDataPoints} items. Consider aggregating.`);\n }\n\n // Check dimensions\n if (dimensions.length < contract.requiredDimensions) {\n errors.push(`Requires ${contract.requiredDimensions} dimension(s), got ${dimensions.length}`);\n }\n\n // Check measures\n if (measures.length < contract.requiredMeasures) {\n errors.push(`Requires ${contract.requiredMeasures} measure(s), got ${measures.length}`);\n }\n\n // Check for negative values if not allowed\n if (!contract.allowNegativeValues && data.length > 0) {\n const hasNegative = data.some((row: unknown) => {\n if (typeof row !== 'object' || row === null) return false;\n return measures.some((m) => {\n const val = (row as Record<string, unknown>)[m];\n return typeof val === 'number' && val < 0;\n });\n });\n if (hasNegative) {\n errors.push('This chart type does not support negative values');\n }\n }\n\n // Check warnings\n if (\n contract.warningThresholds.tooManyCategories &&\n data.length > contract.warningThresholds.tooManyCategories\n ) {\n warnings.push(`Too many categories (${data.length}). Consider grouping smaller values.`);\n }\n\n return {\n isValid: errors.length === 0,\n warnings,\n errors,\n fallbackAction: errors.length > 0 ? contract.fallback : undefined,\n };\n}\n\n/* ============================================================================\n CHART SELECTION HELPERS\n ============================================================================ */\n\n/**\n * Get MVP charts for a given intent.\n */\nexport function getMVPChartsForIntent(intent: ChartIntent): ChartTypeMetadata[] {\n return Object.values(CHART_REGISTRY).filter(\n (meta) => meta.intent === intent && meta.phase === 'mvp',\n );\n}\n\n/**\n * Get the default chart type for an intent.\n */\nexport function getDefaultChartForIntent(intent: ChartIntent): ChartTypeId {\n const defaults: Record<ChartIntent, ChartTypeId> = {\n trend: 'line',\n comparison: 'column',\n composition: 'donut',\n distribution: 'histogram',\n relationship: 'heatmap',\n geo: 'geo',\n };\n return defaults[intent];\n}\n\n/**\n * Suggest the best chart type for given data characteristics.\n */\nexport function suggestChartType(params: {\n hasTimeAxis: boolean;\n dimensionCount: number;\n measureCount: number;\n dataPointCount: number;\n hasNegativeValues: boolean;\n isSequential: boolean;\n}): ChartTypeId {\n const {\n hasTimeAxis,\n dimensionCount,\n measureCount,\n dataPointCount,\n hasNegativeValues,\n isSequential,\n } = params;\n\n // Time-based → trend charts\n if (hasTimeAxis && measureCount >= 1) {\n if (measureCount > 1 && !hasNegativeValues) return 'stacked_area';\n return 'line';\n }\n\n // Sequential stages → funnel\n if (isSequential && !hasNegativeValues && dataPointCount <= 7) {\n return 'funnel';\n }\n\n // Single measure, few categories → composition\n if (measureCount === 1 && dataPointCount <= 6 && !hasNegativeValues) {\n return 'donut';\n }\n\n // Two dimensions → heatmap\n if (dimensionCount === 2 && measureCount === 1) {\n return 'heatmap';\n }\n\n // Default to column chart\n return 'column';\n}\n","/* ============================================================================\n REPORT ENGINE — COMPOSITION VALIDATION\n ============================================================================ */\n\nimport React from 'react';\n\nexport interface ValidationIssue {\n ruleId: string;\n severity: 'error' | 'warning';\n message: string;\n component?: string;\n}\n\nexport interface ReportValidationResult {\n isValid: boolean;\n issues: ValidationIssue[];\n}\n\n/**\n * Validates the structure of a report against narrative rules.\n *\n * Rules:\n * - R1: ExecutiveThesis MUST appear exactly once, at the top (or very near top)\n * - R2: InsightBlock MUST precede any chart it references (Charts must be inside or after insights)\n * - R3: Charts CANNOT appear without a parent InsightBlock (Orphan charts)\n * - R6: Max 3 charts per InsightBlock\n */\nexport function validateReportStructure(children: React.ReactNode): ReportValidationResult {\n const issues: ValidationIssue[] = [];\n const childArray = React.Children.toArray(children);\n\n let hasThesis = false;\n let thesisIndex = -1;\n\n // Helper to get component name safely\n const getComponentName = (child: React.ReactNode): string | undefined => {\n if (!React.isValidElement(child)) return undefined;\n\n const type = child.type as { displayName?: string; name?: string };\n return type.displayName || type.name;\n };\n\n const isChart = (name?: string) => {\n return (\n name &&\n (name.endsWith('Chart') ||\n name === 'MBTIRadar' ||\n name === 'MBTITypeGrid' ||\n name === 'KeyMetric') // Metric is evidence too\n );\n };\n\n // First pass: Top-level analysis\n childArray.forEach((child, index) => {\n const name = getComponentName(child);\n\n if (name === 'ExecutiveThesis') {\n if (hasThesis) {\n issues.push({\n ruleId: 'R1',\n severity: 'error',\n message: 'Only one ExecutiveThesis is allowed per report.',\n component: 'ExecutiveThesis',\n });\n }\n hasThesis = true;\n thesisIndex = index;\n }\n\n // Check for orphan charts at root level\n if (isChart(name)) {\n issues.push({\n ruleId: 'R3',\n severity: 'error',\n message: `Orphan chart detected: <${name} />. Charts must be placed inside an InsightBlock or EvidenceGroup.`,\n component: name,\n });\n }\n\n // Check InsightBlock constraints\n if (name === 'InsightBlock' && React.isValidElement(child)) {\n validateInsightBlock(child, issues);\n }\n });\n\n // R1: Check Thesis existence and position\n if (!hasThesis) {\n issues.push({\n ruleId: 'R1',\n severity: 'error',\n message: 'Report must contain an ExecutiveThesis.',\n });\n } else if (thesisIndex > 2) {\n // Allow some spacers/headers before it\n issues.push({\n ruleId: 'R1',\n severity: 'warning',\n message: 'ExecutiveThesis should be the first major component in the report.',\n });\n }\n\n return {\n isValid: issues.filter((i) => i.severity === 'error').length === 0,\n issues,\n };\n}\n\nfunction validateInsightBlock(node: React.ReactElement, issues: ValidationIssue[]) {\n const children = node.props.children;\n const childArray = React.Children.toArray(children);\n\n // Count charts inside this block (recursive check not strictly needed if structure is flat)\n let chartsInBlock = 0;\n\n const countCharts = (nodes: React.ReactNode[]) => {\n nodes.forEach((n) => {\n const name = getComponentName(n);\n if (isChart(name)) {\n chartsInBlock++;\n }\n // Check inside EvidenceGroup\n if (name === 'EvidenceGroup' && React.isValidElement(n)) {\n countCharts(React.Children.toArray(n.props.children));\n }\n });\n };\n\n countCharts(childArray);\n\n // R6: Max 3 charts\n if (chartsInBlock > 3) {\n issues.push({\n ruleId: 'R6',\n severity: 'warning',\n message: `InsightBlock contains ${chartsInBlock} charts. Recommended maximum is 3 to prevent data dumping.`,\n component: 'InsightBlock',\n });\n }\n}\n\n// Duplicate helper for local scope\nconst getComponentName = (child: React.ReactNode): string | undefined => {\n if (!React.isValidElement(child)) return undefined;\n const type = child.type as { displayName?: string; name?: string };\n return type.displayName || type.name;\n};\n\nconst isChart = (name?: string) => {\n return (\n name &&\n (name.endsWith('Chart') ||\n name === 'MBTIRadar' ||\n name === 'MBTITypeGrid' ||\n name === 'KeyMetric')\n );\n};\n"]}
|
package/dist/sections/index.cjs
CHANGED
|
@@ -1,32 +1,30 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
var chunkBJZ2DKS5_cjs = require('../chunk-BJZ2DKS5.cjs');
|
|
6
|
-
require('../chunk-MDB2WCRQ.cjs');
|
|
3
|
+
var chunkCVLD5RQK_cjs = require('../chunk-CVLD5RQK.cjs');
|
|
4
|
+
var chunk6QIQCUYC_cjs = require('../chunk-6QIQCUYC.cjs');
|
|
7
5
|
var react = require('react');
|
|
8
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
7
|
|
|
10
|
-
var SectionShell2 = react.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8
|
+
var SectionShell2 = react.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(chunk6QIQCUYC_cjs.SectionShell, { ref, ...props }));
|
|
11
9
|
SectionShell2.displayName = "SectionShell";
|
|
12
|
-
var SectionHeader2 = react.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
10
|
+
var SectionHeader2 = react.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(chunk6QIQCUYC_cjs.SectionHeader, { ref, ...props }));
|
|
13
11
|
SectionHeader2.displayName = "SectionHeader";
|
|
14
12
|
|
|
15
13
|
Object.defineProperty(exports, "CTASection", {
|
|
16
14
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkCVLD5RQK_cjs.CTASection; }
|
|
18
16
|
});
|
|
19
17
|
Object.defineProperty(exports, "FeatureSection", {
|
|
20
18
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkCVLD5RQK_cjs.FeatureSection; }
|
|
22
20
|
});
|
|
23
21
|
Object.defineProperty(exports, "HeroSection", {
|
|
24
22
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkCVLD5RQK_cjs.HeroSection; }
|
|
26
24
|
});
|
|
27
25
|
Object.defineProperty(exports, "StatsSection", {
|
|
28
26
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkCVLD5RQK_cjs.StatsSection; }
|
|
30
28
|
});
|
|
31
29
|
exports.SectionHeader = SectionHeader2;
|
|
32
30
|
exports.SectionShell = SectionShell2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sections/SectionShellBoundary.tsx"],"names":["SectionShell","SectionHeader"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/sections/SectionShellBoundary.tsx"],"names":["SectionShell","SectionHeader"],"mappings":";;;;;;;;;;;;AAAA,SAAS,kBAAkB;AAgBzB;AADK,IAAMA,gBAAe,WAA8C,CAAC,OAAO,QAChF,oBAAC,gBAAiB,KAAW,GAAG,OAAO,CACxC;AAEDA,cAAa,cAAc;AAEpB,IAAMC,iBAAgB,WAA+C,CAAC,OAAO,QAClF,oBAAC,iBAAkB,KAAW,GAAG,OAAO,CACzC;AAEDA,eAAc,cAAc","sourcesContent":["import { forwardRef } from 'react';\nimport {\n SectionShell as BaseSectionShell,\n SectionHeader as BaseSectionHeader,\n type SectionShellProps,\n type SectionHeaderProps,\n} from '../components/SectionShell/SectionShell';\n\n/**\n * Stable public wrapper for the sections entry.\n *\n * This keeps the emitted `@salesmind-ai/design-system/sections` declaration\n * surface from degrading into hashed re-export aliases that confuse some\n * consumers during workspace builds.\n */\nexport const SectionShell = forwardRef<HTMLDivElement, SectionShellProps>((props, ref) => (\n <BaseSectionShell ref={ref} {...props} />\n));\n\nSectionShell.displayName = 'SectionShell';\n\nexport const SectionHeader = forwardRef<HTMLDivElement, SectionHeaderProps>((props, ref) => (\n <BaseSectionHeader ref={ref} {...props} />\n));\n\nSectionHeader.displayName = 'SectionHeader';\n\nexport type { SectionShellProps, SectionHeaderProps };\n"]}
|
package/dist/sections/index.css
CHANGED
|
@@ -1,209 +1,3 @@
|
|
|
1
|
-
/* src/components/LayoutPrimitives/LayoutPrimitives.css */
|
|
2
|
-
.ds-box {
|
|
3
|
-
display: block;
|
|
4
|
-
box-sizing: border-box;
|
|
5
|
-
min-width: 0;
|
|
6
|
-
}
|
|
7
|
-
.ds-stack {
|
|
8
|
-
display: flex;
|
|
9
|
-
flex-direction: column;
|
|
10
|
-
}
|
|
11
|
-
.ds-stack--horizontal {
|
|
12
|
-
flex-direction: row;
|
|
13
|
-
}
|
|
14
|
-
.ds-grid {
|
|
15
|
-
display: grid;
|
|
16
|
-
}
|
|
17
|
-
.ds-grid--cols-1 {
|
|
18
|
-
grid-template-columns: repeat(1, 1fr);
|
|
19
|
-
}
|
|
20
|
-
.ds-grid--cols-2 {
|
|
21
|
-
grid-template-columns: repeat(1, 1fr);
|
|
22
|
-
}
|
|
23
|
-
@media (min-width: 640px) {
|
|
24
|
-
.ds-grid--cols-2 {
|
|
25
|
-
grid-template-columns: repeat(2, 1fr);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
.ds-grid--cols-3 {
|
|
29
|
-
grid-template-columns: repeat(1, 1fr);
|
|
30
|
-
}
|
|
31
|
-
@media (min-width: 640px) {
|
|
32
|
-
.ds-grid--cols-3 {
|
|
33
|
-
grid-template-columns: repeat(2, 1fr);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
@media (min-width: 1024px) {
|
|
37
|
-
.ds-grid--cols-3 {
|
|
38
|
-
grid-template-columns: repeat(3, 1fr);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
.ds-grid--cols-4 {
|
|
42
|
-
grid-template-columns: repeat(1, 1fr);
|
|
43
|
-
}
|
|
44
|
-
@media (min-width: 640px) {
|
|
45
|
-
.ds-grid--cols-4 {
|
|
46
|
-
grid-template-columns: repeat(2, 1fr);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
@media (min-width: 1024px) {
|
|
50
|
-
.ds-grid--cols-4 {
|
|
51
|
-
grid-template-columns: repeat(4, 1fr);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
.ds-grid--cols-5 {
|
|
55
|
-
grid-template-columns: repeat(1, 1fr);
|
|
56
|
-
}
|
|
57
|
-
@media (min-width: 640px) {
|
|
58
|
-
.ds-grid--cols-5 {
|
|
59
|
-
grid-template-columns: repeat(2, 1fr);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
@media (min-width: 768px) {
|
|
63
|
-
.ds-grid--cols-5 {
|
|
64
|
-
grid-template-columns: repeat(3, 1fr);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
@media (min-width: 1280px) {
|
|
68
|
-
.ds-grid--cols-5 {
|
|
69
|
-
grid-template-columns: repeat(5, 1fr);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
.ds-grid--cols-6 {
|
|
73
|
-
grid-template-columns: repeat(1, 1fr);
|
|
74
|
-
}
|
|
75
|
-
@media (min-width: 640px) {
|
|
76
|
-
.ds-grid--cols-6 {
|
|
77
|
-
grid-template-columns: repeat(2, 1fr);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
@media (min-width: 768px) {
|
|
81
|
-
.ds-grid--cols-6 {
|
|
82
|
-
grid-template-columns: repeat(3, 1fr);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
@media (min-width: 1280px) {
|
|
86
|
-
.ds-grid--cols-6 {
|
|
87
|
-
grid-template-columns: repeat(6, 1fr);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
@media (min-width: 1920px) {
|
|
91
|
-
.ds-grid--cols-3:not(.ds-grid--fixed) {
|
|
92
|
-
grid-template-columns: repeat(4, 1fr);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
@media (min-width: 2560px) {
|
|
96
|
-
.ds-grid--cols-2:not(.ds-grid--fixed) {
|
|
97
|
-
grid-template-columns: repeat(3, 1fr);
|
|
98
|
-
}
|
|
99
|
-
.ds-grid--cols-3:not(.ds-grid--fixed) {
|
|
100
|
-
grid-template-columns: repeat(4, 1fr);
|
|
101
|
-
}
|
|
102
|
-
.ds-grid--cols-4:not(.ds-grid--fixed) {
|
|
103
|
-
grid-template-columns: repeat(5, 1fr);
|
|
104
|
-
}
|
|
105
|
-
.ds-grid--cols-5:not(.ds-grid--fixed) {
|
|
106
|
-
grid-template-columns: repeat(6, 1fr);
|
|
107
|
-
}
|
|
108
|
-
.ds-grid--cols-6:not(.ds-grid--fixed) {
|
|
109
|
-
grid-template-columns: repeat(8, 1fr);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
@media (min-width: 3840px) {
|
|
113
|
-
.ds-grid--cols-2:not(.ds-grid--fixed) {
|
|
114
|
-
grid-template-columns: repeat(3, 1fr);
|
|
115
|
-
}
|
|
116
|
-
.ds-grid--cols-3:not(.ds-grid--fixed) {
|
|
117
|
-
grid-template-columns: repeat(5, 1fr);
|
|
118
|
-
}
|
|
119
|
-
.ds-grid--cols-4:not(.ds-grid--fixed) {
|
|
120
|
-
grid-template-columns: repeat(6, 1fr);
|
|
121
|
-
}
|
|
122
|
-
.ds-grid--cols-5:not(.ds-grid--fixed) {
|
|
123
|
-
grid-template-columns: repeat(8, 1fr);
|
|
124
|
-
}
|
|
125
|
-
.ds-grid--cols-6:not(.ds-grid--fixed) {
|
|
126
|
-
grid-template-columns: repeat(10, 1fr);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
:root {
|
|
130
|
-
--container-default-max: 1200px;
|
|
131
|
-
}
|
|
132
|
-
@media (min-width: 1537px) {
|
|
133
|
-
:root {
|
|
134
|
-
--container-default-max: 1400px;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
@media (min-width: 1921px) {
|
|
138
|
-
:root {
|
|
139
|
-
--container-default-max: 1600px;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
@media (min-width: 2561px) {
|
|
143
|
-
:root {
|
|
144
|
-
--container-default-max: 1920px;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
.ds-container {
|
|
148
|
-
width: 100%;
|
|
149
|
-
margin-left: auto;
|
|
150
|
-
margin-right: auto;
|
|
151
|
-
padding-left: var(--container-padding-x, var(--space-4));
|
|
152
|
-
padding-right: var(--container-padding-x, var(--space-4));
|
|
153
|
-
}
|
|
154
|
-
@media (min-width: 1537px) {
|
|
155
|
-
.ds-container {
|
|
156
|
-
--container-padding-x: var(--space-6);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
@media (min-width: 2561px) {
|
|
160
|
-
.ds-container {
|
|
161
|
-
--container-padding-x: var(--space-8);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
.ds-section-block {
|
|
165
|
-
position: relative;
|
|
166
|
-
}
|
|
167
|
-
.ds-section-block--none {
|
|
168
|
-
padding-top: 0;
|
|
169
|
-
padding-bottom: 0;
|
|
170
|
-
}
|
|
171
|
-
.ds-section-block--sm {
|
|
172
|
-
padding-top: var(--space-8, 2rem);
|
|
173
|
-
padding-bottom: var(--space-8, 2rem);
|
|
174
|
-
}
|
|
175
|
-
.ds-section-block--md {
|
|
176
|
-
padding-top: var(--space-16, 4rem);
|
|
177
|
-
padding-bottom: var(--space-16, 4rem);
|
|
178
|
-
}
|
|
179
|
-
@media (min-width: 768px) {
|
|
180
|
-
.ds-section-block--md {
|
|
181
|
-
padding-top: var(--space-24, 6rem);
|
|
182
|
-
padding-bottom: var(--space-24, 6rem);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
.ds-section-block--lg {
|
|
186
|
-
padding-top: var(--space-24, 6rem);
|
|
187
|
-
padding-bottom: var(--space-24, 6rem);
|
|
188
|
-
}
|
|
189
|
-
@media (min-width: 768px) {
|
|
190
|
-
.ds-section-block--lg {
|
|
191
|
-
padding-top: var(--space-32, 8rem);
|
|
192
|
-
padding-bottom: var(--space-32, 8rem);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
.ds-visually-hidden {
|
|
196
|
-
position: absolute;
|
|
197
|
-
width: 1px;
|
|
198
|
-
height: 1px;
|
|
199
|
-
padding: 0;
|
|
200
|
-
margin: -1px;
|
|
201
|
-
overflow: hidden;
|
|
202
|
-
clip-path: inset(50%);
|
|
203
|
-
white-space: nowrap;
|
|
204
|
-
border-width: 0;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
1
|
/* src/components/SectionShell/SectionShell.css */
|
|
208
2
|
.ds-section {
|
|
209
3
|
position: relative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/LayoutPrimitives/LayoutPrimitives.css","../../src/components/SectionShell/SectionShell.css","../../src/components/HeroSection/HeroSection.css","../../src/components/FeatureSection/FeatureSection.css","../../src/components/CTASection/CTASection.css","../../src/components/StatsSection/StatsSection.css"],"sourcesContent":["/* Layout Primitives Base Styles */\n\n.ds-box {\n display: block;\n box-sizing: border-box;\n min-width: 0;\n}\n\n.ds-stack {\n display: flex;\n flex-direction: column;\n}\n\n.ds-stack--horizontal {\n flex-direction: row;\n}\n\n.ds-grid {\n display: grid;\n}\n\n/* ── Grid responsive columns ──────────────────────────────────────────────────\n Auto-collapse to fewer columns at narrow viewports.\n These classes are overrideable by Tailwind responsive utilities (e.g.\n className=\"grid-cols-1 md:grid-cols-2 lg:grid-cols-4\") because Tailwind\n utilities load after DS styles and win at equal specificity.\n ──────────────────────────────────────────────────────────────────────────── */\n\n/* 1 column — no responsive change */\n.ds-grid--cols-1 {\n grid-template-columns: repeat(1, 1fr);\n}\n\n/* 2 columns → 1 on mobile */\n.ds-grid--cols-2 {\n grid-template-columns: repeat(1, 1fr);\n}\n\n@media (min-width: 640px) {\n .ds-grid--cols-2 {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n/* 3 columns → 1 on mobile, 2 on sm, 3 on lg */\n.ds-grid--cols-3 {\n grid-template-columns: repeat(1, 1fr);\n}\n\n@media (min-width: 640px) {\n .ds-grid--cols-3 {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (min-width: 1024px) {\n .ds-grid--cols-3 {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n\n/* 4 columns → 1 on mobile, 2 on sm, 4 on lg */\n.ds-grid--cols-4 {\n grid-template-columns: repeat(1, 1fr);\n}\n\n@media (min-width: 640px) {\n .ds-grid--cols-4 {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (min-width: 1024px) {\n .ds-grid--cols-4 {\n grid-template-columns: repeat(4, 1fr);\n }\n}\n\n/* 5 columns → 1 on mobile, 2 on sm, 3 on md, 5 on xl */\n.ds-grid--cols-5 {\n grid-template-columns: repeat(1, 1fr);\n}\n\n@media (min-width: 640px) {\n .ds-grid--cols-5 {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (min-width: 768px) {\n .ds-grid--cols-5 {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n\n@media (min-width: 1280px) {\n .ds-grid--cols-5 {\n grid-template-columns: repeat(5, 1fr);\n }\n}\n\n/* 6 columns → 1 on mobile, 2 on sm, 3 on md, 6 on xl */\n.ds-grid--cols-6 {\n grid-template-columns: repeat(1, 1fr);\n}\n\n@media (min-width: 640px) {\n .ds-grid--cols-6 {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (min-width: 768px) {\n .ds-grid--cols-6 {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n\n@media (min-width: 1280px) {\n .ds-grid--cols-6 {\n grid-template-columns: repeat(6, 1fr);\n }\n}\n\n/* ── Grid expansion on wide screens (Space Budget Ladder) ─────────────────\n Grids expand to MORE columns on ultra-wide viewports.\n The .ds-grid--fixed class opts out of expansion.\n ──────────────────────────────────────────────────────────────────────────── */\n\n/* 3xl (1920px): expand 3→4, 4→4 stays, 5→5 stays, 6→6 stays */\n@media (min-width: 1920px) {\n .ds-grid--cols-3:not(.ds-grid--fixed) {\n grid-template-columns: repeat(4, 1fr);\n }\n}\n\n/* 4xl (2560px): expand 2→3, 3→4, 4→5, 5→6, 6→8 */\n@media (min-width: 2560px) {\n .ds-grid--cols-2:not(.ds-grid--fixed) {\n grid-template-columns: repeat(3, 1fr);\n }\n .ds-grid--cols-3:not(.ds-grid--fixed) {\n grid-template-columns: repeat(4, 1fr);\n }\n .ds-grid--cols-4:not(.ds-grid--fixed) {\n grid-template-columns: repeat(5, 1fr);\n }\n .ds-grid--cols-5:not(.ds-grid--fixed) {\n grid-template-columns: repeat(6, 1fr);\n }\n .ds-grid--cols-6:not(.ds-grid--fixed) {\n grid-template-columns: repeat(8, 1fr);\n }\n}\n\n/* 5xl (3840px): expand 2→3, 3→5, 4→6, 5→8, 6→10 */\n@media (min-width: 3840px) {\n .ds-grid--cols-2:not(.ds-grid--fixed) {\n grid-template-columns: repeat(3, 1fr);\n }\n .ds-grid--cols-3:not(.ds-grid--fixed) {\n grid-template-columns: repeat(5, 1fr);\n }\n .ds-grid--cols-4:not(.ds-grid--fixed) {\n grid-template-columns: repeat(6, 1fr);\n }\n .ds-grid--cols-5:not(.ds-grid--fixed) {\n grid-template-columns: repeat(8, 1fr);\n }\n .ds-grid--cols-6:not(.ds-grid--fixed) {\n grid-template-columns: repeat(10, 1fr);\n }\n}\n\n/* ── Container — Responsive max-width + padding ladder ────────────────────── */\n\n:root {\n --container-default-max: 1200px;\n}\n\n@media (min-width: 1537px) {\n :root { --container-default-max: 1400px; }\n}\n\n@media (min-width: 1921px) {\n :root { --container-default-max: 1600px; }\n}\n\n@media (min-width: 2561px) {\n :root { --container-default-max: 1920px; }\n}\n\n.ds-container {\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n padding-left: var(--container-padding-x, var(--space-4));\n padding-right: var(--container-padding-x, var(--space-4));\n}\n\n/* Container horizontal padding scales with viewport */\n@media (min-width: 1537px) {\n .ds-container {\n --container-padding-x: var(--space-6);\n }\n}\n\n@media (min-width: 2561px) {\n .ds-container {\n --container-padding-x: var(--space-8);\n }\n}\n\n/* Section block — lightweight <section> with vertical padding */\n\n.ds-section-block {\n position: relative;\n}\n\n.ds-section-block--none {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.ds-section-block--sm {\n padding-top: var(--space-8, 2rem);\n padding-bottom: var(--space-8, 2rem);\n}\n\n.ds-section-block--md {\n padding-top: var(--space-16, 4rem);\n padding-bottom: var(--space-16, 4rem);\n}\n\n@media (min-width: 768px) {\n .ds-section-block--md {\n padding-top: var(--space-24, 6rem);\n padding-bottom: var(--space-24, 6rem);\n }\n}\n\n.ds-section-block--lg {\n padding-top: var(--space-24, 6rem);\n padding-bottom: var(--space-24, 6rem);\n}\n\n@media (min-width: 768px) {\n .ds-section-block--lg {\n padding-top: var(--space-32, 8rem);\n padding-bottom: var(--space-32, 8rem);\n }\n}\n\n.ds-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n}\n","/* ============================================================================\n SECTION SHELL\n ============================================================================ */\n\n.ds-section {\n position: relative;\n width: 100%;\n padding: var(--space-16) 0;\n box-sizing: border-box;\n}\n\n/* Background Variants */\n.ds-section--bg-default {\n background-color: transparent;\n}\n\n.ds-section--bg-muted {\n background-color: var(--surface-alpha-1);\n}\n\n.ds-section--bg-brand {\n background: radial-gradient(circle at 50% 0%, rgba(var(--brand-pink-rgb), 0.15), transparent 70%);\n}\n\n.ds-section--bg-transparent {\n background-color: transparent;\n}\n\n.ds-section--bg-dark {\n background-color: var(--void-forced-dark, #08040a);\n color: var(--dark-text-primary, rgba(255, 255, 255, 0.98));\n background-image: radial-gradient(ellipse at 50% 0%, rgba(var(--brand-pink-rgb), 0.08) 0%, transparent 60%);\n --text-primary: var(--dark-text-primary, rgba(255, 255, 255, 0.98));\n --text-secondary: var(--dark-text-secondary, rgba(255, 255, 255, 0.8));\n --surface-alpha-1: var(--dark-surface-alpha, rgba(255, 255, 255, 0.06));\n}\n\n/* Padding Sizes */\n.ds-section--padding-none {\n padding: 0;\n}\n.ds-section--padding-sm {\n padding: var(--space-8) 0;\n}\n.ds-section--padding-md {\n padding: var(--space-16) 0;\n}\n.ds-section--padding-lg {\n padding: var(--space-20) 0;\n}\n\n/* ==========================================================================\n Section Header\n ========================================================================== */\n\n.ds-section-header {\n --ds-section-header-margin-bottom: var(--space-12);\n --ds-section-header-title-size: var(--font-size-3xl);\n margin-bottom: var(--ds-section-header-margin-bottom);\n display: flex;\n flex-direction: column;\n gap: var(--space-4);\n}\n\n.ds-section-header--center {\n text-align: center;\n align-items: center;\n}\n.ds-section-header--left {\n text-align: left;\n align-items: flex-start;\n}\n.ds-section-header--right {\n text-align: right;\n align-items: flex-end;\n}\n\n.ds-section-header--compact {\n --ds-section-header-margin-bottom: var(--space-6);\n --ds-section-header-title-size: var(--font-size-2xl);\n}\n\n.ds-section-header--large {\n --ds-section-header-margin-bottom: var(--space-16);\n --ds-section-header-title-size: var(--font-size-4xl);\n}\n\n.ds-section-header__eyebrow {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--brand-pink-readable, var(--brand-pink));\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing-wide);\n font-weight: var(--font-weight-medium);\n}\n\n.ds-section-header__title {\n font-family: var(--font-family);\n font-size: var(--ds-section-header-title-size);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n line-height: var(--line-height-tight);\n margin: 0;\n}\n\n.ds-section-header__subtitle {\n font-family: var(--font-family);\n font-size: var(--font-size-lg);\n color: var(--text-secondary);\n max-width: 65ch;\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* Responsive adjustments — Mobile */\n@media (max-width: 768px) {\n .ds-section {\n padding: var(--space-10) 0;\n }\n\n .ds-section--padding-lg {\n padding: var(--space-12) 0;\n }\n\n .ds-section-header {\n --ds-section-header-title-size: var(--font-size-2xl);\n }\n\n .ds-section-header--compact {\n --ds-section-header-title-size: var(--font-size-xl);\n }\n\n .ds-section-header--large {\n --ds-section-header-title-size: var(--font-size-3xl);\n }\n}\n\n/* Responsive adjustments — Wide (>=1920px) */\n@media (min-width: 1920px) {\n .ds-section {\n padding: var(--space-20) 0;\n }\n\n .ds-section--padding-sm {\n padding: var(--space-10) 0;\n }\n\n .ds-section--padding-md {\n padding: var(--space-20) 0;\n }\n\n .ds-section--padding-lg {\n padding: calc(var(--space-20) * 1.25) 0;\n }\n\n .ds-section-header {\n --ds-section-header-margin-bottom: var(--space-16);\n --ds-section-header-title-size: var(--font-size-4xl);\n }\n\n .ds-section-header--compact {\n --ds-section-header-margin-bottom: var(--space-12);\n --ds-section-header-title-size: var(--font-size-3xl);\n }\n\n .ds-section-header--large {\n --ds-section-header-margin-bottom: var(--space-20);\n --ds-section-header-title-size: var(--font-size-5xl);\n }\n}\n\n/* Responsive adjustments — Ultra (>=2560px) */\n@media (min-width: 2560px) {\n .ds-section {\n padding: calc(var(--space-20) * 1.5) 0;\n }\n\n .ds-section--padding-lg {\n padding: calc(var(--space-20) * 1.75) 0;\n }\n\n .ds-section-header {\n --ds-section-header-margin-bottom: var(--space-20);\n --ds-section-header-title-size: var(--font-size-5xl);\n gap: var(--space-6);\n }\n\n .ds-section-header--compact {\n --ds-section-header-margin-bottom: var(--space-16);\n --ds-section-header-title-size: var(--font-size-4xl);\n }\n\n .ds-section-header--large {\n --ds-section-header-margin-bottom: calc(var(--space-20) * 1.25);\n --ds-section-header-title-size: var(--font-size-6xl);\n }\n\n .ds-section-header__subtitle {\n font-size: var(--font-size-xl);\n }\n}\n\n/* Responsive adjustments — 4K+ (>=3840px) */\n@media (min-width: 3840px) {\n .ds-section {\n padding: calc(var(--space-20) * 2) 0;\n }\n\n .ds-section--padding-lg {\n padding: calc(var(--space-20) * 2.5) 0;\n }\n\n .ds-section-header {\n --ds-section-header-title-size: var(--font-size-6xl);\n }\n\n .ds-section-header--compact {\n --ds-section-header-title-size: var(--font-size-5xl);\n }\n}\n","/* ============================================================================\n HERO SECTION — ELITE\n ============================================================================ */\n\n.ds-hero {\n position: relative;\n overflow: hidden;\n /* Ensure z-context for background effects */\n isolation: isolate;\n}\n\n/* ==========================================================================\n Background Effects\n ========================================================================== */\n\n/* Grid Texture */\n.ds-hero--bg-grid::before {\n content: '';\n position: absolute;\n inset: 0;\n background-size: 40px 40px;\n background-image:\n linear-gradient(to right, var(--void-grid-color) 1px, transparent 1px),\n linear-gradient(to bottom, var(--void-grid-color) 1px, transparent 1px);\n mask-image: radial-gradient(circle at 50% 50%, black 40%, transparent 100%);\n z-index: -2;\n pointer-events: none;\n}\n\n/* Glow Beams (Spotlights) */\n.ds-hero--bg-glow::after {\n content: '';\n position: absolute;\n top: -20%;\n left: 50%;\n transform: translateX(-50%);\n width: 140%;\n height: 80%;\n background: radial-gradient(\n ellipse at center,\n rgba(var(--brand-pink-rgb), 0.15),\n transparent 70%\n );\n filter: blur(60px);\n z-index: -1;\n pointer-events: none;\n opacity: 0.8;\n}\n\n/* ==========================================================================\n Content Animation\n ========================================================================== */\n\n@keyframes ds-hero-fade-up {\n from {\n transform: translateY(20px);\n }\n to {\n transform: translateY(0);\n }\n}\n\n.ds-hero__content {\n display: flex;\n flex-direction: column;\n gap: var(--space-6);\n z-index: 2;\n position: relative;\n animation: ds-hero-fade-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n\n/* ==========================================================================\n Typography\n ========================================================================== */\n\n.ds-hero__title {\n font-family: var(--font-family);\n font-size: var(--font-size-display);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n line-height: var(--line-height-display);\n letter-spacing: var(--letter-spacing-tight);\n margin: 0;\n}\n\n/* Text Gradient support */\n.ds-hero__title em,\n.ds-hero__title span.highlight {\n font-style: normal;\n background: linear-gradient(135deg, var(--text-primary) 30%, var(--text-tertiary));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n color: var(--text-primary); /* Fallback */\n}\n\n.ds-hero__subtitle {\n font-family: var(--font-family);\n font-size: var(--font-size-lg);\n color: var(--text-secondary);\n line-height: 1.6;\n max-width: 60ch;\n margin: 0;\n}\n\n@media (min-width: 768px) {\n .ds-hero__subtitle {\n font-size: var(--font-size-xl);\n }\n}\n\n/* ==========================================================================\n Actions\n ========================================================================== */\n\n.ds-hero__actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-4);\n margin-top: var(--space-4);\n}\n\n.ds-hero--center .ds-hero__actions {\n justify-content: center;\n}\n\n/* ==========================================================================\n Media Frame (The \"Browser\" Look)\n ========================================================================== */\n\n.ds-hero__media-wrapper {\n position: relative;\n perspective: 1000px;\n animation: ds-hero-fade-up 1s cubic-bezier(0.16, 1, 0.3, 1) 0.2s both; /* Delayed entrance */\n}\n\n.ds-hero__media {\n position: relative;\n width: 100%;\n border-radius: var(--radius-panel);\n overflow: hidden;\n background: var(--glass-base);\n box-shadow:\n 0 20px 50px -10px var(--overlay-backdrop),\n 0 0 0 1px var(--glass-highlight-light);\n /* Optional: Tilt effect placeholder */\n transform-style: preserve-3d;\n}\n\n/* Browser Chrome (Optional decoration) */\n.ds-hero__media--browser::before {\n content: '';\n display: block;\n height: 32px;\n background: var(--glass-base-active);\n border-bottom: 1px solid var(--glass-base-active);\n background-image:\n radial-gradient(circle at 20px 16px, #ff5f57 4px, transparent 5px),\n radial-gradient(circle at 36px 16px, #febc2e 4px, transparent 5px),\n radial-gradient(circle at 52px 16px, #28c840 4px, transparent 5px);\n background-repeat: no-repeat;\n}\n\n.ds-hero__media img,\n.ds-hero__media video {\n width: 100%;\n height: auto;\n display: block;\n}\n\n/* ==========================================================================\n Floating Ornaments (Badges/Cards)\n ========================================================================== */\n\n.ds-hero__float {\n position: absolute;\n z-index: 3;\n animation: ds-hero-float 6s ease-in-out infinite;\n box-shadow: var(--glass-shadow-elevated);\n border-radius: var(--radius-card);\n max-width: 300px;\n}\n\n@keyframes ds-hero-float {\n 0%,\n 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(-10px);\n }\n}\n\n/* Preset Positions */\n.ds-hero__float--top-right {\n top: -20px;\n right: -20px;\n}\n.ds-hero__float--bottom-left {\n bottom: -20px;\n left: -20px;\n}\n\n@media (max-width: 768px) {\n .ds-hero__float {\n display: none;\n } /* Hide complex floats on mobile */\n}\n\n/* ==========================================================================\n Variants Layout Overrides\n ========================================================================== */\n\n/* CENTERED */\n.ds-hero--center .ds-hero__content {\n align-items: center;\n text-align: center;\n max-width: 900px;\n margin: 0 auto var(--space-16) auto;\n}\n\n/* SPLIT */\n.ds-hero--split .ds-hero__media-wrapper {\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n/* LEFT */\n.ds-hero--left .ds-hero__content {\n align-items: flex-start;\n text-align: left;\n}\n\n/* ==========================================================================\n Responsive — Wide + Ultra tiers\n ========================================================================== */\n\n/* Wide (>=1920px) — more vertical space, larger media */\n@media (min-width: 1920px) {\n .ds-hero__content {\n gap: var(--space-8);\n }\n\n .ds-hero__subtitle {\n font-size: var(--font-size-xl);\n max-width: 65ch;\n }\n\n .ds-hero__actions {\n gap: var(--space-5);\n margin-top: var(--space-6);\n }\n\n .ds-hero--center .ds-hero__content {\n max-width: 1000px;\n margin-bottom: var(--space-20);\n }\n}\n\n/* Ultra (>=2560px) — maximum visual impact */\n@media (min-width: 2560px) {\n .ds-hero__content {\n gap: var(--space-10);\n }\n\n .ds-hero__subtitle {\n font-size: var(--font-size-2xl);\n max-width: 70ch;\n }\n\n .ds-hero__actions {\n gap: var(--space-6);\n margin-top: var(--space-8);\n }\n\n .ds-hero--center .ds-hero__content {\n max-width: 1100px;\n }\n\n .ds-hero__float {\n max-width: 400px;\n }\n}\n","/* ============================================================================\n FEATURE SECTION\n ============================================================================ */\n\n.ds-feature-section {\n position: relative;\n}\n\n/* ==========================================================================\n Grid Layout\n ========================================================================== */\n\n.ds-feature-grid {\n display: grid;\n gap: var(--space-8);\n grid-template-columns: 1fr;\n}\n\n@media (min-width: 768px) {\n .ds-feature-grid--2-col {\n grid-template-columns: repeat(2, 1fr);\n }\n .ds-feature-grid--3-col {\n grid-template-columns: repeat(3, 1fr);\n }\n .ds-feature-grid--4-col {\n grid-template-columns: repeat(2, 1fr);\n } /* 2x2 on tablet */\n}\n\n@media (min-width: 1024px) {\n .ds-feature-grid--4-col {\n grid-template-columns: repeat(4, 1fr);\n }\n}\n\n/* ==========================================================================\n Feature Card (Grid Item)\n ========================================================================== */\n\n.ds-feature-card {\n display: flex;\n flex-direction: column;\n gap: var(--space-4);\n padding: var(--space-6);\n border-radius: var(--radius-card);\n background: var(--glass-base);\n border: 1px solid var(--rim-light-bottom);\n transition:\n transform var(--transition-base),\n box-shadow var(--transition-base);\n}\n\n.ds-feature-card:hover {\n transform: translateY(-2px);\n background: var(--glass-base-hover);\n box-shadow: var(--glass-shadow-elevated);\n border-color: var(--rim-light-top);\n}\n\n.ds-feature-card__icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-button);\n background: rgba(var(--brand-pink-rgb), 0.1);\n color: var(--brand-pink);\n margin-bottom: var(--space-2);\n}\n\n.ds-feature-card__title {\n font-family: var(--font-family);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: 0;\n}\n\n.ds-feature-card__description {\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* ==========================================================================\n ZigZag Layout (Rows)\n ========================================================================== */\n\n.ds-feature-zigzag {\n display: flex;\n flex-direction: column;\n gap: var(--space-16); /* Large gap between rows */\n}\n\n.ds-feature-row {\n display: grid;\n grid-template-columns: 1fr;\n gap: var(--space-8);\n align-items: center;\n}\n\n@media (min-width: 768px) {\n .ds-feature-row {\n grid-template-columns: 1fr 1fr;\n gap: var(--space-16);\n }\n\n /* Alternate order for even rows */\n .ds-feature-row:nth-child(even) .ds-feature-row__content {\n order: 2;\n }\n .ds-feature-row:nth-child(even) .ds-feature-row__media {\n order: 1;\n }\n}\n\n.ds-feature-row__content {\n display: flex;\n flex-direction: column;\n gap: var(--space-4);\n}\n\n.ds-feature-row__media {\n position: relative;\n border-radius: var(--radius-panel);\n overflow: hidden;\n box-shadow: var(--glass-shadow-elevated);\n border: 1px solid var(--rim-light-top);\n background: var(--glass-base);\n}\n\n.ds-feature-row__media img {\n width: 100%;\n height: auto;\n display: block;\n}\n\n/* Number badge for steps */\n.ds-feature-row__step {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--brand-pink);\n background: rgba(var(--brand-pink-rgb), 0.1);\n padding: var(--space-1) var(--space-2);\n border-radius: var(--radius-pill);\n align-self: flex-start;\n margin-bottom: var(--space-2);\n}\n","/* ============================================================================\n CTA SECTION\n ============================================================================ */\n\n.ds-cta-section {\n overflow: hidden;\n}\n\n/* ==========================================================================\n Content\n ========================================================================== */\n\n.ds-cta-content {\n display: flex;\n flex-direction: column;\n gap: var(--space-6);\n max-width: 800px;\n margin: 0 auto;\n}\n\n.ds-cta-section--center .ds-cta-content {\n align-items: center;\n text-align: center;\n}\n\n.ds-cta-section--split {\n display: grid;\n gap: var(--space-8);\n}\n\n@media (min-width: 768px) {\n .ds-cta-section--split {\n grid-template-columns: 3fr 2fr;\n align-items: center;\n }\n}\n\n/* ==========================================================================\n Typography\n ========================================================================== */\n\n.ds-cta-title {\n font-family: var(--font-family);\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n line-height: var(--line-height-tight);\n margin: 0;\n}\n\n.ds-cta-description {\n font-family: var(--font-family);\n font-size: var(--font-size-lg);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* ==========================================================================\n Actions\n ========================================================================== */\n\n.ds-cta-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-4);\n margin-top: var(--space-2);\n}\n\n.ds-cta-section--center .ds-cta-actions {\n justify-content: center;\n}\n\n.ds-cta-section--split .ds-cta-actions {\n justify-content: flex-end; /* Or flex-start depending on preference */\n}\n\n@media (min-width: 768px) {\n .ds-cta-section--split .ds-cta-actions {\n margin-top: 0;\n justify-content: flex-end;\n }\n}\n\n/* ==========================================================================\n Card Variant (Boxed)\n ========================================================================== */\n\n.ds-cta-card {\n background: var(--glass-base);\n border: 1px solid var(--rim-light-top);\n border-radius: var(--radius-panel);\n padding: var(--space-12) var(--space-8);\n box-shadow: var(--glass-shadow-elevated);\n position: relative;\n overflow: hidden;\n}\n\n/* Glow Effect for Brand variant */\n.ds-section--bg-brand .ds-cta-card {\n background: rgba(var(--brand-pink-rgb), 0.1);\n border-color: rgba(var(--brand-pink-rgb), 0.3);\n}\n","/* ============================================================================\n STATS SECTION\n ============================================================================ */\n\n.ds-stats-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--space-8);\n width: 100%;\n}\n\n@media (min-width: 768px) {\n .ds-stats-grid {\n grid-template-columns: repeat(var(--stats-columns, 4), 1fr);\n gap: var(--space-12);\n }\n}\n\n.ds-stat-card {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n text-align: center;\n padding: var(--space-6);\n border-radius: var(--radius-card);\n background: var(--glass-base);\n border: 1px solid var(--rim-light-bottom);\n transition: transform var(--transition-base);\n}\n\n.ds-stat-card:hover {\n transform: translateY(-2px);\n background: var(--glass-base-hover);\n border-color: var(--rim-light-top);\n}\n\n.ds-stat-value {\n font-family: var(--font-family);\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n line-height: 1;\n letter-spacing: var(--letter-spacing-tight);\n}\n\n@media (min-width: 768px) {\n .ds-stat-value {\n font-size: var(--font-size-5xl); /* 4xl */\n }\n}\n\n.ds-stat-label {\n font-family: var(--font-family);\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n font-weight: var(--font-weight-medium);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.ds-stat-suffix {\n font-size: var(--font-size-suffix);\n color: var(--brand-pink);\n vertical-align: super;\n margin-left: var(--space-1);\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/SectionShell/SectionShell.css","../../src/components/HeroSection/HeroSection.css","../../src/components/FeatureSection/FeatureSection.css","../../src/components/CTASection/CTASection.css","../../src/components/StatsSection/StatsSection.css"],"sourcesContent":["/* ============================================================================\n SECTION SHELL\n ============================================================================ */\n\n.ds-section {\n position: relative;\n width: 100%;\n padding: var(--space-16) 0;\n box-sizing: border-box;\n}\n\n/* Background Variants */\n.ds-section--bg-default {\n background-color: transparent;\n}\n\n.ds-section--bg-muted {\n background-color: var(--surface-alpha-1);\n}\n\n.ds-section--bg-brand {\n background: radial-gradient(circle at 50% 0%, rgba(var(--brand-pink-rgb), 0.15), transparent 70%);\n}\n\n.ds-section--bg-transparent {\n background-color: transparent;\n}\n\n.ds-section--bg-dark {\n background-color: var(--void-forced-dark, #08040a);\n color: var(--dark-text-primary, rgba(255, 255, 255, 0.98));\n background-image: radial-gradient(ellipse at 50% 0%, rgba(var(--brand-pink-rgb), 0.08) 0%, transparent 60%);\n --text-primary: var(--dark-text-primary, rgba(255, 255, 255, 0.98));\n --text-secondary: var(--dark-text-secondary, rgba(255, 255, 255, 0.8));\n --surface-alpha-1: var(--dark-surface-alpha, rgba(255, 255, 255, 0.06));\n}\n\n/* Padding Sizes */\n.ds-section--padding-none {\n padding: 0;\n}\n.ds-section--padding-sm {\n padding: var(--space-8) 0;\n}\n.ds-section--padding-md {\n padding: var(--space-16) 0;\n}\n.ds-section--padding-lg {\n padding: var(--space-20) 0;\n}\n\n/* ==========================================================================\n Section Header\n ========================================================================== */\n\n.ds-section-header {\n --ds-section-header-margin-bottom: var(--space-12);\n --ds-section-header-title-size: var(--font-size-3xl);\n margin-bottom: var(--ds-section-header-margin-bottom);\n display: flex;\n flex-direction: column;\n gap: var(--space-4);\n}\n\n.ds-section-header--center {\n text-align: center;\n align-items: center;\n}\n.ds-section-header--left {\n text-align: left;\n align-items: flex-start;\n}\n.ds-section-header--right {\n text-align: right;\n align-items: flex-end;\n}\n\n.ds-section-header--compact {\n --ds-section-header-margin-bottom: var(--space-6);\n --ds-section-header-title-size: var(--font-size-2xl);\n}\n\n.ds-section-header--large {\n --ds-section-header-margin-bottom: var(--space-16);\n --ds-section-header-title-size: var(--font-size-4xl);\n}\n\n.ds-section-header__eyebrow {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--brand-pink-readable, var(--brand-pink));\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing-wide);\n font-weight: var(--font-weight-medium);\n}\n\n.ds-section-header__title {\n font-family: var(--font-family);\n font-size: var(--ds-section-header-title-size);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n line-height: var(--line-height-tight);\n margin: 0;\n}\n\n.ds-section-header__subtitle {\n font-family: var(--font-family);\n font-size: var(--font-size-lg);\n color: var(--text-secondary);\n max-width: 65ch;\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* Responsive adjustments — Mobile */\n@media (max-width: 768px) {\n .ds-section {\n padding: var(--space-10) 0;\n }\n\n .ds-section--padding-lg {\n padding: var(--space-12) 0;\n }\n\n .ds-section-header {\n --ds-section-header-title-size: var(--font-size-2xl);\n }\n\n .ds-section-header--compact {\n --ds-section-header-title-size: var(--font-size-xl);\n }\n\n .ds-section-header--large {\n --ds-section-header-title-size: var(--font-size-3xl);\n }\n}\n\n/* Responsive adjustments — Wide (>=1920px) */\n@media (min-width: 1920px) {\n .ds-section {\n padding: var(--space-20) 0;\n }\n\n .ds-section--padding-sm {\n padding: var(--space-10) 0;\n }\n\n .ds-section--padding-md {\n padding: var(--space-20) 0;\n }\n\n .ds-section--padding-lg {\n padding: calc(var(--space-20) * 1.25) 0;\n }\n\n .ds-section-header {\n --ds-section-header-margin-bottom: var(--space-16);\n --ds-section-header-title-size: var(--font-size-4xl);\n }\n\n .ds-section-header--compact {\n --ds-section-header-margin-bottom: var(--space-12);\n --ds-section-header-title-size: var(--font-size-3xl);\n }\n\n .ds-section-header--large {\n --ds-section-header-margin-bottom: var(--space-20);\n --ds-section-header-title-size: var(--font-size-5xl);\n }\n}\n\n/* Responsive adjustments — Ultra (>=2560px) */\n@media (min-width: 2560px) {\n .ds-section {\n padding: calc(var(--space-20) * 1.5) 0;\n }\n\n .ds-section--padding-lg {\n padding: calc(var(--space-20) * 1.75) 0;\n }\n\n .ds-section-header {\n --ds-section-header-margin-bottom: var(--space-20);\n --ds-section-header-title-size: var(--font-size-5xl);\n gap: var(--space-6);\n }\n\n .ds-section-header--compact {\n --ds-section-header-margin-bottom: var(--space-16);\n --ds-section-header-title-size: var(--font-size-4xl);\n }\n\n .ds-section-header--large {\n --ds-section-header-margin-bottom: calc(var(--space-20) * 1.25);\n --ds-section-header-title-size: var(--font-size-6xl);\n }\n\n .ds-section-header__subtitle {\n font-size: var(--font-size-xl);\n }\n}\n\n/* Responsive adjustments — 4K+ (>=3840px) */\n@media (min-width: 3840px) {\n .ds-section {\n padding: calc(var(--space-20) * 2) 0;\n }\n\n .ds-section--padding-lg {\n padding: calc(var(--space-20) * 2.5) 0;\n }\n\n .ds-section-header {\n --ds-section-header-title-size: var(--font-size-6xl);\n }\n\n .ds-section-header--compact {\n --ds-section-header-title-size: var(--font-size-5xl);\n }\n}\n","/* ============================================================================\n HERO SECTION — ELITE\n ============================================================================ */\n\n.ds-hero {\n position: relative;\n overflow: hidden;\n /* Ensure z-context for background effects */\n isolation: isolate;\n}\n\n/* ==========================================================================\n Background Effects\n ========================================================================== */\n\n/* Grid Texture */\n.ds-hero--bg-grid::before {\n content: '';\n position: absolute;\n inset: 0;\n background-size: 40px 40px;\n background-image:\n linear-gradient(to right, var(--void-grid-color) 1px, transparent 1px),\n linear-gradient(to bottom, var(--void-grid-color) 1px, transparent 1px);\n mask-image: radial-gradient(circle at 50% 50%, black 40%, transparent 100%);\n z-index: -2;\n pointer-events: none;\n}\n\n/* Glow Beams (Spotlights) */\n.ds-hero--bg-glow::after {\n content: '';\n position: absolute;\n top: -20%;\n left: 50%;\n transform: translateX(-50%);\n width: 140%;\n height: 80%;\n background: radial-gradient(\n ellipse at center,\n rgba(var(--brand-pink-rgb), 0.15),\n transparent 70%\n );\n filter: blur(60px);\n z-index: -1;\n pointer-events: none;\n opacity: 0.8;\n}\n\n/* ==========================================================================\n Content Animation\n ========================================================================== */\n\n@keyframes ds-hero-fade-up {\n from {\n transform: translateY(20px);\n }\n to {\n transform: translateY(0);\n }\n}\n\n.ds-hero__content {\n display: flex;\n flex-direction: column;\n gap: var(--space-6);\n z-index: 2;\n position: relative;\n animation: ds-hero-fade-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;\n}\n\n/* ==========================================================================\n Typography\n ========================================================================== */\n\n.ds-hero__title {\n font-family: var(--font-family);\n font-size: var(--font-size-display);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n line-height: var(--line-height-display);\n letter-spacing: var(--letter-spacing-tight);\n margin: 0;\n}\n\n/* Text Gradient support */\n.ds-hero__title em,\n.ds-hero__title span.highlight {\n font-style: normal;\n background: linear-gradient(135deg, var(--text-primary) 30%, var(--text-tertiary));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n color: var(--text-primary); /* Fallback */\n}\n\n.ds-hero__subtitle {\n font-family: var(--font-family);\n font-size: var(--font-size-lg);\n color: var(--text-secondary);\n line-height: 1.6;\n max-width: 60ch;\n margin: 0;\n}\n\n@media (min-width: 768px) {\n .ds-hero__subtitle {\n font-size: var(--font-size-xl);\n }\n}\n\n/* ==========================================================================\n Actions\n ========================================================================== */\n\n.ds-hero__actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-4);\n margin-top: var(--space-4);\n}\n\n.ds-hero--center .ds-hero__actions {\n justify-content: center;\n}\n\n/* ==========================================================================\n Media Frame (The \"Browser\" Look)\n ========================================================================== */\n\n.ds-hero__media-wrapper {\n position: relative;\n perspective: 1000px;\n animation: ds-hero-fade-up 1s cubic-bezier(0.16, 1, 0.3, 1) 0.2s both; /* Delayed entrance */\n}\n\n.ds-hero__media {\n position: relative;\n width: 100%;\n border-radius: var(--radius-panel);\n overflow: hidden;\n background: var(--glass-base);\n box-shadow:\n 0 20px 50px -10px var(--overlay-backdrop),\n 0 0 0 1px var(--glass-highlight-light);\n /* Optional: Tilt effect placeholder */\n transform-style: preserve-3d;\n}\n\n/* Browser Chrome (Optional decoration) */\n.ds-hero__media--browser::before {\n content: '';\n display: block;\n height: 32px;\n background: var(--glass-base-active);\n border-bottom: 1px solid var(--glass-base-active);\n background-image:\n radial-gradient(circle at 20px 16px, #ff5f57 4px, transparent 5px),\n radial-gradient(circle at 36px 16px, #febc2e 4px, transparent 5px),\n radial-gradient(circle at 52px 16px, #28c840 4px, transparent 5px);\n background-repeat: no-repeat;\n}\n\n.ds-hero__media img,\n.ds-hero__media video {\n width: 100%;\n height: auto;\n display: block;\n}\n\n/* ==========================================================================\n Floating Ornaments (Badges/Cards)\n ========================================================================== */\n\n.ds-hero__float {\n position: absolute;\n z-index: 3;\n animation: ds-hero-float 6s ease-in-out infinite;\n box-shadow: var(--glass-shadow-elevated);\n border-radius: var(--radius-card);\n max-width: 300px;\n}\n\n@keyframes ds-hero-float {\n 0%,\n 100% {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(-10px);\n }\n}\n\n/* Preset Positions */\n.ds-hero__float--top-right {\n top: -20px;\n right: -20px;\n}\n.ds-hero__float--bottom-left {\n bottom: -20px;\n left: -20px;\n}\n\n@media (max-width: 768px) {\n .ds-hero__float {\n display: none;\n } /* Hide complex floats on mobile */\n}\n\n/* ==========================================================================\n Variants Layout Overrides\n ========================================================================== */\n\n/* CENTERED */\n.ds-hero--center .ds-hero__content {\n align-items: center;\n text-align: center;\n max-width: 900px;\n margin: 0 auto var(--space-16) auto;\n}\n\n/* SPLIT */\n.ds-hero--split .ds-hero__media-wrapper {\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n/* LEFT */\n.ds-hero--left .ds-hero__content {\n align-items: flex-start;\n text-align: left;\n}\n\n/* ==========================================================================\n Responsive — Wide + Ultra tiers\n ========================================================================== */\n\n/* Wide (>=1920px) — more vertical space, larger media */\n@media (min-width: 1920px) {\n .ds-hero__content {\n gap: var(--space-8);\n }\n\n .ds-hero__subtitle {\n font-size: var(--font-size-xl);\n max-width: 65ch;\n }\n\n .ds-hero__actions {\n gap: var(--space-5);\n margin-top: var(--space-6);\n }\n\n .ds-hero--center .ds-hero__content {\n max-width: 1000px;\n margin-bottom: var(--space-20);\n }\n}\n\n/* Ultra (>=2560px) — maximum visual impact */\n@media (min-width: 2560px) {\n .ds-hero__content {\n gap: var(--space-10);\n }\n\n .ds-hero__subtitle {\n font-size: var(--font-size-2xl);\n max-width: 70ch;\n }\n\n .ds-hero__actions {\n gap: var(--space-6);\n margin-top: var(--space-8);\n }\n\n .ds-hero--center .ds-hero__content {\n max-width: 1100px;\n }\n\n .ds-hero__float {\n max-width: 400px;\n }\n}\n","/* ============================================================================\n FEATURE SECTION\n ============================================================================ */\n\n.ds-feature-section {\n position: relative;\n}\n\n/* ==========================================================================\n Grid Layout\n ========================================================================== */\n\n.ds-feature-grid {\n display: grid;\n gap: var(--space-8);\n grid-template-columns: 1fr;\n}\n\n@media (min-width: 768px) {\n .ds-feature-grid--2-col {\n grid-template-columns: repeat(2, 1fr);\n }\n .ds-feature-grid--3-col {\n grid-template-columns: repeat(3, 1fr);\n }\n .ds-feature-grid--4-col {\n grid-template-columns: repeat(2, 1fr);\n } /* 2x2 on tablet */\n}\n\n@media (min-width: 1024px) {\n .ds-feature-grid--4-col {\n grid-template-columns: repeat(4, 1fr);\n }\n}\n\n/* ==========================================================================\n Feature Card (Grid Item)\n ========================================================================== */\n\n.ds-feature-card {\n display: flex;\n flex-direction: column;\n gap: var(--space-4);\n padding: var(--space-6);\n border-radius: var(--radius-card);\n background: var(--glass-base);\n border: 1px solid var(--rim-light-bottom);\n transition:\n transform var(--transition-base),\n box-shadow var(--transition-base);\n}\n\n.ds-feature-card:hover {\n transform: translateY(-2px);\n background: var(--glass-base-hover);\n box-shadow: var(--glass-shadow-elevated);\n border-color: var(--rim-light-top);\n}\n\n.ds-feature-card__icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-button);\n background: rgba(var(--brand-pink-rgb), 0.1);\n color: var(--brand-pink);\n margin-bottom: var(--space-2);\n}\n\n.ds-feature-card__title {\n font-family: var(--font-family);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: 0;\n}\n\n.ds-feature-card__description {\n font-family: var(--font-family);\n font-size: var(--font-size-base);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* ==========================================================================\n ZigZag Layout (Rows)\n ========================================================================== */\n\n.ds-feature-zigzag {\n display: flex;\n flex-direction: column;\n gap: var(--space-16); /* Large gap between rows */\n}\n\n.ds-feature-row {\n display: grid;\n grid-template-columns: 1fr;\n gap: var(--space-8);\n align-items: center;\n}\n\n@media (min-width: 768px) {\n .ds-feature-row {\n grid-template-columns: 1fr 1fr;\n gap: var(--space-16);\n }\n\n /* Alternate order for even rows */\n .ds-feature-row:nth-child(even) .ds-feature-row__content {\n order: 2;\n }\n .ds-feature-row:nth-child(even) .ds-feature-row__media {\n order: 1;\n }\n}\n\n.ds-feature-row__content {\n display: flex;\n flex-direction: column;\n gap: var(--space-4);\n}\n\n.ds-feature-row__media {\n position: relative;\n border-radius: var(--radius-panel);\n overflow: hidden;\n box-shadow: var(--glass-shadow-elevated);\n border: 1px solid var(--rim-light-top);\n background: var(--glass-base);\n}\n\n.ds-feature-row__media img {\n width: 100%;\n height: auto;\n display: block;\n}\n\n/* Number badge for steps */\n.ds-feature-row__step {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--brand-pink);\n background: rgba(var(--brand-pink-rgb), 0.1);\n padding: var(--space-1) var(--space-2);\n border-radius: var(--radius-pill);\n align-self: flex-start;\n margin-bottom: var(--space-2);\n}\n","/* ============================================================================\n CTA SECTION\n ============================================================================ */\n\n.ds-cta-section {\n overflow: hidden;\n}\n\n/* ==========================================================================\n Content\n ========================================================================== */\n\n.ds-cta-content {\n display: flex;\n flex-direction: column;\n gap: var(--space-6);\n max-width: 800px;\n margin: 0 auto;\n}\n\n.ds-cta-section--center .ds-cta-content {\n align-items: center;\n text-align: center;\n}\n\n.ds-cta-section--split {\n display: grid;\n gap: var(--space-8);\n}\n\n@media (min-width: 768px) {\n .ds-cta-section--split {\n grid-template-columns: 3fr 2fr;\n align-items: center;\n }\n}\n\n/* ==========================================================================\n Typography\n ========================================================================== */\n\n.ds-cta-title {\n font-family: var(--font-family);\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n line-height: var(--line-height-tight);\n margin: 0;\n}\n\n.ds-cta-description {\n font-family: var(--font-family);\n font-size: var(--font-size-lg);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* ==========================================================================\n Actions\n ========================================================================== */\n\n.ds-cta-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-4);\n margin-top: var(--space-2);\n}\n\n.ds-cta-section--center .ds-cta-actions {\n justify-content: center;\n}\n\n.ds-cta-section--split .ds-cta-actions {\n justify-content: flex-end; /* Or flex-start depending on preference */\n}\n\n@media (min-width: 768px) {\n .ds-cta-section--split .ds-cta-actions {\n margin-top: 0;\n justify-content: flex-end;\n }\n}\n\n/* ==========================================================================\n Card Variant (Boxed)\n ========================================================================== */\n\n.ds-cta-card {\n background: var(--glass-base);\n border: 1px solid var(--rim-light-top);\n border-radius: var(--radius-panel);\n padding: var(--space-12) var(--space-8);\n box-shadow: var(--glass-shadow-elevated);\n position: relative;\n overflow: hidden;\n}\n\n/* Glow Effect for Brand variant */\n.ds-section--bg-brand .ds-cta-card {\n background: rgba(var(--brand-pink-rgb), 0.1);\n border-color: rgba(var(--brand-pink-rgb), 0.3);\n}\n","/* ============================================================================\n STATS SECTION\n ============================================================================ */\n\n.ds-stats-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: var(--space-8);\n width: 100%;\n}\n\n@media (min-width: 768px) {\n .ds-stats-grid {\n grid-template-columns: repeat(var(--stats-columns, 4), 1fr);\n gap: var(--space-12);\n }\n}\n\n.ds-stat-card {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n text-align: center;\n padding: var(--space-6);\n border-radius: var(--radius-card);\n background: var(--glass-base);\n border: 1px solid var(--rim-light-bottom);\n transition: transform var(--transition-base);\n}\n\n.ds-stat-card:hover {\n transform: translateY(-2px);\n background: var(--glass-base-hover);\n border-color: var(--rim-light-top);\n}\n\n.ds-stat-value {\n font-family: var(--font-family);\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n line-height: 1;\n letter-spacing: var(--letter-spacing-tight);\n}\n\n@media (min-width: 768px) {\n .ds-stat-value {\n font-size: var(--font-size-5xl); /* 4xl */\n }\n}\n\n.ds-stat-label {\n font-family: var(--font-family);\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n font-weight: var(--font-weight-medium);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.ds-stat-suffix {\n font-size: var(--font-size-suffix);\n color: var(--brand-pink);\n vertical-align: super;\n margin-left: var(--space-1);\n}\n"],"mappings":"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","names":[]}
|
package/dist/sections/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
export { CTASection, FeatureSection, HeroSection, StatsSection } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import { SectionShell, SectionHeader } from '../chunk-VFJZQQZU.js';
|
|
4
|
-
import '../chunk-HN4PHABT.js';
|
|
1
|
+
export { CTASection, FeatureSection, HeroSection, StatsSection } from '../chunk-PBYRTNQ5.js';
|
|
2
|
+
import { SectionShell, SectionHeader } from '../chunk-AMNY5TS3.js';
|
|
5
3
|
import { forwardRef } from 'react';
|
|
6
4
|
import { jsx } from 'react/jsx-runtime';
|
|
7
5
|
|