@waaelg/dga-design-system 0.5.3 → 0.5.4

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/README.md CHANGED
@@ -178,15 +178,15 @@ Load the package straight from **jsDelivr** or **unpkg** — no install, no bund
178
178
  ```html
179
179
  <link
180
180
  rel="stylesheet"
181
- href="https://cdn.jsdelivr.net/npm/@waaelg/dga-design-system@0.5.3/dist/style.css"
181
+ href="https://cdn.jsdelivr.net/npm/@waaelg/dga-design-system@0.5.4/dist/style.css"
182
182
  />
183
183
 
184
184
  <script type="module">
185
- import 'https://cdn.jsdelivr.net/npm/@waaelg/dga-design-system@0.5.3/dist/index.js';
185
+ import 'https://cdn.jsdelivr.net/npm/@waaelg/dga-design-system@0.5.4/dist/index.js';
186
186
  </script>
187
187
  ```
188
188
 
189
- Same files are on unpkg (`https://unpkg.com/@waaelg/dga-design-system@0.5.3/dist/…`). Pin a version for reproducible builds, or use `@latest` to always fetch the newest release. See the [installation docs](./docs/getting-started/installation.md#cdn-no-build-step) for a full example.
189
+ Same files are on unpkg (`https://unpkg.com/@waaelg/dga-design-system@0.5.4/dist/…`). Pin a version for reproducible builds, or use `@latest` to always fetch the newest release. See the [installation docs](./docs/getting-started/installation.md#cdn-no-build-step) for a full example.
190
190
 
191
191
  ---
192
192
 
package/dist/index.js CHANGED
@@ -310,11 +310,14 @@ class w extends HTMLElement {
310
310
  static get observedAttributes() {
311
311
  return ["title", "size", "open"];
312
312
  }
313
+ constructor() {
314
+ super(), this._bodyContent = null;
315
+ }
313
316
  connectedCallback() {
314
- this._bodyContent || (this._bodyContent = this.innerHTML.trim()), this._render();
317
+ this._bodyContent == null && (this._bodyContent = this.innerHTML.trim()), this._render();
315
318
  }
316
319
  attributeChangedCallback() {
317
- this.isConnected && this._render();
320
+ this._bodyContent != null && this.isConnected && this._render();
318
321
  }
319
322
  _render() {
320
323
  const t = this.getAttribute("title") || "", e = this.getAttribute("size") || "md", s = this.hasAttribute("open"), n = this._bodyContent || "";
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 this.btn?.setAttribute(\"aria-expanded\", \"true\");\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 this.btn?.setAttribute(\"aria-expanded\", \"false\");\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\nconst STRINGS = {\r\n ar: {\r\n flagAlt: \"علم المملكة العربية السعودية\",\r\n banner: \"موقع حكومي رسمي تابع لحكومة المملكة العربية السعودية\",\r\n cta: \"كيف تتحقق\",\r\n domainHeading: \"روابط المواقع الالكترونية الرسمية السعودية تنتهي بـ\",\r\n domainBody:\r\n \"جميع روابط المواقع الرسمية التابعة للجهات الحكومية في المملكة العربية السعودية تنتهي بـ\",\r\n httpsHeading: \"المواقع الالكترونية الحكومية تستخدم بروتوكول\",\r\n httpsHeadingSuffix: \"للتشفير و الأمان.\",\r\n httpsBody:\r\n \"المواقع الالكترونية الآمنة في المملكة العربية السعودية تستخدم بروتوكول HTTPS للتشفير.\",\r\n logoAlt: \"شعار هيئة الحكومة الرقمية\",\r\n registeredWith: \"مسجل لدى هيئة الحكومة الرقمية برقم :\",\r\n },\r\n en: {\r\n flagAlt: \"Flag of the Kingdom of Saudi Arabia\",\r\n banner: \"This is an official government website of the Kingdom of Saudi Arabia\",\r\n cta: \"How to verify\",\r\n domainHeading: \"Official Saudi government website links end with\",\r\n domainBody:\r\n \"All official website links belonging to government entities in the Kingdom of Saudi Arabia end with\",\r\n httpsHeading: \"Government websites use the\",\r\n httpsHeadingSuffix: \"protocol for encryption and security.\",\r\n httpsBody:\r\n \"Secure websites in the Kingdom of Saudi Arabia use the HTTPS protocol for encryption.\",\r\n logoAlt: \"Digital Government Authority logo\",\r\n registeredWith: \"Registered with the Digital Government Authority under number:\",\r\n },\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 \"lang\",\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 lang = this.getAttribute(\"lang\") === \"en\" ? \"en\" : \"ar\";\r\n const dir = lang === \"en\" ? \"ltr\" : \"rtl\";\r\n const t = STRINGS[lang];\r\n\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\" dir=\"${dir}\" 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=\"${t.flagAlt}\" /></span>\r\n <span class=\"dga-text-sm\">${t.banner}</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 ${t.cta}\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 ${t.domainHeading}\r\n <span class=\"dga-text-primary-500\">${domain}</span>\r\n </h3>\r\n <p>\r\n ${t.domainBody} ${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 ${t.httpsHeading}\r\n <span class=\"dga-text-primary-500\">HTTPS</span> ${t.httpsHeadingSuffix}\r\n </h3>\r\n <p>\r\n ${t.httpsBody}\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=\"${t.logoAlt}\" />\r\n ${t.registeredWith}\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","STRINGS","DGAVerifyBarElement","lang","dir","t","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 this.btn?.setAttribute(\"aria-expanded\", \"true\");\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 this.btn?.setAttribute(\"aria-expanded\", \"false\");\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 constructor() {\r\n super();\r\n this._bodyContent = null;\r\n }\r\n\r\n connectedCallback() {\r\n if (this._bodyContent == null) {\r\n this._bodyContent = this.innerHTML.trim();\r\n }\r\n this._render();\r\n }\r\n\r\n attributeChangedCallback() {\r\n // On upgrade, attributeChangedCallback can fire before connectedCallback.\r\n // Don't render until the original slotted content has been captured,\r\n // otherwise _render() would overwrite it with an empty body.\r\n if (this._bodyContent == null) return;\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\nconst STRINGS = {\r\n ar: {\r\n flagAlt: \"علم المملكة العربية السعودية\",\r\n banner: \"موقع حكومي رسمي تابع لحكومة المملكة العربية السعودية\",\r\n cta: \"كيف تتحقق\",\r\n domainHeading: \"روابط المواقع الالكترونية الرسمية السعودية تنتهي بـ\",\r\n domainBody:\r\n \"جميع روابط المواقع الرسمية التابعة للجهات الحكومية في المملكة العربية السعودية تنتهي بـ\",\r\n httpsHeading: \"المواقع الالكترونية الحكومية تستخدم بروتوكول\",\r\n httpsHeadingSuffix: \"للتشفير و الأمان.\",\r\n httpsBody:\r\n \"المواقع الالكترونية الآمنة في المملكة العربية السعودية تستخدم بروتوكول HTTPS للتشفير.\",\r\n logoAlt: \"شعار هيئة الحكومة الرقمية\",\r\n registeredWith: \"مسجل لدى هيئة الحكومة الرقمية برقم :\",\r\n },\r\n en: {\r\n flagAlt: \"Flag of the Kingdom of Saudi Arabia\",\r\n banner: \"This is an official government website of the Kingdom of Saudi Arabia\",\r\n cta: \"How to verify\",\r\n domainHeading: \"Official Saudi government website links end with\",\r\n domainBody:\r\n \"All official website links belonging to government entities in the Kingdom of Saudi Arabia end with\",\r\n httpsHeading: \"Government websites use the\",\r\n httpsHeadingSuffix: \"protocol for encryption and security.\",\r\n httpsBody:\r\n \"Secure websites in the Kingdom of Saudi Arabia use the HTTPS protocol for encryption.\",\r\n logoAlt: \"Digital Government Authority logo\",\r\n registeredWith: \"Registered with the Digital Government Authority under number:\",\r\n },\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 \"lang\",\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 lang = this.getAttribute(\"lang\") === \"en\" ? \"en\" : \"ar\";\r\n const dir = lang === \"en\" ? \"ltr\" : \"rtl\";\r\n const t = STRINGS[lang];\r\n\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\" dir=\"${dir}\" 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=\"${t.flagAlt}\" /></span>\r\n <span class=\"dga-text-sm\">${t.banner}</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 ${t.cta}\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 ${t.domainHeading}\r\n <span class=\"dga-text-primary-500\">${domain}</span>\r\n </h3>\r\n <p>\r\n ${t.domainBody} ${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 ${t.httpsHeading}\r\n <span class=\"dga-text-primary-500\">HTTPS</span> ${t.httpsHeadingSuffix}\r\n </h3>\r\n <p>\r\n ${t.httpsBody}\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=\"${t.logoAlt}\" />\r\n ${t.registeredWith}\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","STRINGS","DGAVerifyBarElement","lang","dir","t","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.5.3",
3
+ "version": "0.5.4",
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",