mypgs 1.0.0 → 1.1.5

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 (59) hide show
  1. package/README.md +124 -11
  2. package/assets/javascript/_pgs.js +18 -3
  3. package/assets/javascript/components/_dropdown.js +3 -2
  4. package/assets/javascript/components/_slides.js +3 -3
  5. package/assets/javascript/components/_stepTabs.js +157 -0
  6. package/assets/javascript/index.js +1 -1
  7. package/assets/javascript/pgs.d.ts +47 -16
  8. package/assets/scss/base/_body.scss +3 -2
  9. package/assets/scss/base/_general.scss +46 -43
  10. package/assets/scss/base/_heading.scss +17 -15
  11. package/assets/scss/components/_accordion.scss +1 -0
  12. package/assets/scss/components/_dropdown.scss +19 -26
  13. package/assets/scss/components/_notification.scss +4 -4
  14. package/assets/scss/components/_searchbar.scss +2 -2
  15. package/assets/scss/components/_slides.scss +5 -4
  16. package/assets/scss/components/_stepTabs.scss +58 -0
  17. package/assets/scss/components/_steps.scss +4 -3
  18. package/assets/scss/components/_table.scss +1 -1
  19. package/assets/scss/components/_tooltip.scss +11 -6
  20. package/assets/scss/index.scss +29 -32
  21. package/assets/scss/layout/_gap.scss +3 -0
  22. package/assets/scss/mixin/_mx-button.scss +64 -41
  23. package/assets/scss/mixin/_mx-menu.scss +1 -1
  24. package/dist/css/index.css +2149 -1729
  25. package/dist/css/index.css.map +1 -1
  26. package/dist/css/index.min.css +1 -1
  27. package/dist/index.d.ts +45 -15
  28. package/dist/javascript/index.js +139 -100
  29. package/dist/javascript/index.js.map +1 -1
  30. package/dist/javascript/index.min.js +1 -1
  31. package/package.json +2 -2
  32. package/pgs-html-suggestions.vsix +0 -0
  33. package/templates/components/md-accordion.html +23 -0
  34. package/templates/components/md-breadcumbs.html +8 -8
  35. package/templates/components/md-button.html +29 -0
  36. package/templates/components/md-card.html +23 -0
  37. package/templates/components/md-dropdown.html +16 -0
  38. package/templates/components/md-form.html +26 -0
  39. package/templates/components/md-logo.html +7 -0
  40. package/templates/components/md-menu.html +39 -5
  41. package/templates/components/md-modal.html +19 -0
  42. package/templates/components/md-notification.html +4 -1
  43. package/templates/components/md-searchbar.html +6 -1
  44. package/templates/components/md-slides.html +33 -0
  45. package/templates/components/md-stepTabs.html +36 -0
  46. package/templates/components/md-steps.html +25 -0
  47. package/templates/components/md-table.html +24 -0
  48. package/templates/components/md-tooltip.html +1 -0
  49. package/templates/demo.css +51 -0
  50. package/templates/demo.html +24 -0
  51. package/templates/demo.js +141 -0
  52. package/templates/layout/md-body.html +1 -1
  53. package/templates/layout/md-cookieConsent.html +2 -2
  54. package/templates/layout/md-footer.html +21 -2
  55. package/templates/layout/md-header.html +22 -2
  56. package/templates/layout/md-pageShell.html +22 -0
  57. package/templates/layout/md-section.html +25 -0
  58. package/assets/javascript/components/_tabs.js +0 -134
  59. package/assets/scss/components/_tabs.scss +0 -69
package/README.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # MyPGS
2
2
 
3
- Libreria frontend con asset JavaScript e CSS precompilati per i componenti e i pattern MyPGS.
3
+ Libreria frontend condivisa per componenti, layout e pattern basati sull'attributo `pgs`.
4
4
 
5
- ## Installazione
5
+ Contiene sorgenti SCSS, mixin, comportamenti JavaScript, template HTML di esempio e asset compilati pronti all'uso. Puo' essere usata sia importando direttamente CSS e JavaScript compilati, sia importando gli SCSS sorgenti dentro il build del progetto che la utilizza.
6
+
7
+ ## Installazione come dipendenza
8
+
9
+ Da registry npm, se pubblicata:
6
10
 
