@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.
- package/custom-elements.json +186 -0
- package/dist/base.d.ts +30 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +78 -0
- package/dist/base.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/oh-accordion.d.ts +47 -0
- package/dist/oh-accordion.d.ts.map +1 -0
- package/dist/oh-accordion.js +387 -0
- package/dist/oh-accordion.js.map +1 -0
- package/dist/oh-alert.d.ts +48 -0
- package/dist/oh-alert.d.ts.map +1 -0
- package/dist/oh-alert.js +343 -0
- package/dist/oh-alert.js.map +1 -0
- package/dist/oh-badge.d.ts +38 -0
- package/dist/oh-badge.d.ts.map +1 -0
- package/dist/oh-badge.js +176 -0
- package/dist/oh-badge.js.map +1 -0
- package/dist/oh-breadcrumb.d.ts +39 -0
- package/dist/oh-breadcrumb.d.ts.map +1 -0
- package/dist/oh-breadcrumb.js +277 -0
- package/dist/oh-breadcrumb.js.map +1 -0
- package/dist/oh-button.d.ts +62 -0
- package/dist/oh-button.d.ts.map +1 -0
- package/dist/oh-button.figma.d.ts +2 -0
- package/dist/oh-button.figma.d.ts.map +1 -0
- package/dist/oh-button.figma.js +20 -0
- package/dist/oh-button.figma.js.map +1 -0
- package/dist/oh-button.js +490 -0
- package/dist/oh-button.js.map +1 -0
- package/dist/oh-card.d.ts +44 -0
- package/dist/oh-card.d.ts.map +1 -0
- package/dist/oh-card.js +340 -0
- package/dist/oh-card.js.map +1 -0
- package/dist/oh-checkbox-group.d.ts +39 -0
- package/dist/oh-checkbox-group.d.ts.map +1 -0
- package/dist/oh-checkbox-group.figma.d.ts +2 -0
- package/dist/oh-checkbox-group.figma.d.ts.map +1 -0
- package/dist/oh-checkbox-group.figma.js +24 -0
- package/dist/oh-checkbox-group.figma.js.map +1 -0
- package/dist/oh-checkbox-group.js +309 -0
- package/dist/oh-checkbox-group.js.map +1 -0
- package/dist/oh-checkbox.d.ts +50 -0
- package/dist/oh-checkbox.d.ts.map +1 -0
- package/dist/oh-checkbox.js +315 -0
- package/dist/oh-checkbox.js.map +1 -0
- package/dist/oh-cluster.d.ts +38 -0
- package/dist/oh-cluster.d.ts.map +1 -0
- package/dist/oh-cluster.js +141 -0
- package/dist/oh-cluster.js.map +1 -0
- package/dist/oh-container.d.ts +38 -0
- package/dist/oh-container.d.ts.map +1 -0
- package/dist/oh-container.js +116 -0
- package/dist/oh-container.js.map +1 -0
- package/dist/oh-drawer.d.ts +66 -0
- package/dist/oh-drawer.d.ts.map +1 -0
- package/dist/oh-drawer.js +284 -0
- package/dist/oh-drawer.js.map +1 -0
- package/dist/oh-footer.d.ts +40 -0
- package/dist/oh-footer.d.ts.map +1 -0
- package/dist/oh-footer.js +112 -0
- package/dist/oh-footer.js.map +1 -0
- package/dist/oh-grid.d.ts +40 -0
- package/dist/oh-grid.d.ts.map +1 -0
- package/dist/oh-grid.js +168 -0
- package/dist/oh-grid.js.map +1 -0
- package/dist/oh-hero.d.ts +28 -0
- package/dist/oh-hero.d.ts.map +1 -0
- package/dist/oh-hero.js +242 -0
- package/dist/oh-hero.js.map +1 -0
- package/dist/oh-icon.d.ts +44 -0
- package/dist/oh-icon.d.ts.map +1 -0
- package/dist/oh-icon.js +321 -0
- package/dist/oh-icon.js.map +1 -0
- package/dist/oh-input.d.ts +56 -0
- package/dist/oh-input.d.ts.map +1 -0
- package/dist/oh-input.figma.d.ts +2 -0
- package/dist/oh-input.figma.d.ts.map +1 -0
- package/dist/oh-input.figma.js +36 -0
- package/dist/oh-input.figma.js.map +1 -0
- package/dist/oh-input.js +320 -0
- package/dist/oh-input.js.map +1 -0
- package/dist/oh-link.d.ts +45 -0
- package/dist/oh-link.d.ts.map +1 -0
- package/dist/oh-link.js +392 -0
- package/dist/oh-link.js.map +1 -0
- package/dist/oh-modal.d.ts +54 -0
- package/dist/oh-modal.d.ts.map +1 -0
- package/dist/oh-modal.js +450 -0
- package/dist/oh-modal.js.map +1 -0
- package/dist/oh-navbar.d.ts +49 -0
- package/dist/oh-navbar.d.ts.map +1 -0
- package/dist/oh-navbar.js +185 -0
- package/dist/oh-navbar.js.map +1 -0
- package/dist/oh-progress.d.ts +56 -0
- package/dist/oh-progress.d.ts.map +1 -0
- package/dist/oh-progress.js +299 -0
- package/dist/oh-progress.js.map +1 -0
- package/dist/oh-radio-group.d.ts +43 -0
- package/dist/oh-radio-group.d.ts.map +1 -0
- package/dist/oh-radio-group.figma.d.ts +2 -0
- package/dist/oh-radio-group.figma.d.ts.map +1 -0
- package/dist/oh-radio-group.figma.js +22 -0
- package/dist/oh-radio-group.figma.js.map +1 -0
- package/dist/oh-radio-group.js +324 -0
- package/dist/oh-radio-group.js.map +1 -0
- package/dist/oh-radio.d.ts +50 -0
- package/dist/oh-radio.d.ts.map +1 -0
- package/dist/oh-radio.js +314 -0
- package/dist/oh-radio.js.map +1 -0
- package/dist/oh-select.d.ts +82 -0
- package/dist/oh-select.d.ts.map +1 -0
- package/dist/oh-select.js +638 -0
- package/dist/oh-select.js.map +1 -0
- package/dist/oh-skip-link.d.ts +37 -0
- package/dist/oh-skip-link.d.ts.map +1 -0
- package/dist/oh-skip-link.js +145 -0
- package/dist/oh-skip-link.js.map +1 -0
- package/dist/oh-stack.d.ts +36 -0
- package/dist/oh-stack.d.ts.map +1 -0
- package/dist/oh-stack.js +112 -0
- package/dist/oh-stack.js.map +1 -0
- package/dist/oh-tabs.d.ts +85 -0
- package/dist/oh-tabs.d.ts.map +1 -0
- package/dist/oh-tabs.js +417 -0
- package/dist/oh-tabs.js.map +1 -0
- package/dist/oh-toggle.d.ts +51 -0
- package/dist/oh-toggle.d.ts.map +1 -0
- package/dist/oh-toggle.js +219 -0
- package/dist/oh-toggle.js.map +1 -0
- package/dist/styles/typography.d.ts +15 -0
- package/dist/styles/typography.d.ts.map +1 -0
- package/dist/styles/typography.js +235 -0
- package/dist/styles/typography.js.map +1 -0
- package/package.json +140 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* oh-hero
|
|
3
|
+
*
|
|
4
|
+
* A prominent hero section for page headers.
|
|
5
|
+
*
|
|
6
|
+
* @element oh-hero
|
|
7
|
+
*/
|
|
8
|
+
import { LitElement } from "lit";
|
|
9
|
+
import "./oh-progress.js";
|
|
10
|
+
export type HeroVariant = "content" | "journey";
|
|
11
|
+
export type HeroSize = "sm" | "md" | "lg" | "xl";
|
|
12
|
+
export declare class OhHero extends LitElement {
|
|
13
|
+
static styles: import("lit").CSSResult;
|
|
14
|
+
variant: HeroVariant;
|
|
15
|
+
size: HeroSize;
|
|
16
|
+
heading: string;
|
|
17
|
+
subtitle: string;
|
|
18
|
+
journeyName: string;
|
|
19
|
+
currentStep: number;
|
|
20
|
+
totalSteps: number;
|
|
21
|
+
render(): import("lit").TemplateResult<1>;
|
|
22
|
+
}
|
|
23
|
+
declare global {
|
|
24
|
+
interface HTMLElementTagNameMap {
|
|
25
|
+
"oh-hero": OhHero;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=oh-hero.d.ts.map
|
|
@@ -0,0 +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"}
|
package/dist/oh-hero.js
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* oh-hero
|
|
3
|
+
*
|
|
4
|
+
* A prominent hero section for page headers.
|
|
5
|
+
*
|
|
6
|
+
* @element oh-hero
|
|
7
|
+
*/
|
|
8
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
9
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
11
|
+
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;
|
|
12
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
+
};
|
|
14
|
+
import { html, css, LitElement, nothing } from "lit";
|
|
15
|
+
import { customElement, property } from "lit/decorators.js";
|
|
16
|
+
import "./oh-progress.js";
|
|
17
|
+
let OhHero = class OhHero extends LitElement {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.variant = "content";
|
|
21
|
+
this.size = "lg";
|
|
22
|
+
this.heading = "";
|
|
23
|
+
this.subtitle = "";
|
|
24
|
+
this.journeyName = "";
|
|
25
|
+
this.currentStep = 1;
|
|
26
|
+
this.totalSteps = 1;
|
|
27
|
+
}
|
|
28
|
+
static { this.styles = css `
|
|
29
|
+
:host {
|
|
30
|
+
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);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.hero {
|
|
37
|
+
padding: 48px 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.hero--journey {
|
|
41
|
+
padding: 32px 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Container styles - matches oh-container */
|
|
45
|
+
.hero__container {
|
|
46
|
+
width: 100%;
|
|
47
|
+
max-width: var(--hero-max-width, 1024px);
|
|
48
|
+
margin-left: auto;
|
|
49
|
+
margin-right: auto;
|
|
50
|
+
padding-left: var(--oh-spacing-4, 16px);
|
|
51
|
+
padding-right: var(--oh-spacing-4, 16px);
|
|
52
|
+
box-sizing: border-box;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Size variants */
|
|
56
|
+
:host([size="sm"]) {
|
|
57
|
+
--hero-max-width: 640px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
:host([size="md"]) {
|
|
61
|
+
--hero-max-width: 768px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:host([size="lg"]) {
|
|
65
|
+
--hero-max-width: 1024px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:host([size="xl"]) {
|
|
69
|
+
--hero-max-width: 1280px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.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
|
+
}
|
|
79
|
+
|
|
80
|
+
.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;
|
|
87
|
+
max-width: 65ch;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.hero__actions {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex-wrap: wrap;
|
|
93
|
+
gap: 16px;
|
|
94
|
+
margin-top: 24px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.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);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.hero__journey-name {
|
|
106
|
+
display: block;
|
|
107
|
+
font-size: 16px;
|
|
108
|
+
font-weight: 500;
|
|
109
|
+
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;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.hero__page-name {
|
|
117
|
+
display: block;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.hero__progress-wrapper {
|
|
121
|
+
margin-top: 16px;
|
|
122
|
+
max-width: 400px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Responsive container padding - matches oh-container */
|
|
126
|
+
@media (min-width: 640px) {
|
|
127
|
+
.hero__container {
|
|
128
|
+
padding-left: var(--oh-spacing-6, 24px);
|
|
129
|
+
padding-right: var(--oh-spacing-6, 24px);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@media (min-width: 1024px) {
|
|
134
|
+
.hero__container {
|
|
135
|
+
padding-left: var(--oh-spacing-8, 32px);
|
|
136
|
+
padding-right: var(--oh-spacing-8, 32px);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@media (max-width: 768px) {
|
|
141
|
+
.hero {
|
|
142
|
+
padding: 32px 0;
|
|
143
|
+
}
|
|
144
|
+
.hero__heading {
|
|
145
|
+
font-size: 32px;
|
|
146
|
+
}
|
|
147
|
+
.hero__subtitle {
|
|
148
|
+
font-size: 18px;
|
|
149
|
+
}
|
|
150
|
+
.hero--journey {
|
|
151
|
+
padding: 24px 0;
|
|
152
|
+
}
|
|
153
|
+
.hero__journey-heading {
|
|
154
|
+
font-size: 26px;
|
|
155
|
+
}
|
|
156
|
+
.hero__progress-wrapper {
|
|
157
|
+
max-width: 100%;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@media (max-width: 480px) {
|
|
162
|
+
.hero__heading {
|
|
163
|
+
font-size: 26px;
|
|
164
|
+
}
|
|
165
|
+
.hero__journey-heading {
|
|
166
|
+
font-size: 20px;
|
|
167
|
+
}
|
|
168
|
+
.hero__actions {
|
|
169
|
+
flex-direction: column;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
`; }
|
|
173
|
+
render() {
|
|
174
|
+
if (this.variant === "journey") {
|
|
175
|
+
const progressLabel = `Step ${this.currentStep} of ${this.totalSteps}`;
|
|
176
|
+
return html `
|
|
177
|
+
<div class="hero hero--journey" role="banner">
|
|
178
|
+
<div class="hero__container">
|
|
179
|
+
<h1 class="hero__journey-heading">
|
|
180
|
+
${this.journeyName
|
|
181
|
+
? html `<span class="hero__journey-name">${this.journeyName}</span>`
|
|
182
|
+
: nothing}
|
|
183
|
+
<span class="hero__page-name">${this.heading}</span>
|
|
184
|
+
</h1>
|
|
185
|
+
<div class="hero__progress-wrapper">
|
|
186
|
+
<oh-progress
|
|
187
|
+
.value=${this.currentStep}
|
|
188
|
+
.max=${this.totalSteps}
|
|
189
|
+
label=${progressLabel}
|
|
190
|
+
size="md"
|
|
191
|
+
inverse
|
|
192
|
+
show-value
|
|
193
|
+
></oh-progress>
|
|
194
|
+
</div>
|
|
195
|
+
<slot></slot>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
`;
|
|
199
|
+
}
|
|
200
|
+
return html `
|
|
201
|
+
<div class="hero" role="banner">
|
|
202
|
+
<div class="hero__container">
|
|
203
|
+
${this.heading
|
|
204
|
+
? html `<h1 class="hero__heading">${this.heading}</h1>`
|
|
205
|
+
: nothing}
|
|
206
|
+
${this.subtitle
|
|
207
|
+
? html `<p class="hero__subtitle">${this.subtitle}</p>`
|
|
208
|
+
: nothing}
|
|
209
|
+
<div class="hero__actions">
|
|
210
|
+
<slot></slot>
|
|
211
|
+
</div>
|
|
212
|
+
</div>
|
|
213
|
+
</div>
|
|
214
|
+
`;
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
__decorate([
|
|
218
|
+
property({ type: String, reflect: true })
|
|
219
|
+
], OhHero.prototype, "variant", void 0);
|
|
220
|
+
__decorate([
|
|
221
|
+
property({ type: String, reflect: true })
|
|
222
|
+
], OhHero.prototype, "size", void 0);
|
|
223
|
+
__decorate([
|
|
224
|
+
property({ type: String })
|
|
225
|
+
], OhHero.prototype, "heading", void 0);
|
|
226
|
+
__decorate([
|
|
227
|
+
property({ type: String })
|
|
228
|
+
], OhHero.prototype, "subtitle", void 0);
|
|
229
|
+
__decorate([
|
|
230
|
+
property({ type: String, attribute: "journey-name" })
|
|
231
|
+
], OhHero.prototype, "journeyName", void 0);
|
|
232
|
+
__decorate([
|
|
233
|
+
property({ type: Number, attribute: "current-step" })
|
|
234
|
+
], OhHero.prototype, "currentStep", void 0);
|
|
235
|
+
__decorate([
|
|
236
|
+
property({ type: Number, attribute: "total-steps" })
|
|
237
|
+
], OhHero.prototype, "totalSteps", void 0);
|
|
238
|
+
OhHero = __decorate([
|
|
239
|
+
customElement("oh-hero")
|
|
240
|
+
], OhHero);
|
|
241
|
+
export { OhHero };
|
|
242
|
+
//# sourceMappingURL=oh-hero.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* oh-icon
|
|
3
|
+
*
|
|
4
|
+
* A flexible icon component for the Orange Halo design system.
|
|
5
|
+
* Can render as a standalone icon or as an interactive link.
|
|
6
|
+
*
|
|
7
|
+
* DESIGN DECISIONS:
|
|
8
|
+
* ─────────────────
|
|
9
|
+
* 1. SIZE
|
|
10
|
+
* - Default size matches line-height (1em)
|
|
11
|
+
* - Size variants: sm (16px), md (20px), lg (24px), xl (32px)
|
|
12
|
+
*
|
|
13
|
+
* 2. LINK MODE
|
|
14
|
+
* - When `href` is provided, renders as an <a> tag
|
|
15
|
+
* - Includes hover/focus states
|
|
16
|
+
* - `label` is required for accessibility
|
|
17
|
+
*
|
|
18
|
+
* 3. ACCESSIBILITY
|
|
19
|
+
* - Decorative by default (aria-hidden="true")
|
|
20
|
+
* - Provide `label` for meaningful icons
|
|
21
|
+
* - When used as link, label becomes aria-label
|
|
22
|
+
*
|
|
23
|
+
* @element oh-icon
|
|
24
|
+
*/
|
|
25
|
+
import { nothing } from "lit";
|
|
26
|
+
import { OhElement } from "./base.js";
|
|
27
|
+
export type IconName = "twitter" | "github" | "linkedin" | "instagram" | "youtube" | "facebook" | "email" | "substack" | "arrow-right" | "arrow-left" | "arrow-up" | "arrow-down" | "chevron-right" | "chevron-left" | "chevron-up" | "chevron-down" | "external-link" | "close" | "plus" | "minus" | "check" | "search" | "menu" | "settings" | "heart" | "sparkle" | "info" | "warning" | "error" | "success";
|
|
28
|
+
export type IconSize = "sm" | "md" | "lg" | "xl";
|
|
29
|
+
export declare class OhIcon extends OhElement {
|
|
30
|
+
static styles: import("lit").CSSResult[];
|
|
31
|
+
name: IconName;
|
|
32
|
+
size?: IconSize;
|
|
33
|
+
inverse: boolean;
|
|
34
|
+
label?: string;
|
|
35
|
+
href?: string;
|
|
36
|
+
target?: string;
|
|
37
|
+
render(): typeof nothing | import("lit").TemplateResult<1>;
|
|
38
|
+
}
|
|
39
|
+
declare global {
|
|
40
|
+
interface HTMLElementTagNameMap {
|
|
41
|
+
"oh-icon": OhIcon;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=oh-icon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oh-icon.d.ts","sourceRoot":"","sources":["../src/oh-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAa,OAAO,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,QAAQ,GAEhB,SAAS,GACT,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,GACT,UAAU,GACV,OAAO,GACP,UAAU,GAEV,aAAa,GACb,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,eAAe,GACf,cAAc,GACd,YAAY,GACZ,cAAc,GACd,eAAe,GAEf,OAAO,GACP,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,MAAM,GACN,UAAU,GACV,OAAO,GACP,SAAS,GAET,MAAM,GACN,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAqIjD,qBACa,MAAO,SAAQ,SAAS;IACnC,OAAgB,MAAM,4BA6FpB;IAGF,IAAI,EAAE,QAAQ,CAAU;IAGxB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAGhB,OAAO,UAAS;IAGhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,MAAM;CA2CP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
|
package/dist/oh-icon.js
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* oh-icon
|
|
3
|
+
*
|
|
4
|
+
* A flexible icon component for the Orange Halo design system.
|
|
5
|
+
* Can render as a standalone icon or as an interactive link.
|
|
6
|
+
*
|
|
7
|
+
* DESIGN DECISIONS:
|
|
8
|
+
* ─────────────────
|
|
9
|
+
* 1. SIZE
|
|
10
|
+
* - Default size matches line-height (1em)
|
|
11
|
+
* - Size variants: sm (16px), md (20px), lg (24px), xl (32px)
|
|
12
|
+
*
|
|
13
|
+
* 2. LINK MODE
|
|
14
|
+
* - When `href` is provided, renders as an <a> tag
|
|
15
|
+
* - Includes hover/focus states
|
|
16
|
+
* - `label` is required for accessibility
|
|
17
|
+
*
|
|
18
|
+
* 3. ACCESSIBILITY
|
|
19
|
+
* - Decorative by default (aria-hidden="true")
|
|
20
|
+
* - Provide `label` for meaningful icons
|
|
21
|
+
* - When used as link, label becomes aria-label
|
|
22
|
+
*
|
|
23
|
+
* @element oh-icon
|
|
24
|
+
*/
|
|
25
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
26
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
27
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
28
|
+
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;
|
|
29
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
30
|
+
};
|
|
31
|
+
import { html, css, nothing } from "lit";
|
|
32
|
+
import { customElement, property } from "lit/decorators.js";
|
|
33
|
+
import { OhElement, baseStyles } from "./base.js";
|
|
34
|
+
// Icon SVG paths
|
|
35
|
+
const icons = {
|
|
36
|
+
// Social Media (24x24)
|
|
37
|
+
twitter: {
|
|
38
|
+
viewBox: "0 0 24 24",
|
|
39
|
+
path: `M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`,
|
|
40
|
+
},
|
|
41
|
+
github: {
|
|
42
|
+
viewBox: "0 0 24 24",
|
|
43
|
+
path: `M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z`,
|
|
44
|
+
},
|
|
45
|
+
linkedin: {
|
|
46
|
+
viewBox: "0 0 24 24",
|
|
47
|
+
path: `M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z`,
|
|
48
|
+
},
|
|
49
|
+
instagram: {
|
|
50
|
+
viewBox: "0 0 24 24",
|
|
51
|
+
path: `M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z`,
|
|
52
|
+
},
|
|
53
|
+
youtube: {
|
|
54
|
+
viewBox: "0 0 24 24",
|
|
55
|
+
path: `M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z`,
|
|
56
|
+
},
|
|
57
|
+
facebook: {
|
|
58
|
+
viewBox: "0 0 24 24",
|
|
59
|
+
path: `M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z`,
|
|
60
|
+
},
|
|
61
|
+
email: {
|
|
62
|
+
viewBox: "0 0 24 24",
|
|
63
|
+
path: `M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z`,
|
|
64
|
+
},
|
|
65
|
+
substack: {
|
|
66
|
+
viewBox: "0 0 24 24",
|
|
67
|
+
path: `M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z`,
|
|
68
|
+
},
|
|
69
|
+
// Navigation (20x20)
|
|
70
|
+
"arrow-right": {
|
|
71
|
+
viewBox: "0 0 20 20",
|
|
72
|
+
path: `M3 10a.75.75 0 01.75-.75h10.638L10.23 5.29a.75.75 0 111.04-1.08l5.5 5.25a.75.75 0 010 1.08l-5.5 5.25a.75.75 0 11-1.04-1.08l4.158-3.96H3.75A.75.75 0 013 10z`,
|
|
73
|
+
},
|
|
74
|
+
"arrow-left": {
|
|
75
|
+
viewBox: "0 0 20 20",
|
|
76
|
+
path: `M17 10a.75.75 0 00-.75-.75H5.612l4.158-3.96a.75.75 0 10-1.04-1.08l-5.5 5.25a.75.75 0 000 1.08l5.5 5.25a.75.75 0 101.04-1.08L5.612 10.75h10.638A.75.75 0 0017 10z`,
|
|
77
|
+
},
|
|
78
|
+
"arrow-up": {
|
|
79
|
+
viewBox: "0 0 20 20",
|
|
80
|
+
path: `M10 17a.75.75 0 01-.75-.75V5.612l-3.96 4.158a.75.75 0 01-1.08-1.04l5.25-5.5a.75.75 0 011.08 0l5.25 5.5a.75.75 0 11-1.08 1.04l-3.96-4.158v10.638A.75.75 0 0110 17z`,
|
|
81
|
+
},
|
|
82
|
+
"arrow-down": {
|
|
83
|
+
viewBox: "0 0 20 20",
|
|
84
|
+
path: `M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z`,
|
|
85
|
+
},
|
|
86
|
+
"chevron-right": {
|
|
87
|
+
viewBox: "0 0 20 20",
|
|
88
|
+
path: `M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z`,
|
|
89
|
+
},
|
|
90
|
+
"chevron-left": {
|
|
91
|
+
viewBox: "0 0 20 20",
|
|
92
|
+
path: `M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z`,
|
|
93
|
+
},
|
|
94
|
+
"chevron-up": {
|
|
95
|
+
viewBox: "0 0 20 20",
|
|
96
|
+
path: `M14.77 12.79a.75.75 0 01-1.06-.02L10 8.832 6.29 12.77a.75.75 0 01-1.08-1.04l4.25-4.5a.75.75 0 011.08 0l4.25 4.5a.75.75 0 01-.02 1.06z`,
|
|
97
|
+
},
|
|
98
|
+
"chevron-down": {
|
|
99
|
+
viewBox: "0 0 20 20",
|
|
100
|
+
path: `M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z`,
|
|
101
|
+
},
|
|
102
|
+
"external-link": {
|
|
103
|
+
viewBox: "0 0 20 20",
|
|
104
|
+
path: `M4.25 5.5a.75.75 0 00-.75.75v8.5c0 .414.336.75.75.75h8.5a.75.75 0 00.75-.75v-4a.75.75 0 011.5 0v4A2.25 2.25 0 0112.75 17h-8.5A2.25 2.25 0 012 14.75v-8.5A2.25 2.25 0 014.25 4h5a.75.75 0 010 1.5h-5zM6.194 12.753a.75.75 0 001.06.053L16.5 4.44v2.81a.75.75 0 001.5 0v-4.5a.75.75 0 00-.75-.75h-4.5a.75.75 0 000 1.5h2.553l-9.056 8.194a.75.75 0 00-.053 1.06z`,
|
|
105
|
+
},
|
|
106
|
+
// Actions (20x20)
|
|
107
|
+
close: {
|
|
108
|
+
viewBox: "0 0 20 20",
|
|
109
|
+
path: `M5.47 5.47a.75.75 0 011.06 0L10 8.94l3.47-3.47a.75.75 0 111.06 1.06L11.06 10l3.47 3.47a.75.75 0 11-1.06 1.06L10 11.06l-3.47 3.47a.75.75 0 01-1.06-1.06L8.94 10 5.47 6.53a.75.75 0 010-1.06z`,
|
|
110
|
+
},
|
|
111
|
+
plus: {
|
|
112
|
+
viewBox: "0 0 20 20",
|
|
113
|
+
path: `M10 3a.75.75 0 01.75.75v5.5h5.5a.75.75 0 010 1.5h-5.5v5.5a.75.75 0 01-1.5 0v-5.5h-5.5a.75.75 0 010-1.5h5.5v-5.5A.75.75 0 0110 3z`,
|
|
114
|
+
},
|
|
115
|
+
minus: {
|
|
116
|
+
viewBox: "0 0 20 20",
|
|
117
|
+
path: `M4 10a.75.75 0 01.75-.75h10.5a.75.75 0 010 1.5H4.75A.75.75 0 014 10z`,
|
|
118
|
+
},
|
|
119
|
+
check: {
|
|
120
|
+
viewBox: "0 0 20 20",
|
|
121
|
+
path: `M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z`,
|
|
122
|
+
},
|
|
123
|
+
search: {
|
|
124
|
+
viewBox: "0 0 20 20",
|
|
125
|
+
path: `M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z`,
|
|
126
|
+
},
|
|
127
|
+
menu: {
|
|
128
|
+
viewBox: "0 0 20 20",
|
|
129
|
+
path: `M2 4.75A.75.75 0 012.75 4h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 4.75zm0 5A.75.75 0 012.75 9h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 9.75zm0 5a.75.75 0 01.75-.75h14.5a.75.75 0 010 1.5H2.75a.75.75 0 01-.75-.75z`,
|
|
130
|
+
},
|
|
131
|
+
settings: {
|
|
132
|
+
viewBox: "0 0 20 20",
|
|
133
|
+
path: `M10 3.75a2 2 0 10-4 0 2 2 0 004 0zM17.25 4.5a.75.75 0 000-1.5h-5.5a.75.75 0 000 1.5h5.5zM5 3.75a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5a.75.75 0 01.75.75zM4.25 17a.75.75 0 000-1.5h-1.5a.75.75 0 000 1.5h1.5zM17.25 17a.75.75 0 000-1.5h-5.5a.75.75 0 000 1.5h5.5zM9 10a.75.75 0 01-.75.75h-5.5a.75.75 0 010-1.5h5.5A.75.75 0 019 10zM17.25 10.75a.75.75 0 000-1.5h-1.5a.75.75 0 000 1.5h1.5zM14 10a2 2 0 10-4 0 2 2 0 004 0zM10 16.25a2 2 0 10-4 0 2 2 0 004 0z`,
|
|
134
|
+
},
|
|
135
|
+
heart: {
|
|
136
|
+
viewBox: "0 0 20 20",
|
|
137
|
+
path: `M9.653 16.915l-.005-.003-.019-.01a20.759 20.759 0 01-1.162-.682 22.045 22.045 0 01-2.582-1.9C4.045 12.733 2 10.352 2 7.5a4.5 4.5 0 018-2.828A4.5 4.5 0 0118 7.5c0 2.852-2.044 5.233-3.885 6.82a22.049 22.049 0 01-3.744 2.582l-.019.01-.005.003h-.002a.739.739 0 01-.69.001l-.002-.001z`,
|
|
138
|
+
},
|
|
139
|
+
sparkle: {
|
|
140
|
+
viewBox: "0 0 20 20",
|
|
141
|
+
path: `M10.868 2.884c-.321-.772-1.415-.772-1.736 0l-1.83 4.401-4.753.381c-.833.067-1.171 1.107-.536 1.651l3.62 3.102-1.106 4.637c-.194.813.691 1.456 1.405 1.02L10 15.591l4.069 2.485c.713.436 1.598-.207 1.404-1.02l-1.106-4.637 3.62-3.102c.635-.544.297-1.584-.536-1.65l-4.752-.382-1.831-4.401z`,
|
|
142
|
+
},
|
|
143
|
+
// Feedback (20x20)
|
|
144
|
+
info: {
|
|
145
|
+
viewBox: "0 0 20 20",
|
|
146
|
+
path: `M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,
|
|
147
|
+
},
|
|
148
|
+
warning: {
|
|
149
|
+
viewBox: "0 0 20 20",
|
|
150
|
+
path: `M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z`,
|
|
151
|
+
},
|
|
152
|
+
error: {
|
|
153
|
+
viewBox: "0 0 20 20",
|
|
154
|
+
path: `M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z`,
|
|
155
|
+
},
|
|
156
|
+
success: {
|
|
157
|
+
viewBox: "0 0 20 20",
|
|
158
|
+
path: `M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
let OhIcon = class OhIcon extends OhElement {
|
|
162
|
+
constructor() {
|
|
163
|
+
super(...arguments);
|
|
164
|
+
this.name = "info";
|
|
165
|
+
this.inverse = false;
|
|
166
|
+
}
|
|
167
|
+
static { this.styles = [
|
|
168
|
+
baseStyles,
|
|
169
|
+
css `
|
|
170
|
+
:host {
|
|
171
|
+
display: inline-flex;
|
|
172
|
+
align-items: center;
|
|
173
|
+
justify-content: center;
|
|
174
|
+
color: currentColor;
|
|
175
|
+
vertical-align: middle;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
svg {
|
|
179
|
+
display: block;
|
|
180
|
+
fill: currentColor;
|
|
181
|
+
width: 1em;
|
|
182
|
+
height: 1em;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* Sizes */
|
|
186
|
+
:host([size="sm"]) svg {
|
|
187
|
+
width: 16px;
|
|
188
|
+
height: 16px;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
:host([size="md"]) svg {
|
|
192
|
+
width: 20px;
|
|
193
|
+
height: 20px;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
:host([size="lg"]) svg {
|
|
197
|
+
width: 24px;
|
|
198
|
+
height: 24px;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
:host([size="xl"]) svg {
|
|
202
|
+
width: 32px;
|
|
203
|
+
height: 32px;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Inverse (for dark/colored backgrounds) */
|
|
207
|
+
:host([inverse]) {
|
|
208
|
+
color: var(--oh-color-text-on-accent);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* Link styles */
|
|
212
|
+
.icon-link {
|
|
213
|
+
display: inline-flex;
|
|
214
|
+
align-items: center;
|
|
215
|
+
justify-content: center;
|
|
216
|
+
color: inherit;
|
|
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));
|
|
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);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.icon-link:hover {
|
|
227
|
+
transform: translate(-2px, -2px);
|
|
228
|
+
box-shadow: 4px 4px 0 0 var(--oh-color-border-default);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.icon-link:active {
|
|
232
|
+
transform: translate(0, 0);
|
|
233
|
+
box-shadow: none;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.icon-link:focus {
|
|
237
|
+
outline: none;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.icon-link:focus-visible {
|
|
241
|
+
box-shadow: 0 0 0 2px var(--oh-color-border-focus);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/* Inverse link styles (for dark/colored backgrounds) */
|
|
245
|
+
:host([inverse]) .icon-link:hover {
|
|
246
|
+
box-shadow: 4px 4px 0 0 var(--oh-color-text-on-accent);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
:host([inverse]) .icon-link:focus-visible {
|
|
250
|
+
box-shadow: 0 0 0 2px var(--oh-color-text-on-accent);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* Reduced motion */
|
|
254
|
+
@media (prefers-reduced-motion: reduce) {
|
|
255
|
+
.icon-link {
|
|
256
|
+
transition: none;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
`,
|
|
260
|
+
]; }
|
|
261
|
+
render() {
|
|
262
|
+
const iconData = icons[this.name];
|
|
263
|
+
if (!iconData) {
|
|
264
|
+
console.warn(`[oh-icon] Unknown icon name: ${this.name}`);
|
|
265
|
+
return nothing;
|
|
266
|
+
}
|
|
267
|
+
const svg = html `
|
|
268
|
+
<svg
|
|
269
|
+
viewBox=${iconData.viewBox}
|
|
270
|
+
fill="currentColor"
|
|
271
|
+
aria-hidden=${this.href ? "true" : (this.label ? "false" : "true")}
|
|
272
|
+
role=${!this.href && this.label ? "img" : nothing}
|
|
273
|
+
aria-label=${!this.href && this.label ? this.label : nothing}
|
|
274
|
+
>
|
|
275
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d=${iconData.path} />
|
|
276
|
+
</svg>
|
|
277
|
+
`;
|
|
278
|
+
// If href is provided, wrap in a link
|
|
279
|
+
if (this.href) {
|
|
280
|
+
if (!this.label) {
|
|
281
|
+
console.warn(`[oh-icon] When using href, label is required for accessibility`);
|
|
282
|
+
}
|
|
283
|
+
const rel = this.target === "_blank" ? "noopener noreferrer" : undefined;
|
|
284
|
+
return html `
|
|
285
|
+
<a
|
|
286
|
+
class="icon-link"
|
|
287
|
+
href=${this.href}
|
|
288
|
+
target=${this.target || nothing}
|
|
289
|
+
rel=${rel || nothing}
|
|
290
|
+
aria-label=${this.label || nothing}
|
|
291
|
+
>
|
|
292
|
+
${svg}
|
|
293
|
+
</a>
|
|
294
|
+
`;
|
|
295
|
+
}
|
|
296
|
+
return svg;
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
__decorate([
|
|
300
|
+
property({ type: String })
|
|
301
|
+
], OhIcon.prototype, "name", void 0);
|
|
302
|
+
__decorate([
|
|
303
|
+
property({ type: String, reflect: true })
|
|
304
|
+
], OhIcon.prototype, "size", void 0);
|
|
305
|
+
__decorate([
|
|
306
|
+
property({ type: Boolean, reflect: true })
|
|
307
|
+
], OhIcon.prototype, "inverse", void 0);
|
|
308
|
+
__decorate([
|
|
309
|
+
property({ type: String })
|
|
310
|
+
], OhIcon.prototype, "label", void 0);
|
|
311
|
+
__decorate([
|
|
312
|
+
property({ type: String })
|
|
313
|
+
], OhIcon.prototype, "href", void 0);
|
|
314
|
+
__decorate([
|
|
315
|
+
property({ type: String })
|
|
316
|
+
], OhIcon.prototype, "target", void 0);
|
|
317
|
+
OhIcon = __decorate([
|
|
318
|
+
customElement("oh-icon")
|
|
319
|
+
], OhIcon);
|
|
320
|
+
export { OhIcon };
|
|
321
|
+
//# sourceMappingURL=oh-icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oh-icon.js","sourceRoot":"","sources":["../src/oh-icon.ts"],"names":[],"mappings":"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"}
|