@lifecorner/angular-ui-kit 3.7.0 → 3.8.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 (41) hide show
  1. package/README.md +1 -0
  2. package/fesm2022/lifecorner-angular-ui-kit-character-svg.mjs +91 -0
  3. package/fesm2022/lifecorner-angular-ui-kit-character-svg.mjs.map +1 -0
  4. package/fesm2022/lifecorner-angular-ui-kit-character.mjs +138 -0
  5. package/fesm2022/lifecorner-angular-ui-kit-character.mjs.map +1 -0
  6. package/fesm2022/lifecorner-angular-ui-kit.mjs +2 -0
  7. package/package.json +12 -1
  8. package/src/assets/README.md +4 -0
  9. package/src/assets/character/all-done-dark.svg +1 -0
  10. package/src/assets/character/all-done-light.svg +1 -0
  11. package/src/assets/character/calm-dark.svg +1 -0
  12. package/src/assets/character/calm-light.svg +1 -0
  13. package/src/assets/character/comforts-dark.svg +1 -0
  14. package/src/assets/character/comforts-light.svg +1 -0
  15. package/src/assets/character/connection-paused-dark.svg +1 -0
  16. package/src/assets/character/connection-paused-light.svg +1 -0
  17. package/src/assets/character/connects-dark.svg +1 -0
  18. package/src/assets/character/connects-light.svg +1 -0
  19. package/src/assets/character/discovered-dark.svg +1 -0
  20. package/src/assets/character/discovered-light.svg +1 -0
  21. package/src/assets/character/happy-dark.svg +1 -0
  22. package/src/assets/character/happy-light.svg +1 -0
  23. package/src/assets/character/hello-dark.svg +1 -0
  24. package/src/assets/character/hello-light.svg +1 -0
  25. package/src/assets/character/in-his-corner-dark.svg +1 -0
  26. package/src/assets/character/in-his-corner-light.svg +1 -0
  27. package/src/assets/character/resting-dark.svg +1 -0
  28. package/src/assets/character/resting-light.svg +1 -0
  29. package/src/assets/character/see-you-dark.svg +1 -0
  30. package/src/assets/character/see-you-light.svg +1 -0
  31. package/src/assets/character/shows-the-way-dark.svg +1 -0
  32. package/src/assets/character/shows-the-way-light.svg +1 -0
  33. package/src/assets/character/thinking-dark.svg +1 -0
  34. package/src/assets/character/thinking-light.svg +1 -0
  35. package/src/assets/character/welcomes-member-dark.svg +1 -0
  36. package/src/assets/character/welcomes-member-light.svg +1 -0
  37. package/src/styles/_horizon.scss +52 -0
  38. package/src/styles/horizon.figure.spec.ts +79 -0
  39. package/types/lifecorner-angular-ui-kit-character-svg.d.ts +44 -0
  40. package/types/lifecorner-angular-ui-kit-character.d.ts +104 -0
  41. package/types/lifecorner-angular-ui-kit.d.ts +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifecorner/angular-ui-kit",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "LifeCorner Design System – Angular UI component library",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -48,6 +48,9 @@
48
48
  "./icon-names.json": {
49
49
  "default": "./src/assets/icon-names.json"
50
50
  },
51
+ "./assets/character/*": {
52
+ "default": "./src/assets/character/*"
53
+ },
51
54
  "./package.json": {
52
55
  "default": "./package.json"
53
56
  },
@@ -107,6 +110,14 @@
107
110
  "types": "./types/lifecorner-angular-ui-kit-card.d.ts",
108
111
  "default": "./fesm2022/lifecorner-angular-ui-kit-card.mjs"
109
112
  },
