xref: /plugin/combo/ComboStrap/TextColor.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
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