@hadoku/themes 0.0.0-stage โ†’ 5.12.15

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 (64) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE-lucide +43 -0
  3. package/README.md +433 -2
  4. package/THEME_USAGE_GUIDE.md +308 -0
  5. package/dist/HadokuThemeRoot.d.ts +53 -0
  6. package/dist/HadokuThemeRoot.js +66 -0
  7. package/dist/ThemeIcons.d.ts +31 -0
  8. package/dist/ThemeIcons.js +91 -0
  9. package/dist/effects.d.ts +25 -0
  10. package/dist/effects.js +25 -0
  11. package/dist/icons/Icon.d.ts +36 -0
  12. package/dist/icons/Icon.js +89 -0
  13. package/dist/icons/index.d.ts +61 -0
  14. package/dist/icons/index.js +87 -0
  15. package/dist/icons/registry.generated.d.ts +158 -0
  16. package/dist/icons/registry.generated.js +446 -0
  17. package/dist/index.d.ts +82 -0
  18. package/dist/index.js +169 -0
  19. package/dist/metadata.d.ts +35 -0
  20. package/dist/metadata.js +108 -0
  21. package/dist/platform/index.d.ts +94 -0
  22. package/dist/platform/index.js +149 -0
  23. package/dist/platform/usePlatform.d.ts +29 -0
  24. package/dist/platform/usePlatform.js +65 -0
  25. package/dist/prefsApiBase.d.ts +37 -0
  26. package/dist/prefsApiBase.js +40 -0
  27. package/dist/theme-types.d.ts +34 -0
  28. package/dist/theme-types.js +1 -0
  29. package/dist/themeContext.d.ts +62 -0
  30. package/dist/themeContext.js +70 -0
  31. package/dist/themePrefs.d.ts +29 -0
  32. package/dist/themePrefs.js +48 -0
  33. package/dist/useRefElement.d.ts +19 -0
  34. package/dist/useRefElement.js +52 -0
  35. package/dist/useTheme.d.ts +46 -0
  36. package/dist/useTheme.js +216 -0
  37. package/package.json +83 -4
  38. package/scripts/audit-tokens.mjs +126 -0
  39. package/scripts/check-contrast.mjs +24 -0
  40. package/scripts/check-docs.mjs +53 -0
  41. package/scripts/check-icons.mjs +473 -0
  42. package/scripts/check-usage.mjs +297 -0
  43. package/scripts/codemod-icons.mjs +396 -0
  44. package/scripts/generate-icons.mjs +199 -0
  45. package/scripts/generate-preview.mjs +374 -0
  46. package/scripts/generate-tailwind-colors.mjs +109 -0
  47. package/scripts/lib/color.mjs +184 -0
  48. package/scripts/lib/contract.d.mts +58 -0
  49. package/scripts/lib/contract.mjs +348 -0
  50. package/scripts/lib/derive.mjs +324 -0
  51. package/scripts/lib/icon-registry.mjs +92 -0
  52. package/scripts/lib/parse-themes.mjs +19 -0
  53. package/scripts/lib/tokens.mjs +188 -0
  54. package/scripts/normalize-tokens.mjs +161 -0
  55. package/src/advanced.css +218 -0
  56. package/src/icons/Icon.tsx +151 -0
  57. package/src/icons/emoji-map.json +202 -0
  58. package/src/icons/index.ts +151 -0
  59. package/src/icons/registry.generated.ts +455 -0
  60. package/src/icons/sources.json +150 -0
  61. package/src/icons.css +145 -0
  62. package/src/style.css +1421 -0
  63. package/src/tailwind-colors.css +88 -0
  64. package/src/tailwind-integration.css +49 -0
