@orange-halo/components 1.0.0 → 2.0.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.
Files changed (67) hide show
  1. package/dist/base.js +3 -3
  2. package/dist/oh-accordion.js +17 -17
  3. package/dist/oh-alert.js +15 -15
  4. package/dist/oh-badge.js +11 -11
  5. package/dist/oh-breadcrumb.js +8 -8
  6. package/dist/oh-button.d.ts +6 -0
  7. package/dist/oh-button.d.ts.map +1 -1
  8. package/dist/oh-button.js +105 -76
  9. package/dist/oh-button.js.map +1 -1
  10. package/dist/oh-card.js +28 -28
  11. package/dist/oh-checkbox-group.d.ts +8 -0
  12. package/dist/oh-checkbox-group.d.ts.map +1 -1
  13. package/dist/oh-checkbox-group.js +27 -13
  14. package/dist/oh-checkbox-group.js.map +1 -1
  15. package/dist/oh-checkbox.d.ts +9 -0
  16. package/dist/oh-checkbox.d.ts.map +1 -1
  17. package/dist/oh-checkbox.js +25 -9
  18. package/dist/oh-checkbox.js.map +1 -1
  19. package/dist/oh-container.d.ts +5 -5
  20. package/dist/oh-container.js +15 -15
  21. package/dist/oh-drawer.d.ts +7 -2
  22. package/dist/oh-drawer.d.ts.map +1 -1
  23. package/dist/oh-drawer.js +52 -25
  24. package/dist/oh-drawer.js.map +1 -1
  25. package/dist/oh-footer.js +4 -4
  26. package/dist/oh-hero.d.ts.map +1 -1
  27. package/dist/oh-hero.js +50 -51
  28. package/dist/oh-hero.js.map +1 -1
  29. package/dist/oh-icon.js +6 -6
  30. package/dist/oh-input.d.ts +9 -1
  31. package/dist/oh-input.d.ts.map +1 -1
  32. package/dist/oh-input.js +45 -33
  33. package/dist/oh-input.js.map +1 -1
  34. package/dist/oh-link.d.ts +1 -1
  35. package/dist/oh-link.js +15 -15
  36. package/dist/oh-modal.d.ts +8 -2
  37. package/dist/oh-modal.d.ts.map +1 -1
  38. package/dist/oh-modal.js +68 -65
  39. package/dist/oh-modal.js.map +1 -1
  40. package/dist/oh-navbar.d.ts.map +1 -1
  41. package/dist/oh-navbar.js +3 -4
  42. package/dist/oh-navbar.js.map +1 -1
  43. package/dist/oh-progress.d.ts.map +1 -1
  44. package/dist/oh-progress.js +20 -34
  45. package/dist/oh-progress.js.map +1 -1
  46. package/dist/oh-radio-group.d.ts +8 -0
  47. package/dist/oh-radio-group.d.ts.map +1 -1
  48. package/dist/oh-radio-group.js +27 -13
  49. package/dist/oh-radio-group.js.map +1 -1
  50. package/dist/oh-radio.d.ts +9 -0
  51. package/dist/oh-radio.d.ts.map +1 -1
  52. package/dist/oh-radio.js +26 -10
  53. package/dist/oh-radio.js.map +1 -1
  54. package/dist/oh-select.d.ts +8 -0
  55. package/dist/oh-select.d.ts.map +1 -1
  56. package/dist/oh-select.js +34 -20
  57. package/dist/oh-select.js.map +1 -1
  58. package/dist/oh-skip-link.d.ts.map +1 -1
  59. package/dist/oh-skip-link.js +13 -12
  60. package/dist/oh-skip-link.js.map +1 -1
  61. package/dist/oh-tabs.js +6 -6
  62. package/dist/oh-toggle.d.ts +5 -2
  63. package/dist/oh-toggle.d.ts.map +1 -1
  64. package/dist/oh-toggle.js +7 -9
  65. package/dist/oh-toggle.js.map +1 -1
  66. package/dist/styles/typography.js +46 -46
  67. package/package.json +7 -3
