domma-js 0.19.7 → 0.20.2

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 Minimal CSS Bundle v0.19.7
2
+ * Domma Minimal CSS Bundle v0.20.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-03-17T08:58:22.792Z
5
+ * Built: 2026-03-17T14:10:01.348Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.19.7
14
+ * Domma Core CSS v0.20.2
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-03-17T08:58:22.398Z
18
- * Commit: 58dfa50
17
+ * Built: 2026-03-17T14:10:00.837Z
18
+ * Commit: 22809b0
19
19
  */
20
20
 
21
21
  /**
@@ -155,6 +155,13 @@
155
155
  --dm-selected-bg: var(--dm-blue-100);
156
156
  --dm-disabled-opacity: 0.5;
157
157
 
158
+ /* Translucency */
159
+ --dm-translucent-light: 0.85;
160
+ --dm-translucent: 0.7;
161
+ --dm-translucent-heavy: 0.5;
162
+ --dm-translucent-glass-blur: 8px;
163
+ --dm-translucent-glass-opacity: 0.75;
164
+
158
165
  /* ================================================
159
166
  BRAND COLORS
160
167
  ================================================ */
@@ -2176,20 +2183,67 @@ code, pre {
2176
2183
  user-select: text;
2177
2184
  }
2178
2185
 
2179
- .opacity-0 {
2180
- opacity: 0;
2186
+ /* ============================================
2187
+ OPACITY SCALE
2188
+ Full graduated opacity scale (0–100)
2189
+ ============================================ */
2190
+
2191
+ .opacity-0 { opacity: 0; }
2192
+ .opacity-10 { opacity: 0.1; }
2193
+ .opacity-20 { opacity: 0.2; }
2194
+ .opacity-25 { opacity: 0.25; }
2195
+ .opacity-30 { opacity: 0.3; }
2196
+ .opacity-40 { opacity: 0.4; }
2197
+ .opacity-50 { opacity: 0.5; }
2198
+ .opacity-60 { opacity: 0.6; }
2199
+ .opacity-70 { opacity: 0.7; }
2200
+ .opacity-75 { opacity: 0.75; }
2201
+ .opacity-80 { opacity: 0.8; }
2202
+ .opacity-90 { opacity: 0.9; }
2203
+ .opacity-100 { opacity: 1; }
2204
+
2205
+ /* ============================================
2206
+ TRANSLUCENT UTILITIES
2207
+ Semantic transparency classes for UI elements
2208
+ ============================================ */
2209
+
2210
+ .translucent-light {
2211
+ opacity: var(--dm-translucent-light);
2212
+ transition: opacity var(--dm-transition-normal);
2181
2213
  }
2182
2214
 
2183
- .opacity-50 {
2184
- opacity: 0.5;
2215
+ .translucent {
2216
+ opacity: var(--dm-translucent);
2217
+ transition: opacity var(--dm-transition-normal);
2185
2218
  }
2186
2219
 
2187
- .opacity-75 {
2188
- opacity: 0.75;
2220
+ .translucent-heavy {
2221
+ opacity: var(--dm-translucent-heavy);
2222
+ transition: opacity var(--dm-transition-normal);
2189
2223
  }
2190
2224
 
2191
- .opacity-100 {
2192
- opacity: 1;
2225
+ /* Frosted glass — semi-transparent background + blur */
2226
+ .translucent-glass {
2227
+ background-color: rgba(255, 255, 255, var(--dm-translucent-glass-opacity));
2228
+ backdrop-filter: blur(var(--dm-translucent-glass-blur));
2229
+ -webkit-backdrop-filter: blur(var(--dm-translucent-glass-blur));
2230
+ transition: opacity var(--dm-transition-normal);
2231
+ }
2232
+
2233
+ /* Hover variants — apply translucency on hover */
2234
+ .translucent-hover:hover {
2235
+ opacity: var(--dm-translucent);
2236
+ transition: opacity var(--dm-transition-normal);
2237
+ }
2238
+
2239
+ .translucent-light-hover:hover {
2240
+ opacity: var(--dm-translucent-light);
2241
+ transition: opacity var(--dm-transition-normal);
2242
+ }
2243
+
2244
+ .translucent-heavy-hover:hover {
2245
+ opacity: var(--dm-translucent-heavy);
2246
+ transition: opacity var(--dm-transition-normal);
2193
2247
  }
2194
2248
 
2195
2249
  .transition {
@@ -4772,11 +4826,11 @@ body.dm-cloaked.dm-ready {
4772
4826
  ============================================ */
4773
4827
 
4774
4828
  /*!
4775
- * Domma Grid CSS v0.19.7
4829
+ * Domma Grid CSS v0.20.2
4776
4830
  * Dynamic Object Manipulation & Modeling API
4777
4831
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4778
- * Built: 2026-03-17T08:58:22.407Z
4779
- * Commit: 58dfa50
4832
+ * Built: 2026-03-17T14:10:00.852Z
4833
+ * Commit: 22809b0
4780
4834
  */
4781
4835
 
4782
4836
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Syntax Highlighter v0.19.7
2
+ * Domma Syntax Highlighter v0.20.2
3
3
  * Lightweight code syntax highlighting for JavaScript, HTML, and CSS
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-03-17T08:58:02.735Z
6
- * Commit: 58dfa50
5
+ * Built: 2026-03-17T14:09:44.122Z
6
+ * Commit: 22809b0
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.19.7
2
+ * Domma Core CSS v0.20.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-03-17T08:58:22.398Z
6
- * Commit: 58dfa50
5
+ * Built: 2026-03-17T14:10:00.837Z
6
+ * Commit: 22809b0
7
7
  */
8
8
 
9
9
  /**
@@ -143,6 +143,13 @@
143
143
  --dm-selected-bg: var(--dm-blue-100);
144
144
  --dm-disabled-opacity: 0.5;
145
145
 
146
+ /* Translucency */
147
+ --dm-translucent-light: 0.85;
148
+ --dm-translucent: 0.7;
149
+ --dm-translucent-heavy: 0.5;
150
+ --dm-translucent-glass-blur: 8px;
151
+ --dm-translucent-glass-opacity: 0.75;
152
+
146
153
  /* ================================================
147
154
  BRAND COLORS
148
155
  ================================================ */
@@ -2164,20 +2171,67 @@ code, pre {
2164
2171
  user-select: text;
2165
2172
  }
2166
2173
 
2167
- .opacity-0 {
2168
- opacity: 0;
2174
+ /* ============================================
2175
+ OPACITY SCALE
2176
+ Full graduated opacity scale (0–100)
2177
+ ============================================ */
2178
+
2179
+ .opacity-0 { opacity: 0; }
2180
+ .opacity-10 { opacity: 0.1; }
2181
+ .opacity-20 { opacity: 0.2; }
2182
+ .opacity-25 { opacity: 0.25; }
2183
+ .opacity-30 { opacity: 0.3; }
2184
+ .opacity-40 { opacity: 0.4; }
2185
+ .opacity-50 { opacity: 0.5; }
2186
+ .opacity-60 { opacity: 0.6; }
2187
+ .opacity-70 { opacity: 0.7; }
2188
+ .opacity-75 { opacity: 0.75; }
2189
+ .opacity-80 { opacity: 0.8; }
2190
+ .opacity-90 { opacity: 0.9; }
2191
+ .opacity-100 { opacity: 1; }
2192
+
2193
+ /* ============================================
2194
+ TRANSLUCENT UTILITIES
2195
+ Semantic transparency classes for UI elements
2196
+ ============================================ */
2197
+
2198
+ .translucent-light {
2199
+ opacity: var(--dm-translucent-light);
2200
+ transition: opacity var(--dm-transition-normal);
2169
2201
  }
2170
2202
 
2171
- .opacity-50 {
2172
- opacity: 0.5;
2203
+ .translucent {
2204
+ opacity: var(--dm-translucent);
2205
+ transition: opacity var(--dm-transition-normal);
2173
2206
  }
2174
2207
 
2175
- .opacity-75 {
2176
- opacity: 0.75;
2208
+ .translucent-heavy {
2209
+ opacity: var(--dm-translucent-heavy);
2210
+ transition: opacity var(--dm-transition-normal);
2177
2211
  }
2178
2212
 
2179
- .opacity-100 {
2180
- opacity: 1;
2213
+ /* Frosted glass — semi-transparent background + blur */
2214
+ .translucent-glass {
2215
+ background-color: rgba(255, 255, 255, var(--dm-translucent-glass-opacity));
2216
+ backdrop-filter: blur(var(--dm-translucent-glass-blur));
2217
+ -webkit-backdrop-filter: blur(var(--dm-translucent-glass-blur));
2218
+ transition: opacity var(--dm-transition-normal);
2219
+ }
2220
+
2221
+ /* Hover variants — apply translucency on hover */
2222
+ .translucent-hover:hover {
2223
+ opacity: var(--dm-translucent);
2224
+ transition: opacity var(--dm-transition-normal);
2225
+ }
2226
+
2227
+ .translucent-light-hover:hover {
2228
+ opacity: var(--dm-translucent-light);
2229
+ transition: opacity var(--dm-transition-normal);
2230
+ }
2231
+
2232
+ .translucent-heavy-hover:hover {
2233
+ opacity: var(--dm-translucent-heavy);
2234
+ transition: opacity var(--dm-transition-normal);
2181
2235
  }
2182
2236
 
2183
2237
  .transition {