@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,26 @@
1
+ {
2
+ "slug": "dropdown",
3
+ "category": "control",
4
+ "nac3_id": "yujin.dropdown",
5
+ "description": "dropdown -- Yujin Design System default control component",
6
+ "html": "<div class=\"yj-dropdown\" data-nac-id=\"yujin.dropdown\" data-nac-role=\"dropdown\">\n <button class=\"yj-dropdown-trigger\" data-nac-role=\"trigger\">{{label}}</button>\n <ul class=\"yj-dropdown-menu\" data-nac-role=\"menu\">{{items}}</ul>\n</div>",
7
+ "css": ".yj-dropdown{position:relative;display:inline-block}\n.yj-dropdown-menu{position:absolute;top:100%;background:var(--color-bg-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-2);list-style:none;margin:var(--space-1) 0 0 0}",
8
+ "variants": [
9
+ "default",
10
+ "menu",
11
+ "submenu"
12
+ ],
13
+ "props": [
14
+ "label",
15
+ "items",
16
+ "open?"
17
+ ],
18
+ "token_refs": [
19
+ "color-bg-surface",
20
+ "color-border-subtle",
21
+ "radius-md",
22
+ "shadow-md",
23
+ "space-"
24
+ ],
25
+ "sumie_icon_hint": null
26
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "slug": "file-upload",
3
+ "category": "control",
4
+ "nac3_id": "yujin.file-upload",
5
+ "description": "file-upload -- Yujin Design System default control component",
6
+ "html": "<div class=\"yj-upload\" data-nac-id=\"yujin.file-upload\" data-nac-role=\"upload\" data-nac-action=\"upload_file\">\n <input type=\"file\" />\n <p>{{label}}</p>\n</div>",
7
+ "css": ".yj-upload{border:2px dashed var(--color-border-default);padding:var(--space-6);text-align:center;border-radius:var(--radius-md);background:var(--color-bg-subtle);cursor:pointer}",
8
+ "variants": [
9
+ "default",
10
+ "drag-drop",
11
+ "multi"
12
+ ],
13
+ "props": [
14
+ "label",
15
+ "accept?",
16
+ "multi?"
17
+ ],
18
+ "token_refs": [
19
+ "color-border-default",
20
+ "space-",
21
+ "radius-md",
22
+ "color-bg-subtle"
23
+ ],
24
+ "sumie_icon_hint": null
25
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "slug": "form-field",
3
+ "category": "control",
4
+ "nac3_id": "yujin.form-field",
5
+ "description": "form-field -- Yujin Design System default control component",
6
+ "html": "<div class=\"yj-field\" data-nac-id=\"yujin.form-field\" data-nac-role=\"field\">\n <label class=\"yj-field-label\" data-nac-role=\"label\">{{label}}</label>\n <div class=\"yj-field-control\" data-nac-role=\"control\">{{children}}</div>\n <p class=\"yj-field-hint\" data-nac-role=\"hint\">{{hint}}</p>\n <p class=\"yj-field-error\" data-nac-role=\"error\">{{error}}</p>\n</div>",
7
+ "css": ".yj-field{margin-bottom:var(--space-3)}\n.yj-field-label{display:block;font:500 var(--font-size-xs)/1.3 var(--font-family-sans);color:var(--color-text-secondary);margin-bottom:var(--space-1)}\n.yj-field-hint{font:400 var(--font-size-xs)/1.3 var(--font-family-sans);color:var(--color-text-tertiary);margin-top:var(--space-1)}\n.yj-field-error{font:500 var(--font-size-xs)/1.3 var(--font-family-sans);color:var(--color-coral-600);margin-top:var(--space-1)}",
8
+ "variants": [
9
+ "default",
10
+ "inline",
11
+ "compact"
12
+ ],
13
+ "props": [
14
+ "label",
15
+ "hint",
16
+ "error",
17
+ "children",
18
+ "required?"
19
+ ],
20
+ "token_refs": [
21
+ "space-",
22
+ "font-size-xs",
23
+ "font-family-sans",
24
+ "color-text-secondary",
25
+ "color-text-tertiary",
26
+ "color-coral-"
27
+ ],
28
+ "sumie_icon_hint": null
29
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "slug": "input",
3
+ "category": "control",
4
+ "nac3_id": "yujin.input",
5
+ "description": "input -- Yujin Design System default control component",
6
+ "html": "<input class=\"yj-input\" type=\"{{type}}\" placeholder=\"{{placeholder}}\" data-nac-id=\"yujin.input\" data-nac-role=\"input\" />",
7
+ "css": ".yj-input{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-surface);font:400 var(--font-size-sm)/1.4 var(--font-family-sans);color:var(--color-text-primary);width:100%}\n.yj-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light)}",
8
+ "variants": [
9
+ "default",
10
+ "small",
11
+ "large",
12
+ "invalid"
13
+ ],
14
+ "props": [
15
+ "type",
16
+ "placeholder",
17
+ "value?",
18
+ "invalid?"
19
+ ],
20
+ "token_refs": [
21
+ "space-",
22
+ "color-border-default",
23
+ "radius-md",
24
+ "color-bg-surface",
25
+ "font-size-sm",
26
+ "font-family-sans",
27
+ "color-text-primary",
28
+ "color-accent",
29
+ "color-accent-light"
30
+ ],
31
+ "sumie_icon_hint": null
32
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "slug": "kanban-card",
3
+ "category": "data",
4
+ "nac3_id": "yujin.kanban-card",
5
+ "description": "kanban-card -- Yujin Design System default data component",
6
+ "html": "<article class=\"yj-kanban-card\" draggable=\"true\" data-nac-id=\"yujin.kanban-card\" data-nac-role=\"kanban-card\">\n <header class=\"yj-kanban-card-title\">{{title}}</header>\n <p class=\"yj-kanban-card-body\">{{body}}</p>\n <footer class=\"yj-kanban-card-meta\">{{meta}}</footer>\n</article>",
7
+ "css": ".yj-kanban-card{background:var(--color-bg-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-2);cursor:grab;box-shadow:var(--shadow-sm)}\n.yj-kanban-card-title{font:600 var(--font-size-sm)/1.3 var(--font-family-sans);color:var(--color-text-primary);margin-bottom:var(--space-2)}\n.yj-kanban-card-body{font:400 var(--font-size-xs)/1.4 var(--font-family-sans);color:var(--color-text-secondary);margin:0 0 var(--space-2) 0}",
8
+ "variants": [
9
+ "default",
10
+ "compact",
11
+ "highlighted"
12
+ ],
13
+ "props": [
14
+ "title",
15
+ "body",
16
+ "meta",
17
+ "variant?"
18
+ ],
19
+ "token_refs": [
20
+ "color-bg-surface",
21
+ "color-border-subtle",
22
+ "radius-md",
23
+ "space-",
24
+ "shadow-sm",
25
+ "font-size-sm",
26
+ "font-family-sans",
27
+ "color-text-primary",
28
+ "font-size-xs",
29
+ "color-text-secondary"
30
+ ],
31
+ "sumie_icon_hint": null
32
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "modal",
3
+ "category": "surface",
4
+ "nac3_id": "yujin.modal",
5
+ "description": "modal -- Yujin Design System default surface component",
6
+ "html": "<div class=\"yj-modal-overlay\" data-nac-id=\"yujin.modal-overlay\" data-nac-role=\"overlay\">\n <div class=\"yj-modal\" role=\"dialog\" aria-modal=\"true\" data-nac-role=\"dialog\">\n <header class=\"yj-modal-header\" data-nac-role=\"header\">\n <h2 data-nac-role=\"title\">{{title}}</h2>\n <button class=\"yj-modal-close\" data-nac-role=\"close\" data-nac-action=\"close_modal\">x</button>\n </header>\n <div class=\"yj-modal-body\" data-nac-role=\"body\">{{children}}</div>\n <footer class=\"yj-modal-footer\" data-nac-role=\"footer\">{{footer}}</footer>\n </div>\n</div>",
7
+ "css": ".yj-modal-overlay{position:fixed;inset:0;background:rgba(26,24,21,.55);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:300}\n.yj-modal{background:var(--color-bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:560px;width:100%;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}\n.yj-modal-header{background:var(--color-indigo-600);color:var(--color-warm-0);padding:var(--space-3) var(--space-4);display:flex;justify-content:space-between;align-items:center}\n.yj-modal-body{flex:1;overflow-y:auto;padding:var(--space-4)}",
8
+ "variants": [
9
+ "default",
10
+ "wide",
11
+ "fullscreen"
12
+ ],
13
+ "props": [
14
+ "title",
15
+ "children",
16
+ "footer",
17
+ "open?"
18
+ ],
19
+ "token_refs": [
20
+ "color-bg-surface",
21
+ "radius-lg",
22
+ "shadow-lg",
23
+ "color-indigo-",
24
+ "color-warm-",
25
+ "space-"
26
+ ],
27
+ "sumie_icon_hint": null
28
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "slug": "pagination",
3
+ "category": "data",
4
+ "nac3_id": "yujin.pagination",
5
+ "description": "pagination -- Yujin Design System default data component",
6
+ "html": "<nav class=\"yj-pagination\" data-nac-id=\"yujin.pagination\" data-nac-role=\"pagination\">\n <button data-nac-action=\"prev_page\">prev</button>\n <span>{{current}} / {{total}}</span>\n <button data-nac-action=\"next_page\">next</button>\n</nav>",
7
+ "css": ".yj-pagination{display:flex;align-items:center;gap:var(--space-2);justify-content:center;padding:var(--space-3)}\n.yj-pagination button{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-default);background:var(--color-bg-surface);border-radius:var(--radius-md);cursor:pointer}",
8
+ "variants": [
9
+ "default",
10
+ "with-jump",
11
+ "simple"
12
+ ],
13
+ "props": [
14
+ "current",
15
+ "total"
16
+ ],
17
+ "token_refs": [
18
+ "space-",
19
+ "color-border-default",
20
+ "color-bg-surface",
21
+ "radius-md"
22
+ ],
23
+ "sumie_icon_hint": null
24
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "slug": "progress",
3
+ "category": "display",
4
+ "nac3_id": "yujin.progress",
5
+ "description": "progress -- Yujin Design System default display component",
6
+ "html": "<div class=\"yj-progress\" role=\"progressbar\" data-nac-id=\"yujin.progress\" data-nac-role=\"progress\"><div class=\"yj-progress-fill\" style=\"width:{{value}}%\"></div></div>",
7
+ "css": ".yj-progress{height:8px;background:var(--color-bg-subtle);border-radius:999px;overflow:hidden}\n.yj-progress-fill{height:100%;background:var(--color-accent);transition:width 200ms}",
8
+ "variants": [
9
+ "default",
10
+ "striped",
11
+ "indeterminate"
12
+ ],
13
+ "props": [
14
+ "value",
15
+ "max?",
16
+ "variant?"
17
+ ],
18
+ "token_refs": [
19
+ "color-bg-subtle",
20
+ "color-accent"
21
+ ],
22
+ "sumie_icon_hint": null
23
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "slug": "radio",
3
+ "category": "control",
4
+ "nac3_id": "yujin.radio",
5
+ "description": "radio -- Yujin Design System default control component",
6
+ "html": "<label class=\"yj-radio\" data-nac-id=\"yujin.radio\" data-nac-role=\"radio\">\n <input type=\"radio\" name=\"{{name}}\" />\n <span>{{label}}</span>\n</label>",
7
+ "css": ".yj-radio{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font:400 var(--font-size-sm)/1.4 var(--font-family-sans)}\n.yj-radio input{accent-color:var(--color-accent)}",
8
+ "variants": [
9
+ "default"
10
+ ],
11
+ "props": [
12
+ "name",
13
+ "label",
14
+ "value",
15
+ "checked?"
16
+ ],
17
+ "token_refs": [
18
+ "space-",
19
+ "font-size-sm",
20
+ "font-family-sans",
21
+ "color-accent"
22
+ ],
23
+ "sumie_icon_hint": null
24
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "slug": "search-bar",
3
+ "category": "control",
4
+ "nac3_id": "yujin.search-bar",
5
+ "description": "search-bar -- Yujin Design System default control component",
6
+ "html": "<div class=\"yj-search\" data-nac-id=\"yujin.search-bar\" data-nac-role=\"search\">\n <input type=\"search\" placeholder=\"{{placeholder}}\" />\n</div>",
7
+ "css": ".yj-search input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-surface);font:400 var(--font-size-sm)/1.4 var(--font-family-sans)}",
8
+ "variants": [
9
+ "default",
10
+ "with-icon",
11
+ "compact"
12
+ ],
13
+ "props": [
14
+ "placeholder",
15
+ "value?"
16
+ ],
17
+ "token_refs": [
18
+ "space-",
19
+ "color-border-default",
20
+ "radius-md",
21
+ "color-bg-surface",
22
+ "font-size-sm",
23
+ "font-family-sans"
24
+ ],
25
+ "sumie_icon_hint": null
26
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "slug": "select",
3
+ "category": "control",
4
+ "nac3_id": "yujin.select",
5
+ "description": "select -- Yujin Design System default control component",
6
+ "html": "<select class=\"yj-select\" data-nac-id=\"yujin.select\" data-nac-role=\"select\">{{options}}</select>",
7
+ "css": ".yj-select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-surface);font:400 var(--font-size-sm)/1.4 var(--font-family-sans)}",
8
+ "variants": [
9
+ "default",
10
+ "multi"
11
+ ],
12
+ "props": [
13
+ "options",
14
+ "value?"
15
+ ],
16
+ "token_refs": [
17
+ "space-",
18
+ "color-border-default",
19
+ "radius-md",
20
+ "color-bg-surface",
21
+ "font-size-sm",
22
+ "font-family-sans"
23
+ ],
24
+ "sumie_icon_hint": null
25
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "sidebar",
3
+ "category": "surface",
4
+ "nac3_id": "yujin.sidebar",
5
+ "description": "sidebar -- Yujin Design System default surface component",
6
+ "html": "<aside class=\"yj-sidebar\" data-nac-id=\"yujin.sidebar\" data-nac-role=\"navigation\">\n <header class=\"yj-sidebar-brand\" data-nac-role=\"brand\">{{brand}}</header>\n <nav class=\"yj-sidebar-nav\" data-nac-role=\"nav\">{{items}}</nav>\n <footer class=\"yj-sidebar-footer\" data-nac-role=\"footer\">{{footer}}</footer>\n</aside>",
7
+ "css": ".yj-sidebar{background:var(--color-bg-subtle);border-right:1px solid var(--color-border-subtle);width:240px;display:flex;flex-direction:column;height:100vh}\n.yj-sidebar-brand{padding:var(--space-4);font:600 var(--font-size-md)/1.3 var(--font-family-sans);color:var(--color-text-primary)}\n.yj-sidebar-nav{flex:1;overflow-y:auto;padding:var(--space-2)}",
8
+ "variants": [
9
+ "default",
10
+ "collapsed",
11
+ "minimal"
12
+ ],
13
+ "props": [
14
+ "brand",
15
+ "items",
16
+ "footer",
17
+ "collapsed?"
18
+ ],
19
+ "token_refs": [
20
+ "color-bg-subtle",
21
+ "color-border-subtle",
22
+ "space-",
23
+ "font-size-md",
24
+ "font-family-sans",
25
+ "color-text-primary"
26
+ ],
27
+ "sumie_icon_hint": null
28
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "slug": "skeleton",
3
+ "category": "display",
4
+ "nac3_id": "yujin.skeleton",
5
+ "description": "skeleton -- Yujin Design System default display component",
6
+ "html": "<div class=\"yj-skeleton\" data-nac-id=\"yujin.skeleton\" data-nac-role=\"skeleton\" aria-busy=\"true\"></div>",
7
+ "css": ".yj-skeleton{background:linear-gradient(90deg,var(--color-warm-100) 25%,var(--color-warm-150) 50%,var(--color-warm-100) 75%);background-size:200% 100%;animation:yj-skeleton 1.5s infinite;border-radius:var(--radius-sm);min-height:16px}\n@keyframes yj-skeleton{0%{background-position:200% 0}100%{background-position:-200% 0}}",
8
+ "variants": [
9
+ "line",
10
+ "circle",
11
+ "card"
12
+ ],
13
+ "props": [
14
+ "variant?",
15
+ "width?",
16
+ "height?"
17
+ ],
18
+ "token_refs": [
19
+ "color-warm-",
20
+ "radius-sm"
21
+ ],
22
+ "sumie_icon_hint": null
23
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "slug": "slider",
3
+ "category": "control",
4
+ "nac3_id": "yujin.slider",
5
+ "description": "slider -- Yujin Design System default control component",
6
+ "html": "<input class=\"yj-slider\" type=\"range\" data-nac-id=\"yujin.slider\" data-nac-role=\"slider\" />",
7
+ "css": ".yj-slider{accent-color:var(--color-accent);width:100%}",
8
+ "variants": [
9
+ "default",
10
+ "range"
11
+ ],
12
+ "props": [
13
+ "min",
14
+ "max",
15
+ "step?",
16
+ "value?"
17
+ ],
18
+ "token_refs": [
19
+ "color-accent"
20
+ ],
21
+ "sumie_icon_hint": null
22
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "slug": "switch",
3
+ "category": "control",
4
+ "nac3_id": "yujin.switch",
5
+ "description": "switch -- Yujin Design System default control component",
6
+ "html": "<label class=\"yj-switch\" data-nac-id=\"yujin.switch\" data-nac-role=\"switch\">\n <input type=\"checkbox\" />\n <span class=\"yj-switch-track\"><span class=\"yj-switch-knob\"></span></span>\n <span>{{label}}</span>\n</label>",
7
+ "css": ".yj-switch{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer}\n.yj-switch-track{width:36px;height:20px;border-radius:999px;background:var(--color-warm-300);position:relative;transition:background 150ms}\n.yj-switch-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--color-warm-0);transition:transform 150ms}\n.yj-switch input:checked + .yj-switch-track{background:var(--color-accent)}\n.yj-switch input:checked + .yj-switch-track .yj-switch-knob{transform:translateX(16px)}",
8
+ "variants": [
9
+ "default",
10
+ "small"
11
+ ],
12
+ "props": [
13
+ "label",
14
+ "checked?",
15
+ "disabled?"
16
+ ],
17
+ "token_refs": [
18
+ "space-",
19
+ "color-warm-",
20
+ "color-accent"
21
+ ],
22
+ "sumie_icon_hint": null
23
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "table",
3
+ "category": "data",
4
+ "nac3_id": "yujin.table",
5
+ "description": "table -- Yujin Design System default data component",
6
+ "html": "<table class=\"yj-table\" data-nac-id=\"yujin.table\" data-nac-role=\"table\">\n <thead>{{header}}</thead>\n <tbody>{{body}}</tbody>\n</table>",
7
+ "css": ".yj-table{width:100%;border-collapse:collapse;font:400 var(--font-size-sm)/1.4 var(--font-family-sans)}\n.yj-table th{text-align:left;padding:var(--space-2) var(--space-3);background:var(--color-bg-subtle);font-weight:600;border-bottom:1px solid var(--color-border-default)}\n.yj-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-subtle)}\n.yj-table tbody tr:hover{background:var(--color-bg-subtle)}",
8
+ "variants": [
9
+ "default",
10
+ "striped",
11
+ "compact",
12
+ "bordered"
13
+ ],
14
+ "props": [
15
+ "header",
16
+ "body",
17
+ "variant?"
18
+ ],
19
+ "token_refs": [
20
+ "font-size-sm",
21
+ "font-family-sans",
22
+ "space-",
23
+ "color-bg-subtle",
24
+ "color-border-default",
25
+ "color-border-subtle"
26
+ ],
27
+ "sumie_icon_hint": null
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "tabs",
3
+ "category": "surface",
4
+ "nac3_id": "yujin.tabs",
5
+ "description": "tabs -- Yujin Design System default surface component",
6
+ "html": "<div class=\"yj-tabs\" data-nac-id=\"yujin.tabs\" data-nac-role=\"tabs\">\n <div class=\"yj-tabs-list\" role=\"tablist\" data-nac-role=\"tablist\">{{tabs}}</div>\n <div class=\"yj-tabs-panels\" data-nac-role=\"panels\">{{panels}}</div>\n</div>",
7
+ "css": ".yj-tabs-list{display:flex;border-bottom:1px solid var(--color-border-subtle)}\n.yj-tabs-list button{padding:var(--space-3) var(--space-4);border:0;background:transparent;font:500 var(--font-size-sm)/1.4 var(--font-family-sans);color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent}\n.yj-tabs-list button[aria-selected=\"true\"]{color:var(--color-text-primary);border-bottom-color:var(--color-accent)}",
8
+ "variants": [
9
+ "default",
10
+ "pills",
11
+ "underline"
12
+ ],
13
+ "props": [
14
+ "tabs",
15
+ "panels",
16
+ "active?"
17
+ ],
18
+ "token_refs": [
19
+ "color-border-subtle",
20
+ "space-",
21
+ "font-size-sm",
22
+ "font-family-sans",
23
+ "color-text-secondary",
24
+ "color-text-primary",
25
+ "color-accent"
26
+ ],
27
+ "sumie_icon_hint": null
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "toast",
3
+ "category": "display",
4
+ "nac3_id": "yujin.toast",
5
+ "description": "toast -- Yujin Design System default display component",
6
+ "html": "<div class=\"yj-toast yj-toast-{{variant}}\" role=\"status\" data-nac-id=\"yujin.toast\" data-nac-role=\"toast\">{{message}}</div>",
7
+ "css": ".yj-toast{position:fixed;bottom:var(--space-4);right:var(--space-4);background:var(--color-warm-800);color:var(--color-warm-0);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font:500 var(--font-size-sm)/1.4 var(--font-family-sans);z-index:400}",
8
+ "variants": [
9
+ "info",
10
+ "success",
11
+ "warning",
12
+ "danger"
13
+ ],
14
+ "props": [
15
+ "message",
16
+ "variant",
17
+ "duration?"
18
+ ],
19
+ "token_refs": [
20
+ "space-",
21
+ "color-warm-",
22
+ "radius-md",
23
+ "shadow-lg",
24
+ "font-size-sm",
25
+ "font-family-sans"
26
+ ],
27
+ "sumie_icon_hint": null
28
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "slug": "tooltip",
3
+ "category": "display",
4
+ "nac3_id": "yujin.tooltip",
5
+ "description": "tooltip -- Yujin Design System default display component",
6
+ "html": "<span class=\"yj-tooltip\" data-nac-id=\"yujin.tooltip\" data-nac-role=\"tooltip\" data-tooltip=\"{{text}}\">{{children}}</span>",
7
+ "css": ".yj-tooltip{position:relative;display:inline-block}\n.yj-tooltip[data-tooltip]:hover::after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translateX(-50%);background:var(--color-warm-800);color:var(--color-warm-0);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);white-space:nowrap}",
8
+ "variants": [
9
+ "default",
10
+ "top",
11
+ "bottom",
12
+ "left",
13
+ "right"
14
+ ],
15
+ "props": [
16
+ "text",
17
+ "children",
18
+ "placement?"
19
+ ],
20
+ "token_refs": [
21
+ "color-warm-",
22
+ "space-",
23
+ "radius-sm",
24
+ "font-size-xs"
25
+ ],
26
+ "sumie_icon_hint": null
27
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "slug": "topbar",
3
+ "category": "surface",
4
+ "nac3_id": "yujin.topbar",
5
+ "description": "topbar -- Yujin Design System default surface component",
6
+ "html": "<header class=\"yj-topbar\" data-nac-id=\"yujin.topbar\" data-nac-role=\"topbar\">\n <div class=\"yj-topbar-left\" data-nac-role=\"left\">{{left}}</div>\n <div class=\"yj-topbar-right\" data-nac-role=\"right\">{{right}}</div>\n</header>",
7
+ "css": ".yj-topbar{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-4);background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-subtle);height:56px}",
8
+ "variants": [
9
+ "default",
10
+ "sticky",
11
+ "transparent"
12
+ ],
13
+ "props": [
14
+ "left",
15
+ "right"
16
+ ],
17
+ "token_refs": [
18
+ "space-",
19
+ "color-bg-surface",
20
+ "color-border-subtle"
21
+ ],
22
+ "sumie_icon_hint": null
23
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "slug": "view",
3
+ "category": "surface",
4
+ "nac3_id": "yujin.view",
5
+ "description": "view -- Yujin Design System default surface component",
6
+ "html": "<main class=\"yj-view\" data-nac-id=\"yujin.view\" data-nac-role=\"view\">\n <header class=\"yj-view-header\" data-nac-role=\"header\">{{header}}</header>\n <div class=\"yj-view-body\" data-nac-role=\"body\">{{children}}</div>\n</main>",
7
+ "css": ".yj-view{background:var(--color-bg-page);min-height:100vh;display:flex;flex-direction:column}\n.yj-view-header{padding:var(--space-4);border-bottom:1px solid var(--color-border-subtle);background:var(--color-bg-surface)}\n.yj-view-body{flex:1;padding:var(--space-4);overflow-y:auto}",
8
+ "variants": [
9
+ "default",
10
+ "split",
11
+ "centered"
12
+ ],
13
+ "props": [
14
+ "header",
15
+ "children"
16
+ ],
17
+ "token_refs": [
18
+ "color-bg-page",
19
+ "space-",
20
+ "color-border-subtle",
21
+ "color-bg-surface"
22
+ ],
23
+ "sumie_icon_hint": null
24
+ }
@@ -0,0 +1,31 @@
1
+ # Yujin Design System -- fonts
2
+
3
+ Reference-only. We do NOT bundle font binaries. Consumers fetch
4
+ from Google Fonts CDN:
5
+
6
+ | Family | CDN |
7
+ |---|---|
8
+ | Inter (primary) | `https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap` |
9
+ | Noto Sans JP (japanese) | `https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700&display=swap` |
10
+ | JetBrains Mono (code) | `https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap` |
11
+
12
+ ## Why no bundle
13
+
14
+ - Noto Sans JP alone is ~2 MB. Bundling it doubles the package
15
+ size + every adopter pays for it.
16
+ - CDN is cached cross-origin so most users already have it.
17
+ - Bandwidth + cold-start latency drops for the adopter app.
18
+
19
+ ## Offline fallback
20
+
21
+ If your project must run offline, override locally via
22
+ `tokens/yujin-tokens.css`:
23
+
24
+ ```css
25
+ :root {
26
+ --font-family-sans: 'YourLocalFont', -apple-system, sans-serif;
27
+ }
28
+ ```
29
+
30
+ The component templates reference `--font-family-sans` not
31
+ `Inter`, so a single token swap covers every component.
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M6 6 L34 6 L34 34 L6 34 z"/><path d="M6 18 L34 18"/><circle cx="12" cy="12" r="2" class="ink-fill"/><circle cx="20" cy="12" r="2"/><circle cx="28" cy="12" r="2"/><circle cx="14" cy="26" r="2"/><circle cx="22" cy="26" r="2" class="ink-fill"/><circle cx="30" cy="26" r="2"/></svg>
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M20 32 L20 18"/><path d="M16 36 L24 36"/><path d="M20 18 L8 8"/><path d="M20 18 L32 8"/><path d="M14 12 Q20 6 26 12"/></svg>
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M4 14 L36 14 L32 20 L28 20 L28 26 L34 30 L34 34 L6 34 L6 30 L12 26 L12 20 L8 20 z"/></svg>
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M4 12 L14 20 L20 14 L34 32"/><path d="M28 32 L34 32 L34 26"/></svg>
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M4 30 L14 22 L20 26 L34 8"/><path d="M28 8 L34 8 L34 14"/></svg>
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M4 30 Q12 12 20 14 Q28 16 36 6"/><path d="M4 34 Q12 18 20 20 Q28 22 36 14"/></svg>
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M10 6 L30 6 L30 34 L10 34 z"/><circle cx="20" cy="14" r="3"/><path d="M14 22 Q20 18 26 22"/><path d="M14 28 L26 28"/></svg>
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M14 4 L20 16 L26 4"/><circle cx="20" cy="26" r="10"/><circle cx="20" cy="26" r="5"/></svg>
@@ -0,0 +1 @@
1
+ <svg class="yj-sumie" viewBox="0 0 40 40" aria-hidden="true"><path d="M16 4 L16 36"/><path d="M22 4 L22 36"/><path d="M14 14 L24 14"/><path d="M14 24 L24 24"/></svg>