@fortawesome/free-regular-svg-icons#faQuestionCircle TypeScript Examples

The following examples show how to use @fortawesome/free-regular-svg-icons#faQuestionCircle. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: HowToResolveFeedbackBanner.tsx    From frontend.ro with MIT License 5 votes vote down vote up
function HowToResolveFeedbackBanner() {
  const [showExplanation, setShowExplanation] = useState(false);

  return (
    <div className={styles['how-to-resolve-feedback-banner']}>
      <div className="d-flex align-items-center">
        <FontAwesomeIcon
          size="2x"
          height="32"
          className="mr-1"
          icon={faQuestionCircle}
        />
        Trebuie să rezolvi feedback-ul din codul de mai jos
        pentru a putea trimite din nou exercițiul.
        <Button
          variant="transparent"
          className="text-bold"
          onClick={() => setShowExplanation(!showExplanation)}
        >
          {showExplanation ? 'Ascunde instrucțiunile' : 'Vrei să vezi cum?'}
        </Button>
      </div>
      {showExplanation && (
      <>
        <List as="ol" variant="count">
          <li> fiecare fișier cu feedback va fi marcat cu o linie roșie </li>
          <li> înăuntrul său, codul cu probleme va fi hașurat cu roșu </li>
          <li> pune mouse-ul deasupra codului marcat și așteaptă câteva secunde </li>
          <li> în partea de sus a paginii va apărea feedback-ul</li>
          <li>
            după ce l-ai citit, apasă pe butonul
            <em> Done </em>
            pentru a-l marca drept rezolvat
          </li>
          <li>
            după ce ai rezolvat toate feedback-urile poți trimite exercițiul
            din nou
          </li>
        </List>
        <p>
          Dacă dai de probleme scrie-ne la
          {' '}
          <a href="mailto:[email protected]">[email protected]</a>
        </p>
      </>
      )}
    </div>
  );
}
Example #2
Source File: icon.service.ts    From WowUp with GNU General Public License v3.0 5 votes vote down vote up
public constructor(private _matIconRegistry: MatIconRegistry, private _sanitizer: DomSanitizer) {
    this.addSvg(faAngleDoubleDown);
    this.addSvg(faArrowUp);
    this.addSvg(faArrowDown);
    this.addSvg(faSyncAlt);
    this.addSvg(faTimes);
    this.addSvg(faExternalLinkAlt);
    this.addSvg(faQuestionCircle);
    this.addSvg(faPlay);
    this.addSvg(faClock);
    this.addSvg(faBug);
    this.addSvg(faLink);
    this.addSvg(faDiscord);
    this.addSvg(faGithub);
    this.addSvg(faInfoCircle);
    this.addSvg(faCodeBranch);
    this.addSvg(faCaretDown);
    this.addSvg(faExclamationTriangle);
    this.addSvg(faCode);
    this.addSvg(faPatreon);
    this.addSvg(faCoins);
    this.addSvg(faCompressArrowsAlt);
    this.addSvg(faPencilAlt);
    this.addSvg(faCheckCircle);
    this.addSvg(faDiceD6);
    this.addSvg(faSearch);
    this.addSvg(faInfoCircle);
    this.addSvg(faNewspaper);
    this.addSvg(faCog);
    this.addSvg(faAngleUp);
    this.addSvg(faAngleDown);
    this.addSvg(faChevronRight);
    this.addSvg(faUserCircle);
    this.addSvg(faEllipsisV);
    this.addSvg(faCopy);
    this.addSvg(farCheckCircle);
    this.addSvg(faExclamation);
    this.addSvg(faTrash);
    this.addSvg(faHistory);
    this.addSvg(faCaretSquareRight);
    this.addSvg(faCaretSquareLeft);
    this.addSvg(faMinimize);
    this.addSvg(faUpRightFromSquare);
  }
