domma-js 0.24.0 → 0.25.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.24.0",
3
+ "version": "0.25.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",
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.24.0
2
+ * Domma Complete CSS Bundle v0.25.0
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-09T09:27:08.659Z
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.0
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-09T09:27:08.360Z
18
+ * Commit: 5de0709
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.0
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-09T09:27:08.365Z
4836
+ * Commit: 5de0709
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.0
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-09T09:27:08.374Z
5461
+ * Commit: 5de0709
5462
5462
  */
5463
5463
 
5464
5464
  /**
@@ -12865,6 +12865,329 @@ 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
+
12868
13191
 
12869
13192
  /* ============================================
12870
13193
  THEME SYSTEM
@@ -12872,11 +13195,11 @@ code {
12872
13195
  ============================================ */
12873
13196
 
12874
13197
  /*!
12875
- * Domma Themes v0.24.0
13198
+ * Domma Themes v0.25.0
12876
13199
  * Dynamic Object Manipulation & Modeling API
12877
13200
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12878
- * Built: 2026-05-02T17:40:23.677Z
12879
- * Commit: ef7021b
13201
+ * Built: 2026-05-09T09:27:08.341Z
13202
+ * Commit: 5de0709
12880
13203
  */
12881
13204
 
12882
13205
  /**