113
+ "./character": {
114
+ "types": "./types/lifecorner-angular-ui-kit-character.d.ts",
115
+ "default": "./fesm2022/lifecorner-angular-ui-kit-character.mjs"
116
+ },
117
+ "./character-svg": {
118
+ "types": "./types/lifecorner-angular-ui-kit-character-svg.d.ts",
119
+ "default": "./fesm2022/lifecorner-angular-ui-kit-character-svg.mjs"
120
+ },
110
121
  "./chat": {
111
122
  "types": "./types/lifecorner-angular-ui-kit-chat.d.ts",
112
123
  "default": "./fesm2022/lifecorner-angular-ui-kit-chat.mjs"
@@ -31,3 +31,7 @@ The words "Life" and "Corner" are **outlined to paths**, so the lockup looks the
31
31
  | Layout | x 118, baseline 74, size 72, letter-spacing −1.4, kerning on, no ligatures (as a browser sets it) |
32
32
 
33
33
  The font file itself is not shipped. Outlined glyphs in a logo are artwork made with the font, which the OFL allows.
34
+
35
+ ## Character (`character/`, 3.8)
36
+
37
+ Edu's 14 poses, `<pose>-light.svg` and `<pose>-dark.svg` (100 × 100, about 1.5 KB each), for `lc-character` (`@lifecorner/angular-ui-kit/character`, loaded from `LC_CHARACTER_BASE_PATH`, default `LC_LOGO_BASE_PATH` + `/character`), `<img>` or `<picture>`. They resolve as `@lifecorner/angular-ui-kit/assets/character/<file>`; the same drawings are strings in `@lifecorner/angular-ui-kit/character-svg`. Source: the approved drawings in life-os `docs/brand/character/`, copied unchanged; the dark files of welcomes-member, resting, in-his-corner, comforts, all-done, connects, discovered, thinking, connection-paused and see-you are made by its dark rule (`scripts/generate-character-assets.mjs`).
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C73 57 78 64 83 68"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><path d="M37.5 38.5 Q42 35 46.5 38.5" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58.6" cy="38.4" r="2.3" fill="#0c1722"></circle><path d="M44 45 Q50 52 56 45" fill="none" stroke="#0c1722" stroke-width="2.2" stroke-linecap="round"></path><g fill="#84c7d4" stroke="#84c7d4" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="85" cy="70" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C73 57 78 64 83 68"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><path d="M37.5 38.5 Q42 35 46.5 38.5" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58.6" cy="38.4" r="2.3" fill="#0c1722"></circle><path d="M44 45 Q50 52 56 45" fill="none" stroke="#0c1722" stroke-width="2.2" stroke-linecap="round"></path><g fill="#84c7d4" stroke="#1a6a79" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="85" cy="70" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C73 57 78 64 83 68"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="42" cy="39.8" r="2.3" fill="#0c1722"></circle><circle cx="58" cy="39.8" r="2.3" fill="#0c1722"></circle><path d="M45 45.5 Q50 49 55 45.5" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="85" cy="70" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C73 57 78 64 83 68"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="42" cy="39.8" r="2.3" fill="#0c1722"></circle><circle cx="58" cy="39.8" r="2.3" fill="#0c1722"></circle><path d="M45 45.5 Q50 49 55 45.5" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="85" cy="70" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C75 54 83 55 89 52"></path></g><g transform="rotate(-8 50 45)"><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="42" cy="39.8" r="2.3" fill="#0c1722"></circle><circle cx="58" cy="39.8" r="2.3" fill="#0c1722"></circle><g fill="none" stroke="#0c1722" stroke-width="1.8" stroke-linecap="round"><path d="M38 31 L45.5 32.5"></path><path d="M54.5 32.5 L62 31"></path><path d="M46 47.5 Q50 46.3 54 47.5"></path></g></g><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="91" cy="51" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C75 54 83 55 89 52"></path></g><g transform="rotate(-8 50 45)"><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="42" cy="39.8" r="2.3" fill="#0c1722"></circle><circle cx="58" cy="39.8" r="2.3" fill="#0c1722"></circle><g fill="none" stroke="#0c1722" stroke-width="1.8" stroke-linecap="round"><path d="M38 31 L45.5 32.5"></path><path d="M54.5 32.5 L62 31"></path><path d="M46 47.5 Q50 46.3 54 47.5"></path></g></g><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="91" cy="51" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M76.8 54.9 A10 10 0 0 1 86.7 72.2" fill="none" stroke="#4f9aaa" stroke-width="2" stroke-linecap="round"></path><path d="M85.2 70.1 L84.1 74.0 L88.2 74.3 Z" fill="#4f9aaa"></path><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C71 56 74 60 77 62"></path></g><g transform="rotate(4 50 45)"><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="44.0" cy="40.6" r="2.3" fill="#0c1722"></circle><circle cx="60.0" cy="40.6" r="2.3" fill="#0c1722"></circle><path d="M37.5 30.5 Q41.5 29.2 45.5 30.5" fill="none" stroke="#0c1722" stroke-width="1.8" stroke-linecap="round"></path><path d="M54.5 28.6 Q58.5 25.2 62.5 27.6" fill="none" stroke="#0c1722" stroke-width="1.8" stroke-linecap="round"></path><path d="M46.5 47 Q50 48.8 53.8 46.4" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path></g><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle></g><circle cx="81" cy="64" r="5.5" fill="#0a121b" stroke="#84c7d4" stroke-width="3" stroke-dasharray="3.2 2.6"></circle></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M76.8 54.9 A10 10 0 0 1 86.7 72.2" fill="none" stroke="#84c7d4" stroke-width="2" stroke-linecap="round"></path><path d="M85.2 70.1 L84.1 74.0 L88.2 74.3 Z" fill="#84c7d4"></path><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C71 56 74 60 77 62"></path></g><g transform="rotate(4 50 45)"><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="44.0" cy="40.6" r="2.3" fill="#0c1722"></circle><circle cx="60.0" cy="40.6" r="2.3" fill="#0c1722"></circle><path d="M37.5 30.5 Q41.5 29.2 45.5 30.5" fill="none" stroke="#0c1722" stroke-width="1.8" stroke-linecap="round"></path><path d="M54.5 28.6 Q58.5 25.2 62.5 27.6" fill="none" stroke="#0c1722" stroke-width="1.8" stroke-linecap="round"></path><path d="M46.5 47 Q50 48.8 53.8 46.4" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path></g><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle></g><circle cx="81" cy="64" r="5.5" fill="#ffffff" stroke="#1a6a79" stroke-width="3" stroke-dasharray="3.2 2.6"></circle></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M8 56 Q20 94 50 94 Q80 94 92 56" fill="none" stroke="#4f9aaa" stroke-width="1.6" stroke-dasharray="3 3"></path><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M33 48 C24 52 16 56 9 56"></path><path d="M42 56 C38 66 32 74 24 80"></path><path d="M58 56 C62 66 68 74 76 80"></path><path d="M67 48 C76 52 84 56 91 56"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="42" cy="39.8" r="2.3" fill="#0c1722"></circle><circle cx="58" cy="39.8" r="2.3" fill="#0c1722"></circle><path d="M47 46.5 L53 46.5" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path><g fill="#84c7d4" stroke="#84c7d4" stroke-width="4"><circle cx="8" cy="56" r="5.5"></circle><circle cx="23" cy="81" r="5.5"></circle><circle cx="77" cy="81" r="5.5"></circle><circle cx="92" cy="56" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M8 56 Q20 94 50 94 Q80 94 92 56" fill="none" stroke="#84c7d4" stroke-width="1.6" stroke-dasharray="3 3"></path><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M33 48 C24 52 16 56 9 56"></path><path d="M42 56 C38 66 32 74 24 80"></path><path d="M58 56 C62 66 68 74 76 80"></path><path d="M67 48 C76 52 84 56 91 56"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="42" cy="39.8" r="2.3" fill="#0c1722"></circle><circle cx="58" cy="39.8" r="2.3" fill="#0c1722"></circle><path d="M47 46.5 L53 46.5" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path><g fill="#84c7d4" stroke="#1a6a79" stroke-width="4"><circle cx="8" cy="56" r="5.5"></circle><circle cx="23" cy="81" r="5.5"></circle><circle cx="77" cy="81" r="5.5"></circle><circle cx="92" cy="56" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M88 3 L89.7 8.3 L95 10 L89.7 11.7 L88 17 L86.3 11.7 L81 10 L86.3 8.3 Z" fill="#e8b04a"></path><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 46 C73 39 77 31 78 24"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="5" fill="#ffffff"></circle><circle cx="58" cy="38" r="5" fill="#ffffff"></circle><circle cx="43.4" cy="36.6" r="2.3" fill="#0c1722"></circle><circle cx="59.4" cy="36.6" r="2.3" fill="#0c1722"></circle><g fill="none" stroke="#0c1722" stroke-width="1.8" stroke-linecap="round"><path d="M37 30 Q41 27.5 45 29.5"></path><path d="M55 29.5 Q59 27.5 63 30"></path></g><circle cx="50" cy="47" r="1.9" fill="#0c1722"></circle><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle></g><circle cx="78" cy="21" r="5.5" fill="#e8b04a" stroke="#84c7d4" stroke-width="4"></circle></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M88 3 L89.7 8.3 L95 10 L89.7 11.7 L88 17 L86.3 11.7 L81 10 L86.3 8.3 Z" fill="#e8b04a"></path><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 46 C73 39 77 31 78 24"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="5" fill="#ffffff"></circle><circle cx="58" cy="38" r="5" fill="#ffffff"></circle><circle cx="43.4" cy="36.6" r="2.3" fill="#0c1722"></circle><circle cx="59.4" cy="36.6" r="2.3" fill="#0c1722"></circle><g fill="none" stroke="#0c1722" stroke-width="1.8" stroke-linecap="round"><path d="M37 30 Q41 27.5 45 29.5"></path><path d="M55 29.5 Q59 27.5 63 30"></path></g><circle cx="50" cy="47" r="1.9" fill="#0c1722"></circle><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle></g><circle cx="78" cy="21" r="5.5" fill="#e8b04a" stroke="#1a6a79" stroke-width="4"></circle></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M9 29 L10.5 32.5 L14 34 L10.5 35.5 L9 39 L7.5 35.5 L4 34 L7.5 32.5 Z" fill="#e8b04a"></path><path d="M91 29 L92.5 32.5 L96 34 L92.5 35.5 L91 39 L89.5 35.5 L86 34 L89.5 32.5 Z" fill="#e8b04a"></path><path d="M50 2.5 L51.4 5.7 L54.5 7 L51.4 8.3 L50 11.5 L48.6 8.3 L45.5 7 L48.6 5.7 Z" fill="#e8b04a"></path><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 46 C26 38 21 29 19 19"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 46 C74 38 79 29 81 19"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><path d="M37.5 38 Q42 33.5 46.5 38" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M53.5 38 Q58 33.5 62.5 38" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M44.5 45 Q50 53 55.5 45 Q50 47 44.5 45 Z" fill="#0c1722"></path><g fill="#84c7d4" stroke="#84c7d4" stroke-width="4"><circle cx="18" cy="16" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="82" cy="16" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M9 29 L10.5 32.5 L14 34 L10.5 35.5 L9 39 L7.5 35.5 L4 34 L7.5 32.5 Z" fill="#e8b04a"></path><path d="M91 29 L92.5 32.5 L96 34 L92.5 35.5 L91 39 L89.5 35.5 L86 34 L89.5 32.5 Z" fill="#e8b04a"></path><path d="M50 2.5 L51.4 5.7 L54.5 7 L51.4 8.3 L50 11.5 L48.6 8.3 L45.5 7 L48.6 5.7 Z" fill="#e8b04a"></path><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 46 C26 38 21 29 19 19"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 46 C74 38 79 29 81 19"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><path d="M37.5 38 Q42 33.5 46.5 38" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M53.5 38 Q58 33.5 62.5 38" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M44.5 45 Q50 53 55.5 45 Q50 47 44.5 45 Z" fill="#0c1722"></path><g fill="#84c7d4" stroke="#1a6a79" stroke-width="4"><circle cx="18" cy="16" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="82" cy="16" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 46 C74 40 79 31 81 22"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><g fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"><path d="M37.5 38 Q42 33.5 46.5 38"></path><path d="M53.5 38 Q58 33.5 62.5 38"></path><path d="M45 45.5 Q50 50 55 45.5"></path></g><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="82" cy="19" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 46 C74 40 79 31 81 22"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><g fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"><path d="M37.5 38 Q42 33.5 46.5 38"></path><path d="M53.5 38 Q58 33.5 62.5 38"></path><path d="M45 45.5 Q50 50 55 45.5"></path></g><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="82" cy="19" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M6 6 L6 92 L98 92" fill="none" stroke="#2a4250" stroke-width="2" stroke-linecap="round"></path><g transform="translate(3 6)"><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 58 21 70 14 80"></path><path d="M44 56 C42 66 38 74 33 80"></path><path d="M56 56 C59 66 63 74 68 80"></path><path d="M66 50 C74 58 82 72 90 80"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="43.6" cy="38.8" r="2.3" fill="#0c1722"></circle><circle cx="59.6" cy="38.8" r="2.3" fill="#0c1722"></circle><path d="M45 45.5 Q50 49 55 45.5" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="14" cy="80" r="5.5"></circle><circle cx="33" cy="80" r="5.5"></circle><circle cx="68" cy="80" r="5.5"></circle><circle cx="90" cy="80" r="5.5"></circle></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M6 6 L6 92 L98 92" fill="none" stroke="#cfe0e4" stroke-width="2" stroke-linecap="round"></path><g transform="translate(3 6)"><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 58 21 70 14 80"></path><path d="M44 56 C42 66 38 74 33 80"></path><path d="M56 56 C59 66 63 74 68 80"></path><path d="M66 50 C74 58 82 72 90 80"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="43.6" cy="38.8" r="2.3" fill="#0c1722"></circle><circle cx="59.6" cy="38.8" r="2.3" fill="#0c1722"></circle><path d="M45 45.5 Q50 49 55 45.5" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="14" cy="80" r="5.5"></circle><circle cx="33" cy="80" r="5.5"></circle><circle cx="68" cy="80" r="5.5"></circle><circle cx="90" cy="80" r="5.5"></circle></g></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 58 24 66 22 74"></path><path d="M44 56 C42 65 40 72 38 79"></path><path d="M56 56 C58 65 60 72 62 79"></path><path d="M66 50 C73 58 76 66 78 74"></path></g><g transform="rotate(-5 50 45)"><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><path d="M37.5 37.5 Q42 41.5 46.5 37.5" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M53.5 37.5 Q58 41.5 62.5 37.5" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M46 46 Q50 48.6 54 46" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path></g><g fill="#84c7d4" stroke="#84c7d4" stroke-width="4"><circle cx="22" cy="76" r="5.5"></circle><circle cx="38" cy="81" r="5.5"></circle><circle cx="62" cy="81" r="5.5"></circle><circle cx="78" cy="76" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 58 24 66 22 74"></path><path d="M44 56 C42 65 40 72 38 79"></path><path d="M56 56 C58 65 60 72 62 79"></path><path d="M66 50 C73 58 76 66 78 74"></path></g><g transform="rotate(-5 50 45)"><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><path d="M37.5 37.5 Q42 41.5 46.5 37.5" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M53.5 37.5 Q58 41.5 62.5 37.5" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M46 46 Q50 48.6 54 46" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path></g><g fill="#84c7d4" stroke="#1a6a79" stroke-width="4"><circle cx="22" cy="76" r="5.5"></circle><circle cx="38" cy="81" r="5.5"></circle><circle cx="62" cy="81" r="5.5"></circle><circle cx="78" cy="76" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#4f9aaa" stroke-width="1.8" stroke-linecap="round"><path d="M7 13 Q4.5 19 7 25"></path><path d="M30 12 Q32.5 18 30 24"></path></g><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 46 C26 40 21 31 19 22"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C73 57 78 64 83 68"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><path d="M37.5 38 Q42 33.5 46.5 38" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M53.5 38 Q58 33.5 62.5 38" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M45 45.5 Q50 50 55 45.5" fill="none" stroke="#0c1722" stroke-width="2.2" stroke-linecap="round"></path><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="18" cy="19" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="85" cy="70" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="none" stroke="#84c7d4" stroke-width="1.8" stroke-linecap="round"><path d="M7 13 Q4.5 19 7 25"></path><path d="M30 12 Q32.5 18 30 24"></path></g><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 46 C26 40 21 31 19 22"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C73 57 78 64 83 68"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><path d="M37.5 38 Q42 33.5 46.5 38" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M53.5 38 Q58 33.5 62.5 38" fill="none" stroke="#0c1722" stroke-width="2.4" stroke-linecap="round"></path><path d="M45 45.5 Q50 50 55 45.5" fill="none" stroke="#0c1722" stroke-width="2.2" stroke-linecap="round"></path><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="18" cy="19" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="85" cy="70" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M78 30 Q86 27 94 29" fill="none" stroke="#4f9aaa" stroke-width="1.6" stroke-dasharray="3 3" stroke-linecap="round"></path><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M67 45 C76 43 84 41 91 39"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="44.2" cy="38.6" r="2.3" fill="#0c1722"></circle><circle cx="60.2" cy="38.6" r="2.3" fill="#0c1722"></circle><path d="M45 45 Q50.5 49.5 56 45" fill="none" stroke="#0c1722" stroke-width="2.2" stroke-linecap="round"></path><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle></g><g fill="#84c7d4" stroke="#84c7d4" stroke-width="4"><circle cx="92" cy="39" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M78 30 Q86 27 94 29" fill="none" stroke="#84c7d4" stroke-width="1.6" stroke-dasharray="3 3" stroke-linecap="round"></path><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 50 C27 57 22 64 17 68"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M67 45 C76 43 84 41 91 39"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="44.2" cy="38.6" r="2.3" fill="#0c1722"></circle><circle cx="60.2" cy="38.6" r="2.3" fill="#0c1722"></circle><path d="M45 45 Q50.5 49.5 56 45" fill="none" stroke="#0c1722" stroke-width="2.2" stroke-linecap="round"></path><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="15" cy="70" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle></g><g fill="#84c7d4" stroke="#1a6a79" stroke-width="4"><circle cx="92" cy="39" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="#4f9aaa"><circle cx="74" cy="20" r="2"></circle><circle cx="80.5" cy="15" r="2.4"></circle><circle cx="87.5" cy="10.5" r="2.8"></circle></g><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C73 57 78 64 83 68"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="40.8" cy="36.6" r="2.3" fill="#0c1722"></circle><circle cx="56.8" cy="36.6" r="2.3" fill="#0c1722"></circle><path d="M46 47 Q50.5 48.5 54 46" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path><path d="M33 50 C29 57 32 63 38 60" fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"></path><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="40" cy="58" r="4.6"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="85" cy="70" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><g fill="#84c7d4"><circle cx="74" cy="20" r="2"></circle><circle cx="80.5" cy="15" r="2.4"></circle><circle cx="87.5" cy="10.5" r="2.8"></circle></g><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 50 C73 57 78 64 83 68"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="40.8" cy="36.6" r="2.3" fill="#0c1722"></circle><circle cx="56.8" cy="36.6" r="2.3" fill="#0c1722"></circle><path d="M46 47 Q50.5 48.5 54 46" fill="none" stroke="#0c1722" stroke-width="2" stroke-linecap="round"></path><path d="M33 50 C29 57 32 63 38 60" fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"></path><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="40" cy="58" r="4.6"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="85" cy="70" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M50 15.5 C44 11.5 41 8.5 41 6 C41 3.4 43 2.2 45.2 2.2 C47.2 2.2 49 3.4 50 5.2 C51 3.4 52.8 2.2 54.8 2.2 C57 2.2 59 3.4 59 6 C59 8.5 56 11.5 50 15.5 Z" fill="#e8b04a"></path><g fill="none" stroke="#84c7d4" stroke-width="5.5" stroke-linecap="round"><path d="M34 46 C26 44 18 40 11 35"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 46 C74 44 82 40 89 35"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#84c7d4"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.22"></ellipse><circle cx="37" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#1a6a79" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="42.0" cy="38.6" r="2.3" fill="#0c1722"></circle><circle cx="58.0" cy="38.6" r="2.3" fill="#0c1722"></circle><path d="M44 45 Q50 51.5 56 45" fill="none" stroke="#0c1722" stroke-width="2.2" stroke-linecap="round"></path><g fill="#0a121b" stroke="#84c7d4" stroke-width="4"><circle cx="10" cy="34" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="90" cy="34" r="5.5"></circle></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M50 15.5 C44 11.5 41 8.5 41 6 C41 3.4 43 2.2 45.2 2.2 C47.2 2.2 49 3.4 50 5.2 C51 3.4 52.8 2.2 54.8 2.2 C57 2.2 59 3.4 59 6 C59 8.5 56 11.5 50 15.5 Z" fill="#e8b04a"></path><g fill="none" stroke="#1a6a79" stroke-width="5.5" stroke-linecap="round"><path d="M34 46 C26 44 18 40 11 35"></path><path d="M44 56 C42 65 39 73 36 79"></path><path d="M56 56 C58 65 61 73 64 79"></path><path d="M66 46 C74 44 82 40 89 35"></path></g><ellipse cx="50" cy="38" rx="22" ry="20" fill="#1a6a79"></ellipse><ellipse cx="43" cy="29" rx="8" ry="4.5" fill="#ffffff" opacity="0.14"></ellipse><circle cx="37" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="63" cy="46" r="3.2" fill="#84c7d4" opacity="0.55"></circle><circle cx="42" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="58" cy="38" r="4.6" fill="#ffffff"></circle><circle cx="42.0" cy="38.6" r="2.3" fill="#0c1722"></circle><circle cx="58.0" cy="38.6" r="2.3" fill="#0c1722"></circle><path d="M44 45 Q50 51.5 56 45" fill="none" stroke="#0c1722" stroke-width="2.2" stroke-linecap="round"></path><g fill="#ffffff" stroke="#1a6a79" stroke-width="4"><circle cx="10" cy="34" r="5.5"></circle><circle cx="35" cy="82" r="5.5"></circle><circle cx="65" cy="82" r="5.5"></circle><circle cx="90" cy="34" r="5.5"></circle></g></svg>
@@ -31,6 +31,19 @@
31
31
  * on the land add its height, e.g. 136 px on the phone)
