@neurocle/synapse-react 0.0.0-stage → 0.3.0

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 (824) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -2
  3. package/dist/_virtual/_rolldown/runtime.mjs +13 -0
  4. package/dist/components/accordion/accordion.d.mts +38 -0
  5. package/dist/components/accordion/accordion.d.mts.map +1 -0
  6. package/dist/components/accordion/accordion.mjs +29 -0
  7. package/dist/components/accordion/accordion.mjs.map +1 -0
  8. package/dist/components/accordion/accordion.recipe.mjs +191 -0
  9. package/dist/components/accordion/accordion.recipe.mjs.map +1 -0
  10. package/dist/components/accordion/index.d.mts +2 -0
  11. package/dist/components/accordion/index.mjs +2 -0
  12. package/dist/components/alert/alert.anatomy.mjs +8 -0
  13. package/dist/components/alert/alert.anatomy.mjs.map +1 -0
  14. package/dist/components/alert/alert.connect.d.mts +4 -0
  15. package/dist/components/alert/alert.connect.d.mts.map +1 -0
  16. package/dist/components/alert/alert.connect.mjs +39 -0
  17. package/dist/components/alert/alert.connect.mjs.map +1 -0
  18. package/dist/components/alert/alert.d.mts +14 -0
  19. package/dist/components/alert/alert.d.mts.map +1 -0
  20. package/dist/components/alert/alert.mjs +37 -0
  21. package/dist/components/alert/alert.mjs.map +1 -0
  22. package/dist/components/alert/alert.recipe.mjs +141 -0
  23. package/dist/components/alert/alert.recipe.mjs.map +1 -0
  24. package/dist/components/alert/index.d.mts +3 -0
  25. package/dist/components/alert/index.mjs +2 -0
  26. package/dist/components/angle-slider/angle-slider.d.mts +35 -0
  27. package/dist/components/angle-slider/angle-slider.d.mts.map +1 -0
  28. package/dist/components/angle-slider/angle-slider.mjs +41 -0
  29. package/dist/components/angle-slider/angle-slider.mjs.map +1 -0
  30. package/dist/components/angle-slider/angle-slider.recipe.mjs +201 -0
  31. package/dist/components/angle-slider/angle-slider.recipe.mjs.map +1 -0
  32. package/dist/components/angle-slider/index.d.mts +2 -0
  33. package/dist/components/angle-slider/index.mjs +2 -0
  34. package/dist/components/avatar/avatar.d.mts +18 -0
  35. package/dist/components/avatar/avatar.d.mts.map +1 -0
  36. package/dist/components/avatar/avatar.mjs +35 -0
  37. package/dist/components/avatar/avatar.mjs.map +1 -0
  38. package/dist/components/avatar/avatar.recipe.mjs +113 -0
  39. package/dist/components/avatar/avatar.recipe.mjs.map +1 -0
  40. package/dist/components/avatar/index.d.mts +2 -0
  41. package/dist/components/avatar/index.mjs +2 -0
  42. package/dist/components/badge/badge.anatomy.mjs +8 -0
  43. package/dist/components/badge/badge.anatomy.mjs.map +1 -0
  44. package/dist/components/badge/badge.connect.d.mts +4 -0
  45. package/dist/components/badge/badge.connect.d.mts.map +1 -0
  46. package/dist/components/badge/badge.connect.mjs +32 -0
  47. package/dist/components/badge/badge.connect.mjs.map +1 -0
  48. package/dist/components/badge/badge.d.mts +14 -0
  49. package/dist/components/badge/badge.d.mts.map +1 -0
  50. package/dist/components/badge/badge.mjs +18 -0
  51. package/dist/components/badge/badge.mjs.map +1 -0
  52. package/dist/components/badge/badge.recipe.mjs +84 -0
  53. package/dist/components/badge/badge.recipe.mjs.map +1 -0
  54. package/dist/components/badge/index.d.mts +3 -0
  55. package/dist/components/badge/index.mjs +2 -0
  56. package/dist/components/breadcrumb/breadcrumb.anatomy.mjs +8 -0
  57. package/dist/components/breadcrumb/breadcrumb.anatomy.mjs.map +1 -0
  58. package/dist/components/breadcrumb/breadcrumb.connect.mjs +30 -0
  59. package/dist/components/breadcrumb/breadcrumb.connect.mjs.map +1 -0
  60. package/dist/components/breadcrumb/breadcrumb.d.mts +10 -0
  61. package/dist/components/breadcrumb/breadcrumb.d.mts.map +1 -0
  62. package/dist/components/breadcrumb/breadcrumb.mjs +31 -0
  63. package/dist/components/breadcrumb/breadcrumb.mjs.map +1 -0
  64. package/dist/components/breadcrumb/breadcrumb.recipe.mjs +121 -0
  65. package/dist/components/breadcrumb/breadcrumb.recipe.mjs.map +1 -0
  66. package/dist/components/breadcrumb/index.d.mts +2 -0
  67. package/dist/components/breadcrumb/index.mjs +2 -0
  68. package/dist/components/button/button.anatomy.mjs +8 -0
  69. package/dist/components/button/button.anatomy.mjs.map +1 -0
  70. package/dist/components/button/button.connect.mjs +35 -0
  71. package/dist/components/button/button.connect.mjs.map +1 -0
  72. package/dist/components/button/button.d.mts +19 -0
  73. package/dist/components/button/button.d.mts.map +1 -0
  74. package/dist/components/button/button.mjs +25 -0
  75. package/dist/components/button/button.mjs.map +1 -0
  76. package/dist/components/button/button.recipe.mjs +377 -0
  77. package/dist/components/button/button.recipe.mjs.map +1 -0
  78. package/dist/components/button/index.d.mts +2 -0
  79. package/dist/components/button/index.mjs +2 -0
  80. package/dist/components/card/card.anatomy.mjs +8 -0
  81. package/dist/components/card/card.anatomy.mjs.map +1 -0
  82. package/dist/components/card/card.connect.mjs +24 -0
  83. package/dist/components/card/card.connect.mjs.map +1 -0
  84. package/dist/components/card/card.d.mts +9 -0
  85. package/dist/components/card/card.d.mts.map +1 -0
  86. package/dist/components/card/card.mjs +23 -0
  87. package/dist/components/card/card.mjs.map +1 -0
  88. package/dist/components/card/card.recipe.mjs +58 -0
  89. package/dist/components/card/card.recipe.mjs.map +1 -0
  90. package/dist/components/card/index.d.mts +2 -0
  91. package/dist/components/card/index.mjs +2 -0
  92. package/dist/components/carousel/carousel.d.mts +67 -0
  93. package/dist/components/carousel/carousel.d.mts.map +1 -0
  94. package/dist/components/carousel/carousel.mjs +123 -0
  95. package/dist/components/carousel/carousel.mjs.map +1 -0
  96. package/dist/components/carousel/carousel.recipe.mjs +131 -0
  97. package/dist/components/carousel/carousel.recipe.mjs.map +1 -0
  98. package/dist/components/carousel/index.d.mts +2 -0
  99. package/dist/components/carousel/index.mjs +2 -0
  100. package/dist/components/cascade-select/cascade-select.d.mts +102 -0
  101. package/dist/components/cascade-select/cascade-select.d.mts.map +1 -0
  102. package/dist/components/cascade-select/cascade-select.mjs +169 -0
  103. package/dist/components/cascade-select/cascade-select.mjs.map +1 -0
  104. package/dist/components/cascade-select/cascade-select.recipe.mjs +309 -0
  105. package/dist/components/cascade-select/cascade-select.recipe.mjs.map +1 -0
  106. package/dist/components/cascade-select/index.d.mts +2 -0
  107. package/dist/components/cascade-select/index.mjs +2 -0
  108. package/dist/components/checkbox/checkbox.d.mts +37 -0
  109. package/dist/components/checkbox/checkbox.d.mts.map +1 -0
  110. package/dist/components/checkbox/checkbox.mjs +55 -0
  111. package/dist/components/checkbox/checkbox.mjs.map +1 -0
  112. package/dist/components/checkbox/checkbox.recipe.mjs +170 -0
  113. package/dist/components/checkbox/checkbox.recipe.mjs.map +1 -0
  114. package/dist/components/checkbox/index.d.mts +2 -0
  115. package/dist/components/checkbox/index.mjs +2 -0
  116. package/dist/components/clipboard/clipboard.d.mts +26 -0
  117. package/dist/components/clipboard/clipboard.d.mts.map +1 -0
  118. package/dist/components/clipboard/clipboard.mjs +76 -0
  119. package/dist/components/clipboard/clipboard.mjs.map +1 -0
  120. package/dist/components/clipboard/clipboard.recipe.mjs +119 -0
  121. package/dist/components/clipboard/clipboard.recipe.mjs.map +1 -0
  122. package/dist/components/clipboard/index.d.mts +2 -0
  123. package/dist/components/clipboard/index.mjs +2 -0
  124. package/dist/components/collapsible/collapsible.d.mts +21 -0
  125. package/dist/components/collapsible/collapsible.d.mts.map +1 -0
  126. package/dist/components/collapsible/collapsible.mjs +23 -0
  127. package/dist/components/collapsible/collapsible.mjs.map +1 -0
  128. package/dist/components/collapsible/collapsible.recipe.mjs +159 -0
  129. package/dist/components/collapsible/collapsible.recipe.mjs.map +1 -0
  130. package/dist/components/collapsible/index.d.mts +2 -0
  131. package/dist/components/collapsible/index.mjs +2 -0
  132. package/dist/components/collection-window.mjs +299 -0
  133. package/dist/components/collection-window.mjs.map +1 -0
  134. package/dist/components/color-picker/color-picker.d.mts +67 -0
  135. package/dist/components/color-picker/color-picker.d.mts.map +1 -0
  136. package/dist/components/color-picker/color-picker.mjs +230 -0
  137. package/dist/components/color-picker/color-picker.mjs.map +1 -0
  138. package/dist/components/color-picker/color-picker.recipe.mjs +345 -0
  139. package/dist/components/color-picker/color-picker.recipe.mjs.map +1 -0
  140. package/dist/components/color-picker/index.d.mts +2 -0
  141. package/dist/components/color-picker/index.mjs +2 -0
  142. package/dist/components/combobox/combobox.d.mts +129 -0
  143. package/dist/components/combobox/combobox.d.mts.map +1 -0
  144. package/dist/components/combobox/combobox.mjs +92 -0
  145. package/dist/components/combobox/combobox.mjs.map +1 -0
  146. package/dist/components/combobox/combobox.recipe.mjs +336 -0
  147. package/dist/components/combobox/combobox.recipe.mjs.map +1 -0
  148. package/dist/components/combobox/index.d.mts +2 -0
  149. package/dist/components/combobox/index.mjs +2 -0
  150. package/dist/components/date-input/date-input.d.mts +69 -0
  151. package/dist/components/date-input/date-input.d.mts.map +1 -0
  152. package/dist/components/date-input/date-input.mjs +106 -0
  153. package/dist/components/date-input/date-input.mjs.map +1 -0
  154. package/dist/components/date-input/date-input.recipe.mjs +142 -0
  155. package/dist/components/date-input/date-input.recipe.mjs.map +1 -0
  156. package/dist/components/date-input/index.d.mts +2 -0
  157. package/dist/components/date-input/index.mjs +2 -0
  158. package/dist/components/date-picker/date-picker.d.mts +114 -0
  159. package/dist/components/date-picker/date-picker.d.mts.map +1 -0
  160. package/dist/components/date-picker/date-picker.mjs +269 -0
  161. package/dist/components/date-picker/date-picker.mjs.map +1 -0
  162. package/dist/components/date-picker/date-picker.recipe.mjs +495 -0
  163. package/dist/components/date-picker/date-picker.recipe.mjs.map +1 -0
  164. package/dist/components/date-picker/index.d.mts +2 -0
  165. package/dist/components/date-picker/index.mjs +2 -0
  166. package/dist/components/details.d.mts +9 -0
  167. package/dist/components/details.d.mts.map +1 -0
  168. package/dist/components/dialog/dialog.d.mts +45 -0
  169. package/dist/components/dialog/dialog.d.mts.map +1 -0
  170. package/dist/components/dialog/dialog.mjs +49 -0
  171. package/dist/components/dialog/dialog.mjs.map +1 -0
  172. package/dist/components/dialog/dialog.recipe.mjs +138 -0
  173. package/dist/components/dialog/dialog.recipe.mjs.map +1 -0
  174. package/dist/components/dialog/index.d.mts +2 -0
  175. package/dist/components/dialog/index.mjs +2 -0
  176. package/dist/components/drawer/drawer.d.mts +62 -0
  177. package/dist/components/drawer/drawer.d.mts.map +1 -0
  178. package/dist/components/drawer/drawer.mjs +65 -0
  179. package/dist/components/drawer/drawer.mjs.map +1 -0
  180. package/dist/components/drawer/drawer.recipe.mjs +201 -0
  181. package/dist/components/drawer/drawer.recipe.mjs.map +1 -0
  182. package/dist/components/drawer/index.d.mts +2 -0
  183. package/dist/components/drawer/index.mjs +2 -0
  184. package/dist/components/editable/editable.d.mts +62 -0
  185. package/dist/components/editable/editable.d.mts.map +1 -0
  186. package/dist/components/editable/editable.mjs +78 -0
  187. package/dist/components/editable/editable.mjs.map +1 -0
  188. package/dist/components/editable/editable.recipe.mjs +152 -0
  189. package/dist/components/editable/editable.recipe.mjs.map +1 -0
  190. package/dist/components/editable/index.d.mts +2 -0
  191. package/dist/components/editable/index.mjs +2 -0
  192. package/dist/components/empty-state/empty-state.anatomy.mjs +8 -0
  193. package/dist/components/empty-state/empty-state.anatomy.mjs.map +1 -0
  194. package/dist/components/empty-state/empty-state.connect.mjs +26 -0
  195. package/dist/components/empty-state/empty-state.connect.mjs.map +1 -0
  196. package/dist/components/empty-state/empty-state.d.mts +10 -0
  197. package/dist/components/empty-state/empty-state.d.mts.map +1 -0
  198. package/dist/components/empty-state/empty-state.mjs +24 -0
  199. package/dist/components/empty-state/empty-state.mjs.map +1 -0
  200. package/dist/components/empty-state/empty-state.recipe.mjs +134 -0
  201. package/dist/components/empty-state/empty-state.recipe.mjs.map +1 -0
  202. package/dist/components/empty-state/index.d.mts +2 -0
  203. package/dist/components/empty-state/index.mjs +2 -0
  204. package/dist/components/field/field.anatomy.mjs +8 -0
  205. package/dist/components/field/field.anatomy.mjs.map +1 -0
  206. package/dist/components/field/field.connect.mjs +117 -0
  207. package/dist/components/field/field.connect.mjs.map +1 -0
  208. package/dist/components/field/field.d.mts +19 -0
  209. package/dist/components/field/field.d.mts.map +1 -0
  210. package/dist/components/field/field.mjs +77 -0
  211. package/dist/components/field/field.mjs.map +1 -0
  212. package/dist/components/field/field.recipe.mjs +60 -0
  213. package/dist/components/field/field.recipe.mjs.map +1 -0
  214. package/dist/components/field/index.d.mts +2 -0
  215. package/dist/components/field/index.mjs +2 -0
  216. package/dist/components/fieldset/fieldset.anatomy.mjs +8 -0
  217. package/dist/components/fieldset/fieldset.anatomy.mjs.map +1 -0
  218. package/dist/components/fieldset/fieldset.connect.mjs +60 -0
  219. package/dist/components/fieldset/fieldset.connect.mjs.map +1 -0
  220. package/dist/components/fieldset/fieldset.d.mts +13 -0
  221. package/dist/components/fieldset/fieldset.d.mts.map +1 -0
  222. package/dist/components/fieldset/fieldset.mjs +26 -0
  223. package/dist/components/fieldset/fieldset.mjs.map +1 -0
  224. package/dist/components/fieldset/fieldset.recipe.mjs +42 -0
  225. package/dist/components/fieldset/fieldset.recipe.mjs.map +1 -0
  226. package/dist/components/fieldset/index.d.mts +2 -0
  227. package/dist/components/fieldset/index.mjs +2 -0
  228. package/dist/components/file-upload/file-upload.d.mts +105 -0
  229. package/dist/components/file-upload/file-upload.d.mts.map +1 -0
  230. package/dist/components/file-upload/file-upload.mjs +127 -0
  231. package/dist/components/file-upload/file-upload.mjs.map +1 -0
  232. package/dist/components/file-upload/file-upload.recipe.mjs +236 -0
  233. package/dist/components/file-upload/file-upload.recipe.mjs.map +1 -0
  234. package/dist/components/file-upload/index.d.mts +2 -0
  235. package/dist/components/file-upload/index.mjs +2 -0
  236. package/dist/components/floating-panel/floating-panel.d.mts +87 -0
  237. package/dist/components/floating-panel/floating-panel.d.mts.map +1 -0
  238. package/dist/components/floating-panel/floating-panel.mjs +89 -0
  239. package/dist/components/floating-panel/floating-panel.mjs.map +1 -0
  240. package/dist/components/floating-panel/floating-panel.recipe.mjs +156 -0
  241. package/dist/components/floating-panel/floating-panel.recipe.mjs.map +1 -0
  242. package/dist/components/floating-panel/index.d.mts +2 -0
  243. package/dist/components/floating-panel/index.mjs +2 -0
  244. package/dist/components/hover-card/hover-card.d.mts +48 -0
  245. package/dist/components/hover-card/hover-card.d.mts.map +1 -0
  246. package/dist/components/hover-card/hover-card.mjs +31 -0
  247. package/dist/components/hover-card/hover-card.mjs.map +1 -0
  248. package/dist/components/hover-card/hover-card.recipe.mjs +133 -0
  249. package/dist/components/hover-card/hover-card.recipe.mjs.map +1 -0
  250. package/dist/components/hover-card/index.d.mts +2 -0
  251. package/dist/components/hover-card/index.mjs +2 -0
  252. package/dist/components/image-cropper/image-cropper.d.mts +111 -0
  253. package/dist/components/image-cropper/image-cropper.d.mts.map +1 -0
  254. package/dist/components/image-cropper/image-cropper.mjs +71 -0
  255. package/dist/components/image-cropper/image-cropper.mjs.map +1 -0
  256. package/dist/components/image-cropper/image-cropper.recipe.mjs +126 -0
  257. package/dist/components/image-cropper/image-cropper.recipe.mjs.map +1 -0
  258. package/dist/components/image-cropper/index.d.mts +2 -0
  259. package/dist/components/image-cropper/index.mjs +2 -0
  260. package/dist/components/input/index.d.mts +2 -0
  261. package/dist/components/input/index.mjs +2 -0
  262. package/dist/components/input/input.anatomy.mjs +8 -0
  263. package/dist/components/input/input.anatomy.mjs.map +1 -0
  264. package/dist/components/input/input.connect.mjs +82 -0
  265. package/dist/components/input/input.connect.mjs.map +1 -0
  266. package/dist/components/input/input.d.mts +31 -0
  267. package/dist/components/input/input.d.mts.map +1 -0
  268. package/dist/components/input/input.mjs +37 -0
  269. package/dist/components/input/input.mjs.map +1 -0
  270. package/dist/components/input/input.recipe.mjs +111 -0
  271. package/dist/components/input/input.recipe.mjs.map +1 -0
  272. package/dist/components/kbd/index.d.mts +2 -0
  273. package/dist/components/kbd/index.mjs +2 -0
  274. package/dist/components/kbd/kbd.anatomy.mjs +8 -0
  275. package/dist/components/kbd/kbd.anatomy.mjs.map +1 -0
  276. package/dist/components/kbd/kbd.connect.mjs +17 -0
  277. package/dist/components/kbd/kbd.connect.mjs.map +1 -0
  278. package/dist/components/kbd/kbd.d.mts +10 -0
  279. package/dist/components/kbd/kbd.d.mts.map +1 -0
  280. package/dist/components/kbd/kbd.mjs +18 -0
  281. package/dist/components/kbd/kbd.mjs.map +1 -0
  282. package/dist/components/kbd/kbd.recipe.mjs +55 -0
  283. package/dist/components/kbd/kbd.recipe.mjs.map +1 -0
  284. package/dist/components/listbox/index.d.mts +2 -0
  285. package/dist/components/listbox/index.mjs +2 -0
  286. package/dist/components/listbox/listbox.d.mts +70 -0
  287. package/dist/components/listbox/listbox.d.mts.map +1 -0
  288. package/dist/components/listbox/listbox.mjs +79 -0
  289. package/dist/components/listbox/listbox.mjs.map +1 -0
  290. package/dist/components/listbox/listbox.recipe.mjs +169 -0
  291. package/dist/components/listbox/listbox.recipe.mjs.map +1 -0
  292. package/dist/components/machine-translations.mjs +8 -0
  293. package/dist/components/machine-translations.mjs.map +1 -0
  294. package/dist/components/marquee/index.d.mts +2 -0
  295. package/dist/components/marquee/index.mjs +2 -0
  296. package/dist/components/marquee/marquee.d.mts +53 -0
  297. package/dist/components/marquee/marquee.d.mts.map +1 -0
  298. package/dist/components/marquee/marquee.mjs +30 -0
  299. package/dist/components/marquee/marquee.mjs.map +1 -0
  300. package/dist/components/marquee/marquee.recipe.mjs +123 -0
  301. package/dist/components/marquee/marquee.recipe.mjs.map +1 -0
  302. package/dist/components/menu/index.d.mts +2 -0
  303. package/dist/components/menu/index.mjs +2 -0
  304. package/dist/components/menu/menu.d.mts +66 -0
  305. package/dist/components/menu/menu.d.mts.map +1 -0
  306. package/dist/components/menu/menu.mjs +68 -0
  307. package/dist/components/menu/menu.mjs.map +1 -0
  308. package/dist/components/menu/menu.recipe.mjs +285 -0
  309. package/dist/components/menu/menu.recipe.mjs.map +1 -0
  310. package/dist/components/navigation-menu/index.d.mts +2 -0
  311. package/dist/components/navigation-menu/index.mjs +2 -0
  312. package/dist/components/navigation-menu/navigation-menu.d.mts +42 -0
  313. package/dist/components/navigation-menu/navigation-menu.d.mts.map +1 -0
  314. package/dist/components/navigation-menu/navigation-menu.mjs +47 -0
  315. package/dist/components/navigation-menu/navigation-menu.mjs.map +1 -0
  316. package/dist/components/navigation-menu/navigation-menu.recipe.mjs +271 -0
  317. package/dist/components/navigation-menu/navigation-menu.recipe.mjs.map +1 -0
  318. package/dist/components/number-input/index.d.mts +2 -0
  319. package/dist/components/number-input/index.mjs +2 -0
  320. package/dist/components/number-input/number-input.d.mts +88 -0
  321. package/dist/components/number-input/number-input.d.mts.map +1 -0
  322. package/dist/components/number-input/number-input.mjs +70 -0
  323. package/dist/components/number-input/number-input.mjs.map +1 -0
  324. package/dist/components/number-input/number-input.recipe.mjs +231 -0
  325. package/dist/components/number-input/number-input.recipe.mjs.map +1 -0
  326. package/dist/components/pagination/index.d.mts +2 -0
  327. package/dist/components/pagination/index.mjs +2 -0
  328. package/dist/components/pagination/pagination.d.mts +51 -0
  329. package/dist/components/pagination/pagination.d.mts.map +1 -0
  330. package/dist/components/pagination/pagination.mjs +74 -0
  331. package/dist/components/pagination/pagination.mjs.map +1 -0
  332. package/dist/components/pagination/pagination.recipe.mjs +144 -0
  333. package/dist/components/pagination/pagination.recipe.mjs.map +1 -0
  334. package/dist/components/password-input/index.d.mts +2 -0
  335. package/dist/components/password-input/index.mjs +2 -0
  336. package/dist/components/password-input/password-input.d.mts +37 -0
  337. package/dist/components/password-input/password-input.d.mts.map +1 -0
  338. package/dist/components/password-input/password-input.mjs +58 -0
  339. package/dist/components/password-input/password-input.mjs.map +1 -0
  340. package/dist/components/password-input/password-input.recipe.mjs +180 -0
  341. package/dist/components/password-input/password-input.recipe.mjs.map +1 -0
  342. package/dist/components/pin-input/index.d.mts +2 -0
  343. package/dist/components/pin-input/index.mjs +2 -0
  344. package/dist/components/pin-input/pin-input.d.mts +68 -0
  345. package/dist/components/pin-input/pin-input.d.mts.map +1 -0
  346. package/dist/components/pin-input/pin-input.mjs +51 -0
  347. package/dist/components/pin-input/pin-input.mjs.map +1 -0
  348. package/dist/components/pin-input/pin-input.recipe.mjs +81 -0
  349. package/dist/components/pin-input/pin-input.recipe.mjs.map +1 -0
  350. package/dist/components/popover/index.d.mts +2 -0
  351. package/dist/components/popover/index.mjs +2 -0
  352. package/dist/components/popover/popover.d.mts +42 -0
  353. package/dist/components/popover/popover.d.mts.map +1 -0
  354. package/dist/components/popover/popover.mjs +50 -0
  355. package/dist/components/popover/popover.mjs.map +1 -0
  356. package/dist/components/popover/popover.recipe.mjs +162 -0
  357. package/dist/components/popover/popover.recipe.mjs.map +1 -0
  358. package/dist/components/progress/index.d.mts +2 -0
  359. package/dist/components/progress/index.mjs +2 -0
  360. package/dist/components/progress/progress.d.mts +31 -0
  361. package/dist/components/progress/progress.d.mts.map +1 -0
  362. package/dist/components/progress/progress.mjs +42 -0
  363. package/dist/components/progress/progress.mjs.map +1 -0
  364. package/dist/components/progress/progress.recipe.mjs +189 -0
  365. package/dist/components/progress/progress.recipe.mjs.map +1 -0
  366. package/dist/components/qr-code/index.d.mts +2 -0
  367. package/dist/components/qr-code/index.mjs +2 -0
  368. package/dist/components/qr-code/qr-code.d.mts +36 -0
  369. package/dist/components/qr-code/qr-code.d.mts.map +1 -0
  370. package/dist/components/qr-code/qr-code.mjs +41 -0
  371. package/dist/components/qr-code/qr-code.mjs.map +1 -0
  372. package/dist/components/qr-code/qr-code.recipe.mjs +70 -0
  373. package/dist/components/qr-code/qr-code.recipe.mjs.map +1 -0
  374. package/dist/components/radio-group/index.d.mts +2 -0
  375. package/dist/components/radio-group/index.mjs +2 -0
  376. package/dist/components/radio-group/radio-group.d.mts +33 -0
  377. package/dist/components/radio-group/radio-group.d.mts.map +1 -0
  378. package/dist/components/radio-group/radio-group.mjs +47 -0
  379. package/dist/components/radio-group/radio-group.mjs.map +1 -0
  380. package/dist/components/radio-group/radio-group.recipe.mjs +189 -0
  381. package/dist/components/radio-group/radio-group.recipe.mjs.map +1 -0
  382. package/dist/components/rating-group/index.d.mts +2 -0
  383. package/dist/components/rating-group/index.mjs +2 -0
  384. package/dist/components/rating-group/rating-group.d.mts +43 -0
  385. package/dist/components/rating-group/rating-group.d.mts.map +1 -0
  386. package/dist/components/rating-group/rating-group.mjs +39 -0
  387. package/dist/components/rating-group/rating-group.mjs.map +1 -0
  388. package/dist/components/rating-group/rating-group.recipe.mjs +133 -0
  389. package/dist/components/rating-group/rating-group.recipe.mjs.map +1 -0
  390. package/dist/components/scroll-area/index.d.mts +2 -0
  391. package/dist/components/scroll-area/index.mjs +2 -0
  392. package/dist/components/scroll-area/scroll-area.d.mts +12 -0
  393. package/dist/components/scroll-area/scroll-area.d.mts.map +1 -0
  394. package/dist/components/scroll-area/scroll-area.mjs +31 -0
  395. package/dist/components/scroll-area/scroll-area.mjs.map +1 -0
  396. package/dist/components/scroll-area/scroll-area.recipe.mjs +76 -0
  397. package/dist/components/scroll-area/scroll-area.recipe.mjs.map +1 -0
  398. package/dist/components/select/index.d.mts +2 -0
  399. package/dist/components/select/index.mjs +2 -0
  400. package/dist/components/select/select.d.mts +90 -0
  401. package/dist/components/select/select.d.mts.map +1 -0
  402. package/dist/components/select/select.mjs +83 -0
  403. package/dist/components/select/select.mjs.map +1 -0
  404. package/dist/components/select/select.recipe.mjs +298 -0
  405. package/dist/components/select/select.recipe.mjs.map +1 -0
  406. package/dist/components/separator/index.d.mts +2 -0
  407. package/dist/components/separator/index.mjs +2 -0
  408. package/dist/components/separator/separator.anatomy.mjs +8 -0
  409. package/dist/components/separator/separator.anatomy.mjs.map +1 -0
  410. package/dist/components/separator/separator.connect.mjs +28 -0
  411. package/dist/components/separator/separator.connect.mjs.map +1 -0
  412. package/dist/components/separator/separator.d.mts +11 -0
  413. package/dist/components/separator/separator.d.mts.map +1 -0
  414. package/dist/components/separator/separator.mjs +15 -0
  415. package/dist/components/separator/separator.mjs.map +1 -0
  416. package/dist/components/separator/separator.recipe.mjs +22 -0
  417. package/dist/components/separator/separator.recipe.mjs.map +1 -0
  418. package/dist/components/signature-pad/index.d.mts +2 -0
  419. package/dist/components/signature-pad/index.mjs +2 -0
  420. package/dist/components/signature-pad/signature-pad.d.mts +44 -0
  421. package/dist/components/signature-pad/signature-pad.d.mts.map +1 -0
  422. package/dist/components/signature-pad/signature-pad.mjs +90 -0
  423. package/dist/components/signature-pad/signature-pad.mjs.map +1 -0
  424. package/dist/components/signature-pad/signature-pad.recipe.mjs +111 -0
  425. package/dist/components/signature-pad/signature-pad.recipe.mjs.map +1 -0
  426. package/dist/components/skeleton/index.d.mts +2 -0
  427. package/dist/components/skeleton/index.mjs +2 -0
  428. package/dist/components/skeleton/skeleton.anatomy.mjs +8 -0
  429. package/dist/components/skeleton/skeleton.anatomy.mjs.map +1 -0
  430. package/dist/components/skeleton/skeleton.connect.mjs +26 -0
  431. package/dist/components/skeleton/skeleton.connect.mjs.map +1 -0
  432. package/dist/components/skeleton/skeleton.d.mts +9 -0
  433. package/dist/components/skeleton/skeleton.d.mts.map +1 -0
  434. package/dist/components/skeleton/skeleton.mjs +16 -0
  435. package/dist/components/skeleton/skeleton.mjs.map +1 -0
  436. package/dist/components/skeleton/skeleton.recipe.mjs +46 -0
  437. package/dist/components/skeleton/skeleton.recipe.mjs.map +1 -0
  438. package/dist/components/slider/index.d.mts +2 -0
  439. package/dist/components/slider/index.mjs +2 -0
  440. package/dist/components/slider/slider.d.mts +72 -0
  441. package/dist/components/slider/slider.d.mts.map +1 -0
  442. package/dist/components/slider/slider.mjs +34 -0
  443. package/dist/components/slider/slider.mjs.map +1 -0
  444. package/dist/components/slider/slider.recipe.mjs +219 -0
  445. package/dist/components/slider/slider.recipe.mjs.map +1 -0
  446. package/dist/components/snackbar/index.d.mts +2 -0
  447. package/dist/components/snackbar/index.mjs +2 -0
  448. package/dist/components/snackbar/snackbar.d.mts +57 -0
  449. package/dist/components/snackbar/snackbar.d.mts.map +1 -0
  450. package/dist/components/snackbar/snackbar.mjs +226 -0
  451. package/dist/components/snackbar/snackbar.mjs.map +1 -0
  452. package/dist/components/snackbar/snackbar.recipe.mjs +217 -0
  453. package/dist/components/snackbar/snackbar.recipe.mjs.map +1 -0
  454. package/dist/components/spinner/index.d.mts +2 -0
  455. package/dist/components/spinner/index.mjs +2 -0
  456. package/dist/components/spinner/spinner.anatomy.mjs +8 -0
  457. package/dist/components/spinner/spinner.anatomy.mjs.map +1 -0
  458. package/dist/components/spinner/spinner.connect.mjs +27 -0
  459. package/dist/components/spinner/spinner.connect.mjs.map +1 -0
  460. package/dist/components/spinner/spinner.d.mts +10 -0
  461. package/dist/components/spinner/spinner.d.mts.map +1 -0
  462. package/dist/components/spinner/spinner.mjs +25 -0
  463. package/dist/components/spinner/spinner.mjs.map +1 -0
  464. package/dist/components/spinner/spinner.recipe.mjs +70 -0
  465. package/dist/components/spinner/spinner.recipe.mjs.map +1 -0
  466. package/dist/components/splitter/index.d.mts +2 -0
  467. package/dist/components/splitter/index.mjs +2 -0
  468. package/dist/components/splitter/splitter.d.mts +57 -0
  469. package/dist/components/splitter/splitter.d.mts.map +1 -0
  470. package/dist/components/splitter/splitter.mjs +40 -0
  471. package/dist/components/splitter/splitter.mjs.map +1 -0
  472. package/dist/components/splitter/splitter.recipe.mjs +129 -0
  473. package/dist/components/splitter/splitter.recipe.mjs.map +1 -0
  474. package/dist/components/steps/index.d.mts +2 -0
  475. package/dist/components/steps/index.mjs +2 -0
  476. package/dist/components/steps/steps.d.mts +42 -0
  477. package/dist/components/steps/steps.d.mts.map +1 -0
  478. package/dist/components/steps/steps.mjs +72 -0
  479. package/dist/components/steps/steps.mjs.map +1 -0
  480. package/dist/components/steps/steps.recipe.mjs +291 -0
  481. package/dist/components/steps/steps.recipe.mjs.map +1 -0
  482. package/dist/components/switch/index.d.mts +2 -0
  483. package/dist/components/switch/index.mjs +2 -0
  484. package/dist/components/switch/switch.d.mts +36 -0
  485. package/dist/components/switch/switch.d.mts.map +1 -0
  486. package/dist/components/switch/switch.mjs +50 -0
  487. package/dist/components/switch/switch.mjs.map +1 -0
  488. package/dist/components/switch/switch.recipe.mjs +171 -0
  489. package/dist/components/switch/switch.recipe.mjs.map +1 -0
  490. package/dist/components/table/index.d.mts +2 -0
  491. package/dist/components/table/index.mjs +2 -0
  492. package/dist/components/table/table.anatomy.mjs +8 -0
  493. package/dist/components/table/table.anatomy.mjs.map +1 -0
  494. package/dist/components/table/table.connect.mjs +50 -0
  495. package/dist/components/table/table.connect.mjs.map +1 -0
  496. package/dist/components/table/table.d.mts +10 -0
  497. package/dist/components/table/table.d.mts.map +1 -0
  498. package/dist/components/table/table.mjs +90 -0
  499. package/dist/components/table/table.mjs.map +1 -0
  500. package/dist/components/table/table.recipe.mjs +186 -0
  501. package/dist/components/table/table.recipe.mjs.map +1 -0
  502. package/dist/components/tabs/index.d.mts +2 -0
  503. package/dist/components/tabs/index.mjs +2 -0
  504. package/dist/components/tabs/tabs.d.mts +40 -0
  505. package/dist/components/tabs/tabs.d.mts.map +1 -0
  506. package/dist/components/tabs/tabs.mjs +23 -0
  507. package/dist/components/tabs/tabs.mjs.map +1 -0
  508. package/dist/components/tabs/tabs.recipe.mjs +182 -0
  509. package/dist/components/tabs/tabs.recipe.mjs.map +1 -0
  510. package/dist/components/tags-input/index.d.mts +2 -0
  511. package/dist/components/tags-input/index.mjs +2 -0
  512. package/dist/components/tags-input/tags-input.d.mts +77 -0
  513. package/dist/components/tags-input/tags-input.d.mts.map +1 -0
  514. package/dist/components/tags-input/tags-input.mjs +103 -0
  515. package/dist/components/tags-input/tags-input.mjs.map +1 -0
  516. package/dist/components/tags-input/tags-input.recipe.mjs +320 -0
  517. package/dist/components/tags-input/tags-input.recipe.mjs.map +1 -0
  518. package/dist/components/textarea/index.d.mts +2 -0
  519. package/dist/components/textarea/index.mjs +2 -0
  520. package/dist/components/textarea/textarea.anatomy.mjs +8 -0
  521. package/dist/components/textarea/textarea.anatomy.mjs.map +1 -0
  522. package/dist/components/textarea/textarea.connect.mjs +82 -0
  523. package/dist/components/textarea/textarea.connect.mjs.map +1 -0
  524. package/dist/components/textarea/textarea.d.mts +32 -0
  525. package/dist/components/textarea/textarea.d.mts.map +1 -0
  526. package/dist/components/textarea/textarea.mjs +41 -0
  527. package/dist/components/textarea/textarea.mjs.map +1 -0
  528. package/dist/components/textarea/textarea.recipe.mjs +58 -0
  529. package/dist/components/textarea/textarea.recipe.mjs.map +1 -0
  530. package/dist/components/timer/index.d.mts +2 -0
  531. package/dist/components/timer/index.mjs +2 -0
  532. package/dist/components/timer/timer.d.mts +31 -0
  533. package/dist/components/timer/timer.d.mts.map +1 -0
  534. package/dist/components/timer/timer.mjs +98 -0
  535. package/dist/components/timer/timer.mjs.map +1 -0
  536. package/dist/components/timer/timer.recipe.mjs +99 -0
  537. package/dist/components/timer/timer.recipe.mjs.map +1 -0
  538. package/dist/components/toast/index.d.mts +2 -0
  539. package/dist/components/toast/index.mjs +2 -0
  540. package/dist/components/toast/toast.d.mts +55 -0
  541. package/dist/components/toast/toast.d.mts.map +1 -0
  542. package/dist/components/toast/toast.mjs +194 -0
  543. package/dist/components/toast/toast.mjs.map +1 -0
  544. package/dist/components/toast/toast.recipe.mjs +172 -0
  545. package/dist/components/toast/toast.recipe.mjs.map +1 -0
  546. package/dist/components/toc/index.d.mts +2 -0
  547. package/dist/components/toc/index.mjs +2 -0
  548. package/dist/components/toc/toc.d.mts +47 -0
  549. package/dist/components/toc/toc.d.mts.map +1 -0
  550. package/dist/components/toc/toc.mjs +239 -0
  551. package/dist/components/toc/toc.mjs.map +1 -0
  552. package/dist/components/toc/toc.recipe.mjs +147 -0
  553. package/dist/components/toc/toc.recipe.mjs.map +1 -0
  554. package/dist/components/toggle/index.d.mts +2 -0
  555. package/dist/components/toggle/index.mjs +2 -0
  556. package/dist/components/toggle/toggle.d.mts +21 -0
  557. package/dist/components/toggle/toggle.d.mts.map +1 -0
  558. package/dist/components/toggle/toggle.mjs +34 -0
  559. package/dist/components/toggle/toggle.mjs.map +1 -0
  560. package/dist/components/toggle/toggle.recipe.mjs +175 -0
  561. package/dist/components/toggle/toggle.recipe.mjs.map +1 -0
  562. package/dist/components/toggle-group/index.d.mts +2 -0
  563. package/dist/components/toggle-group/index.mjs +2 -0
  564. package/dist/components/toggle-group/toggle-group.d.mts +29 -0
  565. package/dist/components/toggle-group/toggle-group.d.mts.map +1 -0
  566. package/dist/components/toggle-group/toggle-group.mjs +18 -0
  567. package/dist/components/toggle-group/toggle-group.mjs.map +1 -0
  568. package/dist/components/toggle-group/toggle-group.recipe.mjs +190 -0
  569. package/dist/components/toggle-group/toggle-group.recipe.mjs.map +1 -0
  570. package/dist/components/tooltip/index.d.mts +2 -0
  571. package/dist/components/tooltip/index.mjs +2 -0
  572. package/dist/components/tooltip/tooltip.d.mts +66 -0
  573. package/dist/components/tooltip/tooltip.d.mts.map +1 -0
  574. package/dist/components/tooltip/tooltip.mjs +64 -0
  575. package/dist/components/tooltip/tooltip.mjs.map +1 -0
  576. package/dist/components/tooltip/tooltip.recipe.mjs +149 -0
  577. package/dist/components/tooltip/tooltip.recipe.mjs.map +1 -0
  578. package/dist/components/tour/index.d.mts +2 -0
  579. package/dist/components/tour/index.mjs +2 -0
  580. package/dist/components/tour/tour.d.mts +92 -0
  581. package/dist/components/tour/tour.d.mts.map +1 -0
  582. package/dist/components/tour/tour.mjs +89 -0
  583. package/dist/components/tour/tour.mjs.map +1 -0
  584. package/dist/components/tour/tour.recipe.mjs +164 -0
  585. package/dist/components/tour/tour.recipe.mjs.map +1 -0
  586. package/dist/components/tree-view/index.d.mts +2 -0
  587. package/dist/components/tree-view/index.mjs +2 -0
  588. package/dist/components/tree-view/tree-view.d.mts +108 -0
  589. package/dist/components/tree-view/tree-view.d.mts.map +1 -0
  590. package/dist/components/tree-view/tree-view.mjs +145 -0
  591. package/dist/components/tree-view/tree-view.mjs.map +1 -0
  592. package/dist/components/tree-view/tree-view.recipe.mjs +458 -0
  593. package/dist/components/tree-view/tree-view.recipe.mjs.map +1 -0
  594. package/dist/icons/src/calendar.mjs +13 -0
  595. package/dist/icons/src/calendar.mjs.map +1 -0
  596. package/dist/icons/src/checkmark.mjs +13 -0
  597. package/dist/icons/src/checkmark.mjs.map +1 -0
  598. package/dist/icons/src/chevron-down.mjs +13 -0
  599. package/dist/icons/src/chevron-down.mjs.map +1 -0
  600. package/dist/icons/src/chevron-left.mjs +13 -0
  601. package/dist/icons/src/chevron-left.mjs.map +1 -0
  602. package/dist/icons/src/chevron-right.mjs +13 -0
  603. package/dist/icons/src/chevron-right.mjs.map +1 -0
  604. package/dist/icons/src/chevron-up.mjs +13 -0
  605. package/dist/icons/src/chevron-up.mjs.map +1 -0
  606. package/dist/icons/src/chevrons-left.mjs +13 -0
  607. package/dist/icons/src/chevrons-left.mjs.map +1 -0
  608. package/dist/icons/src/chevrons-right.mjs +13 -0
  609. package/dist/icons/src/chevrons-right.mjs.map +1 -0
  610. package/dist/icons/src/chevrons-up-down.mjs +13 -0
  611. package/dist/icons/src/chevrons-up-down.mjs.map +1 -0
  612. package/dist/icons/src/close.mjs +13 -0
  613. package/dist/icons/src/close.mjs.map +1 -0
  614. package/dist/icons/src/copy.mjs +13 -0
  615. package/dist/icons/src/copy.mjs.map +1 -0
  616. package/dist/icons/src/edit.mjs +13 -0
  617. package/dist/icons/src/edit.mjs.map +1 -0
  618. package/dist/icons/src/error.mjs +13 -0
  619. package/dist/icons/src/error.mjs.map +1 -0
  620. package/dist/icons/src/eyedropper.mjs +13 -0
  621. package/dist/icons/src/eyedropper.mjs.map +1 -0
  622. package/dist/icons/src/file.mjs +13 -0
  623. package/dist/icons/src/file.mjs.map +1 -0
  624. package/dist/icons/src/hide.mjs +13 -0
  625. package/dist/icons/src/hide.mjs.map +1 -0
  626. package/dist/icons/src/index.mjs +58 -0
  627. package/dist/icons/src/index.mjs.map +1 -0
  628. package/dist/icons/src/info.mjs +13 -0
  629. package/dist/icons/src/info.mjs.map +1 -0
  630. package/dist/icons/src/maximize.mjs +13 -0
  631. package/dist/icons/src/maximize.mjs.map +1 -0
  632. package/dist/icons/src/minus.mjs +13 -0
  633. package/dist/icons/src/minus.mjs.map +1 -0
  634. package/dist/icons/src/pause.mjs +13 -0
  635. package/dist/icons/src/pause.mjs.map +1 -0
  636. package/dist/icons/src/play.mjs +13 -0
  637. package/dist/icons/src/play.mjs.map +1 -0
  638. package/dist/icons/src/reset.mjs +13 -0
  639. package/dist/icons/src/reset.mjs.map +1 -0
  640. package/dist/icons/src/restore.mjs +13 -0
  641. package/dist/icons/src/restore.mjs.map +1 -0
  642. package/dist/icons/src/show.mjs +13 -0
  643. package/dist/icons/src/show.mjs.map +1 -0
  644. package/dist/icons/src/star.mjs +13 -0
  645. package/dist/icons/src/star.mjs.map +1 -0
  646. package/dist/icons/src/success.mjs +2 -0
  647. package/dist/icons/src/trash.mjs +13 -0
  648. package/dist/icons/src/trash.mjs.map +1 -0
  649. package/dist/icons/src/user.mjs +13 -0
  650. package/dist/icons/src/user.mjs.map +1 -0
  651. package/dist/icons/src/warning.mjs +13 -0
  652. package/dist/icons/src/warning.mjs.map +1 -0
  653. package/dist/index.d.mts +139 -0
  654. package/dist/index.mjs +71 -0
  655. package/dist/preset.d.mts +2 -0
  656. package/dist/preset.mjs +2 -0
  657. package/dist/provider/locale-context.mjs +36 -0
  658. package/dist/provider/locale-context.mjs.map +1 -0
  659. package/dist/provider/synapse-provider.d.mts +17 -0
  660. package/dist/provider/synapse-provider.d.mts.map +1 -0
  661. package/dist/provider/synapse-provider.mjs +59 -0
  662. package/dist/provider/synapse-provider.mjs.map +1 -0
  663. package/dist/provider/translations.d.mts +179 -0
  664. package/dist/provider/translations.d.mts.map +1 -0
  665. package/dist/provider/translations.mjs +201 -0
  666. package/dist/provider/translations.mjs.map +1 -0
  667. package/dist/provider/use-theme.d.mts +7 -0
  668. package/dist/provider/use-theme.d.mts.map +1 -0
  669. package/dist/provider/use-theme.mjs +37 -0
  670. package/dist/provider/use-theme.mjs.map +1 -0
  671. package/dist/react/styled-system/css/conditions.mjs +29 -0
  672. package/dist/react/styled-system/css/conditions.mjs.map +1 -0
  673. package/dist/react/styled-system/css/css.mjs +39 -0
  674. package/dist/react/styled-system/css/css.mjs.map +1 -0
  675. package/dist/react/styled-system/css/cva.mjs +66 -0
  676. package/dist/react/styled-system/css/cva.mjs.map +1 -0
  677. package/dist/react/styled-system/css/cx.mjs +13 -0
  678. package/dist/react/styled-system/css/cx.mjs.map +1 -0
  679. package/dist/react/styled-system/css/sva.mjs +44 -0
  680. package/dist/react/styled-system/css/sva.mjs.map +1 -0
  681. package/dist/react/styled-system/helpers.mjs +231 -0
  682. package/dist/react/styled-system/helpers.mjs.map +1 -0
  683. package/dist/shared/button-style.mjs +10 -0
  684. package/dist/shared/button-style.mjs.map +1 -0
  685. package/dist/shared/character-count.mjs +29 -0
  686. package/dist/shared/character-count.mjs.map +1 -0
  687. package/dist/shared/collection-internal.mjs +24 -0
  688. package/dist/shared/collection-internal.mjs.map +1 -0
  689. package/dist/shared/collection.d.mts +120 -0
  690. package/dist/shared/collection.d.mts.map +1 -0
  691. package/dist/shared/collection.mjs +395 -0
  692. package/dist/shared/collection.mjs.map +1 -0
  693. package/dist/shared/controller.d.mts +4 -0
  694. package/dist/shared/controller.d.mts.map +1 -0
  695. package/dist/shared/controller.mjs +53 -0
  696. package/dist/shared/controller.mjs.map +1 -0
  697. package/dist/shared/field-context.mjs +47 -0
  698. package/dist/shared/field-context.mjs.map +1 -0
  699. package/dist/shared/field-description.mjs +13 -0
  700. package/dist/shared/field-description.mjs.map +1 -0
  701. package/dist/shared/icon.mjs +23 -0
  702. package/dist/shared/icon.mjs.map +1 -0
  703. package/dist/shared/input-modality.mjs +47 -0
  704. package/dist/shared/input-modality.mjs.map +1 -0
  705. package/dist/shared/input-style.mjs +10 -0
  706. package/dist/shared/input-style.mjs.map +1 -0
  707. package/dist/shared/layering.d.mts +17 -0
  708. package/dist/shared/layering.d.mts.map +1 -0
  709. package/dist/shared/layering.mjs +37 -0
  710. package/dist/shared/layering.mjs.map +1 -0
  711. package/dist/shared/notification.d.mts +10 -0
  712. package/dist/shared/notification.d.mts.map +1 -0
  713. package/dist/shared/notification.mjs +105 -0
  714. package/dist/shared/notification.mjs.map +1 -0
  715. package/dist/shared/reduced-motion.mjs +19 -0
  716. package/dist/shared/reduced-motion.mjs.map +1 -0
  717. package/dist/shared/select-indicator.mjs +40 -0
  718. package/dist/shared/select-indicator.mjs.map +1 -0
  719. package/dist/shared/size-scale.d.mts +6 -0
  720. package/dist/shared/size-scale.d.mts.map +1 -0
  721. package/dist/shared/size-scale.mjs +28 -0
  722. package/dist/shared/size-scale.mjs.map +1 -0
  723. package/dist/shared/state-parts.mjs +123 -0
  724. package/dist/shared/state-parts.mjs.map +1 -0
  725. package/dist/shared/text-entry.mjs +54 -0
  726. package/dist/shared/text-entry.mjs.map +1 -0
  727. package/dist/styles.css +6238 -0
  728. package/dist/system/as-child.mjs +42 -0
  729. package/dist/system/as-child.mjs.map +1 -0
  730. package/dist/system/context.mjs +54 -0
  731. package/dist/system/context.mjs.map +1 -0
  732. package/dist/system/controlled.mjs +45 -0
  733. package/dist/system/controlled.mjs.map +1 -0
  734. package/dist/system/create-component.mjs +285 -0
  735. package/dist/system/create-component.mjs.map +1 -0
  736. package/dist/system/create-part.mjs +123 -0
  737. package/dist/system/create-part.mjs.map +1 -0
  738. package/dist/system/dev-warn.mjs +13 -0
  739. package/dist/system/dev-warn.mjs.map +1 -0
  740. package/dist/system/getters.mjs +24 -0
  741. package/dist/system/getters.mjs.map +1 -0
  742. package/dist/system/merge-props.d.mts +5 -0
  743. package/dist/system/merge-props.d.mts.map +1 -0
  744. package/dist/system/merge-props.mjs +95 -0
  745. package/dist/system/merge-props.mjs.map +1 -0
  746. package/dist/system/react-node.mjs +17 -0
  747. package/dist/system/react-node.mjs.map +1 -0
  748. package/dist/system/refs.mjs +21 -0
  749. package/dist/system/refs.mjs.map +1 -0
  750. package/dist/system/styled-component.mjs +15 -0
  751. package/dist/system/styled-component.mjs.map +1 -0
  752. package/dist/system/types.d.mts +47 -0
  753. package/dist/system/types.d.mts.map +1 -0
  754. package/dist/tokens/dist/preset.d.mts +6 -0
  755. package/dist/tokens/dist/preset.d.mts.map +1 -0
  756. package/dist/tokens/dist/preset.mjs +997 -0
  757. package/dist/tokens/dist/preset.mjs.map +1 -0
  758. package/package.json +409 -4
  759. package/skills/components/accordion/SKILL.md +138 -0
  760. package/skills/components/alert/SKILL.md +126 -0
  761. package/skills/components/angle-slider/SKILL.md +155 -0
  762. package/skills/components/avatar/SKILL.md +123 -0
  763. package/skills/components/badge/SKILL.md +117 -0
  764. package/skills/components/breadcrumb/SKILL.md +128 -0
  765. package/skills/components/button/SKILL.md +122 -0
  766. package/skills/components/card/SKILL.md +126 -0
  767. package/skills/components/carousel/SKILL.md +176 -0
  768. package/skills/components/cascade-select/SKILL.md +206 -0
  769. package/skills/components/checkbox/SKILL.md +149 -0
  770. package/skills/components/clipboard/SKILL.md +139 -0
  771. package/skills/components/collapsible/SKILL.md +130 -0
  772. package/skills/components/color-picker/SKILL.md +216 -0
  773. package/skills/components/combobox/SKILL.md +218 -0
  774. package/skills/components/date-input/SKILL.md +157 -0
  775. package/skills/components/date-picker/SKILL.md +235 -0
  776. package/skills/components/dialog/SKILL.md +159 -0
  777. package/skills/components/drawer/SKILL.md +192 -0
  778. package/skills/components/editable/SKILL.md +162 -0
  779. package/skills/components/empty-state/SKILL.md +125 -0
  780. package/skills/components/field/SKILL.md +133 -0
  781. package/skills/components/fieldset/SKILL.md +123 -0
  782. package/skills/components/file-upload/SKILL.md +184 -0
  783. package/skills/components/floating-panel/SKILL.md +206 -0
  784. package/skills/components/hover-card/SKILL.md +173 -0
  785. package/skills/components/image-cropper/SKILL.md +158 -0
  786. package/skills/components/input/SKILL.md +131 -0
  787. package/skills/components/kbd/SKILL.md +116 -0
  788. package/skills/components/listbox/SKILL.md +172 -0
  789. package/skills/components/marquee/SKILL.md +151 -0
  790. package/skills/components/menu/SKILL.md +202 -0
  791. package/skills/components/navigation-menu/SKILL.md +172 -0
  792. package/skills/components/number-input/SKILL.md +177 -0
  793. package/skills/components/pagination/SKILL.md +159 -0
  794. package/skills/components/password-input/SKILL.md +156 -0
  795. package/skills/components/pin-input/SKILL.md +157 -0
  796. package/skills/components/popover/SKILL.md +166 -0
  797. package/skills/components/progress/SKILL.md +144 -0
  798. package/skills/components/qr-code/SKILL.md +132 -0
  799. package/skills/components/radio-group/SKILL.md +153 -0
  800. package/skills/components/rating-group/SKILL.md +151 -0
  801. package/skills/components/scroll-area/SKILL.md +149 -0
  802. package/skills/components/select/SKILL.md +202 -0
  803. package/skills/components/separator/SKILL.md +114 -0
  804. package/skills/components/signature-pad/SKILL.md +161 -0
  805. package/skills/components/skeleton/SKILL.md +114 -0
  806. package/skills/components/slider/SKILL.md +178 -0
  807. package/skills/components/snackbar/SKILL.md +154 -0
  808. package/skills/components/spinner/SKILL.md +122 -0
  809. package/skills/components/splitter/SKILL.md +136 -0
  810. package/skills/components/steps/SKILL.md +150 -0
  811. package/skills/components/switch/SKILL.md +144 -0
  812. package/skills/components/table/SKILL.md +144 -0
  813. package/skills/components/tabs/SKILL.md +138 -0
  814. package/skills/components/tags-input/SKILL.md +194 -0
  815. package/skills/components/textarea/SKILL.md +131 -0
  816. package/skills/components/timer/SKILL.md +142 -0
  817. package/skills/components/toast/SKILL.md +129 -0
  818. package/skills/components/toc/SKILL.md +141 -0
  819. package/skills/components/toggle/SKILL.md +125 -0
  820. package/skills/components/toggle-group/SKILL.md +129 -0
  821. package/skills/components/tooltip/SKILL.md +188 -0
  822. package/skills/components/tour/SKILL.md +158 -0
  823. package/skills/components/tree-view/SKILL.md +180 -0
  824. package/skills/synapse/SKILL.md +301 -0
