@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.
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: brick-icons
3
- version: 2.1.0
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, scalable graphics across Amedia's design system.
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
- - **CDN Distribution**: Icons served via Eik CDN for optimal performance and caching
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
- - **Scalable Graphics**: SVG format ensures crisp rendering at any size without quality loss
29
- - **Color Inheritance**: Icons use `currentColor` for easy color customization via CSS
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
- **Social/Brand**: facebook, instagram, linkedin, twitter, youtube, appstore, googleplay
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-video, pill-breaking, pill-untold, plusall, tag-fill, tag-outline
56
+ **Tags / Labels**: pill-tag, pill-breaking, pill-untold, pill-alt, pill-countdown, plusall, plusall-original, tag-fill, tag-outline, tag
55
57
 
56
- **Other**: clock, datepicker, dice-1 through dice-6, logo-alt
58
+ **Information**: book-open, comment-question, eye, fire, graph-bar, map, newspaper, pie-chart, shield, star, location-pin, mail, clock, datepicker
57
59
 
58
- ## Examples
60
+ **Other**: dice-1 through dice-6, logo-alt, aID, premiumiconlarge, email, message, my-greetings
59
61
 
60
- ### Basic Icon Usage
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: #ff0000;"
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
- ### Social Media Icon Link
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
- xmlns="http://www.w3.org/2000/svg"
145
+ aria-hidden="true"
140
146
  width="24"
141
147
  height="24"
142
- aria-hidden="true"
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
- ## Framework Integration
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
- ### React
168
-
169
- ```jsx
170
- function Icon({ theme, name, size = 24, title }) {
171
- const iconUrl = `https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/${theme}/icons.svg#${name}`;
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
- // Usage
187
- <Icon theme="alfa" name="checkmark" title="Success" />;
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
- <!-- ✅ GOOD: Informative icon with proper accessibility -->
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
- <!-- ✅ GOOD: Decorative icon paired with text -->
254
+ <!-- Decorative icon paired with text -->
308
255
  <button>
309
- <svg
310
- xmlns="http://www.w3.org/2000/svg"
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 like:
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
- ## Common Patterns
272
+ ### Touch Target Size
342
273
 
343
- ### Icon Button
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 Name**: @amedia/brick-icons
477
- - **Distribution**: CDN via Eik (https://assets.acdn.no)
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 Tools**: Figmagic, svg-sprite, svgson
482
- - **Dependencies**: None (icons are static assets)
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
- Example:
295
+ **External brand logos** (use full semver or major version):
491
296
 
492
297
  ```
493
- https://assets.acdn.no/pkg/@amedia/brick-icons/v2/icons/alfa/icons.svg#checkmark
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
- - `v1` Latest 1.x.x version
501
- - `v2` Latest 2.x.x version (current)
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
- ### Icon Updates
311
+ ### No Template Submodule
508
312
 
509
- Icons are automatically synced from Figma. To update icons:
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
- 1. Ensure you have Figma API access token
512
- 2. Run: `npm run build:svg && npm run build:altered-svg && npm run build:sprite`
513
- 3. Create changeset: `npx changeset`
514
- 4. Commit and push changes
515
- 5. After merge, flush Varnish cache if needed
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, allowing easy color changes via CSS:
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
- ```html
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
- Some multi-colored brand icons (like social media logos) may have fixed colors.
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
- - Icons are served from CDN with aggressive caching
537
- - Sprite sheets bundle all icons per theme in single HTTP request
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
- ### Browser Compatibility
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
- Current version: 2.1.0
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
- Recent updates:
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)