@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,102 @@
1
+ "use client";
2
+ import { jsxs as h, jsx as n } from "react/jsx-runtime";
3
+ import { memo as K, useCallback as m } from "react";
4
+ import { normalize as $ } from "@handijit/utils";
5
+ import { cx as M } 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
+ const e = {"range":"ui-range-RpDPh","range--disabled":"ui-range--disabled-13hlc","range__readout":"ui-range__readout-itDMd","range__fill":"ui-range__fill-VXMCE","range__input":"ui-range__input-TAN2I","range__separator":"ui-range__separator-u-ZJX","range__track":"ui-range__track-bCh5Y","range__bounds":"ui-range__bounds-GIhFd"};
9
+ const O = ({
10
+ min: t,
11
+ max: c,
12
+ step: N = 1,
13
+ value: w,
14
+ onChange: d,
15
+ onCommit: o,
16
+ formatValue: i = String,
17
+ label: u,
18
+ minLabel: L,
19
+ maxLabel: U,
20
+ isDisabled: _,
21
+ className: P,
22
+ testId: S
23
+ }) => {
24
+ var y, b;
25
+ const { labels: l } = H(), z = f("RangeSlider.minLabel", L, (y = l == null ? void 0 : l.range) == null ? void 0 : y.min), R = f("RangeSlider.maxLabel", U, (b = l == null ? void 0 : l.range) == null ? void 0 : b.max), [a, r] = w, j = m(
26
+ (s) => d([Math.min(s, r), r]),
27
+ [r, d]
28
+ ), k = m(
29
+ (s) => d([a, Math.max(s, a)]),
30
+ [a, d]
31
+ ), g = m(() => o == null ? void 0 : o([a, r]), [a, r, o]), p = c - t, v = p === 0 ? 0 : $(a - t, p), I = p === 0 ? 0 : $(r - t, p), x = v > 50;
32
+ return /* @__PURE__ */ h(
33
+ "div",
34
+ {
35
+ className: M(e.range, _ && e["range--disabled"], P),
36
+ role: "group",
37
+ "aria-label": u,
38
+ "data-testid": S,
39
+ children: [
40
+ /* @__PURE__ */ h("div", { className: e.range__readout, children: [
41
+ /* @__PURE__ */ n("span", { className: e.range__value, children: i(a) }),
42
+ /* @__PURE__ */ n("span", { className: e.range__separator, "aria-hidden": !0, children: "—" }),
43
+ /* @__PURE__ */ n("span", { className: e.range__value, children: i(r) })
44
+ ] }),
45
+ /* @__PURE__ */ h("div", { className: e.range__track, children: [
46
+ /* @__PURE__ */ n(
47
+ "span",
48
+ {
49
+ className: e.range__fill,
50
+ style: { left: `${v}%`, right: `${100 - I}%` },
51
+ "aria-hidden": !0
52
+ }
53
+ ),
54
+ /* @__PURE__ */ n(
55
+ "input",
56
+ {
57
+ type: "range",
58
+ className: e.range__input,
59
+ style: { zIndex: x ? 4 : 3 },
60
+ min: t,
61
+ max: c,
62
+ step: N,
63
+ value: a,
64
+ disabled: _,
65
+ "aria-label": `${u} — ${z}`,
66
+ "aria-valuetext": i(a),
67
+ onChange: (s) => j(Number(s.target.value)),
68
+ onPointerUp: g,
69
+ onKeyUp: g
70
+ }
71
+ ),
72
+ /* @__PURE__ */ n(
73
+ "input",
74
+ {
75
+ type: "range",
76
+ className: e.range__input,
77
+ style: { zIndex: x ? 3 : 4 },
78
+ min: t,
79
+ max: c,
80
+ step: N,
81
+ value: r,
82
+ disabled: _,
83
+ "aria-label": `${u} — ${R}`,
84
+ "aria-valuetext": i(r),
85
+ onChange: (s) => k(Number(s.target.value)),
86
+ onPointerUp: g,
87
+ onKeyUp: g
88
+ }
89
+ )
90
+ ] }),
91
+ /* @__PURE__ */ h("div", { className: e.range__bounds, "aria-hidden": !0, children: [
92
+ /* @__PURE__ */ n("span", { children: i(t) }),
93
+ /* @__PURE__ */ n("span", { children: i(c) })
94
+ ] })
95
+ ]
96
+ }
97
+ );
98
+ }, J = /* @__PURE__ */ K(O);
99
+ export {
100
+ J as default
101
+ };
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/RangeSlider/index.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback } from 'react';\n\nimport { normalize } from '@handijit/utils';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\nexport type RangeValue = [number, number];\n\ntype Props = {\n min: number;\n max: number;\n step?: number;\n value: RangeValue;\n /** Sürükleme sürerken her adımda çağrılır — ekrandaki değeri günceller. */\n onChange: (value: RangeValue) => void;\n /** Sürükleme bittiğinde çağrılır. */\n onCommit?: (value: RangeValue) => void;\n /** Ham sayıyı okunur metne çevirir (\"125000\" → \"1.250 TL\"). */\n formatValue?: (value: number) => string;\n /** Grubun erişilebilir adı (\"Fiyat aralığı\"). */\n label: string;\n /** Alt kulbun erişilebilir ad eki. */\n minLabel?: string;\n /** Üst kulbun erişilebilir ad eki. */\n maxLabel?: string;\n isDisabled?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Çift kulplu aralık kaydırıcı. */\nconst RangeSlider = ({\n min,\n max,\n step = 1,\n value,\n onChange,\n onCommit,\n formatValue = String,\n label,\n minLabel,\n maxLabel,\n isDisabled,\n className,\n testId,\n}: Props) => {\n const { labels } = useUi();\n const lowName = resolveLabel('RangeSlider.minLabel', minLabel, labels?.range?.min);\n const highName = resolveLabel('RangeSlider.maxLabel', maxLabel, labels?.range?.max);\n const [low, high] = value;\n\n const handleLowChange = useCallback(\n (raw: number) => onChange([Math.min(raw, high), high]),\n [high, onChange],\n );\n\n const handleHighChange = useCallback(\n (raw: number) => onChange([low, Math.max(raw, low)]),\n [low, onChange],\n );\n\n const commit = useCallback(() => onCommit?.([low, high]), [low, high, onCommit]);\n\n /*\n * `normalize` yuzdeyi verir ve 100'de kirpar; olcek sifir genislikte oldugunda (min === max) 0\n * doner.\n */\n const span = max - min;\n const lowPercent = span === 0 ? 0 : normalize(low - min, span);\n const highPercent = span === 0 ? 0 : normalize(high - min, span);\n\n /* Iki kulp ust uste geldiginde hangisinin tutulacagi belirsizlesir. */\n const isLowOnTop = lowPercent > 50;\n\n return (\n <div\n className={cx(styles.range, isDisabled && styles['range--disabled'], className)}\n role=\"group\"\n aria-label={label}\n data-testid={testId}\n >\n <div className={styles.range__readout}>\n <span className={styles.range__value}>{formatValue(low)}</span>\n <span className={styles.range__separator} aria-hidden>\n —\n </span>\n <span className={styles.range__value}>{formatValue(high)}</span>\n </div>\n\n <div className={styles.range__track}>\n {/* Secili aralik: kullanicinin nerede durdugunu tek bakista gosterir. */}\n <span\n className={styles.range__fill}\n style={{ left: `${lowPercent}%`, right: `${100 - highPercent}%` }}\n aria-hidden\n />\n\n <input\n type=\"range\"\n className={styles.range__input}\n style={{ zIndex: isLowOnTop ? 4 : 3 }}\n min={min}\n max={max}\n step={step}\n value={low}\n disabled={isDisabled}\n aria-label={`${label} — ${lowName}`}\n aria-valuetext={formatValue(low)}\n onChange={event => handleLowChange(Number(event.target.value))}\n onPointerUp={commit}\n onKeyUp={commit}\n />\n\n <input\n type=\"range\"\n className={styles.range__input}\n style={{ zIndex: isLowOnTop ? 3 : 4 }}\n min={min}\n max={max}\n step={step}\n value={high}\n disabled={isDisabled}\n aria-label={`${label} — ${highName}`}\n aria-valuetext={formatValue(high)}\n onChange={event => handleHighChange(Number(event.target.value))}\n onPointerUp={commit}\n onKeyUp={commit}\n />\n </div>\n\n {/* Olcegin uclari: kullanici kendi araligini baglama oturtabilmeli. */}\n <div className={styles.range__bounds} aria-hidden>\n <span>{formatValue(min)}</span>\n <span>{formatValue(max)}</span>\n </div>\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(RangeSlider) as typeof RangeSlider;\n"],"names":["RangeSlider","min","max","step","value","onChange","onCommit","formatValue","label","minLabel","maxLabel","isDisabled","className","testId","labels","useUi","lowName","resolveLabel","_a","highName","_b","low","high","handleLowChange","useCallback","raw","handleHighChange","commit","span","lowPercent","normalize","highPercent","isLowOnTop","jsxs","cx","styles","jsx","event","index"],"mappings":";;;;;;;;AAoCA,MAAMA,IAAc,CAAC;AAAA,EACnB,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAAa;;AACX,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACbC,IAAUC,EAAa,wBAAwBR,IAAUS,IAAAJ,KAAA,gBAAAA,EAAQ,UAAR,gBAAAI,EAAe,GAAG,GAC3EC,IAAWF,EAAa,wBAAwBP,IAAUU,IAAAN,KAAA,gBAAAA,EAAQ,UAAR,gBAAAM,EAAe,GAAG,GAC5E,CAACC,GAAKC,CAAI,IAAIlB,GAEdmB,IAAkBC;AAAA,IACtB,CAACC,MAAgBpB,EAAS,CAAC,KAAK,IAAIoB,GAAKH,CAAI,GAAGA,CAAI,CAAC;AAAA,IACrD,CAACA,GAAMjB,CAAQ;AAAA,EAAA,GAGXqB,IAAmBF;AAAA,IACvB,CAACC,MAAgBpB,EAAS,CAACgB,GAAK,KAAK,IAAII,GAAKJ,CAAG,CAAC,CAAC;AAAA,IACnD,CAACA,GAAKhB,CAAQ;AAAA,EAAA,GAGVsB,IAASH,EAAY,MAAMlB,KAAA,gBAAAA,EAAW,CAACe,GAAKC,CAAI,IAAI,CAACD,GAAKC,GAAMhB,CAAQ,CAAC,GAMzEsB,IAAO1B,IAAMD,GACb4B,IAAaD,MAAS,IAAI,IAAIE,EAAUT,IAAMpB,GAAK2B,CAAI,GACvDG,IAAcH,MAAS,IAAI,IAAIE,EAAUR,IAAOrB,GAAK2B,CAAI,GAGzDI,IAAaH,IAAa;AAEhC,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGC,EAAO,OAAOxB,KAAcwB,EAAO,iBAAiB,GAAGvB,CAAS;AAAA,MAC9E,MAAK;AAAA,MACL,cAAYJ;AAAA,MACZ,eAAaK;AAAA,MAEb,UAAA;AAAA,QAAA,gBAAAoB,EAAC,OAAA,EAAI,WAAWE,EAAO,gBACrB,UAAA;AAAA,UAAA,gBAAAC,EAAC,UAAK,WAAWD,EAAO,cAAe,UAAA5B,EAAYc,CAAG,GAAE;AAAA,4BACvD,QAAA,EAAK,WAAWc,EAAO,kBAAkB,eAAW,IAAC,UAAA,KAEtD;AAAA,4BACC,QAAA,EAAK,WAAWA,EAAO,cAAe,UAAA5B,EAAYe,CAAI,EAAA,CAAE;AAAA,QAAA,GAC3D;AAAA,QAEA,gBAAAW,EAAC,OAAA,EAAI,WAAWE,EAAO,cAErB,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD,EAAO;AAAA,cAClB,OAAO,EAAE,MAAM,GAAGN,CAAU,KAAK,OAAO,GAAG,MAAME,CAAW,IAAA;AAAA,cAC5D,eAAW;AAAA,YAAA;AAAA,UAAA;AAAA,UAGb,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWD,EAAO;AAAA,cAClB,OAAO,EAAE,QAAQH,IAAa,IAAI,EAAA;AAAA,cAClC,KAAA/B;AAAA,cACA,KAAAC;AAAA,cACA,MAAAC;AAAA,cACA,OAAOkB;AAAA,cACP,UAAUV;AAAA,cACV,cAAY,GAAGH,CAAK,MAAMQ,CAAO;AAAA,cACjC,kBAAgBT,EAAYc,CAAG;AAAA,cAC/B,UAAU,CAAAgB,MAASd,EAAgB,OAAOc,EAAM,OAAO,KAAK,CAAC;AAAA,cAC7D,aAAaV;AAAA,cACb,SAASA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGX,gBAAAS;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWD,EAAO;AAAA,cAClB,OAAO,EAAE,QAAQH,IAAa,IAAI,EAAA;AAAA,cAClC,KAAA/B;AAAA,cACA,KAAAC;AAAA,cACA,MAAAC;AAAA,cACA,OAAOmB;AAAA,cACP,UAAUX;AAAA,cACV,cAAY,GAAGH,CAAK,MAAMW,CAAQ;AAAA,cAClC,kBAAgBZ,EAAYe,CAAI;AAAA,cAChC,UAAU,CAAAe,MAASX,EAAiB,OAAOW,EAAM,OAAO,KAAK,CAAC;AAAA,cAC9D,aAAaV;AAAA,cACb,SAASA;AAAA,YAAA;AAAA,UAAA;AAAA,QACX,GACF;AAAA,0BAGC,OAAA,EAAI,WAAWQ,EAAO,eAAe,eAAW,IAC/C,UAAA;AAAA,UAAA,gBAAAC,EAAC,QAAA,EAAM,UAAA7B,EAAYN,CAAG,EAAA,CAAE;AAAA,UACxB,gBAAAmC,EAAC,QAAA,EAAM,UAAA7B,EAAYL,CAAG,EAAA,CAAE;AAAA,QAAA,EAAA,CAC1B;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEAoC,sBAAkCtC,CAAW;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-range-RpDPh{display:flex;flex-direction:column;gap:var(--ui-space-2)}.ui-range--disabled-13hlc{pointer-events:none}.ui-range--disabled-13hlc .ui-range__readout-itDMd{color:var(--ui-text-3)}@media (forced-colors: active){.ui-range--disabled-13hlc .ui-range__readout-itDMd{color:GrayText}}.ui-range--disabled-13hlc .ui-range__fill-VXMCE{background-color:var(--ui-action-soft)}.ui-range--disabled-13hlc .ui-range__input-TAN2I::-webkit-slider-thumb{background-color:var(--ui-surface-2);border-color:var(--ui-action-soft);box-shadow:none}.ui-range--disabled-13hlc .ui-range__input-TAN2I::-moz-range-thumb{background-color:var(--ui-surface-2);border-color:var(--ui-action-soft);box-shadow:none}.ui-range__readout-itDMd{display:flex;align-items:center;gap:var(--ui-space-2);justify-content:center;font-family:var(--ui-font-heading);font-size:var(--ui-font-size-sm);font-weight:600;color:var(--ui-text);font-variant-numeric:tabular-nums}.ui-range__separator-u-ZJX{color:var(--ui-text-3);font-weight:400}.ui-range__track-bCh5Y{position:relative;height:32px;display:flex;align-items:center}.ui-range__track-bCh5Y:before{content:"";position:absolute;inset-inline:0;height:4px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface-3)}.ui-range__fill-VXMCE{position:absolute;height:4px;border-radius:var(--ui-radius-pill);background-color:var(--ui-selected)}.ui-range__input-TAN2I{position:absolute;inset-inline-start:0;width:100%;height:32px;margin:0;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:none}.ui-range__input-TAN2I::-webkit-slider-runnable-track{height:4px;background:transparent}.ui-range__input-TAN2I::-moz-range-track{height:4px;background:transparent}.ui-range__input-TAN2I::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:auto;width:20px;height:20px;margin-top:-8px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface);border:2px solid var(--ui-selected);box-shadow:var(--ui-shadow-sm);cursor:grab;transition:transform var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out)}.ui-range__input-TAN2I::-moz-range-thumb{pointer-events:auto;width:20px;height:20px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface);border:2px solid var(--ui-selected);box-shadow:var(--ui-shadow-sm);cursor:grab;transition:transform var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out)}.ui-range__input-TAN2I:hover::-webkit-slider-thumb{transform:scale(1.1)}.ui-range__input-TAN2I:hover::-moz-range-thumb{transform:scale(1.1)}.ui-range__input-TAN2I:active::-webkit-slider-thumb{cursor:grabbing;box-shadow:var(--ui-ring)}.ui-range__input-TAN2I:active::-moz-range-thumb{cursor:grabbing;box-shadow:var(--ui-ring)}.ui-range__input-TAN2I:focus{outline:none}.ui-range__input-TAN2I:focus-visible::-webkit-slider-thumb{box-shadow:var(--ui-ring);border-color:var(--ui-selected-active)}.ui-range__input-TAN2I:focus-visible::-moz-range-thumb{box-shadow:var(--ui-ring);border-color:var(--ui-selected-active)}@media (prefers-reduced-motion: reduce){.ui-range__input-TAN2I::-webkit-slider-thumb,.ui-range__input-TAN2I::-moz-range-thumb{transition:none}}.ui-range__bounds-GIhFd{display:flex;align-items:center;gap:var(--ui-space-2);justify-content:space-between;font-size:var(--ui-font-size-2xs);color:var(--ui-text-3);font-variant-numeric:tabular-nums}}
@@ -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"),f=require("react"),g=require("@handijit/utils"),n=require("react-bootstrap-icons"),h=require("../../helpers/class-name.helper.cjs"),p=require("../../helpers/label.helper.cjs"),j=require("../../theme/context.cjs"),r={default:{"rating":"ui-rating-94dke","rating__stars":"ui-rating__stars-QkpVU","rating__empty":"ui-rating__empty-Wf6-K","rating__count":"ui-rating__count-pIoEs","rating__srOnly":"ui-rating__srOnly-E9h0d","rating--sm":"ui-rating--sm-AtY7U","rating--md":"ui-rating--md-Q0nxN"}},x=({value:i,count:s,srLabel:o,size:d="sm",className:m,testId:_})=>{var u;const{labels:a}=j.useUi(),l=Math.round(i*2)/2;return e.jsxs("span",{className:h.cx(r.default.rating,r.default[`rating--${d}`],m),"data-testid":_,children:[e.jsx("span",{className:r.default.rating__stars,"aria-hidden":!0,children:Array.from({length:5},(N,t)=>{const c=t+1;return l>=c?e.jsx(n.StarFill,{},t):l>=c-.5?e.jsx(n.StarHalf,{},t):e.jsx(n.StarFill,{className:r.default.rating__empty},t)})}),e.jsx("span",{className:r.default.rating__srOnly,children:o??p.resolveFormatter("Rating.srLabel",(u=a==null?void 0:a.rating)==null?void 0:u.srLabel,i,s)}),g.isDefined(s)&&e.jsxs("span",{className:r.default.rating__count,"aria-hidden":!0,children:["(",s,")"]})]})},q=f.memo(x);exports.default=q;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Rating/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { isDefined } from '@handijit/utils';\n\nimport { StarFill, StarHalf } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /** 0–5 arası puan. */\n value: number;\n /** Değerlendirme sayısı; verilirse yıldızların yanında gösterilir. */\n count?: number;\n /** Ekran okuyucuya okunan metin. */\n srLabel?: string;\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\n/** Yıldız puanı — salt gösterim. */\nconst Rating: FC<Props> = ({ value, count, srLabel, size = 'sm', className, testId }) => {\n const { labels } = useUi();\n const rounded = Math.round(value * 2) / 2;\n\n return (\n <span className={cx(styles.rating, styles[`rating--${size}`], className)} data-testid={testId}>\n {/*\n * BOS YILDIZ DA DOLU — farkı renk taşır (`rating__empty`), çizgi değil.\n *\n * <p>İçi boş yıldız yalnızca bir konturdur: dolu komşusunun yanında\n * \"eksik çizilmiş\" gibi durur ve küçük boyda kontur tek piksele inip\n * kayboluyordu. Aynı gövde + soluk ton, beş yıldızın silüetini bozmadan\n * doluluğu okutur.\n */}\n <span className={styles.rating__stars} aria-hidden>\n {Array.from({ length: 5 }, (_, index) => {\n const position = index + 1;\n if (rounded >= position) return <StarFill key={index} />;\n if (rounded >= position - 0.5) return <StarHalf key={index} />;\n return <StarFill key={index} className={styles.rating__empty} />;\n })}\n </span>\n\n <span className={styles.rating__srOnly}>\n {srLabel ?? resolveFormatter('Rating.srLabel', labels?.rating?.srLabel, value, count)}\n </span>\n\n {isDefined(count) && (\n <span className={styles.rating__count} aria-hidden>\n ({count})\n </span>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Rating) as typeof Rating;\n"],"names":["Rating","value","count","srLabel","size","className","testId","labels","useUi","rounded","jsxs","cx","styles","jsx","_","index","position","StarFill","StarHalf","resolveFormatter","_a","isDefined"],"mappings":"wZA0BMA,EAAoB,CAAC,CAAE,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,KAAAC,EAAO,KAAM,UAAAC,EAAW,OAAAC,KAAa,OACvF,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EACbC,EAAU,KAAK,MAAMR,EAAQ,CAAC,EAAI,EAExC,OACES,EAAAA,KAAC,OAAA,CAAK,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQA,EAAAA,QAAO,WAAWR,CAAI,EAAE,EAAGC,CAAS,EAAG,cAAaC,EASrF,SAAA,CAAAO,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,cAAe,cAAW,GAC/C,SAAA,MAAM,KAAK,CAAE,OAAQ,CAAA,EAAK,CAACE,EAAGC,IAAU,CACvC,MAAMC,EAAWD,EAAQ,EACzB,OAAIN,GAAWO,EAAiBH,EAAAA,IAACI,EAAAA,YAAcF,CAAO,EAClDN,GAAWO,EAAW,GAAYH,EAAAA,IAACK,EAAAA,YAAcH,CAAO,EACrDF,EAAAA,IAACI,EAAAA,SAAA,CAAqB,UAAWL,EAAAA,QAAO,eAAzBG,CAAwC,CAChE,CAAC,CAAA,CACH,EAEAF,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,eACrB,SAAAT,GAAWgB,EAAAA,iBAAiB,kBAAkBC,EAAAb,GAAA,YAAAA,EAAQ,SAAR,YAAAa,EAAgB,QAASnB,EAAOC,CAAK,EACtF,EAECmB,EAAAA,UAAUnB,CAAK,GACdQ,EAAAA,KAAC,QAAK,UAAWE,EAAAA,QAAO,cAAe,cAAW,GAAC,SAAA,CAAA,IAC/CV,EAAM,GAAA,CAAA,CACV,CAAA,EAEJ,CAEJ,EAEAa,SAAkCf,CAAM"}
@@ -0,0 +1,16 @@
1
+ import { FC } from 'react';
2
+ type Props = {
3
+ /** 0–5 arası puan. */
4
+ value: number;
5
+ /** Değerlendirme sayısı; verilirse yıldızların yanında gösterilir. */
6
+ count?: number;
7
+ /** Ekran okuyucuya okunan metin. */
8
+ srLabel?: string;
9
+ size?: 'sm' | 'md';
10
+ className?: string;
11
+ testId?: string;
12
+ };
13
+ /** Yıldız puanı — salt gösterim. */
14
+ declare const Rating: FC<Props>;
15
+ declare const _default: typeof Rating;
16
+ export default _default;
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { jsxs as l, jsx as t } from "react/jsx-runtime";
3
+ import { memo as u } from "react";
4
+ import { isDefined as _ } from "@handijit/utils";
5
+ import { StarFill as c, StarHalf as h } from "react-bootstrap-icons";
6
+ import { cx as N } from "../../helpers/class-name.helper.js";
7
+ import { resolveFormatter as y } from "../../helpers/label.helper.js";
8
+ import { useUi as j } from "../../theme/context.js";
9
+ const r = {"rating":"ui-rating-94dke","rating__stars":"ui-rating__stars-QkpVU","rating__empty":"ui-rating__empty-Wf6-K","rating__count":"ui-rating__count-pIoEs","rating__srOnly":"ui-rating__srOnly-E9h0d","rating--sm":"ui-rating--sm-AtY7U","rating--md":"ui-rating--md-Q0nxN"};
10
+ const x = ({ value: n, count: s, srLabel: p, size: f = "sm", className: d, testId: g }) => {
11
+ var o;
12
+ const { labels: i } = j(), e = Math.round(n * 2) / 2;
13
+ return /* @__PURE__ */ l("span", { className: N(r.rating, r[`rating--${f}`], d), "data-testid": g, children: [
14
+ /* @__PURE__ */ t("span", { className: r.rating__stars, "aria-hidden": !0, children: Array.from({ length: 5 }, (F, a) => {
15
+ const m = a + 1;
16
+ return e >= m ? /* @__PURE__ */ t(c, {}, a) : e >= m - 0.5 ? /* @__PURE__ */ t(h, {}, a) : /* @__PURE__ */ t(c, { className: r.rating__empty }, a);
17
+ }) }),
18
+ /* @__PURE__ */ t("span", { className: r.rating__srOnly, children: p ?? y("Rating.srLabel", (o = i == null ? void 0 : i.rating) == null ? void 0 : o.srLabel, n, s) }),
19
+ _(s) && /* @__PURE__ */ l("span", { className: r.rating__count, "aria-hidden": !0, children: [
20
+ "(",
21
+ s,
22
+ ")"
23
+ ] })
24
+ ] });
25
+ }, O = /* @__PURE__ */ u(x);
26
+ export {
27
+ O as default
28
+ };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Rating/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { isDefined } from '@handijit/utils';\n\nimport { StarFill, StarHalf } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /** 0–5 arası puan. */\n value: number;\n /** Değerlendirme sayısı; verilirse yıldızların yanında gösterilir. */\n count?: number;\n /** Ekran okuyucuya okunan metin. */\n srLabel?: string;\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\n/** Yıldız puanı — salt gösterim. */\nconst Rating: FC<Props> = ({ value, count, srLabel, size = 'sm', className, testId }) => {\n const { labels } = useUi();\n const rounded = Math.round(value * 2) / 2;\n\n return (\n <span className={cx(styles.rating, styles[`rating--${size}`], className)} data-testid={testId}>\n {/*\n * BOS YILDIZ DA DOLU — farkı renk taşır (`rating__empty`), çizgi değil.\n *\n * <p>İçi boş yıldız yalnızca bir konturdur: dolu komşusunun yanında\n * \"eksik çizilmiş\" gibi durur ve küçük boyda kontur tek piksele inip\n * kayboluyordu. Aynı gövde + soluk ton, beş yıldızın silüetini bozmadan\n * doluluğu okutur.\n */}\n <span className={styles.rating__stars} aria-hidden>\n {Array.from({ length: 5 }, (_, index) => {\n const position = index + 1;\n if (rounded >= position) return <StarFill key={index} />;\n if (rounded >= position - 0.5) return <StarHalf key={index} />;\n return <StarFill key={index} className={styles.rating__empty} />;\n })}\n </span>\n\n <span className={styles.rating__srOnly}>\n {srLabel ?? resolveFormatter('Rating.srLabel', labels?.rating?.srLabel, value, count)}\n </span>\n\n {isDefined(count) && (\n <span className={styles.rating__count} aria-hidden>\n ({count})\n </span>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Rating) as typeof Rating;\n"],"names":["Rating","value","count","srLabel","size","className","testId","labels","useUi","rounded","jsxs","cx","styles","jsx","_","index","position","StarFill","StarHalf","resolveFormatter","_a","isDefined"],"mappings":";;;;;;;;;AA0BA,MAAMA,IAAoB,CAAC,EAAE,OAAAC,GAAO,OAAAC,GAAO,SAAAC,GAAS,MAAAC,IAAO,MAAM,WAAAC,GAAW,QAAAC,QAAa;;AACvF,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACbC,IAAU,KAAK,MAAMR,IAAQ,CAAC,IAAI;AAExC,SACE,gBAAAS,EAAC,QAAA,EAAK,WAAWC,EAAGC,EAAO,QAAQA,EAAO,WAAWR,CAAI,EAAE,GAAGC,CAAS,GAAG,eAAaC,GASrF,UAAA;AAAA,IAAA,gBAAAO,EAAC,QAAA,EAAK,WAAWD,EAAO,eAAe,eAAW,IAC/C,UAAA,MAAM,KAAK,EAAE,QAAQ,EAAA,GAAK,CAACE,GAAGC,MAAU;AACvC,YAAMC,IAAWD,IAAQ;AACzB,aAAIN,KAAWO,IAAiB,gBAAAH,EAACI,OAAcF,CAAO,IAClDN,KAAWO,IAAW,MAAY,gBAAAH,EAACK,OAAcH,CAAO,IACrD,gBAAAF,EAACI,GAAA,EAAqB,WAAWL,EAAO,iBAAzBG,CAAwC;AAAA,IAChE,CAAC,EAAA,CACH;AAAA,IAEA,gBAAAF,EAAC,QAAA,EAAK,WAAWD,EAAO,gBACrB,UAAAT,KAAWgB,EAAiB,mBAAkBC,IAAAb,KAAA,gBAAAA,EAAQ,WAAR,gBAAAa,EAAgB,SAASnB,GAAOC,CAAK,GACtF;AAAA,IAECmB,EAAUnB,CAAK,KACd,gBAAAQ,EAAC,UAAK,WAAWE,EAAO,eAAe,eAAW,IAAC,UAAA;AAAA,MAAA;AAAA,MAC/CV;AAAA,MAAM;AAAA,IAAA,EAAA,CACV;AAAA,EAAA,GAEJ;AAEJ,GAEAa,sBAAkCf,CAAM;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-rating-94dke{display:inline-flex;align-items:center;gap:var(--ui-space-2)}.ui-rating__stars-QkpVU{display:inline-flex;gap:1px;color:var(--ui-star)}.ui-rating__empty-Wf6-K{color:var(--ui-border-strong)}.ui-rating__count-pIoEs{font-size:var(--ui-font-size-xs);color:var(--ui-text-2);font-variant-numeric:tabular-nums}.ui-rating__srOnly-E9h0d{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-rating--sm-AtY7U .ui-rating__stars-QkpVU{font-size:var(--ui-icon-sm)}.ui-rating--md-Q0nxN .ui-rating__stars-QkpVU{font-size:var(--ui-icon-md)}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),i=require("react"),q=require("react-bootstrap-icons"),_=require("../../helpers/class-name.helper.cjs"),v=require("../../helpers/label.helper.cjs"),S=require("../../theme/context.cjs"),e={default:{"rating":"ui-rating-neNnF","rating--disabled":"ui-rating--disabled-ZKjHa","rating__legend":"ui-rating__legend-uYvFS","rating__caption":"ui-rating__caption-13KFX","rating__star--filled":"ui-rating__star--filled-L3AkT","rating__star":"ui-rating__star-BANFJ","rating__stars":"ui-rating__stars-vJFLk","rating__input":"ui-rating__input-s2iiO","rating__srOnly":"ui-rating__srOnly-iSCoz"}},I=[1,2,3,4,5],M=({value:l,onChange:g,label:m,ratingLabels:f,formatStarCount:h,isDisabled:u,className:x,testId:p})=>{var o;const{labels:a}=S.useUi(),s=f??((o=a==null?void 0:a.rating)==null?void 0:o.scale),j=i.useId(),[N,d]=i.useState(null),r=N??l;return n.jsxs("fieldset",{className:_.cx(e.default.rating,u&&e.default["rating--disabled"],x),disabled:u,"data-testid":p,children:[n.jsx("legend",{className:e.default.rating__legend,children:m}),n.jsx("div",{className:e.default.rating__stars,onMouseLeave:()=>d(null),children:I.map(t=>{var c;return n.jsxs("label",{className:_.cx(e.default.rating__star,r!==null&&t<=r&&e.default["rating__star--filled"]),onMouseEnter:()=>d(t),children:[n.jsx("input",{type:"radio",name:j,value:t,checked:l===t,onChange:()=>g(t),className:e.default.rating__input}),n.jsx(q.StarFill,{"aria-hidden":!0}),n.jsxs("span",{className:e.default.rating__srOnly,children:[v.resolveFormatter("RatingInput.formatStarCount",h??((c=a==null?void 0:a.rating)==null?void 0:c.starCount),t)," ","— ",(s==null?void 0:s[t])??""]})]},t)})}),r!==null&&n.jsx("span",{className:e.default.rating__caption,"aria-hidden":!0,children:(s==null?void 0:s[r])??""})]})},R=i.memo(M);exports.default=R;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/RatingInput/index.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useId, useState } from 'react';\n\nimport { StarFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\n/** Beş puanın her birinin ne anlama geldiği. */\nexport type RatingLabels = Record<1 | 2 | 3 | 4 | 5, string>;\n\ntype Props = {\n value: number | null;\n onChange: (value: number) => void;\n /** Grubun erişilebilir adı (\"Ürün puanı\"). */\n label: string;\n /**\n * Puan açıklamaları. Hem ekran okuyucuya okunur hem de seçildiğinde yıldızların altında yazar.\n */\n ratingLabels?: RatingLabels;\n /** Ekran okuyucuda yıldız sayısını okuyan biçimlendirici (\"4 yıldız\"). */\n formatStarCount?: (star: number) => string;\n isDisabled?: boolean;\n className?: string;\n testId?: string;\n};\n\nconst STARS = [1, 2, 3, 4, 5] as const;\n\n/** Yıldızla puan girişi. */\nconst RatingInput = ({\n value,\n onChange,\n label,\n ratingLabels,\n formatStarCount,\n isDisabled,\n className,\n testId,\n}: Props) => {\n const { labels } = useUi();\n const scale = ratingLabels ?? labels?.rating?.scale;\n const name = useId();\n const [hovered, setHovered] = useState<number | null>(null);\n\n // Fare yildizlarin uzerindeyken onizleme gosterilir; ayrilinca gercek secime doner.\n const shown = hovered ?? value;\n\n return (\n <fieldset\n className={cx(styles.rating, isDisabled && styles['rating--disabled'], className)}\n disabled={isDisabled}\n data-testid={testId}\n >\n <legend className={styles.rating__legend}>{label}</legend>\n\n <div className={styles.rating__stars} onMouseLeave={() => setHovered(null)}>\n {STARS.map(star => (\n <label\n key={star}\n className={cx(\n styles.rating__star,\n shown !== null && star <= shown && styles['rating__star--filled'],\n )}\n onMouseEnter={() => setHovered(star)}\n >\n <input\n type=\"radio\"\n name={name}\n value={star}\n checked={value === star}\n onChange={() => onChange(star)}\n className={styles.rating__input}\n />\n <StarFill aria-hidden />\n <span className={styles.rating__srOnly}>\n {resolveFormatter(\n 'RatingInput.formatStarCount',\n formatStarCount ?? labels?.rating?.starCount,\n star,\n )}{' '}\n — {scale?.[star] ?? ''}\n </span>\n </label>\n ))}\n </div>\n\n {/* Secim metni: `aria-hidden` cunku ayni bilgi radyonun etiketinde var. */}\n {shown !== null && (\n <span className={styles.rating__caption} aria-hidden>\n {scale?.[shown as 1 | 2 | 3 | 4 | 5] ?? ''}\n </span>\n )}\n </fieldset>\n );\n};\n\nexport default /*#__PURE__*/ memo(RatingInput) as typeof RatingInput;\n"],"names":["STARS","RatingInput","value","onChange","label","ratingLabels","formatStarCount","isDisabled","className","testId","labels","useUi","scale","_a","name","useId","hovered","setHovered","useState","shown","jsxs","cx","styles","jsx","star","StarFill","resolveFormatter","index"],"mappings":"2XA8BMA,EAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,CAAC,EAGtBC,EAAc,CAAC,CACnB,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,UAAAC,EACA,OAAAC,CACF,IAAa,OACX,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EACbC,EAAQP,KAAgBQ,EAAAH,GAAA,YAAAA,EAAQ,SAAR,YAAAG,EAAgB,OACxCC,EAAOC,EAAAA,MAAA,EACP,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAwB,IAAI,EAGpDC,EAAQH,GAAWd,EAEzB,OACEkB,EAAAA,KAAC,WAAA,CACC,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQf,GAAce,UAAO,kBAAkB,EAAGd,CAAS,EAChF,SAAUD,EACV,cAAaE,EAEb,SAAA,CAAAc,EAAAA,IAAC,SAAA,CAAO,UAAWD,EAAAA,QAAO,eAAiB,SAAAlB,EAAM,EAEjDmB,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,cAAe,aAAc,IAAML,EAAW,IAAI,EACtE,SAAAjB,EAAM,IAAIwB,GAAA,OACTJ,OAAAA,EAAAA,KAAC,QAAA,CAEC,UAAWC,EAAAA,GACTC,EAAAA,QAAO,aACPH,IAAU,MAAQK,GAAQL,GAASG,EAAAA,QAAO,sBAAsB,CAAA,EAElE,aAAc,IAAML,EAAWO,CAAI,EAEnC,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACC,KAAK,QACL,KAAAT,EACA,MAAOU,EACP,QAAStB,IAAUsB,EACnB,SAAU,IAAMrB,EAASqB,CAAI,EAC7B,UAAWF,EAAAA,QAAO,aAAA,CAAA,EAEpBC,EAAAA,IAACE,EAAAA,SAAA,CAAS,cAAW,EAAA,CAAC,EACtBL,EAAAA,KAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,eACrB,SAAA,CAAAI,EAAAA,iBACC,8BACApB,KAAmBO,EAAAH,GAAA,YAAAA,EAAQ,SAAR,YAAAG,EAAgB,WACnCW,CAAA,EACC,IAAI,MACJZ,GAAA,YAAAA,EAAQY,KAAS,EAAA,CAAA,CACtB,CAAA,CAAA,EAvBKA,CAAA,EAyBR,EACH,EAGCL,IAAU,MACTI,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,gBAAiB,cAAW,GACjD,UAAAV,GAAA,YAAAA,EAAQO,KAA+B,EAAA,CAC1C,CAAA,CAAA,CAAA,CAIR,EAEAQ,SAAkC1B,CAAW"}
@@ -0,0 +1,21 @@
1
+ /** Beş puanın her birinin ne anlama geldiği. */
2
+ export type RatingLabels = Record<1 | 2 | 3 | 4 | 5, string>;
3
+ type Props = {
4
+ value: number | null;
5
+ onChange: (value: number) => void;
6
+ /** Grubun erişilebilir adı ("Ürün puanı"). */
7
+ label: string;
8
+ /**
9
+ * Puan açıklamaları. Hem ekran okuyucuya okunur hem de seçildiğinde yıldızların altında yazar.
10
+ */
11
+ ratingLabels?: RatingLabels;
12
+ /** Ekran okuyucuda yıldız sayısını okuyan biçimlendirici ("4 yıldız"). */
13
+ formatStarCount?: (star: number) => string;
14
+ isDisabled?: boolean;
15
+ className?: string;
16
+ testId?: string;
17
+ };
18
+ /** Yıldızla puan girişi. */
19
+ declare const RatingInput: ({ value, onChange, label, ratingLabels, formatStarCount, isDisabled, className, testId, }: Props) => import("react").JSX.Element;
20
+ declare const _default: typeof RatingInput;
21
+ export default _default;
@@ -0,0 +1,75 @@
1
+ "use client";
2
+ import { jsxs as o, jsx as a } from "react/jsx-runtime";
3
+ import { memo as S, useId as y, useState as C } from "react";
4
+ import { StarFill as I } from "react-bootstrap-icons";
5
+ import { cx as u } from "../../helpers/class-name.helper.js";
6
+ import { resolveFormatter as R } from "../../helpers/label.helper.js";
7
+ import { useUi as j } from "../../theme/context.js";
8
+ const n = {"rating":"ui-rating-neNnF","rating--disabled":"ui-rating--disabled-ZKjHa","rating__legend":"ui-rating__legend-uYvFS","rating__caption":"ui-rating__caption-13KFX","rating__star--filled":"ui-rating__star--filled-L3AkT","rating__star":"ui-rating__star-BANFJ","rating__stars":"ui-rating__stars-vJFLk","rating__input":"ui-rating__input-s2iiO","rating__srOnly":"ui-rating__srOnly-iSCoz"};
9
+ const F = [1, 2, 3, 4, 5], M = ({
10
+ value: s,
11
+ onChange: p,
12
+ label: g,
13
+ ratingLabels: _,
14
+ formatStarCount: h,
15
+ isDisabled: l,
16
+ className: f,
17
+ testId: N
18
+ }) => {
19
+ var m;
20
+ const { labels: e } = j(), r = _ ?? ((m = e == null ? void 0 : e.rating) == null ? void 0 : m.scale), v = y(), [x, d] = C(null), i = x ?? s;
21
+ return /* @__PURE__ */ o(
22
+ "fieldset",
23
+ {
24
+ className: u(n.rating, l && n["rating--disabled"], f),
25
+ disabled: l,
26
+ "data-testid": N,
27
+ children: [
28
+ /* @__PURE__ */ a("legend", { className: n.rating__legend, children: g }),
29
+ /* @__PURE__ */ a("div", { className: n.rating__stars, onMouseLeave: () => d(null), children: F.map((t) => {
30
+ var c;
31
+ return /* @__PURE__ */ o(
32
+ "label",
33
+ {
34
+ className: u(
35
+ n.rating__star,
36
+ i !== null && t <= i && n["rating__star--filled"]
37
+ ),
38
+ onMouseEnter: () => d(t),
39
+ children: [
40
+ /* @__PURE__ */ a(
41
+ "input",
42
+ {
43
+ type: "radio",
44
+ name: v,
45
+ value: t,
46
+ checked: s === t,
47
+ onChange: () => p(t),
48
+ className: n.rating__input
49
+ }
50
+ ),
51
+ /* @__PURE__ */ a(I, { "aria-hidden": !0 }),
52
+ /* @__PURE__ */ o("span", { className: n.rating__srOnly, children: [
53
+ R(
54
+ "RatingInput.formatStarCount",
55
+ h ?? ((c = e == null ? void 0 : e.rating) == null ? void 0 : c.starCount),
56
+ t
57
+ ),
58
+ " ",
59
+ "— ",
60
+ (r == null ? void 0 : r[t]) ?? ""
61
+ ] })
62
+ ]
63
+ },
64
+ t
65
+ );
66
+ }) }),
67
+ i !== null && /* @__PURE__ */ a("span", { className: n.rating__caption, "aria-hidden": !0, children: (r == null ? void 0 : r[i]) ?? "" })
68
+ ]
69
+ }
70
+ );
71
+ }, T = /* @__PURE__ */ S(M);
72
+ export {
73
+ T as default
74
+ };
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/RatingInput/index.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useId, useState } from 'react';\n\nimport { StarFill } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\n/** Beş puanın her birinin ne anlama geldiği. */\nexport type RatingLabels = Record<1 | 2 | 3 | 4 | 5, string>;\n\ntype Props = {\n value: number | null;\n onChange: (value: number) => void;\n /** Grubun erişilebilir adı (\"Ürün puanı\"). */\n label: string;\n /**\n * Puan açıklamaları. Hem ekran okuyucuya okunur hem de seçildiğinde yıldızların altında yazar.\n */\n ratingLabels?: RatingLabels;\n /** Ekran okuyucuda yıldız sayısını okuyan biçimlendirici (\"4 yıldız\"). */\n formatStarCount?: (star: number) => string;\n isDisabled?: boolean;\n className?: string;\n testId?: string;\n};\n\nconst STARS = [1, 2, 3, 4, 5] as const;\n\n/** Yıldızla puan girişi. */\nconst RatingInput = ({\n value,\n onChange,\n label,\n ratingLabels,\n formatStarCount,\n isDisabled,\n className,\n testId,\n}: Props) => {\n const { labels } = useUi();\n const scale = ratingLabels ?? labels?.rating?.scale;\n const name = useId();\n const [hovered, setHovered] = useState<number | null>(null);\n\n // Fare yildizlarin uzerindeyken onizleme gosterilir; ayrilinca gercek secime doner.\n const shown = hovered ?? value;\n\n return (\n <fieldset\n className={cx(styles.rating, isDisabled && styles['rating--disabled'], className)}\n disabled={isDisabled}\n data-testid={testId}\n >\n <legend className={styles.rating__legend}>{label}</legend>\n\n <div className={styles.rating__stars} onMouseLeave={() => setHovered(null)}>\n {STARS.map(star => (\n <label\n key={star}\n className={cx(\n styles.rating__star,\n shown !== null && star <= shown && styles['rating__star--filled'],\n )}\n onMouseEnter={() => setHovered(star)}\n >\n <input\n type=\"radio\"\n name={name}\n value={star}\n checked={value === star}\n onChange={() => onChange(star)}\n className={styles.rating__input}\n />\n <StarFill aria-hidden />\n <span className={styles.rating__srOnly}>\n {resolveFormatter(\n 'RatingInput.formatStarCount',\n formatStarCount ?? labels?.rating?.starCount,\n star,\n )}{' '}\n — {scale?.[star] ?? ''}\n </span>\n </label>\n ))}\n </div>\n\n {/* Secim metni: `aria-hidden` cunku ayni bilgi radyonun etiketinde var. */}\n {shown !== null && (\n <span className={styles.rating__caption} aria-hidden>\n {scale?.[shown as 1 | 2 | 3 | 4 | 5] ?? ''}\n </span>\n )}\n </fieldset>\n );\n};\n\nexport default /*#__PURE__*/ memo(RatingInput) as typeof RatingInput;\n"],"names":["STARS","RatingInput","value","onChange","label","ratingLabels","formatStarCount","isDisabled","className","testId","labels","useUi","scale","_a","name","useId","hovered","setHovered","useState","shown","jsxs","cx","styles","jsx","star","StarFill","resolveFormatter","index"],"mappings":";;;;;;;;AA8BA,MAAMA,IAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAGtBC,IAAc,CAAC;AAAA,EACnB,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,MAAa;;AACX,QAAM,EAAE,QAAAC,EAAA,IAAWC,EAAA,GACbC,IAAQP,OAAgBQ,IAAAH,KAAA,gBAAAA,EAAQ,WAAR,gBAAAG,EAAgB,QACxCC,IAAOC,EAAA,GACP,CAACC,GAASC,CAAU,IAAIC,EAAwB,IAAI,GAGpDC,IAAQH,KAAWd;AAEzB,SACE,gBAAAkB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGC,EAAO,QAAQf,KAAce,EAAO,kBAAkB,GAAGd,CAAS;AAAA,MAChF,UAAUD;AAAA,MACV,eAAaE;AAAA,MAEb,UAAA;AAAA,QAAA,gBAAAc,EAAC,UAAA,EAAO,WAAWD,EAAO,gBAAiB,UAAAlB,GAAM;AAAA,QAEjD,gBAAAmB,EAAC,OAAA,EAAI,WAAWD,EAAO,eAAe,cAAc,MAAML,EAAW,IAAI,GACtE,UAAAjB,EAAM,IAAI,CAAAwB,MAAA;;AACT,iCAAAJ;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWC;AAAA,gBACTC,EAAO;AAAA,gBACPH,MAAU,QAAQK,KAAQL,KAASG,EAAO,sBAAsB;AAAA,cAAA;AAAA,cAElE,cAAc,MAAML,EAAWO,CAAI;AAAA,cAEnC,UAAA;AAAA,gBAAA,gBAAAD;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,MAAAT;AAAA,oBACA,OAAOU;AAAA,oBACP,SAAStB,MAAUsB;AAAA,oBACnB,UAAU,MAAMrB,EAASqB,CAAI;AAAA,oBAC7B,WAAWF,EAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEpB,gBAAAC,EAACE,GAAA,EAAS,eAAW,GAAA,CAAC;AAAA,gBACtB,gBAAAL,EAAC,QAAA,EAAK,WAAWE,EAAO,gBACrB,UAAA;AAAA,kBAAAI;AAAA,oBACC;AAAA,oBACApB,OAAmBO,IAAAH,KAAA,gBAAAA,EAAQ,WAAR,gBAAAG,EAAgB;AAAA,oBACnCW;AAAA,kBAAA;AAAA,kBACC;AAAA,kBAAI;AAAA,mBACJZ,KAAA,gBAAAA,EAAQY,OAAS;AAAA,gBAAA,EAAA,CACtB;AAAA,cAAA;AAAA,YAAA;AAAA,YAvBKA;AAAA,UAAA;AAAA,SAyBR,GACH;AAAA,QAGCL,MAAU,QACT,gBAAAI,EAAC,QAAA,EAAK,WAAWD,EAAO,iBAAiB,eAAW,IACjD,WAAAV,KAAA,gBAAAA,EAAQO,OAA+B,GAAA,CAC1C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,GAEAQ,sBAAkC1B,CAAW;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-rating-neNnF{border:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--ui-space-2)}.ui-rating--disabled-ZKjHa .ui-rating__legend-uYvFS,.ui-rating--disabled-ZKjHa .ui-rating__caption-13KFX,.ui-rating--disabled-ZKjHa .ui-rating__star--filled-L3AkT{color:var(--ui-text-3)}@media (forced-colors: active){.ui-rating--disabled-ZKjHa .ui-rating__legend-uYvFS,.ui-rating--disabled-ZKjHa .ui-rating__caption-13KFX,.ui-rating--disabled-ZKjHa .ui-rating__star--filled-L3AkT{color:GrayText}}.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ{cursor:not-allowed}@media (forced-colors: active){.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ{color:GrayText}}.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ:hover{transform:none}.ui-rating__legend-uYvFS{padding:0;font-size:var(--ui-font-size-sm);font-weight:500;color:var(--ui-text-2)}.ui-rating__stars-vJFLk{display:flex;gap:var(--ui-space-1)}.ui-rating__star-BANFJ{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;font-size:var(--ui-icon-xl);color:var(--ui-border);cursor:pointer;transition:color var(--ui-duration-fast) var(--ui-ease-out),transform var(--ui-duration-fast) var(--ui-ease-out)}.ui-rating__star-BANFJ:hover{transform:scale(1.1)}.ui-rating__star--filled-L3AkT{color:var(--ui-star)}.ui-rating__star-BANFJ:focus-within{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, 2px);border-radius:var(--ui-radius-sm)}@media (prefers-reduced-motion: reduce){.ui-rating__star-BANFJ{transition:none}.ui-rating__star-BANFJ:hover{transform:none}}.ui-rating__input-s2iiO,.ui-rating__srOnly-iSCoz{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-rating__caption-13KFX{font-size:var(--ui-font-size-sm);font-weight:500;color:var(--ui-text);min-height:1.4em}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const R=require("react/jsx-runtime"),o=require("react"),_=require("../../helpers/class-name.helper.cjs"),H=require("../../helpers/component.helper.cjs"),W=require("../../hooks/useStickToBottom.cjs"),d={default:{"scrollArea":"ui-scrollArea-Ly-yT","scrollArea--vertical":"ui-scrollArea--vertical-2ujC7","scrollArea--horizontal":"ui-scrollArea--horizontal-e9pu-","scrollArea--both":"ui-scrollArea--both-lv-8W","scrollArea--fade":"ui-scrollArea--fade-01Bbm"}},j=({children:u,label:m,axis:t="vertical",maxHeight:f,hasFade:l,isFollowingEnd:S=!1,className:g,testId:z})=>{const n=o.useRef(null);W.default(n,S&&t!=="horizontal");const[c,p]=o.useState(!1),[v,q]=o.useState({start:!1,end:!1});return o.useEffect(()=>{const e=n.current;if(!e||typeof ResizeObserver>"u")return;const r=()=>{const s=e.scrollHeight>e.clientHeight,h=e.scrollWidth>e.clientWidth;p(t==="horizontal"?h:t==="vertical"?s:s||h);const a=t==="horizontal",A=a?e.clientWidth:e.clientHeight,E=a?e.scrollWidth:e.scrollHeight,b=Math.abs(a?e.scrollLeft:e.scrollTop);q({start:b>1,end:b+A<E-1})};r();const i=new ResizeObserver(r);i.observe(e);for(const s of e.children)i.observe(s);return e.addEventListener("scroll",r,{passive:!0}),()=>{i.disconnect(),e.removeEventListener("scroll",r)}},[t,u]),R.jsx("div",{ref:n,className:_.cx(d.default.scrollArea,d.default[`scrollArea--${t}`],l&&d.default["scrollArea--fade"],g),style:f===void 0?void 0:{maxBlockSize:f},"data-fade-start":l&&v.start?"":void 0,"data-fade-end":l&&v.end?"":void 0,tabIndex:c?0:void 0,role:c?"region":void 0,"aria-label":c?m:void 0,"data-testid":z,children:u})},y=o.memo(H.named(j,"ScrollArea"));exports.default=y;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/ScrollArea/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type ReactNode, memo, useEffect, useRef, useState } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport useStickToBottom from '../../hooks/useStickToBottom';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n children: ReactNode;\n /** Kaydırılabilir bölgenin erişilebilir adı. */\n label: string;\n /** Kaydırma yönü. `both` iki eksende de kaydırır. */\n axis?: 'vertical' | 'horizontal' | 'both';\n /** En fazla yükseklik — dikey kaydırmada zorunlu, yoksa kutu uzar gider. */\n maxHeight?: number | string;\n /** Kenarlarda içeriğin devam ettiğini gösteren solma. */\n hasFade?: boolean;\n /**\n * SONA yapışık kalır — içerik büyüdükçe aşağı iner, kullanıcı yukarı kaydırınca bırakır, sona\n * dönünce yeniden yapışır (akan akıl yürütme, canlı terminal çıktısı). Yalnızca dikey eksende.\n */\n isFollowingEnd?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Kaydırma kutusu — klavyeyle erişilebilir kaydırma bölgesi. */\nconst ScrollArea: FC<Props> = ({\n children,\n label,\n axis = 'vertical',\n maxHeight,\n hasFade,\n isFollowingEnd = false,\n className,\n testId,\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n useStickToBottom(ref, isFollowingEnd && axis !== 'horizontal');\n const [isScrollable, setIsScrollable] = useState(false);\n /* Solmanin HANGI ucta cizilecegi: yalnizca o yonde gizli icerik varken. */\n const [hiddenEdges, setHiddenEdges] = useState({ start: false, end: false });\n\n /* TASMA OLCULUR, varsayilmaz. */\n useEffect(() => {\n const node = ref.current;\n if (!node || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => {\n const vertical = node.scrollHeight > node.clientHeight;\n const horizontal = node.scrollWidth > node.clientWidth;\n setIsScrollable(\n axis === 'horizontal'\n ? horizontal\n : axis === 'vertical'\n ? vertical\n : vertical || horizontal,\n );\n\n /* Solma tek eksende cizilir (`--fade` kurali `both`u kapsamiyor). */\n const isRow = axis === 'horizontal';\n const size = isRow ? node.clientWidth : node.clientHeight;\n const total = isRow ? node.scrollWidth : node.scrollHeight;\n /* RTL'de `scrollLeft` negatif olabiliyor; onemli olan UZAKLIK. */\n const offset = Math.abs(isRow ? node.scrollLeft : node.scrollTop);\n\n /* 1 px pay: kesirli yerlesimde `offset + size` toplami tam oturmuyor. */\n setHiddenEdges({ start: offset > 1, end: offset + size < total - 1 });\n };\n\n measure();\n\n /* Icerik DE kutu DA degisebiliyor: ikisi de izleniyor. */\n const observer = new ResizeObserver(measure);\n observer.observe(node);\n for (const child of node.children) observer.observe(child);\n\n /* Kaydirma ucu degistiriyor; dinleyici `passive` — olcum cizimi bloklamaz. */\n node.addEventListener('scroll', measure, { passive: true });\n\n return () => {\n observer.disconnect();\n node.removeEventListener('scroll', measure);\n };\n }, [axis, children]);\n\n return (\n <div\n ref={ref}\n className={cx(\n styles.scrollArea,\n styles[`scrollArea--${axis}`],\n hasFade && styles['scrollArea--fade'],\n className,\n )}\n style={maxHeight === undefined ? undefined : { maxBlockSize: maxHeight }}\n /* Solma UC BASINA ve YALNIZCA gizli icerik varken. */\n data-fade-start={hasFade && hiddenEdges.start ? '' : undefined}\n data-fade-end={hasFade && hiddenEdges.end ? '' : undefined}\n /*\n * Bolge YALNIZCA kaydirilabilirken odaklanabilir ve yalnizca o zaman bir ROL tasiyor:\n * sigmayan bir kutu bir \"bolge\" degil, siradan bir sarmalayici.\n */\n tabIndex={isScrollable ? 0 : undefined}\n role={isScrollable ? 'region' : undefined}\n aria-label={isScrollable ? label : undefined}\n data-testid={testId}\n >\n {children}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(ScrollArea, 'ScrollArea'),\n) as typeof ScrollArea;\n"],"names":["ScrollArea","children","label","axis","maxHeight","hasFade","isFollowingEnd","className","testId","ref","useRef","useStickToBottom","isScrollable","setIsScrollable","useState","hiddenEdges","setHiddenEdges","useEffect","node","measure","vertical","horizontal","isRow","size","total","offset","observer","child","jsx","cx","styles","index","memo","named"],"mappings":"qWA6BMA,EAAwB,CAAC,CAC7B,SAAAC,EACA,MAAAC,EACA,KAAAC,EAAO,WACP,UAAAC,EACA,QAAAC,EACA,eAAAC,EAAiB,GACjB,UAAAC,EACA,OAAAC,CACF,IAAM,CACJ,MAAMC,EAAMC,EAAAA,OAAuB,IAAI,EACvCC,EAAAA,QAAiBF,EAAKH,GAAkBH,IAAS,YAAY,EAC7D,KAAM,CAACS,EAAcC,CAAe,EAAIC,EAAAA,SAAS,EAAK,EAEhD,CAACC,EAAaC,CAAc,EAAIF,EAAAA,SAAS,CAAE,MAAO,GAAO,IAAK,GAAO,EAG3EG,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAOT,EAAI,QACjB,GAAI,CAACS,GAAQ,OAAO,eAAmB,IAAa,OAEpD,MAAMC,EAAU,IAAM,CACpB,MAAMC,EAAWF,EAAK,aAAeA,EAAK,aACpCG,EAAaH,EAAK,YAAcA,EAAK,YAC3CL,EACEV,IAAS,aACLkB,EACAlB,IAAS,WACPiB,EACAA,GAAYC,CAAA,EAIpB,MAAMC,EAAQnB,IAAS,aACjBoB,EAAOD,EAAQJ,EAAK,YAAcA,EAAK,aACvCM,EAAQF,EAAQJ,EAAK,YAAcA,EAAK,aAExCO,EAAS,KAAK,IAAIH,EAAQJ,EAAK,WAAaA,EAAK,SAAS,EAGhEF,EAAe,CAAE,MAAOS,EAAS,EAAG,IAAKA,EAASF,EAAOC,EAAQ,EAAG,CACtE,EAEAL,EAAA,EAGA,MAAMO,EAAW,IAAI,eAAeP,CAAO,EAC3CO,EAAS,QAAQR,CAAI,EACrB,UAAWS,KAAST,EAAK,SAAUQ,EAAS,QAAQC,CAAK,EAGzD,OAAAT,EAAK,iBAAiB,SAAUC,EAAS,CAAE,QAAS,GAAM,EAEnD,IAAM,CACXO,EAAS,WAAA,EACTR,EAAK,oBAAoB,SAAUC,CAAO,CAC5C,CACF,EAAG,CAAChB,EAAMF,CAAQ,CAAC,EAGjB2B,EAAAA,IAAC,MAAA,CACC,IAAAnB,EACA,UAAWoB,EAAAA,GACTC,EAAAA,QAAO,WACPA,EAAAA,QAAO,eAAe3B,CAAI,EAAE,EAC5BE,GAAWyB,EAAAA,QAAO,kBAAkB,EACpCvB,CAAA,EAEF,MAAOH,IAAc,OAAY,OAAY,CAAE,aAAcA,CAAA,EAE7D,kBAAiBC,GAAWU,EAAY,MAAQ,GAAK,OACrD,gBAAeV,GAAWU,EAAY,IAAM,GAAK,OAKjD,SAAUH,EAAe,EAAI,OAC7B,KAAMA,EAAe,SAAW,OAChC,aAAYA,EAAeV,EAAQ,OACnC,cAAaM,EAEZ,SAAAP,CAAA,CAAA,CAGP,EAEA8B,EAA6BC,EAAAA,KACbC,EAAAA,MAAMjC,EAAY,YAAY,CAC9C"}
@@ -0,0 +1,23 @@
1
+ import { FC, ReactNode } from 'react';
2
+ type Props = {
3
+ children: ReactNode;
4
+ /** Kaydırılabilir bölgenin erişilebilir adı. */
5
+ label: string;
6
+ /** Kaydırma yönü. `both` iki eksende de kaydırır. */
7
+ axis?: 'vertical' | 'horizontal' | 'both';
8
+ /** En fazla yükseklik — dikey kaydırmada zorunlu, yoksa kutu uzar gider. */
9
+ maxHeight?: number | string;
10
+ /** Kenarlarda içeriğin devam ettiğini gösteren solma. */
11
+ hasFade?: boolean;
12
+ /**
13
+ * SONA yapışık kalır — içerik büyüdükçe aşağı iner, kullanıcı yukarı kaydırınca bırakır, sona
14
+ * dönünce yeniden yapışır (akan akıl yürütme, canlı terminal çıktısı). Yalnızca dikey eksende.
15
+ */
16
+ isFollowingEnd?: boolean;
17
+ className?: string;
18
+ testId?: string;
19
+ };
20
+ /** Kaydırma kutusu — klavyeyle erişilebilir kaydırma bölgesi. */
21
+ declare const ScrollArea: FC<Props>;
22
+ declare const _default: typeof ScrollArea;
23
+ export default _default;
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { jsx as R } from "react/jsx-runtime";
3
+ import { memo as W, useRef as y, useState as h, useEffect as L } from "react";
4
+ import { cx as k } from "../../helpers/class-name.helper.js";
5
+ import { named as w } from "../../helpers/component.helper.js";
6
+ import B from "../../hooks/useStickToBottom.js";
7
+ const a = {"scrollArea":"ui-scrollArea-Ly-yT","scrollArea--vertical":"ui-scrollArea--vertical-2ujC7","scrollArea--horizontal":"ui-scrollArea--horizontal-e9pu-","scrollArea--both":"ui-scrollArea--both-lv-8W","scrollArea--fade":"ui-scrollArea--fade-01Bbm"};
8
+ const I = ({
9
+ children: d,
10
+ label: b,
11
+ axis: t = "vertical",
12
+ maxHeight: f,
13
+ hasFade: s,
14
+ isFollowingEnd: p = !1,
15
+ className: z,
16
+ testId: S
17
+ }) => {
18
+ const l = y(null);
19
+ B(l, p && t !== "horizontal");
20
+ const [n, g] = h(!1), [v, A] = h({ start: !1, end: !1 });
21
+ return L(() => {
22
+ const e = l.current;
23
+ if (!e || typeof ResizeObserver > "u") return;
24
+ const o = () => {
25
+ const r = e.scrollHeight > e.clientHeight, m = e.scrollWidth > e.clientWidth;
26
+ g(
27
+ t === "horizontal" ? m : t === "vertical" ? r : r || m
28
+ );
29
+ const c = t === "horizontal", E = c ? e.clientWidth : e.clientHeight, H = c ? e.scrollWidth : e.scrollHeight, u = Math.abs(c ? e.scrollLeft : e.scrollTop);
30
+ A({ start: u > 1, end: u + E < H - 1 });
31
+ };
32
+ o();
33
+ const i = new ResizeObserver(o);
34
+ i.observe(e);
35
+ for (const r of e.children) i.observe(r);
36
+ return e.addEventListener("scroll", o, { passive: !0 }), () => {
37
+ i.disconnect(), e.removeEventListener("scroll", o);
38
+ };
39
+ }, [t, d]), /* @__PURE__ */ R(
40
+ "div",
41
+ {
42
+ ref: l,
43
+ className: k(
44
+ a.scrollArea,
45
+ a[`scrollArea--${t}`],
46
+ s && a["scrollArea--fade"],
47
+ z
48
+ ),
49
+ style: f === void 0 ? void 0 : { maxBlockSize: f },
50
+ "data-fade-start": s && v.start ? "" : void 0,
51
+ "data-fade-end": s && v.end ? "" : void 0,
52
+ tabIndex: n ? 0 : void 0,
53
+ role: n ? "region" : void 0,
54
+ "aria-label": n ? b : void 0,
55
+ "data-testid": S,
56
+ children: d
57
+ }
58
+ );
59
+ }, q = /* @__PURE__ */ W(
60
+ /* @__PURE__ */ w(I, "ScrollArea")
61
+ );
62
+ export {
63
+ q as default
64
+ };
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/ScrollArea/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type ReactNode, memo, useEffect, useRef, useState } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport useStickToBottom from '../../hooks/useStickToBottom';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n children: ReactNode;\n /** Kaydırılabilir bölgenin erişilebilir adı. */\n label: string;\n /** Kaydırma yönü. `both` iki eksende de kaydırır. */\n axis?: 'vertical' | 'horizontal' | 'both';\n /** En fazla yükseklik — dikey kaydırmada zorunlu, yoksa kutu uzar gider. */\n maxHeight?: number | string;\n /** Kenarlarda içeriğin devam ettiğini gösteren solma. */\n hasFade?: boolean;\n /**\n * SONA yapışık kalır — içerik büyüdükçe aşağı iner, kullanıcı yukarı kaydırınca bırakır, sona\n * dönünce yeniden yapışır (akan akıl yürütme, canlı terminal çıktısı). Yalnızca dikey eksende.\n */\n isFollowingEnd?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Kaydırma kutusu — klavyeyle erişilebilir kaydırma bölgesi. */\nconst ScrollArea: FC<Props> = ({\n children,\n label,\n axis = 'vertical',\n maxHeight,\n hasFade,\n isFollowingEnd = false,\n className,\n testId,\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n useStickToBottom(ref, isFollowingEnd && axis !== 'horizontal');\n const [isScrollable, setIsScrollable] = useState(false);\n /* Solmanin HANGI ucta cizilecegi: yalnizca o yonde gizli icerik varken. */\n const [hiddenEdges, setHiddenEdges] = useState({ start: false, end: false });\n\n /* TASMA OLCULUR, varsayilmaz. */\n useEffect(() => {\n const node = ref.current;\n if (!node || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => {\n const vertical = node.scrollHeight > node.clientHeight;\n const horizontal = node.scrollWidth > node.clientWidth;\n setIsScrollable(\n axis === 'horizontal'\n ? horizontal\n : axis === 'vertical'\n ? vertical\n : vertical || horizontal,\n );\n\n /* Solma tek eksende cizilir (`--fade` kurali `both`u kapsamiyor). */\n const isRow = axis === 'horizontal';\n const size = isRow ? node.clientWidth : node.clientHeight;\n const total = isRow ? node.scrollWidth : node.scrollHeight;\n /* RTL'de `scrollLeft` negatif olabiliyor; onemli olan UZAKLIK. */\n const offset = Math.abs(isRow ? node.scrollLeft : node.scrollTop);\n\n /* 1 px pay: kesirli yerlesimde `offset + size` toplami tam oturmuyor. */\n setHiddenEdges({ start: offset > 1, end: offset + size < total - 1 });\n };\n\n measure();\n\n /* Icerik DE kutu DA degisebiliyor: ikisi de izleniyor. */\n const observer = new ResizeObserver(measure);\n observer.observe(node);\n for (const child of node.children) observer.observe(child);\n\n /* Kaydirma ucu degistiriyor; dinleyici `passive` — olcum cizimi bloklamaz. */\n node.addEventListener('scroll', measure, { passive: true });\n\n return () => {\n observer.disconnect();\n node.removeEventListener('scroll', measure);\n };\n }, [axis, children]);\n\n return (\n <div\n ref={ref}\n className={cx(\n styles.scrollArea,\n styles[`scrollArea--${axis}`],\n hasFade && styles['scrollArea--fade'],\n className,\n )}\n style={maxHeight === undefined ? undefined : { maxBlockSize: maxHeight }}\n /* Solma UC BASINA ve YALNIZCA gizli icerik varken. */\n data-fade-start={hasFade && hiddenEdges.start ? '' : undefined}\n data-fade-end={hasFade && hiddenEdges.end ? '' : undefined}\n /*\n * Bolge YALNIZCA kaydirilabilirken odaklanabilir ve yalnizca o zaman bir ROL tasiyor:\n * sigmayan bir kutu bir \"bolge\" degil, siradan bir sarmalayici.\n */\n tabIndex={isScrollable ? 0 : undefined}\n role={isScrollable ? 'region' : undefined}\n aria-label={isScrollable ? label : undefined}\n data-testid={testId}\n >\n {children}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(ScrollArea, 'ScrollArea'),\n) as typeof ScrollArea;\n"],"names":["ScrollArea","children","label","axis","maxHeight","hasFade","isFollowingEnd","className","testId","ref","useRef","useStickToBottom","isScrollable","setIsScrollable","useState","hiddenEdges","setHiddenEdges","useEffect","node","measure","vertical","horizontal","isRow","size","total","offset","observer","child","jsx","cx","styles","index","memo","named"],"mappings":";;;;;;;AA6BA,MAAMA,IAAwB,CAAC;AAAA,EAC7B,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,WAAAC;AAAA,EACA,QAAAC;AACF,MAAM;AACJ,QAAMC,IAAMC,EAAuB,IAAI;AACvC,EAAAC,EAAiBF,GAAKH,KAAkBH,MAAS,YAAY;AAC7D,QAAM,CAACS,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAEhD,CAACC,GAAaC,CAAc,IAAIF,EAAS,EAAE,OAAO,IAAO,KAAK,IAAO;AAG3E,SAAAG,EAAU,MAAM;AACd,UAAMC,IAAOT,EAAI;AACjB,QAAI,CAACS,KAAQ,OAAO,iBAAmB,IAAa;AAEpD,UAAMC,IAAU,MAAM;AACpB,YAAMC,IAAWF,EAAK,eAAeA,EAAK,cACpCG,IAAaH,EAAK,cAAcA,EAAK;AAC3C,MAAAL;AAAA,QACEV,MAAS,eACLkB,IACAlB,MAAS,aACPiB,IACAA,KAAYC;AAAA,MAAA;AAIpB,YAAMC,IAAQnB,MAAS,cACjBoB,IAAOD,IAAQJ,EAAK,cAAcA,EAAK,cACvCM,IAAQF,IAAQJ,EAAK,cAAcA,EAAK,cAExCO,IAAS,KAAK,IAAIH,IAAQJ,EAAK,aAAaA,EAAK,SAAS;AAGhE,MAAAF,EAAe,EAAE,OAAOS,IAAS,GAAG,KAAKA,IAASF,IAAOC,IAAQ,GAAG;AAAA,IACtE;AAEA,IAAAL,EAAA;AAGA,UAAMO,IAAW,IAAI,eAAeP,CAAO;AAC3C,IAAAO,EAAS,QAAQR,CAAI;AACrB,eAAWS,KAAST,EAAK,SAAU,CAAAQ,EAAS,QAAQC,CAAK;AAGzD,WAAAT,EAAK,iBAAiB,UAAUC,GAAS,EAAE,SAAS,IAAM,GAEnD,MAAM;AACX,MAAAO,EAAS,WAAA,GACTR,EAAK,oBAAoB,UAAUC,CAAO;AAAA,IAC5C;AAAA,EACF,GAAG,CAAChB,GAAMF,CAAQ,CAAC,GAGjB,gBAAA2B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAnB;AAAA,MACA,WAAWoB;AAAA,QACTC,EAAO;AAAA,QACPA,EAAO,eAAe3B,CAAI,EAAE;AAAA,QAC5BE,KAAWyB,EAAO,kBAAkB;AAAA,QACpCvB;AAAA,MAAA;AAAA,MAEF,OAAOH,MAAc,SAAY,SAAY,EAAE,cAAcA,EAAA;AAAA,MAE7D,mBAAiBC,KAAWU,EAAY,QAAQ,KAAK;AAAA,MACrD,iBAAeV,KAAWU,EAAY,MAAM,KAAK;AAAA,MAKjD,UAAUH,IAAe,IAAI;AAAA,MAC7B,MAAMA,IAAe,WAAW;AAAA,MAChC,cAAYA,IAAeV,IAAQ;AAAA,MACnC,eAAaM;AAAA,MAEZ,UAAAP;AAAA,IAAA;AAAA,EAAA;AAGP,GAEA8B,IAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAMjC,GAAY,YAAY;AAC9C;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-scrollArea-Ly-yT{scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}.ui-scrollArea-Ly-yT::-webkit-scrollbar{width:8px;height:8px}.ui-scrollArea-Ly-yT::-webkit-scrollbar-track{background:transparent}.ui-scrollArea-Ly-yT::-webkit-scrollbar-thumb{background-color:var(--ui-border-strong);border-radius:var(--ui-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-scrollArea-Ly-yT::-webkit-scrollbar-thumb:hover{background-color:var(--ui-text-3)}.ui-scrollArea-Ly-yT{position:relative;overscroll-behavior:contain}.ui-scrollArea--vertical-2ujC7{overflow-y:auto;overflow-x:hidden}.ui-scrollArea--horizontal-e9pu-{overflow-x:auto;overflow-y:hidden}.ui-scrollArea--both-lv-8W{overflow:auto}.ui-scrollArea-Ly-yT:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, -2px)}.ui-scrollArea--fade-01Bbm{--ui-scroll-fade-start: 0px;--ui-scroll-fade-end: 0px}.ui-scrollArea--fade-01Bbm[data-fade-start]{--ui-scroll-fade-start: var(--ui-space-4)}.ui-scrollArea--fade-01Bbm[data-fade-end]{--ui-scroll-fade-end: var(--ui-space-4)}.ui-scrollArea--fade-01Bbm.ui-scrollArea--vertical-2ujC7{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%)}.ui-scrollArea--fade-01Bbm.ui-scrollArea--horizontal-e9pu-{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%)}}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),n=require("react"),h=require("../../helpers/class-name.helper.cjs"),e={default:{"header":"ui-header-a08Jh","header__text":"ui-header__text-ArJkA","header__overline":"ui-header__overline-X5Epo","header__title":"ui-header__title-nQQQJ","header__description":"ui-header__description-08oCr","header__action":"ui-header__action-xsxQF","header--sm":"ui-header--sm-mIJWZ","header--lg":"ui-header--lg-QBLIz"}},o=({title:r,description:s,overline:d,action:t,as:l="h2",size:c="md",className:i,testId:u})=>a.jsxs("header",{className:h.cx(e.default.header,e.default[`header--${c}`],i),"data-testid":u,children:[a.jsxs("div",{className:e.default.header__text,children:[d&&a.jsx("span",{className:e.default.header__overline,children:d}),a.jsx(l,{className:e.default.header__title,children:r}),s&&a.jsx("p",{className:e.default.header__description,children:s})]}),t&&a.jsx("div",{className:e.default.header__action,children:t})]}),_=n.memo(o);exports.default=_;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/SectionHeader/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\ntype Props = {\n title: string;\n description?: string;\n /** Üstte gösterilen küçük büyük-harf etiket. */\n overline?: string;\n /** Sağda gösterilen eylem (\"Tümünü gör\"). */\n action?: ReactNode;\n as?: 'h1' | 'h2' | 'h3';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n testId?: string;\n};\n\n/** Bölüm başlığı. */\nconst SectionHeader: FC<Props> = ({\n title,\n description,\n overline,\n action,\n as: Heading = 'h2',\n size = 'md',\n className,\n testId,\n}) => (\n <header className={cx(styles.header, styles[`header--${size}`], className)} data-testid={testId}>\n <div className={styles.header__text}>\n {overline && <span className={styles.header__overline}>{overline}</span>}\n <Heading className={styles.header__title}>{title}</Heading>\n {description && <p className={styles.header__description}>{description}</p>}\n </div>\n\n {action && <div className={styles.header__action}>{action}</div>}\n </header>\n);\n\nexport default /*#__PURE__*/ memo(SectionHeader) as typeof SectionHeader;\n"],"names":["SectionHeader","title","description","overline","action","Heading","size","className","testId","jsxs","cx","styles","jsx","index"],"mappings":"0PAoBMA,EAA2B,CAAC,CAChC,MAAAC,EACA,YAAAC,EACA,SAAAC,EACA,OAAAC,EACA,GAAIC,EAAU,KACd,KAAAC,EAAO,KACP,UAAAC,EACA,OAAAC,CACF,IACEC,EAAAA,KAAC,SAAA,CAAO,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,OAAQA,EAAAA,QAAO,WAAWL,CAAI,EAAE,EAAGC,CAAS,EAAG,cAAaC,EACvF,SAAA,CAAAC,EAAAA,KAAC,MAAA,CAAI,UAAWE,EAAAA,QAAO,aACpB,SAAA,CAAAR,GAAYS,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,iBAAmB,SAAAR,EAAS,EACjES,EAAAA,IAACP,EAAA,CAAQ,UAAWM,EAAAA,QAAO,cAAgB,SAAAV,EAAM,EAChDC,GAAeU,EAAAA,IAAC,IAAA,CAAE,UAAWD,EAAAA,QAAO,oBAAsB,SAAAT,CAAA,CAAY,CAAA,EACzE,EAECE,GAAUQ,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,QAAO,eAAiB,SAAAP,CAAA,CAAO,CAAA,EAC5D,EAGFS,SAAkCb,CAAa"}
@@ -0,0 +1,17 @@
1
+ import { FC, ReactNode } from 'react';
2
+ type Props = {
3
+ title: string;
4
+ description?: string;
5
+ /** Üstte gösterilen küçük büyük-harf etiket. */
6
+ overline?: string;
7
+ /** Sağda gösterilen eylem ("Tümünü gör"). */
8
+ action?: ReactNode;
9
+ as?: 'h1' | 'h2' | 'h3';
10
+ size?: 'sm' | 'md' | 'lg';
11
+ className?: string;
12
+ testId?: string;
13
+ };
14
+ /** Bölüm başlığı. */
15
+ declare const SectionHeader: FC<Props>;
16
+ declare const _default: typeof SectionHeader;
17
+ export default _default;
@@ -0,0 +1,25 @@
1
+ import { jsxs as m, jsx as a } from "react/jsx-runtime";
2
+ import { memo as o } from "react";
3
+ import { cx as n } from "../../helpers/class-name.helper.js";
4
+ const e = {"header":"ui-header-a08Jh","header__text":"ui-header__text-ArJkA","header__overline":"ui-header__overline-X5Epo","header__title":"ui-header__title-nQQQJ","header__description":"ui-header__description-08oCr","header__action":"ui-header__action-xsxQF","header--sm":"ui-header--sm-mIJWZ","header--lg":"ui-header--lg-QBLIz"};
5
+ const _ = ({
6
+ title: t,
7
+ description: r,
8
+ overline: s,
9
+ action: d,
10
+ as: c = "h2",
11
+ size: i = "md",
12
+ className: h,
13
+ testId: l
14
+ }) => /* @__PURE__ */ m("header", { className: n(e.header, e[`header--${i}`], h), "data-testid": l, children: [
15
+ /* @__PURE__ */ m("div", { className: e.header__text, children: [
16
+ s && /* @__PURE__ */ a("span", { className: e.header__overline, children: s }),
17
+ /* @__PURE__ */ a(c, { className: e.header__title, children: t }),
18
+ r && /* @__PURE__ */ a("p", { className: e.header__description, children: r })
19
+ ] }),
20
+ d && /* @__PURE__ */ a("div", { className: e.header__action, children: d })
21
+ ] }), j = /* @__PURE__ */ o(_);
22
+ export {
23
+ j as default
24
+ };
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/SectionHeader/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\ntype Props = {\n title: string;\n description?: string;\n /** Üstte gösterilen küçük büyük-harf etiket. */\n overline?: string;\n /** Sağda gösterilen eylem (\"Tümünü gör\"). */\n action?: ReactNode;\n as?: 'h1' | 'h2' | 'h3';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n testId?: string;\n};\n\n/** Bölüm başlığı. */\nconst SectionHeader: FC<Props> = ({\n title,\n description,\n overline,\n action,\n as: Heading = 'h2',\n size = 'md',\n className,\n testId,\n}) => (\n <header className={cx(styles.header, styles[`header--${size}`], className)} data-testid={testId}>\n <div className={styles.header__text}>\n {overline && <span className={styles.header__overline}>{overline}</span>}\n <Heading className={styles.header__title}>{title}</Heading>\n {description && <p className={styles.header__description}>{description}</p>}\n </div>\n\n {action && <div className={styles.header__action}>{action}</div>}\n </header>\n);\n\nexport default /*#__PURE__*/ memo(SectionHeader) as typeof SectionHeader;\n"],"names":["SectionHeader","title","description","overline","action","Heading","size","className","testId","jsxs","cx","styles","jsx","index"],"mappings":";;;;AAoBA,MAAMA,IAA2B,CAAC;AAAA,EAChC,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,IAAIC,IAAU;AAAA,EACd,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,QAAAC;AACF,MACE,gBAAAC,EAAC,UAAA,EAAO,WAAWC,EAAGC,EAAO,QAAQA,EAAO,WAAWL,CAAI,EAAE,GAAGC,CAAS,GAAG,eAAaC,GACvF,UAAA;AAAA,EAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWE,EAAO,cACpB,UAAA;AAAA,IAAAR,KAAY,gBAAAS,EAAC,QAAA,EAAK,WAAWD,EAAO,kBAAmB,UAAAR,GAAS;AAAA,IACjE,gBAAAS,EAACP,GAAA,EAAQ,WAAWM,EAAO,eAAgB,UAAAV,GAAM;AAAA,IAChDC,KAAe,gBAAAU,EAAC,KAAA,EAAE,WAAWD,EAAO,qBAAsB,UAAAT,EAAA,CAAY;AAAA,EAAA,GACzE;AAAA,EAECE,KAAU,gBAAAQ,EAAC,OAAA,EAAI,WAAWD,EAAO,gBAAiB,UAAAP,EAAA,CAAO;AAAA,GAC5D,GAGFS,sBAAkCb,CAAa;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-header-a08Jh{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--ui-space-4);flex-wrap:wrap}.ui-header__text-ArJkA{display:flex;flex-direction:column;gap:var(--ui-space-1);min-width:0}.ui-header__overline-X5Epo{font-family:var(--ui-font-body);font-size:var(--ui-font-size-2xs);font-weight:600;letter-spacing:.045em;text-transform:uppercase;color:var(--ui-text-2)}.ui-header__title-nQQQJ{font-size:var(--ui-font-size-xl);font-weight:600;line-height:var(--ui-leading-tight);color:var(--ui-text);font-family:var(--ui-font-heading);letter-spacing:-.011em;margin:0}.ui-header__description-08oCr{font-size:var(--ui-font-size-sm);color:var(--ui-text-2);line-height:var(--ui-leading-normal);max-width:68ch;margin:0}.ui-header__action-xsxQF{flex-shrink:0}.ui-header--sm-mIJWZ .ui-header__title-nQQQJ{font-size:var(--ui-font-size-lg)}.ui-header--lg-QBLIz .ui-header__title-nQQQJ{font-size:var(--ui-font-size-2xl)}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),g=require("react"),b=require("../../helpers/class-name.helper.cjs"),S=require("../../helpers/component.helper.cjs"),t={default:{"segmented":"ui-segmented-qo2Bw","segmented--sm":"ui-segmented--sm-7tUry","segmented--md":"ui-segmented--md-PiSqt","segmented__item":"ui-segmented__item-mqRNZ","segmented__item--selected":"ui-segmented__item--selected-r7CLj","segmented__icon":"ui-segmented__icon-C9CT-","segmented__label":"ui-segmented__label-NVXBv"}},j=({options:n,value:d,onChange:u,label:_,isIconOnly:c,size:h="md",className:x,testId:v})=>{const i=g.useRef(null),y=e=>{var m,f;const l=e.key==="ArrowRight"||e.key==="ArrowDown"?1:e.key==="ArrowLeft"||e.key==="ArrowUp"?-1:0;if(l===0)return;e.preventDefault();const r=n.filter(s=>!s.isDisabled);if(r.length===0)return;const w=r.findIndex(s=>s.value===d),o=r[(w+l+r.length)%r.length];u(o.value),(f=(m=i.current)==null?void 0:m.querySelector(`[data-value="${o.value}"]`))==null||f.focus({preventScroll:!0})};return a.jsx("div",{ref:i,role:"radiogroup","aria-label":_,className:b.cx(t.default.segmented,t.default[`segmented--${h}`],x),"data-testid":v,onKeyDown:y,children:n.map(e=>{const l=e.value===d;return a.jsxs("button",{type:"button",role:"radio","aria-checked":l,"aria-label":c?e.label:void 0,"data-value":e.value,disabled:e.isDisabled,tabIndex:l?0:-1,className:b.cx(t.default.segmented__item,l&&t.default["segmented__item--selected"]),onClick:()=>!l&&u(e.value),children:[e.icon&&a.jsx("span",{className:t.default.segmented__icon,"aria-hidden":!0,children:e.icon}),!c&&a.jsx("span",{className:t.default.segmented__label,children:e.label})]},e.value)})})},k=g.memo(S.named(j,"SegmentedControl"));exports.default=k;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/SegmentedControl/index.tsx"],"sourcesContent":["'use client';\n\nimport { type KeyboardEvent, memo, type ReactNode, useRef } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\nexport type SegmentOption<T extends string = string> = {\n value: T;\n label: string;\n /** Yalnızca ikon gösterilecekse `label` erişilebilir ad olarak kalır. */\n icon?: ReactNode;\n isDisabled?: boolean;\n};\n\ntype Props<T extends string> = {\n options: SegmentOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Grubun erişilebilir adı (\"Görünüm\"). */\n label: string;\n /** Etiketler gizlenir, yalnızca ikon çizilir. `label` yine okunur. */\n isIconOnly?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\n/** Bölmeli denetim — görünüm değiştirme. */\nconst SegmentedControl = <T extends string>({\n options,\n value,\n onChange,\n label,\n isIconOnly,\n size = 'md',\n className,\n testId,\n}: Props<T>) => {\n const listRef = useRef<HTMLDivElement>(null);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offset =\n event.key === 'ArrowRight' || event.key === 'ArrowDown'\n ? 1\n : event.key === 'ArrowLeft' || event.key === 'ArrowUp'\n ? -1\n : 0;\n\n if (offset === 0) return;\n event.preventDefault();\n\n const enabled = options.filter(option => !option.isDisabled);\n if (enabled.length === 0) return;\n\n const current = enabled.findIndex(option => option.value === value);\n const next = enabled[(current + offset + enabled.length) % enabled.length];\n\n onChange(next.value);\n listRef.current\n ?.querySelector<HTMLButtonElement>(`[data-value=\"${next.value}\"]`)\n ?.focus({ preventScroll: true });\n };\n\n return (\n <div\n ref={listRef}\n role=\"radiogroup\"\n aria-label={label}\n className={cx(styles.segmented, styles[`segmented--${size}`], className)}\n data-testid={testId}\n onKeyDown={handleKeyDown}\n >\n {options.map(option => {\n const isSelected = option.value === value;\n\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n aria-label={isIconOnly ? option.label : undefined}\n data-value={option.value}\n disabled={option.isDisabled}\n /* Donen `tabindex`: grup Tab sirasinda TEK durak. */\n tabIndex={isSelected ? 0 : -1}\n className={cx(\n styles.segmented__item,\n isSelected && styles['segmented__item--selected'],\n )}\n /*\n * Secili ogeye ikinci kez basmak HICBIR SEY yapmaz: gorunum anahtarinda \"hicbiri\" diye\n * bir hal yok. `ChipGroup`ta ayni hareket secimi kaldiriyor ve iki…\n */\n onClick={() => !isSelected && onChange(option.value)}\n >\n {option.icon && (\n <span className={styles.segmented__icon} aria-hidden>\n {option.icon}\n </span>\n )}\n {!isIconOnly && <span className={styles.segmented__label}>{option.label}</span>}\n </button>\n );\n })}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(SegmentedControl, 'SegmentedControl'),\n) as typeof SegmentedControl;\n"],"names":["SegmentedControl","options","value","onChange","label","isIconOnly","size","className","testId","listRef","useRef","handleKeyDown","event","offset","enabled","option","current","next","_b","_a","jsx","cx","styles","isSelected","jsxs","index","memo","named"],"mappings":"uTA8BMA,EAAmB,CAAmB,CAC1C,QAAAC,EACA,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,WAAAC,EACA,KAAAC,EAAO,KACP,UAAAC,EACA,OAAAC,CACF,IAAgB,CACd,MAAMC,EAAUC,EAAAA,OAAuB,IAAI,EAErCC,EAAiBC,GAAyC,SAC9D,MAAMC,EACJD,EAAM,MAAQ,cAAgBA,EAAM,MAAQ,YACxC,EACAA,EAAM,MAAQ,aAAeA,EAAM,MAAQ,UACzC,GACA,EAER,GAAIC,IAAW,EAAG,OAClBD,EAAM,eAAA,EAEN,MAAME,EAAUb,EAAQ,OAAOc,GAAU,CAACA,EAAO,UAAU,EAC3D,GAAID,EAAQ,SAAW,EAAG,OAE1B,MAAME,EAAUF,EAAQ,UAAUC,GAAUA,EAAO,QAAUb,CAAK,EAC5De,EAAOH,GAASE,EAAUH,EAASC,EAAQ,QAAUA,EAAQ,MAAM,EAEzEX,EAASc,EAAK,KAAK,GACnBC,GAAAC,EAAAV,EAAQ,UAAR,YAAAU,EACI,cAAiC,gBAAgBF,EAAK,KAAK,QAD/D,MAAAC,EAEI,MAAM,CAAE,cAAe,EAAA,EAC7B,EAEA,OACEE,EAAAA,IAAC,MAAA,CACC,IAAKX,EACL,KAAK,aACL,aAAYL,EACZ,UAAWiB,EAAAA,GAAGC,EAAAA,QAAO,UAAWA,EAAAA,QAAO,cAAchB,CAAI,EAAE,EAAGC,CAAS,EACvE,cAAaC,EACb,UAAWG,EAEV,SAAAV,EAAQ,IAAIc,GAAU,CACrB,MAAMQ,EAAaR,EAAO,QAAUb,EAEpC,OACEsB,EAAAA,KAAC,SAAA,CAEC,KAAK,SACL,KAAK,QACL,eAAcD,EACd,aAAYlB,EAAaU,EAAO,MAAQ,OACxC,aAAYA,EAAO,MACnB,SAAUA,EAAO,WAEjB,SAAUQ,EAAa,EAAI,GAC3B,UAAWF,EAAAA,GACTC,EAAAA,QAAO,gBACPC,GAAcD,EAAAA,QAAO,2BAA2B,CAAA,EAMlD,QAAS,IAAM,CAACC,GAAcpB,EAASY,EAAO,KAAK,EAElD,SAAA,CAAAA,EAAO,YACL,OAAA,CAAK,UAAWO,EAAAA,QAAO,gBAAiB,cAAW,GACjD,SAAAP,EAAO,IAAA,CACV,EAED,CAACV,GAAce,MAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,iBAAmB,WAAO,KAAA,CAAM,CAAA,CAAA,EAxBnEP,EAAO,KAAA,CA2BlB,CAAC,CAAA,CAAA,CAGP,EAEAU,EAA6BC,EAAAA,KACbC,EAAAA,MAAM3B,EAAkB,kBAAkB,CAC1D"}