@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.
Files changed (82) hide show
  1. package/custom-elements.json +3182 -73
  2. package/dist/base.js +3 -3
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +4 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/oh-accordion.js +33 -33
  8. package/dist/oh-alert.js +26 -26
  9. package/dist/oh-badge.js +11 -11
  10. package/dist/oh-breadcrumb.js +20 -20
  11. package/dist/oh-button.d.ts +7 -1
  12. package/dist/oh-button.d.ts.map +1 -1
  13. package/dist/oh-button.js +118 -89
  14. package/dist/oh-button.js.map +1 -1
  15. package/dist/oh-card.d.ts.map +1 -1
  16. package/dist/oh-card.js +38 -66
  17. package/dist/oh-card.js.map +1 -1
  18. package/dist/oh-checkbox-group.d.ts +8 -0
  19. package/dist/oh-checkbox-group.d.ts.map +1 -1
  20. package/dist/oh-checkbox-group.figma.js +1 -1
  21. package/dist/oh-checkbox-group.figma.js.map +1 -1
  22. package/dist/oh-checkbox-group.js +40 -26
  23. package/dist/oh-checkbox-group.js.map +1 -1
  24. package/dist/oh-checkbox.d.ts +11 -2
  25. package/dist/oh-checkbox.d.ts.map +1 -1
  26. package/dist/oh-checkbox.js +44 -28
  27. package/dist/oh-checkbox.js.map +1 -1
  28. package/dist/oh-container.d.ts +5 -5
  29. package/dist/oh-container.js +15 -15
  30. package/dist/oh-drawer.d.ts +7 -2
  31. package/dist/oh-drawer.d.ts.map +1 -1
  32. package/dist/oh-drawer.js +52 -25
  33. package/dist/oh-drawer.js.map +1 -1
  34. package/dist/oh-footer.d.ts +5 -0
  35. package/dist/oh-footer.d.ts.map +1 -1
  36. package/dist/oh-footer.js +9 -4
  37. package/dist/oh-footer.js.map +1 -1
  38. package/dist/oh-hero.d.ts +5 -0
  39. package/dist/oh-hero.d.ts.map +1 -1
  40. package/dist/oh-hero.js +55 -51
  41. package/dist/oh-hero.js.map +1 -1
  42. package/dist/oh-icon.js +9 -9
  43. package/dist/oh-input.d.ts +11 -3
  44. package/dist/oh-input.d.ts.map +1 -1
  45. package/dist/oh-input.figma.js +2 -2
  46. package/dist/oh-input.figma.js.map +1 -1
  47. package/dist/oh-input.js +49 -37
  48. package/dist/oh-input.js.map +1 -1
  49. package/dist/oh-link.d.ts +1 -1
  50. package/dist/oh-link.js +35 -35
  51. package/dist/oh-modal.d.ts +10 -4
  52. package/dist/oh-modal.d.ts.map +1 -1
  53. package/dist/oh-modal.js +75 -72
  54. package/dist/oh-modal.js.map +1 -1
  55. package/dist/oh-navbar.d.ts.map +1 -1
  56. package/dist/oh-navbar.js +4 -5
  57. package/dist/oh-navbar.js.map +1 -1
  58. package/dist/oh-progress.d.ts.map +1 -1
  59. package/dist/oh-progress.js +21 -35
  60. package/dist/oh-progress.js.map +1 -1
  61. package/dist/oh-radio-group.d.ts +8 -0
  62. package/dist/oh-radio-group.d.ts.map +1 -1
  63. package/dist/oh-radio-group.js +40 -26
  64. package/dist/oh-radio-group.js.map +1 -1
  65. package/dist/oh-radio.d.ts +10 -1
  66. package/dist/oh-radio.d.ts.map +1 -1
  67. package/dist/oh-radio.js +44 -28
  68. package/dist/oh-radio.js.map +1 -1
  69. package/dist/oh-select.d.ts +10 -2
  70. package/dist/oh-select.d.ts.map +1 -1
  71. package/dist/oh-select.js +51 -32
  72. package/dist/oh-select.js.map +1 -1
  73. package/dist/oh-skip-link.d.ts.map +1 -1
  74. package/dist/oh-skip-link.js +15 -14
  75. package/dist/oh-skip-link.js.map +1 -1
  76. package/dist/oh-tabs.js +15 -15
  77. package/dist/oh-toggle.d.ts +5 -2
  78. package/dist/oh-toggle.d.ts.map +1 -1
  79. package/dist/oh-toggle.js +18 -20
  80. package/dist/oh-toggle.js.map +1 -1
  81. package/dist/styles/typography.js +50 -50
  82. package/package.json +15 -4
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: calc(-1 * var(--oh-elevation-offset-lg)) var(--oh-elevation-offset-lg) 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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"}
@@ -15,6 +15,11 @@
15
15
  * - White/inverse text and links
