@handijit/ui 0.0.0-stage → 1.0.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 (658) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +872 -2
  3. package/build/base.css +1 -0
  4. package/build/charts.cjs +2 -0
  5. package/build/charts.cjs.map +1 -0
  6. package/build/charts.css +1 -0
  7. package/build/charts.js +1865 -0
  8. package/build/charts.js.map +1 -0
  9. package/build/chat.cjs +4 -0
  10. package/build/chat.cjs.map +1 -0
  11. package/build/chat.css +1 -0
  12. package/build/chat.js +1120 -0
  13. package/build/chat.js.map +1 -0
  14. package/build/components/Accordion/index.cjs +2 -0
  15. package/build/components/Accordion/index.cjs.map +1 -0
  16. package/build/components/Accordion/index.d.ts +29 -0
  17. package/build/components/Accordion/index.js +42 -0
  18. package/build/components/Accordion/index.js.map +1 -0
  19. package/build/components/Accordion/style.css +1 -0
  20. package/build/components/Alert/index.cjs +2 -0
  21. package/build/components/Alert/index.cjs.map +1 -0
  22. package/build/components/Alert/index.d.ts +15 -0
  23. package/build/components/Alert/index.js +30 -0
  24. package/build/components/Alert/index.js.map +1 -0
  25. package/build/components/Alert/style.css +1 -0
  26. package/build/components/Avatar/index.cjs +2 -0
  27. package/build/components/Avatar/index.cjs.map +1 -0
  28. package/build/components/Avatar/index.d.ts +26 -0
  29. package/build/components/Avatar/index.js +57 -0
  30. package/build/components/Avatar/index.js.map +1 -0
  31. package/build/components/Avatar/style.css +1 -0
  32. package/build/components/Badge/index.cjs +2 -0
  33. package/build/components/Badge/index.cjs.map +1 -0
  34. package/build/components/Badge/index.d.ts +26 -0
  35. package/build/components/Badge/index.js +26 -0
  36. package/build/components/Badge/index.js.map +1 -0
  37. package/build/components/Badge/style.css +1 -0
  38. package/build/components/BottomSheet/index.cjs +2 -0
  39. package/build/components/BottomSheet/index.cjs.map +1 -0
  40. package/build/components/BottomSheet/index.d.ts +21 -0
  41. package/build/components/BottomSheet/index.js +85 -0
  42. package/build/components/BottomSheet/index.js.map +1 -0
  43. package/build/components/BottomSheet/style.css +1 -0
  44. package/build/components/Breadcrumb/index.cjs +2 -0
  45. package/build/components/Breadcrumb/index.cjs.map +1 -0
  46. package/build/components/Breadcrumb/index.d.ts +20 -0
  47. package/build/components/Breadcrumb/index.js +31 -0
  48. package/build/components/Breadcrumb/index.js.map +1 -0
  49. package/build/components/Breadcrumb/style.css +1 -0
  50. package/build/components/Button/index.cjs +2 -0
  51. package/build/components/Button/index.cjs.map +1 -0
  52. package/build/components/Button/index.d.ts +32 -0
  53. package/build/components/Button/index.js +88 -0
  54. package/build/components/Button/index.js.map +1 -0
  55. package/build/components/Button/style.css +1 -0
  56. package/build/components/Card/index.cjs +2 -0
  57. package/build/components/Card/index.cjs.map +1 -0
  58. package/build/components/Card/index.d.ts +51 -0
  59. package/build/components/Card/index.js +58 -0
  60. package/build/components/Card/index.js.map +1 -0
  61. package/build/components/Card/style.css +1 -0
  62. package/build/components/Carousel/index.cjs +2 -0
  63. package/build/components/Carousel/index.cjs.map +1 -0
  64. package/build/components/Carousel/index.d.ts +24 -0
  65. package/build/components/Carousel/index.js +111 -0
  66. package/build/components/Carousel/index.js.map +1 -0
  67. package/build/components/Carousel/style.css +1 -0
  68. package/build/components/Checkbox/index.cjs +2 -0
  69. package/build/components/Checkbox/index.cjs.map +1 -0
  70. package/build/components/Checkbox/index.d.ts +10 -0
  71. package/build/components/Checkbox/index.js +33 -0
  72. package/build/components/Checkbox/index.js.map +1 -0
  73. package/build/components/Checkbox/style.css +1 -0
  74. package/build/components/Chip/index.cjs +2 -0
  75. package/build/components/Chip/index.cjs.map +1 -0
  76. package/build/components/Chip/index.d.ts +27 -0
  77. package/build/components/Chip/index.js +67 -0
  78. package/build/components/Chip/index.js.map +1 -0
  79. package/build/components/Chip/style.css +1 -0
  80. package/build/components/ChipGroup/index.cjs +2 -0
  81. package/build/components/ChipGroup/index.cjs.map +1 -0
  82. package/build/components/ChipGroup/index.d.ts +34 -0
  83. package/build/components/ChipGroup/index.js +64 -0
  84. package/build/components/ChipGroup/index.js.map +1 -0
  85. package/build/components/ChipGroup/style.css +1 -0
  86. package/build/components/CodeBadge/index.cjs +2 -0
  87. package/build/components/CodeBadge/index.cjs.map +1 -0
  88. package/build/components/CodeBadge/index.d.ts +36 -0
  89. package/build/components/CodeBadge/index.js +62 -0
  90. package/build/components/CodeBadge/index.js.map +1 -0
  91. package/build/components/CodeBadge/style.css +1 -0
  92. package/build/components/Combobox/index.cjs +2 -0
  93. package/build/components/Combobox/index.cjs.map +1 -0
  94. package/build/components/Combobox/index.d.ts +6 -0
  95. package/build/components/Combobox/index.js +302 -0
  96. package/build/components/Combobox/index.js.map +1 -0
  97. package/build/components/Combobox/style.css +1 -0
  98. package/build/components/CommandPalette/index.cjs +2 -0
  99. package/build/components/CommandPalette/index.cjs.map +1 -0
  100. package/build/components/CommandPalette/index.d.ts +37 -0
  101. package/build/components/CommandPalette/index.js +181 -0
  102. package/build/components/CommandPalette/index.js.map +1 -0
  103. package/build/components/CommandPalette/style.css +1 -0
  104. package/build/components/ConfirmDialog/index.cjs +2 -0
  105. package/build/components/ConfirmDialog/index.cjs.map +1 -0
  106. package/build/components/ConfirmDialog/index.d.ts +34 -0
  107. package/build/components/ConfirmDialog/index.js +85 -0
  108. package/build/components/ConfirmDialog/index.js.map +1 -0
  109. package/build/components/CopyField/index.cjs +2 -0
  110. package/build/components/CopyField/index.cjs.map +1 -0
  111. package/build/components/CopyField/index.d.ts +20 -0
  112. package/build/components/CopyField/index.js +44 -0
  113. package/build/components/CopyField/index.js.map +1 -0
  114. package/build/components/CopyField/style.css +1 -0
  115. package/build/components/DataTable/index.cjs +2 -0
  116. package/build/components/DataTable/index.cjs.map +1 -0
  117. package/build/components/DataTable/index.d.ts +60 -0
  118. package/build/components/DataTable/index.js +109 -0
  119. package/build/components/DataTable/index.js.map +1 -0
  120. package/build/components/DataTable/style.css +1 -0
  121. package/build/components/DateField/index.cjs +2 -0
  122. package/build/components/DateField/index.cjs.map +1 -0
  123. package/build/components/DateField/index.d.ts +44 -0
  124. package/build/components/DateField/index.js +79 -0
  125. package/build/components/DateField/index.js.map +1 -0
  126. package/build/components/DateField/style.css +1 -0
  127. package/build/components/Directory/index.cjs +2 -0
  128. package/build/components/Directory/index.cjs.map +1 -0
  129. package/build/components/Directory/index.d.ts +51 -0
  130. package/build/components/Directory/index.js +46 -0
  131. package/build/components/Directory/index.js.map +1 -0
  132. package/build/components/Directory/style.css +1 -0
  133. package/build/components/Disclosure/index.cjs +2 -0
  134. package/build/components/Disclosure/index.cjs.map +1 -0
  135. package/build/components/Disclosure/index.d.ts +34 -0
  136. package/build/components/Disclosure/index.js +64 -0
  137. package/build/components/Disclosure/index.js.map +1 -0
  138. package/build/components/Disclosure/style.css +1 -0
  139. package/build/components/Divider/index.cjs +2 -0
  140. package/build/components/Divider/index.cjs.map +1 -0
  141. package/build/components/Divider/index.d.ts +10 -0
  142. package/build/components/Divider/index.js +24 -0
  143. package/build/components/Divider/index.js.map +1 -0
  144. package/build/components/Divider/style.css +1 -0
  145. package/build/components/Drawer/index.cjs +2 -0
  146. package/build/components/Drawer/index.cjs.map +1 -0
  147. package/build/components/Drawer/index.d.ts +22 -0
  148. package/build/components/Drawer/index.js +88 -0
  149. package/build/components/Drawer/index.js.map +1 -0
  150. package/build/components/Drawer/style.css +1 -0
  151. package/build/components/EmptyState/index.cjs +2 -0
  152. package/build/components/EmptyState/index.cjs.map +1 -0
  153. package/build/components/EmptyState/index.d.ts +19 -0
  154. package/build/components/EmptyState/index.js +35 -0
  155. package/build/components/EmptyState/index.js.map +1 -0
  156. package/build/components/EmptyState/style.css +1 -0
  157. package/build/components/Field/index.cjs +2 -0
  158. package/build/components/Field/index.cjs.map +1 -0
  159. package/build/components/Field/index.d.ts +31 -0
  160. package/build/components/Field/index.js +52 -0
  161. package/build/components/Field/index.js.map +1 -0
  162. package/build/components/Field/style.css +1 -0
  163. package/build/components/FileUpload/index.cjs +2 -0
  164. package/build/components/FileUpload/index.cjs.map +1 -0
  165. package/build/components/FileUpload/index.d.ts +42 -0
  166. package/build/components/FileUpload/index.js +145 -0
  167. package/build/components/FileUpload/index.js.map +1 -0
  168. package/build/components/FileUpload/style.css +1 -0
  169. package/build/components/FilterBar/index.cjs +2 -0
  170. package/build/components/FilterBar/index.cjs.map +1 -0
  171. package/build/components/FilterBar/index.d.ts +28 -0
  172. package/build/components/FilterBar/index.js +35 -0
  173. package/build/components/FilterBar/index.js.map +1 -0
  174. package/build/components/FilterBar/style.css +1 -0
  175. package/build/components/IconButton/index.cjs +2 -0
  176. package/build/components/IconButton/index.cjs.map +1 -0
  177. package/build/components/IconButton/index.d.ts +22 -0
  178. package/build/components/IconButton/index.js +61 -0
  179. package/build/components/IconButton/index.js.map +1 -0
  180. package/build/components/IconButton/style.css +1 -0
  181. package/build/components/Input/index.cjs +2 -0
  182. package/build/components/Input/index.cjs.map +1 -0
  183. package/build/components/Input/index.d.ts +15 -0
  184. package/build/components/Input/index.js +52 -0
  185. package/build/components/Input/index.js.map +1 -0
  186. package/build/components/Input/style.css +1 -0
  187. package/build/components/Kbd/index.cjs +2 -0
  188. package/build/components/Kbd/index.cjs.map +1 -0
  189. package/build/components/Kbd/index.d.ts +12 -0
  190. package/build/components/Kbd/index.js +13 -0
  191. package/build/components/Kbd/index.js.map +1 -0
  192. package/build/components/Kbd/style.css +1 -0
  193. package/build/components/Link/index.cjs +2 -0
  194. package/build/components/Link/index.cjs.map +1 -0
  195. package/build/components/Link/index.d.ts +5 -0
  196. package/build/components/Link/index.js +11 -0
  197. package/build/components/Link/index.js.map +1 -0
  198. package/build/components/Menu/index.cjs +2 -0
  199. package/build/components/Menu/index.cjs.map +1 -0
  200. package/build/components/Menu/index.d.ts +46 -0
  201. package/build/components/Menu/index.js +241 -0
  202. package/build/components/Menu/index.js.map +1 -0
  203. package/build/components/Menu/style.css +1 -0
  204. package/build/components/Modal/index.cjs +2 -0
  205. package/build/components/Modal/index.cjs.map +1 -0
  206. package/build/components/Modal/index.d.ts +28 -0
  207. package/build/components/Modal/index.js +92 -0
  208. package/build/components/Modal/index.js.map +1 -0
  209. package/build/components/Modal/style.css +1 -0
  210. package/build/components/PageHeader/index.cjs +2 -0
  211. package/build/components/PageHeader/index.cjs.map +1 -0
  212. package/build/components/PageHeader/index.d.ts +24 -0
  213. package/build/components/PageHeader/index.js +34 -0
  214. package/build/components/PageHeader/index.js.map +1 -0
  215. package/build/components/PageHeader/style.css +1 -0
  216. package/build/components/Pagination/index.cjs +2 -0
  217. package/build/components/Pagination/index.cjs.map +1 -0
  218. package/build/components/Pagination/index.d.ts +39 -0
  219. package/build/components/Pagination/index.js +128 -0
  220. package/build/components/Pagination/index.js.map +1 -0
  221. package/build/components/Pagination/style.css +1 -0
  222. package/build/components/Panel/index.cjs +2 -0
  223. package/build/components/Panel/index.cjs.map +1 -0
  224. package/build/components/Panel/index.d.ts +43 -0
  225. package/build/components/Panel/index.js +55 -0
  226. package/build/components/Panel/index.js.map +1 -0
  227. package/build/components/Panel/style.css +1 -0
  228. package/build/components/PasswordInput/index.cjs +2 -0
  229. package/build/components/PasswordInput/index.cjs.map +1 -0
  230. package/build/components/PasswordInput/index.d.ts +14 -0
  231. package/build/components/PasswordInput/index.js +40 -0
  232. package/build/components/PasswordInput/index.js.map +1 -0
  233. package/build/components/PasswordInput/style.css +1 -0
  234. package/build/components/Popover/index.cjs +2 -0
  235. package/build/components/Popover/index.cjs.map +1 -0
  236. package/build/components/Popover/index.d.ts +20 -0
  237. package/build/components/Popover/index.js +91 -0
  238. package/build/components/Popover/index.js.map +1 -0
  239. package/build/components/Popover/style.css +1 -0
  240. package/build/components/Price/index.cjs +2 -0
  241. package/build/components/Price/index.cjs.map +1 -0
  242. package/build/components/Price/index.d.ts +22 -0
  243. package/build/components/Price/index.js +46 -0
  244. package/build/components/Price/index.js.map +1 -0
  245. package/build/components/Price/style.css +1 -0
  246. package/build/components/Progress/index.cjs +2 -0
  247. package/build/components/Progress/index.cjs.map +1 -0
  248. package/build/components/Progress/index.d.ts +49 -0
  249. package/build/components/Progress/index.js +120 -0
  250. package/build/components/Progress/index.js.map +1 -0
  251. package/build/components/Progress/style.css +1 -0
  252. package/build/components/PromptDialog/index.cjs +2 -0
  253. package/build/components/PromptDialog/index.cjs.map +1 -0
  254. package/build/components/PromptDialog/index.d.ts +36 -0
  255. package/build/components/PromptDialog/index.js +119 -0
  256. package/build/components/PromptDialog/index.js.map +1 -0
  257. package/build/components/PromptDialog/style.css +1 -0
  258. package/build/components/QuantityStepper/index.cjs +2 -0
  259. package/build/components/QuantityStepper/index.cjs.map +1 -0
  260. package/build/components/QuantityStepper/index.d.ts +21 -0
  261. package/build/components/QuantityStepper/index.js +106 -0
  262. package/build/components/QuantityStepper/index.js.map +1 -0
  263. package/build/components/QuantityStepper/style.css +1 -0
  264. package/build/components/Radio/index.cjs +2 -0
  265. package/build/components/Radio/index.cjs.map +1 -0
  266. package/build/components/Radio/index.d.ts +12 -0
  267. package/build/components/Radio/index.js +35 -0
  268. package/build/components/Radio/index.js.map +1 -0
  269. package/build/components/Radio/style.css +1 -0
  270. package/build/components/RadioCard/index.cjs +2 -0
  271. package/build/components/RadioCard/index.cjs.map +1 -0
  272. package/build/components/RadioCard/index.d.ts +16 -0
  273. package/build/components/RadioCard/index.js +48 -0
  274. package/build/components/RadioCard/index.js.map +1 -0
  275. package/build/components/RadioCard/style.css +1 -0
  276. package/build/components/RangeSlider/index.cjs +2 -0
  277. package/build/components/RangeSlider/index.cjs.map +1 -0
  278. package/build/components/RangeSlider/index.d.ts +26 -0
  279. package/build/components/RangeSlider/index.js +102 -0
  280. package/build/components/RangeSlider/index.js.map +1 -0
  281. package/build/components/RangeSlider/style.css +1 -0
  282. package/build/components/Rating/index.cjs +2 -0
  283. package/build/components/Rating/index.cjs.map +1 -0
  284. package/build/components/Rating/index.d.ts +16 -0
  285. package/build/components/Rating/index.js +29 -0
  286. package/build/components/Rating/index.js.map +1 -0
  287. package/build/components/Rating/style.css +1 -0
  288. package/build/components/RatingInput/index.cjs +2 -0
  289. package/build/components/RatingInput/index.cjs.map +1 -0
  290. package/build/components/RatingInput/index.d.ts +21 -0
  291. package/build/components/RatingInput/index.js +75 -0
  292. package/build/components/RatingInput/index.js.map +1 -0
  293. package/build/components/RatingInput/style.css +1 -0
  294. package/build/components/ScrollArea/index.cjs +2 -0
  295. package/build/components/ScrollArea/index.cjs.map +1 -0
  296. package/build/components/ScrollArea/index.d.ts +23 -0
  297. package/build/components/ScrollArea/index.js +65 -0
  298. package/build/components/ScrollArea/index.js.map +1 -0
  299. package/build/components/ScrollArea/style.css +1 -0
  300. package/build/components/SectionHeader/index.cjs +2 -0
  301. package/build/components/SectionHeader/index.cjs.map +1 -0
  302. package/build/components/SectionHeader/index.d.ts +17 -0
  303. package/build/components/SectionHeader/index.js +25 -0
  304. package/build/components/SectionHeader/index.js.map +1 -0
  305. package/build/components/SectionHeader/style.css +1 -0
  306. package/build/components/SegmentedControl/index.cjs +2 -0
  307. package/build/components/SegmentedControl/index.cjs.map +1 -0
  308. package/build/components/SegmentedControl/index.d.ts +24 -0
  309. package/build/components/SegmentedControl/index.js +69 -0
  310. package/build/components/SegmentedControl/index.js.map +1 -0
  311. package/build/components/SegmentedControl/style.css +1 -0
  312. package/build/components/Select/index.cjs +2 -0
  313. package/build/components/Select/index.cjs.map +1 -0
  314. package/build/components/Select/index.d.ts +39 -0
  315. package/build/components/Select/index.js +179 -0
  316. package/build/components/Select/index.js.map +1 -0
  317. package/build/components/Select/style.css +1 -0
  318. package/build/components/Skeleton/index.cjs +2 -0
  319. package/build/components/Skeleton/index.cjs.map +1 -0
  320. package/build/components/Skeleton/index.d.ts +25 -0
  321. package/build/components/Skeleton/index.js +50 -0
  322. package/build/components/Skeleton/index.js.map +1 -0
  323. package/build/components/Skeleton/style.css +1 -0
  324. package/build/components/Spinner/index.cjs +2 -0
  325. package/build/components/Spinner/index.cjs.map +1 -0
  326. package/build/components/Spinner/index.d.ts +11 -0
  327. package/build/components/Spinner/index.js +15 -0
  328. package/build/components/Spinner/index.js.map +1 -0
  329. package/build/components/Spinner/style.css +1 -0
  330. package/build/components/Stat/index.cjs +2 -0
  331. package/build/components/Stat/index.cjs.map +1 -0
  332. package/build/components/Stat/index.d.ts +34 -0
  333. package/build/components/Stat/index.js +72 -0
  334. package/build/components/Stat/index.js.map +1 -0
  335. package/build/components/Stat/style.css +1 -0
  336. package/build/components/StatusDot/index.cjs +2 -0
  337. package/build/components/StatusDot/index.cjs.map +1 -0
  338. package/build/components/StatusDot/index.d.ts +23 -0
  339. package/build/components/StatusDot/index.js +23 -0
  340. package/build/components/StatusDot/index.js.map +1 -0
  341. package/build/components/StatusDot/style.css +1 -0
  342. package/build/components/Steps/index.cjs +2 -0
  343. package/build/components/Steps/index.cjs.map +1 -0
  344. package/build/components/Steps/index.d.ts +23 -0
  345. package/build/components/Steps/index.js +69 -0
  346. package/build/components/Steps/index.js.map +1 -0
  347. package/build/components/Steps/style.css +1 -0
  348. package/build/components/SummaryCard/index.cjs +2 -0
  349. package/build/components/SummaryCard/index.cjs.map +1 -0
  350. package/build/components/SummaryCard/index.d.ts +24 -0
  351. package/build/components/SummaryCard/index.js +33 -0
  352. package/build/components/SummaryCard/index.js.map +1 -0
  353. package/build/components/SummaryCard/style.css +1 -0
  354. package/build/components/Switch/index.cjs +2 -0
  355. package/build/components/Switch/index.cjs.map +1 -0
  356. package/build/components/Switch/index.d.ts +16 -0
  357. package/build/components/Switch/index.js +42 -0
  358. package/build/components/Switch/index.js.map +1 -0
  359. package/build/components/Switch/style.css +1 -0
  360. package/build/components/Table/index.cjs +2 -0
  361. package/build/components/Table/index.cjs.map +1 -0
  362. package/build/components/Table/index.d.ts +28 -0
  363. package/build/components/Table/index.js +58 -0
  364. package/build/components/Table/index.js.map +1 -0
  365. package/build/components/Table/style.css +1 -0
  366. package/build/components/TableCheckbox/index.cjs +2 -0
  367. package/build/components/TableCheckbox/index.cjs.map +1 -0
  368. package/build/components/TableCheckbox/index.d.ts +15 -0
  369. package/build/components/TableCheckbox/index.js +31 -0
  370. package/build/components/TableCheckbox/index.js.map +1 -0
  371. package/build/components/TableCheckbox/style.css +1 -0
  372. package/build/components/Tabs/index.cjs +2 -0
  373. package/build/components/Tabs/index.cjs.map +1 -0
  374. package/build/components/Tabs/index.d.ts +27 -0
  375. package/build/components/Tabs/index.js +102 -0
  376. package/build/components/Tabs/index.js.map +1 -0
  377. package/build/components/Tabs/style.css +1 -0
  378. package/build/components/TagInput/index.cjs +2 -0
  379. package/build/components/TagInput/index.cjs.map +1 -0
  380. package/build/components/TagInput/index.d.ts +25 -0
  381. package/build/components/TagInput/index.js +124 -0
  382. package/build/components/TagInput/index.js.map +1 -0
  383. package/build/components/TagInput/style.css +1 -0
  384. package/build/components/TextLink/index.cjs +2 -0
  385. package/build/components/TextLink/index.cjs.map +1 -0
  386. package/build/components/TextLink/index.d.ts +16 -0
  387. package/build/components/TextLink/index.js +32 -0
  388. package/build/components/TextLink/index.js.map +1 -0
  389. package/build/components/TextLink/style.css +1 -0
  390. package/build/components/Textarea/index.cjs +2 -0
  391. package/build/components/Textarea/index.cjs.map +1 -0
  392. package/build/components/Textarea/index.d.ts +20 -0
  393. package/build/components/Textarea/index.js +68 -0
  394. package/build/components/Textarea/index.js.map +1 -0
  395. package/build/components/Textarea/style.css +1 -0
  396. package/build/components/Tile/index.cjs +2 -0
  397. package/build/components/Tile/index.cjs.map +1 -0
  398. package/build/components/Tile/index.d.ts +19 -0
  399. package/build/components/Tile/index.js +24 -0
  400. package/build/components/Tile/index.js.map +1 -0
  401. package/build/components/Tile/style.css +1 -0
  402. package/build/components/Timeline/index.cjs +2 -0
  403. package/build/components/Timeline/index.cjs.map +1 -0
  404. package/build/components/Timeline/index.d.ts +24 -0
  405. package/build/components/Timeline/index.js +56 -0
  406. package/build/components/Timeline/index.js.map +1 -0
  407. package/build/components/Timeline/style.css +1 -0
  408. package/build/components/Toast/index.cjs +2 -0
  409. package/build/components/Toast/index.cjs.map +1 -0
  410. package/build/components/Toast/index.d.ts +43 -0
  411. package/build/components/Toast/index.js +136 -0
  412. package/build/components/Toast/index.js.map +1 -0
  413. package/build/components/Toast/style.css +1 -0
  414. package/build/components/ToastPortal/index.cjs +2 -0
  415. package/build/components/ToastPortal/index.cjs.map +1 -0
  416. package/build/components/ToastPortal/index.d.ts +8 -0
  417. package/build/components/ToastPortal/index.js +15 -0
  418. package/build/components/ToastPortal/index.js.map +1 -0
  419. package/build/components/Tooltip/index.cjs +2 -0
  420. package/build/components/Tooltip/index.cjs.map +1 -0
  421. package/build/components/Tooltip/index.d.ts +23 -0
  422. package/build/components/Tooltip/index.js +116 -0
  423. package/build/components/Tooltip/index.js.map +1 -0
  424. package/build/components/Tooltip/style.css +1 -0
  425. package/build/constants/breakpoint.constants.cjs +2 -0
  426. package/build/constants/breakpoint.constants.cjs.map +1 -0
  427. package/build/constants/breakpoint.constants.d.ts +8 -0
  428. package/build/constants/breakpoint.constants.js +9 -0
  429. package/build/constants/breakpoint.constants.js.map +1 -0
  430. package/build/constants/combobox.constants.cjs +2 -0
  431. package/build/constants/combobox.constants.cjs.map +1 -0
  432. package/build/constants/combobox.constants.d.ts +11 -0
  433. package/build/constants/combobox.constants.js +7 -0
  434. package/build/constants/combobox.constants.js.map +1 -0
  435. package/build/constants/scroll.constants.cjs +2 -0
  436. package/build/constants/scroll.constants.cjs.map +1 -0
  437. package/build/constants/scroll.constants.d.ts +7 -0
  438. package/build/constants/scroll.constants.js +5 -0
  439. package/build/constants/scroll.constants.js.map +1 -0
  440. package/build/enums/ui-size.enum.cjs +2 -0
  441. package/build/enums/ui-size.enum.cjs.map +1 -0
  442. package/build/enums/ui-size.enum.d.ts +9 -0
  443. package/build/enums/ui-size.enum.js +5 -0
  444. package/build/enums/ui-size.enum.js.map +1 -0
  445. package/build/enums/ui-variant.enum.cjs +2 -0
  446. package/build/enums/ui-variant.enum.cjs.map +1 -0
  447. package/build/enums/ui-variant.enum.d.ts +20 -0
  448. package/build/enums/ui-variant.enum.js +5 -0
  449. package/build/enums/ui-variant.enum.js.map +1 -0
  450. package/build/helpers/class-name.helper.cjs +2 -0
  451. package/build/helpers/class-name.helper.cjs.map +1 -0
  452. package/build/helpers/class-name.helper.d.ts +3 -0
  453. package/build/helpers/class-name.helper.js +10 -0
  454. package/build/helpers/class-name.helper.js.map +1 -0
  455. package/build/helpers/component.helper.cjs +2 -0
  456. package/build/helpers/component.helper.cjs.map +1 -0
  457. package/build/helpers/component.helper.d.ts +13 -0
  458. package/build/helpers/component.helper.js +5 -0
  459. package/build/helpers/component.helper.js.map +1 -0
  460. package/build/helpers/focus.helper.cjs +2 -0
  461. package/build/helpers/focus.helper.cjs.map +1 -0
  462. package/build/helpers/focus.helper.d.ts +42 -0
  463. package/build/helpers/focus.helper.js +65 -0
  464. package/build/helpers/focus.helper.js.map +1 -0
  465. package/build/helpers/label.helper.cjs +2 -0
  466. package/build/helpers/label.helper.cjs.map +1 -0
  467. package/build/helpers/label.helper.d.ts +11 -0
  468. package/build/helpers/label.helper.js +11 -0
  469. package/build/helpers/label.helper.js.map +1 -0
  470. package/build/helpers/portal.helper.cjs +2 -0
  471. package/build/helpers/portal.helper.cjs.map +1 -0
  472. package/build/helpers/portal.helper.d.ts +28 -0
  473. package/build/helpers/portal.helper.js +36 -0
  474. package/build/helpers/portal.helper.js.map +1 -0
  475. package/build/helpers/scroll.helper.cjs +2 -0
  476. package/build/helpers/scroll.helper.cjs.map +1 -0
  477. package/build/helpers/scroll.helper.d.ts +8 -0
  478. package/build/helpers/scroll.helper.js +11 -0
  479. package/build/helpers/scroll.helper.js.map +1 -0
  480. package/build/helpers/text.helper.cjs +2 -0
  481. package/build/helpers/text.helper.cjs.map +1 -0
  482. package/build/helpers/text.helper.d.ts +5 -0
  483. package/build/helpers/text.helper.js +6 -0
  484. package/build/helpers/text.helper.js.map +1 -0
  485. package/build/helpers/theme.helper.cjs +24 -0
  486. package/build/helpers/theme.helper.cjs.map +1 -0
  487. package/build/helpers/theme.helper.d.ts +49 -0
  488. package/build/helpers/theme.helper.js +75 -0
  489. package/build/helpers/theme.helper.js.map +1 -0
  490. package/build/hooks/useAnnounce.cjs +2 -0
  491. package/build/hooks/useAnnounce.cjs.map +1 -0
  492. package/build/hooks/useAnnounce.d.ts +4 -0
  493. package/build/hooks/useAnnounce.js +23 -0
  494. package/build/hooks/useAnnounce.js.map +1 -0
  495. package/build/hooks/useAsyncSearch.cjs +2 -0
  496. package/build/hooks/useAsyncSearch.cjs.map +1 -0
  497. package/build/hooks/useAsyncSearch.d.ts +11 -0
  498. package/build/hooks/useAsyncSearch.js +17 -0
  499. package/build/hooks/useAsyncSearch.js.map +1 -0
  500. package/build/hooks/useCopyFeedback.cjs +2 -0
  501. package/build/hooks/useCopyFeedback.cjs.map +1 -0
  502. package/build/hooks/useCopyFeedback.d.ts +10 -0
  503. package/build/hooks/useCopyFeedback.js +25 -0
  504. package/build/hooks/useCopyFeedback.js.map +1 -0
  505. package/build/hooks/useDismissOnEscape.cjs +2 -0
  506. package/build/hooks/useDismissOnEscape.cjs.map +1 -0
  507. package/build/hooks/useDismissOnEscape.d.ts +12 -0
  508. package/build/hooks/useDismissOnEscape.js +18 -0
  509. package/build/hooks/useDismissOnEscape.js.map +1 -0
  510. package/build/hooks/useListboxNavigation.cjs +2 -0
  511. package/build/hooks/useListboxNavigation.cjs.map +1 -0
  512. package/build/hooks/useListboxNavigation.d.ts +7 -0
  513. package/build/hooks/useListboxNavigation.js +53 -0
  514. package/build/hooks/useListboxNavigation.js.map +1 -0
  515. package/build/hooks/usePortalSurface.cjs +2 -0
  516. package/build/hooks/usePortalSurface.cjs.map +1 -0
  517. package/build/hooks/usePortalSurface.d.ts +25 -0
  518. package/build/hooks/usePortalSurface.js +19 -0
  519. package/build/hooks/usePortalSurface.js.map +1 -0
  520. package/build/hooks/usePositioning.cjs +2 -0
  521. package/build/hooks/usePositioning.cjs.map +1 -0
  522. package/build/hooks/usePositioning.d.ts +13 -0
  523. package/build/hooks/usePositioning.js +74 -0
  524. package/build/hooks/usePositioning.js.map +1 -0
  525. package/build/hooks/useScrollLock.cjs +2 -0
  526. package/build/hooks/useScrollLock.cjs.map +1 -0
  527. package/build/hooks/useScrollLock.d.ts +2 -0
  528. package/build/hooks/useScrollLock.js +34 -0
  529. package/build/hooks/useScrollLock.js.map +1 -0
  530. package/build/hooks/useSheetViewport.cjs +2 -0
  531. package/build/hooks/useSheetViewport.cjs.map +1 -0
  532. package/build/hooks/useSheetViewport.d.ts +6 -0
  533. package/build/hooks/useSheetViewport.js +29 -0
  534. package/build/hooks/useSheetViewport.js.map +1 -0
  535. package/build/hooks/useStickToBottom.cjs +2 -0
  536. package/build/hooks/useStickToBottom.cjs.map +1 -0
  537. package/build/hooks/useStickToBottom.d.ts +12 -0
  538. package/build/hooks/useStickToBottom.js +39 -0
  539. package/build/hooks/useStickToBottom.js.map +1 -0
  540. package/build/hooks/useUiTheme.cjs +2 -0
  541. package/build/hooks/useUiTheme.cjs.map +1 -0
  542. package/build/hooks/useUiTheme.d.ts +7 -0
  543. package/build/hooks/useUiTheme.js +36 -0
  544. package/build/hooks/useUiTheme.js.map +1 -0
  545. package/build/hooks/useUiTokens.cjs +2 -0
  546. package/build/hooks/useUiTokens.cjs.map +1 -0
  547. package/build/hooks/useUiTokens.d.ts +11 -0
  548. package/build/hooks/useUiTokens.js +39 -0
  549. package/build/hooks/useUiTokens.js.map +1 -0
  550. package/build/hooks/useVirtualList.cjs +2 -0
  551. package/build/hooks/useVirtualList.cjs.map +1 -0
  552. package/build/hooks/useVirtualList.d.ts +13 -0
  553. package/build/hooks/useVirtualList.js +41 -0
  554. package/build/hooks/useVirtualList.js.map +1 -0
  555. package/build/index.cjs +2 -0
  556. package/build/index.cjs.map +1 -0
  557. package/build/index.d.ts +95 -0
  558. package/build/index.js +207 -0
  559. package/build/index.js.map +1 -0
  560. package/build/scss/_colors.generated.scss +119 -0
  561. package/build/scss/_index.scss +6 -0
  562. package/build/scss/_metrics.generated.scss +49 -0
  563. package/build/scss/_mixins.scss +710 -0
  564. package/build/scss/_variables.scss +51 -0
  565. package/build/styles/base.d.ts +0 -0
  566. package/build/styles.css +133 -0
  567. package/build/theme/UiProvider.cjs +2 -0
  568. package/build/theme/UiProvider.cjs.map +1 -0
  569. package/build/theme/UiProvider.d.ts +22 -0
  570. package/build/theme/UiProvider.js +30 -0
  571. package/build/theme/UiProvider.js.map +1 -0
  572. package/build/theme/UiThemeScript.cjs +2 -0
  573. package/build/theme/UiThemeScript.cjs.map +1 -0
  574. package/build/theme/UiThemeScript.d.ts +19 -0
  575. package/build/theme/UiThemeScript.js +8 -0
  576. package/build/theme/UiThemeScript.js.map +1 -0
  577. package/build/theme/context.cjs +2 -0
  578. package/build/theme/context.cjs.map +1 -0
  579. package/build/theme/context.d.ts +5 -0
  580. package/build/theme/context.js +8 -0
  581. package/build/theme/context.js.map +1 -0
  582. package/build/theme/initUi.cjs +2 -0
  583. package/build/theme/initUi.cjs.map +1 -0
  584. package/build/theme/initUi.d.ts +7 -0
  585. package/build/theme/initUi.js +10 -0
  586. package/build/theme/initUi.js.map +1 -0
  587. package/build/theme/palette.cjs +2 -0
  588. package/build/theme/palette.cjs.map +1 -0
  589. package/build/theme/palette.d.ts +219 -0
  590. package/build/theme/palette.js +148 -0
  591. package/build/theme/palette.js.map +1 -0
  592. package/build/theme/tokens.cjs +2 -0
  593. package/build/theme/tokens.cjs.map +1 -0
  594. package/build/theme/tokens.d.ts +225 -0
  595. package/build/theme/tokens.js +384 -0
  596. package/build/theme/tokens.js.map +1 -0
  597. package/build/types/charts/AreaChart/index.d.ts +14 -0
  598. package/build/types/charts/BarChart/index.d.ts +16 -0
  599. package/build/types/charts/BoxPlot/index.d.ts +43 -0
  600. package/build/types/charts/ComposedChart/index.d.ts +16 -0
  601. package/build/types/charts/Heatmap/index.d.ts +30 -0
  602. package/build/types/charts/Histogram/index.d.ts +29 -0
  603. package/build/types/charts/LineChart/index.d.ts +14 -0
  604. package/build/types/charts/PieChart/index.d.ts +36 -0
  605. package/build/types/charts/RadarChart/index.d.ts +40 -0
  606. package/build/types/charts/ScatterPlot/index.d.ts +41 -0
  607. package/build/types/charts/core/CartesianChart.d.ts +43 -0
  608. package/build/types/charts/core/ChartFrame.d.ts +55 -0
  609. package/build/types/charts/core/axes.d.ts +37 -0
  610. package/build/types/charts/core/cartesian.d.ts +80 -0
  611. package/build/types/charts/core/format.d.ts +19 -0
  612. package/build/types/charts/core/margins.d.ts +9 -0
  613. package/build/types/charts/core/palette.d.ts +13 -0
  614. package/build/types/charts/core/path.d.ts +24 -0
  615. package/build/types/charts/core/scale.d.ts +40 -0
  616. package/build/types/charts/core/series.d.ts +11 -0
  617. package/build/types/charts/core/spatial.d.ts +12 -0
  618. package/build/types/charts/core/stats.d.ts +34 -0
  619. package/build/types/charts/core/types.d.ts +31 -0
  620. package/build/types/charts/core/useChartWidth.d.ts +7 -0
  621. package/build/types/charts/index.d.ts +21 -0
  622. package/build/types/chat/ActionList/index.d.ts +46 -0
  623. package/build/types/chat/AppBar/index.d.ts +21 -0
  624. package/build/types/chat/ChatMessage/index.d.ts +24 -0
  625. package/build/types/chat/ChatThread/index.d.ts +24 -0
  626. package/build/types/chat/Citation/index.d.ts +15 -0
  627. package/build/types/chat/CodeBlock/format.d.ts +7 -0
  628. package/build/types/chat/CodeBlock/grammars.d.ts +44 -0
  629. package/build/types/chat/CodeBlock/highlight.d.ts +22 -0
  630. package/build/types/chat/CodeBlock/index.d.ts +33 -0
  631. package/build/types/chat/DescriptionList/index.d.ts +16 -0
  632. package/build/types/chat/Legend/index.d.ts +20 -0
  633. package/build/types/chat/MessageActions/index.d.ts +21 -0
  634. package/build/types/chat/PromptInput/index.d.ts +47 -0
  635. package/build/types/chat/PromptSuggestions/index.d.ts +25 -0
  636. package/build/types/chat/Prose/index.d.ts +15 -0
  637. package/build/types/chat/ReasoningBlock/index.d.ts +24 -0
  638. package/build/types/chat/ReasoningText/index.d.ts +14 -0
  639. package/build/types/chat/SegmentBar/index.d.ts +46 -0
  640. package/build/types/chat/SourceList/index.d.ts +25 -0
  641. package/build/types/chat/TerminalOutput/index.d.ts +25 -0
  642. package/build/types/chat/ToolCall/index.d.ts +41 -0
  643. package/build/types/chat/index.d.ts +26 -0
  644. package/build/types/combobox.type.d.ts +49 -0
  645. package/build/types/common-element-props.type.d.ts +8 -0
  646. package/build/types/helpers/class-name.helper.d.ts +3 -0
  647. package/build/types/helpers/component.helper.d.ts +13 -0
  648. package/build/types/helpers/label.helper.d.ts +12 -0
  649. package/build/types/hook.type.d.ts +36 -0
  650. package/build/types/link.type.d.ts +14 -0
  651. package/build/types/positioning.type.d.ts +38 -0
  652. package/build/types/theme/palette.d.ts +219 -0
  653. package/build/types/theme/tokens.d.ts +225 -0
  654. package/build/types/theme.type.d.ts +223 -0
  655. package/build/types/types/common-element-props.type.d.ts +8 -0
  656. package/build/types/types/link.type.d.ts +14 -0
  657. package/build/types/types/theme.type.d.ts +223 -0
  658. package/package.json +487 -4