7
11
  ```bash
8
12
  npm install mypgs
@@ -10,24 +14,133 @@ npm install mypgs
10
14
 
11
15
  ## Utilizzo
12
16
 
13
- Importa gli asset compilati nel tuo progetto:
17
+ ### JavaScript
18
+
19
+ Importa la libreria nell'entrypoint JavaScript del progetto:
14
20
 
15
21
  ```js
16
- import "mypgs";
17
- import "mypgs/style.css";
22
+ import * as mypgs from "mypgs";
23
+ ```
24
+
25
+ L'entrypoint di MyPGS inizializza:
26
+
27
+ - helper globale `pgs`
28
+ - dark mode
29
+ - gestione oggetti PGS
30
+ - accordion
31
+ - dropdown
32
+ - menu
33
+ - modali
34
+ - slides
35
+ - steps
36
+ - step tabs
37
+ - notifiche
38
+ - header
39
+ - cookie consent
40
+
41
+ Il bundle finale viene generato dal progetto che importa `mypgs`, in base alla propria configurazione Webpack o al proprio bundler.
42
+
43
+ ### SCSS
44
+
45
+ Per integrare MyPGS nel build SCSS del progetto, importa mixin e stili sorgenti da `node_modules`:
46
+
47
+ ```scss
48
+ @import "../../node_modules/mypgs/assets/scss/mixin/mixin.scss";
49
+ @import "../../node_modules/mypgs/assets/scss/index.scss";
18
50
  ```
19
51
 
20
- Lo script inizializza le funzionalita' globali della libreria ed espone `pgs` su `globalThis`.
52
+ Se servono solo i mixin, importa solo il file dedicato:
53
+
54
+ ```scss
55
+ @import "../../node_modules/mypgs/assets/scss/mixin/mixin.scss";
56
+ ```
57
+
58
+ Molti layout, componenti e pattern sono inclusi sotto `[pgs~=initP]`, quindi il markup principale deve abilitare la libreria così:
59
+
60
+ ```html
61
+ <html pgs="htmlBase initP">
62
+ <body pgs="bodyBase bodyImg bodyText bodyHeading">
63
+ ```
64
+
65
+ ## Markup PGS
66
+
67
+ I componenti vengono attivati usando token nell'attributo `pgs`, per esempio:
68
+
69
+ ```html
70
+ <nav pgs="menuHorizontal"></nav>
71
+ <button pgs="button modal-button"></button>
72
+ <div pgs="accordion">
73
+ <button pgs="accordion-button"></button>
74
+ <div pgs="accordion-content"></div>
75
+ </div>
76
+ ```
77
+
78
+ Gli stessi token devono restare coerenti tra markup, SCSS e JavaScript.
21
79
 
22
80
  ## Contenuto del pacchetto
23
81
 
24
- - `dist/javascript/index.js`
25
- - `dist/javascript/index.min.js`
26
- - `dist/css/index.css`
27
- - `dist/css/index.min.css`
82
+ - `assets/scss/`: sorgenti SCSS, mixin, base, layout, componenti e pattern
83
+ - `assets/javascript/`: sorgenti JavaScript dei comportamenti PGS
84
+ - `templates/`: esempi HTML dei componenti e dei layout
85
+ - `dist/javascript/index.js`: bundle JavaScript non minificato
86
+ - `dist/javascript/index.min.js`: bundle JavaScript minificato
87
+ - `dist/css/index.css`: CSS compilato non minificato
88
+ - `dist/css/index.min.css`: CSS compilato minificato
89
+ - `dist/index.d.ts`: dichiarazioni TypeScript esportate dal pacchetto
90
+
91
+ ## Export npm
92
+
93
+ Il pacchetto espone:
94
+
95
+ ```json
96
+ {
97
+ ".": "./dist/javascript/index.js",
98
+ "./style.css": "./dist/css/index.css",
99
+ "./style.min.css": "./dist/css/index.min.css"
100
+ }
101
+ ```
102
+
103
+ Uso diretto degli asset compilati:
104
+
105
+ ```js
106
+ import "mypgs";
107
+ import "mypgs/style.css";
108
+ ```
109
+
110
+ In alternativa, puoi importare gli SCSS sorgenti direttamente nel build del progetto quando vuoi ottenere un unico CSS finale.
28
111
 
29
112
  ## Sviluppo
30
113
 
114
+ Build una tantum:
115
+
31
116
  ```bash
