domma-js 0.9.17-alpha → 0.10.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.
package/README.md CHANGED
@@ -15,7 +15,7 @@ modern UI components in one cohesive package.
15
15
  - **Models** (`M`) - Reactive data models with pub/sub events and two-way DOM binding
16
16
  - **Elements** (`E`) - 28 UI components (modals, tabs, carousels, navbars, slideovers, and more)
17
17
  - **Tables** (`T`) - DataTable-like functionality (sort, filter, paginate, export to CSV/JSON)
18
- - **Forms** (`F`) - Schema-driven form generation with validation, wizards, and CRUD helpers
18
+ - **Forms** (`F`) - Blueprint-driven form generation with validation, wizards, and CRUD helpers
19
19
  - **Icons** (`I`) - 200+ SVG icons in 15 categories with auto-scan
20
20
  - **HTTP Client** (`H`) - Simple async HTTP requests with JSON handling
21
21
  - **Storage** (`S`) - localStorage wrapper with auto JSON serialization
@@ -69,17 +69,47 @@ const { $, _, M, D } = Domma;
69
69
 
70
70
  For quick prototyping without npm:
71
71
 
72
+ **Option 1: Official CDN (Recommended)**
73
+
74
+ ```html
75
+ <!-- CSS (Load in this order) -->
76
+ <link rel="stylesheet" href="https://dommajs.org/dist/domma.css">
77
+ <link rel="stylesheet" href="https://dommajs.org/dist/grid.css">
78
+ <link rel="stylesheet" href="https://dommajs.org/dist/elements.css">
79
+ <link rel="stylesheet" href="https://dommajs.org/dist/themes/domma-themes.css">
80
+
81
+ <!-- JavaScript -->
82
+ <script src="https://dommajs.org/dist/domma.min.js"></script>
83
+ ```
84
+
85
+ **Option 2: unpkg CDN**
86
+
72
87
  ```html
73
88
  <!-- CSS -->
74
- <link rel="stylesheet" href="https://unpkg.com/domma-js/public/dist/domma.css">
75
- <link rel="stylesheet" href="https://unpkg.com/domma-js/public/dist/grid.css">
76
- <link rel="stylesheet" href="https://unpkg.com/domma-js/public/dist/elements.css">
77
- <link rel="stylesheet" href="https://unpkg.com/domma-js/public/dist/themes/domma-themes.css">
89
+ <link rel="stylesheet" href="https://unpkg.com/domma-js@latest/public/dist/domma.css">
90
+ <link rel="stylesheet" href="https://unpkg.com/domma-js@latest/public/dist/grid.css">
91
+ <link rel="stylesheet" href="https://unpkg.com/domma-js@latest/public/dist/elements.css">
92
+ <link rel="stylesheet" href="https://unpkg.com/domma-js@latest/public/dist/themes/domma-themes.css">
78
93
 
79
94
  <!-- JavaScript -->
80
- <script src="https://unpkg.com/domma-js/public/dist/domma.min.js"></script>
95
+ <script src="https://unpkg.com/domma-js@latest/public/dist/domma.min.js"></script>
81
96
  ```
82
97
 
98
+ **Option 3: jsDelivr CDN**
99
+
100
+ ```html
101
+ <!-- CSS -->
102
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/domma-js@latest/public/dist/domma.css">
103
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/domma-js@latest/public/dist/grid.css">
104
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/domma-js@latest/public/dist/elements.css">
105
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/domma-js@latest/public/dist/themes/domma-themes.css">
106
+
107
+ <!-- JavaScript -->
108
+ <script src="https://cdn.jsdelivr.net/npm/domma-js@latest/public/dist/domma.min.js"></script>
109
+ ```
110
+
111
+ > **Tip:** Replace `@latest` with a specific version (e.g., `@0.9.18`) for production to ensure stability.
112
+
83
113
  ## Live Demo
84
114
 
