mypgs 1.3.4 → 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/{AI_GUIDELINES.md → AGENTS.md} +18 -16
  2. package/README.md +8 -172
  3. package/assets/javascript/patterns/_header.js +77 -79
  4. package/assets/scss/base/_body.scss +2 -0
  5. package/assets/scss/base/_color.scss +2 -0
  6. package/assets/scss/base/_general.scss +2 -0
  7. package/assets/scss/base/_heading.scss +2 -0
  8. package/assets/scss/base/_variables.scss +2 -0
  9. package/assets/scss/components/_accordion.scss +2 -0
  10. package/assets/scss/components/_button.scss +2 -0
  11. package/assets/scss/components/_form.scss +2 -0
  12. package/assets/scss/components/_logo.scss +2 -0
  13. package/assets/scss/components/_menu.scss +2 -0
  14. package/assets/scss/components/_modals.scss +2 -0
  15. package/assets/scss/components/_notification.scss +2 -0
  16. package/assets/scss/components/_searchbar.scss +2 -0
  17. package/assets/scss/components/_slides.scss +2 -0
  18. package/assets/scss/components/_stepTabs.scss +2 -0
  19. package/assets/scss/components/_steps.scss +2 -0
  20. package/assets/scss/index.scss +32 -32
  21. package/assets/scss/layout/_flex.scss +2 -0
  22. package/assets/scss/layout/_grid.scss +2 -0
  23. package/assets/scss/layout/_layout.scss +2 -0
  24. package/assets/scss/layout/_pageShell.scss +2 -0
  25. package/assets/scss/mixin/_mx-base.scss +5 -2
  26. package/assets/scss/mixin/_mx-card.scss +5 -1
  27. package/assets/scss/mixin/_mx-form-addon.scss +4 -1
  28. package/assets/scss/mixin/_mx-form.scss +6 -3
  29. package/assets/scss/mixin/_mx-responsive.scss +14 -11
  30. package/assets/scss/mixin/_settings.scss +31 -0
  31. package/assets/scss/mixin/mixin.scss +11 -35
  32. package/assets/scss/patterns/_cookieConsent.scss +3 -1
  33. package/assets/scss/patterns/_footer.scss +2 -0
  34. package/assets/scss/patterns/_header.scss +12 -4
  35. package/dist/css/index.css +75 -25
  36. package/dist/css/index.css.map +1 -1
  37. package/dist/css/index.min.css +1 -1
  38. package/dist/javascript/index.js +77 -78
  39. package/dist/javascript/index.js.map +1 -1
  40. package/dist/javascript/index.min.js +1 -1
  41. package/package.json +1 -1
  42. package/templates/{components → html/components}/searchbar.html +1 -1
  43. package/templates/{patterns → html/patterns}/header.html +2 -2
  44. package/templates/react/components/accordion.jsx +27 -0
  45. package/templates/react/components/breadcumbs.jsx +27 -0
  46. package/templates/react/components/button.jsx +33 -0
  47. package/templates/react/components/card.jsx +27 -0
  48. package/templates/react/components/dropdown.jsx +29 -0
  49. package/templates/react/components/form.jsx +30 -0
  50. package/templates/react/components/logo.jsx +14 -0
  51. package/templates/react/components/menu.jsx +37 -0
  52. package/templates/react/components/modal.jsx +84 -0
  53. package/templates/react/components/notification.jsx +31 -0
  54. package/templates/react/components/searchbar.jsx +34 -0
  55. package/templates/react/components/slides.jsx +25 -0
  56. package/templates/react/components/stepTabs.jsx +40 -0
  57. package/templates/react/components/steps.jsx +21 -0
  58. package/templates/react/components/table.jsx +28 -0
  59. package/templates/react/components/tooltip.jsx +12 -0
  60. package/templates/react/layout/body.jsx +7 -0
  61. package/templates/react/layout/flex.jsx +36 -0
  62. package/templates/react/layout/grid.jsx +36 -0
  63. package/templates/react/layout/pageShell.jsx +48 -0
  64. package/templates/react/layout/section.jsx +44 -0
  65. package/templates/react/patterns/cookieConsent.jsx +62 -0
  66. package/templates/react/patterns/footer.jsx +40 -0
  67. package/templates/react/patterns/header.jsx +62 -0
  68. /package/templates/{components → html/components}/accordion.html +0 -0
  69. /package/templates/{components → html/components}/breadcumbs.html +0 -0
  70. /package/templates/{components → html/components}/button.html +0 -0
  71. /package/templates/{components → html/components}/card.html +0 -0
  72. /package/templates/{components → html/components}/dropdown.html +0 -0
  73. /package/templates/{components → html/components}/form.html +0 -0
  74. /package/templates/{components → html/components}/logo.html +0 -0
  75. /package/templates/{components → html/components}/menu.html +0 -0
  76. /package/templates/{components → html/components}/modal.html +0 -0
  77. /package/templates/{components → html/components}/notification.html +0 -0
  78. /package/templates/{components → html/components}/slides.html +0 -0
  79. /package/templates/{components → html/components}/stepTabs.html +0 -0
  80. /package/templates/{components → html/components}/steps.html +0 -0
  81. /package/templates/{components → html/components}/table.html +0 -0
  82. /package/templates/{components → html/components}/tooltip.html +0 -0
  83. /package/templates/{demo.css → html/demo.css} +0 -0
  84. /package/templates/{demo.html → html/demo.html} +0 -0
  85. /package/templates/{demo.js → html/demo.js} +0 -0
  86. /package/templates/{layout → html/layout}/body.html +0 -0
  87. /package/templates/{layout → html/layout}/flex.html +0 -0
  88. /package/templates/{layout → html/layout}/grid.html +0 -0
  89. /package/templates/{layout → html/layout}/pageShell.html +0 -0
  90. /package/templates/{layout → html/layout}/section.html +0 -0
  91. /package/templates/{patterns → html/patterns}/cookieConsent.html +0 -0
  92. /package/templates/{patterns → html/patterns}/footer.html +0 -0
