domma-js 0.44.0 → 0.44.1

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
@@ -41,7 +41,7 @@ repository is simply one consumer of each.
41
41
  | Package | What it is | Where it lives |
42
42
  |---------|-----------|----------------|
43
43
  | [`domma-reactive`](https://www.npmjs.com/package/domma-reactive) | Dependency-tracked reactivity and fine-grained DOM bindings - the engine beneath `M.observable`, `M.computed` and `M.applyBindings` | Bundled into `domma.min.js`; [repo](https://github.com/pinpointzero73/domma-reactive) |
44
- | `domma-celebrate` | Eight seasonal celebration themes and their canvas engine, code-split so each theme loads only when it is in season | Served from `dist/celebrate/` on dommajs.org |
44
+ | [`domma-celebrate`](https://www.npmjs.com/package/domma-celebrate) | Eight seasonal celebration themes and their canvas engine, code-split so each theme loads only when it is in season | Copied into `dist/celebrate/` at build time; [repo](https://github.com/pinpointzero73/domma-celebrate) |
45
45
 
46
46
  **`domma-reactive` has moved out.** The reactive core was extracted into a standalone MIT-licensed package
47
47
  and is now consumed from the npm registry rather than lived in this repository. Nothing changes for Domma
@@ -51,7 +51,8 @@ usable on its own - about 20 KB gzipped, no dependencies, no build step - in pro
51
51
  without the rest of the framework.
52
52
 
53
53
  ```bash
54
- npm install domma-reactive # reactivity and bindings, standalone
54
+ npm install domma-reactive # reactivity and bindings, standalone
55
+ npm install domma-celebrate # seasonal celebrations, standalone
55
56
  ```
56
57
 
57
58
  ## Installation
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.44.0",
3
+ "version": "0.44.1",
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",
@@ -87,7 +87,7 @@
87
87
  "@rollup/plugin-terser": "^0.4.4",
88
88
  "@vitest/coverage-v8": "^4.0.16",
89
89
  "cypress": "^15.8.1",
90
- "domma-celebrate": "file:../domma-celebrate",
90
+ "domma-celebrate": "^1.0.0",
91
91
  "domma-reactive": "1.0.1",
92
92
  "dompurify": "^3.4.13",
93
93
  "dotenv": "^17.2.3",
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.44.0
2
+ * Domma Complete CSS Bundle v0.44.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-09-22T03:19:19.495Z
5
+ * Built: 2026-09-23T16:22:37.658Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.44.0
14
+ * Domma Core CSS v0.44.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-09-22T03:19:19.324Z
18
- * Commit: a452582
17
+ * Built: 2026-09-23T16:22:37.523Z
18
+ * Commit: 7c54327
19
19
  */
20
20
 
21
21
  /**
@@ -393,12 +393,9 @@
393
393
  --dm-autocomplete-item-active: var(--dm-selected-bg);
394
394
  --dm-autocomplete-highlight: var(--dm-primary-light);
395
395
 
396
- /* Pillbox */
397
- --dm-pillbox-bg: var(--dm-surface);
398
- --dm-pillbox-border: var(--dm-border);
399
- --dm-pill-bg: var(--dm-gray-200);
400
- --dm-pill-color: var(--dm-text);
401
- --dm-pill-hover-bg: var(--dm-gray-300);
396
+ /* Pillbox: --dm-pillbox-bg, --dm-pillbox-border, --dm-pill-bg,
397
+ --dm-pill-color and --dm-pill-hover-bg are read with their defaults as
398
+ fallbacks in elements.css, so they follow the theme on <body>. */
402
399
 
403
400
  /* Tabs */
404
401
  --dm-tab-border: var(--dm-border);
@@ -4838,11 +4835,11 @@ body.dm-cloaked.dm-ready {
4838
4835
  ============================================ */
4839
4836
 
4840
4837
  /*!
4841
- * Domma Grid CSS v0.44.0
4838
+ * Domma Grid CSS v0.44.1
4842
4839
  * Dynamic Object Manipulation & Modeling API
4843
4840
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4844
- * Built: 2026-09-22T03:19:19.327Z
4845
- * Commit: a452582
4841
+ * Built: 2026-09-23T16:22:37.526Z
4842
+ * Commit: 7c54327
4846
4843
  */
4847
4844
 
4848
4845
  /**
@@ -5463,11 +5460,11 @@ body.dm-cloaked.dm-ready {
5463
5460
  ============================================ */
5464
5461
 
5465
5462
  /*!
5466
- * Domma Elements CSS v0.44.0
5463
+ * Domma Elements CSS v0.44.1
5467
5464
  * Dynamic Object Manipulation & Modeling API
5468
5465
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5469
- * Built: 2026-09-22T03:19:19.332Z
5470
- * Commit: a452582
5466
+ * Built: 2026-09-23T16:22:37.530Z
5467
+ * Commit: 7c54327
5471
5468
  */
5472
5469
 
5473
5470
  /**
@@ -8249,11 +8246,12 @@ code {
8249
8246
  .dm-pillbox-container {
8250
8247
  display: flex;
8251
8248
  flex-wrap: wrap;
8249
+ align-items: center;
8252
8250
  gap: 0.375rem;
8253
8251
  padding: 0.375rem 0.5rem;
8254
8252
  min-height: 2.5rem;
8255
- background: var(--dm-surface, #fff);
8256
- border: 1px solid var(--dm-border, #dee2e6);
8253
+ background: var(--dm-pillbox-bg, var(--dm-surface));
8254
+ border: 1px solid var(--dm-pillbox-border, var(--dm-border));
8257
8255
  border-radius: var(--dm-radius-md);
8258
8256
  cursor: text;
8259
8257
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
@@ -8263,50 +8261,70 @@ code {
8263
8261
  border-color: var(--dm-text-disabled);
8264
8262
  }
8265
8263
 
8266
- .dm-pillbox-container.focused {
8264
+ .dm-pillbox-container:focus-within {
8267
8265
  border-color: var(--dm-primary);
8268
8266
  box-shadow: 0 0 0 3px var(--dm-focus-ring);
8269
8267
  }
8270
8268
 
8271
- .dm-pillbox-pill {
8269
+ /*
8270
+ * The pill classes are the ones the script emits (.dm-pill, .dm-pill-remove,
8271
+ * .dm-pillbox-empty) and the showcase documents. They were styled here as
8272
+ * .dm-pillbox-pill / -remove / -message, which nothing produces, so every pill
8273
+ * arrived as bare text beside a grey browser button.
8274
+ *
8275
+ * The --dm-pill-* / --dm-pillbox-* defaults are fallbacks in the rules rather
8276
+ * than :root declarations: a theme class sits on <body>, and a variable
8277
+ * declared on :root as var(--dm-surface) resolves against the root's colours,
8278
+ * so a dark theme got a white box with pale pills. A theme or a page can still
8279
+ * set any of them.
8280
+ */
8281
+ .dm-pill {
8272
8282
  display: inline-flex;
8273
8283
  align-items: center;
8274
8284
  gap: 0.25rem;
8275
- padding: 0.25rem 0.5rem;
8276
- background: var(--dm-primary-light);
8277
- color: var(--dm-text);
8285
+ max-width: 100%;
8286
+ padding: 0.2rem 0.3rem 0.2rem 0.6rem;
8287
+ background: var(--dm-pill-bg, var(--dm-primary-light));
8288
+ color: var(--dm-pill-color, var(--dm-text));
8278
8289
  border-radius: var(--dm-radius-full);
8279
8290
  font-size: var(--dm-font-size-sm);
8280
8291
  line-height: 1.2;
8292
+ overflow-wrap: anywhere;
8281
8293
  }
8282
8294
 
8283
- .dm-pillbox-pill.dm-pillbox-size-small {
8284
- padding: 0.125rem 0.375rem;
8295
+ .dm-pillbox-small .dm-pill {
8296
+ padding: 0.1rem 0.25rem 0.1rem 0.45rem;
8285
8297
  font-size: 0.75rem;
8286
8298
  }
8287
8299
 
8288
- .dm-pillbox-pill.dm-pillbox-size-large {
8289
- padding: 0.375rem 0.625rem;
8300
+ .dm-pillbox-large .dm-pill {
8301
+ padding: 0.35rem 0.4rem 0.35rem 0.75rem;
8290
8302
  font-size: 1rem;
8291
8303
  }
8292
8304
 
8293
- .dm-pillbox-remove {
8305
+ .dm-pill-remove {
8294
8306
  display: inline-flex;
8295
8307
  align-items: center;
8296
8308
  justify-content: center;
8297
- width: 1rem;
8298
- height: 1rem;
8309
+ flex: none;
8310
+ width: 1.1rem;
8311
+ height: 1.1rem;
8299
8312
  padding: 0;
8300
8313
  background: none;
8301
8314
  border: none;
8315
+ border-radius: 50%;
8302
8316
  color: inherit;
8317
+ font-size: 1rem;
8318
+ line-height: 1;
8303
8319
  cursor: pointer;
8304
- opacity: 0.7;
8305
- transition: opacity 0.15s ease;
8320
+ opacity: 0.65;
8321
+ transition: opacity 0.15s ease, background-color 0.15s ease;
8306
8322
  }
8307
8323
 
8308
- .dm-pillbox-remove:hover {
8324
+ .dm-pill-remove:hover,
8325
+ .dm-pill-remove:focus-visible {
8309
8326
  opacity: 1;
8327
+ background: var(--dm-pill-hover-bg, color-mix(in srgb, currentColor 15%, transparent));
8310
8328
  }
8311
8329
 
8312
8330
  .dm-pillbox-input {
@@ -8320,18 +8338,29 @@ code {
8320
8338
  color: var(--dm-text);
8321
8339
  }
8322
8340
 
8341
+ .dm-pillbox-small .dm-pillbox-input { font-size: var(--dm-font-size-sm); }
8342
+
8323
8343
  .dm-pillbox-input::placeholder {
8324
8344
  color: var(--dm-text-muted);
8325
8345
  }
8326
8346
 
8347
+ .dm-pillbox.disabled .dm-pillbox-container {
8348
+ opacity: 0.6;
8349
+ cursor: not-allowed;
8350
+ }
8351
+
8352
+ .dm-pillbox.disabled .dm-pill-remove {
8353
+ pointer-events: none;
8354
+ }
8355
+
8327
8356
  .dm-pillbox-dropdown {
8328
8357
  position: absolute;
8329
8358
  top: 100%;
8330
8359
  left: 0;
8331
8360
  right: 0;
8332
8361
  margin-top: 0.25rem;
8333
- background: var(--dm-surface, #fff);
8334
- border: 1px solid var(--dm-border, #dee2e6);
8362
+ background: var(--dm-surface);
8363
+ border: 1px solid var(--dm-border);
8335
8364
  border-radius: var(--dm-radius-md);
8336
8365
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
8337
8366
  max-height: 200px;
@@ -8339,6 +8368,12 @@ code {
8339
8368
  z-index: var(--dm-z-dropdown, 1000);
8340
8369
  }
8341
8370
 
8371
+ .dm-pillbox-options {
8372
+ list-style: none;
8373
+ margin: 0;
8374
+ padding: 0.25rem 0;
8375
+ }
8376
+
8342
8377
  .dm-pillbox-option {
8343
8378
  padding: 0.5rem 0.75rem;
8344
8379
  cursor: pointer;
@@ -8356,10 +8391,11 @@ code {
8356
8391
  color: var(--dm-text);
8357
8392
  }
8358
8393
 
8359
- .dm-pillbox-message {
8394
+ .dm-pillbox-empty {
8360
8395
  padding: 0.75rem;
8361
8396
  text-align: center;
8362
- color: var(--dm-text-muted, #6c757d);
8397
+ /* --dm-text-muted falls to 3:1 on --dm-surface in some themes. */
8398
+ color: var(--dm-text-secondary);
8363
8399
  font-size: var(--dm-font-size-sm);
8364
8400
  }
8365
8401
 
@@ -8386,27 +8422,9 @@ code {
8386
8422
  opacity: 1;
8387
8423
  }
8388
8424
 
8389
- /* Dark theme pillbox */
8390
- [data-mode="dark"].dm-pillbox-container {
8391
- background: var(--dm-surface);
8392
- border-color: var(--dm-text);
8393
- }
8394
-
8395
- [data-mode="dark"].dm-pillbox-input {
8396
- color: var(--dm-text-disabled);
8397
- }
8398
-
8399
- [data-mode="dark"].dm-pillbox-dropdown {
8400
- background: var(--dm-surface);
8401
- border-color: var(--dm-text);
8402
- }
8403
-
8404
- [data-mode="dark"].dm-pillbox-option {
8405
- color: var(--dm-text-disabled);
8406
- }
8407
-
8408
- [data-mode="dark"].dm-pillbox-option:hover {
8409
- background-color: var(--dm-text);
8425
+ /* A clearable box keeps its last pill clear of the x. */
8426
+ .dm-pillbox:has(.dm-pillbox-clear) .dm-pillbox-container {
8427
+ padding-right: 2rem;
8410
8428
  }
8411
8429
 
8412
8430
  /* ============================================
@@ -13987,11 +14005,11 @@ code {
13987
14005
  ============================================ */
13988
14006
 
13989
14007
  /*!
13990
- * Domma Themes v0.44.0
14008
+ * Domma Themes v0.44.1
13991
14009
  * Dynamic Object Manipulation & Modeling API
13992
14010
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13993
- * Built: 2026-09-22T03:19:19.311Z
13994
- * Commit: a452582
14011
+ * Built: 2026-09-23T16:22:37.512Z
14012
+ * Commit: 7c54327
13995
14013
  */
13996
14014
 
13997
14015
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Data-Focused CSS Bundle v0.44.0
2
+ * Domma Data-Focused CSS Bundle v0.44.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-09-22T03:19:19.492Z
5
+ * Built: 2026-09-23T16:22:37.656Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.44.0
14
+ * Domma Core CSS v0.44.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-09-22T03:19:19.324Z
18
- * Commit: a452582
17
+ * Built: 2026-09-23T16:22:37.523Z
18
+ * Commit: 7c54327
19
19
  */
20
20
 
21
21
  /**
@@ -393,12 +393,9 @@
393
393
  --dm-autocomplete-item-active: var(--dm-selected-bg);
394
394
  --dm-autocomplete-highlight: var(--dm-primary-light);
395
395
 
396
- /* Pillbox */
397
- --dm-pillbox-bg: var(--dm-surface);
398
- --dm-pillbox-border: var(--dm-border);
399
- --dm-pill-bg: var(--dm-gray-200);
400
- --dm-pill-color: var(--dm-text);
401
- --dm-pill-hover-bg: var(--dm-gray-300);
396
+ /* Pillbox: --dm-pillbox-bg, --dm-pillbox-border, --dm-pill-bg,
397
+ --dm-pill-color and --dm-pill-hover-bg are read with their defaults as
398
+ fallbacks in elements.css, so they follow the theme on <body>. */
402
399
 
403
400
  /* Tabs */
404
401
  --dm-tab-border: var(--dm-border);
@@ -4838,11 +4835,11 @@ body.dm-cloaked.dm-ready {
4838
4835
  ============================================ */
4839
4836
 
4840
4837
  /*!
4841
- * Domma Grid CSS v0.44.0
4838
+ * Domma Grid CSS v0.44.1
4842
4839
  * Dynamic Object Manipulation & Modeling API
4843
4840
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4844
- * Built: 2026-09-22T03:19:19.327Z
4845
- * Commit: a452582
4841
+ * Built: 2026-09-23T16:22:37.526Z
4842
+ * Commit: 7c54327
4846
4843
  */
4847
4844
 
4848
4845
  /**
@@ -5463,11 +5460,11 @@ body.dm-cloaked.dm-ready {
5463
5460
  ============================================ */
5464
5461
 
5465
5462
  /*!
5466
- * Domma Elements CSS v0.44.0
5463
+ * Domma Elements CSS v0.44.1
5467
5464
  * Dynamic Object Manipulation & Modeling API
5468
5465
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5469
- * Built: 2026-09-22T03:19:19.332Z
5470
- * Commit: a452582
5466
+ * Built: 2026-09-23T16:22:37.530Z
5467
+ * Commit: 7c54327
5471
5468
  */
5472
5469
 
5473
5470
  /**
@@ -8249,11 +8246,12 @@ code {
8249
8246
  .dm-pillbox-container {
8250
8247
  display: flex;
8251
8248
  flex-wrap: wrap;
8249
+ align-items: center;
8252
8250
  gap: 0.375rem;
8253
8251
  padding: 0.375rem 0.5rem;
8254
8252
  min-height: 2.5rem;
8255
- background: var(--dm-surface, #fff);
8256
- border: 1px solid var(--dm-border, #dee2e6);
8253
+ background: var(--dm-pillbox-bg, var(--dm-surface));
8254
+ border: 1px solid var(--dm-pillbox-border, var(--dm-border));
8257
8255
  border-radius: var(--dm-radius-md);
8258
8256
  cursor: text;
8259
8257
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
@@ -8263,50 +8261,70 @@ code {
8263
8261
  border-color: var(--dm-text-disabled);
8264
8262
  }
8265
8263
 
8266
- .dm-pillbox-container.focused {
8264
+ .dm-pillbox-container:focus-within {
8267
8265
  border-color: var(--dm-primary);
8268
8266
  box-shadow: 0 0 0 3px var(--dm-focus-ring);
8269
8267
  }
8270
8268
 
8271
- .dm-pillbox-pill {
8269
+ /*
8270
+ * The pill classes are the ones the script emits (.dm-pill, .dm-pill-remove,
8271
+ * .dm-pillbox-empty) and the showcase documents. They were styled here as
8272
+ * .dm-pillbox-pill / -remove / -message, which nothing produces, so every pill
8273
+ * arrived as bare text beside a grey browser button.
8274
+ *
8275
+ * The --dm-pill-* / --dm-pillbox-* defaults are fallbacks in the rules rather
8276
+ * than :root declarations: a theme class sits on <body>, and a variable
8277
+ * declared on :root as var(--dm-surface) resolves against the root's colours,
8278
+ * so a dark theme got a white box with pale pills. A theme or a page can still
8279
+ * set any of them.
8280
+ */
8281
+ .dm-pill {
8272
8282
  display: inline-flex;
8273
8283
  align-items: center;
8274
8284
  gap: 0.25rem;
8275
- padding: 0.25rem 0.5rem;
8276
- background: var(--dm-primary-light);
8277
- color: var(--dm-text);
8285
+ max-width: 100%;
8286
+ padding: 0.2rem 0.3rem 0.2rem 0.6rem;
8287
+ background: var(--dm-pill-bg, var(--dm-primary-light));
8288
+ color: var(--dm-pill-color, var(--dm-text));
8278
8289
  border-radius: var(--dm-radius-full);
8279
8290
  font-size: var(--dm-font-size-sm);
8280
8291
  line-height: 1.2;
8292
+ overflow-wrap: anywhere;
8281
8293
  }
8282
8294
 
8283
- .dm-pillbox-pill.dm-pillbox-size-small {
8284
- padding: 0.125rem 0.375rem;
8295
+ .dm-pillbox-small .dm-pill {
8296
+ padding: 0.1rem 0.25rem 0.1rem 0.45rem;
8285
8297
  font-size: 0.75rem;
8286
8298
  }
8287
8299
 
8288
- .dm-pillbox-pill.dm-pillbox-size-large {
8289
- padding: 0.375rem 0.625rem;
8300
+ .dm-pillbox-large .dm-pill {
8301
+ padding: 0.35rem 0.4rem 0.35rem 0.75rem;
8290
8302
  font-size: 1rem;
8291
8303
  }
8292
8304
 
8293
- .dm-pillbox-remove {
8305
+ .dm-pill-remove {
8294
8306
  display: inline-flex;
8295
8307
  align-items: center;
8296
8308
  justify-content: center;
8297
- width: 1rem;
8298
- height: 1rem;
8309
+ flex: none;
8310
+ width: 1.1rem;
8311
+ height: 1.1rem;
8299
8312
  padding: 0;
8300
8313
  background: none;
8301
8314
  border: none;
8315
+ border-radius: 50%;
8302
8316
  color: inherit;
8317
+ font-size: 1rem;
8318
+ line-height: 1;
8303
8319
  cursor: pointer;
8304
- opacity: 0.7;
8305
- transition: opacity 0.15s ease;
8320
+ opacity: 0.65;
8321
+ transition: opacity 0.15s ease, background-color 0.15s ease;
8306
8322
  }
8307
8323
 
8308
- .dm-pillbox-remove:hover {
8324
+ .dm-pill-remove:hover,
8325
+ .dm-pill-remove:focus-visible {
8309
8326
  opacity: 1;
8327
+ background: var(--dm-pill-hover-bg, color-mix(in srgb, currentColor 15%, transparent));
8310
8328
  }
8311
8329
 
8312
8330
  .dm-pillbox-input {
@@ -8320,18 +8338,29 @@ code {
8320
8338
  color: var(--dm-text);
8321
8339
  }
8322
8340
 
8341
+ .dm-pillbox-small .dm-pillbox-input { font-size: var(--dm-font-size-sm); }
8342
+
8323
8343
  .dm-pillbox-input::placeholder {
8324
8344
  color: var(--dm-text-muted);
8325
8345
  }
8326
8346
 
8347
+ .dm-pillbox.disabled .dm-pillbox-container {
8348
+ opacity: 0.6;
8349
+ cursor: not-allowed;
8350
+ }
8351
+
8352
+ .dm-pillbox.disabled .dm-pill-remove {
8353
+ pointer-events: none;
8354
+ }
8355
+
8327
8356
  .dm-pillbox-dropdown {
8328
8357
  position: absolute;
8329
8358
  top: 100%;
8330
8359
  left: 0;
8331
8360
  right: 0;
8332
8361
  margin-top: 0.25rem;
8333
- background: var(--dm-surface, #fff);
8334
- border: 1px solid var(--dm-border, #dee2e6);
8362
+ background: var(--dm-surface);
8363
+ border: 1px solid var(--dm-border);
8335
8364
  border-radius: var(--dm-radius-md);
8336
8365
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
8337
8366
  max-height: 200px;
@@ -8339,6 +8368,12 @@ code {
8339
8368
  z-index: var(--dm-z-dropdown, 1000);
8340
8369
  }
8341
8370
 
8371
+ .dm-pillbox-options {
8372
+ list-style: none;
8373
+ margin: 0;
8374
+ padding: 0.25rem 0;
8375
+ }
8376
+
8342
8377
  .dm-pillbox-option {
8343
8378
  padding: 0.5rem 0.75rem;
8344
8379
  cursor: pointer;
@@ -8356,10 +8391,11 @@ code {
8356
8391
  color: var(--dm-text);
8357
8392
  }
8358
8393
 
8359
- .dm-pillbox-message {
8394
+ .dm-pillbox-empty {
8360
8395
  padding: 0.75rem;
8361
8396
  text-align: center;
8362
- color: var(--dm-text-muted, #6c757d);
8397
+ /* --dm-text-muted falls to 3:1 on --dm-surface in some themes. */
8398
+ color: var(--dm-text-secondary);
8363
8399
  font-size: var(--dm-font-size-sm);
8364
8400
  }
8365
8401
 
@@ -8386,27 +8422,9 @@ code {
8386
8422
  opacity: 1;
8387
8423
  }
8388
8424
 
8389
- /* Dark theme pillbox */
8390
- [data-mode="dark"].dm-pillbox-container {
8391
- background: var(--dm-surface);
8392
- border-color: var(--dm-text);
8393
- }
8394
-
8395
- [data-mode="dark"].dm-pillbox-input {
8396
- color: var(--dm-text-disabled);
8397
- }
8398
-
8399
- [data-mode="dark"].dm-pillbox-dropdown {
8400
- background: var(--dm-surface);
8401
- border-color: var(--dm-text);
8402
- }
8403
-
8404
- [data-mode="dark"].dm-pillbox-option {
8405
- color: var(--dm-text-disabled);
8406
- }
8407
-
8408
- [data-mode="dark"].dm-pillbox-option:hover {
8409
- background-color: var(--dm-text);
8425
+ /* A clearable box keeps its last pill clear of the x. */
8426
+ .dm-pillbox:has(.dm-pillbox-clear) .dm-pillbox-container {
8427
+ padding-right: 2rem;
8410
8428
  }
8411
8429
 
8412
8430
  /* ============================================
@@ -13987,11 +14005,11 @@ code {
13987
14005
  ============================================ */
13988
14006
 
13989
14007
  /*!
13990
- * Domma Themes v0.44.0
14008
+ * Domma Themes v0.44.1
13991
14009
  * Dynamic Object Manipulation & Modeling API
13992
14010
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13993
- * Built: 2026-09-22T03:19:19.311Z
13994
- * Commit: a452582
14011
+ * Built: 2026-09-23T16:22:37.512Z
14012
+ * Commit: 7c54327
13995
14013
  */
13996
14014
 
13997
14015
  /**