32
- npm run build
117
+ npm run start
33
118
  ```
119
+
120
+ Build in watch mode:
121
+
122
+ ```bash
123
+ npm run "start watch"
124
+ ```
125
+
126
+ Per preparare un archivio locale installabile in un altro progetto:
127
+
128
+ ```bash
129
+ npm pack
130
+ ```
131
+
132
+ Quando modifichi MyPGS e vuoi provarlo in un progetto che la usa:
133
+
134
+ 1. ricompila MyPGS con `npm run start`
135
+ 2. crea un nuovo archivio con `npm pack`
136
+ 3. copia o aggiorna il `.tgz` usato dal progetto
137
+ 4. esegui `npm install` nel progetto
138
+ 5. ricompila il progetto
139
+
140
+ ## Convenzioni
141
+
142
+ - Usa l'attributo `pgs` per collegare markup, CSS e JavaScript.
143
+ - Mantieni i token PGS coerenti tra template HTML, componenti, moduli e script.
144
+ - Metti in MyPGS solo stili e comportamenti riutilizzabili.
145
+ - Mantieni nel progetto finale gli stili e le personalizzazioni specifiche.
146
+ - Esporta in `dist/` prima di creare il pacchetto locale `.tgz`.
@@ -138,15 +138,30 @@ export function pgs(root) {
138
138
  return api;
139
139
  };
140
140
 
141
- api.toggle = function (value) {
141
+ api.toggle = function (value, force) {
142
142
  const v = String(value).trim();
143
143
  if (!v) return false;
144
-
145
144
  const current = read();
146
- if (current.includes(v)) {
145
+ const exists = current.includes(v);
146
+
147
+ if (force !== undefined) {
148
+ if (force && !exists) {
149
+ current.push(v);
150
+ write(current);
151
+ }
152
+
153
+ if (!force && exists) {
154
+ write(current.filter(x => x !== v));
155
+ }
156
+
157
+ return !!force;
158
+ }
159
+
160
+ if (exists) {
147
161
  write(current.filter(x => x !== v));
148
162
  return false;
149
163
  }
164
+
150
165
  current.push(v);
151
166
  write(current);
152
167
  return true;
@@ -34,9 +34,10 @@ export function pgs_dropdown() {
34
34
  CSS.supports("position-anchor: --dropdown-anchor") &&
35
35
  CSS.supports("position-area: bottom") &&
36
36
  CSS.supports("top: anchor(bottom)");
37
+ const USE_FALLBACK_POSITIONING = pgs(DROPDOWN).contains("tooltip") || !HAS_ANCHOR_POSITIONING;
37
38
 
38
39
  const updatePopoverPosition = () => {
39
- if (HAS_ANCHOR_POSITIONING) return;
40
+ if (!USE_FALLBACK_POSITIONING) return;
40
41
 
41
42
  const buttonRect = BUTTON.getBoundingClientRect();
42
43
  const style = getComputedStyle(DROPDOWN);
@@ -71,7 +72,7 @@ export function pgs_dropdown() {
71
72
  };
72
73
 
73
74
  BUTTON.addEventListener("click", e => {
74
- if (HAS_ANCHOR_POSITIONING) return;
75
+ if (!USE_FALLBACK_POSITIONING) return;
75
76
 
76
77
  e.preventDefault();
77
78
  if (CONTENT.matches(":popover-open")) {
@@ -30,8 +30,8 @@ class PGS_Slides {
30
30
 
31
31
  //== PULSANTI
32
32
  if (!pgs(EL).querySelector('slides-prec') && !pgs(EL).querySelector('slides-next')) {
33
- EL.insertAdjacentHTML("afterbegin", `<button pgs="slides-prec button" type="button" class="precButton" aria-label="slide precedente"> <span> <i class="fa-solid fa-arrow-left"></i></span></button>`);
34
- EL.insertAdjacentHTML("beforeend", `<button pgs="slides-next button" type="button" class="nextButton" aria-label="prossima slide"> <span> <i class="fa-solid fa-arrow-right"></i></span></button>`);
33
+ EL.insertAdjacentHTML("afterbegin", `<button pgs="slides-prec buttonIcon" type="button" class="precButton" aria-label="slide precedente"> <span> <i class="fa-solid fa-arrow-left"></i></span></button>`);
34
+ EL.insertAdjacentHTML("beforeend", `<button pgs="slides-next buttonIcon" type="button" class="nextButton" aria-label="prossima slide"> <span> <i class="fa-solid fa-arrow-right"></i></span></button>`);
35
35
  }
36
36
 
37
37
  //== DOTS
@@ -89,7 +89,7 @@ class PGS_Slides {
89
89
  const isView = visiblePercent >= 0.98;
90
90
 
91
91
  //== SCROLL ANIMATION
92
- if (!pgs(LI.target).option.contains('notScrollAnimation')) {
92
+ if (!pgs(LI.target).option.contains('notScrollAnimation') && LI.target.firstElementChild) {
93
93
  LI.target.firstElementChild.style.setProperty('--visible-percent', `${visiblePercent}`);
94
94
  };
95
95
 
@@ -0,0 +1,157 @@
1
+ const API = new WeakMap();
2
+ PGS_stepTabs()
3
+
4
+ export function PGS_stepTabs() {
5
+ pgs(document).querySelectorAll("stepTabs").forEach(tabsWizard => {
6
+ if (tabsWizard.dataset.stepTabsInitialized === "true") return;
7
+ tabsWizard.dataset.stepTabsInitialized = "true";
8
+
9
+ //= SELECTOR
10
+ const prev = pgs(tabsWizard).querySelector("stepTabs-prev")
11
+ const next = pgs(tabsWizard).querySelector("stepTabs-next")
12
+ const restart = pgs(tabsWizard).querySelector("stepTabs-restart")
13
+ const dots = pgs(tabsWizard).querySelector("stepTabs-dots")
14
+ const tabsContainer = pgs(tabsWizard).querySelector("stepTabs-container");
15
+ const allTab = pgs(tabsContainer).querySelectorAll("tab");
16
+
17
+ //= SETTING
18
+ const total = allTab.length;
19
+ const defaultTabLocked = Array.from(allTab).filter(tab => pgs(tab).state.contains("is-locked"))
20
+ let current = 0;
21
+ if (prev) prev.disabled = true;
22
+ let isRendering = false;
23
+
24
+ if (!tabsContainer || total === 0) return;
25
+
26
+ //- CREAZIONE DOTS
27
+ const tabDots = [];
28
+ if (dots) {
29
+ dots.innerHTML = "";
30
+
31
+ allTab.forEach((tab, index) => {
32
+ const iconClass = pgs(tab).option.getValueBrackets("tabIcon") || "fa-circle";
33
+ const dot = document.createElement("button");
34
+ dot.type = "button";
35
+ pgs(dot).add("stepTabs-dots-dot");
36
+ dot.setAttribute("data-step", index);
37
+ dot.innerHTML = `<i class="fa-solid ${iconClass}"></i>`;
38
+
39
+ dot.addEventListener("click", () => {
40
+ if (pgs(dot).state.contains("is-completed")) {
41
+ goTo(index, true);
42
+ }
43
+ });
44
+
45
+ dots.appendChild(dot);
46
+ tabDots.push(dot);
47
+ });
48
+ }
49
+
50
+ //+ DOTS
51
+ function updateDots() {
52
+ tabDots.forEach((dot, i) => {
53
+ setState(dot, "is-active", i === current);
54
+ setState(dot, "is-completed", i < current);
55
+ });
56
+ }
57
+
58
+ //+ STATE
59
+ function setState(element, state, active) {
60
+ if (!element) return;
61
+ const hasState = pgs(element).state.contains(state);
62
+ if (active === hasState) return;
63
+ pgs(element).state.toggle(state, active);
64
+ }
65
+
66
+ //+ CONTROLS
67
+ function updateControls() {
68
+ const tab = allTab[current];
69
+ if (prev) prev.disabled = current === 0;
70
+ if (next) next.disabled = current === total - 1 || pgs(tab).state.contains("is-locked");
71
+ }
72
+
73
+ //+ Step
74
+ function goTo(index, scroll = true) {
75
+ current = Math.min(Math.max(index, 0), total - 1);
76
+ const tab = allTab[current]
77
+
78
+ isRendering = true;
79
+ allTab.forEach((tab, i) => setState(tab, "is-active", i === current));
80
+ updateControls();
81
+ updateDots();
82
+ isRendering = false;
83
+
84
+ if (scroll && !tabsWizard.closest("dialog")) {
85
+ tab?.focus();
86
+ tabsWizard?.scrollIntoView({ behavior: "smooth", block: "start" });
87
+ }
88
+
89
+ tabsWizard.dispatchEvent(new CustomEvent('stepTabs:change', { detail: { current, total } }));
90
+ }
91
+
92
+ //+ restart
93
+ function restartTab() {
94
+ goTo(0);
95
+ defaultTabLocked.forEach(tab => pgs(tab).state.add("is-locked"));
96
+ }
97
+
98
+ //= INIT
99
+ goTo(0, false);
100
+
101
+ //= data-tab-locked
102
+ const observer = new MutationObserver(() => {
103
+ if (isRendering) return;
104
+ updateControls();
105
+ });
106
+ allTab?.forEach(tabEl => observer.observe(tabEl, { attributes: true, attributeFilter: ["pgs-state"], }));
107
+
108
+ //= Click su Avanti/Indietro
109
+ prev?.addEventListener("click", e => goTo(current - 1));
110
+ next?.addEventListener("click", e => {
111
+ updateControls();
112
+ if (next.disabled) return;
113
+ goTo(current + 1);
114
+ });
115
+ restart?.addEventListener("click", e => restartTab(), { capture: true });
116
+
117
+ //-(API)
118
+ // tabsWizard.addEventListener("stepTabs:reset", () => restartTab());
119
+ API.set(tabsWizard, {
120
+ restart: restartTab,
121
+ goTo,
122
+ next: () => goTo(current + 1),
123
+ prev: () => goTo(current - 1),
124
+ toggleLock: (step, lock = true) => typeof step === "number" && allTab[step] && (pgs(allTab[step]).state.toggle("is-locked", lock), goTo(current)),
125
+ getCurrent: () => current,
126
+ getState: () => ({ current, total }),
127
+ });
128
+ });
129
+ }
130
+
131
+ export function PGS_tabs_api(selector) {
132
+ return API.get(selector);
133
+ }
134
+
135
+ /*
136
+ / EXAMPLE
137
+ // vai allo step 2
138
+ w.dispatchEvent(new CustomEvent("stepTabs:go", { detail: { step: 2 } }));
139
+
140
+ // next
141
+ w.dispatchEvent(new CustomEvent("stepTabs:next"));
142
+
143
+ // prev
144
+ w.dispatchEvent(new CustomEvent("stepTabs:prev"));
145
+
146
+ // reset a 0 senza relock
147
+ w.dispatchEvent(new CustomEvent("stepTabs:reset"));
148
+
149
+ // lock step 3
150
+ w.dispatchEvent(new CustomEvent("stepTabs:toggle-lock", { detail: { step: 3, lock: true } }));
151
+
152
+ // unlock step 3
153
+ w.dispatchEvent(new CustomEvent("stepTabs:toggle-lock", { detail: { step: 3, lock: false } }));
154
+
155
+ // leggi stato
156
+ w.dispatchEvent(new CustomEvent("stepTabs:get", { detail: { reply: (state) => console.log(state) } }));
157
+ */
@@ -13,7 +13,7 @@ import "./components/_menu.js"
13
13
  import "./components/_modals.js";
14
14
  import "./components/_slides.js"
15
15
  import "./components/_steps.js";
16
- import "./components/_tabs.js";
16
+ import "./components/_stepTabs.js";
17
17
 
18
18
  //= patterns
19
19
  import "./patterns/_header.js";
@@ -1,23 +1,54 @@
1
1
  declare global {
2
- interface PgsBag {
3
- add: (...values: string[]) => void;
4
- remove: (...values: string[]) => void;
5
- toggle: (value: string) => boolean;
6
- contains: (value: string) => boolean;
7
- value: string;
8
- querySelector: (value: string | string[]) => Element | null;
9
- querySelectorAll: (value: string | string[]) => NodeListOf<Element>;
2
+ type PgsSelectorValue = string | string[];
3
+ type PgsStateValue = string | string[];
4
+
5
+ interface PgsQueryableApi {
6
+ querySelector(value: PgsSelectorValue): Element | null;
7
+ querySelectorAll(value: PgsSelectorValue): NodeListOf<Element>;
8
+ }
9
+
10
+ interface PgsStateApi {
11
+ (...values: PgsStateValue[]): PgsStateApi;
12
+ add(...values: PgsStateValue[]): PgsStateApi;
13
+ remove(...values: PgsStateValue[]): PgsStateApi;
14
+ toggle(value: string, force?: boolean): boolean;
15
+ contains(value: string): boolean;
16
+ value: string | null;
10
17
  }
11
18
 
12
- interface Element {
13
- pgs: PgsBag;
19
+ interface PgsOptionApi {
20
+ contains(key: string): boolean;
21
+ getValueBrackets(key: string): string | undefined;
22
+ value: string | null;
14
23
  }
15
24
 
16
- interface Document {
17
- pgs: {
18
- querySelector: (value: string | string[]) => Element | null;
19
- querySelectorAll: (value: string | string[]) => NodeListOf<Element>;
20
- };
25
+ interface PgsElementApi extends PgsQueryableApi {
26
+ (): PgsElementApi;
27
+ add(...values: string[]): PgsElementApi;
28
+ remove(...values: string[]): PgsElementApi;
29
+ toggle(value: string, force?: boolean): boolean;
30
+ contains(value: string): boolean;
31
+ value: string | null;
32
+ state: PgsStateApi;
33
+ option: PgsOptionApi;
34
+ modules: PgsOptionApi;
21
35
  }
36
+
37
+ interface PgsDocumentApi extends PgsQueryableApi {
38
+ (): PgsDocumentApi;
39
+ }
40
+
41
+ type PgsApi = PgsElementApi | PgsDocumentApi;
42
+
43
+ interface PgsFunction {
44
+ (root: Document): PgsDocumentApi;
45
+ (root: Element): PgsElementApi;
46
+ (root: Document | Element): PgsApi;
47
+ }
48
+
49
+ interface PgsBag extends PgsElementApi {}
50
+
51
+ var pgs: PgsFunction;
22
52
  }
23
- export {};
53
+
54
+ export {};
@@ -43,7 +43,7 @@
43
43
  //== IMG
44
44
  [pgs~="bodyImg"] {
45
45
  i {
46
- line-height: 1.2 !important;
46
+ line-height: 1.2;
47
47
  font-size: var(--fa-size);
48
48
  transition: color 300ms;
49
49
 
@@ -113,9 +113,10 @@
113
113
  a {
114
114
  text-decoration: none;
115
115
  overflow-wrap: anywhere;
116
+ color: var(--color-black);
116
117
 
117
118
  &:hover {
118
- color: color-mix(in srgb, var(--color-link) 100%, var(--color-whiteFixed) 50%);
119
+ color: color-mix(in srgb, var(--color-link) 100%, var(--color-white) 50%);
119
120
  text-decoration: underline;
120
121
  }
121
122
 
@@ -1,58 +1,61 @@
1
1
  //# GENERAL
2
- [pgs~=card],
3
- [pgs~=cardImg] {
4
- @include card();
2
+ [pgs~=initP] {
5
3
 
6
- [pgs~=card-img] {
7
- @include card-insideImg();
4
+ [pgs~=card],
5
+ [pgs~=cardImg] {
6
+ @include card();
7
+
8
+ [pgs~=card-img] {
9
+ @include card-insideImg();
10
+ }
8
11
  }
9
- }
10
12
 
11
- [pgs~=boxtext] {
12
- @include boxtext();
13
- }
13
+ [pgs~=boxtext] {
14
+ @include boxtext();
15
+ }
14
16
 
15
- [pgs~=darkmode] {
16
- color-scheme: dark;
17
- }
17
+ [pgs~=darkmode] {
18
+ color-scheme: dark;
19
+ }
18
20
 
19
- [pgs~=lightmode] {
20
- color-scheme: light;
21
- }
21
+ [pgs~=lightmode] {
22
+ color-scheme: light;
23
+ }
22
24
 
23
- [pgs~=imgCover] {
24
- object-fit: cover;
25
- }
25
+ [pgs~=imgCover] {
26
+ object-fit: cover;
27
+ }
26
28
 
27
- [pgs~=imgContain] {
28
- object-fit: contain;
29
- }
29
+ [pgs~=imgContain] {
30
+ object-fit: contain;
31
+ }
30
32
 
31
- [pgs~=borderRadius] {
32
- border-radius: var(--border-radius);
33
- }
33
+ [pgs~=borderRadius] {
34
+ border-radius: var(--border-radius);
35
+ }
34
36
 
35
- [pgs~=borderRadiusInput] {
36
- border-radius: var(--border-radius-input);
37
- }
37
+ [pgs~=borderRadiusInput] {
38
+ border-radius: var(--border-radius-input);
39
+ }
38
40
 
39
- [pgs~=borderRadiusExternal] {
40
- border-radius: var(--border-radius-external);
41
- }
41
+ [pgs~=borderRadiusExternal] {
42
+ border-radius: var(--border-radius-external);
43
+ }
42
44
 
43
- [pgs~=blur] {
44
- backdrop-filter: var(--blur);
45
- }
45
+ [pgs~=blur] {
46
+ backdrop-filter: var(--blur);
47
+ }
46
48
 
47
- [pgs~=appearanceNone] {
48
- all: unset;
49
- appearance: none;
50
- }
49
+ [pgs~=appearanceNone] {
50
+ all: unset;
51
+ appearance: none;
52
+ }
51
53
 
52
- [pgs~=pointer] {
53
- cursor: pointer;
54
- }
54
+ [pgs~=pointer] {
55
+ cursor: pointer;
56
+ }
55
57
 
56
- [pgs~=hidden] {
57
- display: none !important;
58
- }
58
+ [pgs~=hidden] {
59
+ display: none !important;
60
+ }
61
+ }
@@ -1,20 +1,22 @@
1
1
  //# HEADING
2
- [pgs~=h1] {
3
- @include h1();
4
- }
2
+ [pgs~=initP] {
3
+ [pgs~=h1] {
4
+ @include h1();
5
+ }
5
6
 
6
- [pgs~=h2] {
7
- @include h2();
8
- }
7
+ [pgs~=h2] {
8
+ @include h2();
9
+ }
9
10
 
10
- [pgs~=h3] {
11
- @include h3();
12
- }
11
+ [pgs~=h3] {
12
+ @include h3();
13
+ }
13
14
 
14
- [pgs~=h4] {
15
- @include h4();
16
- }
15
+ [pgs~=h4] {
16
+ @include h4();
17
+ }
17
18
 
18
- [pgs~=h5] {
19
- @include h5();
20
- }
19
+ [pgs~=h5] {
20
+ @include h5();
21
+ }
22
+ }
@@ -29,6 +29,7 @@
29
29
  line-height: inherit;
30
30
  text-align: inherit;
31
31
  border-radius: var(--border-radius-input);
32
+ align-items: center;
32
33
  width: 100%;
33
34
  $url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M371.515%20229.055L219.516%20373.033C211.797%20380.344%20201.891%20384%20192%20384S172.203%20380.344%20164.484%20373.033L12.485%20229.055C-3.546%20213.87%20-4.233%20188.561%2010.97%20172.532C26.157%20156.472%2051.485%20155.785%2067.516%20171.001L192%20288.921L316.484%20171.001C332.499%20155.754%20357.827%20156.441%20373.03%20172.532C388.233%20188.561%20387.546%20213.87%20371.515%20229.055Z'/%3E%3C/svg%3E");
34
35