diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/dank16/dank16.go')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/dank16/dank16.go | 651 |
1 files changed, 0 insertions, 651 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/dank16/dank16.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/dank16/dank16.go deleted file mode 100644 index fedd783..0000000 --- a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/dank16/dank16.go +++ /dev/null @@ -1,651 +0,0 @@ -package dank16 - -import ( - "fmt" - "math" - - "github.com/lucasb-eyer/go-colorful" -) - -type RGB struct { - R, G, B float64 -} - -type HSV struct { - H, S, V float64 -} - -type ColorInfo struct { - Hex string `json:"hex"` - HexStripped string `json:"hex_stripped"` - R int `json:"r"` - G int `json:"g"` - B int `json:"b"` -} - -type VariantColorValue struct { - Hex string `json:"hex"` - HexStripped string `json:"hex_stripped"` -} - -type VariantColorInfo struct { - Dark VariantColorValue `json:"dark"` - Light VariantColorValue `json:"light"` - Default VariantColorValue `json:"default"` -} - -type Palette struct { - Color0 ColorInfo `json:"color0"` - Color1 ColorInfo `json:"color1"` - Color2 ColorInfo `json:"color2"` - Color3 ColorInfo `json:"color3"` - Color4 ColorInfo `json:"color4"` - Color5 ColorInfo `json:"color5"` - Color6 ColorInfo `json:"color6"` - Color7 ColorInfo `json:"color7"` - Color8 ColorInfo `json:"color8"` - Color9 ColorInfo `json:"color9"` - Color10 ColorInfo `json:"color10"` - Color11 ColorInfo `json:"color11"` - Color12 ColorInfo `json:"color12"` - Color13 ColorInfo `json:"color13"` - Color14 ColorInfo `json:"color14"` - Color15 ColorInfo `json:"color15"` -} - -type VariantPalette struct { - Color0 VariantColorInfo `json:"color0"` - Color1 VariantColorInfo `json:"color1"` - Color2 VariantColorInfo `json:"color2"` - Color3 VariantColorInfo `json:"color3"` - Color4 VariantColorInfo `json:"color4"` - Color5 VariantColorInfo `json:"color5"` - Color6 VariantColorInfo `json:"color6"` - Color7 VariantColorInfo `json:"color7"` - Color8 VariantColorInfo `json:"color8"` - Color9 VariantColorInfo `json:"color9"` - Color10 VariantColorInfo `json:"color10"` - Color11 VariantColorInfo `json:"color11"` - Color12 VariantColorInfo `json:"color12"` - Color13 VariantColorInfo `json:"color13"` - Color14 VariantColorInfo `json:"color14"` - Color15 VariantColorInfo `json:"color15"` -} - -func NewColorInfo(hex string) ColorInfo { - rgb := HexToRGB(hex) - stripped := hex - if len(hex) > 0 && hex[0] == '#' { - stripped = hex[1:] - } - return ColorInfo{ - Hex: hex, - HexStripped: stripped, - R: int(math.Round(rgb.R * 255)), - G: int(math.Round(rgb.G * 255)), - B: int(math.Round(rgb.B * 255)), - } -} - -func HexToRGB(hex string) RGB { - if hex[0] == '#' { - hex = hex[1:] - } - var r, g, b uint8 - fmt.Sscanf(hex, "%02x%02x%02x", &r, &g, &b) - return RGB{ - R: float64(r) / 255.0, - G: float64(g) / 255.0, - B: float64(b) / 255.0, - } -} - -func RGBToHex(rgb RGB) string { - r := math.Max(0, math.Min(1, rgb.R)) - g := math.Max(0, math.Min(1, rgb.G)) - b := math.Max(0, math.Min(1, rgb.B)) - return fmt.Sprintf("#%02x%02x%02x", int(r*255), int(g*255), int(b*255)) -} - -func RGBToHSV(rgb RGB) HSV { - max := math.Max(math.Max(rgb.R, rgb.G), rgb.B) - min := math.Min(math.Min(rgb.R, rgb.G), rgb.B) - delta := max - min - - var h float64 - switch { - case delta == 0: - h = 0 - case max == rgb.R: - h = math.Mod((rgb.G-rgb.B)/delta, 6.0) / 6.0 - case max == rgb.G: - h = ((rgb.B-rgb.R)/delta + 2.0) / 6.0 - default: - h = ((rgb.R-rgb.G)/delta + 4.0) / 6.0 - } - - if h < 0 { - h += 1.0 - } - - var s float64 - if max == 0 { - s = 0 - } else { - s = delta / max - } - - return HSV{H: h, S: s, V: max} -} - -func HSVToRGB(hsv HSV) RGB { - h := hsv.H * 6.0 - c := hsv.V * hsv.S - x := c * (1.0 - math.Abs(math.Mod(h, 2.0)-1.0)) - m := hsv.V - c - - var r, g, b float64 - switch int(h) { - case 0: - r, g, b = c, x, 0 - case 1: - r, g, b = x, c, 0 - case 2: - r, g, b = 0, c, x - case 3: - r, g, b = 0, x, c - case 4: - r, g, b = x, 0, c - case 5: - r, g, b = c, 0, x - default: - r, g, b = c, 0, x - } - - return RGB{R: r + m, G: g + m, B: b + m} -} - -func sRGBToLinear(c float64) float64 { - if c <= 0.04045 { - return c / 12.92 - } - return math.Pow((c+0.055)/1.055, 2.4) -} - -func Luminance(hex string) float64 { - rgb := HexToRGB(hex) - return 0.2126*sRGBToLinear(rgb.R) + 0.7152*sRGBToLinear(rgb.G) + 0.0722*sRGBToLinear(rgb.B) -} - -func ContrastRatio(hexFg, hexBg string) float64 { - lumFg := Luminance(hexFg) - lumBg := Luminance(hexBg) - lighter := math.Max(lumFg, lumBg) - darker := math.Min(lumFg, lumBg) - return (lighter + 0.05) / (darker + 0.05) -} - -func getLstar(hex string) float64 { - rgb := HexToRGB(hex) - col := colorful.Color{R: rgb.R, G: rgb.G, B: rgb.B} - L, _, _ := col.Lab() - return L * 100.0 // go-colorful uses 0-1, we need 0-100 for DPS -} - -// Lab to hex, clamping if needed -func labToHex(L, a, b float64) string { - c := colorful.Lab(L/100.0, a, b) // back to 0-1 for go-colorful - r, g, b2 := c.Clamped().RGB255() - return fmt.Sprintf("#%02x%02x%02x", r, g, b2) -} - -func DeltaPhiStar(hexFg, hexBg string, negativePolarity bool) float64 { - Lf := getLstar(hexFg) - Lb := getLstar(hexBg) - - phi := 1.618 - inv := 0.618 - lc := math.Pow(math.Abs(math.Pow(Lb, phi)-math.Pow(Lf, phi)), inv)*1.414 - 40 - - if negativePolarity { - lc += 5 - } - - return lc -} - -func DeltaPhiStarContrast(hexFg, hexBg string, isLightMode bool) float64 { - negativePolarity := !isLightMode - return DeltaPhiStar(hexFg, hexBg, negativePolarity) -} - -func EnsureContrast(hexColor, hexBg string, minRatio float64, isLightMode bool) string { - currentRatio := ContrastRatio(hexColor, hexBg) - if currentRatio >= minRatio { - return hexColor - } - - rgb := HexToRGB(hexColor) - hsv := RGBToHSV(rgb) - - for step := 1; step < 30; step++ { - delta := float64(step) * 0.02 - - if isLightMode { - newV := math.Max(0, hsv.V-delta) - candidate := RGBToHex(HSVToRGB(HSV{H: hsv.H, S: hsv.S, V: newV})) - if ContrastRatio(candidate, hexBg) >= minRatio { - return candidate - } - - newV = math.Min(1, hsv.V+delta) - candidate = RGBToHex(HSVToRGB(HSV{H: hsv.H, S: hsv.S, V: newV})) - if ContrastRatio(candidate, hexBg) >= minRatio { - return candidate - } - } else { - newV := math.Min(1, hsv.V+delta) - candidate := RGBToHex(HSVToRGB(HSV{H: hsv.H, S: hsv.S, V: newV})) - if ContrastRatio(candidate, hexBg) >= minRatio { - return candidate - } - - newV = math.Max(0, hsv.V-delta) - candidate = RGBToHex(HSVToRGB(HSV{H: hsv.H, S: hsv.S, V: newV})) - if ContrastRatio(candidate, hexBg) >= minRatio { - return candidate - } - } - } - - return hexColor -} - -func EnsureContrastDPS(hexColor, hexBg string, minLc float64, isLightMode bool) string { - currentLc := DeltaPhiStarContrast(hexColor, hexBg, isLightMode) - if currentLc >= minLc { - return hexColor - } - - rgb := HexToRGB(hexColor) - hsv := RGBToHSV(rgb) - - for step := 1; step < 50; step++ { - delta := float64(step) * 0.015 - - if isLightMode { - newV := math.Max(0, hsv.V-delta) - candidate := RGBToHex(HSVToRGB(HSV{H: hsv.H, S: hsv.S, V: newV})) - if DeltaPhiStarContrast(candidate, hexBg, isLightMode) >= minLc { - return candidate - } - - newV = math.Min(1, hsv.V+delta) - candidate = RGBToHex(HSVToRGB(HSV{H: hsv.H, S: hsv.S, V: newV})) - if DeltaPhiStarContrast(candidate, hexBg, isLightMode) >= minLc { - return candidate - } - } else { - newV := math.Min(1, hsv.V+delta) - candidate := RGBToHex(HSVToRGB(HSV{H: hsv.H, S: hsv.S, V: newV})) - if DeltaPhiStarContrast(candidate, hexBg, isLightMode) >= minLc { - return candidate - } - - newV = math.Max(0, hsv.V-delta) - candidate = RGBToHex(HSVToRGB(HSV{H: hsv.H, S: hsv.S, V: newV})) - if DeltaPhiStarContrast(candidate, hexBg, isLightMode) >= minLc { - return candidate - } - } - } - - return hexColor -} - -// Nudge L* until contrast is good enough. Keeps hue intact unlike HSV fiddling. -func EnsureContrastDPSLstar(hexColor, hexBg string, minLc float64, isLightMode bool) string { - current := DeltaPhiStarContrast(hexColor, hexBg, isLightMode) - if current >= minLc { - return hexColor - } - - fg := HexToRGB(hexColor) - cf := colorful.Color{R: fg.R, G: fg.G, B: fg.B} - Lf, af, bf := cf.Lab() - - dir := 1.0 - if isLightMode { - dir = -1.0 // light mode = darker text - } - - step := 0.5 - for range 120 { - Lf = math.Max(0, math.Min(100, Lf+dir*step)) - cand := labToHex(Lf, af, bf) - if DeltaPhiStarContrast(cand, hexBg, isLightMode) >= minLc { - return cand - } - } - - return hexColor -} - -// Bidirectional contrast - tries both lighter and darker, picks closest to original -func EnsureContrastDPSBidirectional(hexColor, hexBg string, minLc float64, isLightMode bool) string { - current := DeltaPhiStarContrast(hexColor, hexBg, isLightMode) - if current >= minLc { - return hexColor - } - - fg := HexToRGB(hexColor) - cf := colorful.Color{R: fg.R, G: fg.G, B: fg.B} - origL, af, bf := cf.Lab() - - var darkerResult, lighterResult string - darkerL, lighterL := origL, origL - darkerFound, lighterFound := false, false - - step := 0.5 - for i := range 120 { - if !darkerFound { - darkerL = math.Max(0, origL-float64(i)*step) - cand := labToHex(darkerL, af, bf) - if DeltaPhiStarContrast(cand, hexBg, isLightMode) >= minLc { - darkerResult = cand - darkerFound = true - } - } - if !lighterFound { - lighterL = math.Min(100, origL+float64(i)*step) - cand := labToHex(lighterL, af, bf) - if DeltaPhiStarContrast(cand, hexBg, isLightMode) >= minLc { - lighterResult = cand - lighterFound = true - } - } - if darkerFound && lighterFound { - break - } - } - - if darkerFound && lighterFound { - if math.Abs(darkerL-origL) <= math.Abs(lighterL-origL) { - return darkerResult - } - return lighterResult - } - if darkerFound { - return darkerResult - } - if lighterFound { - return lighterResult - } - return hexColor -} - -type PaletteOptions struct { - IsLight bool - Background string - UseDPS bool -} - -func ensureContrastAuto(hexColor, hexBg string, target float64, opts PaletteOptions) string { - if opts.UseDPS { - return EnsureContrastDPSLstar(hexColor, hexBg, target, opts.IsLight) - } - return EnsureContrast(hexColor, hexBg, target, opts.IsLight) -} - -func ensureContrastBidirectional(hexColor, hexBg string, target float64, opts PaletteOptions) string { - if opts.UseDPS { - return EnsureContrastDPSBidirectional(hexColor, hexBg, target, opts.IsLight) - } - return EnsureContrast(hexColor, hexBg, target, opts.IsLight) -} - -func blendHue(base, target, factor float64) float64 { - diff := target - base - if diff > 0.5 { - diff -= 1.0 - } else if diff < -0.5 { - diff += 1.0 - } - result := base + diff*factor - if result < 0 { - result += 1.0 - } else if result >= 1.0 { - result -= 1.0 - } - return result -} - -func DeriveContainer(primary string, isLight bool) string { - rgb := HexToRGB(primary) - hsv := RGBToHSV(rgb) - - if isLight { - containerV := math.Min(hsv.V*1.77, 1.0) - containerS := hsv.S * 0.32 - return RGBToHex(HSVToRGB(HSV{H: hsv.H, S: containerS, V: containerV})) - } - containerV := hsv.V * 0.463 - containerS := math.Min(hsv.S*1.834, 1.0) - return RGBToHex(HSVToRGB(HSV{H: hsv.H, S: containerS, V: containerV})) -} - -func GeneratePalette(primaryColor string, opts PaletteOptions) Palette { - baseColor := DeriveContainer(primaryColor, opts.IsLight) - - rgb := HexToRGB(baseColor) - hsv := RGBToHSV(rgb) - - pr := HexToRGB(primaryColor) - ph := RGBToHSV(pr) - - var palette Palette - - var normalTextTarget, secondaryTarget float64 - if opts.UseDPS { - normalTextTarget = 40.0 - secondaryTarget = 35.0 - } else { - normalTextTarget = 4.5 - secondaryTarget = 3.0 - } - - var bgColor string - if opts.Background != "" { - bgColor = opts.Background - } else if opts.IsLight { - bgColor = "#f8f8f8" - } else { - bgColor = "#1a1a1a" - } - palette.Color0 = NewColorInfo(bgColor) - - baseSat := math.Max(ph.S, 0.5) - baseVal := math.Max(ph.V, 0.5) - - redH := blendHue(0.0, ph.H, 0.12) - greenH := blendHue(0.33, ph.H, 0.10) - yellowH := blendHue(0.14, ph.H, 0.04) - - accentTarget := secondaryTarget * 0.7 - - if opts.IsLight { - redS := math.Min(baseSat*1.2, 1.0) - redV := baseVal * 0.95 - palette.Color1 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: redH, S: redS, V: redV})), bgColor, normalTextTarget, opts)) - - greenS := math.Min(baseSat*1.3, 1.0) - greenV := baseVal * 0.75 - palette.Color2 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: greenH, S: greenS, V: greenV})), bgColor, normalTextTarget, opts)) - - yellowS := math.Min(baseSat*1.5, 1.0) - yellowV := math.Min(baseVal*1.2, 1.0) - palette.Color3 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: yellowH, S: yellowS, V: yellowV})), bgColor, accentTarget, opts)) - - blueS := math.Min(ph.S*1.05, 1.0) - blueV := math.Min(ph.V*1.05, 1.0) - palette.Color4 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: ph.H, S: blueS, V: blueV})), bgColor, normalTextTarget, opts)) - - // Color5 matches primary_container exactly (light container in light mode) - container5 := DeriveContainer(primaryColor, true) - palette.Color5 = NewColorInfo(container5) - - palette.Color6 = NewColorInfo(primaryColor) - - gray7S := baseSat * 0.08 - gray7V := baseVal * 0.28 - palette.Color7 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: hsv.H, S: gray7S, V: gray7V})), bgColor, normalTextTarget, opts)) - - gray8S := baseSat * 0.05 - gray8V := baseVal * 0.85 - dimTarget := secondaryTarget * 0.5 - palette.Color8 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: hsv.H, S: gray8S, V: gray8V})), bgColor, dimTarget, opts)) - - brightRedS := math.Min(baseSat*1.0, 1.0) - brightRedV := math.Min(baseVal*1.2, 1.0) - palette.Color9 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: redH, S: brightRedS, V: brightRedV})), bgColor, accentTarget, opts)) - - brightGreenS := math.Min(baseSat*1.1, 1.0) - brightGreenV := math.Min(baseVal*1.1, 1.0) - palette.Color10 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: greenH, S: brightGreenS, V: brightGreenV})), bgColor, accentTarget, opts)) - - brightYellowS := math.Min(baseSat*1.4, 1.0) - brightYellowV := math.Min(baseVal*1.3, 1.0) - palette.Color11 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: yellowH, S: brightYellowS, V: brightYellowV})), bgColor, accentTarget, opts)) - - brightBlueS := math.Min(ph.S*1.1, 1.0) - brightBlueV := math.Min(ph.V*1.15, 1.0) - palette.Color12 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: ph.H, S: brightBlueS, V: brightBlueV})), bgColor, accentTarget, opts)) - - lightContainer := DeriveContainer(primaryColor, true) - palette.Color13 = NewColorInfo(lightContainer) - - brightCyanS := ph.S * 0.5 - brightCyanV := math.Min(ph.V*1.3, 1.0) - palette.Color14 = NewColorInfo(RGBToHex(HSVToRGB(HSV{H: ph.H, S: brightCyanS, V: brightCyanV}))) - - white15S := baseSat * 0.04 - white15V := math.Min(baseVal*1.5, 1.0) - palette.Color15 = NewColorInfo(RGBToHex(HSVToRGB(HSV{H: hsv.H, S: white15S, V: white15V}))) - } else { - redS := math.Min(baseSat*1.1, 1.0) - redV := math.Min(baseVal*1.15, 1.0) - palette.Color1 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: redH, S: redS, V: redV})), bgColor, normalTextTarget, opts)) - - greenS := math.Min(baseSat*1.0, 1.0) - greenV := math.Min(baseVal*1.0, 1.0) - palette.Color2 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: greenH, S: greenS, V: greenV})), bgColor, normalTextTarget, opts)) - - yellowS := math.Min(baseSat*1.1, 1.0) - yellowV := math.Min(baseVal*1.25, 1.0) - palette.Color3 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: yellowH, S: yellowS, V: yellowV})), bgColor, normalTextTarget, opts)) - - // Slightly more saturated variant of primary - blueS := math.Min(ph.S*1.2, 1.0) - blueV := ph.V * 0.95 - palette.Color4 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: ph.H, S: blueS, V: blueV})), bgColor, normalTextTarget, opts)) - - // Color5 matches primary_container exactly (dark container in dark mode) - darkContainer := DeriveContainer(primaryColor, false) - palette.Color5 = NewColorInfo(darkContainer) - - palette.Color6 = NewColorInfo(primaryColor) - - gray7S := baseSat * 0.12 - gray7V := math.Min(baseVal*1.05, 1.0) - palette.Color7 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: hsv.H, S: gray7S, V: gray7V})), bgColor, normalTextTarget, opts)) - - gray8S := baseSat * 0.15 - gray8V := baseVal * 0.65 - palette.Color8 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: hsv.H, S: gray8S, V: gray8V})), bgColor, secondaryTarget, opts)) - - brightRedS := math.Min(baseSat*0.75, 1.0) - brightRedV := math.Min(baseVal*1.35, 1.0) - palette.Color9 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: redH, S: brightRedS, V: brightRedV})), bgColor, accentTarget, opts)) - - brightGreenS := math.Min(baseSat*0.7, 1.0) - brightGreenV := math.Min(baseVal*1.2, 1.0) - palette.Color10 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: greenH, S: brightGreenS, V: brightGreenV})), bgColor, accentTarget, opts)) - - brightYellowS := math.Min(baseSat*0.7, 1.0) - brightYellowV := math.Min(baseVal*1.5, 1.0) - palette.Color11 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: yellowH, S: brightYellowS, V: brightYellowV})), bgColor, accentTarget, opts)) - - // Create a gradient of primary variants: Color12 -> Color13 -> Color14 -> Color15 (near white) - // Color12: Start of the lighter gradient - slightly desaturated - brightBlueS := ph.S * 0.85 - brightBlueV := math.Min(ph.V*1.1, 1.0) - palette.Color12 = NewColorInfo(ensureContrastBidirectional(RGBToHex(HSVToRGB(HSV{H: ph.H, S: brightBlueS, V: brightBlueV})), bgColor, accentTarget, opts)) - - // Medium-high saturation pastel primary - color13S := ph.S * 0.7 - color13V := math.Min(ph.V*1.3, 1.0) - palette.Color13 = NewColorInfo(RGBToHex(HSVToRGB(HSV{H: ph.H, S: color13S, V: color13V}))) - - // Lower saturation, lighter variant - color14S := ph.S * 0.45 - color14V := math.Min(ph.V*1.4, 1.0) - palette.Color14 = NewColorInfo(RGBToHex(HSVToRGB(HSV{H: ph.H, S: color14S, V: color14V}))) - - white15S := baseSat * 0.05 - white15V := math.Min(baseVal*1.45, 1.0) - palette.Color15 = NewColorInfo(ensureContrastAuto(RGBToHex(HSVToRGB(HSV{H: hsv.H, S: white15S, V: white15V})), bgColor, normalTextTarget, opts)) - } - - return palette -} - -type VariantOptions struct { - PrimaryDark string - PrimaryLight string - Background string - UseDPS bool - IsLightMode bool -} - -func mergeColorInfo(dark, light ColorInfo, isLightMode bool) VariantColorInfo { - darkVal := VariantColorValue{Hex: dark.Hex, HexStripped: dark.HexStripped} - lightVal := VariantColorValue{Hex: light.Hex, HexStripped: light.HexStripped} - - defaultVal := darkVal - if isLightMode { - defaultVal = lightVal - } - - return VariantColorInfo{ - Dark: darkVal, - Light: lightVal, - Default: defaultVal, - } -} - -func GenerateVariantPalette(opts VariantOptions) VariantPalette { - darkOpts := PaletteOptions{IsLight: false, Background: opts.Background, UseDPS: opts.UseDPS} - lightOpts := PaletteOptions{IsLight: true, Background: opts.Background, UseDPS: opts.UseDPS} - - dark := GeneratePalette(opts.PrimaryDark, darkOpts) - light := GeneratePalette(opts.PrimaryLight, lightOpts) - - return VariantPalette{ - Color0: mergeColorInfo(dark.Color0, light.Color0, opts.IsLightMode), - Color1: mergeColorInfo(dark.Color1, light.Color1, opts.IsLightMode), - Color2: mergeColorInfo(dark.Color2, light.Color2, opts.IsLightMode), - Color3: mergeColorInfo(dark.Color3, light.Color3, opts.IsLightMode), - Color4: mergeColorInfo(dark.Color4, light.Color4, opts.IsLightMode), - Color5: mergeColorInfo(dark.Color5, light.Color5, opts.IsLightMode), - Color6: mergeColorInfo(dark.Color6, light.Color6, opts.IsLightMode), - Color7: mergeColorInfo(dark.Color7, light.Color7, opts.IsLightMode), - Color8: mergeColorInfo(dark.Color8, light.Color8, opts.IsLightMode), - Color9: mergeColorInfo(dark.Color9, light.Color9, opts.IsLightMode), - Color10: mergeColorInfo(dark.Color10, light.Color10, opts.IsLightMode), - Color11: mergeColorInfo(dark.Color11, light.Color11, opts.IsLightMode), - Color12: mergeColorInfo(dark.Color12, light.Color12, opts.IsLightMode), - Color13: mergeColorInfo(dark.Color13, light.Color13, opts.IsLightMode), - Color14: mergeColorInfo(dark.Color14, light.Color14, opts.IsLightMode), - Color15: mergeColorInfo(dark.Color15, light.Color15, opts.IsLightMode), - } -} |