@nice2dev/icons 1.2.0 → 1.2.1
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/CHANGELOG.md +103 -0
- package/dist/cjs/NiceDesktopIconExporter.js +2 -6
- package/dist/cjs/NiceFaviconGenerator.js +2 -1
- package/dist/cjs/NiceIconPicker.js +15 -20
- package/dist/cjs/NiceIconSetCreator.js +6 -29
- package/dist/cjs/NtdIconBadge.js +12 -12
- package/dist/cjs/NtdIconMorph.js +21 -11
- package/dist/cjs/NtdStateMorph.js +3 -3
- package/dist/cjs/animationControls.js +10 -3
- package/dist/cjs/createIcon.js +5 -2
- package/dist/cjs/headless-ui.js +3 -3
- package/dist/cjs/iconStyles.js +36 -34
- package/dist/cjs/icons/accessibility.js +13 -13
- package/dist/cjs/icons/actions.js +37 -25
- package/dist/cjs/icons/ai.js +15 -15
- package/dist/cjs/icons/brand.js +7 -7
- package/dist/cjs/icons/business.js +18 -81
- package/dist/cjs/icons/devtech.js +31 -103
- package/dist/cjs/icons/ecommerce.js +16 -16
- package/dist/cjs/icons/education.js +17 -17
- package/dist/cjs/icons/files.js +31 -31
- package/dist/cjs/icons/fintech.js +14 -14
- package/dist/cjs/icons/food.js +16 -16
- package/dist/cjs/icons/fun.js +13 -13
- package/dist/cjs/icons/gaming.js +15 -15
- package/dist/cjs/icons/health.js +13 -22
- package/dist/cjs/icons/index.js +4 -0
- package/dist/cjs/icons/legal.js +13 -13
- package/dist/cjs/icons/media.js +46 -23
- package/dist/cjs/icons/navigation.js +14 -14
- package/dist/cjs/icons/omniverk.js +10 -10
- package/dist/cjs/icons/realestate.js +17 -17
- package/dist/cjs/icons/saas.js +13 -13
- package/dist/cjs/icons/science.js +16 -16
- package/dist/cjs/icons/shapes.js +22 -22
- package/dist/cjs/icons/smarthome.js +13 -13
- package/dist/cjs/icons/social.js +8 -98
- package/dist/cjs/icons/sports.js +14 -14
- package/dist/cjs/icons/sustainability.js +15 -15
- package/dist/cjs/icons/travel.js +15 -15
- package/dist/cjs/icons/ui.js +39 -28
- package/dist/cjs/icons/weather.js +20 -20
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/lottieIntegration.js +3 -3
- package/dist/cjs/nicetodev-icons.css +1 -1
- package/dist/cjs/particleEffects.js +11 -4
- package/dist/cjs/resolver.js +4 -0
- package/dist/esm/NiceDesktopIconExporter.js +2 -6
- package/dist/esm/NiceFaviconGenerator.js +2 -1
- package/dist/esm/NiceIconPicker.js +16 -21
- package/dist/esm/NiceIconSetCreator.js +6 -29
- package/dist/esm/NtdIconBadge.js +12 -12
- package/dist/esm/NtdIconMorph.js +21 -11
- package/dist/esm/NtdStateMorph.js +3 -3
- package/dist/esm/animationControls.js +11 -4
- package/dist/esm/createIcon.js +6 -3
- package/dist/esm/headless-ui.js +3 -3
- package/dist/esm/iconStyles.js +36 -34
- package/dist/esm/icons/accessibility.js +13 -13
- package/dist/esm/icons/actions.js +37 -26
- package/dist/esm/icons/ai.js +15 -15
- package/dist/esm/icons/brand.js +7 -7
- package/dist/esm/icons/business.js +18 -81
- package/dist/esm/icons/devtech.js +31 -103
- package/dist/esm/icons/ecommerce.js +16 -16
- package/dist/esm/icons/education.js +17 -17
- package/dist/esm/icons/files.js +31 -31
- package/dist/esm/icons/fintech.js +14 -14
- package/dist/esm/icons/food.js +16 -16
- package/dist/esm/icons/fun.js +13 -13
- package/dist/esm/icons/gaming.js +15 -15
- package/dist/esm/icons/health.js +13 -22
- package/dist/esm/icons/index.js +3 -3
- package/dist/esm/icons/legal.js +13 -13
- package/dist/esm/icons/media.js +45 -24
- package/dist/esm/icons/navigation.js +14 -14
- package/dist/esm/icons/omniverk.js +10 -10
- package/dist/esm/icons/realestate.js +17 -17
- package/dist/esm/icons/saas.js +13 -13
- package/dist/esm/icons/science.js +16 -16
- package/dist/esm/icons/shapes.js +22 -22
- package/dist/esm/icons/smarthome.js +13 -13
- package/dist/esm/icons/social.js +8 -98
- package/dist/esm/icons/sports.js +14 -14
- package/dist/esm/icons/sustainability.js +15 -15
- package/dist/esm/icons/travel.js +15 -15
- package/dist/esm/icons/ui.js +39 -29
- package/dist/esm/icons/weather.js +20 -20
- package/dist/esm/index.js +3 -3
- package/dist/esm/lottieIntegration.js +3 -3
- package/dist/esm/nicetodev-icons.css +1 -1
- package/dist/esm/particleEffects.js +11 -4
- package/dist/esm/resolver.js +4 -0
- package/dist/esm/smilAnimations.js +1 -1
- package/dist/types/NiceDesktopIconExporter.d.ts +1 -0
- package/dist/types/NtdIconBadge.d.ts +12 -4
- package/dist/types/NtdIconMorph.d.ts +9 -3
- package/dist/types/NtdStateMorph.d.ts +3 -1
- package/dist/types/headless-ui.d.ts +6 -2
- package/dist/types/iconStyles.d.ts +33 -11
- package/dist/types/icons/actions.d.ts +1 -0
- package/dist/types/icons/index.d.ts +3 -3
- package/dist/types/icons/media.d.ts +3 -0
- package/dist/types/icons/ui.d.ts +2 -0
- package/dist/types/lottieIntegration.d.ts +3 -1
- package/dist/types/particleEffects.d.ts +3 -1
- package/package.json +1 -1
package/dist/esm/NtdIconMorph.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef, useState, useRef, useEffect, useCallback } from 'react';
|
|
3
|
-
import { SIZE_MAP } from './types.js';
|
|
4
3
|
import { NtdCheck, NtdMinus, NtdPlus } from './icons/actions.js';
|
|
5
4
|
import { NtdPause, NtdPlay } from './icons/media.js';
|
|
6
5
|
import { NtdClose, NtdChevronDown, NtdChevronUp, NtdMenu } from './icons/navigation.js';
|
|
7
6
|
import { NtdMoon, NtdSun } from './icons/ui.js';
|
|
7
|
+
import { SIZE_MAP } from './types.js';
|
|
8
8
|
|
|
9
9
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
10
10
|
EASING FUNCTIONS
|
|
@@ -145,7 +145,8 @@ const morphStyles = `
|
|
|
145
145
|
* />
|
|
146
146
|
* ```
|
|
147
147
|
*/
|
|
148
|
-
const NtdIconMorph =
|
|
148
|
+
const NtdIconMorph = /* @__PURE__ */ Object.assign(
|
|
149
|
+
/* @__PURE__ */ forwardRef(({ from: FromIcon, to: ToIcon, morphed: controlledMorphed, trigger = 'none', duration = 300, easing = 'ease-in-out', size = 'md', variant = 'solid', primaryColor = 'currentColor', secondaryColor, onMorphStart, onMorphEnd, className, style, 'aria-label': ariaLabel, }, ref) => {
|
|
149
150
|
var _a, _b;
|
|
150
151
|
// Internal state for self-managed triggers
|
|
151
152
|
const [internalMorphed, setInternalMorphed] = useState(false);
|
|
@@ -237,9 +238,13 @@ const NtdIconMorph = forwardRef(({ from: FromIcon, to: ToIcon, morphed: controll
|
|
|
237
238
|
height: resolvedSize,
|
|
238
239
|
cursor: trigger !== 'none' ? 'pointer' : undefined,
|
|
239
240
|
...style,
|
|
240
|
-
}, onClick: handleClick,
|
|
241
|
-
|
|
242
|
-
|
|
241
|
+
}, onClick: handleClick, onKeyDown: (e) => {
|
|
242
|
+
if (trigger === 'click' && (e.key === 'Enter' || e.key === ' ')) {
|
|
243
|
+
e.preventDefault();
|
|
244
|
+
handleClick();
|
|
245
|
+
}
|
|
246
|
+
}, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur, tabIndex: trigger === 'focus' || trigger === 'click' ? 0 : undefined, role: trigger !== 'none' ? 'button' : undefined, "aria-label": ariaLabel, "aria-pressed": trigger !== 'none' ? morphed : undefined, children: [jsx("div", { className: `ntd-morph-icon ${morphed ? 'ntd-morph-icon--inactive' : 'ntd-morph-icon--active'}`, style: transitionStyle, "aria-hidden": morphed, children: jsx(FromIcon, { ...iconProps }) }), jsx("div", { className: `ntd-morph-icon ${morphed ? 'ntd-morph-icon--active' : 'ntd-morph-icon--inactive'}`, style: transitionStyle, "aria-hidden": !morphed, children: jsx(ToIcon, { ...iconProps }) })] }));
|
|
247
|
+
}), { displayName: 'NtdIconMorph' });
|
|
243
248
|
/**
|
|
244
249
|
* Path-based morphing using CSS transitions on SVG path data.
|
|
245
250
|
* Requires browser support for CSS `d` property transitions (modern browsers).
|
|
@@ -254,7 +259,8 @@ NtdIconMorph.displayName = 'NtdIconMorph';
|
|
|
254
259
|
* />
|
|
255
260
|
* ```
|
|
256
261
|
*/
|
|
257
|
-
const NtdPathMorph =
|
|
262
|
+
const NtdPathMorph = /* @__PURE__ */ Object.assign(
|
|
263
|
+
/* @__PURE__ */ forwardRef(({ pair, morphed: controlledMorphed, trigger = 'none', duration = 300, easing = 'ease-in-out', size = 'md', color = 'currentColor', strokeWidth = 2, filled = false, onMorphStart, onMorphEnd, className, style, 'aria-label': ariaLabel, }, ref) => {
|
|
258
264
|
var _a, _b;
|
|
259
265
|
const [internalMorphed, setInternalMorphed] = useState(false);
|
|
260
266
|
const morphed = controlledMorphed !== null && controlledMorphed !== void 0 ? controlledMorphed : internalMorphed;
|
|
@@ -310,8 +316,12 @@ const NtdPathMorph = forwardRef(({ pair, morphed: controlledMorphed, trigger = '
|
|
|
310
316
|
}, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, role: trigger !== 'none' ? 'button' : 'img', "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : `${pair} icon`, "aria-pressed": trigger !== 'none' ? morphed : undefined, children: jsx("path", { d: currentPath, fill: filled ? color : 'none', stroke: filled ? 'none' : color, strokeWidth: filled ? 0 : strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", style: {
|
|
311
317
|
transition: `d ${duration}ms ${resolvedEasing}, fill ${duration}ms ${resolvedEasing}, stroke ${duration}ms ${resolvedEasing}`,
|
|
312
318
|
} }) }));
|
|
313
|
-
});
|
|
314
|
-
|
|
319
|
+
}), { displayName: 'NtdPathMorph' });
|
|
320
|
+
/* ────────────────────────────────────────────────────────────────────────────
|
|
321
|
+
PREDEFINED MORPH PAIR COMPONENT
|
|
322
|
+
Convenience wrapper for common morphing patterns
|
|
323
|
+
───────────────────────────────────────────────────────────────────────────── */
|
|
324
|
+
// Import icons lazily for predefined pairs
|
|
315
325
|
const ICON_PAIRS = {
|
|
316
326
|
'menu-close': { from: NtdMenu, to: NtdClose },
|
|
317
327
|
'play-pause': { from: NtdPlay, to: NtdPause },
|
|
@@ -335,15 +345,15 @@ const ICON_PAIRS = {
|
|
|
335
345
|
* <NtdMorphPair pair="sun-moon" trigger="click" />
|
|
336
346
|
* ```
|
|
337
347
|
*/
|
|
338
|
-
const NtdMorphPair =
|
|
348
|
+
const NtdMorphPair = /* @__PURE__ */ Object.assign(
|
|
349
|
+
/* @__PURE__ */ forwardRef(({ pair, ...props }, ref) => {
|
|
339
350
|
const iconPair = ICON_PAIRS[pair];
|
|
340
351
|
if (!iconPair) {
|
|
341
352
|
console.warn(`NtdMorphPair: Unknown pair "${pair}"`);
|
|
342
353
|
return null;
|
|
343
354
|
}
|
|
344
355
|
return jsx(NtdIconMorph, { ref: ref, from: iconPair.from, to: iconPair.to, ...props });
|
|
345
|
-
});
|
|
346
|
-
NtdMorphPair.displayName = 'NtdMorphPair';
|
|
356
|
+
}), { displayName: 'NtdMorphPair' });
|
|
347
357
|
/**
|
|
348
358
|
* Hook for managing morph state with animation awareness.
|
|
349
359
|
*
|
|
@@ -41,7 +41,8 @@ function interpolateSegments(from, to, t) {
|
|
|
41
41
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
42
42
|
COMPONENT
|
|
43
43
|
───────────────────────────────────────────────────────────────────────────── */
|
|
44
|
-
const NtdStateMorph =
|
|
44
|
+
const NtdStateMorph = /* @__PURE__ */ Object.assign(
|
|
45
|
+
/* @__PURE__ */ forwardRef(({ states, currentState, fills, strokes, strokeWidth = 2, duration = 300, easing: _easing = 'ease-in-out', size = 'md', viewBox = '0 0 24 24', className, style, 'aria-label': ariaLabel, onTransitionEnd, }, ref) => {
|
|
45
46
|
var _a;
|
|
46
47
|
const svgRef = useRef(null);
|
|
47
48
|
const animRef = useRef(0);
|
|
@@ -109,8 +110,7 @@ const NtdStateMorph = forwardRef(({ states, currentState, fills, strokes, stroke
|
|
|
109
110
|
getSvgElement: () => svgRef.current,
|
|
110
111
|
}));
|
|
111
112
|
return (jsx("svg", { ref: svgRef, xmlns: "http://www.w3.org/2000/svg", viewBox: viewBox, width: resolvedSize, height: resolvedSize, fill: "none", className: className, style: style, "aria-label": ariaLabel, role: ariaLabel ? 'img' : undefined, children: jsx("path", { d: currentPath, fill: currentFill, stroke: currentStroke, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
112
|
-
});
|
|
113
|
-
NtdStateMorph.displayName = 'NtdStateMorph';
|
|
113
|
+
}), { displayName: 'NtdStateMorph' });
|
|
114
114
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
115
115
|
COLOR INTERPOLATION
|
|
116
116
|
───────────────────────────────────────────────────────────────────────────── */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import React, {
|
|
2
|
+
import React, { useState, useRef, useMemo, useCallback, useEffect, forwardRef, useImperativeHandle } from 'react';
|
|
3
3
|
|
|
4
4
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
5
5
|
2. HELPER FUNCTIONS
|
|
@@ -237,7 +237,7 @@ function useAnimationSequence(config) {
|
|
|
237
237
|
* </AnimationController>
|
|
238
238
|
* ```
|
|
239
239
|
*/
|
|
240
|
-
const AnimationController = forwardRef(function AnimationController(props, ref) {
|
|
240
|
+
const AnimationController = /* @__PURE__ */ forwardRef(function AnimationController(props, ref) {
|
|
241
241
|
const { children, animation, autoPlay = false, playState: externalPlayState, onStart, onEnd, onStepChange, onPause, onResume, className, style, } = props;
|
|
242
242
|
// Determine if sequence or single animation
|
|
243
243
|
const isSequence = isSequenceConfig(animation);
|
|
@@ -422,7 +422,7 @@ const AnimationController = forwardRef(function AnimationController(props, ref)
|
|
|
422
422
|
* </InteractiveIcon>
|
|
423
423
|
* ```
|
|
424
424
|
*/
|
|
425
|
-
const InteractiveIcon = forwardRef(function InteractiveIcon(props, ref) {
|
|
425
|
+
const InteractiveIcon = /* @__PURE__ */ forwardRef(function InteractiveIcon(props, ref) {
|
|
426
426
|
const { children, config, disabled = false, onInteractionStart, onInteractionEnd, className, style, } = props;
|
|
427
427
|
const [isActive, setIsActive] = useState(false);
|
|
428
428
|
const [isLeaving, setIsLeaving] = useState(false);
|
|
@@ -536,7 +536,14 @@ const InteractiveIcon = forwardRef(function InteractiveIcon(props, ref) {
|
|
|
536
536
|
display: 'inline-flex',
|
|
537
537
|
cursor: disabled ? 'default' : config.trigger === 'click' ? 'pointer' : undefined,
|
|
538
538
|
...style,
|
|
539
|
-
}, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick,
|
|
539
|
+
}, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, onKeyDown: handleClick
|
|
540
|
+
? (e) => {
|
|
541
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
542
|
+
e.preventDefault();
|
|
543
|
+
handleClick();
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
: undefined, onFocus: handleFocus, onBlur: handleBlur, tabIndex: config.trigger === 'focus' || config.trigger === 'click' ? 0 : undefined, role: config.trigger === 'click' ? 'button' : undefined, children: animatedChild }));
|
|
540
547
|
});
|
|
541
548
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
542
549
|
6. UTILITY FUNCTIONS
|
package/dist/esm/createIcon.js
CHANGED
|
@@ -2,17 +2,20 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import { forwardRef, useId, useSyncExternalStore } from 'react';
|
|
3
3
|
import { sharpenTree, roundTree, wireTree, MINI_SCALE } from './sharpen.js';
|
|
4
4
|
import { generateSmilAnimation } from './smilAnimations.js';
|
|
5
|
-
import { SEMANTIC_COLOR_VARS, SEMANTIC_COLOR_DEFAULTS,
|
|
5
|
+
import { SIZE_MAP, SEMANTIC_COLOR_VARS, SEMANTIC_COLOR_DEFAULTS, GRADIENT_PRESETS } from './types.js';
|
|
6
6
|
|
|
7
7
|
/* ── Dark mode detection hook ───────────────────────── */
|
|
8
|
+
// No `matchMedia` (jsdom without a polyfill, some embedded webviews): light, and nothing to
|
|
9
|
+
// subscribe to — an icon must not throw where a page renders.
|
|
10
|
+
const hasMatchMedia = () => typeof window !== 'undefined' && typeof window.matchMedia === 'function';
|
|
8
11
|
function getColorScheme() {
|
|
9
|
-
if (
|
|
12
|
+
if (!hasMatchMedia()) {
|
|
10
13
|
return 'light';
|
|
11
14
|
}
|
|
12
15
|
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
13
16
|
}
|
|
14
17
|
function subscribeColorScheme(callback) {
|
|
15
|
-
if (
|
|
18
|
+
if (!hasMatchMedia()) {
|
|
16
19
|
return () => { };
|
|
17
20
|
}
|
|
18
21
|
const mq = window.matchMedia('(prefers-color-scheme: dark)');
|
package/dist/esm/headless-ui.js
CHANGED
|
@@ -34,7 +34,8 @@ import React, { forwardRef, createElement } from 'react';
|
|
|
34
34
|
* Simple Slot implementation for asChild pattern.
|
|
35
35
|
* Compatible with Radix UI's Slot component behavior.
|
|
36
36
|
*/
|
|
37
|
-
const Slot =
|
|
37
|
+
const Slot = /* @__PURE__ */ Object.assign(
|
|
38
|
+
/* @__PURE__ */ forwardRef(({ children, ...props }, forwardedRef) => {
|
|
38
39
|
if (!React.isValidElement(children)) {
|
|
39
40
|
return null;
|
|
40
41
|
}
|
|
@@ -43,8 +44,7 @@ const Slot = forwardRef(({ children, ...props }, forwardedRef) => {
|
|
|
43
44
|
...children.props,
|
|
44
45
|
ref: forwardedRef,
|
|
45
46
|
});
|
|
46
|
-
});
|
|
47
|
-
Slot.displayName = 'Slot';
|
|
47
|
+
}), { displayName: 'Slot' });
|
|
48
48
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
49
49
|
FORWARD REF WRAPPER
|
|
50
50
|
───────────────────────────────────────────────────────────────────────────── */
|
package/dist/esm/iconStyles.js
CHANGED
|
@@ -17,7 +17,8 @@ const overlayBase = {
|
|
|
17
17
|
// 1. NtdIconFloral 🌸
|
|
18
18
|
// Botanical vines, leaves & flowers wrapping the icon
|
|
19
19
|
// ══════════════════════════════════════════════════════
|
|
20
|
-
const NtdIconFloral =
|
|
20
|
+
const NtdIconFloral = /* @__PURE__ */ Object.assign(
|
|
21
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 2, intensity = 'normal', vineColor = '#22c55e', petalColor = '#f472b6', leafColor, className, style, }, ref) => {
|
|
21
22
|
const lc = leafColor !== null && leafColor !== void 0 ? leafColor : vineColor;
|
|
22
23
|
const dur = `${duration}s`;
|
|
23
24
|
const halfDur = `${duration * 0.5}s`;
|
|
@@ -66,13 +67,13 @@ const NtdIconFloral = forwardRef(({ children, animate = true, duration = 2, inte
|
|
|
66
67
|
];
|
|
67
68
|
const dashLen = 250;
|
|
68
69
|
return (jsxs("span", { ref: ref, className: className, style: { ...wrapperBase, ...style }, children: [children, jsxs("svg", { viewBox: "0 0 100 100", style: { ...overlayBase, inset: '-30%', width: '160%', height: '160%' }, "aria-hidden": true, children: [[vine1, vine2, ...(showExtra ? [vine3, vine4] : [])].map((d, i) => (jsx("path", { d: d, fill: "none", stroke: vineColor, strokeWidth: i < 2 ? 1.5 : 1, strokeLinecap: "round", opacity: i < 2 ? 0.85 : 0.55, ...(animate ? { strokeDasharray: dashLen, strokeDashoffset: dashLen } : {}), children: animate && (jsx("animate", { attributeName: "stroke-dashoffset", from: `${dashLen}`, to: "0", dur: dur, fill: "freeze", begin: i < 2 ? '0s' : `${duration * 0.3}s` })) }, `v${i}`))), allLeaves.map((l, i) => (jsx("g", { transform: `translate(${l.x},${l.y}) rotate(${l.a})`, children: jsxs("g", { opacity: animate ? 0 : 0.8, children: [jsx("path", { d: leafD, fill: lc }), jsx("line", { x1: 0, y1: -3, x2: 0, y2: 2.5, stroke: lc, strokeWidth: "0.4", opacity: 0.4 }), animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: "0.8", dur: halfDur, begin: bloomAt, fill: "freeze" }), jsx("animateTransform", { attributeName: "transform", type: "scale", values: "0 0;1 1", keyTimes: "0;1", keySplines: "0.34 1 0.64 1", calcMode: "spline", dur: halfDur, begin: bloomAt, fill: "freeze" })] }))] }) }, `l${i}`))), flowerPositions.map((f, fi) => (jsxs("g", { opacity: animate ? 0 : 1, children: [petalOffsets.map(([ox, oy], pi) => (jsx("circle", { cx: f.x + ox * f.r, cy: f.y + oy * f.r, r: f.r * 0.5, fill: petalColor, opacity: 0.85 }, pi))), jsx("circle", { cx: f.x, cy: f.y, r: f.r * 0.3, fill: "#fde047" }), animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: "1", dur: halfDur, begin: flowerAt, fill: "freeze" }), jsx("animateTransform", { attributeName: "transform", type: "scale", values: "0.3 0.3;1 1", keyTimes: "0;1", keySplines: "0.34 1 0.64 1", calcMode: "spline", dur: halfDur, begin: flowerAt, fill: "freeze" })] }))] }, `f${fi}`))), animate && (jsx("animateTransform", { attributeName: "transform", type: "rotate", values: "0 50 50;1 50 50;-1 50 50;0 50 50", dur: "4s", repeatCount: "indefinite", begin: `${duration}s` }))] })] }));
|
|
69
|
-
});
|
|
70
|
-
NtdIconFloral.displayName = 'NtdIconFloral';
|
|
70
|
+
}), { displayName: 'NtdIconFloral' });
|
|
71
71
|
// ══════════════════════════════════════════════════════
|
|
72
72
|
// 2. NtdIconFestive 🎉
|
|
73
73
|
// Confetti burst, stars & sparkles
|
|
74
74
|
// ══════════════════════════════════════════════════════
|
|
75
|
-
const NtdIconFestive =
|
|
75
|
+
const NtdIconFestive = /* @__PURE__ */ Object.assign(
|
|
76
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 1.5, intensity = 'normal', colors, sparkleColor = '#fbbf24', className, style, }, ref) => {
|
|
76
77
|
const cols = colors !== null && colors !== void 0 ? colors : ['#ef4444', '#f59e0b', '#22c55e', '#3b82f6', '#a855f7', '#ec4899'];
|
|
77
78
|
const dur = `${duration * 0.6}s`;
|
|
78
79
|
// Confetti pieces: position relative to center, rotation, color index
|
|
@@ -138,13 +139,13 @@ const NtdIconFestive = forwardRef(({ children, animate = true, duration = 1.5, i
|
|
|
138
139
|
const col = cols[c.ci % cols.length];
|
|
139
140
|
return (jsx("g", { transform: "translate(50,50)", children: jsxs("g", { opacity: animate ? 0 : 0.85, children: [jsx("rect", { x: c.x - 50 - 1.5, y: c.y - 50 - 3, width: 3, height: 6, rx: 0.5, fill: col, transform: `rotate(${c.r} ${c.x - 50} ${c.y - 50})` }), animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: "0.85", dur: "0.4s", begin: delay, fill: "freeze" }), jsx("animateTransform", { attributeName: "transform", type: "scale", values: "0 0;1 1", keyTimes: "0;1", keySplines: "0.34 1 0.64 1", calcMode: "spline", dur: dur, begin: delay, fill: "freeze" })] }))] }) }, `c${i}`));
|
|
140
141
|
}), stars.map((s, i) => (jsxs("g", { transform: `translate(${s.x},${s.y}) scale(${s.s})`, children: [jsx("path", { d: starD, fill: sparkleColor, opacity: animate ? 0 : 0.9, children: animate && (jsx("animate", { attributeName: "opacity", from: "0", to: "0.9", dur: "0.5s", begin: `${(i * 0.15 + 0.3).toFixed(2)}s`, fill: "freeze" })) }), animate && (jsx("animateTransform", { attributeName: "transform", type: "scale", values: `${s.s};${s.s * 1.3};${s.s}`, dur: "1.5s", repeatCount: "indefinite", begin: `${duration + 0.5}s` }))] }, `s${i}`))), sparkles.map((sp, i) => (jsx("circle", { cx: sp.cx, cy: sp.cy, r: sp.r, fill: sparkleColor, opacity: animate ? 0 : 0.7, children: animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: "0.7", dur: "0.3s", begin: `${(duration * 0.4 + i * 0.08).toFixed(2)}s`, fill: "freeze" }), jsx("animate", { attributeName: "opacity", values: "0.3;0.9;0.3", dur: `${1 + i * 0.3}s`, repeatCount: "indefinite", begin: `${duration}s` })] })) }, `sp${i}`)))] })] }));
|
|
141
|
-
});
|
|
142
|
-
NtdIconFestive.displayName = 'NtdIconFestive';
|
|
142
|
+
}), { displayName: 'NtdIconFestive' });
|
|
143
143
|
// ══════════════════════════════════════════════════════
|
|
144
144
|
// 3. NtdIconNeon 💡
|
|
145
145
|
// Multi-layered glow with neon sign flicker
|
|
146
146
|
// ══════════════════════════════════════════════════════
|
|
147
|
-
const NtdIconNeon =
|
|
147
|
+
const NtdIconNeon = /* @__PURE__ */ Object.assign(
|
|
148
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 4, intensity = 'normal', glowColor = '#0ff', secondaryGlow, flicker = true, className, style, }, ref) => {
|
|
148
149
|
const uid = useId().replace(/[^a-zA-Z0-9]/g, '_');
|
|
149
150
|
const glow2 = secondaryGlow !== null && secondaryGlow !== void 0 ? secondaryGlow : glowColor;
|
|
150
151
|
const blur = intensity === 'dense' ? 8 : intensity === 'subtle' ? 3 : 5;
|
|
@@ -169,13 +170,13 @@ const NtdIconNeon = forwardRef(({ children, animate = true, duration = 4, intens
|
|
|
169
170
|
filter: filterValue,
|
|
170
171
|
...(animate && flicker ? { animation: `${animName} ${duration}s infinite` } : {}),
|
|
171
172
|
}, children: children })] }));
|
|
172
|
-
});
|
|
173
|
-
NtdIconNeon.displayName = 'NtdIconNeon';
|
|
173
|
+
}), { displayName: 'NtdIconNeon' });
|
|
174
174
|
// ══════════════════════════════════════════════════════
|
|
175
175
|
// 4. NtdIconSketch ✏️
|
|
176
176
|
// Hand-drawn look with SVG turbulence + scribble overlay
|
|
177
177
|
// ══════════════════════════════════════════════════════
|
|
178
|
-
const NtdIconSketch =
|
|
178
|
+
const NtdIconSketch = /* @__PURE__ */ Object.assign(
|
|
179
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 1.5, intensity = 'normal', strokeColor = '#374151', roughness = 2, className, style, }, ref) => {
|
|
179
180
|
const uid = useId().replace(/[^a-zA-Z0-9]/g, '_');
|
|
180
181
|
const filterId = `ntd_sketch_${uid}`;
|
|
181
182
|
const dur = `${duration}s`;
|
|
@@ -195,13 +196,13 @@ const NtdIconSketch = forwardRef(({ children, animate = true, duration = 1.5, in
|
|
|
195
196
|
];
|
|
196
197
|
return (jsxs("span", { ref: ref, className: className, style: { ...wrapperBase, ...style }, children: [jsx("svg", { style: { position: 'absolute', width: 0, height: 0 }, "aria-hidden": true, children: jsx("defs", { children: jsxs("filter", { id: filterId, children: [jsx("feTurbulence", { type: "turbulence", baseFrequency: 0.02 + roughness * 0.008, numOctaves: 3, seed: 2, result: "noise" }), jsx("feDisplacementMap", { in: "SourceGraphic", in2: "noise", scale: roughness, xChannelSelector: "R", yChannelSelector: "G" })] }) }) }), jsx("span", { style: { display: 'inline-flex', filter: `url(#${filterId})` }, children: children }), jsxs("svg", { viewBox: "0 0 100 100", style: { ...overlayBase, inset: '-20%', width: '140%', height: '140%' }, "aria-hidden": true, children: [jsx("path", { d: scribbleMain, fill: "none", stroke: strokeColor, strokeWidth: "1", strokeLinecap: "round", opacity: 0.5, ...(animate ? { strokeDasharray: dashLen, strokeDashoffset: dashLen } : {}), children: animate && (jsx("animate", { attributeName: "stroke-dashoffset", from: `${dashLen}`, to: "0", dur: dur, fill: "freeze" })) }), intensity !== 'subtle' &&
|
|
197
198
|
scribbleExtra.slice(0, intensity === 'dense' ? 2 : 1).map((d, i) => (jsx("path", { d: d, fill: "none", stroke: strokeColor, strokeWidth: "0.8", strokeLinecap: "round", opacity: 0.35, ...(animate ? { strokeDasharray: dashLen, strokeDashoffset: dashLen } : {}), children: animate && (jsx("animate", { attributeName: "stroke-dashoffset", from: `${dashLen}`, to: "0", dur: dur, fill: "freeze", begin: `${0.3 + i * 0.2}s` })) }, `se${i}`))), hatchPositions.slice(0, hatchCount).map((p, i) => (jsx("line", { x1: p.x1, y1: p.y1, x2: p.x2, y2: p.y2, stroke: strokeColor, strokeWidth: "0.6", strokeLinecap: "round", opacity: animate ? 0 : 0.3, children: animate && (jsx("animate", { attributeName: "opacity", from: "0", to: "0.3", dur: "0.3s", begin: `${duration * 0.7 + i * 0.1}s`, fill: "freeze" })) }, `h${i}`)))] })] }));
|
|
198
|
-
});
|
|
199
|
-
NtdIconSketch.displayName = 'NtdIconSketch';
|
|
199
|
+
}), { displayName: 'NtdIconSketch' });
|
|
200
200
|
// ══════════════════════════════════════════════════════
|
|
201
201
|
// 5. NtdIconWatercolor 🎨
|
|
202
202
|
// Soft paint blobs & bleed effect behind the icon
|
|
203
203
|
// ══════════════════════════════════════════════════════
|
|
204
|
-
const NtdIconWatercolor =
|
|
204
|
+
const NtdIconWatercolor = /* @__PURE__ */ Object.assign(
|
|
205
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 2, intensity = 'normal', tintColor = '#818cf8', bleedColor = '#f0abfc', className, style, }, ref) => {
|
|
205
206
|
const uid = useId().replace(/[^a-zA-Z0-9]/g, '_');
|
|
206
207
|
const filterId = `ntd_wc_${uid}`;
|
|
207
208
|
const blobFilter = `${filterId}_blob`;
|
|
@@ -244,13 +245,13 @@ const NtdIconWatercolor = forwardRef(({ children, animate = true, duration = 2,
|
|
|
244
245
|
position: 'relative',
|
|
245
246
|
zIndex: 1,
|
|
246
247
|
}, children: children })] }));
|
|
247
|
-
});
|
|
248
|
-
NtdIconWatercolor.displayName = 'NtdIconWatercolor';
|
|
248
|
+
}), { displayName: 'NtdIconWatercolor' });
|
|
249
249
|
// ══════════════════════════════════════════════════════
|
|
250
250
|
// 6. NtdIconCosmic ✨
|
|
251
251
|
// Stars, nebula glow & constellation lines
|
|
252
252
|
// ══════════════════════════════════════════════════════
|
|
253
|
-
const NtdIconCosmic =
|
|
253
|
+
const NtdIconCosmic = /* @__PURE__ */ Object.assign(
|
|
254
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 2, intensity = 'normal', starColor = '#e2e8f0', nebulaColor = '#7c3aed', nebulaColor2 = '#2563eb', className, style, }, ref) => {
|
|
254
255
|
const uid = useId().replace(/[^a-zA-Z0-9]/g, '_');
|
|
255
256
|
const nebulaFilter = `ntd_cosm_${uid}`;
|
|
256
257
|
// Stars
|
|
@@ -303,7 +304,9 @@ const NtdIconCosmic = forwardRef(({ children, animate = true, duration = 2, inte
|
|
|
303
304
|
const nebulae = [
|
|
304
305
|
{ cx: 25, cy: 25, r: 16, color: nebulaColor, op: 0.12 },
|
|
305
306
|
{ cx: 75, cy: 75, r: 18, color: nebulaColor2, op: 0.1 },
|
|
306
|
-
...(intensity !== 'subtle'
|
|
307
|
+
...(intensity !== 'subtle'
|
|
308
|
+
? [{ cx: 50, cy: 50, r: 14, color: nebulaColor, op: 0.08 }]
|
|
309
|
+
: []),
|
|
307
310
|
...(intensity === 'dense'
|
|
308
311
|
? [
|
|
309
312
|
{ cx: 80, cy: 20, r: 12, color: nebulaColor2, op: 0.09 },
|
|
@@ -313,13 +316,13 @@ const NtdIconCosmic = forwardRef(({ children, animate = true, duration = 2, inte
|
|
|
313
316
|
];
|
|
314
317
|
const lineLen = 80;
|
|
315
318
|
return (jsxs("span", { ref: ref, className: className, style: { ...wrapperBase, ...style }, children: [jsx("svg", { style: { position: 'absolute', width: 0, height: 0 }, "aria-hidden": true, children: jsx("defs", { children: jsx("filter", { id: nebulaFilter, children: jsx("feGaussianBlur", { stdDeviation: "4" }) }) }) }), jsxs("svg", { viewBox: "0 0 100 100", style: { ...overlayBase, inset: '-30%', width: '160%', height: '160%', zIndex: 0 }, "aria-hidden": true, children: [nebulae.map((n, i) => (jsx("circle", { cx: n.cx, cy: n.cy, r: n.r, fill: n.color, opacity: animate ? 0 : n.op, filter: `url(#${nebulaFilter})`, children: animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: `${n.op}`, dur: `${duration}s`, fill: "freeze" }), jsx("animate", { attributeName: "opacity", values: `${n.op};${n.op * 1.5};${n.op}`, dur: "5s", repeatCount: "indefinite", begin: `${duration}s` }), jsx("animate", { attributeName: "r", values: `${n.r};${n.r * 1.1};${n.r}`, dur: "6s", repeatCount: "indefinite", begin: `${duration}s` })] })) }, `nb${i}`))), constellations.map((c, i) => (jsx("line", { x1: c.from[0], y1: c.from[1], x2: c.to[0], y2: c.to[1], stroke: starColor, strokeWidth: "0.3", opacity: 0.25, ...(animate ? { strokeDasharray: lineLen, strokeDashoffset: lineLen } : {}), children: animate && (jsx("animate", { attributeName: "stroke-dashoffset", from: `${lineLen}`, to: "0", dur: `${duration * 0.8}s`, begin: `${(i * 0.2).toFixed(1)}s`, fill: "freeze" })) }, `cl${i}`)))] }), jsx("span", { style: { display: 'inline-flex', position: 'relative', zIndex: 1 }, children: children }), jsxs("svg", { viewBox: "0 0 100 100", style: { ...overlayBase, inset: '-30%', width: '160%', height: '160%', zIndex: 2 }, "aria-hidden": true, children: [allStars.map((s, i) => (jsx("circle", { cx: s.cx, cy: s.cy, r: s.r, fill: starColor, opacity: animate ? 0 : 0.8, children: animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: "0.8", dur: `${duration * 0.5}s`, begin: `${(i * 0.1).toFixed(2)}s`, fill: "freeze" }), jsx("animate", { attributeName: "opacity", values: "0.4;1;0.4", dur: `${1.5 + (i % 4) * 0.4}s`, repeatCount: "indefinite", begin: `${duration}s` }), jsx("animate", { attributeName: "r", values: `${s.r};${s.r * 1.4};${s.r}`, dur: `${2 + (i % 3) * 0.5}s`, repeatCount: "indefinite", begin: `${duration}s` })] })) }, `st${i}`))), animate && (jsx("animateTransform", { attributeName: "transform", type: "rotate", from: "0 50 50", to: "360 50 50", dur: "120s", repeatCount: "indefinite" }))] })] }));
|
|
316
|
-
});
|
|
317
|
-
NtdIconCosmic.displayName = 'NtdIconCosmic';
|
|
319
|
+
}), { displayName: 'NtdIconCosmic' });
|
|
318
320
|
// ══════════════════════════════════════════════════════
|
|
319
321
|
// 7. NtdIconSteampunk ⚙️
|
|
320
322
|
// Rotating gears, copper pipes, brass rivets & steam puffs
|
|
321
323
|
// ══════════════════════════════════════════════════════
|
|
322
|
-
const NtdIconSteampunk =
|
|
324
|
+
const NtdIconSteampunk = /* @__PURE__ */ Object.assign(
|
|
325
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 3, intensity = 'normal', brassColor = '#b45309', pipeColor = '#78350f', steamColor = '#d1d5db', className, style, }, ref) => {
|
|
323
326
|
// Build toothed gear path from a center point, radius and tooth count
|
|
324
327
|
const makeGear = (cx, cy, r, teeth) => {
|
|
325
328
|
const inner = r * 0.68;
|
|
@@ -385,13 +388,13 @@ const NtdIconSteampunk = forwardRef(({ children, animate = true, duration = 3, i
|
|
|
385
388
|
];
|
|
386
389
|
return (jsxs("span", { ref: ref, className: className, style: { ...wrapperBase, ...style }, children: [jsxs("svg", { viewBox: "0 0 100 100", style: { ...overlayBase, inset: '-20%', width: '140%', height: '140%', zIndex: 0 }, "aria-hidden": true, children: [pipes.map((p, i) => (jsx("path", { d: p.d, stroke: pipeColor, strokeWidth: p.w, fill: "none", strokeLinecap: "round", opacity: 0.55 }, `pipe${i}`))), rivets.map((rv, i) => (jsx("circle", { cx: rv.cx, cy: rv.cy, r: 1.5, fill: brassColor, opacity: 0.7 }, `rv${i}`)))] }), jsx("span", { style: { display: 'inline-flex', position: 'relative', zIndex: 1 }, children: children }), jsxs("svg", { viewBox: "0 0 100 100", style: { ...overlayBase, inset: '-20%', width: '140%', height: '140%', zIndex: 2 }, "aria-hidden": true, children: [gears.map((g, i) => (jsxs("g", { children: [jsx("path", { d: makeGear(g.cx, g.cy, g.r, g.teeth), fill: brassColor, opacity: 0.78, children: animate && (jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${g.cx} ${g.cy}`, to: `${g.dir * 360} ${g.cx} ${g.cy}`, dur: `${duration * g.dm}s`, repeatCount: "indefinite" })) }), jsx("circle", { cx: g.cx, cy: g.cy, r: g.r * 0.3, fill: pipeColor, opacity: 0.85 }), jsx("circle", { cx: g.cx, cy: g.cy, r: g.r * 0.12, fill: brassColor, opacity: 0.6 })] }, `gear${i}`))), animate &&
|
|
387
390
|
steamPuffs.map((sp, i) => (jsxs("circle", { cx: sp.cx, cy: sp.cy, r: sp.r, fill: steamColor, opacity: 0, children: [jsx("animate", { attributeName: "opacity", values: "0;0.45;0", dur: "2.4s", begin: `${i * 0.7}s`, repeatCount: "indefinite" }), jsx("animate", { attributeName: "cy", values: `${sp.cy};${sp.cy - 12}`, dur: "2.4s", begin: `${i * 0.7}s`, repeatCount: "indefinite" }), jsx("animate", { attributeName: "r", values: `${sp.r};${sp.r * 2.2}`, dur: "2.4s", begin: `${i * 0.7}s`, repeatCount: "indefinite" })] }, `stm${i}`)))] })] }));
|
|
388
|
-
});
|
|
389
|
-
NtdIconSteampunk.displayName = 'NtdIconSteampunk';
|
|
391
|
+
}), { displayName: 'NtdIconSteampunk' });
|
|
390
392
|
// ══════════════════════════════════════════════════════
|
|
391
393
|
// 8. NtdIconFrost ❄️
|
|
392
394
|
// Hexagonal snowflake crystals, sparkles & frozen glow
|
|
393
395
|
// ══════════════════════════════════════════════════════
|
|
394
|
-
const NtdIconFrost =
|
|
396
|
+
const NtdIconFrost = /* @__PURE__ */ Object.assign(
|
|
397
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 2, intensity = 'normal', crystalColor = '#bae6fd', glowColor = '#38bdf8', className, style, }, ref) => {
|
|
395
398
|
const uid = useId().replace(/[^a-zA-Z0-9]/g, '_');
|
|
396
399
|
const glowFilterId = `ntd_frost_${uid}`;
|
|
397
400
|
const crystalDefs = [
|
|
@@ -451,13 +454,13 @@ const NtdIconFrost = forwardRef(({ children, animate = true, duration = 2, inten
|
|
|
451
454
|
{ cx: 86, cy: 96, r: 1.1 },
|
|
452
455
|
];
|
|
453
456
|
return (jsxs("span", { ref: ref, className: className, style: { ...wrapperBase, ...style }, children: [jsx("svg", { style: { position: 'absolute', width: 0, height: 0 }, "aria-hidden": true, children: jsx("defs", { children: jsx("filter", { id: glowFilterId, children: jsx("feGaussianBlur", { stdDeviation: "6" }) }) }) }), jsxs("svg", { viewBox: "0 0 100 100", style: { ...overlayBase, inset: '-25%', width: '150%', height: '150%', zIndex: 0 }, "aria-hidden": true, children: [jsx("circle", { cx: "50", cy: "50", r: "30", fill: glowColor, opacity: 0.07, filter: `url(#${glowFilterId})`, children: animate && (jsx("animate", { attributeName: "opacity", values: "0.04;0.11;0.04", dur: "4s", repeatCount: "indefinite" })) }), allArms.map((arm, i) => (jsx("line", { x1: arm.x1, y1: arm.y1, x2: arm.x2, y2: arm.y2, stroke: crystalColor, strokeWidth: "0.9", strokeLinecap: "round", opacity: animate ? 0 : 0.7, children: animate && (jsx("animate", { attributeName: "opacity", from: "0", to: "0.7", dur: `${duration * 0.4}s`, begin: `${arm.delay.toFixed(2)}s`, fill: "freeze" })) }, `arm${i}`))), allTicks.map((tick, i) => (jsx("line", { x1: tick.x1, y1: tick.y1, x2: tick.x2, y2: tick.y2, stroke: crystalColor, strokeWidth: "0.6", strokeLinecap: "round", opacity: animate ? 0 : 0.45, children: animate && (jsx("animate", { attributeName: "opacity", from: "0", to: "0.45", dur: `${duration * 0.3}s`, begin: `${tick.delay.toFixed(2)}s`, fill: "freeze" })) }, `tick${i}`))), sparkles.slice(0, intensity === 'subtle' ? 4 : 8).map((sp, i) => (jsx("circle", { cx: sp.cx, cy: sp.cy, r: sp.r, fill: glowColor, opacity: animate ? 0 : 0.8, children: animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: "0.8", dur: "0.35s", begin: `${(duration * 0.65 + i * 0.08).toFixed(2)}s`, fill: "freeze" }), jsx("animate", { attributeName: "opacity", values: "0.3;1;0.3", dur: `${1 + i * 0.2}s`, repeatCount: "indefinite", begin: `${duration}s` })] })) }, `fsp${i}`)))] }), jsx("span", { style: { display: 'inline-flex', position: 'relative', zIndex: 1 }, children: children })] }));
|
|
454
|
-
});
|
|
455
|
-
NtdIconFrost.displayName = 'NtdIconFrost';
|
|
457
|
+
}), { displayName: 'NtdIconFrost' });
|
|
456
458
|
// ══════════════════════════════════════════════════════
|
|
457
459
|
// 9. NtdIconPixel 👾
|
|
458
460
|
// Retro pixel corners, scanline scroll & glitch animation
|
|
459
461
|
// ══════════════════════════════════════════════════════
|
|
460
|
-
const NtdIconPixel =
|
|
462
|
+
const NtdIconPixel = /* @__PURE__ */ Object.assign(
|
|
463
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 0.5, intensity = 'normal', pixelColor = '#22d3ee', scanlineColor = '#000000', glitchEffect = true, className, style, }, ref) => {
|
|
461
464
|
const uid = useId().replace(/[^a-zA-Z0-9]/g, '_');
|
|
462
465
|
const scanAnimName = `ntd_pixel_scan_${uid}`;
|
|
463
466
|
const glitchAnimName = `ntd_pixel_glitch_${uid}`;
|
|
@@ -529,13 +532,13 @@ const NtdIconPixel = forwardRef(({ children, animate = true, duration = 0.5, int
|
|
|
529
532
|
background: `linear-gradient(transparent, ${pixelColor}20, transparent)`,
|
|
530
533
|
animation: `${scanAnimName} ${duration + 2}s linear infinite`,
|
|
531
534
|
} }) }))] }));
|
|
532
|
-
});
|
|
533
|
-
NtdIconPixel.displayName = 'NtdIconPixel';
|
|
535
|
+
}), { displayName: 'NtdIconPixel' });
|
|
534
536
|
// ══════════════════════════════════════════════════════
|
|
535
537
|
// 10. NtdIconOrganic 🦠
|
|
536
538
|
// Pulsing cell blobs, membrane rings & floating bubbles
|
|
537
539
|
// ══════════════════════════════════════════════════════
|
|
538
|
-
const NtdIconOrganic =
|
|
540
|
+
const NtdIconOrganic = /* @__PURE__ */ Object.assign(
|
|
541
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 3, intensity = 'normal', cellColor = '#86efac', membraneColor = '#4ade80', nucleusColor = '#fbbf24', className, style, }, ref) => {
|
|
539
542
|
const uid = useId().replace(/[^a-zA-Z0-9]/g, '_');
|
|
540
543
|
const blobFilterId = `ntd_org_${uid}`;
|
|
541
544
|
const cells = [
|
|
@@ -574,14 +577,14 @@ const NtdIconOrganic = forwardRef(({ children, animate = true, duration = 3, int
|
|
|
574
577
|
{ cx: 8, cy: 8, r: 10 },
|
|
575
578
|
{ cx: 92, cy: 92, r: 10 },
|
|
576
579
|
].map((ring, i) => (jsx("circle", { cx: ring.cx, cy: ring.cy, r: ring.r, fill: "none", stroke: membraneColor, strokeWidth: "0.7", opacity: animate ? 0 : 0.35, children: animate && (jsx("animate", { attributeName: "opacity", from: "0", to: "0.35", dur: `${duration * 0.7}s`, fill: "freeze" })) }, `ring${i}`))), bubbles.slice(0, bubbleCount).map((b, i) => (jsx("circle", { cx: b.cx, cy: b.cy, r: b.r, fill: nucleusColor, opacity: animate ? 0 : 0.28, children: animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: "0.28", dur: "0.5s", begin: `${(duration * 0.65 + i * 0.18).toFixed(2)}s`, fill: "freeze" }), jsx("animate", { attributeName: "cy", values: `${b.cy};${b.cy - 5};${b.cy}`, dur: `${2.2 + i * 0.45}s`, repeatCount: "indefinite", begin: `${duration}s` })] })) }, `ob${i}`)))] }), jsx("span", { style: { display: 'inline-flex', position: 'relative', zIndex: 1 }, children: children })] }));
|
|
577
|
-
});
|
|
578
|
-
NtdIconOrganic.displayName = 'NtdIconOrganic';
|
|
580
|
+
}), { displayName: 'NtdIconOrganic' });
|
|
579
581
|
// ══════════════════════════════════════════════════════
|
|
580
582
|
// 11. NtdIconGeometric 🔷
|
|
581
583
|
// Sacred geometry: concentric rings, Star of David
|
|
582
584
|
// triangles & slowly rotating corner diamonds
|
|
583
585
|
// ══════════════════════════════════════════════════════
|
|
584
|
-
const NtdIconGeometric =
|
|
586
|
+
const NtdIconGeometric = /* @__PURE__ */ Object.assign(
|
|
587
|
+
/* @__PURE__ */ forwardRef(({ children, animate = true, duration = 8, intensity = 'normal', primaryColor = '#6366f1', secondaryColor = '#8b5cf6', accentColor = '#a78bfa', className, style, }, ref) => {
|
|
585
588
|
const makeTriangle = (cx, cy, r, rotDeg) => Array.from({ length: 3 }, (_, i) => {
|
|
586
589
|
const a = ((i * 120 - 90 + rotDeg) * Math.PI) / 180;
|
|
587
590
|
return `${(cx + r * Math.cos(a)).toFixed(2)},${(cy + r * Math.sin(a)).toFixed(2)}`;
|
|
@@ -626,7 +629,6 @@ const NtdIconGeometric = forwardRef(({ children, animate = true, duration = 8, i
|
|
|
626
629
|
];
|
|
627
630
|
const diamondPath = (cx, cy, s = 3) => `M${cx},${cy - s} L${cx + s},${cy} L${cx},${cy + s} L${cx - s},${cy}Z`;
|
|
628
631
|
return (jsxs("span", { ref: ref, className: className, style: { ...wrapperBase, ...style }, children: [jsxs("svg", { viewBox: "0 0 100 100", style: { ...overlayBase, inset: '-30%', width: '160%', height: '160%', zIndex: 0 }, "aria-hidden": true, children: [rings.map((ring, i) => (jsx("circle", { cx: "50", cy: "50", r: ring.r, fill: "none", stroke: ring.color, strokeWidth: "0.6", strokeDasharray: ring.dash, opacity: ring.op, children: animate && (jsx("animateTransform", { attributeName: "transform", type: "rotate", from: "0 50 50", to: `${ring.dir * 360} 50 50`, dur: `${ring.dur}s`, repeatCount: "indefinite" })) }, `rng${i}`))), triangles.map((t, i) => (jsx("polygon", { points: makeTriangle(50, 50, t.r, t.rot), fill: "none", stroke: t.color, strokeWidth: "0.5", opacity: t.op, children: animate && (jsx("animateTransform", { attributeName: "transform", type: "rotate", from: "0 50 50", to: `${t.dir * 360} 50 50`, dur: `${t.dur}s`, repeatCount: "indefinite" })) }, `tri${i}`))), diamonds.map((d, i) => (jsx("path", { d: diamondPath(d.cx, d.cy), fill: accentColor, opacity: animate ? 0 : 0.5, children: animate && (jsxs(Fragment, { children: [jsx("animate", { attributeName: "opacity", from: "0", to: "0.5", dur: `${duration * 0.25}s`, begin: `${(i * 0.09).toFixed(2)}s`, fill: "freeze" }), jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${d.cx} ${d.cy}`, to: `360 ${d.cx} ${d.cy}`, dur: `${3 + i * 0.6}s`, repeatCount: "indefinite" })] })) }, `dm${i}`)))] }), jsx("span", { style: { display: 'inline-flex', position: 'relative', zIndex: 1 }, children: children })] }));
|
|
629
|
-
});
|
|
630
|
-
NtdIconGeometric.displayName = 'NtdIconGeometric';
|
|
632
|
+
}), { displayName: 'NtdIconGeometric' });
|
|
631
633
|
|
|
632
634
|
export { NtdIconCosmic, NtdIconFestive, NtdIconFloral, NtdIconFrost, NtdIconGeometric, NtdIconNeon, NtdIconOrganic, NtdIconPixel, NtdIconSketch, NtdIconSteampunk, NtdIconWatercolor };
|
|
@@ -4,7 +4,7 @@ import { createIcon } from '../createIcon.js';
|
|
|
4
4
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
5
5
|
UNIVERSAL ACCESS
|
|
6
6
|
───────────────────────────────────────────────────────────────────────────── */
|
|
7
|
-
const NtdAccessibility = createIcon({
|
|
7
|
+
const NtdAccessibility = /* @__PURE__ */ createIcon({
|
|
8
8
|
displayName: 'NtdAccessibility',
|
|
9
9
|
paths: {
|
|
10
10
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "4", r: "2", fill: primaryColor }), jsx("path", { d: "M12 8c-4 0-6 1-6 2v2h3v8h2v-5h2v5h2v-8h3v-2c0-1-2-2-6-2z", fill: primaryColor })] })),
|
|
@@ -13,7 +13,7 @@ const NtdAccessibility = createIcon({
|
|
|
13
13
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "4", r: "2", fill: primaryColor }), jsx("circle", { cx: "12", cy: "4", r: "2", fill: "white", opacity: "0.08" }), jsx("path", { d: "M12 8c-4 0-6 1-6 2v2h3v8h2v-5h2v5h2v-8h3v-2c0-1-2-2-6-2z", fill: secondaryColor })] })),
|
|
14
14
|
},
|
|
15
15
|
});
|
|
16
|
-
const NtdWheelchair = createIcon({
|
|
16
|
+
const NtdWheelchair = /* @__PURE__ */ createIcon({
|
|
17
17
|
displayName: 'NtdWheelchair',
|
|
18
18
|
paths: {
|
|
19
19
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "4", r: "2", fill: primaryColor }), jsx("path", { d: "M10 8v6H6l-1 4h3l1-2h5a4 4 0 01-4 4 4 4 0 01-4-4H4a6 6 0 006 6 6 6 0 006-6v-8h-6z", fill: primaryColor }), jsx("path", { d: "M16 14l2 4h2l-2-4", fill: primaryColor })] })),
|
|
@@ -22,7 +22,7 @@ const NtdWheelchair = createIcon({
|
|
|
22
22
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "4", r: "2", fill: primaryColor }), jsx("circle", { cx: "12", cy: "4", r: "2", fill: "white", opacity: "0.08" }), jsx("path", { d: "M10 8v6H6l-1 4h3l1-2h5a4 4 0 01-4 4 4 4 0 01-4-4H4a6 6 0 006 6 6 6 0 006-6v-8h-6z", fill: secondaryColor }), jsx("path", { d: "M16 14l2 4h2l-2-4", fill: "#3B82F6" })] })),
|
|
23
23
|
},
|
|
24
24
|
});
|
|
25
|
-
const NtdBlind = createIcon({
|
|
25
|
+
const NtdBlind = /* @__PURE__ */ createIcon({
|
|
26
26
|
displayName: 'NtdBlind',
|
|
27
27
|
paths: {
|
|
28
28
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "4", r: "2", fill: primaryColor }), jsx("path", { d: "M14 8h-4v5l-3 7 2 1 2.5-5.5L14 20h2l-3-6V8zM8 12l-4 1v2l4-1v-2z", fill: primaryColor })] })),
|
|
@@ -34,7 +34,7 @@ const NtdBlind = createIcon({
|
|
|
34
34
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
35
35
|
SENSORY
|
|
36
36
|
───────────────────────────────────────────────────────────────────────────── */
|
|
37
|
-
const NtdDeaf = createIcon({
|
|
37
|
+
const NtdDeaf = /* @__PURE__ */ createIcon({
|
|
38
38
|
displayName: 'NtdDeaf',
|
|
39
39
|
paths: {
|
|
40
40
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: "M10 5a5 5 0 015 5c0 2-1 3-2 4s-2 2-2 4v2", stroke: primaryColor, strokeWidth: "2", fill: "none", strokeLinecap: "round" }), jsx("path", { d: "M7 8a3 3 0 013-3", stroke: primaryColor, strokeWidth: "2", fill: "none", strokeLinecap: "round" }), jsx("path", { d: "M4 4l16 16", stroke: primaryColor, strokeWidth: "2", strokeLinecap: "round" })] })),
|
|
@@ -43,7 +43,7 @@ const NtdDeaf = createIcon({
|
|
|
43
43
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: "M10 5a5 5 0 015 5c0 2-1 3-2 4s-2 2-2 4v2", stroke: primaryColor, strokeWidth: "2", fill: "none", strokeLinecap: "round" }), jsx("path", { d: "M7 8a3 3 0 013-3", stroke: secondaryColor, strokeWidth: "1.8", fill: "none", strokeLinecap: "round" }), jsx("path", { d: "M4 4l16 16", stroke: "#3B82F6", strokeWidth: "1.5", strokeLinecap: "round" })] })),
|
|
44
44
|
},
|
|
45
45
|
});
|
|
46
|
-
const NtdSignLanguage = createIcon({
|
|
46
|
+
const NtdSignLanguage = /* @__PURE__ */ createIcon({
|
|
47
47
|
displayName: 'NtdSignLanguage',
|
|
48
48
|
paths: {
|
|
49
49
|
solid: ({ primaryColor }) => (jsx(Fragment, { children: jsx("path", { d: "M8 13V7a2 2 0 014 0v2M12 9V6a2 2 0 014 0v3M16 9V7a2 2 0 014 0v6c0 4-3 7-7 7h-1c-3 0-6-2-6-5v-2a2 2 0 014 0v1", fill: primaryColor }) })),
|
|
@@ -52,7 +52,7 @@ const NtdSignLanguage = createIcon({
|
|
|
52
52
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: "M8 13V7a2 2 0 014 0v2M12 9V6a2 2 0 014 0v3M16 9V7a2 2 0 014 0v6c0 4-3 7-7 7h-1c-3 0-6-2-6-5v-2a2 2 0 014 0v1", fill: primaryColor }), jsx("path", { d: "M8 13V7a2 2 0 014 0v2M12 9V6a2 2 0 014 0v3M16 9V7a2 2 0 014 0v6c0 4-3 7-7 7h-1c-3 0-6-2-6-5v-2a2 2 0 014 0v1", fill: "white", opacity: "0.1" })] })),
|
|
53
53
|
},
|
|
54
54
|
});
|
|
55
|
-
const NtdBraille = createIcon({
|
|
55
|
+
const NtdBraille = /* @__PURE__ */ createIcon({
|
|
56
56
|
displayName: 'NtdBraille',
|
|
57
57
|
paths: {
|
|
58
58
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "6", cy: "6", r: "2", fill: primaryColor }), jsx("circle", { cx: "6", cy: "12", r: "2", fill: primaryColor }), jsx("circle", { cx: "6", cy: "18", r: "2", fill: primaryColor }), jsx("circle", { cx: "12", cy: "6", r: "2", fill: primaryColor }), jsx("circle", { cx: "12", cy: "12", r: "2", fill: primaryColor, opacity: "0.3" }), jsx("circle", { cx: "12", cy: "18", r: "2", fill: primaryColor }), jsx("circle", { cx: "18", cy: "6", r: "2", fill: primaryColor, opacity: "0.3" }), jsx("circle", { cx: "18", cy: "12", r: "2", fill: primaryColor }), jsx("circle", { cx: "18", cy: "18", r: "2", fill: primaryColor, opacity: "0.3" })] })),
|
|
@@ -61,7 +61,7 @@ const NtdBraille = createIcon({
|
|
|
61
61
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "6", cy: "6", r: "2", fill: primaryColor }), jsx("circle", { cx: "6", cy: "6", r: "2", fill: "white", opacity: "0.08" }), jsx("circle", { cx: "6", cy: "12", r: "2", fill: secondaryColor }), jsx("circle", { cx: "6", cy: "18", r: "2", fill: "#3B82F6" }), jsx("circle", { cx: "12", cy: "6", r: "2", fill: "#10B981" }), jsx("circle", { cx: "12", cy: "12", r: "2", fill: "#F59E0B", opacity: "0.3" }), jsx("circle", { cx: "12", cy: "18", r: "2", fill: "#F59E0B" }), jsx("circle", { cx: "18", cy: "6", r: "2", fill: "#F59E0B", opacity: "0.3" }), jsx("circle", { cx: "18", cy: "12", r: "2", fill: "#F59E0B" }), jsx("circle", { cx: "18", cy: "18", r: "2", fill: "#F59E0B", opacity: "0.3" })] })),
|
|
62
62
|
},
|
|
63
63
|
});
|
|
64
|
-
const NtdAudioDescription = createIcon({
|
|
64
|
+
const NtdAudioDescription = /* @__PURE__ */ createIcon({
|
|
65
65
|
displayName: 'NtdAudioDescription',
|
|
66
66
|
paths: {
|
|
67
67
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: primaryColor }), jsx("text", { x: "7", y: "15", fill: "white", fontSize: "8", fontWeight: "bold", fontFamily: "system-ui", children: "AD" })] })),
|
|
@@ -70,7 +70,7 @@ const NtdAudioDescription = createIcon({
|
|
|
70
70
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: primaryColor }), jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: "white", opacity: "0.1" })] })),
|
|
71
71
|
},
|
|
72
72
|
});
|
|
73
|
-
const NtdClosedCaptions = createIcon({
|
|
73
|
+
const NtdClosedCaptions = /* @__PURE__ */ createIcon({
|
|
74
74
|
displayName: 'NtdClosedCaptions',
|
|
75
75
|
paths: {
|
|
76
76
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: primaryColor }), jsx("text", { x: "6", y: "15", fill: "white", fontSize: "8", fontWeight: "bold", fontFamily: "system-ui", children: "CC" })] })),
|
|
@@ -82,7 +82,7 @@ const NtdClosedCaptions = createIcon({
|
|
|
82
82
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
83
83
|
COGNITIVE & LEARNING
|
|
84
84
|
───────────────────────────────────────────────────────────────────────────── */
|
|
85
|
-
const NtdDyslexia = createIcon({
|
|
85
|
+
const NtdDyslexia = /* @__PURE__ */ createIcon({
|
|
86
86
|
displayName: 'NtdDyslexia',
|
|
87
87
|
paths: {
|
|
88
88
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", fill: primaryColor }), jsx("path", { d: "M8 7h8M8 11h6M8 15h4", stroke: "white", strokeWidth: "2", strokeLinecap: "round" }), jsx("path", { d: "M16 15l-2 2M14 15l2 2", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" })] })),
|
|
@@ -91,7 +91,7 @@ const NtdDyslexia = createIcon({
|
|
|
91
91
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", fill: primaryColor }), jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", fill: "white", opacity: "0.1" }), jsx("path", { d: "M8 7h8M8 11h6M8 15h4", stroke: "white", strokeWidth: "1.8", strokeLinecap: "round" }), jsx("path", { d: "M16 15l-2 2M14 15l2 2", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" })] })),
|
|
92
92
|
},
|
|
93
93
|
});
|
|
94
|
-
const NtdEasyRead = createIcon({
|
|
94
|
+
const NtdEasyRead = /* @__PURE__ */ createIcon({
|
|
95
95
|
displayName: 'NtdEasyRead',
|
|
96
96
|
paths: {
|
|
97
97
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "2", y: "2", width: "20", height: "20", rx: "2", fill: primaryColor }), jsx("path", { d: "M6 8h5v5H6zM13 8h5M13 11h4M6 16h12M6 19h8", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" })] })),
|
|
@@ -103,7 +103,7 @@ const NtdEasyRead = createIcon({
|
|
|
103
103
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
104
104
|
ASSISTIVE TECHNOLOGY
|
|
105
105
|
───────────────────────────────────────────────────────────────────────────── */
|
|
106
|
-
const NtdScreenReader = createIcon({
|
|
106
|
+
const NtdScreenReader = /* @__PURE__ */ createIcon({
|
|
107
107
|
displayName: 'NtdScreenReader',
|
|
108
108
|
paths: {
|
|
109
109
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "4", y: "2", width: "16", height: "14", rx: "2", fill: primaryColor }), jsx("path", { d: "M8 18h8M10 18v2M14 18v2M8 20h8", stroke: primaryColor, strokeWidth: "2", strokeLinecap: "round" }), jsx("path", { d: "M8 7h2M8 10h4M8 13h6", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }), jsx("circle", { cx: "16", cy: "7", r: "1.5", fill: "white" }), jsx("path", { d: "M14 7c0-1.5 1-2.5 2-2.5s2 1 2 2.5", stroke: "white", strokeWidth: "1", fill: "none" })] })),
|
|
@@ -112,7 +112,7 @@ const NtdScreenReader = createIcon({
|
|
|
112
112
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxs(Fragment, { children: [jsx("rect", { x: "4", y: "2", width: "16", height: "14", rx: "2", fill: primaryColor }), jsx("rect", { x: "4", y: "2", width: "16", height: "14", rx: "2", fill: "white", opacity: "0.08" }), jsx("circle", { cx: "16", cy: "7", r: "1.5", fill: "white" }), jsx("path", { d: "M8 18h8M10 18v2M14 18v2M8 20h8", stroke: "white", strokeWidth: "1", strokeLinecap: "round" }), jsx("path", { d: "M8 7h2M8 10h4M8 13h6", stroke: "white", strokeWidth: "1", strokeLinecap: "round" }), jsx("path", { d: "M14 7c0-1.5 1-2.5 2-2.5s2 1 2 2.5", stroke: "white", strokeWidth: "1", fill: "none" })] })),
|
|
113
113
|
},
|
|
114
114
|
});
|
|
115
|
-
const NtdHearingAid = createIcon({
|
|
115
|
+
const NtdHearingAid = /* @__PURE__ */ createIcon({
|
|
116
116
|
displayName: 'NtdHearingAid',
|
|
117
117
|
paths: {
|
|
118
118
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("path", { d: "M12 5a5 5 0 015 5c0 2-1 3-2 4s-2 2-2 4v2c0 1 1 2 2 2", stroke: primaryColor, strokeWidth: "2.5", fill: "none", strokeLinecap: "round" }), jsx("path", { d: "M9 8a3 3 0 013-3", stroke: primaryColor, strokeWidth: "2", fill: "none", strokeLinecap: "round" }), jsx("circle", { cx: "6", cy: "10", r: "3", fill: primaryColor }), jsx("path", { d: "M6 13v6", stroke: primaryColor, strokeWidth: "2", strokeLinecap: "round" }), jsx("circle", { cx: "6", cy: "20", r: "1.5", fill: primaryColor })] })),
|
|
@@ -121,7 +121,7 @@ const NtdHearingAid = createIcon({
|
|
|
121
121
|
vivid: ({ primaryColor, secondaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "6", cy: "10", r: "3", fill: primaryColor }), jsx("circle", { cx: "6", cy: "10", r: "3", fill: "white", opacity: "0.08" }), jsx("circle", { cx: "6", cy: "20", r: "1.5", fill: secondaryColor }), jsx("path", { d: "M12 5a5 5 0 015 5c0 2-1 3-2 4s-2 2-2 4v2c0 1 1 2 2 2", stroke: "white", strokeWidth: "1", fill: "none", strokeLinecap: "round" }), jsx("path", { d: "M9 8a3 3 0 013-3", stroke: "white", strokeWidth: "1", fill: "none", strokeLinecap: "round" }), jsx("path", { d: "M6 13v6", stroke: "white", strokeWidth: "1", strokeLinecap: "round" })] })),
|
|
122
122
|
},
|
|
123
123
|
});
|
|
124
|
-
const NtdAssistiveTech = createIcon({
|
|
124
|
+
const NtdAssistiveTech = /* @__PURE__ */ createIcon({
|
|
125
125
|
displayName: 'NtdAssistiveTech',
|
|
126
126
|
paths: {
|
|
127
127
|
solid: ({ primaryColor }) => (jsxs(Fragment, { children: [jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsx("path", { d: "M12 6v2M12 16v2M6 12h2M16 12h2", stroke: "white", strokeWidth: "2", strokeLinecap: "round" }), jsx("circle", { cx: "12", cy: "12", r: "3", fill: "white" })] })),
|