domma-js 0.20.2 → 0.21.0

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.
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Full CSS Bundle v0.20.2
2
+ * Domma Full CSS Bundle v0.21.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-03-17T14:10:01.371Z
5
+ * Built: 2026-03-18T16:29:46.289Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.20.2
14
+ * Domma Core CSS v0.21.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-03-17T14:10:00.837Z
18
- * Commit: 22809b0
17
+ * Built: 2026-03-18T16:29:45.511Z
18
+ * Commit: 70a6f74
19
19
  */
20
20
 
21
21
  /**
@@ -4826,11 +4826,11 @@ body.dm-cloaked.dm-ready {
4826
4826
  ============================================ */
4827
4827
 
4828
4828
  /*!
4829
- * Domma Grid CSS v0.20.2
4829
+ * Domma Grid CSS v0.21.0
4830
4830
  * Dynamic Object Manipulation & Modeling API
4831
4831
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4832
- * Built: 2026-03-17T14:10:00.852Z
4833
- * Commit: 22809b0
4832
+ * Built: 2026-03-18T16:29:45.530Z
4833
+ * Commit: 70a6f74
4834
4834
  */
4835
4835
 
4836
4836
  /**
@@ -5451,11 +5451,11 @@ body.dm-cloaked.dm-ready {
5451
5451
  ============================================ */
5452
5452
 
5453
5453
  /*!
5454
- * Domma Elements CSS v0.20.2
5454
+ * Domma Elements CSS v0.21.0
5455
5455
  * Dynamic Object Manipulation & Modeling API
5456
5456
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5457
- * Built: 2026-03-17T14:10:00.871Z
5458
- * Commit: 22809b0
5457
+ * Built: 2026-03-18T16:29:45.555Z
5458
+ * Commit: 70a6f74
5459
5459
  */
5460
5460
 
