@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,5 @@
1
+ var A = /* @__PURE__ */ ((N) => (N.PRIMARY = "PRIMARY", N.ACCENT = "ACCENT", N.SECONDARY = "SECONDARY", N.OUTLINE = "OUTLINE", N.SOFT = "SOFT", N.GHOST = "GHOST", N.DANGER = "DANGER", N.ON_BAND = "ON_BAND", N))(A || {});
2
+ export {
3
+ A as default
4
+ };
5
+ //# sourceMappingURL=ui-variant.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-variant.enum.js","sources":["../../src/enums/ui-variant.enum.ts"],"sourcesContent":["/** Button variants. */\nenum UIVariant {\n /** The one expected action of the screen: cobalt fill. One per screen. */\n PRIMARY = 'PRIMARY',\n /** The conversion action (download, try, subscribe): coral fill — and only that. */\n ACCENT = 'ACCENT',\n /** Neutral secondary action: grey border, body text (\"Cancel\"). */\n SECONDARY = 'SECONDARY',\n /** Cobalt frame — an encouraged navigation that is not the primary action (\"See all\"). */\n OUTLINE = 'OUTLINE',\n /** Neutral fill; a secondary action inside a card. */\n SOFT = 'SOFT',\n /** No surface: toolbar and inline secondary actions, in the link colour. */\n GHOST = 'GHOST',\n /** Destructive action: a delete confirmation. */\n DANGER = 'DANGER',\n /** An action on the brand band (deep cobalt in both themes). */\n ON_BAND = 'ON_BAND',\n}\n\nexport default UIVariant;\n"],"names":["UIVariant"],"mappings":"AACA,IAAKA,sBAAAA,OAEHA,EAAA,UAAU,WAEVA,EAAA,SAAS,UAETA,EAAA,YAAY,aAEZA,EAAA,UAAU,WAEVA,EAAA,OAAO,QAEPA,EAAA,QAAQ,SAERA,EAAA,SAAS,UAETA,EAAA,UAAU,WAhBPA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=(...o)=>{let e="";for(const t of o)t&&(e=e===""?t:`${e} ${t}`);return e};exports.cx=r;
2
+ //# sourceMappingURL=class-name.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-name.helper.cjs","sources":["../../src/helpers/class-name.helper.ts"],"sourcesContent":["import { ClassValue } from '@/types/common-element-props.type';\n\n/** Sınıf adı birleştirici. */\nexport const cx = (...values: ClassValue[]): string => {\n let result = '';\n\n for (const value of values) {\n if (!value) continue;\n result = result === '' ? value : `${result} ${value}`;\n }\n\n return result;\n};\n"],"names":["cx","values","result","value"],"mappings":"gFAGO,MAAMA,EAAK,IAAIC,IAAiC,CACrD,IAAIC,EAAS,GAEb,UAAWC,KAASF,EACbE,IACLD,EAASA,IAAW,GAAKC,EAAQ,GAAGD,CAAM,IAAIC,CAAK,IAGrD,OAAOD,CACT"}
@@ -0,0 +1,3 @@
1
+ import { ClassValue } from '../types/common-element-props.type';
2
+ /** Sınıf adı birleştirici. */
3
+ export declare const cx: (...values: ClassValue[]) => string;
@@ -0,0 +1,10 @@
1
+ const n = (...o) => {
2
+ let t = "";
3
+ for (const e of o)
4
+ e && (t = t === "" ? e : `${t} ${e}`);
5
+ return t;
6
+ };
7
+ export {
8
+ n as cx
9
+ };
10
+ //# sourceMappingURL=class-name.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-name.helper.js","sources":["../../src/helpers/class-name.helper.ts"],"sourcesContent":["import { ClassValue } from '@/types/common-element-props.type';\n\n/** Sınıf adı birleştirici. */\nexport const cx = (...values: ClassValue[]): string => {\n let result = '';\n\n for (const value of values) {\n if (!value) continue;\n result = result === '' ? value : `${result} ${value}`;\n }\n\n return result;\n};\n"],"names":["cx","values","result","value"],"mappings":"AAGO,MAAMA,IAAK,IAAIC,MAAiC;AACrD,MAAIC,IAAS;AAEb,aAAWC,KAASF;AAClB,IAAKE,MACLD,IAASA,MAAW,KAAKC,IAAQ,GAAGD,CAAM,IAAIC,CAAK;AAGrD,SAAOD;AACT;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=(e,t)=>Object.assign(e,{displayName:t});exports.named=n;
2
+ //# sourceMappingURL=component.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.helper.cjs","sources":["../../src/helpers/component.helper.ts"],"sourcesContent":["/**\n * DevTools adı — modül düzeyinde YAN ETKİ bırakmadan.\n *\n * ⚠ `X.displayName = 'X'` KULLANILMAZ: modül düzeyindeki özellik ataması\n * bundler için yan etkidir ve hedefinin tüm bağımlılık zincirini ayakta tutar.\n * Ölçüldü: yalnızca `Badge` import eden uygulama 20,7 kB indiriyordu (paketin\n * tamamı 21,8 kB). Atama çağrıya dönüşünce `#__PURE__` işaretlenebiliyor →\n * `Badge` 2,71 kB. Nöbetçi `.size-limit.json`.\n *\n * @example\n * export default memo(named(Button, 'Button')) as typeof Button;\n */\nexport const named = <TComponent extends object>(\n component: TComponent,\n displayName: string,\n): TComponent => Object.assign(component, { displayName });\n"],"names":["named","component","displayName"],"mappings":"gFAYO,MAAMA,EAAQ,CACnBC,EACAC,IACe,OAAO,OAAOD,EAAW,CAAE,YAAAC,CAAA,CAAa"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * DevTools adı — modül düzeyinde YAN ETKİ bırakmadan.
3
+ *
4
+ * ⚠ `X.displayName = 'X'` KULLANILMAZ: modül düzeyindeki özellik ataması
5
+ * bundler için yan etkidir ve hedefinin tüm bağımlılık zincirini ayakta tutar.
6
+ * Ölçüldü: yalnızca `Badge` import eden uygulama 20,7 kB indiriyordu (paketin
7
+ * tamamı 21,8 kB). Atama çağrıya dönüşünce `#__PURE__` işaretlenebiliyor →
8
+ * `Badge` 2,71 kB. Nöbetçi `.size-limit.json`.
9
+ *
10
+ * @example
11
+ * export default memo(named(Button, 'Button')) as typeof Button;
12
+ */
13
+ export declare const named: <TComponent extends object>(component: TComponent, displayName: string) => TComponent;
@@ -0,0 +1,5 @@
1
+ const s = (e, n) => Object.assign(e, { displayName: n });
2
+ export {
3
+ s as named
4
+ };
5
+ //# sourceMappingURL=component.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.helper.js","sources":["../../src/helpers/component.helper.ts"],"sourcesContent":["/**\n * DevTools adı — modül düzeyinde YAN ETKİ bırakmadan.\n *\n * ⚠ `X.displayName = 'X'` KULLANILMAZ: modül düzeyindeki özellik ataması\n * bundler için yan etkidir ve hedefinin tüm bağımlılık zincirini ayakta tutar.\n * Ölçüldü: yalnızca `Badge` import eden uygulama 20,7 kB indiriyordu (paketin\n * tamamı 21,8 kB). Atama çağrıya dönüşünce `#__PURE__` işaretlenebiliyor →\n * `Badge` 2,71 kB. Nöbetçi `.size-limit.json`.\n *\n * @example\n * export default memo(named(Button, 'Button')) as typeof Button;\n */\nexport const named = <TComponent extends object>(\n component: TComponent,\n displayName: string,\n): TComponent => Object.assign(component, { displayName });\n"],"names":["named","component","displayName"],"mappings":"AAYO,MAAMA,IAAQ,CACnBC,GACAC,MACe,OAAO,OAAOD,GAAW,EAAE,aAAAC,EAAA,CAAa;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),s=e=>{if(!(e instanceof HTMLElement))return!1;if(e.isContentEditable)return!0;const t=e.getAttribute("contenteditable");if(t===""||t==="true"||t==="plaintext-only")return!0;const n=e.tagName;return n==="TEXTAREA"?!0:n!=="INPUT"?!1:!a.has(e.type)},i=e=>{const t=e.ownerDocument.activeElement;!e.contains(t)||!s(t)||(t.blur(),e.tabIndex=-1,e.focus({preventScroll:!0}))},l=()=>{const e=typeof document>"u"?null:document.activeElement;return()=>{e instanceof HTMLElement&&e.isConnected&&e.focus({preventScroll:!0})}},d=["a[href]","button:not(:disabled)","input:not(:disabled)","select:not(:disabled)","textarea:not(:disabled)",'[tabindex]:not([tabindex="-1"])'].map(e=>`${e}:not([inert]):not([aria-hidden="true"])`).join(", "),f=(e,t="[data-ui-close]")=>{const n=e.querySelector("[data-ui-autofocus]");if(n){n.focus({preventScroll:!0});return}const r=[...e.querySelectorAll(d)],u=r.find(c=>!c.matches(t))??r[0];if(u){u.focus({preventScroll:!0});return}e.tabIndex=-1,e.focus({preventScroll:!0})},o=[],p=()=>{const e=Symbol("ui-modal");return o.push(e),{token:e,pop:()=>{const t=o.indexOf(e);t>=0&&o.splice(t,1)}}},b=e=>o.at(-1)===e,S=()=>o.length>0;exports.captureFocus=l;exports.focusFirstMeaningful=f;exports.hasOpenSurface=S;exports.isKeyboardOpeningElement=s;exports.isTopModal=b;exports.preventAutoKeyboard=i;exports.pushModal=p;
2
+ //# sourceMappingURL=focus.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.helper.cjs","sources":["../../src/helpers/focus.helper.ts"],"sourcesContent":["/** Kipsel panel açılırken ekran klavyesinin kendiliğinden açılmasını engeller. */\n\n/** Odaklanınca ekran klavyesi AÇMAYAN giriş türleri. */\nconst NON_TEXT_INPUT_TYPES = new Set([\n 'button',\n 'checkbox',\n 'color',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n]);\n\n/** Odaklanınca mobilde ekran klavyesini açacak bir öğe mi? */\nexport const isKeyboardOpeningElement = (element: Element | null): boolean => {\n if (!(element instanceof HTMLElement)) return false;\n\n /*\n * `isContentEditable` mirasi da kapsar (duzenlenebilir bolgenin ICINDEKI oge), ama jsdom onu\n * uygulamiyor ve her zaman false donuyor\n */\n if (element.isContentEditable) return true;\n const editable = element.getAttribute('contenteditable');\n if (editable === '' || editable === 'true' || editable === 'plaintext-only') return true;\n\n const tagName = element.tagName;\n if (tagName === 'TEXTAREA') return true;\n if (tagName !== 'INPUT') return false;\n\n return !NON_TEXT_INPUT_TYPES.has((element as HTMLInputElement).type);\n};\n\n/** `showModal()` ÇAĞRILDIKTAN SONRA çağrılır. */\nexport const preventAutoKeyboard = (dialog: HTMLDialogElement): void => {\n const active = dialog.ownerDocument.activeElement;\n if (!dialog.contains(active) || !isKeyboardOpeningElement(active)) return;\n\n (active as HTMLElement).blur();\n // `<dialog>` varsayılan olarak odaklanabilir değil; odağı alabilmesi için sıra dışı bırakılır\n // (Tab ile gezinmede görünmez, `focus()` ile alınır).\n dialog.tabIndex = -1;\n dialog.focus({ preventScroll: true });\n};\n\n/**\n * ODAK GERİ DÖNÜŞÜ.\n * @returns Odağı geri veren fonksiyon.\n */\nexport const captureFocus = (): (() => void) => {\n const previous = typeof document === 'undefined' ? null : document.activeElement;\n\n return () => {\n if (!(previous instanceof HTMLElement)) return;\n\n /*\n * Oge hala BELGEDE mi: acan dugme, panel kapanirken DOM'dan kalkmis olabilir (bir satiri silen\n * onay penceresi, satirla birlikte dugmeyi de goturuyor).\n */\n if (!previous.isConnected) return;\n\n /*\n * `preventScroll` — odaklanan oge gorunum alaninin disindaysa tarayici sayfayi oraya kaydiriyor\n * ve kullanici kapattigi pencerenin yerine bambaska bir…\n */\n previous.focus({ preventScroll: true });\n };\n};\n\n/** Odaklanabilir öğelerin seçicisi — `inert` ve `disabled` olanlar hariç. */\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled)',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]:not([tabindex=\"-1\"])',\n]\n .map(selector => `${selector}:not([inert]):not([aria-hidden=\"true\"])`)\n .join(', ');\n\n/**\n * Panelin İLK ANLAMLI öğesine odaklanır.\n * @param container Odak aranacak kök.\n * @param skipSelector Atlanacak öğe (varsayılan: kapatma düğmesi).\n */\nexport const focusFirstMeaningful = (\n container: HTMLElement,\n skipSelector = '[data-ui-close]',\n): void => {\n const explicit = container.querySelector<HTMLElement>('[data-ui-autofocus]');\n if (explicit) {\n explicit.focus({ preventScroll: true });\n return;\n }\n\n const candidates = [...container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)];\n const target = candidates.find(element => !element.matches(skipSelector)) ?? candidates[0];\n\n if (target) {\n target.focus({ preventScroll: true });\n return;\n }\n\n container.tabIndex = -1;\n container.focus({ preventScroll: true });\n};\n\n/**\n * KİPSEL YIĞIN — üst üste binen paneller. Sahiplik LIFO: en son açılan yüzey tuşu tüketir.\n * ⚠ Yığın yalnızca `<dialog>` tabanlı kipsel yüzeyleri DEĞİL, `Escape` ile kapanan HER yüzeyi taşır\n * (`Popover`, `Toast`, `Tooltip`).\n */\nconst modalStack: symbol[] = [];\n\n/** Yığına katılır; dönen fonksiyon çıkarır. */\nexport const pushModal = (): { token: symbol; pop: () => void } => {\n const token = Symbol('ui-modal');\n modalStack.push(token);\n\n return {\n token,\n pop: () => {\n const index = modalStack.indexOf(token);\n if (index >= 0) modalStack.splice(index, 1);\n },\n };\n};\n\n/** Verilen panel yığının EN ÜSTÜNDE mi. */\nexport const isTopModal = (token: symbol): boolean => modalStack.at(-1) === token;\n\n/**\n * `Escape`i tüketecek AÇIK bir yüzey var mı — kipsel pencere, açılır panel, bildirim.\n * ⚠ Sayfa düzeyinde `Escape` dinleyen her kod (sohbetin \"akışı durdur\" kısayolu gibi) İKİSİNİ BİRDEN\n * sorar: `event.defaultPrevented || hasOpenSurface()`. Sormayan bir dinleyici, kullanıcı yalnızca bir\n * yüzeyi kapatmak isterken arkadaki işi de iptal ediyordu.\n * - `Popover`, `Tooltip` ve `Toast` tuşu belge düzeyindeki kendi dinleyicilerinde tüketir, işaretler\n * (`preventDefault`) ve AYNI tuş vuruşunda yığından düşer: gerçek tarayıcıda React ayrık olayın\n * güncellemesini dinleyiciler arasında boşaltır. Yüzeyin dinleyicisinden SONRA koşan kod (pencerede\n * ya da belgede sonradan eklenmiş) burada `false` görür; ona kalan kanıt `defaultPrevented`.\n * Ölçüldü (2026-10-27): yardım `Popover`ını kapatan `Escape` bir grafik seçimini de siliyordu.\n * jsdom bunu göremez: `fireEvent` betikten gönderilir, dinleyiciler arasında mikro görev\n * boşaltılmaz.\n * - Yüzeyin dinleyicisinden ÖNCE koşan kod işareti göremez ama yığın henüz düşmemiştir: `true`.\n * - `<dialog>` tabanlı kipsel yüzeyler (`Modal`, `Drawer`, `BottomSheet`, `CommandPalette`) tuş olayı\n * bittikten sonra `cancel` ile kapanır: tuş boyunca burada `true`.\n */\nexport const hasOpenSurface = (): boolean => modalStack.length > 0;\n\n/** Yalnızca test içindir: modül düzeyindeki yığın testler arasında sızmamalı. */\nexport const resetModalStack = (): void => {\n modalStack.length = 0;\n};\n"],"names":["NON_TEXT_INPUT_TYPES","isKeyboardOpeningElement","element","editable","tagName","preventAutoKeyboard","dialog","active","captureFocus","previous","FOCUSABLE_SELECTOR","selector","focusFirstMeaningful","container","skipSelector","explicit","candidates","target","modalStack","pushModal","token","index","isTopModal","hasOpenSurface"],"mappings":"gFAGA,MAAMA,MAA2B,IAAI,CACnC,SACA,WACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACF,CAAC,EAGYC,EAA4BC,GAAqC,CAC5E,GAAI,EAAEA,aAAmB,aAAc,MAAO,GAM9C,GAAIA,EAAQ,kBAAmB,MAAO,GACtC,MAAMC,EAAWD,EAAQ,aAAa,iBAAiB,EACvD,GAAIC,IAAa,IAAMA,IAAa,QAAUA,IAAa,iBAAkB,MAAO,GAEpF,MAAMC,EAAUF,EAAQ,QACxB,OAAIE,IAAY,WAAmB,GAC/BA,IAAY,QAAgB,GAEzB,CAACJ,EAAqB,IAAKE,EAA6B,IAAI,CACrE,EAGaG,EAAuBC,GAAoC,CACtE,MAAMC,EAASD,EAAO,cAAc,cAChC,CAACA,EAAO,SAASC,CAAM,GAAK,CAACN,EAAyBM,CAAM,IAE/DA,EAAuB,KAAA,EAGxBD,EAAO,SAAW,GAClBA,EAAO,MAAM,CAAE,cAAe,EAAA,CAAM,EACtC,EAMaE,EAAe,IAAoB,CAC9C,MAAMC,EAAW,OAAO,SAAa,IAAc,KAAO,SAAS,cAEnE,MAAO,IAAM,CACLA,aAAoB,aAMrBA,EAAS,aAMdA,EAAS,MAAM,CAAE,cAAe,EAAA,CAAM,CACxC,CACF,EAGMC,EAAqB,CACzB,UACA,wBACA,uBACA,wBACA,0BACA,iCACF,EACG,IAAIC,GAAY,GAAGA,CAAQ,yCAAyC,EACpE,KAAK,IAAI,EAOCC,EAAuB,CAClCC,EACAC,EAAe,oBACN,CACT,MAAMC,EAAWF,EAAU,cAA2B,qBAAqB,EAC3E,GAAIE,EAAU,CACZA,EAAS,MAAM,CAAE,cAAe,EAAA,CAAM,EACtC,MACF,CAEA,MAAMC,EAAa,CAAC,GAAGH,EAAU,iBAA8BH,CAAkB,CAAC,EAC5EO,EAASD,EAAW,KAAKd,GAAW,CAACA,EAAQ,QAAQY,CAAY,CAAC,GAAKE,EAAW,CAAC,EAEzF,GAAIC,EAAQ,CACVA,EAAO,MAAM,CAAE,cAAe,EAAA,CAAM,EACpC,MACF,CAEAJ,EAAU,SAAW,GACrBA,EAAU,MAAM,CAAE,cAAe,EAAA,CAAM,CACzC,EAOMK,EAAuB,CAAA,EAGhBC,EAAY,IAA0C,CACjE,MAAMC,EAAQ,OAAO,UAAU,EAC/B,OAAAF,EAAW,KAAKE,CAAK,EAEd,CACL,MAAAA,EACA,IAAK,IAAM,CACT,MAAMC,EAAQH,EAAW,QAAQE,CAAK,EAClCC,GAAS,GAAGH,EAAW,OAAOG,EAAO,CAAC,CAC5C,CAAA,CAEJ,EAGaC,EAAcF,GAA2BF,EAAW,GAAG,EAAE,IAAME,EAkB/DG,EAAiB,IAAeL,EAAW,OAAS"}
@@ -0,0 +1,42 @@
1
+ /** Kipsel panel açılırken ekran klavyesinin kendiliğinden açılmasını engeller. */
2
+ /** Odaklanınca mobilde ekran klavyesini açacak bir öğe mi? */
3
+ export declare const isKeyboardOpeningElement: (element: Element | null) => boolean;
4
+ /** `showModal()` ÇAĞRILDIKTAN SONRA çağrılır. */
5
+ export declare const preventAutoKeyboard: (dialog: HTMLDialogElement) => void;
6
+ /**
7
+ * ODAK GERİ DÖNÜŞÜ.
8
+ * @returns Odağı geri veren fonksiyon.
9
+ */
10
+ export declare const captureFocus: () => (() => void);
11
+ /**
12
+ * Panelin İLK ANLAMLI öğesine odaklanır.
13
+ * @param container Odak aranacak kök.
14
+ * @param skipSelector Atlanacak öğe (varsayılan: kapatma düğmesi).
15
+ */
16
+ export declare const focusFirstMeaningful: (container: HTMLElement, skipSelector?: string) => void;
17
+ /** Yığına katılır; dönen fonksiyon çıkarır. */
18
+ export declare const pushModal: () => {
19
+ token: symbol;
20
+ pop: () => void;
21
+ };
22
+ /** Verilen panel yığının EN ÜSTÜNDE mi. */
23
+ export declare const isTopModal: (token: symbol) => boolean;
24
+ /**
25
+ * `Escape`i tüketecek AÇIK bir yüzey var mı — kipsel pencere, açılır panel, bildirim.
26
+ * ⚠ Sayfa düzeyinde `Escape` dinleyen her kod (sohbetin "akışı durdur" kısayolu gibi) İKİSİNİ BİRDEN
27
+ * sorar: `event.defaultPrevented || hasOpenSurface()`. Sormayan bir dinleyici, kullanıcı yalnızca bir
28
+ * yüzeyi kapatmak isterken arkadaki işi de iptal ediyordu.
29
+ * - `Popover`, `Tooltip` ve `Toast` tuşu belge düzeyindeki kendi dinleyicilerinde tüketir, işaretler
30
+ * (`preventDefault`) ve AYNI tuş vuruşunda yığından düşer: gerçek tarayıcıda React ayrık olayın
31
+ * güncellemesini dinleyiciler arasında boşaltır. Yüzeyin dinleyicisinden SONRA koşan kod (pencerede
32
+ * ya da belgede sonradan eklenmiş) burada `false` görür; ona kalan kanıt `defaultPrevented`.
33
+ * Ölçüldü (2026-10-27): yardım `Popover`ını kapatan `Escape` bir grafik seçimini de siliyordu.
34
+ * jsdom bunu göremez: `fireEvent` betikten gönderilir, dinleyiciler arasında mikro görev
35
+ * boşaltılmaz.
36
+ * - Yüzeyin dinleyicisinden ÖNCE koşan kod işareti göremez ama yığın henüz düşmemiştir: `true`.
37
+ * - `<dialog>` tabanlı kipsel yüzeyler (`Modal`, `Drawer`, `BottomSheet`, `CommandPalette`) tuş olayı
38
+ * bittikten sonra `cancel` ile kapanır: tuş boyunca burada `true`.
39
+ */
40
+ export declare const hasOpenSurface: () => boolean;
41
+ /** Yalnızca test içindir: modül düzeyindeki yığın testler arasında sızmamalı. */
42
+ export declare const resetModalStack: () => void;
@@ -0,0 +1,65 @@
1
+ const s = /* @__PURE__ */ new Set([
2
+ "button",
3
+ "checkbox",
4
+ "color",
5
+ "file",
6
+ "hidden",
7
+ "image",
8
+ "radio",
9
+ "range",
10
+ "reset",
11
+ "submit"
12
+ ]), i = (t) => {
13
+ if (!(t instanceof HTMLElement)) return !1;
14
+ if (t.isContentEditable) return !0;
15
+ const e = t.getAttribute("contenteditable");
16
+ if (e === "" || e === "true" || e === "plaintext-only") return !0;
17
+ const n = t.tagName;
18
+ return n === "TEXTAREA" ? !0 : n !== "INPUT" ? !1 : !s.has(t.type);
19
+ }, l = (t) => {
20
+ const e = t.ownerDocument.activeElement;
21
+ !t.contains(e) || !i(e) || (e.blur(), t.tabIndex = -1, t.focus({ preventScroll: !0 }));
22
+ }, d = () => {
23
+ const t = typeof document > "u" ? null : document.activeElement;
24
+ return () => {
25
+ t instanceof HTMLElement && t.isConnected && t.focus({ preventScroll: !0 });
26
+ };
27
+ }, a = [
28
+ "a[href]",
29
+ "button:not(:disabled)",
30
+ "input:not(:disabled)",
31
+ "select:not(:disabled)",
32
+ "textarea:not(:disabled)",
33
+ '[tabindex]:not([tabindex="-1"])'
34
+ ].map((t) => `${t}:not([inert]):not([aria-hidden="true"])`).join(", "), f = (t, e = "[data-ui-close]") => {
35
+ const n = t.querySelector("[data-ui-autofocus]");
36
+ if (n) {
37
+ n.focus({ preventScroll: !0 });
38
+ return;
39
+ }
40
+ const r = [...t.querySelectorAll(a)], u = r.find((c) => !c.matches(e)) ?? r[0];
41
+ if (u) {
42
+ u.focus({ preventScroll: !0 });
43
+ return;
44
+ }
45
+ t.tabIndex = -1, t.focus({ preventScroll: !0 });
46
+ }, o = [], p = () => {
47
+ const t = Symbol("ui-modal");
48
+ return o.push(t), {
49
+ token: t,
50
+ pop: () => {
51
+ const e = o.indexOf(t);
52
+ e >= 0 && o.splice(e, 1);
53
+ }
54
+ };
55
+ }, b = (t) => o.at(-1) === t, S = () => o.length > 0;
56
+ export {
57
+ d as captureFocus,
58
+ f as focusFirstMeaningful,
59
+ S as hasOpenSurface,
60
+ i as isKeyboardOpeningElement,
61
+ b as isTopModal,
62
+ l as preventAutoKeyboard,
63
+ p as pushModal
64
+ };
65
+ //# sourceMappingURL=focus.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.helper.js","sources":["../../src/helpers/focus.helper.ts"],"sourcesContent":["/** Kipsel panel açılırken ekran klavyesinin kendiliğinden açılmasını engeller. */\n\n/** Odaklanınca ekran klavyesi AÇMAYAN giriş türleri. */\nconst NON_TEXT_INPUT_TYPES = new Set([\n 'button',\n 'checkbox',\n 'color',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n]);\n\n/** Odaklanınca mobilde ekran klavyesini açacak bir öğe mi? */\nexport const isKeyboardOpeningElement = (element: Element | null): boolean => {\n if (!(element instanceof HTMLElement)) return false;\n\n /*\n * `isContentEditable` mirasi da kapsar (duzenlenebilir bolgenin ICINDEKI oge), ama jsdom onu\n * uygulamiyor ve her zaman false donuyor\n */\n if (element.isContentEditable) return true;\n const editable = element.getAttribute('contenteditable');\n if (editable === '' || editable === 'true' || editable === 'plaintext-only') return true;\n\n const tagName = element.tagName;\n if (tagName === 'TEXTAREA') return true;\n if (tagName !== 'INPUT') return false;\n\n return !NON_TEXT_INPUT_TYPES.has((element as HTMLInputElement).type);\n};\n\n/** `showModal()` ÇAĞRILDIKTAN SONRA çağrılır. */\nexport const preventAutoKeyboard = (dialog: HTMLDialogElement): void => {\n const active = dialog.ownerDocument.activeElement;\n if (!dialog.contains(active) || !isKeyboardOpeningElement(active)) return;\n\n (active as HTMLElement).blur();\n // `<dialog>` varsayılan olarak odaklanabilir değil; odağı alabilmesi için sıra dışı bırakılır\n // (Tab ile gezinmede görünmez, `focus()` ile alınır).\n dialog.tabIndex = -1;\n dialog.focus({ preventScroll: true });\n};\n\n/**\n * ODAK GERİ DÖNÜŞÜ.\n * @returns Odağı geri veren fonksiyon.\n */\nexport const captureFocus = (): (() => void) => {\n const previous = typeof document === 'undefined' ? null : document.activeElement;\n\n return () => {\n if (!(previous instanceof HTMLElement)) return;\n\n /*\n * Oge hala BELGEDE mi: acan dugme, panel kapanirken DOM'dan kalkmis olabilir (bir satiri silen\n * onay penceresi, satirla birlikte dugmeyi de goturuyor).\n */\n if (!previous.isConnected) return;\n\n /*\n * `preventScroll` — odaklanan oge gorunum alaninin disindaysa tarayici sayfayi oraya kaydiriyor\n * ve kullanici kapattigi pencerenin yerine bambaska bir…\n */\n previous.focus({ preventScroll: true });\n };\n};\n\n/** Odaklanabilir öğelerin seçicisi — `inert` ve `disabled` olanlar hariç. */\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled)',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]:not([tabindex=\"-1\"])',\n]\n .map(selector => `${selector}:not([inert]):not([aria-hidden=\"true\"])`)\n .join(', ');\n\n/**\n * Panelin İLK ANLAMLI öğesine odaklanır.\n * @param container Odak aranacak kök.\n * @param skipSelector Atlanacak öğe (varsayılan: kapatma düğmesi).\n */\nexport const focusFirstMeaningful = (\n container: HTMLElement,\n skipSelector = '[data-ui-close]',\n): void => {\n const explicit = container.querySelector<HTMLElement>('[data-ui-autofocus]');\n if (explicit) {\n explicit.focus({ preventScroll: true });\n return;\n }\n\n const candidates = [...container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)];\n const target = candidates.find(element => !element.matches(skipSelector)) ?? candidates[0];\n\n if (target) {\n target.focus({ preventScroll: true });\n return;\n }\n\n container.tabIndex = -1;\n container.focus({ preventScroll: true });\n};\n\n/**\n * KİPSEL YIĞIN — üst üste binen paneller. Sahiplik LIFO: en son açılan yüzey tuşu tüketir.\n * ⚠ Yığın yalnızca `<dialog>` tabanlı kipsel yüzeyleri DEĞİL, `Escape` ile kapanan HER yüzeyi taşır\n * (`Popover`, `Toast`, `Tooltip`).\n */\nconst modalStack: symbol[] = [];\n\n/** Yığına katılır; dönen fonksiyon çıkarır. */\nexport const pushModal = (): { token: symbol; pop: () => void } => {\n const token = Symbol('ui-modal');\n modalStack.push(token);\n\n return {\n token,\n pop: () => {\n const index = modalStack.indexOf(token);\n if (index >= 0) modalStack.splice(index, 1);\n },\n };\n};\n\n/** Verilen panel yığının EN ÜSTÜNDE mi. */\nexport const isTopModal = (token: symbol): boolean => modalStack.at(-1) === token;\n\n/**\n * `Escape`i tüketecek AÇIK bir yüzey var mı — kipsel pencere, açılır panel, bildirim.\n * ⚠ Sayfa düzeyinde `Escape` dinleyen her kod (sohbetin \"akışı durdur\" kısayolu gibi) İKİSİNİ BİRDEN\n * sorar: `event.defaultPrevented || hasOpenSurface()`. Sormayan bir dinleyici, kullanıcı yalnızca bir\n * yüzeyi kapatmak isterken arkadaki işi de iptal ediyordu.\n * - `Popover`, `Tooltip` ve `Toast` tuşu belge düzeyindeki kendi dinleyicilerinde tüketir, işaretler\n * (`preventDefault`) ve AYNI tuş vuruşunda yığından düşer: gerçek tarayıcıda React ayrık olayın\n * güncellemesini dinleyiciler arasında boşaltır. Yüzeyin dinleyicisinden SONRA koşan kod (pencerede\n * ya da belgede sonradan eklenmiş) burada `false` görür; ona kalan kanıt `defaultPrevented`.\n * Ölçüldü (2026-10-27): yardım `Popover`ını kapatan `Escape` bir grafik seçimini de siliyordu.\n * jsdom bunu göremez: `fireEvent` betikten gönderilir, dinleyiciler arasında mikro görev\n * boşaltılmaz.\n * - Yüzeyin dinleyicisinden ÖNCE koşan kod işareti göremez ama yığın henüz düşmemiştir: `true`.\n * - `<dialog>` tabanlı kipsel yüzeyler (`Modal`, `Drawer`, `BottomSheet`, `CommandPalette`) tuş olayı\n * bittikten sonra `cancel` ile kapanır: tuş boyunca burada `true`.\n */\nexport const hasOpenSurface = (): boolean => modalStack.length > 0;\n\n/** Yalnızca test içindir: modül düzeyindeki yığın testler arasında sızmamalı. */\nexport const resetModalStack = (): void => {\n modalStack.length = 0;\n};\n"],"names":["NON_TEXT_INPUT_TYPES","isKeyboardOpeningElement","element","editable","tagName","preventAutoKeyboard","dialog","active","captureFocus","previous","FOCUSABLE_SELECTOR","selector","focusFirstMeaningful","container","skipSelector","explicit","candidates","target","modalStack","pushModal","token","index","isTopModal","hasOpenSurface"],"mappings":"AAGA,MAAMA,wBAA2B,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC,GAGYC,IAA2B,CAACC,MAAqC;AAC5E,MAAI,EAAEA,aAAmB,aAAc,QAAO;AAM9C,MAAIA,EAAQ,kBAAmB,QAAO;AACtC,QAAMC,IAAWD,EAAQ,aAAa,iBAAiB;AACvD,MAAIC,MAAa,MAAMA,MAAa,UAAUA,MAAa,iBAAkB,QAAO;AAEpF,QAAMC,IAAUF,EAAQ;AACxB,SAAIE,MAAY,aAAmB,KAC/BA,MAAY,UAAgB,KAEzB,CAACJ,EAAqB,IAAKE,EAA6B,IAAI;AACrE,GAGaG,IAAsB,CAACC,MAAoC;AACtE,QAAMC,IAASD,EAAO,cAAc;AACpC,EAAI,CAACA,EAAO,SAASC,CAAM,KAAK,CAACN,EAAyBM,CAAM,MAE/DA,EAAuB,KAAA,GAGxBD,EAAO,WAAW,IAClBA,EAAO,MAAM,EAAE,eAAe,GAAA,CAAM;AACtC,GAMaE,IAAe,MAAoB;AAC9C,QAAMC,IAAW,OAAO,WAAa,MAAc,OAAO,SAAS;AAEnE,SAAO,MAAM;AACX,IAAMA,aAAoB,eAMrBA,EAAS,eAMdA,EAAS,MAAM,EAAE,eAAe,GAAA,CAAM;AAAA,EACxC;AACF,GAGMC,IAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EACG,IAAI,CAAAC,MAAY,GAAGA,CAAQ,yCAAyC,EACpE,KAAK,IAAI,GAOCC,IAAuB,CAClCC,GACAC,IAAe,sBACN;AACT,QAAMC,IAAWF,EAAU,cAA2B,qBAAqB;AAC3E,MAAIE,GAAU;AACZ,IAAAA,EAAS,MAAM,EAAE,eAAe,GAAA,CAAM;AACtC;AAAA,EACF;AAEA,QAAMC,IAAa,CAAC,GAAGH,EAAU,iBAA8BH,CAAkB,CAAC,GAC5EO,IAASD,EAAW,KAAK,CAAAd,MAAW,CAACA,EAAQ,QAAQY,CAAY,CAAC,KAAKE,EAAW,CAAC;AAEzF,MAAIC,GAAQ;AACV,IAAAA,EAAO,MAAM,EAAE,eAAe,GAAA,CAAM;AACpC;AAAA,EACF;AAEA,EAAAJ,EAAU,WAAW,IACrBA,EAAU,MAAM,EAAE,eAAe,GAAA,CAAM;AACzC,GAOMK,IAAuB,CAAA,GAGhBC,IAAY,MAA0C;AACjE,QAAMC,IAAQ,OAAO,UAAU;AAC/B,SAAAF,EAAW,KAAKE,CAAK,GAEd;AAAA,IACL,OAAAA;AAAA,IACA,KAAK,MAAM;AACT,YAAMC,IAAQH,EAAW,QAAQE,CAAK;AACtC,MAAIC,KAAS,KAAGH,EAAW,OAAOG,GAAO,CAAC;AAAA,IAC5C;AAAA,EAAA;AAEJ,GAGaC,IAAa,CAACF,MAA2BF,EAAW,GAAG,EAAE,MAAME,GAkB/DG,IAAiB,MAAeL,EAAW,SAAS;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=new Set,a=(e,...r)=>{for(const o of r)if(o!==void 0)return o;return process.env.NODE_ENV!=="production"&&!n.has(e)&&(n.add(e),console.error(`[@handijit/ui] Eksik metin: ${e}. Prop olarak geçin ya da <UiProvider labels={…}> içinde bir kez tanımlayın. Metinsiz bırakılan öğe ekran okuyucuda adsız kalır.`)),""},t=(e,r,...o)=>r?r(...o):a(e);exports.resolveFormatter=t;exports.resolveLabel=a;
2
+ //# sourceMappingURL=label.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.helper.cjs","sources":["../../src/helpers/label.helper.ts"],"sourcesContent":["/** Metin çözümlemesi: prop → sağlayıcı config'i → geliştirme uyarısı. */\n\nimport type { Formatter } from '@/types/theme.type';\n\n/* Uyari ANAHTAR BASINA bir kez verilir. */\nconst warned = new Set<string>();\n\n/** Uyarı durumu testler arasında sızmamalı; her test kendi durumundan başlar. */\nexport const resetLabelWarnings = (): void => warned.clear();\n\n/**\n * Verilen metni çözer.\n * @param key Uyarıda gösterilecek yol (`Modal.closeLabel`).\n * @param values Öncelik sırasına göre adaylar: prop önce, config sonra.\n */\nexport const resolveLabel = (key: string, ...values: (string | undefined)[]): string => {\n for (const value of values) if (value !== undefined) return value;\n\n if (process.env.NODE_ENV !== 'production' && !warned.has(key)) {\n warned.add(key);\n console.error(\n `[@handijit/ui] Eksik metin: ${key}. Prop olarak geçin ya da ` +\n '<UiProvider labels={…}> içinde bir kez tanımlayın. ' +\n 'Metinsiz bırakılan öğe ekran okuyucuda adsız kalır.',\n );\n }\n\n return '';\n};\n\n/** Biçimlendirici çözümü — değere bağlı metinler için. */\nexport const resolveFormatter = <TArgs extends unknown[]>(\n key: string,\n formatter: Formatter<TArgs> | undefined,\n ...args: TArgs\n): string => {\n if (formatter) return formatter(...args);\n\n return resolveLabel(key);\n};\n"],"names":["warned","resolveLabel","key","values","value","resolveFormatter","formatter","args"],"mappings":"gFAKA,MAAMA,MAAa,IAUNC,EAAe,CAACC,KAAgBC,IAA2C,CACtF,UAAWC,KAASD,EAAQ,GAAIC,IAAU,OAAW,OAAOA,EAE5D,OAAI,QAAQ,IAAI,WAAa,cAAgB,CAACJ,EAAO,IAAIE,CAAG,IAC1DF,EAAO,IAAIE,CAAG,EACd,QAAQ,MACN,+BAA+BA,CAAG,kIAAA,GAM/B,EACT,EAGaG,EAAmB,CAC9BH,EACAI,KACGC,IAECD,EAAkBA,EAAU,GAAGC,CAAI,EAEhCN,EAAaC,CAAG"}
@@ -0,0 +1,11 @@
1
+ import { Formatter } from '../types/theme.type';
2
+ /** Uyarı durumu testler arasında sızmamalı; her test kendi durumundan başlar. */
3
+ export declare const resetLabelWarnings: () => void;
4
+ /**
5
+ * Verilen metni çözer.
6
+ * @param key Uyarıda gösterilecek yol (`Modal.closeLabel`).
7
+ * @param values Öncelik sırasına göre adaylar: prop önce, config sonra.
8
+ */
9
+ export declare const resolveLabel: (key: string, ...values: (string | undefined)[]) => string;
10
+ /** Biçimlendirici çözümü — değere bağlı metinler için. */
11
+ export declare const resolveFormatter: <TArgs extends unknown[]>(key: string, formatter: Formatter<TArgs> | undefined, ...args: TArgs) => string;
@@ -0,0 +1,11 @@
1
+ const o = /* @__PURE__ */ new Set(), a = (r, ...e) => {
2
+ for (const n of e) if (n !== void 0) return n;
3
+ return process.env.NODE_ENV !== "production" && !o.has(r) && (o.add(r), console.error(
4
+ `[@handijit/ui] Eksik metin: ${r}. Prop olarak geçin ya da <UiProvider labels={…}> içinde bir kez tanımlayın. Metinsiz bırakılan öğe ekran okuyucuda adsız kalır.`
5
+ )), "";
6
+ }, i = (r, e, ...n) => e ? e(...n) : a(r);
7
+ export {
8
+ i as resolveFormatter,
9
+ a as resolveLabel
10
+ };
11
+ //# sourceMappingURL=label.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.helper.js","sources":["../../src/helpers/label.helper.ts"],"sourcesContent":["/** Metin çözümlemesi: prop → sağlayıcı config'i → geliştirme uyarısı. */\n\nimport type { Formatter } from '@/types/theme.type';\n\n/* Uyari ANAHTAR BASINA bir kez verilir. */\nconst warned = new Set<string>();\n\n/** Uyarı durumu testler arasında sızmamalı; her test kendi durumundan başlar. */\nexport const resetLabelWarnings = (): void => warned.clear();\n\n/**\n * Verilen metni çözer.\n * @param key Uyarıda gösterilecek yol (`Modal.closeLabel`).\n * @param values Öncelik sırasına göre adaylar: prop önce, config sonra.\n */\nexport const resolveLabel = (key: string, ...values: (string | undefined)[]): string => {\n for (const value of values) if (value !== undefined) return value;\n\n if (process.env.NODE_ENV !== 'production' && !warned.has(key)) {\n warned.add(key);\n console.error(\n `[@handijit/ui] Eksik metin: ${key}. Prop olarak geçin ya da ` +\n '<UiProvider labels={…}> içinde bir kez tanımlayın. ' +\n 'Metinsiz bırakılan öğe ekran okuyucuda adsız kalır.',\n );\n }\n\n return '';\n};\n\n/** Biçimlendirici çözümü — değere bağlı metinler için. */\nexport const resolveFormatter = <TArgs extends unknown[]>(\n key: string,\n formatter: Formatter<TArgs> | undefined,\n ...args: TArgs\n): string => {\n if (formatter) return formatter(...args);\n\n return resolveLabel(key);\n};\n"],"names":["warned","resolveLabel","key","values","value","resolveFormatter","formatter","args"],"mappings":"AAKA,MAAMA,wBAAa,IAAA,GAUNC,IAAe,CAACC,MAAgBC,MAA2C;AACtF,aAAWC,KAASD,EAAQ,KAAIC,MAAU,OAAW,QAAOA;AAE5D,SAAI,QAAQ,IAAI,aAAa,gBAAgB,CAACJ,EAAO,IAAIE,CAAG,MAC1DF,EAAO,IAAIE,CAAG,GACd,QAAQ;AAAA,IACN,+BAA+BA,CAAG;AAAA,EAAA,IAM/B;AACT,GAGaG,IAAmB,CAC9BH,GACAI,MACGC,MAECD,IAAkBA,EAAU,GAAGC,CAAI,IAEhCN,EAAaC,CAAG;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=t=>{var e;const o=((e=t==null?void 0:t.closest)==null?void 0:e.call(t,"dialog"))??null;return o&&o.isConnected?{container:o,needsTopLayer:s(o)}:{container:document.body,needsTopLayer:!1}},s=t=>{try{return t.matches(":modal")}catch{return t.hasAttribute("open")}},i={margin:0,right:"auto",bottom:"auto"},n=t=>{if(!t||typeof t.showPopover!="function")return()=>{};try{t.showPopover()}catch{return()=>{}}return()=>{try{t.isConnected&&t.hidePopover()}catch{}}};exports.POPOVER_RESET=i;exports.resolvePortalTarget=r;exports.showTopLayer=n;
2
+ //# sourceMappingURL=portal.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.helper.cjs","sources":["../../src/helpers/portal.helper.ts"],"sourcesContent":["/**\n * Portal hedefi çözümü — üst katman (top layer) farkındalığıyla.\n * ⚠ `createPortal(..., document.body)` TEK BAŞINA YANLIŞ. `<dialog>.showModal()` elemanı\n * tarayıcının **üst katmanına** taşır ve üst katman…\n */\n\n/** Portal hedefi ve o hedefte üst katmana çıkmanın gerekip gerekmediği. */\nexport type PortalTarget = {\n container: HTMLElement;\n /** `true` ise yüzey `popover=\"manual\"` taşımalı ve `showPopover()` çağırmalı. */\n needsTopLayer: boolean;\n};\n\n/**\n * `anchor`ın en yakın açık `<dialog>` atası varsa oraya, yoksa `document.body`e.\n * ⚠ `dialog[open]` yerine `:modal` denenmedi: `show()` ile açılan modalsız bir dialog üst katmana\n * GİRMEZ, ama içine portallamak yine de…\n */\nexport const resolvePortalTarget = (anchor: Element | null | undefined): PortalTarget => {\n const dialog = anchor?.closest?.('dialog') ?? null;\n\n if (dialog && dialog.isConnected) {\n return { container: dialog, needsTopLayer: isTopLayerDialog(dialog) };\n }\n\n return { container: document.body, needsTopLayer: false };\n};\n\n/**\n * Dialog üst katmanda mı — yani `showModal()` ile mi açıldı.\n * ⚠ `:modal` bazı ortamlarda (jsdom) desteklenmiyor ve `matches` fırlatıyor\n */\nconst isTopLayerDialog = (dialog: Element): boolean => {\n try {\n return dialog.matches(':modal');\n } catch {\n return dialog.hasAttribute('open');\n }\n};\n\n/**\n * Üst katman yüzeyini gösterir; temizleyiciyi döndürür.\n * ⚠ UA stil sayfası `[popover]`a `inset: 0` ve `margin: auto` veriyor.\n */\nexport const POPOVER_RESET = {\n margin: 0,\n right: 'auto',\n bottom: 'auto',\n} as const;\n\n/*\n * Yenilemeyen tek şey satır içi stilin YAZMADIĞI kutu özellikleri: `usePositioning` yalnızca\n * `top`/`left` üretiyor, dolayısıyla UA'nın `inset: 0` +…\n * ⚠ SIFIRLAMA BİLİNÇLİ OLARAK ÜÇ ÖZELLİK.\n */\n\n/** `showPopover()` çağırır ve kapatma fonksiyonunu döndürür. */\nexport const showTopLayer = (element: HTMLElement | null): (() => void) => {\n if (!element || typeof element.showPopover !== 'function') return () => {};\n\n try {\n element.showPopover();\n } catch {\n /* Zaten görünürse veya eleman bağlı değilse: yapacak bir şey yok. */\n return () => {};\n }\n\n return () => {\n try {\n if (element.isConnected) element.hidePopover();\n } catch {\n /* Kapanış sırasında eleman zaten sökülmüş olabilir. */\n }\n };\n};\n"],"names":["resolvePortalTarget","anchor","dialog","_a","isTopLayerDialog","POPOVER_RESET","showTopLayer","element"],"mappings":"gFAkBO,MAAMA,EAAuBC,GAAqD,OACvF,MAAMC,IAASC,EAAAF,GAAA,YAAAA,EAAQ,UAAR,YAAAE,EAAA,KAAAF,EAAkB,YAAa,KAE9C,OAAIC,GAAUA,EAAO,YACZ,CAAE,UAAWA,EAAQ,cAAeE,EAAiBF,CAAM,CAAA,EAG7D,CAAE,UAAW,SAAS,KAAM,cAAe,EAAA,CACpD,EAMME,EAAoBF,GAA6B,CACrD,GAAI,CACF,OAAOA,EAAO,QAAQ,QAAQ,CAChC,MAAQ,CACN,OAAOA,EAAO,aAAa,MAAM,CACnC,CACF,EAMaG,EAAgB,CAC3B,OAAQ,EACR,MAAO,OACP,OAAQ,MACV,EASaC,EAAgBC,GAA8C,CACzE,GAAI,CAACA,GAAW,OAAOA,EAAQ,aAAgB,iBAAmB,IAAM,CAAC,EAEzE,GAAI,CACFA,EAAQ,YAAA,CACV,MAAQ,CAEN,MAAO,IAAM,CAAC,CAChB,CAEA,MAAO,IAAM,CACX,GAAI,CACEA,EAAQ,aAAaA,EAAQ,YAAA,CACnC,MAAQ,CAER,CACF,CACF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Portal hedefi çözümü — üst katman (top layer) farkındalığıyla.
3
+ * ⚠ `createPortal(..., document.body)` TEK BAŞINA YANLIŞ. `<dialog>.showModal()` elemanı
4
+ * tarayıcının **üst katmanına** taşır ve üst katman…
5
+ */
6
+ /** Portal hedefi ve o hedefte üst katmana çıkmanın gerekip gerekmediği. */
7
+ export type PortalTarget = {
8
+ container: HTMLElement;
9
+ /** `true` ise yüzey `popover="manual"` taşımalı ve `showPopover()` çağırmalı. */
10
+ needsTopLayer: boolean;
11
+ };
12
+ /**
13
+ * `anchor`ın en yakın açık `<dialog>` atası varsa oraya, yoksa `document.body`e.
14
+ * ⚠ `dialog[open]` yerine `:modal` denenmedi: `show()` ile açılan modalsız bir dialog üst katmana
15
+ * GİRMEZ, ama içine portallamak yine de…
16
+ */
17
+ export declare const resolvePortalTarget: (anchor: Element | null | undefined) => PortalTarget;
18
+ /**
19
+ * Üst katman yüzeyini gösterir; temizleyiciyi döndürür.
20
+ * ⚠ UA stil sayfası `[popover]`a `inset: 0` ve `margin: auto` veriyor.
21
+ */
22
+ export declare const POPOVER_RESET: {
23
+ readonly margin: 0;
24
+ readonly right: "auto";
25
+ readonly bottom: "auto";
26
+ };
27
+ /** `showPopover()` çağırır ve kapatma fonksiyonunu döndürür. */
28
+ export declare const showTopLayer: (element: HTMLElement | null) => (() => void);
@@ -0,0 +1,36 @@
1
+ const s = (t) => {
2
+ var r;
3
+ const o = ((r = t == null ? void 0 : t.closest) == null ? void 0 : r.call(t, "dialog")) ?? null;
4
+ return o && o.isConnected ? { container: o, needsTopLayer: e(o) } : { container: document.body, needsTopLayer: !1 };
5
+ }, e = (t) => {
6
+ try {
7
+ return t.matches(":modal");
8
+ } catch {
9
+ return t.hasAttribute("open");
10
+ }
11
+ }, n = {
12
+ margin: 0,
13
+ right: "auto",
14
+ bottom: "auto"
15
+ }, i = (t) => {
16
+ if (!t || typeof t.showPopover != "function") return () => {
17
+ };
18
+ try {
19
+ t.showPopover();
20
+ } catch {
21
+ return () => {
22
+ };
23
+ }
24
+ return () => {
25
+ try {
26
+ t.isConnected && t.hidePopover();
27
+ } catch {
28
+ }
29
+ };
30
+ };
31
+ export {
32
+ n as POPOVER_RESET,
33
+ s as resolvePortalTarget,
34
+ i as showTopLayer
35
+ };
36
+ //# sourceMappingURL=portal.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.helper.js","sources":["../../src/helpers/portal.helper.ts"],"sourcesContent":["/**\n * Portal hedefi çözümü — üst katman (top layer) farkındalığıyla.\n * ⚠ `createPortal(..., document.body)` TEK BAŞINA YANLIŞ. `<dialog>.showModal()` elemanı\n * tarayıcının **üst katmanına** taşır ve üst katman…\n */\n\n/** Portal hedefi ve o hedefte üst katmana çıkmanın gerekip gerekmediği. */\nexport type PortalTarget = {\n container: HTMLElement;\n /** `true` ise yüzey `popover=\"manual\"` taşımalı ve `showPopover()` çağırmalı. */\n needsTopLayer: boolean;\n};\n\n/**\n * `anchor`ın en yakın açık `<dialog>` atası varsa oraya, yoksa `document.body`e.\n * ⚠ `dialog[open]` yerine `:modal` denenmedi: `show()` ile açılan modalsız bir dialog üst katmana\n * GİRMEZ, ama içine portallamak yine de…\n */\nexport const resolvePortalTarget = (anchor: Element | null | undefined): PortalTarget => {\n const dialog = anchor?.closest?.('dialog') ?? null;\n\n if (dialog && dialog.isConnected) {\n return { container: dialog, needsTopLayer: isTopLayerDialog(dialog) };\n }\n\n return { container: document.body, needsTopLayer: false };\n};\n\n/**\n * Dialog üst katmanda mı — yani `showModal()` ile mi açıldı.\n * ⚠ `:modal` bazı ortamlarda (jsdom) desteklenmiyor ve `matches` fırlatıyor\n */\nconst isTopLayerDialog = (dialog: Element): boolean => {\n try {\n return dialog.matches(':modal');\n } catch {\n return dialog.hasAttribute('open');\n }\n};\n\n/**\n * Üst katman yüzeyini gösterir; temizleyiciyi döndürür.\n * ⚠ UA stil sayfası `[popover]`a `inset: 0` ve `margin: auto` veriyor.\n */\nexport const POPOVER_RESET = {\n margin: 0,\n right: 'auto',\n bottom: 'auto',\n} as const;\n\n/*\n * Yenilemeyen tek şey satır içi stilin YAZMADIĞI kutu özellikleri: `usePositioning` yalnızca\n * `top`/`left` üretiyor, dolayısıyla UA'nın `inset: 0` +…\n * ⚠ SIFIRLAMA BİLİNÇLİ OLARAK ÜÇ ÖZELLİK.\n */\n\n/** `showPopover()` çağırır ve kapatma fonksiyonunu döndürür. */\nexport const showTopLayer = (element: HTMLElement | null): (() => void) => {\n if (!element || typeof element.showPopover !== 'function') return () => {};\n\n try {\n element.showPopover();\n } catch {\n /* Zaten görünürse veya eleman bağlı değilse: yapacak bir şey yok. */\n return () => {};\n }\n\n return () => {\n try {\n if (element.isConnected) element.hidePopover();\n } catch {\n /* Kapanış sırasında eleman zaten sökülmüş olabilir. */\n }\n };\n};\n"],"names":["resolvePortalTarget","anchor","_a","dialog","isTopLayerDialog","POPOVER_RESET","showTopLayer","element"],"mappings":"AAkBO,MAAMA,IAAsB,CAACC,MAAqD;AAAlF,MAAAC;AACL,QAAMC,MAASD,IAAAD,KAAA,gBAAAA,EAAQ,YAAR,gBAAAC,EAAA,KAAAD,GAAkB,cAAa;AAE9C,SAAIE,KAAUA,EAAO,cACZ,EAAE,WAAWA,GAAQ,eAAeC,EAAiBD,CAAM,EAAA,IAG7D,EAAE,WAAW,SAAS,MAAM,eAAe,GAAA;AACpD,GAMMC,IAAmB,CAACD,MAA6B;AACrD,MAAI;AACF,WAAOA,EAAO,QAAQ,QAAQ;AAAA,EAChC,QAAQ;AACN,WAAOA,EAAO,aAAa,MAAM;AAAA,EACnC;AACF,GAMaE,IAAgB;AAAA,EAC3B,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV,GASaC,IAAe,CAACC,MAA8C;AACzE,MAAI,CAACA,KAAW,OAAOA,EAAQ,eAAgB,mBAAmB,MAAM;AAAA,EAAC;AAEzE,MAAI;AACF,IAAAA,EAAQ,YAAA;AAAA,EACV,QAAQ;AAEN,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAEA,SAAO,MAAM;AACX,QAAI;AACF,MAAIA,EAAQ,eAAaA,EAAQ,YAAA;AAAA,IACnC,QAAQ;AAAA,IAER;AAAA,EACF;AACF;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@handijit/utils"),l=()=>{!s.isClient()||typeof window.scrollTo!="function"||window.scrollTo({top:0,left:0,behavior:"instant"})},t=(o,i)=>{typeof(o==null?void 0:o.scrollIntoView)=="function"&&o.scrollIntoView(i)};exports.scrollIntoViewIfPossible=t;exports.scrollWindowToTop=l;
2
+ //# sourceMappingURL=scroll.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll.helper.cjs","sources":["../../src/helpers/scroll.helper.ts"],"sourcesContent":["/** Kaydırma yardımcıları. */\n\nimport { isClient } from '@handijit/utils';\n\n/**\n * Pencereyi en üste alır; ortam desteklemiyorsa sessizce geçer.\n * ⚠ Kaydırma ANIDIR.\n */\nexport const scrollWindowToTop = (): void => {\n if (!isClient() || typeof window.scrollTo !== 'function') return;\n\n window.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n};\n\n/** Öğeyi görünür alana kaydırır; ortam desteklemiyorsa sessizce geçer. */\nexport const scrollIntoViewIfPossible = (\n element: Element | null | undefined,\n options?: ScrollIntoViewOptions,\n): void => {\n if (typeof element?.scrollIntoView === 'function') element.scrollIntoView(options);\n};\n"],"names":["scrollWindowToTop","isClient","scrollIntoViewIfPossible","element","options"],"mappings":"mHAQaA,EAAoB,IAAY,CACvC,CAACC,EAAAA,SAAA,GAAc,OAAO,OAAO,UAAa,YAE9C,OAAO,SAAS,CAAE,IAAK,EAAG,KAAM,EAAG,SAAU,UAAW,CAC1D,EAGaC,EAA2B,CACtCC,EACAC,IACS,CACL,OAAOD,GAAA,YAAAA,EAAS,iBAAmB,YAAYA,EAAQ,eAAeC,CAAO,CACnF"}
@@ -0,0 +1,8 @@
1
+ /** Kaydırma yardımcıları. */
2
+ /**
3
+ * Pencereyi en üste alır; ortam desteklemiyorsa sessizce geçer.
4
+ * ⚠ Kaydırma ANIDIR.
5
+ */
6
+ export declare const scrollWindowToTop: () => void;
7
+ /** Öğeyi görünür alana kaydırır; ortam desteklemiyorsa sessizce geçer. */
8
+ export declare const scrollIntoViewIfPossible: (element: Element | null | undefined, options?: ScrollIntoViewOptions) => void;
@@ -0,0 +1,11 @@
1
+ import { isClient as r } from "@handijit/utils";
2
+ const t = () => {
3
+ !r() || typeof window.scrollTo != "function" || window.scrollTo({ top: 0, left: 0, behavior: "instant" });
4
+ }, n = (o, i) => {
5
+ typeof (o == null ? void 0 : o.scrollIntoView) == "function" && o.scrollIntoView(i);
6
+ };
7
+ export {
8
+ n as scrollIntoViewIfPossible,
9
+ t as scrollWindowToTop
10
+ };
11
+ //# sourceMappingURL=scroll.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll.helper.js","sources":["../../src/helpers/scroll.helper.ts"],"sourcesContent":["/** Kaydırma yardımcıları. */\n\nimport { isClient } from '@handijit/utils';\n\n/**\n * Pencereyi en üste alır; ortam desteklemiyorsa sessizce geçer.\n * ⚠ Kaydırma ANIDIR.\n */\nexport const scrollWindowToTop = (): void => {\n if (!isClient() || typeof window.scrollTo !== 'function') return;\n\n window.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n};\n\n/** Öğeyi görünür alana kaydırır; ortam desteklemiyorsa sessizce geçer. */\nexport const scrollIntoViewIfPossible = (\n element: Element | null | undefined,\n options?: ScrollIntoViewOptions,\n): void => {\n if (typeof element?.scrollIntoView === 'function') element.scrollIntoView(options);\n};\n"],"names":["scrollWindowToTop","isClient","scrollIntoViewIfPossible","element","options"],"mappings":";AAQO,MAAMA,IAAoB,MAAY;AAC3C,EAAI,CAACC,EAAA,KAAc,OAAO,OAAO,YAAa,cAE9C,OAAO,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,WAAW;AAC1D,GAGaC,IAA2B,CACtCC,GACAC,MACS;AACT,EAAI,QAAOD,KAAA,gBAAAA,EAAS,mBAAmB,cAAYA,EAAQ,eAAeC,CAAO;AACnF;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=e=>e.replace(/İ/g,"i").replace(/I/g,"i").replace(/ı/g,"i").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/ş/g,"s").replace(/ğ/g,"g").replace(/ç/g,"c").replace(/ø/g,"o").replace(/æ/g,"ae").replace(/ß/g,"ss").replace(/đ/g,"d").replace(/ł/g,"l").replace(/\s+/g," ").trim(),c=(e,a)=>r(e).includes(r(a));exports.matchesSearch=c;exports.normalizeSearchTerm=r;
2
+ //# sourceMappingURL=text.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.helper.cjs","sources":["../../src/helpers/text.helper.ts"],"sourcesContent":["/** Metin normalizasyonu — aksan ve büyük/küçük harf duyarsız arama. */\n\n/** Serbest metin arama anahtarı: */\nexport const normalizeSearchTerm = (value: string): string =>\n value\n .replace(/İ/g, 'i')\n .replace(/I/g, 'i')\n .replace(/ı/g, 'i')\n .toLowerCase()\n .normalize('NFD')\n /* Birlestirici aksan isaretleri (U+0300–U+036F). */\n .replace(/[\\u0300-\\u036f]/g, '')\n /* NFD'nin ayristirmadigi harfler: her biri tek kod noktasi. */\n .replace(/ş/g, 's')\n .replace(/ğ/g, 'g')\n .replace(/ç/g, 'c')\n .replace(/ø/g, 'o')\n .replace(/æ/g, 'ae')\n .replace(/ß/g, 'ss')\n .replace(/đ/g, 'd')\n .replace(/ł/g, 'l')\n .replace(/\\s+/g, ' ')\n .trim();\n\n/** Aranan metin, hedefin içinde geçiyor mu? */\nexport const matchesSearch = (haystack: string, needle: string): boolean =>\n normalizeSearchTerm(haystack).includes(normalizeSearchTerm(needle));\n"],"names":["normalizeSearchTerm","value","matchesSearch","haystack","needle"],"mappings":"gFAGO,MAAMA,EAAuBC,GAClCA,EACG,QAAQ,KAAM,GAAG,EACjB,QAAQ,KAAM,GAAG,EACjB,QAAQ,KAAM,GAAG,EACjB,YAAA,EACA,UAAU,KAAK,EAEf,QAAQ,mBAAoB,EAAE,EAE9B,QAAQ,KAAM,GAAG,EACjB,QAAQ,KAAM,GAAG,EACjB,QAAQ,KAAM,GAAG,EACjB,QAAQ,KAAM,GAAG,EACjB,QAAQ,KAAM,IAAI,EAClB,QAAQ,KAAM,IAAI,EAClB,QAAQ,KAAM,GAAG,EACjB,QAAQ,KAAM,GAAG,EACjB,QAAQ,OAAQ,GAAG,EACnB,KAAA,EAGQC,EAAgB,CAACC,EAAkBC,IAC9CJ,EAAoBG,CAAQ,EAAE,SAASH,EAAoBI,CAAM,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Metin normalizasyonu — aksan ve büyük/küçük harf duyarsız arama. */
2
+ /** Serbest metin arama anahtarı: */
3
+ export declare const normalizeSearchTerm: (value: string) => string;
4
+ /** Aranan metin, hedefin içinde geçiyor mu? */
5
+ export declare const matchesSearch: (haystack: string, needle: string) => boolean;
@@ -0,0 +1,6 @@
1
+ const r = (e) => e.replace(/İ/g, "i").replace(/I/g, "i").replace(/ı/g, "i").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/ş/g, "s").replace(/ğ/g, "g").replace(/ç/g, "c").replace(/ø/g, "o").replace(/æ/g, "ae").replace(/ß/g, "ss").replace(/đ/g, "d").replace(/ł/g, "l").replace(/\s+/g, " ").trim(), c = (e, a) => r(e).includes(r(a));
2
+ export {
3
+ c as matchesSearch,
4
+ r as normalizeSearchTerm
5
+ };
6
+ //# sourceMappingURL=text.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.helper.js","sources":["../../src/helpers/text.helper.ts"],"sourcesContent":["/** Metin normalizasyonu — aksan ve büyük/küçük harf duyarsız arama. */\n\n/** Serbest metin arama anahtarı: */\nexport const normalizeSearchTerm = (value: string): string =>\n value\n .replace(/İ/g, 'i')\n .replace(/I/g, 'i')\n .replace(/ı/g, 'i')\n .toLowerCase()\n .normalize('NFD')\n /* Birlestirici aksan isaretleri (U+0300–U+036F). */\n .replace(/[\\u0300-\\u036f]/g, '')\n /* NFD'nin ayristirmadigi harfler: her biri tek kod noktasi. */\n .replace(/ş/g, 's')\n .replace(/ğ/g, 'g')\n .replace(/ç/g, 'c')\n .replace(/ø/g, 'o')\n .replace(/æ/g, 'ae')\n .replace(/ß/g, 'ss')\n .replace(/đ/g, 'd')\n .replace(/ł/g, 'l')\n .replace(/\\s+/g, ' ')\n .trim();\n\n/** Aranan metin, hedefin içinde geçiyor mu? */\nexport const matchesSearch = (haystack: string, needle: string): boolean =>\n normalizeSearchTerm(haystack).includes(normalizeSearchTerm(needle));\n"],"names":["normalizeSearchTerm","value","matchesSearch","haystack","needle"],"mappings":"AAGO,MAAMA,IAAsB,CAACC,MAClCA,EACG,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,GAAG,EACjB,YAAA,EACA,UAAU,KAAK,EAEf,QAAQ,oBAAoB,EAAE,EAE9B,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,IAAI,EAClB,QAAQ,MAAM,IAAI,EAClB,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,GAAG,EACjB,QAAQ,QAAQ,GAAG,EACnB,KAAA,GAGQC,IAAgB,CAACC,GAAkBC,MAC9CJ,EAAoBG,CAAQ,EAAE,SAASH,EAAoBI,CAAM,CAAC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@handijit/design"),r=require("@handijit/utils"),n="ui-theme-switching",o="(prefers-color-scheme: dark)",i=e=>e==="light"||e==="dark",s=()=>{var e;return r.isClient()&&((e=window.matchMedia)!=null&&e.call(window,o).matches)?"dark":"light"},c=()=>{if(!r.isClient())return"system";try{const e=window.localStorage.getItem(t.THEME_STORAGE_KEY);return i(e)?e:"system"}catch{return"system"}},m=()=>{if(!r.isClient())return"light";const e=document.documentElement.getAttribute(t.THEME_ATTRIBUTE);return i(e)?e:s()},T=e=>{if(r.isClient()){try{e==="system"?window.localStorage.removeItem(t.THEME_STORAGE_KEY):window.localStorage.setItem(t.THEME_STORAGE_KEY,e)}catch{}document.documentElement.setAttribute(t.THEME_ATTRIBUTE,e==="system"?s():e)}};exports.THEME_SWITCHING_CLASS=n;exports.applyThemePreference=T;exports.readActiveTheme=m;exports.readStoredPreference=c;exports.readSystemTheme=s;
2
+ //# sourceMappingURL=theme.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.helper.cjs","sources":["../../src/helpers/theme.helper.ts"],"sourcesContent":["import {\n THEME_ATTRIBUTE,\n THEME_STORAGE_KEY,\n type ThemeName,\n type ThemePreference,\n} from '@handijit/design';\nimport { isClient } from '@handijit/utils';\n\n/** Turns transitions off for one frame while the theme flips (see `base.scss`). */\nexport const THEME_SWITCHING_CLASS = 'ui-theme-switching';\n\nconst DARK_QUERY = '(prefers-color-scheme: dark)';\n\nconst isThemeName = (value: unknown): value is ThemeName => value === 'light' || value === 'dark';\n\n/** The operating system's setting; `light` on the server. */\nexport const readSystemTheme = (): ThemeName =>\n isClient() && window.matchMedia?.(DARK_QUERY).matches ? 'dark' : 'light';\n\n/**\n * The user's stored choice. \"System\" is the absence of the key, and a storage that throws (private\n * window, blocked site data) counts as no choice — the same reading as the design boot script.\n */\nexport const readStoredPreference = (): ThemePreference => {\n if (!isClient()) return 'system';\n\n try {\n const stored = window.localStorage.getItem(THEME_STORAGE_KEY);\n return isThemeName(stored) ? stored : 'system';\n } catch {\n return 'system';\n }\n};\n\n/** The theme drawn on the page: the root attribute when it names a theme, else the system's. */\nexport const readActiveTheme = (): ThemeName => {\n if (!isClient()) return 'light';\n\n const attribute = document.documentElement.getAttribute(THEME_ATTRIBUTE);\n return isThemeName(attribute) ? attribute : readSystemTheme();\n};\n\n/**\n * Stores the choice and applies it to the root element, the way `@handijit/design` documents it:\n * only `light` / `dark` are stored, \"system\" removes the key, and the attribute always carries the\n * resolved theme so the boot script and this function agree.\n */\nexport const applyThemePreference = (preference: ThemePreference): void => {\n if (!isClient()) return;\n\n try {\n if (preference === 'system') window.localStorage.removeItem(THEME_STORAGE_KEY);\n else window.localStorage.setItem(THEME_STORAGE_KEY, preference);\n } catch {\n /* The choice still applies for this page view; it just cannot be remembered. */\n }\n\n document.documentElement.setAttribute(\n THEME_ATTRIBUTE,\n preference === 'system' ? readSystemTheme() : preference,\n );\n};\n"],"names":["THEME_SWITCHING_CLASS","DARK_QUERY","isThemeName","value","readSystemTheme","isClient","_a","readStoredPreference","stored","THEME_STORAGE_KEY","readActiveTheme","attribute","THEME_ATTRIBUTE","applyThemePreference","preference"],"mappings":"iJASaA,EAAwB,qBAE/BC,EAAa,+BAEbC,EAAeC,GAAuCA,IAAU,SAAWA,IAAU,OAG9EC,EAAkB,IAAA,OAC7BC,OAAAA,EAAAA,SAAA,KAAcC,EAAA,OAAO,aAAP,MAAAA,EAAA,YAAoBL,GAAY,SAAU,OAAS,SAMtDM,EAAuB,IAAuB,CACzD,GAAI,CAACF,EAAAA,SAAA,EAAY,MAAO,SAExB,GAAI,CACF,MAAMG,EAAS,OAAO,aAAa,QAAQC,EAAAA,iBAAiB,EAC5D,OAAOP,EAAYM,CAAM,EAAIA,EAAS,QACxC,MAAQ,CACN,MAAO,QACT,CACF,EAGaE,EAAkB,IAAiB,CAC9C,GAAI,CAACL,EAAAA,SAAA,EAAY,MAAO,QAExB,MAAMM,EAAY,SAAS,gBAAgB,aAAaC,EAAAA,eAAe,EACvE,OAAOV,EAAYS,CAAS,EAAIA,EAAYP,EAAA,CAC9C,EAOaS,EAAwBC,GAAsC,CACzE,GAAKT,EAAAA,WAEL,IAAI,CACES,IAAe,SAAU,OAAO,aAAa,WAAWL,EAAAA,iBAAiB,EACxE,OAAO,aAAa,QAAQA,EAAAA,kBAAmBK,CAAU,CAChE,MAAQ,CAER,CAEA,SAAS,gBAAgB,aACvBF,EAAAA,gBACAE,IAAe,SAAWV,IAAoBU,CAAA,EAElD"}
@@ -0,0 +1,18 @@
1
+ import { ThemeName, ThemePreference } from '@handijit/design';
2
+ /** Turns transitions off for one frame while the theme flips (see `base.scss`). */
3
+ export declare const THEME_SWITCHING_CLASS = "ui-theme-switching";
4
+ /** The operating system's setting; `light` on the server. */
5
+ export declare const readSystemTheme: () => ThemeName;
6
+ /**
7
+ * The user's stored choice. "System" is the absence of the key, and a storage that throws (private
8
+ * window, blocked site data) counts as no choice — the same reading as the design boot script.
9
+ */
10
+ export declare const readStoredPreference: () => ThemePreference;
11
+ /** The theme drawn on the page: the root attribute when it names a theme, else the system's. */
12
+ export declare const readActiveTheme: () => ThemeName;
13
+ /**
14
+ * Stores the choice and applies it to the root element, the way `@handijit/design` documents it:
15
+ * only `light` / `dark` are stored, "system" removes the key, and the attribute always carries the
16
+ * resolved theme so the boot script and this function agree.
17
+ */
18
+ export declare const applyThemePreference: (preference: ThemePreference) => void;
@@ -0,0 +1,37 @@
1
+ import { THEME_STORAGE_KEY as r, THEME_ATTRIBUTE as o } from "@handijit/design";
2
+ import { isClient as e } from "@handijit/utils";
3
+ const a = "ui-theme-switching", n = "(prefers-color-scheme: dark)", s = (t) => t === "light" || t === "dark", m = () => {
4
+ var t;
5
+ return e() && ((t = window.matchMedia) != null && t.call(window, n).matches) ? "dark" : "light";
6
+ }, d = () => {
7
+ if (!e()) return "system";
8
+ try {
9
+ const t = window.localStorage.getItem(r);
10
+ return s(t) ? t : "system";
11
+ } catch {
12
+ return "system";
13
+ }
14
+ }, h = () => {
15
+ if (!e()) return "light";
16
+ const t = document.documentElement.getAttribute(o);
17
+ return s(t) ? t : m();
18
+ }, l = (t) => {
19
+ if (e()) {
20
+ try {
21
+ t === "system" ? window.localStorage.removeItem(r) : window.localStorage.setItem(r, t);
22
+ } catch {
23
+ }
24
+ document.documentElement.setAttribute(
25
+ o,
26
+ t === "system" ? m() : t
27
+ );
28
+ }
29
+ };
30
+ export {
31
+ a as THEME_SWITCHING_CLASS,
32
+ l as applyThemePreference,
33
+ h as readActiveTheme,
34
+ d as readStoredPreference,
35
+ m as readSystemTheme
36
+ };
37
+ //# sourceMappingURL=theme.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.helper.js","sources":["../../src/helpers/theme.helper.ts"],"sourcesContent":["import {\n THEME_ATTRIBUTE,\n THEME_STORAGE_KEY,\n type ThemeName,\n type ThemePreference,\n} from '@handijit/design';\nimport { isClient } from '@handijit/utils';\n\n/** Turns transitions off for one frame while the theme flips (see `base.scss`). */\nexport const THEME_SWITCHING_CLASS = 'ui-theme-switching';\n\nconst DARK_QUERY = '(prefers-color-scheme: dark)';\n\nconst isThemeName = (value: unknown): value is ThemeName => value === 'light' || value === 'dark';\n\n/** The operating system's setting; `light` on the server. */\nexport const readSystemTheme = (): ThemeName =>\n isClient() && window.matchMedia?.(DARK_QUERY).matches ? 'dark' : 'light';\n\n/**\n * The user's stored choice. \"System\" is the absence of the key, and a storage that throws (private\n * window, blocked site data) counts as no choice — the same reading as the design boot script.\n */\nexport const readStoredPreference = (): ThemePreference => {\n if (!isClient()) return 'system';\n\n try {\n const stored = window.localStorage.getItem(THEME_STORAGE_KEY);\n return isThemeName(stored) ? stored : 'system';\n } catch {\n return 'system';\n }\n};\n\n/** The theme drawn on the page: the root attribute when it names a theme, else the system's. */\nexport const readActiveTheme = (): ThemeName => {\n if (!isClient()) return 'light';\n\n const attribute = document.documentElement.getAttribute(THEME_ATTRIBUTE);\n return isThemeName(attribute) ? attribute : readSystemTheme();\n};\n\n/**\n * Stores the choice and applies it to the root element, the way `@handijit/design` documents it:\n * only `light` / `dark` are stored, \"system\" removes the key, and the attribute always carries the\n * resolved theme so the boot script and this function agree.\n */\nexport const applyThemePreference = (preference: ThemePreference): void => {\n if (!isClient()) return;\n\n try {\n if (preference === 'system') window.localStorage.removeItem(THEME_STORAGE_KEY);\n else window.localStorage.setItem(THEME_STORAGE_KEY, preference);\n } catch {\n /* The choice still applies for this page view; it just cannot be remembered. */\n }\n\n document.documentElement.setAttribute(\n THEME_ATTRIBUTE,\n preference === 'system' ? readSystemTheme() : preference,\n );\n};\n"],"names":["THEME_SWITCHING_CLASS","DARK_QUERY","isThemeName","value","readSystemTheme","isClient","_a","readStoredPreference","stored","THEME_STORAGE_KEY","readActiveTheme","attribute","THEME_ATTRIBUTE","applyThemePreference","preference"],"mappings":";;AASO,MAAMA,IAAwB,sBAE/BC,IAAa,gCAEbC,IAAc,CAACC,MAAuCA,MAAU,WAAWA,MAAU,QAG9EC,IAAkB,MAAA;;AAC7B,SAAAC,EAAA,OAAcC,IAAA,OAAO,eAAP,QAAAA,EAAA,aAAoBL,GAAY,WAAU,SAAS;AAAA,GAMtDM,IAAuB,MAAuB;AACzD,MAAI,CAACF,EAAA,EAAY,QAAO;AAExB,MAAI;AACF,UAAMG,IAAS,OAAO,aAAa,QAAQC,CAAiB;AAC5D,WAAOP,EAAYM,CAAM,IAAIA,IAAS;AAAA,EACxC,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAGaE,IAAkB,MAAiB;AAC9C,MAAI,CAACL,EAAA,EAAY,QAAO;AAExB,QAAMM,IAAY,SAAS,gBAAgB,aAAaC,CAAe;AACvE,SAAOV,EAAYS,CAAS,IAAIA,IAAYP,EAAA;AAC9C,GAOaS,IAAuB,CAACC,MAAsC;AACzE,MAAKT,KAEL;AAAA,QAAI;AACF,MAAIS,MAAe,WAAU,OAAO,aAAa,WAAWL,CAAiB,IACxE,OAAO,aAAa,QAAQA,GAAmBK,CAAU;AAAA,IAChE,QAAQ;AAAA,IAER;AAEA,aAAS,gBAAgB;AAAA,MACvBF;AAAA,MACAE,MAAe,WAAWV,MAAoBU;AAAA,IAAA;AAAA;AAElD;"}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react"),o=require("@handijit/utils"),u="ui-live-region",s=t=>{if(!o.isClient())return null;const i=`${u}-${t}`,n=document.getElementById(i);if(n)return n;const e=document.createElement("div");return e.id=i,e.setAttribute("aria-live",t),e.setAttribute("aria-atomic","true"),e.className="ui-visually-hidden",document.body.appendChild(e),e},c=(t,i)=>{t.textContent="",window.requestAnimationFrame(()=>{t.textContent=i})},l=()=>r.useCallback((t,i="polite")=>{const n=t.trim();if(n==="")return;const e=s(i);e&&c(e,n)},[]);exports.default=l;
2
+ //# sourceMappingURL=useAnnounce.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnnounce.cjs","sources":["../../src/hooks/useAnnounce.ts"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\n\nimport { isClient } from '@handijit/utils';\nimport { AnnouncePoliteness } from '@/types/hook.type';\n\n/**\n * EKRAN OKUYUCU DUYURU MERKEZİ.\n * @example const announce = useAnnounce(); announce(`${count} ürün bulundu`)\n */\n\nconst REGION_ID = 'ui-live-region';\n\n/** Bölgeyi bulur; yoksa oluşturur. */\nconst getRegion = (politeness: AnnouncePoliteness): HTMLElement | null => {\n if (!isClient()) return null;\n\n const id = `${REGION_ID}-${politeness}`;\n const existing = document.getElementById(id);\n if (existing) return existing;\n\n const region = document.createElement('div');\n region.id = id;\n region.setAttribute('aria-live', politeness);\n /* `aria-atomic` — bolge her degistiginde TAMAMI okunur. */\n region.setAttribute('aria-atomic', 'true');\n /*\n * Gorsel olarak gizli ama DOM'da: `display: none` ya da `hidden` bolgeyi erisilebilirlik\n * agacindan da cikarir ve hicbir sey duyurulmaz.\n */\n region.className = 'ui-visually-hidden';\n\n document.body.appendChild(region);\n return region;\n};\n\n/** AYNI metni arka arkaya duyurmak. */\nconst write = (region: HTMLElement, message: string): void => {\n region.textContent = '';\n\n window.requestAnimationFrame(() => {\n region.textContent = message;\n });\n};\n\n/** Duyuru fonksiyonu döndürür. */\nconst useAnnounce = (): ((message: string, politeness?: AnnouncePoliteness) => void) =>\n useCallback((message: string, politeness: AnnouncePoliteness = 'polite') => {\n const trimmed = message.trim();\n /* Bos duyuru bolgeyi temizler ve bir sonraki gercek duyuruyu bastirir. */\n if (trimmed === '') return;\n\n const region = getRegion(politeness);\n if (region) write(region, trimmed);\n }, []);\n\nexport default useAnnounce;\n"],"names":["REGION_ID","getRegion","politeness","isClient","id","existing","region","write","message","useAnnounce","useCallback","trimmed"],"mappings":"+KAWMA,EAAY,iBAGZC,EAAaC,GAAuD,CACxE,GAAI,CAACC,EAAAA,SAAA,EAAY,OAAO,KAExB,MAAMC,EAAK,GAAGJ,CAAS,IAAIE,CAAU,GAC/BG,EAAW,SAAS,eAAeD,CAAE,EAC3C,GAAIC,EAAU,OAAOA,EAErB,MAAMC,EAAS,SAAS,cAAc,KAAK,EAC3C,OAAAA,EAAO,GAAKF,EACZE,EAAO,aAAa,YAAaJ,CAAU,EAE3CI,EAAO,aAAa,cAAe,MAAM,EAKzCA,EAAO,UAAY,qBAEnB,SAAS,KAAK,YAAYA,CAAM,EACzBA,CACT,EAGMC,EAAQ,CAACD,EAAqBE,IAA0B,CAC5DF,EAAO,YAAc,GAErB,OAAO,sBAAsB,IAAM,CACjCA,EAAO,YAAcE,CACvB,CAAC,CACH,EAGMC,EAAc,IAClBC,EAAAA,YAAY,CAACF,EAAiBN,EAAiC,WAAa,CAC1E,MAAMS,EAAUH,EAAQ,KAAA,EAExB,GAAIG,IAAY,GAAI,OAEpB,MAAML,EAASL,EAAUC,CAAU,EAC/BI,GAAQC,EAAMD,EAAQK,CAAO,CACnC,EAAG,CAAA,CAAE"}
@@ -0,0 +1,4 @@
1
+ import { AnnouncePoliteness } from '../types/hook.type';
2
+ /** Duyuru fonksiyonu döndürür. */
3
+ declare const useAnnounce: () => ((message: string, politeness?: AnnouncePoliteness) => void);
4
+ export default useAnnounce;
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { useCallback as o } from "react";
3
+ import { isClient as r } from "@handijit/utils";
4
+ const u = "ui-live-region", s = (e) => {
5
+ if (!r()) return null;
6
+ const n = `${u}-${e}`, i = document.getElementById(n);
7
+ if (i) return i;
8
+ const t = document.createElement("div");
9
+ return t.id = n, t.setAttribute("aria-live", e), t.setAttribute("aria-atomic", "true"), t.className = "ui-visually-hidden", document.body.appendChild(t), t;
10
+ }, c = (e, n) => {
11
+ e.textContent = "", window.requestAnimationFrame(() => {
12
+ e.textContent = n;
13
+ });
14
+ }, d = () => o((e, n = "polite") => {
15
+ const i = e.trim();
16
+ if (i === "") return;
17
+ const t = s(n);
18
+ t && c(t, i);
19
+ }, []);
20
+ export {
21
+ d as default
22
+ };
23
+ //# sourceMappingURL=useAnnounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnnounce.js","sources":["../../src/hooks/useAnnounce.ts"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\n\nimport { isClient } from '@handijit/utils';\nimport { AnnouncePoliteness } from '@/types/hook.type';\n\n/**\n * EKRAN OKUYUCU DUYURU MERKEZİ.\n * @example const announce = useAnnounce(); announce(`${count} ürün bulundu`)\n */\n\nconst REGION_ID = 'ui-live-region';\n\n/** Bölgeyi bulur; yoksa oluşturur. */\nconst getRegion = (politeness: AnnouncePoliteness): HTMLElement | null => {\n if (!isClient()) return null;\n\n const id = `${REGION_ID}-${politeness}`;\n const existing = document.getElementById(id);\n if (existing) return existing;\n\n const region = document.createElement('div');\n region.id = id;\n region.setAttribute('aria-live', politeness);\n /* `aria-atomic` — bolge her degistiginde TAMAMI okunur. */\n region.setAttribute('aria-atomic', 'true');\n /*\n * Gorsel olarak gizli ama DOM'da: `display: none` ya da `hidden` bolgeyi erisilebilirlik\n * agacindan da cikarir ve hicbir sey duyurulmaz.\n */\n region.className = 'ui-visually-hidden';\n\n document.body.appendChild(region);\n return region;\n};\n\n/** AYNI metni arka arkaya duyurmak. */\nconst write = (region: HTMLElement, message: string): void => {\n region.textContent = '';\n\n window.requestAnimationFrame(() => {\n region.textContent = message;\n });\n};\n\n/** Duyuru fonksiyonu döndürür. */\nconst useAnnounce = (): ((message: string, politeness?: AnnouncePoliteness) => void) =>\n useCallback((message: string, politeness: AnnouncePoliteness = 'polite') => {\n const trimmed = message.trim();\n /* Bos duyuru bolgeyi temizler ve bir sonraki gercek duyuruyu bastirir. */\n if (trimmed === '') return;\n\n const region = getRegion(politeness);\n if (region) write(region, trimmed);\n }, []);\n\nexport default useAnnounce;\n"],"names":["REGION_ID","getRegion","politeness","isClient","id","existing","region","write","message","useAnnounce","useCallback","trimmed"],"mappings":";;;AAWA,MAAMA,IAAY,kBAGZC,IAAY,CAACC,MAAuD;AACxE,MAAI,CAACC,EAAA,EAAY,QAAO;AAExB,QAAMC,IAAK,GAAGJ,CAAS,IAAIE,CAAU,IAC/BG,IAAW,SAAS,eAAeD,CAAE;AAC3C,MAAIC,EAAU,QAAOA;AAErB,QAAMC,IAAS,SAAS,cAAc,KAAK;AAC3C,SAAAA,EAAO,KAAKF,GACZE,EAAO,aAAa,aAAaJ,CAAU,GAE3CI,EAAO,aAAa,eAAe,MAAM,GAKzCA,EAAO,YAAY,sBAEnB,SAAS,KAAK,YAAYA,CAAM,GACzBA;AACT,GAGMC,IAAQ,CAACD,GAAqBE,MAA0B;AAC5D,EAAAF,EAAO,cAAc,IAErB,OAAO,sBAAsB,MAAM;AACjC,IAAAA,EAAO,cAAcE;AAAA,EACvB,CAAC;AACH,GAGMC,IAAc,MAClBC,EAAY,CAACF,GAAiBN,IAAiC,aAAa;AAC1E,QAAMS,IAAUH,EAAQ,KAAA;AAExB,MAAIG,MAAY,GAAI;AAEpB,QAAML,IAASL,EAAUC,CAAU;AACnC,EAAII,KAAQC,EAAMD,GAAQK,CAAO;AACnC,GAAG,CAAA,CAAE;"}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react"),s=(t,r,u,n)=>{const e=o.useRef(u);e.current=u,o.useEffect(()=>{if(!r||!e.current)return;const i=window.setTimeout(()=>{var c;return(c=e.current)==null?void 0:c.call(e,t.trim())},n);return()=>window.clearTimeout(i)},[t,r,n])};exports.default=s;
2
+ //# sourceMappingURL=useAsyncSearch.cjs.map