domma-js 0.39.2 → 0.40.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,9 +1,9 @@
1
1
  /*!
2
- * Domma Elements CSS v0.39.2
2
+ * Domma Elements CSS v0.40.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T12:14:59.641Z
6
- * Commit: c7a693e
5
+ * Built: 2026-08-21T16:29:27.264Z
6
+ * Commit: c788672
7
7
  */
8
8
 
9
9
  /**
@@ -1291,7 +1291,7 @@ textarea:not([class])::placeholder {
1291
1291
  NUMBER BADGE
1292
1292
  ============================================ */
1293
1293
 
1294
- /* Standalone number badge — circular for single digits, pill for multi-digit */
1294
+ /* Standalone number badge - circular for single digits, pill for multi-digit */
1295
1295
  .badge-number {
1296
1296
  display: inline-flex;
1297
1297
  align-items: center;
@@ -1308,7 +1308,7 @@ textarea:not([class])::placeholder {
1308
1308
  color: var(--dm-danger-text, var(--dm-white));
1309
1309
  }
1310
1310
 
1311
- /* Dot indicator — small coloured presence circle */
1311
+ /* Dot indicator - small coloured presence circle */
1312
1312
  .badge-dot {
1313
1313
  display: inline-block;
1314
1314
  width: 0.5rem;
@@ -1323,7 +1323,7 @@ textarea:not([class])::placeholder {
1323
1323
  display: inline-flex;
1324
1324
  }
1325
1325
 
1326
- /* Counter badge — overlapping corner with border ring (classic app-notification style) */
1326
+ /* Counter badge - overlapping corner with border ring (classic app-notification style) */
1327
1327
  .badge-counter {
1328
1328
  position: absolute;
1329
1329
  top: -6px;
@@ -1345,7 +1345,7 @@ textarea:not([class])::placeholder {
1345
1345
  color: var(--dm-danger-text, var(--dm-white));
1346
1346
  }
1347
1347
 
1348
- /* Dot variant of counter — smaller, no text */
1348
+ /* Dot variant of counter - smaller, no text */
1349
1349
  .badge-counter.badge-dot {
1350
1350
  top: -2px;
1351
1351
  right: -2px;
@@ -1399,7 +1399,7 @@ textarea:not([class])::placeholder {
1399
1399
  LIST GROUP
1400
1400
  ============================================ */
1401
1401
 
1402
- /* Container — vertical flex column with rounded corners and clipped overflow */
1402
+ /* Container - vertical flex column with rounded corners and clipped overflow */
1403
1403
  .list-group {
1404
1404
  display: flex;
1405
1405
  flex-direction: column;
@@ -1409,7 +1409,7 @@ textarea:not([class])::placeholder {
1409
1409
  background-color: var(--dm-surface);
1410
1410
  }
1411
1411
 
1412
- /* Each item — flex row, vertically centred, with a bottom separator */
1412
+ /* Each item - flex row, vertically centred, with a bottom separator */
1413
1413
  .list-group-item {
1414
1414
  display: flex;
1415
1415
  align-items: center;
@@ -1427,7 +1427,7 @@ textarea:not([class])::placeholder {
1427
1427
  border-bottom: none;
1428
1428
  }
1429
1429
 
1430
- /* Flush modifier — strip outer border and radius for embedding inside cards */
1430
+ /* Flush modifier - strip outer border and radius for embedding inside cards */
1431
1431
  .list-group-flush {
1432
1432
  border: none;
1433
1433
  border-radius: 0;
@@ -1449,7 +1449,7 @@ textarea:not([class])::placeholder {
1449
1449
  font-size: var(--dm-font-size-base);
1450
1450
  }
1451
1451
 
1452
- /* Actionable items — pointer cursor and hover highlight */
1452
+ /* Actionable items - pointer cursor and hover highlight */
1453
1453
  .list-group-item-action {
1454
1454
  cursor: pointer;
1455
1455
  user-select: none;
@@ -1473,7 +1473,7 @@ textarea:not([class])::placeholder {
1473
1473
  justify-content: center;
1474
1474
  }
1475
1475
 
1476
- /* Central text wrapper — grows to fill available space */
1476
+ /* Central text wrapper - grows to fill available space */
1477
1477
  .list-group-item-content {
1478
1478
  flex-grow: 1;
1479
1479
  min-width: 0;
@@ -1501,7 +1501,7 @@ textarea:not([class])::placeholder {
1501
1501
  text-overflow: ellipsis;
1502
1502
  }
1503
1503
 
1504
- /* Right-side trailing area — badges, timestamps, actions */
1504
+ /* Right-side trailing area - badges, timestamps, actions */
1505
1505
  .list-group-item-trailing {
1506
1506
  flex-shrink: 0;
1507
1507
  margin-left: auto;
@@ -1511,7 +1511,7 @@ textarea:not([class])::placeholder {
1511
1511
  gap: var(--dm-space-2);
1512
1512
  }
1513
1513
 
1514
- /* Active/selected state — accent background takes precedence over colour variants */
1514
+ /* Active/selected state - accent background takes precedence over colour variants */
1515
1515
  .list-group-item.active {
1516
1516
  background-color: var(--dm-primary);
1517
1517
  color: var(--dm-primary-text, var(--dm-white));
@@ -1523,7 +1523,7 @@ textarea:not([class])::placeholder {
1523
1523
  color: rgba(255, 255, 255, 0.75);
1524
1524
  }
1525
1525
 
1526
- /* Disabled state — dimmed and non-interactive */
1526
+ /* Disabled state - dimmed and non-interactive */
1527
1527
  .list-group-item.disabled {
1528
1528
  opacity: 0.7;
1529
1529
  cursor: not-allowed;
@@ -1603,7 +1603,7 @@ textarea:not([class])::placeholder {
1603
1603
  border-top-color: var(--dm-border);
1604
1604
  }
1605
1605
 
1606
- /* Numbered list — CSS counter prepended to each item */
1606
+ /* Numbered list - CSS counter prepended to each item */
1607
1607
  .list-group-numbered {
1608
1608
  list-style-type: none;
1609
1609
  counter-reset: list-group-counter;
@@ -1619,7 +1619,7 @@ textarea:not([class])::placeholder {
1619
1619
  color: var(--dm-text-muted);
1620
1620
  }
1621
1621
 
1622
- /* Horizontal layout — items arranged in a row */
1622
+ /* Horizontal layout - items arranged in a row */
1623
1623
  .list-group-horizontal {
1624
1624
  flex-direction: row;
1625
1625
  }
@@ -4940,7 +4940,7 @@ code {
4940
4940
  }
4941
4941
 
4942
4942
  /* Status text utilities use color-mix with --dm-text so they auto-adapt to
4943
- light/dark modes — keeping brand identity while staying ≥4.5:1 readable. */
4943
+ light/dark modes - keeping brand identity while staying ≥4.5:1 readable. */
4944
4944
  .text-success {
4945
4945
  color: color-mix(in oklab, var(--dm-success), var(--dm-text) 30%) !important;
4946
4946
  }
@@ -5346,7 +5346,7 @@ code {
5346
5346
  /*
5347
5347
  * Hover bridge: the menu is rendered as a document.body sibling positioned with a
5348
5348
  * small offset/margin gap from its trigger. On a hover-triggered dropdown that gap
5349
- * is a dead-zone — the pointer leaves the trigger before reaching the menu, firing
5349
+ * is a dead-zone - the pointer leaves the trigger before reaching the menu, firing
5350
5350
  * the close. These transparent pseudo-elements extend the menu's hoverable area
5351
5351
  * above and below it, so the trigger→menu path is one continuous hover surface.
5352
5352
  * Only present on hover dropdowns, so click dropdowns are unaffected.
@@ -5358,7 +5358,7 @@ code {
5358
5358
  left: 0;
5359
5359
  right: 0;
5360
5360
  height: 0.75rem;
5361
- /* transparent — a hover surface only, never painted */
5361
+ /* transparent - a hover surface only, never painted */
5362
5362
  }
5363
5363
 
5364
5364
  .domma-dropdown-menu-hover::before {
@@ -7569,7 +7569,7 @@ code {
7569
7569
  }
7570
7570
 
7571
7571
  /* ============================================================
7572
- * Chooser — visual option-picker (card/chip × single/multi)
7572
+ * Chooser - visual option-picker (card/chip × single/multi)
7573
7573
  * ============================================================ */
7574
7574
  .domma-chooser {
7575
7575
  --picker-radius: var(--dm-radius);
@@ -7789,7 +7789,7 @@ code {
7789
7789
  }
7790
7790
 
7791
7791
  /* ============================================================
7792
- * Chooser — accent colour, accent style, glow, shadow extensions
7792
+ * Chooser - accent colour, accent style, glow, shadow extensions
7793
7793
  * ============================================================ */
7794
7794
 
7795
7795
  /* Default the accent variables on every chooser */
@@ -7820,7 +7820,7 @@ code {
7820
7820
  0 0 18px color-mix(in srgb, var(--picker-glow-colour) 60%, transparent);
7821
7821
  }
7822
7822
 
7823
- /* Shadow weights — applied to all options */
7823
+ /* Shadow weights - applied to all options */
7824
7824
  .domma-chooser[data-shadow="sm"] .picker-option {
7825
7825
  box-shadow: 0 1px 2px var(--picker-shadow-colour, rgba(0, 0, 0, 0.08));
7826
7826
  }
@@ -7908,7 +7908,7 @@ code {
7908
7908
  }
7909
7909
 
7910
7910
  /* ============================================================
7911
- * Page-roller chooser slideover — structured editor styling
7911
+ * Page-roller chooser slideover - structured editor styling
7912
7912
  * ============================================================ */
7913
7913
  .qr-chooser-slideover-body {
7914
7914
  padding: 1.25rem;
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Grid CSS v0.39.2
2
+ * Domma Grid CSS v0.40.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T12:14:59.637Z
6
- * Commit: c7a693e
5
+ * Built: 2026-08-21T16:29:27.259Z
6
+ * Commit: c788672
7
7
  */
8
8
 
9
9
  /**
@@ -337,7 +337,7 @@
337
337
  gap: var(--dm-space-6, 2rem);
338
338
  }
339
339
 
340
- /* Bootstrap 5-style g-* aliases (row gutters — both axes) */
340
+ /* Bootstrap 5-style g-* aliases (row gutters - both axes) */
341
341
  .row.g-0 { gap: 0; }
342
342
  .row.g-1 { gap: var(--dm-space-1, 0.25rem); }
343
343
  .row.g-2 { gap: var(--dm-space-2, 0.5rem); }
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Syntax Highlighting CSS v0.39.2
2
+ * Domma Syntax Highlighting CSS v0.40.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T12:14:59.645Z
6
- * Commit: c7a693e
5
+ * Built: 2026-08-21T16:29:27.268Z
6
+ * Commit: c788672
7
7
  */
8
8
 
9
9
  /**
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Themes v0.39.2
2
+ * Domma Themes v0.40.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T12:14:59.620Z
6
- * Commit: c7a693e
5
+ * Built: 2026-08-21T16:29:27.241Z
6
+ * Commit: c788672
7
7
  */
8
8
 
9
9
  /**
@@ -3223,7 +3223,7 @@
3223
3223
  --dm-info-hover-text: #1a1a1a;
3224
3224
  }
3225
3225
  /**
3226
- * Domma Christmas Light Theme — "Frosty Morning"
3226
+ * Domma Christmas Light Theme - "Frosty Morning"
3227
3227
  * Ice-blue tinted backgrounds evoking frost on windows, deep pine-green text
3228
3228
  * Classic Christmas Red primary, rich Holly Green secondary
3229
3229
  */
@@ -3467,10 +3467,10 @@
3467
3467
  }
3468
3468
 
3469
3469
  /* ============================================================
3470
- DECORATIVE CSS — "Frosty Morning" festive embellishments
3470
+ DECORATIVE CSS - "Frosty Morning" festive embellishments
3471
3471
  ============================================================ */
3472
3472
 
3473
- /* Snow-dust background — subtle radial dots on the page root */
3473
+ /* Snow-dust background - subtle radial dots on the page root */
3474
3474
  .dm-theme-christmas-light {
3475
3475
  background-image:
3476
3476
  radial-gradient(circle, rgba(168, 213, 229, 0.35) 1px, transparent 1px),
@@ -3486,7 +3486,7 @@
3486
3486
  border-image-slice: 1;
3487
3487
  }
3488
3488
 
3489
- /* Candy-stripe progress bars (default + plain variant only — variants keep their semantic colour) */
3489
+ /* Candy-stripe progress bars (default + plain variant only - variants keep their semantic colour) */
3490
3490
  .dm-theme-christmas-light .dm-progression-progress-bar,
3491
3491
  .dm-theme-christmas-light .progress > .progress-bar:not([class*="progress-bar-"]) {
3492
3492
  background-image: repeating-linear-gradient(
@@ -3500,7 +3500,7 @@
3500
3500
  color: #ffffff;
3501
3501
  }
3502
3502
 
3503
- /* Festive syntax highlighting — green keywords, red strings, gold functions */
3503
+ /* Festive syntax highlighting - green keywords, red strings, gold functions */
3504
3504
  .dm-theme-christmas-light .code-block .syntax-keyword {
3505
3505
  color: #2D6B3F;
3506
3506
  font-weight: 600;
@@ -3516,7 +3516,7 @@
3516
3516
  }
3517
3517
 
3518
3518
  /**
3519
- * Domma Christmas Dark Theme — "Christmas Eve"
3519
+ * Domma Christmas Dark Theme - "Christmas Eve"
3520
3520
  * Deep forest green backgrounds, pure moonlit-white text, green/red undertones in interaction
3521
3521
  * Bright Holly Green primary, Christmas Red secondary; firelight-ember shadows
3522
3522
  */
@@ -3535,7 +3535,7 @@
3535
3535
  --dm-surface-raised: #243A2C;
3536
3536
  --dm-surface-overlay: #243A2C;
3537
3537
 
3538
- /* Text - Pure snow white; no green tint — moonlight on fresh snow */
3538
+ /* Text - Pure snow white; no green tint - moonlight on fresh snow */
3539
3539
  --dm-text: #FFFFFF;
3540
3540
  --dm-text-secondary: #D0D0D0;
3541
3541
  --dm-text-muted: #a8a8a8;
@@ -3760,10 +3760,10 @@
3760
3760
  }
3761
3761
 
3762
3762
  /* ============================================================
3763
- DECORATIVE CSS — "Christmas Eve" festive embellishments
3763
+ DECORATIVE CSS - "Christmas Eve" festive embellishments
3764
3764
  ============================================================ */
3765
3765
 
3766
- /* Snow-dust background — three festive dot layers: white snow, green pine, red Christmas lights */
3766
+ /* Snow-dust background - three festive dot layers: white snow, green pine, red Christmas lights */
3767
3767
  .dm-theme-christmas-dark {
3768
3768
  background-image:
3769
3769
  radial-gradient(circle, rgba(255, 255, 255, 0.13) 1px, transparent 1px),
@@ -3780,7 +3780,7 @@
3780
3780
  border-image-slice: 1;
3781
3781
  }
3782
3782
 
3783
- /* Candy-stripe progress bars (default + plain variant only — variants keep their semantic colour) */
3783
+ /* Candy-stripe progress bars (default + plain variant only - variants keep their semantic colour) */
3784
3784
  .dm-theme-christmas-dark .dm-progression-progress-bar,
3785
3785
  .dm-theme-christmas-dark .progress > .progress-bar:not([class*="progress-bar-"]) {
3786
3786
  background-image: repeating-linear-gradient(
@@ -3794,7 +3794,7 @@
3794
3794
  color: #1a1a1a;
3795
3795
  }
3796
3796
 
3797
- /* Festive syntax highlighting — brighter versions for dark backgrounds */
3797
+ /* Festive syntax highlighting - brighter versions for dark backgrounds */
3798
3798
  .dm-theme-christmas-dark .code-block .syntax-keyword {
3799
3799
  color: #5CB875;
3800
3800
  font-weight: 600;
@@ -4725,7 +4725,7 @@
4725
4725
 
4726
4726
  /**
4727
4727
  * Domma Grayve Light Theme
4728
- * Slate/cyan monochrome palette — complementary light variant
4728
+ * Slate/cyan monochrome palette - complementary light variant
4729
4729
  * Light mode variant
4730
4730
  */
4731
4731
 
@@ -4959,7 +4959,7 @@
4959
4959
 
4960
4960
  /* Syntax highlighting tokens for grayve-light */
4961
4961
  .dm-theme-grayve-light .code-block .syntax-keyword {
4962
- color: #5a2dcc; /* Deep Purple — darkened for ≥4.5:1 on #f5f5f5 */
4962
+ color: #5a2dcc; /* Deep Purple - darkened for ≥4.5:1 on #f5f5f5 */
4963
4963
  font-weight: 500;
4964
4964
  }
4965
4965
 
@@ -4969,12 +4969,12 @@
4969
4969
  }
4970
4970
 
4971
4971
  .dm-theme-grayve-light .code-block .syntax-function {
4972
- color: #006873; /* Cyan — darkened for ≥4.5:1 on #f5f5f5 */
4972
+ color: #006873; /* Cyan - darkened for ≥4.5:1 on #f5f5f5 */
4973
4973
  }
4974
4974
 
4975
4975
  /**
4976
4976
  * Domma Grayve Dark Theme
4977
- * Slate/cyan monochrome palette — adapted from Bootswatch Slate
4977
+ * Slate/cyan monochrome palette - adapted from Bootswatch Slate
4978
4978
  * Dark mode variant
4979
4979
  */
4980
4980
 
@@ -5684,7 +5684,7 @@
5684
5684
 
5685
5685
  /**
5686
5686
  * Domma Wedding Light Theme
5687
- * Classic antique gold palette — warm, muted, timeless
5687
+ * Classic antique gold palette - warm, muted, timeless
5688
5688
  * Day variant - cream/ivory backgrounds with antique gold highlights
5689
5689
  */
5690
5690
 
@@ -5915,7 +5915,7 @@
5915
5915
 
5916
5916
  /**
5917
5917
  * Domma Wedding Dark Theme
5918
- * Classic antique gold palette — warm, muted, timeless
5918
+ * Classic antique gold palette - warm, muted, timeless
5919
5919
  * Evening variant - deep midnight navy with antique gold highlights
5920
5920
  */
5921
5921
 
@@ -6145,7 +6145,7 @@
6145
6145
 
6146
6146
  /**
6147
6147
  * Domma Admin Smooth · Steel Blue
6148
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
6148
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
6149
6149
  */
6150
6150
 
6151
6151
  .dm-theme-admin-smooth-steel {
@@ -6283,7 +6283,7 @@
6283
6283
 
6284
6284
  /**
6285
6285
  * Domma Admin Smooth · Indigo
6286
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
6286
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
6287
6287
  */
6288
6288
 
6289
6289
  .dm-theme-admin-smooth-indigo {
@@ -6421,7 +6421,7 @@
6421
6421
 
6422
6422
  /**
6423
6423
  * Domma Admin Smooth · Teal
6424
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
6424
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
6425
6425
  */
6426
6426
 
6427
6427
  .dm-theme-admin-smooth-teal {
@@ -6559,7 +6559,7 @@
6559
6559
 
6560
6560
  /**
6561
6561
  * Domma Admin Sharp · Steel Blue
6562
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
6562
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
6563
6563
  */
6564
6564
 
6565
6565
  .dm-theme-admin-sharp-steel {
@@ -6697,7 +6697,7 @@
6697
6697
 
6698
6698
  /**
6699
6699
  * Domma Admin Sharp · Indigo
6700
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
6700
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
6701
6701
  */
6702
6702
 
6703
6703
  .dm-theme-admin-sharp-indigo {
@@ -6835,7 +6835,7 @@
6835
6835
 
6836
6836
  /**
6837
6837
  * Domma Admin Sharp · Teal
6838
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
6838
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
6839
6839
  */
6840
6840
 
6841
6841
  .dm-theme-admin-sharp-teal {
@@ -21,11 +21,11 @@ Quick reference for Domma conventions - enforces best practices across sessions.
21
21
  8. **Confirm**: `await E.confirm('Sure?')` - NOT `window.confirm()`
22
22
  9. **Icons**: `<span data-icon="name">` + `I.scan()` - NOT manual SVG
23
23
  10. **Tables**: `T.create(selector, {data})` - NOT manual `<table>` HTML
24
- 11. **Modals**: `E.modal(selector, options)` — NOT custom modal code
25
- 12. **Templates**: `templateUrl: 'path.html'` — NOT large inline strings
26
- 13. **Tabs**: `E.tabs()`, `E.accordion()` — NOT custom switching code
27
- 14. **Init**: Call `I.scan()` after DOM ready — Domma starts itself when the bundle loads; there is no `Domma.init()`
28
- 15. **Events**: `.on()`, `.off()`, `.one()` — NOT `.addEventListener()`
24
+ 11. **Modals**: `E.modal(selector, options)` - NOT custom modal code
25
+ 12. **Templates**: `templateUrl: 'path.html'` - NOT large inline strings
26
+ 13. **Tabs**: `E.tabs()`, `E.accordion()` - NOT custom switching code
27
+ 14. **Init**: Call `I.scan()` after DOM ready - Domma starts itself when the bundle loads; there is no `Domma.init()`
28
+ 15. **Events**: `.on()`, `.off()`, `.one()` - NOT `.addEventListener()`
29
29
 
30
30
  ## Aliases Quick Reference
31
31
 
@@ -77,7 +77,7 @@ Always load CSS in this order:
77
77
  <script src="dist/domma.min.js"></script>
78
78
  <script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script> <!-- For dynamic content -->
79
79
  <script>
80
- // Domma starts itself the moment the bundle loads — it registers its web
80
+ // Domma starts itself the moment the bundle loads - it registers its web
81
81
  // components, manages the anti-FOUC cloak and defines the aliases. The only
82
82
  // startup call a page needs is the icon scan, and it must run BEFORE the app
83
83
  // scripts so `data-icon` elements in the initial markup are resolved.