137748cd8SNickeau<?php 237748cd8SNickeau 337748cd8SNickeau 437748cd8SNickeaunamespace ComboStrap; 537748cd8SNickeau 637748cd8SNickeau 737748cd8SNickeauclass TextColor 837748cd8SNickeau{ 937748cd8SNickeau 1037748cd8SNickeau const TEXT_COLOR_ATTRIBUTE = "text-color"; 1137748cd8SNickeau const CSS_ATTRIBUTE = "color"; 1237748cd8SNickeau const CANONICAL = self::TEXT_COLOR_ATTRIBUTE; 13*4cadd4f8SNickeau 1437748cd8SNickeau const TEXT_COLORS = array( 1537748cd8SNickeau 'primary', 1637748cd8SNickeau 'secondary', 1737748cd8SNickeau 'success', 1837748cd8SNickeau 'danger', 1937748cd8SNickeau 'warning', 2037748cd8SNickeau 'info', 2137748cd8SNickeau 'light', 2237748cd8SNickeau 'dark', 2337748cd8SNickeau 'body', 2437748cd8SNickeau 'muted', 2537748cd8SNickeau 'white', 2637748cd8SNickeau 'black-50', 2737748cd8SNickeau 'white-50' 2837748cd8SNickeau ); 2937748cd8SNickeau 3037748cd8SNickeau /** 3137748cd8SNickeau * @param TagAttributes $attributes 3237748cd8SNickeau */ 3337748cd8SNickeau public static function processTextColorAttribute(TagAttributes &$attributes) 3437748cd8SNickeau { 3537748cd8SNickeau 3637748cd8SNickeau $colorAttributes = [TextColor::CSS_ATTRIBUTE, TextColor::TEXT_COLOR_ATTRIBUTE]; 3737748cd8SNickeau foreach ($colorAttributes as $colorAttribute) { 3837748cd8SNickeau if ($attributes->hasComponentAttribute($colorAttribute)) { 3937748cd8SNickeau $colorValue = $attributes->getValueAndRemove($colorAttribute); 40*4cadd4f8SNickeau $lowerCaseColorValue = strtolower($colorValue); 41*4cadd4f8SNickeau 42*4cadd4f8SNickeau /** 43*4cadd4f8SNickeau * text is based in the text-colorname class 44*4cadd4f8SNickeau * Not yet on variable or color object 45*4cadd4f8SNickeau * We overwrite it here 46*4cadd4f8SNickeau */ 47*4cadd4f8SNickeau switch ($lowerCaseColorValue) { 48*4cadd4f8SNickeau case ColorRgb::PRIMARY_VALUE: 49*4cadd4f8SNickeau $primaryColor = Site::getPrimaryColor(); 50*4cadd4f8SNickeau if ($primaryColor !== null) { 51*4cadd4f8SNickeau // important because we set the text-class below and they already have an important value 52*4cadd4f8SNickeau $attributes->addStyleDeclarationIfNotSet(TextColor::CSS_ATTRIBUTE, "{$primaryColor->toRgbHex()}!important"); 53*4cadd4f8SNickeau } 54*4cadd4f8SNickeau break; 55*4cadd4f8SNickeau case ColorRgb::SECONDARY_VALUE: 56*4cadd4f8SNickeau $secondaryColor = Site::getSecondaryColor(); 57*4cadd4f8SNickeau if ($secondaryColor !== null) { 58*4cadd4f8SNickeau // important because we set the text-class below and they already have an important value 59*4cadd4f8SNickeau $attributes->addStyleDeclarationIfNotSet(TextColor::CSS_ATTRIBUTE, "{$secondaryColor->toRgbHex()}!important"); 60*4cadd4f8SNickeau } 61*4cadd4f8SNickeau break; 62*4cadd4f8SNickeau } 63*4cadd4f8SNickeau 64*4cadd4f8SNickeau if (in_array($lowerCaseColorValue, self::TEXT_COLORS)) { 6537748cd8SNickeau /** 6637748cd8SNickeau * The bootstrap text class 6737748cd8SNickeau * https://getbootstrap.com/docs/5.0/utilities/colors/#colors 6837748cd8SNickeau */ 69*4cadd4f8SNickeau $attributes->addClassName("text-$lowerCaseColorValue"); 7037748cd8SNickeau } else { 7137748cd8SNickeau /** 7237748cd8SNickeau * Other Text Colors 7337748cd8SNickeau */ 74*4cadd4f8SNickeau try { 75*4cadd4f8SNickeau $colorValue = ColorRgb::createFromString($colorValue)->toCssValue(); 76*4cadd4f8SNickeau } catch (ExceptionCombo $e) { 77*4cadd4f8SNickeau LogUtility::msg("The text color value ($colorValue) is not a valid color. Error: {$e->getMessage()}"); 78*4cadd4f8SNickeau return; 79*4cadd4f8SNickeau } 8037748cd8SNickeau if (!empty($colorValue)) { 8182a60d03SNickeau $attributes->addStyleDeclarationIfNotSet(TextColor::CSS_ATTRIBUTE, $colorValue); 8237748cd8SNickeau } 8337748cd8SNickeau } 8437748cd8SNickeau break; 8537748cd8SNickeau } 8637748cd8SNickeau } 8737748cd8SNickeau 8837748cd8SNickeau 8937748cd8SNickeau } 9037748cd8SNickeau 9137748cd8SNickeau 9237748cd8SNickeau 9337748cd8SNickeau} 94