@rdicons/svelte 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,4 +40,14 @@ Any other attribute (`class`, `style`, `aria-label`, events) is passed to the `<
40
40
 
41
41
  The code of this package is MIT. The icons keep the license of their library (MIT, ISC, Apache-2.0, and CC BY 4.0 for Solar, which requires you to credit the author). The `LICENSES` folder has the full text for each library.
42
42
 
43
+
44
+ ## Colour effects
45
+
46
+ ```svelte
47
+ <Folder duotone />
48
+ <Bell gradient={['#ec4899', '#4f46e5']} duotone={0.3} />
49
+ ```
50
+
51
+ `duotone` fills closed shapes with a soft second tone; `gradient` makes the line run from one color to another. Details: https://rdicons.vimalbhatt.com/docs/effects
52
+
43
53
  Part of [rdicons](https://rdicons.vimalbhatt.com).
package/dist/Icon.svelte CHANGED
@@ -1,8 +1,8 @@
1
1
  <script>
2
2
  import { render } from './runtime.js'
3
3
  // icon: an icon from "@rdicons/svelte/<library>", for example import { House } from '@rdicons/svelte/lucide'
4
- let { icon, size = 24, color, strokeWidth, title, animate, speed, class: className, style, ...rest } = $props()
5
- const r = $derived(render(icon, { size, color, strokeWidth, title, animate, speed, className, style }))
4
+ let { icon, size = 24, color, strokeWidth, title, animate, speed, duotone, gradient, class: className, style, ...rest } = $props()
5
+ const r = $derived(render(icon, { size, color, strokeWidth, title, animate, speed, duotone, gradient, className, style }))
6
6
  </script>
7
7
 
8
8
  <svg {...r.attrs} {...rest}>{@html r.html}</svg>
@@ -0,0 +1,210 @@
1
+ // ../core/src/effects.ts
2
+ var ARGS = { m: 2, l: 2, h: 1, v: 1, c: 6, s: 4, q: 4, t: 2, a: 7, z: 0 };
3
+ var NUM = /[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?/g;
4
+ function firstSubpath(d) {
5
+ let cur = { x: 0, y: 0 };
6
+ let start = null;
7
+ let closed = false;
8
+ let min = { x: Infinity, y: Infinity };
9
+ let max = { x: -Infinity, y: -Infinity };
10
+ const add = (p) => {
11
+ min = { x: Math.min(min.x, p.x), y: Math.min(min.y, p.y) };
12
+ max = { x: Math.max(max.x, p.x), y: Math.max(max.y, p.y) };
13
+ };
14
+ for (const m of d.matchAll(/([a-zA-Z])([^a-zA-Z]*)/g)) {
15
+ const cmd = m[1];
16
+ const lower = cmd.toLowerCase();
17
+ const rel = cmd === lower;
18
+ if (!(lower in ARGS)) return null;
19
+ if (lower === "z") {
20
+ if (start) {
21
+ closed = true;
22
+ cur = start;
23
+ }
24
+ break;
25
+ }
26
+ if (lower === "m" && start) break;
27
+ const args = m[2];
28
+ let pos = 0;
29
+ const number = () => {
30
+ while (pos < args.length && /[\s,]/.test(args[pos])) pos++;
31
+ const r = /[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?/y;
32
+ r.lastIndex = pos;
33
+ const x = r.exec(args);
34
+ if (!x) return null;
35
+ pos = r.lastIndex;
36
+ return parseFloat(x[0]);
37
+ };
38
+ const flag = () => {
39
+ while (pos < args.length && /[\s,]/.test(args[pos])) pos++;
40
+ if (args[pos] !== "0" && args[pos] !== "1") return null;
41
+ return Number(args[pos++]);
42
+ };
43
+ let first = true;
44
+ for (; ; ) {
45
+ const ox = rel ? cur.x : 0, oy = rel ? cur.y : 0;
46
+ if (lower === "a") {
47
+ const rx = number(), ry = number(), rot = number(), f1 = flag(), f2 = flag(), x = number(), y = number();
48
+ if ([rx, ry, rot, f1, f2, x, y].some((v) => v == null)) break;
49
+ const end = { x: ox + x, y: oy + y };
50
+ const mid = { x: (cur.x + end.x) / 2, y: (cur.y + end.y) / 2 };
51
+ add({ x: mid.x - Math.abs(rx), y: mid.y - Math.abs(ry) });
52
+ add({ x: mid.x + Math.abs(rx), y: mid.y + Math.abs(ry) });
53
+ cur = end;
54
+ add(cur);
55
+ } else {
56
+ const a = [];
57
+ for (let k = 0; k < ARGS[lower]; k++) {
58
+ const v = number();
59
+ if (v == null) break;
60
+ a.push(v);
61
+ }
62
+ if (a.length < ARGS[lower]) break;
63
+ switch (lower) {
64
+ case "m": {
65
+ cur = { x: ox + a[0], y: oy + a[1] };
66
+ if (first) start = cur;
67
+ add(cur);
68
+ break;
69
+ }
70
+ case "l":
71
+ case "t": {
72
+ cur = { x: ox + a[0], y: oy + a[1] };
73
+ add(cur);
74
+ break;
75
+ }
76
+ case "h": {
77
+ cur = { x: ox + a[0], y: cur.y };
78
+ add(cur);
79
+ break;
80
+ }
81
+ case "v": {
82
+ cur = { x: cur.x, y: oy + a[0] };
83
+ add(cur);
84
+ break;
85
+ }
86
+ case "c": {
87
+ add({ x: ox + a[0], y: oy + a[1] });
88
+ add({ x: ox + a[2], y: oy + a[3] });
89
+ cur = { x: ox + a[4], y: oy + a[5] };
90
+ add(cur);
91
+ break;
92
+ }
93
+ case "s":
94
+ case "q": {
95
+ add({ x: ox + a[0], y: oy + a[1] });
96
+ cur = { x: ox + a[2], y: oy + a[3] };
97
+ add(cur);
98
+ break;
99
+ }
100
+ }
101
+ }
102
+ first = false;
103
+ }
104
+ if (!start && lower !== "m") return null;
105
+ }
106
+ if (!start || !isFinite(min.x)) return null;
107
+ add(start);
108
+ return { start, end: cur, closed, min, max };
109
+ }
110
+ var attr = (tag, name) => {
111
+ var _a;
112
+ const m = tag.match(new RegExp(`(?:^|\\s)${name}\\s*=\\s*("([^"]*)"|'([^']*)')`));
113
+ return m ? (_a = m[2]) != null ? _a : m[3] : null;
114
+ };
115
+ var num = (v) => v == null ? null : Number.isFinite(parseFloat(v)) ? parseFloat(v) : null;
116
+ var MIN_SIDE = 5;
117
+ function fillableShapes(body) {
118
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
119
+ if (!/stroke=/.test(body)) return [];
120
+ const out = [];
121
+ let i = -1;
122
+ for (const m of body.matchAll(/<(path|circle|ellipse|rect|polygon|line|polyline)\b[^>]*>/g)) {
123
+ i++;
124
+ const tag = m[0];
125
+ const kind = m[1];
126
+ const ownFill = attr(tag, "fill");
127
+ if (ownFill && ownFill !== "none") continue;
128
+ if (kind === "circle") {
129
+ if (((_a = num(attr(tag, "r"))) != null ? _a : 0) * 2 >= MIN_SIDE) out.push(i);
130
+ } else if (kind === "ellipse") {
131
+ if (((_b = num(attr(tag, "rx"))) != null ? _b : 0) * 2 >= MIN_SIDE && ((_c = num(attr(tag, "ry"))) != null ? _c : 0) * 2 >= MIN_SIDE) out.push(i);
132
+ } else if (kind === "rect") {
133
+ if (((_d = num(attr(tag, "width"))) != null ? _d : 0) >= MIN_SIDE && ((_e = num(attr(tag, "height"))) != null ? _e : 0) >= MIN_SIDE) out.push(i);
134
+ } else if (kind === "polygon") {
135
+ const pts = (_h = (_g = ((_f = attr(tag, "points")) != null ? _f : "").match(NUM)) == null ? void 0 : _g.map(Number)) != null ? _h : [];
136
+ const xs = pts.filter((_, k) => k % 2 === 0), ys = pts.filter((_, k) => k % 2 === 1);
137
+ if (xs.length >= 3 && Math.max(...xs) - Math.min(...xs) >= MIN_SIDE && Math.max(...ys) - Math.min(...ys) >= MIN_SIDE) out.push(i);
138
+ } else if (kind === "path") {
139
+ const sp = firstSubpath((_i = attr(tag, "d")) != null ? _i : "");
140
+ if (!sp) continue;
141
+ const w = sp.max.x - sp.min.x, h = sp.max.y - sp.min.y;
142
+ if (w < MIN_SIDE || h < MIN_SIDE) continue;
143
+ const gap = Math.hypot(sp.end.x - sp.start.x, sp.end.y - sp.start.y);
144
+ if (sp.closed || gap <= Math.max(2.5, 0.35 * Math.min(w, h))) out.push(i);
145
+ }
146
+ }
147
+ return out;
148
+ }
149
+ var esc = (s) => s.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;");
150
+ var safeColor = (c) => /^[#a-zA-Z0-9(),.%\s\-/]+$/.test(c) ? c : "#000000";
151
+ function gradientLine(w, h, angle = 45) {
152
+ const a = angle * Math.PI / 180;
153
+ const dx = Math.cos(a), dy = Math.sin(a);
154
+ const half = (Math.abs(w * dx) + Math.abs(h * dy)) / 2;
155
+ const cx = w / 2, cy = h / 2;
156
+ const r = (n) => Math.round(n * 100) / 100;
157
+ return { x1: r(cx - dx * half), y1: r(cy - dy * half), x2: r(cx + dx * half), y2: r(cy + dy * half) };
158
+ }
159
+ function applyEffects(body, w, h, base, o) {
160
+ var _a, _b, _c;
161
+ const id = ((_a = o.gradientId) != null ? _a : "rdg").replace(/[^a-zA-Z0-9_-]/g, "");
162
+ const g = o.gradient;
163
+ const paint = g ? `url(#${id})` : base;
164
+ let out = body.replace(/currentColor/g, paint);
165
+ if (o.duotone) {
166
+ const idx = new Set(fillableShapes(body));
167
+ if (idx.size) {
168
+ const fill = o.duotone.color ? safeColor(o.duotone.color) : paint;
169
+ const opacity = Math.min(1, Math.max(0, (_b = o.duotone.opacity) != null ? _b : 0.2));
170
+ let i = -1;
171
+ out = out.replace(/<(path|circle|ellipse|rect|polygon|line|polyline)\b([^>]*?)(\/?)>/g, (whole, tagName, rest, slash) => {
172
+ i++;
173
+ if (!idx.has(i)) return whole;
174
+ const cleaned = rest.replace(/\sfill="[^"]*"/, "");
175
+ return `<${tagName}${cleaned} fill="${esc(fill)}" fill-opacity="${opacity}"${slash}>`;
176
+ });
177
+ }
178
+ }
179
+ if (g) {
180
+ const l = gradientLine(w, h, (_c = g.angle) != null ? _c : 45);
181
+ out = `<defs><linearGradient id="${id}" gradientUnits="userSpaceOnUse" x1="${l.x1}" y1="${l.y1}" x2="${l.x2}" y2="${l.y2}"><stop offset="0" stop-color="${esc(safeColor(g.from))}"/><stop offset="1" stop-color="${esc(safeColor(g.to))}"/></linearGradient></defs>${out}`;
182
+ }
183
+ return out;
184
+ }
185
+ function parseEffectProps(p, gradientId) {
186
+ var _a, _b;
187
+ let duotone = null;
188
+ const d = p.duotone;
189
+ if (d === true || d === "" || d === "true") duotone = {};
190
+ else if (typeof d === "number") duotone = { opacity: d };
191
+ else if (typeof d === "string" && d) duotone = { color: d };
192
+ else if (d && typeof d === "object") duotone = { color: (_a = d.color) != null ? _a : null, opacity: d.opacity };
193
+ let gradient = null;
194
+ const g = p.gradient;
195
+ if (typeof g === "string" && g) {
196
+ const [from, to, angle] = g.split(",").map((x) => x.trim());
197
+ if (from && to) gradient = { from, to, angle: angle !== void 0 && Number.isFinite(Number(angle)) ? Number(angle) : 45 };
198
+ } else if (Array.isArray(g) && g.length >= 2) gradient = { from: String(g[0]), to: String(g[1]), angle: typeof g[2] === "number" ? g[2] : 45 };
199
+ else if (g && typeof g === "object" && "from" in g) gradient = { from: g.from, to: g.to, angle: (_b = g.angle) != null ? _b : 45 };
200
+ if (!duotone && !gradient) return null;
201
+ return { duotone, gradient, gradientId };
202
+ }
203
+ export {
204
+ applyEffects,
205
+ fillableShapes,
206
+ firstSubpath,
207
+ gradientLine,
208
+ parseEffectProps,
209
+ safeColor
210
+ };
package/dist/rd.js CHANGED
@@ -359,13 +359,13 @@ export const Megaphone = { id: "rd:megaphone", width: 24, height: 24, body: "<g
359
359
  export const Meh = { id: "rd:meh", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"/><path d=\"M8.5 15.5h7\"/><path d=\"M9 9.8h.01\"/><path d=\"M15 9.8h.01\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"/><g><g class=\"p0\" style=\"--k:0;--s:1\"><path d=\"M8.5 15.5h7\"/></g></g><g><g class=\"p1\" style=\"--k:0;--s:1\"><path d=\"M9 9.8h.01\"/></g><g class=\"p1\" style=\"--k:1;--s:1\"><path d=\"M15 9.8h.01\"/></g></g></g>","c":".rd-a-meh{overflow:visible}.rd-a-meh *{transform-box:view-box}.rd-a-meh .p0{transform-origin:12px 15.5px}.rd-a-meh .p1{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-meh[data-rd-animate=\"hover\"]:hover .p0,:hover>.rd-a-meh[data-rd-animate=\"parent\"] .p0,.rd-a-meh[data-rd-animate=\"play\"] .p0,.rd-a-meh[data-rd-animate=\"loop\"] .p0{animation:rd-meh-f0 calc(0.7s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1);animation-delay:calc((0s + var(--k)*0s)*var(--rd-speed,1))}.rd-a-meh[data-rd-animate=\"hover\"]:hover .p1,:hover>.rd-a-meh[data-rd-animate=\"parent\"] .p1,.rd-a-meh[data-rd-animate=\"play\"] .p1,.rd-a-meh[data-rd-animate=\"loop\"] .p1{animation:rd-meh-f1 calc(0.5s*var(--rd-speed,1)) ease-in-out;animation-delay:calc((0s + var(--k)*0s)*var(--rd-speed,1))}.rd-a-meh[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-meh-f0{0%,100%{scale:1 1}40%{scale:1.14 1}}@keyframes rd-meh-f1{0%,100%{scale:1 1}45%{scale:1 .1}}}"} }
360
360
  export const MemoryStick = { id: "rd:memory-stick", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><rect x=\"2.5\" y=\"7.5\" width=\"19\" height=\"9\" rx=\"2\"/><path d=\"M7 11v2M12 11v2M17 11v2\"/><path d=\"M7 16.5v2M12 16.5v2M17 16.5v2\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><rect x=\"2.5\" y=\"7.5\" width=\"19\" height=\"9\" rx=\"2\"/><g><g class=\"p0\" style=\"--k:0;--s:1\"><path d=\"M7 11v2\"/></g><g class=\"p0\" style=\"--k:1;--s:1\"><path d=\"M12 11v2\"/></g><g class=\"p0\" style=\"--k:2;--s:1\"><path d=\"M17 11v2\"/></g></g><g><g class=\"p1\" style=\"--k:0;--s:1\"><path d=\"M7 16.5v2\"/></g><g class=\"p1\" style=\"--k:1;--s:1\"><path d=\"M12 16.5v2\"/></g><g class=\"p1\" style=\"--k:2;--s:1\"><path d=\"M17 16.5v2\"/></g></g></g>","c":".rd-a-memory-stick{overflow:visible}.rd-a-memory-stick *{transform-box:view-box}@media (prefers-reduced-motion:no-preference){.rd-a-memory-stick[data-rd-animate=\"hover\"]:hover .p0,:hover>.rd-a-memory-stick[data-rd-animate=\"parent\"] .p0,.rd-a-memory-stick[data-rd-animate=\"play\"] .p0,.rd-a-memory-stick[data-rd-animate=\"loop\"] .p0{animation:rd-memory-stick-f0 calc(0.7s*var(--rd-speed,1)) ease-in-out;animation-delay:calc((0s + var(--k)*0.12s)*var(--rd-speed,1))}.rd-a-memory-stick[data-rd-animate=\"hover\"]:hover .p1,:hover>.rd-a-memory-stick[data-rd-animate=\"parent\"] .p1,.rd-a-memory-stick[data-rd-animate=\"play\"] .p1,.rd-a-memory-stick[data-rd-animate=\"loop\"] .p1{animation:rd-memory-stick-f1 calc(0.5s*var(--rd-speed,1)) ease-in-out;animation-delay:calc((0s + var(--k)*0.1s)*var(--rd-speed,1))}.rd-a-memory-stick[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-memory-stick-f0{0%,100%{opacity:1}40%{opacity:.15}}@keyframes rd-memory-stick-f1{0%,100%{translate:0 0}40%{translate:0 1.5px}}}"} }