@@ -0,0 +1,446 @@
1
+ /**
2
+ * GENERATED FILE โ€” do not edit by hand.
3
+ *
4
+ * Source: src/icons/sources.json + lucide-static@1.28.0 (ISC, see LICENSE-lucide).
5
+ * Regenerate with `pnpm run generate:icons`; `pnpm run check:icons` fails on drift.
6
+ *
7
+ * Values are the INNER markup of each glyph. The wrapping <svg> element and its
8
+ * attributes come from getIconSvg()/<Icon> so every icon shares one set.
9
+ */
10
+ export const ICON_MARKUP = {
11
+ activity: "<path d=\"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\" />",
12
+ antenna: "<path d=\"M4 10a7.31 7.31 0 0 0 10 10Z\" /><path d=\"m9 15 3-3\" /><path d=\"M17 13a6 6 0 0 0-6-6\" /><path d=\"M21 13A10 10 0 0 0 11 3\" />",
13
+ 'arrow-down': "<path d=\"M12 5v14\" /><path d=\"m19 12-7 7-7-7\" />",
14
+ 'arrow-left': "<path d=\"m12 19-7-7 7-7\" /><path d=\"M19 12H5\" />",
15
+ 'arrow-right': "<path d=\"M5 12h14\" /><path d=\"m12 5 7 7-7 7\" />",
16
+ 'arrow-up': "<path d=\"m5 12 7-7 7 7\" /><path d=\"M12 19V5\" />",
17
+ 'arrow-up-right': "<path d=\"M7 7h10v10\" /><path d=\"M7 17 17 7\" />",
18
+ 'arrows-horizontal': "<path d=\"M8 3 4 7l4 4\" /><path d=\"M4 7h16\" /><path d=\"m16 21 4-4-4-4\" /><path d=\"M20 17H4\" />",
19
+ ban: "<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M4.929 4.929 19.07 19.071\" />",
20
+ bell: "<path d=\"M10.268 21a2 2 0 0 0 3.464 0\" /><path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" />",
21
+ bone: "<path d=\"M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z\" />",
22
+ book: "<path d=\"M12 5v16\" /><path d=\"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z\" />",
23
+ bookmark: "<path d=\"M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z\" />",
24
+ 'branch-up': "<path d=\"m10 9 5-5 5 5\" /><path d=\"M4 20h7a4 4 0 0 0 4-4V4\" />",
25
+ briefcase: "<path d=\"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\" /><rect width=\"20\" height=\"14\" x=\"2\" y=\"6\" rx=\"2\" />",
26
+ broom: "<path d=\"m16 22-1-4\" /><path d=\"M19 14a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v1a1 1 0 0 0 1 1\" /><path d=\"M19 14H5l-1.973 6.767A1 1 0 0 0 4 22h16a1 1 0 0 0 .973-1.233z\" /><path d=\"m8 22 1-4\" />",
27
+ calendar: "<path d=\"M8 2v3\" /><path d=\"M16 2v3\" /><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><path d=\"M3 9h18\" />",
28
+ camera: "<path d=\"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z\" /><circle cx=\"12\" cy=\"13\" r=\"3\" />",
29
+ cat: "<path d=\"M12 5c.67 0 1.35.09 2 .26 1.78-2 5.03-2.84 6.42-2.26 1.4.58-.42 7-.42 7 .57 1.07 1 2.24 1 3.44C21 17.9 16.97 21 12 21s-9-3-9-7.56c0-1.25.5-2.4 1-3.44 0 0-1.89-6.42-.5-7 1.39-.58 4.72.23 6.5 2.23A9.04 9.04 0 0 1 12 5Z\" /><path d=\"M8 14v.5\" /><path d=\"M16 14v.5\" /><path d=\"M11.25 16.25h1.5L12 17l-.75-.75Z\" />",
30
+ chart: "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\" /><path d=\"M18 17V9\" /><path d=\"M13 17V5\" /><path d=\"M8 17v-3\" />",
31
+ chat: "<path d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\" />",
32
+ check: "<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m9 12 2 2 4-4\" />",
33
+ 'chevron-down': "<path d=\"m6 9 6 6 6-6\" />",
34
+ 'chevron-left': "<path d=\"m15 18-6-6 6-6\" />",
35
+ 'chevron-right': "<path d=\"m9 18 6-6-6-6\" />",
36
+ 'chevron-up': "<path d=\"m18 15-6-6-6 6\" />",
37
+ circle: "<circle cx=\"12\" cy=\"12\" r=\"10\" />",
38
+ 'circle-dot': "<circle cx=\"12\" cy=\"12\" r=\"10\" /><circle cx=\"12\" cy=\"12\" r=\"1\" />",
39
+ clapper: "<path d=\"m12.296 3.464 3.02 3.956\" /><path d=\"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z\" /><path d=\"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" /><path d=\"m6.18 5.276 3.1 3.899\" />",
40
+ clipboard: "<rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\" /><path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />",
41
+ clock: "<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 6v6l4 2\" />",
42
+ close: "<path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />",
43
+ code: "<path d=\"m16 18 6-6-6-6\" /><path d=\"m8 6-6 6 6 6\" />",
44
+ compass: "<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z\" />",
45
+ copy: "<rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" /><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />",
46
+ crop: "<path d=\"M6 2v14a2 2 0 0 0 2 2h14\" /><path d=\"M18 22V8a2 2 0 0 0-2-2H2\" />",
47
+ crown: "<path d=\"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z\" /><path d=\"M5 21h14\" />",
48
+ database: "<ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" /><path d=\"M3 5V19A9 3 0 0 0 21 19V5\" /><path d=\"M3 12A9 3 0 0 0 21 12\" />",
49
+ desktop: "<rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\" /><line x1=\"8\" x2=\"16\" y1=\"21\" y2=\"21\" /><line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"21\" />",
50
+ document: "<path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\" /><path d=\"M14 2v5a1 1 0 0 0 1 1h5\" /><path d=\"M10 9H8\" /><path d=\"M16 13H8\" /><path d=\"M16 17H8\" />",
51
+ download: "<path d=\"M12 15V3\" /><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" /><path d=\"m7 10 5 5 5-5\" />",
52
+ edit: "<path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\" /><path d=\"m15 5 4 4\" />",
53
+ error: "<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6\" /><path d=\"m9 9 6 6\" />",
54
+ external: "<path d=\"M15 3h6v6\" /><path d=\"M10 14 21 3\" /><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />",
55
+ eye: "<path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" /><circle cx=\"12\" cy=\"12\" r=\"3\" />",
56
+ film: "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" /><path d=\"M7 3v18\" /><path d=\"M3 7.5h4\" /><path d=\"M3 12h18\" /><path d=\"M3 16.5h4\" /><path d=\"M17 3v18\" /><path d=\"M17 7.5h4\" /><path d=\"M17 16.5h4\" />",
57
+ filter: "<path d=\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\" />",
58
+ fire: "<path d=\"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4\" />",
59
+ flag: "<path d=\"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528\" />",
60
+ flask: "<path d=\"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2\" /><path d=\"M6.453 15h11.094\" /><path d=\"M8.5 2h7\" />",
61
+ folder: "<path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\" />",
62
+ gamepad: "<line x1=\"6\" x2=\"10\" y1=\"11\" y2=\"11\" /><line x1=\"8\" x2=\"8\" y1=\"9\" y2=\"13\" /><line x1=\"15\" x2=\"15.01\" y1=\"12\" y2=\"12\" /><line x1=\"18\" x2=\"18.01\" y1=\"10\" y2=\"10\" /><path d=\"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z\" />",
63
+ gear: "<path d=\"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\" /><circle cx=\"12\" cy=\"12\" r=\"3\" />",
64
+ globe: "<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" /><path d=\"M2 12h20\" />",
65
+ grid: "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" /><path d=\"M3 9h18\" /><path d=\"M3 15h18\" /><path d=\"M9 3v18\" /><path d=\"M15 3v18\" />",
66
+ handshake: "<path d=\"m11 17 2 2a1 1 0 1 0 3-3\" /><path d=\"m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4\" /><path d=\"m21 3 1 11h-2\" /><path d=\"M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3\" /><path d=\"M3 4h8\" />",
67
+ heart: "<path d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\" />",
68
+ 'helping-hand': "<path d=\"M11 12h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 14\" /><path d=\"m7 18 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\" /><path d=\"m2 13 6 6\" />",
69
+ home: "<path d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\" /><path d=\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />",
70
+ hospital: "<path d=\"M12 7v4\" /><path d=\"M14 21v-3a2 2 0 0 0-4 0v3\" /><path d=\"M14 9h-4\" /><path d=\"M18 11h2a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2h2\" /><path d=\"M18 21V5a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16\" />",
71
+ hourglass: "<path d=\"M5 22h14\" /><path d=\"M5 2h14\" /><path d=\"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22\" /><path d=\"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2\" />",
72
+ image: "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" /><circle cx=\"9\" cy=\"9\" r=\"2\" /><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />",
73
+ inbox: "<polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\" /><path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\" />",
74
+ info: "<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 16v-4\" /><path d=\"M12 8h.01\" />",
75
+ key: "<path d=\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4\" /><path d=\"m21 2-9.6 9.6\" /><circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />",
76
+ layers: "<path d=\"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z\" /><path d=\"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12\" /><path d=\"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17\" />",
77
+ link: "<path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" /><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />",
78
+ list: "<path d=\"M3 5h.01\" /><path d=\"M3 12h.01\" /><path d=\"M3 19h.01\" /><path d=\"M8 5h13\" /><path d=\"M8 12h13\" /><path d=\"M8 19h13\" />",
79
+ lock: "<rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\" /><path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />",
80
+ magnifier: "<path d=\"m21 21-4.34-4.34\" /><circle cx=\"11\" cy=\"11\" r=\"8\" />",
81
+ mail: "<path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\" /><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" />",
82
+ map: "<path d=\"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z\" /><path d=\"M15 5.764v15\" /><path d=\"M9 3.236v15\" />",
83
+ masks: "<path d=\"M10 11h.01\" /><path d=\"M14 6h.01\" /><path d=\"M18 6h.01\" /><path d=\"M6.5 13.1h.01\" /><path d=\"M22 5c0 9-4 12-6 12s-6-3-6-12c0-2 2-3 6-3s6 1 6 3\" /><path d=\"M17.4 9.9c-.8.8-2 .8-2.8 0\" /><path d=\"M10.1 7.1C9 7.2 7.7 7.7 6 8.6c-3.5 2-4.7 3.9-3.7 5.6 4.5 7.8 9.5 8.4 11.2 7.4.9-.5 1.9-2.1 1.9-4.7\" /><path d=\"M9.1 16.5c.3-1.1 1.4-1.7 2.4-1.4\" />",
84
+ minus: "<path d=\"M5 12h14\" />",
85
+ moon: "<path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\" />",
86
+ music: "<path d=\"M9 18V5l12-2v13\" /><circle cx=\"6\" cy=\"18\" r=\"3\" /><circle cx=\"18\" cy=\"16\" r=\"3\" />",
87
+ next: "<path d=\"M21 4v16\" /><path d=\"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z\" />",
88
+ note: "<path d=\"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4\" /><path d=\"M2 6h4\" /><path d=\"M2 10h4\" /><path d=\"M2 14h4\" /><path d=\"M2 18h4\" /><path d=\"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\" />",
89
+ package: "<path d=\"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\" /><path d=\"M12 22V12\" /><polyline points=\"3.29 7 12 12 20.71 7\" /><path d=\"m7.5 4.27 9 5.15\" />",
90
+ palette: "<path d=\"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\" /><circle cx=\"13.5\" cy=\"6.5\" r=\".5\" fill=\"currentColor\" /><circle cx=\"17.5\" cy=\"10.5\" r=\".5\" fill=\"currentColor\" /><circle cx=\"6.5\" cy=\"12.5\" r=\".5\" fill=\"currentColor\" /><circle cx=\"8.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\" />",
91
+ 'panel-left': "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" /><path d=\"M9 3v18\" />",
92
+ 'panel-right': "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" /><path d=\"M15 3v18\" />",
93
+ party: "<path d=\"M5.8 11.3 2 22l10.7-3.79\" /><path d=\"M4 3h.01\" /><path d=\"M22 8h.01\" /><path d=\"M15 2h.01\" /><path d=\"M22 20h.01\" /><path d=\"m22 2-2.24.75a2.9 2.9 0 0 0-1.96 3.12c.1.86-.57 1.63-1.45 1.63h-.38c-.86 0-1.6.6-1.76 1.44L14 10\" /><path d=\"m22 13-.82-.33c-.86-.34-1.82.2-1.98 1.11c-.11.7-.72 1.22-1.43 1.22H17\" /><path d=\"m11 2 .33.82c.34.86-.2 1.82-1.11 1.98C9.52 4.9 9 5.52 9 6.23V7\" /><path d=\"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z\" />",
94
+ paste: "<path d=\"M11 14h10\" /><path d=\"M16 4h2a2 2 0 0 1 2 2v1.344\" /><path d=\"m17 18 4-4-4-4\" /><path d=\"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113\" /><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" />",
95
+ pause: "<rect x=\"14\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" /><rect x=\"5\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\" />",
96
+ pin: "<path d=\"M12 17v5\" /><path d=\"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\" />",
97
+ play: "<path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" />",
98
+ plus: "<path d=\"M5 12h14\" /><path d=\"M12 5v14\" />",
99
+ popcorn: "<path d=\"M18 8a2 2 0 0 0 0-4 2 2 0 0 0-4 0 2 2 0 0 0-4 0 2 2 0 0 0-4 0 2 2 0 0 0 0 4\" /><path d=\"M10 22 9 8\" /><path d=\"m14 22 1-14\" /><path d=\"M20 8c.5 0 .9.4.8 1l-2.6 12c-.1.5-.7 1-1.2 1H7c-.6 0-1.1-.4-1.2-1L3.2 9c-.1-.6.3-1 .8-1Z\" />",
100
+ previous: "<path d=\"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z\" /><path d=\"M3 20V4\" />",
101
+ printer: "<path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\" /><path d=\"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6\" /><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\" rx=\"1\" />",
102
+ redo: "<path d=\"m15 14 5-5-5-5\" /><path d=\"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13\" />",
103
+ refresh: "<path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" /><path d=\"M21 3v5h-5\" /><path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" /><path d=\"M8 16H3v5\" />",
104
+ return: "<path d=\"M20 4v7a4 4 0 0 1-4 4H4\" /><path d=\"m9 10-5 5 5 5\" />",
105
+ robot: "<path d=\"M12 8V4H8\" /><rect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\" /><path d=\"M2 14h2\" /><path d=\"M20 14h2\" /><path d=\"M15 13v2\" /><path d=\"M9 13v2\" />",
106
+ rocket: "<path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" /><path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\" /><path d=\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\" /><path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\" />",
107
+ save: "<path d=\"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z\" /><path d=\"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\" /><path d=\"M7 3v4a1 1 0 0 0 1 1h7\" />",
108
+ scissors: "<circle cx=\"6\" cy=\"6\" r=\"3\" /><path d=\"M8.12 8.12 12 12\" /><path d=\"M20 4 8.12 15.88\" /><circle cx=\"6\" cy=\"18\" r=\"3\" /><path d=\"M14.8 14.8 20 20\" />",
109
+ send: "<path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\" /><path d=\"m21.854 2.147-10.94 10.939\" />",
110
+ shield: "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />",
111
+ shuffle: "<path d=\"m18 14 4 4-4 4\" /><path d=\"m18 2 4 4-4 4\" /><path d=\"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22\" /><path d=\"M2 6h1.972a4 4 0 0 1 3.6 2.2\" /><path d=\"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45\" />",
112
+ skull: "<path d=\"m12.5 17-.5-1-.5 1h1z\" /><path d=\"M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z\" /><circle cx=\"15\" cy=\"12\" r=\"1\" /><circle cx=\"9\" cy=\"12\" r=\"1\" />",
113
+ sleep: "<path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\" />",
114
+ sparkles: "<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\" /><path d=\"M20 2v4\" /><path d=\"M22 4h-4\" /><circle cx=\"4\" cy=\"20\" r=\"2\" />",
115
+ star: "<path d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\" />",
116
+ stop: "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />",
117
+ sun: "<circle cx=\"12\" cy=\"12\" r=\"4\" /><path d=\"M12 2v2\" /><path d=\"M12 20v2\" /><path d=\"m4.93 4.93 1.41 1.41\" /><path d=\"m17.66 17.66 1.41 1.41\" /><path d=\"M2 12h2\" /><path d=\"M20 12h2\" /><path d=\"m6.34 17.66-1.41 1.41\" /><path d=\"m19.07 4.93-1.41 1.41\" />",
118
+ tag: "<path d=\"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\" /><circle cx=\"7.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\" />",
119
+ target: "<circle cx=\"12\" cy=\"12\" r=\"10\" /><circle cx=\"12\" cy=\"12\" r=\"6\" /><circle cx=\"12\" cy=\"12\" r=\"2\" />",
120
+ terminal: "<path d=\"M12 19h8\" /><path d=\"m4 17 6-6-6-6\" />",
121
+ 'thumbs-down': "<path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" /><path d=\"M17 14V2\" />",
122
+ 'thumbs-up': "<path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" /><path d=\"M7 10v12\" />",
123
+ tick: "<path d=\"M20 6 9 17l-5-5\" />",
124
+ toolbox: "<path d=\"M12 12h.01\" /><path d=\"M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\" /><path d=\"M22 13a18.15 18.15 0 0 1-20 0\" /><rect width=\"20\" height=\"14\" x=\"2\" y=\"6\" rx=\"2\" />",
125
+ trash: "<path d=\"M10 11v6\" /><path d=\"M14 11v6\" /><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\" /><path d=\"M3 6h18\" /><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />",
126
+ trophy: "<path d=\"M10 14.66V17a1 1 0 0 1-1 1 2 2 0 0 0-2 2v2\" /><path d=\"M14 14.66V17a1 1 0 0 0 1 1 2 2 0 0 1 2 2v2\" /><path d=\"M17.916 10H19.5A2.5 2.5 0 0 0 22 7.5V5a1 1 0 0 0-1-1h-3\" /><path d=\"M4 22h16\" /><path d=\"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z\" /><path d=\"M6.084 10H4.5A2.5 2.5 0 0 1 2 7.5V5a1 1 0 0 1 1-1h3\" />",
127
+ undo: "<path d=\"M9 14 4 9l5-5\" /><path d=\"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11\" />",
128
+ upload: "<path d=\"M12 3v12\" /><path d=\"m17 8-5-5-5 5\" /><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />",
129
+ user: "<path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" /><circle cx=\"12\" cy=\"7\" r=\"4\" />",
130
+ users: "<path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" /><path d=\"M16 3.128a4 4 0 0 1 0 7.744\" /><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\" /><circle cx=\"9\" cy=\"7\" r=\"4\" />",
131
+ videotape: "<rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\" /><path d=\"M2 8h20\" /><circle cx=\"8\" cy=\"14\" r=\"2\" /><path d=\"M8 12h8\" /><circle cx=\"16\" cy=\"14\" r=\"2\" />",
132
+ 'volume-high': "<path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\" /><path d=\"M16 9a5 5 0 0 1 0 6\" /><path d=\"M19.364 18.364a9 9 0 0 0 0-12.728\" />",
133
+ 'volume-low': "<path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\" /><path d=\"M16 9a5 5 0 0 1 0 6\" />",
134
+ 'volume-mute': "<path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\" /><line x1=\"22\" x2=\"16\" y1=\"9\" y2=\"15\" /><line x1=\"16\" x2=\"22\" y1=\"9\" y2=\"15\" />",
135
+ wand: "<path d=\"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72\" /><path d=\"m14 7 3 3\" /><path d=\"M5 6v4\" /><path d=\"M19 14v4\" /><path d=\"M10 2v2\" /><path d=\"M7 8H3\" /><path d=\"M21 16h-4\" /><path d=\"M11 3H9\" />",
136
+ warning: "<path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" /><path d=\"M12 9v4\" /><path d=\"M12 17h.01\" />",
137
+ wave: "<path d=\"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2\" /><path d=\"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2\" /><path d=\"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8\" /><path d=\"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15\" />",
138
+ wrench: "<path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\" />",
139
+ zap: "<path d=\"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z\" />"
140
+ };
141
+ export const ICON_NAMES = Object.keys(ICON_MARKUP);
142
+ /** The lucide slug each glyph was vendored from โ€” provenance for regeneration. */
143
+ export const ICON_SOURCE_SLUGS = {
144
+ activity: 'activity',
145
+ antenna: 'satellite-dish',
146
+ 'arrow-down': 'arrow-down',
147
+ 'arrow-left': 'arrow-left',
148
+ 'arrow-right': 'arrow-right',
149
+ 'arrow-up': 'arrow-up',
150
+ 'arrow-up-right': 'arrow-up-right',
151
+ 'arrows-horizontal': 'arrow-left-right',
152
+ ban: 'ban',
153
+ bell: 'bell',
154
+ bone: 'bone',
155
+ book: 'book-open',
156
+ bookmark: 'bookmark',
157
+ 'branch-up': 'corner-right-up',
158
+ briefcase: 'briefcase',
159
+ broom: 'brush-cleaning',
160
+ calendar: 'calendar',
161
+ camera: 'camera',
162
+ cat: 'cat',
163
+ chart: 'chart-column',
164
+ chat: 'message-circle',
165
+ check: 'circle-check',
166
+ 'chevron-down': 'chevron-down',
167
+ 'chevron-left': 'chevron-left',
168
+ 'chevron-right': 'chevron-right',
169
+ 'chevron-up': 'chevron-up',
170
+ circle: 'circle',
171
+ 'circle-dot': 'circle-dot',
172
+ clapper: 'clapperboard',
173
+ clipboard: 'clipboard',
174
+ clock: 'clock',
175
+ close: 'x',
176
+ code: 'code',
177
+ compass: 'compass',
178
+ copy: 'copy',
179
+ crop: 'crop',
180
+ crown: 'crown',
181
+ database: 'database',
182
+ desktop: 'monitor',
183
+ document: 'file-text',
184
+ download: 'download',
185
+ edit: 'pencil',
186
+ error: 'circle-x',
187
+ external: 'external-link',
188
+ eye: 'eye',
189
+ film: 'film',
190
+ filter: 'funnel',
191
+ fire: 'flame',
192
+ flag: 'flag',
193
+ flask: 'flask-conical',
194
+ folder: 'folder',
195
+ gamepad: 'gamepad-2',
196
+ gear: 'settings',
197
+ globe: 'globe',
198
+ grid: 'grid-3x3',
199
+ handshake: 'handshake',
200
+ heart: 'heart',
201
+ 'helping-hand': 'hand-helping',
202
+ home: 'house',
203
+ hospital: 'hospital',
204
+ hourglass: 'hourglass',
205
+ image: 'image',
206
+ inbox: 'inbox',
207
+ info: 'info',
208
+ key: 'key',
209
+ layers: 'layers',
210
+ link: 'link',
211
+ list: 'list',
212
+ lock: 'lock',
213
+ magnifier: 'search',
214
+ mail: 'mail',
215
+ map: 'map',
216
+ masks: 'drama',
217
+ minus: 'minus',
218
+ moon: 'moon',
219
+ music: 'music',
220
+ next: 'skip-forward',
221
+ note: 'notebook-pen',
222
+ package: 'package',
223
+ palette: 'palette',
224
+ 'panel-left': 'panel-left',
225
+ 'panel-right': 'panel-right',
226
+ party: 'party-popper',
227
+ paste: 'clipboard-paste',
228
+ pause: 'pause',
229
+ pin: 'pin',
230
+ play: 'play',
231
+ plus: 'plus',
232
+ popcorn: 'popcorn',
233
+ previous: 'skip-back',
234
+ printer: 'printer',
235
+ redo: 'redo-2',
236
+ refresh: 'refresh-cw',
237
+ return: 'corner-down-left',
238
+ robot: 'bot',
239
+ rocket: 'rocket',
240
+ save: 'save',
241
+ scissors: 'scissors',
242
+ send: 'send',
243
+ shield: 'shield',
244
+ shuffle: 'shuffle',
245
+ skull: 'skull',
246
+ sleep: 'moon',
247
+ sparkles: 'sparkles',
248
+ star: 'star',
249
+ stop: 'square',
250
+ sun: 'sun',
251
+ tag: 'tag',
252
+ target: 'target',
253
+ terminal: 'terminal',
254
+ 'thumbs-down': 'thumbs-down',
255
+ 'thumbs-up': 'thumbs-up',
256
+ tick: 'check',
257
+ toolbox: 'briefcase-business',
258
+ trash: 'trash-2',
259
+ trophy: 'trophy',
260
+ undo: 'undo-2',
261
+ upload: 'upload',
262
+ user: 'user',
263
+ users: 'users',
264
+ videotape: 'videotape',
265
+ 'volume-high': 'volume-2',
266
+ 'volume-low': 'volume-1',
267
+ 'volume-mute': 'volume-x',
268
+ wand: 'wand-sparkles',
269
+ warning: 'triangle-alert',
270
+ wave: 'hand',
271
+ wrench: 'wrench',
272
+ zap: 'zap'
273
+ };
274
+ export const LUCIDE_VERSION = '1.28.0';
275
+ /**
276
+ * Canonical raw-emoji -> icon name. Source: src/icons/emoji-map.json.
277
+ * Keys are stored exactly as written there; look them up through
278
+ * emojiToIconName(), which strips variation selectors and skin tones first.
279
+ */
280
+ export const EMOJI_TO_ICON = {
281
+ "๐Ÿ‘‹": "wave",
282
+ "๐Ÿ“„": "document",
283
+ "๐Ÿ“ง": "mail",
284
+ "โœ‰": "mail",
285
+ "๐ŸŽจ": "palette",
286
+ "๐Ÿ–จ": "printer",
287
+ "โœจ": "sparkles",
288
+ "๐ŸŽญ": "masks",
289
+ "๐Ÿ”ง": "wrench",
290
+ "๐Ÿ“ก": "antenna",
291
+ "๐Ÿ”": "magnifier",
292
+ "๐Ÿ”Ž": "magnifier",
293
+ "๐Ÿ’ผ": "briefcase",
294
+ "โš™": "gear",
295
+ "๐Ÿ–": "helping-hand",
296
+ "โœ…": "check",
297
+ "โœ”": "tick",
298
+ "โ˜‘": "tick",
299
+ "๐ŸŽฌ": "clapper",
300
+ "๐Ÿฟ": "popcorn",
301
+ "๐Ÿ“ผ": "videotape",
302
+ "โš ": "warning",
303
+ "โŒ": "error",
304
+ "โœ–": "close",
305
+ "โŽ": "error",
306
+ "โ„น": "info",
307
+ "โณ": "hourglass",
308
+ "โŒ›": "hourglass",
309
+ "โฐ": "clock",
310
+ "๐Ÿ•": "clock",
311
+ "๐Ÿ’ค": "sleep",
312
+ "โšช": "circle",
313
+ "๐Ÿ”ด": "circle-dot",
314
+ "๐ŸŸข": "circle-dot",
315
+ "๐ŸŸก": "circle-dot",
316
+ "๐Ÿ”ต": "circle-dot",
317
+ "โž–": "minus",
318
+ "๐Ÿšจ": "warning",
319
+ "๐Ÿ”ฅ": "fire",
320
+ "๐Ÿ’ฅ": "warning",
321
+ "๐ŸŽ‰": "party",
322
+ "๐Ÿ†": "trophy",
323
+ "โญ": "star",
324
+ "๐ŸŒŸ": "star",
325
+ "๐Ÿ‘": "thumbs-up",
326
+ "๐Ÿ‘Ž": "thumbs-down",
327
+ "โค": "heart",
328
+ "๐Ÿฉท": "heart",
329
+ "๐Ÿ–ค": "heart",
330
+ "๐Ÿ—‘": "trash",
331
+ "โœ": "edit",
332
+ "๐Ÿ“": "note",
333
+ "๐Ÿ“‹": "clipboard",
334
+ "๐Ÿ“Œ": "pin",
335
+ "๐Ÿ”„": "refresh",
336
+ "โ™ป": "refresh",
337
+ "โ–ถ": "play",
338
+ "โธ": "pause",
339
+ "โญ": "next",
340
+ "โฎ": "previous",
341
+ "โน": "stop",
342
+ "๐Ÿ”€": "shuffle",
343
+ "๐Ÿ”—": "link",
344
+ "โ›“": "link",
345
+ "๐Ÿ‘": "eye",
346
+ "๐Ÿ”’": "lock",
347
+ "๐Ÿ”‘": "key",
348
+ "๐Ÿ›ก": "shield",
349
+ "๐Ÿงน": "broom",
350
+ "๐Ÿช„": "wand",
351
+ "๐Ÿ””": "bell",
352
+ "๐Ÿšฉ": "flag",
353
+ "๐Ÿท": "tag",
354
+ "๐Ÿ”–": "bookmark",
355
+ "๐Ÿ“ค": "upload",
356
+ "โฌ†": "arrow-up",
357
+ "๐Ÿ“ฅ": "download",
358
+ "โฌ‡": "arrow-down",
359
+ "โžก": "arrow-right",
360
+ "โฌ…": "arrow-left",
361
+ "โ†”": "arrows-horizontal",
362
+ "โ†—": "arrow-up-right",
363
+ "โ†ฉ": "return",
364
+ "โคด": "branch-up",
365
+ "โ—€": "chevron-left",
366
+ "๐Ÿ”ผ": "chevron-up",
367
+ "๐Ÿ”ฝ": "chevron-down",
368
+ "โž•": "plus",
369
+ "๐Ÿ“Ž": "copy",
370
+ "๐Ÿ’พ": "save",
371
+ "๐Ÿ“จ": "send",
372
+ "๐Ÿ“": "folder",
373
+ "๐Ÿ“‚": "folder",
374
+ "๐Ÿ“ฆ": "package",
375
+ "๐Ÿ“…": "calendar",
376
+ "๐Ÿ—“": "calendar",
377
+ "๐Ÿ–ผ": "image",
378
+ "๐Ÿ“ท": "camera",
379
+ "๐ŸŽž": "film",
380
+ "๐ŸŽต": "music",
381
+ "๐ŸŽง": "music",
382
+ "๐Ÿ”Š": "volume-high",
383
+ "๐Ÿ”ˆ": "volume-low",
384
+ "๐Ÿ”‡": "volume-mute",
385
+ "๐Ÿ’ฌ": "chat",
386
+ "๐Ÿ“–": "book",
387
+ "๐Ÿ“š": "book",
388
+ "๐Ÿค": "handshake",
389
+ "๐Ÿค–": "robot",
390
+ "๐Ÿ‘ค": "user",
391
+ "๐Ÿ‘ฅ": "users",
392
+ "๐Ÿ‘‘": "crown",
393
+ "๐Ÿ’€": "skull",
394
+ "๐Ÿˆ": "cat",
395
+ "๐Ÿฆด": "bone",
396
+ "๐ŸŽฎ": "gamepad",
397
+ "๐Ÿงฐ": "toolbox",
398
+ "๐Ÿงช": "flask",
399
+ "๐Ÿฅ": "hospital",
400
+ "๐ŸŒ": "globe",
401
+ "๐Ÿ—บ": "map",
402
+ "๐Ÿ“Š": "chart",
403
+ "๐Ÿ“ˆ": "chart",
404
+ "๐Ÿ“‰": "chart",
405
+ "๐Ÿ“": "crop",
406
+ "๐Ÿ–ฅ": "desktop",
407
+ "๐Ÿ’ป": "desktop",
408
+ "๐Ÿ—„": "database",
409
+ "๐Ÿ—ƒ": "database",
410
+ "โŒจ": "terminal",
411
+ "๐Ÿงฑ": "layers",
412
+ "๐ŸŽฏ": "target",
413
+ "๐Ÿš€": "rocket",
414
+ "โšก": "zap",
415
+ "๐Ÿงญ": "compass",
416
+ "๐Ÿ ": "home",
417
+ "๐Ÿก": "home",
418
+ "๐Ÿ“ญ": "inbox",
419
+ "๐Ÿ“ฌ": "inbox",
420
+ "๐Ÿ“ฎ": "inbox",
421
+ "โ˜€": "sun",
422
+ "๐ŸŒ™": "moon",
423
+ "๐Ÿง‘": "user",
424
+ "๐Ÿ™‹": "wave",
425
+ "๐Ÿ’ก": "zap",
426
+ "๐Ÿ”ฆ": "magnifier",
427
+ "๐Ÿ“": "crop",
428
+ "โœ‚": "scissors",
429
+ "๐Ÿฉน": "wrench",
430
+ "๐Ÿ”จ": "wrench",
431
+ "๐Ÿ› ": "toolbox",
432
+ "โš”": "toolbox",
433
+ "๐Ÿน": "target",
434
+ "๐Ÿ”ฑ": "layers",
435
+ "๐Ÿšซ": "ban",
436
+ "โ›”": "ban"
437
+ };
438
+ /**
439
+ * Emoji whose EMOJI_TO_ICON entry is only right in one context, and the rule for
440
+ * each. Source: the `$ambiguous` block in src/icons/emoji-map.json. check-icons
441
+ * prints these beside its suggestion; codemod-icons refuses to rewrite them.
442
+ */
443
+ export const AMBIGUOUS_EMOJI = {
444
+ "โ—€": "in a mirrored `โ—€ โ€ฆ โ–ถ` pair use chevron-left WITH chevron-right โ€” never pair it with play",
445
+ "โ–ถ": "play ONLY as a transport control beside โธ; in a mirrored `โ—€ โ€ฆ โ–ถ` pair use chevron-right"
446
+ };
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Hadoku Theme System - Utilities
3
+ * Framework-agnostic theme management for Hadoku themes
4
+ * 18 beautiful themes across 9 theme families with light/dark variants
5
+ * Now with React integration support!
6
+ */
7
+ export declare const THEMES: readonly ["light", "dark", "coffee-light", "coffee-dark", "nature-light", "nature-dark", "lavender-light", "lavender-dark", "strawberry-light", "strawberry-dark", "ocean-light", "ocean-dark", "cyberpunk-light", "cyberpunk-dark", "pink-light", "pink-dark", "izakaya-light", "izakaya-dark"];
8
+ export type Theme = (typeof THEMES)[number];
9
+ export type { ThemeMode } from './theme-types';
10
+ import type { ThemeMode } from './theme-types';
11
+ /**
12
+ * Set the active theme
13
+ * @param theme - Theme name
14
+ */
15
+ export declare function setTheme(theme: Theme): void;
16
+ /**
17
+ * Get the currently active theme
18
+ * @returns Current theme name
19
+ */
20
+ export declare function getTheme(): Theme;
21
+ /**
22
+ * Persist the theme and apply it.
23
+ *
24
+ * BOTH storages, deliberately. sessionStorage is what the pre-paint inline
25
+ * `<head>` script reads within a tab, but it dies with the tab โ€” so writing
26
+ * only there meant a browser restart came back with nothing persisted, the
27
+ * script fell through to the browser preference, and the app then swapped to
28
+ * the real theme once React mounted. A visible default-then-swap flash, and
29
+ * "my theme reset itself" for anyone whose theme wasn't the system default.
30
+ * localStorage is what survives, so it is what makes the next cold load paint
31
+ * correctly the first time.
32
+ */
33
+ export declare function saveTheme(theme: Theme): void;
34
+ /**
35
+ * Load the saved theme.
36
+ * @returns Saved theme, or browser preference, or 'light' if none available
37
+ */
38
+ export declare function loadTheme(): Theme;
39
+ /**
40
+ * Initialize theme system on page load
41
+ * Loads saved theme, respects browser preference, or defaults to light
42
+ */
43
+ export declare function initTheme(): Theme;
44
+ /**
45
+ * Clear saved theme (reset to light)
46
+ */
47
+ export declare function clearTheme(): void;
48
+ /**
49
+ * Set the active theme mode (writes data-theme-mode on documentElement).
50
+ * 'advanced' renders the gradient + effects; 'simple' uses flat colors.
51
+ *
52
+ * Nothing calls this with 'advanced' any more: the Simple/Advanced toggle was
53
+ * removed from the picker, and `useTheme` pins the attribute to 'simple' on
54
+ * every theme apply. The mode is not persisted or read back for the same
55
+ * reason โ€” there is no user choice left to remember. The advanced kit itself
56
+ * (advanced.css, THEME_EFFECTS, the hdk-advanced-* class hooks) is untouched
57
+ * and still keys off this attribute, so bringing advanced back means restoring
58
+ * the toggle, not rebuilding the visuals.
59
+ */
60
+ export declare function setThemeMode(mode: ThemeMode): void;
61
+ export { THEME_FAMILIES, THEME_ICON_MAP } from './metadata';
62
+ export { useTheme } from './useTheme';
63
+ export type { UseThemeOptions } from './useTheme';
64
+ export { HadokuThemeRoot } from './HadokuThemeRoot';
65
+ export { HadokuThemeProvider, useHadokuTheme, useHadokuThemeOptional } from './themeContext';
66
+ export type { HadokuThemeValue, HadokuThemeProviderProps } from './themeContext';
67
+ export { SunIcon, MoonIcon, StrawberryIcon, WaveIcon, ZapIcon, CoffeeIcon, FlowerIcon, HeartIcon, LeafIcon, LanternIcon } from './ThemeIcons';
68
+ export type { ThemeName, ThemeFamily } from './theme-types';
69
+ export type { HadokuThemeRootProps } from './HadokuThemeRoot';
70
+ export { themePrefs, ThemePrefsSchema } from './themePrefs';
71
+ export type { ThemePrefs } from './themePrefs';
72
+ export { resolvePrefsApiBase, PREFS_API_BASE_GLOBAL } from './prefsApiBase';
73
+ export { THEME_EFFECTS, hasAdvanced, getThemeEffects } from './effects';
74
+ export type { AdvancedEffect, ThemeEffectMap } from './effects';
75
+ export { Icon } from './icons/Icon';
76
+ export type { IconProps } from './icons/Icon';
77
+ export { ICON_MARKUP, ICON_NAMES, ICON_SOURCE_SLUGS, ICON_FAMILIES, LUCIDE_VERSION, getIconSvg, getIconTileClass, isIconName } from './icons/index';
78
+ export type { IconName, IconFamily, IconVariant, IconSvgOptions } from './icons/index';
79
+ export { detectPlatform, createPlatform, stampPlatform, isSamePlatform, NARROW_BREAKPOINT, NARROW_QUERY, TOUCH_FIRST_QUERY } from './platform/index';
80
+ export type { PlatformSeed, PlatformStore } from './platform/index';
81
+ export { usePlatform } from './platform/usePlatform';
82
+ export type { UsePlatformOptions } from './platform/usePlatform';