@orange-halo/components 2.0.0 → 2.2.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/custom-elements.json +3551 -73
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +1 -2
- package/dist/base.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/oh-accordion.d.ts.map +1 -1
- package/dist/oh-accordion.js +38 -30
- package/dist/oh-accordion.js.map +1 -1
- package/dist/oh-alert.d.ts.map +1 -1
- package/dist/oh-alert.js +74 -32
- package/dist/oh-alert.js.map +1 -1
- package/dist/oh-badge.d.ts.map +1 -1
- package/dist/oh-badge.js +3 -3
- package/dist/oh-badge.js.map +1 -1
- package/dist/oh-breadcrumb.d.ts.map +1 -1
- package/dist/oh-breadcrumb.js +39 -20
- package/dist/oh-breadcrumb.js.map +1 -1
- package/dist/oh-button.d.ts +1 -1
- package/dist/oh-button.d.ts.map +1 -1
- package/dist/oh-button.figma.js +1 -3
- package/dist/oh-button.figma.js.map +1 -1
- package/dist/oh-button.js +83 -51
- package/dist/oh-button.js.map +1 -1
- package/dist/oh-card.d.ts.map +1 -1
- package/dist/oh-card.js +48 -57
- package/dist/oh-card.js.map +1 -1
- package/dist/oh-checkbox-group.d.ts.map +1 -1
- package/dist/oh-checkbox-group.figma.js +1 -1
- package/dist/oh-checkbox-group.figma.js.map +1 -1
- package/dist/oh-checkbox-group.js +46 -23
- package/dist/oh-checkbox-group.js.map +1 -1
- package/dist/oh-checkbox.d.ts +2 -2
- package/dist/oh-checkbox.d.ts.map +1 -1
- package/dist/oh-checkbox.js +56 -29
- package/dist/oh-checkbox.js.map +1 -1
- package/dist/oh-drawer.d.ts.map +1 -1
- package/dist/oh-drawer.js +21 -10
- package/dist/oh-drawer.js.map +1 -1
- package/dist/oh-footer.d.ts +5 -0
- package/dist/oh-footer.d.ts.map +1 -1
- package/dist/oh-footer.js +5 -0
- package/dist/oh-footer.js.map +1 -1
- package/dist/oh-grid.d.ts.map +1 -1
- package/dist/oh-grid.js +1 -2
- package/dist/oh-grid.js.map +1 -1
- package/dist/oh-hero.d.ts +5 -0
- package/dist/oh-hero.d.ts.map +1 -1
- package/dist/oh-hero.js +8 -1
- package/dist/oh-hero.js.map +1 -1
- package/dist/oh-icon.d.ts.map +1 -1
- package/dist/oh-icon.js +7 -5
- package/dist/oh-icon.js.map +1 -1
- package/dist/oh-input.d.ts +11 -6
- package/dist/oh-input.d.ts.map +1 -1
- package/dist/oh-input.figma.js +2 -2
- package/dist/oh-input.figma.js.map +1 -1
- package/dist/oh-input.js +38 -21
- package/dist/oh-input.js.map +1 -1
- package/dist/oh-link.d.ts.map +1 -1
- package/dist/oh-link.js +59 -32
- package/dist/oh-link.js.map +1 -1
- package/dist/oh-modal.d.ts +8 -2
- package/dist/oh-modal.d.ts.map +1 -1
- package/dist/oh-modal.js +60 -30
- package/dist/oh-modal.js.map +1 -1
- package/dist/oh-navbar.d.ts.map +1 -1
- package/dist/oh-navbar.js +2 -1
- package/dist/oh-navbar.js.map +1 -1
- package/dist/oh-progress.d.ts.map +1 -1
- package/dist/oh-progress.js +5 -3
- package/dist/oh-progress.js.map +1 -1
- package/dist/oh-radio-group.d.ts.map +1 -1
- package/dist/oh-radio-group.js +58 -27
- package/dist/oh-radio-group.js.map +1 -1
- package/dist/oh-radio.d.ts +1 -1
- package/dist/oh-radio.d.ts.map +1 -1
- package/dist/oh-radio.js +57 -29
- package/dist/oh-radio.js.map +1 -1
- package/dist/oh-select.d.ts +3 -2
- package/dist/oh-select.d.ts.map +1 -1
- package/dist/oh-select.js +88 -48
- package/dist/oh-select.js.map +1 -1
- package/dist/oh-skip-link.d.ts.map +1 -1
- package/dist/oh-skip-link.js +8 -10
- package/dist/oh-skip-link.js.map +1 -1
- package/dist/oh-tabs.d.ts.map +1 -1
- package/dist/oh-tabs.js +34 -25
- package/dist/oh-tabs.js.map +1 -1
- package/dist/oh-textarea.d.ts +98 -0
- package/dist/oh-textarea.d.ts.map +1 -0
- package/dist/oh-textarea.js +370 -0
- package/dist/oh-textarea.js.map +1 -0
- package/dist/oh-toggle.d.ts.map +1 -1
- package/dist/oh-toggle.js +29 -14
- package/dist/oh-toggle.js.map +1 -1
- package/dist/styles/typography.js +5 -5
- package/package.json +15 -4
package/dist/oh-card.js
CHANGED
|
@@ -63,8 +63,8 @@ let OhCard = class OhCard extends OhElement {
|
|
|
63
63
|
/* Shape: friendly rounded corners */
|
|
64
64
|
border-radius: var(--oh-shape-large);
|
|
65
65
|
overflow: hidden;
|
|
66
|
-
|
|
67
|
-
transition:
|
|
66
|
+
|
|
67
|
+
transition:
|
|
68
68
|
transform var(--oh-motion-gentle) var(--oh-motion-ease-gentle),
|
|
69
69
|
box-shadow var(--oh-motion-gentle) var(--oh-motion-ease-gentle),
|
|
70
70
|
border-color var(--oh-motion-gentle) var(--oh-motion-ease-gentle);
|
|
@@ -83,18 +83,16 @@ let OhCard = class OhCard extends OhElement {
|
|
|
83
83
|
var(--oh-card-raised-gradient-mid) 40%,
|
|
84
84
|
var(--oh-card-raised-gradient-end) 100%
|
|
85
85
|
);
|
|
86
|
-
|
|
86
|
+
|
|
87
87
|
/* Border: visible warm edge */
|
|
88
|
-
border:
|
|
89
|
-
|
|
88
|
+
border: var(--oh-card-base-border-width) solid
|
|
89
|
+
var(--oh-card-raised-border-color);
|
|
90
|
+
|
|
90
91
|
/* Layered shadows:
|
|
91
92
|
1. Outer: soft, offset shadow (tactile)
|
|
92
93
|
2. Deeper: ambient depth
|
|
93
94
|
3. Inner top: sunlit highlight */
|
|
94
|
-
box-shadow:
|
|
95
|
-
0 2px 6px rgba(61, 50, 41, 0.08),
|
|
96
|
-
0 6px 16px rgba(61, 50, 41, 0.05),
|
|
97
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
95
|
+
box-shadow: var(--oh-elevation-surface-raised);
|
|
98
96
|
}
|
|
99
97
|
|
|
100
98
|
/* ═══════════════════════════════════════════════════════════════
|
|
@@ -110,16 +108,13 @@ let OhCard = class OhCard extends OhElement {
|
|
|
110
108
|
var(--oh-card-sunlit-gradient-mid) 30%,
|
|
111
109
|
var(--oh-card-sunlit-gradient-end) 100%
|
|
112
110
|
);
|
|
113
|
-
|
|
111
|
+
|
|
114
112
|
/* Border: warm tinted edge */
|
|
115
|
-
border:
|
|
116
|
-
|
|
113
|
+
border: var(--oh-card-base-border-width) solid
|
|
114
|
+
var(--oh-card-sunlit-border-color);
|
|
115
|
+
|
|
117
116
|
/* Layered shadows with warm glow */
|
|
118
|
-
box-shadow:
|
|
119
|
-
0 2px 8px rgba(139, 69, 19, 0.08),
|
|
120
|
-
0 8px 24px rgba(139, 69, 19, 0.06),
|
|
121
|
-
0 0 20px rgba(197, 67, 0, 0.04),
|
|
122
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
117
|
+
box-shadow: var(--oh-elevation-surface-featured);
|
|
123
118
|
}
|
|
124
119
|
|
|
125
120
|
/* ═══════════════════════════════════════════════════════════════
|
|
@@ -134,14 +129,13 @@ let OhCard = class OhCard extends OhElement {
|
|
|
134
129
|
var(--oh-card-flat-gradient-start) 0%,
|
|
135
130
|
var(--oh-card-flat-gradient-end) 100%
|
|
136
131
|
);
|
|
137
|
-
|
|
132
|
+
|
|
138
133
|
/* Border: visible edge */
|
|
139
|
-
border:
|
|
140
|
-
|
|
134
|
+
border: var(--oh-card-base-border-width) solid
|
|
135
|
+
var(--oh-card-flat-border-color);
|
|
136
|
+
|
|
141
137
|
/* Minimal shadow */
|
|
142
|
-
box-shadow:
|
|
143
|
-
0 1px 2px rgba(61, 50, 41, 0.04),
|
|
144
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.6);
|
|
138
|
+
box-shadow: var(--oh-elevation-surface-flat);
|
|
145
139
|
}
|
|
146
140
|
|
|
147
141
|
/* ═══════════════════════════════════════════════════════════════
|
|
@@ -156,30 +150,20 @@ let OhCard = class OhCard extends OhElement {
|
|
|
156
150
|
/* Hover: warm light, lifted */
|
|
157
151
|
.card--interactive.card--raised:hover {
|
|
158
152
|
border-color: var(--oh-color-border-strong);
|
|
159
|
-
box-shadow:
|
|
160
|
-
|
|
161
|
-
0 12px 28px rgba(61, 50, 41, 0.08),
|
|
162
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
163
|
-
transform: translateY(-2px);
|
|
153
|
+
box-shadow: var(--oh-elevation-surface-lifted);
|
|
154
|
+
transform: translateY(var(--oh-lift-hover-md));
|
|
164
155
|
}
|
|
165
156
|
|
|
166
157
|
.card--interactive.card--sunlit:hover {
|
|
167
158
|
border-color: var(--oh-card-sunlit-border-color-hover);
|
|
168
|
-
box-shadow:
|
|
169
|
-
|
|
170
|
-
0 12px 32px rgba(139, 69, 19, 0.08),
|
|
171
|
-
0 0 28px rgba(197, 67, 0, 0.06),
|
|
172
|
-
inset 0 1px 0 rgba(255, 255, 255, 1);
|
|
173
|
-
transform: translateY(-2px);
|
|
159
|
+
box-shadow: var(--oh-elevation-surface-featured-lifted);
|
|
160
|
+
transform: translateY(var(--oh-lift-hover-md));
|
|
174
161
|
}
|
|
175
162
|
|
|
176
163
|
.card--interactive.card--flat:hover {
|
|
177
164
|
border-color: var(--oh-color-border-strong);
|
|
178
|
-
box-shadow:
|
|
179
|
-
|
|
180
|
-
0 6px 16px rgba(61, 50, 41, 0.05),
|
|
181
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
182
|
-
transform: translateY(-1px);
|
|
165
|
+
box-shadow: var(--oh-elevation-surface-raised);
|
|
166
|
+
transform: translateY(var(--oh-lift-hover-sm));
|
|
183
167
|
}
|
|
184
168
|
|
|
185
169
|
/* Active: pressed */
|
|
@@ -188,10 +172,7 @@ let OhCard = class OhCard extends OhElement {
|
|
|
188
172
|
}
|
|
189
173
|
|
|
190
174
|
.card--interactive.card--raised:active {
|
|
191
|
-
box-shadow:
|
|
192
|
-
0 1px 3px rgba(61, 50, 41, 0.1),
|
|
193
|
-
0 3px 8px rgba(61, 50, 41, 0.06),
|
|
194
|
-
inset 0 1px 2px rgba(61, 50, 41, 0.04);
|
|
175
|
+
box-shadow: var(--oh-elevation-surface-pressed);
|
|
195
176
|
}
|
|
196
177
|
|
|
197
178
|
/* Focus: solid outline is the indicator; the glow is decoration only */
|
|
@@ -205,24 +186,28 @@ let OhCard = class OhCard extends OhElement {
|
|
|
205
186
|
.card--interactive.card--flat:focus-visible {
|
|
206
187
|
box-shadow:
|
|
207
188
|
0 0 16px var(--oh-focus-glow-color),
|
|
208
|
-
|
|
209
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.8);
|
|
189
|
+
var(--oh-elevation-surface-focused);
|
|
210
190
|
}
|
|
211
191
|
|
|
212
192
|
.card--interactive.card--sunlit:focus-visible {
|
|
213
193
|
box-shadow:
|
|
214
194
|
0 0 20px var(--oh-focus-glow-color),
|
|
215
|
-
|
|
216
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.9);
|
|
195
|
+
var(--oh-elevation-surface-featured-focused);
|
|
217
196
|
}
|
|
218
197
|
|
|
219
198
|
/* ═══════════════════════════════════════════════════════════════
|
|
220
199
|
PADDING VARIANTS
|
|
221
200
|
═══════════════════════════════════════════════════════════════ */
|
|
222
201
|
|
|
223
|
-
.card--padding-sm .content {
|
|
224
|
-
|
|
225
|
-
|
|
202
|
+
.card--padding-sm .content {
|
|
203
|
+
padding: var(--oh-spacing-3-5);
|
|
204
|
+
}
|
|
205
|
+
.card--padding-md .content {
|
|
206
|
+
padding: var(--oh-spacing-5);
|
|
207
|
+
}
|
|
208
|
+
.card--padding-lg .content {
|
|
209
|
+
padding: var(--oh-spacing-7);
|
|
210
|
+
}
|
|
226
211
|
|
|
227
212
|
/* ═══════════════════════════════════════════════════════════════
|
|
228
213
|
SLOTS: Header, Content, Footer
|
|
@@ -230,7 +215,8 @@ let OhCard = class OhCard extends OhElement {
|
|
|
230
215
|
|
|
231
216
|
.header {
|
|
232
217
|
padding: var(--oh-spacing-4) var(--oh-spacing-5);
|
|
233
|
-
border-bottom:
|
|
218
|
+
border-bottom: var(--oh-stroke-divider) solid
|
|
219
|
+
var(--oh-card-section-divider-color);
|
|
234
220
|
background: linear-gradient(
|
|
235
221
|
180deg,
|
|
236
222
|
var(--oh-card-section-header-gradient-start) 0%,
|
|
@@ -238,7 +224,9 @@ let OhCard = class OhCard extends OhElement {
|
|
|
238
224
|
);
|
|
239
225
|
}
|
|
240
226
|
|
|
241
|
-
.header:empty {
|
|
227
|
+
.header:empty {
|
|
228
|
+
display: none;
|
|
229
|
+
}
|
|
242
230
|
|
|
243
231
|
.content {
|
|
244
232
|
/* Padding handled by variant */
|
|
@@ -246,7 +234,8 @@ let OhCard = class OhCard extends OhElement {
|
|
|
246
234
|
|
|
247
235
|
.footer {
|
|
248
236
|
padding: var(--oh-spacing-4) var(--oh-spacing-5);
|
|
249
|
-
border-top:
|
|
237
|
+
border-top: var(--oh-stroke-divider) solid
|
|
238
|
+
var(--oh-card-section-divider-color);
|
|
250
239
|
background: linear-gradient(
|
|
251
240
|
180deg,
|
|
252
241
|
var(--oh-color-surface-raised) 0%,
|
|
@@ -254,7 +243,9 @@ let OhCard = class OhCard extends OhElement {
|
|
|
254
243
|
);
|
|
255
244
|
}
|
|
256
245
|
|
|
257
|
-
.footer:empty {
|
|
246
|
+
.footer:empty {
|
|
247
|
+
display: none;
|
|
248
|
+
}
|
|
258
249
|
|
|
259
250
|
/* Padding adjustments for slots */
|
|
260
251
|
.card--padding-sm .header,
|
|
@@ -275,7 +266,7 @@ let OhCard = class OhCard extends OhElement {
|
|
|
275
266
|
.card {
|
|
276
267
|
transition-duration: 0.01ms !important;
|
|
277
268
|
}
|
|
278
|
-
|
|
269
|
+
|
|
279
270
|
.card--interactive:hover {
|
|
280
271
|
transform: none !important;
|
|
281
272
|
}
|
|
@@ -312,11 +303,11 @@ let OhCard = class OhCard extends OhElement {
|
|
|
312
303
|
<div class="header" part="header">
|
|
313
304
|
<slot name="header"></slot>
|
|
314
305
|
</div>
|
|
315
|
-
|
|
306
|
+
|
|
316
307
|
<div class="content" part="content">
|
|
317
308
|
<slot></slot>
|
|
318
309
|
</div>
|
|
319
|
-
|
|
310
|
+
|
|
320
311
|
<div class="footer" part="footer">
|
|
321
312
|
<slot name="footer"></slot>
|
|
322
313
|
</div>
|
package/dist/oh-card.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-card.js","sourceRoot":"","sources":["../src/oh-card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM3C,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,SAAS;IAA9B;;
|
|
1
|
+
{"version":3,"file":"oh-card.js","sourceRoot":"","sources":["../src/oh-card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAM3C,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,SAAS;IAA9B;;QA4OL,YAAO,GAAgB,QAAQ,CAAC;QAGhC,gBAAW,GAAG,KAAK,CAAC;QAGpB,YAAO,GAAgB,IAAI,CAAC;IA8C9B,CAAC;aA/RiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqOF;KACF,AAxOqB,CAwOpB;IAWM,YAAY,CAAC,KAAiB;QACpC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,KAAoB;QACzC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,KAA8B,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,IAAI,EAAE,IAAI;YACV,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI;YAC/B,CAAC,iBAAiB,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI;YACvC,mBAAmB,EAAE,IAAI,CAAC,WAAW;SACtC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;;;gBAGC,OAAO;eACR,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;mBACjC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO;iBAClC,IAAI,CAAC,YAAY;mBACf,IAAI,CAAC,cAAc;;;;;;;;;;;;;;KAcjC,CAAC;IACJ,CAAC;;AAnDD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCACV;AAGhC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CACvB;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCACd;AAlPjB,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM,CAgSlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-checkbox-group.d.ts","sourceRoot":"","sources":["../src/oh-checkbox-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBACa,eAAgB,SAAQ,SAAS;IAC5C,OAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"oh-checkbox-group.d.ts","sourceRoot":"","sources":["../src/oh-checkbox-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBACa,eAAgB,SAAQ,SAAS;IAC5C,OAAgB,MAAM,4BAwMpB;IAGF,MAAM,SAAM;IAGZ,IAAI,SAAM;IAGV,OAAO,EAAE,cAAc,EAAE,CAAM;IAG/B,KAAK,EAAE,MAAM,EAAE,CAAM;IAGrB,QAAQ,UAAS;IAGjB,KAAK,UAAS;IAGd,YAAY,SAAM;IAElB,OAAO,CAAC,aAAa;IAYrB;;;;OAIG;IAEH,OAAO,CAAC,cAAc,CAAS;IAE/B,UAAU,CAAC,OAAO,EAAE,cAAc;IASlC,MAAM;CA4DP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
|
|
@@ -16,7 +16,7 @@ figma.connect("https://www.figma.com/design/q9ZYrOj2w9DrTVmgQFU7bu/OHDS?node-id=
|
|
|
16
16
|
legend="${props.legend}"
|
|
17
17
|
?required="${props.required}"
|
|
18
18
|
?error="${props.error}"
|
|
19
|
-
|
|
19
|
+
errormessage="${props.errorMessage}"
|
|
20
20
|
.options="\${options}"
|
|
21
21
|
></oh-checkbox-group>
|
|
22
22
|
`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-checkbox-group.figma.js","sourceRoot":"","sources":["../src/oh-checkbox-group.figma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;GAIG;AAEH,KAAK,CAAC,OAAO,CACX,uEAAuE,EACvE;IACE,KAAK,EAAE;QACL,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACnC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7B,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;KAC5C;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;kBAEV,KAAK,CAAC,MAAM;qBACT,KAAK,CAAC,QAAQ;kBACjB,KAAK,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"oh-checkbox-group.figma.js","sourceRoot":"","sources":["../src/oh-checkbox-group.figma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;GAIG;AAEH,KAAK,CAAC,OAAO,CACX,uEAAuE,EACvE;IACE,KAAK,EAAE;QACL,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACnC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7B,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;KAC5C;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;kBAEV,KAAK,CAAC,MAAM;qBACT,KAAK,CAAC,QAAQ;kBACjB,KAAK,CAAC,KAAK;wBACL,KAAK,CAAC,YAAY;;;KAGrC;CACF,CACF,CAAC"}
|
|
@@ -108,11 +108,12 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
108
108
|
width: 24px;
|
|
109
109
|
height: 24px;
|
|
110
110
|
flex-shrink: 0;
|
|
111
|
-
border: var(--oh-
|
|
111
|
+
border: var(--oh-stroke-control) solid var(--oh-color-border-emphasis);
|
|
112
112
|
border-radius: var(--oh-shape-compact);
|
|
113
113
|
background-color: var(--oh-color-surface-base);
|
|
114
|
-
box-shadow:
|
|
115
|
-
|
|
114
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md)
|
|
115
|
+
0 0 var(--oh-shadow-secondary);
|
|
116
|
+
transition:
|
|
116
117
|
transform var(--oh-motion-snappy) var(--oh-motion-ease-playful),
|
|
117
118
|
box-shadow var(--oh-motion-snappy) var(--oh-motion-ease-playful),
|
|
118
119
|
background-color var(--oh-motion-quick) ease,
|
|
@@ -120,7 +121,7 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
.checkbox-box::after {
|
|
123
|
-
content:
|
|
124
|
+
content: "";
|
|
124
125
|
position: absolute;
|
|
125
126
|
top: 3px;
|
|
126
127
|
left: 7px;
|
|
@@ -148,21 +149,24 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
148
149
|
/* Hover: lift up-left, shadow grows */
|
|
149
150
|
.checkbox-option:hover .checkbox-box {
|
|
150
151
|
border-color: var(--oh-color-border-hover);
|
|
151
|
-
transform: translate(-
|
|
152
|
-
box-shadow:
|
|
152
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
153
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg)
|
|
154
|
+
0 0 var(--oh-shadow-secondary);
|
|
153
155
|
}
|
|
154
156
|
|
|
155
157
|
/* Active: press down-right, shadow shrinks */
|
|
156
158
|
.checkbox-option:active .checkbox-box {
|
|
157
|
-
transform: translate(
|
|
158
|
-
box-shadow:
|
|
159
|
+
transform: translate(var(--oh-lift-press-sm), var(--oh-lift-press-sm));
|
|
160
|
+
box-shadow: var(--oh-elevation-offset-xs) var(--oh-elevation-offset-xs)
|
|
161
|
+
0 0 var(--oh-shadow-secondary);
|
|
159
162
|
}
|
|
160
163
|
|
|
161
164
|
/* Checked: primary color with warm shadow */
|
|
162
165
|
.native-checkbox:checked + .checkbox-box {
|
|
163
166
|
background-color: var(--oh-color-brand-primary);
|
|
164
167
|
border-color: var(--oh-color-brand-primary);
|
|
165
|
-
box-shadow:
|
|
168
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md)
|
|
169
|
+
0 0 var(--oh-shadow-primary);
|
|
166
170
|
}
|
|
167
171
|
|
|
168
172
|
.native-checkbox:checked + .checkbox-box::after {
|
|
@@ -173,15 +177,17 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
173
177
|
.checkbox-option:hover .native-checkbox:checked + .checkbox-box {
|
|
174
178
|
background-color: var(--oh-color-brand-primary-hover);
|
|
175
179
|
border-color: var(--oh-color-brand-primary-hover);
|
|
176
|
-
transform: translate(-
|
|
177
|
-
box-shadow:
|
|
180
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
181
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg)
|
|
182
|
+
0 0 var(--oh-shadow-primary);
|
|
178
183
|
}
|
|
179
184
|
|
|
180
185
|
/* Checked + Active */
|
|
181
186
|
.checkbox-option:active .native-checkbox:checked + .checkbox-box {
|
|
182
187
|
background-color: var(--oh-color-brand-primary-active);
|
|
183
|
-
transform: translate(
|
|
184
|
-
box-shadow:
|
|
188
|
+
transform: translate(var(--oh-lift-press-sm), var(--oh-lift-press-sm));
|
|
189
|
+
box-shadow: var(--oh-elevation-offset-xs) var(--oh-elevation-offset-xs)
|
|
190
|
+
0 0 var(--oh-shadow-primary);
|
|
185
191
|
}
|
|
186
192
|
|
|
187
193
|
/* Focus: underline the label (accessible indicator) */
|
|
@@ -196,12 +202,14 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
196
202
|
|
|
197
203
|
:host([error]) .checkbox-box {
|
|
198
204
|
border-color: var(--oh-color-feedback-error);
|
|
199
|
-
box-shadow:
|
|
205
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md)
|
|
206
|
+
0 0 var(--oh-shadow-error);
|
|
200
207
|
}
|
|
201
208
|
|
|
202
209
|
:host([error]) .checkbox-option:hover .checkbox-box {
|
|
203
210
|
border-color: var(--oh-color-feedback-error-hover);
|
|
204
|
-
box-shadow:
|
|
211
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg)
|
|
212
|
+
0 0 var(--oh-shadow-error);
|
|
205
213
|
}
|
|
206
214
|
|
|
207
215
|
.error-message {
|
|
@@ -238,12 +246,13 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
238
246
|
this.value = [...this.value, optionValue];
|
|
239
247
|
}
|
|
240
248
|
else {
|
|
241
|
-
this.value = this.value.filter(v => v !== optionValue);
|
|
249
|
+
this.value = this.value.filter((v) => v !== optionValue);
|
|
242
250
|
}
|
|
243
251
|
this.emit("oh-change", { value: this.value });
|
|
244
252
|
}
|
|
245
253
|
willUpdate(changed) {
|
|
246
|
-
if (this.hasUpdated &&
|
|
254
|
+
if (this.hasUpdated &&
|
|
255
|
+
(changed.has("error") || changed.has("errorMessage"))) {
|
|
247
256
|
this._announceError = !!(this.error && this.errorMessage);
|
|
248
257
|
}
|
|
249
258
|
}
|
|
@@ -251,7 +260,9 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
251
260
|
return html `
|
|
252
261
|
<fieldset
|
|
253
262
|
aria-invalid=${this.error ? "true" : nothing}
|
|
254
|
-
aria-describedby=${this.error && this.errorMessage
|
|
263
|
+
aria-describedby=${this.error && this.errorMessage
|
|
264
|
+
? "error-msg"
|
|
265
|
+
: nothing}
|
|
255
266
|
>
|
|
256
267
|
${this.legend
|
|
257
268
|
? html `
|
|
@@ -260,18 +271,30 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
260
271
|
</legend>
|
|
261
272
|
`
|
|
262
273
|
: nothing}
|
|
263
|
-
|
|
264
274
|
${this.error && this.errorMessage
|
|
265
275
|
? html `
|
|
266
|
-
<div
|
|
267
|
-
|
|
268
|
-
|
|
276
|
+
<div
|
|
277
|
+
id="error-msg"
|
|
278
|
+
class="error-message"
|
|
279
|
+
role=${this._announceError ? "alert" : nothing}
|
|
280
|
+
>
|
|
281
|
+
<svg
|
|
282
|
+
class="error-icon"
|
|
283
|
+
viewBox="0 0 20 20"
|
|
284
|
+
fill="currentColor"
|
|
285
|
+
aria-hidden="true"
|
|
286
|
+
>
|
|
287
|
+
<path
|
|
288
|
+
fill-rule="evenodd"
|
|
289
|
+
d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z"
|
|
290
|
+
clip-rule="evenodd"
|
|
291
|
+
/>
|
|
269
292
|
</svg>
|
|
270
293
|
${this.errorMessage}
|
|
271
294
|
</div>
|
|
272
295
|
`
|
|
273
296
|
: nothing}
|
|
274
|
-
|
|
297
|
+
|
|
275
298
|
<div class="checkbox-group">
|
|
276
299
|
${this.options.map((option) => html `
|
|
277
300
|
<label class="checkbox-option">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-checkbox-group.js","sourceRoot":"","sources":["../src/oh-checkbox-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAS3C,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,SAAS;IAAvC;;
|
|
1
|
+
{"version":3,"file":"oh-checkbox-group.js","sourceRoot":"","sources":["../src/oh-checkbox-group.ts"],"names":[],"mappings":"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"}
|
package/dist/oh-checkbox.d.ts
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* DESIGN DECISIONS:
|
|
8
8
|
* ─────────────────
|
|
9
9
|
* 1. CHUNKY & TACTILE
|
|
10
|
-
* - Thick
|
|
10
|
+
* - Thick border (stroke.control)
|
|
11
11
|
* - Inset shadow when unchecked (pressed into page)
|
|
12
|
-
* -
|
|
12
|
+
* - shape.compact corners (smaller than buttons)
|
|
13
13
|
*
|
|
14
14
|
* 2. CHECKED STATE
|
|
15
15
|
* - Filled with primary color
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-checkbox.d.ts","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D,qBACa,UAAW,SAAQ,SAAS;IACvC,OAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"oh-checkbox.d.ts","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D,qBACa,UAAW,SAAQ,SAAS;IACvC,OAAgB,MAAM,4BAmNpB;IAGF,OAAO,UAAS;IAGhB,KAAK,SAAM;IAGX,IAAI,SAAM;IAGV,KAAK,SAAM;IAGX,KAAK,UAAS;IAGd,YAAY,SAAM;IAElB;;;OAGG;IAEH,UAAU,EAAE,aAAa,CAAa;IAEtC,OAAO,CAAC,aAAa;IAMrB;;;;OAIG;IAEH,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,QAAQ,CAAkE;IAElF,UAAU,CAAC,OAAO,EAAE,cAAc;IASlC,MAAM;CAkDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
|
package/dist/oh-checkbox.js
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* DESIGN DECISIONS:
|
|
8
8
|
* ─────────────────
|
|
9
9
|
* 1. CHUNKY & TACTILE
|
|
10
|
-
* - Thick
|
|
10
|
+
* - Thick border (stroke.control)
|
|
11
11
|
* - Inset shadow when unchecked (pressed into page)
|
|
12
|
-
* -
|
|
12
|
+
* - shape.compact corners (smaller than buttons)
|
|
13
13
|
*
|
|
14
14
|
* 2. CHECKED STATE
|
|
15
15
|
* - Filled with primary color
|
|
@@ -96,16 +96,17 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
96
96
|
width: 24px;
|
|
97
97
|
height: 24px;
|
|
98
98
|
flex-shrink: 0;
|
|
99
|
-
|
|
99
|
+
|
|
100
100
|
/* Chunky border */
|
|
101
|
-
border: var(--oh-
|
|
101
|
+
border: var(--oh-stroke-control) solid var(--oh-color-border-emphasis);
|
|
102
102
|
border-radius: var(--oh-shape-compact);
|
|
103
|
-
|
|
103
|
+
|
|
104
104
|
/* Offset shadow like primary button */
|
|
105
105
|
background-color: var(--oh-color-surface-base);
|
|
106
|
-
box-shadow:
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md)
|
|
107
|
+
0 0 var(--oh-shadow-secondary);
|
|
108
|
+
|
|
109
|
+
transition:
|
|
109
110
|
transform var(--oh-motion-snappy) var(--oh-motion-ease-playful),
|
|
110
111
|
box-shadow var(--oh-motion-snappy) var(--oh-motion-ease-playful),
|
|
111
112
|
background-color var(--oh-motion-quick) ease,
|
|
@@ -114,7 +115,7 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
114
115
|
|
|
115
116
|
/* Checkmark (hidden by default) */
|
|
116
117
|
.checkbox-box::after {
|
|
117
|
-
content:
|
|
118
|
+
content: "";
|
|
118
119
|
position: absolute;
|
|
119
120
|
top: 3px;
|
|
120
121
|
left: 7px;
|
|
@@ -134,21 +135,24 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
134
135
|
/* Hover: lift up-left, shadow grows */
|
|
135
136
|
.checkbox-wrapper:hover .checkbox-box {
|
|
136
137
|
border-color: var(--oh-color-border-hover);
|
|
137
|
-
transform: translate(-
|
|
138
|
-
box-shadow:
|
|
138
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
139
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg)
|
|
140
|
+
0 0 var(--oh-shadow-secondary);
|
|
139
141
|
}
|
|
140
142
|
|
|
141
143
|
/* Active: press down-right, shadow shrinks */
|
|
142
144
|
.checkbox-wrapper:active .checkbox-box {
|
|
143
|
-
transform: translate(
|
|
144
|
-
box-shadow:
|
|
145
|
+
transform: translate(var(--oh-lift-press-sm), var(--oh-lift-press-sm));
|
|
146
|
+
box-shadow: var(--oh-elevation-offset-xs) var(--oh-elevation-offset-xs)
|
|
147
|
+
0 0 var(--oh-shadow-secondary);
|
|
145
148
|
}
|
|
146
149
|
|
|
147
150
|
/* Checked: primary color with warm shadow */
|
|
148
151
|
.native-checkbox:checked + .checkbox-box {
|
|
149
152
|
background-color: var(--oh-color-brand-primary);
|
|
150
153
|
border-color: var(--oh-color-brand-primary);
|
|
151
|
-
box-shadow:
|
|
154
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md)
|
|
155
|
+
0 0 var(--oh-shadow-primary);
|
|
152
156
|
}
|
|
153
157
|
|
|
154
158
|
.native-checkbox:checked + .checkbox-box::after {
|
|
@@ -159,15 +163,17 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
159
163
|
.checkbox-wrapper:hover .native-checkbox:checked + .checkbox-box {
|
|
160
164
|
background-color: var(--oh-color-brand-primary-hover);
|
|
161
165
|
border-color: var(--oh-color-brand-primary-hover);
|
|
162
|
-
transform: translate(-
|
|
163
|
-
box-shadow:
|
|
166
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
167
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg)
|
|
168
|
+
0 0 var(--oh-shadow-primary);
|
|
164
169
|
}
|
|
165
170
|
|
|
166
171
|
/* Checked + Active */
|
|
167
172
|
.checkbox-wrapper:active .native-checkbox:checked + .checkbox-box {
|
|
168
173
|
background-color: var(--oh-color-brand-primary-active);
|
|
169
|
-
transform: translate(
|
|
170
|
-
box-shadow:
|
|
174
|
+
transform: translate(var(--oh-lift-press-sm), var(--oh-lift-press-sm));
|
|
175
|
+
box-shadow: var(--oh-elevation-offset-xs) var(--oh-elevation-offset-xs)
|
|
176
|
+
0 0 var(--oh-shadow-primary);
|
|
171
177
|
}
|
|
172
178
|
|
|
173
179
|
/* Focus: underline the label (accessible indicator) */
|
|
@@ -195,12 +201,14 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
195
201
|
|
|
196
202
|
:host([error]) .checkbox-box {
|
|
197
203
|
border-color: var(--oh-color-feedback-error);
|
|
198
|
-
box-shadow:
|
|
204
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md)
|
|
205
|
+
0 0 var(--oh-shadow-error);
|
|
199
206
|
}
|
|
200
207
|
|
|
201
208
|
:host([error]) .checkbox-wrapper:hover .checkbox-box {
|
|
202
209
|
border-color: var(--oh-color-feedback-error-hover);
|
|
203
|
-
box-shadow:
|
|
210
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg)
|
|
211
|
+
0 0 var(--oh-shadow-error);
|
|
204
212
|
}
|
|
205
213
|
|
|
206
214
|
.error-message {
|
|
@@ -238,8 +246,9 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
238
246
|
/* Forced Hover - Unchecked */
|
|
239
247
|
:host([force-state="hover"]) .checkbox-box {
|
|
240
248
|
border-color: var(--oh-color-border-hover);
|
|
241
|
-
transform: translate(-
|
|
242
|
-
box-shadow:
|
|
249
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
250
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg)
|
|
251
|
+
0 0 var(--oh-shadow-secondary);
|
|
243
252
|
}
|
|
244
253
|
|
|
245
254
|
/* Forced Focus - Unchecked */
|
|
@@ -252,8 +261,9 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
252
261
|
:host([force-state="hover"][checked]) .checkbox-box {
|
|
253
262
|
background-color: var(--oh-color-brand-primary-hover);
|
|
254
263
|
border-color: var(--oh-color-brand-primary-hover);
|
|
255
|
-
transform: translate(-
|
|
256
|
-
box-shadow:
|
|
264
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
265
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg)
|
|
266
|
+
0 0 var(--oh-shadow-primary);
|
|
257
267
|
}
|
|
258
268
|
`,
|
|
259
269
|
]; }
|
|
@@ -263,7 +273,8 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
263
273
|
this.emit("oh-change", { checked: this.checked, value: this.value });
|
|
264
274
|
}
|
|
265
275
|
willUpdate(changed) {
|
|
266
|
-
if (this.hasUpdated &&
|
|
276
|
+
if (this.hasUpdated &&
|
|
277
|
+
(changed.has("error") || changed.has("errorMessage"))) {
|
|
267
278
|
this._announceError = !!(this.error && this.errorMessage);
|
|
268
279
|
}
|
|
269
280
|
}
|
|
@@ -280,7 +291,9 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
280
291
|
.value=${this.value}
|
|
281
292
|
.checked=${this.checked}
|
|
282
293
|
aria-invalid=${this.error ? "true" : "false"}
|
|
283
|
-
aria-describedby=${this.error && this.errorMessage
|
|
294
|
+
aria-describedby=${this.error && this.errorMessage
|
|
295
|
+
? this._errorId
|
|
296
|
+
: nothing}
|
|
284
297
|
@change=${this._handleChange}
|
|
285
298
|
/>
|
|
286
299
|
<span class="checkbox-box" part="box"></span>
|
|
@@ -288,9 +301,23 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
288
301
|
</label>
|
|
289
302
|
${this.error && this.errorMessage
|
|
290
303
|
? html `
|
|
291
|
-
<div
|
|
292
|
-
|
|
293
|
-
|
|
304
|
+
<div
|
|
305
|
+
id=${this._errorId}
|
|
306
|
+
class="error-message"
|
|
307
|
+
part="error"
|
|
308
|
+
role=${this._announceError ? "alert" : nothing}
|
|
309
|
+
>
|
|
310
|
+
<svg
|
|
311
|
+
class="error-icon"
|
|
312
|
+
viewBox="0 0 20 20"
|
|
313
|
+
fill="currentColor"
|
|
314
|
+
aria-hidden="true"
|
|
315
|
+
>
|
|
316
|
+
<path
|
|
317
|
+
fill-rule="evenodd"
|
|
318
|
+
d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z"
|
|
319
|
+
clip-rule="evenodd"
|
|
320
|
+
/>
|
|
294
321
|
</svg>
|
|
295
322
|
${this.errorMessage}
|
|
296
323
|
</div>
|
package/dist/oh-checkbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-checkbox.js","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAK3C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,SAAS;IAAlC;;
|
|
1
|
+
{"version":3,"file":"oh-checkbox.js","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"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"}
|