@handijit/ui 0.0.0-stage → 2.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 (639) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +786 -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 +1866 -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 +1121 -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 +21 -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 +13 -0
  428. package/build/constants/breakpoint.constants.js +11 -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 +12 -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 +2 -0
  486. package/build/helpers/theme.helper.cjs.map +1 -0
  487. package/build/helpers/theme.helper.d.ts +18 -0
  488. package/build/helpers/theme.helper.js +37 -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 +10 -0
  543. package/build/hooks/useUiTheme.js +42 -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 +36 -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 +93 -0
  558. package/build/index.js +199 -0
  559. package/build/index.js.map +1 -0
  560. package/build/scss/_index.scss +7 -0
  561. package/build/scss/_mixins.scss +828 -0
  562. package/build/scss/_variables.scss +243 -0
  563. package/build/styles/base.d.ts +0 -0
  564. package/build/styles.css +133 -0
  565. package/build/theme/UiProvider.cjs +2 -0
  566. package/build/theme/UiProvider.cjs.map +1 -0
  567. package/build/theme/UiProvider.d.ts +23 -0
  568. package/build/theme/UiProvider.js +12 -0
  569. package/build/theme/UiProvider.js.map +1 -0
  570. package/build/theme/UiThemeScript.cjs +2 -0
  571. package/build/theme/UiThemeScript.cjs.map +1 -0
  572. package/build/theme/UiThemeScript.d.ts +22 -0
  573. package/build/theme/UiThemeScript.js +8 -0
  574. package/build/theme/UiThemeScript.js.map +1 -0
  575. package/build/theme/context.cjs +2 -0
  576. package/build/theme/context.cjs.map +1 -0
  577. package/build/theme/context.d.ts +5 -0
  578. package/build/theme/context.js +8 -0
  579. package/build/theme/context.js.map +1 -0
  580. package/build/types/charts/AreaChart/index.d.ts +14 -0
  581. package/build/types/charts/BarChart/index.d.ts +16 -0
  582. package/build/types/charts/BoxPlot/index.d.ts +43 -0
  583. package/build/types/charts/ComposedChart/index.d.ts +16 -0
  584. package/build/types/charts/Heatmap/index.d.ts +30 -0
  585. package/build/types/charts/Histogram/index.d.ts +29 -0
  586. package/build/types/charts/LineChart/index.d.ts +14 -0
  587. package/build/types/charts/PieChart/index.d.ts +36 -0
  588. package/build/types/charts/RadarChart/index.d.ts +40 -0
  589. package/build/types/charts/ScatterPlot/index.d.ts +41 -0
  590. package/build/types/charts/core/CartesianChart.d.ts +43 -0
  591. package/build/types/charts/core/ChartFrame.d.ts +55 -0
  592. package/build/types/charts/core/axes.d.ts +37 -0
  593. package/build/types/charts/core/cartesian.d.ts +80 -0
  594. package/build/types/charts/core/format.d.ts +19 -0
  595. package/build/types/charts/core/margins.d.ts +9 -0
  596. package/build/types/charts/core/palette.d.ts +11 -0
  597. package/build/types/charts/core/path.d.ts +24 -0
  598. package/build/types/charts/core/scale.d.ts +40 -0
  599. package/build/types/charts/core/series.d.ts +11 -0
  600. package/build/types/charts/core/spatial.d.ts +12 -0
  601. package/build/types/charts/core/stats.d.ts +34 -0
  602. package/build/types/charts/core/types.d.ts +31 -0
  603. package/build/types/charts/core/useChartWidth.d.ts +7 -0
  604. package/build/types/charts/index.d.ts +21 -0
  605. package/build/types/chat/ActionList/index.d.ts +46 -0
  606. package/build/types/chat/AppBar/index.d.ts +21 -0
  607. package/build/types/chat/ChatMessage/index.d.ts +24 -0
  608. package/build/types/chat/ChatThread/index.d.ts +24 -0
  609. package/build/types/chat/Citation/index.d.ts +15 -0
  610. package/build/types/chat/CodeBlock/format.d.ts +7 -0
  611. package/build/types/chat/CodeBlock/grammars.d.ts +44 -0
  612. package/build/types/chat/CodeBlock/highlight.d.ts +22 -0
  613. package/build/types/chat/CodeBlock/index.d.ts +33 -0
  614. package/build/types/chat/DescriptionList/index.d.ts +16 -0
  615. package/build/types/chat/Legend/index.d.ts +21 -0
  616. package/build/types/chat/MessageActions/index.d.ts +21 -0
  617. package/build/types/chat/PromptInput/index.d.ts +47 -0
  618. package/build/types/chat/PromptSuggestions/index.d.ts +25 -0
  619. package/build/types/chat/Prose/index.d.ts +15 -0
  620. package/build/types/chat/ReasoningBlock/index.d.ts +24 -0
  621. package/build/types/chat/ReasoningText/index.d.ts +14 -0
  622. package/build/types/chat/SegmentBar/index.d.ts +46 -0
  623. package/build/types/chat/SourceList/index.d.ts +25 -0
  624. package/build/types/chat/TerminalOutput/index.d.ts +25 -0
  625. package/build/types/chat/ToolCall/index.d.ts +41 -0
  626. package/build/types/chat/index.d.ts +26 -0
  627. package/build/types/combobox.type.d.ts +49 -0
  628. package/build/types/common-element-props.type.d.ts +8 -0
  629. package/build/types/helpers/class-name.helper.d.ts +3 -0
  630. package/build/types/helpers/component.helper.d.ts +13 -0
  631. package/build/types/helpers/label.helper.d.ts +12 -0
  632. package/build/types/hook.type.d.ts +36 -0
  633. package/build/types/link.type.d.ts +14 -0
  634. package/build/types/positioning.type.d.ts +38 -0
  635. package/build/types/theme.type.d.ts +181 -0
  636. package/build/types/types/common-element-props.type.d.ts +8 -0
  637. package/build/types/types/link.type.d.ts +14 -0
  638. package/build/types/types/theme.type.d.ts +181 -0
  639. package/package.json +487 -4
