@orange-halo/components 1.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 (138) hide show
  1. package/custom-elements.json +186 -0
  2. package/dist/base.d.ts +30 -0
  3. package/dist/base.d.ts.map +1 -0
  4. package/dist/base.js +78 -0
  5. package/dist/base.js.map +1 -0
  6. package/dist/index.d.ts +83 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +72 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/oh-accordion.d.ts +47 -0
  11. package/dist/oh-accordion.d.ts.map +1 -0
  12. package/dist/oh-accordion.js +387 -0
  13. package/dist/oh-accordion.js.map +1 -0
  14. package/dist/oh-alert.d.ts +48 -0
  15. package/dist/oh-alert.d.ts.map +1 -0
  16. package/dist/oh-alert.js +343 -0
  17. package/dist/oh-alert.js.map +1 -0
  18. package/dist/oh-badge.d.ts +38 -0
  19. package/dist/oh-badge.d.ts.map +1 -0
  20. package/dist/oh-badge.js +176 -0
  21. package/dist/oh-badge.js.map +1 -0
  22. package/dist/oh-breadcrumb.d.ts +39 -0
  23. package/dist/oh-breadcrumb.d.ts.map +1 -0
  24. package/dist/oh-breadcrumb.js +277 -0
  25. package/dist/oh-breadcrumb.js.map +1 -0
  26. package/dist/oh-button.d.ts +62 -0
  27. package/dist/oh-button.d.ts.map +1 -0
  28. package/dist/oh-button.figma.d.ts +2 -0
  29. package/dist/oh-button.figma.d.ts.map +1 -0
  30. package/dist/oh-button.figma.js +20 -0
  31. package/dist/oh-button.figma.js.map +1 -0
  32. package/dist/oh-button.js +490 -0
  33. package/dist/oh-button.js.map +1 -0
  34. package/dist/oh-card.d.ts +44 -0
  35. package/dist/oh-card.d.ts.map +1 -0
  36. package/dist/oh-card.js +340 -0
  37. package/dist/oh-card.js.map +1 -0
  38. package/dist/oh-checkbox-group.d.ts +39 -0
  39. package/dist/oh-checkbox-group.d.ts.map +1 -0
  40. package/dist/oh-checkbox-group.figma.d.ts +2 -0
  41. package/dist/oh-checkbox-group.figma.d.ts.map +1 -0
  42. package/dist/oh-checkbox-group.figma.js +24 -0
  43. package/dist/oh-checkbox-group.figma.js.map +1 -0
  44. package/dist/oh-checkbox-group.js +309 -0
  45. package/dist/oh-checkbox-group.js.map +1 -0
  46. package/dist/oh-checkbox.d.ts +50 -0
  47. package/dist/oh-checkbox.d.ts.map +1 -0
  48. package/dist/oh-checkbox.js +315 -0
  49. package/dist/oh-checkbox.js.map +1 -0
  50. package/dist/oh-cluster.d.ts +38 -0
  51. package/dist/oh-cluster.d.ts.map +1 -0
  52. package/dist/oh-cluster.js +141 -0
  53. package/dist/oh-cluster.js.map +1 -0
  54. package/dist/oh-container.d.ts +38 -0
  55. package/dist/oh-container.d.ts.map +1 -0
  56. package/dist/oh-container.js +116 -0
  57. package/dist/oh-container.js.map +1 -0
  58. package/dist/oh-drawer.d.ts +66 -0
  59. package/dist/oh-drawer.d.ts.map +1 -0
  60. package/dist/oh-drawer.js +284 -0
  61. package/dist/oh-drawer.js.map +1 -0
  62. package/dist/oh-footer.d.ts +40 -0
  63. package/dist/oh-footer.d.ts.map +1 -0
  64. package/dist/oh-footer.js +112 -0
  65. package/dist/oh-footer.js.map +1 -0
  66. package/dist/oh-grid.d.ts +40 -0
  67. package/dist/oh-grid.d.ts.map +1 -0
  68. package/dist/oh-grid.js +168 -0
  69. package/dist/oh-grid.js.map +1 -0
  70. package/dist/oh-hero.d.ts +28 -0
  71. package/dist/oh-hero.d.ts.map +1 -0
  72. package/dist/oh-hero.js +242 -0
  73. package/dist/oh-hero.js.map +1 -0
  74. package/dist/oh-icon.d.ts +44 -0
  75. package/dist/oh-icon.d.ts.map +1 -0
  76. package/dist/oh-icon.js +321 -0
  77. package/dist/oh-icon.js.map +1 -0
  78. package/dist/oh-input.d.ts +56 -0
  79. package/dist/oh-input.d.ts.map +1 -0
  80. package/dist/oh-input.figma.d.ts +2 -0
  81. package/dist/oh-input.figma.d.ts.map +1 -0
  82. package/dist/oh-input.figma.js +36 -0
  83. package/dist/oh-input.figma.js.map +1 -0
  84. package/dist/oh-input.js +320 -0
  85. package/dist/oh-input.js.map +1 -0
  86. package/dist/oh-link.d.ts +45 -0
  87. package/dist/oh-link.d.ts.map +1 -0
  88. package/dist/oh-link.js +392 -0
  89. package/dist/oh-link.js.map +1 -0
  90. package/dist/oh-modal.d.ts +54 -0
  91. package/dist/oh-modal.d.ts.map +1 -0
  92. package/dist/oh-modal.js +450 -0
  93. package/dist/oh-modal.js.map +1 -0
  94. package/dist/oh-navbar.d.ts +49 -0
  95. package/dist/oh-navbar.d.ts.map +1 -0
  96. package/dist/oh-navbar.js +185 -0
  97. package/dist/oh-navbar.js.map +1 -0
  98. package/dist/oh-progress.d.ts +56 -0
  99. package/dist/oh-progress.d.ts.map +1 -0
  100. package/dist/oh-progress.js +299 -0
  101. package/dist/oh-progress.js.map +1 -0
  102. package/dist/oh-radio-group.d.ts +43 -0
  103. package/dist/oh-radio-group.d.ts.map +1 -0
  104. package/dist/oh-radio-group.figma.d.ts +2 -0
  105. package/dist/oh-radio-group.figma.d.ts.map +1 -0
  106. package/dist/oh-radio-group.figma.js +22 -0
  107. package/dist/oh-radio-group.figma.js.map +1 -0
  108. package/dist/oh-radio-group.js +324 -0
  109. package/dist/oh-radio-group.js.map +1 -0
  110. package/dist/oh-radio.d.ts +50 -0
  111. package/dist/oh-radio.d.ts.map +1 -0
  112. package/dist/oh-radio.js +314 -0
  113. package/dist/oh-radio.js.map +1 -0
  114. package/dist/oh-select.d.ts +82 -0
  115. package/dist/oh-select.d.ts.map +1 -0
  116. package/dist/oh-select.js +638 -0
  117. package/dist/oh-select.js.map +1 -0
  118. package/dist/oh-skip-link.d.ts +37 -0
  119. package/dist/oh-skip-link.d.ts.map +1 -0
  120. package/dist/oh-skip-link.js +145 -0
  121. package/dist/oh-skip-link.js.map +1 -0
  122. package/dist/oh-stack.d.ts +36 -0
  123. package/dist/oh-stack.d.ts.map +1 -0
  124. package/dist/oh-stack.js +112 -0
  125. package/dist/oh-stack.js.map +1 -0
  126. package/dist/oh-tabs.d.ts +85 -0
  127. package/dist/oh-tabs.d.ts.map +1 -0
  128. package/dist/oh-tabs.js +417 -0
  129. package/dist/oh-tabs.js.map +1 -0
  130. package/dist/oh-toggle.d.ts +51 -0
  131. package/dist/oh-toggle.d.ts.map +1 -0
  132. package/dist/oh-toggle.js +219 -0
  133. package/dist/oh-toggle.js.map +1 -0
  134. package/dist/styles/typography.d.ts +15 -0
  135. package/dist/styles/typography.d.ts.map +1 -0
  136. package/dist/styles/typography.js +235 -0
  137. package/dist/styles/typography.js.map +1 -0
  138. package/package.json +140 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oh-navbar.js","sourceRoot":"","sources":["../src/oh-navbar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,mBAAmB,CAAC;AAC3B,OAAO,iBAAiB,CAAC;AACzB,OAAO,gBAAgB,CAAC;AACxB,OAAO,gBAAgB,CAAC;AACxB,OAAO,cAAc,CAAC;AAGf,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,SAAS;IAAhC;;QA8EL,yCAAyC;QAEzC,kBAAa,GAAG,MAAM,CAAC;QAGf,gBAAW,GAAG,KAAK,CAAC;IAoD9B,CAAC;aAtIiB,WAAM,GAAG;QACvB,UAAU;QACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwEF;KACF,AA3EqB,CA2EpB;IASM,WAAW;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;uBAoBQ,IAAI,CAAC,WAAW;;;;;;;;;;;kBAWrB,IAAI,CAAC,aAAa;gBACpB,IAAI,CAAC,WAAW;oBACZ,IAAI,CAAC,YAAY;;;;;;KAMhC,CAAC;IACJ,CAAC;;AAtDD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;+CACjC;AAGf;IADP,KAAK,EAAE;6CACoB;AAnFjB,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAuIpB"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * oh-progress
