1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap\TagAttribute; 4*04fd306cSNickeau 5*04fd306cSNickeauuse ComboStrap\ExceptionBadArgument; 6*04fd306cSNickeauuse ComboStrap\LogUtility; 7*04fd306cSNickeauuse ComboStrap\PluginUtility; 8*04fd306cSNickeauuse ComboStrap\TagAttributes; 9*04fd306cSNickeau 10*04fd306cSNickeauclass Hero 11*04fd306cSNickeau{ 12*04fd306cSNickeau 13*04fd306cSNickeau const COMPONENT_NAME = "hero"; 14*04fd306cSNickeau const CANONICAL = self::COMPONENT_NAME; 15*04fd306cSNickeau const ATTRIBUTE = self::COMPONENT_NAME; 16*04fd306cSNickeau 17*04fd306cSNickeau 18*04fd306cSNickeau public static function processHero(TagAttributes &$attributes) 19*04fd306cSNickeau { 20*04fd306cSNickeau 21*04fd306cSNickeau $hero = $attributes->getValueAndRemove(self::ATTRIBUTE); 22*04fd306cSNickeau if ($hero === null) { 23*04fd306cSNickeau return; 24*04fd306cSNickeau } 25*04fd306cSNickeau try { 26*04fd306cSNickeau switch ($hero) { 27*04fd306cSNickeau case "sm": 28*04fd306cSNickeau case "small": 29*04fd306cSNickeau $attributes->addClassName(self::COMPONENT_NAME . "-sm"); 30*04fd306cSNickeau break; 31*04fd306cSNickeau case "md": 32*04fd306cSNickeau case "medium": 33*04fd306cSNickeau $attributes->addClassName(self::COMPONENT_NAME . "-md"); 34*04fd306cSNickeau break; 35*04fd306cSNickeau case "lg": 36*04fd306cSNickeau case "large": 37*04fd306cSNickeau $attributes->addClassName(self::COMPONENT_NAME . "-lg"); 38*04fd306cSNickeau break; 39*04fd306cSNickeau case "xl": 40*04fd306cSNickeau case "extra-large": 41*04fd306cSNickeau $attributes->addClassName(self::COMPONENT_NAME . "-xl"); 42*04fd306cSNickeau break; 43*04fd306cSNickeau case "none": 44*04fd306cSNickeau return; 45*04fd306cSNickeau default: 46*04fd306cSNickeau throw new ExceptionBadArgument("The hero value ($hero) is unknown and was not applied"); 47*04fd306cSNickeau } 48*04fd306cSNickeau /** 49*04fd306cSNickeau * We could have used bootstrap specific class such as 50*04fd306cSNickeau * `px-4 py-2` 51*04fd306cSNickeau * but the unit scale goes only to 5 (=3 rem) and 52*04fd306cSNickeau * the `xl` hero goes to 4 rem 53*04fd306cSNickeau */ 54*04fd306cSNickeau PluginUtility::getSnippetManager()->attachCssInternalStyleSheet(self::COMPONENT_NAME); 55*04fd306cSNickeau } catch (ExceptionBadArgument $e) { 56*04fd306cSNickeau LogUtility::error($e->getMessage(), self::CANONICAL); 57*04fd306cSNickeau } 58*04fd306cSNickeau 59*04fd306cSNickeau } 60*04fd306cSNickeau} 61