85
115
  🚀 **[Try Domma Online](https://dommajs.org/)** - Interactive showcase with 40+ examples
@@ -91,19 +121,20 @@ Explore all features:
91
121
 
92
122
  ## Short Aliases
93
123
 
94
- | Namespace | Full Path | Alias | Description |
95
- |-----------|-------------------|-------|-------------------------------|
96
- | DOM | `Domma()` | `$` | jQuery-style DOM manipulation |
97
- | Utils | `Domma.utils` | `_` | Lodash-style utilities |
98
- | Models | `Domma.models` | `M` | Reactive models & pub/sub |
99
- | Dates | `Domma.dates` | `D` | Date manipulation |
100
- | Storage | `Domma.storage` | `S` | localStorage wrapper |
101
- | Auth | `Domma.auth` | `A` | Authentication module |
102
- | Forms | `Domma.forms` | `F` | Form builder |
103
- | HTTP | `Domma.http` | `H` | HTTP client |
104
- | Elements | `Domma.elements` | `E` | UI components |
105
- | Icons | `Domma.icons` | `I` | SVG icon system |
106
- | Tables | `Domma.tables` | `T` | DataTable functionality |
124
+ | Namespace | Full Path | Alias | Description |
125
+ |------------|-------------------|-------|------------------------------------------|
126
+ | DOM | `Domma()` | `$` | jQuery-style DOM manipulation |
127
+ | Utils | `Domma.utils` | `_` | Lodash-style utilities |
128
+ | Models | `Domma.models` | `M` | Reactive models & pub/sub |
129
+ | Blueprints | Blueprint Methods | `B` | Blueprint composition (extend, pick, omit) |
130
+ | Dates | `Domma.dates` | `D` | Date manipulation |
131
+ | Storage | `Domma.storage` | `S` | localStorage wrapper |
132
+ | Auth | `Domma.auth` | `A` | Authentication module |
133
+ | Forms | `Domma.forms` | `F` | Form builder |
134
+ | HTTP | `Domma.http` | `H` | HTTP client |
135
+ | Elements | `Domma.elements` | `E` | UI components |
136
+ | Icons | `Domma.icons` | `I` | SVG icon system |
137
+ | Tables | `Domma.tables` | `T` | DataTable functionality |
107
138
 
108
139
  ## Bundle Options
109
140
 
@@ -117,10 +148,20 @@ Choose the right bundle for your needs:
117
148
  | **data-focused** | 190KB | Core + models, tables, http, storage |
118
149
  | **no-ui** | 41KB | Core utilities only (DOM + utils) |
119
150
 
120
- ```javascript
121
- // Use specific bundles via CDN
122
- <script src="https://unpkg.com/domma-js/public/dist/domma-minimal.min.js"></script>
123
- <script src="https://unpkg.com/domma-js/public/dist/domma-essentials.min.js"></script>
151
+ ```html
152
+ <!-- Use specific bundles via CDN -->
153
+ <!-- Minimal bundle (163KB) -->
154
+ <script src="https://dommajs.org/dist/domma-minimal.min.js"></script>
155
+
156
+ <!-- Essentials bundle (328KB) -->
157
+ <script src="https://dommajs.org/dist/domma-essentials.min.js"></script>
158
+
159
+ <!-- Data-focused bundle (190KB) -->
160
+ <script src="https://dommajs.org/dist/domma-data-focused.min.js"></script>
161
+
162
+ <!-- Via unpkg -->
163
+ <script src="https://unpkg.com/domma-js@latest/public/dist/domma-minimal.min.js"></script>
164
+ <script src="https://unpkg.com/domma-js@latest/public/dist/domma-essentials.min.js"></script>
124
165
  ```
125
166
 
126
167
  ## Quick Start
@@ -239,8 +280,11 @@ Domma.theme.init({ autoDetect: true });
239
280
  Domma includes powerful developer tools in a separate bundle.
240
281
 
241
282
  ```html
242
- <!-- Load tools bundle -->
243
- <script src="dist/domma-tools.min.js"></script>
283
+ <!-- Load tools bundle via CDN -->
284
+ <script src="https://dommajs.org/dist/domma-tools.min.js"></script>
285
+
286
+ <!-- Or via unpkg -->
287
+ <script src="https://unpkg.com/domma-js@latest/public/dist/domma-tools.min.js"></script>
244
288
  ```
245
289
 
246
290
  **Theme Roller** - Visual theme customization tool:
@@ -530,10 +574,10 @@ table.toJSON();
530
574
 
531
575
  ### Forms (`F` or `Domma.forms`)
532
576
 
533
- Schema-driven form generation with validation, wizards, and CRUD helpers.
577
+ Blueprint-driven form generation with validation, wizards, and CRUD helpers.
534
578
 
535
579
  ```javascript
536
- // Schema-driven form
580
+ // Blueprint-driven form
537
581
  const form = F.create('#user-form', {
538
582
  fields: [
539
583
  { name: 'name', type: 'string', label: 'Full Name', required: true },
@@ -558,7 +602,7 @@ const wizard = F.wizard('#registration', {
558
602
  // CRUD helper
559
603
  const crud = F.crud({
560
604
  apiUrl: '/api/users',
561
- fields: schema,
605
+ fields: blueprint,
562
606
  table: '#users-table'
563
607
  });
564
608
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.9.17-alpha",
3
+ "version": "0.10.0",
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",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "repository": {
28
28
  "type": "git",
29
- "url": "git+https://github.com/USERNAME/REPOSITORY.git"
29
+ "url": "git+https://github.com/pinpointzero73/domma.git"
30
30
  },
31
31
  "type": "module",
32
32
  "scripts": {
@@ -43,6 +43,10 @@
43
43
  "build:miniapps": "node scripts/build-miniapp.js && node scripts/copy-miniapps.js",
44
44
  "build:miniapp:garage": "node scripts/build-miniapp.js garage",
45
45
  "generate:bundles": "node scripts/generate-bundles.js",
46
+ "release": "bash scripts/release.sh",
47
+ "release:patch": "npm version patch && npm run release",
48
+ "release:minor": "npm version minor && npm run release",
49
+ "release:major": "npm version major && npm run release",
46
50
  "test:vitest": "vitest",
47
51
  "test": "vitest",
48
52
  "cypress:run": "cypress run"
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.9.13-alpha
2
+ * Domma Complete CSS Bundle v0.10.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-01-20T16:05:41.766Z
5
+ * Built: 2026-01-23T16:46:59.810Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.9.13-alpha
14
+ * Domma Core CSS v0.10.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-01-20T16:05:41.437Z
18
- * Commit: d09e759
17
+ * Built: 2026-01-23T16:46:59.402Z
18
+ * Commit: e2a2ded
19
19
  */
20
20
 
21
21
  /**
@@ -4016,11 +4016,11 @@ body.dm-cloaked.dm-ready {
4016
4016
  ============================================ */
4017
4017
 
4018
4018
  /*!
4019
- * Domma Grid CSS v0.9.13-alpha
4019
+ * Domma Grid CSS v0.10.0
4020
4020
  * Dynamic Object Manipulation & Modeling API
4021
4021
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4022
- * Built: 2026-01-20T16:05:41.445Z
4023
- * Commit: d09e759
4022
+ * Built: 2026-01-23T16:46:59.410Z
4023
+ * Commit: e2a2ded
4024
4024
  */
4025
4025
 
4026
4026
  /**
@@ -4617,11 +4617,11 @@ body.dm-cloaked.dm-ready {
4617
4617
  ============================================ */
4618
4618
 
4619
4619
  /*!
4620
- * Domma Elements CSS v0.9.13-alpha
4620
+ * Domma Elements CSS v0.10.0
4621
4621
  * Dynamic Object Manipulation & Modeling API
4622
4622
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4623
- * Built: 2026-01-20T16:05:41.453Z
4624
- * Commit: d09e759
4623
+ * Built: 2026-01-23T16:46:59.420Z
4624
+ * Commit: e2a2ded
4625
4625
  */
4626
4626
 
4627
4627
  /**
@@ -5573,38 +5573,66 @@ textarea:not([class])::placeholder {
5573
5573
 
5574
5574
  .input-group-icon > .input-group-addon {
5575
5575
  position: absolute;
5576
- top: 50%;
5577
- transform: translateY(-50%);
5578
- pointer-events: none;
5579
- z-index: 1;
5576
+ top: 0;
5577
+ bottom: 0;
5580
5578
  display: flex;
5581
5579
  align-items: center;
5582
- color: var(--dm-gray-500);
5580
+ justify-content: center;
5581
+ pointer-events: none;
5582
+ z-index: 1;
5583
+ color: var(--dm-gray-600);
5584
+ background-color: var(--dm-gray-100);
5585
+ padding: 0 var(--dm-space-3);
5583
5586
  }
5584
5587
 
5585
5588
  .input-group-icon > .input-group-addon-left {
5586
- left: var(--dm-space-3);
5589
+ left: 0;
5590
+ border-right: 1px solid var(--dm-border, var(--dm-gray-300));
5591
+ border-top-left-radius: var(--dm-radius-md);
5592
+ border-bottom-left-radius: var(--dm-radius-md);
5587
5593
  }
5588
5594
 
5589
5595
  .input-group-icon > .input-group-addon-right {
5590
- right: var(--dm-space-3);
5596
+ right: 0;
5597
+ border-left: 1px solid var(--dm-border, var(--dm-gray-300));
5598
+ border-top-right-radius: var(--dm-radius-md);
5599
+ border-bottom-right-radius: var(--dm-radius-md);
5600
+ }
5601
+
5602
+ /* Dark theme variants */
5603
+ [class*="-dark"] .input-group-icon > .input-group-addon {
5604
+ color: var(--dm-gray-400);
5605
+ background-color: var(--dm-gray-800);
5606
+ border-color: var(--dm-gray-600);
5591
5607
  }
5592
5608
 
5593
5609
  /* Adjust input padding when icon is present */
5594
5610
  .input-group-icon.has-addon-left > .form-input,
5595
- .input-group-icon.has-addon-left > input {
5596
- padding-left: 2.75rem;
5611
+ .input-group-icon.has-addon-left > .form-select,
5612
+ .input-group-icon.has-addon-left > .form-textarea,
5613
+ .input-group-icon.has-addon-left > input,
5614
+ .input-group-icon.has-addon-left > select,
5615
+ .input-group-icon.has-addon-left > textarea {
5616
+ padding-left: 3.5rem;
5597
5617
  }
5598
5618
 
5599
5619
  .input-group-icon.has-addon-right > .form-input,
5600
- .input-group-icon.has-addon-right > input {
5601
- padding-right: 2.75rem;
5620
+ .input-group-icon.has-addon-right > .form-select,
5621
+ .input-group-icon.has-addon-right > .form-textarea,
5622
+ .input-group-icon.has-addon-right > input,
5623
+ .input-group-icon.has-addon-right > select,
5624
+ .input-group-icon.has-addon-right > textarea {
5625
+ padding-right: 3.5rem;
5602
5626
  }
5603
5627
 
5604
5628
  .input-group-icon.has-addon-left.has-addon-right > .form-input,
5605
- .input-group-icon.has-addon-left.has-addon-right > input {
5606
- padding-left: 2.75rem;
5607
- padding-right: 2.75rem;
5629
+ .input-group-icon.has-addon-left.has-addon-right > .form-select,
5630
+ .input-group-icon.has-addon-left.has-addon-right > .form-textarea,
5631
+ .input-group-icon.has-addon-left.has-addon-right > input,
5632
+ .input-group-icon.has-addon-left.has-addon-right > select,
5633
+ .input-group-icon.has-addon-left.has-addon-right > textarea {
5634
+ padding-left: 3.5rem;
5635
+ padding-right: 3.5rem;
5608
5636
  }
5609
5637
 
5610
5638
  /* Prepend/Append style (addon outside input) */
@@ -5683,21 +5711,21 @@ textarea:not([class])::placeholder {
5683
5711
  }
5684
5712
 
5685
5713
  .input-group-sm.input-group-icon.has-addon-left > .form-input,
5686
- .input-group-sm.input-group-icon.has-addon-left > input {
5687
- padding-left: 2rem;
5714
+ .input-group-sm.input-group-icon.has-addon-left > .form-select,
5715
+ .input-group-sm.input-group-icon.has-addon-left > .form-textarea,
5716
+ .input-group-sm.input-group-icon.has-addon-left > input,
5717
+ .input-group-sm.input-group-icon.has-addon-left > select,
5718
+ .input-group-sm.input-group-icon.has-addon-left > textarea {
5719
+ padding-left: 2.75rem;
5688
5720
  }
5689
5721
 
5690
5722
  .input-group-sm.input-group-icon.has-addon-right > .form-input,
5691
- .input-group-sm.input-group-icon.has-addon-right > input {
5692
- padding-right: 2rem;
5693
- }
5694
-
5695
- .input-group-sm .input-group-addon-left {
5696
- left: var(--dm-space-2);
5697
- }
5698
-
5699
- .input-group-sm .input-group-addon-right {
5700
- right: var(--dm-space-2);
5723
+ .input-group-sm.input-group-icon.has-addon-right > .form-select,
5724
+ .input-group-sm.input-group-icon.has-addon-right > .form-textarea,
5725
+ .input-group-sm.input-group-icon.has-addon-right > input,
5726
+ .input-group-sm.input-group-icon.has-addon-right > select,
5727
+ .input-group-sm.input-group-icon.has-addon-right > textarea {
5728
+ padding-right: 2.75rem;
5701
5729
  }
5702
5730
 
5703
5731
  .input-group-lg .input-group-text {
@@ -5712,21 +5740,21 @@ textarea:not([class])::placeholder {
5712
5740
  }
5713
5741
 
5714
5742
  .input-group-lg.input-group-icon.has-addon-left > .form-input,
5715
- .input-group-lg.input-group-icon.has-addon-left > input {
5716
- padding-left: 3.5rem;
5743
+ .input-group-lg.input-group-icon.has-addon-left > .form-select,
5744
+ .input-group-lg.input-group-icon.has-addon-left > .form-textarea,
5745
+ .input-group-lg.input-group-icon.has-addon-left > input,
5746
+ .input-group-lg.input-group-icon.has-addon-left > select,
5747
+ .input-group-lg.input-group-icon.has-addon-left > textarea {
5748
+ padding-left: 4rem;
5717
5749
  }
5718
5750
 
5719
5751
  .input-group-lg.input-group-icon.has-addon-right > .form-input,
5720
- .input-group-lg.input-group-icon.has-addon-right > input {
5721
- padding-right: 3.5rem;
5722
- }
5723
-
5724
- .input-group-lg .input-group-addon-left {
5725
- left: var(--dm-space-4);
5726
- }
5727
-
5728
- .input-group-lg .input-group-addon-right {
5729
- right: var(--dm-space-4);
5752
+ .input-group-lg.input-group-icon.has-addon-right > .form-select,
5753
+ .input-group-lg.input-group-icon.has-addon-right > .form-textarea,
5754
+ .input-group-lg.input-group-icon.has-addon-right > input,
5755
+ .input-group-lg.input-group-icon.has-addon-right > select,
5756
+ .input-group-lg.input-group-icon.has-addon-right > textarea {
5757
+ padding-right: 4rem;
5730
5758
  }
5731
5759
 
5732
5760
  /* Dark theme support */
@@ -5736,10 +5764,6 @@ textarea:not([class])::placeholder {
5736
5764
  border-color: var(--dm-gray-600);
5737
5765
  }
5738
5766
 
5739
- [class*="-dark"].input-group-icon > .input-group-addon {
5740
- color: var(--dm-gray-400);
5741
- }
5742
-
5743
5767
  /* Focus state - highlight addon when input is focused */
5744
5768
  .input-group-icon:focus-within > .input-group-addon {
5745
5769
  color: var(--dm-primary);
@@ -11163,11 +11187,11 @@ code {
11163
11187
  ============================================ */
11164
11188
 
11165
11189
  /*!
11166
- * Domma Themes v0.9.13-alpha
11190
+ * Domma Themes v0.10.0
11167
11191
  * Dynamic Object Manipulation & Modeling API
11168
11192
  * (c) 2026 Darryl Waterhouse & DCBW-IT
11169
- * Built: 2026-01-20T16:05:41.403Z
11170
- * Commit: d09e759
11193
+ * Built: 2026-01-23T16:46:59.375Z
11194
+ * Commit: e2a2ded
11171
11195
  */
11172
11196
 
11173
11197
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Data-Focused CSS Bundle v0.9.13-alpha
2
+ * Domma Data-Focused CSS Bundle v0.10.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-01-20T16:05:41.757Z
5
+ * Built: 2026-01-23T16:46:59.796Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -230,11 +230,11 @@
230
230
  ============================================ */
231
231
 
232
232
  /*!
233
- * Domma Core CSS v0.9.13-alpha
233
+ * Domma Core CSS v0.10.0
234
234
  * Dynamic Object Manipulation & Modeling API
235
235
  * (c) 2026 Darryl Waterhouse & DCBW-IT
236
- * Built: 2026-01-20T16:05:41.437Z
237
- * Commit: d09e759
236
+ * Built: 2026-01-23T16:46:59.402Z
237
+ * Commit: e2a2ded
238
238
  */
239
239
 
240
240
  /**
@@ -4235,11 +4235,11 @@ body.dm-cloaked.dm-ready {
4235
4235
  ============================================ */
4236
4236
 
4237
4237
  /*!
4238
- * Domma Grid CSS v0.9.13-alpha
4238
+ * Domma Grid CSS v0.10.0
4239
4239
  * Dynamic Object Manipulation & Modeling API
4240
4240
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4241
- * Built: 2026-01-20T16:05:41.445Z
4242
- * Commit: d09e759
4241
+ * Built: 2026-01-23T16:46:59.410Z
4242
+ * Commit: e2a2ded
4243
4243
  */
4244
4244
 
4245
4245
  /**
@@ -4836,11 +4836,11 @@ body.dm-cloaked.dm-ready {
4836
4836
  ============================================ */
4837
4837
 
4838
4838
  /*!
4839
- * Domma Elements CSS v0.9.13-alpha
4839
+ * Domma Elements CSS v0.10.0
4840
4840
  * Dynamic Object Manipulation & Modeling API
4841
4841
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4842
- * Built: 2026-01-20T16:05:41.453Z
4843
- * Commit: d09e759
4842
+ * Built: 2026-01-23T16:46:59.420Z
4843
+ * Commit: e2a2ded
4844
4844
  */
4845
4845
 
4846
4846
  /**
@@ -5792,38 +5792,66 @@ textarea:not([class])::placeholder {
5792
5792
 
5793
5793
  .input-group-icon > .input-group-addon {
5794
5794
  position: absolute;
5795
- top: 50%;
5796
- transform: translateY(-50%);
5797
- pointer-events: none;
5798
- z-index: 1;
5795
+ top: 0;
5796
+ bottom: 0;
5799
5797
  display: flex;
5800
5798
  align-items: center;
5801
- color: var(--dm-gray-500);
5799
+ justify-content: center;
5800
+ pointer-events: none;
5801
+ z-index: 1;
5802
+ color: var(--dm-gray-600);
5803
+ background-color: var(--dm-gray-100);
5804
+ padding: 0 var(--dm-space-3);
5802
5805
  }
5803
5806
 
5804
5807
  .input-group-icon > .input-group-addon-left {
5805
- left: var(--dm-space-3);
5808
+ left: 0;
5809
+ border-right: 1px solid var(--dm-border, var(--dm-gray-300));
5810
+ border-top-left-radius: var(--dm-radius-md);
5811
+ border-bottom-left-radius: var(--dm-radius-md);
5806
5812
  }
5807
5813
 
5808
5814
  .input-group-icon > .input-group-addon-right {
5809
- right: var(--dm-space-3);
5815
+ right: 0;
5816
+ border-left: 1px solid var(--dm-border, var(--dm-gray-300));
5817
+ border-top-right-radius: var(--dm-radius-md);
5818
+ border-bottom-right-radius: var(--dm-radius-md);
5819
+ }
5820
+
5821
+ /* Dark theme variants */
5822
+ [class*="-dark"] .input-group-icon > .input-group-addon {
5823
+ color: var(--dm-gray-400);
5824
+ background-color: var(--dm-gray-800);
5825
+ border-color: var(--dm-gray-600);
5810
5826
  }
5811
5827
 
5812
5828
  /* Adjust input padding when icon is present */
5813
5829
  .input-group-icon.has-addon-left > .form-input,
5814
- .input-group-icon.has-addon-left > input {
5815
- padding-left: 2.75rem;
5830
+ .input-group-icon.has-addon-left > .form-select,
5831
+ .input-group-icon.has-addon-left > .form-textarea,
5832
+ .input-group-icon.has-addon-left > input,
5833
+ .input-group-icon.has-addon-left > select,
5834
+ .input-group-icon.has-addon-left > textarea {
5835
+ padding-left: 3.5rem;
5816
5836
  }
5817
5837
 
5818
5838
  .input-group-icon.has-addon-right > .form-input,
5819
- .input-group-icon.has-addon-right > input {
5820
- padding-right: 2.75rem;
5839
+ .input-group-icon.has-addon-right > .form-select,
5840
+ .input-group-icon.has-addon-right > .form-textarea,
5841
+ .input-group-icon.has-addon-right > input,
5842
+ .input-group-icon.has-addon-right > select,
5843
+ .input-group-icon.has-addon-right > textarea {
5844
+ padding-right: 3.5rem;
5821
5845
  }
5822
5846
 
5823
5847
  .input-group-icon.has-addon-left.has-addon-right > .form-input,
5824
- .input-group-icon.has-addon-left.has-addon-right > input {
5825
- padding-left: 2.75rem;
5826
- padding-right: 2.75rem;
5848
+ .input-group-icon.has-addon-left.has-addon-right > .form-select,
5849
+ .input-group-icon.has-addon-left.has-addon-right > .form-textarea,
5850
+ .input-group-icon.has-addon-left.has-addon-right > input,
5851
+ .input-group-icon.has-addon-left.has-addon-right > select,
5852
+ .input-group-icon.has-addon-left.has-addon-right > textarea {
5853
+ padding-left: 3.5rem;
5854
+ padding-right: 3.5rem;
5827
5855
  }
5828
5856
 
5829
5857
  /* Prepend/Append style (addon outside input) */
@@ -5902,21 +5930,21 @@ textarea:not([class])::placeholder {
5902
5930
  }
5903
5931
 
5904
5932
  .input-group-sm.input-group-icon.has-addon-left > .form-input,
5905
- .input-group-sm.input-group-icon.has-addon-left > input {
5906
- padding-left: 2rem;
5933
+ .input-group-sm.input-group-icon.has-addon-left > .form-select,
5934
+ .input-group-sm.input-group-icon.has-addon-left > .form-textarea,
5935
+ .input-group-sm.input-group-icon.has-addon-left > input,
5936
+ .input-group-sm.input-group-icon.has-addon-left > select,
5937
+ .input-group-sm.input-group-icon.has-addon-left > textarea {
5938
+ padding-left: 2.75rem;
5907
5939
  }
5908
5940
 
5909
5941
  .input-group-sm.input-group-icon.has-addon-right > .form-input,
5910
- .input-group-sm.input-group-icon.has-addon-right > input {
5911
- padding-right: 2rem;
5912
- }
5913
-
5914
- .input-group-sm .input-group-addon-left {
5915
- left: var(--dm-space-2);
5916
- }
5917
-
5918
- .input-group-sm .input-group-addon-right {
5919
- right: var(--dm-space-2);
5942
+ .input-group-sm.input-group-icon.has-addon-right > .form-select,
5943
+ .input-group-sm.input-group-icon.has-addon-right > .form-textarea,
5944
+ .input-group-sm.input-group-icon.has-addon-right > input,
5945
+ .input-group-sm.input-group-icon.has-addon-right > select,
5946
+ .input-group-sm.input-group-icon.has-addon-right > textarea {
5947
+ padding-right: 2.75rem;
5920
5948
  }
5921
5949
 
5922
5950
  .input-group-lg .input-group-text {
@@ -5931,21 +5959,21 @@ textarea:not([class])::placeholder {
5931
5959
  }
5932
5960
 
5933
5961
  .input-group-lg.input-group-icon.has-addon-left > .form-input,
5934
- .input-group-lg.input-group-icon.has-addon-left > input {
5935
- padding-left: 3.5rem;
5962
+ .input-group-lg.input-group-icon.has-addon-left > .form-select,
5963
+ .input-group-lg.input-group-icon.has-addon-left > .form-textarea,
5964
+ .input-group-lg.input-group-icon.has-addon-left > input,
5965
+ .input-group-lg.input-group-icon.has-addon-left > select,
5966
+ .input-group-lg.input-group-icon.has-addon-left > textarea {
5967
+ padding-left: 4rem;
5936
5968
  }
5937
5969
 
5938
5970
  .input-group-lg.input-group-icon.has-addon-right > .form-input,
5939
- .input-group-lg.input-group-icon.has-addon-right > input {
5940
- padding-right: 3.5rem;
5941
- }
5942
-
5943
- .input-group-lg .input-group-addon-left {
5944
- left: var(--dm-space-4);
5945
- }
5946
-
5947
- .input-group-lg .input-group-addon-right {
5948
- right: var(--dm-space-4);
5971
+ .input-group-lg.input-group-icon.has-addon-right > .form-select,
5972
+ .input-group-lg.input-group-icon.has-addon-right > .form-textarea,
5973
+ .input-group-lg.input-group-icon.has-addon-right > input,
5974
+ .input-group-lg.input-group-icon.has-addon-right > select,
5975
+ .input-group-lg.input-group-icon.has-addon-right > textarea {
5976
+ padding-right: 4rem;
5949
5977
  }
5950
5978
 
5951
5979
  /* Dark theme support */
@@ -5955,10 +5983,6 @@ textarea:not([class])::placeholder {
5955
5983
  border-color: var(--dm-gray-600);
5956
5984
  }
5957
5985
 
5958
- [class*="-dark"].input-group-icon > .input-group-addon {
5959
- color: var(--dm-gray-400);
5960
- }
5961
-
5962
5986
  /* Focus state - highlight addon when input is focused */
5963
5987
  .input-group-icon:focus-within > .input-group-addon {
5964
5988
  color: var(--dm-primary);
@@ -11382,11 +11406,11 @@ code {
11382
11406
  ============================================ */
11383
11407
 
11384
11408
  /*!
11385
- * Domma Themes v0.9.13-alpha
11409
+ * Domma Themes v0.10.0
11386
11410
  * Dynamic Object Manipulation & Modeling API
11387
11411
  * (c) 2026 Darryl Waterhouse & DCBW-IT
11388
- * Built: 2026-01-20T16:05:41.403Z
11389
- * Commit: d09e759
11412
+ * Built: 2026-01-23T16:46:59.375Z
11413
+ * Commit: e2a2ded
11390
11414
  */
11391
11415
 
11392
11416
  /**