domma-js 0.24.0 → 0.25.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.24.0",
3
+ "version": "0.25.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",
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.24.0
2
+ * Domma Complete CSS Bundle v0.25.1
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-05-02T17:40:23.925Z
5
+ * Built: 2026-05-09T19:57:20.968Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.24.0
14
+ * Domma Core CSS v0.25.1
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-05-02T17:40:23.693Z
18
- * Commit: ef7021b
17
+ * Built: 2026-05-09T19:57:20.749Z
18
+ * Commit: d75ef91
19
19
  */
20
20
 
21
21
  /**
@@ -4829,11 +4829,11 @@ body.dm-cloaked.dm-ready {
4829
4829
  ============================================ */
4830
4830
 
4831
4831
  /*!
4832
- * Domma Grid CSS v0.24.0
4832
+ * Domma Grid CSS v0.25.1
4833
4833
  * Dynamic Object Manipulation & Modeling API
4834
4834
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4835
- * Built: 2026-05-02T17:40:23.697Z
4836
- * Commit: ef7021b
4835
+ * Built: 2026-05-09T19:57:20.753Z
4836
+ * Commit: d75ef91
4837
4837
  */
4838
4838
 
4839
4839
  /**
@@ -5454,11 +5454,11 @@ body.dm-cloaked.dm-ready {
5454
5454
  ============================================ */
5455
5455
 
5456
5456
  /*!
5457
- * Domma Elements CSS v0.24.0
5457
+ * Domma Elements CSS v0.25.1
5458
5458
  * Dynamic Object Manipulation & Modeling API
5459
5459
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5460
- * Built: 2026-05-02T17:40:23.703Z
5461
- * Commit: ef7021b
5460
+ * Built: 2026-05-09T19:57:20.759Z
5461
+ * Commit: d75ef91
5462
5462
  */
5463
5463
 
