domma-js 0.18.1 → 0.18.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.
package/bin/domma-cli.js CHANGED
@@ -84,26 +84,26 @@ async function handleInit() {
84
84
  let projectName = 'my-app';
85
85
  let theme = 'charcoal-dark';
86
86
  let includeThemeSelector = false;
87
- let projectMode = 'mpa'; // Default to multi-page
87
+ let projectMode = 'spa'; // Default to single-page
88
88
 
89
89
  // Determine project mode
90
- if (spaFlag) {
91
- projectMode = 'spa';
92
- } else if (mpaFlag) {
90
+ if (mpaFlag) {
93
91
  projectMode = 'mpa';
92
+ } else if (spaFlag) {
93
+ projectMode = 'spa';
94
94
  } else if (!quickMode) {
95
95
  // Prompt user to choose mode
96
96
  const rl = readline.createInterface({input, output});
97
97
 
98
98
  console.log(`\n Choose project type:`);
99
- console.log(` ❯ Multi-Page Application (MPA) - Traditional multi-page website (default)`);
100
- console.log(` Single Page Application (SPA) - Client-side routing with view switching`);
99
+ console.log(` ❯ Single Page Application (SPA) - Client-side routing with view switching (default)`);
100
+ console.log(` Multi-Page Application (MPA) - Traditional multi-page website`);
101
101
 
102
- const modeAnswer = await rl.question(`\n Enter choice (mpa/spa): `);
102
+ const modeAnswer = await rl.question(`\n Enter choice (spa/mpa): `);
103
103
  const modeInput = modeAnswer.trim().toLowerCase();
104
104
 
105
- if (modeInput === 'spa' || modeInput === 's') {
106
- projectMode = 'spa';
105
+ if (modeInput === 'mpa' || modeInput === 'm') {
106
+ projectMode = 'mpa';
107
107
  }
108
108
 
109
109
  rl.close();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.18.1",
3
+ "version": "0.18.2",
4
4
  "description": "Dynamic Object Manipulation & Modeling API - A complete front-end toolkit.",
5
5
  "main": "public/dist/domma.min.js",
6
6
  "module": "public/dist/domma.esm.js",
@@ -10,7 +10,10 @@
10
10
  },
11
11
  "files": [
12
12
  "bin/",
13
- "templates/",
13
+ "templates/kickstart/",
14
+ "templates/kickstart-spa/",
15
+ "templates/page-template/",
16
+ "templates/view-template/",
14
17
  "public/dist/domma.min.js",
15
18
  "public/dist/domma.esm.js",
16
19
  "public/dist/domma.css",
@@ -36,15 +39,16 @@
36
39
  "serve:3096": "node bin/domma-cli.js serve --port 3096",
37
40
  "dev": "NODE_ENV=development npm run generate:bundles && rollup -c && node scripts/build-info.js && npm run build:metadata && npm run copy:themes && npm run build:css && npm run build:miniapps && live-server public --port=3001 --open=/index.html",
38
41
  "dev:watch": "NODE_ENV=development npm run generate:bundles && rollup -c && node scripts/build-info.js && npm run build:metadata && npm run copy:themes && npm run build:css && npm run build:miniapps && npm run watch:miniapps",
39
- "build": "npm run generate:bundles && rollup -c && node scripts/build-info.js && npm run build:metadata && npm run copy:themes && npm run build:css && npm run build:css-bundles && npm run build:archives && npm run build:miniapps",
42
+ "build": "npm run generate:bundles && rollup -c && node scripts/build-info.js && npm run build:metadata && npm run copy:themes && npm run build:css && npm run build:css-bundles && npm run build:archives && npm run build:kickstart-files && npm run build:miniapps",
40
43
  "build:js": "rollup -c",
41
44
  "build:css": "node scripts/build-css.js",
42
45
  "build:css-bundles": "node scripts/build-css-bundles.js",
43
46
  "build:archives": "node scripts/build-archives.js",
47
+ "build:kickstart-files": "node scripts/build-kickstart-files.js",
44
48
  "build:info": "node scripts/build-info.js",
45
49
  "build:metadata": "node scripts/copy-metadata.js",
46
50
  "copy:themes": "node scripts/copy-theme-css.js",
47
- "build:miniapps": "node scripts/build-miniapp.js && node scripts/copy-miniapps.js",
51
+ "build:miniapps": "node scripts/build-miniapp.js && node scripts/copy-miniapps.js",
48
52
  "build:miniapp:garage": "node scripts/build-miniapp.js garage",
49
53
  "build:miniapp:address": "node scripts/build-miniapp.js address",
50
54
  "watch:miniapps": "node scripts/watch-miniapps.js",
@@ -2,7 +2,7 @@
2
2
  * Domma Complete CSS Bundle v0.18.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-02-23T09:18:50.943Z
5
+ * Built: 2026-02-25T21:51:20.178Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -14,8 +14,8 @@
14
14
  * Domma Core CSS v0.18.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-02-23T09:18:50.586Z
18
- * Commit: 196c31c
17
+ * Built: 2026-02-25T21:51:19.726Z
18
+ * Commit: 2eb305a
19
19
  */
20
20
 
21
21
  /**
@@ -2566,6 +2566,43 @@ code, pre {
2566
2566
  z-index: 2;
2567
2567
  }
2568
2568
 
2569
+ /* Button Group Sizes */
2570
+ .btn-group-sm > .btn,
2571
+ .btn-group-sm > .btn-group > .btn {
2572
+ padding: var(--dm-space-1) var(--dm-space-2);
2573
+ font-size: var(--dm-font-size-xs);
2574
+ line-height: 1.5;
2575
+ border-radius: 0;
2576
+ }
2577
+
2578
+ .btn-group-sm > .btn:first-child {
2579
+ border-top-left-radius: var(--dm-radius-sm);
2580
+ border-bottom-left-radius: var(--dm-radius-sm);
2581
+ }
2582
+
2583
+ .btn-group-sm > .btn:last-child {
2584
+ border-top-right-radius: var(--dm-radius-sm);
2585
+ border-bottom-right-radius: var(--dm-radius-sm);
2586
+ }
2587
+
2588
+ .btn-group-lg > .btn,
2589
+ .btn-group-lg > .btn-group > .btn {
2590
+ padding: var(--dm-space-3) var(--dm-space-6);
2591
+ font-size: var(--dm-font-size-lg);
2592
+ line-height: 1.5;
2593
+ border-radius: 0;
2594
+ }
2595
+
2596
+ .btn-group-lg > .btn:first-child {
2597
+ border-top-left-radius: var(--dm-radius-lg);
2598
+ border-bottom-left-radius: var(--dm-radius-lg);
2599
+ }
2600
+
2601
+ .btn-group-lg > .btn:last-child {
2602
+ border-top-right-radius: var(--dm-radius-lg);
2603
+ border-bottom-right-radius: var(--dm-radius-lg);
2604
+ }
2605
+
2569
2606
  /* Range Slider */
2570
2607
  .form-range {
2571
2608
  appearance: none;
@@ -4738,8 +4775,8 @@ body.dm-cloaked.dm-ready {
4738
4775
  * Domma Grid CSS v0.18.1
4739
4776
  * Dynamic Object Manipulation & Modeling API
4740
4777
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4741
- * Built: 2026-02-23T09:18:50.594Z
4742
- * Commit: 196c31c
4778
+ * Built: 2026-02-25T21:51:19.735Z
4779
+ * Commit: 2eb305a
4743
4780
  */
4744
4781
 
4745
4782
  /**
@@ -5363,8 +5400,8 @@ body.dm-cloaked.dm-ready {
5363
5400
  * Domma Elements CSS v0.18.1
5364
5401
  * Dynamic Object Manipulation & Modeling API
5365
5402
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5366
- * Built: 2026-02-23T09:18:50.605Z
5367
- * Commit: 196c31c
5403
+ * Built: 2026-02-25T21:51:19.743Z
5404
+ * Commit: 2eb305a
5368
5405
  */
5369
5406
 
5370
5407
  /**
@@ -6753,6 +6790,14 @@ textarea:not([class])::placeholder {
6753
6790
  color: var(--dm-info-dark);
6754
6791
  }
6755
6792
 
6793
+ /* In dark themes, the "-dark" colour variants are designed for light backgrounds.
6794
+ Use the base colour (readable on dark backgrounds) instead. */
6795
+ [data-mode="dark"] .alert-primary { color: var(--dm-primary); }
6796
+ [data-mode="dark"] .alert-success { color: var(--dm-success); }
6797
+ [data-mode="dark"] .alert-danger { color: var(--dm-danger); }
6798
+ [data-mode="dark"] .alert-warning { color: var(--dm-warning-text, var(--dm-warning)); }
6799
+ [data-mode="dark"] .alert-info { color: var(--dm-info); }
6800
+
6756
6801
 
6757
6802
  /* ============================================
6758
6803
  CODE BLOCK
@@ -12053,8 +12098,8 @@ code {
12053
12098
  * Domma Themes v0.18.1
12054
12099
  * Dynamic Object Manipulation & Modeling API
12055
12100
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12056
- * Built: 2026-02-23T09:18:50.559Z
12057
- * Commit: 196c31c
12101
+ * Built: 2026-02-25T21:51:19.692Z
12102
+ * Commit: 2eb305a
12058
12103
  */
12059
12104
 
12060
12105
  /**
@@ -2,7 +2,7 @@
2
2
  * Domma Data-Focused CSS Bundle v0.18.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-02-23T09:18:50.934Z
5
+ * Built: 2026-02-25T21:51:20.169Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -233,8 +233,8 @@
233
233
  * Domma Core CSS v0.18.1
234
234
  * Dynamic Object Manipulation & Modeling API
235
235
  * (c) 2026 Darryl Waterhouse & DCBW-IT
236
- * Built: 2026-02-23T09:18:50.586Z
237
- * Commit: 196c31c
236
+ * Built: 2026-02-25T21:51:19.726Z
237
+ * Commit: 2eb305a
238
238
  */
239
239
 
240
240
  /**
@@ -2785,6 +2785,43 @@ code, pre {
2785
2785
  z-index: 2;
2786
2786
  }
2787
2787
 
2788
+ /* Button Group Sizes */
2789
+ .btn-group-sm > .btn,
2790
+ .btn-group-sm > .btn-group > .btn {
2791
+ padding: var(--dm-space-1) var(--dm-space-2);
2792
+ font-size: var(--dm-font-size-xs);
2793
+ line-height: 1.5;
2794
+ border-radius: 0;
2795
+ }
2796
+
2797
+ .btn-group-sm > .btn:first-child {
2798
+ border-top-left-radius: var(--dm-radius-sm);
2799
+ border-bottom-left-radius: var(--dm-radius-sm);
2800
+ }
2801
+
2802
+ .btn-group-sm > .btn:last-child {
2803
+ border-top-right-radius: var(--dm-radius-sm);
2804
+ border-bottom-right-radius: var(--dm-radius-sm);
2805
+ }
2806
+
2807
+ .btn-group-lg > .btn,
2808
+ .btn-group-lg > .btn-group > .btn {
2809
+ padding: var(--dm-space-3) var(--dm-space-6);
2810
+ font-size: var(--dm-font-size-lg);
2811
+ line-height: 1.5;
2812
+ border-radius: 0;
2813
+ }
2814
+
2815
+ .btn-group-lg > .btn:first-child {
2816
+ border-top-left-radius: var(--dm-radius-lg);
2817
+ border-bottom-left-radius: var(--dm-radius-lg);
2818
+ }
2819
+
2820
+ .btn-group-lg > .btn:last-child {
2821
+ border-top-right-radius: var(--dm-radius-lg);
2822
+ border-bottom-right-radius: var(--dm-radius-lg);
2823
+ }
2824
+
2788
2825
  /* Range Slider */
2789
2826
  .form-range {
2790
2827
  appearance: none;
@@ -4957,8 +4994,8 @@ body.dm-cloaked.dm-ready {
4957
4994
  * Domma Grid CSS v0.18.1
4958
4995
  * Dynamic Object Manipulation & Modeling API
4959
4996
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4960
- * Built: 2026-02-23T09:18:50.594Z
4961
- * Commit: 196c31c
4997
+ * Built: 2026-02-25T21:51:19.735Z
4998
+ * Commit: 2eb305a
4962
4999
  */
4963
5000
 
4964
5001
  /**
@@ -5582,8 +5619,8 @@ body.dm-cloaked.dm-ready {
5582
5619
  * Domma Elements CSS v0.18.1
5583
5620
  * Dynamic Object Manipulation & Modeling API
5584
5621
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5585
- * Built: 2026-02-23T09:18:50.605Z
5586
- * Commit: 196c31c
5622
+ * Built: 2026-02-25T21:51:19.743Z
5623
+ * Commit: 2eb305a
5587
5624
  */
5588
5625
 
5589
5626
  /**
@@ -6972,6 +7009,14 @@ textarea:not([class])::placeholder {
6972
7009
  color: var(--dm-info-dark);
6973
7010
  }
6974
7011
 
7012
+ /* In dark themes, the "-dark" colour variants are designed for light backgrounds.
7013
+ Use the base colour (readable on dark backgrounds) instead. */
7014
+ [data-mode="dark"] .alert-primary { color: var(--dm-primary); }
7015
+ [data-mode="dark"] .alert-success { color: var(--dm-success); }
7016
+ [data-mode="dark"] .alert-danger { color: var(--dm-danger); }
7017
+ [data-mode="dark"] .alert-warning { color: var(--dm-warning-text, var(--dm-warning)); }
7018
+ [data-mode="dark"] .alert-info { color: var(--dm-info); }
7019
+
6975
7020
 
6976
7021
  /* ============================================
6977
7022
  CODE BLOCK
@@ -12272,8 +12317,8 @@ code {
12272
12317
  * Domma Themes v0.18.1
12273
12318
  * Dynamic Object Manipulation & Modeling API
12274
12319
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12275
- * Built: 2026-02-23T09:18:50.559Z
12276
- * Commit: 196c31c
12320
+ * Built: 2026-02-25T21:51:19.692Z
12321
+ * Commit: 2eb305a
12277
12322
  */
12278
12323
 
12279
12324
  /**
@@ -2,7 +2,7 @@
2
2
  * Domma Essentials CSS Bundle v0.18.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-02-23T09:18:50.919Z
5
+ * Built: 2026-02-25T21:51:20.157Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -233,8 +233,8 @@
233
233
  * Domma Core CSS v0.18.1
234
234
  * Dynamic Object Manipulation & Modeling API
235
235
  * (c) 2026 Darryl Waterhouse & DCBW-IT
236
- * Built: 2026-02-23T09:18:50.586Z
237
- * Commit: 196c31c
236
+ * Built: 2026-02-25T21:51:19.726Z
237
+ * Commit: 2eb305a
238
238
  */
239
239
 
240
240
  /**
@@ -2785,6 +2785,43 @@ code, pre {
2785
2785
  z-index: 2;
2786
2786
  }
2787
2787
 
2788
+ /* Button Group Sizes */
2789
+ .btn-group-sm > .btn,
2790
+ .btn-group-sm > .btn-group > .btn {
2791
+ padding: var(--dm-space-1) var(--dm-space-2);
2792
+ font-size: var(--dm-font-size-xs);
2793
+ line-height: 1.5;
2794
+ border-radius: 0;
2795
+ }
2796
+
2797
+ .btn-group-sm > .btn:first-child {
2798
+ border-top-left-radius: var(--dm-radius-sm);
2799
+ border-bottom-left-radius: var(--dm-radius-sm);
2800
+ }
2801
+
2802
+ .btn-group-sm > .btn:last-child {
2803
+ border-top-right-radius: var(--dm-radius-sm);
2804
+ border-bottom-right-radius: var(--dm-radius-sm);
2805
+ }
2806
+
2807
+ .btn-group-lg > .btn,
2808
+ .btn-group-lg > .btn-group > .btn {
2809
+ padding: var(--dm-space-3) var(--dm-space-6);
2810
+ font-size: var(--dm-font-size-lg);
2811
+ line-height: 1.5;
2812
+ border-radius: 0;
2813
+ }
2814
+
2815
+ .btn-group-lg > .btn:first-child {
2816
+ border-top-left-radius: var(--dm-radius-lg);
2817
+ border-bottom-left-radius: var(--dm-radius-lg);
2818
+ }
2819
+
2820
+ .btn-group-lg > .btn:last-child {
2821
+ border-top-right-radius: var(--dm-radius-lg);
2822
+ border-bottom-right-radius: var(--dm-radius-lg);
2823
+ }
2824
+
2788
2825
  /* Range Slider */
2789
2826
  .form-range {
2790
2827
  appearance: none;
@@ -4957,8 +4994,8 @@ body.dm-cloaked.dm-ready {
4957
4994
  * Domma Grid CSS v0.18.1
4958
4995
  * Dynamic Object Manipulation & Modeling API
4959
4996
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4960
- * Built: 2026-02-23T09:18:50.594Z
4961
- * Commit: 196c31c
4997
+ * Built: 2026-02-25T21:51:19.735Z
4998
+ * Commit: 2eb305a
4962
4999
  */
4963
5000
 
4964
5001
  /**
@@ -5582,8 +5619,8 @@ body.dm-cloaked.dm-ready {
5582
5619
  * Domma Elements CSS v0.18.1
5583
5620
  * Dynamic Object Manipulation & Modeling API
5584
5621
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5585
- * Built: 2026-02-23T09:18:50.605Z
5586
- * Commit: 196c31c
5622
+ * Built: 2026-02-25T21:51:19.743Z
5623
+ * Commit: 2eb305a
5587
5624
  */
5588
5625
 
5589
5626
  /**
@@ -6972,6 +7009,14 @@ textarea:not([class])::placeholder {
6972
7009
  color: var(--dm-info-dark);
6973
7010
  }
6974
7011
 
7012
+ /* In dark themes, the "-dark" colour variants are designed for light backgrounds.
7013
+ Use the base colour (readable on dark backgrounds) instead. */
7014
+ [data-mode="dark"] .alert-primary { color: var(--dm-primary); }
7015
+ [data-mode="dark"] .alert-success { color: var(--dm-success); }
7016
+ [data-mode="dark"] .alert-danger { color: var(--dm-danger); }
7017
+ [data-mode="dark"] .alert-warning { color: var(--dm-warning-text, var(--dm-warning)); }
7018
+ [data-mode="dark"] .alert-info { color: var(--dm-info); }
7019
+
6975
7020
 
6976
7021
  /* ============================================
6977
7022
  CODE BLOCK
@@ -12272,8 +12317,8 @@ code {
12272
12317
  * Domma Themes v0.18.1
12273
12318
  * Dynamic Object Manipulation & Modeling API
12274
12319
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12275
- * Built: 2026-02-23T09:18:50.559Z
12276
- * Commit: 196c31c
12320
+ * Built: 2026-02-25T21:51:19.692Z
12321
+ * Commit: 2eb305a
12277
12322
  */
12278
12323
 
12279
12324
  /**
@@ -2,7 +2,7 @@
2
2
  * Domma Full CSS Bundle v0.18.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-02-23T09:18:50.928Z
5
+ * Built: 2026-02-25T21:51:20.163Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -233,8 +233,8 @@
233
233
  * Domma Core CSS v0.18.1
234
234
  * Dynamic Object Manipulation & Modeling API
235
235
  * (c) 2026 Darryl Waterhouse & DCBW-IT
236
- * Built: 2026-02-23T09:18:50.586Z
237
- * Commit: 196c31c
236
+ * Built: 2026-02-25T21:51:19.726Z
237
+ * Commit: 2eb305a
238
238
  */
239
239
 
240
240
  /**
@@ -2785,6 +2785,43 @@ code, pre {
2785
2785
  z-index: 2;
2786
2786
  }
2787
2787
 
2788
+ /* Button Group Sizes */
2789
+ .btn-group-sm > .btn,
2790
+ .btn-group-sm > .btn-group > .btn {
2791
+ padding: var(--dm-space-1) var(--dm-space-2);
2792
+ font-size: var(--dm-font-size-xs);
2793
+ line-height: 1.5;
2794
+ border-radius: 0;
2795
+ }
2796
+
2797
+ .btn-group-sm > .btn:first-child {
2798
+ border-top-left-radius: var(--dm-radius-sm);
2799
+ border-bottom-left-radius: var(--dm-radius-sm);
2800
+ }
2801
+
2802
+ .btn-group-sm > .btn:last-child {
2803
+ border-top-right-radius: var(--dm-radius-sm);
2804
+ border-bottom-right-radius: var(--dm-radius-sm);
2805
+ }
2806
+
2807
+ .btn-group-lg > .btn,
2808
+ .btn-group-lg > .btn-group > .btn {
2809
+ padding: var(--dm-space-3) var(--dm-space-6);
2810
+ font-size: var(--dm-font-size-lg);
2811
+ line-height: 1.5;
2812
+ border-radius: 0;
2813
+ }
2814
+
2815
+ .btn-group-lg > .btn:first-child {
2816
+ border-top-left-radius: var(--dm-radius-lg);
2817
+ border-bottom-left-radius: var(--dm-radius-lg);
2818
+ }
2819
+
2820
+ .btn-group-lg > .btn:last-child {
2821
+ border-top-right-radius: var(--dm-radius-lg);
2822
+ border-bottom-right-radius: var(--dm-radius-lg);
2823
+ }
2824
+
2788
2825
  /* Range Slider */
2789
2826
  .form-range {
2790
2827
  appearance: none;
@@ -4957,8 +4994,8 @@ body.dm-cloaked.dm-ready {
4957
4994
  * Domma Grid CSS v0.18.1
4958
4995
  * Dynamic Object Manipulation & Modeling API
4959
4996
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4960
- * Built: 2026-02-23T09:18:50.594Z
4961
- * Commit: 196c31c
4997
+ * Built: 2026-02-25T21:51:19.735Z
4998
+ * Commit: 2eb305a
4962
4999
  */
4963
5000
 
4964
5001
  /**
@@ -5582,8 +5619,8 @@ body.dm-cloaked.dm-ready {
5582
5619
  * Domma Elements CSS v0.18.1
5583
5620
  * Dynamic Object Manipulation & Modeling API
5584
5621
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5585
- * Built: 2026-02-23T09:18:50.605Z
5586
- * Commit: 196c31c
5622
+ * Built: 2026-02-25T21:51:19.743Z
5623
+ * Commit: 2eb305a
5587
5624
  */
5588
5625
 
5589
5626
  /**
@@ -6972,6 +7009,14 @@ textarea:not([class])::placeholder {
6972
7009
  color: var(--dm-info-dark);
6973
7010
  }
6974
7011
 
7012
+ /* In dark themes, the "-dark" colour variants are designed for light backgrounds.
7013
+ Use the base colour (readable on dark backgrounds) instead. */
7014
+ [data-mode="dark"] .alert-primary { color: var(--dm-primary); }
7015
+ [data-mode="dark"] .alert-success { color: var(--dm-success); }
7016
+ [data-mode="dark"] .alert-danger { color: var(--dm-danger); }
7017
+ [data-mode="dark"] .alert-warning { color: var(--dm-warning-text, var(--dm-warning)); }
7018
+ [data-mode="dark"] .alert-info { color: var(--dm-info); }
7019
+
6975
7020
 
6976
7021
  /* ============================================
6977
7022
  CODE BLOCK
@@ -12272,8 +12317,8 @@ code {
12272
12317
  * Domma Themes v0.18.1
12273
12318
  * Dynamic Object Manipulation & Modeling API
12274
12319
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12275
- * Built: 2026-02-23T09:18:50.559Z
12276
- * Commit: 196c31c
12320
+ * Built: 2026-02-25T21:51:19.692Z
12321
+ * Commit: 2eb305a
12277
12322
  */
12278
12323
 
12279
12324
  /**
@@ -2,7 +2,7 @@
2
2
  * Domma Grayve Theme Preset CSS Bundle v0.18.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-02-23T09:18:50.939Z
5
+ * Built: 2026-02-25T21:51:20.174Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -233,8 +233,8 @@
233
233
  * Domma Core CSS v0.18.1
234
234
  * Dynamic Object Manipulation & Modeling API
235
235
  * (c) 2026 Darryl Waterhouse & DCBW-IT
236
- * Built: 2026-02-23T09:18:50.586Z
237
- * Commit: 196c31c
236
+ * Built: 2026-02-25T21:51:19.726Z
237
+ * Commit: 2eb305a
238
238
  */
239
239
 
240
240
  /**
@@ -2785,6 +2785,43 @@ code, pre {
2785
2785
  z-index: 2;
2786
2786
  }
2787
2787
 
2788
+ /* Button Group Sizes */
2789
+ .btn-group-sm > .btn,
2790
+ .btn-group-sm > .btn-group > .btn {
2791
+ padding: var(--dm-space-1) var(--dm-space-2);
2792
+ font-size: var(--dm-font-size-xs);
2793
+ line-height: 1.5;
2794
+ border-radius: 0;
2795
+ }
2796
+
2797
+ .btn-group-sm > .btn:first-child {
2798
+ border-top-left-radius: var(--dm-radius-sm);
2799
+ border-bottom-left-radius: var(--dm-radius-sm);
2800
+ }
2801
+
2802
+ .btn-group-sm > .btn:last-child {
2803
+ border-top-right-radius: var(--dm-radius-sm);
2804
+ border-bottom-right-radius: var(--dm-radius-sm);
2805
+ }
2806
+
2807
+ .btn-group-lg > .btn,
2808
+ .btn-group-lg > .btn-group > .btn {
2809
+ padding: var(--dm-space-3) var(--dm-space-6);
2810
+ font-size: var(--dm-font-size-lg);
2811
+ line-height: 1.5;
2812
+ border-radius: 0;
2813
+ }
2814
+
2815
+ .btn-group-lg > .btn:first-child {
2816
+ border-top-left-radius: var(--dm-radius-lg);
2817
+ border-bottom-left-radius: var(--dm-radius-lg);
2818
+ }
2819
+
2820
+ .btn-group-lg > .btn:last-child {
2821
+ border-top-right-radius: var(--dm-radius-lg);
2822
+ border-bottom-right-radius: var(--dm-radius-lg);
2823
+ }
2824
+
2788
2825
  /* Range Slider */
2789
2826
  .form-range {
2790
2827
  appearance: none;
@@ -4957,8 +4994,8 @@ body.dm-cloaked.dm-ready {
4957
4994
  * Domma Grid CSS v0.18.1
4958
4995
  * Dynamic Object Manipulation & Modeling API
4959
4996
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4960
- * Built: 2026-02-23T09:18:50.594Z
4961
- * Commit: 196c31c
4997
+ * Built: 2026-02-25T21:51:19.735Z
4998
+ * Commit: 2eb305a
4962
4999
  */
4963
5000
 
4964
5001
  /**
@@ -5582,8 +5619,8 @@ body.dm-cloaked.dm-ready {
5582
5619
  * Domma Elements CSS v0.18.1
5583
5620
  * Dynamic Object Manipulation & Modeling API
5584
5621
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5585
- * Built: 2026-02-23T09:18:50.605Z
5586
- * Commit: 196c31c
5622
+ * Built: 2026-02-25T21:51:19.743Z
5623
+ * Commit: 2eb305a
5587
5624
  */
5588
5625
 
5589
5626
  /**
@@ -6972,6 +7009,14 @@ textarea:not([class])::placeholder {
6972
7009
  color: var(--dm-info-dark);
6973
7010
  }
6974
7011
 
7012
+ /* In dark themes, the "-dark" colour variants are designed for light backgrounds.
7013
+ Use the base colour (readable on dark backgrounds) instead. */
7014
+ [data-mode="dark"] .alert-primary { color: var(--dm-primary); }
7015
+ [data-mode="dark"] .alert-success { color: var(--dm-success); }
7016
+ [data-mode="dark"] .alert-danger { color: var(--dm-danger); }
7017
+ [data-mode="dark"] .alert-warning { color: var(--dm-warning-text, var(--dm-warning)); }
7018
+ [data-mode="dark"] .alert-info { color: var(--dm-info); }
7019
+
6975
7020
 
6976
7021
  /* ============================================
6977
7022
  CODE BLOCK
@@ -12272,8 +12317,8 @@ code {
12272
12317
  * Domma Themes v0.18.1
12273
12318
  * Dynamic Object Manipulation & Modeling API
12274
12319
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12275
- * Built: 2026-02-23T09:18:50.559Z
12276
- * Commit: 196c31c
12320
+ * Built: 2026-02-25T21:51:19.692Z
12321
+ * Commit: 2eb305a
12277
12322
  */
12278
12323
 
12279
12324
  /**