@amedia/brick-mcp 1.0.3 → 1.0.4
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/data/components/brick-helloworld.md +112 -143
- package/data/components/brick-icon.md +92 -139
- package/data/components/brick-icons.md +114 -318
- package/data/components/brick-mcp.md +104 -161
- package/data/components/brick-template.md +145 -146
- package/data/components-metadata.json +31 -31
- package/data/tokens.json +232 -227
- package/dist/data/components/brick-helloworld.md +112 -143
- package/dist/data/components/brick-icon.md +92 -139
- package/dist/data/components/brick-icons.md +114 -318
- package/dist/data/components/brick-mcp.md +104 -161
- package/dist/data/components/brick-template.md +145 -146
- package/dist/data/components-metadata.json +31 -31
- package/dist/data/tokens.json +232 -227
- package/dist/http.js +4 -2
- package/dist/http.js.map +3 -3
- package/dist/index.js +4 -2
- package/dist/index.js.map +3 -3
- package/package.json +34 -34
- package/scripts/check-docs-versions.js +10 -3
- package/scripts/generate-data.js +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brick-icons
|
|
3
|
-
version: 2.
|
|
3
|
+
version: 2.2.7
|
|
4
4
|
category: Media
|
|
5
|
-
tags: [icons, svg, sprite, graphics, design-system, figma]
|
|
5
|
+
tags: [icons, svg, sprite, graphics, design-system, figma, brands-external, currentColor]
|
|
6
6
|
use_cases:
|
|
7
7
|
[
|
|
8
8
|
icons,
|
|
@@ -12,26 +12,28 @@ use_cases:
|
|
|
12
12
|
status-indicators,
|
|
13
13
|
brand-icons,
|
|
14
14
|
decorative-graphics,
|
|
15
|
+
external-brand-logos,
|
|
16
|
+
social-media-icons,
|
|
15
17
|
]
|
|
16
|
-
related: [brick-button, brick-card, brick-actions]
|
|
18
|
+
related: [brick-button, brick-icon, brick-card, brick-actions]
|
|
17
19
|
---
|
|
18
20
|
|
|
19
21
|
# Brick Icons
|
|
20
22
|
|
|
21
|
-
SVG icon sprite library providing theme-specific icon sets distributed via CDN for consistent
|
|
23
|
+
SVG icon sprite library providing theme-specific icon sets and external brand logos, distributed via CDN, for consistent and scalable graphics across Amedia's design system.
|
|
22
24
|
|
|
23
25
|
## Key Capabilities
|
|
24
26
|
|
|
25
27
|
- **Theme-Specific Sprites**: Separate SVG sprite files for each theme (alfa, bravo, charlie, nettavisen, alt)
|
|
26
|
-
- **
|
|
28
|
+
- **External Brand Logos**: Individual SVG files for social media and partner brand logos via the `brands-external` collection
|
|
29
|
+
- **CDN Distribution**: Icons and brands served via Eik CDN with version aliasing for automatic updates within major versions
|
|
27
30
|
- **Figma Automation**: Icons automatically synced from Figma using Figmagic
|
|
28
|
-
- **
|
|
29
|
-
- **
|
|
30
|
-
- **Comprehensive Icon Set**: Includes navigation, action, status, social, and brand icons
|
|
31
|
+
- **Color Inheritance**: Most icons use `currentColor` for fill/stroke, allowing easy color customization via CSS
|
|
32
|
+
- **Comprehensive Icon Set**: Includes navigation, action, status, media, social, tag/pill, and brand icons across all themes
|
|
31
33
|
|
|
32
34
|
## Available Themes
|
|
33
35
|
|
|
34
|
-
| Theme | CDN Path
|
|
36
|
+
| Theme | CDN Sprite Path |
|
|
35
37
|
| ---------- | ------------------------------------------------------------------------------ |
|
|
36
38
|
| alfa | `https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg` |
|
|
37
39
|
| bravo | `https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/bravo/icons.svg` |
|
|
@@ -41,34 +43,40 @@ SVG icon sprite library providing theme-specific icon sets distributed via CDN f
|
|
|
41
43
|
|
|
42
44
|
## Icon Categories
|
|
43
45
|
|
|
44
|
-
**Navigation**: arrow-down, arrow-up, arrow-left, arrow-right, arrow-dropdown, arrow-dropup, chevron-down, chevron-up, close, menu
|
|
46
|
+
**Navigation**: arrow-down, arrow-up, arrow-left, arrow-right, arrow-dropdown, arrow-dropup, chevron-down, chevron-up, chevron-right, chevron-right-small, close, menu, menu-vertical, left, portal-arrow-right, log-out
|
|
45
47
|
|
|
46
|
-
**Actions**: add, delete, copy, share, share-url, edit, settings-fill, settings-outline, camera, gift
|
|
48
|
+
**Actions**: add, delete, copy, share, share-url, edit, settings-fill, settings-outline, camera, gift, download, exchange, search, plus, more-horizontal
|
|
47
49
|
|
|
48
|
-
**Status**: checkmark, checkmark-toggle, check-circle, error-circle, warning-circle, info-circle, lock, notification-off
|
|
50
|
+
**Status**: checkmark, checkmark-toggle, check-circle, error-circle, warning-circle, info-circle, lock, notification-off, notification-on, dotted-circle
|
|
49
51
|
|
|
50
|
-
**Media**: play, pause, replay, volume-on, volume-off, desktop, mobile
|
|
52
|
+
**Media**: play, pause, replay, volume-on, volume-off, desktop, mobile, image, pill-video, pill-podcast, pill-gallery
|
|
51
53
|
|
|
52
|
-
**
|
|
54
|
+
**Finance / Account**: bolt, calendar, credit-card, envelope-send, history, hourglass, invoice, sending-success, stop-sending, subscription, trophy, user-exclamation, user-square, users, customer-service
|
|
53
55
|
|
|
54
|
-
**Tags/Labels**: pill-tag, pill-
|
|
56
|
+
**Tags / Labels**: pill-tag, pill-breaking, pill-untold, pill-alt, pill-countdown, plusall, plusall-original, tag-fill, tag-outline, tag
|
|
55
57
|
|
|
56
|
-
**
|
|
58
|
+
**Information**: book-open, comment-question, eye, fire, graph-bar, map, newspaper, pie-chart, shield, star, location-pin, mail, clock, datepicker
|
|
57
59
|
|
|
58
|
-
|
|
60
|
+
**Other**: dice-1 through dice-6, logo-alt, aID, premiumiconlarge, email, message, my-greetings
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
**External Brands** (individual SVG files, not in sprite): bluesky, facebook, facebookmessenger, instagram, linkedin, norsktipping, rikstoto, signal, snapchat, telegram, tiktok, whatsapp, x, youtube
|
|
63
|
+
|
|
64
|
+
## Usage
|
|
65
|
+
|
|
66
|
+
### SVG Sprite Icons (CDN)
|
|
67
|
+
|
|
68
|
+
Reference icons from the theme-specific sprite sheet using an SVG `<use>` element:
|
|
61
69
|
|
|
62
70
|
```html
|
|
63
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24">
|
|
64
|
-
<use
|
|
65
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#checkmark"
|
|
66
|
-
></use>
|
|
71
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" aria-hidden="true">
|
|
72
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#checkmark"></use>
|
|
67
73
|
</svg>
|
|
68
74
|
```
|
|
69
75
|
|
|
70
76
|
### Accessible Icon with Title
|
|
71
77
|
|
|
78
|
+
When an icon conveys meaning (informative icon), provide a `<title>` and `aria-labelledby`:
|
|
79
|
+
|
|
72
80
|
```html
|
|
73
81
|
<svg
|
|
74
82
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -77,14 +85,14 @@ SVG icon sprite library providing theme-specific icon sets distributed via CDN f
|
|
|
77
85
|
aria-labelledby="search-title"
|
|
78
86
|
>
|
|
79
87
|
<title id="search-title">Search</title>
|
|
80
|
-
<use
|
|
81
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#search"
|
|
82
|
-
></use>
|
|
88
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#search"></use>
|
|
83
89
|
</svg>
|
|
84
90
|
```
|
|
85
91
|
|
|
86
92
|
### Decorative Icon (Hidden from Screen Readers)
|
|
87
93
|
|
|
94
|
+
When an icon is purely decorative and paired with visible text, hide it from assistive technology:
|
|
95
|
+
|
|
88
96
|
```html
|
|
89
97
|
<svg
|
|
90
98
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -92,24 +100,22 @@ SVG icon sprite library providing theme-specific icon sets distributed via CDN f
|
|
|
92
100
|
height="24"
|
|
93
101
|
aria-hidden="true"
|
|
94
102
|
>
|
|
95
|
-
<use
|
|
96
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/nettavisen/icons.svg#arrow-right"
|
|
97
|
-
></use>
|
|
103
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/nettavisen/icons.svg#arrow-right"></use>
|
|
98
104
|
</svg>
|
|
99
105
|
```
|
|
100
106
|
|
|
101
107
|
### Icon with Custom Color and Size
|
|
102
108
|
|
|
109
|
+
Icons using `currentColor` inherit the CSS `color` property:
|
|
110
|
+
|
|
103
111
|
```html
|
|
104
112
|
<svg
|
|
105
113
|
xmlns="http://www.w3.org/2000/svg"
|
|
106
114
|
width="32"
|
|
107
115
|
height="32"
|
|
108
|
-
style="color: #
|
|
116
|
+
style="color: #00aa00;"
|
|
109
117
|
>
|
|
110
|
-
<use
|
|
111
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/charlie/icons.svg#heart"
|
|
112
|
-
></use>
|
|
118
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/charlie/icons.svg#check-circle"></use>
|
|
113
119
|
</svg>
|
|
114
120
|
```
|
|
115
121
|
|
|
@@ -123,95 +129,45 @@ SVG icon sprite library providing theme-specific icon sets distributed via CDN f
|
|
|
123
129
|
height="20"
|
|
124
130
|
aria-hidden="true"
|
|
125
131
|
>
|
|
126
|
-
<use
|
|
127
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#add"
|
|
128
|
-
></use>
|
|
132
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#add"></use>
|
|
129
133
|
</svg>
|
|
130
134
|
Add Item
|
|
131
135
|
</brick-button-v9>
|
|
132
136
|
```
|
|
133
137
|
|
|
134
|
-
###
|
|
138
|
+
### External Brand Logo Usage
|
|
139
|
+
|
|
140
|
+
External brand logos are served as individual SVG files (not inside a sprite sheet). Use the full semver version in the URL path:
|
|
135
141
|
|
|
136
142
|
```html
|
|
137
143
|
<a href="https://facebook.com/example" aria-label="Follow us on Facebook">
|
|
138
144
|
<svg
|
|
139
|
-
|
|
145
|
+
aria-hidden="true"
|
|
140
146
|
width="24"
|
|
141
147
|
height="24"
|
|
142
|
-
|
|
148
|
+
viewBox="0 0 24 24"
|
|
149
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
143
150
|
>
|
|
144
|
-
<use
|
|
145
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alt/icons.svg#facebook"
|
|
146
|
-
></use>
|
|
151
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/2.2.7/brands-external/facebook.svg"></use>
|
|
147
152
|
</svg>
|
|
148
153
|
</a>
|
|
149
154
|
```
|
|
150
155
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
### Svelte
|
|
154
|
-
|
|
155
|
-
```svelte
|
|
156
|
-
<script>
|
|
157
|
-
const theme = 'alfa';
|
|
158
|
-
const iconName = 'checkmark';
|
|
159
|
-
const iconUrl = `https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/${theme}/icons.svg#${iconName}`;
|
|
160
|
-
</script>
|
|
161
|
-
|
|
162
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24">
|
|
163
|
-
<use href={iconUrl}></use>
|
|
164
|
-
</svg>
|
|
165
|
-
```
|
|
156
|
+
### Social Media Links with External Brands
|
|
166
157
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
return (
|
|
174
|
-
<svg
|
|
175
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
176
|
-
width={size}
|
|
177
|
-
height={size}
|
|
178
|
-
aria-labelledby={title ? `icon-${name}` : undefined}
|
|
179
|
-
>
|
|
180
|
-
{title && <title id={`icon-${name}`}>{title}</title>}
|
|
181
|
-
<use href={iconUrl}></use>
|
|
158
|
+
```html
|
|
159
|
+
<nav aria-label="Social media" style="display: flex; gap: 16px;">
|
|
160
|
+
<a href="https://instagram.com/example" aria-label="Instagram">
|
|
161
|
+
<svg aria-hidden="true" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
162
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/2.2.7/brands-external/instagram.svg"></use>
|
|
182
163
|
</svg>
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
### Vue
|
|
191
|
-
|
|
192
|
-
```vue
|
|
193
|
-
<template>
|
|
194
|
-
<svg xmlns="http://www.w3.org/2000/svg" :width="size" :height="size">
|
|
195
|
-
<title v-if="title">{{ title }}</title>
|
|
196
|
-
<use :href="iconUrl"></use>
|
|
197
|
-
</svg>
|
|
198
|
-
</template>
|
|
199
|
-
|
|
200
|
-
<script>
|
|
201
|
-
export default {
|
|
202
|
-
props: {
|
|
203
|
-
theme: { type: String, required: true },
|
|
204
|
-
name: { type: String, required: true },
|
|
205
|
-
size: { type: Number, default: 24 },
|
|
206
|
-
title: String,
|
|
207
|
-
},
|
|
208
|
-
computed: {
|
|
209
|
-
iconUrl() {
|
|
210
|
-
return `https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/${this.theme}/icons.svg#${this.name}`;
|
|
211
|
-
},
|
|
212
|
-
},
|
|
213
|
-
};
|
|
214
|
-
</script>
|
|
164
|
+
</a>
|
|
165
|
+
<a href="https://linkedin.com/example" aria-label="LinkedIn">
|
|
166
|
+
<svg aria-hidden="true" width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
167
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/2.2.7/brands-external/linkedin.svg"></use>
|
|
168
|
+
</svg>
|
|
169
|
+
</a>
|
|
170
|
+
</nav>
|
|
215
171
|
```
|
|
216
172
|
|
|
217
173
|
## Programmatic Usage
|
|
@@ -227,7 +183,6 @@ console.log(alfa); // './sprites/alfa/icons.svg'
|
|
|
227
183
|
### Dynamic Icon Loading
|
|
228
184
|
|
|
229
185
|
```javascript
|
|
230
|
-
// Helper function to create icon element
|
|
231
186
|
function createIcon(theme, iconName, options = {}) {
|
|
232
187
|
const { width = 24, height = 24, title, color } = options;
|
|
233
188
|
|
|
@@ -241,10 +196,7 @@ function createIcon(theme, iconName, options = {}) {
|
|
|
241
196
|
}
|
|
242
197
|
|
|
243
198
|
if (title) {
|
|
244
|
-
const titleElement = document.createElementNS(
|
|
245
|
-
'http://www.w3.org/2000/svg',
|
|
246
|
-
'title'
|
|
247
|
-
);
|
|
199
|
+
const titleElement = document.createElementNS('http://www.w3.org/2000/svg', 'title');
|
|
248
200
|
titleElement.textContent = title;
|
|
249
201
|
svg.appendChild(titleElement);
|
|
250
202
|
} else {
|
|
@@ -291,251 +243,101 @@ document.body.appendChild(icon);
|
|
|
291
243
|
### Best Practices
|
|
292
244
|
|
|
293
245
|
```html
|
|
294
|
-
<!--
|
|
246
|
+
<!-- Informative icon with proper accessibility -->
|
|
295
247
|
<button>
|
|
296
|
-
<svg
|
|
297
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
298
|
-
width="20"
|
|
299
|
-
height="20"
|
|
300
|
-
aria-labelledby="close-title"
|
|
301
|
-
>
|
|
248
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" aria-labelledby="close-title">
|
|
302
249
|
<title id="close-title">Close dialog</title>
|
|
303
|
-
<use href="icons/alfa/icons.svg#close"></use>
|
|
250
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#close"></use>
|
|
304
251
|
</svg>
|
|
305
252
|
</button>
|
|
306
253
|
|
|
307
|
-
<!--
|
|
254
|
+
<!-- Decorative icon paired with text -->
|
|
308
255
|
<button>
|
|
309
|
-
<svg
|
|
310
|
-
|
|
311
|
-
width="20"
|
|
312
|
-
height="20"
|
|
313
|
-
aria-hidden="true"
|
|
314
|
-
>
|
|
315
|
-
<use href="icons/alfa/icons.svg#add"></use>
|
|
256
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" aria-hidden="true">
|
|
257
|
+
<use href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#add"></use>
|
|
316
258
|
</svg>
|
|
317
259
|
Add Item
|
|
318
260
|
</button>
|
|
319
|
-
|
|
320
|
-
<!-- ❌ BAD: Informative icon without accessibility support -->
|
|
321
|
-
<button>
|
|
322
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
|
|
323
|
-
<use href="icons/alfa/icons.svg#delete"></use>
|
|
324
|
-
</svg>
|
|
325
|
-
</button>
|
|
326
|
-
|
|
327
|
-
<!-- ❌ BAD: Standalone decorative icon -->
|
|
328
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
|
|
329
|
-
<use href="icons/alfa/icons.svg#arrow-right"></use>
|
|
330
|
-
</svg>
|
|
331
261
|
```
|
|
332
262
|
|
|
333
263
|
### Keyboard Navigation
|
|
334
264
|
|
|
335
|
-
Icons themselves are not interactive. Always wrap icons in interactive elements
|
|
265
|
+
Icons themselves are not interactive. Always wrap icons in interactive elements:
|
|
336
266
|
|
|
337
267
|
- `<button>` for actions
|
|
338
268
|
- `<a>` for navigation
|
|
339
269
|
- Ensure interactive elements are keyboard accessible with proper focus styles
|
|
270
|
+
- Icon-only interactive elements MUST have `aria-label` for an accessible name
|
|
340
271
|
|
|
341
|
-
|
|
272
|
+
### Touch Target Size
|
|
342
273
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
```html
|
|
346
|
-
<brick-button-v9 data-variant="ghost" data-shape="circle">
|
|
347
|
-
<svg
|
|
348
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
349
|
-
width="24"
|
|
350
|
-
height="24"
|
|
351
|
-
aria-labelledby="settings-title"
|
|
352
|
-
>
|
|
353
|
-
<title id="settings-title">Open settings</title>
|
|
354
|
-
<use
|
|
355
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#settings-fill"
|
|
356
|
-
></use>
|
|
357
|
-
</svg>
|
|
358
|
-
</brick-button-v9>
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
### Status Indicator with Icon
|
|
362
|
-
|
|
363
|
-
```html
|
|
364
|
-
<div
|
|
365
|
-
class="status-success"
|
|
366
|
-
style="display: flex; align-items: center; gap: 8px; color: #00aa00;"
|
|
367
|
-
>
|
|
368
|
-
<svg
|
|
369
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
370
|
-
width="20"
|
|
371
|
-
height="20"
|
|
372
|
-
aria-hidden="true"
|
|
373
|
-
>
|
|
374
|
-
<use
|
|
375
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#check-circle"
|
|
376
|
-
></use>
|
|
377
|
-
</svg>
|
|
378
|
-
<span>Operation completed successfully</span>
|
|
379
|
-
</div>
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
### Navigation Menu Item
|
|
383
|
-
|
|
384
|
-
```html
|
|
385
|
-
<a href="/profile" style="display: flex; align-items: center; gap: 12px;">
|
|
386
|
-
<svg
|
|
387
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
388
|
-
width="24"
|
|
389
|
-
height="24"
|
|
390
|
-
aria-hidden="true"
|
|
391
|
-
>
|
|
392
|
-
<use
|
|
393
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/nettavisen/icons.svg#user"
|
|
394
|
-
></use>
|
|
395
|
-
</svg>
|
|
396
|
-
<span>My Profile</span>
|
|
397
|
-
</a>
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
### Media Controls
|
|
401
|
-
|
|
402
|
-
```html
|
|
403
|
-
<div class="media-controls" style="display: flex; gap: 16px;">
|
|
404
|
-
<button aria-label="Play video">
|
|
405
|
-
<svg
|
|
406
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
407
|
-
width="32"
|
|
408
|
-
height="32"
|
|
409
|
-
aria-hidden="true"
|
|
410
|
-
>
|
|
411
|
-
<use
|
|
412
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alt/icons.svg#play"
|
|
413
|
-
></use>
|
|
414
|
-
</svg>
|
|
415
|
-
</button>
|
|
416
|
-
<button aria-label="Mute audio">
|
|
417
|
-
<svg
|
|
418
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
419
|
-
width="32"
|
|
420
|
-
height="32"
|
|
421
|
-
aria-hidden="true"
|
|
422
|
-
>
|
|
423
|
-
<use
|
|
424
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alt/icons.svg#volume-on"
|
|
425
|
-
></use>
|
|
426
|
-
</svg>
|
|
427
|
-
</button>
|
|
428
|
-
</div>
|
|
429
|
-
```
|
|
430
|
-
|
|
431
|
-
### Social Media Links
|
|
432
|
-
|
|
433
|
-
```html
|
|
434
|
-
<nav aria-label="Social media" style="display: flex; gap: 16px;">
|
|
435
|
-
<a href="https://facebook.com/example" aria-label="Facebook">
|
|
436
|
-
<svg
|
|
437
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
438
|
-
width="24"
|
|
439
|
-
height="24"
|
|
440
|
-
aria-hidden="true"
|
|
441
|
-
>
|
|
442
|
-
<use
|
|
443
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/charlie/icons.svg#facebook"
|
|
444
|
-
></use>
|
|
445
|
-
</svg>
|
|
446
|
-
</a>
|
|
447
|
-
<a href="https://twitter.com/example" aria-label="Twitter">
|
|
448
|
-
<svg
|
|
449
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
450
|
-
width="24"
|
|
451
|
-
height="24"
|
|
452
|
-
aria-hidden="true"
|
|
453
|
-
>
|
|
454
|
-
<use
|
|
455
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/charlie/icons.svg#twitter"
|
|
456
|
-
></use>
|
|
457
|
-
</svg>
|
|
458
|
-
</a>
|
|
459
|
-
<a href="https://instagram.com/example" aria-label="Instagram">
|
|
460
|
-
<svg
|
|
461
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
462
|
-
width="24"
|
|
463
|
-
height="24"
|
|
464
|
-
aria-hidden="true"
|
|
465
|
-
>
|
|
466
|
-
<use
|
|
467
|
-
href="https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/charlie/icons.svg#instagram"
|
|
468
|
-
></use>
|
|
469
|
-
</svg>
|
|
470
|
-
</a>
|
|
471
|
-
</nav>
|
|
472
|
-
```
|
|
274
|
+
Interactive elements containing icons must meet minimum 24x24 pixel touch target (WCAG 2.5.5). Recommended minimum is 40px (2.5rem).
|
|
473
275
|
|
|
474
276
|
## Technical Details
|
|
475
277
|
|
|
476
|
-
- **Package
|
|
477
|
-
- **
|
|
278
|
+
- **Package version**: `2.2.7`
|
|
279
|
+
- **Package name**: `@amedia/brick-icons`
|
|
280
|
+
- **Distribution**: CDN via Eik (`https://assets.acdn.no`)
|
|
478
281
|
- **Source**: Figma (synced via Figmagic)
|
|
479
|
-
- **Format**: SVG sprite sheets
|
|
282
|
+
- **Format**: SVG sprite sheets (theme icons) + individual SVG files (external brands)
|
|
480
283
|
- **Themes**: alfa, bravo, charlie, nettavisen, alt
|
|
481
|
-
- **Build
|
|
482
|
-
- **Dependencies**:
|
|
284
|
+
- **Build tools**: Figmagic, svg-sprite, svgson
|
|
285
|
+
- **Dependencies**: figmagic, svg-sprite, svgson, dotenv (build-time only; no runtime dependencies)
|
|
483
286
|
|
|
484
287
|
### CDN URL Structure
|
|
485
288
|
|
|
289
|
+
**Theme sprite icons** (use major version alias):
|
|
290
|
+
|
|
486
291
|
```
|
|
487
292
|
https://assets.acdn.no/pkg/@amedia/brick-icons/v{major}/icons/{theme}/icons.svg#{icon-name}
|
|
488
293
|
```
|
|
489
294
|
|
|
490
|
-
|
|
295
|
+
**External brand logos** (use full semver or major version):
|
|
491
296
|
|
|
492
297
|
```
|
|
493
|
-
https://assets.acdn.no/pkg/@amedia/brick-icons/
|
|
298
|
+
https://assets.acdn.no/pkg/@amedia/brick-icons/{version}/brands-external/{brand-name}.svg
|
|
494
299
|
```
|
|
495
300
|
|
|
496
301
|
### Version Aliasing
|
|
497
302
|
|
|
498
303
|
The package uses Eik version aliasing:
|
|
499
304
|
|
|
500
|
-
- `
|
|
501
|
-
- `v2`
|
|
502
|
-
|
|
503
|
-
This allows automatic updates within major versions without changing URLs.
|
|
305
|
+
- `v2` points to the latest 2.x.x version (current major)
|
|
306
|
+
- Use `v2` in sprite URLs for automatic patch/minor updates without URL changes
|
|
307
|
+
- For brands-external, either the full version or `v2` alias can be used
|
|
504
308
|
|
|
505
309
|
## Important Notes
|
|
506
310
|
|
|
507
|
-
###
|
|
311
|
+
### No Template Submodule
|
|
508
312
|
|
|
509
|
-
|
|
313
|
+
This package does NOT have a `/template` submodule for SSR. It provides static SVG assets served from a CDN. There is no render function to import.
|
|
510
314
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
315
|
+
### Icon Availability Varies by Theme
|
|
316
|
+
|
|
317
|
+
Not all icons are available in all themes. The alt theme has a distinctly different icon set from alfa/bravo/charlie. Check the sprite sheets or Figma source files to confirm icon availability for your theme.
|
|
318
|
+
|
|
319
|
+
### External Brands Are Separate from Sprites
|
|
320
|
+
|
|
321
|
+
External brand logos (in `brands-external/`) are individual SVG files, NOT part of the sprite sheets. They use a different URL path and may require a `viewBox` attribute on the `<svg>` element.
|
|
516
322
|
|
|
517
323
|
### Color Customization
|
|
518
324
|
|
|
519
|
-
Most icons use `currentColor` for fill/stroke,
|
|
325
|
+
Most icons use `currentColor` for fill/stroke, so setting `color` in CSS changes the icon color. Some multi-colored brand icons and certain theme-specific icons (especially in the alt theme) may have fixed colors that do not respond to `currentColor`.
|
|
520
326
|
|
|
521
|
-
|
|
522
|
-
<svg
|
|
523
|
-
style="color: #ff0000;"
|
|
524
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
525
|
-
width="24"
|
|
526
|
-
height="24"
|
|
527
|
-
>
|
|
528
|
-
<use href="icons/alfa/icons.svg#heart"></use>
|
|
529
|
-
</svg>
|
|
530
|
-
```
|
|
327
|
+
### Updating Icons
|
|
531
328
|
|
|
532
|
-
|
|
329
|
+
Icons are synced from Figma. To update:
|
|
330
|
+
|
|
331
|
+
1. Set up a Figma API access token in `.env` (in `packages/brick-icons/`)
|
|
332
|
+
2. Run: `npm run build:icons` (which runs build:svg, build:altered-svg, build:sprite, and build:brands-external)
|
|
333
|
+
3. Create changeset: `npx changeset`
|
|
334
|
+
4. Commit and push
|
|
335
|
+
5. After merge, flush Varnish cache if needed
|
|
533
336
|
|
|
534
337
|
### Performance
|
|
535
338
|
|
|
536
|
-
-
|
|
537
|
-
-
|
|
538
|
-
- Use version aliases (v2) for automatic updates within major versions
|
|
339
|
+
- Sprite sheets bundle all icons per theme into a single HTTP request
|
|
340
|
+
- Use version aliases (`v2`) for automatic updates within major versions
|
|
539
341
|
- Consider preloading sprite sheets for critical icons:
|
|
540
342
|
|
|
541
343
|
```html
|
|
@@ -547,24 +349,18 @@ Some multi-colored brand icons (like social media logos) may have fixed colors.
|
|
|
547
349
|
/>
|
|
548
350
|
```
|
|
549
351
|
|
|
550
|
-
###
|
|
551
|
-
|
|
552
|
-
SVG sprites with `<use>` elements are supported in all modern browsers. For legacy browser support, consider using polyfills like svg4everybody.
|
|
553
|
-
|
|
554
|
-
### Icon Availability
|
|
555
|
-
|
|
556
|
-
Not all icons are available in all themes. Check the Figma source files or sprite sheets to confirm icon availability for your theme. The build process syncs exactly what's in Figma for each theme.
|
|
557
|
-
|
|
558
|
-
### Non-Interactive Elements
|
|
559
|
-
|
|
560
|
-
Icons are purely presentational elements and should NOT be interactive on their own. Always wrap icons in interactive elements like `<button>` or `<a>` tags when user interaction is needed.
|
|
561
|
-
|
|
562
|
-
## Version
|
|
352
|
+
### Icons Are Non-Interactive
|
|
563
353
|
|
|
564
|
-
|
|
354
|
+
Icons are purely presentational elements and MUST NOT be interactive on their own. Always wrap icons in semantic interactive elements (`<button>`, `<a>`) when user interaction is needed.
|
|
565
355
|
|
|
566
|
-
|
|
356
|
+
## Version History (since 2.1.0)
|
|
567
357
|
|
|
358
|
+
- **2.2.7**: Added icons for "min side 2.0": bolt, calendar, download, envelope-send, exchange, history, hourglass, invoice, sending-success, stop-sending, trophy, user-exclamation
|
|
359
|
+
- **2.2.6**: Dependency update (esbuild); target changed from safari14 to safari15
|
|
360
|
+
- **2.2.5**: Synced icons with Figma for abo/minside
|
|
361
|
+
- **2.2.4**: Updated icons from Figma Graphics
|
|
362
|
+
- **2.2.3**: Synced icons for abo team (Jan 2026)
|
|
363
|
+
- **2.2.2**: Refined package.json file inclusions; removed redundant default export
|
|
364
|
+
- **2.2.1**: Added new brick icons
|
|
365
|
+
- **2.2.0**: Added `brands-external` collection with SVGs from Figma file "brands-external"
|
|
568
366
|
- **2.1.0**: New icons: gift, camera, settings-outline
|
|
569
|
-
- **2.0.4**: Synced icons
|
|
570
|
-
- **2.0.0**: Removed CommonJS support (ESM only)
|