361
361
  export const Menu = { id: "rd:menu", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M4 6.5h16M4 12h16M4 17.5h16\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"d\" style=\"--k:0\"><path pathLength=\"1\" d=\"M4 6.5h16\"/></g><g class=\"d\" style=\"--k:1\"><path pathLength=\"1\" d=\"M4 12h16\"/></g><g class=\"d\" style=\"--k:2\"><path pathLength=\"1\" d=\"M4 17.5h16\"/></g></g>","c":".rd-a-menu{overflow:visible}.rd-a-menu *{transform-box:view-box}.rd-a-menu .d{stroke-dasharray:1 2}@media (prefers-reduced-motion:no-preference){.rd-a-menu[data-rd-animate=\"hover\"]:hover .d,:hover>.rd-a-menu[data-rd-animate=\"parent\"] .d,.rd-a-menu[data-rd-animate=\"play\"] .d,.rd-a-menu[data-rd-animate=\"loop\"] .d{animation:rd-menu-draw calc(0.75s*var(--rd-speed,1)) ease-out;animation-delay:calc(var(--k)*.1s*var(--rd-speed,1))}.rd-a-menu[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-menu-draw{0%{stroke-dashoffset:1.2}100%{stroke-dashoffset:0}}}"} }
362
- export const Message = { id: "rd:message", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.57-4A8 8 0 0 1 12 3.5z\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"a\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.57-4A8 8 0 0 1 12 3.5z\"/></g></g>","c":".rd-a-message{overflow:visible}.rd-a-message *{transform-box:view-box}.rd-a-message .a{transform-origin:12px 12px}@media (prefers-reduced-motion:no-preference){.rd-a-message[data-rd-animate=\"hover\"]:hover .a,:hover>.rd-a-message[data-rd-animate=\"parent\"] .a,.rd-a-message[data-rd-animate=\"play\"] .a,.rd-a-message[data-rd-animate=\"loop\"] .a{animation:rd-message-m calc(0.7s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-m{0%,100%{scale:1}35%{scale:.88}65%{scale:1.1}}}"} }
362
+ export const Message = { id: "rd:message", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.57-4A8 8 0 0 1 12 3.5z\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"a\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.57-4A8 8 0 0 1 12 3.5z\"/></g></g>","c":".rd-a-message{overflow:visible}.rd-a-message *{transform-box:view-box}@media (prefers-reduced-motion:no-preference){.rd-a-message[data-rd-animate=\"hover\"]:hover .a,:hover>.rd-a-message[data-rd-animate=\"parent\"] .a,.rd-a-message[data-rd-animate=\"play\"] .a,.rd-a-message[data-rd-animate=\"loop\"] .a{animation:rd-message-m calc(0.8s*var(--rd-speed,1)) ease-in-out}.rd-a-message[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-m{0%,100%{translate:0 0}30%{translate:0 -3px}55%{translate:0 0}72%{translate:0 -1px}}}"} }
363
363
  export const MessageCheck = { id: "rd:message-check", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/><path d=\"M9 11.5l2 2 4-4\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/></g><g class=\"badge\"><path d=\"M9 11.5l2 2 4-4\"/></g></g>","c":".rd-a-message-check{overflow:visible}.rd-a-message-check *{transform-box:view-box}.rd-a-message-check .base{transform-origin:12px 12px}.rd-a-message-check .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-message-check[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-message-check[data-rd-animate=\"parent\"] .base,.rd-a-message-check[data-rd-animate=\"play\"] .base,.rd-a-message-check[data-rd-animate=\"loop\"] .base{animation:rd-message-check-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-message-check[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-message-check[data-rd-animate=\"parent\"] .badge,.rd-a-message-check[data-rd-animate=\"play\"] .badge,.rd-a-message-check[data-rd-animate=\"loop\"] .badge{animation:rd-message-check-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-check[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-check-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-message-check-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
364
364
  export const MessageCircleHeart = { id: "rd:message-circle-heart", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/><path d=\"M12 14.5c-2-1.3-3-2.3-3-3.6a1.7 1.7 0 0 1 3-1 1.7 1.7 0 0 1 3 1c0 1.3-1 2.3-3 3.6z\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"a\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/><path d=\"M12 14.5c-2-1.3-3-2.3-3-3.6a1.7 1.7 0 0 1 3-1 1.7 1.7 0 0 1 3 1c0 1.3-1 2.3-3 3.6z\"/></g></g>","c":".rd-a-message-circle-heart{overflow:visible}.rd-a-message-circle-heart *{transform-box:view-box}.rd-a-message-circle-heart .a{transform-origin:12px 12px}@media (prefers-reduced-motion:no-preference){.rd-a-message-circle-heart[data-rd-animate=\"hover\"]:hover .a,:hover>.rd-a-message-circle-heart[data-rd-animate=\"parent\"] .a,.rd-a-message-circle-heart[data-rd-animate=\"play\"] .a,.rd-a-message-circle-heart[data-rd-animate=\"loop\"] .a{animation:rd-message-circle-heart-m calc(0.7s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-circle-heart[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-circle-heart-m{0%,100%{scale:1}35%{scale:.88}65%{scale:1.1}}}"} }