5464
5464
  /**
@@ -12865,6 +12865,451 @@ code {
12865
12865
  }
12866
12866
  }
12867
12867
 
12868
+ /* ============================================================
12869
+ * Chooser — visual option-picker (card/chip × single/multi)
12870
+ * ============================================================ */
12871
+ .domma-chooser {
12872
+ --picker-radius: var(--dm-radius);
12873
+ display: block;
12874
+ }
12875
+
12876
+ .domma-chooser .picker-label {
12877
+ display: block;
12878
+ margin-bottom: var(--dm-space-2);
12879
+ font-weight: 600;
12880
+ color: var(--dm-text);
12881
+ }
12882
+
12883
+ .domma-chooser .picker-required {
12884
+ color: var(--dm-danger);
12885
+ margin-left: 0.25rem;
12886
+ }
12887
+
12888
+ /* Variant: card */
12889
+ .domma-chooser[data-variant="card"] .picker-options {
12890
+ display: grid;
12891
+ grid-template-columns: repeat(var(--picker-cols, 3), 1fr);
12892
+ gap: 0.6rem;
12893
+ }
12894
+
12895
+ .domma-chooser[data-variant="card"] .picker-option {
12896
+ position: relative;
12897
+ display: flex;
12898
+ flex-direction: column;
12899
+ gap: 0.4rem;
12900
+ padding: 0.85rem 0.95rem;
12901
+ border: 2px solid var(--dm-border);
12902
+ border-radius: var(--picker-radius);
12903
+ background: var(--dm-card-bg);
12904
+ color: var(--dm-text);
12905
+ cursor: pointer;
12906
+ transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
12907
+ }
12908
+
12909
+ .domma-chooser[data-variant="card"] .picker-option:hover:not(.is-disabled) {
12910
+ border-color: var(--picker-accent, var(--dm-primary));
12911
+ }
12912
+
12913
+ .domma-chooser[data-variant="card"] .picker-option.is-selected {
12914
+ border-color: var(--picker-accent, var(--dm-primary));
12915
+ background: color-mix(in srgb, var(--picker-accent, var(--dm-primary)) 10%, var(--dm-card-bg));
12916
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-accent, var(--dm-primary)) 22%, transparent);
12917
+ }
12918
+
12919
+ .domma-chooser[data-variant="card"] .picker-option:focus-visible {
12920
+ outline: 2px solid var(--picker-accent, var(--dm-primary));
12921
+ outline-offset: 2px;
12922
+ }
12923
+
12924
+ .domma-chooser .picker-option-icon {
12925
+ width: 32px;
12926
+ height: 32px;
12927
+ display: inline-flex;
12928
+ align-items: center;
12929
+ justify-content: center;
12930
+ border-radius: var(--dm-radius-sm);
12931
+ background: color-mix(in srgb, var(--picker-accent, var(--dm-primary)) 12%, transparent);
12932
+ color: var(--picker-accent, var(--dm-primary));
12933
+ flex-shrink: 0;
12934
+ }
12935
+
12936
+ .domma-chooser .picker-option-label {
12937
+ font-weight: 600;
12938
+ color: var(--dm-text);
12939
+ font-size: 0.95rem;
12940
+ }
12941
+
12942
+ .domma-chooser .picker-option-desc {
12943
+ font-size: 0.8rem;
12944
+ color: var(--dm-text-muted);
12945
+ line-height: 1.4;
12946
+ }
12947
+
12948
+ .domma-chooser[data-variant="card"] .picker-option-tick {
12949
+ position: absolute;
12950
+ top: 8px;
12951
+ right: 8px;
12952
+ width: 18px;
12953
+ height: 18px;
12954
+ border-radius: 50%;
12955
+ background: var(--picker-accent, var(--dm-primary));
12956
+ color: #fff;
12957
+ display: none;
12958
+ align-items: center;
12959
+ justify-content: center;
12960
+ }
12961
+
12962
+ .domma-chooser[data-variant="card"] .picker-option.is-selected .picker-option-tick {
12963
+ display: inline-flex;
12964
+ }
12965
+
12966
+ .domma-chooser .picker-option-badge {
12967
+ position: absolute;
12968
+ top: -10px;
12969
+ right: 10px;
12970
+ }
12971
+
12972
+ /* Density: compact */
12973
+ .domma-chooser[data-variant="card"][data-density="compact"] .picker-option {
12974
+ flex-direction: row;
12975
+ align-items: center;
12976
+ gap: 0.6rem;
12977
+ padding: 0.55rem 0.75rem;
12978
+ }
12979
+
12980
+ .domma-chooser[data-variant="card"][data-density="compact"] .picker-option-icon {
12981
+ width: 24px;
12982
+ height: 24px;
12983
+ background: transparent;
12984
+ }
12985
+
12986
+ .domma-chooser[data-variant="card"][data-density="compact"] .picker-option-desc {
12987
+ display: none;
12988
+ }
12989
+
12990
+ .domma-chooser[data-variant="card"][data-density="compact"] .picker-option-tick {
12991
+ position: static;
12992
+ }
12993
+
12994
+ /* Variant: chip */
12995
+ .domma-chooser[data-variant="chip"] .picker-options {
12996
+ display: flex;
12997
+ flex-wrap: wrap;
12998
+ gap: 0.5rem;
12999
+ }
13000
+
13001
+ .domma-chooser[data-variant="chip"] .picker-option {
13002
+ display: inline-flex;
13003
+ align-items: center;
13004
+ gap: 0.4rem;
13005
+ padding: 0.4rem 0.85rem;
13006
+ border: 1.5px solid var(--dm-border);
13007
+ border-radius: 999px;
13008
+ background: var(--dm-card-bg);
13009
+ color: var(--dm-text);
13010
+ font-size: 0.85rem;
13011
+ cursor: pointer;
13012
+ transition: border-color 0.15s, background 0.15s, color 0.15s;
13013
+ }
13014
+
13015
+ .domma-chooser[data-variant="chip"] .picker-option:hover:not(.is-disabled) {
13016
+ border-color: var(--picker-accent, var(--dm-primary));
13017
+ }
13018
+
13019
+ .domma-chooser[data-variant="chip"] .picker-option.is-selected {
13020
+ border-color: var(--picker-accent, var(--dm-primary));
13021
+ background: var(--picker-accent, var(--dm-primary));
13022
+ color: #fff;
13023
+ }
13024
+
13025
+ .domma-chooser[data-variant="chip"] .picker-option:focus-visible {
13026
+ outline: 2px solid var(--picker-accent, var(--dm-primary));
13027
+ outline-offset: 2px;
13028
+ }
13029
+
13030
+ .domma-chooser[data-variant="chip"] .picker-option-icon {
13031
+ width: auto;
13032
+ height: auto;
13033
+ background: transparent;
13034
+ padding: 0;
13035
+ color: inherit;
13036
+ }
13037
+
13038
+ .domma-chooser[data-variant="chip"] .picker-option-tick {
13039
+ display: none !important;
13040
+ }
13041
+
13042
+ /* Shared states */
13043
+ .domma-chooser .picker-option.is-disabled {
13044
+ opacity: 0.5;
13045
+ cursor: not-allowed;
13046
+ pointer-events: none;
13047
+ }
13048
+
13049
+ .domma-chooser .picker-option.is-recommended {
13050
+ border-color: var(--picker-rec-accent, var(--dm-success));
13051
+ }
13052
+
13053
+ /* Hidden native input for graceful submission */
13054
+ .domma-chooser .picker-native-input {
13055
+ position: absolute;
13056
+ width: 1px;
13057
+ height: 1px;
13058
+ padding: 0;
13059
+ margin: -1px;
13060
+ overflow: hidden;
13061
+ clip: rect(0, 0, 0, 0);
13062
+ white-space: nowrap;
13063
+ border: 0;
13064
+ }
13065
+
13066
+ @media (prefers-reduced-motion: reduce) {
13067
+ .domma-chooser .picker-option {
13068
+ transition: none;
13069
+ }
13070
+ }
13071
+
13072
+ /* ============================================================
13073
+ * Chooser — accent colour, accent style, glow, shadow extensions
13074
+ * ============================================================ */
13075
+
13076
+ /* Default the accent variables on every chooser */
13077
+ .domma-chooser {
13078
+ --picker-accent: var(--dm-primary);
13079
+ --picker-rec-accent: var(--dm-success);
13080
+ --picker-glow-colour: var(--picker-accent);
13081
+ --picker-shadow-colour: rgba(0, 0, 0, 0.1);
13082
+ }
13083
+
13084
+ /* Semantic accent colours */
13085
+ .domma-chooser[data-accent="primary"] { --picker-accent: var(--dm-primary); }
13086
+ .domma-chooser[data-accent="success"] { --picker-accent: var(--dm-success); }
13087
+ .domma-chooser[data-accent="info"] { --picker-accent: var(--dm-info); }
13088
+ .domma-chooser[data-accent="warning"] { --picker-accent: var(--dm-warning); }
13089
+ .domma-chooser[data-accent="danger"] { --picker-accent: var(--dm-danger); }
13090
+
13091
+ /* Semantic glow colours (overrides accent) */
13092
+ .domma-chooser[data-glow-colour="primary"] { --picker-glow-colour: var(--dm-primary); }
13093
+ .domma-chooser[data-glow-colour="success"] { --picker-glow-colour: var(--dm-success); }
13094
+ .domma-chooser[data-glow-colour="info"] { --picker-glow-colour: var(--dm-info); }
13095
+ .domma-chooser[data-glow-colour="warning"] { --picker-glow-colour: var(--dm-warning); }
13096
+ .domma-chooser[data-glow-colour="danger"] { --picker-glow-colour: var(--dm-danger); }
13097
+
13098
+ /* Glow on selected option */
13099
+ .domma-chooser[data-glow="true"] .picker-option.is-selected {
13100
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-accent) 22%, transparent),
13101
+ 0 0 18px color-mix(in srgb, var(--picker-glow-colour) 60%, transparent);
13102
+ }
13103
+
13104
+ /* Shadow weights — applied to all options */
13105
+ .domma-chooser[data-shadow="sm"] .picker-option {
13106
+ box-shadow: 0 1px 2px var(--picker-shadow-colour, rgba(0, 0, 0, 0.08));
13107
+ }
13108
+ .domma-chooser[data-shadow="md"] .picker-option {
13109
+ box-shadow: 0 2px 6px var(--picker-shadow-colour, rgba(0, 0, 0, 0.10));
13110
+ }
13111
+ .domma-chooser[data-shadow="lg"] .picker-option {
13112
+ box-shadow: 0 6px 16px var(--picker-shadow-colour, rgba(0, 0, 0, 0.12));
13113
+ }
13114
+ .domma-chooser[data-shadow="xl"] .picker-option {
13115
+ box-shadow: 0 12px 28px var(--picker-shadow-colour, rgba(0, 0, 0, 0.14));
13116
+ }
13117
+
13118
+ /* When both glow + shadow are set, the selected option keeps glow on top */
13119
+ .domma-chooser[data-glow="true"][data-shadow="sm"] .picker-option.is-selected,
13120
+ .domma-chooser[data-glow="true"][data-shadow="md"] .picker-option.is-selected,
13121
+ .domma-chooser[data-glow="true"][data-shadow="lg"] .picker-option.is-selected,
13122
+ .domma-chooser[data-glow="true"][data-shadow="xl"] .picker-option.is-selected {
13123
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-accent) 22%, transparent),
13124
+ 0 0 18px color-mix(in srgb, var(--picker-glow-colour) 60%, transparent);
13125
+ }
13126
+
13127
+ /* === Accent styles (default 'border' is the existing behaviour) === */
13128
+
13129
+ /* Solid: filled tile in the accent colour, white text */
13130
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected {
13131
+ background: var(--picker-accent);
13132
+ border-color: var(--picker-accent);
13133
+ color: #fff;
13134
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-accent) 22%, transparent);
13135
+ }
13136
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected .picker-option-label,
13137
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected .picker-option-desc,
13138
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected .picker-option-icon {
13139
+ color: #fff;
13140
+ }
13141
+ .domma-chooser[data-accent-style="solid"][data-variant="card"] .picker-option.is-selected .picker-option-icon {
13142
+ background: rgba(255, 255, 255, 0.2);
13143
+ }
13144
+
13145
+ /* Glow style: clean transparent border, glowing accent ring */
13146
+ .domma-chooser[data-accent-style="glow"][data-variant="card"] .picker-option.is-selected {
13147
+ background: var(--dm-card-bg);
13148
+ border-color: transparent;
13149
+ box-shadow: 0 0 0 2px var(--picker-accent),
13150
+ 0 0 22px color-mix(in srgb, var(--picker-glow-colour) 65%, transparent);
13151
+ }
13152
+
13153
+ /* Overlay style: heavier translucent fill */
13154
+ .domma-chooser[data-accent-style="overlay"][data-variant="card"] .picker-option.is-selected {
13155
+ background: color-mix(in srgb, var(--picker-accent) 28%, var(--dm-card-bg));
13156
+ border-color: var(--picker-accent);
13157
+ box-shadow: none;
13158
+ }
13159
+
13160
+ /* Underline style: only a thick coloured bottom border */
13161
+ .domma-chooser[data-accent-style="underline"][data-variant="card"] .picker-option {
13162
+ border-bottom-width: 4px;
13163
+ border-bottom-color: transparent;
13164
+ }
13165
+ .domma-chooser[data-accent-style="underline"][data-variant="card"] .picker-option.is-selected {
13166
+ background: var(--dm-card-bg);
13167
+ border-color: var(--dm-border);
13168
+ border-bottom-color: var(--picker-accent);
13169
+ box-shadow: none;
13170
+ }
13171
+
13172
+ /* Chip variant: solid + glow + overlay also work for chips */
13173
+ .domma-chooser[data-accent-style="solid"][data-variant="chip"] .picker-option.is-selected {
13174
+ background: var(--picker-accent);
13175
+ border-color: var(--picker-accent);
13176
+ color: #fff;
13177
+ }
13178
+ .domma-chooser[data-accent-style="glow"][data-variant="chip"] .picker-option.is-selected {
13179
+ background: var(--dm-card-bg);
13180
+ color: var(--dm-text);
13181
+ border-color: var(--picker-accent);
13182
+ box-shadow: 0 0 0 1px var(--picker-accent),
13183
+ 0 0 16px color-mix(in srgb, var(--picker-glow-colour) 55%, transparent);
13184
+ }
13185
+ .domma-chooser[data-accent-style="overlay"][data-variant="chip"] .picker-option.is-selected {
13186
+ background: color-mix(in srgb, var(--picker-accent) 30%, var(--dm-card-bg));
13187
+ border-color: var(--picker-accent);
13188
+ color: var(--dm-text);
13189
+ }
13190
+
13191
+ /* ============================================================
13192
+ * Page-roller chooser slideover — structured editor styling
13193
+ * ============================================================ */
13194
+ .qr-chooser-slideover-body {
13195
+ padding: 1.25rem;
13196
+ display: flex;
13197
+ flex-direction: column;
13198
+ gap: 1.25rem;
13199
+ }
13200
+
13201
+ .qr-chooser-slideover-body > h3 {
13202
+ margin: 0 0 0.25rem;
13203
+ font-size: 1.05rem;
13204
+ color: var(--dm-text);
13205
+ }
13206
+
13207
+ .qr-chooser-preview {
13208
+ padding: 0.85rem;
13209
+ border: 1px dashed var(--dm-border);
13210
+ border-radius: var(--dm-radius);
13211
+ background: var(--dm-bg-alt, color-mix(in srgb, var(--dm-card-bg) 92%, var(--dm-text)));
13212
+ }
13213
+
13214
+ .qr-chooser-preview-label {
13215
+ font-size: 0.7rem;
13216
+ text-transform: uppercase;
13217
+ letter-spacing: 0.06em;
13218
+ color: var(--dm-text-muted);
13219
+ margin-bottom: 0.5rem;
13220
+ font-weight: 600;
13221
+ }
13222
+
13223
+ .qr-chooser-section {
13224
+ border: 1px solid var(--dm-border);
13225
+ border-radius: var(--dm-radius);
13226
+ background: var(--dm-card-bg);
13227
+ }
13228
+
13229
+ .qr-chooser-section-header {
13230
+ padding: 0.6rem 0.85rem;
13231
+ border-bottom: 1px solid var(--dm-border);
13232
+ font-weight: 600;
13233
+ color: var(--dm-text);
13234
+ font-size: 0.9rem;
13235
+ background: color-mix(in srgb, var(--dm-bg) 50%, transparent);
13236
+ }
13237
+
13238
+ .qr-chooser-section-body {
13239
+ padding: 0.75rem 0.85rem;
13240
+ display: flex;
13241
+ flex-direction: column;
13242
+ gap: 0.6rem;
13243
+ }
13244
+
13245
+ .qr-chooser-row {
13246
+ display: grid;
13247
+ grid-template-columns: 1fr 1fr;
13248
+ gap: 0.6rem;
13249
+ }
13250
+
13251
+ .qr-chooser-row.is-single {
13252
+ grid-template-columns: 1fr;
13253
+ }
13254
+
13255
+ .qr-chooser-field-label {
13256
+ display: block;
13257
+ font-size: 0.8rem;
13258
+ font-weight: 500;
13259
+ color: var(--dm-text);
13260
+ margin-bottom: 0.2rem;
13261
+ }
13262
+
13263
+ .qr-chooser-field-help {
13264
+ font-size: 0.72rem;
13265
+ color: var(--dm-text-muted);
13266
+ margin-top: 0.2rem;
13267
+ line-height: 1.3;
13268
+ }
13269
+
13270
+ .qr-chooser-checkbox-row {
13271
+ display: flex;
13272
+ align-items: center;
13273
+ gap: 0.4rem;
13274
+ font-size: 0.85rem;
13275
+ color: var(--dm-text);
13276
+ }
13277
+
13278
+ .qr-chooser-options-list {
13279
+ display: flex;
13280
+ flex-direction: column;
13281
+ gap: 0.5rem;
13282
+ }
13283
+
13284
+ .qr-chooser-option-row {
13285
+ border: 1px solid var(--dm-border);
13286
+ border-radius: var(--dm-radius-sm);
13287
+ padding: 0.6rem;
13288
+ background: color-mix(in srgb, var(--dm-bg) 60%, transparent);
13289
+ display: flex;
13290
+ flex-direction: column;
13291
+ gap: 0.4rem;
13292
+ }
13293
+
13294
+ .qr-chooser-option-row .form-input,
13295
+ .qr-chooser-option-row select.form-input {
13296
+ font-size: 0.82rem;
13297
+ }
13298
+
13299
+ .qr-chooser-option-row-flags {
13300
+ display: flex;
13301
+ gap: 1rem;
13302
+ font-size: 0.78rem;
13303
+ }
13304
+
13305
+ .qr-chooser-actions {
13306
+ display: flex;
13307
+ gap: 0.5rem;
13308
+ justify-content: flex-end;
13309
+ padding-top: 0.5rem;
13310
+ border-top: 1px solid var(--dm-border);
13311
+ }
13312
+
12868
13313
 
12869
13314
  /* ============================================
12870
13315
  THEME SYSTEM
@@ -12872,11 +13317,11 @@ code {
12872
13317
  ============================================ */
12873
13318
 
12874
13319
  /*!
12875
- * Domma Themes v0.24.0
13320
+ * Domma Themes v0.25.1
12876
13321
  * Dynamic Object Manipulation & Modeling API
12877
13322
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12878
- * Built: 2026-05-02T17:40:23.677Z
12879
- * Commit: ef7021b
13323
+ * Built: 2026-05-09T19:57:20.733Z
13324
+ * Commit: d75ef91
12880
13325
  */
12881
13326
 
12882
13327
  /**