_theme-color.template.scss
    
    Unicode text, UTF-8 text
        
            1
            // When color definition differs for dark and light variant, 
        
            2
            // it gets @if ed depending on $variant 
        
            3
             
        
            4
            @use "sass:color"; 
        
            5
            @use "sass:math"; 
        
            6
            @use "sass:string"; 
        
            7
            @use "theme"; 
        
            8
             
        
            9
            @function gtkalpha($color, $alpha) { 
        
            10
              @return string.unquote("alpha(#{$color}, #{$alpha})"); 
        
            11
            } 
        
            12
             
        
            13
            // Determine whether the color has alpha. 
        
            14
            @function _has-alpha($color) { 
        
            15
              @return if(color.alpha($color) < 1, true, false); 
        
            16
            } 
        
            17
             
        
            18
            // Determine whether the color is dark. 
        
            19
            @function _is-dark($color) { 
        
            20
              // Calculate color brightness as per https://www.w3.org/TR/AERT/#color-contrast 
        
            21
              $brightness: (color.red($color) * 299 + color.green($color) * 587 + color.blue($color) * 114) / 1000; 
        
            22
             
        
            23
              @return if($brightness < 128, true, false); 
        
            24
            } 
        
            25
             
        
            26
            $on-light: #000; 
        
            27
            $on-dark: #fff; 
        
            28
             
        
            29
            // Determine whether to use dark or light color on top of given color 
        
            30
            // to meet accessibility standards for contrast. 
        
            31
            @function on($color) { 
        
            32
              $contrast-color: if(_is-dark($color), $on-dark, $on-light); 
        
            33
             
        
            34
              @if color.saturation($color) > 50% or color.alpha($color) < 1 { 
        
            35
                @return $contrast-color; 
        
            36
              } @else { 
        
            37
                @return rgba($contrast-color, .87); 
        
            38
              } 
        
            39
            } 
        
            40
             
        
            41
            // Determine the strength of highlight on top of given color. 
        
            42
            @function highlight($color) { 
        
            43
              @if color.lightness($color) >= 80% { 
        
            44
                @return rgba(white, .4); 
        
            45
              } @else if color.lightness($color) >= 40% { 
        
            46
                @return rgba(white, .2); 
        
            47
              } @else { 
        
            48
                @return rgba(white, .05); 
        
            49
              } 
        
            50
            } 
        
            51
             
        
            52
            // Make translucent color opaque by blending with the background color. 
        
            53
            @function opacify($color, $on) { 
        
            54
              @return color.mix(color.change($color, $alpha: 1), $on, color.alpha($color) * 100%); 
        
            55
            } 
        
            56
             
        
            57
            // 
        
            58
            // Main colors 
        
            59
            // 
        
            60
             
        
            61
            $surface-z0: %BG%; 
        
            62
            $surface-z1: %MATERIA_VIEW%; 
        
            63
            $surface-z8: %MATERIA_SURFACE%; 
        
            64
            $surface-switch-thumb: %MATERIA_SURFACE%; 
        
            65
            $on-surface: %FG%; 
        
            66
             
        
            67
            $primary-on-light: %SEL_BG%; 
        
            68
            $primary-on-dark: %SEL_BG%; 
        
            69
            $primary: $primary-on-light; 
        
            70
            $on-primary: on($primary); 
        
            71
             
        
            72
            $error-on-light: %TERMINAL_COLOR9%; 
        
            73
            $error-on-dark: %TERMINAL_COLOR9%; 
        
            74
            $error: $error-on-light; 
        
            75
            $on-error: on($error); 
        
            76
             
        
            77
            $warning-on-light: %TERMINAL_COLOR11%; 
        
            78
            $warning-on-dark: %TERMINAL_COLOR11%; 
        
            79
            $warning: $warning-on-light; 
        
            80
            $on-warning: on($warning); 
        
            81
             
        
            82
            $success-on-light: %TERMINAL_COLOR10%; 
        
            83
            $success-on-dark: %TERMINAL_COLOR10%; 
        
            84
            $success: $success-on-light; 
        
            85
            $on-success: on($success); 
        
            86
             
        
            87
            $visited-on-light: %TERMINAL_COLOR5%; 
        
            88
            $visited-on-dark: %TERMINAL_COLOR5%; 
        
            89
            $visited: $visited-on-light; 
        
            90
            $on-visited: on($visited); 
        
            91
             
        
            92
            $system: %HDR_BG3%; 
        
            93
            $on-system: %HDR_FG%; 
        
            94
             
        
            95
            $tooltip: rgba(%HDR_BG%, .9); 
        
            96
            $on-tooltip: %HDR_FG%; 
        
            97
             
        
            98
            $scrim: rgba(black, %MATERIA_PANEL_OPACITY%); 
        
            99
            $on-scrim: on($scrim); 
        
            100
             
        
            101
            $scrim-alt: rgba(black, .3); 
        
            102
            $on-scrim-alt: on($scrim-alt); 
        
            103
             
        
            104
            $panel: %HDR_BG3%; 
        
            105
            $on-panel: %HDR_FG%; 
        
            106
             
        
            107
            // for Unity panel which doesn't allow translucent colors 
        
            108
            $panel-solid: %HDR_BG3%; 
        
            109
            $on-panel-solid: %HDR_FG%; 
        
            110
             
        
            111
            $titlebar: %HDR_BG%; 
        
            112
            $titlebar-backdrop: %HDR_BG2%; 
        
            113
            $on-titlebar: %HDR_FG%; 
        
            114
             
        
            115
            $titlebar-indicator: currentcolor; 
        
            116
             
        
            117
            @if theme.$dark-theme { 
        
            118
              $surface-z0: if(_is-dark(%BG%), %BG%, %FG%); 
        
            119
              $surface-z1: if(_is-dark(%BG%), %MATERIA_VIEW%, color.mix(white, $surface-z0, 5%)); 
        
            120
              $surface-z8: if(_is-dark(%BG%), %MATERIA_SURFACE%, color.mix(white, $surface-z0, 12%)); 
        
            121
              $surface-switch-thumb: if(_is-dark(%BG%), %MATERIA_SURFACE%, color.mix(white, $surface-z0, 60%)); 
        
            122
              $on-surface: if(_is-dark(%BG%), %FG%, on($surface-z0)); 
        
            123
             
        
            124
              $primary: $primary-on-dark; 
        
            125
              $on-primary: on($primary); 
        
            126
             
        
            127
              $error: $error-on-dark; 
        
            128
              $on-error: on($error); 
        
            129
             
        
            130
              $warning: $warning-on-dark; 
        
            131
              $on-warning: on($warning); 
        
            132
             
        
            133
              $success: $success-on-dark; 
        
            134
              $on-success: on($success); 
        
            135
             
        
            136
              $visited: $visited-on-dark; 
        
            137
              $on-visited: on($visited); 
        
            138
             
        
            139
              $titlebar: if(_is-dark(%BG%), %HDR_BG%, color.mix(white, $surface-z0, 9%)); 
        
            140
              $titlebar-backdrop: if(_is-dark(%BG%), %HDR_BG2%, $surface-z1); 
        
            141
              $on-titlebar: if(_is-dark(%BG%), %HDR_FG%, on($titlebar)); 
        
            142
            } 
        
            143
             
        
            144
            @if theme.$light-topbar { 
        
            145
              $panel: $scrim; 
        
            146
              $on-panel: on($panel); 
        
            147
             
        
            148
              $titlebar-indicator: $primary; 
        
            149
            } 
        
            150
             
        
            151
            // 
        
            152
            // Overlay state colors 
        
            153
            // 
        
            154
             
        
            155
            // Determine the overlay color depending on the given color and opacity. 
        
            156
            @function _overlay($color, $opacity, $on) { 
        
            157
              $opacity-modifier: 0; 
        
            158
             
        
            159
              @if color.saturation($color) > 50% or color.saturation($on) > 50% { 
        
            160
                $opacity-modifier: .04; 
        
            161
              } 
        
            162
             
        
            163
              @return color.mix(rgba($color, 1), $on, math.percentage($opacity + $opacity-modifier)); 
        
            164
            } 
        
            165
             
        
            166
            @function hover-overlay($color, $opacity-modifier: 0, $on: transparent, $alt: false) { 
        
            167
              $opacity: .08; 
        
            168
             
        
            169
              @if $alt { 
        
            170
                $opacity: .04; 
        
            171
              } 
        
            172
             
        
            173
              @return _overlay($color: $color, $opacity: $opacity + $opacity-modifier, $on: $on); 
        
            174
            } 
        
            175
             
        
            176
            @function focus-overlay($color, $opacity-modifier: 0, $on: transparent) { 
        
            177
              $opacity: .08; 
        
            178
             
        
            179
              @return _overlay($color: $color, $opacity: $opacity + $opacity-modifier, $on: $on); 
        
            180
            } 
        
            181
             
        
            182
            @function pressed-overlay($color, $opacity-modifier: 0, $on: transparent) { 
        
            183
              $opacity: .12; 
        
            184
             
        
            185
              @return _overlay($color: $color, $opacity: $opacity + $opacity-modifier, $on: $on); 
        
            186
            } 
        
            187
             
        
            188
            @function dragged-overlay($color, $opacity-modifier: 0, $on: transparent) { 
        
            189
              $opacity: .08; 
        
            190
             
        
            191
              @return _overlay($color: $color, $opacity: $opacity + $opacity-modifier, $on: $on); 
        
            192
            } 
        
            193
             
        
            194
            @function activated-overlay($color, $opacity-modifier: 0, $on: transparent) { 
        
            195
              $opacity: .12; 
        
            196
             
        
            197
              @return _overlay($color: $color, $opacity: $opacity + $opacity-modifier, $on: $on); 
        
            198
            } 
        
            199
             
        
            200
            @function selected-overlay($color, $opacity-modifier: 0) { 
        
            201
              $opacity: %MATERIA_SELECTION_OPACITY%; 
        
            202
             
        
            203
              @if $color == $on-surface { 
        
            204
                $color: $primary; 
        
            205
              } 
        
            206
             
        
            207
              @return rgba($color, $opacity + $opacity-modifier); 
        
            208
            } 
        
            209
             
        
            210
            $selected-overlay: selected-overlay($on-surface); 
        
            211
             
        
            212
            // 
        
            213
            // For “on” colors 
        
            214
            // 
        
            215
             
        
            216
            @function primary($color) { 
        
            217
              @return if(_is-dark($color), $primary-on-light, $primary-on-dark); 
        
            218
            } 
        
            219
             
        
            220
            @function error($color) { 
        
            221
              @return if(_is-dark($color), $error-on-light, $error-on-dark); 
        
            222
            } 
        
            223
             
        
            224
            @function hint($color) { 
        
            225
              @return if(_has-alpha($color), rgba($color, .6), rgba($color, .7)); 
        
            226
            } 
        
            227
             
        
            228
            @function disabled($color) { 
        
            229
              @return if(_has-alpha($color), rgba($color, .38), rgba($color, .5)); 
        
            230
            } 
        
            231
             
        
            232
            @function disabled-hint($color) { 
        
            233
              @return if(_has-alpha($color), rgba($color, .26), rgba($color, .3)); 
        
            234
            } 
        
            235
             
        
            236
            @function stroke($color) { 
        
            237
              @return if(_has-alpha($color), rgba($color, .26), rgba($color, .3)); 
        
            238
            } 
        
            239
             
        
            240
            @function disabled-stroke($color) { 
        
            241
              @return if(_has-alpha($color), rgba($color, .12), rgba($color, .2)); 
        
            242
            } 
        
            243
             
        
            244
            @function divider($color) { 
        
            245
              @return if(_has-alpha($color), rgba($color, .12), rgba($color, .2)); 
        
            246
            } 
        
            247
             
        
            248
            @function fill($color) { 
        
            249
              @return if(_has-alpha($color), rgba($color, .08), rgba($color, .08)); 
        
            250
            } 
        
            251
             
        
            252
            @function entry-fill($color) { 
        
            253
              @return if(_has-alpha($color), rgba($color, .04), rgba($color, .04)); 
        
            254
            } 
        
            255
             
        
            256
            @function scrollbar-thumb($color, $state: null) { 
        
            257
              @if $state == null { 
        
            258
                @return if(_has-alpha($color), rgba($color, .38), rgba($color, .5)); 
        
            259
              } @else if $state == "hover" { 
        
            260
                @return if(_has-alpha($color), rgba($color, .48), rgba($color, .6)); 
        
            261
              } @else if $state == "pressed" { 
        
            262
                @return if(_has-alpha($color), rgba($color, .6), rgba($color, .7)); 
        
            263
              } @else if $state == "disabled" { 
        
            264
                @return if(_has-alpha($color), rgba($color, .26), rgba($color, .3)); 
        
            265
              } @else { 
        
            266
                @error "Invalid type: '#{$state}'"; 
        
            267
              } 
        
            268
            } 
        
            269