32
32
  * --lc-horizon-sun-radius the sun's radius (58 px phone, 70 · 90 · 120 · 166 px)
33
33
  * --lc-horizon-sun-x the sun's centre from the block's left edge (72%)
34
+ * --lc-horizon-figure-size the figure's size in .lc-horizon__figure
35
+ * (64 px phone, 96 px from 1024, 128 px from 1920)
36
+ * --lc-horizon-figure-gap its right edge to the sun's left edge (16 px; 24 px from 1024)
37
+ *
38
+ * Figure (3.8, G-4): Edu on the line, left of the sun, in a DIRECT child with
39
+ * .lc-horizon__figure (lc-character, <img>, <picture>, or an element holding an
40
+ * inline <svg>), placed BEFORE .lc-horizon__land. His feet stand on the line
41
+ * (the box bottom 12.5 % of its size below it); the block's height above the
42
+ * line becomes max(sun + 22 px, figure + 8 px). Decorative, never a target:
43
+ *
44
+ * <div class="lc-horizon" aria-hidden="true">
45
+ * <lc-character class="lc-horizon__figure" pose="comforts" />
46
+ * </div>
34
47
  *
35
48
  * Colours: --color-background-low, --color-horizon-line, --color-land-1…3,
36
49
  * --color-sun-1…3, --color-sun-ring, --color-sun-halo (theme tokens).