@@ -0,0 +1,181 @@
1
+ "use client";
2
+ import { jsxs as d, jsx as n } from "react/jsx-runtime";
3
+ import { memo as q, useId as F, useRef as v, useState as S, useMemo as G, useEffect as y } from "react";
4
+ import { Search as H } from "react-bootstrap-icons";
5
+ import { cx as L } from "../../helpers/class-name.helper.js";
6
+ import { scrollIntoViewIfPossible as Q } from "../../helpers/scroll.helper.js";
7
+ import { named as T } from "../../helpers/component.helper.js";
8
+ import { pushModal as U, captureFocus as V, hasOpenSurface as z, isTopModal as B } from "../../helpers/focus.helper.js";
9
+ import { matchesSearch as $ } from "../../helpers/text.helper.js";
10
+ import J from "../../hooks/useScrollLock.js";
11
+ import W from "../Kbd/index.js";
12
+ const a = {"palette":"ui-palette-ag-P9","palette__search":"ui-palette__search-G3aYv","palette__searchIcon":"ui-palette__searchIcon-2UYj-","palette__input":"ui-palette__input-vvLvt","palette__list":"ui-palette__list--KWiH","palette__group":"ui-palette__group-KPj5Q","palette__item":"ui-palette__item-UZzkp","palette__item--active":"ui-palette__item--active-XHcka","palette__icon":"ui-palette__icon-Fg0Lt","palette__text":"ui-palette__text-flfN9","palette__label":"ui-palette__label-8-UHe","palette__description":"ui-palette__description-eRlk9","palette__shortcut":"ui-palette__shortcut-DwYKX","palette__empty":"ui-palette__empty-vg-I3"};
13
+ const X = ({
14
+ isOpen: p,
15
+ onClose: c,
16
+ items: g,
17
+ label: x,
18
+ searchPlaceholder: D,
19
+ emptyMessage: C,
20
+ hotkey: k,
21
+ onOpen: h,
22
+ className: R,
23
+ testId: P
24
+ }) => {
25
+ const w = F(), I = `${w}-listbox`, f = v(null), E = v(null), _ = v(null), N = v(null), [b, K] = S(""), [l, s] = S(0), i = G(() => {
26
+ if (b.trim() === "") return g;
27
+ const e = b.trim();
28
+ return g.filter(
29
+ (t) => $(t.label, e) || (t.description ? $(t.description, e) : !1)
30
+ );
31
+ }, [g, b]);
32
+ J(p), y(() => {
33
+ var m;
34
+ const e = f.current;
35
+ if (!e) return;
36
+ if (!p) {
37
+ e.open && e.close();
38
+ return;
39
+ }
40
+ const t = V();
41
+ e.open || e.showModal(), (m = E.current) == null || m.focus({ preventScroll: !0 }), K(""), s(0);
42
+ const { token: r, pop: u } = U();
43
+ return _.current = r, () => {
44
+ e.open && e.close(), u(), _.current = null, t();
45
+ const o = N.current;
46
+ N.current = null, o == null || o();
47
+ };
48
+ }, [p]), y(() => {
49
+ if (!k) return;
50
+ const e = k.toLowerCase().split("+"), t = e.at(-1), r = (o) => e.includes(o), u = /Mac|iPhone|iPad/.test(navigator.platform), m = (o) => {
51
+ const j = u ? o.metaKey : o.ctrlKey;
52
+ if (o.key.toLowerCase() === t && !(r("mod") !== j || r("shift") !== o.shiftKey || r("alt") !== o.altKey)) {
53
+ if (p) {
54
+ o.preventDefault(), c();
55
+ return;
56
+ }
57
+ z() || (o.preventDefault(), h == null || h());
58
+ }
59
+ };
60
+ return document.addEventListener("keydown", m), () => document.removeEventListener("keydown", m);
61
+ }, [k, p, c, h]), y(() => {
62
+ const e = f.current;
63
+ if (!e) return;
64
+ const t = (r) => {
65
+ r.preventDefault(), !(_.current && !B(_.current)) && c();
66
+ };
67
+ return e.addEventListener("cancel", t), () => e.removeEventListener("cancel", t);
68
+ }, [c]), y(() => {
69
+ var e;
70
+ Q((e = f.current) == null ? void 0 : e.querySelector(`[data-index="${l}"]`), {
71
+ block: "nearest"
72
+ });
73
+ }, [l]);
74
+ const M = (e) => {
75
+ N.current = e.onSelect, c();
76
+ }, A = (e) => {
77
+ const t = i.length - 1;
78
+ switch (e.key) {
79
+ case "ArrowDown":
80
+ e.preventDefault(), s((r) => r >= t ? 0 : r + 1);
81
+ break;
82
+ case "ArrowUp":
83
+ e.preventDefault(), s((r) => r <= 0 ? t : r - 1);
84
+ break;
85
+ case "Home":
86
+ e.preventDefault(), s(0);
87
+ break;
88
+ case "End":
89
+ e.preventDefault(), s(t);
90
+ break;
91
+ case "Enter": {
92
+ e.preventDefault();
93
+ const r = i[l];
94
+ r && M(r);
95
+ break;
96
+ }
97
+ }
98
+ };
99
+ return /* @__PURE__ */ d(
100
+ "dialog",
101
+ {
102
+ ref: f,
103
+ className: L(a.palette, R),
104
+ "aria-label": x,
105
+ "data-testid": P,
106
+ onClick: (e) => e.target === f.current && c(),
107
+ children: [
108
+ /* @__PURE__ */ d("div", { className: a.palette__search, children: [
109
+ /* @__PURE__ */ n(H, { "aria-hidden": !0, className: a.palette__searchIcon }),
110
+ /* @__PURE__ */ n(
111
+ "input",
112
+ {
113
+ ref: E,
114
+ type: "text",
115
+ role: "combobox",
116
+ className: a.palette__input,
117
+ value: b,
118
+ placeholder: D,
119
+ "aria-label": D,
120
+ autoComplete: "off",
121
+ "aria-autocomplete": "list",
122
+ "aria-expanded": !0,
123
+ "aria-controls": I,
124
+ "aria-activedescendant": i[l] ? `${w}-option-${l}` : void 0,
125
+ onChange: (e) => {
126
+ K(e.target.value), s(0);
127
+ },
128
+ onKeyDown: A
129
+ }
130
+ )
131
+ ] }),
132
+ /* @__PURE__ */ d("ul", { id: I, role: "listbox", "aria-label": x, className: a.palette__list, children: [
133
+ i.map((e, t) => {
134
+ var u;
135
+ const r = e.group !== void 0 && e.group !== ((u = i[t - 1]) == null ? void 0 : u.group);
136
+ return (
137
+ /* ⚠ `role="presentation"` ZORUNLU. */
138
+ /* @__PURE__ */ d("li", { role: "presentation", children: [
139
+ r && /*
140
+ * `aria-hidden`: baslik bir SECENEK degil; listbox'in cocugu olarak okunsaydi ekran
141
+ * okuyucu sayimi bozuluyordu.
142
+ */
143
+ /* @__PURE__ */ n("span", { className: a.palette__group, "aria-hidden": !0, children: e.group }),
144
+ /* @__PURE__ */ d(
145
+ "div",
146
+ {
147
+ id: `${w}-option-${t}`,
148
+ role: "option",
149
+ "data-index": t,
150
+ "aria-selected": t === l,
151
+ className: L(
152
+ a.palette__item,
153
+ t === l && a["palette__item--active"]
154
+ ),
155
+ onMouseEnter: () => s(t),
156
+ onClick: () => M(e),
157
+ children: [
158
+ e.icon && /* @__PURE__ */ n("span", { className: a.palette__icon, "aria-hidden": !0, children: e.icon }),
159
+ /* @__PURE__ */ d("span", { className: a.palette__text, children: [
160
+ /* @__PURE__ */ n("span", { className: a.palette__label, children: e.label }),
161
+ e.description && /* @__PURE__ */ n("span", { className: a.palette__description, children: e.description })
162
+ ] }),
163
+ e.shortcut && /* @__PURE__ */ n(W, { keys: [e.shortcut], className: a.palette__shortcut, "aria-hidden": !0 })
164
+ ]
165
+ }
166
+ )
167
+ ] }, e.id)
168
+ );
169
+ }),
170
+ i.length === 0 && /* @__PURE__ */ n("li", { role: "presentation", className: a.palette__empty, children: C })
171
+ ] })
172
+ ]
173
+ }
174
+ );
175
+ }, ce = /* @__PURE__ */ q(
176
+ /* @__PURE__ */ T(X, "CommandPalette")
177
+ );
178
+ export {
179
+ ce as default
180
+ };
181
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/CommandPalette/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type KeyboardEvent,\n memo,\n type ReactNode,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { Search } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { scrollIntoViewIfPossible } from '../../helpers/scroll.helper';\nimport { named } from '../../helpers/component.helper';\nimport { captureFocus, hasOpenSurface, isTopModal, pushModal } from '../../helpers/focus.helper';\nimport { matchesSearch } from '../../helpers/text.helper';\nimport useScrollLock from '../../hooks/useScrollLock';\nimport Kbd from '../Kbd';\n\nimport styles from './index.module.scss';\n\nexport type CommandItem = {\n id: string;\n label: string;\n /** Ayırt edici ikincil satır — bir komutun nereye götürdüğü. */\n description?: string;\n /** Gruplama başlığı (\"Gezinme\", \"Eylemler\"). */\n group?: string;\n icon?: ReactNode;\n /** Kısayol ipucu (\"⌘K\"). */\n shortcut?: string;\n onSelect: () => void;\n};\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n items: CommandItem[];\n /** Pencerenin erişilebilir adı (\"Komut paleti\"). */\n label: string;\n /** Arama kutusunun yer tutucusu ve erişilebilir adı. */\n searchPlaceholder: string;\n /** Sonuç yokken yazılan metin. */\n emptyMessage: string;\n /**\n * Paleti açıp kapatan kısayol: `'mod+k'` (`mod` macOS'ta ⌘, diğerlerinde Ctrl), `'shift+/'`.\n * Başka bir kipsel yüzey açıkken yok sayılır. `onOpen` ile birlikte verilir.\n */\n hotkey?: string;\n /** Kısayol basıldığında, palet kapalıyken. */\n onOpen?: () => void;\n className?: string;\n testId?: string;\n};\n\n/** Komut paleti — klavyeyle her şeye ulaşma. */\nconst CommandPalette = ({\n isOpen,\n onClose,\n items,\n label,\n searchPlaceholder,\n emptyMessage,\n hotkey,\n onOpen,\n className,\n testId,\n}: Props) => {\n const baseId = useId();\n const listboxId = `${baseId}-listbox`;\n const dialogRef = useRef<HTMLDialogElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const tokenRef = useRef<symbol | null>(null);\n /*\n * Secilen komut palet KAPANDIKTAN ve odak geri verildikten SONRA calisir. Once calistiginda komutun\n * actigi pencere, paletin odak iadesiyle odagini kaybediyordu (tuketici bunu\n * `requestAnimationFrame(() => setTimeout(…))` ile atlatiyordu).\n */\n const pendingRef = useRef<(() => void) | null>(null);\n\n const [query, setQuery] = useState('');\n const [activeIndex, setActiveIndex] = useState(0);\n\n const visible = useMemo(() => {\n if (query.trim() === '') return items;\n\n const needle = query.trim();\n return items.filter(\n item =>\n matchesSearch(item.label, needle) ||\n (item.description ? matchesSearch(item.description, needle) : false),\n );\n }, [items, query]);\n\n useScrollLock(isOpen);\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (!isOpen) {\n if (dialog.open) dialog.close();\n return;\n }\n\n const restoreFocus = captureFocus();\n if (!dialog.open) dialog.showModal();\n\n /*\n * Arama kutusu ACILIR ACILMAZ odaklanir: paletin tek amaci yazmak. `preventScroll` — odaklanan\n * kutu ust katmanda ve iOS sayfayi kaydirmaya calisiyordu.\n */\n inputRef.current?.focus({ preventScroll: true });\n setQuery('');\n setActiveIndex(0);\n\n const { token, pop } = pushModal();\n tokenRef.current = token;\n\n return () => {\n /* Siralama ZORUNLU: kipsel pencere acikken disaridaki oge odak alamaz. */\n if (dialog.open) dialog.close();\n pop();\n tokenRef.current = null;\n restoreFocus();\n\n const pending = pendingRef.current;\n pendingRef.current = null;\n pending?.();\n };\n }, [isOpen]);\n\n /* Kisayol: palet kapaliyken acar, acikken kapatir; baska bir yuzey acikken dokunmaz. */\n useEffect(() => {\n if (!hotkey) return;\n\n const parts = hotkey.toLowerCase().split('+');\n const key = parts.at(-1);\n const wants = (modifier: string) => parts.includes(modifier);\n const isMac = /Mac|iPhone|iPad/.test(navigator.platform);\n\n const handleKeyDown = (event: globalThis.KeyboardEvent) => {\n const isMod = isMac ? event.metaKey : event.ctrlKey;\n if (event.key.toLowerCase() !== key) return;\n if (\n wants('mod') !== isMod ||\n wants('shift') !== event.shiftKey ||\n wants('alt') !== event.altKey\n )\n return;\n\n if (isOpen) {\n event.preventDefault();\n onClose();\n return;\n }\n\n if (hasOpenSurface()) return;\n event.preventDefault();\n onOpen?.();\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [hotkey, isOpen, onClose, onOpen]);\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n const handleCancel = (event: Event) => {\n event.preventDefault();\n if (tokenRef.current && !isTopModal(tokenRef.current)) return;\n onClose();\n };\n\n dialog.addEventListener('cancel', handleCancel);\n return () => dialog.removeEventListener('cancel', handleCancel);\n }, [onClose]);\n\n /* Etkin komut gorunur alanin disina cikmamali. */\n useEffect(() => {\n scrollIntoViewIfPossible(dialogRef.current?.querySelector(`[data-index=\"${activeIndex}\"]`), {\n block: 'nearest',\n });\n }, [activeIndex]);\n\n const run = (item: CommandItem) => {\n pendingRef.current = item.onSelect;\n onClose();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n const lastIndex = visible.length - 1;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n setActiveIndex(current => (current >= lastIndex ? 0 : current + 1));\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n setActiveIndex(current => (current <= 0 ? lastIndex : current - 1));\n break;\n\n case 'Home':\n event.preventDefault();\n setActiveIndex(0);\n break;\n\n case 'End':\n event.preventDefault();\n setActiveIndex(lastIndex);\n break;\n\n case 'Enter': {\n event.preventDefault();\n const activeCommand = visible[activeIndex];\n if (activeCommand) run(activeCommand);\n break;\n }\n\n default:\n break;\n }\n };\n\n return (\n <dialog\n ref={dialogRef}\n className={cx(styles.palette, className)}\n aria-label={label}\n data-testid={testId}\n onClick={event => event.target === dialogRef.current && onClose()}\n >\n <div className={styles.palette__search}>\n <Search aria-hidden className={styles.palette__searchIcon} />\n\n <input\n ref={inputRef}\n type=\"text\"\n role=\"combobox\"\n className={styles.palette__input}\n value={query}\n placeholder={searchPlaceholder}\n aria-label={searchPlaceholder}\n autoComplete=\"off\"\n aria-autocomplete=\"list\"\n aria-expanded\n aria-controls={listboxId}\n aria-activedescendant={\n visible[activeIndex] ? `${baseId}-option-${activeIndex}` : undefined\n }\n onChange={event => {\n setQuery(event.target.value);\n /* Yazmak etkin komutu BASA ceker: eski satir suzulmus listede kalmiyordu. */\n setActiveIndex(0);\n }}\n onKeyDown={handleKeyDown}\n />\n </div>\n\n <ul id={listboxId} role=\"listbox\" aria-label={label} className={styles.palette__list}>\n {visible.map((item, index) => {\n /*\n * Grup basligi yalnizca DEGISTIGINDE cizilir: her satirin ustune baslik koymak listeyi\n * iki katina cikariyordu.\n */\n const isNewGroup = item.group !== undefined && item.group !== visible[index - 1]?.group;\n\n return (\n /* ⚠ `role=\"presentation\"` ZORUNLU. */\n <li key={item.id} role=\"presentation\">\n {isNewGroup && (\n /*\n * `aria-hidden`: baslik bir SECENEK degil; listbox'in cocugu olarak okunsaydi ekran\n * okuyucu sayimi bozuluyordu.\n */\n <span className={styles.palette__group} aria-hidden>\n {item.group}\n </span>\n )}\n\n <div\n id={`${baseId}-option-${index}`}\n role=\"option\"\n data-index={index}\n aria-selected={index === activeIndex}\n className={cx(\n styles.palette__item,\n index === activeIndex && styles['palette__item--active'],\n )}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => run(item)}\n >\n {item.icon && (\n <span className={styles.palette__icon} aria-hidden>\n {item.icon}\n </span>\n )}\n\n <span className={styles.palette__text}>\n <span className={styles.palette__label}>{item.label}</span>\n {item.description && (\n <span className={styles.palette__description}>{item.description}</span>\n )}\n </span>\n\n {item.shortcut && (\n <Kbd keys={[item.shortcut]} className={styles.palette__shortcut} aria-hidden />\n )}\n </div>\n </li>\n );\n })}\n\n {/* Bos durum bir SECENEK degil; o da sahipsiz kalmamali. */}\n {visible.length === 0 && (\n <li role=\"presentation\" className={styles.palette__empty}>\n {emptyMessage}\n </li>\n )}\n </ul>\n </dialog>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(CommandPalette, 'CommandPalette'),\n) as typeof CommandPalette;\n"],"names":["CommandPalette","isOpen","onClose","items","label","searchPlaceholder","emptyMessage","hotkey","onOpen","className","testId","baseId","useId","listboxId","dialogRef","useRef","inputRef","tokenRef","pendingRef","query","setQuery","useState","activeIndex","setActiveIndex","visible","useMemo","needle","item","matchesSearch","useScrollLock","useEffect","dialog","restoreFocus","captureFocus","_a","token","pop","pushModal","pending","parts","key","wants","modifier","isMac","handleKeyDown","event","isMod","hasOpenSurface","handleCancel","isTopModal","scrollIntoViewIfPossible","run","lastIndex","current","activeCommand","jsxs","cx","styles","jsx","Search","index","isNewGroup","Kbd","memo","named"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-palette-ag-P9{display:none;flex-direction:column;width:min(92vw,560px);max-height:min(70dvh,480px);margin:12vh auto auto;padding:0;border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);background-color:var(--ui-surface);color:var(--ui-text);box-shadow:var(--ui-shadow-xl);overflow:hidden;opacity:0;translate:0 6px;transition:opacity var(--ui-duration-fast) var(--ui-ease-out),translate var(--ui-duration-fast) var(--ui-ease-out),overlay var(--ui-duration-fast) allow-discrete,display var(--ui-duration-fast) allow-discrete}.ui-palette-ag-P9[open]{opacity:1;translate:0 0}@starting-style{.ui-palette-ag-P9[open]{opacity:0;translate:0 6px}}@media (prefers-reduced-motion: reduce){.ui-palette-ag-P9{transition:none}}.ui-palette-ag-P9::backdrop{opacity:0;transition:opacity var(--ui-duration-fast) var(--ui-ease-out),overlay var(--ui-duration-fast) allow-discrete,display var(--ui-duration-fast) allow-discrete}.ui-palette-ag-P9[open]::backdrop{opacity:1}@starting-style{.ui-palette-ag-P9[open]::backdrop{opacity:0}}@media (prefers-reduced-motion: reduce){.ui-palette-ag-P9::backdrop{transition:none}}.ui-palette-ag-P9[open]{display:flex}.ui-palette-ag-P9::backdrop{background-color:var(--ui-scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}@media (max-width: 640px){.ui-palette-ag-P9{width:94vw;margin-top:var(--ui-space-5);max-height:80dvh}}.ui-palette__search-G3aYv{display:flex;align-items:center;gap:var(--ui-space-2);padding:var(--ui-space-3) var(--ui-space-4);border-bottom:1px solid var(--ui-border);flex-shrink:0}.ui-palette__searchIcon-2UYj-{color:var(--ui-text-2);font-size:var(--ui-icon-md);flex-shrink:0}.ui-palette__input-vvLvt{flex:1;min-width:0;border:none;background:none;font-family:var(--ui-font-body);font-size:var(--ui-font-size-control);color:var(--ui-text)}.ui-palette__input-vvLvt::placeholder{color:var(--ui-text-3)}.ui-palette__input-vvLvt:focus{outline:none}.ui-palette__list--KWiH{flex:1;min-height:0;position:relative;overflow-y:auto;margin:0;padding:var(--ui-space-1);list-style:none;scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}.ui-palette__list--KWiH::-webkit-scrollbar{width:8px;height:8px}.ui-palette__list--KWiH::-webkit-scrollbar-track{background:transparent}.ui-palette__list--KWiH::-webkit-scrollbar-thumb{background-color:var(--ui-border-strong);border-radius:var(--ui-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-palette__list--KWiH::-webkit-scrollbar-thumb:hover{background-color:var(--ui-text-3)}.ui-palette__group-KPj5Q{display:block;padding:var(--ui-space-2) var(--ui-space-2) var(--ui-space-1);font-size:var(--ui-font-size-2xs);font-weight:600;letter-spacing:.045em;text-transform:uppercase;color:var(--ui-text-3)}.ui-palette__item-UZzkp{display:flex;align-items:center;gap:var(--ui-space-3);padding:var(--ui-space-2) var(--ui-space-3);border-radius:var(--ui-radius-sm);cursor:pointer;min-height:40px}.ui-palette__item--active-XHcka{background-color:var(--ui-surface-2)}.ui-palette__icon-Fg0Lt{display:inline-flex;flex-shrink:0;font-size:var(--ui-icon-md);color:var(--ui-text-2)}.ui-palette__text-flfN9{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.ui-palette__label-8-UHe{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--ui-font-size-sm);color:var(--ui-text)}.ui-palette__description-eRlk9{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--ui-font-size-2xs);color:var(--ui-text-2)}.ui-palette__shortcut-DwYKX{flex-shrink:0}.ui-palette__empty-vg-I3{padding:var(--ui-space-5) var(--ui-space-3);text-align:center;font-size:var(--ui-font-size-sm);color:var(--ui-text-2)}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),c=require("react"),a=require("react-bootstrap-icons"),v=require("../../helpers/label.helper.cjs"),M=require("../../theme/context.cjs"),u=require("../../enums/ui-size.enum.cjs"),i=require("../../enums/ui-variant.enum.cjs"),o=require("../Button/index.cjs"),N=require("../Modal/index.cjs"),_={destructive:e.jsx(a.TrashFill,{"aria-hidden":!0}),warning:e.jsx(a.ExclamationTriangleFill,{"aria-hidden":!0}),neutral:e.jsx(a.QuestionCircleFill,{"aria-hidden":!0})},C={destructive:"danger",warning:"warning",neutral:"info"},A={destructive:i.default.DANGER,warning:i.default.PRIMARY,neutral:i.default.PRIMARY},E=({isOpen:d,onClose:s,onConfirm:f,title:g,description:m,confirmLabel:x,cancelLabel:I,closeLabel:D,variant:R,kind:h,children:j})=>{const{labels:n}=M.useUi(),[t,l]=c.useState(!1),r=R??h??"neutral",q=async()=>{l(!0);try{await f()}finally{l(!1)}};return e.jsx(N.default,{isOpen:d,onClose:s,title:g,closeLabel:D??(n==null?void 0:n.close),description:m,icon:_[r],tone:C[r],size:"sm",isDismissable:!t,footer:e.jsxs(e.Fragment,{children:[e.jsx(o.default,{variant:i.default.SECONDARY,size:u.default.MEDIUM,onClick:s,disabled:t,children:v.resolveLabel("ConfirmDialog.cancelLabel",I,n==null?void 0:n.cancel)}),e.jsx(o.default,{variant:A[r],size:u.default.MEDIUM,onClick:q,isLoading:t,children:x})]}),children:j})},b=c.memo(E);exports.default=b;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/ConfirmDialog/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode, useState } from 'react';\n\nimport { ExclamationTriangleFill, QuestionCircleFill, TrashFill } from 'react-bootstrap-icons';\n\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport UISize from '../../enums/ui-size.enum';\nimport UIVariant from '../../enums/ui-variant.enum';\nimport Button from '../Button';\nimport Modal, { type ModalTone } from '../Modal';\n\nexport type ConfirmKind = 'destructive' | 'warning' | 'neutral';\n\n/** Üçü de DOLU sürüm: madalyonun tint zemininde kontur kaybolur. */\nconst KIND_ICON: Record<ConfirmKind, ReactNode> = {\n destructive: <TrashFill aria-hidden />,\n warning: <ExclamationTriangleFill aria-hidden />,\n neutral: <QuestionCircleFill aria-hidden />,\n};\n\nconst KIND_TONE: Record<ConfirmKind, ModalTone> = {\n destructive: 'danger',\n warning: 'warning',\n neutral: 'info',\n};\n\nconst KIND_VARIANT: Record<ConfirmKind, UIVariant> = {\n destructive: UIVariant.DANGER,\n warning: UIVariant.PRIMARY,\n neutral: UIVariant.PRIMARY,\n};\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n /**\n * Onaylandığında çalışır. `Promise` dönerse düğme beklerken yükleme durumuna geçer ve pencere\n * kapanmaz.\n */\n onConfirm: () => void | Promise<void>;\n /** Soru cümlesi. */\n title: string;\n /** Sonucu açıklar: neyin geri alınamaz olduğu burada yazılır. */\n description?: ReactNode;\n /** Onay düğmesinin etiketi — ZORUNLU, config'ten okunmaz. */\n confirmLabel: string;\n /** Verilmezse `labels.cancel`. */\n cancelLabel?: string;\n /** Verilmezse `labels.close`. */\n closeLabel?: string;\n /** Onayın türü — ikon, ton ve onay düğmesinin varyantını birlikte belirler. */\n variant?: ConfirmKind;\n /** @deprecated `variant` kullanın. */\n kind?: ConfirmKind;\n /** Ek bağlam: silinecek kaydın özeti, uyarı kutusu. */\n children?: ReactNode;\n};\n\n/**\n * Onay penceresi.\n * @example const [target, setTarget] = useState<Address | null>(null);\n */\nconst ConfirmDialog: FC<Props> = ({\n isOpen,\n onClose,\n onConfirm,\n title,\n description,\n confirmLabel,\n cancelLabel,\n closeLabel,\n variant,\n kind,\n children,\n}) => {\n const { labels } = useUi();\n const [isRunning, setIsRunning] = useState(false);\n\n /* Eski prop bir surum boyunca calisir; `variant` verilmisse o kazanir. */\n const resolvedVariant: ConfirmKind = variant ?? kind ?? 'neutral';\n\n const handleConfirm = async () => {\n setIsRunning(true);\n try {\n await onConfirm();\n } finally {\n /* `finally`: istek hata verse de yukleme durumu birakilir. */\n setIsRunning(false);\n }\n };\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n title={title}\n closeLabel={closeLabel ?? labels?.close}\n description={description}\n icon={KIND_ICON[resolvedVariant]}\n tone={KIND_TONE[resolvedVariant]}\n size=\"sm\"\n // Islem surerken kapanmaz: kapanma, islem iptal edilmis gibi gorunuyordu.\n isDismissable={!isRunning}\n footer={\n <>\n {/*\n \"Vazgec\" JSX'te ONCE: klavyeyle sekme sirasi soldan saga mantikli\n olmali. Ekranda mobilde `column-reverse` ile alta duser.\n */}\n <Button\n variant={UIVariant.SECONDARY}\n size={UISize.MEDIUM}\n onClick={onClose}\n disabled={isRunning}\n >\n {resolveLabel('ConfirmDialog.cancelLabel', cancelLabel, labels?.cancel)}\n </Button>\n <Button\n variant={KIND_VARIANT[resolvedVariant]}\n size={UISize.MEDIUM}\n onClick={handleConfirm}\n isLoading={isRunning}\n >\n {confirmLabel}\n </Button>\n </>\n }\n >\n {children}\n </Modal>\n );\n};\n\nexport default /*#__PURE__*/ memo(ConfirmDialog) as typeof ConfirmDialog;\n"],"names":["KIND_ICON","jsx","TrashFill","ExclamationTriangleFill","QuestionCircleFill","KIND_TONE","KIND_VARIANT","UIVariant","ConfirmDialog","isOpen","onClose","onConfirm","title","description","confirmLabel","cancelLabel","closeLabel","variant","kind","children","labels","useUi","isRunning","setIsRunning","useState","resolvedVariant","handleConfirm","Modal","jsxs","Fragment","Button","UISize","resolveLabel","index"],"mappings":"6bAeMA,EAA4C,CAChD,YAAaC,EAAAA,IAACC,EAAAA,UAAA,CAAU,cAAW,EAAA,CAAC,EACpC,QAASD,EAAAA,IAACE,EAAAA,wBAAA,CAAwB,cAAW,EAAA,CAAC,EAC9C,QAASF,EAAAA,IAACG,EAAAA,mBAAA,CAAmB,cAAW,EAAA,CAAC,CAC3C,EAEMC,EAA4C,CAChD,YAAa,SACb,QAAS,UACT,QAAS,MACX,EAEMC,EAA+C,CACnD,YAAaC,EAAAA,QAAU,OACvB,QAASA,EAAAA,QAAU,QACnB,QAASA,EAAAA,QAAU,OACrB,EAgCMC,EAA2B,CAAC,CAChC,OAAAC,EACA,QAAAC,EACA,UAAAC,EACA,MAAAC,EACA,YAAAC,EACA,aAAAC,EACA,YAAAC,EACA,WAAAC,EACA,QAAAC,EACA,KAAAC,EACA,SAAAC,CACF,IAAM,CACJ,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EACb,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAG1CC,EAA+BR,GAAWC,GAAQ,UAElDQ,EAAgB,SAAY,CAChCH,EAAa,EAAI,EACjB,GAAI,CACF,MAAMZ,EAAA,CACR,QAAA,CAEEY,EAAa,EAAK,CACpB,CACF,EAEA,OACEtB,EAAAA,IAAC0B,EAAAA,QAAA,CACC,OAAAlB,EACA,QAAAC,EACA,MAAAE,EACA,WAAYI,IAAcI,GAAA,YAAAA,EAAQ,OAClC,YAAAP,EACA,KAAMb,EAAUyB,CAAe,EAC/B,KAAMpB,EAAUoB,CAAe,EAC/B,KAAK,KAEL,cAAe,CAACH,EAChB,OACEM,EAAAA,KAAAC,WAAA,CAKE,SAAA,CAAA5B,EAAAA,IAAC6B,EAAAA,QAAA,CACC,QAASvB,EAAAA,QAAU,UACnB,KAAMwB,EAAAA,QAAO,OACb,QAASrB,EACT,SAAUY,EAET,SAAAU,EAAAA,aAAa,4BAA6BjB,EAAaK,GAAA,YAAAA,EAAQ,MAAM,CAAA,CAAA,EAExEnB,EAAAA,IAAC6B,EAAAA,QAAA,CACC,QAASxB,EAAamB,CAAe,EACrC,KAAMM,EAAAA,QAAO,OACb,QAASL,EACT,UAAWJ,EAEV,SAAAR,CAAA,CAAA,CACH,EACF,EAGD,SAAAK,CAAA,CAAA,CAGP,EAEAc,SAAkCzB,CAAa"}
@@ -0,0 +1,34 @@
1
+ import { FC, ReactNode } from 'react';
2
+ export type ConfirmKind = 'destructive' | 'warning' | 'neutral';
3
+ type Props = {
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ /**
7
+ * Onaylandığında çalışır. `Promise` dönerse düğme beklerken yükleme durumuna geçer ve pencere
8
+ * kapanmaz.
9
+ */
10
+ onConfirm: () => void | Promise<void>;
11
+ /** Soru cümlesi. */
12
+ title: string;
13
+ /** Sonucu açıklar: neyin geri alınamaz olduğu burada yazılır. */
14
+ description?: ReactNode;
15
+ /** Onay düğmesinin etiketi — ZORUNLU, config'ten okunmaz. */
16
+ confirmLabel: string;
17
+ /** Verilmezse `labels.cancel`. */
18
+ cancelLabel?: string;
19
+ /** Verilmezse `labels.close`. */
20
+ closeLabel?: string;
21
+ /** Onayın türü — ikon, ton ve onay düğmesinin varyantını birlikte belirler. */
22
+ variant?: ConfirmKind;
23
+ /** @deprecated `variant` kullanın. */
24
+ kind?: ConfirmKind;
25
+ /** Ek bağlam: silinecek kaydın özeti, uyarı kutusu. */
26
+ children?: ReactNode;
27
+ };
28
+ /**
29
+ * Onay penceresi.
30
+ * @example const [target, setTarget] = useState<Address | null>(null);
31
+ */
32
+ declare const ConfirmDialog: FC<Props>;
33
+ declare const _default: typeof ConfirmDialog;
34
+ export default _default;
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import { jsx as n, jsxs as N, Fragment as v } from "react/jsx-runtime";
3
+ import { memo as C, useState as M } from "react";
4
+ import { QuestionCircleFill as A, ExclamationTriangleFill as E, TrashFill as w } from "react-bootstrap-icons";
5
+ import { resolveLabel as x } from "../../helpers/label.helper.js";
6
+ import { useUi as U } from "../../theme/context.js";
7
+ import s from "../../enums/ui-size.enum.js";
8
+ import r from "../../enums/ui-variant.enum.js";
9
+ import l from "../Button/index.js";
10
+ import z from "../Modal/index.js";
11
+ const F = {
12
+ destructive: /* @__PURE__ */ n(w, { "aria-hidden": !0 }),
13
+ warning: /* @__PURE__ */ n(E, { "aria-hidden": !0 }),
14
+ neutral: /* @__PURE__ */ n(A, { "aria-hidden": !0 })
15
+ }, L = {
16
+ destructive: "danger",
17
+ warning: "warning",
18
+ neutral: "info"
19
+ }, T = {
20
+ destructive: r.DANGER,
21
+ warning: r.PRIMARY,
22
+ neutral: r.PRIMARY
23
+ }, y = ({
24
+ isOpen: c,
25
+ onClose: o,
26
+ onConfirm: m,
27
+ title: d,
28
+ description: u,
29
+ confirmLabel: f,
30
+ cancelLabel: g,
31
+ closeLabel: I,
32
+ variant: p,
33
+ kind: D,
34
+ children: R
35
+ }) => {
36
+ const { labels: i } = U(), [e, a] = M(!1), t = p ?? D ?? "neutral", h = async () => {
37
+ a(!0);
38
+ try {
39
+ await m();
40
+ } finally {
41
+ a(!1);
42
+ }
43
+ };
44
+ return /* @__PURE__ */ n(
45
+ z,
46
+ {
47
+ isOpen: c,
48
+ onClose: o,
49
+ title: d,
50
+ closeLabel: I ?? (i == null ? void 0 : i.close),
51
+ description: u,
52
+ icon: F[t],
53
+ tone: L[t],
54
+ size: "sm",
55
+ isDismissable: !e,
56
+ footer: /* @__PURE__ */ N(v, { children: [
57
+ /* @__PURE__ */ n(
58
+ l,
59
+ {
60
+ variant: r.SECONDARY,
61
+ size: s.MEDIUM,
62
+ onClick: o,
63
+ disabled: e,
64
+ children: x("ConfirmDialog.cancelLabel", g, i == null ? void 0 : i.cancel)
65
+ }
66
+ ),
67
+ /* @__PURE__ */ n(
68
+ l,
69
+ {
70
+ variant: T[t],
71
+ size: s.MEDIUM,
72
+ onClick: h,
73
+ isLoading: e,
74
+ children: f
75
+ }
76
+ )
77
+ ] }),
78
+ children: R
79
+ }
80
+ );
81
+ }, P = /* @__PURE__ */ C(y);
82
+ export {
83
+ P as default
84
+ };
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/ConfirmDialog/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode, useState } from 'react';\n\nimport { ExclamationTriangleFill, QuestionCircleFill, TrashFill } from 'react-bootstrap-icons';\n\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport UISize from '../../enums/ui-size.enum';\nimport UIVariant from '../../enums/ui-variant.enum';\nimport Button from '../Button';\nimport Modal, { type ModalTone } from '../Modal';\n\nexport type ConfirmKind = 'destructive' | 'warning' | 'neutral';\n\n/** Üçü de DOLU sürüm: madalyonun tint zemininde kontur kaybolur. */\nconst KIND_ICON: Record<ConfirmKind, ReactNode> = {\n destructive: <TrashFill aria-hidden />,\n warning: <ExclamationTriangleFill aria-hidden />,\n neutral: <QuestionCircleFill aria-hidden />,\n};\n\nconst KIND_TONE: Record<ConfirmKind, ModalTone> = {\n destructive: 'danger',\n warning: 'warning',\n neutral: 'info',\n};\n\nconst KIND_VARIANT: Record<ConfirmKind, UIVariant> = {\n destructive: UIVariant.DANGER,\n warning: UIVariant.PRIMARY,\n neutral: UIVariant.PRIMARY,\n};\n\ntype Props = {\n isOpen: boolean;\n onClose: () => void;\n /**\n * Onaylandığında çalışır. `Promise` dönerse düğme beklerken yükleme durumuna geçer ve pencere\n * kapanmaz.\n */\n onConfirm: () => void | Promise<void>;\n /** Soru cümlesi. */\n title: string;\n /** Sonucu açıklar: neyin geri alınamaz olduğu burada yazılır. */\n description?: ReactNode;\n /** Onay düğmesinin etiketi — ZORUNLU, config'ten okunmaz. */\n confirmLabel: string;\n /** Verilmezse `labels.cancel`. */\n cancelLabel?: string;\n /** Verilmezse `labels.close`. */\n closeLabel?: string;\n /** Onayın türü — ikon, ton ve onay düğmesinin varyantını birlikte belirler. */\n variant?: ConfirmKind;\n /** @deprecated `variant` kullanın. */\n kind?: ConfirmKind;\n /** Ek bağlam: silinecek kaydın özeti, uyarı kutusu. */\n children?: ReactNode;\n};\n\n/**\n * Onay penceresi.\n * @example const [target, setTarget] = useState<Address | null>(null);\n */\nconst ConfirmDialog: FC<Props> = ({\n isOpen,\n onClose,\n onConfirm,\n title,\n description,\n confirmLabel,\n cancelLabel,\n closeLabel,\n variant,\n kind,\n children,\n}) => {\n const { labels } = useUi();\n const [isRunning, setIsRunning] = useState(false);\n\n /* Eski prop bir surum boyunca calisir; `variant` verilmisse o kazanir. */\n const resolvedVariant: ConfirmKind = variant ?? kind ?? 'neutral';\n\n const handleConfirm = async () => {\n setIsRunning(true);\n try {\n await onConfirm();\n } finally {\n /* `finally`: istek hata verse de yukleme durumu birakilir. */\n setIsRunning(false);\n }\n };\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n title={title}\n closeLabel={closeLabel ?? labels?.close}\n description={description}\n icon={KIND_ICON[resolvedVariant]}\n tone={KIND_TONE[resolvedVariant]}\n size=\"sm\"\n // Islem surerken kapanmaz: kapanma, islem iptal edilmis gibi gorunuyordu.\n isDismissable={!isRunning}\n footer={\n <>\n {/*\n \"Vazgec\" JSX'te ONCE: klavyeyle sekme sirasi soldan saga mantikli\n olmali. Ekranda mobilde `column-reverse` ile alta duser.\n */}\n <Button\n variant={UIVariant.SECONDARY}\n size={UISize.MEDIUM}\n onClick={onClose}\n disabled={isRunning}\n >\n {resolveLabel('ConfirmDialog.cancelLabel', cancelLabel, labels?.cancel)}\n </Button>\n <Button\n variant={KIND_VARIANT[resolvedVariant]}\n size={UISize.MEDIUM}\n onClick={handleConfirm}\n isLoading={isRunning}\n >\n {confirmLabel}\n </Button>\n </>\n }\n >\n {children}\n </Modal>\n );\n};\n\nexport default /*#__PURE__*/ memo(ConfirmDialog) as typeof ConfirmDialog;\n"],"names":["KIND_ICON","jsx","TrashFill","ExclamationTriangleFill","QuestionCircleFill","KIND_TONE","KIND_VARIANT","UIVariant","ConfirmDialog","isOpen","onClose","onConfirm","title","description","confirmLabel","cancelLabel","closeLabel","variant","kind","children","labels","useUi","isRunning","setIsRunning","useState","resolvedVariant","handleConfirm","Modal","jsxs","Fragment","Button","UISize","resolveLabel","index"],"mappings":";;;;;;;;;;AAeA,MAAMA,IAA4C;AAAA,EAChD,aAAa,gBAAAC,EAACC,GAAA,EAAU,eAAW,GAAA,CAAC;AAAA,EACpC,SAAS,gBAAAD,EAACE,GAAA,EAAwB,eAAW,GAAA,CAAC;AAAA,EAC9C,SAAS,gBAAAF,EAACG,GAAA,EAAmB,eAAW,GAAA,CAAC;AAC3C,GAEMC,IAA4C;AAAA,EAChD,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AACX,GAEMC,IAA+C;AAAA,EACnD,aAAaC,EAAU;AAAA,EACvB,SAASA,EAAU;AAAA,EACnB,SAASA,EAAU;AACrB,GAgCMC,IAA2B,CAAC;AAAA,EAChC,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACb,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAG1CC,IAA+BR,KAAWC,KAAQ,WAElDQ,IAAgB,YAAY;AAChC,IAAAH,EAAa,EAAI;AACjB,QAAI;AACF,YAAMZ,EAAA;AAAA,IACR,UAAA;AAEE,MAAAY,EAAa,EAAK;AAAA,IACpB;AAAA,EACF;AAEA,SACE,gBAAAtB;AAAA,IAAC0B;AAAA,IAAA;AAAA,MACC,QAAAlB;AAAA,MACA,SAAAC;AAAA,MACA,OAAAE;AAAA,MACA,YAAYI,MAAcI,KAAA,gBAAAA,EAAQ;AAAA,MAClC,aAAAP;AAAA,MACA,MAAMb,EAAUyB,CAAe;AAAA,MAC/B,MAAMpB,EAAUoB,CAAe;AAAA,MAC/B,MAAK;AAAA,MAEL,eAAe,CAACH;AAAA,MAChB,QACE,gBAAAM,EAAAC,GAAA,EAKE,UAAA;AAAA,QAAA,gBAAA5B;AAAA,UAAC6B;AAAA,UAAA;AAAA,YACC,SAASvB,EAAU;AAAA,YACnB,MAAMwB,EAAO;AAAA,YACb,SAASrB;AAAA,YACT,UAAUY;AAAA,YAET,UAAAU,EAAa,6BAA6BjB,GAAaK,KAAA,gBAAAA,EAAQ,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,QAExE,gBAAAnB;AAAA,UAAC6B;AAAA,UAAA;AAAA,YACC,SAASxB,EAAamB,CAAe;AAAA,YACrC,MAAMM,EAAO;AAAA,YACb,SAASL;AAAA,YACT,WAAWJ;AAAA,YAEV,UAAAR;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,GACF;AAAA,MAGD,UAAAK;AAAA,IAAA;AAAA,EAAA;AAGP,GAEAc,sBAAkCzB,CAAa;"}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),f=require("react"),a=require("react-bootstrap-icons"),l=require("../../helpers/class-name.helper.cjs"),i=require("../../helpers/label.helper.cjs"),h=require("../../hooks/useCopyFeedback.cjs"),j=require("../../theme/context.cjs"),t={default:{"copy":"ui-copy-Yht5s","copy--sm":"ui-copy--sm-Tjqws","copy__code":"ui-copy__code-CYlCA","copy--md":"ui-copy--md-00rhU","copy__button":"ui-copy__button-GDdH6","copy__button--done":"ui-copy__button--done-MujUR","copy__srOnly":"ui-copy__srOnly-WMTNN"}},q=({value:c,copyLabel:p,copiedLabel:u,copiedAnnouncement:y,size:m="sm",isReadOnly:F,className:_,testId:x})=>{var n,s,d;const{labels:e}=j.useUi(),{isCopied:r,copy:C,nodeRef:b}=h.useCopyFeedback(c);return o.jsxs("span",{className:l.cx(t.default.copy,t.default[`copy--${m}`],_),"data-testid":x,children:[o.jsx("span",{className:t.default.copy__code,ref:b,children:c}),!F&&o.jsx("button",{type:"button",className:l.cx(t.default.copy__button,r&&t.default["copy__button--done"]),onClick:C,"aria-label":r?u??i.resolveFormatter("CopyField.copiedLabel",(n=e==null?void 0:e.copyField)==null?void 0:n.copied,c):p??i.resolveFormatter("CopyField.copyLabel",(s=e==null?void 0:e.copyField)==null?void 0:s.copy,c),children:r?o.jsx(a.ClipboardCheckFill,{"aria-hidden":!0}):o.jsx(a.ClipboardFill,{"aria-hidden":!0})}),o.jsx("span",{"aria-live":"polite",className:t.default.copy__srOnly,children:r?i.resolveLabel("CopyField.copiedAnnouncement",y,(d=e==null?void 0:e.copyField)==null?void 0:d.announcement):""})]})},N=f.memo(q);exports.default=N;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/CopyField/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { ClipboardCheckFill, ClipboardFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter, resolveLabel } from '../../helpers/label.helper';\nimport { useCopyFeedback } from '../../hooks/useCopyFeedback';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /** Gösterilecek ve panoya kopyalanacak değer. */\n value: string;\n /** Kopyalama düğmesinin erişilebilir adı. */\n copyLabel?: string;\n /** Kopyalandıktan sonraki ad. */\n copiedLabel?: string;\n /** `aria-live` ile duyurulan onay cümlesi. */\n copiedAnnouncement?: string;\n size?: 'sm' | 'md';\n /** Kopyalama düğmesini gizler. */\n isReadOnly?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Kopyalanabilir teknik değer — tek dokunuşla panoya. */\nconst CopyField: FC<Props> = ({\n value,\n copyLabel,\n copiedLabel,\n copiedAnnouncement,\n size = 'sm',\n isReadOnly,\n className,\n testId,\n}) => {\n const { labels } = useUi();\n const { isCopied, copy, nodeRef } = useCopyFeedback(value);\n\n return (\n <span className={cx(styles.copy, styles[`copy--${size}`], className)} data-testid={testId}>\n {/*\n `user-select: all` (CSS): tek tiklama degerin TAMAMINI secer.\n Kullanicilar fareyle surukleyip yarim deger kopyaliyordu.\n */}\n <span className={styles.copy__code} ref={nodeRef}>\n {value}\n </span>\n\n {!isReadOnly && (\n <button\n type=\"button\"\n className={cx(styles.copy__button, isCopied && styles['copy__button--done'])}\n onClick={copy}\n aria-label={\n isCopied\n ? (copiedLabel ??\n resolveFormatter('CopyField.copiedLabel', labels?.copyField?.copied, value))\n : (copyLabel ??\n resolveFormatter('CopyField.copyLabel', labels?.copyField?.copy, value))\n }\n >\n {/*\n Kopyalandi ISARETLI PANO, yalin tik degil: yalin tik \"dogru\n deger\" diye de okunabiliyordu. Ayni gövde + tik, degisimin\n kopyalama eylemine ait oldugunu birakiyor.\n */}\n {isCopied ? <ClipboardCheckFill aria-hidden /> : <ClipboardFill aria-hidden />}\n </button>\n )}\n\n {/*\n Ekran okuyucu icin: ikon degisimi gorsel bir sinyal, duyulmuyor.\n `aria-live` yalnizca DEGISTIGINDE konusur.\n */}\n <span aria-live=\"polite\" className={styles.copy__srOnly}>\n {isCopied\n ? resolveLabel(\n 'CopyField.copiedAnnouncement',\n copiedAnnouncement,\n labels?.copyField?.announcement,\n )\n : ''}\n </span>\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(CopyField) as typeof CopyField;\n"],"names":["CopyField","value","copyLabel","copiedLabel","copiedAnnouncement","size","isReadOnly","className","testId","labels","useUi","isCopied","copy","nodeRef","useCopyFeedback","jsxs","cx","styles","jsx","resolveFormatter","_a","_b","ClipboardCheckFill","ClipboardFill","resolveLabel","_c","index"],"mappings":"waA6BMA,EAAuB,CAAC,CAC5B,MAAAC,EACA,UAAAC,EACA,YAAAC,EACA,mBAAAC,EACA,KAAAC,EAAO,KACP,WAAAC,EACA,UAAAC,EACA,OAAAC,CACF,IAAM,WACJ,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EACb,CAAE,SAAAC,EAAU,KAAAC,EAAM,QAAAC,CAAA,EAAYC,EAAAA,gBAAgBb,CAAK,EAEzD,OACEc,EAAAA,KAAC,OAAA,CAAK,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,KAAMA,EAAAA,QAAO,SAASZ,CAAI,EAAE,EAAGE,CAAS,EAAG,cAAaC,EAKjF,SAAA,CAAAU,MAAC,QAAK,UAAWD,EAAAA,QAAO,WAAY,IAAKJ,EACtC,SAAAZ,EACH,EAEC,CAACK,GACAY,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWF,EAAAA,GAAGC,UAAO,aAAcN,GAAYM,EAAAA,QAAO,oBAAoB,CAAC,EAC3E,QAASL,EACT,aACED,EACKR,GACDgB,EAAAA,iBAAiB,yBAAyBC,EAAAX,GAAA,YAAAA,EAAQ,YAAR,YAAAW,EAAmB,OAAQnB,CAAK,EACzEC,GACDiB,EAAAA,iBAAiB,uBAAuBE,EAAAZ,GAAA,YAAAA,EAAQ,YAAR,YAAAY,EAAmB,KAAMpB,CAAK,EAQ3E,SAAAU,QAAYW,EAAAA,mBAAA,CAAmB,cAAW,GAAC,EAAKJ,EAAAA,IAACK,EAAAA,cAAA,CAAc,cAAW,EAAA,CAAC,CAAA,CAAA,QAQ/E,OAAA,CAAK,YAAU,SAAS,UAAWN,EAAAA,QAAO,aACxC,SAAAN,EACGa,EAAAA,aACE,+BACApB,GACAqB,EAAAhB,GAAA,YAAAA,EAAQ,YAAR,YAAAgB,EAAmB,YAAA,EAErB,EAAA,CACN,CAAA,EACF,CAEJ,EAEAC,SAAkC1B,CAAS"}
@@ -0,0 +1,20 @@
1
+ import { FC } from 'react';
2
+ type Props = {
3
+ /** Gösterilecek ve panoya kopyalanacak değer. */
4
+ value: string;
5
+ /** Kopyalama düğmesinin erişilebilir adı. */
6
+ copyLabel?: string;
7
+ /** Kopyalandıktan sonraki ad. */
8
+ copiedLabel?: string;
9
+ /** `aria-live` ile duyurulan onay cümlesi. */
10
+ copiedAnnouncement?: string;
11
+ size?: 'sm' | 'md';
12
+ /** Kopyalama düğmesini gizler. */
13
+ isReadOnly?: boolean;
14
+ className?: string;
15
+ testId?: string;
16
+ };
17
+ /** Kopyalanabilir teknik değer — tek dokunuşla panoya. */
18
+ declare const CopyField: FC<Props>;
19
+ declare const _default: typeof CopyField;
20
+ export default _default;
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { jsxs as h, jsx as i } from "react/jsx-runtime";
3
+ import { memo as b } from "react";
4
+ import { ClipboardCheckFill as x, ClipboardFill as N } from "react-bootstrap-icons";
5
+ import { cx as d } from "../../helpers/class-name.helper.js";
6
+ import { resolveFormatter as m, resolveLabel as k } from "../../helpers/label.helper.js";
7
+ import { useCopyFeedback as L } from "../../hooks/useCopyFeedback.js";
8
+ import { useUi as j } from "../../theme/context.js";
9
+ const e = {"copy":"ui-copy-Yht5s","copy--sm":"ui-copy--sm-Tjqws","copy__code":"ui-copy__code-CYlCA","copy--md":"ui-copy--md-00rhU","copy__button":"ui-copy__button-GDdH6","copy__button--done":"ui-copy__button--done-MujUR","copy__srOnly":"ui-copy__srOnly-WMTNN"};
10
+ const A = ({
11
+ value: p,
12
+ copyLabel: s,
13
+ copiedLabel: a,
14
+ copiedAnnouncement: l,
15
+ size: y = "sm",
16
+ isReadOnly: f,
17
+ className: F,
18
+ testId: u
19
+ }) => {
20
+ var t, c, n;
21
+ const { labels: o } = j(), { isCopied: r, copy: C, nodeRef: _ } = L(p);
22
+ return /* @__PURE__ */ h("span", { className: d(e.copy, e[`copy--${y}`], F), "data-testid": u, children: [
23
+ /* @__PURE__ */ i("span", { className: e.copy__code, ref: _, children: p }),
24
+ !f && /* @__PURE__ */ i(
25
+ "button",
26
+ {
27
+ type: "button",
28
+ className: d(e.copy__button, r && e["copy__button--done"]),
29
+ onClick: C,
30
+ "aria-label": r ? a ?? m("CopyField.copiedLabel", (t = o == null ? void 0 : o.copyField) == null ? void 0 : t.copied, p) : s ?? m("CopyField.copyLabel", (c = o == null ? void 0 : o.copyField) == null ? void 0 : c.copy, p),
31
+ children: r ? /* @__PURE__ */ i(x, { "aria-hidden": !0 }) : /* @__PURE__ */ i(N, { "aria-hidden": !0 })
32
+ }
33
+ ),
34
+ /* @__PURE__ */ i("span", { "aria-live": "polite", className: e.copy__srOnly, children: r ? k(
35
+ "CopyField.copiedAnnouncement",
36
+ l,
37
+ (n = o == null ? void 0 : o.copyField) == null ? void 0 : n.announcement
38
+ ) : "" })
39
+ ] });
40
+ }, z = /* @__PURE__ */ b(A);
41
+ export {
42
+ z as default
43
+ };
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/CopyField/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { ClipboardCheckFill, ClipboardFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter, resolveLabel } from '../../helpers/label.helper';\nimport { useCopyFeedback } from '../../hooks/useCopyFeedback';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /** Gösterilecek ve panoya kopyalanacak değer. */\n value: string;\n /** Kopyalama düğmesinin erişilebilir adı. */\n copyLabel?: string;\n /** Kopyalandıktan sonraki ad. */\n copiedLabel?: string;\n /** `aria-live` ile duyurulan onay cümlesi. */\n copiedAnnouncement?: string;\n size?: 'sm' | 'md';\n /** Kopyalama düğmesini gizler. */\n isReadOnly?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Kopyalanabilir teknik değer — tek dokunuşla panoya. */\nconst CopyField: FC<Props> = ({\n value,\n copyLabel,\n copiedLabel,\n copiedAnnouncement,\n size = 'sm',\n isReadOnly,\n className,\n testId,\n}) => {\n const { labels } = useUi();\n const { isCopied, copy, nodeRef } = useCopyFeedback(value);\n\n return (\n <span className={cx(styles.copy, styles[`copy--${size}`], className)} data-testid={testId}>\n {/*\n `user-select: all` (CSS): tek tiklama degerin TAMAMINI secer.\n Kullanicilar fareyle surukleyip yarim deger kopyaliyordu.\n */}\n <span className={styles.copy__code} ref={nodeRef}>\n {value}\n </span>\n\n {!isReadOnly && (\n <button\n type=\"button\"\n className={cx(styles.copy__button, isCopied && styles['copy__button--done'])}\n onClick={copy}\n aria-label={\n isCopied\n ? (copiedLabel ??\n resolveFormatter('CopyField.copiedLabel', labels?.copyField?.copied, value))\n : (copyLabel ??\n resolveFormatter('CopyField.copyLabel', labels?.copyField?.copy, value))\n }\n >\n {/*\n Kopyalandi ISARETLI PANO, yalin tik degil: yalin tik \"dogru\n deger\" diye de okunabiliyordu. Ayni gövde + tik, degisimin\n kopyalama eylemine ait oldugunu birakiyor.\n */}\n {isCopied ? <ClipboardCheckFill aria-hidden /> : <ClipboardFill aria-hidden />}\n </button>\n )}\n\n {/*\n Ekran okuyucu icin: ikon degisimi gorsel bir sinyal, duyulmuyor.\n `aria-live` yalnizca DEGISTIGINDE konusur.\n */}\n <span aria-live=\"polite\" className={styles.copy__srOnly}>\n {isCopied\n ? resolveLabel(\n 'CopyField.copiedAnnouncement',\n copiedAnnouncement,\n labels?.copyField?.announcement,\n )\n : ''}\n </span>\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(CopyField) as typeof CopyField;\n"],"names":["CopyField","value","copyLabel","copiedLabel","copiedAnnouncement","size","isReadOnly","className","testId","labels","useUi","isCopied","copy","nodeRef","useCopyFeedback","jsxs","cx","styles","jsx","resolveFormatter","_a","_b","ClipboardCheckFill","ClipboardFill","resolveLabel","_c","index"],"mappings":";;;;;;;;;AA6BA,MAAMA,IAAuB,CAAC;AAAA,EAC5B,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAAM;;AACJ,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACb,EAAE,UAAAC,GAAU,MAAAC,GAAM,SAAAC,EAAA,IAAYC,EAAgBb,CAAK;AAEzD,SACE,gBAAAc,EAAC,QAAA,EAAK,WAAWC,EAAGC,EAAO,MAAMA,EAAO,SAASZ,CAAI,EAAE,GAAGE,CAAS,GAAG,eAAaC,GAKjF,UAAA;AAAA,IAAA,gBAAAU,EAAC,UAAK,WAAWD,EAAO,YAAY,KAAKJ,GACtC,UAAAZ,GACH;AAAA,IAEC,CAACK,KACA,gBAAAY;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAWF,EAAGC,EAAO,cAAcN,KAAYM,EAAO,oBAAoB,CAAC;AAAA,QAC3E,SAASL;AAAA,QACT,cACED,IACKR,KACDgB,EAAiB,0BAAyBC,IAAAX,KAAA,gBAAAA,EAAQ,cAAR,gBAAAW,EAAmB,QAAQnB,CAAK,IACzEC,KACDiB,EAAiB,wBAAuBE,IAAAZ,KAAA,gBAAAA,EAAQ,cAAR,gBAAAY,EAAmB,MAAMpB,CAAK;AAAA,QAQ3E,UAAAU,sBAAYW,GAAA,EAAmB,eAAW,IAAC,IAAK,gBAAAJ,EAACK,GAAA,EAAc,eAAW,GAAA,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,sBAQ/E,QAAA,EAAK,aAAU,UAAS,WAAWN,EAAO,cACxC,UAAAN,IACGa;AAAA,MACE;AAAA,MACApB;AAAA,OACAqB,IAAAhB,KAAA,gBAAAA,EAAQ,cAAR,gBAAAgB,EAAmB;AAAA,IAAA,IAErB,GAAA,CACN;AAAA,EAAA,GACF;AAEJ,GAEAC,sBAAkC1B,CAAS;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-copy-Yht5s{display:inline-flex;align-items:center;gap:var(--ui-space-1);max-width:100%;min-width:0}.ui-copy--sm-Tjqws .ui-copy__code-CYlCA{font-family:var(--ui-font-mono);font-size:var(--ui-font-size-xs);letter-spacing:.02em;font-variant-numeric:tabular-nums}.ui-copy--md-00rhU .ui-copy__code-CYlCA{font-family:var(--ui-font-mono);font-size:var(--ui-font-size-sm);letter-spacing:.02em;font-variant-numeric:tabular-nums}.ui-copy__code-CYlCA{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;-webkit-user-select:all;user-select:all;color:inherit}.ui-copy__button-GDdH6{position:relative}.ui-copy__button-GDdH6:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-copy__button-GDdH6{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;padding:0;border:none;border-radius:var(--ui-radius-xs);background:none;color:var(--ui-text-3);font-size:var(--ui-icon-sm);cursor:pointer;transition:color var(--ui-duration-fast) var(--ui-ease-out),background-color var(--ui-duration-fast) var(--ui-ease-out)}.ui-copy__button-GDdH6:hover{color:var(--ui-text);background-color:var(--ui-surface-2)}.ui-copy__button-GDdH6:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, -1px)}@media (prefers-reduced-motion: reduce){.ui-copy__button-GDdH6{transition:none}}.ui-copy__button--done-MujUR,.ui-copy__button--done-MujUR:hover{color:var(--ui-green-accent)}.ui-copy__srOnly-WMTNN{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),u=require("react"),q=require("react-bootstrap-icons"),r=require("../../helpers/class-name.helper.cjs"),D=require("../../helpers/component.helper.cjs"),f=require("../../helpers/label.helper.cjs"),S=require("../../theme/context.cjs"),s={default:{"wrapper":"ui-wrapper-KXCZg","wrapper--capped":"ui-wrapper--capped-M2QUJ","table":"ui-table-LF5Ow","state":"ui-state-YPPb0","state--error":"ui-state--error-A492d","state__message":"ui-state__message-wwbIW","row--warning":"ui-row--warning-BAUN2","srOnly":"ui-srOnly-Oia8c","sort":"ui-sort-3Q6Fx","sort__arrow":"ui-sort__arrow-MITWb","sort__arrow--ascending":"ui-sort__arrow--ascending-85T5d","sort__arrow--descending":"ui-sort__arrow--descending-gs3VU","sticky":"ui-sticky-KDEvQ","bulkBar":"ui-bulkBar-62qk0"}},v=({columns:l,label:c,children:i,isLoading:o,error:b,emptyMessage:g,loadingMessage:N,hasViewportCap:_,onSort:d,bulkBar:h,className:m,testId:w})=>{var p,j;const{labels:t}=S.useUi(),y=u.Children.count(i),x=(e,n)=>a.jsx("tr",{children:a.jsx("td",{colSpan:l.length,className:r.cx(s.default.state,n&&s.default[`state--${n}`]),children:e})});return a.jsxs("div",{className:r.cx(s.default.wrapper,_&&s.default["wrapper--capped"],m),"data-testid":w,children:[h&&a.jsx("div",{className:s.default.bulkBar,children:h}),a.jsxs("table",{className:s.default.table,"aria-label":c,children:[a.jsx("thead",{children:a.jsx("tr",{children:l.map(e=>{const n=!!(e.isSortable&&d),T=e.ariaSort==="ascending"?"descending":"ascending";return a.jsx("th",{scope:"col","aria-sort":e.ariaSort,className:r.cx(e.className,e.isSticky&&s.default.sticky),children:n?a.jsxs("button",{type:"button",className:s.default.sort,onClick:()=>d==null?void 0:d(e.key,T),children:[e.label,e.srLabel&&a.jsx("span",{className:s.default.srOnly,children:e.srLabel}),a.jsx("span",{"aria-hidden":!0,className:r.cx(s.default.sort__arrow,e.ariaSort&&s.default[`sort__arrow--${e.ariaSort}`]),children:e.ariaSort==="descending"?"▾":"▴"})]}):a.jsxs(a.Fragment,{children:[e.label,e.srLabel&&a.jsx("span",{className:s.default.srOnly,children:e.srLabel})]})},e.key)})})}),a.jsx("tbody",{children:b?x(a.jsxs("span",{role:"alert",className:s.default.state__message,children:[a.jsx(q.ExclamationCircleFill,{"aria-hidden":!0}),b]}),"error"):o?x(f.resolveLabel("DataTable.loadingMessage",N,(p=t==null?void 0:t.dataTable)==null?void 0:p.loading)):y===0?x(f.resolveLabel("DataTable.emptyMessage",g,(j=t==null?void 0:t.dataTable)==null?void 0:j.empty)):i})]})]})},L=D.named(u.memo(({isWarning:l,className:c,children:i,...o})=>a.jsx("tr",{className:r.cx(l&&s.default["row--warning"],c),...o,children:i})),"DataTableRow"),k=u.memo(v);exports.DataTableRow=L;exports.default=k;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/DataTable/index.tsx"],"sourcesContent":["'use client';\n\nimport { Children, type FC, type HTMLAttributes, memo, type ReactNode } from 'react';\n\nimport { ExclamationCircleFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\nexport type DataTableColumn = {\n /** Sütun kimliği (React key). */\n key: string;\n /** Başlık hücresinin içeriği. */\n label?: ReactNode;\n /** Görsel başlığı olmayan sütunun erişilebilir adı (eylem sütunu gibi). */\n srLabel?: string;\n /** Sıralanabilir sütunun yönü (`aria-sort`). */\n ariaSort?: 'ascending' | 'descending';\n /**\n * Sütun sıralanabilir. `DataTable.onSort` ile birlikte anlamlı; ikisinden biri eksikse başlık düz\n * metin kalır\n */\n isSortable?: boolean;\n /** Sütun yatay kaydırmada YERİNDE kalır. */\n isSticky?: boolean;\n className?: string;\n};\n\ntype Props = {\n columns: DataTableColumn[];\n /**\n * Tablonun erişilebilir adı (\"Bekleyen siparişler\").\n * ⚠ ADSIZ TABLO EKRAN OKUYUCUDA YALNIZCA \"tablo\" DİYE OKUNUR.\n */\n label?: string;\n /**\n * Gövde satırları (` `). Ekranların özel hücreleri, bağlantıları ve satır tintleri burada yaşar;\n * tablo yalnızca kabuğu ve durum satırlarını üstlenir.\n */\n children?: ReactNode;\n /** Satır yokken gösterilen metin. */\n emptyMessage?: string;\n /** Yükleme sürerken gösterilen metin. */\n loadingMessage?: string;\n isLoading?: boolean;\n /**\n * Liste ÇEKİLEMEDİ. \"Yüklenemedi\" ile \"boş\" ayrı durumlardır: hata verilmişken boş mesajı asla\n * çizilmez\n */\n error?: string | null;\n /** Gövde `100dvh - <bant>` ile sınırlanır ve başlık satırı kendi kaydırma alanına yapışır. */\n hasViewportCap?: boolean;\n /** Sıralanabilir bir başlığa basıldığında çağrılır. */\n onSort?: (key: string, direction: 'ascending' | 'descending') => void;\n /** Satır seçildiğinde beliren TOPLU EYLEM şeridi. */\n bulkBar?: ReactNode;\n className?: string;\n testId?: string;\n};\n\n/** Operasyon veri tablosu — durum satırlı tablo sözleşmesi. */\nconst DataTable: FC<Props> = ({\n columns,\n label,\n children,\n isLoading,\n error,\n emptyMessage,\n loadingMessage,\n hasViewportCap,\n onSort,\n bulkBar,\n className,\n testId,\n}) => {\n /* Bosluk karari satir SAYISINDAN verilir; cagiranin ayrica `isEmpty` gecmesi gerekmez. */\n const { labels } = useUi();\n const rowCount = Children.count(children);\n\n const renderStateRow = (content: ReactNode, modifier?: 'error') => (\n <tr>\n <td\n colSpan={columns.length}\n className={cx(styles.state, modifier && styles[`state--${modifier}`])}\n >\n {content}\n </td>\n </tr>\n );\n\n return (\n <div\n className={cx(styles.wrapper, hasViewportCap && styles['wrapper--capped'], className)}\n data-testid={testId}\n >\n {bulkBar && <div className={styles.bulkBar}>{bulkBar}</div>}\n\n <table className={styles.table} aria-label={label}>\n <thead>\n <tr>\n {columns.map(column => {\n const isSortable = Boolean(column.isSortable && onSort);\n /* Ilk tikta ARTAN; ikinci tik yonu cevirir. */\n const nextDirection = column.ariaSort === 'ascending' ? 'descending' : 'ascending';\n\n return (\n <th\n key={column.key}\n scope=\"col\"\n aria-sort={column.ariaSort}\n className={cx(column.className, column.isSticky && styles.sticky)}\n >\n {isSortable ? (\n /* Siralama bir DUGME, ` `ye yazilan `onClick` degil. */\n <button\n type=\"button\"\n className={styles.sort}\n onClick={() => onSort?.(column.key, nextDirection)}\n >\n {column.label}\n {column.srLabel && <span className={styles.srOnly}>{column.srLabel}</span>}\n\n {/*\n Yon oku: `aria-hidden` cunku ayni bilgi `aria-sort`ta.\n Siralanabilir ama siralanmamis sutunda SOLUK bir cift\n ok duruyor — sutunun siralanabildigi ancak uzerine\n gelince anlasiliyordu.\n */}\n <span\n aria-hidden\n className={cx(\n styles.sort__arrow,\n column.ariaSort && styles[`sort__arrow--${column.ariaSort}`],\n )}\n >\n {column.ariaSort === 'descending' ? '▾' : '▴'}\n </span>\n </button>\n ) : (\n <>\n {column.label}\n {column.srLabel && <span className={styles.srOnly}>{column.srLabel}</span>}\n </>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {error\n ? renderStateRow(\n <span role=\"alert\" className={styles.state__message}>\n <ExclamationCircleFill aria-hidden />\n {error}\n </span>,\n 'error',\n )\n : isLoading\n ? renderStateRow(\n resolveLabel(\n 'DataTable.loadingMessage',\n loadingMessage,\n labels?.dataTable?.loading,\n ),\n )\n : rowCount === 0\n ? renderStateRow(\n resolveLabel('DataTable.emptyMessage', emptyMessage, labels?.dataTable?.empty),\n )\n : children}\n </tbody>\n </table>\n </div>\n );\n};\n\ntype RowProps = HTMLAttributes<HTMLTableRowElement> & {\n children: ReactNode;\n /** Satır dikkat bekleyen iş taşıyor (kritik stok, karar bekleyen talep). */\n isWarning?: boolean;\n};\n\nexport const DataTableRow: FC<RowProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ isWarning, className, children, ...rest }) => (\n <tr className={cx(isWarning && styles['row--warning'], className)} {...rest}>\n {children}\n </tr>\n )),\n 'DataTableRow',\n);\n\nexport default /*#__PURE__*/ memo(DataTable) as typeof DataTable;\n"],"names":["DataTable","columns","label","children","isLoading","error","emptyMessage","loadingMessage","hasViewportCap","onSort","bulkBar","className","testId","labels","useUi","rowCount","Children","renderStateRow","content","modifier","jsx","cx","styles","jsxs","column","isSortable","nextDirection","Fragment","ExclamationCircleFill","resolveLabel","_a","_b","DataTableRow","named","memo","isWarning","rest","index"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { FC, HTMLAttributes, ReactNode } from 'react';
2
+ export type DataTableColumn = {
3
+ /** Sütun kimliği (React key). */
4
+ key: string;
5
+ /** Başlık hücresinin içeriği. */
6
+ label?: ReactNode;
7
+ /** Görsel başlığı olmayan sütunun erişilebilir adı (eylem sütunu gibi). */
8
+ srLabel?: string;
9
+ /** Sıralanabilir sütunun yönü (`aria-sort`). */
10
+ ariaSort?: 'ascending' | 'descending';
11
+ /**
12
+ * Sütun sıralanabilir. `DataTable.onSort` ile birlikte anlamlı; ikisinden biri eksikse başlık düz
13
+ * metin kalır
14
+ */
15
+ isSortable?: boolean;
16
+ /** Sütun yatay kaydırmada YERİNDE kalır. */
17
+ isSticky?: boolean;
18
+ className?: string;
19
+ };
20
+ type Props = {
21
+ columns: DataTableColumn[];
22
+ /**
23
+ * Tablonun erişilebilir adı ("Bekleyen siparişler").
24
+ * ⚠ ADSIZ TABLO EKRAN OKUYUCUDA YALNIZCA "tablo" DİYE OKUNUR.
25
+ */
26
+ label?: string;
27
+ /**
28
+ * Gövde satırları (` `). Ekranların özel hücreleri, bağlantıları ve satır tintleri burada yaşar;
29
+ * tablo yalnızca kabuğu ve durum satırlarını üstlenir.
30
+ */
31
+ children?: ReactNode;
32
+ /** Satır yokken gösterilen metin. */
33
+ emptyMessage?: string;
34
+ /** Yükleme sürerken gösterilen metin. */
35
+ loadingMessage?: string;
36
+ isLoading?: boolean;
37
+ /**
38
+ * Liste ÇEKİLEMEDİ. "Yüklenemedi" ile "boş" ayrı durumlardır: hata verilmişken boş mesajı asla
39
+ * çizilmez
40
+ */
41
+ error?: string | null;
42
+ /** Gövde `100dvh - <bant>` ile sınırlanır ve başlık satırı kendi kaydırma alanına yapışır. */
43
+ hasViewportCap?: boolean;
44
+ /** Sıralanabilir bir başlığa basıldığında çağrılır. */
45
+ onSort?: (key: string, direction: 'ascending' | 'descending') => void;
46
+ /** Satır seçildiğinde beliren TOPLU EYLEM şeridi. */
47
+ bulkBar?: ReactNode;
48
+ className?: string;
49
+ testId?: string;
50
+ };
51
+ /** Operasyon veri tablosu — durum satırlı tablo sözleşmesi. */
52
+ declare const DataTable: FC<Props>;
53
+ type RowProps = HTMLAttributes<HTMLTableRowElement> & {
54
+ children: ReactNode;
55
+ /** Satır dikkat bekleyen iş taşıyor (kritik stok, karar bekleyen talep). */
56
+ isWarning?: boolean;
57
+ };
58
+ export declare const DataTableRow: FC<RowProps>;
59
+ declare const _default: typeof DataTable;
60
+ export default _default;