@@ -0,0 +1,206 @@
1
+ ---
2
+ name: 'floating-panel'
3
+ description: 'FloatingPanel — 사용자가 직접 위치를 정하는 창입니다. 끌어 옮기고, 크기를 바꾸고, 최소화할 수 있으며, 페이지 위를 덮지 않고 페이지 옆에 열려 있습니다. 포커스를 가두지 않고, 아무것도 inert(상호작용 불가) 상태로 만들지 않습니다. 다른 이름: floating panel, window, palette, inspector, tool window, floating dialog, 플로팅 패널, 떠 있는 패널, 창, 팔레트, 인스펙터, 도구 창.'
4
+ metadata:
5
+ package: '@neurocle/synapse-react'
6
+ packageVersion: '0.3.0'
7
+ registryEntry: 'packages/registry/data/components/floating-panel.json'
8
+ registryStructuralVersion: '0.3.0'
9
+ lifecycle: 'active'
10
+ generator: 'packages/react/src/skills/generate.ts'
11
+ ---
12
+
13
+ <!--
14
+ 생성된 파일 — 손으로 고치지 않습니다.
15
+
16
+ Source: packages/registry/data/components/floating-panel.json (항목 구조 0.3.0)
17
+ Generator: packages/react/src/skills/generate.ts
18
+ Regenerate: npx nx run react:skills:generate
19
+
20
+ 아래에서 이 컴포넌트에 대해 말하는 모든 문장은 그 항목의 필드입니다. 여기서 고친 내용은 다음
21
+ 재생성 때 지워지고, 손으로 설명한 컴포넌트는 아무것도 실패하지 않은 채 설명과 어긋납니다.
22
+ 대신 항목을 고칩니다.
23
+ -->
24
+
25
+ # FloatingPanel
26
+
27
+ > 사용자가 직접 위치를 정하는 창입니다. 끌어 옮기고, 크기를 바꾸고, 최소화할 수 있으며, 페이지 위를 덮지 않고 페이지 옆에 열려 있습니다. 포커스를 가두지 않고, 아무것도 inert(상호작용 불가) 상태로 만들지 않습니다.
28
+
29
+ `@neurocle/synapse-react` 0.3.0에서 생성했습니다. 설치된 버전이 이 버전이 아니면, 이 페이지의 어떤 내용보다 설치된 패키지 안에 함께 배포된 Registry를 우선합니다.
30
+
31
+ - 패키지: `@neurocle/synapse-react`
32
+ - 내보내기: `FloatingPanel`
33
+ - 분류: `floating-and-overlay`
34
+ - 수명 주기: `active`
35
+
36
+ ## 알려진 예외 — 사용 전에 확인
37
+
38
+ 이 컴포넌트는 아래 기준 2개를 **의도적으로 충족하지 않습니다**. 기록된 결정이므로 고치려 들지 말고, 각 항목의 유의점을 지켜서 씁니다.
39
+
40
+ ### WCAG 2.2 SC 2.1.1 키보드 (A)
41
+
42
+ - 대상 part: `resizeTrigger`
43
+ - 충족하지 못하는 것: 크기 조절 핸들은 포인터 전용이며 탭 순서에 없습니다. 키보드 사용자는 제품이 정한 크기와 최소화·최대화만 쓸 수 있습니다.
44
+ - 의도한 이유: machine이 크기 조절에 키보드 경로를 제공하지 않으며, machine 밖에서 동작을 덧붙이지 않습니다.
45
+ - 사용 시 유의점: 크기를 키워야만 보이는 콘텐츠를 두지 마세요. 기본 크기에서 모든 내용이 스크롤로 닿게 하고, 크기가 중요하면 최대화를 안내하세요.
46
+
47
+ ### Synapse 공유 레이어 스택 — 참여하지 않음
48
+
49
+ - 충족하지 못하는 것: 자체 패널 스택을 유지하므로 `--layer-index`가 없고, 안쪽부터 닫히는 공유 순서에 참여하지 않습니다. 모달 Dialog 안에 열린 패널에서 Escape를 누르면 패널은 그대로 두고 Dialog가 닫힙니다.
50
+ - 의도한 이유: `@zag-js/floating-panel`이 `@zag-js/dismissable`에 등록하지 않는 업스트림 구조입니다.
51
+ - 사용 시 유의점: Dialog·Drawer 같은 모달 레이어 안에서 FloatingPanel을 열지 마세요. 패널에서 Escape를 누른 사용자는 패널이 아니라 뒤의 모달을 잃습니다.
52
+
53
+ ## Do
54
+
55
+ > 사용자가 작업 옆에 두고 직접 배치하는 보조 보기에 쓰세요. 인스펙터, 속성 팔레트, 실시간 미리보기, 페이지 곳곳을 따라다니는 대화가 그렇습니다. 사용자가 패널과 페이지를 동시에 필요로 할 때, 패널이 놓일 자리가 레이아웃이 아니라 사용자가 정할 일일 때, 그리고 세션이 길어서 최소화와 복원이 버튼 두 개를 더 둘 가치가 있을 때 드래그와 크기 조절 핸들이 제값을 합니다.
56
+
57
+ ## Don't
58
+
59
+ > 사용자가 반드시 응답해야 하는 것에는 쓰지 마세요. 포커스를 가두지 않고, 아무것도 inert(상호작용 불가) 상태로 만들지 않으며, 구석으로 끌려가 잊힌 채로 페이지가 그것 없이 계속 진행될 수 있습니다. 그런 경우는 Dialog입니다. 휴대폰에서도 쓰지 마세요. 사용자가 배치하는 창은 배치할 자리가 없고, 작은 화면에서 가장자리에 고정되는 답은 Drawer입니다. 크기 조절 핸들 뒤에 콘텐츠를 숨기지 마세요. 핸들은 포인터 전용이며 이 컴포넌트의 어떤 것도 키보드로 크기를 바꾸지 않습니다. 그리고 모달 Dialog 안에서 열면서 일반적인 닫힘 순서를 기대하지 마세요. 이 machine은 공유 레이어 스택에 없으므로 둘을 조율하는 것이 없고, Escape는 둘 중 하나를 고르지 않습니다.
60
+
61
+ ## Anti-patterns
62
+
63
+ > Title 없이 렌더링하는 것. content의 aria-labelledby는 Title이 있든 없든 제목 id를 가리키므로, Title이 없는 패널은 대상 없는 참조를 지닌 이름 없는 대화상자로 안내되며, 여기에는 대신 쓸 `aria-label` prop도 없습니다. 두 번째 실수는 Positioner에 스타일을 주는 것입니다. machine이 위치, 크기, 쌓임 순서를 커스텀 속성으로 기록하므로, 레시피의 너비는 렌더링 때는 이기지만 사용자의 바로 다음 드래그에서 집니다.
64
+
65
+ Registry는 이 컴포넌트의 안내를 `reviewed`로 기록합니다(검토일 2026-09-22).
66
+
67
+ ## 관련 컴포넌트
68
+
69
+ - `Dialog` (`dialog`)
70
+ - `Drawer` (`drawer`)
71
+ - `Popover` (`popover`)
72
+ - `Splitter` (`splitter`)
73
+
74
+ ## 가져오기
75
+
76
+ ```tsx
77
+ import { FloatingPanel } from '@neurocle/synapse-react'
78
+ ```
79
+
80
+ ## Anatomy
81
+
82
+ React 네임스페이스가 노출하는 part 12개를 항목의 `parts.containment`가 기록한 대로 조합했습니다. 한 part가 놓일 수 있는 정당한 자리가 둘 이상이면 스니펫은 첫 번째를 쓰고, 아래 목록이 나머지를 알려 줍니다.
83
+
84
+ ```tsx
85
+ <FloatingPanel.Root>
86
+ <FloatingPanel.Trigger />
87
+ <FloatingPanel.Positioner>
88
+ <FloatingPanel.Content>
89
+ <FloatingPanel.Header>
90
+ <FloatingPanel.DragTrigger>
91
+ <FloatingPanel.Title />
92
+ </FloatingPanel.DragTrigger>
93
+ <FloatingPanel.Control>
94
+ <FloatingPanel.StageTrigger />
95
+ <FloatingPanel.CloseTrigger />
96
+ </FloatingPanel.Control>
97
+ </FloatingPanel.Header>
98
+ <FloatingPanel.Body />
99
+ <FloatingPanel.ResizeTrigger />
100
+ </FloatingPanel.Content>
101
+ </FloatingPanel.Positioner>
102
+ </FloatingPanel.Root>
103
+ ```
104
+
105
+ - `FloatingPanel.Root`
106
+ - `FloatingPanel.Trigger` — 최상위에 놓입니다
107
+ - `FloatingPanel.Positioner` — 최상위에 놓입니다
108
+ - `FloatingPanel.Content` — `Positioner` 안에 놓입니다
109
+ - `FloatingPanel.Header` — `Content` 안에 놓입니다
110
+ - `FloatingPanel.Body` — `Content` 안에 놓입니다
111
+ - `FloatingPanel.Title` — `DragTrigger` 안, 또는 `Header` 안에 놓입니다
112
+ - `FloatingPanel.ResizeTrigger` — `Content` 안에 놓입니다
113
+ - `FloatingPanel.DragTrigger` — `Header` 안에 놓입니다
114
+ - `FloatingPanel.StageTrigger` — `Control` 안에 놓입니다
115
+ - `FloatingPanel.CloseTrigger` — `Control` 안, 또는 `Content` 안에 놓입니다
116
+ - `FloatingPanel.Control` — `Header` 안에 놓입니다
117
+
118
+ ## Props
119
+
120
+ 빌드가 방출하는 선언에서 도출한 prop 26개. 선언에는 기본값을 둘 자리가 없으므로 prop 기록에는 기본값이 없습니다. 기본값이 있다면 그 prop의 설명에 적혀 있습니다.
121
+
122
+ 모든 prop이 선택입니다. 아무것도 넘기지 않으면 컴포넌트는 비제어로 동작합니다.
123
+
124
+ ### 선택
125
+
126
+ - `open` — `boolean`, 선택. 제어되는 열림 상태.
127
+ - `defaultOpen` — `boolean`, 선택. 비제어 초기 열림 상태. `open`이 주어지면 무시됩니다.
128
+ - `onOpenChange` — `(details: OpenChangeDetails) => void`, 선택. 제어 여부와 무관하게 패널이 열리거나 닫힐 때마다 알림을 받습니다.
129
+ - `position` — `FloatingPanelPosition`, 선택. 제어되는 위치이며, 단위는 픽셀입니다.
130
+ - `defaultPosition` — `FloatingPanelPosition`, 선택. 비제어 초기 위치. `position`이 주어지면 무시됩니다.
131
+ - `onPositionChange` — `(details: FloatingPanelPositionChangeDetails) => void`, 선택. 패널이 드래그되는 동안 알림을 받습니다.
132
+ - `onPositionChangeEnd` — `(details: FloatingPanelPositionChangeDetails) => void`, 선택. 드래그가 끝날 때 한 번 알림을 받습니다.
133
+ - `dimensions` — `FloatingPanelDimensions`, 선택. 제어되는 너비와 높이이며, 단위는 픽셀입니다. Synapse에서 `size`는 공유 크기 척도를 뜻하므로, machine의 `size`를 `dimensions`라는 이름으로 받습니다.
134
+ - `defaultDimensions` — `FloatingPanelDimensions`, 선택. 비제어 초기 너비와 높이. `dimensions`가 주어지면 무시됩니다.
135
+ - `onDimensionsChange` — `(details: FloatingPanelDimensionsChangeDetails) => void`, 선택. 패널의 크기가 조절되는 동안 알림을 받습니다.
136
+ - `onDimensionsChangeEnd` — `(details: FloatingPanelDimensionsChangeDetails) => void`, 선택. 크기 조절이 끝날 때 한 번 알림을 받습니다.
137
+ - `minDimensions` — `FloatingPanelDimensions`, 선택. 패널을 줄일 수 있는 최소 크기.
138
+ - `maxDimensions` — `FloatingPanelDimensions`, 선택. 패널을 키울 수 있는 최대 크기.
139
+ - `onStageChange` — `(details: FloatingPanelStageChangeDetails) => void`, 선택. 패널이 최소화, 최대화되거나 원래대로 돌아올 때 알림을 받습니다.
140
+ - `draggable` — `boolean`, 선택. 패널을 드래그할 수 있는지 여부. 기본값은 true입니다.
141
+ - `resizable` — `boolean`, 선택. 패널의 크기를 조절할 수 있는지 여부. 기본값은 true입니다.
142
+ - `lockAspectRatio` — `boolean`, 선택. 크기를 조절하는 동안 종횡비를 유지합니다.
143
+ - `gridSize` — `number`, 선택. 드래그와 크기 조절을 픽셀 격자에 맞춥니다.
144
+ - `allowOverflow` — `boolean`, 선택. 패널을 경계 밖으로 드래그할 수 있게 합니다. 기본값은 false입니다.
145
+ - `persistRect` — `boolean`, 선택. 닫혀도 위치와 크기를 기억합니다.
146
+ - `disabled` — `boolean`, 선택. 비활성화된 패널은 드래그되지도 크기가 조절되지도 않습니다.
147
+ - `closeOnEscape` — `boolean`, 선택. Escape를 누르면 닫힙니다. 기본값은 false로, 넘기지 않으면 Escape로 닫히지 않습니다.
148
+ - `restoreFocus` — `boolean`, 선택. 닫힐 때 포커스를 trigger로 되돌립니다. 기본값은 true입니다.
149
+ - `translations` — `TranslationOverrides`, 선택. 이 FloatingPanel에만 적용되는 접근성 문자열이며, provider의 것보다 우선합니다.
150
+ - `size` — `Size`, 선택. 하나의 공유 척도에서 옵니다. 패널의 너비와 높이가 아니라 header와 body의 여백, 글자 크기를 정합니다. 픽셀 크기는 `dimensions`로 정합니다.
151
+ - `id` — `string`, 선택. 팩토리가 생성하는 식별자를 덮어씁니다. 서버와 클라이언트에서 동일합니다.
152
+
153
+ ## Variants
154
+
155
+ - `size` — `xs`, `sm`, `md`, `lg`, `xl`. 기본값은 `md`. size 축은 패널의 크롬, 즉 trigger, 헤더의 패딩, 제목의 글자, 컨트롤 아이콘, 본문의 안쪽 여백을 조절합니다. 패널의 너비와 높이는 일부러 건드리지 않습니다. 그것은 사용자가 끌어서 정하는 값인 `dimensions`이며, 이에 대한 의견을 가진 레시피는 렌더링 때는 이기고 다음 포인터 이동에서는 집니다.
156
+
157
+ ## 폼
158
+
159
+ 폼 참여: 아니요.
160
+
161
+ > 폼에 제출하는 값이 없습니다. FloatingPanel 안의 폼은 사용처 자신의 `form` 요소이며 사용자적으로 폼에 참여합니다.
162
+
163
+ ## 이 컴포넌트에 일부러 없는 것
164
+
165
+ - `empty-state` — Body는 제품이 넣는 것을 무엇이든 렌더링하며, 컬렉션과 달리 이 컴포넌트가 비어 있음을 감지할 데이터가 없습니다. 아무것도 없이 열린 패널도 사용자가 여전히 옮기고, 크기를 바꾸고, 닫을 수 있는 창이며, 이는 machine이 이미 설명하는 상태입니다.
166
+ - `loading-state` — 아직 도착 중인 콘텐츠는 Body 안에서 제품 고유의 placeholder로 보여 줍니다. 여기에 part를 두는 것보다 그편이 낫습니다. 패널은 모달이 아니므로, 사용자가 이미 위치를 바꿀 수 있는 채워지는 중인 창이 막혀 있는 창보다 유용한 상태이고, placeholder의 모양은 그것이 대체할 콘텐츠에 속합니다.
167
+ - `error-state` — 이 컴포넌트는 값을 보유하지 않고 스스로 어떤 작업도 수행하지 않으므로, 실패할 수 있는 동작이 없습니다. 경계를 벗어나게 될 드래그나 크기 조절은 거부되지 않고 경계 안으로 제한되며, 이것이 machine의 답이므로 보고할 상태가 필요 없습니다.
168
+
169
+ ## 접근성
170
+
171
+ ### 접근 가능한 이름
172
+
173
+ > 패널은 aria-labelledby를 통해 Title에서 이름을 얻습니다. 이 참조는 무조건 기록되므로, Title이 없는 패널은 가리킬 대상이 없는 참조를 지닌 채 이름이 없으며, Dialog와 달리 대신 쓸 `aria-label` prop도 없습니다. 단계 전환 버튼은 provider의 번역에서 이름을 얻고 패널마다 덮어쓸 수 있습니다. 닫기 버튼의 이름은 provider의 `floatingPanel.closeTrigger.label`에서 옵니다. `getCloseTriggerProps`는 machine의 `IntlTranslations`에 없는 리터럴로 `aria-label="Close Window"`를 기록하므로, 컴포넌트가 이 속성이 요소에 닿기 전에 번역된 문자열로 고칩니다. 이 값은 동작 영역에 남으므로, 제품은 `translations`로 바꾸거나 `aria-labelledby`로 버튼에 이름을 줍니다.
174
+
175
+ ### 포커스
176
+
177
+ > 패널이 열리면 포커스가 content 요소 자체로 옮겨지고(그래서 content가 `tabindex=0`입니다), 닫히면 trigger로 돌아오며, 둘 다 machine이 처리합니다. 포커스는 갇히지 않고 뒤쪽 페이지는 살아 있고 스크롤할 수 있습니다. 이것이 이 컴포넌트를 대화상자가 아니라 패널로 만드는 점이며, 레이어가 aria-modal이 아닌 이유입니다. 크기 조절에는 키보드 경로가 없습니다. 핸들은 포인터 전용이고 컴포넌트의 다른 어떤 것도 패널의 크기를 바꾸지 않으므로, 키보드 사용자는 제품이 정한 크기와 최소화·최대화가 제공하는 것만 얻습니다. 검증 불가: 이 패키지는 레이아웃 엔진이나 포인터 없이 렌더링하므로, 드래그, 크기 조절, 경계 제한, 포커스 이동은 업스트림에서 검증되며 이 테스트 모음 어디에서도 검증되지 않습니다.
178
+
179
+ ### 공유 레이어 스택에 오르지 않음
180
+
181
+ > `@zag-js/floating-panel`은 `@zag-js/dismissable`에 등록하지 않고 자체 패널 스택을 유지하므로, 패널의 content에는 `--layer-index`가 없고 공유 쌓임 순서와 닫힘 순서는 이를 보지 못합니다. Escape는 `closeOnEscape`를 넘겼을 때만 자체 스택에서 맨 위인 패널이 content에서 직접 처리합니다. 모달 Dialog 안에 열린 패널에서 Escape를 누르면 패널은 그대로 두고 Dialog가 닫힙니다. `packages/react/tests/matrix/registration.test.tsx`는 이를 `layerStack.registers: false`와 그 이유로 선언된 예외로 다룹니다.
182
+
183
+ ## 로케일과 컬렉션
184
+
185
+ - 로케일 의존: 예. 패널을 옮기는 화살표 키는 동작 라이브러리의 방향 인식 키 맵으로 읽히므로, 오른쪽에서 왼쪽으로 쓰는 provider에서는 ArrowLeft와 ArrowRight가 뒤바뀝니다. 반면 positioner는 패널의 x를 여전히 물리 속성 `left`로 기록합니다. 따라서 RTL 제품에서 ArrowLeft를 누르면 패널이 오른쪽으로 움직입니다. 방향은 모든 part에도 기록됩니다.
186
+ - 컬렉션 윈도잉: 아니요. 항목은 이를 이유 없이 사실로만 기록합니다.
187
+
188
+ ## 구조 메모
189
+
190
+ ### 크기 대신 치수
191
+
192
+ > machine은 패널의 너비와 높이를 `size`라고 부르지만, Synapse의 `size`는 모든 컴포넌트가 제공하는 공유 다섯 단계 척도입니다. 두 의미가 이름을 공유할 수 없고 척도는 양보할 수 없으므로, 패널의 픽셀 크기는 `dimensions` / `defaultDimensions` / `onDimensionsChange`(그리고 `minDimensions`, `maxDimensions`)로 공개되며, 바로 이런 목적으로 존재하는 이음매에서 machine의 이름으로 변환됩니다. `dimensions`는 한 컴포넌트의 지역적 표기가 아니라 중앙 등록을 위해 보고된 어휘 추가입니다. 끌어서 크기를 바꾸는 이후의 모든 컴포넌트는 같은 단어를 써야 합니다.
193
+
194
+ ### 공유 레이어 스택에 오르지 않음
195
+
196
+ > `@zag-js/floating-panel`은 `@zag-js/dismissable`에 등록하지 않고 자체 패널 스택을 유지하므로, 패널의 content에는 `--layer-index`가 없고 공유 쌓임 순서와 닫힘 순서는 이를 보지 못합니다. Escape는 자체 스택에서 맨 위일 때 content에서 직접 처리합니다. `packages/react/tests/matrix/registration.test.tsx`는 이를 예외가 아니라 실패하는 단언으로 기록하며, 덕분에 제품이 패널과 대화상자를 중첩해 보고 나서야 이를 발견하는 일이 없습니다.
197
+
198
+ ### 요소를 렌더링하지 않는 루트
199
+
200
+ > machine에는 `root` anatomy part가 없으므로, FloatingPanel.Root는 동작 상태를 공개할 뿐 아무것도 렌더링하지 않습니다. trigger는 사용처가 작성한 자리에 머물고, 패널 자체는 사용자가 끄는 창을 잘라낼 수 있는 어떤 조상으로부터도 포털되어 빠져나갈 수 있습니다.
201
+
202
+ ## 기능 용어와 다른 이름
203
+
204
+ - 다루는 기능: `persistent-panel`, `non-modal-layer`, `drag-to-move`, `drag-to-resize`, `minimize-maximize`, `translatable-strings`.
205
+ - 다른 이름: `floating panel`, `window`, `palette`, `inspector`, `tool window`, `floating dialog`, `플로팅 패널`, `떠 있는 패널`, `창`, `팔레트`, `인스펙터`, `도구 창`.
206
+ - 어휘 상태: `controlled`.
@@ -0,0 +1,173 @@
1
+ ---
2
+ name: 'hover-card'
3
+ description: 'HoverCard — 포인터가 링크 위에 머물면 나타나고 포인터가 그 안으로 옮겨 가는 동안 유지되는 미리보기입니다. 사용자가 이것 없이도 이미 닿을 수 있는 목적지를 보강하는 역할을 합니다. 다른 이름: hover card, preview card, link preview, profile card, peek, hovercard, 호버 카드, 미리보기 카드, 링크 미리보기, 프로필 카드, 마우스 오버 카드.'
4
+ metadata:
5
+ package: '@neurocle/synapse-react'
6
+ packageVersion: '0.3.0'
7
+ registryEntry: 'packages/registry/data/components/hover-card.json'
8
+ registryStructuralVersion: '0.3.0'
9
+ lifecycle: 'active'
10
+ generator: 'packages/react/src/skills/generate.ts'
11
+ ---
12
+
13
+ <!--
14
+ 생성된 파일 — 손으로 고치지 않습니다.
15
+
16
+ Source: packages/registry/data/components/hover-card.json (항목 구조 0.3.0)
17
+ Generator: packages/react/src/skills/generate.ts
18
+ Regenerate: npx nx run react:skills:generate
19
+
20
+ 아래에서 이 컴포넌트에 대해 말하는 모든 문장은 그 항목의 필드입니다. 여기서 고친 내용은 다음
21
+ 재생성 때 지워지고, 손으로 설명한 컴포넌트는 아무것도 실패하지 않은 채 설명과 어긋납니다.
22
+ 대신 항목을 고칩니다.
23
+ -->
24
+
25
+ # HoverCard
26
+
27
+ > 포인터가 링크 위에 머물면 나타나고 포인터가 그 안으로 옮겨 가는 동안 유지되는 미리보기입니다. 사용자가 이것 없이도 이미 닿을 수 있는 목적지를 보강하는 역할을 합니다.
28
+
29
+ `@neurocle/synapse-react` 0.3.0에서 생성했습니다. 설치된 버전이 이 버전이 아니면, 이 페이지의 어떤 내용보다 설치된 패키지 안에 함께 배포된 Registry를 우선합니다.
30
+
31
+ - 패키지: `@neurocle/synapse-react`
32
+ - 내보내기: `HoverCard`
33
+ - 분류: `floating-and-overlay`
34
+ - 수명 주기: `active`
35
+
36
+ ## 알려진 예외 — 사용 전에 확인
37
+
38
+ 이 컴포넌트는 아래 기준 2개를 **의도적으로 충족하지 않습니다**. 기록된 결정이므로 고치려 들지 말고, 각 항목의 유의점을 지켜서 씁니다.
39
+
40
+ ### WCAG 2.2 SC 2.1.1 키보드 (A)
41
+
42
+ - 충족하지 못하는 것: 카드 안으로 포커스가 들어가는 경로가 없고, trigger에서 포커스가 벗어나면 카드가 닫힙니다. 카드 안의 링크·버튼은 키보드로 닿을 수 없습니다.
43
+ - 의도한 이유: HoverCard는 미리보기 전용이라는 machine의 설계입니다. 조작할 콘텐츠는 Popover가 맡습니다.
44
+ - 사용 시 유의점: 카드 안에 링크·버튼 같은 조작 요소를 두지 마세요. 필요하면 Popover를 쓰세요.
45
+
46
+ ### WCAG 2.2 SC 1.4.13 hover 또는 포커스 시 콘텐츠 (AA)
47
+
48
+ - 충족하지 못하는 것: 탭(터치)으로는 열리지 않으며, 접근성 트리에서 trigger와 카드를 잇는 관계(`aria-describedby`, `aria-expanded`, `aria-controls`)가 없습니다. 스크린 리더와 터치 사용자는 카드를 만나지 못합니다.
49
+ - 의도한 이유: trigger가 `a`인 이유는 탭하면 이동하게 하기 위해서이며, 카드는 링크 대상의 미리보기일 뿐입니다.
50
+ - 사용 시 유의점: 카드가 어떤 정보의 유일한 사본이 되지 않게 하세요. 같은 내용은 링크 대상 페이지에도 있어야 합니다.
51
+
52
+ ## Do
53
+
54
+ > 링크가 이미 이끄는 대상의 미리보기에 쓰세요. 어떤 사람이 누구인지, 문서에 무엇이 들어 있는지, 참조된 티켓이 무엇을 말하는지를 포인터가 링크 위에 머물 때 보여 주고, 포인터를 카드 안으로 옮겨 닿을 수 있게 합니다. 미리보기가 사용자가 되돌아와야 했을 이동을 덜어 줄 때, 그리고 그 안의 모든 것이 목적지에서도 제공될 때에만 제자리를 얻습니다. Arrow part는 위치만으로는 카드가 어느 trigger에서 열렸는지 알기 어려울 때만 넣으세요. 대개 카드는 trigger 바로 옆에 놓여 위치만으로 trigger와 이어지고, 그때 테두리와 그림자가 있는 표면에 화살표는 모서리 하나를 더할 뿐입니다.
55
+
56
+ ## Don't
57
+
58
+ > 다른 어디에도 없는 것을 넣지 마세요. 터치로는 열리지 않고, 접근성 트리에서 trigger와 연결되지 않으며, 키보드 사용자는 탭으로 들어갈 수 없습니다. 그래서 마우스를 쓰지 않는 사람에게 그 콘텐츠는 세 가지 경로 모두에서 닿을 수 없습니다. 버튼이나 목적지가 아닌 것을 감싸지 마세요. 그러면 hover를 대신하는 탭이 갈 곳이 없어지고, 패턴은 자신을 정당화하던 경로를 잃습니다. 컨트롤을 설명하는 문구에는 쓰지 마세요. 그것은 Tooltip이며, 적어도 둘 사이에 `aria-describedby`를 연결합니다. 그리고 컨트롤을 넣지 마세요. trigger가 포커스를 잃자마자 카드가 닫히므로, 안의 버튼은 클릭만 할 수 있을 뿐 결코 포커스로 닿을 수 없습니다.
59
+
60
+ ## Anti-patterns
61
+
62
+ > 카드를 미리보기가 아니라 콘텐츠로 다루는 것. 머무는 포인터를 뺀 모든 경로는 카드가 아니라 목적지에 닿고, 컴포넌트는 보조 기술에 카드의 존재를 전혀 알리지 않습니다. 그래서 hover할 때만 나타나는 세부 정보는 대부분의 사용자가 거기 있다는 것조차 알지 못하는 정보가 되며, 카드 자체에 대한 어떤 테스트도 그 사실을 드러내지 못합니다.
63
+
64
+ Registry는 이 컴포넌트의 안내를 `reviewed`로 기록합니다(검토일 2026-09-22).
65
+
66
+ ## 관련 컴포넌트
67
+
68
+ - `Tooltip` (`tooltip`)
69
+ - `Popover` (`popover`)
70
+ - `Dialog` (`dialog`)
71
+ - `Avatar` (`avatar`)
72
+
73
+ ## 가져오기
74
+
75
+ ```tsx
76
+ import { HoverCard } from '@neurocle/synapse-react'
77
+ ```
78
+
79
+ ## Anatomy
80
+
81
+ React 네임스페이스가 노출하는 part 6개를 항목의 `parts.containment`가 기록한 대로 조합했습니다. 한 part가 놓일 수 있는 정당한 자리가 둘 이상이면 스니펫은 첫 번째를 쓰고, 아래 목록이 나머지를 알려 줍니다.
82
+
83
+ ```tsx
84
+ <HoverCard.Root>
85
+ <HoverCard.Trigger />
86
+ <HoverCard.Positioner>
87
+ <HoverCard.Content>
88
+ <HoverCard.Arrow>
89
+ <HoverCard.ArrowTip />
90
+ </HoverCard.Arrow>
91
+ </HoverCard.Content>
92
+ </HoverCard.Positioner>
93
+ </HoverCard.Root>
94
+ ```
95
+
96
+ - `HoverCard.Root`
97
+ - `HoverCard.Arrow` — `Content` 안에 놓입니다
98
+ - `HoverCard.ArrowTip` — `Arrow` 안에 놓입니다
99
+ - `HoverCard.Trigger` — 최상위에 놓입니다
100
+ - `HoverCard.Positioner` — 최상위에 놓입니다
101
+ - `HoverCard.Content` — `Positioner` 안에 놓입니다
102
+
103
+ ## Props
104
+
105
+ 빌드가 방출하는 선언에서 도출한 prop 12개. 선언에는 기본값을 둘 자리가 없으므로 prop 기록에는 기본값이 없습니다. 기본값이 있다면 그 prop의 설명에 적혀 있습니다.
106
+
107
+ 모든 prop이 선택입니다. 아무것도 넘기지 않으면 컴포넌트는 비제어로 동작합니다.
108
+
109
+ ### 선택
110
+
111
+ - `open` — `boolean`, 선택. 제어되는 열림 상태.
112
+ - `defaultOpen` — `boolean`, 선택. 비제어 초기 열림 상태. `open`이 주어지면 무시됩니다.
113
+ - `onOpenChange` — `(details: OpenChangeDetails) => void`, 선택. 제어 여부와 무관하게 카드가 열리거나 닫힐 때마다 알림을 받습니다.
114
+ - `triggerValue` — `string | null`, 선택. 여러 trigger 가운데 지금 카드를 소유한 trigger. HoverCard 하나가 링크 목록 전체를 담당할 수 있습니다: 각 `HoverCard.Trigger`가 `value`를 받고, 콘텐츠는 그중 이 값에 해당하는 trigger를 기준으로 배치됩니다. trigger가 하나뿐인 카드에는 이 prop이 전혀 필요 없습니다.
115
+ - `defaultTriggerValue` — `string | null`, 선택. 비제어 초기 소유 trigger.
116
+ - `onTriggerValueChange` — `(details: HoverCardTriggerValueChangeDetails) => void`, 선택. 소유 trigger가 바뀔 때 알림을 받습니다.
117
+ - `positioning` — `HoverCardPositioning`, 선택. 떠 있는 레이어가 놓이는 위치.
118
+ - `openDelay` — `number`, 선택. 열리기까지 포인터가 trigger 위에 머물러야 하는 밀리초. 기본값은 700입니다.
119
+ - `closeDelay` — `number`, 선택. 포인터가 떠난 뒤 닫히기까지의 밀리초. 기본값은 300입니다.
120
+ - `disabled` — `boolean`, 선택. 비활성화된 HoverCard는 열리지 않습니다.
121
+ - `size` — `Size`, 선택. 하나의 공유 척도에서 옵니다. 모든 컴포넌트가 그렇듯 기본값은 `md`입니다.
122
+ - `id` — `string`, 선택. 팩토리가 생성하는 식별자를 덮어씁니다. 서버와 클라이언트에서 동일합니다.
123
+
124
+ ## Variants
125
+
126
+ - `size` — `xs`, `sm`, `md`, `lg`, `xl`. 기본값은 `md`. size 축은 trigger의 글자와 최소 높이, 카드의 패딩과 글자, 화살표의 크기를 조절합니다. 카드의 너비는 정하지 않습니다. content는 모든 크기에서 `surface.overlayMax`에서 멈추는데, 미리보기의 너비는 척도의 한 단계가 아니라 미리보기 자체의 너비이기 때문입니다.
127
+
128
+ ## 폼
129
+
130
+ 폼 참여: 아니요.
131
+
132
+ > 폼에 제출하는 값이 없습니다.
133
+
134
+ ## 이 컴포넌트에 일부러 없는 것
135
+
136
+ - `empty-state` — 카드는 제품이 넣은 미리보기를 보여 줄 뿐 컬렉션을 소유하지 않습니다. 미리 보여 줄 것이 없는 링크는 애초에 HoverCard로 감싸지 마세요. 그 판단은 이 컴포넌트에 닿기 전에 내려집니다. hover하면 열리는 빈 카드는 카드가 없는 것보다 나쁩니다. 아무 말도 하지 않으면서 읽기를 방해하기 때문입니다.
137
+ - `loading-state` — 포인터가 도착할 때 가져오는 미리보기가 일반적인 경우이며, 제품 고유의 placeholder는 Content 안에서 앞으로 될 미리보기의 모양을 취할 수 있습니다. 여기에 part를 두면 열림 지연 뒤에 번쩍 나타났다가 교체되는데, 이는 그냥 채워지는 카드보다 읽기에 나쁩니다.
138
+ - `error-state` — 이 컴포넌트는 아무것도 가져오지 않고 값을 보유하지 않으므로, 실패할 수 있는 작업이 없습니다. 불러오지 못한 미리보기는 제품이 처리할 일이며, 정직한 처리는 대개 카드를 보여 주지 않는 것입니다. 링크는 여전히 동작하고, 이 패턴이 기대는 경로는 처음부터 그것이었습니다.
139
+
140
+ ## 접근성
141
+
142
+ ### 접근 가능한 이름
143
+
144
+ > trigger의 이름은 제품이 작성한 링크 텍스트입니다. 카드 자체는 접근 가능한 이름이 없고 trigger에서 참조되지도 않는데, machine이 어느 방향으로도 연결을 내보내지 않기 때문입니다. 이 컴포넌트의 어떤 문자열도 동작 라이브러리에서 오지 않습니다. `@zag-js/hover-card`는 `translations`를 받지 않고 아무것도 하드코딩하지 않으므로, 여기에는 제품이 바꿀 수 없는 것이 없습니다.
145
+
146
+ ### 포커스
147
+
148
+ > 포커스는 결코 카드 안으로 옮겨지지 않습니다. content는 `tabindex=-1`이고, 컴포넌트의 어떤 것도 그곳으로 포커스를 옮기지 않으며, machine은 포인터가 카드 안에 없을 때 trigger의 blur에서 카드를 닫습니다. 그래서 카드가 열려 있는 동안 content 안의 포커스 가능한 요소에는 키보드로 닿을 수 없습니다. 이 제약이 Hover Card를 패널이 아니라 미리보기로 만들며, 컨트롤이 대신 Popover에 있어야 하는 이유입니다.
149
+
150
+ ## 로케일과 컬렉션
151
+
152
+ - 로케일 의존: 예. 배치는 논리적입니다. `bottom-start`는 provider의 방향에 맞춰 해석되므로, 같은 카드가 영어 인터페이스와 아랍어 인터페이스에서 링크의 서로 반대쪽에 놓입니다. 방향은 모든 part에도 기록됩니다.
153
+ - 컬렉션 윈도잉: 아니요. 항목은 이를 이유 없이 사실로만 기록합니다.
154
+
155
+ ## 구조 메모
156
+
157
+ ### trigger와 카드 사이에 의미 연결이 없음
158
+
159
+ > machine은 content에 역할을 두지 않고 trigger에 aria-describedby, aria-expanded, aria-controls를 두지 않으므로, 접근성 트리에서 둘을 잇는 것이 없습니다. 카드는 링크에 대한 시각적 보강이며, 이 항목은 이상적인 컴포넌트를 묘사하는 대신 그 사실을 밝힙니다. 카드의 콘텐츠는 결코 어떤 것의 유일한 사본이어서는 안 됩니다.
160
+
161
+ ### 요소를 렌더링하지 않는 루트
162
+
163
+ > Hover Card machine에는 `root` anatomy part가 없으므로, HoverCard.Root는 동작 상태를 공개할 뿐 아무것도 렌더링하지 않습니다. trigger는 자신이 속한 문장 안에 인라인으로 머물고, Positioner와 Content는 그것을 잘라낼 조상으로부터 포털되어 빠져나갈 수 있습니다.
164
+
165
+ ### 링크인 trigger
166
+
167
+ > `Trigger`는 `a`로 선언되며, 이 요소 선택은 스타일 취향이 아니라 바로 터치 경로입니다. machine은 `pointerType === 'touch'`일 때 `onPointerEnter`와 `onPointerLeave`에서 일찍 반환하므로 탭으로는 카드가 열리지 않습니다. 링크를 탭하면 카드가 미리 보여 주던 대상으로 이동하며, 이것이 hover로 동작하는 컴포넌트가 hover 포인터가 없는 사용자에게 제공해야 하는 대등한 경로입니다. 버튼 trigger라면 터치 경로가 아예 없습니다. machine은 탭을 무시하고 버튼은 어디로도 가지 않습니다. 검증 불가: 이 패키지의 테스트 환경에는 터치 포인터가 없으므로, 탭 경로는 테스트 모음이 실행하는 것이 아니라 machine 소스에 대한 추론입니다.
168
+
169
+ ## 기능 용어와 다른 이름
170
+
171
+ - 다루는 기능: `hover-preview`, `hover-disclosure`, `progressive-disclosure`, `non-modal-layer`, `floating-layer`, `translatable-strings`.
172
+ - 다른 이름: `hover card`, `preview card`, `link preview`, `profile card`, `peek`, `hovercard`, `호버 카드`, `미리보기 카드`, `링크 미리보기`, `프로필 카드`, `마우스 오버 카드`.
173
+ - 어휘 상태: `controlled`.
@@ -0,0 +1,158 @@
1
+ ---
2
+ name: 'image-cropper'
3
+ description: 'ImageCropper — 이미지 위의 자르기 사각형으로, 포인터, 핀치, 키보드로 옮기고 크기를 바꾸며, 선택적으로 비율 고정, 확대/축소, 회전, 좌우 반전을 제공합니다. 이 컴포넌트를 둘 가치는 키보드 경로에 있습니다. 선택 영역은 machine이 화살표 키로 조작하고 움직일 때마다 안내하는 슬라이더인데, 드래그 핸들러만으로 만든 자르기 도구는 이렇게 할 수 없습니다. 다른 이름: image cropper, crop tool, photo crop, avatar editor, image editor, crop box, 이미지 크로퍼, 이미지 자르기, 사진 자르기, 크롭 도구, 아바타 편집기.'
4
+ metadata:
5
+ package: '@neurocle/synapse-react'
6
+ packageVersion: '0.3.0'
7
+ registryEntry: 'packages/registry/data/components/image-cropper.json'
8
+ registryStructuralVersion: '0.3.0'
9
+ lifecycle: 'active'
10
+ generator: 'packages/react/src/skills/generate.ts'
11
+ ---
12
+
13
+ <!--
14
+ 생성된 파일 — 손으로 고치지 않습니다.
15
+
16
+ Source: packages/registry/data/components/image-cropper.json (항목 구조 0.3.0)
17
+ Generator: packages/react/src/skills/generate.ts
18
+ Regenerate: npx nx run react:skills:generate
19
+
20
+ 아래에서 이 컴포넌트에 대해 말하는 모든 문장은 그 항목의 필드입니다. 여기서 고친 내용은 다음
21
+ 재생성 때 지워지고, 손으로 설명한 컴포넌트는 아무것도 실패하지 않은 채 설명과 어긋납니다.
22
+ 대신 항목을 고칩니다.
23
+ -->
24
+
25
+ # ImageCropper
26
+
27
+ > 이미지 위의 자르기 사각형으로, 포인터, 핀치, 키보드로 옮기고 크기를 바꾸며, 선택적으로 비율 고정, 확대/축소, 회전, 좌우 반전을 제공합니다. 이 컴포넌트를 둘 가치는 키보드 경로에 있습니다. 선택 영역은 machine이 화살표 키로 조작하고 움직일 때마다 안내하는 슬라이더인데, 드래그 핸들러만으로 만든 자르기 도구는 이렇게 할 수 없습니다.
28
+
29
+ `@neurocle/synapse-react` 0.3.0에서 생성했습니다. 설치된 버전이 이 버전이 아니면, 이 페이지의 어떤 내용보다 설치된 패키지 안에 함께 배포된 Registry를 우선합니다.
30
+
31
+ - 패키지: `@neurocle/synapse-react`
32
+ - 내보내기: `ImageCropper`
33
+ - 분류: `collection-data-entry`
34
+ - 수명 주기: `active`
35
+
36
+ ## Do
37
+
38
+ > 제품이 이미지 전체가 아니라 특정 영역을 필요로 할 때 쓰세요. 프로필 사진, 썸네일, 배너, 스캔한 문서가 그렇습니다. 결과물의 모양이 고정되어 있으면 `aspectRatio`를 설정해 레이아웃이 나중에 왜곡할 자르기 결과를 사용자가 만들지 못하게 하고, 틀은 제자리에 있고 그림이 그 안에서 움직여야 하는 아바타의 경우에는 `fixedCropArea`를 쓰세요. 저장 단계를 계획하기 전에 `formParticipation`을 읽어 보세요. 잘린 파일을 만드는 일은 현재로서는 여전히 `onCropChange`가 보고하는 사각형을 바탕으로 사용처가 직접 해야 합니다.
39
+
40
+ ## Don't
41
+
42
+ > 대역폭을 위해 업로드된 파일의 크기를 줄이는 데 쓰지 마세요. 그것은 FileUpload의 `transformFiles`이며, 사용자에게 아무것도 요구하지 않고 실행됩니다. 범용 이미지 편집기로 쓰지 마세요. 여기에는 그리기도, 필터도, 레이어도 없으며, 할 수 없는 일로 가득한 툴바를 단 자르기 도구는 별도 편집기보다 못합니다. 자르기 영역을 계산할 수 있는 곳에도 쓰지 마세요. 고정된 정사각형 가운데 자르기에는 인터페이스가 전혀 필요 없습니다. 그리고 실제 상자를 줄 수 없을 때는 쓰지 마세요. 기하 정보를 viewport의 크기로 측정하므로, 높이가 0인 컨테이너 안의 자르기 도구는 아무도 보거나 확인할 수 없는 결과를 만듭니다.
43
+
44
+ ## Anti-patterns
45
+
46
+ > 포인터 핸들러로 자르기를 만들고 Selection part를 건너뛰는 것. selection은 machine이 조작하는 `role="slider"`이며, aria-valuenow와 값 텍스트를 지니고, 화살표 키, Alt 크기 조절, 확대/축소가 동작하게 하는 바로 그 요소입니다. 스타일을 입힌 div로 렌더링한 자르기 사각형은 어떤 스크린샷에서도 똑같아 보이지만 마우스 없이는 전혀 쓸 수 없으며, 이 컴포넌트가 막으려고 존재하는 것이 바로 그 한 가지입니다.
47
+
48
+ Registry는 이 컴포넌트의 안내를 `reviewed`로 기록합니다(검토일 2026-09-22).
49
+
50
+ ## 관련 컴포넌트
51
+
52
+ - `FileUpload` (`file-upload`)
53
+ - `Avatar` (`avatar`)
54
+ - `Slider` (`slider`)
55
+ - `SignaturePad` (`signature-pad`)
56
+
57
+ ## 가져오기
58
+
59
+ ```tsx
60
+ import { ImageCropper } from '@neurocle/synapse-react'
61
+ ```
62
+
63
+ ## Anatomy
64
+
65
+ React 네임스페이스가 노출하는 part 6개를 항목의 `parts.containment`가 기록한 대로 조합했습니다. 한 part가 놓일 수 있는 정당한 자리가 둘 이상이면 스니펫은 첫 번째를 쓰고, 아래 목록이 나머지를 알려 줍니다.
66
+
67
+ ```tsx
68
+ <ImageCropper.Root>
69
+ <ImageCropper.Viewport>
70
+ <ImageCropper.Image />
71
+ <ImageCropper.Selection>
72
+ <ImageCropper.Handle />
73
+ <ImageCropper.Grid />
74
+ </ImageCropper.Selection>
75
+ </ImageCropper.Viewport>
76
+ </ImageCropper.Root>
77
+ ```
78
+
79
+ - `ImageCropper.Root` — 최상위에 놓입니다
80
+ - `ImageCropper.Viewport` — `Root` 안에 놓입니다
81
+ - `ImageCropper.Image` — `Viewport` 안에 놓입니다
82
+ - `ImageCropper.Selection` — `Viewport` 안에 놓입니다
83
+ - `ImageCropper.Handle` — `Selection` 안에 놓입니다
84
+ - `ImageCropper.Grid` — `Selection` 안에 놓입니다
85
+
86
+ ## Props
87
+
88
+ 빌드가 방출하는 선언에서 도출한 prop 28개. 선언에는 기본값을 둘 자리가 없으므로 prop 기록에는 기본값이 없습니다. 기본값이 있다면 그 prop의 설명에 적혀 있습니다.
89
+
90
+ 모든 prop이 선택입니다. 아무것도 넘기지 않으면 컴포넌트는 비제어로 동작합니다.
91
+
92
+ ### 선택
93
+
94
+ - `initialCrop` — `ImageCropperRect`, 선택. 시작할 잘라내기 사각형. 기본값은 종횡비가 허용하는 가장 큰 사각형입니다.
95
+ - `onCropChange` — `(details: ImageCropperCropChangeDetails) => void`, 선택. 잘라내기 영역이 움직이거나 크기가 바뀔 때 알림을 받습니다.
96
+ - `aspectRatio` — `number`, 선택. 잘라내기 영역의 비율을 고정합니다 — 정사각형은 1, 영상은 16 / 9입니다.
97
+ - `cropShape` — `ImageCropperShape`, 선택. 잘라내기 영역의 윤곽. 기본값은 `rect`입니다.
98
+ - `fixedCropArea` — `boolean`, 선택. 잘라내기 영역을 고정하고, 그 아래의 이미지만 옮기고 확대·축소할 수 있게 둡니다.
99
+ - `minWidth` — `number`, 선택. 잘라내기 영역의 최소 크기이며, 단위는 픽셀입니다.
100
+ - `minHeight` — `number`, 선택. 잘라내기 영역의 최소 크기이며, 단위는 픽셀입니다.
101
+ - `maxWidth` — `number`, 선택. 잘라내기 영역의 최대 크기이며, 단위는 픽셀입니다.
102
+ - `maxHeight` — `number`, 선택. 잘라내기 영역의 최대 크기이며, 단위는 픽셀입니다.
103
+ - `zoom` — `number`, 선택. 제어되는 확대 배율이며, 1이 이미지의 본래 크기입니다.
104
+ - `defaultZoom` — `number`, 선택. 비제어 초기 확대 배율. `zoom`이 주어지면 무시됩니다.
105
+ - `onZoomChange` — `(details: ImageCropperZoomChangeDetails) => void`, 선택. 확대 배율이 바뀔 때 알림을 받습니다.
106
+ - `minZoom` — `number`, 선택. 허용되는 최소 확대 배율.
107
+ - `maxZoom` — `number`, 선택. 허용되는 최대 확대 배율.
108
+ - `zoomStep` — `number`, 선택. 확대 한 단계가 움직이는 폭.
109
+ - `zoomSensitivity` — `number`, 선택. 휠이나 핀치 제스처가 얼마나 확대·축소하는지.
110
+ - `rotation` — `number`, 선택. 제어되는 회전이며, 단위는 도입니다.
111
+ - `defaultRotation` — `number`, 선택. 비제어 초기 회전.
112
+ - `onRotationChange` — `(details: ImageCropperRotationChangeDetails) => void`, 선택. 회전이 바뀔 때 알림을 받습니다.
113
+ - `flip` — `{ readonly horizontal: boolean; readonly vertical: boolean; }`, 선택. 제어되는 좌우/상하 반전.
114
+ - `defaultFlip` — `{ readonly horizontal: boolean; readonly vertical: boolean; }`, 선택. 비제어 초기 반전.
115
+ - `onFlipChange` — `(details: ImageCropperFlipChangeDetails) => void`, 선택. 반전이 바뀔 때 알림을 받습니다.
116
+ - `nudgeStep` — `number`, 선택. 화살표 키 한 번이 잘라내기 영역을 옮기는 거리이며, 단위는 픽셀입니다.
117
+ - `nudgeStepShift` — `number`, 선택. Shift-화살표가 잘라내기 영역을 옮기는 거리.
118
+ - `nudgeStepCtrl` — `number`, 선택. Ctrl-화살표가 잘라내기 영역을 옮기는 거리.
119
+ - `translations` — `TranslationOverrides`, 선택. 이 ImageCropper에만 적용되는 접근성 문자열이며, provider의 것보다 우선합니다.
120
+ - `size` — `Size`, 선택. 하나의 공유 척도에서 옵니다. 모든 컴포넌트가 그렇듯 기본값은 `md`입니다.
121
+ - `id` — `string`, 선택. 팩토리가 생성하는 식별자를 덮어씁니다. 서버와 클라이언트에서 동일합니다.
122
+
123
+ ## Variants
124
+
125
+ - `size` — `xs`, `sm`, `md`, `lg`, `xl`. 기본값은 `md`. size 축은 크기 조절 그립 여덟 개의 크기를 정하고 root에 최소 높이를 줍니다. 이미지나 자르기 영역은 일부러 조절하지 않습니다. 자르기 도구의 크기는 레이아웃이 주는 상자에서 오고, 자르기 사각형은 `minWidth`/`maxWidth`를 통해 이미지 픽셀 단위로 측정되므로, 티셔츠 사이즈식 단계와는 정직하게 대응시킬 방법이 없습니다.
126
+
127
+ ## 폼
128
+
129
+ 폼 참여: 아니요.
130
+
131
+ > 제출할 값이 없습니다. 자르기의 결과는 폼이 실어 나르는 문자열이 아니라 Blob이나 data URL입니다. 결과는 명령인 `getCroppedImage()`로 만들어지며, 명령에 대한 Synapse의 답은 타입이 지정된 컨트롤러를 반환하는 훅입니다. `useImageCropper()`가 그 훅이며 세 가지 동작을 노출합니다. 잘린 픽셀, 서버 쪽에서 자르는 제품을 위한 이미지 자체 픽셀 단위의 자르기 기하 정보, 그리고 초기화입니다. 제품은 자신의 저장 핸들러에서 이를 호출하고 결과를 자신의 필드에 넣어 자르기를 저장하며, 이는 폼이 담을 수 없는 값을 다루는 일반적인 방식입니다.
132
+
133
+ ## 이 컴포넌트에 일부러 없는 것
134
+
135
+ - `empty-state` — 이미지가 없으면 자를 것이 없으므로, 이미지가 없는 제품은 자르기 도구를 렌더링하지 않습니다. 아직 존재하지 않는 값을 다루는 모든 컨트롤과 마찬가지로 그 판단은 이 컴포넌트에 닿기 전에 내려집니다. 빈 자르기 사각형은 사용자에게 보여 줄 의미가 있는 것이 아닙니다.
136
+ - `loading-state` — machine이 이미 이를 보고하며, 별도 영역보다 더 잘합니다. 이미지가 로드되지 않은 동안 root는 `aria-busy`를 지니고, `aria-description`은 자르기 설명 대신 machine의 `previewLoading` 문자열이 되며, Image part는 그 위에 스켈레톤을 꾸밀 수 있도록 `data-ready`를 지닙니다. `loading` part를 두면 root의 라이브 영역이 이미 알리고 있는 사실을 두 번 안내하게 됩니다.
137
+ - `error-state` — 이 컴포넌트는 요청을 수행하지 않습니다. 제품이 이미 제공한 이미지를 자를 뿐이므로, 로드에 실패한 이미지는 제품의 가져오기가 실패한 것이며 그 가져오기를 처리하는 곳에 속합니다. 실패할 수 있는 유일한 작업인 `getCroppedImage()`는 제품이 `useImageCropper()`를 통해 자신의 핸들러에서 호출하는 명령입니다. 그래서 실패는 자르기가 무엇을 위한 것인지 모르는 컴포넌트 안이 아니라, 호출이 일어난 곳에서 제품 고유의 문구로 드러납니다.
138
+
139
+ ## 접근성
140
+
141
+ ### 접근 가능한 이름
142
+
143
+ > provider의 `imageCropper.root.label`에서 이름을 얻고, `imageCropper.root.roleDescription`이 스크린 리더에 이것이 어떤 종류인지 알립니다. 함수 값인 문자열 세 개, 곧 `previewDescription`, `selectionLabel`, 그리고 화살표 키를 누를 때마다 읽히는 `selectionValueText`는 함수 값 `machineTranslations`를 거쳐 `imageCropper.root.description`과 `imageCropper.selection.*`로 연결되므로, machine의 영어는 어떤 것도 스크린 리더에 닿지 않습니다.
144
+
145
+ ### 포커스
146
+
147
+ > 포커스는 유일한 탭 정지 지점인 Selection에 놓이며, 이동, 크기 조절, 확대/축소 내내 그대로 머무릅니다. 여기서는 어떤 것도 스스로 포커스를 옮기지 않으며, 핸들은 일부러 포커스를 받지 않습니다. 사각형 하나를 둘러싼 탭 정지 지점 여덟 개는 거의 같은 것을 안내하는 슬라이더 여덟 개가 될 것이고, selection에서의 Alt+화살표가 한 곳에서 같은 일을 합니다.
148
+
149
+ ## 로케일과 컬렉션
150
+
151
+ - 로케일 의존: 예. machine은 키 입력을 해석할 때 provider의 텍스트 방향을 읽으므로, ArrowLeft와 ArrowRight는 항상 x가 작아지는 쪽이 아니라 읽기 방향에 따라 자르기 영역을 옮깁니다. 접근성 문자열 여덟 개 중 다섯 개, 곧 root의 레이블과 역할 설명, 로딩 설명, 선택 영역의 역할 설명과 안내문은 provider의 번역에서 옵니다.
152
+ - 컬렉션 윈도잉: 아니요. 항목은 이를 이유 없이 사실로만 기록합니다.
153
+
154
+ ## 기능 용어와 다른 이름
155
+
156
+ - 다루는 기능: `crop-image`, `aspect-ratio-lock`, `zoom-and-pan`, `rotate-image`, `translatable-strings`.
157
+ - 다른 이름: `image cropper`, `crop tool`, `photo crop`, `avatar editor`, `image editor`, `crop box`, `이미지 크로퍼`, `이미지 자르기`, `사진 자르기`, `크롭 도구`, `아바타 편집기`.
158
+ - 어휘 상태: `controlled`.