// Fluent 2 Design System for Ziya Trading Platform // Based on Microsoft Fluent 2 Design Language // https://fluent2.microsoft.design/ // Complete Fluent UI Color System - All Themes Support // Theme mode enumeration export enum ColorMode { light, dark, team-light, team-dark } export global FluentColors { // Current theme mode in-out property current-mode: ColorMode.light; // Theme switching callback callback switch-theme(ColorMode); // ===== LIGHT THEME COLORS ===== // Neutral Colors - Light out property neutral-foreground-1-light: #242424; out property neutral-foreground-2-light: #424242; out property neutral-foreground-3-light: #616161; out property neutral-foreground-4-light: #757575; out property neutral-foreground-disabled-light: #bdbdbd; out property neutral-foreground-inverted-light: #ffffff; out property neutral-foreground-inverted-2-light: #f5f5f5; out property neutral-foreground-on-brand-light: #ffffff; out property neutral-foreground-static-inverted-light: #ffffff; out property neutral-foreground-inverted-disabled-light: #ffffff; // Interactive states - Light theme out property neutral-foreground-1-hover-light: #424242; out property neutral-foreground-1-pressed-light: #242424; out property neutral-foreground-2-hover-light: #616161; out property neutral-foreground-2-pressed-light: #424242; out property neutral-foreground-2-brand-hover-light: #0078d4; out property neutral-foreground-2-brand-pressed-light: #005a9e; out property neutral-foreground-2-brand-selected-light: #0078d4; // Link colors - Light theme out property neutral-foreground-link-light: #0078d4; out property neutral-foreground-link-hover-light: #106ebe; out property neutral-foreground-link-pressed-light: #005a9e; out property neutral-foreground-link-selected-light: #0078d4; out property neutral-background-1-light: #ffffff; out property neutral-background-2-light: #fafafa; out property neutral-background-3-light: #f5f5f5; out property neutral-background-4-light: #f0f0f0; out property neutral-background-5-light: #ebebeb; out property neutral-background-6-light: #e1e1e1; out property neutral-background-inverted-light: #292929; out property neutral-background-static-light: #f0f0f0; out property neutral-background-alpha-light: #ffffff; out property neutral-background-alpha-2-light: #ffffff; // Background interactive states - Light theme out property neutral-background-1-hover-light: #f5f5f5; out property neutral-background-1-pressed-light: #f0f0f0; out property neutral-background-1-selected-light: #ebebeb; out property neutral-background-2-hover-light: #f0f0f0; out property neutral-background-2-pressed-light: #ebebeb; out property neutral-background-2-selected-light: #e1e1e1; out property neutral-background-3-hover-light: #ebebeb; out property neutral-background-3-pressed-light: #e1e1e1; out property neutral-background-3-selected-light: #c7c7c7; out property neutral-stroke-1-light: #e1e1e1; out property neutral-stroke-2-light: #c7c7c7; out property neutral-stroke-3-light: #b3b3b3; out property neutral-stroke-accessible-light: #616161; out property neutral-stroke-focus-1-light: #ffffff; out property neutral-stroke-focus-2-light: #000000; out property neutral-stroke-disabled-light: #e1e1e1; // Stroke interactive states - Light theme out property neutral-stroke-1-hover-light: #c7c7c7; out property neutral-stroke-1-pressed-light: #b3b3b3; out property neutral-stroke-1-selected-light: #b3b3b3; out property neutral-stroke-2-hover-light: #b3b3b3; out property neutral-stroke-2-pressed-light: #9e9e9e; // ===== DARK THEME COLORS ===== // Neutral Colors - Dark out property neutral-foreground-1-dark: #ffffff; out property neutral-foreground-2-dark: #f5f5f5; out property neutral-foreground-3-dark: #ebebeb; out property neutral-foreground-4-dark: #cccccc; out property neutral-foreground-disabled-dark: #858585; out property neutral-foreground-inverted-dark: #242424; out property neutral-foreground-inverted-2-dark: #292929; out property neutral-foreground-on-brand-dark: #ffffff; out property neutral-foreground-static-inverted-dark: #ffffff; out property neutral-foreground-inverted-disabled-dark: #858585; // Interactive states - Dark theme out property neutral-foreground-1-hover-dark: #f5f5f5; out property neutral-foreground-1-pressed-dark: #ffffff; out property neutral-foreground-2-hover-dark: #ebebeb; out property neutral-foreground-2-pressed-dark: #f5f5f5; out property neutral-foreground-2-brand-hover-dark: #62abf5; out property neutral-foreground-2-brand-pressed-dark: #77b7f7; out property neutral-foreground-2-brand-selected-dark: #479ef5; // Link colors - Dark theme out property neutral-foreground-link-dark: #479ef5; out property neutral-foreground-link-hover-dark: #62abf5; out property neutral-foreground-link-pressed-dark: #77b7f7; out property neutral-foreground-link-selected-dark: #479ef5; out property neutral-background-1-dark: #1c1c1c; out property neutral-background-2-dark: #242424; out property neutral-background-3-dark: #292929; out property neutral-background-4-dark: #333333; out property neutral-background-5-dark: #3d3d3d; out property neutral-background-6-dark: #474747; out property neutral-background-inverted-dark: #ffffff; out property neutral-background-static-dark: #333333; out property neutral-background-alpha-dark: #1c1c1c; out property neutral-background-alpha-2-dark: #1c1c1c; // Background interactive states - Dark theme out property neutral-background-1-hover-dark: #242424; out property neutral-background-1-pressed-dark: #292929; out property neutral-background-1-selected-dark: #333333; out property neutral-background-2-hover-dark: #292929; out property neutral-background-2-pressed-dark: #333333; out property neutral-background-2-selected-dark: #3d3d3d; out property neutral-background-3-hover-dark: #333333; out property neutral-background-3-pressed-dark: #3d3d3d; out property neutral-background-3-selected-dark: #474747; out property neutral-stroke-1-dark: #3d3d3d; out property neutral-stroke-2-dark: #525252; out property neutral-stroke-3-dark: #666666; out property neutral-stroke-accessible-dark: #cccccc; out property neutral-stroke-focus-1-dark: #ffffff; out property neutral-stroke-focus-2-dark: #000000; out property neutral-stroke-disabled-dark: #3d3d3d; // Stroke interactive states - Dark theme out property neutral-stroke-1-hover-dark: #525252; out property neutral-stroke-1-pressed-dark: #666666; out property neutral-stroke-1-selected-dark: #666666; out property neutral-stroke-2-hover-dark: #666666; out property neutral-stroke-2-pressed-dark: #757575; // ===== TEAM LIGHT THEME COLORS ===== // Neutral Colors - Team Light out property neutral-foreground-1-team-light: #242424; out property neutral-foreground-2-team-light: #424242; out property neutral-foreground-3-team-light: #616161; out property neutral-foreground-4-team-light: #757575; out property neutral-foreground-disabled-team-light: #bdbdbd; out property neutral-foreground-inverted-team-light: #ffffff; out property neutral-foreground-inverted-2-team-light: #f5f5f5; out property neutral-foreground-on-brand-team-light: #ffffff; out property neutral-foreground-static-inverted-team-light: #ffffff; out property neutral-foreground-inverted-disabled-team-light: #ffffff; // Interactive states - Team Light theme out property neutral-foreground-1-hover-team-light: #424242; out property neutral-foreground-1-pressed-team-light: #242424; out property neutral-foreground-2-hover-team-light: #616161; out property neutral-foreground-2-pressed-team-light: #424242; out property neutral-foreground-2-brand-hover-team-light: #585a96; out property neutral-foreground-2-brand-pressed-team-light: #4c4e85; out property neutral-foreground-2-brand-selected-team-light: #6264a7; // Link colors - Team Light theme out property neutral-foreground-link-team-light: #6264a7; out property neutral-foreground-link-hover-team-light: #585a96; out property neutral-foreground-link-pressed-team-light: #4c4e85; out property neutral-foreground-link-selected-team-light: #6264a7; out property neutral-background-1-team-light: #ffffff; out property neutral-background-2-team-light: #f8f8f8; out property neutral-background-3-team-light: #f3f2f1; out property neutral-background-4-team-light: #edebe9; out property neutral-background-5-team-light: #e1dfdd; out property neutral-background-6-team-light: #d2d0ce; out property neutral-background-inverted-team-light: #292929; out property neutral-background-static-team-light: #edebe9; out property neutral-background-alpha-team-light: #ffffff; out property neutral-background-alpha-2-team-light: #ffffff; // Background interactive states - Team Light theme out property neutral-background-1-hover-team-light: #f8f8f8; out property neutral-background-1-pressed-team-light: #f3f2f1; out property neutral-background-1-selected-team-light: #edebe9; out property neutral-background-2-hover-team-light: #f3f2f1; out property neutral-background-2-pressed-team-light: #edebe9; out property neutral-background-2-selected-team-light: #e1dfdd; out property neutral-background-3-hover-team-light: #edebe9; out property neutral-background-3-pressed-team-light: #e1dfdd; out property neutral-background-3-selected-team-light: #d2d0ce; out property neutral-stroke-1-team-light: #d2d0ce; out property neutral-stroke-2-team-light: #c8c6c4; out property neutral-stroke-3-team-light: #b3b0ad; out property neutral-stroke-accessible-team-light: #605e5c; out property neutral-stroke-focus-1-team-light: #ffffff; out property neutral-stroke-focus-2-team-light: #000000; out property neutral-stroke-disabled-team-light: #d2d0ce; // Stroke interactive states - Team Light theme out property neutral-stroke-1-hover-team-light: #c8c6c4; out property neutral-stroke-1-pressed-team-light: #b3b0ad; out property neutral-stroke-1-selected-team-light: #b3b0ad; out property neutral-stroke-2-hover-team-light: #b3b0ad; out property neutral-stroke-2-pressed-team-light: #a19f9d; // ===== TEAM DARK THEME COLORS ===== // Neutral Colors - Team Dark out property neutral-foreground-1-team-dark: #ffffff; out property neutral-foreground-2-team-dark: #f3f2f1; out property neutral-foreground-3-team-dark: #edebe9; out property neutral-foreground-4-team-dark: #d2d0ce; out property neutral-foreground-disabled-team-dark: #8a8886; out property neutral-foreground-inverted-team-dark: #242424; out property neutral-foreground-inverted-2-team-dark: #292929; out property neutral-foreground-on-brand-team-dark: #ffffff; out property neutral-foreground-static-inverted-team-dark: #ffffff; out property neutral-foreground-inverted-disabled-team-dark: #8a8886; // Interactive states - Team Dark theme out property neutral-foreground-1-hover-team-dark: #f3f2f1; out property neutral-foreground-1-pressed-team-dark: #ffffff; out property neutral-foreground-2-hover-team-dark: #edebe9; out property neutral-foreground-2-pressed-team-dark: #f3f2f1; out property neutral-foreground-2-brand-hover-team-dark: #9a9bd2; out property neutral-foreground-2-brand-pressed-team-dark: #a8a9db; out property neutral-foreground-2-brand-selected-team-dark: #8b8cc8; // Link colors - Team Dark theme out property neutral-foreground-link-team-dark: #8b8cc8; out property neutral-foreground-link-hover-team-dark: #9a9bd2; out property neutral-foreground-link-pressed-team-dark: #a8a9db; out property neutral-foreground-link-selected-team-dark: #8b8cc8; out property neutral-background-1-team-dark: #252423; out property neutral-background-2-team-dark: #2d2c2b; out property neutral-background-3-team-dark: #323130; out property neutral-background-4-team-dark: #3b3a39; out property neutral-background-5-team-dark: #484644; out property neutral-background-6-team-dark: #605e5c; out property neutral-background-inverted-team-dark: #ffffff; out property neutral-background-static-team-dark: #3b3a39; out property neutral-background-alpha-team-dark: #252423; out property neutral-background-alpha-2-team-dark: #252423; // Background interactive states - Team Dark theme out property neutral-background-1-hover-team-dark: #2d2c2b; out property neutral-background-1-pressed-team-dark: #323130; out property neutral-background-1-selected-team-dark: #3b3a39; out property neutral-background-2-hover-team-dark: #323130; out property neutral-background-2-pressed-team-dark: #3b3a39; out property neutral-background-2-selected-team-dark: #484644; out property neutral-background-3-hover-team-dark: #3b3a39; out property neutral-background-3-pressed-team-dark: #484644; out property neutral-background-3-selected-team-dark: #605e5c; out property neutral-stroke-1-team-dark: #484644; out property neutral-stroke-2-team-dark: #605e5c; out property neutral-stroke-3-team-dark: #797775; out property neutral-stroke-accessible-team-dark: #d2d0ce; out property neutral-stroke-focus-1-team-dark: #ffffff; out property neutral-stroke-focus-2-team-dark: #000000; out property neutral-stroke-disabled-team-dark: #484644; // Stroke interactive states - Team Dark theme out property neutral-stroke-1-hover-team-dark: #605e5c; out property neutral-stroke-1-pressed-team-dark: #797775; out property neutral-stroke-1-selected-team-dark: #797775; out property neutral-stroke-2-hover-team-dark: #797775; out property neutral-stroke-2-pressed-team-dark: #8a8886; // ===== BRAND COLORS (All Themes) ===== // Brand Colors - Light out property brand-background-1-light: #0078d4; out property brand-background-2-light: #106ebe; out property brand-background-3-light: #005a9e; out property brand-foreground-1-light: #ffffff; out property brand-foreground-2-light: #f3f2f1; out property brand-stroke-1-light: #0078d4; out property brand-stroke-2-light: #106ebe; // Brand interactive states - Light theme out property brand-background-1-hover-light: #106ebe; out property brand-background-1-pressed-light: #005a9e; out property brand-background-1-selected-light: #0078d4; out property brand-background-2-hover-light: #005a9e; out property brand-background-2-pressed-light: #004578; out property brand-stroke-1-hover-light: #106ebe; out property brand-stroke-1-pressed-light: #005a9e; // Brand Colors - Dark out property brand-background-1-dark: #479ef5; out property brand-background-2-dark: #62abf5; out property brand-background-3-dark: #77b7f7; out property brand-foreground-1-dark: #ffffff; out property brand-foreground-2-dark: #f3f2f1; out property brand-stroke-1-dark: #479ef5; out property brand-stroke-2-dark: #62abf5; // Brand interactive states - Dark theme out property brand-background-1-hover-dark: #62abf5; out property brand-background-1-pressed-dark: #77b7f7; out property brand-background-1-selected-dark: #479ef5; out property brand-background-2-hover-dark: #77b7f7; out property brand-background-2-pressed-dark: #8cc8f8; out property brand-stroke-1-hover-dark: #62abf5; out property brand-stroke-1-pressed-dark: #77b7f7; // Brand Colors - Team Light out property brand-background-1-team-light: #6264a7; out property brand-background-2-team-light: #585a96; out property brand-background-3-team-light: #4c4e85; out property brand-foreground-1-team-light: #ffffff; out property brand-foreground-2-team-light: #f3f2f1; out property brand-stroke-1-team-light: #6264a7; out property brand-stroke-2-team-light: #585a96; // Brand interactive states - Team Light theme out property brand-background-1-hover-team-light: #585a96; out property brand-background-1-pressed-team-light: #4c4e85; out property brand-background-1-selected-team-light: #6264a7; out property brand-background-2-hover-team-light: #4c4e85; out property brand-background-2-pressed-team-light: #414374; out property brand-stroke-1-hover-team-light: #585a96; out property brand-stroke-1-pressed-team-light: #4c4e85; // Brand Colors - Team Dark out property brand-background-1-team-dark: #8b8cc8; out property brand-background-2-team-dark: #9a9bd2; out property brand-background-3-team-dark: #a8a9db; out property brand-foreground-1-team-dark: #ffffff; out property brand-foreground-2-team-dark: #f3f2f1; out property brand-stroke-1-team-dark: #8b8cc8; out property brand-stroke-2-team-dark: #9a9bd2; // Brand interactive states - Team Dark theme out property brand-background-1-hover-team-dark: #9a9bd2; out property brand-background-1-pressed-team-dark: #a8a9db; out property brand-background-1-selected-team-dark: #8b8cc8; out property brand-background-2-hover-team-dark: #a8a9db; out property brand-background-2-pressed-team-dark: #b6b7e4; out property brand-stroke-1-hover-team-dark: #9a9bd2; out property brand-stroke-1-pressed-team-dark: #a8a9db; // ===== SEMANTIC COLORS (All Themes) ===== // Success Colors - All Themes out property success-background-1-light: #107c10; out property success-background-2-light: #0e6e0e; out property success-foreground-1-light: #ffffff; out property success-stroke-1-light: #107c10; out property success-background-1-dark: #54b054; out property success-background-2-dark: #6bb26b; out property success-foreground-1-dark: #ffffff; out property success-stroke-1-dark: #54b054; out property success-background-1-team-light: #237b4b; out property success-background-2-team-light: #1e6f42; out property success-foreground-1-team-light: #ffffff; out property success-stroke-1-team-light: #237b4b; out property success-background-1-team-dark: #5bb85b; out property success-background-2-team-dark: #6fc46f; out property success-foreground-1-team-dark: #ffffff; out property success-stroke-1-team-dark: #5bb85b; // Warning Colors - All Themes out property warning-background-1-light: #fde047; out property warning-background-2-light: #facc15; out property warning-foreground-1-light: #323130; out property warning-stroke-1-light: #f7c52d; out property warning-background-1-dark: #ffb900; out property warning-background-2-dark: #ffc328; out property warning-foreground-1-dark: #323130; out property warning-stroke-1-dark: #ffb900; out property warning-background-1-team-light: #c19c00; out property warning-background-2-team-light: #a18600; out property warning-foreground-1-team-light: #ffffff; out property warning-stroke-1-team-light: #c19c00; out property warning-background-1-team-dark: #ffd43a; out property warning-background-2-team-dark: #ffda56; out property warning-foreground-1-team-dark: #323130; out property warning-stroke-1-team-dark: #ffd43a; // Critical/Error Colors - All Themes out property critical-background-1-light: #d13438; out property critical-background-2-light: #b91c1c; out property critical-foreground-1-light: #ffffff; out property critical-stroke-1-light: #d13438; out property critical-background-1-dark: #ff6b6b; out property critical-background-2-dark: #ff8080; out property critical-foreground-1-dark: #ffffff; out property critical-stroke-1-dark: #ff6b6b; out property critical-background-1-team-light: #c50e1f; out property critical-background-2-team-light: #a80e1b; out property critical-foreground-1-team-light: #ffffff; out property critical-stroke-1-team-light: #c50e1f; out property critical-background-1-team-dark: #ff8080; out property critical-background-2-team-dark: #ff9494; out property critical-foreground-1-team-dark: #ffffff; out property critical-stroke-1-team-dark: #ff8080; // ===== CURRENT THEME ACCESSORS ===== // These automatically switch based on current-mode // Current Neutral Colors out property neutral-foreground-1: current-mode == ColorMode.light ? neutral-foreground-1-light : current-mode == ColorMode.dark ? neutral-foreground-1-dark : current-mode == ColorMode.team-light ? neutral-foreground-1-team-light : neutral-foreground-1-team-dark; out property neutral-foreground-2: current-mode == ColorMode.light ? neutral-foreground-2-light : current-mode == ColorMode.dark ? neutral-foreground-2-dark : current-mode == ColorMode.team-light ? neutral-foreground-2-team-light : neutral-foreground-2-team-dark; out property neutral-foreground-3: current-mode == ColorMode.light ? neutral-foreground-3-light : current-mode == ColorMode.dark ? neutral-foreground-3-dark : current-mode == ColorMode.team-light ? neutral-foreground-3-team-light : neutral-foreground-3-team-dark; out property neutral-foreground-disabled: current-mode == ColorMode.light ? neutral-foreground-disabled-light : current-mode == ColorMode.dark ? neutral-foreground-disabled-dark : current-mode == ColorMode.team-light ? neutral-foreground-disabled-team-light : neutral-foreground-disabled-team-dark; out property neutral-background-1: current-mode == ColorMode.light ? neutral-background-1-light : current-mode == ColorMode.dark ? neutral-background-1-dark : current-mode == ColorMode.team-light ? neutral-background-1-team-light : neutral-background-1-team-dark; out property neutral-background-2: current-mode == ColorMode.light ? neutral-background-2-light : current-mode == ColorMode.dark ? neutral-background-2-dark : current-mode == ColorMode.team-light ? neutral-background-2-team-light : neutral-background-2-team-dark; out property neutral-background-3: current-mode == ColorMode.light ? neutral-background-3-light : current-mode == ColorMode.dark ? neutral-background-3-dark : current-mode == ColorMode.team-light ? neutral-background-3-team-light : neutral-background-3-team-dark; out property neutral-background-4: current-mode == ColorMode.light ? neutral-background-4-light : current-mode == ColorMode.dark ? neutral-background-4-dark : current-mode == ColorMode.team-light ? neutral-background-4-team-light : neutral-background-4-team-dark; out property neutral-stroke-1: current-mode == ColorMode.light ? neutral-stroke-1-light : current-mode == ColorMode.dark ? neutral-stroke-1-dark : current-mode == ColorMode.team-light ? neutral-stroke-1-team-light : neutral-stroke-1-team-dark; out property neutral-stroke-2: current-mode == ColorMode.light ? neutral-stroke-2-light : current-mode == ColorMode.dark ? neutral-stroke-2-dark : current-mode == ColorMode.team-light ? neutral-stroke-2-team-light : neutral-stroke-2-team-dark; out property neutral-stroke-accessible: current-mode == ColorMode.light ? neutral-stroke-accessible-light : current-mode == ColorMode.dark ? neutral-stroke-accessible-dark : current-mode == ColorMode.team-light ? neutral-stroke-accessible-team-light : neutral-stroke-accessible-team-dark; // Current Interactive States out property neutral-foreground-1-hover: current-mode == ColorMode.light ? neutral-foreground-1-hover-light : current-mode == ColorMode.dark ? neutral-foreground-1-hover-dark : current-mode == ColorMode.team-light ? neutral-foreground-1-hover-team-light : neutral-foreground-1-hover-team-dark; out property neutral-foreground-2-brand-hover: current-mode == ColorMode.light ? neutral-foreground-2-brand-hover-light : current-mode == ColorMode.dark ? neutral-foreground-2-brand-hover-dark : current-mode == ColorMode.team-light ? neutral-foreground-2-brand-hover-team-light : neutral-foreground-2-brand-hover-team-dark; // Current Link Colors out property neutral-foreground-link: current-mode == ColorMode.light ? neutral-foreground-link-light : current-mode == ColorMode.dark ? neutral-foreground-link-dark : current-mode == ColorMode.team-light ? neutral-foreground-link-team-light : neutral-foreground-link-team-dark; out property neutral-foreground-link-hover: current-mode == ColorMode.light ? neutral-foreground-link-hover-light : current-mode == ColorMode.dark ? neutral-foreground-link-hover-dark : current-mode == ColorMode.team-light ? neutral-foreground-link-hover-team-light : neutral-foreground-link-hover-team-dark; out property neutral-foreground-link-pressed: current-mode == ColorMode.light ? neutral-foreground-link-pressed-light : current-mode == ColorMode.dark ? neutral-foreground-link-pressed-dark : current-mode == ColorMode.team-light ? neutral-foreground-link-pressed-team-light : neutral-foreground-link-pressed-team-dark; // Current Background Interactive States out property neutral-background-1-hover: current-mode == ColorMode.light ? neutral-background-1-hover-light : current-mode == ColorMode.dark ? neutral-background-1-hover-dark : current-mode == ColorMode.team-light ? neutral-background-1-hover-team-light : neutral-background-1-hover-team-dark; out property neutral-background-1-pressed: current-mode == ColorMode.light ? neutral-background-1-pressed-light : current-mode == ColorMode.dark ? neutral-background-1-pressed-dark : current-mode == ColorMode.team-light ? neutral-background-1-pressed-team-light : neutral-background-1-pressed-team-dark; // Current Stroke Interactive States out property neutral-stroke-1-hover: current-mode == ColorMode.light ? neutral-stroke-1-hover-light : current-mode == ColorMode.dark ? neutral-stroke-1-hover-dark : current-mode == ColorMode.team-light ? neutral-stroke-1-hover-team-light : neutral-stroke-1-hover-team-dark; out property neutral-stroke-1-pressed: current-mode == ColorMode.light ? neutral-stroke-1-pressed-light : current-mode == ColorMode.dark ? neutral-stroke-1-pressed-dark : current-mode == ColorMode.team-light ? neutral-stroke-1-pressed-team-light : neutral-stroke-1-pressed-team-dark; // Current Brand Colors out property brand-background-1: current-mode == ColorMode.light ? brand-background-1-light : current-mode == ColorMode.dark ? brand-background-1-dark : current-mode == ColorMode.team-light ? brand-background-1-team-light : brand-background-1-team-dark; out property brand-background-2: current-mode == ColorMode.light ? brand-background-2-light : current-mode == ColorMode.dark ? brand-background-2-dark : current-mode == ColorMode.team-light ? brand-background-2-team-light : brand-background-2-team-dark; out property brand-foreground-1: current-mode == ColorMode.light ? brand-foreground-1-light : current-mode == ColorMode.dark ? brand-foreground-1-dark : current-mode == ColorMode.team-light ? brand-foreground-1-team-light : brand-foreground-1-team-dark; // Current Brand Interactive States out property brand-background-1-hover: current-mode == ColorMode.light ? brand-background-1-hover-light : current-mode == ColorMode.dark ? brand-background-1-hover-dark : current-mode == ColorMode.team-light ? brand-background-1-hover-team-light : brand-background-1-hover-team-dark; out property brand-background-1-pressed: current-mode == ColorMode.light ? brand-background-1-pressed-light : current-mode == ColorMode.dark ? brand-background-1-pressed-dark : current-mode == ColorMode.team-light ? brand-background-1-pressed-team-light : brand-background-1-pressed-team-dark; // Current Semantic Colors out property success-background-1: current-mode == ColorMode.light ? success-background-1-light : current-mode == ColorMode.dark ? success-background-1-dark : current-mode == ColorMode.team-light ? success-background-1-team-light : success-background-1-team-dark; out property warning-background-1: current-mode == ColorMode.light ? warning-background-1-light : current-mode == ColorMode.dark ? warning-background-1-dark : current-mode == ColorMode.team-light ? warning-background-1-team-light : warning-background-1-team-dark; out property critical-background-1: current-mode == ColorMode.light ? critical-background-1-light : current-mode == ColorMode.dark ? critical-background-1-dark : current-mode == ColorMode.team-light ? critical-background-1-team-light : critical-background-1-team-dark; // Legacy compatibility and Trading-specific colors out property neutral-foreground-rest: neutral-foreground-1; out property profit-green: success-background-1; out property loss-red: critical-background-1; out property neutral-gray: neutral-foreground-3; // Accent colors for trading UI out property accent-purple: #f000b8; out property accent-teal: #37cdbe; out property accent-blue: brand-background-1; } // Typography System - Official Fluent 2 Typography Tokens // Based on: https://fluent2.microsoft.design/typography export global FluentTypography { // ===== FLUENT FONT STACKS ===== // Segoe - unmistakably Microsoft (Primary Web/Windows font stack) out property font-family-base: "Segoe UI Variable, Segoe UI, system-ui, sans-serif"; out property font-family-web: "Segoe UI Variable, Segoe UI, system-ui, sans-serif"; out property font-family-windows: "Segoe UI Variable, Segoe UI, system-ui, sans-serif"; // Platform-specific native font stacks for cross-platform consistency out property font-family-macos: "SF Pro Display, SF Pro Text, system-ui, sans-serif"; out property font-family-ios: "SF Pro Display, SF Pro Text, system-ui, sans-serif"; out property font-family-android: "Roboto, system-ui, sans-serif"; // Specialized font families out property font-family-monospace: "Cascadia Code, Cascadia Mono, Consolas, Courier New, monospace"; out property font-family-numeric: "Bahnschrift, Segoe UI Variable, Segoe UI, system-ui, sans-serif"; // ===== FONT WEIGHTS - Fluent 2 Weight Scale ===== out property font-weight-regular: 400; // Regular out property font-weight-medium: 500; // Medium (Android) out property font-weight-semibold: 600; // Semibold out property font-weight-bold: 700; // Bold // ===== WEB TYPE RAMP - Official Fluent 2 Web Typography ===== // Caption styles out property font-size-caption-2: 10px; // Caption 2 out property line-height-caption-2: 14px; out property font-weight-caption-2: font-weight-regular; out property font-weight-caption-2-strong: font-weight-semibold; out property font-size-caption-1: 12px; // Caption 1 out property line-height-caption-1: 16px; out property font-weight-caption-1: font-weight-regular; out property font-weight-caption-1-strong: font-weight-semibold; out property font-weight-caption-1-stronger: font-weight-bold; // Body styles out property font-size-body-1: 14px; // Body 1 (Default) out property line-height-body-1: 20px; out property font-weight-body-1: font-weight-regular; out property font-weight-body-1-strong: font-weight-semibold; out property font-weight-body-1-stronger: font-weight-bold; // Subtitle styles out property font-size-subtitle-2: 16px; // Subtitle 2 out property line-height-subtitle-2: 22px; out property font-weight-subtitle-2: font-weight-semibold; out property font-weight-subtitle-2-stronger: font-weight-bold; out property font-size-subtitle-1: 20px; // Subtitle 1 out property line-height-subtitle-1: 26px; out property font-weight-subtitle-1: font-weight-semibold; // Title styles out property font-size-title-3: 24px; // Title 3 out property line-height-title-3: 32px; out property font-weight-title-3: font-weight-semibold; out property font-size-title-2: 28px; // Title 2 out property line-height-title-2: 36px; out property font-weight-title-2: font-weight-semibold; out property font-size-title-1: 32px; // Title 1 out property line-height-title-1: 40px; out property font-weight-title-1: font-weight-semibold; // Large title and display out property font-size-large-title: 40px; // Large Title out property line-height-large-title: 52px; out property font-weight-large-title: font-weight-semibold; out property font-size-display: 68px; // Display out property line-height-display: 92px; out property font-weight-display: font-weight-semibold; // ===== WINDOWS TYPE RAMP - Official Fluent 2 Windows Typography ===== // Windows-specific variants using Segoe UI Variable out property font-size-windows-caption: 12px; // Caption out property line-height-windows-caption: 16px; out property font-weight-windows-caption: font-weight-regular; out property font-size-windows-body: 14px; // Body out property line-height-windows-body: 20px; out property font-weight-windows-body: font-weight-regular; out property font-weight-windows-body-strong: font-weight-semibold; out property font-size-windows-body-large: 18px; // Body Large out property line-height-windows-body-large: 24px; out property font-weight-windows-body-large: font-weight-regular; out property font-size-windows-subtitle: 20px; // Subtitle out property line-height-windows-subtitle: 28px; out property font-weight-windows-subtitle: font-weight-semibold; out property font-size-windows-title: 28px; // Title out property line-height-windows-title: 36px; out property font-weight-windows-title: font-weight-semibold; out property font-size-windows-large-title: 40px; // Large Title out property line-height-windows-large-title: 52px; out property font-weight-windows-large-title: font-weight-semibold; out property font-size-windows-display: 68px; // Display out property line-height-windows-display: 92px; out property font-weight-windows-display: font-weight-semibold; // ===== LEGACY NUMERIC TOKENS - For backward compatibility ===== out property font-size-100: font-size-caption-2; // 10px out property font-size-200: font-size-caption-1; // 12px out property font-size-300: font-size-body-1; // 14px out property font-size-400: font-size-subtitle-2; // 16px out property font-size-500: 18px; // Custom out property font-size-600: font-size-subtitle-1; // 20px out property font-size-700: font-size-title-3; // 24px out property font-size-800: font-size-title-2; // 28px out property font-size-900: font-size-title-1; // 32px out property font-size-1000: font-size-large-title; // 40px out property font-size-1100: 48px; // Custom Large out property font-size-1200: font-size-display; // 68px out property line-height-100: line-height-caption-2; // 14px out property line-height-200: line-height-caption-1; // 16px out property line-height-300: line-height-body-1; // 20px out property line-height-400: line-height-subtitle-2; // 22px out property line-height-500: 24px; // Custom out property line-height-600: line-height-subtitle-1; // 26px out property line-height-700: line-height-title-3; // 32px out property line-height-800: line-height-title-2; // 36px out property line-height-900: line-height-title-1; // 40px out property line-height-1000: line-height-large-title; // 52px out property line-height-1100: 60px; // Custom out property line-height-1200: line-height-display; // 92px // ===== TEXT STYLING UTILITIES ===== // Letter spacing for fine typography control out property letter-spacing-tight: -0.16px; // For large text out property letter-spacing-normal: 0px; // Standard out property letter-spacing-wide: 0.32px; // For small text // Text decoration out property text-decoration-none: "none"; out property text-decoration-underline: "underline"; out property text-decoration-line-through: "line-through"; // Text transform (following Fluent guidance for sentence case) out property text-transform-none: "none"; out property text-transform-uppercase: "uppercase"; out property text-transform-lowercase: "lowercase"; out property text-transform-capitalize: "capitalize"; // ===== USAGE EXAMPLES ===== // Caption 2: font-size: FluentTypography.font-size-caption-2; line-height: FluentTypography.line-height-caption-2; font-weight: FluentTypography.font-weight-caption-2; // Body 1: font-size: FluentTypography.font-size-body-1; line-height: FluentTypography.line-height-body-1; font-weight: FluentTypography.font-weight-body-1; // Title 1: font-size: FluentTypography.font-size-title-1; line-height: FluentTypography.line-height-title-1; font-weight: FluentTypography.font-weight-title-1; // Display: font-size: FluentTypography.font-size-display; line-height: FluentTypography.line-height-display; font-weight: FluentTypography.font-weight-display; } // Spacing System - Fluent 2 Spacing Scale export global FluentSpacing { out property space-2: 2px; out property space-4: 4px; out property space-6: 6px; out property space-8: 8px; out property space-10: 10px; out property space-12: 12px; out property space-16: 16px; out property space-20: 20px; out property space-24: 24px; out property space-28: 28px; out property space-32: 32px; out property space-36: 36px; out property space-40: 40px; out property space-48: 48px; out property space-64: 64px; out property space-80: 80px; out property space-96: 96px; out property space-120: 120px; } // Border Radius - Complete Fluent UI Border Radius System export global FluentRadius { // Corner Radius Scale out property border-radius-none: 0px; out property border-radius-small: 2px; out property border-radius-medium: 4px; out property border-radius-large: 6px; out property border-radius-x-large: 8px; out property border-radius-circular: 10000px; // Legacy support out property radius-none: 0px; out property radius-small: 2px; out property radius-medium: 4px; out property radius-large: 6px; out property radius-xlarge: 8px; out property radius-circular: 10000px; } // Shadows - Complete Fluent UI Shadow System // Based on: https://react.fluentui.dev/?path=/docs/theme-shadows--docs export global FluentShadows { // ===== SHADOW BRAND TOKENS ===== // These are the primary shadow tokens used throughout Fluent UI // Shadow 2 - Subtle elevation (tooltips, dropdowns) out property shadow-2-x: 0px; out property shadow-2-y: 1px; out property shadow-2-blur: 2px; out property shadow-2-spread: 0px; out property shadow-2-color: #00000014; // 8% opacity black // Shadow 4 - Low elevation (cards, buttons) out property shadow-4-x: 0px; out property shadow-4-y: 2px; out property shadow-4-blur: 4px; out property shadow-4-spread: 0px; out property shadow-4-color: #0000001f; // 12% opacity black // Shadow 8 - Medium elevation (dialogs, menus) out property shadow-8-x: 0px; out property shadow-8-y: 4px; out property shadow-8-blur: 8px; out property shadow-8-spread: 0px; out property shadow-8-color: #0000001f; // 12% opacity black // Shadow 16 - High elevation (modals, flyouts) out property shadow-16-x: 0px; out property shadow-16-y: 8px; out property shadow-16-blur: 16px; out property shadow-16-spread: 0px; out property shadow-16-color: #00000024; // 14% opacity black // Shadow 28 - Very high elevation (teaching callouts) out property shadow-28-x: 0px; out property shadow-28-y: 14px; out property shadow-28-blur: 28px; out property shadow-28-spread: 0px; out property shadow-28-color: #00000024; // 14% opacity black // Shadow 64 - Maximum elevation (panels, navigation) out property shadow-64-x: 0px; out property shadow-64-y: 32px; out property shadow-64-blur: 64px; out property shadow-64-spread: 0px; out property shadow-64-color: #00000033; // 20% opacity black // ===== THEME-AWARE SHADOW COLORS ===== // Light theme shadow colors out property shadow-light-ambient: #0000000f; // 6% opacity black out property shadow-light-key: #00000014; // 8% opacity black out property shadow-light-ambient-darker: #00000014; // 8% opacity black out property shadow-light-key-darker: #0000001f; // 12% opacity black out property shadow-light-ambient-darkest: #0000001f; // 12% opacity black out property shadow-light-key-darkest: #00000024; // 14% opacity black // Dark theme shadow colors out property shadow-dark-ambient: #0000001f; // 12% opacity black out property shadow-dark-key: #00000024; // 14% opacity black out property shadow-dark-ambient-darker: #00000024; // 14% opacity black out property shadow-dark-key-darker: #00000033; // 20% opacity black out property shadow-dark-ambient-darkest: #00000033; // 20% opacity black out property shadow-dark-key-darkest: #00000047; // 28% opacity black // ===== SPECIALIZED SHADOW TOKENS ===== // Brand shadow (with brand color tint) out property shadow-brand-x: 0px; out property shadow-brand-y: 2px; out property shadow-brand-blur: 8px; out property shadow-brand-spread: 0px; out property shadow-brand-color: #0078d414; // Brand blue with 8% opacity // Inset shadow (for pressed states) out property shadow-inset-x: 0px; out property shadow-inset-y: 1px; out property shadow-inset-blur: 2px; out property shadow-inset-spread: 0px; out property shadow-inset-color: #0000001f; // 12% opacity black // Focus shadow (for accessibility) out property shadow-focus-x: 0px; out property shadow-focus-y: 0px; out property shadow-focus-blur: 0px; out property shadow-focus-spread: 2px; out property shadow-focus-color: #0078d4; // Brand blue // ===== COMPONENT-SPECIFIC SHADOW TOKENS ===== // Button shadows out property shadow-button-rest: shadow-2-color; out property shadow-button-hover: shadow-4-color; out property shadow-button-pressed: shadow-inset-color; // Card shadows out property shadow-card-rest: shadow-4-color; out property shadow-card-hover: shadow-8-color; // Dialog shadows out property shadow-dialog: shadow-64-color; // Flyout shadows out property shadow-flyout: shadow-16-color; // Tooltip shadows out property shadow-tooltip: shadow-8-color; // ===== LEGACY SHADOW SUPPORT ===== // Note: shadow-*-blur properties are already defined above in the main shadow tokens // They can be used directly for backward compatibility // ===== SHADOW UTILITY FUNCTIONS ===== // Helper properties for common shadow combinations // Subtle shadow (for subtle elevation) out property subtle-shadow-x: shadow-2-x; out property subtle-shadow-y: shadow-2-y; out property subtle-shadow-blur: shadow-2-blur; out property subtle-shadow-color: shadow-2-color; // Default shadow (for standard elevation) out property default-shadow-x: shadow-4-x; out property default-shadow-y: shadow-4-y; out property default-shadow-blur: shadow-4-blur; out property default-shadow-color: shadow-4-color; // Deep shadow (for high elevation) out property deep-shadow-x: shadow-16-x; out property deep-shadow-y: shadow-16-y; out property deep-shadow-blur: shadow-16-blur; out property deep-shadow-color: shadow-16-color; // ===== USAGE NOTES ===== // To apply shadows in components, use the individual tokens: // Example: Rectangle { drop-shadow-offset-x: FluentShadows.shadow-4-x; drop-shadow-offset-y: FluentShadows.shadow-4-y; drop-shadow-blur: FluentShadows.shadow-4-blur; drop-shadow-color: FluentShadows.shadow-4-color; } // For focus states: Rectangle { border-width: FluentShadows.shadow-focus-spread; border-color: FluentShadows.shadow-focus-color; } } // Component Tokens - Fluent 2 Component Specifications export global FluentComponents { // Button out property button-height-small: 24px; out property button-height-medium: 32px; out property button-height-large: 40px; out property button-padding-horizontal: 16px; out property button-border-radius: FluentRadius.border-radius-medium; // Input out property input-height: 32px; out property input-padding-horizontal: 12px; out property input-border-radius: FluentRadius.border-radius-medium; out property input-border-width: 1px; // Card out property card-padding: FluentSpacing.space-16; out property card-border-radius: FluentRadius.border-radius-large; out property card-border-width: 1px; // Navigation out property nav-item-height: 40px; out property nav-item-padding: FluentSpacing.space-12; out property nav-item-border-radius: FluentRadius.border-radius-medium; // Title Bar out property titlebar-height: 32px; out property titlebar-button-width: 46px; // Sidebar out property sidebar-width: 280px; out property sidebar-collapsed-width: 48px; } // Animation & Motion - Fluent 2 Motion System export global FluentMotion { out property duration-ultra-fast: 50ms; out property duration-faster: 100ms; out property duration-fast: 150ms; out property duration-normal: 200ms; out property duration-slow: 300ms; out property duration-slower: 400ms; out property duration-ultra-slow: 500ms; // Easing curves (represented as animation properties) out property ease-accelerate: ease-in; out property ease-decelerate: ease-out; out property ease-standard: ease-in-out; out property ease-max: ease; } // Layout Grid - Fluent 2 Layout System export global FluentLayout { // Breakpoints out property breakpoint-small: 480px; out property breakpoint-medium: 768px; out property breakpoint-large: 1024px; out property breakpoint-xlarge: 1440px; // Container max widths out property container-small: 640px; out property container-medium: 768px; out property container-large: 1024px; out property container-xlarge: 1280px; // Grid out property grid-gutter: FluentSpacing.space-24; out property grid-columns: 12; } // Z-Index Scale export global FluentLayers { out property layer-base: 0; out property layer-dropdown: 1000; out property layer-sticky: 1020; out property layer-banner: 1030; out property layer-overlay: 1040; out property layer-modal: 1050; out property layer-popover: 1060; out property layer-tooltip: 1070; out property layer-toast: 1080; }