@@ -0,0 +1 @@
1
+ @layer ui{.ui-switch-KLH29{display:flex;align-items:flex-start;gap:var(--hd-space-3);cursor:pointer;padding:var(--hd-space-2);margin-inline:calc(-1 * var(--hd-space-2));border-radius:var(--hd-radius-xs);transition:background-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-switch-KLH29:hover{background-color:var(--hd-bg-raised)}.ui-switch-KLH29:has(.ui-switch__input-Q2UQ4:focus-visible){outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px)}@media (prefers-reduced-motion: reduce){.ui-switch-KLH29{transition:none}}.ui-switch--labelFirst-Grirk{flex-direction:row-reverse;justify-content:space-between}.ui-switch-KLH29:has(.ui-switch__input-Q2UQ4:disabled){cursor:not-allowed}.ui-switch-KLH29:has(.ui-switch__input-Q2UQ4:disabled) .ui-switch__label-gPZuO,.ui-switch-KLH29:has(.ui-switch__input-Q2UQ4:disabled) .ui-switch__hint-NRuzC{color:var(--hd-text-3)}@media (forced-colors: active){.ui-switch-KLH29:has(.ui-switch__input-Q2UQ4:disabled) .ui-switch__label-gPZuO,.ui-switch-KLH29:has(.ui-switch__input-Q2UQ4:disabled) .ui-switch__hint-NRuzC{color:GrayText}}.ui-switch-KLH29:has(.ui-switch__input-Q2UQ4:disabled):hover{background-color:transparent}.ui-switch__input-Q2UQ4{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-switch__track-3417m{flex-shrink:0;width:40px;height:24px;border-radius:var(--hd-radius-pill);background-color:var(--hd-text-3);border:1px solid transparent;transition:background-color var(--hd-duration-fast) var(--hd-ease-standard),border-color var(--hd-duration-fast) var(--hd-ease-standard);position:relative}.ui-switch__track-3417m:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}@media (prefers-reduced-motion: reduce){.ui-switch__track-3417m{transition:none}}.ui-switch__thumb-1LHta{position:absolute;top:2px;inset-inline-start:2px;width:18px;height:18px;border-radius:var(--hd-radius-pill);background-color:var(--hd-bg-surface);box-shadow:var(--hd-shadow-1);transition:translate var(--hd-duration-fast) var(--hd-ease-standard),background-color var(--hd-duration-fast) var(--hd-ease-standard)}@media (prefers-reduced-motion: reduce){.ui-switch__thumb-1LHta{transition:none}}.ui-switch__input-Q2UQ4:checked+.ui-switch__track-3417m{background-color:var(--hd-primary)}.ui-switch__input-Q2UQ4:checked+.ui-switch__track-3417m .ui-switch__thumb-1LHta{background-color:var(--hd-on-primary);translate:16px 0}[dir=rtl] .ui-switch__input-Q2UQ4:checked+.ui-switch__track-3417m .ui-switch__thumb-1LHta{translate:-16px 0}.ui-switch__input-Q2UQ4:disabled+.ui-switch__track-3417m{background-color:var(--hd-bg-disabled);border-color:var(--hd-border-strong)}.ui-switch__input-Q2UQ4:disabled+.ui-switch__track-3417m .ui-switch__thumb-1LHta{background-color:var(--hd-text-disabled);box-shadow:none}.ui-switch__input-Q2UQ4:checked:disabled+.ui-switch__track-3417m{background-color:var(--hd-text-disabled);border-color:transparent}.ui-switch__input-Q2UQ4:checked:disabled+.ui-switch__track-3417m .ui-switch__thumb-1LHta{background-color:var(--hd-bg-surface)}@media (forced-colors: active){.ui-switch__track-3417m{border-color:ButtonBorder}.ui-switch__thumb-1LHta{background-color:ButtonText}.ui-switch__input-Q2UQ4:checked+.ui-switch__track-3417m{border-color:Highlight}.ui-switch__input-Q2UQ4:checked+.ui-switch__track-3417m .ui-switch__thumb-1LHta{background-color:Highlight}.ui-switch__input-Q2UQ4:disabled+.ui-switch__track-3417m{border-color:GrayText}.ui-switch__input-Q2UQ4:disabled+.ui-switch__track-3417m .ui-switch__thumb-1LHta{background-color:GrayText}}.ui-switch__text-32uMY{display:flex;flex-direction:column;gap:2px;min-width:0}.ui-switch__label-gPZuO{font-size:var(--hd-type-small-size);color:var(--hd-text)}.ui-switch__hint-NRuzC{font-size:var(--hd-type-caption-size);color:var(--hd-text-2)}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const b=require("react/jsx-runtime"),l=require("react"),f=require("../../helpers/class-name.helper.cjs"),x=require("../../helpers/component.helper.cjs"),e={default:{"scroller":"ui-scroller-EtDmS","scroller--frame":"ui-scroller--frame-84zz6","table":"ui-table-uCv4q","table--compact":"ui-table--compact-4KCVl","table--regular":"ui-table--regular-hsA3-","table--spacious":"ui-table--spacious-BBUX-","table--sticky-head":"ui-table--sticky-head-FO2L4","table--row-hover":"ui-table--row-hover--MAoe"}},S=x.named(l.memo(({hasFrame:o=!0,label:a,className:c,children:t,...n})=>{const s=l.useRef(null),[u,m]=l.useState(!1);return l.useEffect(()=>{const r=s.current;if(!r||typeof ResizeObserver>"u")return;const d=()=>m(r.scrollWidth>r.clientWidth+1);d();const i=new ResizeObserver(d);i.observe(r);for(const v of r.children)i.observe(v);return()=>i.disconnect()},[t]),b.jsx("div",{ref:s,tabIndex:u?0:void 0,role:u?"region":void 0,"aria-label":u?a:void 0,className:f.cx(e.default.scroller,o&&e.default["scroller--frame"],c),...n,children:t})}),"TableScroller"),h=({density:o="regular",hasStickyHead:a,hasRowHover:c,className:t,children:n,...s})=>b.jsx("table",{className:f.cx(e.default.table,e.default[`table--${o}`],a&&e.default["table--sticky-head"],c&&e.default["table--row-hover"],t),...s,children:n}),p=l.memo(h);exports.TableScroller=S;exports.default=p;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Table/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type HTMLAttributes,\n memo,\n type TableHTMLAttributes,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\ntype ScrollerProps = HTMLAttributes<HTMLDivElement> & {\n /** Çerçeve (hairline + yarıçap + yüzey). */\n hasFrame?: boolean;\n /**\n * Kaydırma bölgesinin erişilebilir adı (\"Sipariş kalemleri\").\n * ⚠ ZORUNLU değil ama VERİLMELİ: kutu klavyeyle odaklanabilir bir `region` ve adsız bir bölge\n * ekran okuyucuda yalnızca \"bölge\" diye okunur\n */\n label?: string;\n};\n\n/**\n * Tablo kaydırma kutusu — \"tablo kendi kutusunda kayar, sayfa asla yatay kaymaz\" kuralının tek\n * uygulaması.\n */\nexport const TableScroller: FC<ScrollerProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ hasFrame = true, label, className, children, ...rest }) => {\n const ref = useRef<HTMLDivElement>(null);\n const [isScrollable, setIsScrollable] = useState(false);\n\n /*\n * Kutu `overflow: auto` taşıyor ve klavye kullanıcısı odaklanamadığı bir kutuyu KAYDIRAMAZ\n * (WCAG 2.1.1) — o yüzden kaydırılabilirken ikisi de ZORUNLU.\n * ⚠ `tabIndex` + `role` YALNIZCA GERÇEKTEN KAYABİLEN kutuda.\n */\n useEffect(() => {\n const node = ref.current;\n /* `ScrollArea` ile aynı koruma: jsdom `ResizeObserver` sağlamıyor. */\n if (!node || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => setIsScrollable(node.scrollWidth > node.clientWidth + 1);\n\n measure();\n\n /* İçerik DE kutu DA değişebiliyor: 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 return () => observer.disconnect();\n }, [children]);\n\n return (\n <div\n ref={ref}\n tabIndex={isScrollable ? 0 : undefined}\n role={isScrollable ? 'region' : undefined}\n aria-label={isScrollable ? label : undefined}\n className={cx(styles.scroller, hasFrame && styles['scroller--frame'], className)}\n {...rest}\n >\n {children}\n </div>\n );\n }),\n 'TableScroller',\n);\n\ntype Props = TableHTMLAttributes<HTMLTableElement> &\n Partial<{\n /** Hücre dolgusu. */\n density: 'compact' | 'regular' | 'spacious';\n /** Başlık satırı `$surface-2` zeminle kutunun içinde YAPIŞKAN kalır. */\n hasStickyHead: boolean;\n /** Satır hover zemini: çok sütunlu tabloda göz satırını kaybediyor. */\n hasRowHover: boolean;\n }>;\n\n/** Temel tablo — hairline satır ayrımı, `$surface-2` başlık, yoğunluk ölçeği. */\nconst Table: FC<Props> = ({\n density = 'regular',\n hasStickyHead,\n hasRowHover,\n className,\n children,\n ...rest\n}) => (\n <table\n className={cx(\n styles.table,\n styles[`table--${density}`],\n hasStickyHead && styles['table--sticky-head'],\n hasRowHover && styles['table--row-hover'],\n className,\n )}\n {...rest}\n >\n {children}\n </table>\n);\n\nexport default /*#__PURE__*/ memo(Table) as typeof Table;\n"],"names":["TableScroller","named","memo","hasFrame","label","className","children","rest","ref","useRef","isScrollable","setIsScrollable","useState","useEffect","node","measure","observer","child","jsx","cx","styles","Table","density","hasStickyHead","hasRowHover","index"],"mappings":"uTA+BaA,EAAiDC,EAAAA,MAC9CC,OAAK,CAAC,CAAE,SAAAC,EAAW,GAAM,MAAAC,EAAO,UAAAC,EAAW,SAAAC,EAAU,GAAGC,KAAW,CAC/E,MAAMC,EAAMC,EAAAA,OAAuB,IAAI,EACjC,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAAS,EAAK,EAOtDC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAON,EAAI,QAEjB,GAAI,CAACM,GAAQ,OAAO,eAAmB,IAAa,OAEpD,MAAMC,EAAU,IAAMJ,EAAgBG,EAAK,YAAcA,EAAK,YAAc,CAAC,EAE7EC,EAAA,EAGA,MAAMC,EAAW,IAAI,eAAeD,CAAO,EAC3CC,EAAS,QAAQF,CAAI,EACrB,UAAWG,KAASH,EAAK,SAAUE,EAAS,QAAQC,CAAK,EAEzD,MAAO,IAAMD,EAAS,WAAA,CACxB,EAAG,CAACV,CAAQ,CAAC,EAGXY,EAAAA,IAAC,MAAA,CACC,IAAAV,EACA,SAAUE,EAAe,EAAI,OAC7B,KAAMA,EAAe,SAAW,OAChC,aAAYA,EAAeN,EAAQ,OACnC,UAAWe,EAAAA,GAAGC,EAAAA,QAAO,SAAUjB,GAAYiB,UAAO,iBAAiB,EAAGf,CAAS,EAC9E,GAAGE,EAEH,SAAAD,CAAA,CAAA,CAGP,CAAC,EACD,eACF,EAaMe,EAAmB,CAAC,CACxB,QAAAC,EAAU,UACV,cAAAC,EACA,YAAAC,EACA,UAAAnB,EACA,SAAAC,EACA,GAAGC,CACL,IACEW,EAAAA,IAAC,QAAA,CACC,UAAWC,EAAAA,GACTC,EAAAA,QAAO,MACPA,EAAAA,QAAO,UAAUE,CAAO,EAAE,EAC1BC,GAAiBH,EAAAA,QAAO,oBAAoB,EAC5CI,GAAeJ,EAAAA,QAAO,kBAAkB,EACxCf,CAAA,EAED,GAAGE,EAEH,SAAAD,CAAA,CACH,EAGFmB,SAAkCJ,CAAK"}
@@ -0,0 +1,28 @@
1
+ import { FC, HTMLAttributes, TableHTMLAttributes } from 'react';
2
+ type ScrollerProps = HTMLAttributes<HTMLDivElement> & {
3
+ /** Çerçeve (hairline + yarıçap + yüzey). */
4
+ hasFrame?: boolean;
5
+ /**
6
+ * Kaydırma bölgesinin erişilebilir adı ("Sipariş kalemleri").
7
+ * ⚠ ZORUNLU değil ama VERİLMELİ: kutu klavyeyle odaklanabilir bir `region` ve adsız bir bölge
8
+ * ekran okuyucuda yalnızca "bölge" diye okunur
9
+ */
10
+ label?: string;
11
+ };
12
+ /**
13
+ * Tablo kaydırma kutusu — "tablo kendi kutusunda kayar, sayfa asla yatay kaymaz" kuralının tek
14
+ * uygulaması.
15
+ */
16
+ export declare const TableScroller: FC<ScrollerProps>;
17
+ type Props = TableHTMLAttributes<HTMLTableElement> & Partial<{
18
+ /** Hücre dolgusu. */
19
+ density: 'compact' | 'regular' | 'spacious';
20
+ /** Başlık satırı `$surface-2` zeminle kutunun içinde YAPIŞKAN kalır. */
21
+ hasStickyHead: boolean;
22
+ /** Satır hover zemini: çok sütunlu tabloda göz satırını kaybediyor. */
23
+ hasRowHover: boolean;
24
+ }>;
25
+ /** Temel tablo — hairline satır ayrımı, `$surface-2` başlık, yoğunluk ölçeği. */
26
+ declare const Table: FC<Props>;
27
+ declare const _default: typeof Table;
28
+ export default _default;
@@ -0,0 +1,58 @@
1
+ "use client";
2
+ import { jsx as f } from "react/jsx-runtime";
3
+ import { memo as m, useRef as p, useState as h, useEffect as x } from "react";
4
+ import { cx as d } from "../../helpers/class-name.helper.js";
5
+ import { named as S } from "../../helpers/component.helper.js";
6
+ const e = {"scroller":"ui-scroller-EtDmS","scroller--frame":"ui-scroller--frame-84zz6","table":"ui-table-uCv4q","table--compact":"ui-table--compact-4KCVl","table--regular":"ui-table--regular-hsA3-","table--spacious":"ui-table--spacious-BBUX-","table--sticky-head":"ui-table--sticky-head-FO2L4","table--row-hover":"ui-table--row-hover--MAoe"};
7
+ const I = /* @__PURE__ */ S(
8
+ /* @__PURE__ */ m(({ hasFrame: l = !0, label: s, className: a, children: o, ...c }) => {
9
+ const t = p(null), [n, u] = h(!1);
10
+ return x(() => {
11
+ const r = t.current;
12
+ if (!r || typeof ResizeObserver > "u") return;
13
+ const b = () => u(r.scrollWidth > r.clientWidth + 1);
14
+ b();
15
+ const i = new ResizeObserver(b);
16
+ i.observe(r);
17
+ for (const v of r.children) i.observe(v);
18
+ return () => i.disconnect();
19
+ }, [o]), /* @__PURE__ */ f(
20
+ "div",
21
+ {
22
+ ref: t,
23
+ tabIndex: n ? 0 : void 0,
24
+ role: n ? "region" : void 0,
25
+ "aria-label": n ? s : void 0,
26
+ className: d(e.scroller, l && e["scroller--frame"], a),
27
+ ...c,
28
+ children: o
29
+ }
30
+ );
31
+ }),
32
+ "TableScroller"
33
+ ), y = ({
34
+ density: l = "regular",
35
+ hasStickyHead: s,
36
+ hasRowHover: a,
37
+ className: o,
38
+ children: c,
39
+ ...t
40
+ }) => /* @__PURE__ */ f(
41
+ "table",
42
+ {
43
+ className: d(
44
+ e.table,
45
+ e[`table--${l}`],
46
+ s && e["table--sticky-head"],
47
+ a && e["table--row-hover"],
48
+ o
49
+ ),
50
+ ...t,
51
+ children: c
52
+ }
53
+ ), N = /* @__PURE__ */ m(y);
54
+ export {
55
+ I as TableScroller,
56
+ N as default
57
+ };
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Table/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type HTMLAttributes,\n memo,\n type TableHTMLAttributes,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\ntype ScrollerProps = HTMLAttributes<HTMLDivElement> & {\n /** Çerçeve (hairline + yarıçap + yüzey). */\n hasFrame?: boolean;\n /**\n * Kaydırma bölgesinin erişilebilir adı (\"Sipariş kalemleri\").\n * ⚠ ZORUNLU değil ama VERİLMELİ: kutu klavyeyle odaklanabilir bir `region` ve adsız bir bölge\n * ekran okuyucuda yalnızca \"bölge\" diye okunur\n */\n label?: string;\n};\n\n/**\n * Tablo kaydırma kutusu — \"tablo kendi kutusunda kayar, sayfa asla yatay kaymaz\" kuralının tek\n * uygulaması.\n */\nexport const TableScroller: FC<ScrollerProps> = /*#__PURE__*/ named(\n /*#__PURE__*/ memo(({ hasFrame = true, label, className, children, ...rest }) => {\n const ref = useRef<HTMLDivElement>(null);\n const [isScrollable, setIsScrollable] = useState(false);\n\n /*\n * Kutu `overflow: auto` taşıyor ve klavye kullanıcısı odaklanamadığı bir kutuyu KAYDIRAMAZ\n * (WCAG 2.1.1) — o yüzden kaydırılabilirken ikisi de ZORUNLU.\n * ⚠ `tabIndex` + `role` YALNIZCA GERÇEKTEN KAYABİLEN kutuda.\n */\n useEffect(() => {\n const node = ref.current;\n /* `ScrollArea` ile aynı koruma: jsdom `ResizeObserver` sağlamıyor. */\n if (!node || typeof ResizeObserver === 'undefined') return;\n\n const measure = () => setIsScrollable(node.scrollWidth > node.clientWidth + 1);\n\n measure();\n\n /* İçerik DE kutu DA değişebiliyor: 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 return () => observer.disconnect();\n }, [children]);\n\n return (\n <div\n ref={ref}\n tabIndex={isScrollable ? 0 : undefined}\n role={isScrollable ? 'region' : undefined}\n aria-label={isScrollable ? label : undefined}\n className={cx(styles.scroller, hasFrame && styles['scroller--frame'], className)}\n {...rest}\n >\n {children}\n </div>\n );\n }),\n 'TableScroller',\n);\n\ntype Props = TableHTMLAttributes<HTMLTableElement> &\n Partial<{\n /** Hücre dolgusu. */\n density: 'compact' | 'regular' | 'spacious';\n /** Başlık satırı `$surface-2` zeminle kutunun içinde YAPIŞKAN kalır. */\n hasStickyHead: boolean;\n /** Satır hover zemini: çok sütunlu tabloda göz satırını kaybediyor. */\n hasRowHover: boolean;\n }>;\n\n/** Temel tablo — hairline satır ayrımı, `$surface-2` başlık, yoğunluk ölçeği. */\nconst Table: FC<Props> = ({\n density = 'regular',\n hasStickyHead,\n hasRowHover,\n className,\n children,\n ...rest\n}) => (\n <table\n className={cx(\n styles.table,\n styles[`table--${density}`],\n hasStickyHead && styles['table--sticky-head'],\n hasRowHover && styles['table--row-hover'],\n className,\n )}\n {...rest}\n >\n {children}\n </table>\n);\n\nexport default /*#__PURE__*/ memo(Table) as typeof Table;\n"],"names":["TableScroller","named","memo","hasFrame","label","className","children","rest","ref","useRef","isScrollable","setIsScrollable","useState","useEffect","node","measure","observer","child","jsx","cx","styles","Table","density","hasStickyHead","hasRowHover","index"],"mappings":";;;;;;AA+BO,MAAMA,IAAiD,gBAAAC;AAAA,EAC9C,gBAAAC,EAAK,CAAC,EAAE,UAAAC,IAAW,IAAM,OAAAC,GAAO,WAAAC,GAAW,UAAAC,GAAU,GAAGC,QAAW;AAC/E,UAAMC,IAAMC,EAAuB,IAAI,GACjC,CAACC,GAAcC,CAAe,IAAIC,EAAS,EAAK;AAOtD,WAAAC,EAAU,MAAM;AACd,YAAMC,IAAON,EAAI;AAEjB,UAAI,CAACM,KAAQ,OAAO,iBAAmB,IAAa;AAEpD,YAAMC,IAAU,MAAMJ,EAAgBG,EAAK,cAAcA,EAAK,cAAc,CAAC;AAE7E,MAAAC,EAAA;AAGA,YAAMC,IAAW,IAAI,eAAeD,CAAO;AAC3C,MAAAC,EAAS,QAAQF,CAAI;AACrB,iBAAWG,KAASH,EAAK,SAAU,CAAAE,EAAS,QAAQC,CAAK;AAEzD,aAAO,MAAMD,EAAS,WAAA;AAAA,IACxB,GAAG,CAACV,CAAQ,CAAC,GAGX,gBAAAY;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAV;AAAA,QACA,UAAUE,IAAe,IAAI;AAAA,QAC7B,MAAMA,IAAe,WAAW;AAAA,QAChC,cAAYA,IAAeN,IAAQ;AAAA,QACnC,WAAWe,EAAGC,EAAO,UAAUjB,KAAYiB,EAAO,iBAAiB,GAAGf,CAAS;AAAA,QAC9E,GAAGE;AAAA,QAEH,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP,CAAC;AAAA,EACD;AACF,GAaMe,IAAmB,CAAC;AAAA,EACxB,SAAAC,IAAU;AAAA,EACV,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAnB;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAW;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACTC,EAAO;AAAA,MACPA,EAAO,UAAUE,CAAO,EAAE;AAAA,MAC1BC,KAAiBH,EAAO,oBAAoB;AAAA,MAC5CI,KAAeJ,EAAO,kBAAkB;AAAA,MACxCf;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,IAEH,UAAAD;AAAA,EAAA;AACH,GAGFmB,sBAAkCJ,CAAK;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-scroller-EtDmS{position:relative;overflow:auto;min-width:0;align-self:stretch;scrollbar-width:thin;scrollbar-color:var(--hd-border-strong) transparent}.ui-scroller-EtDmS::-webkit-scrollbar{width:8px;height:8px}.ui-scroller-EtDmS::-webkit-scrollbar-track{background:transparent}.ui-scroller-EtDmS::-webkit-scrollbar-thumb{background-color:var(--hd-border-strong);border-radius:var(--hd-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-scroller-EtDmS::-webkit-scrollbar-thumb:hover{background-color:var(--hd-text-3)}.ui-scroller--frame-84zz6{border:1px solid var(--hd-border);border-radius:var(--hd-radius-md);background-color:var(--hd-bg-surface)}.ui-table-uCv4q{width:100%;border-collapse:collapse;font-size:var(--hd-type-small-size)}.ui-table-uCv4q th,.ui-table-uCv4q td{text-align:start;border-bottom:1px solid var(--hd-border)}.ui-table-uCv4q tbody tr:last-child>*{border-bottom:none}.ui-table--compact-4KCVl th,.ui-table--compact-4KCVl td{padding:var(--hd-space-2) var(--hd-space-3)}.ui-table--regular-hsA3- th,.ui-table--regular-hsA3- td{padding:var(--hd-space-3)}.ui-table--spacious-BBUX- th,.ui-table--spacious-BBUX- td{padding:var(--hd-space-3) var(--hd-space-4)}.ui-table--sticky-head-FO2L4 thead th{position:sticky;top:0;z-index:var(--hd-z-raised);background-color:var(--hd-bg-raised);font-family:var(--hd-font-body);font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);text-transform:uppercase;letter-spacing:.045em;color:var(--hd-text-2);white-space:nowrap}.ui-table--row-hover--MAoe tbody tr:hover>td{background-color:var(--hd-bg-raised)}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),e=require("react"),l=require("../../helpers/class-name.helper.cjs"),i=require("../../helpers/component.helper.cjs"),d={default:{"checkbox":"ui-checkbox--dvpB"}},f=e.forwardRef(({label:c,isIndeterminate:t=!1,className:u,testId:n,...a},o)=>{const r=e.useRef(null);return e.useImperativeHandle(o,()=>r.current,[]),e.useEffect(()=>{r.current&&(r.current.indeterminate=t)},[t]),s.jsx("input",{ref:r,type:"checkbox","aria-label":c,"aria-checked":t?"mixed":void 0,className:l.cx(d.default.checkbox,u),"data-testid":n,...a})}),m=e.memo(i.named(f,"TableCheckbox"));exports.default=m;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/TableCheckbox/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n forwardRef,\n type InputHTMLAttributes,\n memo,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\ntype Props = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'aria-label'> & {\n /** Erişilebilir ad — ZORUNLU. */\n label: string;\n /**\n * \"Bazı satırlar seçili\" — başlık kutusunun üçüncü durumu.\n * ⚠ Bu prop OLMADAN o durum İFADE EDİLEMİYORDU. `indeterminate` bir HTML niteliği değil, yalnızca\n * DOM ÖZELLİĞİ\n */\n isIndeterminate?: boolean;\n testId?: string;\n};\n\n/** Tablo hücresindeki toplu seçim kutusu. */\nconst TableCheckbox = /*#__PURE__*/ forwardRef<HTMLInputElement, Props>(\n ({ label, isIndeterminate = false, className, testId, ...rest }, ref) => {\n const innerRef = useRef<HTMLInputElement>(null);\n\n /*\n * Dışarıdan gelen `ref` ile içteki `ref` birleştirilir: bileşen kendi düğümüne erişmek ZORUNDA\n * (`indeterminate` yalnızca özellik olarak yazılabiliyor)…\n */\n useImperativeHandle(ref, () => innerRef.current as HTMLInputElement, []);\n\n useEffect(() => {\n if (innerRef.current) innerRef.current.indeterminate = isIndeterminate;\n }, [isIndeterminate]);\n\n return (\n <input\n ref={innerRef}\n type=\"checkbox\"\n aria-label={label}\n /*\n * ⚠ `aria-checked=\"mixed\"` AYRICA yazılır. `indeterminate` DOM özelliği görsel durumu\n * değiştirir ama erişilebilirlik ağacına bazı…\n */\n aria-checked={isIndeterminate ? 'mixed' : undefined}\n className={cx(styles.checkbox, className)}\n data-testid={testId}\n {...rest}\n />\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(TableCheckbox, 'TableCheckbox'),\n) as typeof TableCheckbox;\n"],"names":["TableCheckbox","forwardRef","label","isIndeterminate","className","testId","rest","ref","innerRef","useRef","useImperativeHandle","useEffect","jsx","cx","styles","index","memo","named"],"mappings":"uTA4BMA,EAA8BC,EAAAA,WAClC,CAAC,CAAE,MAAAC,EAAO,gBAAAC,EAAkB,GAAO,UAAAC,EAAW,OAAAC,EAAQ,GAAGC,CAAA,EAAQC,IAAQ,CACvE,MAAMC,EAAWC,EAAAA,OAAyB,IAAI,EAM9CC,OAAAA,EAAAA,oBAAoBH,EAAK,IAAMC,EAAS,QAA6B,CAAA,CAAE,EAEvEG,EAAAA,UAAU,IAAM,CACVH,EAAS,UAASA,EAAS,QAAQ,cAAgBL,EACzD,EAAG,CAACA,CAAe,CAAC,EAGlBS,EAAAA,IAAC,QAAA,CACC,IAAKJ,EACL,KAAK,WACL,aAAYN,EAKZ,eAAcC,EAAkB,QAAU,OAC1C,UAAWU,EAAAA,GAAGC,UAAO,SAAUV,CAAS,EACxC,cAAaC,EACZ,GAAGC,CAAA,CAAA,CAGV,CACF,EAEAS,EAA6BC,EAAAA,KACbC,EAAAA,MAAMjB,EAAe,eAAe,CACpD"}
@@ -0,0 +1,15 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+ /** Tablo hücresindeki toplu seçim kutusu. */
3
+ declare const TableCheckbox: import('react').ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "aria-label"> & {
4
+ /** Erişilebilir ad — ZORUNLU. */
5
+ label: string;
6
+ /**
7
+ * "Bazı satırlar seçili" — başlık kutusunun üçüncü durumu.
8
+ * ⚠ Bu prop OLMADAN o durum İFADE EDİLEMİYORDU. `indeterminate` bir HTML niteliği değil, yalnızca
9
+ * DOM ÖZELLİĞİ
10
+ */
11
+ isIndeterminate?: boolean;
12
+ testId?: string;
13
+ } & import('react').RefAttributes<HTMLInputElement>>;
14
+ declare const _default: typeof TableCheckbox;
15
+ export default _default;
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { jsx as m } from "react/jsx-runtime";
3
+ import { memo as i, forwardRef as n, useRef as s, useImperativeHandle as l, useEffect as u } from "react";
4
+ import { cx as d } from "../../helpers/class-name.helper.js";
5
+ import { named as p } from "../../helpers/component.helper.js";
6
+ const x = {"checkbox":"ui-checkbox--dvpB"};
7
+ const b = /* @__PURE__ */ n(
8
+ ({ label: o, isIndeterminate: r = !1, className: t, testId: c, ...a }, f) => {
9
+ const e = s(null);
10
+ return l(f, () => e.current, []), u(() => {
11
+ e.current && (e.current.indeterminate = r);
12
+ }, [r]), /* @__PURE__ */ m(
13
+ "input",
14
+ {
15
+ ref: e,
16
+ type: "checkbox",
17
+ "aria-label": o,
18
+ "aria-checked": r ? "mixed" : void 0,
19
+ className: d(x.checkbox, t),
20
+ "data-testid": c,
21
+ ...a
22
+ }
23
+ );
24
+ }
25
+ ), C = /* @__PURE__ */ i(
26
+ /* @__PURE__ */ p(b, "TableCheckbox")
27
+ );
28
+ export {
29
+ C as default
30
+ };
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/TableCheckbox/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n forwardRef,\n type InputHTMLAttributes,\n memo,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\ntype Props = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'aria-label'> & {\n /** Erişilebilir ad — ZORUNLU. */\n label: string;\n /**\n * \"Bazı satırlar seçili\" — başlık kutusunun üçüncü durumu.\n * ⚠ Bu prop OLMADAN o durum İFADE EDİLEMİYORDU. `indeterminate` bir HTML niteliği değil, yalnızca\n * DOM ÖZELLİĞİ\n */\n isIndeterminate?: boolean;\n testId?: string;\n};\n\n/** Tablo hücresindeki toplu seçim kutusu. */\nconst TableCheckbox = /*#__PURE__*/ forwardRef<HTMLInputElement, Props>(\n ({ label, isIndeterminate = false, className, testId, ...rest }, ref) => {\n const innerRef = useRef<HTMLInputElement>(null);\n\n /*\n * Dışarıdan gelen `ref` ile içteki `ref` birleştirilir: bileşen kendi düğümüne erişmek ZORUNDA\n * (`indeterminate` yalnızca özellik olarak yazılabiliyor)…\n */\n useImperativeHandle(ref, () => innerRef.current as HTMLInputElement, []);\n\n useEffect(() => {\n if (innerRef.current) innerRef.current.indeterminate = isIndeterminate;\n }, [isIndeterminate]);\n\n return (\n <input\n ref={innerRef}\n type=\"checkbox\"\n aria-label={label}\n /*\n * ⚠ `aria-checked=\"mixed\"` AYRICA yazılır. `indeterminate` DOM özelliği görsel durumu\n * değiştirir ama erişilebilirlik ağacına bazı…\n */\n aria-checked={isIndeterminate ? 'mixed' : undefined}\n className={cx(styles.checkbox, className)}\n data-testid={testId}\n {...rest}\n />\n );\n },\n);\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(TableCheckbox, 'TableCheckbox'),\n) as typeof TableCheckbox;\n"],"names":["TableCheckbox","forwardRef","label","isIndeterminate","className","testId","rest","ref","innerRef","useRef","useImperativeHandle","useEffect","jsx","cx","styles","index","memo","named"],"mappings":";;;;;;AA4BA,MAAMA,IAA8B,gBAAAC;AAAA,EAClC,CAAC,EAAE,OAAAC,GAAO,iBAAAC,IAAkB,IAAO,WAAAC,GAAW,QAAAC,GAAQ,GAAGC,EAAA,GAAQC,MAAQ;AACvE,UAAMC,IAAWC,EAAyB,IAAI;AAM9C,WAAAC,EAAoBH,GAAK,MAAMC,EAAS,SAA6B,CAAA,CAAE,GAEvEG,EAAU,MAAM;AACd,MAAIH,EAAS,YAASA,EAAS,QAAQ,gBAAgBL;AAAA,IACzD,GAAG,CAACA,CAAe,CAAC,GAGlB,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKJ;AAAA,QACL,MAAK;AAAA,QACL,cAAYN;AAAA,QAKZ,gBAAcC,IAAkB,UAAU;AAAA,QAC1C,WAAWU,EAAGC,EAAO,UAAUV,CAAS;AAAA,QACxC,eAAaC;AAAA,QACZ,GAAGC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF,GAEAS,IAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAMjB,GAAe,eAAe;AACpD;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-checkbox--dvpB{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-grid;place-content:center;flex-shrink:0;width:18px;height:18px;margin:0;border:1.5px solid var(--hd-text-3);border-radius:var(--hd-radius-xs);background-color:var(--hd-bg-surface);cursor:pointer;transition:background-color var(--hd-duration-fast) var(--hd-ease-standard),border-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-checkbox--dvpB:before{content:"";width:10px;height:10px;background-color:var(--hd-on-primary);scale:0;transition:scale var(--hd-duration-fast) var(--hd-ease-standard);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%)}.ui-checkbox--dvpB:hover:not(:disabled){border-color:var(--hd-text-2)}.ui-checkbox--dvpB:checked,.ui-checkbox--dvpB:indeterminate{background-color:var(--hd-primary);border-color:var(--hd-primary)}.ui-checkbox--dvpB:checked:before,.ui-checkbox--dvpB:indeterminate:before{scale:1}.ui-checkbox--dvpB:checked:hover:not(:disabled),.ui-checkbox--dvpB:indeterminate:hover:not(:disabled){background-color:var(--hd-primary-hover);border-color:var(--hd-primary-hover)}.ui-checkbox--dvpB:indeterminate:before{clip-path:inset(40% 5%)}.ui-checkbox--dvpB:disabled{background-color:var(--hd-bg-disabled);border-color:var(--hd-border-strong);cursor:not-allowed}.ui-checkbox--dvpB:checked:disabled,.ui-checkbox--dvpB:indeterminate:disabled{background-color:var(--hd-text-disabled);border-color:transparent}.ui-checkbox--dvpB:checked:disabled:before,.ui-checkbox--dvpB:indeterminate:disabled:before{background-color:var(--hd-bg-surface)}@media (prefers-reduced-motion: reduce){.ui-checkbox--dvpB{transition:none}.ui-checkbox--dvpB:before{transition:none}}@media (forced-colors: active){.ui-checkbox--dvpB{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.ui-checkbox--dvpB:before{display:none}}.ui-checkbox--dvpB{position:relative}.ui-checkbox--dvpB:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-checkbox--dvpB:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px)}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),n=require("react"),I=require("@handijit/utils"),R=require("../../helpers/class-name.helper.cjs"),K=require("../../helpers/scroll.helper.cjs"),a={default:{"tabs":"ui-tabs-l4dFE","tabs__list":"ui-tabs__list-HJvR8","tabs__tab":"ui-tabs__tab-7gDW7","tabs__tab--active":"ui-tabs__tab--active-riqNp","tabs__count":"ui-tabs__count-8JX8s","tabs__panel":"ui-tabs__panel-CPklY"}},T=({items:t,defaultTabId:w,activeId:_,onChange:i,ariaLabel:S,isManualActivation:u,className:g,testId:v})=>{var D;const d=n.useId(),[E,P]=n.useState(w??((D=t[0])==null?void 0:D.id)),h=I.isDefined(_),p=h?_:E,s=t.findIndex(e=>e.id===p),[f,y]=n.useState(s<0?0:s),$=n.useRef(null),l=t[s]??t[0],b=f>=0&&f<t.length?f:Math.max(s,0);n.useEffect(()=>{y(s<0?0:s)},[s]);const j=n.useRef(!1);n.useEffect(()=>{var e;if(!j.current){j.current=!0;return}K.scrollIntoViewIfPossible((e=$.current)==null?void 0:e.querySelector('[aria-selected="true"]'),{block:"nearest",inline:"nearest"})},[p]);const x=e=>{h||P(e),i==null||i(e)},F=e=>{var k;if(u&&(e.key==="Enter"||e.key===" ")){e.preventDefault();const N=t[b];N&&x(N.id);return}const r=e.key==="ArrowRight"?1:e.key==="ArrowLeft"?-1:0;if(r===0)return;e.preventDefault();const c=((u?b:s)+r+t.length)%t.length;y(c),u||x(t[c].id),(k=document.getElementById(`${d}-tab-${t[c].id}`))==null||k.focus()};if(t.length===0)return null;const q=I.isDefined(l==null?void 0:l.content);return o.jsxs("div",{className:R.cx(a.default.tabs,g),"data-testid":v,children:[o.jsx("div",{ref:$,className:a.default.tabs__list,role:"tablist","aria-label":S,onKeyDown:F,children:t.map(e=>{var c;const r=e.id===l.id;return o.jsxs("button",{id:`${d}-tab-${e.id}`,type:"button",role:"tab","aria-selected":r,"aria-controls":r&&q?`${d}-panel-${e.id}`:void 0,tabIndex:(u?((c=t[b])==null?void 0:c.id)===e.id:r)?0:-1,className:R.cx(a.default.tabs__tab,r&&a.default["tabs__tab--active"]),onClick:()=>x(e.id),children:[e.label,I.isDefined(e.count)&&o.jsx("span",{className:a.default.tabs__count,children:e.count})]},e.id)})}),q&&o.jsx("div",{id:`${d}-panel-${l.id}`,role:"tabpanel","aria-labelledby":`${d}-tab-${l.id}`,className:a.default.tabs__panel,tabIndex:0,children:l.content})]})},B=n.memo(T);exports.default=B;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Tabs/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type KeyboardEvent,\n memo,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { isDefined } from '@handijit/utils';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { scrollIntoViewIfPossible } from '../../helpers/scroll.helper';\n\nimport styles from './index.module.scss';\n\nexport type TabItem = {\n id: string;\n label: string;\n /** Etiketin yanında gösterilen sayı. */\n count?: number;\n /** Sekmenin paneli. */\n content?: ReactNode;\n};\n\ntype Props = {\n items: TabItem[];\n /** Kontrolsüz kullanımda açılışta seçili sekme. */\n defaultTabId?: string;\n /** Kontrollü kullanım: seçili sekme çağıranın durumunda. */\n activeId?: string;\n onChange?: (id: string) => void;\n /** Sekme çubuğunun erişilebilir adı. */\n ariaLabel?: string;\n /** Ok tuşu yalnızca ODAĞI taşır; seçim `Enter`/`Space` ile yapılır. */\n isManualActivation?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Sekmeler. */\nconst Tabs: FC<Props> = ({\n items,\n defaultTabId,\n activeId: controlledId,\n onChange,\n ariaLabel,\n isManualActivation,\n className,\n testId,\n}) => {\n const baseId = useId();\n const [uncontrolledId, setUncontrolledId] = useState(defaultTabId ?? items[0]?.id);\n\n const isControlled = isDefined(controlledId);\n const activeId = isControlled ? controlledId : uncontrolledId;\n\n const activeIndex = items.findIndex(item => item.id === activeId);\n /* Manuel kipte ODAKLANAN sekme ile SECILI sekme ayrisir. */\n const [focusIndex, setFocusIndex] = useState(activeIndex < 0 ? 0 : activeIndex);\n const listRef = useRef<HTMLDivElement>(null);\n const active = items[activeIndex] ?? items[0];\n\n /*\n * 1. COKME: `items` kisaldiginda indeks kirpilmiyordu.\n * ⚠ `focusIndex` HAM OKUNMAZ — iki ayri ariza uretiyordu.\n */\n const safeFocusIndex =\n focusIndex >= 0 && focusIndex < items.length ? focusIndex : Math.max(activeIndex, 0);\n\n useEffect(() => {\n /* Secim degistiginde odak da ona hizalanir. */\n setFocusIndex(activeIndex < 0 ? 0 : activeIndex);\n }, [activeIndex]);\n\n /*\n * SECILI SEKME GORUNURE KAYDIRILIR — ama MOUNT'ta DEGIL.\n * ⚠ Ilk kosu da kaydiriyordu ve `scrollIntoView` yalnizca serit kabini degil SAYFAYI da kaydirir:\n * serit ilk boyamada ekranin altindaysa (uzun…\n */\n const hasMountedRef = useRef(false);\n\n useEffect(() => {\n if (!hasMountedRef.current) {\n hasMountedRef.current = true;\n return;\n }\n\n scrollIntoViewIfPossible(listRef.current?.querySelector(`[aria-selected=\"true\"]`), {\n block: 'nearest',\n inline: 'nearest',\n });\n }, [activeId]);\n\n const select = (id: string) => {\n if (!isControlled) setUncontrolledId(id);\n onChange?.(id);\n };\n\n /** Ok tuşlarıyla gezinme; başta/sonda döner. */\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isManualActivation && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n const focused = items[safeFocusIndex];\n if (focused) select(focused.id);\n return;\n }\n\n const offset = event.key === 'ArrowRight' ? 1 : event.key === 'ArrowLeft' ? -1 : 0;\n if (offset === 0) return;\n\n event.preventDefault();\n const next =\n ((isManualActivation ? safeFocusIndex : activeIndex) + offset + items.length) % items.length;\n\n setFocusIndex(next);\n if (!isManualActivation) select(items[next].id);\n\n /*\n * Odak HER IKI kipte de tasinir: manuel kipte seciliyle odaklanan sekme ayrisiyor ve `tabindex`\n * odaklanani izlemek zorunda.\n */\n document.getElementById(`${baseId}-tab-${items[next].id}`)?.focus();\n };\n\n if (items.length === 0) return null;\n\n /*\n * Panelsiz kullanimda `aria-controls` VERILMEZ: var olmayan bir kimligi isaret etmek ekran\n * okuyucuda kirik bir bag uretir.\n */\n const hasPanel = isDefined(active?.content);\n\n return (\n <div className={cx(styles.tabs, className)} data-testid={testId}>\n <div\n ref={listRef}\n className={styles.tabs__list}\n role=\"tablist\"\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n >\n {items.map(item => {\n const isActive = item.id === active.id;\n\n return (\n <button\n key={item.id}\n id={`${baseId}-tab-${item.id}`}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n /* ⚠ YALNIZCA SECILI SEKMEDE. */\n aria-controls={isActive && hasPanel ? `${baseId}-panel-${item.id}` : undefined}\n // Yalnızca seçili sekme sekme sırasında; gezinme ok tuşlarıyla.\n /*\n * Donen `tabindex` ODAKLANANI izler: manuel kipte secili sekme ile odaklanan sekme\n * ayri ve Tab'in geri donecegi yer odaklanan olmali.\n */\n tabIndex={\n (isManualActivation ? items[safeFocusIndex]?.id === item.id : isActive) ? 0 : -1\n }\n className={cx(styles.tabs__tab, isActive && styles['tabs__tab--active'])}\n onClick={() => select(item.id)}\n >\n {item.label}\n {isDefined(item.count) && <span className={styles.tabs__count}>{item.count}</span>}\n </button>\n );\n })}\n </div>\n\n {hasPanel && (\n <div\n id={`${baseId}-panel-${active.id}`}\n role=\"tabpanel\"\n aria-labelledby={`${baseId}-tab-${active.id}`}\n className={styles.tabs__panel}\n tabIndex={0}\n >\n {active.content}\n </div>\n )}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(Tabs) as typeof Tabs;\n"],"names":["Tabs","items","defaultTabId","controlledId","onChange","ariaLabel","isManualActivation","className","testId","baseId","useId","uncontrolledId","setUncontrolledId","useState","_a","isControlled","isDefined","activeId","activeIndex","item","focusIndex","setFocusIndex","listRef","useRef","active","safeFocusIndex","useEffect","hasMountedRef","scrollIntoViewIfPossible","select","id","handleKeyDown","event","focused","offset","next","hasPanel","jsxs","cx","styles","jsx","isActive","index"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { FC, ReactNode } from 'react';
2
+ export type TabItem = {
3
+ id: string;
4
+ label: string;
5
+ /** Etiketin yanında gösterilen sayı. */
6
+ count?: number;
7
+ /** Sekmenin paneli. */
8
+ content?: ReactNode;
9
+ };
10
+ type Props = {
11
+ items: TabItem[];
12
+ /** Kontrolsüz kullanımda açılışta seçili sekme. */
13
+ defaultTabId?: string;
14
+ /** Kontrollü kullanım: seçili sekme çağıranın durumunda. */
15
+ activeId?: string;
16
+ onChange?: (id: string) => void;
17
+ /** Sekme çubuğunun erişilebilir adı. */
18
+ ariaLabel?: string;
19
+ /** Ok tuşu yalnızca ODAĞI taşır; seçim `Enter`/`Space` ile yapılır. */
20
+ isManualActivation?: boolean;
21
+ className?: string;
22
+ testId?: string;
23
+ };
24
+ /** Sekmeler. */
25
+ declare const Tabs: FC<Props>;
26
+ declare const _default: typeof Tabs;
27
+ export default _default;
@@ -0,0 +1,102 @@
1
+ "use client";
2
+ import { jsxs as R, jsx as b } from "react/jsx-runtime";
3
+ import { memo as L, useId as T, useState as m, useRef as E, useEffect as g } from "react";
4
+ import { isDefined as p } from "@handijit/utils";
5
+ import { cx as j } from "../../helpers/class-name.helper.js";
6
+ import { scrollIntoViewIfPossible as U } from "../../helpers/scroll.helper.js";
7
+ const c = {"tabs":"ui-tabs-l4dFE","tabs__list":"ui-tabs__list-HJvR8","tabs__tab":"ui-tabs__tab-7gDW7","tabs__tab--active":"ui-tabs__tab--active-riqNp","tabs__count":"ui-tabs__count-8JX8s","tabs__panel":"ui-tabs__panel-CPklY"};
8
+ const V = ({
9
+ items: t,
10
+ defaultTabId: v,
11
+ activeId: I,
12
+ onChange: d,
13
+ ariaLabel: F,
14
+ isManualActivation: a,
15
+ className: K,
16
+ testId: P
17
+ }) => {
18
+ var w;
19
+ const l = T(), [S, q] = m(v ?? ((w = t[0]) == null ? void 0 : w.id)), x = p(I), y = x ? I : S, n = t.findIndex((e) => e.id === y), [i, h] = m(n < 0 ? 0 : n), _ = E(null), o = t[n] ?? t[0], f = i >= 0 && i < t.length ? i : Math.max(n, 0);
20
+ g(() => {
21
+ h(n < 0 ? 0 : n);
22
+ }, [n]);
23
+ const $ = E(!1);
24
+ g(() => {
25
+ var e;
26
+ if (!$.current) {
27
+ $.current = !0;
28
+ return;
29
+ }
30
+ U((e = _.current) == null ? void 0 : e.querySelector('[aria-selected="true"]'), {
31
+ block: "nearest",
32
+ inline: "nearest"
33
+ });
34
+ }, [y]);
35
+ const u = (e) => {
36
+ x || q(e), d == null || d(e);
37
+ }, B = (e) => {
38
+ var D;
39
+ if (a && (e.key === "Enter" || e.key === " ")) {
40
+ e.preventDefault();
41
+ const N = t[f];
42
+ N && u(N.id);
43
+ return;
44
+ }
45
+ const r = e.key === "ArrowRight" ? 1 : e.key === "ArrowLeft" ? -1 : 0;
46
+ if (r === 0) return;
47
+ e.preventDefault();
48
+ const s = ((a ? f : n) + r + t.length) % t.length;
49
+ h(s), a || u(t[s].id), (D = document.getElementById(`${l}-tab-${t[s].id}`)) == null || D.focus();
50
+ };
51
+ if (t.length === 0) return null;
52
+ const k = p(o == null ? void 0 : o.content);
53
+ return /* @__PURE__ */ R("div", { className: j(c.tabs, K), "data-testid": P, children: [
54
+ /* @__PURE__ */ b(
55
+ "div",
56
+ {
57
+ ref: _,
58
+ className: c.tabs__list,
59
+ role: "tablist",
60
+ "aria-label": F,
61
+ onKeyDown: B,
62
+ children: t.map((e) => {
63
+ var s;
64
+ const r = e.id === o.id;
65
+ return /* @__PURE__ */ R(
66
+ "button",
67
+ {
68
+ id: `${l}-tab-${e.id}`,
69
+ type: "button",
70
+ role: "tab",
71
+ "aria-selected": r,
72
+ "aria-controls": r && k ? `${l}-panel-${e.id}` : void 0,
73
+ tabIndex: (a ? ((s = t[f]) == null ? void 0 : s.id) === e.id : r) ? 0 : -1,
74
+ className: j(c.tabs__tab, r && c["tabs__tab--active"]),
75
+ onClick: () => u(e.id),
76
+ children: [
77
+ e.label,
78
+ p(e.count) && /* @__PURE__ */ b("span", { className: c.tabs__count, children: e.count })
79
+ ]
80
+ },
81
+ e.id
82
+ );
83
+ })
84
+ }
85
+ ),
86
+ k && /* @__PURE__ */ b(
87
+ "div",
88
+ {
89
+ id: `${l}-panel-${o.id}`,
90
+ role: "tabpanel",
91
+ "aria-labelledby": `${l}-tab-${o.id}`,
92
+ className: c.tabs__panel,
93
+ tabIndex: 0,
94
+ children: o.content
95
+ }
96
+ )
97
+ ] });
98
+ }, Q = /* @__PURE__ */ L(V);
99
+ export {
100
+ Q as default
101
+ };
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Tabs/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type KeyboardEvent,\n memo,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { isDefined } from '@handijit/utils';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { scrollIntoViewIfPossible } from '../../helpers/scroll.helper';\n\nimport styles from './index.module.scss';\n\nexport type TabItem = {\n id: string;\n label: string;\n /** Etiketin yanında gösterilen sayı. */\n count?: number;\n /** Sekmenin paneli. */\n content?: ReactNode;\n};\n\ntype Props = {\n items: TabItem[];\n /** Kontrolsüz kullanımda açılışta seçili sekme. */\n defaultTabId?: string;\n /** Kontrollü kullanım: seçili sekme çağıranın durumunda. */\n activeId?: string;\n onChange?: (id: string) => void;\n /** Sekme çubuğunun erişilebilir adı. */\n ariaLabel?: string;\n /** Ok tuşu yalnızca ODAĞI taşır; seçim `Enter`/`Space` ile yapılır. */\n isManualActivation?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Sekmeler. */\nconst Tabs: FC<Props> = ({\n items,\n defaultTabId,\n activeId: controlledId,\n onChange,\n ariaLabel,\n isManualActivation,\n className,\n testId,\n}) => {\n const baseId = useId();\n const [uncontrolledId, setUncontrolledId] = useState(defaultTabId ?? items[0]?.id);\n\n const isControlled = isDefined(controlledId);\n const activeId = isControlled ? controlledId : uncontrolledId;\n\n const activeIndex = items.findIndex(item => item.id === activeId);\n /* Manuel kipte ODAKLANAN sekme ile SECILI sekme ayrisir. */\n const [focusIndex, setFocusIndex] = useState(activeIndex < 0 ? 0 : activeIndex);\n const listRef = useRef<HTMLDivElement>(null);\n const active = items[activeIndex] ?? items[0];\n\n /*\n * 1. COKME: `items` kisaldiginda indeks kirpilmiyordu.\n * ⚠ `focusIndex` HAM OKUNMAZ — iki ayri ariza uretiyordu.\n */\n const safeFocusIndex =\n focusIndex >= 0 && focusIndex < items.length ? focusIndex : Math.max(activeIndex, 0);\n\n useEffect(() => {\n /* Secim degistiginde odak da ona hizalanir. */\n setFocusIndex(activeIndex < 0 ? 0 : activeIndex);\n }, [activeIndex]);\n\n /*\n * SECILI SEKME GORUNURE KAYDIRILIR — ama MOUNT'ta DEGIL.\n * ⚠ Ilk kosu da kaydiriyordu ve `scrollIntoView` yalnizca serit kabini degil SAYFAYI da kaydirir:\n * serit ilk boyamada ekranin altindaysa (uzun…\n */\n const hasMountedRef = useRef(false);\n\n useEffect(() => {\n if (!hasMountedRef.current) {\n hasMountedRef.current = true;\n return;\n }\n\n scrollIntoViewIfPossible(listRef.current?.querySelector(`[aria-selected=\"true\"]`), {\n block: 'nearest',\n inline: 'nearest',\n });\n }, [activeId]);\n\n const select = (id: string) => {\n if (!isControlled) setUncontrolledId(id);\n onChange?.(id);\n };\n\n /** Ok tuşlarıyla gezinme; başta/sonda döner. */\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isManualActivation && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n const focused = items[safeFocusIndex];\n if (focused) select(focused.id);\n return;\n }\n\n const offset = event.key === 'ArrowRight' ? 1 : event.key === 'ArrowLeft' ? -1 : 0;\n if (offset === 0) return;\n\n event.preventDefault();\n const next =\n ((isManualActivation ? safeFocusIndex : activeIndex) + offset + items.length) % items.length;\n\n setFocusIndex(next);\n if (!isManualActivation) select(items[next].id);\n\n /*\n * Odak HER IKI kipte de tasinir: manuel kipte seciliyle odaklanan sekme ayrisiyor ve `tabindex`\n * odaklanani izlemek zorunda.\n */\n document.getElementById(`${baseId}-tab-${items[next].id}`)?.focus();\n };\n\n if (items.length === 0) return null;\n\n /*\n * Panelsiz kullanimda `aria-controls` VERILMEZ: var olmayan bir kimligi isaret etmek ekran\n * okuyucuda kirik bir bag uretir.\n */\n const hasPanel = isDefined(active?.content);\n\n return (\n <div className={cx(styles.tabs, className)} data-testid={testId}>\n <div\n ref={listRef}\n className={styles.tabs__list}\n role=\"tablist\"\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n >\n {items.map(item => {\n const isActive = item.id === active.id;\n\n return (\n <button\n key={item.id}\n id={`${baseId}-tab-${item.id}`}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n /* ⚠ YALNIZCA SECILI SEKMEDE. */\n aria-controls={isActive && hasPanel ? `${baseId}-panel-${item.id}` : undefined}\n // Yalnızca seçili sekme sekme sırasında; gezinme ok tuşlarıyla.\n /*\n * Donen `tabindex` ODAKLANANI izler: manuel kipte secili sekme ile odaklanan sekme\n * ayri ve Tab'in geri donecegi yer odaklanan olmali.\n */\n tabIndex={\n (isManualActivation ? items[safeFocusIndex]?.id === item.id : isActive) ? 0 : -1\n }\n className={cx(styles.tabs__tab, isActive && styles['tabs__tab--active'])}\n onClick={() => select(item.id)}\n >\n {item.label}\n {isDefined(item.count) && <span className={styles.tabs__count}>{item.count}</span>}\n </button>\n );\n })}\n </div>\n\n {hasPanel && (\n <div\n id={`${baseId}-panel-${active.id}`}\n role=\"tabpanel\"\n aria-labelledby={`${baseId}-tab-${active.id}`}\n className={styles.tabs__panel}\n tabIndex={0}\n >\n {active.content}\n </div>\n )}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(Tabs) as typeof Tabs;\n"],"names":["Tabs","items","defaultTabId","controlledId","onChange","ariaLabel","isManualActivation","className","testId","baseId","useId","uncontrolledId","setUncontrolledId","useState","_a","isControlled","isDefined","activeId","activeIndex","item","focusIndex","setFocusIndex","listRef","useRef","active","safeFocusIndex","useEffect","hasMountedRef","scrollIntoViewIfPossible","select","id","handleKeyDown","event","focused","offset","next","hasPanel","jsxs","cx","styles","jsx","isActive","index"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-tabs-l4dFE{display:flex;flex-direction:column;gap:var(--hd-space-5)}.ui-tabs__list-HJvR8{display:flex;gap:var(--hd-space-1);position:relative;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;padding-block:var(--hd-space-1) var(--hd-space-3);scrollbar-width:none;-ms-overflow-style:none}.ui-tabs__list-HJvR8::-webkit-scrollbar{display:none}.ui-tabs__list-HJvR8>*{scroll-snap-align:start;flex-shrink:0}.ui-tabs__list-HJvR8{border-bottom:1px solid var(--hd-border)}.ui-tabs__tab-7gDW7{position:relative}.ui-tabs__tab-7gDW7:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-tabs__tab-7gDW7{display:inline-flex;align-items:center;gap:var(--hd-space-2);font-family:var(--hd-font-body);font-size:var(--hd-type-small-size);font-weight:var(--ui-tab-weight, var(--hd-font-weight-medium));color:var(--hd-text-2);background:none;border:none;padding:var(--hd-space-3) var(--hd-space-4);cursor:pointer;white-space:nowrap;position:relative;transition:color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-tabs__tab-7gDW7:hover{color:var(--hd-text)}.ui-tabs__tab-7gDW7:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, -2px)}.ui-tabs__tab-7gDW7:before{content:"";position:absolute;inset-inline:var(--hd-space-3);bottom:-1px;height:2px;background-color:transparent;border-radius:var(--hd-radius-xs) var(--hd-radius-xs) 0 0;transition:background-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-tabs__tab--active-riqNp{color:var(--hd-text);font-weight:var(--hd-font-weight-semibold)}.ui-tabs__tab--active-riqNp:before{background-color:var(--hd-primary)}@media (prefers-reduced-motion: reduce){.ui-tabs__tab-7gDW7{transition:none}.ui-tabs__tab-7gDW7:before{transition:none}}.ui-tabs__count-8JX8s{font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);color:var(--hd-text-2);background-color:var(--hd-bg-inset);border-radius:var(--hd-radius-pill);padding:1px var(--hd-space-2);font-variant-numeric:tabular-nums}.ui-tabs__panel-CPklY:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 4px);border-radius:var(--hd-radius-xs)}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),a=require("react"),E=require("react-bootstrap-icons"),b=require("../../helpers/class-name.helper.cjs"),K=require("../../helpers/component.helper.cjs"),y=require("../../helpers/label.helper.cjs"),M=require("../../hooks/useAnnounce.cjs"),P=require("../../theme/context.cjs"),r={default:{"tagInput":"ui-tagInput-QraZR","tagInput__field":"ui-tagInput__field-HeWrC","tagInput--invalid":"ui-tagInput--invalid-NQogL","tagInput--disabled":"ui-tagInput--disabled--AJFF","tagInput__tag":"ui-tagInput__tag-D-ZWB","tagInput__tag--duplicate":"ui-tagInput__tag--duplicate-3-FMF","tagInput__remove":"ui-tagInput__remove-bpjGG"}},z=({values:n,onChange:f,label:w,placeholder:T,removeLabel:j,separators:v=["Enter",","],maxTags:m,isDisabled:s,id:k,required:N,className:R,testId:S,"aria-describedby":B,"aria-invalid":g})=>{const D=a.useId(),F=k??D,I=a.useRef(null),u=a.useRef(0);a.useEffect(()=>()=>{u.current&&window.clearTimeout(u.current)},[]);const{labels:i}=P.useUi(),l=M.default(),[c,p]=a.useState(""),[$,_]=a.useState(null),h=m!==void 0&&n.length>=m,x=e=>{var d;const t=e.trim();if(t!==""){if(n.includes(t)){_(t),u.current&&window.clearTimeout(u.current),u.current=window.setTimeout(()=>_(null),1e3),l(`${t} zaten ekli`,"assertive"),p("");return}h||(f([...n,t]),p(""),l(y.resolveFormatter("TagInput.added",(d=i==null?void 0:i.tagInput)==null?void 0:d.added,t)))}},q=e=>{var t;f(n.filter(d=>d!==e)),l(y.resolveFormatter("TagInput.removed",(t=i==null?void 0:i.tagInput)==null?void 0:t.removed,e))},C=e=>{if(v.includes(e.key)){e.preventDefault(),x(c);return}if(e.key==="Backspace"&&c===""){const t=n.at(-1);t!==void 0&&q(t)}};return o.jsxs("div",{className:b.cx(r.default.tagInput,s&&r.default["tagInput--disabled"],g&&r.default["tagInput--invalid"],R),"data-testid":S,onClick:()=>{var e;return(e=I.current)==null?void 0:e.focus()},children:[n.map(e=>o.jsxs("span",{className:b.cx(r.default.tagInput__tag,$===e&&r.default["tagInput__tag--duplicate"]),children:[e,o.jsx("button",{type:"button",className:r.default.tagInput__remove,"aria-label":`${e} — ${j}`,disabled:s,onClick:t=>{t.stopPropagation(),q(e)},children:o.jsx(E.XLg,{"aria-hidden":!0})})]},e)),o.jsx("input",{ref:I,id:F,type:"text",className:r.default.tagInput__field,value:c,placeholder:n.length===0?T:void 0,"aria-label":w,"aria-describedby":B,"aria-invalid":g,"aria-required":N||void 0,disabled:s||h,onChange:e=>p(e.target.value),onKeyDown:C,onBlur:()=>x(c)})]})},A=a.memo(K.named(z,"TagInput"));exports.default=A;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/TagInput/index.tsx"],"sourcesContent":["'use client';\n\nimport { type KeyboardEvent, memo, useEffect, useId, useRef, useState } from 'react';\n\nimport { XLg } from 'react-bootstrap-icons';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\nimport { resolveFormatter } from '../../helpers/label.helper';\nimport useAnnounce from '../../hooks/useAnnounce';\n\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n values: string[];\n onChange: (values: string[]) => void;\n /** Alanın erişilebilir adı. */\n label: string;\n placeholder?: string;\n /** Her etiketin kaldırma düğmesinin ad öneki (\"Kaldır\"). */\n removeLabel: string;\n /** Etiketi bitiren tuşlar. */\n separators?: string[];\n /** En fazla kaç etiket. */\n maxTags?: number;\n isDisabled?: boolean;\n id?: string;\n /** Zorunluluk — `Field`in `FieldChildProps` sözleşmesi. */\n required?: boolean;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Etiket girdisi — yazılan metni kaldırılabilir çiplere çevirir. */\nconst TagInput = ({\n values,\n onChange,\n label,\n placeholder,\n removeLabel,\n separators = ['Enter', ','],\n maxTags,\n isDisabled,\n id,\n required,\n className,\n testId,\n 'aria-describedby': describedBy,\n 'aria-invalid': isInvalid,\n}: Props) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const inputRef = useRef<HTMLInputElement>(null);\n\n /* ⚠ Yinelenen etiket uyarısının zamanlayıcısı REF'te tutulur ve unmount'ta temizlenir. */\n const duplicateTimerRef = useRef(0);\n\n useEffect(\n () => () => {\n if (duplicateTimerRef.current) window.clearTimeout(duplicateTimerRef.current);\n },\n [],\n );\n const { labels } = useUi();\n const announce = useAnnounce();\n\n const [draft, setDraft] = useState('');\n /* Yinelenen deger: var olan cip bir kare vurgulanir. */\n const [duplicate, setDuplicate] = useState<string | null>(null);\n\n const isFull = maxTags !== undefined && values.length >= maxTags;\n\n const commit = (raw: string) => {\n const value = raw.trim();\n if (value === '') return;\n\n if (values.includes(value)) {\n /* Sessizce yutmak yerine GOSTER: kullanici \"yazdim, kayboldu\" diyordu. */\n setDuplicate(value);\n if (duplicateTimerRef.current) window.clearTimeout(duplicateTimerRef.current);\n duplicateTimerRef.current = window.setTimeout(() => setDuplicate(null), 1_000);\n announce(`${value} zaten ekli`, 'assertive');\n setDraft('');\n return;\n }\n\n if (isFull) return;\n\n onChange([...values, value]);\n setDraft('');\n announce(resolveFormatter('TagInput.added', labels?.tagInput?.added, value));\n };\n\n const remove = (value: string) => {\n onChange(values.filter(item => item !== value));\n announce(resolveFormatter('TagInput.removed', labels?.tagInput?.removed, value));\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (separators.includes(event.key)) {\n event.preventDefault();\n commit(draft);\n return;\n }\n\n /* BOS girdide Backspace SON etiketi kaldirir — metin varken kaldirmaz. */\n if (event.key === 'Backspace' && draft === '') {\n const lastValue = values.at(-1);\n if (lastValue !== undefined) remove(lastValue);\n }\n };\n\n return (\n <div\n className={cx(\n styles.tagInput,\n isDisabled && styles['tagInput--disabled'],\n isInvalid && styles['tagInput--invalid'],\n className,\n )}\n data-testid={testId}\n /*\n * Kutunun herhangi bir yerine tiklamak girdiyi odaklar: cipler arasindaki bosluga tiklayan\n * kullanici hicbir sey olmadigini saniyordu.\n */\n onClick={() => inputRef.current?.focus()}\n >\n {values.map(value => (\n <span\n key={value}\n className={cx(\n styles.tagInput__tag,\n duplicate === value && styles['tagInput__tag--duplicate'],\n )}\n >\n {value}\n\n <button\n type=\"button\"\n className={styles.tagInput__remove}\n /*\n * Ad degeri ICERIR: on bes cipin hepsi \"Kaldir\" diye okundugunda hangisi oldugu belli\n * olmuyordu.\n */\n aria-label={`${value} — ${removeLabel}`}\n disabled={isDisabled}\n onClick={event => {\n event.stopPropagation();\n remove(value);\n }}\n >\n <XLg aria-hidden />\n </button>\n </span>\n ))}\n\n <input\n ref={inputRef}\n id={inputId}\n type=\"text\"\n className={styles.tagInput__field}\n value={draft}\n placeholder={values.length === 0 ? placeholder : undefined}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={isInvalid}\n /*\n * ⚠ Yerel `required` YAZILMAZ: alanin degeri etiket listesidir, girdi kutusu ise commit'ten\n * sonra BOSALIR.\n */\n aria-required={required || undefined}\n disabled={isDisabled || isFull}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={handleKeyDown}\n /*\n * Alan terk edildiginde yazilan metin ETIKETE DONER: yarim kalmis bir metin kayboluyor ve\n * kullanici bunu ancak gonderdikten sonra fark ediyordu.\n */\n onBlur={() => commit(draft)}\n />\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(/*#__PURE__*/ named(TagInput, 'TagInput')) as typeof TagInput;\n"],"names":["TagInput","values","onChange","label","placeholder","removeLabel","separators","maxTags","isDisabled","id","required","className","testId","describedBy","isInvalid","generatedId","useId","inputId","inputRef","useRef","duplicateTimerRef","useEffect","labels","useUi","announce","useAnnounce","draft","setDraft","useState","duplicate","setDuplicate","isFull","commit","raw","value","resolveFormatter","_a","remove","item","handleKeyDown","event","lastValue","jsxs","cx","styles","jsx","XLg","index","memo","named"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ type Props = {
2
+ values: string[];
3
+ onChange: (values: string[]) => void;
4
+ /** Alanın erişilebilir adı. */
5
+ label: string;
6
+ placeholder?: string;
7
+ /** Her etiketin kaldırma düğmesinin ad öneki ("Kaldır"). */
8
+ removeLabel: string;
9
+ /** Etiketi bitiren tuşlar. */
10
+ separators?: string[];
11
+ /** En fazla kaç etiket. */
12
+ maxTags?: number;
13
+ isDisabled?: boolean;
14
+ id?: string;
15
+ /** Zorunluluk — `Field`in `FieldChildProps` sözleşmesi. */
16
+ required?: boolean;
17
+ 'aria-describedby'?: string;
18
+ 'aria-invalid'?: boolean;
19
+ className?: string;
20
+ testId?: string;
21
+ };
22
+ /** Etiket girdisi — yazılan metni kaldırılabilir çiplere çevirir. */
23
+ declare const TagInput: ({ values, onChange, label, placeholder, removeLabel, separators, maxTags, isDisabled, id, required, className, testId, "aria-describedby": describedBy, "aria-invalid": isInvalid, }: Props) => import("react").JSX.Element;
24
+ declare const _default: typeof TagInput;
25
+ export default _default;
@@ -0,0 +1,124 @@
1
+ "use client";
2
+ import { jsxs as _, jsx as p } from "react/jsx-runtime";
3
+ import { memo as A, useId as L, useRef as T, useEffect as P, useState as b } from "react";
4
+ import { XLg as S } from "react-bootstrap-icons";
5
+ import { cx as k } from "../../helpers/class-name.helper.js";
6
+ import { named as U } from "../../helpers/component.helper.js";
7
+ import { resolveFormatter as x } from "../../helpers/label.helper.js";
8
+ import V from "../../hooks/useAnnounce.js";
9
+ import { useUi as X } from "../../theme/context.js";
10
+ const r = {"tagInput":"ui-tagInput-QraZR","tagInput__field":"ui-tagInput__field-HeWrC","tagInput--invalid":"ui-tagInput--invalid-NQogL","tagInput--disabled":"ui-tagInput--disabled--AJFF","tagInput__tag":"ui-tagInput__tag-D-ZWB","tagInput__tag--duplicate":"ui-tagInput__tag--duplicate-3-FMF","tagInput__remove":"ui-tagInput__remove-bpjGG"};
11
+ const G = ({
12
+ values: n,
13
+ onChange: m,
14
+ label: v,
15
+ placeholder: N,
16
+ removeLabel: D,
17
+ separators: R = ["Enter", ","],
18
+ maxTags: l,
19
+ isDisabled: d,
20
+ id: $,
21
+ required: j,
22
+ className: B,
23
+ testId: C,
24
+ "aria-describedby": E,
25
+ "aria-invalid": f
26
+ }) => {
27
+ const F = L(), K = $ ?? F, g = T(null), o = T(0);
28
+ P(
29
+ () => () => {
30
+ o.current && window.clearTimeout(o.current);
31
+ },
32
+ []
33
+ );
34
+ const { labels: i } = X(), u = V(), [a, s] = b(""), [q, I] = b(null), y = l !== void 0 && n.length >= l, h = (t) => {
35
+ var c;
36
+ const e = t.trim();
37
+ if (e !== "") {
38
+ if (n.includes(e)) {
39
+ I(e), o.current && window.clearTimeout(o.current), o.current = window.setTimeout(() => I(null), 1e3), u(`${e} zaten ekli`, "assertive"), s("");
40
+ return;
41
+ }
42
+ y || (m([...n, e]), s(""), u(x("TagInput.added", (c = i == null ? void 0 : i.tagInput) == null ? void 0 : c.added, e)));
43
+ }
44
+ }, w = (t) => {
45
+ var e;
46
+ m(n.filter((c) => c !== t)), u(x("TagInput.removed", (e = i == null ? void 0 : i.tagInput) == null ? void 0 : e.removed, t));
47
+ }, z = (t) => {
48
+ if (R.includes(t.key)) {
49
+ t.preventDefault(), h(a);
50
+ return;
51
+ }
52
+ if (t.key === "Backspace" && a === "") {
53
+ const e = n.at(-1);
54
+ e !== void 0 && w(e);
55
+ }
56
+ };
57
+ return /* @__PURE__ */ _(
58
+ "div",
59
+ {
60
+ className: k(
61
+ r.tagInput,
62
+ d && r["tagInput--disabled"],
63
+ f && r["tagInput--invalid"],
64
+ B
65
+ ),
66
+ "data-testid": C,
67
+ onClick: () => {
68
+ var t;
69
+ return (t = g.current) == null ? void 0 : t.focus();
70
+ },
71
+ children: [
72
+ n.map((t) => /* @__PURE__ */ _(
73
+ "span",
74
+ {
75
+ className: k(
76
+ r.tagInput__tag,
77
+ q === t && r["tagInput__tag--duplicate"]
78
+ ),
79
+ children: [
80
+ t,
81
+ /* @__PURE__ */ p(
82
+ "button",
83
+ {
84
+ type: "button",
85
+ className: r.tagInput__remove,
86
+ "aria-label": `${t} — ${D}`,
87
+ disabled: d,
88
+ onClick: (e) => {
89
+ e.stopPropagation(), w(t);
90
+ },
91
+ children: /* @__PURE__ */ p(S, { "aria-hidden": !0 })
92
+ }
93
+ )
94
+ ]
95
+ },
96
+ t
97
+ )),
98
+ /* @__PURE__ */ p(
99
+ "input",
100
+ {
101
+ ref: g,
102
+ id: K,
103
+ type: "text",
104
+ className: r.tagInput__field,
105
+ value: a,
106
+ placeholder: n.length === 0 ? N : void 0,
107
+ "aria-label": v,
108
+ "aria-describedby": E,
109
+ "aria-invalid": f,
110
+ "aria-required": j || void 0,
111
+ disabled: d || y,
112
+ onChange: (t) => s(t.target.value),
113
+ onKeyDown: z,
114
+ onBlur: () => h(a)
115
+ }
116
+ )
117
+ ]
118
+ }
119
+ );
120
+ }, et = /* @__PURE__ */ A(/* @__PURE__ */ U(G, "TagInput"));
121
+ export {
122
+ et as default
123
+ };
124
+ //# sourceMappingURL=index.js.map