@@ -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-sans);
62
- font-size: var(--oh-font-size-base);
63
- font-weight: var(--oh-font-weight-semibold);
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;
@@ -103,7 +109,7 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
103
109
  height: 24px;
104
110
  flex-shrink: 0;
105
111
  border: var(--oh-input-base-border-width) solid var(--oh-color-border-emphasis);
106
- border-radius: var(--oh-radius-sm);
112
+ border-radius: var(--oh-shape-compact);
107
113
  background-color: var(--oh-color-surface-base);
108
114
  box-shadow: 3px 3px 0 0 var(--oh-shadow-secondary);
109
115
  transition:
@@ -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-sans);
132
- font-size: var(--oh-font-size-lg);
133
- line-height: var(--oh-font-line-height-normal);
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
  }
@@ -202,16 +208,16 @@ let OhCheckboxGroup = class OhCheckboxGroup extends OhElement {
202
208
  display: flex;
203
209
  align-items: center;
204
210
  gap: var(--oh-spacing-2);
205
- font-family: var(--oh-font-family-sans);
206
- font-size: var(--oh-font-size-base);
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-lg);
214
- height: var(--oh-font-size-lg);
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="alert">
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":"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"}
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;;QAoML,WAAM,GAAG,EAAE,CAAC;QAGZ,SAAI,GAAG,EAAE,CAAC;QAGV,YAAO,GAAqB,EAAE,CAAC;QAG/B,UAAK,GAAa,EAAE,CAAC;QAGrB,aAAQ,GAAG,KAAK,CAAC;QAGjB,UAAK,GAAG,KAAK,CAAC;QAGd,iBAAY,GAAG,EAAE,CAAC;QAclB;;;;WAIG;QAEK,mBAAc,GAAG,KAAK,CAAC;IAsDjC,CAAC;aA/RiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6LF;KACF,AAhMqB,CAgMpB;IAuBM,aAAa,CAAC,KAAY,EAAE,WAAmB;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAEhD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAUD,UAAU,CAAC,OAAuB;QAChC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;uBAEQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;2BACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;;UAExE,IAAI,CAAC,MAAM;YACX,CAAC,CAAC,IAAI,CAAA;+BACe,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;kBACpD,IAAI,CAAC,MAAM;;aAEhB;YACH,CAAC,CAAC,OAAO;;UAET,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;YAC/B,CAAC,CAAC,IAAI,CAAA;+DAC+C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;;;;kBAIpF,IAAI,CAAC,YAAY;;aAEtB;YACH,CAAC,CAAC,OAAO;;;YAGP,IAAI,CAAC,OAAO,CAAC,GAAG,CAChB,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAA;;;;;yBAKH,IAAI,CAAC,IAAI;2BACP,MAAM,CAAC,KAAK;6BACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;4BAClC,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;;;6CAGhC,MAAM,CAAC,KAAK;;aAE5C,CACF;;;KAGN,CAAC;IACJ,CAAC;;AA3FD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CACf;AAGZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CACjB;AAGV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gDACK;AAG/B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;8CACL;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iDAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAC7B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qDACT;AAoBV;IADP,KAAK,EAAE;uDACuB;AA1OpB,eAAe;IAD3B,aAAa,CAAC,mBAAmB,CAAC;GACtB,eAAe,CAgS3B"}
@@ -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;AAIH,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,MAAM;CAgCP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
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"}
@@ -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,
@@ -92,7 +99,7 @@ let OhCheckbox = class OhCheckbox extends OhElement {
92
99
 
93
100
  /* Chunky border */
94
101
  border: var(--oh-input-base-border-width) solid var(--oh-color-border-emphasis);
95
- border-radius: var(--oh-radius-sm);
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);
@@ -174,9 +181,9 @@ let OhCheckbox = class OhCheckbox extends OhElement {
174
181
  ═══════════════════════════════════════════════════════════════ */
175
182
 
176
183
  .label {
177
- font-family: var(--oh-font-family-sans);
178
- font-size: var(--oh-font-size-lg);
179
- line-height: var(--oh-font-line-height-normal);
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 */
@@ -200,8 +207,8 @@ let OhCheckbox = class OhCheckbox extends OhElement {
200
207
  display: flex;
201
208
  align-items: center;
202
209
  gap: var(--oh-spacing-2);
203
- font-family: var(--oh-font-family-sans);
204
- font-size: var(--oh-font-size-base);
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 */
@@ -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="alert">
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);
@@ -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;AAChC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAK3C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,SAAS;IAAlC;;QA6ML,YAAO,GAAG,KAAK,CAAC;QAGhB,UAAK,GAAG,EAAE,CAAC;QAGX,SAAI,GAAG,EAAE,CAAC;QAGV,UAAK,GAAG,EAAE,CAAC;QAGX,UAAK,GAAG,KAAK,CAAC;QAGd,iBAAY,GAAG,EAAE,CAAC;QAElB;;;WAGG;QAEH,eAAU,GAAkB,SAAS,CAAC;IAwCxC,CAAC;aA1QiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsMF;KACF,AAzMqB,CAyMpB;IA2BM,aAAa,CAAC,KAAY;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAEtF,OAAO,IAAI,CAAA;;8CAE+B,OAAO;;;;iBAIpC,OAAO;mBACL,IAAI,CAAC,IAAI;qBACP,IAAI,CAAC,KAAK;uBACR,IAAI,CAAC,OAAO;2BACR,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;sBAClC,IAAI,CAAC,aAAa;;;6CAGK,IAAI,CAAC,KAAK;;UAE7C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;YAC/B,CAAC,CAAC,IAAI,CAAA;;;;;kBAKE,IAAI,CAAC,YAAY;;aAEtB;YACH,CAAC,CAAC,EAAE;;KAET,CAAC;IACJ,CAAC;;AA7DD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCAChB;AAGX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCACjB;AAGV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCAChB;AAGX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCAC7B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACT;AAOlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;8CAC9B;AAnO3B,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CA2QtB"}
1
+ {"version":3,"file":"oh-checkbox.js","sourceRoot":"","sources":["../src/oh-checkbox.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,11 @@
6
6
  *
7
7
  * DESIGN DECISIONS:
8
8
  * ─────────────────
9
- * 1. RESPONSIVE MAX-WIDTHS
10
- * - sm: 640px (tight, focused content)
11
- * - md: 768px (articles, forms)
12
- * - lg: 1024px (standard pages)
13
- * - xl: 1280px (wide layouts)
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
@@ -6,11 +6,11 @@
6
6
  *
7
7
  * DESIGN DECISIONS:
8
8
  * ─────────────────
9
- * 1. RESPONSIVE MAX-WIDTHS
10
- * - sm: 640px (tight, focused content)
11
- * - md: 768px (articles, forms)
12
- * - lg: 1024px (standard pages)
13
- * - xl: 1280px (wide layouts)
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, 16px);
54
- padding-right: var(--oh-spacing-4, 16px);
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: 640px;
60
+ max-width: var(--oh-layout-container-sm);
61
61
  }
62
62
 
63
63
  :host([size="md"]) {
64
- max-width: 768px;
64
+ max-width: var(--oh-layout-container-md);
65
65
  }
66
66
 
67
67
  :host([size="lg"]) {
68
- max-width: 1024px;
68
+ max-width: var(--oh-layout-container-lg);
69
69
  }
70
70
 
71
71
  :host([size="xl"]) {
72
- max-width: 1280px;
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, 24px);
85
- padding-right: var(--oh-spacing-6, 24px);
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, 32px);
92
- padding-right: var(--oh-spacing-8, 32px);
91
+ padding-left: var(--oh-spacing-8);
92
+ padding-right: var(--oh-spacing-8);
93
93
  }
