@nac3/forge-cli 1.0.51 → 1.0.53

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 (292) hide show
  1. package/README.md +466 -390
  2. package/dist/chat/panel.d.ts.map +1 -1
  3. package/dist/chat/panel.js +315 -94
  4. package/dist/chat/panel.js.map +1 -1
  5. package/dist/chat/server.d.ts.map +1 -1
  6. package/dist/chat/server.js +77 -5
  7. package/dist/chat/server.js.map +1 -1
  8. package/dist/commands/chat.d.ts +4 -4
  9. package/dist/commands/chat.js +1 -1
  10. package/dist/commands/chat.js.map +1 -1
  11. package/dist/commands/pilot.d.ts.map +1 -1
  12. package/dist/commands/pilot.js +3 -1
  13. package/dist/commands/pilot.js.map +1 -1
  14. package/dist/core/file_tree.d.ts +27 -0
  15. package/dist/core/file_tree.d.ts.map +1 -0
  16. package/dist/core/file_tree.js +87 -0
  17. package/dist/core/file_tree.js.map +1 -0
  18. package/dist/version.d.ts +1 -1
  19. package/dist/version.js +1 -1
  20. package/package.json +113 -111
  21. package/src/i18n/catalogs/ar.json +13 -3
  22. package/src/i18n/catalogs/de.json +13 -3
  23. package/src/i18n/catalogs/en.json +13 -3
  24. package/src/i18n/catalogs/es.json +13 -3
  25. package/src/i18n/catalogs/fr.json +13 -3
  26. package/src/i18n/catalogs/hi.json +13 -3
  27. package/src/i18n/catalogs/it.json +13 -3
  28. package/src/i18n/catalogs/ja.json +13 -3
  29. package/src/i18n/catalogs/pt.json +13 -3
  30. package/src/i18n/catalogs/zh.json +13 -3
  31. package/yujin-design-system/_preview.mjs +77 -0
  32. package/yujin-design-system/components/_index.json +156 -0
  33. package/yujin-design-system/components/accordion.yujin.json +24 -0
  34. package/yujin-design-system/components/alert.yujin.json +30 -0
  35. package/yujin-design-system/components/avatar.yujin.json +23 -0
  36. package/yujin-design-system/components/badge.yujin.json +30 -0
  37. package/yujin-design-system/components/breadcrumb.yujin.json +22 -0
  38. package/yujin-design-system/components/button.yujin.json +35 -0
  39. package/yujin-design-system/components/card.yujin.json +33 -0
  40. package/yujin-design-system/components/checkbox.yujin.json +25 -0
  41. package/yujin-design-system/components/datepicker.yujin.json +26 -0
  42. package/yujin-design-system/components/dropdown.yujin.json +26 -0
  43. package/yujin-design-system/components/file-upload.yujin.json +25 -0
  44. package/yujin-design-system/components/form-field.yujin.json +29 -0
  45. package/yujin-design-system/components/input.yujin.json +32 -0
  46. package/yujin-design-system/components/kanban-card.yujin.json +32 -0
  47. package/yujin-design-system/components/modal.yujin.json +28 -0
  48. package/yujin-design-system/components/pagination.yujin.json +24 -0
  49. package/yujin-design-system/components/progress.yujin.json +23 -0
  50. package/yujin-design-system/components/radio.yujin.json +24 -0
  51. package/yujin-design-system/components/search-bar.yujin.json +26 -0
  52. package/yujin-design-system/components/select.yujin.json +25 -0
  53. package/yujin-design-system/components/sidebar.yujin.json +28 -0
  54. package/yujin-design-system/components/skeleton.yujin.json +23 -0
  55. package/yujin-design-system/components/slider.yujin.json +22 -0
  56. package/yujin-design-system/components/switch.yujin.json +23 -0
  57. package/yujin-design-system/components/table.yujin.json +28 -0
  58. package/yujin-design-system/components/tabs.yujin.json +28 -0
  59. package/yujin-design-system/components/toast.yujin.json +28 -0
  60. package/yujin-design-system/components/tooltip.yujin.json +27 -0
  61. package/yujin-design-system/components/topbar.yujin.json +23 -0
  62. package/yujin-design-system/components/view.yujin.json +24 -0
  63. package/yujin-design-system/fonts/README.md +31 -0
  64. package/yujin-design-system/icons/sumie/abacus-soroban.svg +1 -0
  65. package/yujin-design-system/icons/sumie/antenna-signal.svg +1 -0
  66. package/yujin-design-system/icons/sumie/anvil-block.svg +1 -0
  67. package/yujin-design-system/icons/sumie/arrow-down-trend.svg +1 -0
  68. package/yujin-design-system/icons/sumie/arrow-up-trend.svg +1 -0
  69. package/yujin-design-system/icons/sumie/aurora-band.svg +1 -0
  70. package/yujin-design-system/icons/sumie/badge-id.svg +1 -0
  71. package/yujin-design-system/icons/sumie/badge-medal.svg +1 -0
  72. package/yujin-design-system/icons/sumie/bamboo-stalk.svg +1 -0
  73. package/yujin-design-system/icons/sumie/bandage-cross.svg +1 -0
  74. package/yujin-design-system/icons/sumie/barcode-strip.svg +1 -0
  75. package/yujin-design-system/icons/sumie/barrel-cask.svg +1 -0
  76. package/yujin-design-system/icons/sumie/bell-temple.svg +1 -0
  77. package/yujin-design-system/icons/sumie/bird-perched.svg +1 -0
  78. package/yujin-design-system/icons/sumie/boat-junk.svg +1 -0
  79. package/yujin-design-system/icons/sumie/boat-sail.svg +1 -0
  80. package/yujin-design-system/icons/sumie/book-bound.svg +1 -0
  81. package/yujin-design-system/icons/sumie/bow-arrow.svg +1 -0
  82. package/yujin-design-system/icons/sumie/box-crate.svg +1 -0
  83. package/yujin-design-system/icons/sumie/box-stacked.svg +1 -0
  84. package/yujin-design-system/icons/sumie/brain-cells.svg +1 -0
  85. package/yujin-design-system/icons/sumie/branch-sakura.svg +1 -0
  86. package/yujin-design-system/icons/sumie/bridge-arched.svg +1 -0
  87. package/yujin-design-system/icons/sumie/briefcase.svg +1 -0
  88. package/yujin-design-system/icons/sumie/brush-ink.svg +1 -0
  89. package/yujin-design-system/icons/sumie/brush-tip.svg +1 -0
  90. package/yujin-design-system/icons/sumie/butterfly-wing.svg +1 -0
  91. package/yujin-design-system/icons/sumie/calendar-grid.svg +1 -0
  92. package/yujin-design-system/icons/sumie/caliper-precision.svg +1 -0
  93. package/yujin-design-system/icons/sumie/cart-basket.svg +1 -0
  94. package/yujin-design-system/icons/sumie/castle-walls.svg +1 -0
  95. package/yujin-design-system/icons/sumie/cat-whisker.svg +1 -0
  96. package/yujin-design-system/icons/sumie/check-mark.svg +1 -0
  97. package/yujin-design-system/icons/sumie/check-shield.svg +1 -0
  98. package/yujin-design-system/icons/sumie/chopsticks.svg +1 -0
  99. package/yujin-design-system/icons/sumie/circuit-node.svg +1 -0
  100. package/yujin-design-system/icons/sumie/clipboard-list.svg +1 -0
  101. package/yujin-design-system/icons/sumie/cloud-curl.svg +1 -0
  102. package/yujin-design-system/icons/sumie/cloud-platform.svg +1 -0
  103. package/yujin-design-system/icons/sumie/coin-mon.svg +1 -0
  104. package/yujin-design-system/icons/sumie/coin-stack.svg +1 -0
  105. package/yujin-design-system/icons/sumie/comb-wooden.svg +1 -0
  106. package/yujin-design-system/icons/sumie/comet-trail.svg +1 -0
  107. package/yujin-design-system/icons/sumie/compass-marine.svg +1 -0
  108. package/yujin-design-system/icons/sumie/conveyor-belt.svg +1 -0
  109. package/yujin-design-system/icons/sumie/crane-flying.svg +1 -0
  110. package/yujin-design-system/icons/sumie/cross-mark.svg +1 -0
  111. package/yujin-design-system/icons/sumie/database-disk.svg +1 -0
  112. package/yujin-design-system/icons/sumie/deer-antler.svg +1 -0
  113. package/yujin-design-system/icons/sumie/document-page.svg +1 -0
  114. package/yujin-design-system/icons/sumie/dragon-curl.svg +1 -0
  115. package/yujin-design-system/icons/sumie/eclipse-ring.svg +1 -0
  116. package/yujin-design-system/icons/sumie/envelope-letter.svg +1 -0
  117. package/yujin-design-system/icons/sumie/eye-vision.svg +1 -0
  118. package/yujin-design-system/icons/sumie/fan-folded.svg +1 -0
  119. package/yujin-design-system/icons/sumie/fan-open.svg +1 -0
  120. package/yujin-design-system/icons/sumie/fern-frond.svg +1 -0
  121. package/yujin-design-system/icons/sumie/flag-banner.svg +1 -0
  122. package/yujin-design-system/icons/sumie/flame-forge.svg +1 -0
  123. package/yujin-design-system/icons/sumie/folder-tab.svg +1 -0
  124. package/yujin-design-system/icons/sumie/forklift.svg +1 -0
  125. package/yujin-design-system/icons/sumie/fox-tail.svg +1 -0
  126. package/yujin-design-system/icons/sumie/gear-cog.svg +1 -0
  127. package/yujin-design-system/icons/sumie/gear-double.svg +1 -0
  128. package/yujin-design-system/icons/sumie/gift-wrapped.svg +1 -0
  129. package/yujin-design-system/icons/sumie/globe-grid.svg +1 -0
  130. package/yujin-design-system/icons/sumie/gong-disk.svg +1 -0
  131. package/yujin-design-system/icons/sumie/hammer-craft.svg +1 -0
  132. package/yujin-design-system/icons/sumie/handshake-knot.svg +1 -0
  133. package/yujin-design-system/icons/sumie/heart-affinity.svg +1 -0
  134. package/yujin-design-system/icons/sumie/helmet-care.svg +1 -0
  135. package/yujin-design-system/icons/sumie/horse-gallop.svg +1 -0
  136. package/yujin-design-system/icons/sumie/house-traditional.svg +1 -0
  137. package/yujin-design-system/icons/sumie/incense-stick.svg +1 -0
  138. package/yujin-design-system/icons/sumie/inkstone-suzuri.svg +1 -0
  139. package/yujin-design-system/icons/sumie/invoice-doc.svg +1 -0
  140. package/yujin-design-system/icons/sumie/iris-bloom.svg +1 -0
  141. package/yujin-design-system/icons/sumie/key-skeleton.svg +1 -0
  142. package/yujin-design-system/icons/sumie/kimono-robe.svg +1 -0
  143. package/yujin-design-system/icons/sumie/koi-leaping.svg +1 -0
  144. package/yujin-design-system/icons/sumie/koi-pond.svg +1 -0
  145. package/yujin-design-system/icons/sumie/lantern-stone.svg +1 -0
  146. package/yujin-design-system/icons/sumie/ledger-tally.svg +1 -0
  147. package/yujin-design-system/icons/sumie/lifebuoy-ring.svg +1 -0
  148. package/yujin-design-system/icons/sumie/lock-shut.svg +1 -0
  149. package/yujin-design-system/icons/sumie/lotus-flower.svg +1 -0
  150. package/yujin-design-system/icons/sumie/magnify-glass.svg +1 -0
  151. package/yujin-design-system/icons/sumie/manifest.json +1263 -0
  152. package/yujin-design-system/icons/sumie/maple-leaf.svg +1 -0
  153. package/yujin-design-system/icons/sumie/mask-noh.svg +1 -0
  154. package/yujin-design-system/icons/sumie/megaphone-flare.svg +1 -0
  155. package/yujin-design-system/icons/sumie/mic-voice.svg +1 -0
  156. package/yujin-design-system/icons/sumie/mirror-bronze.svg +1 -0
  157. package/yujin-design-system/icons/sumie/mobile-phone.svg +1 -0
  158. package/yujin-design-system/icons/sumie/moon-full.svg +1 -0
  159. package/yujin-design-system/icons/sumie/moon-half.svg +1 -0
  160. package/yujin-design-system/icons/sumie/mountain-mist.svg +1 -0
  161. package/yujin-design-system/icons/sumie/mountain-twin.svg +1 -0
  162. package/yujin-design-system/icons/sumie/owl-eye.svg +1 -0
  163. package/yujin-design-system/icons/sumie/pagoda-tiers.svg +1 -0
  164. package/yujin-design-system/icons/sumie/pallet-stack.svg +1 -0
  165. package/yujin-design-system/icons/sumie/paper-lantern.svg +1 -0
  166. package/yujin-design-system/icons/sumie/paper-plane.svg +1 -0
  167. package/yujin-design-system/icons/sumie/pay-card.svg +1 -0
  168. package/yujin-design-system/icons/sumie/pdf-stack.svg +1 -0
  169. package/yujin-design-system/icons/sumie/pencil-write.svg +1 -0
  170. package/yujin-design-system/icons/sumie/people-pair.svg +1 -0
  171. package/yujin-design-system/icons/sumie/people-trio.svg +1 -0
  172. package/yujin-design-system/icons/sumie/person-bow.svg +1 -0
  173. package/yujin-design-system/icons/sumie/phoenix-tail.svg +1 -0
  174. package/yujin-design-system/icons/sumie/piggy-bank.svg +1 -0
  175. package/yujin-design-system/icons/sumie/pin-location.svg +1 -0
  176. package/yujin-design-system/icons/sumie/pine-tree.svg +1 -0
  177. package/yujin-design-system/icons/sumie/pipeline-funnel.svg +1 -0
  178. package/yujin-design-system/icons/sumie/plane-flight.svg +1 -0
  179. package/yujin-design-system/icons/sumie/plug-power.svg +1 -0
  180. package/yujin-design-system/icons/sumie/plum-blossom.svg +1 -0
  181. package/yujin-design-system/icons/sumie/qr-grid.svg +1 -0
  182. package/yujin-design-system/icons/sumie/rabbit-hop.svg +1 -0
  183. package/yujin-design-system/icons/sumie/rain-falling.svg +1 -0
  184. package/yujin-design-system/icons/sumie/receipt-strip.svg +1 -0
  185. package/yujin-design-system/icons/sumie/reed-grass.svg +1 -0
  186. package/yujin-design-system/icons/sumie/rice-bowl.svg +1 -0
  187. package/yujin-design-system/icons/sumie/river-bend.svg +1 -0
  188. package/yujin-design-system/icons/sumie/rock-stack.svg +1 -0
  189. package/yujin-design-system/icons/sumie/rope-shimenawa.svg +1 -0
  190. package/yujin-design-system/icons/sumie/safe-vault.svg +1 -0
  191. package/yujin-design-system/icons/sumie/sake-bottle.svg +1 -0
  192. package/yujin-design-system/icons/sumie/sandal-geta.svg +1 -0
  193. package/yujin-design-system/icons/sumie/scales-balance.svg +1 -0
  194. package/yujin-design-system/icons/sumie/scroll-rolled.svg +1 -0
  195. package/yujin-design-system/icons/sumie/seal-stamp.svg +1 -0
  196. package/yujin-design-system/icons/sumie/server-rack.svg +1 -0
  197. package/yujin-design-system/icons/sumie/shield-knight.svg +1 -0
  198. package/yujin-design-system/icons/sumie/shrine-roof.svg +1 -0
  199. package/yujin-design-system/icons/sumie/signature-loop.svg +1 -0
  200. package/yujin-design-system/icons/sumie/snow-flake.svg +1 -0
  201. package/yujin-design-system/icons/sumie/spark-ai.svg +1 -0
  202. package/yujin-design-system/icons/sumie/spark-burst.svg +1 -0
  203. package/yujin-design-system/icons/sumie/speech-cloud.svg +1 -0
  204. package/yujin-design-system/icons/sumie/spider-silk.svg +1 -0
  205. package/yujin-design-system/icons/sumie/star-cluster.svg +1 -0
  206. package/yujin-design-system/icons/sumie/star-five.svg +1 -0
  207. package/yujin-design-system/icons/sumie/star-rating.svg +1 -0
  208. package/yujin-design-system/icons/sumie/sun-rising.svg +1 -0
  209. package/yujin-design-system/icons/sumie/sword-katana.svg +1 -0
  210. package/yujin-design-system/icons/sumie/tablet-flat.svg +1 -0
  211. package/yujin-design-system/icons/sumie/tag-price.svg +1 -0
  212. package/yujin-design-system/icons/sumie/target-bullseye.svg +1 -0
  213. package/yujin-design-system/icons/sumie/tax-stamp.svg +1 -0
  214. package/yujin-design-system/icons/sumie/tea-cup.svg +1 -0
  215. package/yujin-design-system/icons/sumie/tea-house.svg +1 -0
  216. package/yujin-design-system/icons/sumie/tea-pot.svg +1 -0
  217. package/yujin-design-system/icons/sumie/temple-gate.svg +1 -0
  218. package/yujin-design-system/icons/sumie/thermo-bulb.svg +1 -0
  219. package/yujin-design-system/icons/sumie/thread-spool.svg +1 -0
  220. package/yujin-design-system/icons/sumie/tiger-claw.svg +1 -0
  221. package/yujin-design-system/icons/sumie/time-clock.svg +1 -0
  222. package/yujin-design-system/icons/sumie/torii-double.svg +1 -0
  223. package/yujin-design-system/icons/sumie/train-rail.svg +1 -0
  224. package/yujin-design-system/icons/sumie/truck-cargo.svg +1 -0
  225. package/yujin-design-system/icons/sumie/turtle-shell.svg +1 -0
  226. package/yujin-design-system/icons/sumie/umbrella-folded.svg +1 -0
  227. package/yujin-design-system/icons/sumie/umbrella-wagasa.svg +1 -0
  228. package/yujin-design-system/icons/sumie/wallet-pouch.svg +1 -0
  229. package/yujin-design-system/icons/sumie/warehouse-roof.svg +1 -0
  230. package/yujin-design-system/icons/sumie/wave-curl.svg +1 -0
  231. package/yujin-design-system/icons/sumie/wave-great.svg +1 -0
  232. package/yujin-design-system/icons/sumie/willow-leaf.svg +1 -0
  233. package/yujin-design-system/icons/sumie/wind-gust.svg +1 -0
  234. package/yujin-design-system/icons/sumie/wrench-spanner.svg +1 -0
  235. package/yujin-design-system/manifest.json +69 -0
  236. package/yujin-design-system/preview.html +32 -0
  237. package/yujin-design-system/tokens/yujin-tokens.css +2386 -0
  238. package/yujin-design-system/tokens/yujin-tokens.json +1170 -0
  239. package/yujin-design-system-artdeco/icons/_generate.mjs +142 -0
  240. package/yujin-design-system-artdeco/icons/artdeco/add.svg +1 -0
  241. package/yujin-design-system-artdeco/icons/artdeco/arrow-right.svg +1 -0
  242. package/yujin-design-system-artdeco/icons/artdeco/bell.svg +1 -0
  243. package/yujin-design-system-artdeco/icons/artdeco/briefcase.svg +1 -0
  244. package/yujin-design-system-artdeco/icons/artdeco/building.svg +1 -0
  245. package/yujin-design-system-artdeco/icons/artdeco/calendar.svg +1 -0
  246. package/yujin-design-system-artdeco/icons/artdeco/chart-bar.svg +1 -0
  247. package/yujin-design-system-artdeco/icons/artdeco/chart-line.svg +1 -0
  248. package/yujin-design-system-artdeco/icons/artdeco/chat.svg +1 -0
  249. package/yujin-design-system-artdeco/icons/artdeco/check.svg +1 -0
  250. package/yujin-design-system-artdeco/icons/artdeco/chevron-right.svg +1 -0
  251. package/yujin-design-system-artdeco/icons/artdeco/clipboard.svg +1 -0
  252. package/yujin-design-system-artdeco/icons/artdeco/clock.svg +1 -0
  253. package/yujin-design-system-artdeco/icons/artdeco/close.svg +1 -0
  254. package/yujin-design-system-artdeco/icons/artdeco/coin.svg +1 -0
  255. package/yujin-design-system-artdeco/icons/artdeco/dashboard.svg +1 -0
  256. package/yujin-design-system-artdeco/icons/artdeco/database.svg +1 -0
  257. package/yujin-design-system-artdeco/icons/artdeco/delete.svg +1 -0
  258. package/yujin-design-system-artdeco/icons/artdeco/document.svg +1 -0
  259. package/yujin-design-system-artdeco/icons/artdeco/download.svg +1 -0
  260. package/yujin-design-system-artdeco/icons/artdeco/edit.svg +1 -0
  261. package/yujin-design-system-artdeco/icons/artdeco/expand.svg +1 -0
  262. package/yujin-design-system-artdeco/icons/artdeco/filter.svg +1 -0
  263. package/yujin-design-system-artdeco/icons/artdeco/folder.svg +1 -0
  264. package/yujin-design-system-artdeco/icons/artdeco/globe.svg +1 -0
  265. package/yujin-design-system-artdeco/icons/artdeco/handshake.svg +1 -0
  266. package/yujin-design-system-artdeco/icons/artdeco/heart.svg +1 -0
  267. package/yujin-design-system-artdeco/icons/artdeco/home.svg +1 -0
  268. package/yujin-design-system-artdeco/icons/artdeco/info.svg +1 -0
  269. package/yujin-design-system-artdeco/icons/artdeco/invoice.svg +1 -0
  270. package/yujin-design-system-artdeco/icons/artdeco/list.svg +1 -0
  271. package/yujin-design-system-artdeco/icons/artdeco/lock.svg +1 -0
  272. package/yujin-design-system-artdeco/icons/artdeco/mail.svg +1 -0
  273. package/yujin-design-system-artdeco/icons/artdeco/manifest.json +365 -0
  274. package/yujin-design-system-artdeco/icons/artdeco/menu.svg +1 -0
  275. package/yujin-design-system-artdeco/icons/artdeco/phone.svg +1 -0
  276. package/yujin-design-system-artdeco/icons/artdeco/search.svg +1 -0
  277. package/yujin-design-system-artdeco/icons/artdeco/send.svg +1 -0
  278. package/yujin-design-system-artdeco/icons/artdeco/settings.svg +1 -0
  279. package/yujin-design-system-artdeco/icons/artdeco/share.svg +1 -0
  280. package/yujin-design-system-artdeco/icons/artdeco/shield.svg +1 -0
  281. package/yujin-design-system-artdeco/icons/artdeco/star.svg +1 -0
  282. package/yujin-design-system-artdeco/icons/artdeco/sun.svg +1 -0
  283. package/yujin-design-system-artdeco/icons/artdeco/table.svg +1 -0
  284. package/yujin-design-system-artdeco/icons/artdeco/tag.svg +1 -0
  285. package/yujin-design-system-artdeco/icons/artdeco/target.svg +1 -0
  286. package/yujin-design-system-artdeco/icons/artdeco/user.svg +1 -0
  287. package/yujin-design-system-artdeco/icons/artdeco/users.svg +1 -0
  288. package/yujin-design-system-artdeco/icons/artdeco/warning.svg +1 -0
  289. package/yujin-design-system-artdeco/manifest.json +44 -0
  290. package/yujin-design-system-artdeco/preview.html +25 -0
  291. package/yujin-design-system-artdeco/tokens/artdeco-tokens.css +145 -0
  292. package/yujin-design-system-artdeco/tokens/artdeco-tokens.json +40 -0
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Art Deco icon catalog generator (PND-112).
3
+ *
4
+ * Authoring source for the art deco icon set. Each icon is geometric line
5
+ * art -- fine even stroke, bilateral symmetry, square caps + miter joins
6
+ * for the crisp art deco feel -- on a 40x40 grid, stroke="currentColor"
7
+ * so it inherits the theme. Run `node _generate.mjs` to (re)emit the SVG
8
+ * files + manifest under icons/artdeco/. Extend ICONS to grow the set.
9
+ *
10
+ * ASCII-only.
11
+ */
12
+ import { promises as fs } from 'node:fs';
13
+ import path from 'node:path';
14
+ import { fileURLToPath } from 'node:url';
15
+
16
+ const OUT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), 'artdeco');
17
+
18
+ const wrap = (inner) =>
19
+ '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" '
20
+ + 'stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter">'
21
+ + inner + '</svg>\n';
22
+
23
+ /* slug -> { tags, svg(inner) }. Tags mirror the sumi-e taxonomy so
24
+ * coverage aligns (get-icon parity across DS variants). */
25
+ const ICONS = {
26
+ /* --- actions / UI --- */
27
+ 'home': { tags: ['action'], svg: '<path d="M8 20 L20 9 L32 20"/><path d="M11 18 V31 H29 V18"/><path d="M17 31 V24 H23 V31"/>' },
28
+ 'search': { tags: ['action'], svg: '<circle cx="18" cy="18" r="8"/><path d="M24 24 L31 31"/>' },
29
+ 'add': { tags: ['action'], svg: '<path d="M20 9 V31"/><path d="M9 20 H31"/>' },
30
+ 'edit': { tags: ['action','tool'], svg: '<path d="M24 9 L31 16 L16 31 L9 31 L9 24 Z"/><path d="M21 12 L28 19"/>' },
31
+ 'delete': { tags: ['action'], svg: '<path d="M10 13 H30"/><path d="M13 13 V31 H27 V13"/><path d="M16 13 V10 H24 V13"/><path d="M18 17 V27 M22 17 V27"/>' },
32
+ 'settings': { tags: ['action','platform'], svg: '<path d="M20 8 L24 12 H29 V17 L33 20 L29 23 V28 H24 L20 32 L16 28 H11 V23 L7 20 L11 17 V12 H16 Z"/><circle cx="20" cy="20" r="5"/>' },
33
+ 'check': { tags: ['action','quality'], svg: '<path d="M9 21 L17 29 L31 11"/>' },
34
+ 'close': { tags: ['action'], svg: '<path d="M11 11 L29 29"/><path d="M29 11 L11 29"/>' },
35
+ 'arrow-right': { tags: ['action'], svg: '<path d="M8 20 H30"/><path d="M23 13 L30 20 L23 27"/>' },
36
+ 'menu': { tags: ['action'], svg: '<path d="M9 14 H31"/><path d="M9 20 H31"/><path d="M9 26 H31"/>' },
37
+ 'filter': { tags: ['action'], svg: '<path d="M8 10 H32 L23 21 V31 L17 28 V21 Z"/>' },
38
+ 'download': { tags: ['action'], svg: '<path d="M20 8 V25"/><path d="M12 18 L20 26 L28 18"/><path d="M10 31 H30"/>' },
39
+ 'expand': { tags: ['action'], svg: '<path d="M9 16 V9 H16"/><path d="M31 16 V9 H24"/><path d="M9 24 V31 H16"/><path d="M31 24 V31 H24"/>' },
40
+ 'chevron-right': { tags: ['action'], svg: '<path d="M16 10 L26 20 L16 30"/>' },
41
+ 'send': { tags: ['action','comms'], svg: '<path d="M8 20 L32 9 L24 32 L19 23 Z"/><path d="M19 23 L32 9"/>' },
42
+ 'share': { tags: ['action','comms'], svg: '<circle cx="12" cy="20" r="3"/><circle cx="28" cy="11" r="3"/><circle cx="28" cy="29" r="3"/><path d="M15 18 L25 12 M15 22 L25 28"/>' },
43
+
44
+ /* --- layout / data --- */
45
+ 'dashboard': { tags: ['platform'], svg: '<rect x="9" y="9" width="9" height="9"/><rect x="22" y="9" width="9" height="9"/><rect x="9" y="22" width="9" height="9"/><rect x="22" y="22" width="9" height="9"/>' },
46
+ 'list': { tags: ['document'], svg: '<path d="M15 13 H31"/><path d="M15 20 H31"/><path d="M15 27 H31"/><circle cx="10" cy="13" r="1.3"/><circle cx="10" cy="20" r="1.3"/><circle cx="10" cy="27" r="1.3"/>' },
47
+ 'calendar': { tags: ['document'], svg: '<rect x="9" y="11" width="22" height="20"/><path d="M9 17 H31"/><path d="M15 8 V13"/><path d="M25 8 V13"/>' },
48
+ 'folder': { tags: ['document'], svg: '<path d="M9 13 H17 L20 16 H31 V29 H9 Z"/>' },
49
+ 'table': { tags: ['document','platform'], svg: '<rect x="9" y="11" width="22" height="18"/><path d="M9 17 H31"/><path d="M9 23 H31"/><path d="M16 11 V29"/><path d="M24 11 V29"/>' },
50
+ 'database': { tags: ['platform'], svg: '<ellipse cx="20" cy="12" rx="9" ry="4"/><path d="M11 12 V28 C11 32 29 32 29 28 V12"/><path d="M11 20 C11 24 29 24 29 20"/>' },
51
+ 'document': { tags: ['document'], svg: '<path d="M13 8 H24 L28 12 V32 H13 Z"/><path d="M24 8 V12 H28"/><path d="M16 18 H25 M16 22 H25 M16 26 H21"/>' },
52
+ 'clipboard': { tags: ['document'], svg: '<rect x="11" y="11" width="18" height="20"/><rect x="16" y="8" width="8" height="5"/><path d="M16 19 H24 M16 24 H24"/>' },
53
+ 'tag': { tags: ['inventory','marketing'], svg: '<path d="M8 8 H20 L32 20 L20 32 L8 20 Z"/><circle cx="14" cy="14" r="1.8"/>' },
54
+
55
+ /* --- people / business / finance --- */
56
+ 'user': { tags: ['hr'], svg: '<circle cx="20" cy="15" r="6"/><path d="M9 31 C9 23 31 23 31 31"/>' },
57
+ 'users': { tags: ['hr'], svg: '<circle cx="16" cy="15" r="5"/><path d="M7 30 C7 23 25 23 25 30"/><path d="M26 12 A5 5 0 0 1 26 22"/><path d="M27 24 C31 25 33 27 33 30"/>' },
58
+ 'building': { tags: ['building','platform'], svg: '<path d="M12 32 V18 H16 V13 H20 V9 H24 V13 H28 V18 V32"/><path d="M16 22 H20 M24 22 H28 M16 27 H20 M24 27 H28"/>' },
59
+ 'briefcase': { tags: ['sales'], svg: '<rect x="8" y="15" width="24" height="16"/><path d="M15 15 V11 H25 V15"/><path d="M8 22 H32"/>' },
60
+ 'handshake': { tags: ['sales'], svg: '<path d="M8 16 L14 14 L20 18 L26 14 L32 16"/><path d="M8 16 V24 L14 26 L20 22"/><path d="M32 16 V24 L26 26 L20 22"/>' },
61
+ 'target': { tags: ['sales','marketing'], svg: '<circle cx="20" cy="20" r="11"/><circle cx="20" cy="20" r="6"/><circle cx="20" cy="20" r="1.5"/>' },
62
+ 'coin': { tags: ['finance'], svg: '<circle cx="20" cy="20" r="11"/><path d="M20 12 V28"/><path d="M16 16 H22 A3 3 0 0 1 22 22 H16 H23"/>' },
63
+ 'invoice': { tags: ['finance','document'], svg: '<path d="M12 8 H28 V32 L24 30 L20 32 L16 30 L12 32 Z"/><path d="M16 15 H24 M16 20 H24 M16 25 H21"/>' },
64
+ 'chart-bar': { tags: ['finance','marketing'], svg: '<path d="M9 9 V31 H31"/><rect x="13" y="22" width="4" height="9"/><rect x="20" y="16" width="4" height="15"/><rect x="27" y="12" width="4" height="19" transform="translate(-4 0)"/>' },
65
+ 'chart-line': { tags: ['finance','marketing'], svg: '<path d="M9 9 V31 H31"/><path d="M11 27 L17 19 L22 23 L30 12"/>' },
66
+
67
+ /* --- communication --- */
68
+ 'mail': { tags: ['comms'], svg: '<rect x="8" y="12" width="24" height="16"/><path d="M8 12 L20 22 L32 12"/>' },
69
+ 'chat': { tags: ['comms'], svg: '<path d="M9 10 H31 V24 H19 L12 30 V24 H9 Z"/><path d="M15 15 H25 M15 19 H22"/>' },
70
+ 'phone': { tags: ['comms'], svg: '<path d="M12 9 L18 9 L20 16 L16 19 C18 23 21 26 25 28 L28 24 L35 26 V32 C24 33 11 21 12 9 Z" transform="translate(-2 -1)"/>' },
71
+ 'bell': { tags: ['comms','platform'], svg: '<path d="M13 26 C13 16 14 12 20 12 C26 12 27 16 27 26 Z"/><path d="M10 26 H30"/><path d="M17 29 A3 3 0 0 0 23 29"/><path d="M20 9 V12"/>' },
72
+
73
+ /* --- status / symbol --- */
74
+ 'star': { tags: ['symbol','quality'], svg: '<path d="M20 7 L24 16 L33 17 L26 23 L28 32 L20 27 L12 32 L14 23 L7 17 L16 16 Z"/>' },
75
+ 'heart': { tags: ['symbol'], svg: '<path d="M20 30 C7 21 11 11 20 16 C29 11 33 21 20 30 Z"/>' },
76
+ 'clock': { tags: ['symbol','platform'], svg: '<circle cx="20" cy="20" r="11"/><path d="M20 13 V20 L25 24"/>' },
77
+ 'lock': { tags: ['symbol','platform'], svg: '<rect x="11" y="18" width="18" height="14"/><path d="M15 18 V14 A5 5 0 0 1 25 14 V18"/><path d="M20 23 V27"/>' },
78
+ 'shield': { tags: ['symbol','platform'], svg: '<path d="M20 8 L31 12 V21 C31 27 20 32 20 32 C20 32 9 27 9 21 V12 Z"/><path d="M16 20 L19 23 L25 16"/>' },
79
+ 'info': { tags: ['symbol'], svg: '<circle cx="20" cy="20" r="11"/><path d="M20 18 V26"/><path d="M20 13 V14.5"/>' },
80
+ 'warning': { tags: ['symbol','quality'], svg: '<path d="M20 8 L33 31 H7 Z"/><path d="M20 17 V24"/><path d="M20 27 V28"/>' },
81
+ 'sun': { tags: ['celestial','symbol'], svg: '<circle cx="20" cy="20" r="5"/><path d="M20 6 V11 M20 29 V34 M6 20 H11 M29 20 H34 M10 10 L13.5 13.5 M26.5 26.5 L30 30 M30 10 L26.5 13.5 M13.5 26.5 L10 30"/>' },
82
+ 'globe': { tags: ['platform','ai'], svg: '<circle cx="20" cy="20" r="11"/><path d="M9 20 H31"/><path d="M20 9 V31"/><ellipse cx="20" cy="20" rx="5" ry="11"/>' },
83
+ };
84
+
85
+ const run = async () => {
86
+ await fs.mkdir(OUT, { recursive: true });
87
+ const index = [];
88
+ for (const [slug, def] of Object.entries(ICONS)) {
89
+ await fs.writeFile(path.join(OUT, slug + '.svg'), wrap(def.svg), 'utf-8');
90
+ index.push({ slug, tags: def.tags, file: slug + '.svg' });
91
+ }
92
+ const manifest = {
93
+ format: 'inline-svg-40x40',
94
+ style: 'geometric line art, fine even stroke, bilateral symmetry, stepped/sunburst art deco motifs',
95
+ count: index.length,
96
+ status: 'active',
97
+ note: 'Generado por _generate.mjs. Extender ICONS para crecer el set.',
98
+ icons: index,
99
+ };
100
+ await fs.writeFile(path.join(OUT, 'manifest.json'), JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
101
+
102
+ /* Visual preview (palette + every icon) -- open preview.html in a
103
+ * browser. Self-contained: pulls fonts from the CDN + the tokens CSS. */
104
+ const swatches = [
105
+ ['Acento', '#6E8FB5'], ['Acento hover', '#41607F'], ['Acento light', '#DFE9F3'],
106
+ ['Slate 900', '#1B2026'], ['Slate 600', '#5A646F'], ['Slate 300', '#CBD2DB'], ['Slate 50', '#F8F9FB'],
107
+ ['Cream 50', '#FCFAF5'], ['Cream 100', '#F6F1E7'], ['Brass (filete)', '#BFA871'],
108
+ ['Salvia (ok)', '#4F6E4D'], ['Rosa polvo (danger)', '#8C5252'], ['Ocre (warn)', '#957B3C'],
109
+ ];
110
+ const cells = Object.entries(ICONS).map(([slug, def]) =>
111
+ `<figure><span class="ic">${wrap(def.svg).replace(/\n$/, '')}</span><figcaption>${slug}</figcaption></figure>`).join('');
112
+ const swatchHtml = swatches.map(([n, c]) =>
113
+ `<div class="sw"><span style="background:${c}"></span><b>${n}</b><code>${c}</code></div>`).join('');
114
+ const html = `<!doctype html><html lang="es"><head><meta charset="utf-8">
115
+ <meta name="viewport" content="width=device-width,initial-scale=1">
116
+ <title>Yujin DS -- Art Deco preview</title>
117
+ <link rel="stylesheet" href="tokens/artdeco-tokens.css">
118
+ <style>
119
+ @import url('https://fonts.googleapis.com/css2?family=Poiret+One&family=Josefin+Sans:wght@300;400;600&display=swap');
120
+ :root,.page{--color-accent:#6E8FB5}
121
+ body{margin:0;background:#FCFAF5;color:#1B2026;font-family:'Josefin Sans',system-ui,sans-serif}
122
+ .page{max-width:980px;margin:0 auto;padding:48px 28px 80px}
123
+ h1{font-family:'Poiret One',sans-serif;font-weight:400;letter-spacing:.42em;font-size:34px;margin:0 0 4px;text-transform:uppercase}
124
+ .sub{color:#5A646F;letter-spacing:.18em;text-transform:uppercase;font-size:12px;border-top:1px solid #BFA871;border-bottom:1px solid #BFA871;display:inline-block;padding:6px 0;margin:10px 0 36px}
125
+ h2{font-family:'Poiret One',sans-serif;letter-spacing:.2em;text-transform:uppercase;font-size:16px;color:#41607F;margin:40px 0 16px;border-bottom:1px solid #BFA871;padding-bottom:8px}
126
+ .sw{display:inline-flex;align-items:center;gap:8px;margin:0 18px 12px 0;font-size:12px}
127
+ .sw span{width:34px;height:34px;border-radius:4px;border:1px solid rgba(0,0,0,.08);display:inline-block}
128
+ .sw code{color:#5A646F}
129
+ .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:10px}
130
+ figure{margin:0;background:#fff;border:1px solid #E2E6EC;border-top:2px solid #BFA871;border-radius:4px;padding:14px 6px 8px;text-align:center}
131
+ .ic svg{width:34px;height:34px;color:#6E8FB5}
132
+ figcaption{margin-top:8px;font-size:11px;color:#5A646F;letter-spacing:.04em}
133
+ </style></head>
134
+ <body><div class="page">
135
+ <h1>Yujin</h1><div class="sub">Design System &middot; Art Deco</div>
136
+ <h2>Paleta pastel</h2><div>${swatchHtml}</div>
137
+ <h2>Iconografia &middot; ${index.length} iconos</h2><div class="grid">${cells}</div>
138
+ </div></body></html>`;
139
+ await fs.writeFile(path.resolve(OUT, '..', '..', 'preview.html'), html, 'utf-8');
140
+ console.log('wrote', index.length, 'art deco icons + manifest + preview.html');
141
+ };
142
+ run().catch((e) => { console.error(e); process.exit(1); });
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M20 9 V31"/><path d="M9 20 H31"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M8 20 H30"/><path d="M23 13 L30 20 L23 27"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M13 26 C13 16 14 12 20 12 C26 12 27 16 27 26 Z"/><path d="M10 26 H30"/><path d="M17 29 A3 3 0 0 0 23 29"/><path d="M20 9 V12"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><rect x="8" y="15" width="24" height="16"/><path d="M15 15 V11 H25 V15"/><path d="M8 22 H32"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M12 32 V18 H16 V13 H20 V9 H24 V13 H28 V18 V32"/><path d="M16 22 H20 M24 22 H28 M16 27 H20 M24 27 H28"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><rect x="9" y="11" width="22" height="20"/><path d="M9 17 H31"/><path d="M15 8 V13"/><path d="M25 8 V13"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 9 V31 H31"/><rect x="13" y="22" width="4" height="9"/><rect x="20" y="16" width="4" height="15"/><rect x="27" y="12" width="4" height="19" transform="translate(-4 0)"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 9 V31 H31"/><path d="M11 27 L17 19 L22 23 L30 12"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 10 H31 V24 H19 L12 30 V24 H9 Z"/><path d="M15 15 H25 M15 19 H22"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 21 L17 29 L31 11"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M16 10 L26 20 L16 30"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><rect x="11" y="11" width="18" height="20"/><rect x="16" y="8" width="8" height="5"/><path d="M16 19 H24 M16 24 H24"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><circle cx="20" cy="20" r="11"/><path d="M20 13 V20 L25 24"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M11 11 L29 29"/><path d="M29 11 L11 29"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><circle cx="20" cy="20" r="11"/><path d="M20 12 V28"/><path d="M16 16 H22 A3 3 0 0 1 22 22 H16 H23"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><rect x="9" y="9" width="9" height="9"/><rect x="22" y="9" width="9" height="9"/><rect x="9" y="22" width="9" height="9"/><rect x="22" y="22" width="9" height="9"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><ellipse cx="20" cy="12" rx="9" ry="4"/><path d="M11 12 V28 C11 32 29 32 29 28 V12"/><path d="M11 20 C11 24 29 24 29 20"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M10 13 H30"/><path d="M13 13 V31 H27 V13"/><path d="M16 13 V10 H24 V13"/><path d="M18 17 V27 M22 17 V27"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M13 8 H24 L28 12 V32 H13 Z"/><path d="M24 8 V12 H28"/><path d="M16 18 H25 M16 22 H25 M16 26 H21"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M20 8 V25"/><path d="M12 18 L20 26 L28 18"/><path d="M10 31 H30"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M24 9 L31 16 L16 31 L9 31 L9 24 Z"/><path d="M21 12 L28 19"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 16 V9 H16"/><path d="M31 16 V9 H24"/><path d="M9 24 V31 H16"/><path d="M31 24 V31 H24"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M8 10 H32 L23 21 V31 L17 28 V21 Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 13 H17 L20 16 H31 V29 H9 Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><circle cx="20" cy="20" r="11"/><path d="M9 20 H31"/><path d="M20 9 V31"/><ellipse cx="20" cy="20" rx="5" ry="11"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M8 16 L14 14 L20 18 L26 14 L32 16"/><path d="M8 16 V24 L14 26 L20 22"/><path d="M32 16 V24 L26 26 L20 22"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M20 30 C7 21 11 11 20 16 C29 11 33 21 20 30 Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M8 20 L20 9 L32 20"/><path d="M11 18 V31 H29 V18"/><path d="M17 31 V24 H23 V31"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><circle cx="20" cy="20" r="11"/><path d="M20 18 V26"/><path d="M20 13 V14.5"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M12 8 H28 V32 L24 30 L20 32 L16 30 L12 32 Z"/><path d="M16 15 H24 M16 20 H24 M16 25 H21"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M15 13 H31"/><path d="M15 20 H31"/><path d="M15 27 H31"/><circle cx="10" cy="13" r="1.3"/><circle cx="10" cy="20" r="1.3"/><circle cx="10" cy="27" r="1.3"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><rect x="11" y="18" width="18" height="14"/><path d="M15 18 V14 A5 5 0 0 1 25 14 V18"/><path d="M20 23 V27"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><rect x="8" y="12" width="24" height="16"/><path d="M8 12 L20 22 L32 12"/></svg>
@@ -0,0 +1,365 @@
1
+ {
2
+ "format": "inline-svg-40x40",
3
+ "style": "geometric line art, fine even stroke, bilateral symmetry, stepped/sunburst art deco motifs",
4
+ "count": 48,
5
+ "status": "active",
6
+ "note": "Generado por _generate.mjs. Extender ICONS para crecer el set.",
7
+ "icons": [
8
+ {
9
+ "slug": "home",
10
+ "tags": [
11
+ "action"
12
+ ],
13
+ "file": "home.svg"
14
+ },
15
+ {
16
+ "slug": "search",
17
+ "tags": [
18
+ "action"
19
+ ],
20
+ "file": "search.svg"
21
+ },
22
+ {
23
+ "slug": "add",
24
+ "tags": [
25
+ "action"
26
+ ],
27
+ "file": "add.svg"
28
+ },
29
+ {
30
+ "slug": "edit",
31
+ "tags": [
32
+ "action",
33
+ "tool"
34
+ ],
35
+ "file": "edit.svg"
36
+ },
37
+ {
38
+ "slug": "delete",
39
+ "tags": [
40
+ "action"
41
+ ],
42
+ "file": "delete.svg"
43
+ },
44
+ {
45
+ "slug": "settings",
46
+ "tags": [
47
+ "action",
48
+ "platform"
49
+ ],
50
+ "file": "settings.svg"
51
+ },
52
+ {
53
+ "slug": "check",
54
+ "tags": [
55
+ "action",
56
+ "quality"
57
+ ],
58
+ "file": "check.svg"
59
+ },
60
+ {
61
+ "slug": "close",
62
+ "tags": [
63
+ "action"
64
+ ],
65
+ "file": "close.svg"
66
+ },
67
+ {
68
+ "slug": "arrow-right",
69
+ "tags": [
70
+ "action"
71
+ ],
72
+ "file": "arrow-right.svg"
73
+ },
74
+ {
75
+ "slug": "menu",
76
+ "tags": [
77
+ "action"
78
+ ],
79
+ "file": "menu.svg"
80
+ },
81
+ {
82
+ "slug": "filter",
83
+ "tags": [
84
+ "action"
85
+ ],
86
+ "file": "filter.svg"
87
+ },
88
+ {
89
+ "slug": "download",
90
+ "tags": [
91
+ "action"
92
+ ],
93
+ "file": "download.svg"
94
+ },
95
+ {
96
+ "slug": "expand",
97
+ "tags": [
98
+ "action"
99
+ ],
100
+ "file": "expand.svg"
101
+ },
102
+ {
103
+ "slug": "chevron-right",
104
+ "tags": [
105
+ "action"
106
+ ],
107
+ "file": "chevron-right.svg"
108
+ },
109
+ {
110
+ "slug": "send",
111
+ "tags": [
112
+ "action",
113
+ "comms"
114
+ ],
115
+ "file": "send.svg"
116
+ },
117
+ {
118
+ "slug": "share",
119
+ "tags": [
120
+ "action",
121
+ "comms"
122
+ ],
123
+ "file": "share.svg"
124
+ },
125
+ {
126
+ "slug": "dashboard",
127
+ "tags": [
128
+ "platform"
129
+ ],
130
+ "file": "dashboard.svg"
131
+ },
132
+ {
133
+ "slug": "list",
134
+ "tags": [
135
+ "document"
136
+ ],
137
+ "file": "list.svg"
138
+ },
139
+ {
140
+ "slug": "calendar",
141
+ "tags": [
142
+ "document"
143
+ ],
144
+ "file": "calendar.svg"
145
+ },
146
+ {
147
+ "slug": "folder",
148
+ "tags": [
149
+ "document"
150
+ ],
151
+ "file": "folder.svg"
152
+ },
153
+ {
154
+ "slug": "table",
155
+ "tags": [
156
+ "document",
157
+ "platform"
158
+ ],
159
+ "file": "table.svg"
160
+ },
161
+ {
162
+ "slug": "database",
163
+ "tags": [
164
+ "platform"
165
+ ],
166
+ "file": "database.svg"
167
+ },
168
+ {
169
+ "slug": "document",
170
+ "tags": [
171
+ "document"
172
+ ],
173
+ "file": "document.svg"
174
+ },
175
+ {
176
+ "slug": "clipboard",
177
+ "tags": [
178
+ "document"
179
+ ],
180
+ "file": "clipboard.svg"
181
+ },
182
+ {
183
+ "slug": "tag",
184
+ "tags": [
185
+ "inventory",
186
+ "marketing"
187
+ ],
188
+ "file": "tag.svg"
189
+ },
190
+ {
191
+ "slug": "user",
192
+ "tags": [
193
+ "hr"
194
+ ],
195
+ "file": "user.svg"
196
+ },
197
+ {
198
+ "slug": "users",
199
+ "tags": [
200
+ "hr"
201
+ ],
202
+ "file": "users.svg"
203
+ },
204
+ {
205
+ "slug": "building",
206
+ "tags": [
207
+ "building",
208
+ "platform"
209
+ ],
210
+ "file": "building.svg"
211
+ },
212
+ {
213
+ "slug": "briefcase",
214
+ "tags": [
215
+ "sales"
216
+ ],
217
+ "file": "briefcase.svg"
218
+ },
219
+ {
220
+ "slug": "handshake",
221
+ "tags": [
222
+ "sales"
223
+ ],
224
+ "file": "handshake.svg"
225
+ },
226
+ {
227
+ "slug": "target",
228
+ "tags": [
229
+ "sales",
230
+ "marketing"
231
+ ],
232
+ "file": "target.svg"
233
+ },
234
+ {
235
+ "slug": "coin",
236
+ "tags": [
237
+ "finance"
238
+ ],
239
+ "file": "coin.svg"
240
+ },
241
+ {
242
+ "slug": "invoice",
243
+ "tags": [
244
+ "finance",
245
+ "document"
246
+ ],
247
+ "file": "invoice.svg"
248
+ },
249
+ {
250
+ "slug": "chart-bar",
251
+ "tags": [
252
+ "finance",
253
+ "marketing"
254
+ ],
255
+ "file": "chart-bar.svg"
256
+ },
257
+ {
258
+ "slug": "chart-line",
259
+ "tags": [
260
+ "finance",
261
+ "marketing"
262
+ ],
263
+ "file": "chart-line.svg"
264
+ },
265
+ {
266
+ "slug": "mail",
267
+ "tags": [
268
+ "comms"
269
+ ],
270
+ "file": "mail.svg"
271
+ },
272
+ {
273
+ "slug": "chat",
274
+ "tags": [
275
+ "comms"
276
+ ],
277
+ "file": "chat.svg"
278
+ },
279
+ {
280
+ "slug": "phone",
281
+ "tags": [
282
+ "comms"
283
+ ],
284
+ "file": "phone.svg"
285
+ },
286
+ {
287
+ "slug": "bell",
288
+ "tags": [
289
+ "comms",
290
+ "platform"
291
+ ],
292
+ "file": "bell.svg"
293
+ },
294
+ {
295
+ "slug": "star",
296
+ "tags": [
297
+ "symbol",
298
+ "quality"
299
+ ],
300
+ "file": "star.svg"
301
+ },
302
+ {
303
+ "slug": "heart",
304
+ "tags": [
305
+ "symbol"
306
+ ],
307
+ "file": "heart.svg"
308
+ },
309
+ {
310
+ "slug": "clock",
311
+ "tags": [
312
+ "symbol",
313
+ "platform"
314
+ ],
315
+ "file": "clock.svg"
316
+ },
317
+ {
318
+ "slug": "lock",
319
+ "tags": [
320
+ "symbol",
321
+ "platform"
322
+ ],
323
+ "file": "lock.svg"
324
+ },
325
+ {
326
+ "slug": "shield",
327
+ "tags": [
328
+ "symbol",
329
+ "platform"
330
+ ],
331
+ "file": "shield.svg"
332
+ },
333
+ {
334
+ "slug": "info",
335
+ "tags": [
336
+ "symbol"
337
+ ],
338
+ "file": "info.svg"
339
+ },
340
+ {
341
+ "slug": "warning",
342
+ "tags": [
343
+ "symbol",
344
+ "quality"
345
+ ],
346
+ "file": "warning.svg"
347
+ },
348
+ {
349
+ "slug": "sun",
350
+ "tags": [
351
+ "celestial",
352
+ "symbol"
353
+ ],
354
+ "file": "sun.svg"
355
+ },
356
+ {
357
+ "slug": "globe",
358
+ "tags": [
359
+ "platform",
360
+ "ai"
361
+ ],
362
+ "file": "globe.svg"
363
+ }
364
+ ]
365
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 14 H31"/><path d="M9 20 H31"/><path d="M9 26 H31"/></svg>