@@ -40,6 +53,8 @@
40
53
  --_lc-horizon-land: var(--lc-horizon-land, 112px);
41
54
  --_lc-horizon-r: var(--lc-horizon-sun-radius, 58px);
42
55
  --_lc-horizon-x: var(--lc-horizon-sun-x, 72%);
56
+ --_lc-horizon-fig: var(--lc-horizon-figure-size, 64px);
57
+ --_lc-horizon-fig-gap: var(--lc-horizon-figure-gap, 16px);
43
58
 
44
59
  position: relative;
45
60
  flex: 1 0 auto;
@@ -84,6 +99,8 @@
84
99
  @media (min-width: 1024px) {
85
100
  --_lc-horizon-land: var(--lc-horizon-land, 100px);
86
101
  --_lc-horizon-r: var(--lc-horizon-sun-radius, 70px);
102
+ --_lc-horizon-fig: var(--lc-horizon-figure-size, 96px);
103
+ --_lc-horizon-fig-gap: var(--lc-horizon-figure-gap, 24px);
87
104
  }
88
105
 
89
106
  @media (min-width: 1280px) {
@@ -99,6 +116,7 @@
99
116
  @media (min-width: 1920px) {
100
117
  --_lc-horizon-land: var(--lc-horizon-land, 184px);
101
118
  --_lc-horizon-r: var(--lc-horizon-sun-radius, 166px);
119
+ --_lc-horizon-fig: var(--lc-horizon-figure-size, 128px);
102
120
  }
103
121
 
104
122
  // Windows high contrast and other forced-colour modes: no decoration.
@@ -113,3 +131,37 @@
113
131
  position: absolute;
114
132
  inset: auto 0 0;
115
133
  }
