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; 134cadd4f8SNickeau 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); 404cadd4f8SNickeau $lowerCaseColorValue = strtolower($colorValue); 414cadd4f8SNickeau 424cadd4f8SNickeau /** 434cadd4f8SNickeau * text is based in the text-colorname class 444cadd4f8SNickeau * Not yet on variable or color object 454cadd4f8SNickeau * We overwrite it here 464cadd4f8SNickeau */ 474cadd4f8SNickeau switch ($lowerCaseColorValue) { 484cadd4f8SNickeau case ColorRgb::PRIMARY_VALUE: 494cadd4f8SNickeau $primaryColor = Site::getPrimaryColor(); 504cadd4f8SNickeau if ($primaryColor !== null) { 514cadd4f8SNickeau // important because we set the text-class below and they already have an important value 524cadd4f8SNickeau $attributes->addStyleDeclarationIfNotSet(TextColor::CSS_ATTRIBUTE, "{$primaryColor->toRgbHex()}!important"); 534cadd4f8SNickeau } 544cadd4f8SNickeau break; 554cadd4f8SNickeau case ColorRgb::SECONDARY_VALUE: 564cadd4f8SNickeau $secondaryColor = Site::getSecondaryColor(); 574cadd4f8SNickeau if ($secondaryColor !== null) { 584cadd4f8SNickeau // important because we set the text-class below and they already have an important value 594cadd4f8SNickeau $attributes->addStyleDeclarationIfNotSet(TextColor::CSS_ATTRIBUTE, "{$secondaryColor->toRgbHex()}!important"); 604cadd4f8SNickeau } 614cadd4f8SNickeau break; 624cadd4f8SNickeau } 634cadd4f8SNickeau 644cadd4f8SNickeau if (in_array($lowerCaseColorValue, self::TEXT_COLORS)) { 6537748cd8SNickeau /** 6637748cd8SNickeau * The bootstrap text class 6737748cd8SNickeau * https://getbootstrap.com/docs/5.0/utilities/colors/#colors 6837748cd8SNickeau */ 694cadd4f8SNickeau $attributes->addClassName("text-$lowerCaseColorValue"); 7037748cd8SNickeau } else { 7137748cd8SNickeau /** 7237748cd8SNickeau * Other Text Colors 7337748cd8SNickeau */ 744cadd4f8SNickeau try { 754cadd4f8SNickeau $colorValue = ColorRgb::createFromString($colorValue)->toCssValue(); 76*04fd306cSNickeau } catch (ExceptionCompile $e) { 774cadd4f8SNickeau LogUtility::msg("The text color value ($colorValue) is not a valid color. Error: {$e->getMessage()}"); 784cadd4f8SNickeau return; 794cadd4f8SNickeau } 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