@waaelg/dga-design-system 0.4.6 → 0.4.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.
package/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
1
  class c {
2
- constructor(e) {
3
- this.root = e, this.handleClick = this.handleClick.bind(this), this.handleKeydown = this.handleKeydown.bind(this), this.init();
2
+ constructor(t) {
3
+ this.root = t, this.handleClick = this.handleClick.bind(this), this.handleKeydown = this.handleKeydown.bind(this), this.init();
4
4
  }
5
5
  init() {
6
6
  this.root.addEventListener("click", this.handleClick), this.root.addEventListener("keydown", this.handleKeydown);
7
7
  }
8
- handleClick(e) {
9
- const t = e.target.closest(".dga-acc-header");
10
- t && this.root.contains(t) && this.toggle(t);
8
+ handleClick(t) {
9
+ const e = t.target.closest(".dga-acc-header");
10
+ e && this.root.contains(e) && this.toggle(e);
11
11
  }
12
- handleKeydown(e) {
13
- const t = e.target.closest(".dga-acc-header");
14
- !t || !this.root.contains(t) || (e.key === "Enter" || e.key === " ") && (e.preventDefault(), this.toggle(t));
12
+ handleKeydown(t) {
13
+ const e = t.target.closest(".dga-acc-header");
14
+ !e || !this.root.contains(e) || (t.key === "Enter" || t.key === " ") && (t.preventDefault(), this.toggle(e));
15
15
  }
16
- toggle(e) {
17
- const t = e.parentElement;
18
- t && (t.classList.contains("dga-acc-item--active") ? this.close(t) : this.open(t));
16
+ toggle(t) {
17
+ const e = t.parentElement;
18
+ e && (e.classList.contains("dga-acc-item--active") ? this.close(e) : this.open(e));
19
19
  }
20
- open(e) {
21
- e.classList.add("dga-acc-item--active"), e.querySelector(".dga-acc-header")?.setAttribute("aria-expanded", "true");
20
+ open(t) {
21
+ t.classList.add("dga-acc-item--active"), t.querySelector(".dga-acc-header")?.setAttribute("aria-expanded", "true");
22
22
  }
23
- close(e) {
24
- e.classList.remove("dga-acc-item--active"), e.querySelector(".dga-acc-header")?.setAttribute("aria-expanded", "false");
23
+ close(t) {
24
+ t.classList.remove("dga-acc-item--active"), t.querySelector(".dga-acc-header")?.setAttribute("aria-expanded", "false");
25
25
  }
26
26
  closeAll() {
27
- this.root.querySelectorAll(".dga-acc-item").forEach((e) => {
28
- this.close(e);
27
+ this.root.querySelectorAll(".dga-acc-item").forEach((t) => {
28
+ this.close(t);
29
29
  });
30
30
  }
31
31
  destroy() {
@@ -33,17 +33,17 @@ class c {
33
33
  }
34
34
  }
35
35
  class x {
36
- constructor(e) {
37
- this.accordion = e, this.controller = new c(e);
36
+ constructor(t) {
37
+ this.accordion = t, this.controller = new c(t);
38
38
  }
39
- toggle(e) {
40
- this.controller.toggle(e);
39
+ toggle(t) {
40
+ this.controller.toggle(t);
41
41
  }
42
- open(e) {
43
- this.controller.open(e);
42
+ open(t) {
43
+ this.controller.open(t);
44
44
  }
45
- close(e) {
46
- this.controller.close(e);
45
+ close(t) {
46
+ this.controller.close(t);
47
47
  }
48
48
  closeAll() {
49
49
  this.controller.closeAll();
@@ -53,17 +53,17 @@ class x {
53
53
  }
54
54
  }
55
55
  class D {
56
- constructor(e = document) {
57
- this.root = e, this.handleCloseClick = this.handleCloseClick.bind(this), this.init();
56
+ constructor(t = document) {
57
+ this.root = t, this.handleCloseClick = this.handleCloseClick.bind(this), this.init();
58
58
  }
59
59
  init() {
60
60
  this.root.addEventListener("click", this.handleCloseClick);
61
61
  }
62
- handleCloseClick(e) {
63
- const t = e.target.closest("[data-alert-close]");
64
- if (!t)
62
+ handleCloseClick(t) {
63
+ const e = t.target.closest("[data-alert-close]");
64
+ if (!e)
65
65
  return;
66
- const i = t.closest(".dga-alert");
66
+ const i = e.closest(".dga-alert");
67
67
  i && (i.style.display = "none");
68
68
  }
69
69
  destroy() {
@@ -75,35 +75,35 @@ function h(s) {
75
75
  }
76
76
  function u(s = []) {
77
77
  return `conic-gradient(${s.map(
78
- (t) => `${h(t.color)} ${t.from} ${t.to}`
78
+ (e) => `${h(e.color)} ${e.from} ${e.to}`
79
79
  ).join(", ")})`;
80
80
  }
81
81
  function g(s = []) {
82
82
  return `<div class="dga-pie-chart__labels">${s.map(
83
- (t) => `<span class="dga-pie-chart__label"><span class="dga-pie-chart__circle" style="background-color: ${h(
84
- t.color
85
- )}"></span>${t.label}</span>`
83
+ (e) => `<span class="dga-pie-chart__label"><span class="dga-pie-chart__circle" style="background-color: ${h(
84
+ e.color
85
+ )}"></span>${e.label}</span>`
86
86
  ).join("")}</div>`;
87
87
  }
88
88
  function y(s) {
89
89
  if (!s) return [];
90
90
  try {
91
- const e = JSON.parse(s);
92
- return Array.isArray(e) ? e : [];
91
+ const t = JSON.parse(s);
92
+ return Array.isArray(t) ? t : [];
93
93
  } catch {
94
94
  return console.warn("dga-pie-chart: invalid data attribute JSON"), [];
95
95
  }
96
96
  }
97
- function p(s, e = [], { hole: t = !1 } = {}) {
98
- s && (s.classList.add("dga-pie-chart"), s.setAttribute("data-hole", t ? "true" : "false"), s.style.background = u(e), s.innerHTML = g(e));
97
+ function p(s, t = [], { hole: e = !1 } = {}) {
98
+ s && (s.classList.add("dga-pie-chart"), s.setAttribute("data-hole", e ? "true" : "false"), s.style.background = u(t), s.innerHTML = g(t));
99
99
  }
100
100
  class T {
101
- constructor(e, t = []) {
102
- this.chart = e, this.data = t, this.init();
101
+ constructor(t, e = []) {
102
+ this.chart = t, this.data = e, this.init();
103
103
  }
104
104
  init() {
105
- const e = this.chart.getAttribute("data-hole") === "true";
106
- p(this.chart, this.data, { hole: e });
105
+ const t = this.chart.getAttribute("data-hole") === "true";
106
+ p(this.chart, this.data, { hole: t });
107
107
  }
108
108
  generateGradient() {
109
109
  return u(this.data);
@@ -118,48 +118,48 @@ async function b(s) {
118
118
  return await navigator.clipboard.writeText(s), !0;
119
119
  } catch {
120
120
  }
121
- const e = document.createElement("textarea");
122
- e.value = s, e.setAttribute("readonly", ""), e.style.position = "absolute", e.style.left = "-9999px", document.body.appendChild(e), e.select();
123
- const t = document.execCommand("copy");
124
- return document.body.removeChild(e), t;
121
+ const t = document.createElement("textarea");
122
+ t.value = s, t.setAttribute("readonly", ""), t.style.position = "absolute", t.style.left = "-9999px", document.body.appendChild(t), t.select();
123
+ const e = document.execCommand("copy");
124
+ return document.body.removeChild(t), e;
125
125
  }
126
126
  const d = `<svg viewBox="0 0 24 24" fill="none" aria-hidden="true">
127
127
  <rect x="9" y="9" width="11" height="11" rx="2" stroke-width="1.75"></rect>
128
128
  <path d="M6 15H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v1" stroke-width="1.75" stroke-linecap="round"></path>
129
129
  </svg>`;
130
- async function m(s, e = 1200) {
131
- const t = s.getAttribute("aria-label") || "Copy code";
130
+ async function m(s, t = 1200) {
131
+ const e = s.getAttribute("aria-label") || "Copy code";
132
132
  s.setAttribute("aria-label", "Copied"), s.setAttribute("data-copied", "true"), window.setTimeout(() => {
133
- s.setAttribute("aria-label", t), s.setAttribute("data-copied", "false");
134
- }, e);
133
+ s.setAttribute("aria-label", e), s.setAttribute("data-copied", "false");
134
+ }, t);
135
135
  }
136
136
  class S {
137
- constructor(e = document) {
138
- this.root = e, this.handleCopyClick = this.handleCopyClick.bind(this), this.init();
137
+ constructor(t = document) {
138
+ this.root = t, this.handleCopyClick = this.handleCopyClick.bind(this), this.init();
139
139
  }
140
140
  init() {
141
141
  this.root.addEventListener("click", this.handleCopyClick);
142
142
  }
143
- async handleCopyClick(e) {
144
- const t = e.target.closest(
143
+ async handleCopyClick(t) {
144
+ const e = t.target.closest(
145
145
  ".dga-code-snippet-inline__copy, .dga-code-snippet-multiline__copy"
146
146
  );
147
- if (!t) return;
148
- const i = t.closest(".dga-code-snippet-inline"), n = t.closest(".dga-code-snippet-multiline");
147
+ if (!e) return;
148
+ const i = e.closest(".dga-code-snippet-inline"), n = e.closest(".dga-code-snippet-multiline");
149
149
  let o = "";
150
150
  i ? o = i.querySelector(
151
151
  ".dga-code-snippet-inline__content"
152
152
  )?.textContent?.trim() || "" : n && (o = n.querySelector(
153
153
  ".dga-code-snippet-multiline__code code"
154
- )?.textContent || ""), !(!o || !await b(o)) && await m(t);
154
+ )?.textContent || ""), !(!o || !await b(o)) && await m(e);
155
155
  }
156
156
  destroy() {
157
157
  this.root.removeEventListener("click", this.handleCopyClick);
158
158
  }
159
159
  }
160
160
  class B {
161
- constructor(e = {}) {
162
- if (this.navbar = e.navbar || document.querySelector(".dga-navbar"), this.verifyBar = e.verifyBar || null, !this.navbar) {
161
+ constructor(t = {}) {
162
+ if (this.navbar = t.navbar || document.querySelector(".dga-navbar"), this.verifyBar = t.verifyBar || null, !this.navbar) {
163
163
  console.warn("DGA Navbar elements not found");
164
164
  return;
165
165
  }
@@ -167,7 +167,7 @@ class B {
167
167
  console.warn("DGA Menu element not found");
168
168
  return;
169
169
  }
170
- this.boundToggleDropdown = (t) => this.toggleDropdown(t), this.boundToggleMobileMenu = (t) => this.toggleMobileMenu(t), this.boundCloseAllDropdowns = (t) => this.closeAllDropdowns(t), this.boundHandleResize = () => this.handleResize(), this.boundHandleKeyboard = (t) => this.handleKeyboard(t), this.init();
170
+ this.boundToggleDropdown = (e) => this.toggleDropdown(e), this.boundToggleMobileMenu = (e) => this.toggleMobileMenu(e), this.boundCloseAllDropdowns = (e) => this.closeAllDropdowns(e), this.boundHandleResize = () => this.handleResize(), this.boundHandleKeyboard = (e) => this.handleKeyboard(e), this.init();
171
171
  }
172
172
  get isActive() {
173
173
  return this.isMobileMenuOpen() || this.isNormalDropdownOpen();
@@ -176,31 +176,31 @@ class B {
176
176
  this.handleResize(), this.bindEvents();
177
177
  }
178
178
  bindEvents() {
179
- this.menuItems.forEach((e) => {
180
- e.addEventListener("click", this.boundToggleDropdown);
181
- }), this.toggler?.addEventListener("click", this.boundToggleMobileMenu), document.addEventListener("click", this.boundCloseAllDropdowns), window.addEventListener("resize", this.boundHandleResize), this.menuItems.forEach((e) => {
182
- e.addEventListener("keydown", this.boundHandleKeyboard);
179
+ this.menuItems.forEach((t) => {
180
+ t.addEventListener("click", this.boundToggleDropdown);
181
+ }), this.toggler?.addEventListener("click", this.boundToggleMobileMenu), document.addEventListener("click", this.boundCloseAllDropdowns), window.addEventListener("resize", this.boundHandleResize), this.menuItems.forEach((t) => {
182
+ t.addEventListener("keydown", this.boundHandleKeyboard);
183
183
  });
184
184
  }
185
- toggleDropdown(e) {
186
- e.preventDefault(), e.stopPropagation(), this.verifyBar && this.verifyBar.isOpen && this.verifyBar.closePanel();
187
- const t = e.currentTarget, i = t.parentElement, n = i.classList.contains("active");
188
- this.closeAllDropdowns(), n || (i.classList.add("active"), t.classList.add("dga-menu-item-selected"), t.setAttribute("aria-expanded", "true"), i.querySelector(".dga-dropdown").style.top = `${this.navbarHeight + this.navbarTop}px`);
185
+ toggleDropdown(t) {
186
+ t.preventDefault(), t.stopPropagation(), this.verifyBar && this.verifyBar.isOpen && this.verifyBar.closePanel();
187
+ const e = t.currentTarget, i = e.parentElement, n = i.classList.contains("active");
188
+ this.closeAllDropdowns(), n || (i.classList.add("active"), e.classList.add("dga-menu-item-selected"), e.setAttribute("aria-expanded", "true"), i.querySelector(".dga-dropdown").style.top = `${this.navbarHeight + this.navbarTop}px`);
189
189
  }
190
- toggleMobileMenu(e) {
191
- e.stopPropagation(), this.verifyBar && this.verifyBar.isOpen && this.verifyBar.closePanel(), this.menu.classList.toggle("dga-menu-open"), this.menu.classList.contains("dga-menu-open") ? (document.body.classList.add("no-scroll"), this.menu.style.height = `calc(100vh - ${this.navbarHeight}px - ${this.navbarTop}px)`) : (document.body.classList.remove("no-scroll"), this.menu.style.height = "0px"), this.menu.style.top = `${this.navbarTop + this.navbarHeight}px`;
192
- const t = this.menu.classList.contains("dga-menu-open");
193
- this.toggler.setAttribute("aria-expanded", t), this.toggler.setAttribute(
190
+ toggleMobileMenu(t) {
191
+ t.stopPropagation(), this.verifyBar && this.verifyBar.isOpen && this.verifyBar.closePanel(), this.menu.classList.toggle("dga-menu-open"), this.menu.classList.contains("dga-menu-open") ? (document.body.classList.add("no-scroll"), this.menu.style.height = `calc(100vh - ${this.navbarHeight}px - ${this.navbarTop}px)`) : (document.body.classList.remove("no-scroll"), this.menu.style.height = "0px"), this.menu.style.top = `${this.navbarTop + this.navbarHeight}px`;
192
+ const e = this.menu.classList.contains("dga-menu-open");
193
+ this.toggler.setAttribute("aria-expanded", e), this.toggler.setAttribute(
194
194
  "aria-label",
195
- t ? "Close menu" : "Open menu"
195
+ e ? "Close menu" : "Open menu"
196
196
  );
197
197
  }
198
198
  // Public method to close menu programmatically (without event)
199
199
  closeMenu() {
200
200
  this.closeAllDropdowns(), this.isMobileMenuOpen() && (this.menu.classList.remove("dga-menu-open"), document.body.classList.remove("no-scroll"), this.menu.style.height = "0px", this.toggler.setAttribute("aria-expanded", "false"), this.toggler.setAttribute("aria-label", "Open menu"));
201
201
  }
202
- closeAllDropdowns(e) {
203
- if (e && e.target.closest(".dga-dropdown-content"))
202
+ closeAllDropdowns(t) {
203
+ if (t && t.target.closest(".dga-dropdown-content"))
204
204
  return;
205
205
  this.navbar.querySelectorAll(".dga-menu > li.active").forEach((i) => {
206
206
  i.classList.remove("active");
@@ -208,21 +208,21 @@ class B {
208
208
  n?.classList.remove("dga-menu-item-selected"), n?.setAttribute("aria-expanded", "false");
209
209
  });
210
210
  }
211
- handleKeyboard(e) {
212
- e.key === "Escape" && (this.closeAllDropdowns(), e.currentTarget.focus()), (e.key === "Enter" || e.key === " ") && (e.preventDefault(), this.toggleDropdown(e));
211
+ handleKeyboard(t) {
212
+ t.key === "Escape" && (this.closeAllDropdowns(), t.currentTarget.focus()), (t.key === "Enter" || t.key === " ") && (t.preventDefault(), this.toggleDropdown(t));
213
213
  }
214
214
  handleResize() {
215
- const e = window.innerWidth;
215
+ const t = window.innerWidth;
216
216
  document.body.classList.remove(
217
217
  "size_desktop",
218
218
  "size_tablet",
219
219
  "size_mobile"
220
- ), e > 769 ? (document.body.classList.add("size_desktop"), this.closeAllDropdowns(), this.menu.classList.remove("dga-menu-open"), document.body.classList.remove("no-scroll")) : e <= 769 && e > 375 ? document.body.classList.add("size_tablet") : document.body.classList.add("size_mobile");
220
+ ), t > 769 ? (document.body.classList.add("size_desktop"), this.closeAllDropdowns(), this.menu.classList.remove("dga-menu-open"), document.body.classList.remove("no-scroll")) : t <= 769 && t > 375 ? document.body.classList.add("size_tablet") : document.body.classList.add("size_mobile");
221
221
  }
222
222
  // Public method to destroy the component
223
223
  destroy() {
224
- this.menuItems.forEach((e) => {
225
- e.removeEventListener("click", this.boundToggleDropdown), e.removeEventListener("keydown", this.boundHandleKeyboard);
224
+ this.menuItems.forEach((t) => {
225
+ t.removeEventListener("click", this.boundToggleDropdown), t.removeEventListener("keydown", this.boundHandleKeyboard);
226
226
  }), this.toggler?.removeEventListener("click", this.boundToggleMobileMenu), document.removeEventListener("click", this.boundCloseAllDropdowns), window.removeEventListener("resize", this.boundHandleResize);
227
227
  }
228
228
  isMobileMenuOpen() {
@@ -233,8 +233,8 @@ class B {
233
233
  }
234
234
  }
235
235
  class M {
236
- constructor(e = {}) {
237
- if (this.isOpen = !1, this.verifyBar = document.getElementById("dga-verify-bar"), this.menu = e.menu || null, this.btn = document.getElementById("dga-verifyBtn"), this.content = document.getElementById("dga-verify-bar_content"), this.boundToggle = () => {
236
+ constructor(t = {}) {
237
+ if (this.isOpen = !1, this.verifyBar = document.getElementById("dga-verify-bar"), this.menu = t.menu || null, this.btn = document.getElementById("dga-verifyBtn"), this.content = document.getElementById("dga-verify-bar_content"), this.boundToggle = () => {
238
238
  this.isOpen ? this.closePanel() : this.openPanel();
239
239
  }, !this.verifyBar || !this.btn || !this.content) {
240
240
  console.warn("DGA Verify Bar elements not found");
@@ -277,8 +277,8 @@ class _ extends HTMLElement {
277
277
  _captureBodyContent() {
278
278
  if (this._bodyContent || this.querySelector(".dga-alert-content"))
279
279
  return;
280
- const e = this.innerHTML.trim();
281
- e && (this._bodyContent = e);
280
+ const t = this.innerHTML.trim();
281
+ t && (this._bodyContent = t);
282
282
  }
283
283
  disconnectedCallback() {
284
284
  this._closeButton?.removeEventListener("click", this._boundDismiss);
@@ -287,9 +287,9 @@ class _ extends HTMLElement {
287
287
  this.isConnected && this._render();
288
288
  }
289
289
  _render() {
290
- const e = this.getAttribute("variant") || f, t = this.getAttribute("title") || "", i = this.hasAttribute("dismissible"), n = this._bodyContent || "";
291
- this.className = "dga-alert", this.setAttribute("data-variant", e);
292
- const o = t ? `<h4 class="dga-alert-title">${a(t)}</h4>` : "", r = i ? '<button class="dga-alert-close" type="button" data-alert-close aria-label="Dismiss alert">×</button>' : "";
290
+ const t = this.getAttribute("variant") || f, e = this.getAttribute("title") || "", i = this.hasAttribute("dismissible"), n = this._bodyContent || "";
291
+ this.classList.add("dga-alert"), this.setAttribute("data-variant", t);
292
+ const o = e ? `<h4 class="dga-alert-title">${a(e)}</h4>` : "", r = i ? '<button class="dga-alert-close" type="button" data-alert-close aria-label="Dismiss alert">×</button>' : "";
293
293
  this.innerHTML = `
294
294
  <span class="dga-alert-icon" aria-hidden="true"></span>
295
295
  <div class="dga-alert-content">
@@ -317,11 +317,11 @@ class C extends HTMLElement {
317
317
  this.isConnected && this._render();
318
318
  }
319
319
  _render() {
320
- const e = this.getAttribute("title") || "", t = this.getAttribute("size") || "md", i = this.hasAttribute("open"), n = this._bodyContent || "";
320
+ const t = this.getAttribute("title") || "", e = this.getAttribute("size") || "md", i = this.hasAttribute("open"), n = this._bodyContent || "";
321
321
  this.innerHTML = `
322
322
  <div class="dga-acc-item${i ? " dga-acc-item--active" : ""}">
323
- <button class="dga-acc-header" data-size="${a(t)}" aria-expanded="${i ? "true" : "false"}">
324
- <span>${a(e)}</span>
323
+ <button class="dga-acc-header" data-size="${a(e)}" aria-expanded="${i ? "true" : "false"}">
324
+ <span>${a(t)}</span>
325
325
  </button>
326
326
  <div class="dga-acc-content">
327
327
  <div class="dga-acc-body">${n}</div>
@@ -360,11 +360,11 @@ class k extends HTMLElement {
360
360
  this.isConnected && this._render();
361
361
  }
362
362
  _render() {
363
- const e = this.hasAttribute("multiline"), t = this.getAttribute("code")?.trim() || this._codeContent || "";
364
- e ? (this.innerHTML = `
363
+ const t = this.hasAttribute("multiline"), e = this.getAttribute("code")?.trim() || this._codeContent || "";
364
+ t ? (this.innerHTML = `
365
365
  <div class="dga-code-snippet-multiline">
366
366
  <div class="dga-code-snippet-multiline__body">
367
- <pre class="dga-code-snippet-multiline__code"><code>${a(t)}</code></pre>
367
+ <pre class="dga-code-snippet-multiline__code"><code>${a(e)}</code></pre>
368
368
  <button type="button" class="dga-code-snippet-multiline__copy" aria-label="Copy code" data-copied="false">
369
369
  ${d}
370
370
  </button>
@@ -372,7 +372,7 @@ class k extends HTMLElement {
372
372
  </div>
373
373
  `, this._copyButton = this.querySelector(".dga-code-snippet-multiline__copy")) : (this.innerHTML = `
374
374
  <div class="dga-code-snippet-inline">
375
- <div class="dga-code-snippet-inline__content">${a(t)}</div>
375
+ <div class="dga-code-snippet-inline__content">${a(e)}</div>
376
376
  <button type="button" class="dga-code-snippet-inline__copy" aria-label="Copy code" data-copied="false">
377
377
  ${d}
378
378
  </button>
@@ -380,8 +380,8 @@ class k extends HTMLElement {
380
380
  `, this._copyButton = this.querySelector(".dga-code-snippet-inline__copy")), this._copyButton?.removeEventListener("click", this._boundCopy), this._copyButton?.addEventListener("click", this._boundCopy);
381
381
  }
382
382
  async _handleCopy() {
383
- const e = this.getAttribute("code")?.trim() || this._codeContent || "";
384
- !e || !this._copyButton || !await b(e) || (await m(this._copyButton), this.dispatchEvent(
383
+ const t = this.getAttribute("code")?.trim() || this._codeContent || "";
384
+ !t || !this._copyButton || !await b(t) || (await m(this._copyButton), this.dispatchEvent(
385
385
  new CustomEvent("dga-code-copy", { bubbles: !0, composed: !0 })
386
386
  ));
387
387
  }
@@ -398,8 +398,8 @@ class L extends HTMLElement {
398
398
  this.isConnected && this._render();
399
399
  }
400
400
  _render() {
401
- const e = y(this.getAttribute("data")), t = this.hasAttribute("hole") && this.getAttribute("hole") !== "false";
402
- p(this, e, { hole: t });
401
+ const t = y(this.getAttribute("data")), e = this.hasAttribute("hole") && this.getAttribute("hole") !== "false";
402
+ p(this, t, { hole: e });
403
403
  }
404
404
  }
405
405
  customElements.define("dga-pie-chart", L);
@@ -435,9 +435,9 @@ class w extends HTMLElement {
435
435
  this.isConnected && this._render();
436
436
  }
437
437
  _render() {
438
- const e = a(
438
+ const t = a(
439
439
  this.getAttribute("registration-number") || "20250105758"
440
- ), t = this.getAttribute("registration-link") || "https://raqmi.dga.gov.sa/platforms/platforms/9ebc5e60-9081-4653-bfb9-08dd2a2f8633/platform-license", i = a(this._normalizeLink(t)), n = a(this.getAttribute("domain") || ".edu.sa"), o = a(this._imageSrc("flag-src")), r = a(this._imageSrc("link-icon-src")), l = a(this._imageSrc("lock-icon-src")), v = a(this._imageSrc("logo-src"));
440
+ ), e = this.getAttribute("registration-link") || "https://raqmi.dga.gov.sa/platforms/platforms/9ebc5e60-9081-4653-bfb9-08dd2a2f8633/platform-license", i = a(this._normalizeLink(e)), n = a(this.getAttribute("domain") || ".edu.sa"), o = a(this._imageSrc("flag-src")), r = a(this._imageSrc("link-icon-src")), l = a(this._imageSrc("lock-icon-src")), v = a(this._imageSrc("logo-src"));
441
441
  this.innerHTML = `
442
442
  <div id="dga-verify-bar" class="dga-bg-gray-100 closed">
443
443
  <div class="dga-container dga-py-2">
@@ -492,7 +492,7 @@ class w extends HTMLElement {
492
492
  <div class="dga-d-flex dga-align-items-center dga-gap-3 dga-bg-white dga-text-md dga-rounded-md dga-py-2 dga-px-7">
493
493
  <img src="${v}" alt="شعار هيئة الحكومة الرقمية" />
494
494
  مسجل لدى هيئة الحكومة الرقمية برقم :
495
- <a href="${i}" class="dga-link">${e}</a>
495
+ <a href="${i}" class="dga-link">${t}</a>
496
496
  </div>
497
497
  </div>
498
498
  </div>
@@ -500,10 +500,10 @@ class w extends HTMLElement {
500
500
  </div>
501
501
  `, this._btn?.removeEventListener("click", this._boundToggle), this._wrapper = this.querySelector("#dga-verify-bar"), this._btn = this.querySelector("[data-verify-toggle]"), this._content = this.querySelector("[data-verify-content]"), this._btn?.addEventListener("click", this._boundToggle);
502
502
  }
503
- _imageSrc(e) {
504
- const t = this.getAttribute(e);
505
- if (t) return t;
506
- const i = E[e], n = this.getAttribute("assets-base") || "/";
503
+ _imageSrc(t) {
504
+ const e = this.getAttribute(t);
505
+ if (e) return e;
506
+ const i = E[t], n = this.getAttribute("assets-base") || "/";
507
507
  return `${n.endsWith("/") ? n : `${n}/`}${i}`;
508
508
  }
509
509
  _open() {
@@ -512,9 +512,9 @@ class w extends HTMLElement {
512
512
  _close() {
513
513
  this._content.style.display = "none", this.isOpen = !1, this._btn?.setAttribute("aria-expanded", "false"), this._wrapper?.classList.replace("opend", "closed");
514
514
  }
515
- _normalizeLink(e) {
515
+ _normalizeLink(t) {
516
516
  try {
517
- return new URL(e, window.location.href).href;
517
+ return new URL(t, window.location.href).href;
518
518
  } catch {
519
519
  return "#";
520
520
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/scripts/shared/accordion-controller.js","../src/scripts/accordion.js","../src/scripts/alert.js","../src/scripts/shared/pie-chart.js","../src/scripts/chart.js","../src/scripts/shared/copy-text.js","../src/scripts/codeSnippet.js","../src/scripts/dropdownMenu.js","../src/scripts/verifyBar.js","../src/scripts/shared/escape-html.js","../src/scripts/dga-alert.js","../src/scripts/dga-accordion.js","../src/scripts/dga-code-snippet.js","../src/scripts/dga-pie-chart.js","../src/scripts/dga-verify-bar.js","../src/scripts/register-web-components.js"],"sourcesContent":["export class AccordionController {\r\n constructor(root) {\r\n this.root = root;\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleKeydown = this.handleKeydown.bind(this);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.root.addEventListener(\"click\", this.handleClick);\r\n this.root.addEventListener(\"keydown\", this.handleKeydown);\r\n }\r\n\r\n handleClick(event) {\r\n const header = event.target.closest(\".dga-acc-header\");\r\n if (header && this.root.contains(header)) {\r\n this.toggle(header);\r\n }\r\n }\r\n\r\n handleKeydown(event) {\r\n const header = event.target.closest(\".dga-acc-header\");\r\n if (!header || !this.root.contains(header)) return;\r\n\r\n if (event.key === \"Enter\" || event.key === \" \") {\r\n event.preventDefault();\r\n this.toggle(header);\r\n }\r\n }\r\n\r\n toggle(header) {\r\n const item = header.parentElement;\r\n if (!item) return;\r\n\r\n if (item.classList.contains(\"dga-acc-item--active\")) {\r\n this.close(item);\r\n } else {\r\n this.open(item);\r\n }\r\n }\r\n\r\n open(item) {\r\n item.classList.add(\"dga-acc-item--active\");\r\n item.querySelector(\".dga-acc-header\")?.setAttribute(\"aria-expanded\", \"true\");\r\n }\r\n\r\n close(item) {\r\n item.classList.remove(\"dga-acc-item--active\");\r\n item.querySelector(\".dga-acc-header\")?.setAttribute(\"aria-expanded\", \"false\");\r\n }\r\n\r\n closeAll() {\r\n this.root.querySelectorAll(\".dga-acc-item\").forEach((item) => {\r\n this.close(item);\r\n });\r\n }\r\n\r\n destroy() {\r\n this.root.removeEventListener(\"click\", this.handleClick);\r\n this.root.removeEventListener(\"keydown\", this.handleKeydown);\r\n }\r\n}\r\n","import { AccordionController } from \"./shared/accordion-controller.js\";\r\n\r\nexport default class DGAAccordion {\r\n constructor(element) {\r\n this.accordion = element;\r\n this.controller = new AccordionController(element);\r\n }\r\n\r\n toggle(header) {\r\n this.controller.toggle(header);\r\n }\r\n\r\n open(item) {\r\n this.controller.open(item);\r\n }\r\n\r\n close(item) {\r\n this.controller.close(item);\r\n }\r\n\r\n closeAll() {\r\n this.controller.closeAll();\r\n }\r\n\r\n destroy() {\r\n this.controller.destroy();\r\n }\r\n}\r\n","export default class DGAAlert {\r\n constructor(root = document) {\r\n this.root = root;\r\n this.handleCloseClick = this.handleCloseClick.bind(this);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.root.addEventListener(\"click\", this.handleCloseClick);\r\n }\r\n\r\n handleCloseClick(event) {\r\n const closeButton = event.target.closest(\"[data-alert-close]\");\r\n if (!closeButton) {\r\n return;\r\n }\r\n\r\n const alert = closeButton.closest(\".dga-alert\");\r\n if (alert) {\r\n alert.style.display = \"none\";\r\n }\r\n }\r\n\r\n destroy() {\r\n this.root.removeEventListener(\"click\", this.handleCloseClick);\r\n }\r\n}\r\n","export function resolveChartColor(color) {\r\n if (color.startsWith(\"#\") || color.startsWith(\"var(\")) {\r\n return color;\r\n }\r\n return `var(--${color})`;\r\n}\r\n\r\nexport function generateChartGradient(data = []) {\r\n const gradientParts = data.map(\r\n (segment) =>\r\n `${resolveChartColor(segment.color)} ${segment.from} ${segment.to}`\r\n );\r\n return `conic-gradient(${gradientParts.join(\", \")})`;\r\n}\r\n\r\nexport function generateChartLabelsHtml(data = []) {\r\n const labels = data\r\n .map(\r\n (segment) =>\r\n `<span class=\"dga-pie-chart__label\"><span class=\"dga-pie-chart__circle\" style=\"background-color: ${resolveChartColor(\r\n segment.color\r\n )}\"></span>${segment.label}</span>`\r\n )\r\n .join(\"\");\r\n\r\n return `<div class=\"dga-pie-chart__labels\">${labels}</div>`;\r\n}\r\n\r\nexport function parseChartDataAttribute(value) {\r\n if (!value) return [];\r\n\r\n try {\r\n const parsed = JSON.parse(value);\r\n return Array.isArray(parsed) ? parsed : [];\r\n } catch {\r\n console.warn(\"dga-pie-chart: invalid data attribute JSON\");\r\n return [];\r\n }\r\n}\r\n\r\nexport function renderPieChart(element, data = [], { hole = false } = {}) {\r\n if (!element) return;\r\n\r\n element.classList.add(\"dga-pie-chart\");\r\n element.setAttribute(\"data-hole\", hole ? \"true\" : \"false\");\r\n element.style.background = generateChartGradient(data);\r\n element.innerHTML = generateChartLabelsHtml(data);\r\n}\r\n","import {\r\n generateChartGradient,\r\n generateChartLabelsHtml,\r\n renderPieChart,\r\n} from \"./shared/pie-chart.js\";\r\n\r\nexport default class DGAChart {\r\n constructor(element, data = []) {\r\n this.chart = element;\r\n this.data = data;\r\n this.init();\r\n }\r\n\r\n init() {\r\n const hole = this.chart.getAttribute(\"data-hole\") === \"true\";\r\n renderPieChart(this.chart, this.data, { hole });\r\n }\r\n\r\n generateGradient() {\r\n return generateChartGradient(this.data);\r\n }\r\n\r\n generateLabels() {\r\n return generateChartLabelsHtml(this.data);\r\n }\r\n}\r\n","export async function copyText(text) {\r\n try {\r\n if (navigator.clipboard?.writeText) {\r\n await navigator.clipboard.writeText(text);\r\n return true;\r\n }\r\n } catch (_error) {\r\n // Fallback below for restricted clipboard environments.\r\n }\r\n\r\n const textarea = document.createElement(\"textarea\");\r\n textarea.value = text;\r\n textarea.setAttribute(\"readonly\", \"\");\r\n textarea.style.position = \"absolute\";\r\n textarea.style.left = \"-9999px\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n const success = document.execCommand(\"copy\");\r\n document.body.removeChild(textarea);\r\n return success;\r\n}\r\n\r\nexport const COPY_ICON_SVG = `<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" stroke-width=\"1.75\"></rect>\r\n <path d=\"M6 15H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v1\" stroke-width=\"1.75\" stroke-linecap=\"round\"></path>\r\n</svg>`;\r\n\r\nexport async function markCopyButtonCopied(copyButton, resetMs = 1200) {\r\n const previousLabel = copyButton.getAttribute(\"aria-label\") || \"Copy code\";\r\n copyButton.setAttribute(\"aria-label\", \"Copied\");\r\n copyButton.setAttribute(\"data-copied\", \"true\");\r\n\r\n window.setTimeout(() => {\r\n copyButton.setAttribute(\"aria-label\", previousLabel);\r\n copyButton.setAttribute(\"data-copied\", \"false\");\r\n }, resetMs);\r\n}\r\n","import { copyText, markCopyButtonCopied } from \"./shared/copy-text.js\";\r\n\r\nexport default class DGACodeSnippet {\r\n constructor(root = document) {\r\n this.root = root;\r\n this.handleCopyClick = this.handleCopyClick.bind(this);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.root.addEventListener(\"click\", this.handleCopyClick);\r\n }\r\n\r\n async handleCopyClick(event) {\r\n const copyButton = event.target.closest(\r\n \".dga-code-snippet-inline__copy, .dga-code-snippet-multiline__copy\"\r\n );\r\n if (!copyButton) return;\r\n\r\n const inlineSnippet = copyButton.closest(\".dga-code-snippet-inline\");\r\n const multilineSnippet = copyButton.closest(\".dga-code-snippet-multiline\");\r\n\r\n let textToCopy = \"\";\r\n if (inlineSnippet) {\r\n const codeElement = inlineSnippet.querySelector(\r\n \".dga-code-snippet-inline__content\"\r\n );\r\n textToCopy = codeElement?.textContent?.trim() || \"\";\r\n } else if (multilineSnippet) {\r\n const codeElement = multilineSnippet.querySelector(\r\n \".dga-code-snippet-multiline__code code\"\r\n );\r\n textToCopy = codeElement?.textContent || \"\";\r\n }\r\n\r\n if (!textToCopy) return;\r\n\r\n const copied = await copyText(textToCopy);\r\n if (!copied) return;\r\n\r\n await markCopyButtonCopied(copyButton);\r\n }\r\n\r\n destroy() {\r\n this.root.removeEventListener(\"click\", this.handleCopyClick);\r\n }\r\n}\r\n","class DGAMenuDropdown {\r\n constructor(options = {}) {\r\n this.navbar = options.navbar || document.querySelector(\".dga-navbar\");\r\n this.verifyBar = options.verifyBar || null;\r\n\r\n if (!this.navbar) {\r\n console.warn(\"DGA Navbar elements not found\");\r\n return;\r\n }\r\n\r\n this.navbarTop = this.navbar.getBoundingClientRect().top + window.scrollY;\r\n this.navbarHeight = this.navbar.getBoundingClientRect().height;\r\n this.menu = this.navbar.querySelector(\".dga-menu\");\r\n this.toggler = this.navbar.querySelector(\".dga-navbar-toggler\");\r\n this.menuItems = this.navbar.querySelectorAll(\".dga-menu-item.dga-has-dropdown\");\r\n\r\n if (!this.menu) {\r\n console.warn(\"DGA Menu element not found\");\r\n return;\r\n }\r\n\r\n this.boundToggleDropdown = (e) => this.toggleDropdown(e);\r\n this.boundToggleMobileMenu = (e) => this.toggleMobileMenu(e);\r\n this.boundCloseAllDropdowns = (e) => this.closeAllDropdowns(e);\r\n this.boundHandleResize = () => this.handleResize();\r\n this.boundHandleKeyboard = (e) => this.handleKeyboard(e);\r\n\r\n this.init();\r\n }\r\n\r\n get isActive() {\r\n return this.isMobileMenuOpen() || this.isNormalDropdownOpen();\r\n }\r\n\r\n init() {\r\n this.handleResize();\r\n this.bindEvents();\r\n }\r\n\r\n bindEvents() {\r\n // Dropdown menu items\r\n this.menuItems.forEach((item) => {\r\n item.addEventListener(\"click\", this.boundToggleDropdown);\r\n });\r\n\r\n // Mobile menu toggler\r\n this.toggler?.addEventListener(\"click\", this.boundToggleMobileMenu);\r\n\r\n // Close dropdowns when clicking outside\r\n document.addEventListener(\"click\", this.boundCloseAllDropdowns);\r\n\r\n // Handle window resize\r\n window.addEventListener(\"resize\", this.boundHandleResize);\r\n\r\n // Keyboard accessibility\r\n this.menuItems.forEach((item) => {\r\n item.addEventListener(\"keydown\", this.boundHandleKeyboard);\r\n });\r\n }\r\n\r\n toggleDropdown(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // Close verify bar when opening menu\r\n if (this.verifyBar && this.verifyBar.isOpen) {\r\n this.verifyBar.closePanel();\r\n }\r\n\r\n const menuItem = e.currentTarget;\r\n const listItem = menuItem.parentElement;\r\n const isActive = listItem.classList.contains(\"active\");\r\n\r\n // Close all other dropdowns\r\n this.closeAllDropdowns();\r\n\r\n // Toggle current dropdown\r\n if (!isActive) {\r\n listItem.classList.add(\"active\");\r\n menuItem.classList.add(\"dga-menu-item-selected\");\r\n menuItem.setAttribute(\"aria-expanded\", \"true\");\r\n\r\n listItem.querySelector(\".dga-dropdown\").style.top = `${this.navbarHeight + this.navbarTop\r\n }px`;\r\n }\r\n }\r\n\r\n toggleMobileMenu(e) {\r\n e.stopPropagation();\r\n\r\n // Close verify bar when opening menu\r\n if (this.verifyBar && this.verifyBar.isOpen) {\r\n this.verifyBar.closePanel();\r\n }\r\n\r\n this.menu.classList.toggle(\"dga-menu-open\");\r\n if (this.menu.classList.contains(\"dga-menu-open\")) {\r\n document.body.classList.add(\"no-scroll\");\r\n this.menu.style.height = `calc(100vh - ${this.navbarHeight}px - ${this.navbarTop}px)`;\r\n } else {\r\n document.body.classList.remove(\"no-scroll\");\r\n this.menu.style.height = `0px`;\r\n }\r\n this.menu.style.top = `${this.navbarTop + this.navbarHeight}px`;\r\n\r\n const isOpen = this.menu.classList.contains(\"dga-menu-open\");\r\n this.toggler.setAttribute(\"aria-expanded\", isOpen);\r\n this.toggler.setAttribute(\r\n \"aria-label\",\r\n isOpen ? \"Close menu\" : \"Open menu\"\r\n );\r\n }\r\n\r\n // Public method to close menu programmatically (without event)\r\n closeMenu() {\r\n // Close all dropdowns\r\n this.closeAllDropdowns();\r\n\r\n // Close mobile menu if open\r\n if (this.isMobileMenuOpen()) {\r\n this.menu.classList.remove(\"dga-menu-open\");\r\n document.body.classList.remove(\"no-scroll\");\r\n this.menu.style.height = `0px`;\r\n this.toggler.setAttribute(\"aria-expanded\", \"false\");\r\n this.toggler.setAttribute(\"aria-label\", \"Open menu\");\r\n }\r\n }\r\n\r\n closeAllDropdowns(e) {\r\n // Don't close if clicking inside dropdown content\r\n if (e && e.target.closest(\".dga-dropdown-content\")) {\r\n return;\r\n }\r\n\r\n const activeItems = this.navbar.querySelectorAll(\".dga-menu > li.active\");\r\n activeItems.forEach((item) => {\r\n item.classList.remove(\"active\");\r\n const menuItem = item.querySelector(\".dga-menu-item\");\r\n menuItem?.classList.remove(\"dga-menu-item-selected\");\r\n menuItem?.setAttribute(\"aria-expanded\", \"false\");\r\n });\r\n }\r\n\r\n handleKeyboard(e) {\r\n // Close dropdown on Escape\r\n if (e.key === \"Escape\") {\r\n this.closeAllDropdowns();\r\n e.currentTarget.focus();\r\n }\r\n\r\n // Toggle on Enter or Space\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n this.toggleDropdown(e);\r\n }\r\n }\r\n\r\n handleResize() {\r\n const width = window.innerWidth;\r\n\r\n // Remove size classes\r\n document.body.classList.remove(\r\n \"size_desktop\",\r\n \"size_tablet\",\r\n \"size_mobile\"\r\n );\r\n\r\n // Add appropriate size class\r\n if (width > 769) {\r\n document.body.classList.add(\"size_desktop\");\r\n this.closeAllDropdowns();\r\n this.menu.classList.remove(\"dga-menu-open\");\r\n document.body.classList.remove(\"no-scroll\");\r\n } else if (width <= 769 && width > 375) {\r\n document.body.classList.add(\"size_tablet\");\r\n } else {\r\n document.body.classList.add(\"size_mobile\");\r\n }\r\n }\r\n\r\n // Public method to destroy the component\r\n destroy() {\r\n this.menuItems.forEach((item) => {\r\n item.removeEventListener(\"click\", this.boundToggleDropdown);\r\n item.removeEventListener(\"keydown\", this.boundHandleKeyboard);\r\n });\r\n\r\n this.toggler?.removeEventListener(\"click\", this.boundToggleMobileMenu);\r\n document.removeEventListener(\"click\", this.boundCloseAllDropdowns);\r\n window.removeEventListener(\"resize\", this.boundHandleResize);\r\n }\r\n\r\n isMobileMenuOpen() {\r\n return this.menu?.classList.contains(\"dga-menu-open\");\r\n }\r\n\r\n isNormalDropdownOpen() {\r\n return this.navbar.querySelectorAll(\".dga-menu > li.active\").length > 0;\r\n }\r\n}\r\n\r\nexport default DGAMenuDropdown;\r\n","export default class DGAVerifyBar {\r\n constructor(options = {}) {\r\n this.isOpen = false;\r\n this.verifyBar = document.getElementById(\"dga-verify-bar\");\r\n this.menu = options.menu || null; // Fixed typo: was \"mneu\"\r\n\r\n this.btn = document.getElementById(\"dga-verifyBtn\");\r\n this.content = document.getElementById(\"dga-verify-bar_content\");\r\n this.boundToggle = () => {\r\n if (this.isOpen) {\r\n this.closePanel();\r\n } else {\r\n this.openPanel();\r\n }\r\n };\r\n\r\n if (!this.verifyBar || !this.btn || !this.content) {\r\n console.warn(\"DGA Verify Bar elements not found\");\r\n return;\r\n }\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.btn.addEventListener(\"click\", this.boundToggle);\r\n }\r\n\r\n openPanel() {\r\n // Close menu if it's open\r\n if (this.menu && this.menu.isActive) {\r\n this.menu.closeMenu(); // Use the new public method\r\n }\r\n\r\n this.content.style.display = \"flex\";\r\n this.isOpen = true;\r\n this.verifyBar.classList.add(\"opend\");\r\n this.verifyBar.classList.remove(\"closed\");\r\n }\r\n\r\n closePanel() {\r\n this.content.style.display = \"none\";\r\n this.isOpen = false;\r\n this.verifyBar.classList.add(\"closed\");\r\n this.verifyBar.classList.remove(\"opend\");\r\n }\r\n\r\n destroy() {\r\n this.btn?.removeEventListener(\"click\", this.boundToggle);\r\n }\r\n}\r\n","export function escapeHtml(value = \"\") {\r\n return String(value)\r\n .replace(/&/g, \"&amp;\")\r\n .replace(/</g, \"&lt;\")\r\n .replace(/>/g, \"&gt;\")\r\n .replace(/\"/g, \"&quot;\")\r\n .replace(/'/g, \"&#39;\");\r\n}\r\n","import { escapeHtml } from \"./shared/escape-html.js\";\r\n\r\nconst DEFAULT_VARIANT = \"info-color\";\r\n\r\nclass DGAAlertElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\"variant\", \"title\", \"dismissible\"];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._boundDismiss = this._handleDismiss.bind(this);\r\n }\r\n\r\n connectedCallback() {\r\n this._scheduleInitialRender();\r\n }\r\n\r\n _scheduleInitialRender() {\r\n // Frameworks (Vue/React) may inject child content after connect.\r\n requestAnimationFrame(() => {\r\n this._captureBodyContent();\r\n this._render();\r\n });\r\n }\r\n\r\n _captureBodyContent() {\r\n if (this._bodyContent || this.querySelector(\".dga-alert-content\")) {\r\n return;\r\n }\r\n\r\n const html = this.innerHTML.trim();\r\n if (html) {\r\n this._bodyContent = html;\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this._closeButton?.removeEventListener(\"click\", this._boundDismiss);\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const variant = this.getAttribute(\"variant\") || DEFAULT_VARIANT;\r\n const title = this.getAttribute(\"title\") || \"\";\r\n const dismissible = this.hasAttribute(\"dismissible\");\r\n const body = this._bodyContent || \"\";\r\n\r\n this.className = \"dga-alert\";\r\n this.setAttribute(\"data-variant\", variant);\r\n\r\n const titleHtml = title\r\n ? `<h4 class=\"dga-alert-title\">${escapeHtml(title)}</h4>`\r\n : \"\";\r\n\r\n const closeHtml = dismissible\r\n ? `<button class=\"dga-alert-close\" type=\"button\" data-alert-close aria-label=\"Dismiss alert\">×</button>`\r\n : \"\";\r\n\r\n this.innerHTML = `\r\n <span class=\"dga-alert-icon\" aria-hidden=\"true\"></span>\r\n <div class=\"dga-alert-content\">\r\n ${titleHtml}\r\n <div class=\"dga-alert-body\">${body}</div>\r\n </div>\r\n ${closeHtml}\r\n `;\r\n\r\n this._closeButton = this.querySelector(\"[data-alert-close]\");\r\n this._closeButton?.removeEventListener(\"click\", this._boundDismiss);\r\n this._closeButton?.addEventListener(\"click\", this._boundDismiss);\r\n }\r\n\r\n _handleDismiss() {\r\n this.style.display = \"none\";\r\n this.dispatchEvent(\r\n new CustomEvent(\"dga-alert-dismiss\", { bubbles: true, composed: true })\r\n );\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-alert\", DGAAlertElement);\r\n","import { AccordionController } from \"./shared/accordion-controller.js\";\r\nimport { escapeHtml } from \"./shared/escape-html.js\";\r\n\r\nclass DGAAccordionItemElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\"title\", \"size\", \"open\"];\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._bodyContent) {\r\n this._bodyContent = this.innerHTML.trim();\r\n }\r\n this._render();\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const title = this.getAttribute(\"title\") || \"\";\r\n const size = this.getAttribute(\"size\") || \"md\";\r\n const isOpen = this.hasAttribute(\"open\");\r\n const body = this._bodyContent || \"\";\r\n\r\n this.innerHTML = `\r\n <div class=\"dga-acc-item${isOpen ? \" dga-acc-item--active\" : \"\"}\">\r\n <button class=\"dga-acc-header\" data-size=\"${escapeHtml(size)}\" aria-expanded=\"${isOpen ? \"true\" : \"false\"}\">\r\n <span>${escapeHtml(title)}</span>\r\n </button>\r\n <div class=\"dga-acc-content\">\r\n <div class=\"dga-acc-body\">${body}</div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\nclass DGAAccordionElement extends HTMLElement {\r\n constructor() {\r\n super();\r\n this._controller = null;\r\n }\r\n\r\n connectedCallback() {\r\n this.classList.add(\"dga-acc\");\r\n this._controller?.destroy();\r\n this._controller = new AccordionController(this);\r\n }\r\n\r\n disconnectedCallback() {\r\n this._controller?.destroy();\r\n this._controller = null;\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-accordion-item\", DGAAccordionItemElement);\r\ncustomElements.define(\"dga-accordion\", DGAAccordionElement);\r\n","import {\r\n COPY_ICON_SVG,\r\n copyText,\r\n markCopyButtonCopied,\r\n} from \"./shared/copy-text.js\";\r\nimport { escapeHtml } from \"./shared/escape-html.js\";\r\n\r\nclass DGACodeSnippetElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\"code\", \"multiline\"];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._boundCopy = this._handleCopy.bind(this);\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._codeContent) {\r\n this._codeContent =\r\n this.getAttribute(\"code\")?.trim() || this.textContent?.trim() || \"\";\r\n }\r\n this._render();\r\n }\r\n\r\n disconnectedCallback() {\r\n this._copyButton?.removeEventListener(\"click\", this._boundCopy);\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const isMultiline = this.hasAttribute(\"multiline\");\r\n const code =\r\n this.getAttribute(\"code\")?.trim() || this._codeContent || \"\";\r\n\r\n if (isMultiline) {\r\n this.innerHTML = `\r\n <div class=\"dga-code-snippet-multiline\">\r\n <div class=\"dga-code-snippet-multiline__body\">\r\n <pre class=\"dga-code-snippet-multiline__code\"><code>${escapeHtml(code)}</code></pre>\r\n <button type=\"button\" class=\"dga-code-snippet-multiline__copy\" aria-label=\"Copy code\" data-copied=\"false\">\r\n ${COPY_ICON_SVG}\r\n </button>\r\n </div>\r\n </div>\r\n `;\r\n this._copyButton = this.querySelector(\".dga-code-snippet-multiline__copy\");\r\n } else {\r\n this.innerHTML = `\r\n <div class=\"dga-code-snippet-inline\">\r\n <div class=\"dga-code-snippet-inline__content\">${escapeHtml(code)}</div>\r\n <button type=\"button\" class=\"dga-code-snippet-inline__copy\" aria-label=\"Copy code\" data-copied=\"false\">\r\n ${COPY_ICON_SVG}\r\n </button>\r\n </div>\r\n `;\r\n this._copyButton = this.querySelector(\".dga-code-snippet-inline__copy\");\r\n }\r\n\r\n this._copyButton?.removeEventListener(\"click\", this._boundCopy);\r\n this._copyButton?.addEventListener(\"click\", this._boundCopy);\r\n }\r\n\r\n async _handleCopy() {\r\n const code = this.getAttribute(\"code\")?.trim() || this._codeContent || \"\";\r\n if (!code || !this._copyButton) return;\r\n\r\n const copied = await copyText(code);\r\n if (!copied) return;\r\n\r\n await markCopyButtonCopied(this._copyButton);\r\n this.dispatchEvent(\r\n new CustomEvent(\"dga-code-copy\", { bubbles: true, composed: true })\r\n );\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-code-snippet\", DGACodeSnippetElement);\r\n","import {\r\n parseChartDataAttribute,\r\n renderPieChart,\r\n} from \"./shared/pie-chart.js\";\r\n\r\nclass DGAPieChartElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\"data\", \"hole\"];\r\n }\r\n\r\n connectedCallback() {\r\n this._render();\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const chartData = parseChartDataAttribute(this.getAttribute(\"data\"));\r\n const hole =\r\n this.hasAttribute(\"hole\") && this.getAttribute(\"hole\") !== \"false\";\r\n\r\n renderPieChart(this, chartData, { hole });\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-pie-chart\", DGAPieChartElement);\r\n","import { escapeHtml } from \"./shared/escape-html.js\";\r\n\r\nconst DEFAULT_ASSETS = {\r\n \"flag-src\": \"saudiFlag.svg\",\r\n \"link-icon-src\": \"link-icon.svg\",\r\n \"lock-icon-src\": \"square-lock-password.svg\",\r\n \"logo-src\": \"DGA-logo-icon.svg\",\r\n};\r\n\r\nclass DGAVerifyBarElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\r\n \"registration-number\",\r\n \"registration-link\",\r\n \"domain\",\r\n \"assets-base\",\r\n \"flag-src\",\r\n \"link-icon-src\",\r\n \"lock-icon-src\",\r\n \"logo-src\",\r\n ];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.isOpen = false;\r\n this._btn = null;\r\n this._content = null;\r\n this._wrapper = null;\r\n this._boundToggle = () => (this.isOpen ? this._close() : this._open());\r\n }\r\n\r\n connectedCallback() {\r\n this._render();\r\n }\r\n\r\n disconnectedCallback() {\r\n this._btn?.removeEventListener(\"click\", this._boundToggle);\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const regNumber = escapeHtml(\r\n this.getAttribute(\"registration-number\") || \"20250105758\",\r\n );\r\n const regLinkRaw =\r\n this.getAttribute(\"registration-link\") ||\r\n \"https://raqmi.dga.gov.sa/platforms/platforms/9ebc5e60-9081-4653-bfb9-08dd2a2f8633/platform-license\";\r\n const regLink = escapeHtml(this._normalizeLink(regLinkRaw));\r\n const domain = escapeHtml(this.getAttribute(\"domain\") || \".edu.sa\");\r\n\r\n const flagSrc = escapeHtml(this._imageSrc(\"flag-src\"));\r\n const linkIconSrc = escapeHtml(this._imageSrc(\"link-icon-src\"));\r\n const lockIconSrc = escapeHtml(this._imageSrc(\"lock-icon-src\"));\r\n const logoSrc = escapeHtml(this._imageSrc(\"logo-src\"));\r\n\r\n this.innerHTML = `\r\n <div id=\"dga-verify-bar\" class=\"dga-bg-gray-100 closed\">\r\n <div class=\"dga-container dga-py-2\">\r\n <div id=\"dga-verify-bar_bar\" class=\"dga-row\">\r\n <div class=\"dga-col\">\r\n <div class=\"dga-d-flex dga-align-items-center dga-gap-2\">\r\n <span><img src=\"${flagSrc}\" alt=\"علم المملكة العربية السعودية\" /></span>\r\n <span class=\"dga-text-sm\">موقع حكومي رسمي تابع لحكومة المملكة العربية السعودية</span>\r\n <span>\r\n <button id=\"dga-verifyBtn\" class=\"dga-btn dga-btn-subtle dga-text-primary-500\" data-verify-toggle aria-expanded=\"false\">\r\n كيف تتحقق\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"dga-verify-bar_content\" class=\"dga-row dga-pt-10 dga-pb-8\" data-verify-content style=\"display: ${this.isOpen ? \"flex\" : \"none\"};\">\r\n <div class=\"dga-col-md-6 dga-pb-8\">\r\n <div class=\"dga-d-flex dga-gap-4\">\r\n <div><img src=\"${linkIconSrc}\" alt=\"\" /></div>\r\n <div class=\"dga-w-full dga-d-flex dga-flex-col dga-gap-2\">\r\n <h3 class=\"dga-text-xl dga-fw-bold\">\r\n روابط المواقع الالكترونية الرسمية السعودية تنتهي بـ\r\n <span class=\"dga-text-primary-500\">${domain}</span>\r\n </h3>\r\n <p>\r\n جميع روابط المواقع الرسمية التابعة للجهات الحكومية في المملكة\r\n العربية السعودية تنتهي بـ ${domain}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dga-col-md-6 dga-pb-8\">\r\n <div class=\"dga-d-flex dga-gap-4\">\r\n <div><img src=\"${lockIconSrc}\" alt=\"\" /></div>\r\n <div class=\"dga-w-full dga-d-flex dga-flex-col dga-gap-2\">\r\n <h3 class=\"dga-text-xl dga-fw-bold\">\r\n المواقع الالكترونية الحكومية تستخدم بروتوكول\r\n <span class=\"dga-text-primary-500\">HTTPS</span> للتشفير و الأمان.\r\n </h3>\r\n <p>\r\n المواقع الالكترونية الآمنة في المملكة العربية السعودية تستخدم\r\n بروتوكول HTTPS للتشفير.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dga-col-12\">\r\n <div class=\"dga-d-flex dga-align-items-center dga-gap-3 dga-bg-white dga-text-md dga-rounded-md dga-py-2 dga-px-7\">\r\n <img src=\"${logoSrc}\" alt=\"شعار هيئة الحكومة الرقمية\" />\r\n مسجل لدى هيئة الحكومة الرقمية برقم :\r\n <a href=\"${regLink}\" class=\"dga-link\">${regNumber}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n\r\n this._btn?.removeEventListener(\"click\", this._boundToggle);\r\n this._wrapper = this.querySelector(\"#dga-verify-bar\");\r\n this._btn = this.querySelector(\"[data-verify-toggle]\");\r\n this._content = this.querySelector(\"[data-verify-content]\");\r\n this._btn?.addEventListener(\"click\", this._boundToggle);\r\n }\r\n\r\n _imageSrc(attributeName) {\r\n const override = this.getAttribute(attributeName);\r\n if (override) return override;\r\n\r\n const defaultFile = DEFAULT_ASSETS[attributeName];\r\n const base = this.getAttribute(\"assets-base\") || \"/\";\r\n const normalizedBase = base.endsWith(\"/\") ? base : `${base}/`;\r\n\r\n return `${normalizedBase}${defaultFile}`;\r\n }\r\n\r\n _open() {\r\n this._content.style.display = \"flex\";\r\n this.isOpen = true;\r\n this._btn?.setAttribute(\"aria-expanded\", \"true\");\r\n this._wrapper?.classList.replace(\"closed\", \"opend\");\r\n }\r\n\r\n _close() {\r\n this._content.style.display = \"none\";\r\n this.isOpen = false;\r\n this._btn?.setAttribute(\"aria-expanded\", \"false\");\r\n this._wrapper?.classList.replace(\"opend\", \"closed\");\r\n }\r\n\r\n _normalizeLink(value) {\r\n try {\r\n return new URL(value, window.location.href).href;\r\n } catch {\r\n return \"#\";\r\n }\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-verify-bar\", DGAVerifyBarElement);\r\n","import \"./dga-alert.js\";\r\nimport \"./dga-accordion.js\";\r\nimport \"./dga-code-snippet.js\";\r\nimport \"./dga-pie-chart.js\";\r\nimport \"./dga-verify-bar.js\";\r\n\r\nexport const DGA_WEB_COMPONENTS_REGISTERED = true;\r\n"],"names":["AccordionController","root","event","header","item","DGAAccordion","element","DGAAlert","closeButton","alert","resolveChartColor","color","generateChartGradient","data","segment","generateChartLabelsHtml","parseChartDataAttribute","value","parsed","renderPieChart","hole","DGAChart","copyText","text","textarea","success","COPY_ICON_SVG","markCopyButtonCopied","copyButton","resetMs","previousLabel","DGACodeSnippet","inlineSnippet","multilineSnippet","textToCopy","DGAMenuDropdown","options","e","menuItem","listItem","isActive","isOpen","width","DGAVerifyBar","escapeHtml","DEFAULT_VARIANT","DGAAlertElement","html","variant","title","dismissible","body","titleHtml","closeHtml","DGAAccordionItemElement","size","DGAAccordionElement","DGACodeSnippetElement","isMultiline","code","DGAPieChartElement","chartData","DEFAULT_ASSETS","DGAVerifyBarElement","regNumber","regLinkRaw","regLink","domain","flagSrc","linkIconSrc","lockIconSrc","logoSrc","attributeName","override","defaultFile","base","DGA_WEB_COMPONENTS_REGISTERED"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/scripts/shared/accordion-controller.js","../src/scripts/accordion.js","../src/scripts/alert.js","../src/scripts/shared/pie-chart.js","../src/scripts/chart.js","../src/scripts/shared/copy-text.js","../src/scripts/codeSnippet.js","../src/scripts/dropdownMenu.js","../src/scripts/verifyBar.js","../src/scripts/shared/escape-html.js","../src/scripts/dga-alert.js","../src/scripts/dga-accordion.js","../src/scripts/dga-code-snippet.js","../src/scripts/dga-pie-chart.js","../src/scripts/dga-verify-bar.js","../src/scripts/register-web-components.js"],"sourcesContent":["export class AccordionController {\r\n constructor(root) {\r\n this.root = root;\r\n this.handleClick = this.handleClick.bind(this);\r\n this.handleKeydown = this.handleKeydown.bind(this);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.root.addEventListener(\"click\", this.handleClick);\r\n this.root.addEventListener(\"keydown\", this.handleKeydown);\r\n }\r\n\r\n handleClick(event) {\r\n const header = event.target.closest(\".dga-acc-header\");\r\n if (header && this.root.contains(header)) {\r\n this.toggle(header);\r\n }\r\n }\r\n\r\n handleKeydown(event) {\r\n const header = event.target.closest(\".dga-acc-header\");\r\n if (!header || !this.root.contains(header)) return;\r\n\r\n if (event.key === \"Enter\" || event.key === \" \") {\r\n event.preventDefault();\r\n this.toggle(header);\r\n }\r\n }\r\n\r\n toggle(header) {\r\n const item = header.parentElement;\r\n if (!item) return;\r\n\r\n if (item.classList.contains(\"dga-acc-item--active\")) {\r\n this.close(item);\r\n } else {\r\n this.open(item);\r\n }\r\n }\r\n\r\n open(item) {\r\n item.classList.add(\"dga-acc-item--active\");\r\n item.querySelector(\".dga-acc-header\")?.setAttribute(\"aria-expanded\", \"true\");\r\n }\r\n\r\n close(item) {\r\n item.classList.remove(\"dga-acc-item--active\");\r\n item.querySelector(\".dga-acc-header\")?.setAttribute(\"aria-expanded\", \"false\");\r\n }\r\n\r\n closeAll() {\r\n this.root.querySelectorAll(\".dga-acc-item\").forEach((item) => {\r\n this.close(item);\r\n });\r\n }\r\n\r\n destroy() {\r\n this.root.removeEventListener(\"click\", this.handleClick);\r\n this.root.removeEventListener(\"keydown\", this.handleKeydown);\r\n }\r\n}\r\n","import { AccordionController } from \"./shared/accordion-controller.js\";\r\n\r\nexport default class DGAAccordion {\r\n constructor(element) {\r\n this.accordion = element;\r\n this.controller = new AccordionController(element);\r\n }\r\n\r\n toggle(header) {\r\n this.controller.toggle(header);\r\n }\r\n\r\n open(item) {\r\n this.controller.open(item);\r\n }\r\n\r\n close(item) {\r\n this.controller.close(item);\r\n }\r\n\r\n closeAll() {\r\n this.controller.closeAll();\r\n }\r\n\r\n destroy() {\r\n this.controller.destroy();\r\n }\r\n}\r\n","export default class DGAAlert {\r\n constructor(root = document) {\r\n this.root = root;\r\n this.handleCloseClick = this.handleCloseClick.bind(this);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.root.addEventListener(\"click\", this.handleCloseClick);\r\n }\r\n\r\n handleCloseClick(event) {\r\n const closeButton = event.target.closest(\"[data-alert-close]\");\r\n if (!closeButton) {\r\n return;\r\n }\r\n\r\n const alert = closeButton.closest(\".dga-alert\");\r\n if (alert) {\r\n alert.style.display = \"none\";\r\n }\r\n }\r\n\r\n destroy() {\r\n this.root.removeEventListener(\"click\", this.handleCloseClick);\r\n }\r\n}\r\n","export function resolveChartColor(color) {\r\n if (color.startsWith(\"#\") || color.startsWith(\"var(\")) {\r\n return color;\r\n }\r\n return `var(--${color})`;\r\n}\r\n\r\nexport function generateChartGradient(data = []) {\r\n const gradientParts = data.map(\r\n (segment) =>\r\n `${resolveChartColor(segment.color)} ${segment.from} ${segment.to}`\r\n );\r\n return `conic-gradient(${gradientParts.join(\", \")})`;\r\n}\r\n\r\nexport function generateChartLabelsHtml(data = []) {\r\n const labels = data\r\n .map(\r\n (segment) =>\r\n `<span class=\"dga-pie-chart__label\"><span class=\"dga-pie-chart__circle\" style=\"background-color: ${resolveChartColor(\r\n segment.color\r\n )}\"></span>${segment.label}</span>`\r\n )\r\n .join(\"\");\r\n\r\n return `<div class=\"dga-pie-chart__labels\">${labels}</div>`;\r\n}\r\n\r\nexport function parseChartDataAttribute(value) {\r\n if (!value) return [];\r\n\r\n try {\r\n const parsed = JSON.parse(value);\r\n return Array.isArray(parsed) ? parsed : [];\r\n } catch {\r\n console.warn(\"dga-pie-chart: invalid data attribute JSON\");\r\n return [];\r\n }\r\n}\r\n\r\nexport function renderPieChart(element, data = [], { hole = false } = {}) {\r\n if (!element) return;\r\n\r\n element.classList.add(\"dga-pie-chart\");\r\n element.setAttribute(\"data-hole\", hole ? \"true\" : \"false\");\r\n element.style.background = generateChartGradient(data);\r\n element.innerHTML = generateChartLabelsHtml(data);\r\n}\r\n","import {\r\n generateChartGradient,\r\n generateChartLabelsHtml,\r\n renderPieChart,\r\n} from \"./shared/pie-chart.js\";\r\n\r\nexport default class DGAChart {\r\n constructor(element, data = []) {\r\n this.chart = element;\r\n this.data = data;\r\n this.init();\r\n }\r\n\r\n init() {\r\n const hole = this.chart.getAttribute(\"data-hole\") === \"true\";\r\n renderPieChart(this.chart, this.data, { hole });\r\n }\r\n\r\n generateGradient() {\r\n return generateChartGradient(this.data);\r\n }\r\n\r\n generateLabels() {\r\n return generateChartLabelsHtml(this.data);\r\n }\r\n}\r\n","export async function copyText(text) {\r\n try {\r\n if (navigator.clipboard?.writeText) {\r\n await navigator.clipboard.writeText(text);\r\n return true;\r\n }\r\n } catch (_error) {\r\n // Fallback below for restricted clipboard environments.\r\n }\r\n\r\n const textarea = document.createElement(\"textarea\");\r\n textarea.value = text;\r\n textarea.setAttribute(\"readonly\", \"\");\r\n textarea.style.position = \"absolute\";\r\n textarea.style.left = \"-9999px\";\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n const success = document.execCommand(\"copy\");\r\n document.body.removeChild(textarea);\r\n return success;\r\n}\r\n\r\nexport const COPY_ICON_SVG = `<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" stroke-width=\"1.75\"></rect>\r\n <path d=\"M6 15H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v1\" stroke-width=\"1.75\" stroke-linecap=\"round\"></path>\r\n</svg>`;\r\n\r\nexport async function markCopyButtonCopied(copyButton, resetMs = 1200) {\r\n const previousLabel = copyButton.getAttribute(\"aria-label\") || \"Copy code\";\r\n copyButton.setAttribute(\"aria-label\", \"Copied\");\r\n copyButton.setAttribute(\"data-copied\", \"true\");\r\n\r\n window.setTimeout(() => {\r\n copyButton.setAttribute(\"aria-label\", previousLabel);\r\n copyButton.setAttribute(\"data-copied\", \"false\");\r\n }, resetMs);\r\n}\r\n","import { copyText, markCopyButtonCopied } from \"./shared/copy-text.js\";\r\n\r\nexport default class DGACodeSnippet {\r\n constructor(root = document) {\r\n this.root = root;\r\n this.handleCopyClick = this.handleCopyClick.bind(this);\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.root.addEventListener(\"click\", this.handleCopyClick);\r\n }\r\n\r\n async handleCopyClick(event) {\r\n const copyButton = event.target.closest(\r\n \".dga-code-snippet-inline__copy, .dga-code-snippet-multiline__copy\"\r\n );\r\n if (!copyButton) return;\r\n\r\n const inlineSnippet = copyButton.closest(\".dga-code-snippet-inline\");\r\n const multilineSnippet = copyButton.closest(\".dga-code-snippet-multiline\");\r\n\r\n let textToCopy = \"\";\r\n if (inlineSnippet) {\r\n const codeElement = inlineSnippet.querySelector(\r\n \".dga-code-snippet-inline__content\"\r\n );\r\n textToCopy = codeElement?.textContent?.trim() || \"\";\r\n } else if (multilineSnippet) {\r\n const codeElement = multilineSnippet.querySelector(\r\n \".dga-code-snippet-multiline__code code\"\r\n );\r\n textToCopy = codeElement?.textContent || \"\";\r\n }\r\n\r\n if (!textToCopy) return;\r\n\r\n const copied = await copyText(textToCopy);\r\n if (!copied) return;\r\n\r\n await markCopyButtonCopied(copyButton);\r\n }\r\n\r\n destroy() {\r\n this.root.removeEventListener(\"click\", this.handleCopyClick);\r\n }\r\n}\r\n","class DGAMenuDropdown {\r\n constructor(options = {}) {\r\n this.navbar = options.navbar || document.querySelector(\".dga-navbar\");\r\n this.verifyBar = options.verifyBar || null;\r\n\r\n if (!this.navbar) {\r\n console.warn(\"DGA Navbar elements not found\");\r\n return;\r\n }\r\n\r\n this.navbarTop = this.navbar.getBoundingClientRect().top + window.scrollY;\r\n this.navbarHeight = this.navbar.getBoundingClientRect().height;\r\n this.menu = this.navbar.querySelector(\".dga-menu\");\r\n this.toggler = this.navbar.querySelector(\".dga-navbar-toggler\");\r\n this.menuItems = this.navbar.querySelectorAll(\".dga-menu-item.dga-has-dropdown\");\r\n\r\n if (!this.menu) {\r\n console.warn(\"DGA Menu element not found\");\r\n return;\r\n }\r\n\r\n this.boundToggleDropdown = (e) => this.toggleDropdown(e);\r\n this.boundToggleMobileMenu = (e) => this.toggleMobileMenu(e);\r\n this.boundCloseAllDropdowns = (e) => this.closeAllDropdowns(e);\r\n this.boundHandleResize = () => this.handleResize();\r\n this.boundHandleKeyboard = (e) => this.handleKeyboard(e);\r\n\r\n this.init();\r\n }\r\n\r\n get isActive() {\r\n return this.isMobileMenuOpen() || this.isNormalDropdownOpen();\r\n }\r\n\r\n init() {\r\n this.handleResize();\r\n this.bindEvents();\r\n }\r\n\r\n bindEvents() {\r\n // Dropdown menu items\r\n this.menuItems.forEach((item) => {\r\n item.addEventListener(\"click\", this.boundToggleDropdown);\r\n });\r\n\r\n // Mobile menu toggler\r\n this.toggler?.addEventListener(\"click\", this.boundToggleMobileMenu);\r\n\r\n // Close dropdowns when clicking outside\r\n document.addEventListener(\"click\", this.boundCloseAllDropdowns);\r\n\r\n // Handle window resize\r\n window.addEventListener(\"resize\", this.boundHandleResize);\r\n\r\n // Keyboard accessibility\r\n this.menuItems.forEach((item) => {\r\n item.addEventListener(\"keydown\", this.boundHandleKeyboard);\r\n });\r\n }\r\n\r\n toggleDropdown(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // Close verify bar when opening menu\r\n if (this.verifyBar && this.verifyBar.isOpen) {\r\n this.verifyBar.closePanel();\r\n }\r\n\r\n const menuItem = e.currentTarget;\r\n const listItem = menuItem.parentElement;\r\n const isActive = listItem.classList.contains(\"active\");\r\n\r\n // Close all other dropdowns\r\n this.closeAllDropdowns();\r\n\r\n // Toggle current dropdown\r\n if (!isActive) {\r\n listItem.classList.add(\"active\");\r\n menuItem.classList.add(\"dga-menu-item-selected\");\r\n menuItem.setAttribute(\"aria-expanded\", \"true\");\r\n\r\n listItem.querySelector(\".dga-dropdown\").style.top = `${this.navbarHeight + this.navbarTop\r\n }px`;\r\n }\r\n }\r\n\r\n toggleMobileMenu(e) {\r\n e.stopPropagation();\r\n\r\n // Close verify bar when opening menu\r\n if (this.verifyBar && this.verifyBar.isOpen) {\r\n this.verifyBar.closePanel();\r\n }\r\n\r\n this.menu.classList.toggle(\"dga-menu-open\");\r\n if (this.menu.classList.contains(\"dga-menu-open\")) {\r\n document.body.classList.add(\"no-scroll\");\r\n this.menu.style.height = `calc(100vh - ${this.navbarHeight}px - ${this.navbarTop}px)`;\r\n } else {\r\n document.body.classList.remove(\"no-scroll\");\r\n this.menu.style.height = `0px`;\r\n }\r\n this.menu.style.top = `${this.navbarTop + this.navbarHeight}px`;\r\n\r\n const isOpen = this.menu.classList.contains(\"dga-menu-open\");\r\n this.toggler.setAttribute(\"aria-expanded\", isOpen);\r\n this.toggler.setAttribute(\r\n \"aria-label\",\r\n isOpen ? \"Close menu\" : \"Open menu\"\r\n );\r\n }\r\n\r\n // Public method to close menu programmatically (without event)\r\n closeMenu() {\r\n // Close all dropdowns\r\n this.closeAllDropdowns();\r\n\r\n // Close mobile menu if open\r\n if (this.isMobileMenuOpen()) {\r\n this.menu.classList.remove(\"dga-menu-open\");\r\n document.body.classList.remove(\"no-scroll\");\r\n this.menu.style.height = `0px`;\r\n this.toggler.setAttribute(\"aria-expanded\", \"false\");\r\n this.toggler.setAttribute(\"aria-label\", \"Open menu\");\r\n }\r\n }\r\n\r\n closeAllDropdowns(e) {\r\n // Don't close if clicking inside dropdown content\r\n if (e && e.target.closest(\".dga-dropdown-content\")) {\r\n return;\r\n }\r\n\r\n const activeItems = this.navbar.querySelectorAll(\".dga-menu > li.active\");\r\n activeItems.forEach((item) => {\r\n item.classList.remove(\"active\");\r\n const menuItem = item.querySelector(\".dga-menu-item\");\r\n menuItem?.classList.remove(\"dga-menu-item-selected\");\r\n menuItem?.setAttribute(\"aria-expanded\", \"false\");\r\n });\r\n }\r\n\r\n handleKeyboard(e) {\r\n // Close dropdown on Escape\r\n if (e.key === \"Escape\") {\r\n this.closeAllDropdowns();\r\n e.currentTarget.focus();\r\n }\r\n\r\n // Toggle on Enter or Space\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n this.toggleDropdown(e);\r\n }\r\n }\r\n\r\n handleResize() {\r\n const width = window.innerWidth;\r\n\r\n // Remove size classes\r\n document.body.classList.remove(\r\n \"size_desktop\",\r\n \"size_tablet\",\r\n \"size_mobile\"\r\n );\r\n\r\n // Add appropriate size class\r\n if (width > 769) {\r\n document.body.classList.add(\"size_desktop\");\r\n this.closeAllDropdowns();\r\n this.menu.classList.remove(\"dga-menu-open\");\r\n document.body.classList.remove(\"no-scroll\");\r\n } else if (width <= 769 && width > 375) {\r\n document.body.classList.add(\"size_tablet\");\r\n } else {\r\n document.body.classList.add(\"size_mobile\");\r\n }\r\n }\r\n\r\n // Public method to destroy the component\r\n destroy() {\r\n this.menuItems.forEach((item) => {\r\n item.removeEventListener(\"click\", this.boundToggleDropdown);\r\n item.removeEventListener(\"keydown\", this.boundHandleKeyboard);\r\n });\r\n\r\n this.toggler?.removeEventListener(\"click\", this.boundToggleMobileMenu);\r\n document.removeEventListener(\"click\", this.boundCloseAllDropdowns);\r\n window.removeEventListener(\"resize\", this.boundHandleResize);\r\n }\r\n\r\n isMobileMenuOpen() {\r\n return this.menu?.classList.contains(\"dga-menu-open\");\r\n }\r\n\r\n isNormalDropdownOpen() {\r\n return this.navbar.querySelectorAll(\".dga-menu > li.active\").length > 0;\r\n }\r\n}\r\n\r\nexport default DGAMenuDropdown;\r\n","export default class DGAVerifyBar {\r\n constructor(options = {}) {\r\n this.isOpen = false;\r\n this.verifyBar = document.getElementById(\"dga-verify-bar\");\r\n this.menu = options.menu || null; // Fixed typo: was \"mneu\"\r\n\r\n this.btn = document.getElementById(\"dga-verifyBtn\");\r\n this.content = document.getElementById(\"dga-verify-bar_content\");\r\n this.boundToggle = () => {\r\n if (this.isOpen) {\r\n this.closePanel();\r\n } else {\r\n this.openPanel();\r\n }\r\n };\r\n\r\n if (!this.verifyBar || !this.btn || !this.content) {\r\n console.warn(\"DGA Verify Bar elements not found\");\r\n return;\r\n }\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.btn.addEventListener(\"click\", this.boundToggle);\r\n }\r\n\r\n openPanel() {\r\n // Close menu if it's open\r\n if (this.menu && this.menu.isActive) {\r\n this.menu.closeMenu(); // Use the new public method\r\n }\r\n\r\n this.content.style.display = \"flex\";\r\n this.isOpen = true;\r\n this.verifyBar.classList.add(\"opend\");\r\n this.verifyBar.classList.remove(\"closed\");\r\n }\r\n\r\n closePanel() {\r\n this.content.style.display = \"none\";\r\n this.isOpen = false;\r\n this.verifyBar.classList.add(\"closed\");\r\n this.verifyBar.classList.remove(\"opend\");\r\n }\r\n\r\n destroy() {\r\n this.btn?.removeEventListener(\"click\", this.boundToggle);\r\n }\r\n}\r\n","export function escapeHtml(value = \"\") {\r\n return String(value)\r\n .replace(/&/g, \"&amp;\")\r\n .replace(/</g, \"&lt;\")\r\n .replace(/>/g, \"&gt;\")\r\n .replace(/\"/g, \"&quot;\")\r\n .replace(/'/g, \"&#39;\");\r\n}\r\n","import { escapeHtml } from \"./shared/escape-html.js\";\r\n\r\nconst DEFAULT_VARIANT = \"info-color\";\r\n\r\nclass DGAAlertElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\"variant\", \"title\", \"dismissible\"];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._boundDismiss = this._handleDismiss.bind(this);\r\n }\r\n\r\n connectedCallback() {\r\n this._scheduleInitialRender();\r\n }\r\n\r\n _scheduleInitialRender() {\r\n // Frameworks (Vue/React) may inject child content after connect.\r\n requestAnimationFrame(() => {\r\n this._captureBodyContent();\r\n this._render();\r\n });\r\n }\r\n\r\n _captureBodyContent() {\r\n if (this._bodyContent || this.querySelector(\".dga-alert-content\")) {\r\n return;\r\n }\r\n\r\n const html = this.innerHTML.trim();\r\n if (html) {\r\n this._bodyContent = html;\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this._closeButton?.removeEventListener(\"click\", this._boundDismiss);\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const variant = this.getAttribute(\"variant\") || DEFAULT_VARIANT;\r\n const title = this.getAttribute(\"title\") || \"\";\r\n const dismissible = this.hasAttribute(\"dismissible\");\r\n const body = this._bodyContent || \"\";\r\n\r\n this.classList.add(\"dga-alert\");\r\n this.setAttribute(\"data-variant\", variant);\r\n\r\n const titleHtml = title\r\n ? `<h4 class=\"dga-alert-title\">${escapeHtml(title)}</h4>`\r\n : \"\";\r\n\r\n const closeHtml = dismissible\r\n ? `<button class=\"dga-alert-close\" type=\"button\" data-alert-close aria-label=\"Dismiss alert\">×</button>`\r\n : \"\";\r\n\r\n this.innerHTML = `\r\n <span class=\"dga-alert-icon\" aria-hidden=\"true\"></span>\r\n <div class=\"dga-alert-content\">\r\n ${titleHtml}\r\n <div class=\"dga-alert-body\">${body}</div>\r\n </div>\r\n ${closeHtml}\r\n `;\r\n\r\n this._closeButton = this.querySelector(\"[data-alert-close]\");\r\n this._closeButton?.removeEventListener(\"click\", this._boundDismiss);\r\n this._closeButton?.addEventListener(\"click\", this._boundDismiss);\r\n }\r\n\r\n _handleDismiss() {\r\n this.style.display = \"none\";\r\n this.dispatchEvent(\r\n new CustomEvent(\"dga-alert-dismiss\", { bubbles: true, composed: true })\r\n );\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-alert\", DGAAlertElement);\r\n","import { AccordionController } from \"./shared/accordion-controller.js\";\r\nimport { escapeHtml } from \"./shared/escape-html.js\";\r\n\r\nclass DGAAccordionItemElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\"title\", \"size\", \"open\"];\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._bodyContent) {\r\n this._bodyContent = this.innerHTML.trim();\r\n }\r\n this._render();\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const title = this.getAttribute(\"title\") || \"\";\r\n const size = this.getAttribute(\"size\") || \"md\";\r\n const isOpen = this.hasAttribute(\"open\");\r\n const body = this._bodyContent || \"\";\r\n\r\n this.innerHTML = `\r\n <div class=\"dga-acc-item${isOpen ? \" dga-acc-item--active\" : \"\"}\">\r\n <button class=\"dga-acc-header\" data-size=\"${escapeHtml(size)}\" aria-expanded=\"${isOpen ? \"true\" : \"false\"}\">\r\n <span>${escapeHtml(title)}</span>\r\n </button>\r\n <div class=\"dga-acc-content\">\r\n <div class=\"dga-acc-body\">${body}</div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\nclass DGAAccordionElement extends HTMLElement {\r\n constructor() {\r\n super();\r\n this._controller = null;\r\n }\r\n\r\n connectedCallback() {\r\n this.classList.add(\"dga-acc\");\r\n this._controller?.destroy();\r\n this._controller = new AccordionController(this);\r\n }\r\n\r\n disconnectedCallback() {\r\n this._controller?.destroy();\r\n this._controller = null;\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-accordion-item\", DGAAccordionItemElement);\r\ncustomElements.define(\"dga-accordion\", DGAAccordionElement);\r\n","import {\r\n COPY_ICON_SVG,\r\n copyText,\r\n markCopyButtonCopied,\r\n} from \"./shared/copy-text.js\";\r\nimport { escapeHtml } from \"./shared/escape-html.js\";\r\n\r\nclass DGACodeSnippetElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\"code\", \"multiline\"];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this._boundCopy = this._handleCopy.bind(this);\r\n }\r\n\r\n connectedCallback() {\r\n if (!this._codeContent) {\r\n this._codeContent =\r\n this.getAttribute(\"code\")?.trim() || this.textContent?.trim() || \"\";\r\n }\r\n this._render();\r\n }\r\n\r\n disconnectedCallback() {\r\n this._copyButton?.removeEventListener(\"click\", this._boundCopy);\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const isMultiline = this.hasAttribute(\"multiline\");\r\n const code =\r\n this.getAttribute(\"code\")?.trim() || this._codeContent || \"\";\r\n\r\n if (isMultiline) {\r\n this.innerHTML = `\r\n <div class=\"dga-code-snippet-multiline\">\r\n <div class=\"dga-code-snippet-multiline__body\">\r\n <pre class=\"dga-code-snippet-multiline__code\"><code>${escapeHtml(code)}</code></pre>\r\n <button type=\"button\" class=\"dga-code-snippet-multiline__copy\" aria-label=\"Copy code\" data-copied=\"false\">\r\n ${COPY_ICON_SVG}\r\n </button>\r\n </div>\r\n </div>\r\n `;\r\n this._copyButton = this.querySelector(\".dga-code-snippet-multiline__copy\");\r\n } else {\r\n this.innerHTML = `\r\n <div class=\"dga-code-snippet-inline\">\r\n <div class=\"dga-code-snippet-inline__content\">${escapeHtml(code)}</div>\r\n <button type=\"button\" class=\"dga-code-snippet-inline__copy\" aria-label=\"Copy code\" data-copied=\"false\">\r\n ${COPY_ICON_SVG}\r\n </button>\r\n </div>\r\n `;\r\n this._copyButton = this.querySelector(\".dga-code-snippet-inline__copy\");\r\n }\r\n\r\n this._copyButton?.removeEventListener(\"click\", this._boundCopy);\r\n this._copyButton?.addEventListener(\"click\", this._boundCopy);\r\n }\r\n\r\n async _handleCopy() {\r\n const code = this.getAttribute(\"code\")?.trim() || this._codeContent || \"\";\r\n if (!code || !this._copyButton) return;\r\n\r\n const copied = await copyText(code);\r\n if (!copied) return;\r\n\r\n await markCopyButtonCopied(this._copyButton);\r\n this.dispatchEvent(\r\n new CustomEvent(\"dga-code-copy\", { bubbles: true, composed: true })\r\n );\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-code-snippet\", DGACodeSnippetElement);\r\n","import {\r\n parseChartDataAttribute,\r\n renderPieChart,\r\n} from \"./shared/pie-chart.js\";\r\n\r\nclass DGAPieChartElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\"data\", \"hole\"];\r\n }\r\n\r\n connectedCallback() {\r\n this._render();\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const chartData = parseChartDataAttribute(this.getAttribute(\"data\"));\r\n const hole =\r\n this.hasAttribute(\"hole\") && this.getAttribute(\"hole\") !== \"false\";\r\n\r\n renderPieChart(this, chartData, { hole });\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-pie-chart\", DGAPieChartElement);\r\n","import { escapeHtml } from \"./shared/escape-html.js\";\r\n\r\nconst DEFAULT_ASSETS = {\r\n \"flag-src\": \"saudiFlag.svg\",\r\n \"link-icon-src\": \"link-icon.svg\",\r\n \"lock-icon-src\": \"square-lock-password.svg\",\r\n \"logo-src\": \"DGA-logo-icon.svg\",\r\n};\r\n\r\nclass DGAVerifyBarElement extends HTMLElement {\r\n static get observedAttributes() {\r\n return [\r\n \"registration-number\",\r\n \"registration-link\",\r\n \"domain\",\r\n \"assets-base\",\r\n \"flag-src\",\r\n \"link-icon-src\",\r\n \"lock-icon-src\",\r\n \"logo-src\",\r\n ];\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.isOpen = false;\r\n this._btn = null;\r\n this._content = null;\r\n this._wrapper = null;\r\n this._boundToggle = () => (this.isOpen ? this._close() : this._open());\r\n }\r\n\r\n connectedCallback() {\r\n this._render();\r\n }\r\n\r\n disconnectedCallback() {\r\n this._btn?.removeEventListener(\"click\", this._boundToggle);\r\n }\r\n\r\n attributeChangedCallback() {\r\n if (this.isConnected) this._render();\r\n }\r\n\r\n _render() {\r\n const regNumber = escapeHtml(\r\n this.getAttribute(\"registration-number\") || \"20250105758\",\r\n );\r\n const regLinkRaw =\r\n this.getAttribute(\"registration-link\") ||\r\n \"https://raqmi.dga.gov.sa/platforms/platforms/9ebc5e60-9081-4653-bfb9-08dd2a2f8633/platform-license\";\r\n const regLink = escapeHtml(this._normalizeLink(regLinkRaw));\r\n const domain = escapeHtml(this.getAttribute(\"domain\") || \".edu.sa\");\r\n\r\n const flagSrc = escapeHtml(this._imageSrc(\"flag-src\"));\r\n const linkIconSrc = escapeHtml(this._imageSrc(\"link-icon-src\"));\r\n const lockIconSrc = escapeHtml(this._imageSrc(\"lock-icon-src\"));\r\n const logoSrc = escapeHtml(this._imageSrc(\"logo-src\"));\r\n\r\n this.innerHTML = `\r\n <div id=\"dga-verify-bar\" class=\"dga-bg-gray-100 closed\">\r\n <div class=\"dga-container dga-py-2\">\r\n <div id=\"dga-verify-bar_bar\" class=\"dga-row\">\r\n <div class=\"dga-col\">\r\n <div class=\"dga-d-flex dga-align-items-center dga-gap-2\">\r\n <span><img src=\"${flagSrc}\" alt=\"علم المملكة العربية السعودية\" /></span>\r\n <span class=\"dga-text-sm\">موقع حكومي رسمي تابع لحكومة المملكة العربية السعودية</span>\r\n <span>\r\n <button id=\"dga-verifyBtn\" class=\"dga-btn dga-btn-subtle dga-text-primary-500\" data-verify-toggle aria-expanded=\"false\">\r\n كيف تتحقق\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"dga-verify-bar_content\" class=\"dga-row dga-pt-10 dga-pb-8\" data-verify-content style=\"display: ${this.isOpen ? \"flex\" : \"none\"};\">\r\n <div class=\"dga-col-md-6 dga-pb-8\">\r\n <div class=\"dga-d-flex dga-gap-4\">\r\n <div><img src=\"${linkIconSrc}\" alt=\"\" /></div>\r\n <div class=\"dga-w-full dga-d-flex dga-flex-col dga-gap-2\">\r\n <h3 class=\"dga-text-xl dga-fw-bold\">\r\n روابط المواقع الالكترونية الرسمية السعودية تنتهي بـ\r\n <span class=\"dga-text-primary-500\">${domain}</span>\r\n </h3>\r\n <p>\r\n جميع روابط المواقع الرسمية التابعة للجهات الحكومية في المملكة\r\n العربية السعودية تنتهي بـ ${domain}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dga-col-md-6 dga-pb-8\">\r\n <div class=\"dga-d-flex dga-gap-4\">\r\n <div><img src=\"${lockIconSrc}\" alt=\"\" /></div>\r\n <div class=\"dga-w-full dga-d-flex dga-flex-col dga-gap-2\">\r\n <h3 class=\"dga-text-xl dga-fw-bold\">\r\n المواقع الالكترونية الحكومية تستخدم بروتوكول\r\n <span class=\"dga-text-primary-500\">HTTPS</span> للتشفير و الأمان.\r\n </h3>\r\n <p>\r\n المواقع الالكترونية الآمنة في المملكة العربية السعودية تستخدم\r\n بروتوكول HTTPS للتشفير.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dga-col-12\">\r\n <div class=\"dga-d-flex dga-align-items-center dga-gap-3 dga-bg-white dga-text-md dga-rounded-md dga-py-2 dga-px-7\">\r\n <img src=\"${logoSrc}\" alt=\"شعار هيئة الحكومة الرقمية\" />\r\n مسجل لدى هيئة الحكومة الرقمية برقم :\r\n <a href=\"${regLink}\" class=\"dga-link\">${regNumber}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n\r\n this._btn?.removeEventListener(\"click\", this._boundToggle);\r\n this._wrapper = this.querySelector(\"#dga-verify-bar\");\r\n this._btn = this.querySelector(\"[data-verify-toggle]\");\r\n this._content = this.querySelector(\"[data-verify-content]\");\r\n this._btn?.addEventListener(\"click\", this._boundToggle);\r\n }\r\n\r\n _imageSrc(attributeName) {\r\n const override = this.getAttribute(attributeName);\r\n if (override) return override;\r\n\r\n const defaultFile = DEFAULT_ASSETS[attributeName];\r\n const base = this.getAttribute(\"assets-base\") || \"/\";\r\n const normalizedBase = base.endsWith(\"/\") ? base : `${base}/`;\r\n\r\n return `${normalizedBase}${defaultFile}`;\r\n }\r\n\r\n _open() {\r\n this._content.style.display = \"flex\";\r\n this.isOpen = true;\r\n this._btn?.setAttribute(\"aria-expanded\", \"true\");\r\n this._wrapper?.classList.replace(\"closed\", \"opend\");\r\n }\r\n\r\n _close() {\r\n this._content.style.display = \"none\";\r\n this.isOpen = false;\r\n this._btn?.setAttribute(\"aria-expanded\", \"false\");\r\n this._wrapper?.classList.replace(\"opend\", \"closed\");\r\n }\r\n\r\n _normalizeLink(value) {\r\n try {\r\n return new URL(value, window.location.href).href;\r\n } catch {\r\n return \"#\";\r\n }\r\n }\r\n}\r\n\r\ncustomElements.define(\"dga-verify-bar\", DGAVerifyBarElement);\r\n","import \"./dga-alert.js\";\r\nimport \"./dga-accordion.js\";\r\nimport \"./dga-code-snippet.js\";\r\nimport \"./dga-pie-chart.js\";\r\nimport \"./dga-verify-bar.js\";\r\n\r\nexport const DGA_WEB_COMPONENTS_REGISTERED = true;\r\n"],"names":["AccordionController","root","event","header","item","DGAAccordion","element","DGAAlert","closeButton","alert","resolveChartColor","color","generateChartGradient","data","segment","generateChartLabelsHtml","parseChartDataAttribute","value","parsed","renderPieChart","hole","DGAChart","copyText","text","textarea","success","COPY_ICON_SVG","markCopyButtonCopied","copyButton","resetMs","previousLabel","DGACodeSnippet","inlineSnippet","multilineSnippet","textToCopy","DGAMenuDropdown","options","e","menuItem","listItem","isActive","isOpen","width","DGAVerifyBar","escapeHtml","DEFAULT_VARIANT","DGAAlertElement","html","variant","title","dismissible","body","titleHtml","closeHtml","DGAAccordionItemElement","size","DGAAccordionElement","DGACodeSnippetElement","isMultiline","code","DGAPieChartElement","chartData","DEFAULT_ASSETS","DGAVerifyBarElement","regNumber","regLinkRaw","regLink","domain","flagSrc","linkIconSrc","lockIconSrc","logoSrc","attributeName","override","defaultFile","base","DGA_WEB_COMPONENTS_REGISTERED"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waaelg/dga-design-system",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "Saudi DGA design system — compiled CSS utilities, components, and JavaScript for interactive behavior.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",