@@ -0,0 +1,25 @@
1
+ const slides = [
2
+ ["Slide uno", "Contenuto della prima slide.", "https://placehold.co/800x500?text=Slide+1", "Slide 1"],
3
+ ["Slide due", "Contenuto della seconda slide.", "https://placehold.co/800x500?text=Slide+2", "Slide 2"],
4
+ ["Slide tre", "Contenuto della terza slide.", "https://placehold.co/800x500?text=Slide+3", "Slide 3"],
5
+ ];
6
+
7
+ export default function Slides() {
8
+ return (
9
+ <div pgs="slides" pgs-option="singleScroll shadowDesktop">
10
+ <ul pgs="slides-container">
11
+ {slides.map(([title, text, src, alt]) => (
12
+ <li key={title}>
13
+ <article pgs="card flexColumn">
14
+ <img pgs="card-img imgCover" src={src} alt={alt} />
15
+ <div pgs="flexColumnTexts">
16
+ <h3>{title}</h3>
17
+ <p>{text}</p>
18
+ </div>
19
+ </article>
20
+ </li>
21
+ ))}
22
+ </ul>
23
+ </div>
24
+ );
25
+ }
@@ -0,0 +1,40 @@
1
+ export default function StepTabs() {
2
+ return (
3
+ <div pgs="stepTabs flexColumnElements">
4
+ <div pgs="stepTabs-dots" aria-label="Avanzamento"></div>
5
+
6
+ <div pgs="stepTabs-container">
7
+ <section pgs="tab flexColumnTexts" tabIndex="-1" pgs-option="tabIcon[fa-user]">
8
+ <h3>Dati personali</h3>
9
+ <p>Contenuto del primo tab.</p>
10
+ </section>
11
+
12
+ <section pgs="tab flexColumnTexts" tabIndex="-1" pgs-option="tabIcon[fa-list-check]">
13
+ <h3>Preferenze</h3>
14
+ <p>Contenuto del secondo tab.</p>
15
+ </section>
16
+
17
+ <section pgs="tab flexColumnTexts" tabIndex="-1" pgs-option="tabIcon[fa-check]">
18
+ <h3>Conferma</h3>
19
+ <p>Contenuto del terzo tab.</p>
20
+ </section>
21
+ </div>
22
+
23
+ <div pgs="flexRow">
24
+ <button pgs="stepTabs-prev button" type="button">
25
+ <i className="fa-solid fa-arrow-left" aria-hidden="true"></i>
26
+ Indietro
27
+ </button>
28
+
29
+ <button pgs="stepTabs-restart button" type="button">
30
+ Ricomincia
31
+ </button>
32
+
33
+ <button pgs="stepTabs-next button" pgs-option="buttonReverse" type="button">
34
+ Avanti
35
+ <i className="fa-solid fa-arrow-right" aria-hidden="true"></i>
36
+ </button>
37
+ </div>
38
+ </div>
39
+ );
40
+ }
@@ -0,0 +1,21 @@
1
+ const steps = [
2
+ ["1", "Primo step", "Descrizione del primo passaggio."],
3
+ ["2", "Secondo step", "Descrizione del secondo passaggio."],
4
+ ["3", "Terzo step", "Descrizione del terzo passaggio."],
5
+ ];
6
+
7
+ export default function Steps() {
8
+ return (
9
+ <ol pgs="steps">
10
+ {steps.map(([number, title, text]) => (
11
+ <li key={number} pgs="steps-step">
12
+ <span pgs="steps-step-circle">{number}</span>
13
+ <div pgs="steps-step-content">
14
+ <h3>{title}</h3>
15
+ <p>{text}</p>
16
+ </div>
17
+ </li>
18
+ ))}
19
+ </ol>
20
+ );
21
+ }
@@ -0,0 +1,28 @@
1
+ export default function Table() {
2
+ return (
3
+ <div pgs="table">
4
+ <table>
5
+ <thead>
6
+ <tr>
7
+ <th>Nome</th>
8
+ <th>Stato</th>
9
+ <th>Data</th>
10
+ </tr>
11
+ </thead>
12
+
13
+ <tbody>
14
+ <tr>
15
+ <td>Elemento uno</td>
16
+ <td>Attivo</td>
17
+ <td>2026-01-01</td>
18
+ </tr>
19
+ <tr>
20
+ <td>Elemento due</td>
21
+ <td>Bozza</td>
22
+ <td>2026-02-01</td>
23
+ </tr>
24
+ </tbody>
25
+ </table>
26
+ </div>
27
+ );
28
+ }
@@ -0,0 +1,12 @@
1
+ export default function Tooltip() {
2
+ return (
3
+ <span pgs="dropdown tooltip">
4
+ <button pgs="dropdown-button buttonMini tooltip-button" title="open-tooltip" type="button">
5
+ <i className="fa-solid fa-info"></i>
6
+ </button>
7
+ <div pgs="dropdown-content tooltip-content">
8
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Iusto hic, id consectetur facilis et, iste animi minima quidem praesentium omnis quod. Quidem provident ad cum aut reprehenderit laboriosam eum placeat.
9
+ </div>
10
+ </span>
11
+ );
12
+ }
@@ -0,0 +1,7 @@
1
+ export default function Body({ children }) {
2
+ return (
3
+ <div pgs="bodyBase bodyImg bodyText bodyHeading">
4
+ {children}
5
+ </div>
6
+ );
7
+ }
@@ -0,0 +1,36 @@
1
+ const columns = [
2
+ ["Colonna uno", "Contenuto della prima colonna."],
3
+ ["Colonna due", "Contenuto della seconda colonna."],
4
+ ["Colonna tre", "Contenuto della terza colonna."],
5
+ ["Colonna quattro", "Contenuto della quarta colonna."],
6
+ ["Colonna cinque", "Contenuto della quinta colonna."],
7
+ ["Colonna sei", "Contenuto della sesta colonna."],
8
+ ];
9
+
10
+ function ColumnCard({ title, text }) {
11
+ return (
12
+ <article pgs="card flexColumnTexts">
13
+ <strong>{title}</strong>
14
+ <p>{text}</p>
15
+ </article>
16
+ );
17
+ }
18
+
19
+ export default function Flex() {
20
+ return (
21
+ <>
22
+ <div pgs="container flexColumnTexts">
23
+ <strong>Sezione standard</strong>
24
+ <p>Contenuto centrato dentro una sezione MyPGS.</p>
25
+ </div>
26
+
27
+ {[2, 3, 4, 6].map((count) => (
28
+ <div key={count} pgs={`flex-${count}`}>
29
+ {columns.slice(0, count).map(([title, text]) => (
30
+ <ColumnCard key={title} title={title} text={text} />
31
+ ))}
32
+ </div>
33
+ ))}
34
+ </>
35
+ );
36
+ }
@@ -0,0 +1,36 @@
1
+ const columns = [
2
+ ["Colonna uno", "Contenuto della prima colonna."],
3
+ ["Colonna due", "Contenuto della seconda colonna."],
4
+ ["Colonna tre", "Contenuto della terza colonna."],
5
+ ["Colonna quattro", "Contenuto della quarta colonna."],
6
+ ["Colonna cinque", "Contenuto della quinta colonna."],
7
+ ["Colonna sei", "Contenuto della sesta colonna."],
8
+ ];
9
+
10
+ function ColumnCard({ title, text }) {
11
+ return (
12
+ <article pgs="card flexColumnTexts">
13
+ <strong>{title}</strong>
14
+ <p>{text}</p>
15
+ </article>
16
+ );
17
+ }
18
+
19
+ export default function Grid() {
20
+ return (
21
+ <>
22
+ <div pgs="container flexColumnTexts">
23
+ <strong>Sezione standard</strong>
24
+ <p>Contenuto centrato dentro una sezione MyPGS.</p>
25
+ </div>
26
+
27
+ {[2, 3, 4, 6].map((count) => (
28
+ <div key={count} pgs={`grid-${count}`}>
29
+ {columns.slice(0, count).map(([title, text]) => (
30
+ <ColumnCard key={title} title={title} text={text} />
31
+ ))}
32
+ </div>
33
+ ))}
34
+ </>
35
+ );
36
+ }
@@ -0,0 +1,48 @@
1
+ const contentText = "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem dolore veniam nulla hic voluptatum harum illo voluptatem quos. Id quibusdam nemo, mollitia iusto quisquam tenetur doloremque corrupti natus nisi est sed consectetur deserunt? Fugiat consectetur iure aut id voluptate unde autem eius facilis dolorum? Eveniet, sit, excepturi iusto porro eos temporibus illum non ut sunt ex aut earum neque. Iure harum similique autem commodi ratione enim quisquam soluta rem, eius dolor officiis necessitatibus voluptatibus obcaecati vel sint iusto. Eligendi reiciendis aut error rem? Hic aliquid tenetur porro itaque quaerat excepturi consequatur veniam, et alias molestiae, eius odio quae maiores suscipit iure voluptatibus sed dolor facere ipsa quod libero necessitatibus, placeat natus. Doloribus esse nobis culpa ab ut dolorem id expedita nesciunt necessitatibus ipsam natus accusantium eius eveniet eum, distinctio quos modi perspiciatis earum sequi nostrum consequatur quibusdam? Blanditiis iusto possimus officia odio animi repudiandae? Repellendus autem ut soluta facere accusamus magni aut architecto cumque cupiditate. Nostrum officiis, tenetur consequuntur quaerat alias animi debitis? Quae quas placeat iure alias totam quaerat fugit recusandae sed, earum ipsa nihil molestiae quam odit itaque, odio asperiores, mollitia porro ratione tempora laboriosam. Incidunt aliquam nobis sunt ut molestiae nam animi placeat neque vero ratione? Eaque?";
2
+
3
+ function Aside({ side }) {
4
+ return (
5
+ <aside pgs={`pageShell-aside${side}`}>
6
+ <div pgs="flexColumnTexts">
7
+ <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ab modi ut sunt est illum accusantium dolores eum aut cum itaque.</p>
8
+ </div>
9
+ </aside>
10
+ );
11
+ }
12
+
13
+ function MainContent() {
14
+ return (
15
+ <main pgs="pageShell-content">
16
+ <section pgs="flexColumnElements" id="sezione-uno">
17
+ <strong>Lorem ipsum</strong>
18
+ <p>{contentText}</p>
19
+ </section>
20
+ </main>
21
+ );
22
+ }
23
+
24
+ export default function PageShell() {
25
+ return (
26
+ <>
27
+ <div pgs="pageShell">
28
+ <Aside side="Left" />
29
+ <MainContent />
30
+ <Aside side="Right" />
31
+ </div>
32
+
33
+ <div pgs="pageShell">
34
+ <Aside side="Left" />
35
+ <MainContent />
36
+ </div>
37
+
38
+ <div pgs="pageShell">
39
+ <MainContent />
40
+ <Aside side="Right" />
41
+ </div>
42
+
43
+ <div pgs="pageShell">
44
+ <MainContent />
45
+ </div>
46
+ </>
47
+ );
48
+ }
@@ -0,0 +1,44 @@
1
+ export default function Section() {
2
+ return (
3
+ <div pgs="flexColumnSections">
4
+ <section pgs="section flexColumnElements">
5
+ <div pgs="container flexColumnTexts">
6
+ <strong>Sezione standard</strong>
7
+ <p>Contenuto centrato dentro una sezione MyPGS.</p>
8
+ </div>
9
+ </section>
10
+
11
+ <section pgs="sectionFull flexColumnElements">
12
+ <div pgs="container flexColumnTexts">
13
+ <strong>Sezione full-width</strong>
14
+ <p>Contenuto centrato dentro una sezione MyPGS.</p>
15
+ </div>
16
+ </section>
17
+
18
+ <section pgs="sectionSpecificity flexColumnElements">
19
+ <div pgs="container flexColumnTexts">
20
+ <strong>Sezione specificità</strong>
21
+ <p>Contenuto centrato dentro una sezione MyPGS.</p>
22
+ </div>
23
+ <div pgs="sectionSpecificity-child container flexColumnTexts">
24
+ <strong>Sezione specificità-child</strong>
25
+ <p>Contenuto centrato dentro una sezione MyPGS.</p>
26
+ </div>
27
+ </section>
28
+
29
+ <section pgs="sectionMax flexColumnElements" style={{ backgroundColor: "var(--color-primary-soft)" }}>
30
+ <div pgs="container flexColumnTexts">
31
+ <strong>Sezione max-width</strong>
32
+ <p>Contenuto centrato dentro una sezione MyPGS.</p>
33
+ </div>
34
+ </section>
35
+
36
+ <section pgs="sectionNoPadding flexColumnElements">
37
+ <div pgs="container flexColumnTexts">
38
+ <strong>Sezione no-padding</strong>
39
+ <p>Contenuto centrato dentro una sezione MyPGS.</p>
40
+ </div>
41
+ </section>
42
+ </div>
43
+ );
44
+ }
@@ -0,0 +1,62 @@
1
+ export default function CookieConsent({
2
+ enabled = true,
3
+ gaMeasurementId = "",
4
+ privacyUrl = "",
5
+ cookiePolicyUrl = "/cookie-policy/",
6
+ }) {
7
+ if (!enabled) return null;
8
+
9
+ return (
10
+ <div id="cookieConsent" pgs="cookieConsent" role="dialog" aria-modal="true" data-ga-id={gaMeasurementId} hidden tabIndex="-1">
11
+ <p><i className="fa-duotone fa-solid fa-cookie-bite"></i> Cookie e privacy <br /></p>
12
+ <h2>La tua privacy prima di tutto</h2>
13
+
14
+ <p>
15
+ Utilizziamo cookie tecnici per offrire il servizio e, previo consenso, cookie analitici di
16
+ <strong>Google Analytics</strong> per misurare in modo anonimo il traffico e migliorare i contenuti.
17
+ Puoi modificare la scelta in qualsiasi momento.
18
+ </p>
19
+
20
+ <p>
21
+ <a href={privacyUrl} target="_blank" rel="noopener noreferrer">Privacy Policy</a> -
22
+ <a href={cookiePolicyUrl} target="_blank" rel="noopener noreferrer">Cookie Policy</a>
23
+ </p>
24
+
25
+ <div pgs="cookieConsent-panel flexColumn" role="group" aria-label="Preferenze cookie">
26
+ <div pgs="flexRow nowrap cookieConsent-featureEssential">
27
+ <div>
28
+ <p>
29
+ <strong>Cookie tecnici</strong>
30
+ <br />
31
+ <small>Sempre attivi per garantire il corretto funzionamento del sito.</small>
32
+ </p>
33
+ </div>
34
+
35
+ <span pgs="cookieConsent-panel-badge">Attivi</span>
36
+ </div>
37
+
38
+ <div pgs="flexRow cookieConsent-featureAnalytics">
39
+ <label pgs="toggle">
40
+ <p>
41
+ <strong>Analytics</strong>
42
+ <br />
43
+ <small>Dati di navigazione raccolti in forma aggregata per statistiche anonime.</small>
44
+ </p>
45
+
46
+ <input type="checkbox" pgs="cookieConsent-toggleAnalytics" aria-label="Abilita Google Analytics" />
47
+ </label>
48
+ </div>
49
+ </div>
50
+
51
+ <div pgs="flexRow">
52
+ <button type="button" pgs="button cookieConsent-actionReject">
53
+ <i className="fa-solid fa-duotone fa-sliders"></i>Solo selezionati
54
+ </button>
55
+
56
+ <button type="button" pgs="buttonStrong cookieConsent-actionAccept">
57
+ <i className="fa-solid fa-check"></i> Accetta tutto
58
+ </button>
59
+ </div>
60
+ </div>
61
+ );
62
+ }
@@ -0,0 +1,40 @@
1
+ export default function Footer() {
2
+ return (
3
+ <footer pgs="footer">
4
+ <button pgs="button toggleDarkmode" type="button" aria-label="Cambia tema">
5
+ <i className="fa-solid fa-moon"></i>
6
+ </button>
7
+
8
+ <section pgs="footer-top section">
9
+ <div pgs="footer-top-content flex-3">
10
+ <div pgs="footer-brand">
11
+ <a aria-label="Logo" pgs="logo" href="/">
12
+ <span pgs="logo-text">MyPGS</span>
13
+ </a>
14
+ <p pgs="footer-brand-motto">Componenti frontend riutilizzabili.</p>
15
+ </div>
16
+
17
+ <div pgs="footer-content">
18
+ <h2>Menu</h2>
19
+ <nav pgs="menuFooter" aria-label="Menu footer">
20
+ <ul>
21
+ <li><a href="/">Home</a></li>
22
+ <li><a href="/contatti">Contatti</a></li>
23
+ </ul>
24
+ </nav>
25
+ </div>
26
+ </div>
27
+ </section>
28
+
29
+ <section pgs="footer-legal section">
30
+ <div pgs="footer-legal-content">
31
+ <button type="button" pgs="button cookieConsent-actionOpen">Preferenze cookie</button>
32
+ <p><a href="">Privacy Policy</a></p>
33
+ <p><a href="">Cookie Policy</a></p>
34
+ <p><a href="">Termini e Condizioni</a></p>
35
+ <p>© 2026 MyPgs. Nessun diritto riservato.</p>
36
+ </div>
37
+ </section>
38
+ </footer>
39
+ );
40
+ }
@@ -0,0 +1,62 @@
1
+ import { useEffect } from "react";
2
+
3
+ export default function Header() {
4
+ useEffect(() => {
5
+ if (localStorage.getItem("screenIsDarkMode") === "true") {
6
+ document.body.classList.add("darkmode");
7
+ document.querySelector(":root")?.setAttribute("data-darkmode", "true");
8
+ document.body.setAttribute("data-darkmode", "true");
9
+ }
10
+
11
+ if (window.innerWidth < 600 && window.pgs) {
12
+ window.pgs(document.querySelector("header")).state.add("mobileActive");
13
+ window.pgs(document.querySelector("[pgs~=header-element]")).state.add("mobileActive");
14
+ }
15
+ }, []);
16
+
17
+ return (
18
+ <header pgs="header">
19
+ <div pgs="header-element">
20
+ <div pgs="header-element-alwaysOn">
21
+ <a aria-label="Logo" pgs="logo" href="/">
22
+ <span pgs="logo-text">MyPGS</span>
23
+ </a>
24
+ </div>
25
+
26
+ <div pgs="header-element-onlyDesktop">
27
+ <nav pgs="menu" pgs-option="horizontal menuHeader" aria-label="Menu principale">
28
+ <ul>
29
+ <li><a href="/">Home</a></li>
30
+ <li><a href="#componenti">Componenti</a></li>
31
+ <li><a href="#layout">Layout</a></li>
32
+ </ul>
33
+ </nav>
34
+ </div>
35
+
36
+ <div pgs="header-element-onlyMobile"></div>
37
+
38
+ <div pgs="header-element-alwaysOnLast">
39
+ <button pgs="buttonIcon toggleDarkmode" type="button" aria-label="Cambia tema">
40
+ <i className="fa-solid fa-moon"></i>
41
+ </button>
42
+ </div>
43
+
44
+ <div pgs="header-element-hamburger modal" pgs-option="containerPGS[header] ">
45
+ <button pgs="buttonIcon modal-button modal-close header-element-hamburger-button" type="button"></button>
46
+
47
+ <dialog pgs="modal-dialog" pgs-option="right">
48
+ <div pgs="modal-dialog-content">
49
+ <nav pgs="menu" pgs-option="vertical menuHeader" aria-label="Menu mobile">
50
+ <ul>
51
+ <li><a href="/">Home</a></li>
52
+ <li><a href="#componenti">Componenti</a></li>
53
+ <li><a href="#layout">Layout</a></li>
54
+ </ul>
55
+ </nav>
56
+ </div>
57
+ </dialog>
58
+ </div>
59
+ </div>
60
+ </header>
61
+ );
62
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes