diff --git a/apps/web/src/components/player/VisualizerSettingsModal.tsx b/apps/web/src/components/player/VisualizerSettingsModal.tsx
index 5453a3946..8ffa009ec 100644
--- a/apps/web/src/components/player/VisualizerSettingsModal.tsx
+++ b/apps/web/src/components/player/VisualizerSettingsModal.tsx
@@ -1,6 +1,13 @@
import React from 'react';
import { X, Activity } from 'lucide-react';
import { useAudio, VisualizerSettings } from '../../context/AudioContext';
+import {
+ ColorVizIndigo,
+ ColorVizNeutral,
+ ColorVizSage,
+ ColorVizGold,
+ ColorVizVermillion,
+} from '@veza/design-system/tokens-generated';
interface VisualizerSettingsModalProps {
onClose: () => void;
@@ -15,7 +22,8 @@ export const VisualizerSettingsModal: React.FC<
setVisualizerSettings({ ...visualizerSettings, [key]: value });
};
- const colors = ['#7c9dd6', '#a8a4a0', '#7a9e6c', '#c9a84c', '#d4634a'];
+ // Data viz pigments (charte §4.5) — stored as hex in user prefs.
+ const colors = [ColorVizIndigo, ColorVizNeutral, ColorVizSage, ColorVizGold, ColorVizVermillion];
return (
diff --git a/apps/web/src/components/settings/appearance/AppearanceSettingsView.tsx b/apps/web/src/components/settings/appearance/AppearanceSettingsView.tsx
index 56ce0d732..2739cf1b4 100644
--- a/apps/web/src/components/settings/appearance/AppearanceSettingsView.tsx
+++ b/apps/web/src/components/settings/appearance/AppearanceSettingsView.tsx
@@ -19,12 +19,22 @@ import { userService } from '@/services/userService';
import { usePWA } from '@/hooks/usePWA';
import { Download } from 'lucide-react';
+// Theme accent picker — exposes data viz pigments as personal accent overrides.
+// Note: per CHARTE_GRAPHIQUE §4.4 rule 3, the canonical brand accent is Mizu cyan.
+// These presets are user-personalisation only (stored in user.preferences).
+import {
+ ColorVizIndigo,
+ ColorVizSage,
+ ColorVizVermillion,
+ ColorVizGold,
+} from '@veza/design-system/tokens-generated';
+
const ACCENT_PRESETS = [
- { id: 'indigo', hue: 220, hex: '#7c9dd6' },
- { id: 'sage', hue: 120, hex: '#7a9e6c' },
- { id: 'vermillion', hue: 15, hex: '#d4634a' },
- { id: 'gold', hue: 45, hex: '#c9a84c' },
- { id: 'sakura', hue: 340, hex: '#e0a0b8' },
+ { id: 'indigo', hue: 220, hex: ColorVizIndigo },
+ { id: 'sage', hue: 120, hex: ColorVizSage },
+ { id: 'vermillion', hue: 15, hex: ColorVizVermillion },
+ { id: 'gold', hue: 45, hex: ColorVizGold },
+ { id: 'sakura', hue: 340, hex: '#e0a0b8' },
];
export const AppearanceSettingsView: React.FC = () => {
diff --git a/apps/web/src/components/ui/DesignTokens.stories.tsx b/apps/web/src/components/ui/DesignTokens.stories.tsx
index 42dde496b..e7857029c 100644
--- a/apps/web/src/components/ui/DesignTokens.stories.tsx
+++ b/apps/web/src/components/ui/DesignTokens.stories.tsx
@@ -33,34 +33,53 @@ function DesignTokensShowcase() {
return (
-
SUMI Design System v2.0
-
"L'encre et la lumière" — Ink and Light
+
SUMI Design System v3.0
+
"Lavis d'encre" — Ink wash. Source : packages/design-system/tokens/.
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
diff --git a/apps/web/src/context/audio-context/useAudioContextValue.ts b/apps/web/src/context/audio-context/useAudioContextValue.ts
index 3db8ed5ee..6407170fc 100644
--- a/apps/web/src/context/audio-context/useAudioContextValue.ts
+++ b/apps/web/src/context/audio-context/useAudioContextValue.ts
@@ -2,10 +2,11 @@ import { useState, useEffect, useRef } from 'react';
import type { Track } from '@/types';
import type { VisualizerSettings } from './types';
import { mockTracks } from './mockTracks';
+import { ColorVizIndigo } from '@veza/design-system/tokens-generated';
const defaultVisualizer: VisualizerSettings = {
mode: 'waveform',
- color: '#7c9dd6',
+ color: ColorVizIndigo,
sensitivity: 50,
};