134
+
135
+ // Edu on the horizon line (3.8, G-4): left of the sun, the feet on the line.
136
+ // Only a block WITH the figure gets the taller minimum; without it the block
137
+ // renders exactly as before.
138
+ .lc-horizon:has(> .lc-horizon__figure) {
139
+ min-height: calc(var(--_lc-horizon-land) + max(var(--_lc-horizon-r) + 22px, var(--_lc-horizon-fig) + 8px));
140
+ }
141
+
142
+ // The slot sizes the figure (an lc-character's `size` input doesn't apply).
143
+ // Its right edge sits the gap left of the sun's left edge; the box bottom lies
144
+ // 12.5 % of its size below the line, where the standing poses' feet end
145
+ // (y 87.5 of 100). Px, not rem: at 200 % text the figure keeps its size.
146
+ .lc-horizon__figure {
147
+ --lc-character-size: var(--_lc-horizon-fig);
148
+
149
+ position: absolute;
150
+ right: calc(100% - var(--_lc-horizon-x) + var(--_lc-horizon-r) + var(--_lc-horizon-fig-gap));
151
+ bottom: calc(var(--_lc-horizon-land) - var(--_lc-horizon-fig) * 0.125);
152
+ width: var(--_lc-horizon-fig);
153
+ height: var(--_lc-horizon-fig);
154
+ pointer-events: none;
155
+
156
+ // Decoration, like the horizon's own: dropped, its box kept.
157
+ @media (forced-colors: active) {
158
+ visibility: hidden;
159
+ }
160
+ }
161
+
162
+ // A <picture> or an element holding an inline <svg>.
163
+ .lc-horizon__figure > :is(img, svg) {
164
+ display: block;
165
+ width: 100%;
166
+ height: 100%;
167
+ }
@@ -0,0 +1,79 @@
1
+ import { compile } from 'sass';
2
+ import { resolve } from 'path';
3
+
4
+ /**
5
+ * The horizon's figure slot (3.8, G-4, AC-15 and AC-16 of request 005), read
6
+ * from the compiled CSS. The block without a figure is pinned by
7
+ * horizon.spec.ts, which this request leaves unchanged.
8
+ */
9
+ const css = '\n' + compile(resolve(__dirname, '_horizon.scss')).css;
10
+
11
+ /** The declarations of the top-level rule whose selector is exactly `selector` (compiled rules start a line). */
12
+ function rule(selector: string): string {
13
+ const start = css.indexOf(`\n${selector} {`);
14
+ expect(start).toBeGreaterThan(-1);
15
+ return css.slice(start, css.indexOf('}', start));
16
+ }
17
+
18
+ describe('.lc-horizon__figure (G-4)', () => {
19
+ it('takes the figure size and gap from custom properties: 64 px and 16 px on the phone', () => {
20
+ const base = rule('.lc-horizon');
21
+ expect(base).toMatch(/--_lc-horizon-fig:\s*var\(--lc-horizon-figure-size, 64px\)/);
22
+ expect(base).toMatch(/--_lc-horizon-fig-gap:\s*var\(--lc-horizon-figure-gap, 16px\)/);
23
+ });
24
+
25
+ it.each([
26
+ [1024, '96px', '24px'],
27
+ [1920, '128px', null],
28
+ ])('steps up from %s px: size %s, gap %s', (width, size, gap) => {
29
+ const start = css.indexOf(`@media (min-width: ${width}px) {\n .lc-horizon {`);
30
+ expect(start).toBeGreaterThan(-1);
31
+ const step = css.slice(start, css.indexOf('}', start));
32
+ expect(step).toContain(`--_lc-horizon-fig: var(--lc-horizon-figure-size, ${size})`);
33
+ if (gap) expect(step).toContain(`--_lc-horizon-fig-gap: var(--lc-horizon-figure-gap, ${gap})`);
34
+ else expect(step).not.toContain('--_lc-horizon-fig-gap');
35
+ });
36
+
37
+ it.each([1280, 1440])('keeps 96 px and 24 px at %s px (no figure step there)', (width) => {
38
+ const start = css.indexOf(`@media (min-width: ${width}px) {\n .lc-horizon {`);
39
+ expect(css.slice(start, css.indexOf('}', start))).not.toContain('--_lc-horizon-fig');
40
+ });
41
+
42
+ it('raises the minimum above the line to max(sun + 22 px, figure + 8 px) only with a figure child', () => {
43
+ expect(rule('.lc-horizon:has(> .lc-horizon__figure)')).toMatch(
44
+ /min-height:\s*calc\(var\(--_lc-horizon-land\) \+ max\(var\(--_lc-horizon-r\) \+ 22px, var\(--_lc-horizon-fig\) \+ 8px\)\)/,
45
+ );
46
+ // The block without the figure keeps land + sun + 22 px (horizon.spec.ts).
47
+ expect(rule('.lc-horizon')).toMatch(/min-height:\s*calc\(var\(--_lc-horizon-land\) \+ var\(--_lc-horizon-r\) \+ 22px\)/);
48
+ });
49
+
50
+ it('places the figure left of the sun with the gap, its feet on the line, sized by the slot', () => {
51
+ const figure = rule('.lc-horizon__figure');
52
+ expect(figure).toMatch(/position:\s*absolute/);
53
+ expect(figure).toMatch(/right:\s*calc\(100% - var\(--_lc-horizon-x\) \+ var\(--_lc-horizon-r\) \+ var\(--_lc-horizon-fig-gap\)\)/);
54
+ expect(figure).toMatch(/bottom:\s*calc\(var\(--_lc-horizon-land\) - var\(--_lc-horizon-fig\) \* 0\.125\)/);
55
+ expect(figure).toMatch(/width:\s*var\(--_lc-horizon-fig\)/);
56
+ expect(figure).toMatch(/height:\s*var\(--_lc-horizon-fig\)/);
57
+ expect(figure).toMatch(/--lc-character-size:\s*var\(--_lc-horizon-fig\)/);
58
+ });
59
+
60
+ it('AC-16: the figure is never a pointer target', () => {
61
+ expect(rule('.lc-horizon__figure')).toMatch(/pointer-events:\s*none/);
62
+ });
63
+
64
+ it('drops the figure in forced colours, keeping its box', () => {
65
+ expect(css).toMatch(/@media \(forced-colors: active\) \{\s*\.lc-horizon__figure \{\s*visibility: hidden;/);
66
+ });
67
+
68
+ it('fills the slot with a <picture>’s image or an inline <svg>', () => {
69
+ const child = rule('.lc-horizon__figure > :is(img, svg)');
70
+ expect(child).toMatch(/display:\s*block/);
71
+ expect(child).toMatch(/width:\s*100%/);
72
+ expect(child).toMatch(/height:\s*100%/);
73
+ });
74
+
75
+ it('adds no motion and no raw colour', () => {
76
+ const figureCss = css.slice(css.indexOf('.lc-horizon:has('));
77
+ expect(figureCss).not.toMatch(/animation|transition|#[0-9a-f]{3,6}\b/i);
78
+ });
79
+ });
@@ -0,0 +1,44 @@
1
+ /** One of a pose's two drawings: `light` for light surfaces, `dark` for dark ones. */
2
+ export type CharacterDrawing = 'light' | 'dark';
3
+ /** A pose's two drawings as SVG markup, each equal to its file `<pose>-<drawing>.svg`. */
4
+ export interface CharacterSvgPair {
5
+ readonly light: string;
6
+ readonly dark: string;
7
+ }
8
+ /**
9
+ * Edu's poses (3.8, gap G-4), in the order of the docs. `calm` is the neutral
10
+ * Edu; the post-only poses (peeks-around-corner, amazed, looks-ahead) are not shipped.
11
+ */
12
+ export type CharacterPose = 'hello' | 'shows-the-way' | 'happy' | 'welcomes-member' | 'resting' | 'in-his-corner' | 'comforts' | 'all-done' | 'calm' | 'connects' | 'discovered' | 'thinking' | 'connection-paused' | 'see-you';
13
+ /** Every shipped pose, in the order of the docs. */
14
+ export declare const CHARACTER_POSES: readonly CharacterPose[];
15
+ /** hello (Hallo); dark drawn. */
16
+ export declare const CHARACTER_SVG_HELLO: CharacterSvgPair;
17
+ /** shows-the-way (Zeigt den Weg); dark drawn. */
18
+ export declare const CHARACTER_SVG_SHOWS_THE_WAY: CharacterSvgPair;
19
+ /** happy (Freut sich); dark drawn. */
20
+ export declare const CHARACTER_SVG_HAPPY: CharacterSvgPair;
21
+ /** welcomes-member (Begrüßt ein Mitglied); dark by the rule. */
22
+ export declare const CHARACTER_SVG_WELCOMES_MEMBER: CharacterSvgPair;
23
+ /** resting (Ruht sich aus); dark by the rule. */
24
+ export declare const CHARACTER_SVG_RESTING: CharacterSvgPair;
25
+ /** in-his-corner (Sitzt in seiner Ecke); dark by the rule. */
26
+ export declare const CHARACTER_SVG_IN_HIS_CORNER: CharacterSvgPair;
27
+ /** comforts (Tröstet); dark by the rule. */
28
+ export declare const CHARACTER_SVG_COMFORTS: CharacterSvgPair;
29
+ /** all-done (Erledigt); dark by the rule. */
30
+ export declare const CHARACTER_SVG_ALL_DONE: CharacterSvgPair;
31
+ /** calm (ruhig); dark drawn. */
32
+ export declare const CHARACTER_SVG_CALM: CharacterSvgPair;
33
+ /** connects (Verbindet); dark by the rule. */
34
+ export declare const CHARACTER_SVG_CONNECTS: CharacterSvgPair;
35
+ /** discovered (Hat etwas entdeckt); dark by the rule. */
36
+ export declare const CHARACTER_SVG_DISCOVERED: CharacterSvgPair;
37
+ /** thinking (Denkt nach); dark by the rule. */
38
+ export declare const CHARACTER_SVG_THINKING: CharacterSvgPair;
39
+ /** connection-paused (Verbindung pausiert); dark by the rule. */
40
+ export declare const CHARACTER_SVG_CONNECTION_PAUSED: CharacterSvgPair;
41
+ /** see-you (Bis bald); dark by the rule. */
42
+ export declare const CHARACTER_SVG_SEE_YOU: CharacterSvgPair;
43
+ /** Every pose's light and dark drawing, keyed by pose. */
44
+ export declare const CHARACTER_SVG: Readonly<Record<CharacterPose, CharacterSvgPair>>;
@@ -0,0 +1,104 @@
1
+ import * as i0 from "@angular/core";
2
+ import { InjectionToken } from "@angular/core";
3
+ import { CharacterPose, CharacterPose as CharacterPose$1 } from "@lifecorner/angular-ui-kit/character-svg";
4
+ /** Edge of the figure's square box in px. `--lc-character-size` overrides it. */
5
+ export type CharacterSize = 48 | 64 | 80 | 96 | 128;
6
+ /**
7
+ * Which drawing to show.
8
+ * - `auto`: the root theme picks the light or the dark drawing.
9
+ * - `dark`: the on-dark drawing in both themes, for a fixed dark surface.
10
+ */
11
+ export type CharacterColorMode = 'auto' | 'dark';
12
+ /**
13
+ * The URL folder that holds the pose files (`<pose>-light.svg`,
14
+ * `<pose>-dark.svg`, copied from the package's `assets/character/`). Follows
15
+ * `LC_LOGO_BASE_PATH` (default `/assets` → `/assets/character`) unless you
16
+ * provide it yourself.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * providers: [{ provide: LC_CHARACTER_BASE_PATH, useValue: '/static/edu' }]
21
+ * ```
22
+ */
23
+ export declare const LC_CHARACTER_BASE_PATH: InjectionToken<string>;
24
+ /**
25
+ * Edu, the LifeCorner character, in one of his poses (3.8, gap G-4).
26
+ *
27
+ * Renders the pose files as `<img>` (no inline SVG, no Trusted Types policy),
28
+ * in a square box that is sized by CSS before any JavaScript runs, so the
29
+ * figure prerenders and never shifts the layout. Decorative by default
30
+ * (`aria-hidden="true"`); `ariaLabel` makes it an image with that name. The
31
+ * figure is still: nothing animates.
32
+ *
33
+ * Without Angular, use the files (`@lifecorner/angular-ui-kit/assets/character/<pose>-<light|dark>.svg`)
34
+ * or the strings of `@lifecorner/angular-ui-kit/character-svg`.
35
+ *
36
+ * @example Decorative, follows the app theme
37
+ * ```html
38
+ * <lc-character pose="comforts" size="96" />
39
+ * ```
40
+ *
41
+ * @example On a fixed dark surface, with a name
42
+ * ```html
43
+ * <lc-character pose="hello" colorMode="dark" ariaLabel="Edu winkt" />
44
+ * ```
45
+ */
46
+ export declare class CharacterComponent {
47
+ /**
48
+ * Which pose to draw: hello, shows-the-way, happy, welcomes-member, resting,
49
+ * in-his-corner, comforts, all-done, calm, connects, discovered, thinking,
50
+ * connection-paused, see-you. `calm` is the neutral Edu.
51
+ * @default 'calm'
52
+ */
53
+ readonly pose: import("@angular/core").InputSignal<CharacterPose$1>;
54
+ /**
55
+ * Edge of the square box in px: 48, 64, 80, 96 or 128 (`size="96"` works
56
+ * too). `--lc-character-size` overrides it; set that hook per breakpoint in
57
+ * CSS.
58
+ * @default 64
59
+ */
60
+ readonly size: import("@angular/core").InputSignalWithTransform<CharacterSize, CharacterSize | "48" | "64" | "80" | "96" | "128">;
61
+ /**
62
+ * Which drawing to show.
63
+ * - `auto`: both drawings are in the DOM and the root theme shows one
64
+ * (light, dark, and system with the OS setting), without JavaScript.
65
+ * - `dark`: only the on-dark drawing, in both themes, for a fixed dark
66
+ * surface such as the hero band.
67
+ * @default 'auto'
68
+ */
69
+ readonly colorMode: import("@angular/core").InputSignal<CharacterColorMode>;
70
+ /**
71
+ * Empty: decorative (`aria-hidden="true"`). Set: `role="img"` with this
72
+ * name. This is your own translated text; the kit ships none.
73
+ * @default ''
74
+ */
75
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
76
+ private readonly basePath;
77
+ protected readonly lightSrc: import("@angular/core").Signal<string>;
78
+ protected readonly darkSrc: import("@angular/core").Signal<string>;
79
+ protected readonly hostClass: import("@angular/core").Signal<string>;
80
+ static ɵfac: i0.ɵɵFactoryDeclaration<CharacterComponent, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<CharacterComponent, "lc-character", never, {
82
+ "pose": {
83
+ "alias": "pose";
84
+ "required": false;
85
+ "isSignal": true;
86
+ };
87
+ "size": {
88
+ "alias": "size";
89
+ "required": false;
90
+ "isSignal": true;
91
+ };
92
+ "colorMode": {
93
+ "alias": "colorMode";
94
+ "required": false;
95
+ "isSignal": true;
96
+ };
97
+ "ariaLabel": {
98
+ "alias": "ariaLabel";
99
+ "required": false;
100
+ "isSignal": true;
101
+ };
102
+ }, {}, never, never, true, never>;
103
+ }
104
+ export type { CharacterPose };
@@ -9,6 +9,8 @@ export * from "@lifecorner/angular-ui-kit/icon";
9
9
  export * from "@lifecorner/angular-ui-kit/icon-names";
10
10
  export * from "@lifecorner/angular-ui-kit/icons";
11
11
  export * from "@lifecorner/angular-ui-kit/logo";
12
+ export * from "@lifecorner/angular-ui-kit/character";
13
+ export * from "@lifecorner/angular-ui-kit/character-svg";
12
14
  export * from "@lifecorner/angular-ui-kit/menu";
13
15
  export * from "@lifecorner/angular-ui-kit/input";
14
16
  export * from "@lifecorner/angular-ui-kit/radio";