@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 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Avatar/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\nexport type AvatarShape = 'circle' | 'rounded';\n\n/**\n * `auto`: baş harf madalyonu addan SABİT bir kovaya boyanır. `brand`: marka madalyonu — çam zemin,\n * mint işaret, iki temada aynı (logo kuralı; asistanın avatarı, boş sohbetin karosu).\n */\nexport type AvatarTone = 'auto' | 'brand';\n\ntype Props = {\n /** Tam ad; baş harfler buradan üretilir ve her durumda okunan addır (`aria-label`). */\n name: string;\n /** Profil görseli. */\n imageUrl?: string;\n /** Baş harf yerine ikon (marka işareti, sistem kullanıcısı). Görselden önce gelmez. */\n icon?: ReactNode;\n shape?: AvatarShape;\n tone?: AvatarTone;\n /** Baş harfleri büyütürken kullanılacak dil etiketi (\"tr\", \"az\"). */\n locale?: string;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n testId?: string;\n};\n\n/** Baş harfleri üretir: \"Ahmet İlhan\" → \"Aİ\". */\nconst resolveInitials = (name: string, locale?: string): string => {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (words.length === 0) return '?';\n\n const letters =\n words.length === 1 ? words[0].slice(0, 2) : `${words[0][0]}${words[words.length - 1][0]}`;\n\n return locale ? letters.toLocaleUpperCase(locale) : letters.toLocaleUpperCase();\n};\n\n/** Adı SABİT bir renk kovasına eşler. */\nconst resolveTone = (name: string, total: number): number => {\n let hash = 5381;\n for (let index = 0; index < name.length; index += 1) hash = (hash * 33) ^ name.charCodeAt(index);\n\n return Math.abs(hash) % total;\n};\n\n/** Madalyon tonlarının sayısı — `_module.scss` içindeki kova sayısıyla AYNI. */\nconst TONE_COUNT = 6;\n\n/** Avatar — kullanıcı madalyonu. */\nconst Avatar: FC<Props> = ({\n name,\n imageUrl,\n icon,\n locale,\n size = 'md',\n shape = 'circle',\n tone = 'auto',\n className,\n testId,\n}) => {\n const { labels } = useUi();\n\n return (\n <span\n className={cx(\n styles.avatar,\n styles[`avatar--${size}`],\n shape === 'rounded' && styles['avatar--rounded'],\n tone === 'brand' && styles['avatar--brand'],\n /*\n * Karma ton yalnizca BAS HARF madalyonunda: gorselin uzerine renk basmak fotografi bozuyordu,\n * ikon ise bir kisi degil.\n */\n tone === 'auto' &&\n !imageUrl &&\n !icon &&\n styles[`avatar--tone-${resolveTone(name, TONE_COUNT)}`],\n className,\n )}\n /*\n * Ad `role=\"img\"` + `aria-label` ile taşınır: baş harfler (\"AY\") görsel bir kısaltma,\n * okunması gereken şey tam ad.\n * ⚠ `aria-hidden` KALDIRILDI. Kök üzerindeki `aria-hidden` yalnızca madalyonu değil KİŞİNİN\n * ADINI da erişilebilirlik ağacından çıkarıyordu\n */\n role=\"img\"\n aria-label={name}\n data-testid={testId}\n >\n {imageUrl ? (\n /* `alt=\"\"`: ad zaten kökte `aria-label` ile duyuruluyor, iki kez okunmasın. */\n <img className={styles.avatar__image} src={imageUrl} alt=\"\" />\n ) : icon ? (\n <span className={styles.avatar__icon} aria-hidden>\n {icon}\n </span>\n ) : (\n resolveInitials(name, locale ?? labels?.locale)\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Avatar, 'Avatar')) as typeof Avatar;\n"],"names":["resolveInitials","name","locale","words","letters","resolveTone","total","hash","index","TONE_COUNT","Avatar","imageUrl","icon","size","shape","tone","className","testId","labels","useUi","jsx","cx","styles","memo","named"],"mappings":";;;;;;;AAkCA,MAAMA,IAAkB,CAACC,GAAcC,MAA4B;AACjE,QAAMC,IAAQF,EAAK,KAAA,EAAO,MAAM,KAAK,EAAE,OAAO,OAAO;AACrD,MAAIE,EAAM,WAAW,EAAG,QAAO;AAE/B,QAAMC,IACJD,EAAM,WAAW,IAAIA,EAAM,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,GAAGA,EAAM,CAAC,EAAE,CAAC,CAAC,GAAGA,EAAMA,EAAM,SAAS,CAAC,EAAE,CAAC,CAAC;AAEzF,SAAOD,IAASE,EAAQ,kBAAkBF,CAAM,IAAIE,EAAQ,kBAAA;AAC9D,GAGMC,IAAc,CAACJ,GAAcK,MAA0B;AAC3D,MAAIC,IAAO;AACX,WAASC,IAAQ,GAAGA,IAAQP,EAAK,QAAQO,KAAS,EAAG,CAAAD,IAAQA,IAAO,KAAMN,EAAK,WAAWO,CAAK;AAE/F,SAAO,KAAK,IAAID,CAAI,IAAID;AAC1B,GAGMG,IAAa,GAGbC,IAAoB,CAAC;AAAA,EACzB,MAAAT;AAAA,EACA,UAAAU;AAAA,EACA,MAAAC;AAAA,EACA,QAAAV;AAAA,EACA,MAAAW,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,QAAAC;AACF,MAAM;AACJ,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA;AAEnB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTC,EAAO;AAAA,QACPA,EAAO,WAAWT,CAAI,EAAE;AAAA,QACxBC,MAAU,aAAaQ,EAAO,iBAAiB;AAAA,QAC/CP,MAAS,WAAWO,EAAO,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,QAK1CP,MAAS,UACP,CAACJ,KACD,CAACC,KACDU,EAAO,gBAAgBjB,EAAYJ,GAAMQ,CAAU,CAAC,EAAE;AAAA,QACxDO;AAAA,MAAA;AAAA,MAQF,MAAK;AAAA,MACL,cAAYf;AAAA,MACZ,eAAagB;AAAA,MAEZ,UAAAN;AAAA;AAAA,QAEC,gBAAAS,EAAC,SAAI,WAAWE,EAAO,eAAe,KAAKX,GAAU,KAAI,GAAA,CAAG;AAAA,UAC1DC,IACF,gBAAAQ,EAAC,QAAA,EAAK,WAAWE,EAAO,cAAc,eAAW,IAC9C,UAAAV,EAAA,CACH,IAEAZ,EAAgBC,GAAMC,MAAUgB,KAAA,gBAAAA,EAAQ,OAAM;AAAA,IAAA;AAAA,EAAA;AAItD,GAEAV,IAA6B,gBAAAe,EAAmB,gBAAAC,EAAMd,GAAQ,QAAQ,CAAC;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-avatar-qoh3P{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface-3);color:var(--ui-text);font-family:var(--ui-font-heading);font-weight:600;letter-spacing:0;line-height:var(--ui-leading-none);-webkit-user-select:none;user-select:none;overflow:hidden}.ui-avatar__image-uAyAX{width:100%;height:100%;object-fit:cover}.ui-avatar__icon-CVOYs{display:inline-flex;font-size:var(--ui-icon-md)}.ui-avatar--sm-GGjU4 .ui-avatar__icon-CVOYs{font-size:var(--ui-icon-sm)}.ui-avatar--lg-ULP-r .ui-avatar__icon-CVOYs{font-size:var(--ui-icon-xl)}.ui-avatar--rounded-Sq2tv{border-radius:var(--ui-radius-md)}.ui-avatar--rounded-Sq2tv.ui-avatar--md-xhXnK{border-radius:var(--ui-radius-lg)}.ui-avatar--rounded-Sq2tv.ui-avatar--lg-ULP-r{border-radius:var(--ui-radius-xl)}.ui-avatar--brand-oJor6{background-color:var(--ui-band-bg);color:var(--ui-band-accent)}.ui-avatar--sm-GGjU4{width:32px;height:32px;font-size:var(--ui-font-size-xs)}.ui-avatar--md-xhXnK{width:44px;height:44px;font-size:var(--ui-font-size-base)}.ui-avatar--lg-ULP-r{width:56px;height:56px;font-size:var(--ui-font-size-lg)}.ui-avatar--tone-0-mvjdw{background-color:var(--ui-selected-tint);color:var(--ui-text)}.ui-avatar--tone-1-RYZOX{background-color:var(--ui-ok-bg);color:var(--ui-ok-fg)}.ui-avatar--tone-2-vP-CS{background-color:var(--ui-warn-bg);color:var(--ui-warn-fg)}.ui-avatar--tone-3-ivgnI{background-color:var(--ui-alt-bg);color:var(--ui-alt-fg)}.ui-avatar--tone-4-V57r3{background-color:var(--ui-off-bg);color:var(--ui-off-fg)}.ui-avatar--tone-5-65aPg{background-color:var(--ui-bad-bg);color:var(--ui-bad-fg)}}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),n=require("react"),c=require("../../helpers/class-name.helper.cjs"),e={default:{"badge":"ui-badge-uLAaI","badge__icon":"ui-badge__icon-R2goZ","badge--neutral":"ui-badge--neutral-6kddt","badge--soft":"ui-badge--soft-gFeRF","badge--solid":"ui-badge--solid-rtdHI","badge--outline":"ui-badge--outline-QiAAz","badge--success":"ui-badge--success-Oj11F","badge--danger":"ui-badge--danger-X3nV0","badge--warning":"ui-badge--warning-vAsx2","badge--info":"ui-badge--info-mHOwk","badge--oem":"ui-badge--oem-Nl-VX","badge--alt":"ui-badge--alt-gQkww","badge--sale":"ui-badge--sale-Li1tG","badge--action":"ui-badge--action-7pUio","badge--link":"ui-badge--link-zcNJZ"}},i=({children:s,tone:d="neutral",variant:l="soft",icon:a,className:r,testId:u})=>t.jsxs("span",{className:c.cx(e.default.badge,e.default[`badge--${d}`],e.default[`badge--${l}`],r),"data-testid":u,children:[a&&t.jsx("span",{className:e.default.badge__icon,children:a}),s]}),o=n.memo(i);exports.default=o;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Badge/index.tsx"],"sourcesContent":["import { type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\n\nimport styles from './index.module.scss';\n\nexport type BadgeTone =\n | 'neutral'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n /** Birincil sınıflandırma tinti (yeşil aile — örn. \"Orijinal\"). */\n | 'oem'\n /** İkincil sınıflandırma tinti (menekşe aile — örn. \"Muadil\"). */\n | 'alt'\n /** İndirim / olumlu değişim yüzdesi. Tutarın kendisi nötr kalır. */\n | 'sale'\n /** Miktar sayacı (sepet adedi, filtre sayısı) — dolu zemine izin verilir. */\n | 'action'\n /** Gezinme etiketi. */\n | 'link';\n\nexport type BadgeVariant = 'soft' | 'solid' | 'outline';\n\ntype Props = {\n children: ReactNode;\n tone?: BadgeTone;\n variant?: BadgeVariant;\n /** Küçük ikon; metnin solunda gösterilir. */\n icon?: ReactNode;\n className?: string;\n testId?: string;\n};\n\n/** Rozet — durum ve sınıflandırma etiketi. */\nconst Badge: FC<Props> = ({\n children,\n tone = 'neutral',\n variant = 'soft',\n icon,\n className,\n testId,\n}) => (\n <span\n className={cx(styles.badge, styles[`badge--${tone}`], styles[`badge--${variant}`], className)}\n data-testid={testId}\n >\n {icon && <span className={styles.badge__icon}>{icon}</span>}\n {children}\n </span>\n);\n\nexport default /*#__PURE__*/ memo(Badge) as typeof Badge;\n"],"names":["Badge","children","tone","variant","icon","className","testId","jsxs","cx","styles","jsx","index"],"mappings":"0PAoCMA,EAAmB,CAAC,CACxB,SAAAC,EACA,KAAAC,EAAO,UACP,QAAAC,EAAU,OACV,KAAAC,EACA,UAAAC,EACA,OAAAC,CACF,IACEC,EAAAA,KAAC,OAAA,CACC,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,MAAOA,EAAAA,QAAO,UAAUP,CAAI,EAAE,EAAGO,EAAAA,QAAO,UAAUN,CAAO,EAAE,EAAGE,CAAS,EAC5F,cAAaC,EAEZ,SAAA,CAAAF,GAAQM,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,YAAc,SAAAL,EAAK,EACnDH,CAAA,CAAA,CACH,EAGFU,SAAkCX,CAAK"}
@@ -0,0 +1,26 @@
1
+ import { FC, ReactNode } from 'react';
2
+ export type BadgeTone = 'neutral' | 'success' | 'danger' | 'warning' | 'info'
3
+ /** Birincil sınıflandırma tinti (yeşil aile — örn. "Orijinal"). */
4
+ | 'oem'
5
+ /** İkincil sınıflandırma tinti (menekşe aile — örn. "Muadil"). */
6
+ | 'alt'
7
+ /** İndirim / olumlu değişim yüzdesi. Tutarın kendisi nötr kalır. */
8
+ | 'sale'
9
+ /** Miktar sayacı (sepet adedi, filtre sayısı) — dolu zemine izin verilir. */
10
+ | 'action'
11
+ /** Gezinme etiketi. */
12
+ | 'link';
13
+ export type BadgeVariant = 'soft' | 'solid' | 'outline';
14
+ type Props = {
15
+ children: ReactNode;
16
+ tone?: BadgeTone;
17
+ variant?: BadgeVariant;
18
+ /** Küçük ikon; metnin solunda gösterilir. */
19
+ icon?: ReactNode;
20
+ className?: string;
21
+ testId?: string;
22
+ };
23
+ /** Rozet — durum ve sınıflandırma etiketi. */
24
+ declare const Badge: FC<Props>;
25
+ declare const _default: typeof Badge;
26
+ export default _default;
@@ -0,0 +1,26 @@
1
+ import { jsxs as d, jsx as i } from "react/jsx-runtime";
2
+ import { memo as n } from "react";
3
+ import { cx as c } from "../../helpers/class-name.helper.js";
4
+ const a = {"badge":"ui-badge-uLAaI","badge__icon":"ui-badge__icon-R2goZ","badge--neutral":"ui-badge--neutral-6kddt","badge--soft":"ui-badge--soft-gFeRF","badge--solid":"ui-badge--solid-rtdHI","badge--outline":"ui-badge--outline-QiAAz","badge--success":"ui-badge--success-Oj11F","badge--danger":"ui-badge--danger-X3nV0","badge--warning":"ui-badge--warning-vAsx2","badge--info":"ui-badge--info-mHOwk","badge--oem":"ui-badge--oem-Nl-VX","badge--alt":"ui-badge--alt-gQkww","badge--sale":"ui-badge--sale-Li1tG","badge--action":"ui-badge--action-7pUio","badge--link":"ui-badge--link-zcNJZ"};
5
+ const l = ({
6
+ children: s,
7
+ tone: t = "neutral",
8
+ variant: o = "soft",
9
+ icon: e,
10
+ className: m,
11
+ testId: r
12
+ }) => /* @__PURE__ */ d(
13
+ "span",
14
+ {
15
+ className: c(a.badge, a[`badge--${t}`], a[`badge--${o}`], m),
16
+ "data-testid": r,
17
+ children: [
18
+ e && /* @__PURE__ */ i("span", { className: a.badge__icon, children: e }),
19
+ s
20
+ ]
21
+ }
22
+ ), b = /* @__PURE__ */ n(l);
23
+ export {
24
+ b as default
25
+ };
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Badge/index.tsx"],"sourcesContent":["import { type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\n\nimport styles from './index.module.scss';\n\nexport type BadgeTone =\n | 'neutral'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n /** Birincil sınıflandırma tinti (yeşil aile — örn. \"Orijinal\"). */\n | 'oem'\n /** İkincil sınıflandırma tinti (menekşe aile — örn. \"Muadil\"). */\n | 'alt'\n /** İndirim / olumlu değişim yüzdesi. Tutarın kendisi nötr kalır. */\n | 'sale'\n /** Miktar sayacı (sepet adedi, filtre sayısı) — dolu zemine izin verilir. */\n | 'action'\n /** Gezinme etiketi. */\n | 'link';\n\nexport type BadgeVariant = 'soft' | 'solid' | 'outline';\n\ntype Props = {\n children: ReactNode;\n tone?: BadgeTone;\n variant?: BadgeVariant;\n /** Küçük ikon; metnin solunda gösterilir. */\n icon?: ReactNode;\n className?: string;\n testId?: string;\n};\n\n/** Rozet — durum ve sınıflandırma etiketi. */\nconst Badge: FC<Props> = ({\n children,\n tone = 'neutral',\n variant = 'soft',\n icon,\n className,\n testId,\n}) => (\n <span\n className={cx(styles.badge, styles[`badge--${tone}`], styles[`badge--${variant}`], className)}\n data-testid={testId}\n >\n {icon && <span className={styles.badge__icon}>{icon}</span>}\n {children}\n </span>\n);\n\nexport default /*#__PURE__*/ memo(Badge) as typeof Badge;\n"],"names":["Badge","children","tone","variant","icon","className","testId","jsxs","cx","styles","jsx","index"],"mappings":";;;;AAoCA,MAAMA,IAAmB,CAAC;AAAA,EACxB,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC,EAAGC,EAAO,OAAOA,EAAO,UAAUP,CAAI,EAAE,GAAGO,EAAO,UAAUN,CAAO,EAAE,GAAGE,CAAS;AAAA,IAC5F,eAAaC;AAAA,IAEZ,UAAA;AAAA,MAAAF,KAAQ,gBAAAM,EAAC,QAAA,EAAK,WAAWD,EAAO,aAAc,UAAAL,GAAK;AAAA,MACnDH;AAAA,IAAA;AAAA,EAAA;AACH,GAGFU,sBAAkCX,CAAK;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-badge-uLAaI{display:inline-flex;align-items:center;gap:var(--ui-space-1);font-family:var(--ui-badge-font, var(--ui-font-body));font-size:var(--ui-font-size-xs);font-weight:var(--ui-badge-weight, 600);letter-spacing:var(--ui-badge-tracking, normal);text-transform:var(--ui-badge-transform, none);line-height:var(--ui-leading-none);white-space:nowrap;padding:5px var(--ui-space-2);border-radius:var(--ui-badge-radius, var(--ui-radius-sm));border:1px solid transparent}.ui-badge__icon-R2goZ{display:flex;font-size:.95em}.ui-badge--neutral-6kddt.ui-badge--soft-gFeRF,.ui-badge--neutral-6kddt.ui-badge--solid-rtdHI{background-color:var(--ui-badge-bg, var(--ui-off-bg));border:1px solid var(--ui-badge-line, var(--ui-off-line));color:var(--ui-badge-fg, var(--ui-off-fg))}.ui-badge--neutral-6kddt.ui-badge--outline-QiAAz{border-color:var(--ui-badge-line, var(--ui-border-strong));color:var(--ui-badge-fg, var(--ui-text-2))}.ui-badge--success-Oj11F.ui-badge--soft-gFeRF,.ui-badge--success-Oj11F.ui-badge--solid-rtdHI{background-color:var(--ui-ok-bg);border:1px solid var(--ui-ok-line);color:var(--ui-ok-fg)}.ui-badge--success-Oj11F.ui-badge--outline-QiAAz{border-color:var(--ui-ok-line);color:var(--ui-ok-fg)}.ui-badge--danger-X3nV0.ui-badge--soft-gFeRF,.ui-badge--danger-X3nV0.ui-badge--solid-rtdHI{background-color:var(--ui-bad-bg);border:1px solid var(--ui-bad-line);color:var(--ui-bad-fg)}.ui-badge--danger-X3nV0.ui-badge--outline-QiAAz{border-color:var(--ui-bad-line);color:var(--ui-bad-fg)}.ui-badge--warning-vAsx2.ui-badge--soft-gFeRF,.ui-badge--warning-vAsx2.ui-badge--solid-rtdHI{background-color:var(--ui-warn-bg);border:1px solid var(--ui-warn-line);color:var(--ui-warn-fg)}.ui-badge--warning-vAsx2.ui-badge--outline-QiAAz{border-color:var(--ui-warn-line);color:var(--ui-warn-fg)}.ui-badge--info-mHOwk.ui-badge--soft-gFeRF,.ui-badge--info-mHOwk.ui-badge--solid-rtdHI{background-color:var(--ui-selected-tint);border:1px solid var(--ui-border-strong);color:var(--ui-text)}.ui-badge--info-mHOwk.ui-badge--outline-QiAAz{border-color:var(--ui-border-strong);color:var(--ui-text)}.ui-badge--oem-Nl-VX.ui-badge--soft-gFeRF,.ui-badge--oem-Nl-VX.ui-badge--solid-rtdHI{background-color:var(--ui-oem-bg);border:1px solid var(--ui-oem-line);color:var(--ui-oem-fg)}.ui-badge--oem-Nl-VX.ui-badge--outline-QiAAz{border-color:var(--ui-oem-line);color:var(--ui-oem-fg)}.ui-badge--alt-gQkww.ui-badge--soft-gFeRF,.ui-badge--alt-gQkww.ui-badge--solid-rtdHI{background-color:var(--ui-alt-bg);border:1px solid var(--ui-alt-line);color:var(--ui-alt-fg)}.ui-badge--alt-gQkww.ui-badge--outline-QiAAz{border-color:var(--ui-alt-line);color:var(--ui-alt-fg)}.ui-badge--sale-Li1tG.ui-badge--soft-gFeRF,.ui-badge--sale-Li1tG.ui-badge--solid-rtdHI{background-color:var(--ui-sale-bg);border-color:var(--ui-sale-bg);color:var(--ui-sale-fg)}.ui-badge--sale-Li1tG.ui-badge--outline-QiAAz{border-color:var(--ui-sale-fg);color:var(--ui-sale-fg)}.ui-badge--action-7pUio.ui-badge--soft-gFeRF{background-color:var(--ui-surface-2);color:var(--ui-text)}.ui-badge--action-7pUio.ui-badge--solid-rtdHI{background-color:var(--ui-action);border-color:var(--ui-action-line);color:var(--ui-on-action)}.ui-badge--action-7pUio.ui-badge--outline-QiAAz{border-color:var(--ui-border-strong);color:var(--ui-text)}.ui-badge--link-zcNJZ.ui-badge--soft-gFeRF{background-color:var(--ui-surface-2);border-color:var(--ui-border);color:var(--ui-link)}.ui-badge--link-zcNJZ.ui-badge--solid-rtdHI{background-color:var(--ui-selected);border-color:var(--ui-selected);color:var(--ui-on-selected)}.ui-badge--link-zcNJZ.ui-badge--outline-QiAAz{border-color:var(--ui-link);color:var(--ui-link)}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),s=require("react"),j=require("react-dom"),k=require("@handijit/utils"),v=require("../../constants/breakpoint.constants.cjs"),M=require("react-bootstrap-icons"),E=require("../../helpers/class-name.helper.cjs"),c=require("../../helpers/focus.helper.cjs"),B=require("../../helpers/label.helper.cjs"),L=require("../../theme/context.cjs"),N=require("../../hooks/useScrollLock.cjs"),S=require("../../hooks/useSheetViewport.cjs"),y=require("../IconButton/index.cjs"),r={default:{"sheet":"ui-sheet-GEvdE","sheet__header":"ui-sheet__header-NJgw-","sheet__title":"ui-sheet__title-f-b07","sheet__toolbar":"ui-sheet__toolbar-eyhmW","sheet__body":"ui-sheet__body-eJ2KB","sheet__footer":"ui-sheet__footer-NpsY5"}},I=({title:_,closeLabel:m,onClose:a,children:p,toolbar:i,footer:d,closeAbove:h=v.ABOVE_MOBILE_MEDIA_QUERY,className:q,testId:b})=>{const{labels:l}=L.useUi(),f=s.useId(),n=s.useRef(null);S.default(),N.default(),s.useEffect(()=>{const e=c.captureFocus(),{token:u,pop:o}=c.pushModal();return n.current=u,()=>{o(),n.current=null,e()}},[]),s.useEffect(()=>{const e=window.matchMedia(h),u=o=>{o.matches&&a()};return e.addEventListener("change",u),()=>e.removeEventListener("change",u)},[h,a]);const x=s.useCallback(e=>{!e||e.open||(e.showModal(),c.focusFirstMeaningful(e,`.${r.default.sheet__header} button`),c.preventAutoKeyboard(e))},[]),g=s.useCallback(e=>{e.target===e.currentTarget&&a()},[a]);return k.isClient()?j.createPortal(t.jsxs("dialog",{ref:x,className:E.cx(r.default.sheet,q),"aria-labelledby":f,"data-testid":b,onCancel:e=>{e.preventDefault(),!(n.current&&!c.isTopModal(n.current))&&a()},onClick:g,children:[t.jsxs("header",{className:r.default.sheet__header,children:[t.jsx("h2",{id:f,className:r.default.sheet__title,children:_}),t.jsx(y.default,{icon:t.jsx(M.XLg,{"aria-hidden":!0}),label:B.resolveLabel("BottomSheet.closeLabel",m,l==null?void 0:l.close),variant:"ghost",size:"sm",onClick:a})]}),i&&t.jsx("div",{className:r.default.sheet__toolbar,children:i}),t.jsx("div",{className:r.default.sheet__body,children:p}),d&&t.jsx("div",{className:r.default.sheet__footer,children:d})]}),document.body):null},R=s.memo(I);exports.default=R;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/BottomSheet/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n memo,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { isClient } from '@handijit/utils';\n\nimport { ABOVE_MOBILE_MEDIA_QUERY } from '../../constants/breakpoint.constants';\nimport { XLg } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport {\n captureFocus,\n focusFirstMeaningful,\n isTopModal,\n preventAutoKeyboard,\n pushModal,\n} from '../../helpers/focus.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport useScrollLock from '../../hooks/useScrollLock';\nimport useSheetViewport from '../../hooks/useSheetViewport';\nimport IconButton from '../IconButton';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n title: string;\n /** Kapatma düğmesinin erişilebilir adı. */\n closeLabel?: string;\n onClose: () => void;\n children: ReactNode;\n /**\n * Başlığın altında duran, gövde kaydırılırken yerinde kalan şerit — `Combobox`ın arama kutusu\n * gibi.\n */\n toolbar?: ReactNode;\n /** Dipte duran eylem şeridi. */\n footer?: ReactNode;\n /** Panelin kendiliğinden kapandığı medya sorgusu. */\n closeAbove?: string;\n className?: string;\n testId?: string;\n};\n\n/** Alt sayfa (bottom sheet) — ekranın dibinden yükselen kipsel panel. */\nconst BottomSheet = ({\n title,\n closeLabel,\n onClose,\n children,\n toolbar,\n footer,\n closeAbove = ABOVE_MOBILE_MEDIA_QUERY,\n className,\n testId,\n}: Props) => {\n const { labels } = useUi();\n const titleId = useId();\n /* Yigindaki yerimiz: */\n const tokenRef = useRef<symbol | null>(null);\n\n /* Panel GORUNEN alana yaslanir: klavye ve adres cubugu altinda kalmaz. */\n useSheetViewport();\n\n /*\n * Arka plan kaydirmasi kilitlenir: `showModal()` arka plani etkilesime kapatir ama kaydirmayi her\n * tarayicida engellemiyor\n */\n useScrollLock();\n\n /* ODAK GERI DONUSU ve KIPSEL YIGIN. */\n useEffect(() => {\n const restoreFocus = captureFocus();\n const { token, pop } = pushModal();\n tokenRef.current = token;\n\n return () => {\n pop();\n tokenRef.current = null;\n restoreFocus();\n };\n }, []);\n\n useEffect(() => {\n const query = window.matchMedia(closeAbove);\n\n /* ⚠ YALNIZCA EŞİĞİN ÜSTÜNE ÇIKARKEN kapanır. */\n const handleChange = (event: MediaQueryListEvent) => {\n if (event.matches) onClose();\n };\n\n query.addEventListener('change', handleChange);\n return () => query.removeEventListener('change', handleChange);\n }, [closeAbove, onClose]);\n\n const setDialogRef = useCallback((node: HTMLDialogElement | null) => {\n if (!node || node.open) return;\n\n node.showModal();\n\n /*\n * Odak KAPATMA DUGMESINE degil ilk anlamli ogeye: ekran okuyucu paneli \"Kapat, dugme\" diye\n * aciyordu\n */\n focusFirstMeaningful(node, `.${styles.sheet__header} button`);\n\n /*\n * `showModal()` odagi panelin ILK odaklanabilir ogesine tasiyor; o oge bir metin alani\n * oldugunda telefonda klavye kendiliginden aciliyordu (bkz.…\n */\n preventAutoKeyboard(node);\n }, []);\n\n const handleBackdropClick = useCallback(\n (event: MouseEvent<HTMLDialogElement>) => {\n // Hedef dialog'un KENDISI ise perdeye tiklanmistir; icerik degil.\n if (event.target === event.currentTarget) onClose();\n },\n [onClose],\n );\n\n /* Portal `document.body`ye baglaniyor; sunucuda `document` yok. */\n if (!isClient()) return null;\n\n return createPortal(\n <dialog\n ref={setDialogRef}\n className={cx(styles.sheet, className)}\n aria-labelledby={titleId}\n data-testid={testId}\n /*\n * Escape'i tarayici isler ama React durumu haberdar olmuyor: yakalanmazsa panel kapanip durum\n * acik kaliyor ve kutu bir daha acilmiyordu.\n */\n onCancel={event => {\n event.preventDefault();\n /*\n * Yalnizca EN USTTEKI panel kapanir: ust uste iki kipsel yuzeyde tek bir Escape ikisini\n * birden kapatiyordu.\n */\n if (tokenRef.current && !isTopModal(tokenRef.current)) return;\n onClose();\n }}\n onClick={handleBackdropClick}\n >\n <header className={styles.sheet__header}>\n <h2 id={titleId} className={styles.sheet__title}>\n {title}\n </h2>\n <IconButton\n icon={<XLg aria-hidden />}\n label={resolveLabel('BottomSheet.closeLabel', closeLabel, labels?.close)}\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClose}\n />\n </header>\n\n {toolbar && <div className={styles.sheet__toolbar}>{toolbar}</div>}\n\n <div className={styles.sheet__body}>{children}</div>\n\n {footer && <div className={styles.sheet__footer}>{footer}</div>}\n </dialog>,\n document.body,\n );\n};\n\nexport default /*#__PURE__*/ memo(BottomSheet);\n"],"names":["BottomSheet","title","closeLabel","onClose","children","toolbar","footer","closeAbove","ABOVE_MOBILE_MEDIA_QUERY","className","testId","labels","useUi","titleId","useId","tokenRef","useRef","useSheetViewport","useScrollLock","useEffect","restoreFocus","captureFocus","token","pop","pushModal","query","handleChange","event","setDialogRef","useCallback","node","focusFirstMeaningful","styles","preventAutoKeyboard","handleBackdropClick","isClient","createPortal","jsxs","cx","isTopModal","jsx","IconButton","XLg","resolveLabel"],"mappings":"+oBAqDMA,EAAc,CAAC,CACnB,MAAAC,EACA,WAAAC,EACA,QAAAC,EACA,SAAAC,EACA,QAAAC,EACA,OAAAC,EACA,WAAAC,EAAaC,EAAAA,yBACb,UAAAC,EACA,OAAAC,CACF,IAAa,CACX,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EACbC,EAAUC,EAAAA,MAAA,EAEVC,EAAWC,EAAAA,OAAsB,IAAI,EAG3CC,UAAA,EAMAC,UAAA,EAGAC,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAeC,EAAAA,aAAA,EACf,CAAE,MAAAC,EAAO,IAAAC,CAAA,EAAQC,YAAA,EACvB,OAAAT,EAAS,QAAUO,EAEZ,IAAM,CACXC,EAAA,EACAR,EAAS,QAAU,KACnBK,EAAA,CACF,CACF,EAAG,CAAA,CAAE,EAELD,EAAAA,UAAU,IAAM,CACd,MAAMM,EAAQ,OAAO,WAAWlB,CAAU,EAGpCmB,EAAgBC,GAA+B,CAC/CA,EAAM,SAASxB,EAAA,CACrB,EAEA,OAAAsB,EAAM,iBAAiB,SAAUC,CAAY,EACtC,IAAMD,EAAM,oBAAoB,SAAUC,CAAY,CAC/D,EAAG,CAACnB,EAAYJ,CAAO,CAAC,EAExB,MAAMyB,EAAeC,cAAaC,GAAmC,CAC/D,CAACA,GAAQA,EAAK,OAElBA,EAAK,UAAA,EAMLC,EAAAA,qBAAqBD,EAAM,IAAIE,EAAAA,QAAO,aAAa,SAAS,EAM5DC,EAAAA,oBAAoBH,CAAI,EAC1B,EAAG,CAAA,CAAE,EAECI,EAAsBL,EAAAA,YACzBF,GAAyC,CAEpCA,EAAM,SAAWA,EAAM,eAAexB,EAAA,CAC5C,EACA,CAACA,CAAO,CAAA,EAIV,OAAKgC,EAAAA,SAAA,EAEEC,EAAAA,aACLC,EAAAA,KAAC,SAAA,CACC,IAAKT,EACL,UAAWU,EAAAA,GAAGN,UAAO,MAAOvB,CAAS,EACrC,kBAAiBI,EACjB,cAAaH,EAKb,SAAUiB,GAAS,CACjBA,EAAM,eAAA,EAKF,EAAAZ,EAAS,SAAW,CAACwB,EAAAA,WAAWxB,EAAS,OAAO,IACpDZ,EAAA,CACF,EACA,QAAS+B,EAET,SAAA,CAAAG,EAAAA,KAAC,SAAA,CAAO,UAAWL,EAAAA,QAAO,cACxB,SAAA,CAAAQ,MAAC,MAAG,GAAI3B,EAAS,UAAWmB,EAAAA,QAAO,aAChC,SAAA/B,EACH,EACAuC,EAAAA,IAACC,EAAAA,QAAA,CACC,KAAMD,EAAAA,IAACE,EAAAA,IAAA,CAAI,cAAW,EAAA,CAAC,EACvB,MAAOC,EAAAA,aAAa,yBAA0BzC,EAAYS,GAAA,YAAAA,EAAQ,KAAK,EACvE,QAAQ,QACR,KAAK,KACL,QAASR,CAAA,CAAA,CACX,EACF,EAECE,GAAWmC,EAAAA,IAAC,MAAA,CAAI,UAAWR,EAAAA,QAAO,eAAiB,SAAA3B,EAAQ,EAE5DmC,EAAAA,IAAC,MAAA,CAAI,UAAWR,EAAAA,QAAO,YAAc,SAAA5B,EAAS,EAE7CE,GAAUkC,EAAAA,IAAC,MAAA,CAAI,UAAWR,EAAAA,QAAO,cAAgB,SAAA1B,CAAA,CAAO,CAAA,CAAA,CAAA,EAE3D,SAAS,IAAA,EA1Ca,IA4C1B,EAEAN,SAAkCA,CAAW"}
@@ -0,0 +1,21 @@
1
+ import { ReactNode } from 'react';
2
+ type Props = {
3
+ title: string;
4
+ /** Kapatma düğmesinin erişilebilir adı. */
5
+ closeLabel?: string;
6
+ onClose: () => void;
7
+ children: ReactNode;
8
+ /**
9
+ * Başlığın altında duran, gövde kaydırılırken yerinde kalan şerit — `Combobox`ın arama kutusu
10
+ * gibi.
11
+ */
12
+ toolbar?: ReactNode;
13
+ /** Dipte duran eylem şeridi. */
14
+ footer?: ReactNode;
15
+ /** Panelin kendiliğinden kapandığı medya sorgusu. */
16
+ closeAbove?: string;
17
+ className?: string;
18
+ testId?: string;
19
+ };
20
+ declare const _default: import('react').MemoExoticComponent<({ title, closeLabel, onClose, children, toolbar, footer, closeAbove, className, testId, }: Props) => import('react').ReactPortal | null>;
21
+ export default _default;
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import { jsxs as d, jsx as o } from "react/jsx-runtime";
3
+ import { memo as E, useId as L, useRef as M, useEffect as h, useCallback as f } from "react";
4
+ import { createPortal as y } from "react-dom";
5
+ import { isClient as N } from "@handijit/utils";
6
+ import { ABOVE_MOBILE_MEDIA_QUERY as I } from "../../constants/breakpoint.constants.js";
7
+ import { XLg as S } from "react-bootstrap-icons";
8
+ import { cx as w } from "../../helpers/class-name.helper.js";
9
+ import { focusFirstMeaningful as x, preventAutoKeyboard as R, isTopModal as D, pushModal as F, captureFocus as j } from "../../helpers/focus.helper.js";
10
+ import { resolveLabel as A } from "../../helpers/label.helper.js";
11
+ import { useUi as C } from "../../theme/context.js";
12
+ import O from "../../hooks/useScrollLock.js";
13
+ import T from "../../hooks/useSheetViewport.js";
14
+ import U from "../IconButton/index.js";
15
+ const t = {"sheet":"ui-sheet-GEvdE","sheet__header":"ui-sheet__header-NJgw-","sheet__title":"ui-sheet__title-f-b07","sheet__toolbar":"ui-sheet__toolbar-eyhmW","sheet__body":"ui-sheet__body-eJ2KB","sheet__footer":"ui-sheet__footer-NpsY5"};
16
+ const V = ({
17
+ title: p,
18
+ closeLabel: _,
19
+ onClose: r,
20
+ children: g,
21
+ toolbar: n,
22
+ footer: m,
23
+ closeAbove: l = I,
24
+ className: b,
25
+ testId: k
26
+ }) => {
27
+ const { labels: i } = C(), u = L(), s = M(null);
28
+ T(), O(), h(() => {
29
+ const e = j(), { token: a, pop: c } = F();
30
+ return s.current = a, () => {
31
+ c(), s.current = null, e();
32
+ };
33
+ }, []), h(() => {
34
+ const e = window.matchMedia(l), a = (c) => {
35
+ c.matches && r();
36
+ };
37
+ return e.addEventListener("change", a), () => e.removeEventListener("change", a);
38
+ }, [l, r]);
39
+ const v = f((e) => {
40
+ !e || e.open || (e.showModal(), x(e, `.${t.sheet__header} button`), R(e));
41
+ }, []), B = f(
42
+ (e) => {
43
+ e.target === e.currentTarget && r();
44
+ },
45
+ [r]
46
+ );
47
+ return N() ? y(
48
+ /* @__PURE__ */ d(
49
+ "dialog",
50
+ {
51
+ ref: v,
52
+ className: w(t.sheet, b),
53
+ "aria-labelledby": u,
54
+ "data-testid": k,
55
+ onCancel: (e) => {
56
+ e.preventDefault(), !(s.current && !D(s.current)) && r();
57
+ },
58
+ onClick: B,
59
+ children: [
60
+ /* @__PURE__ */ d("header", { className: t.sheet__header, children: [
61
+ /* @__PURE__ */ o("h2", { id: u, className: t.sheet__title, children: p }),
62
+ /* @__PURE__ */ o(
63
+ U,
64
+ {
65
+ icon: /* @__PURE__ */ o(S, { "aria-hidden": !0 }),
66
+ label: A("BottomSheet.closeLabel", _, i == null ? void 0 : i.close),
67
+ variant: "ghost",
68
+ size: "sm",
69
+ onClick: r
70
+ }
71
+ )
72
+ ] }),
73
+ n && /* @__PURE__ */ o("div", { className: t.sheet__toolbar, children: n }),
74
+ /* @__PURE__ */ o("div", { className: t.sheet__body, children: g }),
75
+ m && /* @__PURE__ */ o("div", { className: t.sheet__footer, children: m })
76
+ ]
77
+ }
78
+ ),
79
+ document.body
80
+ ) : null;
81
+ }, te = /* @__PURE__ */ E(V);
82
+ export {
83
+ te as default
84
+ };
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/BottomSheet/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n memo,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { isClient } from '@handijit/utils';\n\nimport { ABOVE_MOBILE_MEDIA_QUERY } from '../../constants/breakpoint.constants';\nimport { XLg } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport {\n captureFocus,\n focusFirstMeaningful,\n isTopModal,\n preventAutoKeyboard,\n pushModal,\n} from '../../helpers/focus.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport useScrollLock from '../../hooks/useScrollLock';\nimport useSheetViewport from '../../hooks/useSheetViewport';\nimport IconButton from '../IconButton';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n title: string;\n /** Kapatma düğmesinin erişilebilir adı. */\n closeLabel?: string;\n onClose: () => void;\n children: ReactNode;\n /**\n * Başlığın altında duran, gövde kaydırılırken yerinde kalan şerit — `Combobox`ın arama kutusu\n * gibi.\n */\n toolbar?: ReactNode;\n /** Dipte duran eylem şeridi. */\n footer?: ReactNode;\n /** Panelin kendiliğinden kapandığı medya sorgusu. */\n closeAbove?: string;\n className?: string;\n testId?: string;\n};\n\n/** Alt sayfa (bottom sheet) — ekranın dibinden yükselen kipsel panel. */\nconst BottomSheet = ({\n title,\n closeLabel,\n onClose,\n children,\n toolbar,\n footer,\n closeAbove = ABOVE_MOBILE_MEDIA_QUERY,\n className,\n testId,\n}: Props) => {\n const { labels } = useUi();\n const titleId = useId();\n /* Yigindaki yerimiz: */\n const tokenRef = useRef<symbol | null>(null);\n\n /* Panel GORUNEN alana yaslanir: klavye ve adres cubugu altinda kalmaz. */\n useSheetViewport();\n\n /*\n * Arka plan kaydirmasi kilitlenir: `showModal()` arka plani etkilesime kapatir ama kaydirmayi her\n * tarayicida engellemiyor\n */\n useScrollLock();\n\n /* ODAK GERI DONUSU ve KIPSEL YIGIN. */\n useEffect(() => {\n const restoreFocus = captureFocus();\n const { token, pop } = pushModal();\n tokenRef.current = token;\n\n return () => {\n pop();\n tokenRef.current = null;\n restoreFocus();\n };\n }, []);\n\n useEffect(() => {\n const query = window.matchMedia(closeAbove);\n\n /* ⚠ YALNIZCA EŞİĞİN ÜSTÜNE ÇIKARKEN kapanır. */\n const handleChange = (event: MediaQueryListEvent) => {\n if (event.matches) onClose();\n };\n\n query.addEventListener('change', handleChange);\n return () => query.removeEventListener('change', handleChange);\n }, [closeAbove, onClose]);\n\n const setDialogRef = useCallback((node: HTMLDialogElement | null) => {\n if (!node || node.open) return;\n\n node.showModal();\n\n /*\n * Odak KAPATMA DUGMESINE degil ilk anlamli ogeye: ekran okuyucu paneli \"Kapat, dugme\" diye\n * aciyordu\n */\n focusFirstMeaningful(node, `.${styles.sheet__header} button`);\n\n /*\n * `showModal()` odagi panelin ILK odaklanabilir ogesine tasiyor; o oge bir metin alani\n * oldugunda telefonda klavye kendiliginden aciliyordu (bkz.…\n */\n preventAutoKeyboard(node);\n }, []);\n\n const handleBackdropClick = useCallback(\n (event: MouseEvent<HTMLDialogElement>) => {\n // Hedef dialog'un KENDISI ise perdeye tiklanmistir; icerik degil.\n if (event.target === event.currentTarget) onClose();\n },\n [onClose],\n );\n\n /* Portal `document.body`ye baglaniyor; sunucuda `document` yok. */\n if (!isClient()) return null;\n\n return createPortal(\n <dialog\n ref={setDialogRef}\n className={cx(styles.sheet, className)}\n aria-labelledby={titleId}\n data-testid={testId}\n /*\n * Escape'i tarayici isler ama React durumu haberdar olmuyor: yakalanmazsa panel kapanip durum\n * acik kaliyor ve kutu bir daha acilmiyordu.\n */\n onCancel={event => {\n event.preventDefault();\n /*\n * Yalnizca EN USTTEKI panel kapanir: ust uste iki kipsel yuzeyde tek bir Escape ikisini\n * birden kapatiyordu.\n */\n if (tokenRef.current && !isTopModal(tokenRef.current)) return;\n onClose();\n }}\n onClick={handleBackdropClick}\n >\n <header className={styles.sheet__header}>\n <h2 id={titleId} className={styles.sheet__title}>\n {title}\n </h2>\n <IconButton\n icon={<XLg aria-hidden />}\n label={resolveLabel('BottomSheet.closeLabel', closeLabel, labels?.close)}\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClose}\n />\n </header>\n\n {toolbar && <div className={styles.sheet__toolbar}>{toolbar}</div>}\n\n <div className={styles.sheet__body}>{children}</div>\n\n {footer && <div className={styles.sheet__footer}>{footer}</div>}\n </dialog>,\n document.body,\n );\n};\n\nexport default /*#__PURE__*/ memo(BottomSheet);\n"],"names":["BottomSheet","title","closeLabel","onClose","children","toolbar","footer","closeAbove","ABOVE_MOBILE_MEDIA_QUERY","className","testId","labels","useUi","titleId","useId","tokenRef","useRef","useSheetViewport","useScrollLock","useEffect","restoreFocus","captureFocus","token","pop","pushModal","query","handleChange","event","setDialogRef","useCallback","node","focusFirstMeaningful","styles","preventAutoKeyboard","handleBackdropClick","isClient","createPortal","jsxs","cx","isTopModal","jsx","IconButton","XLg","resolveLabel","BottomSheet$1"],"mappings":";;;;;;;;;;;;;;;AAqDA,MAAMA,IAAc,CAAC;AAAA,EACnB,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC,IAAaC;AAAA,EACb,WAAAC;AAAA,EACA,QAAAC;AACF,MAAa;AACX,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACbC,IAAUC,EAAA,GAEVC,IAAWC,EAAsB,IAAI;AAG3C,EAAAC,EAAA,GAMAC,EAAA,GAGAC,EAAU,MAAM;AACd,UAAMC,IAAeC,EAAA,GACf,EAAE,OAAAC,GAAO,KAAAC,EAAA,IAAQC,EAAA;AACvB,WAAAT,EAAS,UAAUO,GAEZ,MAAM;AACX,MAAAC,EAAA,GACAR,EAAS,UAAU,MACnBK,EAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAA,CAAE,GAELD,EAAU,MAAM;AACd,UAAMM,IAAQ,OAAO,WAAWlB,CAAU,GAGpCmB,IAAe,CAACC,MAA+B;AACnD,MAAIA,EAAM,WAASxB,EAAA;AAAA,IACrB;AAEA,WAAAsB,EAAM,iBAAiB,UAAUC,CAAY,GACtC,MAAMD,EAAM,oBAAoB,UAAUC,CAAY;AAAA,EAC/D,GAAG,CAACnB,GAAYJ,CAAO,CAAC;AAExB,QAAMyB,IAAeC,EAAY,CAACC,MAAmC;AACnE,IAAI,CAACA,KAAQA,EAAK,SAElBA,EAAK,UAAA,GAMLC,EAAqBD,GAAM,IAAIE,EAAO,aAAa,SAAS,GAM5DC,EAAoBH,CAAI;AAAA,EAC1B,GAAG,CAAA,CAAE,GAECI,IAAsBL;AAAA,IAC1B,CAACF,MAAyC;AAExC,MAAIA,EAAM,WAAWA,EAAM,iBAAexB,EAAA;AAAA,IAC5C;AAAA,IACA,CAACA,CAAO;AAAA,EAAA;AAIV,SAAKgC,EAAA,IAEEC;AAAA,IACL,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKT;AAAA,QACL,WAAWU,EAAGN,EAAO,OAAOvB,CAAS;AAAA,QACrC,mBAAiBI;AAAA,QACjB,eAAaH;AAAA,QAKb,UAAU,CAAAiB,MAAS;AAMjB,UALAA,EAAM,eAAA,GAKF,EAAAZ,EAAS,WAAW,CAACwB,EAAWxB,EAAS,OAAO,MACpDZ,EAAA;AAAA,QACF;AAAA,QACA,SAAS+B;AAAA,QAET,UAAA;AAAA,UAAA,gBAAAG,EAAC,UAAA,EAAO,WAAWL,EAAO,eACxB,UAAA;AAAA,YAAA,gBAAAQ,EAAC,QAAG,IAAI3B,GAAS,WAAWmB,EAAO,cAChC,UAAA/B,GACH;AAAA,YACA,gBAAAuC;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,MAAM,gBAAAD,EAACE,GAAA,EAAI,eAAW,GAAA,CAAC;AAAA,gBACvB,OAAOC,EAAa,0BAA0BzC,GAAYS,KAAA,gBAAAA,EAAQ,KAAK;AAAA,gBACvE,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,SAASR;AAAA,cAAA;AAAA,YAAA;AAAA,UACX,GACF;AAAA,UAECE,KAAW,gBAAAmC,EAAC,OAAA,EAAI,WAAWR,EAAO,gBAAiB,UAAA3B,GAAQ;AAAA,UAE5D,gBAAAmC,EAAC,OAAA,EAAI,WAAWR,EAAO,aAAc,UAAA5B,GAAS;AAAA,UAE7CE,KAAU,gBAAAkC,EAAC,OAAA,EAAI,WAAWR,EAAO,eAAgB,UAAA1B,EAAA,CAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAE3D,SAAS;AAAA,EAAA,IA1Ca;AA4C1B,GAEAsC,uBAAkC5C,CAAW;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-sheet-GEvdE{display:none}.ui-sheet-GEvdE[open]{display:flex;flex-direction:column;position:fixed;inset:auto 0 max(env(safe-area-inset-bottom,0px),var(--ui-sheet-inset-bottom, 0px)) 0;width:100%;max-width:none;max-height:max(min(50dvh,320px),min(80dvh,var(--ui-sheet-height, 100dvh) - var(--ui-space-5) - env(safe-area-inset-top,0px)));margin:0;padding:0;border:none;border-radius:var(--ui-radius-xl) var(--ui-radius-xl) 0 0;background-color:var(--ui-surface);color:var(--ui-text);box-shadow:var(--ui-shadow-xl);overflow:hidden;animation:var(--ui-anim-slide-up) var(--ui-duration-normal) var(--ui-ease-out)}.ui-sheet-GEvdE[open]::backdrop{background-color:var(--ui-scrim);animation:var(--ui-anim-fade-in) var(--ui-duration-normal) var(--ui-ease-out)}@media (prefers-reduced-motion: reduce){.ui-sheet-GEvdE[open]{animation:none}.ui-sheet-GEvdE[open]::backdrop{animation:none}}.ui-sheet__header-NJgw-{display:flex;align-items:center;gap:var(--ui-space-3);justify-content:space-between;padding:var(--ui-space-3) var(--ui-space-4);border-bottom:1px solid var(--ui-border);flex-shrink:0;padding-left:max(var(--ui-space-4),env(safe-area-inset-left,0px));padding-right:max(var(--ui-space-4),env(safe-area-inset-right,0px))}.ui-sheet__title-f-b07{font-size:var(--ui-font-size-base);font-weight:600;line-height:var(--ui-leading-tight);color:var(--ui-text);font-family:var(--ui-font-body);line-height:var(--ui-leading-snug);letter-spacing:normal;margin:0}.ui-sheet__toolbar-eyhmW{padding:var(--ui-space-2) var(--ui-space-3);border-bottom:1px solid var(--ui-border);flex-shrink:0;padding-left:max(var(--ui-space-3),env(safe-area-inset-left,0px));padding-right:max(var(--ui-space-3),env(safe-area-inset-right,0px))}.ui-sheet__body-eJ2KB{flex:1 1 auto;min-height:0;position:relative;overflow-y:auto;overscroll-behavior:contain;padding:var(--ui-space-2) var(--ui-space-3);padding-left:max(var(--ui-space-3),env(safe-area-inset-left,0px));padding-right:max(var(--ui-space-3),env(safe-area-inset-right,0px));scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}.ui-sheet__body-eJ2KB::-webkit-scrollbar{width:8px;height:8px}.ui-sheet__body-eJ2KB::-webkit-scrollbar-track{background:transparent}.ui-sheet__body-eJ2KB::-webkit-scrollbar-thumb{background-color:var(--ui-border-strong);border-radius:var(--ui-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-sheet__body-eJ2KB::-webkit-scrollbar-thumb:hover{background-color:var(--ui-text-3)}.ui-sheet__body-eJ2KB:last-child{padding-bottom:max(var(--ui-space-3),env(safe-area-inset-bottom,0px) - max(env(safe-area-inset-bottom,0px),var(--ui-sheet-inset-bottom, 0px)))}.ui-sheet__footer-NpsY5{display:flex;align-items:center;gap:var(--ui-space-3);padding:var(--ui-space-3) var(--ui-space-4);padding-left:max(var(--ui-space-4),env(safe-area-inset-left,0px));padding-right:max(var(--ui-space-4),env(safe-area-inset-right,0px));padding-bottom:max(var(--ui-space-3),env(safe-area-inset-bottom,0px) - max(env(safe-area-inset-bottom,0px),var(--ui-sheet-inset-bottom, 0px)));border-top:1px solid var(--ui-border);flex-shrink:0}.ui-sheet__footer-NpsY5>*{flex:1}}
@@ -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"),o=require("react"),b=require("react-bootstrap-icons"),m=require("../../helpers/class-name.helper.cjs"),h=require("../../helpers/label.helper.cjs"),_=require("../../theme/context.cjs"),f=require("../Link/index.cjs"),a={default:{"breadcrumb":"ui-breadcrumb-amB9n","breadcrumb__item":"ui-breadcrumb__item-Icv1S","breadcrumb__link":"ui-breadcrumb__link-eVkPq","breadcrumb__current":"ui-breadcrumb__current-8XjhU","breadcrumb__separator":"ui-breadcrumb__separator-vvaUi"}},x=({items:s,label:u,linkProps:n,className:d,testId:i})=>{const{labels:l}=_.useUi();return e.jsx("nav",{className:d,"aria-label":h.resolveLabel("Breadcrumb.label",u,l==null?void 0:l.breadcrumb),"data-testid":i,children:e.jsx("ol",{className:m.cx(a.default.breadcrumb),children:s.map((r,t)=>{const c=t===s.length-1;return e.jsxs("li",{className:a.default.breadcrumb__item,children:[r.href&&!c?e.jsx(f.default,{href:r.href,className:a.default.breadcrumb__link,...n,children:r.label}):e.jsx("span",{className:a.default.breadcrumb__current,"aria-current":"page",children:r.label}),!c&&e.jsx(b.CaretRightFill,{"aria-hidden":!0,className:a.default.breadcrumb__separator})]},`${r.label}-${t}`)})})})},j=o.memo(x);exports.default=j;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Breadcrumb/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { CaretRightFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\nexport type Crumb = {\n label: string;\n /** Son öğede verilmez: bulunduğumuz sayfa bağlantı olmaz. */\n href?: string;\n};\n\ntype Props = {\n items: Crumb[];\n /** Gezinme bölgesinin erişilebilir adı. */\n label?: string;\n /** Yönlendiriciye geçirilecek ek props. */\n linkProps?: UiLinkExtraProps;\n className?: string;\n testId?: string;\n};\n\n/** Kırıntı yolu. */\nconst Breadcrumb: FC<Props> = ({ items, label, linkProps, className, testId }) => {\n const { labels } = useUi();\n\n return (\n <nav\n className={className}\n aria-label={resolveLabel('Breadcrumb.label', label, labels?.breadcrumb)}\n data-testid={testId}\n >\n <ol className={cx(styles.breadcrumb)}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n return (\n <li key={`${item.label}-${index}`} className={styles.breadcrumb__item}>\n {item.href && !isLast ? (\n <UiLink href={item.href} className={styles.breadcrumb__link} {...linkProps}>\n {item.label}\n </UiLink>\n ) : (\n <span className={styles.breadcrumb__current} aria-current=\"page\">\n {item.label}\n </span>\n )}\n\n {!isLast && <CaretRightFill aria-hidden className={styles.breadcrumb__separator} />}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n};\n\nexport default /*#__PURE__*/ memo(Breadcrumb) as typeof Breadcrumb;\n"],"names":["Breadcrumb","items","label","linkProps","className","testId","labels","useUi","jsx","resolveLabel","cx","styles","item","index","isLast","jsxs","UiLink","CaretRightFill"],"mappings":"0ZA8BMA,EAAwB,CAAC,CAAE,MAAAC,EAAO,MAAAC,EAAO,UAAAC,EAAW,UAAAC,EAAW,OAAAC,KAAa,CAChF,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EAEnB,OACEC,EAAAA,IAAC,MAAA,CACC,UAAAJ,EACA,aAAYK,EAAAA,aAAa,mBAAoBP,EAAOI,GAAA,YAAAA,EAAQ,UAAU,EACtE,cAAaD,EAEb,SAAAG,EAAAA,IAAC,KAAA,CAAG,UAAWE,EAAAA,GAAGC,EAAAA,QAAO,UAAU,EAChC,SAAAV,EAAM,IAAI,CAACW,EAAMC,IAAU,CAC1B,MAAMC,EAASD,IAAUZ,EAAM,OAAS,EAExC,OACEc,EAAAA,KAAC,KAAA,CAAkC,UAAWJ,EAAAA,QAAO,iBAClD,SAAA,CAAAC,EAAK,MAAQ,CAACE,EACbN,EAAAA,IAACQ,EAAAA,QAAA,CAAO,KAAMJ,EAAK,KAAM,UAAWD,EAAAA,QAAO,iBAAmB,GAAGR,EAC9D,SAAAS,EAAK,KAAA,CACR,EAEAJ,EAAAA,IAAC,OAAA,CAAK,UAAWG,EAAAA,QAAO,oBAAqB,eAAa,OACvD,SAAAC,EAAK,KAAA,CACR,EAGD,CAACE,GAAUN,EAAAA,IAACS,iBAAA,CAAe,cAAW,GAAC,UAAWN,EAAAA,QAAO,qBAAA,CAAuB,CAAA,CAAA,EAX1E,GAAGC,EAAK,KAAK,IAAIC,CAAK,EAY/B,CAEJ,CAAC,CAAA,CACH,CAAA,CAAA,CAGN,EAEAA,SAAkCb,CAAU"}
@@ -0,0 +1,20 @@
1
+ import { FC } from 'react';
2
+ import { UiLinkExtraProps } from '../../types/link.type';
3
+ export type Crumb = {
4
+ label: string;
5
+ /** Son öğede verilmez: bulunduğumuz sayfa bağlantı olmaz. */
6
+ href?: string;
7
+ };
8
+ type Props = {
9
+ items: Crumb[];
10
+ /** Gezinme bölgesinin erişilebilir adı. */
11
+ label?: string;
12
+ /** Yönlendiriciye geçirilecek ek props. */
13
+ linkProps?: UiLinkExtraProps;
14
+ className?: string;
15
+ testId?: string;
16
+ };
17
+ /** Kırıntı yolu. */
18
+ declare const Breadcrumb: FC<Props>;
19
+ declare const _default: typeof Breadcrumb;
20
+ export default _default;
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { jsx as e, jsxs as b } from "react/jsx-runtime";
3
+ import { memo as d } from "react";
4
+ import { CaretRightFill as u } from "react-bootstrap-icons";
5
+ import { cx as p } from "../../helpers/class-name.helper.js";
6
+ import { resolveLabel as f } from "../../helpers/label.helper.js";
7
+ import { useUi as h } from "../../theme/context.js";
8
+ import _ from "../Link/index.js";
9
+ const a = {"breadcrumb":"ui-breadcrumb-amB9n","breadcrumb__item":"ui-breadcrumb__item-Icv1S","breadcrumb__link":"ui-breadcrumb__link-eVkPq","breadcrumb__current":"ui-breadcrumb__current-8XjhU","breadcrumb__separator":"ui-breadcrumb__separator-vvaUi"};
10
+ const N = ({ items: m, label: o, linkProps: t, className: i, testId: n }) => {
11
+ const { labels: l } = h();
12
+ return /* @__PURE__ */ e(
13
+ "nav",
14
+ {
15
+ className: i,
16
+ "aria-label": f("Breadcrumb.label", o, l == null ? void 0 : l.breadcrumb),
17
+ "data-testid": n,
18
+ children: /* @__PURE__ */ e("ol", { className: p(a.breadcrumb), children: m.map((r, c) => {
19
+ const s = c === m.length - 1;
20
+ return /* @__PURE__ */ b("li", { className: a.breadcrumb__item, children: [
21
+ r.href && !s ? /* @__PURE__ */ e(_, { href: r.href, className: a.breadcrumb__link, ...t, children: r.label }) : /* @__PURE__ */ e("span", { className: a.breadcrumb__current, "aria-current": "page", children: r.label }),
22
+ !s && /* @__PURE__ */ e(u, { "aria-hidden": !0, className: a.breadcrumb__separator })
23
+ ] }, `${r.label}-${c}`);
24
+ }) })
25
+ }
26
+ );
27
+ }, $ = /* @__PURE__ */ d(N);
28
+ export {
29
+ $ as default
30
+ };
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Breadcrumb/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { CaretRightFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\nexport type Crumb = {\n label: string;\n /** Son öğede verilmez: bulunduğumuz sayfa bağlantı olmaz. */\n href?: string;\n};\n\ntype Props = {\n items: Crumb[];\n /** Gezinme bölgesinin erişilebilir adı. */\n label?: string;\n /** Yönlendiriciye geçirilecek ek props. */\n linkProps?: UiLinkExtraProps;\n className?: string;\n testId?: string;\n};\n\n/** Kırıntı yolu. */\nconst Breadcrumb: FC<Props> = ({ items, label, linkProps, className, testId }) => {\n const { labels } = useUi();\n\n return (\n <nav\n className={className}\n aria-label={resolveLabel('Breadcrumb.label', label, labels?.breadcrumb)}\n data-testid={testId}\n >\n <ol className={cx(styles.breadcrumb)}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n return (\n <li key={`${item.label}-${index}`} className={styles.breadcrumb__item}>\n {item.href && !isLast ? (\n <UiLink href={item.href} className={styles.breadcrumb__link} {...linkProps}>\n {item.label}\n </UiLink>\n ) : (\n <span className={styles.breadcrumb__current} aria-current=\"page\">\n {item.label}\n </span>\n )}\n\n {!isLast && <CaretRightFill aria-hidden className={styles.breadcrumb__separator} />}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n};\n\nexport default /*#__PURE__*/ memo(Breadcrumb) as typeof Breadcrumb;\n"],"names":["Breadcrumb","items","label","linkProps","className","testId","labels","useUi","jsx","resolveLabel","cx","styles","item","index","isLast","jsxs","UiLink","CaretRightFill"],"mappings":";;;;;;;;;AA8BA,MAAMA,IAAwB,CAAC,EAAE,OAAAC,GAAO,OAAAC,GAAO,WAAAC,GAAW,WAAAC,GAAW,QAAAC,QAAa;AAChF,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA;AAEnB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAAJ;AAAA,MACA,cAAYK,EAAa,oBAAoBP,GAAOI,KAAA,gBAAAA,EAAQ,UAAU;AAAA,MACtE,eAAaD;AAAA,MAEb,UAAA,gBAAAG,EAAC,MAAA,EAAG,WAAWE,EAAGC,EAAO,UAAU,GAChC,UAAAV,EAAM,IAAI,CAACW,GAAMC,MAAU;AAC1B,cAAMC,IAASD,MAAUZ,EAAM,SAAS;AAExC,eACE,gBAAAc,EAAC,MAAA,EAAkC,WAAWJ,EAAO,kBAClD,UAAA;AAAA,UAAAC,EAAK,QAAQ,CAACE,IACb,gBAAAN,EAACQ,GAAA,EAAO,MAAMJ,EAAK,MAAM,WAAWD,EAAO,kBAAmB,GAAGR,GAC9D,UAAAS,EAAK,MAAA,CACR,IAEA,gBAAAJ,EAAC,QAAA,EAAK,WAAWG,EAAO,qBAAqB,gBAAa,QACvD,UAAAC,EAAK,MAAA,CACR;AAAA,UAGD,CAACE,KAAU,gBAAAN,EAACS,GAAA,EAAe,eAAW,IAAC,WAAWN,EAAO,sBAAA,CAAuB;AAAA,QAAA,EAAA,GAX1E,GAAGC,EAAK,KAAK,IAAIC,CAAK,EAY/B;AAAA,MAEJ,CAAC,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN,GAEAA,sBAAkCb,CAAU;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-breadcrumb-amB9n{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-1);list-style:none;margin:0;padding:0;font-size:var(--ui-font-size-xs)}@media (max-width: 768px){.ui-breadcrumb-amB9n{display:flex;gap:var(--ui-space-1);position:relative;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;padding-block:var(--ui-space-1) var(--ui-space-3);scrollbar-width:none;-ms-overflow-style:none}.ui-breadcrumb-amB9n::-webkit-scrollbar{display:none}.ui-breadcrumb-amB9n>*{scroll-snap-align:start;flex-shrink:0}.ui-breadcrumb-amB9n{flex-wrap:nowrap;padding-block:0}}.ui-breadcrumb__item-Icv1S{display:inline-flex;align-items:center;gap:var(--ui-space-1);white-space:nowrap}.ui-breadcrumb__link-eVkPq{color:var(--ui-text-2);text-decoration:none;transition:color var(--ui-duration-fast) var(--ui-ease-out)}.ui-breadcrumb__link-eVkPq:hover{color:var(--ui-link);text-decoration:underline}.ui-breadcrumb__link-eVkPq:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, 2px)}@media (prefers-reduced-motion: reduce){.ui-breadcrumb__link-eVkPq{transition:none}}.ui-breadcrumb__current-8XjhU{color:var(--ui-text-2);font-weight:500}[dir=rtl] .ui-breadcrumb__separator-vvaUi{transform:scaleX(-1)}.ui-breadcrumb__separator-vvaUi{color:var(--ui-text-3);font-size:var(--ui-icon-xs);flex-shrink:0}}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),m=require("react"),h=require("../../helpers/class-name.helper.cjs"),k=require("../../helpers/component.helper.cjs"),v=require("../../enums/ui-size.enum.cjs"),C=require("../../enums/ui-variant.enum.cjs"),R=require("../Link/index.cjs"),$=require("../Spinner/index.cjs"),e={default:{"button":"ui-button-SRu4R","button__icon":"ui-button__icon-giom6","button__spinner":"ui-button__spinner-vexVG","button__label":"ui-button__label-qiMHm","button--inert":"ui-button--inert-iUGId","button--full":"ui-button--full-CwPHR","button--loading":"ui-button--loading-O-naJ","button--xsmall":"ui-button--xsmall-MmjpU","button--pill":"ui-button--pill-VFBYN","button--small":"ui-button--small-TF9Hz","button--medium":"ui-button--medium-JDjkH","button--large":"ui-button--large-btadu","button--primary":"ui-button--primary-ym7RJ","button--cart":"ui-button--cart-5DVmR","button--secondary":"ui-button--secondary-56m1d","button--outline":"ui-button--outline-ZI8sw","button--dark":"ui-button--dark-FGZgn","button--light":"ui-button--light-YzEPs","button--ghost":"ui-button--ghost-rijnZ","button--danger":"ui-button--danger-TNGd2"}},w=m.forwardRef(({variant:f=C.default.PRIMARY,size:_=v.default.MEDIUM,shape:x="rounded",isLoading:n,isFullWidth:p,startIcon:c,endIcon:d,className:j,children:q,disabled:i,href:a,isExternal:N,linkProps:B,testId:o,...u},M)=>{const l=!!i||!!n,s=h.cx(e.default.button,e.default[`button--${f.toLowerCase()}`],e.default[`button--${_.toLowerCase()}`],x==="pill"&&e.default["button--pill"],p&&e.default["button--full"],n&&e.default["button--loading"],a&&l&&e.default["button--inert"],j),r=t.jsxs(t.Fragment,{children:[n&&t.jsx($.default,{size:"sm",className:e.default.button__spinner,label:""}),!n&&c&&t.jsx("span",{className:e.default.button__icon,children:c}),t.jsx("span",{className:e.default.button__label,children:q}),d&&t.jsx("span",{className:e.default.button__icon,children:d})]}),b={"aria-busy":n,"aria-disabled":l||void 0,tabIndex:l?-1:u.tabIndex,onClick:l?void 0:u.onClick};return a&&N?t.jsx("a",{...u,...b,href:a,className:s,target:"_blank",rel:"noopener noreferrer","data-testid":o,children:r}):a?t.jsx(R.default,{...u,...b,href:a,className:s,"data-testid":o,...B,children:r}):t.jsx("button",{ref:M,className:s,disabled:i||n,"aria-busy":n,"data-testid":o,...u,children:r})}),y=m.memo(k.named(w,"Button"));exports.default=y;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Button/index.tsx"],"sourcesContent":["import {\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n forwardRef,\n memo,\n type MouseEventHandler,\n type ReactNode,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport UISize from '../../enums/ui-size.enum';\nimport UIVariant from '../../enums/ui-variant.enum';\nimport type { CommonElementProps } from '../../types/common-element-props.type';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\nimport Spinner from '../Spinner';\n\nimport styles from './index.module.scss';\n\n/** Köşe biçimi. `pill` üst bant ve araç çubuğundaki hafif eylemler için; ölçü değişmez. */\nexport type ButtonShape = 'rounded' | 'pill';\n\ntype BaseProps = Partial<{\n variant: UIVariant;\n size: UISize;\n shape: ButtonShape;\n isLoading: boolean;\n isFullWidth: boolean;\n startIcon: ReactNode;\n endIcon: ReactNode;\n}> &\n CommonElementProps;\n\ntype Props = BaseProps &\n ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Verilirse düğme bir bağlantı olarak çizilir. */\n href?: string;\n /** Uygulama dışına çıkan bağlantı: yeni sekmede açılır ve yönlendirici devreye girmez. */\n isExternal?: boolean;\n /** Yönlendiriciye geçirilecek ek props (`{ scroll: false }`, `{ replace: true }`). */\n linkProps?: UiLinkExtraProps;\n };\n\n/**\n * Düğme.\n * @example <Button variant={UIVariant.PRIMARY} isLoading={isSaving} onClick={save}> Kaydet…\n */\nconst Button = /*#__PURE__*/ forwardRef<HTMLButtonElement, Props>(\n (\n {\n variant = UIVariant.PRIMARY,\n size = UISize.MEDIUM,\n shape = 'rounded',\n isLoading,\n isFullWidth,\n startIcon,\n endIcon,\n className,\n children,\n disabled,\n href,\n isExternal,\n linkProps,\n testId,\n ...rest\n },\n ref,\n ) => {\n const isInert = Boolean(disabled) || Boolean(isLoading);\n\n const classNames = cx(\n styles.button,\n styles[`button--${variant.toLowerCase()}`],\n styles[`button--${size.toLowerCase()}`],\n shape === 'pill' && styles['button--pill'],\n isFullWidth && styles['button--full'],\n isLoading && styles['button--loading'],\n href && isInert && styles['button--inert'],\n className,\n );\n\n const content = (\n <>\n {isLoading && <Spinner size=\"sm\" className={styles.button__spinner} label=\"\" />}\n {!isLoading && startIcon && <span className={styles.button__icon}>{startIcon}</span>}\n <span className={styles.button__label}>{children}</span>\n {endIcon && <span className={styles.button__icon}>{endIcon}</span>}\n </>\n );\n\n /*\n * Olculen ariza: tip `ButtonHTMLAttributes` oldugu icin `onClick`, `aria-*`, `data-*`, `id`,\n * `title`, `onBlur` hepsi TIP DENETIMINDEN geciyordu ama…\n * ⚠ BAGLANTI DALLARI DA `...rest` YAYAR.\n *\n * 6.0: BAĞLANTI DALI İŞLEV PROP'U ÜRETMEZ. Bileşen `'use client'` taşımaz; sunucu bileşeninden\n * çizildiğinde `UiLink` (istemci) bir işlev alsaydı RSC serileştirmesi düşerdi (\"Functions\n * cannot be passed directly to Client Components\"). Pasif bağlantı (`disabled` / `isLoading`)\n * `aria-disabled` + `tabIndex=-1` + `pointer-events: none` (`button--inert`) ile durdurulur;\n * tüketicinin `onClick`i yalnızca etkinken ve verildiyse iletilir.\n */\n const linkGuards = {\n 'aria-busy': isLoading,\n 'aria-disabled': isInert || undefined,\n tabIndex: isInert ? -1 : rest.tabIndex,\n onClick: isInert\n ? undefined\n : (rest.onClick as unknown as MouseEventHandler<HTMLAnchorElement> | undefined),\n };\n\n if (href && isExternal)\n return (\n <a\n {...(rest as AnchorHTMLAttributes<HTMLAnchorElement>)}\n {...linkGuards}\n href={href}\n className={classNames}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n data-testid={testId}\n >\n {content}\n </a>\n );\n\n if (href)\n return (\n <UiLink\n {...(rest as AnchorHTMLAttributes<HTMLAnchorElement>)}\n {...linkGuards}\n href={href}\n className={classNames}\n data-testid={testId}\n {...linkProps}\n >\n {content}\n </UiLink>\n );\n\n return (\n <button\n ref={ref}\n className={classNames}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n data-testid={testId}\n {...rest}\n >\n {content}\n </button>\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Button, 'Button')) as typeof Button;\n"],"names":["Button","forwardRef","variant","UIVariant","size","UISize","shape","isLoading","isFullWidth","startIcon","endIcon","className","children","disabled","href","isExternal","linkProps","testId","rest","ref","isInert","classNames","cx","styles","content","jsxs","Fragment","jsx","Spinner","linkGuards","UiLink","memo","named"],"mappings":"kcAgDMA,EAAuBC,EAAAA,WAC3B,CACE,CACE,QAAAC,EAAUC,EAAAA,QAAU,QACpB,KAAAC,EAAOC,EAAAA,QAAO,OACd,MAAAC,EAAQ,UACR,UAAAC,EACA,YAAAC,EACA,UAAAC,EACA,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,SAAAC,EACA,KAAAC,EACA,WAAAC,EACA,UAAAC,EACA,OAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAU,EAAQP,GAAa,EAAQN,EAEvCc,EAAaC,EAAAA,GACjBC,EAAAA,QAAO,OACPA,EAAAA,QAAO,WAAWrB,EAAQ,YAAA,CAAa,EAAE,EACzCqB,EAAAA,QAAO,WAAWnB,EAAK,YAAA,CAAa,EAAE,EACtCE,IAAU,QAAUiB,EAAAA,QAAO,cAAc,EACzCf,GAAee,EAAAA,QAAO,cAAc,EACpChB,GAAagB,EAAAA,QAAO,iBAAiB,EACrCT,GAAQM,GAAWG,EAAAA,QAAO,eAAe,EACzCZ,CAAA,EAGIa,EACJC,EAAAA,KAAAC,EAAAA,SAAA,CACG,SAAA,CAAAnB,GAAaoB,EAAAA,IAACC,WAAQ,KAAK,KAAK,UAAWL,UAAO,gBAAiB,MAAM,EAAA,CAAG,EAC5E,CAAChB,GAAaE,GAAakB,EAAAA,IAAC,QAAK,UAAWJ,EAAAA,QAAO,aAAe,SAAAd,EAAU,EAC7EkB,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAAA,QAAO,cAAgB,SAAAX,EAAS,EAChDF,GAAWiB,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAAA,QAAO,aAAe,SAAAb,CAAA,CAAQ,CAAA,EAC7D,EAcImB,EAAa,CACjB,YAAatB,EACb,gBAAiBa,GAAW,OAC5B,SAAUA,EAAU,GAAKF,EAAK,SAC9B,QAASE,EACL,OACCF,EAAK,OAAA,EAGZ,OAAIJ,GAAQC,EAERY,EAAAA,IAAC,IAAA,CACE,GAAIT,EACJ,GAAGW,EACJ,KAAAf,EACA,UAAWO,EACX,OAAO,SACP,IAAI,sBACJ,cAAaJ,EAEZ,SAAAO,CAAA,CAAA,EAIHV,EAEAa,EAAAA,IAACG,EAAAA,QAAA,CACE,GAAIZ,EACJ,GAAGW,EACJ,KAAAf,EACA,UAAWO,EACX,cAAaJ,EACZ,GAAGD,EAEH,SAAAQ,CAAA,CAAA,EAKLG,EAAAA,IAAC,SAAA,CACC,IAAAR,EACA,UAAWE,EACX,SAAUR,GAAYN,EACtB,YAAWA,EACX,cAAaU,EACZ,GAAGC,EAEH,SAAAM,CAAA,CAAA,CAGP,CACF,EAEAxB,EAA6B+B,OAAmBC,EAAAA,MAAMhC,EAAQ,QAAQ,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { ButtonHTMLAttributes, ReactNode } from 'react';
2
+ import { default as UISize } from '../../enums/ui-size.enum';
3
+ import { default as UIVariant } from '../../enums/ui-variant.enum';
4
+ import { UiLinkExtraProps } from '../../types/link.type';
5
+ /** Köşe biçimi. `pill` üst bant ve araç çubuğundaki hafif eylemler için; ölçü değişmez. */
6
+ export type ButtonShape = 'rounded' | 'pill';
7
+ /**
8
+ * Düğme.
9
+ * @example <Button variant={UIVariant.PRIMARY} isLoading={isSaving} onClick={save}> Kaydet…
10
+ */
11
+ declare const Button: import('react').ForwardRefExoticComponent<Partial<{
12
+ variant: UIVariant;
13
+ size: UISize;
14
+ shape: ButtonShape;
15
+ isLoading: boolean;
16
+ isFullWidth: boolean;
17
+ startIcon: ReactNode;
18
+ endIcon: ReactNode;
19
+ }> & Partial<{
20
+ className: string;
21
+ id: string;
22
+ testId: string;
23
+ }> & ButtonHTMLAttributes<HTMLButtonElement> & {
24
+ /** Verilirse düğme bir bağlantı olarak çizilir. */
25
+ href?: string;
26
+ /** Uygulama dışına çıkan bağlantı: yeni sekmede açılır ve yönlendirici devreye girmez. */
27
+ isExternal?: boolean;
28
+ /** Yönlendiriciye geçirilecek ek props (`{ scroll: false }`, `{ replace: true }`). */
29
+ linkProps?: UiLinkExtraProps;
30
+ } & import('react').RefAttributes<HTMLButtonElement>>;
31
+ declare const _default: typeof Button;
32
+ export default _default;
@@ -0,0 +1,88 @@
1
+ import { jsx as n, jsxs as U, Fragment as w } from "react/jsx-runtime";
2
+ import { memo as y, forwardRef as I } from "react";
3
+ import { cx as M } from "../../helpers/class-name.helper.js";
4
+ import { named as R } from "../../helpers/component.helper.js";
5
+ import $ from "../../enums/ui-size.enum.js";
6
+ import h from "../../enums/ui-variant.enum.js";
7
+ import j from "../Link/index.js";
8
+ import v from "../Spinner/index.js";
9
+ const t = {"button":"ui-button-SRu4R","button__icon":"ui-button__icon-giom6","button__spinner":"ui-button__spinner-vexVG","button__label":"ui-button__label-qiMHm","button--inert":"ui-button--inert-iUGId","button--full":"ui-button--full-CwPHR","button--loading":"ui-button--loading-O-naJ","button--xsmall":"ui-button--xsmall-MmjpU","button--pill":"ui-button--pill-VFBYN","button--small":"ui-button--small-TF9Hz","button--medium":"ui-button--medium-JDjkH","button--large":"ui-button--large-btadu","button--primary":"ui-button--primary-ym7RJ","button--cart":"ui-button--cart-5DVmR","button--secondary":"ui-button--secondary-56m1d","button--outline":"ui-button--outline-ZI8sw","button--dark":"ui-button--dark-FGZgn","button--light":"ui-button--light-YzEPs","button--ghost":"ui-button--ghost-rijnZ","button--danger":"ui-button--danger-TNGd2"};
10
+ const z = /* @__PURE__ */ I(
11
+ ({
12
+ variant: p = h.PRIMARY,
13
+ size: d = $.MEDIUM,
14
+ shape: f = "rounded",
15
+ isLoading: o,
16
+ isFullWidth: _,
17
+ startIcon: m,
18
+ endIcon: c,
19
+ className: N,
20
+ children: x,
21
+ disabled: u,
22
+ href: a,
23
+ isExternal: k,
24
+ linkProps: B,
25
+ testId: l,
26
+ ...r
27
+ }, C) => {
28
+ const e = !!u || !!o, s = M(
29
+ t.button,
30
+ t[`button--${p.toLowerCase()}`],
31
+ t[`button--${d.toLowerCase()}`],
32
+ f === "pill" && t["button--pill"],
33
+ _ && t["button--full"],
34
+ o && t["button--loading"],
35
+ a && e && t["button--inert"],
36
+ N
37
+ ), i = /* @__PURE__ */ U(w, { children: [
38
+ o && /* @__PURE__ */ n(v, { size: "sm", className: t.button__spinner, label: "" }),
39
+ !o && m && /* @__PURE__ */ n("span", { className: t.button__icon, children: m }),
40
+ /* @__PURE__ */ n("span", { className: t.button__label, children: x }),
41
+ c && /* @__PURE__ */ n("span", { className: t.button__icon, children: c })
42
+ ] }), b = {
43
+ "aria-busy": o,
44
+ "aria-disabled": e || void 0,
45
+ tabIndex: e ? -1 : r.tabIndex,
46
+ onClick: e ? void 0 : r.onClick
47
+ };
48
+ return a && k ? /* @__PURE__ */ n(
49
+ "a",
50
+ {
51
+ ...r,
52
+ ...b,
53
+ href: a,
54
+ className: s,
55
+ target: "_blank",
56
+ rel: "noopener noreferrer",
57
+ "data-testid": l,
58
+ children: i
59
+ }
60
+ ) : a ? /* @__PURE__ */ n(
61
+ j,
62
+ {
63
+ ...r,
64
+ ...b,
65
+ href: a,
66
+ className: s,
67
+ "data-testid": l,
68
+ ...B,
69
+ children: i
70
+ }
71
+ ) : /* @__PURE__ */ n(
72
+ "button",
73
+ {
74
+ ref: C,
75
+ className: s,
76
+ disabled: u || o,
77
+ "aria-busy": o,
78
+ "data-testid": l,
79
+ ...r,
80
+ children: i
81
+ }
82
+ );
83
+ }
84
+ ), q = /* @__PURE__ */ y(/* @__PURE__ */ R(z, "Button"));
85
+ export {
86
+ q as default
87
+ };
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Button/index.tsx"],"sourcesContent":["import {\n type AnchorHTMLAttributes,\n type ButtonHTMLAttributes,\n forwardRef,\n memo,\n type MouseEventHandler,\n type ReactNode,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport UISize from '../../enums/ui-size.enum';\nimport UIVariant from '../../enums/ui-variant.enum';\nimport type { CommonElementProps } from '../../types/common-element-props.type';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\nimport Spinner from '../Spinner';\n\nimport styles from './index.module.scss';\n\n/** Köşe biçimi. `pill` üst bant ve araç çubuğundaki hafif eylemler için; ölçü değişmez. */\nexport type ButtonShape = 'rounded' | 'pill';\n\ntype BaseProps = Partial<{\n variant: UIVariant;\n size: UISize;\n shape: ButtonShape;\n isLoading: boolean;\n isFullWidth: boolean;\n startIcon: ReactNode;\n endIcon: ReactNode;\n}> &\n CommonElementProps;\n\ntype Props = BaseProps &\n ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Verilirse düğme bir bağlantı olarak çizilir. */\n href?: string;\n /** Uygulama dışına çıkan bağlantı: yeni sekmede açılır ve yönlendirici devreye girmez. */\n isExternal?: boolean;\n /** Yönlendiriciye geçirilecek ek props (`{ scroll: false }`, `{ replace: true }`). */\n linkProps?: UiLinkExtraProps;\n };\n\n/**\n * Düğme.\n * @example <Button variant={UIVariant.PRIMARY} isLoading={isSaving} onClick={save}> Kaydet…\n */\nconst Button = /*#__PURE__*/ forwardRef<HTMLButtonElement, Props>(\n (\n {\n variant = UIVariant.PRIMARY,\n size = UISize.MEDIUM,\n shape = 'rounded',\n isLoading,\n isFullWidth,\n startIcon,\n endIcon,\n className,\n children,\n disabled,\n href,\n isExternal,\n linkProps,\n testId,\n ...rest\n },\n ref,\n ) => {\n const isInert = Boolean(disabled) || Boolean(isLoading);\n\n const classNames = cx(\n styles.button,\n styles[`button--${variant.toLowerCase()}`],\n styles[`button--${size.toLowerCase()}`],\n shape === 'pill' && styles['button--pill'],\n isFullWidth && styles['button--full'],\n isLoading && styles['button--loading'],\n href && isInert && styles['button--inert'],\n className,\n );\n\n const content = (\n <>\n {isLoading && <Spinner size=\"sm\" className={styles.button__spinner} label=\"\" />}\n {!isLoading && startIcon && <span className={styles.button__icon}>{startIcon}</span>}\n <span className={styles.button__label}>{children}</span>\n {endIcon && <span className={styles.button__icon}>{endIcon}</span>}\n </>\n );\n\n /*\n * Olculen ariza: tip `ButtonHTMLAttributes` oldugu icin `onClick`, `aria-*`, `data-*`, `id`,\n * `title`, `onBlur` hepsi TIP DENETIMINDEN geciyordu ama…\n * ⚠ BAGLANTI DALLARI DA `...rest` YAYAR.\n *\n * 6.0: BAĞLANTI DALI İŞLEV PROP'U ÜRETMEZ. Bileşen `'use client'` taşımaz; sunucu bileşeninden\n * çizildiğinde `UiLink` (istemci) bir işlev alsaydı RSC serileştirmesi düşerdi (\"Functions\n * cannot be passed directly to Client Components\"). Pasif bağlantı (`disabled` / `isLoading`)\n * `aria-disabled` + `tabIndex=-1` + `pointer-events: none` (`button--inert`) ile durdurulur;\n * tüketicinin `onClick`i yalnızca etkinken ve verildiyse iletilir.\n */\n const linkGuards = {\n 'aria-busy': isLoading,\n 'aria-disabled': isInert || undefined,\n tabIndex: isInert ? -1 : rest.tabIndex,\n onClick: isInert\n ? undefined\n : (rest.onClick as unknown as MouseEventHandler<HTMLAnchorElement> | undefined),\n };\n\n if (href && isExternal)\n return (\n <a\n {...(rest as AnchorHTMLAttributes<HTMLAnchorElement>)}\n {...linkGuards}\n href={href}\n className={classNames}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n data-testid={testId}\n >\n {content}\n </a>\n );\n\n if (href)\n return (\n <UiLink\n {...(rest as AnchorHTMLAttributes<HTMLAnchorElement>)}\n {...linkGuards}\n href={href}\n className={classNames}\n data-testid={testId}\n {...linkProps}\n >\n {content}\n </UiLink>\n );\n\n return (\n <button\n ref={ref}\n className={classNames}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n data-testid={testId}\n {...rest}\n >\n {content}\n </button>\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(Button, 'Button')) as typeof Button;\n"],"names":["Button","forwardRef","variant","UIVariant","size","UISize","shape","isLoading","isFullWidth","startIcon","endIcon","className","children","disabled","href","isExternal","linkProps","testId","rest","ref","isInert","classNames","cx","styles","content","jsxs","Fragment","jsx","Spinner","linkGuards","UiLink","Button$1","memo","named"],"mappings":";;;;;;;;;AAgDA,MAAMA,IAAuB,gBAAAC;AAAA,EAC3B,CACE;AAAA,IACE,SAAAC,IAAUC,EAAU;AAAA,IACpB,MAAAC,IAAOC,EAAO;AAAA,IACd,OAAAC,IAAQ;AAAA,IACR,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,QAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAU,EAAQP,KAAa,EAAQN,GAEvCc,IAAaC;AAAA,MACjBC,EAAO;AAAA,MACPA,EAAO,WAAWrB,EAAQ,YAAA,CAAa,EAAE;AAAA,MACzCqB,EAAO,WAAWnB,EAAK,YAAA,CAAa,EAAE;AAAA,MACtCE,MAAU,UAAUiB,EAAO,cAAc;AAAA,MACzCf,KAAee,EAAO,cAAc;AAAA,MACpChB,KAAagB,EAAO,iBAAiB;AAAA,MACrCT,KAAQM,KAAWG,EAAO,eAAe;AAAA,MACzCZ;AAAA,IAAA,GAGIa,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,MAAAnB,KAAa,gBAAAoB,EAACC,KAAQ,MAAK,MAAK,WAAWL,EAAO,iBAAiB,OAAM,GAAA,CAAG;AAAA,MAC5E,CAAChB,KAAaE,KAAa,gBAAAkB,EAAC,UAAK,WAAWJ,EAAO,cAAe,UAAAd,GAAU;AAAA,MAC7E,gBAAAkB,EAAC,QAAA,EAAK,WAAWJ,EAAO,eAAgB,UAAAX,GAAS;AAAA,MAChDF,KAAW,gBAAAiB,EAAC,QAAA,EAAK,WAAWJ,EAAO,cAAe,UAAAb,EAAA,CAAQ;AAAA,IAAA,GAC7D,GAcImB,IAAa;AAAA,MACjB,aAAatB;AAAA,MACb,iBAAiBa,KAAW;AAAA,MAC5B,UAAUA,IAAU,KAAKF,EAAK;AAAA,MAC9B,SAASE,IACL,SACCF,EAAK;AAAA,IAAA;AAGZ,WAAIJ,KAAQC,IAER,gBAAAY;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAIT;AAAA,QACJ,GAAGW;AAAA,QACJ,MAAAf;AAAA,QACA,WAAWO;AAAA,QACX,QAAO;AAAA,QACP,KAAI;AAAA,QACJ,eAAaJ;AAAA,QAEZ,UAAAO;AAAA,MAAA;AAAA,IAAA,IAIHV,IAEA,gBAAAa;AAAA,MAACG;AAAA,MAAA;AAAA,QACE,GAAIZ;AAAA,QACJ,GAAGW;AAAA,QACJ,MAAAf;AAAA,QACA,WAAWO;AAAA,QACX,eAAaJ;AAAA,QACZ,GAAGD;AAAA,QAEH,UAAAQ;AAAA,MAAA;AAAA,IAAA,IAKL,gBAAAG;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAR;AAAA,QACA,WAAWE;AAAA,QACX,UAAUR,KAAYN;AAAA,QACtB,aAAWA;AAAA,QACX,eAAaU;AAAA,QACZ,GAAGC;AAAA,QAEH,UAAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF,GAEAO,IAA6B,gBAAAC,EAAmB,gBAAAC,EAAMjC,GAAQ,QAAQ,CAAC;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-button-SRu4R{position:relative}.ui-button-SRu4R:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-button-SRu4R{display:inline-flex;align-items:center;justify-content:center;gap:var(--ui-space-2);border:1px solid transparent;border-radius:var(--ui-button-radius, var(--ui-radius-md));font-family:var(--ui-font-body);font-weight:var(--ui-button-weight, 600);line-height:var(--ui-leading-none);letter-spacing:var(--ui-button-tracking, -.006em);white-space:var(--ui-button-wrap, nowrap);cursor:pointer;text-decoration:none;transition:background-color var(--ui-duration-fast) var(--ui-ease-out),border-color var(--ui-duration-fast) var(--ui-ease-out),color var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out),transform var(--ui-duration-instant) var(--ui-ease-out)}.ui-button-SRu4R:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, 2px)}.ui-button-SRu4R:active:not(:disabled){transform:translateY(1px)}.ui-button-SRu4R:disabled{cursor:not-allowed;transform:none;box-shadow:none}@media (prefers-reduced-motion: reduce){.ui-button-SRu4R{transition:none}.ui-button-SRu4R:active:not(:disabled){transform:none}}.ui-button__icon-giom6{display:inline-flex;align-items:center;flex-shrink:0;font-size:var(--ui-icon-md)}.ui-button__spinner-vexVG{display:inline-flex;align-items:center;flex-shrink:0;font-size:1.05em}.ui-button__label-qiMHm{display:inline-flex;align-items:center}.ui-button--inert-iUGId{pointer-events:none}.ui-button--full-CwPHR{width:100%}.ui-button--loading-O-naJ{cursor:progress}.ui-button--xsmall-MmjpU{padding:var(--ui-space-1) var(--ui-space-3);font-size:var(--ui-font-size-xs);min-height:30px}.ui-button--xsmall-MmjpU .ui-button__icon-giom6{font-size:var(--ui-icon-xs)}.ui-button--pill-VFBYN{border-radius:var(--ui-radius-pill)}.ui-button--small-TF9Hz{padding:var(--ui-space-2) var(--ui-space-3);font-size:var(--ui-font-size-sm);min-height:36px}.ui-button--small-TF9Hz .ui-button__icon-giom6{font-size:var(--ui-icon-sm)}.ui-button--medium-JDjkH{padding:var(--ui-space-3) var(--ui-space-5);font-size:var(--ui-font-size-sm);min-height:44px}.ui-button--large-btadu{padding:var(--ui-space-4) var(--ui-space-6);font-size:var(--ui-font-size-base);min-height:52px}.ui-button--large-btadu .ui-button__icon-giom6{font-size:var(--ui-icon-lg)}.ui-button--primary-ym7RJ{background-color:var(--ui-action);border-color:var(--ui-action-line);color:var(--ui-on-action);box-shadow:var(--ui-shadow-xs)}.ui-button--primary-ym7RJ:hover:not(:disabled){background-color:var(--ui-action-hover);box-shadow:var(--ui-shadow-sm)}.ui-button--primary-ym7RJ:active:not(:disabled){background-color:var(--ui-action-active);box-shadow:var(--ui-shadow-xs)}.ui-button--primary-ym7RJ:disabled{background-color:var(--ui-action-soft);border-color:transparent;color:var(--ui-on-action-soft)}.ui-button--cart-5DVmR{background-color:var(--ui-cart);color:var(--ui-on-cart);box-shadow:var(--ui-shadow-xs)}.ui-button--cart-5DVmR:hover:not(:disabled){background-color:var(--ui-cart-hover);box-shadow:var(--ui-shadow-sm)}.ui-button--cart-5DVmR:active:not(:disabled){background-color:var(--ui-cart-active);box-shadow:var(--ui-shadow-xs)}.ui-button--cart-5DVmR:disabled{background-color:var(--ui-cart-soft);color:var(--ui-on-cart)}.ui-button--secondary-56m1d{background-color:var(--ui-surface);border-color:var(--ui-border-strong);color:var(--ui-text)}.ui-button--secondary-56m1d:hover:not(:disabled){border-color:var(--ui-text-3);background-color:var(--ui-surface-2)}.ui-button--secondary-56m1d:active:not(:disabled){background-color:var(--ui-surface-3)}.ui-button--secondary-56m1d:disabled{background-color:var(--ui-surface-2);border-color:var(--ui-border);color:var(--ui-text-3)}.ui-button--outline-ZI8sw{background-color:transparent;border-color:var(--ui-selected-line);color:var(--ui-text)}.ui-button--outline-ZI8sw:hover:not(:disabled){background-color:var(--ui-surface-2);border-color:var(--ui-selected-hover)}.ui-button--outline-ZI8sw:active:not(:disabled){background-color:var(--ui-surface-3);border-color:var(--ui-selected-active)}.ui-button--outline-ZI8sw:disabled{border-color:var(--ui-border);color:var(--ui-text-3)}.ui-button--dark-FGZgn{background-color:var(--ui-nav-bg-2);border-color:var(--ui-nav-line-strong);color:var(--ui-nav-fg)}.ui-button--dark-FGZgn:hover:not(:disabled){border-color:var(--ui-nav-fg-3);background-color:var(--ui-nav-hover)}.ui-button--dark-FGZgn:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, 2px)}.ui-button--dark-FGZgn:disabled{color:var(--ui-nav-fg-3)}.ui-button--light-YzEPs{background-color:var(--ui-surface-2);color:var(--ui-text)}.ui-button--light-YzEPs:hover:not(:disabled){background-color:var(--ui-surface-3)}.ui-button--light-YzEPs:disabled{color:var(--ui-text-3)}.ui-button--ghost-rijnZ{background-color:transparent;color:var(--ui-text-2)}.ui-button--ghost-rijnZ:hover:not(:disabled){background-color:var(--ui-surface-2);color:var(--ui-text)}.ui-button--ghost-rijnZ:active:not(:disabled){background-color:var(--ui-surface-3)}.ui-button--ghost-rijnZ:disabled{color:var(--ui-text-3)}.ui-button--danger-TNGd2{background-color:var(--ui-danger-solid);color:var(--ui-on-danger)}.ui-button--danger-TNGd2:hover:not(:disabled){background-color:var(--ui-danger-solid-hover)}.ui-button--danger-TNGd2:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-danger-solid);outline-offset:var(--ui-ring-offset, 2px)}.ui-button--danger-TNGd2:disabled{background-color:var(--ui-off-bg);color:var(--ui-text-3)}.ui-button__spinner-vexVG{border-color:color-mix(in srgb,currentColor 28%,transparent);border-top-color:currentColor;width:1.15em;height:1.15em;border-width:2px}@media (prefers-reduced-motion: reduce){.ui-button__spinner-vexVG{border-top-color:currentColor}}}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),o=require("react"),s=require("../../helpers/class-name.helper.cjs"),c=require("../../helpers/component.helper.cjs"),x=require("../Link/index.cjs"),d={default:{"card":"ui-card-CaHUG","card--interactive":"ui-card--interactive-C1pXZ","media__frame":"ui-media__frame-eBv-s","media":"ui-media-eggk5","media__link":"ui-media__link-ujyVV","media__frame--cover":"ui-media__frame--cover-ddl29","media__frame--contain":"ui-media__frame--contain-5gosS","media__frame--inset":"ui-media__frame--inset-oVQIn","overlay":"ui-overlay-AVMTX","overlay--top-left":"ui-overlay--top-left-td1xA","overlay--top-right":"ui-overlay--top-right-GqD9H","overlay--bottom-left":"ui-overlay--bottom-left-T5Quw","overlay--bottom-right":"ui-overlay--bottom-right-za3z3","body":"ui-body-DyI-6","footer":"ui-footer-2WNCZ"}},f=({children:e,isInteractive:a,as:r="div",className:l,testId:n})=>t.jsx(r,{className:s.cx(d.default.card,a&&d.default["card--interactive"],l),"data-testid":n,children:e}),v=(e,a)=>e??(a===!1?"cover":"contain"),C=c.named(o.memo(({children:e,ratio:a=1,href:r,linkProps:l,fit:n,isContained:m,className:u})=>{const i=t.jsx("span",{className:s.cx(d.default.media__frame,d.default[`media__frame--${v(n,m)}`]),style:{aspectRatio:a},children:e});return t.jsx("div",{className:s.cx(d.default.media,u),children:r?t.jsx(x.default,{href:r,className:d.default.media__link,tabIndex:-1,"aria-hidden":!0,...l,children:i}):i})}),"CardMedia"),y=c.named(o.memo(({children:e,position:a="top-left",className:r})=>t.jsx("div",{className:s.cx(d.default.overlay,d.default[`overlay--${a}`],r),children:e})),"CardOverlay"),_=c.named(o.memo(({children:e,className:a})=>t.jsx("div",{className:s.cx(d.default.body,a),children:e})),"CardBody"),j=c.named(o.memo(({children:e,className:a})=>t.jsx("div",{className:s.cx(d.default.footer,a),children:e})),"CardFooter"),N=o.memo(f);exports.CardBody=_;exports.CardFooter=j;exports.CardMedia=C;exports.CardOverlay=y;exports.default=N;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Card/index.tsx"],"sourcesContent":["import { type ElementType, type FC, memo, type ReactNode } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport type { UiLinkExtraProps } from '../../types/link.type';\nimport UiLink from '../Link';\n\nimport styles from './index.module.scss';\n\ntype CardProps = {\n children: ReactNode;\n /** Kartın tamamı bir hedefe götürüyorsa hover geri bildirimi açılır. */\n isInteractive?: boolean;\n /** Semantik etiket: liste öğesi kartları `article` olmalı. */\n as?: ElementType;\n className?: string;\n testId?: string;\n};\n\n/**\n * Kart — medya + gövde + eylem şeridi.\n * @example <Card as=\"article\" isInteractive> <CardMedia href=\"/urun/x\" ratio={1}>…\n */\nconst Card: FC<CardProps> = ({ children, isInteractive, as: Tag = 'div', className, testId }) => (\n <Tag\n className={cx(styles.card, isInteractive && styles['card--interactive'], className)}\n data-testid={testId}\n >\n {children}\n </Tag>\n);\n\n/** Görselin çerçeveyi NASIL doldurduğu. */\nexport type CardMediaFit = 'cover' | 'contain' | 'inset';\n\ntype CardMediaProps = {\n children: ReactNode;\n /** Genişlik / yükseklik oranı. */\n ratio?: number;\n /** Medya alanı tıklanabilirse: görsel bağlantının içine alınır. */\n href?: string;\n /** Yönlendiriciye geçirilecek ek props. */\n linkProps?: UiLinkExtraProps;\n /** Görsel çerçeveyi nasıl doldurur — bkz. */\n fit?: CardMediaFit;\n /** @deprecated `fit` kullanın: `isContained` → `fit=\"contain\"`, `isContained={false}` →… */\n isContained?: boolean;\n className?: string;\n};\n\n/** `fit` ile eski `isContained` arasındaki köprü. */\nconst resolveFit = (\n fit: CardMediaFit | undefined,\n isContained: boolean | undefined,\n): CardMediaFit => fit ?? (isContained === false ? 'cover' : 'contain');\n\n/** Kartın görsel alanı. */\nexport const CardMedia: FC<CardMediaProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, ratio = 1, href, linkProps, fit, isContained, className }) => {\n const content = (\n <span\n className={cx(styles.media__frame, styles[`media__frame--${resolveFit(fit, isContained)}`])}\n style={{ aspectRatio: ratio }}\n >\n {children}\n </span>\n );\n\n return (\n <div className={cx(styles.media, className)}>\n {href ? (\n // `tabIndex={-1}` + `aria-hidden`: aynı hedefe giden başlık bağlantısı zaten sekme\n // sırasında.\n <UiLink\n href={href}\n className={styles.media__link}\n tabIndex={-1}\n aria-hidden\n {...linkProps}\n >\n {content}\n </UiLink>\n ) : (\n content\n )}\n </div>\n );\n }),\n 'CardMedia',\n);\n\ntype CardOverlayProps = {\n children: ReactNode;\n position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n className?: string;\n};\n\n/** Görselin üzerine binen katman: rozetler ve hızlı eylemler. */\nexport const CardOverlay: FC<CardOverlayProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, position = 'top-left', className }) => (\n <div className={cx(styles.overlay, styles[`overlay--${position}`], className)}>{children}</div>\n )),\n 'CardOverlay',\n);\n\ntype CardSectionProps = {\n children: ReactNode;\n className?: string;\n};\n\n/** Kartın metin gövdesi: başlık, açıklama, üstyazı. */\nexport const CardBody: FC<CardSectionProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, className }) => (\n <div className={cx(styles.body, className)}>{children}</div>\n )),\n 'CardBody',\n);\n\n/** Eylem şeridi — tutar, düğmeler. */\nexport const CardFooter: FC<CardSectionProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ children, className }) => (\n <div className={cx(styles.footer, className)}>{children}</div>\n )),\n 'CardFooter',\n);\n\nexport default /*#__PURE__*/ memo(Card) as typeof Card;\n"],"names":["Card","children","isInteractive","Tag","className","testId","jsx","cx","styles","resolveFit","fit","isContained","CardMedia","named","memo","ratio","href","linkProps","content","UiLink","CardOverlay","position","CardBody","CardFooter","index"],"mappings":"yUAuBMA,EAAsB,CAAC,CAAE,SAAAC,EAAU,cAAAC,EAAe,GAAIC,EAAM,MAAO,UAAAC,EAAW,OAAAC,CAAA,IAClFC,EAAAA,IAACH,EAAA,CACC,UAAWI,EAAAA,GAAGC,EAAAA,QAAO,KAAMN,GAAiBM,UAAO,mBAAmB,EAAGJ,CAAS,EAClF,cAAaC,EAEZ,SAAAJ,CAAA,CACH,EAsBIQ,EAAa,CACjBC,EACAC,IACiBD,IAAQC,IAAgB,GAAQ,QAAU,WAGhDC,EAA8CC,EAAAA,MAC3CC,EAAAA,KAAK,CAAC,CAAE,SAAAb,EAAU,MAAAc,EAAQ,EAAG,KAAAC,EAAM,UAAAC,EAAW,IAAAP,EAAK,YAAAC,EAAa,UAAAP,KAAgB,CAC5F,MAAMc,EACJZ,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAAA,GAAGC,UAAO,aAAcA,EAAAA,QAAO,iBAAiBC,EAAWC,EAAKC,CAAW,CAAC,EAAE,CAAC,EAC1F,MAAO,CAAE,YAAaI,CAAA,EAErB,SAAAd,CAAA,CAAA,EAIL,aACG,MAAA,CAAI,UAAWM,EAAAA,GAAGC,EAAAA,QAAO,MAAOJ,CAAS,EACvC,SAAAY,EAGCV,EAAAA,IAACa,EAAAA,QAAA,CACC,KAAAH,EACA,UAAWR,EAAAA,QAAO,YAClB,SAAU,GACV,cAAW,GACV,GAAGS,EAEH,SAAAC,CAAA,CAAA,EAGHA,EAEJ,CAEJ,CAAC,EACD,WACF,EASaE,EAAkDP,EAAAA,MAC/CC,OAAK,CAAC,CAAE,SAAAb,EAAU,SAAAoB,EAAW,WAAY,UAAAjB,CAAA,IACrDE,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,QAASA,UAAO,YAAYa,CAAQ,EAAE,EAAGjB,CAAS,EAAI,SAAAH,CAAA,CAAS,CAC1F,EACD,aACF,EAQaqB,EAA+CT,EAAAA,MAC5CC,EAAAA,KAAK,CAAC,CAAE,SAAAb,EAAU,UAAAG,KAC9BE,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,KAAMJ,CAAS,EAAI,SAAAH,EAAS,CACvD,EACD,UACF,EAGasB,EAAiDV,EAAAA,MAC9CC,EAAAA,KAAK,CAAC,CAAE,SAAAb,EAAU,UAAAG,KAC9BE,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQJ,CAAS,EAAI,SAAAH,EAAS,CACzD,EACD,YACF,EAEAuB,SAAkCxB,CAAI"}