@orange-halo/components 1.0.0 → 2.1.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 +3182 -73
- package/dist/base.js +3 -3
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/oh-accordion.js +33 -33
- package/dist/oh-alert.js +26 -26
- package/dist/oh-badge.js +11 -11
- package/dist/oh-breadcrumb.js +20 -20
- package/dist/oh-button.d.ts +7 -1
- package/dist/oh-button.d.ts.map +1 -1
- package/dist/oh-button.js +118 -89
- package/dist/oh-button.js.map +1 -1
- package/dist/oh-card.d.ts.map +1 -1
- package/dist/oh-card.js +38 -66
- package/dist/oh-card.js.map +1 -1
- package/dist/oh-checkbox-group.d.ts +8 -0
- 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 +40 -26
- package/dist/oh-checkbox-group.js.map +1 -1
- package/dist/oh-checkbox.d.ts +11 -2
- package/dist/oh-checkbox.d.ts.map +1 -1
- package/dist/oh-checkbox.js +44 -28
- package/dist/oh-checkbox.js.map +1 -1
- package/dist/oh-container.d.ts +5 -5
- package/dist/oh-container.js +15 -15
- package/dist/oh-drawer.d.ts +7 -2
- package/dist/oh-drawer.d.ts.map +1 -1
- package/dist/oh-drawer.js +52 -25
- 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 +9 -4
- package/dist/oh-footer.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 +55 -51
- package/dist/oh-hero.js.map +1 -1
- package/dist/oh-icon.js +9 -9
- package/dist/oh-input.d.ts +11 -3
- 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 +49 -37
- package/dist/oh-input.js.map +1 -1
- package/dist/oh-link.d.ts +1 -1
- package/dist/oh-link.js +35 -35
- package/dist/oh-modal.d.ts +10 -4
- package/dist/oh-modal.d.ts.map +1 -1
- package/dist/oh-modal.js +75 -72
- package/dist/oh-modal.js.map +1 -1
- package/dist/oh-navbar.d.ts.map +1 -1
- package/dist/oh-navbar.js +4 -5
- package/dist/oh-navbar.js.map +1 -1
- package/dist/oh-progress.d.ts.map +1 -1
- package/dist/oh-progress.js +21 -35
- package/dist/oh-progress.js.map +1 -1
- package/dist/oh-radio-group.d.ts +8 -0
- package/dist/oh-radio-group.d.ts.map +1 -1
- package/dist/oh-radio-group.js +40 -26
- package/dist/oh-radio-group.js.map +1 -1
- package/dist/oh-radio.d.ts +10 -1
- package/dist/oh-radio.d.ts.map +1 -1
- package/dist/oh-radio.js +44 -28
- package/dist/oh-radio.js.map +1 -1
- package/dist/oh-select.d.ts +10 -2
- package/dist/oh-select.d.ts.map +1 -1
- package/dist/oh-select.js +51 -32
- package/dist/oh-select.js.map +1 -1
- package/dist/oh-skip-link.d.ts.map +1 -1
- package/dist/oh-skip-link.js +15 -14
- package/dist/oh-skip-link.js.map +1 -1
- package/dist/oh-tabs.js +15 -15
- package/dist/oh-toggle.d.ts +5 -2
- package/dist/oh-toggle.d.ts.map +1 -1
- package/dist/oh-toggle.js +18 -20
- package/dist/oh-toggle.js.map +1 -1
- package/dist/styles/typography.js +50 -50
- package/package.json +15 -4
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @element oh-checkbox-group
|
|
15
15
|
*/
|
|
16
|
+
import { type PropertyValues } from "lit";
|
|
16
17
|
import { OhElement } from "./base.js";
|
|
17
18
|
export interface CheckboxOption {
|
|
18
19
|
label: string;
|
|
@@ -29,6 +30,13 @@ export declare class OhCheckboxGroup extends OhElement {
|
|
|
29
30
|
error: boolean;
|
|
30
31
|
errorMessage: string;
|
|
31
32
|
private _handleChange;
|
|
33
|
+
/**
|
|
34
|
+
* Errors that appear after first render (e.g. on submit) are announced via
|
|
35
|
+
* role="alert". Errors present on page load are only linked with
|
|
36
|
+
* aria-describedby, so they aren't read out unprompted.
|
|
37
|
+
*/
|
|
38
|
+
private _announceError;
|
|
39
|
+
willUpdate(changed: PropertyValues): void;
|
|
32
40
|
render(): import("lit").TemplateResult<1>;
|
|
33
41
|
}
|
|
34
42
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-checkbox-group.d.ts","sourceRoot":"","sources":["../src/oh-checkbox-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
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,4BAgMpB;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;IAMlC,MAAM;CA8CP;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"}
|
|
@@ -20,7 +20,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
20
20
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
21
21
|
};
|
|
22
22
|
import { html, css, nothing } from "lit";
|
|
23
|
-
import { customElement, property } from "lit/decorators.js";
|
|
23
|
+
import { customElement, property, state } from "lit/decorators.js";
|
|
24
24
|
import { OhElement, baseStyles } from "./base.js";
|
|
25
25
|
let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
26
26
|
constructor() {
|
|
@@ -32,6 +32,12 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
32
32
|
this.required = false;
|
|
33
33
|
this.error = false;
|
|
34
34
|
this.errorMessage = "";
|
|
35
|
+
/**
|
|
36
|
+
* Errors that appear after first render (e.g. on submit) are announced via
|
|
37
|
+
* role="alert". Errors present on page load are only linked with
|
|
38
|
+
* aria-describedby, so they aren't read out unprompted.
|
|
39
|
+
*/
|
|
40
|
+
this._announceError = false;
|
|
35
41
|
}
|
|
36
42
|
static { this.styles = [
|
|
37
43
|
baseStyles,
|
|
@@ -58,9 +64,9 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
58
64
|
}
|
|
59
65
|
|
|
60
66
|
legend {
|
|
61
|
-
font-family: var(--oh-font-family
|
|
62
|
-
font-size: var(--oh-font-size-
|
|
63
|
-
font-weight: var(--oh-font-weight
|
|
67
|
+
font-family: var(--oh-typography-control-font-family);
|
|
68
|
+
font-size: var(--oh-typography-control-font-size-sm);
|
|
69
|
+
font-weight: var(--oh-typography-control-font-weight);
|
|
64
70
|
color: var(--oh-color-text-primary);
|
|
65
71
|
margin-bottom: var(--oh-spacing-2);
|
|
66
72
|
padding: 0;
|
|
@@ -102,10 +108,10 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
102
108
|
width: 24px;
|
|
103
109
|
height: 24px;
|
|
104
110
|
flex-shrink: 0;
|
|
105
|
-
border: var(--oh-
|
|
106
|
-
border-radius: var(--oh-
|
|
111
|
+
border: var(--oh-stroke-control) solid var(--oh-color-border-emphasis);
|
|
112
|
+
border-radius: var(--oh-shape-compact);
|
|
107
113
|
background-color: var(--oh-color-surface-base);
|
|
108
|
-
box-shadow:
|
|
114
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md) 0 0 var(--oh-shadow-secondary);
|
|
109
115
|
transition:
|
|
110
116
|
transform var(--oh-motion-snappy) var(--oh-motion-ease-playful),
|
|
111
117
|
box-shadow var(--oh-motion-snappy) var(--oh-motion-ease-playful),
|
|
@@ -128,9 +134,9 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
128
134
|
}
|
|
129
135
|
|
|
130
136
|
.option-label {
|
|
131
|
-
font-family: var(--oh-font-family
|
|
132
|
-
font-size: var(--oh-font-size-
|
|
133
|
-
line-height: var(--oh-
|
|
137
|
+
font-family: var(--oh-typography-control-font-family);
|
|
138
|
+
font-size: var(--oh-typography-control-font-size-md);
|
|
139
|
+
line-height: var(--oh-typography-body-base-line-height);
|
|
134
140
|
color: var(--oh-color-text-primary);
|
|
135
141
|
user-select: none;
|
|
136
142
|
}
|
|
@@ -142,21 +148,21 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
142
148
|
/* Hover: lift up-left, shadow grows */
|
|
143
149
|
.checkbox-option:hover .checkbox-box {
|
|
144
150
|
border-color: var(--oh-color-border-hover);
|
|
145
|
-
transform: translate(-
|
|
146
|
-
box-shadow:
|
|
151
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
152
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-shadow-secondary);
|
|
147
153
|
}
|
|
148
154
|
|
|
149
155
|
/* Active: press down-right, shadow shrinks */
|
|
150
156
|
.checkbox-option:active .checkbox-box {
|
|
151
|
-
transform: translate(
|
|
152
|
-
box-shadow:
|
|
157
|
+
transform: translate(var(--oh-lift-press-sm), var(--oh-lift-press-sm));
|
|
158
|
+
box-shadow: var(--oh-elevation-offset-xs) var(--oh-elevation-offset-xs) 0 0 var(--oh-shadow-secondary);
|
|
153
159
|
}
|
|
154
160
|
|
|
155
161
|
/* Checked: primary color with warm shadow */
|
|
156
162
|
.native-checkbox:checked + .checkbox-box {
|
|
157
163
|
background-color: var(--oh-color-brand-primary);
|
|
158
164
|
border-color: var(--oh-color-brand-primary);
|
|
159
|
-
box-shadow:
|
|
165
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md) 0 0 var(--oh-shadow-primary);
|
|
160
166
|
}
|
|
161
167
|
|
|
162
168
|
.native-checkbox:checked + .checkbox-box::after {
|
|
@@ -167,15 +173,15 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
167
173
|
.checkbox-option:hover .native-checkbox:checked + .checkbox-box {
|
|
168
174
|
background-color: var(--oh-color-brand-primary-hover);
|
|
169
175
|
border-color: var(--oh-color-brand-primary-hover);
|
|
170
|
-
transform: translate(-
|
|
171
|
-
box-shadow:
|
|
176
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
177
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-shadow-primary);
|
|
172
178
|
}
|
|
173
179
|
|
|
174
180
|
/* Checked + Active */
|
|
175
181
|
.checkbox-option:active .native-checkbox:checked + .checkbox-box {
|
|
176
182
|
background-color: var(--oh-color-brand-primary-active);
|
|
177
|
-
transform: translate(
|
|
178
|
-
box-shadow:
|
|
183
|
+
transform: translate(var(--oh-lift-press-sm), var(--oh-lift-press-sm));
|
|
184
|
+
box-shadow: var(--oh-elevation-offset-xs) var(--oh-elevation-offset-xs) 0 0 var(--oh-shadow-primary);
|
|
179
185
|
}
|
|
180
186
|
|
|
181
187
|
/* Focus: underline the label (accessible indicator) */
|
|
@@ -190,28 +196,28 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
190
196
|
|
|
191
197
|
:host([error]) .checkbox-box {
|
|
192
198
|
border-color: var(--oh-color-feedback-error);
|
|
193
|
-
box-shadow:
|
|
199
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md) 0 0 var(--oh-shadow-error);
|
|
194
200
|
}
|
|
195
201
|
|
|
196
202
|
:host([error]) .checkbox-option:hover .checkbox-box {
|
|
197
203
|
border-color: var(--oh-color-feedback-error-hover);
|
|
198
|
-
box-shadow:
|
|
204
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-shadow-error);
|
|
199
205
|
}
|
|
200
206
|
|
|
201
207
|
.error-message {
|
|
202
208
|
display: flex;
|
|
203
209
|
align-items: center;
|
|
204
210
|
gap: var(--oh-spacing-2);
|
|
205
|
-
font-family: var(--oh-font-family
|
|
206
|
-
font-size: var(--oh-font-size
|
|
211
|
+
font-family: var(--oh-typography-body-font-family);
|
|
212
|
+
font-size: var(--oh-typography-body-base-font-size);
|
|
207
213
|
color: var(--oh-color-feedback-error);
|
|
208
214
|
margin-bottom: var(--oh-spacing-2);
|
|
209
215
|
}
|
|
210
216
|
|
|
211
217
|
.error-icon {
|
|
212
218
|
flex-shrink: 0;
|
|
213
|
-
width: var(--oh-font-size
|
|
214
|
-
height: var(--oh-font-size
|
|
219
|
+
width: var(--oh-typography-body-lg-font-size);
|
|
220
|
+
height: var(--oh-typography-body-lg-font-size);
|
|
215
221
|
}
|
|
216
222
|
|
|
217
223
|
/* ═══════════════════════════════════════════════════════════════
|
|
@@ -236,6 +242,11 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
236
242
|
}
|
|
237
243
|
this.emit("oh-change", { value: this.value });
|
|
238
244
|
}
|
|
245
|
+
willUpdate(changed) {
|
|
246
|
+
if (this.hasUpdated && (changed.has("error") || changed.has("errorMessage"))) {
|
|
247
|
+
this._announceError = !!(this.error && this.errorMessage);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
239
250
|
render() {
|
|
240
251
|
return html `
|
|
241
252
|
<fieldset
|
|
@@ -252,7 +263,7 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
|
|
|
252
263
|
|
|
253
264
|
${this.error && this.errorMessage
|
|
254
265
|
? html `
|
|
255
|
-
<div id="error-msg" class="error-message" role
|
|
266
|
+
<div id="error-msg" class="error-message" role=${this._announceError ? "alert" : nothing}>
|
|
256
267
|
<svg class="error-icon" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
257
268
|
<path fill-rule="evenodd" 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" clip-rule="evenodd" />
|
|
258
269
|
</svg>
|
|
@@ -302,6 +313,9 @@ __decorate([
|
|
|
302
313
|
__decorate([
|
|
303
314
|
property({ type: String })
|
|
304
315
|
], OhCheckboxGroup.prototype, "errorMessage", void 0);
|
|
316
|
+
__decorate([
|
|
317
|
+
state()
|
|
318
|
+
], OhCheckboxGroup.prototype, "_announceError", void 0);
|
|
305
319
|
OhCheckboxGroup = __decorate([
|
|
306
320
|
customElement("oh-checkbox-group")
|
|
307
321
|
], OhCheckboxGroup);
|
|
@@ -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,
|
|
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
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
*
|
|
25
25
|
* @element oh-checkbox
|
|
26
26
|
*/
|
|
27
|
+
import { type PropertyValues } from "lit";
|
|
27
28
|
import { OhElement } from "./base.js";
|
|
28
29
|
export type CheckboxState = "default" | "hover" | "focus";
|
|
29
30
|
export declare class OhCheckbox extends OhElement {
|
|
@@ -40,6 +41,14 @@ export declare class OhCheckbox extends OhElement {
|
|
|
40
41
|
*/
|
|
41
42
|
forceState: CheckboxState;
|
|
42
43
|
private _handleChange;
|
|
44
|
+
/**
|
|
45
|
+
* Errors that appear after first render (e.g. on submit) are announced via
|
|
46
|
+
* role="alert". Errors present on page load are only linked with
|
|
47
|
+
* aria-describedby, so they aren't read out unprompted.
|
|
48
|
+
*/
|
|
49
|
+
private _announceError;
|
|
50
|
+
private _errorId;
|
|
51
|
+
willUpdate(changed: PropertyValues): void;
|
|
43
52
|
render(): import("lit").TemplateResult<1>;
|
|
44
53
|
}
|
|
45
54
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-checkbox.d.ts","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
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,4BAyMpB;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;IAMlC,MAAM;CAiCP;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
|
|
@@ -30,8 +30,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
30
30
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
31
31
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
32
32
|
};
|
|
33
|
-
import { html, css } from "lit";
|
|
34
|
-
import { customElement, property } from "lit/decorators.js";
|
|
33
|
+
import { html, css, nothing } from "lit";
|
|
34
|
+
import { customElement, property, state } from "lit/decorators.js";
|
|
35
35
|
import { OhElement, baseStyles } from "./base.js";
|
|
36
36
|
let OhCheckbox = class OhCheckbox extends OhElement {
|
|
37
37
|
constructor() {
|
|
@@ -47,6 +47,13 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
47
47
|
* Values: 'hover' | 'focus'
|
|
48
48
|
*/
|
|
49
49
|
this.forceState = "default";
|
|
50
|
+
/**
|
|
51
|
+
* Errors that appear after first render (e.g. on submit) are announced via
|
|
52
|
+
* role="alert". Errors present on page load are only linked with
|
|
53
|
+
* aria-describedby, so they aren't read out unprompted.
|
|
54
|
+
*/
|
|
55
|
+
this._announceError = false;
|
|
56
|
+
this._errorId = `oh-checkbox-error-${Math.random().toString(36).slice(2, 11)}`;
|
|
50
57
|
}
|
|
51
58
|
static { this.styles = [
|
|
52
59
|
baseStyles,
|
|
@@ -91,12 +98,12 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
91
98
|
flex-shrink: 0;
|
|
92
99
|
|
|
93
100
|
/* Chunky border */
|
|
94
|
-
border: var(--oh-
|
|
95
|
-
border-radius: var(--oh-
|
|
101
|
+
border: var(--oh-stroke-control) solid var(--oh-color-border-emphasis);
|
|
102
|
+
border-radius: var(--oh-shape-compact);
|
|
96
103
|
|
|
97
104
|
/* Offset shadow like primary button */
|
|
98
105
|
background-color: var(--oh-color-surface-base);
|
|
99
|
-
box-shadow:
|
|
106
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md) 0 0 var(--oh-shadow-secondary);
|
|
100
107
|
|
|
101
108
|
transition:
|
|
102
109
|
transform var(--oh-motion-snappy) var(--oh-motion-ease-playful),
|
|
@@ -127,21 +134,21 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
127
134
|
/* Hover: lift up-left, shadow grows */
|
|
128
135
|
.checkbox-wrapper:hover .checkbox-box {
|
|
129
136
|
border-color: var(--oh-color-border-hover);
|
|
130
|
-
transform: translate(-
|
|
131
|
-
box-shadow:
|
|
137
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
138
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-shadow-secondary);
|
|
132
139
|
}
|
|
133
140
|
|
|
134
141
|
/* Active: press down-right, shadow shrinks */
|
|
135
142
|
.checkbox-wrapper:active .checkbox-box {
|
|
136
|
-
transform: translate(
|
|
137
|
-
box-shadow:
|
|
143
|
+
transform: translate(var(--oh-lift-press-sm), var(--oh-lift-press-sm));
|
|
144
|
+
box-shadow: var(--oh-elevation-offset-xs) var(--oh-elevation-offset-xs) 0 0 var(--oh-shadow-secondary);
|
|
138
145
|
}
|
|
139
146
|
|
|
140
147
|
/* Checked: primary color with warm shadow */
|
|
141
148
|
.native-checkbox:checked + .checkbox-box {
|
|
142
149
|
background-color: var(--oh-color-brand-primary);
|
|
143
150
|
border-color: var(--oh-color-brand-primary);
|
|
144
|
-
box-shadow:
|
|
151
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md) 0 0 var(--oh-shadow-primary);
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
.native-checkbox:checked + .checkbox-box::after {
|
|
@@ -152,15 +159,15 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
152
159
|
.checkbox-wrapper:hover .native-checkbox:checked + .checkbox-box {
|
|
153
160
|
background-color: var(--oh-color-brand-primary-hover);
|
|
154
161
|
border-color: var(--oh-color-brand-primary-hover);
|
|
155
|
-
transform: translate(-
|
|
156
|
-
box-shadow:
|
|
162
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
163
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-shadow-primary);
|
|
157
164
|
}
|
|
158
165
|
|
|
159
166
|
/* Checked + Active */
|
|
160
167
|
.checkbox-wrapper:active .native-checkbox:checked + .checkbox-box {
|
|
161
168
|
background-color: var(--oh-color-brand-primary-active);
|
|
162
|
-
transform: translate(
|
|
163
|
-
box-shadow:
|
|
169
|
+
transform: translate(var(--oh-lift-press-sm), var(--oh-lift-press-sm));
|
|
170
|
+
box-shadow: var(--oh-elevation-offset-xs) var(--oh-elevation-offset-xs) 0 0 var(--oh-shadow-primary);
|
|
164
171
|
}
|
|
165
172
|
|
|
166
173
|
/* Focus: underline the label (accessible indicator) */
|
|
@@ -174,9 +181,9 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
174
181
|
═══════════════════════════════════════════════════════════════ */
|
|
175
182
|
|
|
176
183
|
.label {
|
|
177
|
-
font-family: var(--oh-font-family
|
|
178
|
-
font-size: var(--oh-font-size-
|
|
179
|
-
line-height: var(--oh-
|
|
184
|
+
font-family: var(--oh-typography-control-font-family);
|
|
185
|
+
font-size: var(--oh-typography-control-font-size-md);
|
|
186
|
+
line-height: var(--oh-typography-body-base-line-height);
|
|
180
187
|
color: var(--oh-color-text-primary);
|
|
181
188
|
user-select: none;
|
|
182
189
|
padding-top: 0; /* Align with checkbox */
|
|
@@ -188,20 +195,20 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
188
195
|
|
|
189
196
|
:host([error]) .checkbox-box {
|
|
190
197
|
border-color: var(--oh-color-feedback-error);
|
|
191
|
-
box-shadow:
|
|
198
|
+
box-shadow: var(--oh-elevation-offset-md) var(--oh-elevation-offset-md) 0 0 var(--oh-shadow-error);
|
|
192
199
|
}
|
|
193
200
|
|
|
194
201
|
:host([error]) .checkbox-wrapper:hover .checkbox-box {
|
|
195
202
|
border-color: var(--oh-color-feedback-error-hover);
|
|
196
|
-
box-shadow:
|
|
203
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-shadow-error);
|
|
197
204
|
}
|
|
198
205
|
|
|
199
206
|
.error-message {
|
|
200
207
|
display: flex;
|
|
201
208
|
align-items: center;
|
|
202
209
|
gap: var(--oh-spacing-2);
|
|
203
|
-
font-family: var(--oh-font-family
|
|
204
|
-
font-size: var(--oh-font-size
|
|
210
|
+
font-family: var(--oh-typography-body-font-family);
|
|
211
|
+
font-size: var(--oh-typography-body-base-font-size);
|
|
205
212
|
color: var(--oh-color-feedback-error);
|
|
206
213
|
margin-top: var(--oh-spacing-1);
|
|
207
214
|
margin-left: calc(24px + var(--oh-spacing-3)); /* Align with label */
|
|
@@ -231,8 +238,8 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
231
238
|
/* Forced Hover - Unchecked */
|
|
232
239
|
:host([force-state="hover"]) .checkbox-box {
|
|
233
240
|
border-color: var(--oh-color-border-hover);
|
|
234
|
-
transform: translate(-
|
|
235
|
-
box-shadow:
|
|
241
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
242
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-shadow-secondary);
|
|
236
243
|
}
|
|
237
244
|
|
|
238
245
|
/* Forced Focus - Unchecked */
|
|
@@ -245,8 +252,8 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
245
252
|
:host([force-state="hover"][checked]) .checkbox-box {
|
|
246
253
|
background-color: var(--oh-color-brand-primary-hover);
|
|
247
254
|
border-color: var(--oh-color-brand-primary-hover);
|
|
248
|
-
transform: translate(-
|
|
249
|
-
box-shadow:
|
|
255
|
+
transform: translate(var(--oh-lift-hover-sm), var(--oh-lift-hover-sm));
|
|
256
|
+
box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-shadow-primary);
|
|
250
257
|
}
|
|
251
258
|
`,
|
|
252
259
|
]; }
|
|
@@ -255,6 +262,11 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
255
262
|
this.checked = target.checked;
|
|
256
263
|
this.emit("oh-change", { checked: this.checked, value: this.value });
|
|
257
264
|
}
|
|
265
|
+
willUpdate(changed) {
|
|
266
|
+
if (this.hasUpdated && (changed.has("error") || changed.has("errorMessage"))) {
|
|
267
|
+
this._announceError = !!(this.error && this.errorMessage);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
258
270
|
render() {
|
|
259
271
|
const inputId = this.name || `oh-checkbox-${Math.random().toString(36).substr(2, 9)}`;
|
|
260
272
|
return html `
|
|
@@ -268,6 +280,7 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
268
280
|
.value=${this.value}
|
|
269
281
|
.checked=${this.checked}
|
|
270
282
|
aria-invalid=${this.error ? "true" : "false"}
|
|
283
|
+
aria-describedby=${this.error && this.errorMessage ? this._errorId : nothing}
|
|
271
284
|
@change=${this._handleChange}
|
|
272
285
|
/>
|
|
273
286
|
<span class="checkbox-box" part="box"></span>
|
|
@@ -275,7 +288,7 @@ let OhCheckbox = class OhCheckbox extends OhElement {
|
|
|
275
288
|
</label>
|
|
276
289
|
${this.error && this.errorMessage
|
|
277
290
|
? html `
|
|
278
|
-
<div class="error-message" part="error" role
|
|
291
|
+
<div id=${this._errorId} class="error-message" part="error" role=${this._announceError ? "alert" : nothing}>
|
|
279
292
|
<svg class="error-icon" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
280
293
|
<path fill-rule="evenodd" 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" clip-rule="evenodd" />
|
|
281
294
|
</svg>
|
|
@@ -308,6 +321,9 @@ __decorate([
|
|
|
308
321
|
__decorate([
|
|
309
322
|
property({ type: String, reflect: true, attribute: "force-state" })
|
|
310
323
|
], OhCheckbox.prototype, "forceState", void 0);
|
|
324
|
+
__decorate([
|
|
325
|
+
state()
|
|
326
|
+
], OhCheckbox.prototype, "_announceError", void 0);
|
|
311
327
|
OhCheckbox = __decorate([
|
|
312
328
|
customElement("oh-checkbox")
|
|
313
329
|
], OhCheckbox);
|
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,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"oh-checkbox.js","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"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"}
|
package/dist/oh-container.d.ts
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* DESIGN DECISIONS:
|
|
8
8
|
* ─────────────────
|
|
9
|
-
* 1. RESPONSIVE MAX-WIDTHS
|
|
10
|
-
* - sm:
|
|
11
|
-
* - md:
|
|
12
|
-
* - lg:
|
|
13
|
-
* - xl:
|
|
9
|
+
* 1. RESPONSIVE MAX-WIDTHS (layout.container.*)
|
|
10
|
+
* - sm: tight, focused content
|
|
11
|
+
* - md: articles, forms
|
|
12
|
+
* - lg: standard pages
|
|
13
|
+
* - xl: wide layouts
|
|
14
14
|
* - full: 100% (edge-to-edge)
|
|
15
15
|
*
|
|
16
16
|
* 2. CONSISTENT PADDING
|
package/dist/oh-container.js
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* DESIGN DECISIONS:
|
|
8
8
|
* ─────────────────
|
|
9
|
-
* 1. RESPONSIVE MAX-WIDTHS
|
|
10
|
-
* - sm:
|
|
11
|
-
* - md:
|
|
12
|
-
* - lg:
|
|
13
|
-
* - xl:
|
|
9
|
+
* 1. RESPONSIVE MAX-WIDTHS (layout.container.*)
|
|
10
|
+
* - sm: tight, focused content
|
|
11
|
+
* - md: articles, forms
|
|
12
|
+
* - lg: standard pages
|
|
13
|
+
* - xl: wide layouts
|
|
14
14
|
* - full: 100% (edge-to-edge)
|
|
15
15
|
*
|
|
16
16
|
* 2. CONSISTENT PADDING
|
|
@@ -50,26 +50,26 @@ let OhContainer = class OhContainer extends OhElement {
|
|
|
50
50
|
width: 100%;
|
|
51
51
|
margin-left: auto;
|
|
52
52
|
margin-right: auto;
|
|
53
|
-
padding-left: var(--oh-spacing-4
|
|
54
|
-
padding-right: var(--oh-spacing-4
|
|
53
|
+
padding-left: var(--oh-spacing-4);
|
|
54
|
+
padding-right: var(--oh-spacing-4);
|
|
55
55
|
box-sizing: border-box;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
/* Size variants */
|
|
59
59
|
:host([size="sm"]) {
|
|
60
|
-
max-width:
|
|
60
|
+
max-width: var(--oh-layout-container-sm);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
:host([size="md"]) {
|
|
64
|
-
max-width:
|
|
64
|
+
max-width: var(--oh-layout-container-md);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
:host([size="lg"]) {
|
|
68
|
-
max-width:
|
|
68
|
+
max-width: var(--oh-layout-container-lg);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
:host([size="xl"]) {
|
|
72
|
-
max-width:
|
|
72
|
+
max-width: var(--oh-layout-container-xl);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
:host([size="full"]) {
|
|
@@ -81,15 +81,15 @@ let OhContainer = class OhContainer extends OhElement {
|
|
|
81
81
|
/* Responsive padding */
|
|
82
82
|
@media (min-width: 640px) {
|
|
83
83
|
:host {
|
|
84
|
-
padding-left: var(--oh-spacing-6
|
|
85
|
-
padding-right: var(--oh-spacing-6
|
|
84
|
+
padding-left: var(--oh-spacing-6);
|
|
85
|
+
padding-right: var(--oh-spacing-6);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
@media (min-width: 1024px) {
|
|
90
90
|
:host {
|
|
91
|
-
padding-left: var(--oh-spacing-8
|
|
92
|
-
padding-right: var(--oh-spacing-8
|
|
91
|
+
padding-left: var(--oh-spacing-8);
|
|
92
|
+
padding-right: var(--oh-spacing-8);
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
package/dist/oh-drawer.d.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* - Smooth slide animation
|
|
17
17
|
*
|
|
18
18
|
* 3. ACCESSIBILITY
|
|
19
|
-
* - Focus trap when open
|
|
19
|
+
* - Focus trap when open (focus guards at each end of the panel)
|
|
20
20
|
* - Escape key closes
|
|
21
21
|
* - aria-modal and role="dialog"
|
|
22
22
|
* - Returns focus to trigger on close
|
|
@@ -43,7 +43,6 @@ export declare class OhDrawer extends OhElement {
|
|
|
43
43
|
/** Element that triggered the drawer (for focus return) */
|
|
44
44
|
private _triggerElement;
|
|
45
45
|
private _drawer;
|
|
46
|
-
private _cleanupFocusTrap?;
|
|
47
46
|
connectedCallback(): void;
|
|
48
47
|
disconnectedCallback(): void;
|
|
49
48
|
updated(changedProperties: Map<string, unknown>): void;
|
|
@@ -52,6 +51,12 @@ export declare class OhDrawer extends OhElement {
|
|
|
52
51
|
private _handleKeydown;
|
|
53
52
|
private _close;
|
|
54
53
|
private _handleBackdropClick;
|
|
54
|
+
/**
|
|
55
|
+
* Focus guards: Tab past the last control lands on the end guard, which
|
|
56
|
+
* wraps to the first; Shift+Tab before the first wraps to the last. This
|
|
57
|
+
* holds however the browser orders Tab (Safari skips links by default).
|
|
58
|
+
*/
|
|
59
|
+
private _focusEdge;
|
|
55
60
|
/** Public method to open the drawer */
|
|
56
61
|
show(): void;
|
|
57
62
|
/** Public method to close the drawer */
|
package/dist/oh-drawer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oh-drawer.d.ts","sourceRoot":"","sources":["../src/oh-drawer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAGlD,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AAEtB,qBACa,QAAS,SAAQ,SAAS;IACrC,OAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"oh-drawer.d.ts","sourceRoot":"","sources":["../src/oh-drawer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAGlD,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AAEtB,qBACa,QAAS,SAAQ,SAAS;IACrC,OAAgB,MAAM,4BAmHpB;IAEF,iCAAiC;IAEjC,IAAI,UAAS;IAEb,6BAA6B;IAE7B,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAU;IAEpC,uCAAuC;IAEvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2DAA2D;IAE3D,OAAO,CAAC,eAAe,CAA4B;IAGnD,OAAO,CAAC,OAAO,CAAe;IAE9B,iBAAiB;IAKjB,oBAAoB;IAKpB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU/C,OAAO,CAAC,OAAO;IAoBf,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,oBAAoB;IAI5B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAKlB,uCAAuC;IACvC,IAAI;IAIJ,wCAAwC;IACxC,IAAI;IAIJ,MAAM;CAiDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
|