Example #3
Source File: LinksAndButtons.tsx    From frontend.ro with MIT License 4 votes vote down vote up
export default function LinksAndButtonsContent() {
  const lessonInfo = getLessonById('linkuri-si-butoane');

  return (
    <>
      <LessonCover>
        <Image
          width="2400"
          height="1260"
          alt="Doodle reprezentând un buton și mai multe linkuri"
          src={`${process.env.CLOUDFRONT_PUBLIC}/seo/links-and-buttons_2400w.jpg`}
        />
      </LessonCover>
      <LessonFirstSentence>
        Deși la prima vedere pare un subiect simplu, sunt totuși multe de
        știut despre link-uri și butoane în HTML. În acest articol vom discuta
        despre markup, atribute și cele mai bune practici. Totodată, vom trata
        împreună cele două concepte pentru că de multe ori se folosesc
        link-uri în loc de butoane și invers.
      </LessonFirstSentence>
      <section>
        <LessonHeading as="h2" id={lessonInfo.chapters[0].id}>
          {lessonInfo.chapters[0].title}
        </LessonHeading>
        <p>
          Elementul
          {' '}
          <FormattedText as="strong">{'<a>'}</FormattedText>
          {' '}
          denumit și
          {' '}
          <i>ancoră</i>
          {' '}
          sau
          {' '}
          <i>link</i>
          {' '}
          este unul din cele mai uzuale elemente folosite pentru
          construirea paginilor web. Dacă vrem să ne mutam la o altă pagină
          sau la o altă zonă în cadrul aceleiași pagini, atunci vom folosi
          acest element. Pentru a specifica destinația link-ului vom folosi
          atributul
          {' '}
          <FormattedText as="strong">href</FormattedText>
          {' '}
          .
        </p>
      </section>
      <section>
        <LessonHeading as="h2" id={lessonInfo.chapters[1].id}>
          {lessonInfo.chapters[1].title}
        </LessonHeading>
        <LessonHeading as="h3" id="cele-mai-uzuale">
          Cele mai uzuale
        </LessonHeading>
        <Highlight
          className="my-5"
          language="html"
          code={`
<a href="https://frontend.ro/"> Frontend.ro </a>`}
        />
        <p>
          În cazul acesta, spunem că este un
          {' '}
          <strong>link către un URL absolut</strong>
          {' '}
          - adică un URL care
          conține întreaga adresă a unei pagini. Acest tip de URL este deseori
          întâlnit atunci când un website face legătura către un alt website.
        </p>
        <p>
          Putem avea și
          {' '}
          <strong>URL-uri relative</strong>
          ,
          a căror destinție finală se calculează în funcție de
          pagina pe cară ne aflăm. În exemplul de mai jos avem același
          link atât în
          {' '}
          <FormattedText as="strong">
            about.html
          </FormattedText>
          {' '}
          cât și în
          {' '}
          <FormattedText as="strong">
            home.html
          </FormattedText>
          :
        </p>
        <Highlight
          language="html"
          code={`
<a href="info.html"> Go to info page </a>`}
        />
        <p>
          Totuși, ajungem la destinații diferite în funcție de pagina
          pe care suntem.
        </p>

        <BasicEditorLazy folderStructure={relativeUrlExample} readOnly />
        <p>
          Foarte utile sunt și link-urile care duc către o secțiune ale
          aceleiași pagini sau așa numitele
          {' '}
          <FormattedText as="strong">jump links</FormattedText>
          .
        </p>
        <Highlight
          className="my-5"
          language="html"
          code={`
<a href="#comments"> 
  Sari la secțiunea de comentarii
</a> 
<h2 id="comments">Comentarii</h2>
<!-- ... -->`}
        />
        <LessonTip>
          Observați atributul
          {' '}
          <FormattedText as="strong">id</FormattedText>
          .
          Aceasta este modalitatea prin care facem legătura între link și
          secțiunea paginii la care vrem să ajungem.
        </LessonTip>
        <p>
          Deși nu am ajuns la partea de CSS, merită menționat că jump links
          pot să beneficieze de
          {' '}
          <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior">smooth scrolling</a>
          {' '}
          pentru ca utilizatorii să aibă o experiență mai plăcută:
        </p>
        <LessonFigure
          isVideo
          withBorder
          src={`${process.env.CLOUDFRONT_PUBLIC}/public/images/lessons/links-and-buttons/smooth-scrolling.mp4`}
          alt="Redarea comportamentului de smooth scrolling"
          demo="/demo/html/jump-links"
        />
      </section>
      <section>
        <LessonHeading as="h3" id={lessonInfo.chapters[2].id}>
          {lessonInfo.chapters[2].title}
        </LessonHeading>
        <p>
          Sunt situații în care vrem să oferim unui utilizator posibilitatea de a
          {' '}
          <strong>
            deschide email-ul precompletat către o adresă
          </strong>
          . În cazul acesta ne
          vom folosi de
          {' '}
          <FormattedText as="strong">mailto</FormattedText>
          :
        </p>
        <Highlight
          className="my-5"
          language="html"
          code={`
<a href="mailto:[email protected]">
  Trimite email la Frontend.ro
</a>`}
        />
        <p>
          Apasă pe linkul alăturat și ți se va deschide clientul de email,
          precompletat cu adresa noastră ?
          {' '}
          <a href="mailto:[email protected]">Trimite email la Frontend.ro</a>
          .
        </p>
        <LessonFigure
          isVideo
          withBorder
          src={`${process.env.CLOUDFRONT_PUBLIC}/public/images/lessons/links-and-buttons/mailto.mp4`}
          alt="Opțiunea mailto pentru a ușura trimiterea de email-uri"
        />
        <LessonHeading as="h3" id={lessonInfo.chapters[3].id}>
          {lessonInfo.chapters[3].title}
        </LessonHeading>
        <p>
          Mai mult, dacă vrem să arătăm în pagină
          numere de telefon e recomandat să folosim link-uri,
          pentru a ne deschide direct aplicația prin care sunăm:
        </p>
        <Highlight
          className="my-5"
          language="html"
          code={`
<a href="tel:+49.157.0156">+49 157 0156</a>
<a href="tel:+1(555)5309">(555) 5309</a>
`}
        />
        <p>
          Apasă pe unul din numerele de mai jos pentru a vedea cum sunt
          precompletate pe telefon (poți să dai click fără griji, nu le vei apela dacă faci asta)
        </p>
        <List variant="bullets">
          <li>
            <a href="tel:+49.157.0156">+49 157 0156</a>
          </li>
          <li>
            <a href="tel:+1(555)5309">(555) 5309</a>
          </li>
        </List>
        <LessonFigure
          isVideo
          withBorder
          src={`${process.env.CLOUDFRONT_PUBLIC}/public/images/lessons/links-and-buttons/link-to-tel.mp4`}
          alt="Link-uri către numere de telefon"
        />
        <LessonHeading as="h3" id={lessonInfo.chapters[4].id}>
          {lessonInfo.chapters[4].title}
        </LessonHeading>
        <p>
          Împreuna cu atributul
          {' '}
          <FormattedText as="strong">download</FormattedText>
          {' '}
          putem instrui
          browser-ul să downloadeze fișierul din cadrul link-ului în loc să îl
          deschidă în pagina curentă:
        </p>
        <Highlight
          className="my-5"
          language="html"
          code={`
<a href="https://FrontEnd.ro/logo.png" download> Download our logo </a>
`}
        />
        <p>
          Apasă pe linkul de alături pentru a downlada logo-ul nostru ?
          {' '}
          <a href="/logo.png" download>
            Downloadează logo-ul nostru
          </a>
        </p>
        <p>
          Acum că ne-am familiarizat cu situații din practică unde putem
          folosi link-uri, ne-am obișnuit puțin cu markup-ul și cu câteva
          dintre atributele ce pot însoți elementul, putem să
          vorbim de câteva bune practici pe care să le avem în vedere.
        </p>
      </section>
      <section>
        <LessonHeading as="h2" id={lessonInfo.chapters[5].id}>
          {lessonInfo.chapters[5].title}
        </LessonHeading>
        <p>
          În afară de atributele prezentate, un alt atribut des folosit este
          {' '}
          <FormattedText as="strong"> target</FormattedText>
          {' '}
          , care ne indică cum
          să deschidem link-ul din href.
        </p>
        <p>
          Ca și developeri cel mai des ne vom întâlni cu situația de a folosi
          {' '}
          <FormattedText as="strong">
            target="_blank"
          </FormattedText>
          {' '}
          (link-ul va fi deschis într-o fereastră sau un tab
          nou)
          .
          Când folosim valoarea
          {' '}
          <strong>_blank</strong>
          , e recomandat să adăugăm un nou atribut
          pentru securitate și anume :
          {' '}
          <FormattedText as="strong">
            rel=”noopener noreferrer”
          </FormattedText>
          .
        </p>
        <Highlight
          className="my-5"
          language="html"
          code={`
<a href="http://frontend.ro" target="_blank" rel="noopener noreferrer">
  Link-ul se deschide într-un nou tab
</a>
            `}
        />
        <p>
          Apasă pe următorul link pentru a-l deschide într-un nou tab ?
          {' '}
          <a
            href="http://frontend.ro"
            target="_blank"
            rel="noopener noreferrer"
          >
            Link-ul se deschide într-un nou tab
          </a>
        </p>
      </section>
      <section>
        <LessonHeading as="h2" id={lessonInfo.chapters[6].id}>
          {lessonInfo.chapters[6].title}
        </LessonHeading>
        <p>
          În continuare vom raspunde la câteva întrebări pe care noi ca și
          developeri ni le putem adresa pe măsură ce codăm și ne întâlnim cu
          diverse situații:
        </p>
        <LessonQuote>
          Putem folosi doar un
          {' '}
          <FormattedText as="strong">icon</FormattedText>
          {' '}
          în
          interiorul unui link?
        </LessonQuote>
        <p>
          Din păcate un simplu icon nu ne-ar oferi suficientă
          informație contextuală despre link, deci nu ar fi chiar recomandat.
          Dacă totuși suntem nevoiți să folosim un astfel de icon, o bună
          practică ar fi să adăugăm în link niște text
          ascuns vizual, care va fi totuși citit de
          {' '}
          <strong>screen readers</strong>
          :
        </p>
        <Highlight
          className="my-5"
          language="html"
          code={`
<a href="https://fontawesome.com/">
  <svg width="24" height="24" viewBox="0 0 1024 1024">
    <g>
      <path d="M384 928c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z" />
      <path d="M1024 928c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z" />
      <path d="M1024 512v-384h-768c0-35.346-28.654-64-64-64h-192v64h128l48.074 412.054c-29.294 23.458-48.074 59.5-48.074 99.946 0 70.696 57.308 128 128 128h768v-64h-768c-35.346 0-64-28.654-64-64 0-0.218 0.014-0.436 0.016-0.656l831.984-127.344z" />
    </g>
  </svg>
  // Se comporta ca un label ce e ascuns
  <span style="position: absolute; opacity: 0">
    Coș de cumpărături
  </span>
 </a>`}
        />
        <p>
          Spre exemplu, link-ul alăturat conține doar un icon pentru un coș de cumpărături,
          dar e în același timp
          accesibil pentru cei ce folosesc screen readere ?:
          {' '}
          <a href="https://fontawesome.com/">
            <svg width="24" height="24" viewBox="0 0 1024 1024">
              <g>
                <path d="M384 928c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z" />
                <path d="M1024 928c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z" />
                <path d="M1024 512v-384h-768c0-35.346-28.654-64-64-64h-192v64h128l48.074 412.054c-29.294 23.458-48.074 59.5-48.074 99.946 0 70.696 57.308 128 128 128h768v-64h-768c-35.346 0-64-28.654-64-64 0-0.218 0.014-0.436 0.016-0.656l831.984-127.344z" />
              </g>
            </svg>
            {/* Se comporta ca un label ce e ascuns  */}
            <span style={{ position: 'absolute', opacity: '0' }}>
              Coș de cumpărături
            </span>
          </a>
        </p>
        <LessonTip icon={faQuestionCircle}>
          Atributul
          {' '}
          <FormattedText as="strong">style</FormattedText>
          {' '}
          este folosit
          pentru a adăuga reguli CSS elementelor. Încă nu am ajuns la acel
          capitol deci e ok dacă nu știi cum să-l folosești.
          Totuși, te rugăm să-l păstrezi în exemplu, pentu a funcționa
          cum ne așteptăm.
        </LessonTip>
        <LessonQuote>
          Putem folosi o
          {' '}
          <FormattedText as="strong">imagine</FormattedText>
          {' '}
          în
          interiorul unui link?
        </LessonQuote>
        <p>
          Daaa. Vom avea nevoie de multe ori să facem asta în proiectele
          noastre.
        </p>
        <Highlight
          className="my-5"
          language="html"
          code={`
<a href="https://FrontEnd.ro">
  <img 
    src="https://FrontEnd.ro/images/logo.png" 
    alt="Frontend.ro LOGO." 
    height="48" 
  />
</a>`}
        />
        <p>
          Alături avem o imagine într-un link. Dacă dăm click pe ea,
          ne va duce pa pagina principală (home page) ?
          {' '}
          <a style={{ verticalAlign: 'middle' }} href="/">
            <img height="48" src="/logo.png" alt="Frontend.ro LOGO." />
          </a>
        </p>
        {/* this demo ? is not very clear at this moment, when we will have more CSS lessons,
           maybe we can uncomment this part */}
        {/* <LessonQuote>
            Putem folosi bucăți mari de cod în interiorul unui link?
          </LessonQuote>
          <p>Răspunsul la această întrebare este că nu e tocmai o idee bună.</p>
          <LessonFigure
            withBorder
            src={`${process.env.CLOUDFRONT_PUBLIC}/public/images/lessons/links-and-buttons/demo-link.png`}
            alt="2 metode diferite prin care putem folosi link-urile în raport cu bucăți
            mai mari de cod și implicațiile lor"
            demo="/demo/html/linkuri-care-contin-bucati-mari-de-continut"
          /> */}
      </section>
      <section>
        <LessonHeading as="h2" id={lessonInfo.chapters[7].id}>
          {lessonInfo.chapters[7].title}
        </LessonHeading>
        <p>
          Elementul html
          {' '}
          <FormattedText as="strong">{'<button>'}</FormattedText>
          {' '}
          este folosit atunci când vrem să facem o acțiune (exemple: arată/ascunde
          un meniu, play sau pause la un video, trimite un comentariu, etc)
        </p>
        <Highlight
          language="html"
          code={`
<button type="button">
  Open menu
</button>`}
        />
        <p>
          Spre deosebire de link-uri, butoanele
          {' '}
          <strong>NU</strong>
          {' '}
          schimbă
          pagina. Totuși dacă avem un formular cu un buton de login, dăm click pe
          el, așteptăm, apoi suntem direcționați către o nouă pagină, putem
          spune că acțiunea declanșată de buton a schimbat pagina. În cazul acesta e ok :)
        </p>
      </section>
      <section>
        <LessonHeading as="h2" id={lessonInfo.chapters[8].id}>
          {lessonInfo.chapters[8].title}
        </LessonHeading>
        <p>
          Cele 2 tipuri de butoane pe care le vom folosi cel mai des în
          aplicațiile noastre sunt :
        </p>
        <List variant="bullets">
          <li>
            <FormattedText as="strong">type="button"</FormattedText>
          </li>
          <li>
            <FormattedText as="strong">type="submit"</FormattedText>
            : (utilizate
            în cadrul formularelor - vom discuta mai multe în momentul în care
            vom ajunge la această lecție)
          </li>
        </List>
        <p>O bună practică este să specificăm mereu tipul acestora.</p>
        <p>
          Pe lîngă submit și button, type mai pot avea și valoarea
          {' '}
          <FormattedText as="strong">reset</FormattedText>
          . Uite un exemplu care le include pe toate 3:
        </p>
        <Highlight
          className="my-5"
          language="html"
          code={`
<form action="/" method="POST">
  <input type="text" name="name" id="name" style="padding: 0.7em; border-radius: 5px; "/>

  <!-- Dacă vrem să fie mai explicit... -->
  <button type="submit" style="padding: .5em; border: none; color: #fff; font-size: 1.2em; border-radius: 5px; background: #58af58">Submit</button>

  <!-- ...sau să resetăm inputurile la valoarea
  lor inițială (tinde să enerveze userii) -->
  <button type="reset" style="padding: .5em; border: none; color: #fff; font-size: 1.2em; border-radius: 5px; background: #77838b">Reset</button>

  <!-- Acesta împiedică ca acțiunea de submit să 
  aibă loc,  ceea ce poate fi util uneori în cadrul 
  unui form -->
  <button type="button" style="padding: .5em; border: none; color: #fff; font-size: 1.2em; border-radius: 5px; background: #2980b9">Non-submitting button</button>
</form>
          `}
        />
        <LessonFigure
          withBorder
          src={`${process.env.CLOUDFRONT_PUBLIC}/public/images/lessons/links-and-buttons/buttons-types.png`}
          alt="Tipuri de butoane"
          demo="/demo/html/tipuri-de-butoane"
        />
      </section>
      <section>
        <LessonHeading as="h2" id={lessonInfo.chapters[9].id}>
          {lessonInfo.chapters[9].title}
        </LessonHeading>
        <p>
          Acest atribut boolean împiedică interactivitatea cu butonul: nu
          poate fi apăsat sau focusat. Cel mai comun pattern este în cazul
          autentificării pe un site:
        </p>
        {/* <Highlight
            className="my-5"
            language="html"
            code={`
<form className="login-container">
  <label htmlFor="email">Introdu adresa de email:</label>
  <input type="email" id="email" placeholder="Email" />
  <label htmlFor="password">Introdu parola:</label>
  <input type="password" id="password" placeholder="Password" />
  <button type="submit" disabled>Loghează-te</button>
</form>
          `}
          />
          <LessonFigure
            withBorder
            src={`${process.env.CLOUDFRONT_PUBLIC}/public/images/lessons/links-and-buttons/disabled-button.png`}
            alt="Atributul disabled"
            demo="/demo/html/butoane-atributul-disabled"
          /> */}
        <List as="ol" style={{ listStyle: 'revert' }}>
          <li>
            completăm formularul
          </li>
          <li>
            apăsăm butonul de login
          </li>
          <li>
            butonul devinde
            {' '}
            <strong> disabled </strong>
            {' '}
            cât timp
            se trimit datele la server și se așteaptă un răspuns
            (pentru a preveni cazul în care utilizatorul încearcă
            din nou în timp ce autentificarea e înca în proges)
          </li>
          <li>
            dacă logarea eșuează, putem afișa un mesaj informativ în care să
            explicăm de ce nu a putut avea loc și să facem enabled la buton abia
            la final, pentru a reîncerca.
          </li>
        </List>
        <LessonFigure
          isVideo
          withBorder
          src={`${process.env.CLOUDFRONT_PUBLIC}/public/images/lessons/links-and-buttons/form_validation_with_disabled_button.mp4`}
          alt="Validare form cu button disabled"
        />
      </section>
      <section>
        <LessonHeading as="h2" id={lessonInfo.chapters[10].id}>
          {lessonInfo.chapters[10].title}
        </LessonHeading>
        <p>
          Ca o scurtă recapitulare, folosim link-uri dacă se schimbă pagina
          sau facem jump la o secțiune din pagină, iar de butoane dacă facem o
          acțiune.
        </p>
        <LessonTip icon={faThumbsDown}>
          Nu putem avea link-uri în butoane sau butoane în link-uri - nu e
          valid markup-ul.
        </LessonTip>
      </section>
      <div className="dots" />
      <LessonResources
        className="my-5"
        links={[
          {
            text: 'Documentația completă a link-urilor pe MDN',
            url:
                'https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a',
          },
          {
            text: 'Documentația completă a <button> pe MDN',
            url:
                'https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button',
          },
          {
            text: 'Valoarea "noreferrer" pentru atributul "rel"',
            url: 'https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/noreferrer',
          },
          {
            text: 'Valoarea "noopener" pentru atributul "rel"',
            url: 'https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/noopener',
          },
        ]}
      />
    </>
  );
}
Example #4
Source File: galerie-imagini-fixa.tsx    From frontend.ro with MIT License 4 votes vote down vote up
export default function FixedGallery() {
  const title = 'O galerie de imagini în care fiecare ocupa 45% din lățimea disponibilă';

  return (
    <>
      <Head>
        <title>
          {title}
          {' '}
          | DEMO - FrontEnd.ro
        </title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <>
        <Header demoPage withNavMenu />
        <Demo title={title}>
          <DemoPreview>
            <div style={{
              display: 'flex',
              flexFlow: 'row wrap',
              justifyContent: 'space-between',
              alignItems: 'flex-start',
            }}
            >
              <img
                style={{ width: '45%', marginBottom: '2em' }}
                src="https://d3tycb976jpudc.cloudfront.net/demo-assets/body-of-water-and-trees.jpg"
                alt="Body of water and trees"
              />
              <img
                style={{ width: '45%', marginBottom: '2em' }}
                src="https://d3tycb976jpudc.cloudfront.net/demo-assets/alpaca-portrait.jpg"
                alt="Alpaca portrait"
              />
              <img
                style={{ width: '45%' }}
                src="https://d3tycb976jpudc.cloudfront.net/demo-assets/lion-portrait.jpg"
                alt="Lion portrait"
              />
              <img
                style={{ width: '45%' }}
                src="https://d3tycb976jpudc.cloudfront.net/demo-assets/snow-capped-mountains.jpg"
                alt="Snow capped mountains"
              />

            </div>
          </DemoPreview>
          <Highlight
            className="my-5"
            language="html"
            code={`
<div style="display: flex; flex-flow: row wrap; justify-content: space-between; align-items: flex-start;">
  <img 
    src="https://d3tycb976jpudc.cloudfront.net/demo-assets/body-of-water-and-trees.jpg"
    alt="Body of water and trees" 
    style="width: 45%; margin-bottom: 1em" />

  <img 
    src="https://d3tycb976jpudc.cloudfront.net/demo-assets/alpaca-portrait.jpg"
    alt="Alpaca portrait"
    style="width: 45%; margin-bottom: 1em" />

  <img 
    src="https://d3tycb976jpudc.cloudfront.net/demo-assets/lion-portrait.jpg"
    alt="Lion portrait" 
    style="width: 45%" />

  <img 
    src="https://d3tycb976jpudc.cloudfront.net/demo-assets/snow-capped-mountains.jpg"
    alt="Snow capped mountains" 
    style="width: 45%" />
</div>`}
          />
          <LessonTip icon={faQuestionCircle}>
            Atributul
            {' '}
            <strong>style</strong>
            {' '}
            este folosit pentru a stiliza elementele.
            {' '}
            Încă nu am ajuns la acel capitol deci nu-ți fă griji dacă nu înțelegi acel cod.
            <br />
            {' '}
            <br />
            Totuși va trebui să-l pui acolo pentru a obține același rezultat ca mai sus.
          </LessonTip>
        </Demo>
        <Footer />
      </>
    </>
  );
}
Example #5
Source File: lazy-image-loading.tsx    From frontend.ro with MIT License 4 votes vote down vote up
export default function LazyLoadingImages() {
  const title = 'Încărcarea imaginilor doar cand avem nevoie de ele';

  const images = [{
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/inside-sushi-restaurant.jpg',
    alt: 'Inside a sushi restaurant',
  }, {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/man-in-black-holding-video-camera.jpg',
    alt: 'Man in black holding video camera',
  }, {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/motivational-quote-on-flat-screen-tv.jpg',
    alt: 'Motivational quote on a flat screen',
  }, {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/red-plastic-chairs.jpg',
    alt: 'Red plastic chairs',
  }, {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/turned-on-black-flat-screen-monitor.jpg',
    alt: 'Turned-on black flat screen monitor',
  }, {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/two-people-using-a-laptop.jpg',
    alt: 'Two people using a laptop',
  }, {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/turned-on-iMac-and-Apple-Magic-Keyboard.jpg',
    alt: 'Turned on iMac and Apple Magic Keyboard',
  }, {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/eiffel-tower-during-night.jpg',
    alt: 'Eiffel tower during night',
  }, {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/woman-climbing-down-stairs.jpg',
    alt: 'Woman climbing down stairs',
  },
  {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/orange-fruits-in-white-ceramic-bowl.jpg',
    alt: 'Orange fruits in white ceramic bowl',
  },
  {
    src: 'https://d3tycb976jpudc.cloudfront.net/demo-assets/3-red-and-green-apple.jpg',
    alt: '3 Red and green apples',
  }];
  return (
    <>
      <Head>
        <title>
          {title}
          {' '}
          | DEMO - FrontEnd.ro
        </title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <>
        <Header demoPage withNavMenu />
        <Demo title={title}>
          <p>
            Deschide
            {' '}
            <a href="/intro/devtools" target="_blank" rel="noreferrer">panoul Network</a>
            {' '}
            din DevTools și apoi refreshuiește
            pagina.

            Imaginile sunt încărcate doar când ne apropiem de ele, spre deosebire de
            {' '}
            <a href="/demo/html/regular-image-loading" target="_blank" rel="noreferrer">
              acest demo
            </a>
            {' '}
            unde browserul le încarcă pe toate de la început.
          </p>
          <p>
            {' '}
            Această tehnică se numește
            <strong>Lazy Loading</strong>
          </p>
          <DemoPreview>
            <div>
              {images.map(({ src, alt }) => (
                <img loading="lazy" height="500" src={src} alt={alt} />
              ))}

            </div>
          </DemoPreview>
          {/*
          TODO: add
          <Highlight
            className="my-5"
            language="html"
            code={`
`}
          /> */}
          <LessonTip icon={faQuestionCircle}>
            Atributul
            {' '}
            <strong>style</strong>
            {' '}
            este folosit pentru a stiliza elementele.
            {' '}
            Încă nu am ajuns la acel capitol deci nu-ți fă griji dacă nu înțelegi acel cod.
            <br />
            {' '}
            <br />
            Totuși va trebui să-l pui acolo pentru a obține același rezultat ca mai sus.
          </LessonTip>
        </Demo>
        <Footer />
      </>
    </>
  );
}
Example #6
Source File: linkuri-care-contin-bucati-mari-de-continut.tsx    From frontend.ro with MIT License 4 votes vote down vote up
export default function LinksAroundBiggerChuncksOfContent() {
  const title = 'Două modalități prin care putem folosi bucăți mari de cod în interiorul unui link și implicațiile lor';

  return (
    <>
      <Head>
        <title>
          {title}
          {' '}
          | DEMO - FrontEnd.ro
        </title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <>
        <Header demoPage />
        <Demo title={title}>
          <p>
            Primul exemplu are un div cu elemente și este plasat în interiorul
            unui link.
          </p>
          <p>
            Faptul că îl folosim așa, în interiorul link-ului, duce la implicații
            în ceea ce privește UX-ul. De exemplu, poate fi dificil să selectem
            textul din interior, iar întregul element are nevoie de reguli de
            stilizare destul de complexe pentru a crea starea de
            {' '}
            <i>focus</i>
            {' '}
            și
            {' '}
            <i>hover</i>
            .
          </p>
          <p>
            Totodată trebuie să avem în vedere și
            {' '}
            <i>accesibilitatea</i>
            , cum ar
            fi faptul că întregul conținut va fi citit de către screen readere
            înainte de a fi "anunțat" ca fiind un link.
          </p>
          <DemoPreview>
            <a href="#">
              <div
                style={{
                  border: '1px solid #eaeaea',
                  borderRadius: '15px',
                  boxShadow: '2px 2px 2px rgba(0, 0, 0, 0.2)',
                  padding: '1em',
                  width: '500px',
                  backgroundColor: '#fff',
                  margin: 'auto',
                  textAlign: 'center',
                }}
              >
                <h2 style={{ fontSize: '30px' }}>
                  {' '}
                  Titlu
                  {' '}
                </h2>
                <div>
                  <svg
                    id="a5349118-8809-40c5-ab34-fa23ee5ede74"
                    data-name="Layer 1"
                    xmlns="http://www.w3.org/2000/svg"
                    width="761"
                    height="700.71023"
                    viewBox="0 0 761 700.71023"
                  >
                    <title>link</title>
                    <path
                      d="M261.134,348.56808c12.42842,23.049,38.806,32.94351,38.806,32.94351s6.22712-27.47543-6.2013-50.52448-38.806-32.94351-38.806-32.94351S248.70559,325.519,261.134,348.56808Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <path
                      d="M269.67653,340.98511c22.43841,13.49969,31.08016,40.3138,31.08016,40.3138s-27.73812,4.92678-50.17653-8.57291S219.5,332.4122,219.5,332.4122,247.23811,327.48541,269.67653,340.98511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#6c63ff"
                    />
                    <path
                      d="M980.5,723.35511c0,24.30053-57.75527,77-129,77s-129-52.69947-129-77,57.75527-11,129-11S980.5,699.05458,980.5,723.35511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#3f3d56"
                    />
                    <path
                      d="M980.5,723.35511c0,24.30053-57.75527,77-129,77s-129-52.69947-129-77,57.75527-11,129-11S980.5,699.05458,980.5,723.35511Z"
                      transform="translate(-219.5 -99.64489)"
                      opacity="0.1"
                    />
                    <ellipse
                      cx="632"
                      cy="623.71023"
                      rx="129"
                      ry="44"
                      fill="#3f3d56"
                    />
                    <rect
                      x="76"
                      y="301.71023"
                      width="410"
                      height="234"
                      fill="#f1f1f1"
                    />
                    <ellipse
                      cx="677.5"
                      cy="40.71023"
                      rx="39.5"
                      ry="37"
                      fill="#2f2e41"
                    />
                    <path
                      d="M782,370.85511l-10,14s-48,10-30,25,44-14,44-14l14-18Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#ffb8b8"
                    />
                    <path
                      d="M834,211.85511s-13,0-16,18-6,78-6,78-42,55-35,62,15,20,20,18,48-61,48-61Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#6c63ff"
                    />
                    <path
                      d="M834,211.85511s-13,0-16,18-6,78-6,78-42,55-35,62,15,20,20,18,48-61,48-61Z"
                      transform="translate(-219.5 -99.64489)"
                      opacity="0.1"
                    />
                    <path
                      d="M874,160.85511s-1,39-13,41-8,15-8,15,39,23,65,0l5-12s-18-13-10-31Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#ffb8b8"
                    />
                    <path
                      d="M807,400.85511s-59,110-37,144,55,104,60,104,33-14,31-23-32-76-40-82-4-22-3-23,34-54,34-54-1,84,3,97-1,106,4,110,28,11,32,5,16-97,8-118l15-144Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <path
                      d="M861,667.85511l-25,46s-36,26-11,30,40-6,40-6l22-16v-46Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <path
                      d="M827,641.85511l13,31s5,13,0,16-19,21-10,23a29.29892,29.29892,0,0,0,5.49537.5463,55.56588,55.56588,0,0,0,40.39769-16.43935L884,687.85511s-27.77007-63.94827-27.385-63.47413S827,641.85511,827,641.85511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <circle cx="679.5" cy="51.21023" r="34" fill="#ffb8b8" />
                    <path
                      d="M918.5,198.35511l-10.5,10.5s-32,12-47,0c0,0,5.5-11.5,5.5-10.5s-43.5,7.5-47.5,25.5,3,49,3,49-28,132-17,135,114,28,113,9,8-97,8-97l35-67s-5-22-17-29S918.5,198.35511,918.5,198.35511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#6c63ff"
                    />
                    <path
                      d="M874,393.85511l-13,8s-50,34-24,40,41-24,41-24l10-12Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#ffb8b8"
                    />
                    <path
                      d="M948,246.85511l9,9s6,84-6,101-67,63-70,60-22-18-18-20,57.18287-57.56942,57.18287-57.56942L916,261.85511Z"
                      transform="translate(-219.5 -99.64489)"
                      opacity="0.1"
                    />
                    <path
                      d="M952,243.85511l9,9s6,84-6,101-67,63-70,60-22-18-18-20,57.18287-57.56942,57.18287-57.56942L920,258.85511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#6c63ff"
                    />
                    <path
                      d="M884.93835,102.56024s-11.55751-4.20273-27.31774,4.72807l8.40545,2.10136s-12.60818,1.05069-14.18421,17.8616h5.77876s-3.67739,14.70955,0,18.91228l2.364-4.4654,6.82944,13.65887,1.576-6.82943,3.15205,1.05068,2.10136-11.03216s5.25341,7.88011,9.45614,8.40545v-6.82943s11.55751,13.13353,15.23489,12.60819l-5.25341-7.35478,7.35478,1.576-3.15205-5.25341,18.91228,5.25341-4.20273-5.25341,13.13353,4.20273,6.30409,2.62671s8.9308-20.48831-3.67738-34.67252S896.75852,96.51882,884.93835,102.56024Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <path
                      d="M554.59811,528.43759q-1.25967.794-2.60744,1.47382a30.87649,30.87649,0,0,1-41.42627-13.64933l-6.65209-13.19072,4.465-2.251,6.65209,13.19073a25.84163,25.84163,0,1,0,46.14646-23.27365l-27.93638-55.39357A25.84162,25.84162,0,1,0,487.093,458.61749l9.89088,19.612-4.465,2.251L482.628,460.86852a30.84193,30.84193,0,0,1,55.07639-27.7757l27.93637,55.39356a30.84665,30.84665,0,0,1-11.04267,39.95121Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#3f3d56"
                    />
                    <path
                      d="M557.3,596.80949q-1.24231.783-2.57748,1.45725a30.87615,30.87615,0,0,1-41.42627-13.64933l-27.93638-55.39356a30.84193,30.84193,0,0,1,55.07639-27.77571L547.77488,516l-4.465,2.251-7.33863-14.55188a25.84162,25.84162,0,1,0-46.14645,23.27365l27.93637,55.39356a25.84163,25.84163,0,1,0,46.14646-23.27365l-9.61614-19.0671,4.465-2.251,9.61614,19.0671A30.88584,30.88584,0,0,1,557.3,596.80949Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#3f3d56"
                    />
                    <path
                      d="M756.5,637.35511h-462v-257h462Zm-460-2h458v-253h-458Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                  </svg>
                </div>
                <p>
                  Tot ce este în interiorul acestui link devine la rîndul lui,
                  un link.
                </p>
              </div>
            </a>
          </DemoPreview>
          <Highlight
            className="my-5"
            language="html"
            code={`
<a href="#">
  <div style="
  border: 1px solid #eaeaea;
  border-radius: 15px;
  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
  padding: 1em;
  width: 500px;
  margin: auto;
  text-align: center;
  ">
    <h2 style="font-size: 30px;">Primul exemplu are un div cu elemente în interior, plasat în interiorul unui link</h2>
    <div>
      <svg id="a5349118-8809-40c5-ab34-fa23ee5ede74" width="200" height="200" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="761" height="700.71023" viewBox="0 0 761 700.71023"><title>link</title><path d="M261.134,348.56808c12.42842,23.049,38.806,32.94351,38.806,32.94351s6.22712-27.47543-6.2013-50.52448-38.806-32.94351-38.806-32.94351S248.70559,325.519,261.134,348.56808Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><path d="M269.67653,340.98511c22.43841,13.49969,31.08016,40.3138,31.08016,40.3138s-27.73812,4.92678-50.17653-8.57291S219.5,332.4122,219.5,332.4122,247.23811,327.48541,269.67653,340.98511Z" transform="translate(-219.5 -99.64489)" fill="#6c63ff"/><path d="M980.5,723.35511c0,24.30053-57.75527,77-129,77s-129-52.69947-129-77,57.75527-11,129-11S980.5,699.05458,980.5,723.35511Z" transform="translate(-219.5 -99.64489)" fill="#3f3d56"/><path d="M980.5,723.35511c0,24.30053-57.75527,77-129,77s-129-52.69947-129-77,57.75527-11,129-11S980.5,699.05458,980.5,723.35511Z" transform="translate(-219.5 -99.64489)" opacity="0.1"/><ellipse cx="632" cy="623.71023" rx="129" ry="44" fill="#3f3d56"/><rect x="76" y="301.71023" width="410" height="234" fill="#f1f1f1"/><ellipse cx="677.5" cy="40.71023" rx="39.5" ry="37" fill="#2f2e41"/><path d="M782,370.85511l-10,14s-48,10-30,25,44-14,44-14l14-18Z" transform="translate(-219.5 -99.64489)" fill="#ffb8b8"/><path d="M834,211.85511s-13,0-16,18-6,78-6,78-42,55-35,62,15,20,20,18,48-61,48-61Z" transform="translate(-219.5 -99.64489)" fill="#6c63ff"/><path d="M834,211.85511s-13,0-16,18-6,78-6,78-42,55-35,62,15,20,20,18,48-61,48-61Z" transform="translate(-219.5 -99.64489)" opacity="0.1"/><path d="M874,160.85511s-1,39-13,41-8,15-8,15,39,23,65,0l5-12s-18-13-10-31Z" transform="translate(-219.5 -99.64489)" fill="#ffb8b8"/><path d="M807,400.85511s-59,110-37,144,55,104,60,104,33-14,31-23-32-76-40-82-4-22-3-23,34-54,34-54-1,84,3,97-1,106,4,110,28,11,32,5,16-97,8-118l15-144Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><path d="M861,667.85511l-25,46s-36,26-11,30,40-6,40-6l22-16v-46Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><path d="M827,641.85511l13,31s5,13,0,16-19,21-10,23a29.29892,29.29892,0,0,0,5.49537.5463,55.56588,55.56588,0,0,0,40.39769-16.43935L884,687.85511s-27.77007-63.94827-27.385-63.47413S827,641.85511,827,641.85511Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><circle cx="679.5" cy="51.21023" r="34" fill="#ffb8b8"/><path d="M918.5,198.35511l-10.5,10.5s-32,12-47,0c0,0,5.5-11.5,5.5-10.5s-43.5,7.5-47.5,25.5,3,49,3,49-28,132-17,135,114,28,113,9,8-97,8-97l35-67s-5-22-17-29S918.5,198.35511,918.5,198.35511Z" transform="translate(-219.5 -99.64489)" fill="#6c63ff"/><path d="M874,393.85511l-13,8s-50,34-24,40,41-24,41-24l10-12Z" transform="translate(-219.5 -99.64489)" fill="#ffb8b8"/><path d="M948,246.85511l9,9s6,84-6,101-67,63-70,60-22-18-18-20,57.18287-57.56942,57.18287-57.56942L916,261.85511Z" transform="translate(-219.5 -99.64489)" opacity="0.1"/><path d="M952,243.85511l9,9s6,84-6,101-67,63-70,60-22-18-18-20,57.18287-57.56942,57.18287-57.56942L920,258.85511Z" transform="translate(-219.5 -99.64489)" fill="#6c63ff"/><path d="M884.93835,102.56024s-11.55751-4.20273-27.31774,4.72807l8.40545,2.10136s-12.60818,1.05069-14.18421,17.8616h5.77876s-3.67739,14.70955,0,18.91228l2.364-4.4654,6.82944,13.65887,1.576-6.82943,3.15205,1.05068,2.10136-11.03216s5.25341,7.88011,9.45614,8.40545v-6.82943s11.55751,13.13353,15.23489,12.60819l-5.25341-7.35478,7.35478,1.576-3.15205-5.25341,18.91228,5.25341-4.20273-5.25341,13.13353,4.20273,6.30409,2.62671s8.9308-20.48831-3.67738-34.67252S896.75852,96.51882,884.93835,102.56024Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><path d="M554.59811,528.43759q-1.25967.794-2.60744,1.47382a30.87649,30.87649,0,0,1-41.42627-13.64933l-6.65209-13.19072,4.465-2.251,6.65209,13.19073a25.84163,25.84163,0,1,0,46.14646-23.27365l-27.93638-55.39357A25.84162,25.84162,0,1,0,487.093,458.61749l9.89088,19.612-4.465,2.251L482.628,460.86852a30.84193,30.84193,0,0,1,55.07639-27.7757l27.93637,55.39356a30.84665,30.84665,0,0,1-11.04267,39.95121Z" transform="translate(-219.5 -99.64489)" fill="#3f3d56"/><path d="M557.3,596.80949q-1.24231.783-2.57748,1.45725a30.87615,30.87615,0,0,1-41.42627-13.64933l-27.93638-55.39356a30.84193,30.84193,0,0,1,55.07639-27.77571L547.77488,516l-4.465,2.251-7.33863-14.55188a25.84162,25.84162,0,1,0-46.14645,23.27365l27.93637,55.39356a25.84163,25.84163,0,1,0,46.14646-23.27365l-9.61614-19.0671,4.465-2.251,9.61614,19.0671A30.88584,30.88584,0,0,1,557.3,596.80949Z" transform="translate(-219.5 -99.64489)" fill="#3f3d56"/><path d="M756.5,637.35511h-462v-257h462Zm-460-2h458v-253h-458Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/></svg>
    </div>
    <p>Tot ce este în interiorul acestui link devine la rîndul lui, un link.</p>
  </div>
</a>
`}
          />
          <p>
            Al doilea exemplu are un link în titlu și link-ul are un
            <a href="/css/pseudo-elements"> pseudo-element</a>
            {' '}
            definit care
            "acoperă" întregul card.
          </p>
          <p>
            Această modalitate are de asemenea implicații. Și în acest caz e
            destul de greu să selectem textul din interior, dar generează un
            comportament mai intuitiv pentru tehnologiile assistive, lucru pe
            care e bine să-l avem în vedere când scriem cod pentru aplicațiile
            noastre.
          </p>
          <p>
            Exemplul acesta ne oferă și posibilitatea să includem link-uri
            multiple. Când vine vorba să includem link-uri în interiorul altor
            link-uri, lucrurile se complică puțin. Un articol mai detaliat pe
            această temă găsim aici:
            <a
              href="https://css-tricks.com/nested-links/"
              target="_blank"
              rel="noopener noreferrer"
            >
              {' '}
              nested links
            </a>
          </p>
          <DemoPreview>
            <a href="#" style={{ textDecoration: 'none' }}>
              <div
                style={{
                  position: 'relative',
                  border: '1px solid #eaeaea',
                  borderRadius: '15px',
                  boxShadow: '2px 2px 2px rgba(0, 0, 0, 0.2)',
                  padding: '1em',
                  width: '500px',
                  backgroundColor: '#fff',
                  margin: 'auto',
                  textAlign: 'center',
                }}
              >
                <h2 style={{ fontSize: '30px' }}>
                  <a href="#0">Titlu </a>
                </h2>
                <div>
                  <svg
                    id="a5349118-8809-40c5-ab34-fa23ee5ede74"
                    data-name="Layer 1"
                    xmlns="http://www.w3.org/2000/svg"
                    width="761"
                    height="700.71023"
                    viewBox="0 0 761 700.71023"
                  >
                    <title>link</title>
                    <path
                      d="M261.134,348.56808c12.42842,23.049,38.806,32.94351,38.806,32.94351s6.22712-27.47543-6.2013-50.52448-38.806-32.94351-38.806-32.94351S248.70559,325.519,261.134,348.56808Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <path
                      d="M269.67653,340.98511c22.43841,13.49969,31.08016,40.3138,31.08016,40.3138s-27.73812,4.92678-50.17653-8.57291S219.5,332.4122,219.5,332.4122,247.23811,327.48541,269.67653,340.98511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#6c63ff"
                    />
                    <path
                      d="M980.5,723.35511c0,24.30053-57.75527,77-129,77s-129-52.69947-129-77,57.75527-11,129-11S980.5,699.05458,980.5,723.35511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#3f3d56"
                    />
                    <path
                      d="M980.5,723.35511c0,24.30053-57.75527,77-129,77s-129-52.69947-129-77,57.75527-11,129-11S980.5,699.05458,980.5,723.35511Z"
                      transform="translate(-219.5 -99.64489)"
                      opacity="0.1"
                    />
                    <ellipse
                      cx="632"
                      cy="623.71023"
                      rx="129"
                      ry="44"
                      fill="#3f3d56"
                    />
                    <rect
                      x="76"
                      y="301.71023"
                      width="410"
                      height="234"
                      fill="#f1f1f1"
                    />
                    <ellipse
                      cx="677.5"
                      cy="40.71023"
                      rx="39.5"
                      ry="37"
                      fill="#2f2e41"
                    />
                    <path
                      d="M782,370.85511l-10,14s-48,10-30,25,44-14,44-14l14-18Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#ffb8b8"
                    />
                    <path
                      d="M834,211.85511s-13,0-16,18-6,78-6,78-42,55-35,62,15,20,20,18,48-61,48-61Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#6c63ff"
                    />
                    <path
                      d="M834,211.85511s-13,0-16,18-6,78-6,78-42,55-35,62,15,20,20,18,48-61,48-61Z"
                      transform="translate(-219.5 -99.64489)"
                      opacity="0.1"
                    />
                    <path
                      d="M874,160.85511s-1,39-13,41-8,15-8,15,39,23,65,0l5-12s-18-13-10-31Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#ffb8b8"
                    />
                    <path
                      d="M807,400.85511s-59,110-37,144,55,104,60,104,33-14,31-23-32-76-40-82-4-22-3-23,34-54,34-54-1,84,3,97-1,106,4,110,28,11,32,5,16-97,8-118l15-144Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <path
                      d="M861,667.85511l-25,46s-36,26-11,30,40-6,40-6l22-16v-46Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <path
                      d="M827,641.85511l13,31s5,13,0,16-19,21-10,23a29.29892,29.29892,0,0,0,5.49537.5463,55.56588,55.56588,0,0,0,40.39769-16.43935L884,687.85511s-27.77007-63.94827-27.385-63.47413S827,641.85511,827,641.85511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <circle cx="679.5" cy="51.21023" r="34" fill="#ffb8b8" />
                    <path
                      d="M918.5,198.35511l-10.5,10.5s-32,12-47,0c0,0,5.5-11.5,5.5-10.5s-43.5,7.5-47.5,25.5,3,49,3,49-28,132-17,135,114,28,113,9,8-97,8-97l35-67s-5-22-17-29S918.5,198.35511,918.5,198.35511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#6c63ff"
                    />
                    <path
                      d="M874,393.85511l-13,8s-50,34-24,40,41-24,41-24l10-12Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#ffb8b8"
                    />
                    <path
                      d="M948,246.85511l9,9s6,84-6,101-67,63-70,60-22-18-18-20,57.18287-57.56942,57.18287-57.56942L916,261.85511Z"
                      transform="translate(-219.5 -99.64489)"
                      opacity="0.1"
                    />
                    <path
                      d="M952,243.85511l9,9s6,84-6,101-67,63-70,60-22-18-18-20,57.18287-57.56942,57.18287-57.56942L920,258.85511Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#6c63ff"
                    />
                    <path
                      d="M884.93835,102.56024s-11.55751-4.20273-27.31774,4.72807l8.40545,2.10136s-12.60818,1.05069-14.18421,17.8616h5.77876s-3.67739,14.70955,0,18.91228l2.364-4.4654,6.82944,13.65887,1.576-6.82943,3.15205,1.05068,2.10136-11.03216s5.25341,7.88011,9.45614,8.40545v-6.82943s11.55751,13.13353,15.23489,12.60819l-5.25341-7.35478,7.35478,1.576-3.15205-5.25341,18.91228,5.25341-4.20273-5.25341,13.13353,4.20273,6.30409,2.62671s8.9308-20.48831-3.67738-34.67252S896.75852,96.51882,884.93835,102.56024Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                    <path
                      d="M554.59811,528.43759q-1.25967.794-2.60744,1.47382a30.87649,30.87649,0,0,1-41.42627-13.64933l-6.65209-13.19072,4.465-2.251,6.65209,13.19073a25.84163,25.84163,0,1,0,46.14646-23.27365l-27.93638-55.39357A25.84162,25.84162,0,1,0,487.093,458.61749l9.89088,19.612-4.465,2.251L482.628,460.86852a30.84193,30.84193,0,0,1,55.07639-27.7757l27.93637,55.39356a30.84665,30.84665,0,0,1-11.04267,39.95121Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#3f3d56"
                    />
                    <path
                      d="M557.3,596.80949q-1.24231.783-2.57748,1.45725a30.87615,30.87615,0,0,1-41.42627-13.64933l-27.93638-55.39356a30.84193,30.84193,0,0,1,55.07639-27.77571L547.77488,516l-4.465,2.251-7.33863-14.55188a25.84162,25.84162,0,1,0-46.14645,23.27365l27.93637,55.39356a25.84163,25.84163,0,1,0,46.14646-23.27365l-9.61614-19.0671,4.465-2.251,9.61614,19.0671A30.88584,30.88584,0,0,1,557.3,596.80949Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#3f3d56"
                    />
                    <path
                      d="M756.5,637.35511h-462v-257h462Zm-460-2h458v-253h-458Z"
                      transform="translate(-219.5 -99.64489)"
                      fill="#2f2e41"
                    />
                  </svg>
                </div>
                <p>
                  Tot ce este în interiorul acestui link devine la rândul lui un
                  link.
                </p>
              </div>
            </a>
          </DemoPreview>
          <Highlight
            className="my-5"
            language="html"
            code={`
<style>
  h2 a::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
</style>
<div style="
  position: relative;
  border: 1px solid #eaeaea;
  border-radius: 15px; 
  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
  padding: 1px; 
  width: 500px; 
  background-color: #fff;
  margin: auto;
  text-align: center;">
  <h2 style="font-size: 30px;">
    <a href="#0">Al doilea exemplu are un link în titlu și link-ul are un pseudo-element definit care "acoperă" întregul card.</a>
  </h2>
  <div>
    <svg id="a5349118-8809-40c5-ab34-fa23ee5ede74" width="200" height="200" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="761" height="700.71023" viewBox="0 0 761 700.71023"><title>link</title><path d="M261.134,348.56808c12.42842,23.049,38.806,32.94351,38.806,32.94351s6.22712-27.47543-6.2013-50.52448-38.806-32.94351-38.806-32.94351S248.70559,325.519,261.134,348.56808Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><path d="M269.67653,340.98511c22.43841,13.49969,31.08016,40.3138,31.08016,40.3138s-27.73812,4.92678-50.17653-8.57291S219.5,332.4122,219.5,332.4122,247.23811,327.48541,269.67653,340.98511Z" transform="translate(-219.5 -99.64489)" fill="#6c63ff"/><path d="M980.5,723.35511c0,24.30053-57.75527,77-129,77s-129-52.69947-129-77,57.75527-11,129-11S980.5,699.05458,980.5,723.35511Z" transform="translate(-219.5 -99.64489)" fill="#3f3d56"/><path d="M980.5,723.35511c0,24.30053-57.75527,77-129,77s-129-52.69947-129-77,57.75527-11,129-11S980.5,699.05458,980.5,723.35511Z" transform="translate(-219.5 -99.64489)" opacity="0.1"/><ellipse cx="632" cy="623.71023" rx="129" ry="44" fill="#3f3d56"/><rect x="76" y="301.71023" width="410" height="234" fill="#f1f1f1"/><ellipse cx="677.5" cy="40.71023" rx="39.5" ry="37" fill="#2f2e41"/><path d="M782,370.85511l-10,14s-48,10-30,25,44-14,44-14l14-18Z" transform="translate(-219.5 -99.64489)" fill="#ffb8b8"/><path d="M834,211.85511s-13,0-16,18-6,78-6,78-42,55-35,62,15,20,20,18,48-61,48-61Z" transform="translate(-219.5 -99.64489)" fill="#6c63ff"/><path d="M834,211.85511s-13,0-16,18-6,78-6,78-42,55-35,62,15,20,20,18,48-61,48-61Z" transform="translate(-219.5 -99.64489)" opacity="0.1"/><path d="M874,160.85511s-1,39-13,41-8,15-8,15,39,23,65,0l5-12s-18-13-10-31Z" transform="translate(-219.5 -99.64489)" fill="#ffb8b8"/><path d="M807,400.85511s-59,110-37,144,55,104,60,104,33-14,31-23-32-76-40-82-4-22-3-23,34-54,34-54-1,84,3,97-1,106,4,110,28,11,32,5,16-97,8-118l15-144Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><path d="M861,667.85511l-25,46s-36,26-11,30,40-6,40-6l22-16v-46Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><path d="M827,641.85511l13,31s5,13,0,16-19,21-10,23a29.29892,29.29892,0,0,0,5.49537.5463,55.56588,55.56588,0,0,0,40.39769-16.43935L884,687.85511s-27.77007-63.94827-27.385-63.47413S827,641.85511,827,641.85511Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><circle cx="679.5" cy="51.21023" r="34" fill="#ffb8b8"/><path d="M918.5,198.35511l-10.5,10.5s-32,12-47,0c0,0,5.5-11.5,5.5-10.5s-43.5,7.5-47.5,25.5,3,49,3,49-28,132-17,135,114,28,113,9,8-97,8-97l35-67s-5-22-17-29S918.5,198.35511,918.5,198.35511Z" transform="translate(-219.5 -99.64489)" fill="#6c63ff"/><path d="M874,393.85511l-13,8s-50,34-24,40,41-24,41-24l10-12Z" transform="translate(-219.5 -99.64489)" fill="#ffb8b8"/><path d="M948,246.85511l9,9s6,84-6,101-67,63-70,60-22-18-18-20,57.18287-57.56942,57.18287-57.56942L916,261.85511Z" transform="translate(-219.5 -99.64489)" opacity="0.1"/><path d="M952,243.85511l9,9s6,84-6,101-67,63-70,60-22-18-18-20,57.18287-57.56942,57.18287-57.56942L920,258.85511Z" transform="translate(-219.5 -99.64489)" fill="#6c63ff"/><path d="M884.93835,102.56024s-11.55751-4.20273-27.31774,4.72807l8.40545,2.10136s-12.60818,1.05069-14.18421,17.8616h5.77876s-3.67739,14.70955,0,18.91228l2.364-4.4654,6.82944,13.65887,1.576-6.82943,3.15205,1.05068,2.10136-11.03216s5.25341,7.88011,9.45614,8.40545v-6.82943s11.55751,13.13353,15.23489,12.60819l-5.25341-7.35478,7.35478,1.576-3.15205-5.25341,18.91228,5.25341-4.20273-5.25341,13.13353,4.20273,6.30409,2.62671s8.9308-20.48831-3.67738-34.67252S896.75852,96.51882,884.93835,102.56024Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/><path d="M554.59811,528.43759q-1.25967.794-2.60744,1.47382a30.87649,30.87649,0,0,1-41.42627-13.64933l-6.65209-13.19072,4.465-2.251,6.65209,13.19073a25.84163,25.84163,0,1,0,46.14646-23.27365l-27.93638-55.39357A25.84162,25.84162,0,1,0,487.093,458.61749l9.89088,19.612-4.465,2.251L482.628,460.86852a30.84193,30.84193,0,0,1,55.07639-27.7757l27.93637,55.39356a30.84665,30.84665,0,0,1-11.04267,39.95121Z" transform="translate(-219.5 -99.64489)" fill="#3f3d56"/><path d="M557.3,596.80949q-1.24231.783-2.57748,1.45725a30.87615,30.87615,0,0,1-41.42627-13.64933l-27.93638-55.39356a30.84193,30.84193,0,0,1,55.07639-27.77571L547.77488,516l-4.465,2.251-7.33863-14.55188a25.84162,25.84162,0,1,0-46.14645,23.27365l27.93637,55.39356a25.84163,25.84163,0,1,0,46.14646-23.27365l-9.61614-19.0671,4.465-2.251,9.61614,19.0671A30.88584,30.88584,0,0,1,557.3,596.80949Z" transform="translate(-219.5 -99.64489)" fill="#3f3d56"/><path d="M756.5,637.35511h-462v-257h462Zm-460-2h458v-253h-458Z" transform="translate(-219.5 -99.64489)" fill="#2f2e41"/></svg>
  </div>
  <p>Tot ce este în interiorul acestui link devine la rîndul lui un link.</p>
</div>
`}
          />
          <LessonTip icon={faQuestionCircle}>
            Atributul
            {' '}
            <FormattedText as="strong">style</FormattedText>
            {' '}
            este folosit pentru a adăuga reguli
            CSS elementelor. Incă nu am ajuns la acel capitol deci e absolut
            normal să nu știi ce face.
            <br />
            {' '}
            <br />
            Totuși, te rugăm să-l pui acolo pentru a obține același rezultat ca cel de mai sus.
          </LessonTip>
        </Demo>
        <Footer />
      </>
    </>
  );
}