5461
5461
  /**
@@ -6712,6 +6712,114 @@ textarea:not([class])::placeholder {
6712
6712
  }
6713
6713
 
6714
6714
 
6715
+ /* ============================================
6716
+ NUMBER BADGE
6717
+ ============================================ */
6718
+
6719
+ /* Standalone number badge — circular for single digits, pill for multi-digit */
6720
+ .badge-number {
6721
+ display: inline-flex;
6722
+ align-items: center;
6723
+ justify-content: center;
6724
+ min-width: 1.5em;
6725
+ height: 1.5em;
6726
+ padding: 0 0.35em;
6727
+ font-size: var(--dm-font-size-xs);
6728
+ font-weight: 700;
6729
+ font-variant-numeric: tabular-nums;
6730
+ line-height: 1;
6731
+ border-radius: var(--dm-radius-full);
6732
+ background-color: var(--dm-danger);
6733
+ color: var(--dm-white);
6734
+ }
6735
+
6736
+ /* Dot indicator — small coloured presence circle */
6737
+ .badge-dot {
6738
+ display: inline-block;
6739
+ width: 0.5rem;
6740
+ height: 0.5rem;
6741
+ border-radius: var(--dm-radius-full);
6742
+ background-color: var(--dm-danger);
6743
+ }
6744
+
6745
+ /* Wrapper for positioned counter badges */
6746
+ .badge-counter-wrapper {
6747
+ position: relative;
6748
+ display: inline-flex;
6749
+ }
6750
+
6751
+ /* Counter badge — overlapping corner with border ring (classic app-notification style) */
6752
+ .badge-counter {
6753
+ position: absolute;
6754
+ top: -6px;
6755
+ right: -8px;
6756
+ display: inline-flex;
6757
+ align-items: center;
6758
+ justify-content: center;
6759
+ min-width: 1.25rem;
6760
+ height: 1.25rem;
6761
+ padding: 0 0.3em;
6762
+ font-size: 0.65rem;
6763
+ font-weight: 700;
6764
+ font-variant-numeric: tabular-nums;
6765
+ line-height: 1;
6766
+ border-radius: var(--dm-radius-full);
6767
+ border: 2px solid var(--dm-background, #fff);
6768
+ z-index: 1;
6769
+ background-color: var(--dm-danger);
6770
+ color: var(--dm-white);
6771
+ }
6772
+
6773
+ /* Dot variant of counter — smaller, no text */
6774
+ .badge-counter.badge-dot {
6775
+ top: -2px;
6776
+ right: -2px;
6777
+ min-width: 0.5rem;
6778
+ height: 0.5rem;
6779
+ padding: 0;
6780
+ }
6781
+
6782
+ /* Hidden state when count is zero */
6783
+ .badge-counter-hidden {
6784
+ display: none !important;
6785
+ }
6786
+
6787
+ /* Pulse animation reuse for counter badges */
6788
+ .badge-counter.badge-pulse {
6789
+ animation: badge-pulse 2s ease-in-out infinite;
6790
+ }
6791
+
6792
+ /* Colour variants for .badge-number */
6793
+ .badge-number.badge-number-primary { background-color: var(--dm-primary); color: var(--dm-white); }
6794
+ .badge-number.badge-number-secondary { background-color: var(--dm-background-alt); color: var(--dm-text); }
6795
+ .badge-number.badge-number-success { background-color: var(--dm-success); color: var(--dm-white); }
6796
+ .badge-number.badge-number-danger { background-color: var(--dm-danger); color: var(--dm-white); }
6797
+ .badge-number.badge-number-warning { background-color: var(--dm-warning); color: var(--dm-text); }
6798
+ .badge-number.badge-number-info { background-color: var(--dm-info); color: var(--dm-white); }
6799
+ .badge-number.badge-number-light { background-color: var(--dm-background-alt); color: var(--dm-text); }
6800
+ .badge-number.badge-number-dark { background-color: var(--dm-surface-overlay); color: var(--dm-white); }
6801
+
6802
+ /* Colour variants for .badge-dot */
6803
+ .badge-dot.badge-dot-primary { background-color: var(--dm-primary); }
6804
+ .badge-dot.badge-dot-secondary { background-color: var(--dm-background-alt); }
6805
+ .badge-dot.badge-dot-success { background-color: var(--dm-success); }
6806
+ .badge-dot.badge-dot-danger { background-color: var(--dm-danger); }
6807
+ .badge-dot.badge-dot-warning { background-color: var(--dm-warning); }
6808
+ .badge-dot.badge-dot-info { background-color: var(--dm-info); }
6809
+ .badge-dot.badge-dot-light { background-color: var(--dm-background-alt); }
6810
+ .badge-dot.badge-dot-dark { background-color: var(--dm-surface-overlay); }
6811
+
6812
+ /* Colour variants for .badge-counter */
6813
+ .badge-counter.badge-counter-primary { background-color: var(--dm-primary); color: var(--dm-white); }
6814
+ .badge-counter.badge-counter-secondary { background-color: var(--dm-background-alt); color: var(--dm-text); }
6815
+ .badge-counter.badge-counter-success { background-color: var(--dm-success); color: var(--dm-white); }
6816
+ .badge-counter.badge-counter-danger { background-color: var(--dm-danger); color: var(--dm-white); }
6817
+ .badge-counter.badge-counter-warning { background-color: var(--dm-warning); color: var(--dm-text); }
6818
+ .badge-counter.badge-counter-info { background-color: var(--dm-info); color: var(--dm-white); }
6819
+ .badge-counter.badge-counter-light { background-color: var(--dm-background-alt); color: var(--dm-text); }
6820
+ .badge-counter.badge-counter-dark { background-color: var(--dm-surface-overlay); color: var(--dm-white); }
6821
+
6822
+
6715
6823
  /* ============================================
6716
6824
  PILL
6717
6825
  ============================================ */
@@ -12165,11 +12273,11 @@ code {
12165
12273
  ============================================ */
12166
12274
 
12167
12275
  /*!
12168
- * Domma Themes v0.20.2
12276
+ * Domma Themes v0.21.0
12169
12277
  * Dynamic Object Manipulation & Modeling API
12170
12278
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12171
- * Built: 2026-03-17T14:10:00.786Z
12172
- * Commit: 22809b0
12279
+ * Built: 2026-03-18T16:29:45.455Z
12280
+ * Commit: 70a6f74
12173
12281
  */
12174
12282
 
12175
12283
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Minimal CSS Bundle v0.20.2
2
+ * Domma Minimal CSS Bundle v0.21.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-03-17T14:10:01.348Z
5
+ * Built: 2026-03-18T16:29:46.260Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.20.2
14
+ * Domma Core CSS v0.21.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-03-17T14:10:00.837Z
18
- * Commit: 22809b0
17
+ * Built: 2026-03-18T16:29:45.511Z
18
+ * Commit: 70a6f74
19
19
  */
20
20
 
21
21
  /**
@@ -4826,11 +4826,11 @@ body.dm-cloaked.dm-ready {
4826
4826
  ============================================ */
4827
4827
 
4828
4828
  /*!
4829
- * Domma Grid CSS v0.20.2
4829
+ * Domma Grid CSS v0.21.0
4830
4830
  * Dynamic Object Manipulation & Modeling API
4831
4831
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4832
- * Built: 2026-03-17T14:10:00.852Z
4833
- * Commit: 22809b0
4832
+ * Built: 2026-03-18T16:29:45.530Z
4833
+ * Commit: 70a6f74
4834
4834
  */
4835
4835
 
4836
4836
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Syntax Highlighter v0.20.2
2
+ * Domma Syntax Highlighter v0.21.0
3
3
  * Lightweight code syntax highlighting for JavaScript, HTML, and CSS
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-03-17T14:09:44.122Z
6
- * Commit: 22809b0
5
+ * Built: 2026-03-18T16:29:09.928Z
6
+ * Commit: 70a6f74
7
7
  */
8
8
  !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).DommaSyntax={})}(this,function(t){"use strict";const e={javascript:[{type:"comment",pattern:/\/\*[\s\S]*?\*\//g},{type:"comment",pattern:/\/\/.*/g},{type:"template-string",pattern:/`(?:\\.|[^`\\])*`/g},{type:"string",pattern:/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g},{type:"keyword",pattern:/\b(const|let|var|function|return|if|else|for|while|do|break|continue|switch|case|default|try|catch|finally|throw|async|await|class|extends|static|new|this|super|import|export|from|as|default|yield|typeof|instanceof|in|of|delete|void)\b/g},{type:"boolean",pattern:/\b(true|false|null|undefined|NaN|Infinity)\b/g},{type:"number",pattern:/\b\d+\.?\d*([eE][+-]?\d+)?\b/g},{type:"function",pattern:/\b([a-zA-Z_$][\w$]*)\s*(?=\()/g},{type:"class-name",pattern:/\b[A-Z][\w$]*\b/g},{type:"operator",pattern:/[+\-*/%=<>!&|^~?:]+|===|!==|==|!=|<=|>=|&&|\|\||<<|>>|>>>/g},{type:"punctuation",pattern:/[{}[\]();,.]/g}],html:[{type:"comment",pattern:/<!--[\s\S]*?-->/g},{type:"doctype",pattern:/<!DOCTYPE[^>]*>/gi},{type:"tag-open",pattern:/<\/?[a-zA-Z][\w-]*/g},{type:"tag-close",pattern:/\/?>/g},{type:"attr-name",pattern:/\s+[a-zA-Z:@][\w:.-]*(?=\s*=)/g},{type:"attr-value",pattern:/=\s*"[^"]*"|=\s*'[^']*'/g},{type:"entity",pattern:/&[#\w]+;/g}],css:[{type:"comment",pattern:/\/\*[\s\S]*?\*\//g},{type:"at-rule",pattern:/@[\w-]+/g},{type:"selector",pattern:/[.#]?[a-zA-Z][\w-]*(?=\s*[{,])/g},{type:"property",pattern:/\b[\w-]+(?=\s*:)/g},{type:"string",pattern:/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/g},{type:"function",pattern:/\b[\w-]+(?=\()/g},{type:"important",pattern:/!important\b/g},{type:"number",pattern:/\b\d+\.?\d*(px|em|rem|%|vh|vw|pt|cm|mm|in|pc|ex|ch|vmin|vmax|fr)?\b/g},{type:"color",pattern:/#[\da-fA-F]{3,8}\b/g},{type:"punctuation",pattern:/[{}:;,()]/g}]};function n(t){const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};return t.replace(/[&<>"']/g,t=>e[t])}class a{constructor(){this.config={autoDetect:!0,preserveOriginal:!0,selector:".code-block",showLanguageBadge:!1,languagePrefix:"language-"}}highlight(t,a=null){const r="string"==typeof t?document.querySelector(t):t;if(!r||r.hasAttribute("data-syntax-highlighted"))return!1;if(!a&&this.config.autoDetect){const t=Array.from(r.classList).find(t=>t.startsWith(this.config.languagePrefix));t&&(a=t.substring(this.config.languagePrefix.length))}if(!a||!e[a])return!1;const o=r.textContent||"";this.config.preserveOriginal&&r.setAttribute("data-original-code",o);const i=function(t,a){const r=e[a];if(!r)return n(t);const o=[];for(const{type:e,pattern:n}of r){if("html"===a&&"entity"===e)continue;let r;for(n.lastIndex=0;null!==(r=n.exec(t));)o.push({start:r.index,end:r.index+r[0].length,text:r[0],type:e})}o.sort((t,e)=>t.start-e.start);const i=[];let s=0;for(const t of o)t.start>=s&&(i.push(t),s=t.end);let c="",p=0;for(const e of i)e.start>p&&(c+=n(t.substring(p,e.start))),c+=`<span class="syntax-${e.type}">${n(e.text)}</span>`,p=e.end;return p<t.length&&(c+=n(t.substring(p))),c}(o,a);return r.innerHTML=i,r.setAttribute("data-syntax-highlighted","true"),r.setAttribute("data-language",a),this.config.showLanguageBadge&&this.addLanguageBadge(r,a),!0}scan(t={}){const e=t.selector||this.config.selector,n=document.querySelectorAll(e);let a=0;return n.forEach(e=>{this.highlight(e,t.language||null)&&(this.addCopyButton(e),a++)}),a}register(t,n){t&&Array.isArray(n)?e[t]=n:console.error("SyntaxHighlighter: Invalid language registration")}configure(t){return t?(Object.assign(this.config,t),this.config):{...this.config}}addLanguageBadge(t,e){if(t.querySelector(".syntax-language-badge"))return;const n=document.createElement("div");n.className="syntax-language-badge",n.textContent=e.toUpperCase(),t.style.position="relative",t.insertBefore(n,t.firstChild)}getLanguages(){return Object.keys(e)}isLanguageSupported(t){return t in e}addCopyButton(t){if(t.parentElement&&t.parentElement.classList.contains("code-block-wrapper"))return;const e=document.createElement("div");e.className="code-block-wrapper";const n=document.createElement("button");n.className="code-block-copy",n.setAttribute("aria-label","Copy code to clipboard"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>',n.addEventListener("click",async()=>{const e=t.getAttribute("data-original-code")||t.textContent;try{if(navigator.clipboard&&navigator.clipboard.writeText)await navigator.clipboard.writeText(e);else{const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}n.classList.add("copied"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>',setTimeout(()=>{n.classList.remove("copied"),n.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>'},2e3)}catch(t){console.error("Failed to copy code:",t)}}),t.parentNode.insertBefore(e,t),e.appendChild(t),e.appendChild(n)}}const r=new a;"undefined"!=typeof document&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{r.scan()}):setTimeout(()=>r.scan(),0)),"undefined"!=typeof window&&(window.Domma&&(window.Domma.syntax=r),window.DommaSyntax=r),t.LANGUAGES=e,t.SyntaxHighlighter=a,t.default=r,t.syntax=r,Object.defineProperty(t,"__esModule",{value:!0})});
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Core CSS v0.20.2
2
+ * Domma Core CSS v0.21.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-03-17T14:10:00.837Z
6
- * Commit: 22809b0
5
+ * Built: 2026-03-18T16:29:45.511Z
6
+ * Commit: 70a6f74
7
7
  */
8
8
 
9
9
  /**