94
94
  }
95
95
 
@@ -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 */
@@ -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,4BA+FpB;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,OAAO,CAAC,iBAAiB,CAAC,CAAa;IAEvC,iBAAiB;IAKjB,oBAAoB;IAMpB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAU/C,OAAO,CAAC,OAAO;IAqBf,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,oBAAoB;IAI5B,uCAAuC;IACvC,IAAI;IAIJ,wCAAwC;IACxC,IAAI;IAIJ,MAAM;CA+CP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
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"}
package/dist/oh-drawer.js 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
@@ -38,7 +38,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
38
38
  import { html, css } from "lit";
39
39
  import { customElement, property, state, query } from "lit/decorators.js";
40
40
  import { OhElement, baseStyles } from "./base.js";
41
- import { trapFocus } from "@orange-halo/utils";
41
+ import { getFocusableElementsDeep } from "@orange-halo/utils";
42
42
  import "./oh-button.js";
43
43
  import "./oh-icon.js";
44
44
  let OhDrawer = class OhDrawer extends OhElement {
@@ -86,14 +86,27 @@ let OhDrawer = class OhDrawer extends OhElement {
86
86
  z-index: 1000;
87
87
  display: flex;
88
88
  flex-direction: column;
89
- transition: transform var(--oh-motion-relaxed) var(--oh-motion-ease-gentle);
89
+ /* Hidden once it has slid away, so its shadow can't show at the
90
+ viewport edge while closed */
91
+ visibility: hidden;
92
+ transition:
93
+ transform var(--oh-motion-relaxed) var(--oh-motion-ease-gentle),
94
+ visibility 0s linear var(--oh-motion-relaxed);
95
+ }
96
+
97
+ /* Opening: visible at once, so focus can move into the panel on the
98
+ next frame (see ACCESSIBILITY_LESSONS.md 21) */
99
+ .drawer.is-open {
100
+ visibility: visible;
101
+ transition:
102
+ transform var(--oh-motion-relaxed) var(--oh-motion-ease-gentle),
103
+ visibility 0s;
90
104
  }
91
105
 
92
106
  /* Left position (default) */
93
107
  .drawer--left {
94
108
  left: 0;
95
- border-right: var(--oh-border-width-lg) solid var(--oh-color-border-default);
96
- box-shadow: var(--oh-shadow-lg);
109
+ box-shadow: var(--oh-elevation-strong);
97
110
  transform: translateX(-100%);
98
111
  }
99
112
 
@@ -104,8 +117,7 @@ let OhDrawer = class OhDrawer extends OhElement {
104
117
  /* Right position */
105
118
  .drawer--right {
106
119
  right: 0;
107
- border-left: var(--oh-border-width-lg) solid var(--oh-color-border-default);
108
- box-shadow: calc(-1 * var(--oh-shadow-offset-x, 4px)) var(--oh-shadow-offset-y, 4px) 0 0 var(--oh-color-warm-dune);
120
+ box-shadow: -4px 4px 0 0 var(--oh-color-border-strong);
109
121
  transform: translateX(100%);
110
122
  }
111
123
 
@@ -119,14 +131,13 @@ let OhDrawer = class OhDrawer extends OhElement {
119
131
  align-items: center;
120
132
  justify-content: space-between;
121
133
  padding: var(--oh-spacing-4);
122
- border-bottom: var(--oh-border-width-md) solid var(--oh-color-border-default);
123
134
  flex-shrink: 0;
124
135
  }
125
136
 
126
137
  .drawer__title {
127
- font-family: var(--oh-font-family-sans);
128
- font-size: var(--oh-font-size-lg);
129
- font-weight: var(--oh-font-weight-semibold);
138
+ font-family: var(--oh-typography-body-font-family);
139
+ font-size: var(--oh-typography-heading-h5-font-size);
140
+ font-weight: var(--oh-typography-emphasis-font-weight);
130
141
  color: var(--oh-color-text-primary);
131
142
  margin: 0;
132
143
  }
@@ -138,6 +149,15 @@ let OhDrawer = class OhDrawer extends OhElement {
138
149
  padding: var(--oh-spacing-4);
139
150
  }
140
151
 
152
+ /* Focus guards: focusable but never seen; focus moves on at once. */
153
+ .focus-guard {
154
+ position: absolute;
155
+ width: 1px;
156
+ height: 1px;
157
+ overflow: hidden;
158
+ clip-path: inset(50%);
159
+ }
160
+
141
161
  /* Reduced motion */
142
162
  @media (prefers-reduced-motion: reduce) {
143
163
  .drawer-backdrop,
@@ -154,7 +174,6 @@ let OhDrawer = class OhDrawer extends OhElement {
154
174
  disconnectedCallback() {
155
175
  super.disconnectedCallback();
156
176
  document.removeEventListener("keydown", this._handleKeydown);
157
- this._cleanupFocusTrap?.();
158
177
  }
159
178
  updated(changedProperties) {
160
179
  if (changedProperties.has("open")) {
@@ -167,20 +186,20 @@ let OhDrawer = class OhDrawer extends OhElement {
167
186
  }
168
187
  }
169
188
  _onOpen() {
170
- // Store the trigger element for focus return
171
- this._triggerElement = document.activeElement;
189
+ // Store the trigger element for focus return. Follow focus into shadow
190
+ // roots: a trigger inside another component (the navbar's menu button)
191
+ // is reported as that component's host, which can't take focus.
192
+ let active = document.activeElement;
193
+ while (active?.shadowRoot?.activeElement)
194
+ active = active.shadowRoot.activeElement;
195
+ this._triggerElement = active;
172
196
  // Prevent body scroll
173
197
  document.body.style.overflow = "hidden";
174
198
  // Add keydown listener
175
199
  document.addEventListener("keydown", this._handleKeydown);
176
- // Set up focus trap after render
200
+ // Focus the close button after render. The focus guards keep focus inside.
177
201
  requestAnimationFrame(() => {
178
- if (this._drawer) {
179
- this._cleanupFocusTrap = trapFocus(this._drawer);
180
- // Focus the close button
181
- const closeBtn = this._drawer.querySelector("oh-button");
182
- closeBtn?.focus();
183
- }
202
+ this._drawer?.querySelector("oh-button")?.focus();
184
203
  });
185
204
  }
186
205
  _onClose() {
@@ -188,9 +207,6 @@ let OhDrawer = class OhDrawer extends OhElement {
188
207
  document.body.style.overflow = "";
189
208
  // Remove keydown listener
190
209
  document.removeEventListener("keydown", this._handleKeydown);
191
- // Clean up focus trap
192
- this._cleanupFocusTrap?.();
193
- this._cleanupFocusTrap = undefined;
194
210
  // Return focus to trigger
195
211
  this._triggerElement?.focus();
196
212
  this._triggerElement = null;
@@ -208,6 +224,15 @@ let OhDrawer = class OhDrawer extends OhElement {
208
224
  _handleBackdropClick() {
209
225
  this._close();
210
226
  }
227
+ /**
228
+ * Focus guards: Tab past the last control lands on the end guard, which
229
+ * wraps to the first; Shift+Tab before the first wraps to the last. This
230
+ * holds however the browser orders Tab (Safari skips links by default).
231
+ */
232
+ _focusEdge(edge) {
233
+ const items = getFocusableElementsDeep(this._drawer).filter((el) => !el.classList.contains("focus-guard"));
234
+ (edge === "first" ? items[0] : items[items.length - 1])?.focus();
235
+ }
211
236
  /** Public method to open the drawer */
212
237
  show() {
213
238
  this.open = true;
@@ -240,6 +265,7 @@ let OhDrawer = class OhDrawer extends OhElement {
240
265
  aria-label=${this.heading || "Navigation menu"}
241
266
  ?inert=${!this.open}
242
267
  >
268
+ <span class="focus-guard" tabindex="0" @focus=${() => this._focusEdge("last")}></span>
243
269
  <div class="drawer__header">
244
270
  ${this.heading
245
271
  ? html `<h2 class="drawer__title">${this.heading}</h2>`
@@ -248,7 +274,7 @@ let OhDrawer = class OhDrawer extends OhElement {
248
274
  variant="secondary"
249
275
  size="sm"
250
276
  icon-only
251
- aria-label="Close menu"
277
+ accessible-label="Close menu"
252
278
  @click=${this._close}
253
279
  >
254
280
  <oh-icon name="close"></oh-icon>
@@ -258,6 +284,7 @@ let OhDrawer = class OhDrawer extends OhElement {
258
284
  <div class="drawer__content">
259
285
  <slot></slot>
260
286
  </div>
287
+ <span class="focus-guard" tabindex="0" @focus=${() => this._focusEdge("first")}></span>
261
288
  </div>
262
289
  `;
263
290
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oh-drawer.js","sourceRoot":"","sources":["../src/oh-drawer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oh-drawer.js","sourceRoot":"","sources":["../src/oh-drawer.ts"],"names":[],"mappings":"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"}
package/dist/oh-footer.js CHANGED
@@ -47,9 +47,9 @@ let OhFooter = class OhFooter extends OhElement {
47
47
  display: block;
48
48
  background-color: var(--oh-color-accent-default);
49
49
  color: var(--oh-color-text-on-accent);
50
- font-family: var(--oh-font-family-sans);
51
- font-size: var(--oh-font-size-base);
52
- line-height: var(--oh-line-height-md);
50
+ font-family: var(--oh-typography-body-font-family);
51
+ font-size: var(--oh-typography-body-base-font-size);
52
+ line-height: var(--oh-typography-body-base-line-height);
53
53
  padding: var(--oh-spacing-8) 0;
54
54
  }
55
55
 
@@ -69,7 +69,7 @@ let OhFooter = class OhFooter extends OhElement {
69
69
  }
70
70
 
71
71
  /* Responsive - tablet: brand section spans full width */
72
- @media (max-width: 900px) {
72
+ @media (max-width: 768px) {
73
73
  .footer__brand {
74
74
  grid-column: 1 / -1;
75
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oh-hero.d.ts","sourceRoot":"","sources":["../src/oh-hero.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAGrD,OAAO,kBAAkB,CAAC;AAE1B,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,qBACa,MAAO,SAAQ,UAAU;IACpC,OAAgB,MAAM,0BAgJpB;IAGF,OAAO,EAAE,WAAW,CAAa;IAGjC,IAAI,EAAE,QAAQ,CAAQ;IAGtB,OAAO,SAAM;IAGb,QAAQ,SAAM;IAGd,WAAW,SAAM;IAGjB,WAAW,SAAK;IAGhB,UAAU,SAAK;IAEN,MAAM;CA4ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"oh-hero.d.ts","sourceRoot":"","sources":["../src/oh-hero.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAGrD,OAAO,kBAAkB,CAAC;AAE1B,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,qBACa,MAAO,SAAQ,UAAU;IACpC,OAAgB,MAAM,0BA+IpB;IAGF,OAAO,EAAE,WAAW,CAAa;IAGjC,IAAI,EAAE,QAAQ,CAAQ;IAGtB,OAAO,SAAM;IAGb,QAAQ,SAAM;IAGd,WAAW,SAAM;IAGjB,WAAW,SAAK;IAGhB,UAAU,SAAK;IAEN,MAAM;CA4ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}