3
+ *
4
+ * An accessible progress bar component showing completion percentage.
5
+ * Displays both a visual bar and numeric percentage.
6
+ *
7
+ * DESIGN DECISIONS:
8
+ * ─────────────────
9
+ * 1. FULLY ACCESSIBLE
10
+ * - role="progressbar" with aria-valuenow, aria-valuemin, aria-valuemax
11
+ * - aria-label for screen reader context
12
+ * - Percentage announced to screen readers
13
+ *
14
+ * 2. VISUAL + NUMERIC
15
+ * - Bar shows progress visually
16
+ * - Percentage text for precise feedback
17
+ * - Text can be hidden if needed
18
+ *
19
+ * 3. ORANGE HALO STYLING
20
+ * - Chunky track with soft corners
21
+ * - Warm fill colors
22
+ * - Gentle animation on value change
23
+ *
24
+ * @element oh-progress
25
+ */
26
+ import { OhElement } from "./base.js";
27
+ export type ProgressVariant = "brand" | "success" | "info" | "warning" | "error";
28
+ export type ProgressSize = "sm" | "md" | "lg";
29
+ export declare class OhProgress extends OhElement {
30
+ static styles: import("lit").CSSResult[];
31
+ /** Current progress value (0-100 by default, or 0-max) */
32
+ value: number;
33
+ /** Maximum value (default 100) */
34
+ max: number;
35
+ /** Accessible label describing what the progress represents */
36
+ label: string;
37
+ /** Whether to show the visible label above the bar */
38
+ showLabel: boolean;
39
+ /** Whether to show the percentage number */
40
+ showValue: boolean;
41
+ /** Size variant */
42
+ size: ProgressSize;
43
+ /** Color variant */
44
+ variant: ProgressVariant;
45
+ /** Inverse colors for dark backgrounds */
46
+ inverse: boolean;
47
+ /** Calculate percentage (clamped 0-100) */
48
+ private get percentage();
49
+ render(): import("lit").TemplateResult<1>;
50
+ }
51
+ declare global {
52
+ interface HTMLElementTagNameMap {
53
+ "oh-progress": OhProgress;
54
+ }
55
+ }
56
+ //# sourceMappingURL=oh-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oh-progress.d.ts","sourceRoot":"","sources":["../src/oh-progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AACjF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,qBACa,UAAW,SAAQ,SAAS;IACvC,OAAgB,MAAM,4BA4KpB;IAEF,0DAA0D;IAE1D,KAAK,SAAK;IAEV,kCAAkC;IAElC,GAAG,SAAO;IAEV,+DAA+D;IAE/D,KAAK,SAAc;IAEnB,sDAAsD;IAEtD,SAAS,UAAS;IAElB,4CAA4C;IAE5C,SAAS,UAAQ;IAEjB,mBAAmB;IAEnB,IAAI,EAAE,YAAY,CAAQ;IAE1B,oBAAoB;IAEpB,OAAO,EAAE,eAAe,CAAW;IAEnC,0CAA0C;IAE1C,OAAO,UAAS;IAEhB,2CAA2C;IAC3C,OAAO,KAAK,UAAU,GAGrB;IAED,MAAM;CAwCP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -0,0 +1,299 @@
1
+ /**
2
+ * oh-progress
3
+ *
4
+ * An accessible progress bar component showing completion percentage.
5
+ * Displays both a visual bar and numeric percentage.
6
+ *
7
+ * DESIGN DECISIONS:
8
+ * ─────────────────
9
+ * 1. FULLY ACCESSIBLE
10
+ * - role="progressbar" with aria-valuenow, aria-valuemin, aria-valuemax
11
+ * - aria-label for screen reader context
12
+ * - Percentage announced to screen readers
13
+ *
14
+ * 2. VISUAL + NUMERIC
15
+ * - Bar shows progress visually
16
+ * - Percentage text for precise feedback
17
+ * - Text can be hidden if needed
18
+ *
19
+ * 3. ORANGE HALO STYLING
20
+ * - Chunky track with soft corners
21
+ * - Warm fill colors
22
+ * - Gentle animation on value change
23
+ *
24
+ * @element oh-progress
25
+ */
26
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
27
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29
+ 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;
30
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
31
+ };
32
+ import { html, css } from "lit";
33
+ import { customElement, property } from "lit/decorators.js";
34
+ import { OhElement, baseStyles } from "./base.js";
35
+ let OhProgress = class OhProgress extends OhElement {
36
+ constructor() {
37
+ super(...arguments);
38
+ /** Current progress value (0-100 by default, or 0-max) */
39
+ this.value = 0;
40
+ /** Maximum value (default 100) */
41
+ this.max = 100;
42
+ /** Accessible label describing what the progress represents */
43
+ this.label = "Progress";
44
+ /** Whether to show the visible label above the bar */
45
+ this.showLabel = false;
46
+ /** Whether to show the percentage number */
47
+ this.showValue = true;
48
+ /** Size variant */
49
+ this.size = "md";
50
+ /** Color variant */
51
+ this.variant = "brand";
52
+ /** Inverse colors for dark backgrounds */
53
+ this.inverse = false;
54
+ }
55
+ static { this.styles = [
56
+ baseStyles,
57
+ css `
58
+ /* ═══════════════════════════════════════════════════════════════
59
+ ORANGE HALO PROGRESS BAR
60
+ Accessible • Visual + Numeric • Warm styling
61
+ ═══════════════════════════════════════════════════════════════ */
62
+
63
+ :host {
64
+ display: block;
65
+ width: 100%;
66
+ }
67
+
68
+ .progress {
69
+ display: flex;
70
+ align-items: center;
71
+ gap: var(--oh-spacing-3);
72
+ font-family: var(--oh-font-family-sans);
73
+ }
74
+
75
+ /* ═══════════════════════════════════════════════════════════════
76
+ TRACK (background)
77
+ ═══════════════════════════════════════════════════════════════ */
78
+
79
+ .progress__track {
80
+ flex: 1;
81
+ background-color: var(--oh-color-surface-inset);
82
+ border: var(--oh-border-width-chunky, 2.5px) solid var(--oh-color-border-default);
83
+ border-radius: var(--oh-radius-full);
84
+ overflow: hidden;
85
+ box-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.06);
86
+ }
87
+
88
+ /* Size variants for track height */
89
+ .progress--sm .progress__track {
90
+ height: 8px;
91
+ }
92
+
93
+ .progress--md .progress__track {
94
+ height: 16px;
95
+ }
96
+
97
+ .progress--lg .progress__track {
98
+ height: 24px;
99
+ }
100
+
101
+ /* ═══════════════════════════════════════════════════════════════
102
+ FILL (the actual progress)
103
+ ═══════════════════════════════════════════════════════════════ */
104
+
105
+ .progress__fill {
106
+ height: 100%;
107
+ border-radius: var(--oh-radius-full);
108
+ transition: width var(--oh-motion-relaxed, 300ms) var(--oh-motion-ease-gentle, ease-out);
109
+ min-width: 0;
110
+ }
111
+
112
+ /* Variant colors */
113
+ .progress--brand .progress__fill {
114
+ background-color: var(--oh-color-brand-primary);
115
+ }
116
+
117
+ .progress--success .progress__fill {
118
+ background-color: var(--oh-color-feedback-success);
119
+ }
120
+
121
+ .progress--info .progress__fill {
122
+ background-color: var(--oh-color-feedback-info);
123
+ }
124
+
125
+ .progress--warning .progress__fill {
126
+ background-color: var(--oh-color-feedback-warning);
127
+ }
128
+
129
+ .progress--error .progress__fill {
130
+ background-color: var(--oh-color-feedback-error);
131
+ }
132
+
133
+ /* ═══════════════════════════════════════════════════════════════
134
+ VALUE TEXT
135
+ ═══════════════════════════════════════════════════════════════ */
136
+
137
+ .progress__value {
138
+ font-size: var(--oh-font-size-base);
139
+ font-weight: var(--oh-font-weight-medium);
140
+ color: var(--oh-color-text-primary);
141
+ min-width: 3.5ch;
142
+ text-align: right;
143
+ font-variant-numeric: tabular-nums;
144
+ }
145
+
146
+ .progress--sm .progress__value {
147
+ font-size: var(--oh-font-size-base);
148
+ }
149
+
150
+ .progress--lg .progress__value {
151
+ font-size: var(--oh-font-size-lg);
152
+ }
153
+
154
+ /* Hide value text when showValue is false */
155
+ .progress__value--hidden {
156
+ position: absolute;
157
+ width: 1px;
158
+ height: 1px;
159
+ padding: 0;
160
+ margin: -1px;
161
+ overflow: hidden;
162
+ clip: rect(0, 0, 0, 0);
163
+ white-space: nowrap;
164
+ border: 0;
165
+ }
166
+
167
+ /* ═══════════════════════════════════════════════════════════════
168
+ LABEL (optional visible label)
169
+ ═══════════════════════════════════════════════════════════════ */
170
+
171
+ .progress__label {
172
+ font-size: var(--oh-font-size-base);
173
+ font-weight: var(--oh-font-weight-medium);
174
+ color: var(--oh-color-text-primary);
175
+ margin-bottom: var(--oh-spacing-2);
176
+ }
177
+
178
+ /* ═══════════════════════════════════════════════════════════════
179
+ INVERSE (for dark backgrounds)
180
+ ═══════════════════════════════════════════════════════════════ */
181
+
182
+ :host([inverse]) .progress__track {
183
+ background-color: rgba(255, 255, 255, 0.15);
184
+ border-color: rgba(255, 255, 255, 0.3);
185
+ box-shadow: none;
186
+ }
187
+
188
+ :host([inverse]) .progress__value {
189
+ color: var(--oh-color-surface-white);
190
+ }
191
+
192
+ :host([inverse]) .progress__label {
193
+ color: var(--oh-color-surface-white);
194
+ }
195
+
196
+ /* Inverse fill - use honey/gold for better visibility on dark */
197
+ :host([inverse]) .progress--brand .progress__fill {
198
+ background-color: var(--oh-color-honey, #E8A838);
199
+ }
200
+
201
+ :host([inverse]) .progress--success .progress__fill {
202
+ background-color: #6FCF97;
203
+ }
204
+
205
+ :host([inverse]) .progress--info .progress__fill {
206
+ background-color: #6FB3CF;
207
+ }
208
+
209
+ :host([inverse]) .progress--warning .progress__fill {
210
+ background-color: var(--oh-color-honey, #E8A838);
211
+ }
212
+
213
+ :host([inverse]) .progress--error .progress__fill {
214
+ background-color: #EB8989;
215
+ }
216
+
217
+ /* ═══════════════════════════════════════════════════════════════
218
+ REDUCED MOTION
219
+ ═══════════════════════════════════════════════════════════════ */
220
+
221
+ @media (prefers-reduced-motion: reduce) {
222
+ .progress__fill {
223
+ transition: none;
224
+ }
225
+ }
226
+ `,
227
+ ]; }
228
+ /** Calculate percentage (clamped 0-100) */
229
+ get percentage() {
230
+ const clamped = Math.max(0, Math.min(this.value, this.max));
231
+ return Math.round((clamped / this.max) * 100);
232
+ }
233
+ render() {
234
+ const percentage = this.percentage;
235
+ const classes = this.classMap({
236
+ progress: true,
237
+ [`progress--${this.size}`]: true,
238
+ [`progress--${this.variant}`]: true,
239
+ });
240
+ const valueClasses = this.classMap({
241
+ progress__value: true,
242
+ "progress__value--hidden": !this.showValue,
243
+ });
244
+ return html `
245
+ ${this.showLabel
246
+ ? html `<div class="progress__label">${this.label}</div>`
247
+ : null}
248
+
249
+ <div
250
+ class=${classes}
251
+ role="progressbar"
252
+ aria-valuenow=${this.value}
253
+ aria-valuemin="0"
254
+ aria-valuemax=${this.max}
255
+ aria-label=${this.label}
256
+ >
257
+ <div class="progress__track" part="track">
258
+ <div
259
+ class="progress__fill"
260
+ part="fill"
261
+ style="width: ${percentage}%"
262
+ ></div>
263
+ </div>
264
+ <span class=${valueClasses} part="value" aria-hidden="true">
265
+ ${percentage}%
266
+ </span>
267
+ </div>
268
+ `;
269
+ }
270
+ };
271
+ __decorate([
272
+ property({ type: Number, reflect: true })
273
+ ], OhProgress.prototype, "value", void 0);
274
+ __decorate([
275
+ property({ type: Number, reflect: true })
276
+ ], OhProgress.prototype, "max", void 0);
277
+ __decorate([
278
+ property({ type: String })
279
+ ], OhProgress.prototype, "label", void 0);
280
+ __decorate([
281
+ property({ type: Boolean, attribute: "show-label" })
282
+ ], OhProgress.prototype, "showLabel", void 0);
283
+ __decorate([
284
+ property({ type: Boolean, attribute: "show-value" })
285
+ ], OhProgress.prototype, "showValue", void 0);
286
+ __decorate([
287
+ property({ type: String, reflect: true })
288
+ ], OhProgress.prototype, "size", void 0);
289
+ __decorate([
290
+ property({ type: String, reflect: true })
291
+ ], OhProgress.prototype, "variant", void 0);
292
+ __decorate([
293
+ property({ type: Boolean, reflect: true })
294
+ ], OhProgress.prototype, "inverse", void 0);
295
+ OhProgress = __decorate([
296
+ customElement("oh-progress")
297
+ ], OhProgress);
298
+ export { OhProgress };
299
+ //# sourceMappingURL=oh-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oh-progress.js","sourceRoot":"","sources":["../src/oh-progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * oh-radio-group
3
+ *
4
+ * A radio group with proper ARIA semantics and group-level error handling.
5
+ * Individual radios cannot be used standalone.
6
+ *
7
+ * ACCESSIBILITY:
8
+ * ─────────────
9
+ * - role="radiogroup" with aria-labelledby
10
+ * - Arrow key navigation between options
11
+ * - Group-level error messaging
12
+ * - Visible focus ring (outline, not inset)
13
+ * - aria-required and aria-invalid
14
+ *
15
+ * @element oh-radio-group
16
+ */
17
+ import { OhElement } from "./base.js";
18
+ export interface RadioOption {
19
+ label: string;
20
+ value: string;
21
+ }
22
+ export declare class OhRadioGroup extends OhElement {
23
+ static styles: import("lit").CSSResult[];
24
+ label: string;
25
+ name: string;
26
+ options: RadioOption[];
27
+ value: string;
28
+ required: boolean;
29
+ error: boolean;
30
+ errorMessage: string;
31
+ private _labelId;
32
+ private _focusedValue;
33
+ private _handleChange;
34
+ private _handleFocus;
35
+ private _handleBlur;
36
+ render(): import("lit").TemplateResult<1>;
37
+ }
38
+ declare global {
39
+ interface HTMLElementTagNameMap {
40
+ "oh-radio-group": OhRadioGroup;
41
+ }
42
+ }
43
+ //# sourceMappingURL=oh-radio-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oh-radio-group.d.ts","sourceRoot":"","sources":["../src/oh-radio-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBACa,YAAa,SAAQ,SAAS;IACzC,OAAgB,MAAM,4BA4LpB;IAGF,KAAK,SAAM;IAGX,IAAI,SAAM;IAGV,OAAO,EAAE,WAAW,EAAE,CAAM;IAG5B,KAAK,SAAM;IAGX,QAAQ,UAAS;IAGjB,KAAK,UAAS;IAGd,YAAY,SAAM;IAGlB,OAAO,CAAC,QAAQ,CAAkE;IAGlF,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAInB,MAAM;CAuDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=oh-radio-group.figma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oh-radio-group.figma.d.ts","sourceRoot":"","sources":["../src/oh-radio-group.figma.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import figma, { html } from "@figma/code-connect/html";
2
+ /**
3
+ * Code Connect for oh-radio-group
4
+ *
5
+ * Replace the Figma URL below with your actual component URL.
6
+ */
7
+ figma.connect("https://www.figma.com/design/q9ZYrOj2w9DrTVmgQFU7bu/OHDS?node-id=1-107", {
8
+ props: {
9
+ label: figma.string("Label"),
10
+ required: figma.boolean("Required"),
11
+ error: figma.boolean("Error"),
12
+ },
13
+ example: (props) => html `
14
+ <oh-radio-group
15
+ label="${props.label}"
16
+ ?required="${props.required}"
17
+ ?error="${props.error}"
18
+ .options="\${options}"
19
+ ></oh-radio-group>
20
+ `,
21
+ });
22
+ //# sourceMappingURL=oh-radio-group.figma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oh-radio-group.figma.js","sourceRoot":"","sources":["../src/oh-radio-group.figma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;GAIG;AAEH,KAAK,CAAC,OAAO,CACX,wEAAwE,EACxE;IACE,KAAK,EAAE;QACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QACnC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;KAC9B;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;iBAEX,KAAK,CAAC,KAAK;qBACP,KAAK,CAAC,QAAQ;kBACjB,KAAK,CAAC,KAAK;;;KAGxB;CACF,CACF,CAAC"}