@nice2dev/icons 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +142 -0
  2. package/dist/cjs/NiceDesktopIconExporter.js +7 -7
  3. package/dist/cjs/NiceFaviconGenerator.js +7 -2
  4. package/dist/cjs/NiceIconPicker.js +32 -27
  5. package/dist/cjs/NiceIconPreview.js +3 -1
  6. package/dist/cjs/NiceIconSetCreator.js +12 -30
  7. package/dist/cjs/NtdIconBadge.js +30 -15
  8. package/dist/cjs/NtdIconMorph.js +24 -12
  9. package/dist/cjs/NtdStateMorph.js +3 -3
  10. package/dist/cjs/animationControls.js +10 -3
  11. package/dist/cjs/createIcon.js +5 -2
  12. package/dist/cjs/design-tokens.js +2 -0
  13. package/dist/cjs/headless-ui.js +3 -3
  14. package/dist/cjs/iconMetadata.js +4 -0
  15. package/dist/cjs/iconStyles.js +36 -34
  16. package/dist/cjs/icons/accessibility.js +13 -13
  17. package/dist/cjs/icons/actions.js +59 -25
  18. package/dist/cjs/icons/ai.js +15 -15
  19. package/dist/cjs/icons/brand.js +7 -7
  20. package/dist/cjs/icons/business.js +18 -81
  21. package/dist/cjs/icons/devtech.js +31 -103
  22. package/dist/cjs/icons/ecommerce.js +16 -16
  23. package/dist/cjs/icons/education.js +17 -17
  24. package/dist/cjs/icons/files.js +31 -31
  25. package/dist/cjs/icons/fintech.js +14 -14
  26. package/dist/cjs/icons/food.js +16 -16
  27. package/dist/cjs/icons/fun.js +13 -13
  28. package/dist/cjs/icons/gaming.js +15 -15
  29. package/dist/cjs/icons/health.js +13 -22
  30. package/dist/cjs/icons/index.js +12 -0
  31. package/dist/cjs/icons/legal.js +13 -13
  32. package/dist/cjs/icons/media.js +46 -23
  33. package/dist/cjs/icons/navigation.js +14 -14
  34. package/dist/cjs/icons/omniverk.js +10 -10
  35. package/dist/cjs/icons/realestate.js +17 -17
  36. package/dist/cjs/icons/saas.js +13 -13
  37. package/dist/cjs/icons/science.js +16 -16
  38. package/dist/cjs/icons/shapes.js +89 -22
  39. package/dist/cjs/icons/smarthome.js +13 -13
  40. package/dist/cjs/icons/social.js +8 -98
  41. package/dist/cjs/icons/sports.js +14 -14
  42. package/dist/cjs/icons/sustainability.js +15 -15
  43. package/dist/cjs/icons/travel.js +15 -15
  44. package/dist/cjs/icons/ui.js +39 -28
  45. package/dist/cjs/icons/weather.js +20 -20
  46. package/dist/cjs/index.js +12 -0
  47. package/dist/cjs/lottieIntegration.js +3 -3
  48. package/dist/cjs/nicetodev-icons.css +1 -1
  49. package/dist/cjs/particleEffects.js +11 -4
  50. package/dist/cjs/resolver.js +13 -0
  51. package/dist/cjs/utilities.js +4 -2
  52. package/dist/esm/NiceDesktopIconExporter.js +7 -7
  53. package/dist/esm/NiceFaviconGenerator.js +7 -2
  54. package/dist/esm/NiceIconPicker.js +33 -28
  55. package/dist/esm/NiceIconPreview.js +3 -1
  56. package/dist/esm/NiceIconSetCreator.js +12 -30
  57. package/dist/esm/NtdIconBadge.js +30 -15
  58. package/dist/esm/NtdIconMorph.js +24 -12
  59. package/dist/esm/NtdStateMorph.js +3 -3
  60. package/dist/esm/animationControls.js +11 -4
  61. package/dist/esm/createIcon.js +6 -3
  62. package/dist/esm/design-tokens.js +2 -0
  63. package/dist/esm/headless-ui.js +3 -3
  64. package/dist/esm/iconMetadata.js +4 -0
  65. package/dist/esm/iconStyles.js +36 -34
  66. package/dist/esm/icons/accessibility.js +13 -13
  67. package/dist/esm/icons/actions.js +57 -26
  68. package/dist/esm/icons/ai.js +15 -15
  69. package/dist/esm/icons/brand.js +7 -7
  70. package/dist/esm/icons/business.js +18 -81
  71. package/dist/esm/icons/devtech.js +31 -103
  72. package/dist/esm/icons/ecommerce.js +16 -16
  73. package/dist/esm/icons/education.js +17 -17
  74. package/dist/esm/icons/files.js +31 -31
  75. package/dist/esm/icons/fintech.js +14 -14
  76. package/dist/esm/icons/food.js +16 -16
  77. package/dist/esm/icons/fun.js +13 -13
  78. package/dist/esm/icons/gaming.js +15 -15
  79. package/dist/esm/icons/health.js +13 -22
  80. package/dist/esm/icons/index.js +4 -4
  81. package/dist/esm/icons/legal.js +13 -13
  82. package/dist/esm/icons/media.js +45 -24
  83. package/dist/esm/icons/navigation.js +14 -14
  84. package/dist/esm/icons/omniverk.js +10 -10
  85. package/dist/esm/icons/realestate.js +17 -17
  86. package/dist/esm/icons/saas.js +13 -13
  87. package/dist/esm/icons/science.js +16 -16
  88. package/dist/esm/icons/shapes.js +84 -23
  89. package/dist/esm/icons/smarthome.js +13 -13
  90. package/dist/esm/icons/social.js +8 -98
  91. package/dist/esm/icons/sports.js +14 -14
  92. package/dist/esm/icons/sustainability.js +15 -15
  93. package/dist/esm/icons/travel.js +15 -15
  94. package/dist/esm/icons/ui.js +39 -29
  95. package/dist/esm/icons/weather.js +20 -20
  96. package/dist/esm/index.js +4 -4
  97. package/dist/esm/lottieIntegration.js +3 -3
  98. package/dist/esm/nicetodev-icons.css +1 -1
  99. package/dist/esm/particleEffects.js +11 -4
  100. package/dist/esm/resolver.js +13 -0
  101. package/dist/esm/smilAnimations.js +1 -1
  102. package/dist/esm/utilities.js +4 -2
  103. package/dist/types/NiceDesktopIconExporter.d.ts +1 -0
  104. package/dist/types/NtdIconBadge.d.ts +12 -4
  105. package/dist/types/NtdIconMorph.d.ts +9 -3
  106. package/dist/types/NtdStateMorph.d.ts +3 -1
  107. package/dist/types/design-tokens.d.ts +2 -0
  108. package/dist/types/headless-ui.d.ts +6 -2
  109. package/dist/types/iconStyles.d.ts +33 -11
  110. package/dist/types/icons/actions.d.ts +3 -0
  111. package/dist/types/icons/index.d.ts +4 -4
  112. package/dist/types/icons/media.d.ts +3 -0
  113. package/dist/types/icons/shapes.d.ts +6 -0
  114. package/dist/types/icons/ui.d.ts +2 -0
  115. package/dist/types/lottieIntegration.d.ts +3 -1
  116. package/dist/types/particleEffects.d.ts +3 -1
  117. package/package.json +3 -1