365
365
  export const MessageMinus = { id: "rd:message-minus", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/><path d=\"M9 11.5h6\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/></g><g class=\"badge\"><path d=\"M9 11.5h6\"/></g></g>","c":".rd-a-message-minus{overflow:visible}.rd-a-message-minus *{transform-box:view-box}.rd-a-message-minus .base{transform-origin:12px 12px}.rd-a-message-minus .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-message-minus[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-message-minus[data-rd-animate=\"parent\"] .base,.rd-a-message-minus[data-rd-animate=\"play\"] .base,.rd-a-message-minus[data-rd-animate=\"loop\"] .base{animation:rd-message-minus-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-message-minus[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-message-minus[data-rd-animate=\"parent\"] .badge,.rd-a-message-minus[data-rd-animate=\"play\"] .badge,.rd-a-message-minus[data-rd-animate=\"loop\"] .badge{animation:rd-message-minus-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-minus[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-minus-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-message-minus-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
366
366
  export const MessagePlus = { id: "rd:message-plus", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/><path d=\"M12 8.5v5M9.5 11h5\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/></g><g class=\"badge\"><path d=\"M12 8.5v5M9.5 11h5\"/></g></g>","c":".rd-a-message-plus{overflow:visible}.rd-a-message-plus *{transform-box:view-box}.rd-a-message-plus .base{transform-origin:12px 12px}.rd-a-message-plus .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-message-plus[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-message-plus[data-rd-animate=\"parent\"] .base,.rd-a-message-plus[data-rd-animate=\"play\"] .base,.rd-a-message-plus[data-rd-animate=\"loop\"] .base{animation:rd-message-plus-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-message-plus[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-message-plus[data-rd-animate=\"parent\"] .badge,.rd-a-message-plus[data-rd-animate=\"play\"] .badge,.rd-a-message-plus[data-rd-animate=\"loop\"] .badge{animation:rd-message-plus-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-plus[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-plus-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-message-plus-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
367
367
  export const MessageQuestion = { id: "rd:message-question", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/><path d=\"M9.8 9.5a2.3 2.3 0 1 1 3.3 2.1c-.700.4-1.1.900-1.1 1.5\"/><path d=\"M12 15.2h.01\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/></g><g class=\"badge\"><path d=\"M9.8 9.5a2.3 2.3 0 1 1 3.3 2.1c-.700.4-1.1.900-1.1 1.5\"/><path d=\"M12 15.2h.01\"/></g></g>","c":".rd-a-message-question{overflow:visible}.rd-a-message-question *{transform-box:view-box}.rd-a-message-question .base{transform-origin:12px 12px}.rd-a-message-question .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-message-question[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-message-question[data-rd-animate=\"parent\"] .base,.rd-a-message-question[data-rd-animate=\"play\"] .base,.rd-a-message-question[data-rd-animate=\"loop\"] .base{animation:rd-message-question-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-message-question[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-message-question[data-rd-animate=\"parent\"] .badge,.rd-a-message-question[data-rd-animate=\"play\"] .badge,.rd-a-message-question[data-rd-animate=\"loop\"] .badge{animation:rd-message-question-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-question[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-question-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-message-question-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
368
- export const MessageSquare = { id: "rd:message-square", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M7 4.5h10a3.5 3.5 0 0 1 3.5 3.5v5a3.5 3.5 0 0 1-3.5 3.5h-6.5L6 20.5v-4h1A3.5 3.5 0 0 1 3.5 13V8A3.5 3.5 0 0 1 7 4.5z\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"a\"><path d=\"M7 4.5h10a3.5 3.5 0 0 1 3.5 3.5v5a3.5 3.5 0 0 1-3.5 3.5h-6.5L6 20.5v-4h1A3.5 3.5 0 0 1 3.5 13V8A3.5 3.5 0 0 1 7 4.5z\"/></g></g>","c":".rd-a-message-square{overflow:visible}.rd-a-message-square *{transform-box:view-box}.rd-a-message-square .a{transform-origin:12px 12px}@media (prefers-reduced-motion:no-preference){.rd-a-message-square[data-rd-animate=\"hover\"]:hover .a,:hover>.rd-a-message-square[data-rd-animate=\"parent\"] .a,.rd-a-message-square[data-rd-animate=\"play\"] .a,.rd-a-message-square[data-rd-animate=\"loop\"] .a{animation:rd-message-square-m calc(0.7s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-square[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-square-m{0%,100%{scale:1}35%{scale:.88}65%{scale:1.1}}}"} }
368
+ export const MessageSquare = { id: "rd:message-square", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M7 4.5h10a3.5 3.5 0 0 1 3.5 3.5v5a3.5 3.5 0 0 1-3.5 3.5h-6.5L6 20.5v-4h1A3.5 3.5 0 0 1 3.5 13V8A3.5 3.5 0 0 1 7 4.5z\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"a\"><path d=\"M7 4.5h10a3.5 3.5 0 0 1 3.5 3.5v5a3.5 3.5 0 0 1-3.5 3.5h-6.5L6 20.5v-4h1A3.5 3.5 0 0 1 3.5 13V8A3.5 3.5 0 0 1 7 4.5z\"/></g></g>","c":".rd-a-message-square{overflow:visible}.rd-a-message-square *{transform-box:view-box}@media (prefers-reduced-motion:no-preference){.rd-a-message-square[data-rd-animate=\"hover\"]:hover .a,:hover>.rd-a-message-square[data-rd-animate=\"parent\"] .a,.rd-a-message-square[data-rd-animate=\"play\"] .a,.rd-a-message-square[data-rd-animate=\"loop\"] .a{animation:rd-message-square-m calc(0.8s*var(--rd-speed,1)) ease-in-out}.rd-a-message-square[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-square-m{0%,100%{translate:0 0}30%{translate:0 -3px}55%{translate:0 0}72%{translate:0 -1px}}}"} }
369
369
  export const MessageSquarePlus = { id: "rd:message-square-plus", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M7 4.5h10a3.5 3.5 0 0 1 3.5 3.5v5a3.5 3.5 0 0 1-3.5 3.5h-6.5L6 20.5v-4h1A3.5 3.5 0 0 1 3.5 13V8A3.5 3.5 0 0 1 7 4.5z\"/><path d=\"M12 7.5v6M9 10.5h6\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M7 4.5h10a3.5 3.5 0 0 1 3.5 3.5v5a3.5 3.5 0 0 1-3.5 3.5h-6.5L6 20.5v-4h1A3.5 3.5 0 0 1 3.5 13V8A3.5 3.5 0 0 1 7 4.5z\"/></g><g class=\"badge\"><path d=\"M12 7.5v6M9 10.5h6\"/></g></g>","c":".rd-a-message-square-plus{overflow:visible}.rd-a-message-square-plus *{transform-box:view-box}.rd-a-message-square-plus .base{transform-origin:12px 12px}.rd-a-message-square-plus .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-message-square-plus[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-message-square-plus[data-rd-animate=\"parent\"] .base,.rd-a-message-square-plus[data-rd-animate=\"play\"] .base,.rd-a-message-square-plus[data-rd-animate=\"loop\"] .base{animation:rd-message-square-plus-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-message-square-plus[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-message-square-plus[data-rd-animate=\"parent\"] .badge,.rd-a-message-square-plus[data-rd-animate=\"play\"] .badge,.rd-a-message-square-plus[data-rd-animate=\"loop\"] .badge{animation:rd-message-square-plus-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-square-plus[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-square-plus-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-message-square-plus-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
370
370
  export const MessageSquareText = { id: "rd:message-square-text", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M7 4.5h10a3.5 3.5 0 0 1 3.5 3.5v5a3.5 3.5 0 0 1-3.5 3.5h-6.5L6 20.5v-4h1A3.5 3.5 0 0 1 3.5 13V8A3.5 3.5 0 0 1 7 4.5z\"/><path d=\"M8 9h8M8 12h5\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M7 4.5h10a3.5 3.5 0 0 1 3.5 3.5v5a3.5 3.5 0 0 1-3.5 3.5h-6.5L6 20.5v-4h1A3.5 3.5 0 0 1 3.5 13V8A3.5 3.5 0 0 1 7 4.5z\"/></g><g class=\"badge\"><path d=\"M8 9h8M8 12h5\"/></g></g>","c":".rd-a-message-square-text{overflow:visible}.rd-a-message-square-text *{transform-box:view-box}.rd-a-message-square-text .base{transform-origin:12px 12px}.rd-a-message-square-text .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-message-square-text[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-message-square-text[data-rd-animate=\"parent\"] .base,.rd-a-message-square-text[data-rd-animate=\"play\"] .base,.rd-a-message-square-text[data-rd-animate=\"loop\"] .base{animation:rd-message-square-text-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-message-square-text[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-message-square-text[data-rd-animate=\"parent\"] .badge,.rd-a-message-square-text[data-rd-animate=\"play\"] .badge,.rd-a-message-square-text[data-rd-animate=\"loop\"] .badge{animation:rd-message-square-text-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-square-text[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-square-text-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-message-square-text-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
371
371
  export const MessageX = { id: "rd:message-x", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/><path d=\"M9.5 9l5 5M14.5 9l-5 5\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5A8 8 0 1 1 8 18.43L4.5 19.5l.570-4A8 8 0 0 1 12 3.5z\"/></g><g class=\"badge\"><path d=\"M9.5 9l5 5M14.5 9l-5 5\"/></g></g>","c":".rd-a-message-x{overflow:visible}.rd-a-message-x *{transform-box:view-box}.rd-a-message-x .base{transform-origin:12px 12px}.rd-a-message-x .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-message-x[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-message-x[data-rd-animate=\"parent\"] .base,.rd-a-message-x[data-rd-animate=\"play\"] .base,.rd-a-message-x[data-rd-animate=\"loop\"] .base{animation:rd-message-x-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-message-x[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-message-x[data-rd-animate=\"parent\"] .badge,.rd-a-message-x[data-rd-animate=\"play\"] .badge,.rd-a-message-x[data-rd-animate=\"loop\"] .badge{animation:rd-message-x-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-message-x[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-message-x-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-message-x-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
@@ -495,7 +495,7 @@ export const ShieldAlert = { id: "rd:shield-alert", width: 24, height: 24, body:
495
495
  export const ShieldCheck = { id: "rd:shield-check", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/><path d=\"M9 12l2.2 2.2L15.2 10\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/></g><g class=\"badge\"><path d=\"M9 12l2.2 2.2L15.2 10\"/></g></g>","c":".rd-a-shield-check{overflow:visible}.rd-a-shield-check *{transform-box:view-box}.rd-a-shield-check .base{transform-origin:12px 12px}.rd-a-shield-check .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-shield-check[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-shield-check[data-rd-animate=\"parent\"] .base,.rd-a-shield-check[data-rd-animate=\"play\"] .base,.rd-a-shield-check[data-rd-animate=\"loop\"] .base{animation:rd-shield-check-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-shield-check[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-shield-check[data-rd-animate=\"parent\"] .badge,.rd-a-shield-check[data-rd-animate=\"play\"] .badge,.rd-a-shield-check[data-rd-animate=\"loop\"] .badge{animation:rd-shield-check-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-shield-check[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-shield-check-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-shield-check-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
496
496
  export const ShieldOff = { id: "rd:shield-off", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/><path d=\"M4.5 4.5l15 15\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/></g><g class=\"badge\"><path d=\"M4.5 4.5l15 15\"/></g></g>","c":".rd-a-shield-off{overflow:visible}.rd-a-shield-off *{transform-box:view-box}.rd-a-shield-off .base{transform-origin:12px 12px}.rd-a-shield-off .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-shield-off[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-shield-off[data-rd-animate=\"parent\"] .base,.rd-a-shield-off[data-rd-animate=\"play\"] .base,.rd-a-shield-off[data-rd-animate=\"loop\"] .base{animation:rd-shield-off-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-shield-off[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-shield-off[data-rd-animate=\"parent\"] .badge,.rd-a-shield-off[data-rd-animate=\"play\"] .badge,.rd-a-shield-off[data-rd-animate=\"loop\"] .badge{animation:rd-shield-off-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-shield-off[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-shield-off-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-shield-off-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
497
497
  export const ShieldPlus = { id: "rd:shield-plus", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/><path d=\"M12 9v5M9.5 11.5h5\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/></g><g class=\"badge\"><path d=\"M12 9v5M9.5 11.5h5\"/></g></g>","c":".rd-a-shield-plus{overflow:visible}.rd-a-shield-plus *{transform-box:view-box}.rd-a-shield-plus .base{transform-origin:12px 12px}.rd-a-shield-plus .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-shield-plus[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-shield-plus[data-rd-animate=\"parent\"] .base,.rd-a-shield-plus[data-rd-animate=\"play\"] .base,.rd-a-shield-plus[data-rd-animate=\"loop\"] .base{animation:rd-shield-plus-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-shield-plus[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-shield-plus[data-rd-animate=\"parent\"] .badge,.rd-a-shield-plus[data-rd-animate=\"play\"] .badge,.rd-a-shield-plus[data-rd-animate=\"loop\"] .badge{animation:rd-shield-plus-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-shield-plus[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-shield-plus-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-shield-plus-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
498
- export const ShieldUser = { id: "rd:shield-user", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/><circle cx=\"12\" cy=\"10\" r=\"2.2\"/><path d=\"M8.2 16.2c.4-1.5 1.8-2.4 3.8-2.4s3.4.9 3.8 2.4\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"a\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/><circle cx=\"12\" cy=\"10\" r=\"2.2\"/><path d=\"M8.2 16.2c.4-1.5 1.8-2.4 3.8-2.4s3.4.9 3.8 2.4\"/></g></g>","c":".rd-a-shield-user{overflow:visible}.rd-a-shield-user *{transform-box:view-box}.rd-a-shield-user .a{transform-origin:12px 12px}@media (prefers-reduced-motion:no-preference){.rd-a-shield-user[data-rd-animate=\"hover\"]:hover .a,:hover>.rd-a-shield-user[data-rd-animate=\"parent\"] .a,.rd-a-shield-user[data-rd-animate=\"play\"] .a,.rd-a-shield-user[data-rd-animate=\"loop\"] .a{animation:rd-shield-user-m calc(0.7s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-shield-user[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-shield-user-m{0%,100%{scale:1}35%{scale:.88}65%{scale:1.1}}}"} }
498
+ export const ShieldUser = { id: "rd:shield-user", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/><circle cx=\"12\" cy=\"10\" r=\"2.2\"/><path d=\"M8.2 16.2c.4-1.5 1.8-2.4 3.8-2.4s3.4.9 3.8 2.4\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"a\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/><circle cx=\"12\" cy=\"10\" r=\"2.2\"/><path d=\"M8.2 16.2c.4-1.5 1.8-2.4 3.8-2.4s3.4.9 3.8 2.4\"/></g></g>","c":".rd-a-shield-user{overflow:visible}.rd-a-shield-user *{transform-box:view-box}.rd-a-shield-user .a{transform-origin:12px 12px}@media (prefers-reduced-motion:no-preference){.rd-a-shield-user[data-rd-animate=\"hover\"]:hover .a,:hover>.rd-a-shield-user[data-rd-animate=\"parent\"] .a,.rd-a-shield-user[data-rd-animate=\"play\"] .a,.rd-a-shield-user[data-rd-animate=\"loop\"] .a{animation:rd-shield-user-m calc(0.8s*var(--rd-speed,1)) ease-in-out}.rd-a-shield-user[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-shield-user-m{0%,100%{scale:1}30%{scale:1.2}55%{scale:.95}75%{scale:1.07}}}"} }
499
499
  export const ShieldX = { id: "rd:shield-x", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/><path d=\"M9.5 9.5l5 5M14.5 9.5l-5 5\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"base\"><path d=\"M12 3.5l7 2.5v5.6c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6z\"/></g><g class=\"badge\"><path d=\"M9.5 9.5l5 5M14.5 9.5l-5 5\"/></g></g>","c":".rd-a-shield-x{overflow:visible}.rd-a-shield-x *{transform-box:view-box}.rd-a-shield-x .base{transform-origin:12px 12px}.rd-a-shield-x .badge{transform-box:fill-box;transform-origin:center}@media (prefers-reduced-motion:no-preference){.rd-a-shield-x[data-rd-animate=\"hover\"]:hover .base,:hover>.rd-a-shield-x[data-rd-animate=\"parent\"] .base,.rd-a-shield-x[data-rd-animate=\"play\"] .base,.rd-a-shield-x[data-rd-animate=\"loop\"] .base{animation:rd-shield-x-base calc(0.7s*var(--rd-speed,1)) ease-in-out}.rd-a-shield-x[data-rd-animate=\"hover\"]:hover .badge,:hover>.rd-a-shield-x[data-rd-animate=\"parent\"] .badge,.rd-a-shield-x[data-rd-animate=\"play\"] .badge,.rd-a-shield-x[data-rd-animate=\"loop\"] .badge{animation:rd-shield-x-badge calc(0.8s*var(--rd-speed,1)) cubic-bezier(.34,1.3,.5,1)}.rd-a-shield-x[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-shield-x-base{0%,100%{scale:1}40%{scale:.96}}@keyframes rd-shield-x-badge{0%,100%{scale:1;opacity:1}22%{scale:.1;opacity:0}62%{scale:1.3;opacity:1}}}"} }
500
500
  export const Ship = { id: "rd:ship", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M3.5 15l1.5 4.5h14l1.5-4.5z\"/><path d=\"M7 15V9.5h10V15\"/><path d=\"M10.5 9.5V6.5h3v3\"/><path d=\"M12 4v2.5\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g><g class=\"p0\" style=\"--k:0;--s:1\"><path d=\"M3.5 15l1.5 4.5h14l1.5-4.5z\"/><path d=\"M7 15V9.5h10V15\"/><path d=\"M10.5 9.5V6.5h3v3\"/><path d=\"M12 4v2.5\"/></g></g></g>","c":".rd-a-ship{overflow:visible}.rd-a-ship *{transform-box:view-box}.rd-a-ship .p0{transform-origin:12px 17px}@media (prefers-reduced-motion:no-preference){.rd-a-ship[data-rd-animate=\"hover\"]:hover .p0,:hover>.rd-a-ship[data-rd-animate=\"parent\"] .p0,.rd-a-ship[data-rd-animate=\"play\"] .p0,.rd-a-ship[data-rd-animate=\"loop\"] .p0{animation:rd-ship-f0 calc(0.9s*var(--rd-speed,1)) ease-in-out;animation-delay:calc((0s + var(--k)*0s)*var(--rd-speed,1))}.rd-a-ship[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-ship-f0{0%,100%{rotate:0deg}35%{rotate:-7deg}70%{rotate:5deg}}}"} }
501
501
  export const Shirt = { id: "rd:shirt", width: 24, height: 24, body: "<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><path d=\"M8.5 4l-5.5 3 2 4 2-1V20h10v-10l2 1 2-4-5.5-3a3.5 3.5 0 0 1-7 0z\"/></g>", anim: {"b":"<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\"><g class=\"d\" style=\"--k:0\"><path pathLength=\"1\" d=\"M8.5 4l-5.5 3 2 4 2-1V20h10v-10l2 1 2-4-5.5-3a3.5 3.5 0 0 1-7 0z\"/></g></g>","c":".rd-a-shirt{overflow:visible}.rd-a-shirt *{transform-box:view-box}.rd-a-shirt .d{stroke-dasharray:1 2}@media (prefers-reduced-motion:no-preference){.rd-a-shirt[data-rd-animate=\"hover\"]:hover .d,:hover>.rd-a-shirt[data-rd-animate=\"parent\"] .d,.rd-a-shirt[data-rd-animate=\"play\"] .d,.rd-a-shirt[data-rd-animate=\"loop\"] .d{animation:rd-shirt-draw calc(0.75s*var(--rd-speed,1)) ease-out;animation-delay:calc(var(--k)*.1s*var(--rd-speed,1))}.rd-a-shirt[data-rd-animate=\"loop\"] *{animation-iteration-count:infinite!important}@keyframes rd-shirt-draw{0%{stroke-dashoffset:1.2}100%{stroke-dashoffset:0}}}"} }
package/dist/runtime.d.ts CHANGED
@@ -18,6 +18,10 @@ export interface RdIconProps extends Omit<SVGAttributes<SVGSVGElement>, 'width'
18
18
  animate?: boolean | 'hover' | 'parent' | 'play' | 'loop'
19
19
  /** Animation speed: 2 is twice as fast, 0.5 twice as slow. Default 1 */
20
20
  speed?: number
21
+ /** Fills the closed shapes of an outline icon with a soft second tone. `true`, a strength (0.05 to 0.6), another color, or `{ color, opacity }`. */
22
+ duotone?: boolean | number | string | { color?: string | null; opacity?: number }
23
+ /** The line runs from one color to another: `['#ec4899', '#4f46e5']`, `"#ec4899,#4f46e5,45"` or `{ from, to, angle }`. Replaces `color`. */
24
+ gradient?: string | [string, string] | [string, string, number] | { from: string; to: string; angle?: number }
21
25
  class?: string
22
26
  style?: string
23
27
  }
package/dist/runtime.js CHANGED
@@ -1,3 +1,6 @@
1
+ import { applyEffects, parseEffectProps } from './effects.js'
2
+
3
+ let seq = 0
1
4
  const STROKE_WIDTH = /stroke-width="[^"]*"/g
2
5
  const escapeHtml = (s) => String(s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
3
6
 
@@ -5,15 +8,18 @@ const escapeHtml = (s) => String(s).replace(/&/g, '&amp;').replace(/</g, '&lt;')
5
8
  * Works out the attributes and the inner markup of the <svg> of one icon. Every generated .svelte file calls this,
6
9
  * so the icons behave exactly like the React and Vue ones.
7
10
  * meta = { id, width, height, body, anim? } anim = { b: animated drawing, c: css }
8
- * props = { size, color, strokeWidth, title, animate, speed, className, style }
11
+ * props = { size, color, strokeWidth, title, animate, speed, className, style, duotone, gradient }
9
12
  */
10
13
  export function render(meta, props) {
11
14
  const { id, width, height, body, anim } = meta
12
15
  const name = id.slice(id.indexOf(':') + 1)
13
- const { size = 24, color, strokeWidth, title, animate, speed, className, style } = props
16
+ const { size = 24, color, strokeWidth, title, animate, speed, className, style, duotone, gradient } = props
14
17
  // Animation is opt-in. Only icons that have motion react to `animate`.
15
18
  const mode = anim && animate ? (animate === true || animate === '' || animate === 'true' ? 'hover' : animate) : null
16
- const drawing = mode ? anim.b : body
19
+ let drawing = mode ? anim.b : body
20
+ // the gradient id is made and used inside this one string, so it needs no stable id
21
+ const fx = duotone || gradient ? parseEffectProps({ duotone, gradient }, 'rdg' + ++seq) : null
22
+ if (fx) drawing = applyEffects(drawing, width, height, 'currentColor', fx)
17
23
  const html = strokeWidth == null ? drawing : drawing.replace(STROKE_WIDTH, 'stroke-width="' + strokeWidth + '"')
18
24
  // Fit the longest side into the `size` box, like the rdicons website does.
19
25
  const n = typeof size === 'number' ? size : Number.parseFloat(size)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rdicons/svelte",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "79,000+ open-source icons for Svelte 5, from 19 libraries: one Icon component plus tree-shakable icon data. Import only what you use, e.g. import { House } from '@rdicons/svelte/lucide'.",
5
5
  "keywords": ["icons", "svelte", "svelte5", "svelte-icons", "svg", "lucide", "tabler", "phosphor", "heroicons", "material-icons", "animated-icons", "rdicons"],
6
6
  "license": "MIT AND ISC AND Apache-2.0 AND CC-BY-4.0",