16
16
  * - Generous padding
17
17
  *
18
+ * BRAND PATTERN: this belongs to the Orange Halo brand, not the core. Import
19
+ * it from @orange-halo/brand-orange-halo; importing it from components is
20
+ * deprecated and stops working in components 3.0, when this file moves to
21
+ * the brand package (brand plan phase 8).
22
+ *
18
23
  * @element oh-footer
19
24
  *
20
25
  * @slot logo - Slot for logo element
@@ -1 +1 @@
1
- {"version":3,"file":"oh-footer.d.ts","sourceRoot":"","sources":["../src/oh-footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,iBAAiB,CAAC;AAEzB,qBACa,QAAS,SAAQ,SAAS;IACrC,OAAgB,MAAM,4BAmCpB;IAEF,qBAAqB;IAErB,SAAS,SAAM;IAEf,MAAM;CAyBP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
1
+ {"version":3,"file":"oh-footer.d.ts","sourceRoot":"","sources":["../src/oh-footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,iBAAiB,CAAC;AAEzB,qBACa,QAAS,SAAQ,SAAS;IACrC,OAAgB,MAAM,4BAmCpB;IAEF,qBAAqB;IAErB,SAAS,SAAM;IAEf,MAAM;CAyBP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
package/dist/oh-footer.js CHANGED
@@ -15,6 +15,11 @@
15
15
  * - White/inverse text and links
16
16
  * - Generous padding
17
17
  *
18
+ * BRAND PATTERN: this belongs to the Orange Halo brand, not the core. Import
19
+ * it from @orange-halo/brand-orange-halo; importing it from components is
20
+ * deprecated and stops working in components 3.0, when this file moves to
21
+ * the brand package (brand plan phase 8).
22
+ *
18
23
  * @element oh-footer
19
24
  *
20
25
  * @slot logo - Slot for logo element
@@ -47,9 +52,9 @@ let OhFooter = class OhFooter extends OhElement {
47
52
  display: block;
48
53
  background-color: var(--oh-color-accent-default);
49
54
  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);
55
+ font-family: var(--oh-typography-body-font-family);
56
+ font-size: var(--oh-typography-body-base-font-size);
57
+ line-height: var(--oh-typography-body-base-line-height);
53
58
  padding: var(--oh-spacing-8) 0;
54
59
  }
55
60
 
@@ -69,7 +74,7 @@ let OhFooter = class OhFooter extends OhElement {
69
74
  }
70
75
 
71
76
  /* Responsive - tablet: brand section spans full width */
72
- @media (max-width: 900px) {
77
+ @media (max-width: 768px) {
73
78
  .footer__brand {
74
79
  grid-column: 1 / -1;
75
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oh-footer.js","sourceRoot":"","sources":["../src/oh-footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;;;;;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;AAElD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,iBAAiB,CAAC;AAGlB,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,SAAS;IAAhC;;QAsCL,qBAAqB;QAErB,cAAS,GAAG,EAAE,CAAC;IA2BjB,CAAC;aAlEiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCF;KACF,AAnCqB,CAmCpB;IAMF,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;;gBASC,IAAI,CAAC,SAAS;YACd,CAAC,CAAC,IAAI,CAAA,gCAAgC,IAAI,CAAC,SAAS,MAAM;YAC1D,CAAC,CAAC,IAAI;;;;;;;;;;;KAWjB,CAAC;IACJ,CAAC;;AA1BD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CACZ;AAxCJ,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAmEpB"}
1
+ {"version":3,"file":"oh-footer.js","sourceRoot":"","sources":["../src/oh-footer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;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;AAElD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,iBAAiB,CAAC;AAGlB,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,SAAS;IAAhC;;QAsCL,qBAAqB;QAErB,cAAS,GAAG,EAAE,CAAC;IA2BjB,CAAC;aAlEiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCF;KACF,AAnCqB,CAmCpB;IAMF,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;;gBASC,IAAI,CAAC,SAAS;YACd,CAAC,CAAC,IAAI,CAAA,gCAAgC,IAAI,CAAC,SAAS,MAAM;YAC1D,CAAC,CAAC,IAAI;;;;;;;;;;;KAWjB,CAAC;IACJ,CAAC;;AA1BD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CACZ;AAxCJ,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAmEpB"}
package/dist/oh-hero.d.ts CHANGED
@@ -3,6 +3,11 @@
3
3
  *
4
4
  * A prominent hero section for page headers.
5
5
  *
6
+ * BRAND PATTERN: this belongs to the Orange Halo brand, not the core. Import
7
+ * it from @orange-halo/brand-orange-halo; importing it from components is
8
+ * deprecated and stops working in components 3.0, when this file moves to
9
+ * the brand package (brand plan phase 8).
10
+ *
6
11
  * @element oh-hero
7
12
  */
8
13
  import { LitElement } from "lit";
@@ -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;;;;;;;;;;;GAWG;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"}
package/dist/oh-hero.js CHANGED
@@ -3,6 +3,11 @@
3
3
  *
4
4
  * A prominent hero section for page headers.
5
5
  *
6
+ * BRAND PATTERN: this belongs to the Orange Halo brand, not the core. Import
7
+ * it from @orange-halo/brand-orange-halo; importing it from components is
8
+ * deprecated and stops working in components 3.0, when this file moves to
9
+ * the brand package (brand plan phase 8).
10
+ *
6
11
  * @element oh-hero
7
12
  */
8
13
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -28,89 +33,88 @@ let OhHero = class OhHero extends LitElement {
28
33
  static { this.styles = css `
29
34
  :host {
30
35
  display: block;
31
- background-color: var(--oh-color-brand-primary, #C54300);
32
- color: var(--oh-color-text-on-brand, #FFFFFF);
33
- font-family: var(--oh-font-family-sans, system-ui, sans-serif);
36
+ background-color: var(--oh-color-brand-primary);
37
+ color: var(--oh-color-text-on-brand);
38
+ font-family: var(--oh-typography-body-font-family);
34
39
  }
35
40
 
36
41
  .hero {
37
- padding: 48px 0;
42
+ padding: var(--oh-spacing-12) 0;
38
43
  }
39
44
 
40
45
  .hero--journey {
41
- padding: 32px 0;
46
+ padding: var(--oh-spacing-8) 0;
42
47
  }
43
48
 
44
49
  /* Container styles - matches oh-container */
45
50
  .hero__container {
46
51
  width: 100%;
47
- max-width: var(--hero-max-width, 1024px);
52
+ max-width: var(--hero-max-width, var(--oh-layout-container-lg));
48
53
  margin-left: auto;
49
54
  margin-right: auto;
50
- padding-left: var(--oh-spacing-4, 16px);
51
- padding-right: var(--oh-spacing-4, 16px);
55
+ padding-left: var(--oh-spacing-4);
56
+ padding-right: var(--oh-spacing-4);
52
57
  box-sizing: border-box;
53
58
  }
54
59
 
55
60
  /* Size variants */
56
61
  :host([size="sm"]) {
57
- --hero-max-width: 640px;
62
+ --hero-max-width: var(--oh-layout-container-sm);
58
63
  }
59
64
 
60
65
  :host([size="md"]) {
61
- --hero-max-width: 768px;
66
+ --hero-max-width: var(--oh-layout-container-md);
62
67
  }
63
68
 
64
69
  :host([size="lg"]) {
65
- --hero-max-width: 1024px;
70
+ --hero-max-width: var(--oh-layout-container-lg);
66
71
  }
67
72
 
68
73
  :host([size="xl"]) {
69
- --hero-max-width: 1280px;
74
+ --hero-max-width: var(--oh-layout-container-xl);
70
75
  }
71
76
 
72
77
  .hero__heading {
73
- font-size: 42px;
74
- font-weight: 700;
75
- line-height: 1.2;
76
- margin: 0 0 16px 0;
77
- color: var(--oh-color-text-on-brand, #FFFFFF);
78
+ font-size: var(--oh-typography-heading-h1-font-size);
79
+ font-weight: var(--oh-typography-heading-h1-font-weight);
80
+ line-height: var(--oh-typography-heading-h1-line-height);
81
+ margin: 0 0 var(--oh-spacing-4) 0;
82
+ color: var(--oh-color-text-on-brand);
78
83
  }
79
84
 
80
85
  .hero__subtitle {
81
- font-size: 20px;
82
- font-weight: 400;
83
- line-height: 1.5;
84
- margin: 0 0 24px 0;
85
- color: var(--oh-color-text-on-brand, #FFFFFF);
86
- opacity: 0.85;
86
+ font-size: var(--oh-typography-body-xl-font-size);
87
+ font-weight: var(--oh-typography-body-xl-font-weight);
88
+ line-height: var(--oh-typography-body-xl-line-height);
89
+ margin: 0 0 var(--oh-spacing-6) 0;
90
+ color: var(--oh-color-text-on-brand);
87
91
  max-width: 65ch;
88
92
  }
89
93
 
90
94
  .hero__actions {
91
95
  display: flex;
92
96
  flex-wrap: wrap;
93
- gap: 16px;
94
- margin-top: 24px;
97
+ gap: var(--oh-spacing-4);
98
+ margin-top: var(--oh-spacing-6);
95
99
  }
96
100
 
97
101
  .hero__journey-heading {
98
- font-size: 32px;
99
- font-weight: 700;
100
- line-height: 1.2;
101
- margin: 0 0 24px 0;
102
- color: var(--oh-color-text-on-brand, #FFFFFF);
102
+ font-size: var(--oh-typography-heading-h2-font-size);
103
+ font-weight: var(--oh-typography-heading-h2-font-weight);
104
+ line-height: var(--oh-typography-heading-h2-line-height);
105
+ margin: 0 0 var(--oh-spacing-6) 0;
106
+ color: var(--oh-color-text-on-brand);
103
107
  }
104
108
 
105
109
  .hero__journey-name {
106
110
  display: block;
107
- font-size: 16px;
108
- font-weight: 500;
111
+ font-family: var(--oh-typography-eyebrow-font-family);
112
+ font-size: var(--oh-typography-eyebrow-font-size);
113
+ font-weight: var(--oh-typography-eyebrow-font-weight);
109
114
  text-transform: uppercase;
110
- letter-spacing: 0.05em;
111
- color: var(--oh-color-text-on-brand, #FFFFFF);
112
- opacity: 0.9;
113
- margin-bottom: 8px;
115
+ letter-spacing: var(--oh-typography-eyebrow-letter-spacing);
116
+ color: var(--oh-color-text-on-brand);
117
+ margin-bottom: var(--oh-spacing-2);
114
118
  }
115
119
 
116
120
  .hero__page-name {
@@ -118,40 +122,40 @@ let OhHero = class OhHero extends LitElement {
118
122
  }
119
123
 
120
124
  .hero__progress-wrapper {
121
- margin-top: 16px;
122
- max-width: 400px;
125
+ margin-top: var(--oh-spacing-4);
126
+ max-width: var(--oh-layout-container-sm);
123
127
  }
124
128
 
125
129
  /* Responsive container padding - matches oh-container */
126
130
  @media (min-width: 640px) {
127
131
  .hero__container {
128
- padding-left: var(--oh-spacing-6, 24px);
129
- padding-right: var(--oh-spacing-6, 24px);
132
+ padding-left: var(--oh-spacing-6);
133
+ padding-right: var(--oh-spacing-6);
130
134
  }
131
135
  }
132
136
 
133
137
  @media (min-width: 1024px) {
134
138
  .hero__container {
135
- padding-left: var(--oh-spacing-8, 32px);
136
- padding-right: var(--oh-spacing-8, 32px);
139
+ padding-left: var(--oh-spacing-8);
140
+ padding-right: var(--oh-spacing-8);
137
141
  }
138
142
  }
139
143
 
140
144
  @media (max-width: 768px) {
141
145
  .hero {
142
- padding: 32px 0;
146
+ padding: var(--oh-spacing-8) 0;
143
147
  }
144
148
  .hero__heading {
145
- font-size: 32px;
149
+ font-size: var(--oh-typography-heading-h2-font-size);
146
150
  }
147
151
  .hero__subtitle {
148
- font-size: 18px;
152
+ font-size: var(--oh-typography-body-lg-font-size);
149
153
  }
150
154
  .hero--journey {
151
- padding: 24px 0;
155
+ padding: var(--oh-spacing-6) 0;
152
156
  }
153
157
  .hero__journey-heading {
154
- font-size: 26px;
158
+ font-size: var(--oh-typography-heading-h3-font-size);
155
159
  }
156
160
  .hero__progress-wrapper {
157
161
  max-width: 100%;
@@ -160,10 +164,10 @@ let OhHero = class OhHero extends LitElement {
160
164
 
161
165
  @media (max-width: 480px) {
162
166
  .hero__heading {
163
- font-size: 26px;
167
+ font-size: var(--oh-typography-heading-h3-font-size);
164
168
  }
165
169
  .hero__journey-heading {
166
- font-size: 20px;
170
+ font-size: var(--oh-typography-heading-h4-font-size);
167
171
  }
168
172
  .hero__actions {
169
173
  flex-direction: column;
@@ -174,7 +178,7 @@ let OhHero = class OhHero extends LitElement {
174
178
  if (this.variant === "journey") {
175
179
  const progressLabel = `Step ${this.currentStep} of ${this.totalSteps}`;
176
180
  return html `
177
- <div class="hero hero--journey" role="banner">
181
+ <div class="hero hero--journey">
178
182
  <div class="hero__container">
179
183
  <h1 class="hero__journey-heading">
180
184
  ${this.journeyName
@@ -198,7 +202,7 @@ let OhHero = class OhHero extends LitElement {
198
202
  `;
199
203
  }
200
204
  return html `
201
- <div class="hero" role="banner">
205
+ <div class="hero">
202
206
  <div class="hero__container">
203
207
  ${this.heading
204
208
  ? html `<h1 class="hero__heading">${this.heading}</h1>`
@@ -1 +1 @@
1
- {"version":3,"file":"oh-hero.js","sourceRoot":"","sources":["../src/oh-hero.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,kBAAkB,CAAC;AAMnB,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,UAAU;IAA/B;;QAoJL,YAAO,GAAgB,SAAS,CAAC;QAGjC,SAAI,GAAa,IAAI,CAAC;QAGtB,YAAO,GAAG,EAAE,CAAC;QAGb,aAAQ,GAAG,EAAE,CAAC;QAGd,gBAAW,GAAG,EAAE,CAAC;QAGjB,gBAAW,GAAG,CAAC,CAAC;QAGhB,eAAU,GAAG,CAAC,CAAC;IA8CjB,CAAC;aAnNiB,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgJ3B,AAhJqB,CAgJpB;IAuBO,MAAM;QACb,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,QAAQ,IAAI,CAAC,WAAW,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YACvE,OAAO,IAAI,CAAA;;;;gBAID,IAAI,CAAC,WAAW;gBAChB,CAAC,CAAC,IAAI,CAAA,oCAAoC,IAAI,CAAC,WAAW,SAAS;gBACnE,CAAC,CAAC,OAAO;8CACqB,IAAI,CAAC,OAAO;;;;yBAIjC,IAAI,CAAC,WAAW;uBAClB,IAAI,CAAC,UAAU;wBACd,aAAa;;;;;;;;;OAS9B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAA;;;YAGH,IAAI,CAAC,OAAO;YACZ,CAAC,CAAC,IAAI,CAAA,6BAA6B,IAAI,CAAC,OAAO,OAAO;YACtD,CAAC,CAAC,OAAO;YACT,IAAI,CAAC,QAAQ;YACb,CAAC,CAAC,IAAI,CAAA,6BAA6B,IAAI,CAAC,QAAQ,MAAM;YACtD,CAAC,CAAC,OAAO;;;;;;KAMhB,CAAC;IACJ,CAAC;;AA/DD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCACT;AAGjC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oCACpB;AAGtB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uCACd;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCACb;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;2CACrC;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;2CACtC;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;0CACtC;AAtKJ,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM,CAoNlB"}
1
+ {"version":3,"file":"oh-hero.js","sourceRoot":"","sources":["../src/oh-hero.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,kBAAkB,CAAC;AAMnB,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,UAAU;IAA/B;;QAmJL,YAAO,GAAgB,SAAS,CAAC;QAGjC,SAAI,GAAa,IAAI,CAAC;QAGtB,YAAO,GAAG,EAAE,CAAC;QAGb,aAAQ,GAAG,EAAE,CAAC;QAGd,gBAAW,GAAG,EAAE,CAAC;QAGjB,gBAAW,GAAG,CAAC,CAAC;QAGhB,eAAU,GAAG,CAAC,CAAC;IA8CjB,CAAC;aAlNiB,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+I3B,AA/IqB,CA+IpB;IAuBO,MAAM;QACb,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,QAAQ,IAAI,CAAC,WAAW,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YACvE,OAAO,IAAI,CAAA;;;;gBAID,IAAI,CAAC,WAAW;gBAChB,CAAC,CAAC,IAAI,CAAA,oCAAoC,IAAI,CAAC,WAAW,SAAS;gBACnE,CAAC,CAAC,OAAO;8CACqB,IAAI,CAAC,OAAO;;;;yBAIjC,IAAI,CAAC,WAAW;uBAClB,IAAI,CAAC,UAAU;wBACd,aAAa;;;;;;;;;OAS9B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAA;;;YAGH,IAAI,CAAC,OAAO;YACZ,CAAC,CAAC,IAAI,CAAA,6BAA6B,IAAI,CAAC,OAAO,OAAO;YACtD,CAAC,CAAC,OAAO;YACT,IAAI,CAAC,QAAQ;YACb,CAAC,CAAC,IAAI,CAAA,6BAA6B,IAAI,CAAC,QAAQ,MAAM;YACtD,CAAC,CAAC,OAAO;;;;;;KAMhB,CAAC;IACJ,CAAC;;AA/DD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;uCACT;AAGjC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oCACpB;AAGtB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uCACd;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCACb;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;2CACrC;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;2CACtC;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;0CACtC;AArKJ,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM,CAmNlB"}
package/dist/oh-icon.js CHANGED
@@ -215,17 +215,17 @@ let OhIcon = class OhIcon extends OhElement {
215
215
  justify-content: center;
216
216
  color: inherit;
217
217
  text-decoration: none;
218
- border-radius: var(--oh-shape-radius-sm, 6px);
219
- padding: var(--oh-spacing-2, 8px);
220
- margin: calc(-1 * var(--oh-spacing-2, 8px));
218
+ border-radius: var(--oh-shape-compact);
219
+ padding: var(--oh-spacing-2);
220
+ margin: calc(-1 * var(--oh-spacing-2));
221
221
  transition:
222
- transform var(--oh-motion-snappy, 150ms) var(--oh-motion-ease-gentle, ease),
223
- box-shadow var(--oh-motion-snappy, 150ms) var(--oh-motion-ease-gentle, ease);
222
+ transform var(--oh-motion-snappy) var(--oh-motion-ease-gentle),
223
+ box-shadow var(--oh-motion-snappy) var(--oh-motion-ease-gentle);
224
224
  }
225
225
 
226
226
  .icon-link:hover {
227
- transform: translate(-2px, -2px);
228
- box-shadow: 4px 4px 0 0 var(--oh-color-border-default);
227
+ transform: translate(var(--oh-lift-hover-md), var(--oh-lift-hover-md));
228
+ box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-color-border-default);
229
229
  }
230
230
 
231
231
  .icon-link:active {
@@ -238,12 +238,12 @@ let OhIcon = class OhIcon extends OhElement {
238
238
  }
239
239
 
240
240
  .icon-link:focus-visible {
241
- box-shadow: 0 0 0 2px var(--oh-color-border-focus);
241
+ box-shadow: 0 0 0 2px var(--oh-focus-ring-color);
242
242
  }
243
243
 
244
244
  /* Inverse link styles (for dark/colored backgrounds) */
245
245
  :host([inverse]) .icon-link:hover {
246
- box-shadow: 4px 4px 0 0 var(--oh-color-text-on-accent);
246
+ box-shadow: var(--oh-elevation-offset-lg) var(--oh-elevation-offset-lg) 0 0 var(--oh-color-text-on-accent);
247
247
  }
248
248
 
249
249
  :host([inverse]) .icon-link:focus-visible {
@@ -7,9 +7,9 @@
7
7
  * DESIGN DECISIONS:
8
8
  * ─────────────────
9
9
  * 1. CHUNKY & CONFIDENT
10
- * - Thick border (2.5px) that feels illustrative
10
+ * - Thick border (stroke.control) that feels illustrative
11
11
  * - Solid fill, no subtle gradients
12
- * - 10px rounded corners (matches button)
12
+ * - shape.control corners (matches button)
13
13
  *
14
14
  * 2. INSET SHADOW (PRESSED IN)
15
15
  * - Shadow offset to top-left (inset)
@@ -19,11 +19,12 @@
19
19
  * 3. FOCUS RISES UP
20
20
  * - Inset shadow disappears
21
21
  * - Outset shadow appears (field lifts)
22
- * - Border turns marmalade
22
+ * - Border turns brand orange
23
23
  * - Clear visual hierarchy
24
24
  *
25
25
  * @element oh-input
26
26
  */
27
+ import { type PropertyValues } from "lit";
27
28
  import { OhElement } from "./base.js";
28
29
  export type InputType = "text" | "email" | "password" | "search" | "tel" | "url";
29
30
  export type InputState = "default" | "hover" | "focus";
@@ -46,6 +47,13 @@ export declare class OhInput extends OhElement {
46
47
  private _handleChange;
47
48
  focus(): void;
48
49
  blur(): void;
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
+ private _announceError;
56
+ willUpdate(changed: PropertyValues): void;
49
57
  render(): import("lit").TemplateResult<1>;
50
58
  }
51
59
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"oh-input.d.ts","sourceRoot":"","sources":["../src/oh-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AACjF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvD,qBACa,OAAQ,SAAQ,SAAS;IACpC,OAAgB,MAAM,4BAoKpB;IAGF,IAAI,EAAE,SAAS,CAAU;IAGzB,KAAK,SAAM;IAGX,WAAW,SAAM;IAGjB,KAAK,SAAM;IAGX,UAAU,SAAM;IAGhB,SAAS,SAAM;IAGf,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,UAAU,EAAE,UAAU,CAAa;IAGnC,OAAO,CAAC,MAAM,CAAoB;IAElC,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAIrB,KAAK;IAIL,IAAI;IAIJ,MAAM;CA2DP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"oh-input.d.ts","sourceRoot":"","sources":["../src/oh-input.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,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AACjF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvD,qBACa,OAAQ,SAAQ,SAAS;IACpC,OAAgB,MAAM,4BAoKpB;IAGF,IAAI,EAAE,SAAS,CAAU;IAGzB,KAAK,SAAM;IAGX,WAAW,SAAM;IAGjB,KAAK,SAAM;IAGX,UAAU,SAAM;IAGhB,SAAS,SAAM;IAGf,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,UAAU,EAAE,UAAU,CAAa;IAGnC,OAAO,CAAC,MAAM,CAAoB;IAElC,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAIrB,KAAK;IAIL,IAAI;IAIJ;;;;OAIG;IAEH,OAAO,CAAC,cAAc,CAAS;IAE/B,UAAU,CAAC,OAAO,EAAE,cAAc;IAMlC,MAAM;CAyDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
@@ -28,8 +28,8 @@ figma.connect("https://www.figma.com/design/q9ZYrOj2w9DrTVmgQFU7bu/OHDS?node-id=
28
28
  value="${props.value}"
29
29
  placeholder="${props.showPlaceholder ? props.placeholder : ""}"
30
30
  ?required="${props.required}"
31
- helper-text="${props.helperText}"
32
- error-text="${props.errorText}"
31
+ helpertext="${props.helperText}"
32
+ errortext="${props.errorText}"
33
33
  ></oh-input>
34
34
  `,
35
35
  });
@@ -1 +1 @@
1
- {"version":3,"file":"oh-input.figma.js","sourceRoot":"","sources":["../src/oh-input.figma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;;;;;;;GAYG;AAEH,KAAK,CAAC,OAAO,CACX,uEAAuE,EACvE;IACE,KAAK,EAAE;QACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5B,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAClD,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACxC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACnC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACvC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;KACtC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;iBAEX,KAAK,CAAC,KAAK;iBACX,KAAK,CAAC,KAAK;uBACL,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;qBAChD,KAAK,CAAC,QAAQ;uBACZ,KAAK,CAAC,UAAU;sBACjB,KAAK,CAAC,SAAS;;KAEhC;CACF,CACF,CAAC"}
1
+ {"version":3,"file":"oh-input.figma.js","sourceRoot":"","sources":["../src/oh-input.figma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;;;;;;;GAYG;AAEH,KAAK,CAAC,OAAO,CACX,uEAAuE,EACvE;IACE,KAAK,EAAE;QACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5B,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAClD,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACxC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACnC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACvC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;KACtC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;iBAEX,KAAK,CAAC,KAAK;iBACX,KAAK,CAAC,KAAK;uBACL,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;qBAChD,KAAK,CAAC,QAAQ;sBACb,KAAK,CAAC,UAAU;qBACjB,KAAK,CAAC,SAAS;;KAE/B;CACF,CACF,CAAC"}