@@ -1,10 +1,11 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useNiceTranslation } from '@nice2dev/ui-core';
2
3
  import { forwardRef, useState, useRef, useEffect, useCallback } from 'react';
3
- import { SIZE_MAP } from './types.js';
4
4
  import { NtdCheck, NtdMinus, NtdPlus } from './icons/actions.js';
5
5
  import { NtdPause, NtdPlay } from './icons/media.js';
6
6
  import { NtdClose, NtdChevronDown, NtdChevronUp, NtdMenu } from './icons/navigation.js';
7
7
  import { NtdMoon, NtdSun } from './icons/ui.js';
8
+ import { SIZE_MAP } from './types.js';
8
9
 
9
10
  /* ────────────────────────────────────────────────────────────────────────────
10
11
  EASING FUNCTIONS
@@ -145,7 +146,8 @@ const morphStyles = `
145
146
  * />
146
147
  * ```
147
148
  */
148
- const NtdIconMorph = 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
+ const NtdIconMorph = /* @__PURE__ */ Object.assign(
150
+ /* @__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
151
  var _a, _b;
150
152
  // Internal state for self-managed triggers
151
153
  const [internalMorphed, setInternalMorphed] = useState(false);
@@ -237,9 +239,13 @@ const NtdIconMorph = forwardRef(({ from: FromIcon, to: ToIcon, morphed: controll
237
239
  height: resolvedSize,
238
240
  cursor: trigger !== 'none' ? 'pointer' : undefined,
239
241
  ...style,
240
- }, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur, tabIndex: trigger === 'focus' ? 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 }) })] }));
241
- });
242
- NtdIconMorph.displayName = 'NtdIconMorph';
242
+ }, onClick: handleClick, onKeyDown: (e) => {
243
+ if (trigger === 'click' && (e.key === 'Enter' || e.key === ' ')) {
244
+ e.preventDefault();
245
+ handleClick();
246
+ }
247
+ }, 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 }) })] }));
248
+ }), { displayName: 'NtdIconMorph' });
243
249
  /**
244
250
  * Path-based morphing using CSS transitions on SVG path data.
245
251
  * Requires browser support for CSS `d` property transitions (modern browsers).
@@ -254,8 +260,10 @@ NtdIconMorph.displayName = 'NtdIconMorph';
254
260
  * />
255
261
  * ```
256
262
  */
257
- const NtdPathMorph = 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) => {
263
+ const NtdPathMorph = /* @__PURE__ */ Object.assign(
264
+ /* @__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
265
  var _a, _b;
266
+ const { t } = useNiceTranslation();
259
267
  const [internalMorphed, setInternalMorphed] = useState(false);
260
268
  const morphed = controlledMorphed !== null && controlledMorphed !== void 0 ? controlledMorphed : internalMorphed;
261
269
  const [isAnimating, setIsAnimating] = useState(false);
@@ -307,11 +315,15 @@ const NtdPathMorph = forwardRef(({ pair, morphed: controlledMorphed, trigger = '
307
315
  return (jsx("svg", { ref: ref, xmlns: "http://www.w3.org/2000/svg", viewBox: pathData.viewBox, width: resolvedSize, height: resolvedSize, className: `ntd-path-morph ${className !== null && className !== void 0 ? className : ''}`, style: {
308
316
  cursor: trigger !== 'none' ? 'pointer' : undefined,
309
317
  ...style,
310
- }, 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: {
318
+ }, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, role: trigger !== 'none' ? 'button' : 'img', "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t('ntdIconMorph.icon', '{pair} icon').replace('{pair}', String(pair)), "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
319
  transition: `d ${duration}ms ${resolvedEasing}, fill ${duration}ms ${resolvedEasing}, stroke ${duration}ms ${resolvedEasing}`,
312
320
  } }) }));
313
- });
314
- NtdPathMorph.displayName = 'NtdPathMorph';
321
+ }), { displayName: 'NtdPathMorph' });
322
+ /* ────────────────────────────────────────────────────────────────────────────
323
+ PREDEFINED MORPH PAIR COMPONENT
324
+ Convenience wrapper for common morphing patterns
325
+ ───────────────────────────────────────────────────────────────────────────── */
326
+ // Import icons lazily for predefined pairs
315
327
  const ICON_PAIRS = {
316
328
  'menu-close': { from: NtdMenu, to: NtdClose },
317
329
  'play-pause': { from: NtdPlay, to: NtdPause },
@@ -335,15 +347,15 @@ const ICON_PAIRS = {
335
347
  * <NtdMorphPair pair="sun-moon" trigger="click" />
336
348
  * ```
337
349
  */
338
- const NtdMorphPair = forwardRef(({ pair, ...props }, ref) => {
350
+ const NtdMorphPair = /* @__PURE__ */ Object.assign(
351
+ /* @__PURE__ */ forwardRef(({ pair, ...props }, ref) => {
339
352
  const iconPair = ICON_PAIRS[pair];
340
353
  if (!iconPair) {
341
354
  console.warn(`NtdMorphPair: Unknown pair "${pair}"`);
342
355
  return null;
343
356
  }
344
357
  return jsx(NtdIconMorph, { ref: ref, from: iconPair.from, to: iconPair.to, ...props });
345
- });
346
- NtdMorphPair.displayName = 'NtdMorphPair';
358
+ }), { displayName: 'NtdMorphPair' });
347
359
  /**
348
360
  * Hook for managing morph state with animation awareness.
349
361
  *
@@ -41,7 +41,8 @@ function interpolateSegments(from, to, t) {
41
41
  /* ────────────────────────────────────────────────────────────────────────────
42
42
  COMPONENT
43
43
  ───────────────────────────────────────────────────────────────────────────── */
44
- const NtdStateMorph = 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) => {
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, { forwardRef, useState, useRef, useEffect, useImperativeHandle, useMemo, useCallback } from '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, onFocus: handleFocus, onBlur: handleBlur, tabIndex: config.trigger === 'focus' ? 0 : undefined, role: config.trigger === 'click' ? 'button' : undefined, children: animatedChild }));
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
@@ -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, SIZE_MAP, GRADIENT_PRESETS } from './types.js';
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 (typeof window === 'undefined') {
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 (typeof window === 'undefined') {
18
+ if (!hasMatchMedia()) {
16
19
  return () => { };
17
20
  }
18
21
  const mq = window.matchMedia('(prefers-color-scheme: dark)');
@@ -25,6 +25,8 @@
25
25
  * @version 1.0.0
26
26
  * @since 2026-03
27
27
  * @license MIT
28
+ *
29
+ * audit-allow: i18n-file — token descriptions written into Style Dictionary output, not UI copy.
28
30
  */
29
31
  /* ────────────────────────────────────────────────────────────────────────────
30
32
  DEFAULT TOKEN VALUES
@@ -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 = forwardRef(({ children, ...props }, forwardedRef) => {
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
  ───────────────────────────────────────────────────────────────────────────── */
@@ -15,6 +15,8 @@
15
15
  /* ────────────────────────────────────────────────────────────────────────────
16
16
  CATEGORY METADATA
17
17
  ───────────────────────────────────────────────────────────────────────────── */
18
+ // audit-allow: i18n — English data for the host's icon browser and searchIcons(); no control of
19
+ // this package shows it.
18
20
  const CATEGORY_INFO = {
19
21
  actions: {
20
22
  label: 'Actions',
@@ -362,6 +364,7 @@ function getSearchSuggestions(partialQuery, limit = 5) {
362
364
  This will be populated when icons are imported
363
365
  ───────────────────────────────────────────────────────────────────────────── */
364
366
  // Example metadata definitions (actual ones will be in icon files)
367
+ // audit-allow: i18n — English search metadata: searchIcons() matches these words.
365
368
  const UI_ICON_METADATA = {
366
369
  NtdHome: {
367
370
  category: 'ui',
@@ -428,6 +431,7 @@ const UI_ICON_METADATA = {
428
431
  related: ['NtdBellOff', 'NtdAlarm'],
429
432
  },
430
433
  };
434
+ // audit-allow: i18n — English search metadata: searchIcons() matches these words.
431
435
  const ACTION_ICON_METADATA = {
432
436
  NtdPlay: {
433
437
  category: 'actions',
@@ -17,7 +17,8 @@ const overlayBase = {
17
17
  // 1. NtdIconFloral 🌸
18
18
  // Botanical vines, leaves & flowers wrapping the icon
19
19
  // ══════════════════════════════════════════════════════
20
- const NtdIconFloral = forwardRef(({ children, animate = true, duration = 2, intensity = 'normal', vineColor = '#22c55e', petalColor = '#f472b6', leafColor, className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 1.5, intensity = 'normal', colors, sparkleColor = '#fbbf24', className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 4, intensity = 'normal', glowColor = '#0ff', secondaryGlow, flicker = true, className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 1.5, intensity = 'normal', strokeColor = '#374151', roughness = 2, className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 2, intensity = 'normal', tintColor = '#818cf8', bleedColor = '#f0abfc', className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 2, intensity = 'normal', starColor = '#e2e8f0', nebulaColor = '#7c3aed', nebulaColor2 = '#2563eb', className, style, }, ref) => {
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' ? [{ cx: 50, cy: 50, r: 14, color: nebulaColor, op: 0.08 }] : []),
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 = forwardRef(({ children, animate = true, duration = 3, intensity = 'normal', brassColor = '#b45309', pipeColor = '#78350f', steamColor = '#d1d5db', className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 2, intensity = 'normal', crystalColor = '#bae6fd', glowColor = '#38bdf8', className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 0.5, intensity = 'normal', pixelColor = '#22d3ee', scanlineColor = '#000000', glitchEffect = true, className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 3, intensity = 'normal', cellColor = '#86efac', membraneColor = '#4ade80', nucleusColor = '#fbbf24', className, style, }, ref) => {
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 = forwardRef(({ children, animate = true, duration = 8, intensity = 'normal', primaryColor = '#6366f1', secondaryColor = '#8b5cf6', accentColor = '#a78bfa', className, style, }, ref) => {
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" })] })),