@handijit/ui 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +872 -2
  3. package/build/base.css +1 -0
  4. package/build/charts.cjs +2 -0
  5. package/build/charts.cjs.map +1 -0
  6. package/build/charts.css +1 -0
  7. package/build/charts.js +1865 -0
  8. package/build/charts.js.map +1 -0
  9. package/build/chat.cjs +4 -0
  10. package/build/chat.cjs.map +1 -0
  11. package/build/chat.css +1 -0
  12. package/build/chat.js +1120 -0
  13. package/build/chat.js.map +1 -0
  14. package/build/components/Accordion/index.cjs +2 -0
  15. package/build/components/Accordion/index.cjs.map +1 -0
  16. package/build/components/Accordion/index.d.ts +29 -0
  17. package/build/components/Accordion/index.js +42 -0
  18. package/build/components/Accordion/index.js.map +1 -0
  19. package/build/components/Accordion/style.css +1 -0
  20. package/build/components/Alert/index.cjs +2 -0
  21. package/build/components/Alert/index.cjs.map +1 -0
  22. package/build/components/Alert/index.d.ts +15 -0
  23. package/build/components/Alert/index.js +30 -0
  24. package/build/components/Alert/index.js.map +1 -0
  25. package/build/components/Alert/style.css +1 -0
  26. package/build/components/Avatar/index.cjs +2 -0
  27. package/build/components/Avatar/index.cjs.map +1 -0
  28. package/build/components/Avatar/index.d.ts +26 -0
  29. package/build/components/Avatar/index.js +57 -0
  30. package/build/components/Avatar/index.js.map +1 -0
  31. package/build/components/Avatar/style.css +1 -0
  32. package/build/components/Badge/index.cjs +2 -0
  33. package/build/components/Badge/index.cjs.map +1 -0
  34. package/build/components/Badge/index.d.ts +26 -0
  35. package/build/components/Badge/index.js +26 -0
  36. package/build/components/Badge/index.js.map +1 -0
  37. package/build/components/Badge/style.css +1 -0
  38. package/build/components/BottomSheet/index.cjs +2 -0
  39. package/build/components/BottomSheet/index.cjs.map +1 -0
  40. package/build/components/BottomSheet/index.d.ts +21 -0
  41. package/build/components/BottomSheet/index.js +85 -0
  42. package/build/components/BottomSheet/index.js.map +1 -0
  43. package/build/components/BottomSheet/style.css +1 -0
  44. package/build/components/Breadcrumb/index.cjs +2 -0
  45. package/build/components/Breadcrumb/index.cjs.map +1 -0
  46. package/build/components/Breadcrumb/index.d.ts +20 -0
  47. package/build/components/Breadcrumb/index.js +31 -0
  48. package/build/components/Breadcrumb/index.js.map +1 -0
  49. package/build/components/Breadcrumb/style.css +1 -0
  50. package/build/components/Button/index.cjs +2 -0
  51. package/build/components/Button/index.cjs.map +1 -0
  52. package/build/components/Button/index.d.ts +32 -0
  53. package/build/components/Button/index.js +88 -0
  54. package/build/components/Button/index.js.map +1 -0
  55. package/build/components/Button/style.css +1 -0
  56. package/build/components/Card/index.cjs +2 -0
  57. package/build/components/Card/index.cjs.map +1 -0
  58. package/build/components/Card/index.d.ts +51 -0
  59. package/build/components/Card/index.js +58 -0
  60. package/build/components/Card/index.js.map +1 -0
  61. package/build/components/Card/style.css +1 -0
  62. package/build/components/Carousel/index.cjs +2 -0
  63. package/build/components/Carousel/index.cjs.map +1 -0
  64. package/build/components/Carousel/index.d.ts +24 -0
  65. package/build/components/Carousel/index.js +111 -0
  66. package/build/components/Carousel/index.js.map +1 -0
  67. package/build/components/Carousel/style.css +1 -0
  68. package/build/components/Checkbox/index.cjs +2 -0
  69. package/build/components/Checkbox/index.cjs.map +1 -0
  70. package/build/components/Checkbox/index.d.ts +10 -0
  71. package/build/components/Checkbox/index.js +33 -0
  72. package/build/components/Checkbox/index.js.map +1 -0
  73. package/build/components/Checkbox/style.css +1 -0
  74. package/build/components/Chip/index.cjs +2 -0
  75. package/build/components/Chip/index.cjs.map +1 -0
  76. package/build/components/Chip/index.d.ts +27 -0
  77. package/build/components/Chip/index.js +67 -0
  78. package/build/components/Chip/index.js.map +1 -0
  79. package/build/components/Chip/style.css +1 -0
  80. package/build/components/ChipGroup/index.cjs +2 -0
  81. package/build/components/ChipGroup/index.cjs.map +1 -0
  82. package/build/components/ChipGroup/index.d.ts +34 -0
  83. package/build/components/ChipGroup/index.js +64 -0
  84. package/build/components/ChipGroup/index.js.map +1 -0
  85. package/build/components/ChipGroup/style.css +1 -0
  86. package/build/components/CodeBadge/index.cjs +2 -0
  87. package/build/components/CodeBadge/index.cjs.map +1 -0
  88. package/build/components/CodeBadge/index.d.ts +36 -0
  89. package/build/components/CodeBadge/index.js +62 -0
  90. package/build/components/CodeBadge/index.js.map +1 -0
  91. package/build/components/CodeBadge/style.css +1 -0
  92. package/build/components/Combobox/index.cjs +2 -0
  93. package/build/components/Combobox/index.cjs.map +1 -0
  94. package/build/components/Combobox/index.d.ts +6 -0
  95. package/build/components/Combobox/index.js +302 -0
  96. package/build/components/Combobox/index.js.map +1 -0
  97. package/build/components/Combobox/style.css +1 -0
  98. package/build/components/CommandPalette/index.cjs +2 -0
  99. package/build/components/CommandPalette/index.cjs.map +1 -0
  100. package/build/components/CommandPalette/index.d.ts +37 -0
  101. package/build/components/CommandPalette/index.js +181 -0
  102. package/build/components/CommandPalette/index.js.map +1 -0
  103. package/build/components/CommandPalette/style.css +1 -0
  104. package/build/components/ConfirmDialog/index.cjs +2 -0
  105. package/build/components/ConfirmDialog/index.cjs.map +1 -0
  106. package/build/components/ConfirmDialog/index.d.ts +34 -0
  107. package/build/components/ConfirmDialog/index.js +85 -0
  108. package/build/components/ConfirmDialog/index.js.map +1 -0
  109. package/build/components/CopyField/index.cjs +2 -0
  110. package/build/components/CopyField/index.cjs.map +1 -0
  111. package/build/components/CopyField/index.d.ts +20 -0
  112. package/build/components/CopyField/index.js +44 -0
  113. package/build/components/CopyField/index.js.map +1 -0
  114. package/build/components/CopyField/style.css +1 -0
  115. package/build/components/DataTable/index.cjs +2 -0
  116. package/build/components/DataTable/index.cjs.map +1 -0
  117. package/build/components/DataTable/index.d.ts +60 -0
  118. package/build/components/DataTable/index.js +109 -0
  119. package/build/components/DataTable/index.js.map +1 -0
  120. package/build/components/DataTable/style.css +1 -0
  121. package/build/components/DateField/index.cjs +2 -0
  122. package/build/components/DateField/index.cjs.map +1 -0
  123. package/build/components/DateField/index.d.ts +44 -0
  124. package/build/components/DateField/index.js +79 -0
  125. package/build/components/DateField/index.js.map +1 -0
  126. package/build/components/DateField/style.css +1 -0
  127. package/build/components/Directory/index.cjs +2 -0
  128. package/build/components/Directory/index.cjs.map +1 -0
  129. package/build/components/Directory/index.d.ts +51 -0
  130. package/build/components/Directory/index.js +46 -0
  131. package/build/components/Directory/index.js.map +1 -0
  132. package/build/components/Directory/style.css +1 -0
  133. package/build/components/Disclosure/index.cjs +2 -0
  134. package/build/components/Disclosure/index.cjs.map +1 -0
  135. package/build/components/Disclosure/index.d.ts +34 -0
  136. package/build/components/Disclosure/index.js +64 -0
  137. package/build/components/Disclosure/index.js.map +1 -0
  138. package/build/components/Disclosure/style.css +1 -0
  139. package/build/components/Divider/index.cjs +2 -0
  140. package/build/components/Divider/index.cjs.map +1 -0
  141. package/build/components/Divider/index.d.ts +10 -0
  142. package/build/components/Divider/index.js +24 -0
  143. package/build/components/Divider/index.js.map +1 -0
  144. package/build/components/Divider/style.css +1 -0
  145. package/build/components/Drawer/index.cjs +2 -0
  146. package/build/components/Drawer/index.cjs.map +1 -0
  147. package/build/components/Drawer/index.d.ts +22 -0
  148. package/build/components/Drawer/index.js +88 -0
  149. package/build/components/Drawer/index.js.map +1 -0
  150. package/build/components/Drawer/style.css +1 -0
  151. package/build/components/EmptyState/index.cjs +2 -0
  152. package/build/components/EmptyState/index.cjs.map +1 -0
  153. package/build/components/EmptyState/index.d.ts +19 -0
  154. package/build/components/EmptyState/index.js +35 -0
  155. package/build/components/EmptyState/index.js.map +1 -0
  156. package/build/components/EmptyState/style.css +1 -0
  157. package/build/components/Field/index.cjs +2 -0
  158. package/build/components/Field/index.cjs.map +1 -0
  159. package/build/components/Field/index.d.ts +31 -0
  160. package/build/components/Field/index.js +52 -0
  161. package/build/components/Field/index.js.map +1 -0
  162. package/build/components/Field/style.css +1 -0
  163. package/build/components/FileUpload/index.cjs +2 -0
  164. package/build/components/FileUpload/index.cjs.map +1 -0
  165. package/build/components/FileUpload/index.d.ts +42 -0
  166. package/build/components/FileUpload/index.js +145 -0
  167. package/build/components/FileUpload/index.js.map +1 -0
  168. package/build/components/FileUpload/style.css +1 -0
  169. package/build/components/FilterBar/index.cjs +2 -0
  170. package/build/components/FilterBar/index.cjs.map +1 -0
  171. package/build/components/FilterBar/index.d.ts +28 -0
  172. package/build/components/FilterBar/index.js +35 -0
  173. package/build/components/FilterBar/index.js.map +1 -0
  174. package/build/components/FilterBar/style.css +1 -0
  175. package/build/components/IconButton/index.cjs +2 -0
  176. package/build/components/IconButton/index.cjs.map +1 -0
  177. package/build/components/IconButton/index.d.ts +22 -0
  178. package/build/components/IconButton/index.js +61 -0
  179. package/build/components/IconButton/index.js.map +1 -0
  180. package/build/components/IconButton/style.css +1 -0
  181. package/build/components/Input/index.cjs +2 -0
  182. package/build/components/Input/index.cjs.map +1 -0
  183. package/build/components/Input/index.d.ts +15 -0
  184. package/build/components/Input/index.js +52 -0
  185. package/build/components/Input/index.js.map +1 -0
  186. package/build/components/Input/style.css +1 -0
  187. package/build/components/Kbd/index.cjs +2 -0
  188. package/build/components/Kbd/index.cjs.map +1 -0
  189. package/build/components/Kbd/index.d.ts +12 -0
  190. package/build/components/Kbd/index.js +13 -0
  191. package/build/components/Kbd/index.js.map +1 -0
  192. package/build/components/Kbd/style.css +1 -0
  193. package/build/components/Link/index.cjs +2 -0
  194. package/build/components/Link/index.cjs.map +1 -0
  195. package/build/components/Link/index.d.ts +5 -0
  196. package/build/components/Link/index.js +11 -0
  197. package/build/components/Link/index.js.map +1 -0
  198. package/build/components/Menu/index.cjs +2 -0
  199. package/build/components/Menu/index.cjs.map +1 -0
  200. package/build/components/Menu/index.d.ts +46 -0
  201. package/build/components/Menu/index.js +241 -0
  202. package/build/components/Menu/index.js.map +1 -0
  203. package/build/components/Menu/style.css +1 -0
  204. package/build/components/Modal/index.cjs +2 -0
  205. package/build/components/Modal/index.cjs.map +1 -0
  206. package/build/components/Modal/index.d.ts +28 -0
  207. package/build/components/Modal/index.js +92 -0
  208. package/build/components/Modal/index.js.map +1 -0
  209. package/build/components/Modal/style.css +1 -0
  210. package/build/components/PageHeader/index.cjs +2 -0
  211. package/build/components/PageHeader/index.cjs.map +1 -0
  212. package/build/components/PageHeader/index.d.ts +24 -0
  213. package/build/components/PageHeader/index.js +34 -0
  214. package/build/components/PageHeader/index.js.map +1 -0
  215. package/build/components/PageHeader/style.css +1 -0
  216. package/build/components/Pagination/index.cjs +2 -0
  217. package/build/components/Pagination/index.cjs.map +1 -0
  218. package/build/components/Pagination/index.d.ts +39 -0
  219. package/build/components/Pagination/index.js +128 -0
  220. package/build/components/Pagination/index.js.map +1 -0
  221. package/build/components/Pagination/style.css +1 -0
  222. package/build/components/Panel/index.cjs +2 -0
  223. package/build/components/Panel/index.cjs.map +1 -0
  224. package/build/components/Panel/index.d.ts +43 -0
  225. package/build/components/Panel/index.js +55 -0
  226. package/build/components/Panel/index.js.map +1 -0
  227. package/build/components/Panel/style.css +1 -0
  228. package/build/components/PasswordInput/index.cjs +2 -0
  229. package/build/components/PasswordInput/index.cjs.map +1 -0
  230. package/build/components/PasswordInput/index.d.ts +14 -0
  231. package/build/components/PasswordInput/index.js +40 -0
  232. package/build/components/PasswordInput/index.js.map +1 -0
  233. package/build/components/PasswordInput/style.css +1 -0
  234. package/build/components/Popover/index.cjs +2 -0
  235. package/build/components/Popover/index.cjs.map +1 -0
  236. package/build/components/Popover/index.d.ts +20 -0
  237. package/build/components/Popover/index.js +91 -0
  238. package/build/components/Popover/index.js.map +1 -0
  239. package/build/components/Popover/style.css +1 -0
  240. package/build/components/Price/index.cjs +2 -0
  241. package/build/components/Price/index.cjs.map +1 -0
  242. package/build/components/Price/index.d.ts +22 -0
  243. package/build/components/Price/index.js +46 -0
  244. package/build/components/Price/index.js.map +1 -0
  245. package/build/components/Price/style.css +1 -0
  246. package/build/components/Progress/index.cjs +2 -0
  247. package/build/components/Progress/index.cjs.map +1 -0
  248. package/build/components/Progress/index.d.ts +49 -0
  249. package/build/components/Progress/index.js +120 -0
  250. package/build/components/Progress/index.js.map +1 -0
  251. package/build/components/Progress/style.css +1 -0
  252. package/build/components/PromptDialog/index.cjs +2 -0
  253. package/build/components/PromptDialog/index.cjs.map +1 -0
  254. package/build/components/PromptDialog/index.d.ts +36 -0
  255. package/build/components/PromptDialog/index.js +119 -0
  256. package/build/components/PromptDialog/index.js.map +1 -0
  257. package/build/components/PromptDialog/style.css +1 -0
  258. package/build/components/QuantityStepper/index.cjs +2 -0
  259. package/build/components/QuantityStepper/index.cjs.map +1 -0
  260. package/build/components/QuantityStepper/index.d.ts +21 -0
  261. package/build/components/QuantityStepper/index.js +106 -0
  262. package/build/components/QuantityStepper/index.js.map +1 -0
  263. package/build/components/QuantityStepper/style.css +1 -0
  264. package/build/components/Radio/index.cjs +2 -0
  265. package/build/components/Radio/index.cjs.map +1 -0
  266. package/build/components/Radio/index.d.ts +12 -0
  267. package/build/components/Radio/index.js +35 -0
  268. package/build/components/Radio/index.js.map +1 -0
  269. package/build/components/Radio/style.css +1 -0
  270. package/build/components/RadioCard/index.cjs +2 -0
  271. package/build/components/RadioCard/index.cjs.map +1 -0
  272. package/build/components/RadioCard/index.d.ts +16 -0
  273. package/build/components/RadioCard/index.js +48 -0
  274. package/build/components/RadioCard/index.js.map +1 -0
  275. package/build/components/RadioCard/style.css +1 -0
  276. package/build/components/RangeSlider/index.cjs +2 -0
  277. package/build/components/RangeSlider/index.cjs.map +1 -0
  278. package/build/components/RangeSlider/index.d.ts +26 -0
  279. package/build/components/RangeSlider/index.js +102 -0
  280. package/build/components/RangeSlider/index.js.map +1 -0
  281. package/build/components/RangeSlider/style.css +1 -0
  282. package/build/components/Rating/index.cjs +2 -0
  283. package/build/components/Rating/index.cjs.map +1 -0
  284. package/build/components/Rating/index.d.ts +16 -0
  285. package/build/components/Rating/index.js +29 -0
  286. package/build/components/Rating/index.js.map +1 -0
  287. package/build/components/Rating/style.css +1 -0
  288. package/build/components/RatingInput/index.cjs +2 -0
  289. package/build/components/RatingInput/index.cjs.map +1 -0
  290. package/build/components/RatingInput/index.d.ts +21 -0
  291. package/build/components/RatingInput/index.js +75 -0
  292. package/build/components/RatingInput/index.js.map +1 -0
  293. package/build/components/RatingInput/style.css +1 -0
  294. package/build/components/ScrollArea/index.cjs +2 -0
  295. package/build/components/ScrollArea/index.cjs.map +1 -0
  296. package/build/components/ScrollArea/index.d.ts +23 -0
  297. package/build/components/ScrollArea/index.js +65 -0
  298. package/build/components/ScrollArea/index.js.map +1 -0
  299. package/build/components/ScrollArea/style.css +1 -0
  300. package/build/components/SectionHeader/index.cjs +2 -0
  301. package/build/components/SectionHeader/index.cjs.map +1 -0
  302. package/build/components/SectionHeader/index.d.ts +17 -0
  303. package/build/components/SectionHeader/index.js +25 -0
  304. package/build/components/SectionHeader/index.js.map +1 -0
  305. package/build/components/SectionHeader/style.css +1 -0
  306. package/build/components/SegmentedControl/index.cjs +2 -0
  307. package/build/components/SegmentedControl/index.cjs.map +1 -0
  308. package/build/components/SegmentedControl/index.d.ts +24 -0
  309. package/build/components/SegmentedControl/index.js +69 -0
  310. package/build/components/SegmentedControl/index.js.map +1 -0
  311. package/build/components/SegmentedControl/style.css +1 -0
  312. package/build/components/Select/index.cjs +2 -0
  313. package/build/components/Select/index.cjs.map +1 -0
  314. package/build/components/Select/index.d.ts +39 -0
  315. package/build/components/Select/index.js +179 -0
  316. package/build/components/Select/index.js.map +1 -0
  317. package/build/components/Select/style.css +1 -0
  318. package/build/components/Skeleton/index.cjs +2 -0
  319. package/build/components/Skeleton/index.cjs.map +1 -0
  320. package/build/components/Skeleton/index.d.ts +25 -0
  321. package/build/components/Skeleton/index.js +50 -0
  322. package/build/components/Skeleton/index.js.map +1 -0
  323. package/build/components/Skeleton/style.css +1 -0
  324. package/build/components/Spinner/index.cjs +2 -0
  325. package/build/components/Spinner/index.cjs.map +1 -0
  326. package/build/components/Spinner/index.d.ts +11 -0
  327. package/build/components/Spinner/index.js +15 -0
  328. package/build/components/Spinner/index.js.map +1 -0
  329. package/build/components/Spinner/style.css +1 -0
  330. package/build/components/Stat/index.cjs +2 -0
  331. package/build/components/Stat/index.cjs.map +1 -0
  332. package/build/components/Stat/index.d.ts +34 -0
  333. package/build/components/Stat/index.js +72 -0
  334. package/build/components/Stat/index.js.map +1 -0
  335. package/build/components/Stat/style.css +1 -0
  336. package/build/components/StatusDot/index.cjs +2 -0
  337. package/build/components/StatusDot/index.cjs.map +1 -0
  338. package/build/components/StatusDot/index.d.ts +23 -0
  339. package/build/components/StatusDot/index.js +23 -0
  340. package/build/components/StatusDot/index.js.map +1 -0
  341. package/build/components/StatusDot/style.css +1 -0
  342. package/build/components/Steps/index.cjs +2 -0
  343. package/build/components/Steps/index.cjs.map +1 -0
  344. package/build/components/Steps/index.d.ts +23 -0
  345. package/build/components/Steps/index.js +69 -0
  346. package/build/components/Steps/index.js.map +1 -0
  347. package/build/components/Steps/style.css +1 -0
  348. package/build/components/SummaryCard/index.cjs +2 -0
  349. package/build/components/SummaryCard/index.cjs.map +1 -0
  350. package/build/components/SummaryCard/index.d.ts +24 -0
  351. package/build/components/SummaryCard/index.js +33 -0
  352. package/build/components/SummaryCard/index.js.map +1 -0
  353. package/build/components/SummaryCard/style.css +1 -0
  354. package/build/components/Switch/index.cjs +2 -0
  355. package/build/components/Switch/index.cjs.map +1 -0
  356. package/build/components/Switch/index.d.ts +16 -0
  357. package/build/components/Switch/index.js +42 -0
  358. package/build/components/Switch/index.js.map +1 -0
  359. package/build/components/Switch/style.css +1 -0
  360. package/build/components/Table/index.cjs +2 -0
  361. package/build/components/Table/index.cjs.map +1 -0
  362. package/build/components/Table/index.d.ts +28 -0
  363. package/build/components/Table/index.js +58 -0
  364. package/build/components/Table/index.js.map +1 -0
  365. package/build/components/Table/style.css +1 -0
  366. package/build/components/TableCheckbox/index.cjs +2 -0
  367. package/build/components/TableCheckbox/index.cjs.map +1 -0
  368. package/build/components/TableCheckbox/index.d.ts +15 -0
  369. package/build/components/TableCheckbox/index.js +31 -0
  370. package/build/components/TableCheckbox/index.js.map +1 -0
  371. package/build/components/TableCheckbox/style.css +1 -0
  372. package/build/components/Tabs/index.cjs +2 -0
  373. package/build/components/Tabs/index.cjs.map +1 -0
  374. package/build/components/Tabs/index.d.ts +27 -0
  375. package/build/components/Tabs/index.js +102 -0
  376. package/build/components/Tabs/index.js.map +1 -0
  377. package/build/components/Tabs/style.css +1 -0
  378. package/build/components/TagInput/index.cjs +2 -0
  379. package/build/components/TagInput/index.cjs.map +1 -0
  380. package/build/components/TagInput/index.d.ts +25 -0
  381. package/build/components/TagInput/index.js +124 -0
  382. package/build/components/TagInput/index.js.map +1 -0
  383. package/build/components/TagInput/style.css +1 -0
  384. package/build/components/TextLink/index.cjs +2 -0
  385. package/build/components/TextLink/index.cjs.map +1 -0
  386. package/build/components/TextLink/index.d.ts +16 -0
  387. package/build/components/TextLink/index.js +32 -0
  388. package/build/components/TextLink/index.js.map +1 -0
  389. package/build/components/TextLink/style.css +1 -0
  390. package/build/components/Textarea/index.cjs +2 -0
  391. package/build/components/Textarea/index.cjs.map +1 -0
  392. package/build/components/Textarea/index.d.ts +20 -0
  393. package/build/components/Textarea/index.js +68 -0
  394. package/build/components/Textarea/index.js.map +1 -0
  395. package/build/components/Textarea/style.css +1 -0
  396. package/build/components/Tile/index.cjs +2 -0
  397. package/build/components/Tile/index.cjs.map +1 -0
  398. package/build/components/Tile/index.d.ts +19 -0
  399. package/build/components/Tile/index.js +24 -0
  400. package/build/components/Tile/index.js.map +1 -0
  401. package/build/components/Tile/style.css +1 -0
  402. package/build/components/Timeline/index.cjs +2 -0
  403. package/build/components/Timeline/index.cjs.map +1 -0
  404. package/build/components/Timeline/index.d.ts +24 -0
  405. package/build/components/Timeline/index.js +56 -0
  406. package/build/components/Timeline/index.js.map +1 -0
  407. package/build/components/Timeline/style.css +1 -0
  408. package/build/components/Toast/index.cjs +2 -0
  409. package/build/components/Toast/index.cjs.map +1 -0
  410. package/build/components/Toast/index.d.ts +43 -0
  411. package/build/components/Toast/index.js +136 -0
  412. package/build/components/Toast/index.js.map +1 -0
  413. package/build/components/Toast/style.css +1 -0
  414. package/build/components/ToastPortal/index.cjs +2 -0
  415. package/build/components/ToastPortal/index.cjs.map +1 -0
  416. package/build/components/ToastPortal/index.d.ts +8 -0
  417. package/build/components/ToastPortal/index.js +15 -0
  418. package/build/components/ToastPortal/index.js.map +1 -0
  419. package/build/components/Tooltip/index.cjs +2 -0
  420. package/build/components/Tooltip/index.cjs.map +1 -0
  421. package/build/components/Tooltip/index.d.ts +23 -0
  422. package/build/components/Tooltip/index.js +116 -0
  423. package/build/components/Tooltip/index.js.map +1 -0
  424. package/build/components/Tooltip/style.css +1 -0
  425. package/build/constants/breakpoint.constants.cjs +2 -0
  426. package/build/constants/breakpoint.constants.cjs.map +1 -0
  427. package/build/constants/breakpoint.constants.d.ts +8 -0
  428. package/build/constants/breakpoint.constants.js +9 -0
  429. package/build/constants/breakpoint.constants.js.map +1 -0
  430. package/build/constants/combobox.constants.cjs +2 -0
  431. package/build/constants/combobox.constants.cjs.map +1 -0
  432. package/build/constants/combobox.constants.d.ts +11 -0
  433. package/build/constants/combobox.constants.js +7 -0
  434. package/build/constants/combobox.constants.js.map +1 -0
  435. package/build/constants/scroll.constants.cjs +2 -0
  436. package/build/constants/scroll.constants.cjs.map +1 -0
  437. package/build/constants/scroll.constants.d.ts +7 -0
  438. package/build/constants/scroll.constants.js +5 -0
  439. package/build/constants/scroll.constants.js.map +1 -0
  440. package/build/enums/ui-size.enum.cjs +2 -0
  441. package/build/enums/ui-size.enum.cjs.map +1 -0
  442. package/build/enums/ui-size.enum.d.ts +9 -0
  443. package/build/enums/ui-size.enum.js +5 -0
  444. package/build/enums/ui-size.enum.js.map +1 -0
  445. package/build/enums/ui-variant.enum.cjs +2 -0
  446. package/build/enums/ui-variant.enum.cjs.map +1 -0
  447. package/build/enums/ui-variant.enum.d.ts +20 -0
  448. package/build/enums/ui-variant.enum.js +5 -0
  449. package/build/enums/ui-variant.enum.js.map +1 -0
  450. package/build/helpers/class-name.helper.cjs +2 -0
  451. package/build/helpers/class-name.helper.cjs.map +1 -0
  452. package/build/helpers/class-name.helper.d.ts +3 -0
  453. package/build/helpers/class-name.helper.js +10 -0
  454. package/build/helpers/class-name.helper.js.map +1 -0
  455. package/build/helpers/component.helper.cjs +2 -0
  456. package/build/helpers/component.helper.cjs.map +1 -0
  457. package/build/helpers/component.helper.d.ts +13 -0
  458. package/build/helpers/component.helper.js +5 -0
  459. package/build/helpers/component.helper.js.map +1 -0
  460. package/build/helpers/focus.helper.cjs +2 -0
  461. package/build/helpers/focus.helper.cjs.map +1 -0
  462. package/build/helpers/focus.helper.d.ts +42 -0
  463. package/build/helpers/focus.helper.js +65 -0
  464. package/build/helpers/focus.helper.js.map +1 -0
  465. package/build/helpers/label.helper.cjs +2 -0
  466. package/build/helpers/label.helper.cjs.map +1 -0
  467. package/build/helpers/label.helper.d.ts +11 -0
  468. package/build/helpers/label.helper.js +11 -0
  469. package/build/helpers/label.helper.js.map +1 -0
  470. package/build/helpers/portal.helper.cjs +2 -0
  471. package/build/helpers/portal.helper.cjs.map +1 -0
  472. package/build/helpers/portal.helper.d.ts +28 -0
  473. package/build/helpers/portal.helper.js +36 -0
  474. package/build/helpers/portal.helper.js.map +1 -0
  475. package/build/helpers/scroll.helper.cjs +2 -0
  476. package/build/helpers/scroll.helper.cjs.map +1 -0
  477. package/build/helpers/scroll.helper.d.ts +8 -0
  478. package/build/helpers/scroll.helper.js +11 -0
  479. package/build/helpers/scroll.helper.js.map +1 -0
  480. package/build/helpers/text.helper.cjs +2 -0
  481. package/build/helpers/text.helper.cjs.map +1 -0
  482. package/build/helpers/text.helper.d.ts +5 -0
  483. package/build/helpers/text.helper.js +6 -0
  484. package/build/helpers/text.helper.js.map +1 -0
  485. package/build/helpers/theme.helper.cjs +24 -0
  486. package/build/helpers/theme.helper.cjs.map +1 -0
  487. package/build/helpers/theme.helper.d.ts +49 -0
  488. package/build/helpers/theme.helper.js +75 -0
  489. package/build/helpers/theme.helper.js.map +1 -0
  490. package/build/hooks/useAnnounce.cjs +2 -0
  491. package/build/hooks/useAnnounce.cjs.map +1 -0
  492. package/build/hooks/useAnnounce.d.ts +4 -0
  493. package/build/hooks/useAnnounce.js +23 -0
  494. package/build/hooks/useAnnounce.js.map +1 -0
  495. package/build/hooks/useAsyncSearch.cjs +2 -0
  496. package/build/hooks/useAsyncSearch.cjs.map +1 -0
  497. package/build/hooks/useAsyncSearch.d.ts +11 -0
  498. package/build/hooks/useAsyncSearch.js +17 -0
  499. package/build/hooks/useAsyncSearch.js.map +1 -0
  500. package/build/hooks/useCopyFeedback.cjs +2 -0
  501. package/build/hooks/useCopyFeedback.cjs.map +1 -0
  502. package/build/hooks/useCopyFeedback.d.ts +10 -0
  503. package/build/hooks/useCopyFeedback.js +25 -0
  504. package/build/hooks/useCopyFeedback.js.map +1 -0
  505. package/build/hooks/useDismissOnEscape.cjs +2 -0
  506. package/build/hooks/useDismissOnEscape.cjs.map +1 -0
  507. package/build/hooks/useDismissOnEscape.d.ts +12 -0
  508. package/build/hooks/useDismissOnEscape.js +18 -0
  509. package/build/hooks/useDismissOnEscape.js.map +1 -0
  510. package/build/hooks/useListboxNavigation.cjs +2 -0
  511. package/build/hooks/useListboxNavigation.cjs.map +1 -0
  512. package/build/hooks/useListboxNavigation.d.ts +7 -0
  513. package/build/hooks/useListboxNavigation.js +53 -0
  514. package/build/hooks/useListboxNavigation.js.map +1 -0
  515. package/build/hooks/usePortalSurface.cjs +2 -0
  516. package/build/hooks/usePortalSurface.cjs.map +1 -0
  517. package/build/hooks/usePortalSurface.d.ts +25 -0
  518. package/build/hooks/usePortalSurface.js +19 -0
  519. package/build/hooks/usePortalSurface.js.map +1 -0
  520. package/build/hooks/usePositioning.cjs +2 -0
  521. package/build/hooks/usePositioning.cjs.map +1 -0
  522. package/build/hooks/usePositioning.d.ts +13 -0
  523. package/build/hooks/usePositioning.js +74 -0
  524. package/build/hooks/usePositioning.js.map +1 -0
  525. package/build/hooks/useScrollLock.cjs +2 -0
  526. package/build/hooks/useScrollLock.cjs.map +1 -0
  527. package/build/hooks/useScrollLock.d.ts +2 -0
  528. package/build/hooks/useScrollLock.js +34 -0
  529. package/build/hooks/useScrollLock.js.map +1 -0
  530. package/build/hooks/useSheetViewport.cjs +2 -0
  531. package/build/hooks/useSheetViewport.cjs.map +1 -0
  532. package/build/hooks/useSheetViewport.d.ts +6 -0
  533. package/build/hooks/useSheetViewport.js +29 -0
  534. package/build/hooks/useSheetViewport.js.map +1 -0
  535. package/build/hooks/useStickToBottom.cjs +2 -0
  536. package/build/hooks/useStickToBottom.cjs.map +1 -0
  537. package/build/hooks/useStickToBottom.d.ts +12 -0
  538. package/build/hooks/useStickToBottom.js +39 -0
  539. package/build/hooks/useStickToBottom.js.map +1 -0
  540. package/build/hooks/useUiTheme.cjs +2 -0
  541. package/build/hooks/useUiTheme.cjs.map +1 -0
  542. package/build/hooks/useUiTheme.d.ts +7 -0
  543. package/build/hooks/useUiTheme.js +36 -0
  544. package/build/hooks/useUiTheme.js.map +1 -0
  545. package/build/hooks/useUiTokens.cjs +2 -0
  546. package/build/hooks/useUiTokens.cjs.map +1 -0
  547. package/build/hooks/useUiTokens.d.ts +11 -0
  548. package/build/hooks/useUiTokens.js +39 -0
  549. package/build/hooks/useUiTokens.js.map +1 -0
  550. package/build/hooks/useVirtualList.cjs +2 -0
  551. package/build/hooks/useVirtualList.cjs.map +1 -0
  552. package/build/hooks/useVirtualList.d.ts +13 -0
  553. package/build/hooks/useVirtualList.js +41 -0
  554. package/build/hooks/useVirtualList.js.map +1 -0
  555. package/build/index.cjs +2 -0
  556. package/build/index.cjs.map +1 -0
  557. package/build/index.d.ts +95 -0
  558. package/build/index.js +207 -0
  559. package/build/index.js.map +1 -0
  560. package/build/scss/_colors.generated.scss +119 -0
  561. package/build/scss/_index.scss +6 -0
  562. package/build/scss/_metrics.generated.scss +49 -0
  563. package/build/scss/_mixins.scss +710 -0
  564. package/build/scss/_variables.scss +51 -0
  565. package/build/styles/base.d.ts +0 -0
  566. package/build/styles.css +133 -0
  567. package/build/theme/UiProvider.cjs +2 -0
  568. package/build/theme/UiProvider.cjs.map +1 -0
  569. package/build/theme/UiProvider.d.ts +22 -0
  570. package/build/theme/UiProvider.js +30 -0
  571. package/build/theme/UiProvider.js.map +1 -0
  572. package/build/theme/UiThemeScript.cjs +2 -0
  573. package/build/theme/UiThemeScript.cjs.map +1 -0
  574. package/build/theme/UiThemeScript.d.ts +19 -0
  575. package/build/theme/UiThemeScript.js +8 -0
  576. package/build/theme/UiThemeScript.js.map +1 -0
  577. package/build/theme/context.cjs +2 -0
  578. package/build/theme/context.cjs.map +1 -0
  579. package/build/theme/context.d.ts +5 -0
  580. package/build/theme/context.js +8 -0
  581. package/build/theme/context.js.map +1 -0
  582. package/build/theme/initUi.cjs +2 -0
  583. package/build/theme/initUi.cjs.map +1 -0
  584. package/build/theme/initUi.d.ts +7 -0
  585. package/build/theme/initUi.js +10 -0
  586. package/build/theme/initUi.js.map +1 -0
  587. package/build/theme/palette.cjs +2 -0
  588. package/build/theme/palette.cjs.map +1 -0
  589. package/build/theme/palette.d.ts +219 -0
  590. package/build/theme/palette.js +148 -0
  591. package/build/theme/palette.js.map +1 -0
  592. package/build/theme/tokens.cjs +2 -0
  593. package/build/theme/tokens.cjs.map +1 -0
  594. package/build/theme/tokens.d.ts +225 -0
  595. package/build/theme/tokens.js +384 -0
  596. package/build/theme/tokens.js.map +1 -0
  597. package/build/types/charts/AreaChart/index.d.ts +14 -0
  598. package/build/types/charts/BarChart/index.d.ts +16 -0
  599. package/build/types/charts/BoxPlot/index.d.ts +43 -0
  600. package/build/types/charts/ComposedChart/index.d.ts +16 -0
  601. package/build/types/charts/Heatmap/index.d.ts +30 -0
  602. package/build/types/charts/Histogram/index.d.ts +29 -0
  603. package/build/types/charts/LineChart/index.d.ts +14 -0
  604. package/build/types/charts/PieChart/index.d.ts +36 -0
  605. package/build/types/charts/RadarChart/index.d.ts +40 -0
  606. package/build/types/charts/ScatterPlot/index.d.ts +41 -0
  607. package/build/types/charts/core/CartesianChart.d.ts +43 -0
  608. package/build/types/charts/core/ChartFrame.d.ts +55 -0
  609. package/build/types/charts/core/axes.d.ts +37 -0
  610. package/build/types/charts/core/cartesian.d.ts +80 -0
  611. package/build/types/charts/core/format.d.ts +19 -0
  612. package/build/types/charts/core/margins.d.ts +9 -0
  613. package/build/types/charts/core/palette.d.ts +13 -0
  614. package/build/types/charts/core/path.d.ts +24 -0
  615. package/build/types/charts/core/scale.d.ts +40 -0
  616. package/build/types/charts/core/series.d.ts +11 -0
  617. package/build/types/charts/core/spatial.d.ts +12 -0
  618. package/build/types/charts/core/stats.d.ts +34 -0
  619. package/build/types/charts/core/types.d.ts +31 -0
  620. package/build/types/charts/core/useChartWidth.d.ts +7 -0
  621. package/build/types/charts/index.d.ts +21 -0
  622. package/build/types/chat/ActionList/index.d.ts +46 -0
  623. package/build/types/chat/AppBar/index.d.ts +21 -0
  624. package/build/types/chat/ChatMessage/index.d.ts +24 -0
  625. package/build/types/chat/ChatThread/index.d.ts +24 -0
  626. package/build/types/chat/Citation/index.d.ts +15 -0
  627. package/build/types/chat/CodeBlock/format.d.ts +7 -0
  628. package/build/types/chat/CodeBlock/grammars.d.ts +44 -0
  629. package/build/types/chat/CodeBlock/highlight.d.ts +22 -0
  630. package/build/types/chat/CodeBlock/index.d.ts +33 -0
  631. package/build/types/chat/DescriptionList/index.d.ts +16 -0
  632. package/build/types/chat/Legend/index.d.ts +20 -0
  633. package/build/types/chat/MessageActions/index.d.ts +21 -0
  634. package/build/types/chat/PromptInput/index.d.ts +47 -0
  635. package/build/types/chat/PromptSuggestions/index.d.ts +25 -0
  636. package/build/types/chat/Prose/index.d.ts +15 -0
  637. package/build/types/chat/ReasoningBlock/index.d.ts +24 -0
  638. package/build/types/chat/ReasoningText/index.d.ts +14 -0
  639. package/build/types/chat/SegmentBar/index.d.ts +46 -0
  640. package/build/types/chat/SourceList/index.d.ts +25 -0
  641. package/build/types/chat/TerminalOutput/index.d.ts +25 -0
  642. package/build/types/chat/ToolCall/index.d.ts +41 -0
  643. package/build/types/chat/index.d.ts +26 -0
  644. package/build/types/combobox.type.d.ts +49 -0
  645. package/build/types/common-element-props.type.d.ts +8 -0
  646. package/build/types/helpers/class-name.helper.d.ts +3 -0
  647. package/build/types/helpers/component.helper.d.ts +13 -0
  648. package/build/types/helpers/label.helper.d.ts +12 -0
  649. package/build/types/hook.type.d.ts +36 -0
  650. package/build/types/link.type.d.ts +14 -0
  651. package/build/types/positioning.type.d.ts +38 -0
  652. package/build/types/theme/palette.d.ts +219 -0
  653. package/build/types/theme/tokens.d.ts +225 -0
  654. package/build/types/theme.type.d.ts +223 -0
  655. package/build/types/types/common-element-props.type.d.ts +8 -0
  656. package/build/types/types/link.type.d.ts +14 -0
  657. package/build/types/types/theme.type.d.ts +223 -0
  658. package/package.json +487 -4
@@ -0,0 +1,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,24 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("@handijit/utils"),d=require("../theme/tokens.cjs"),T="--ui-",c="ui-theme-overrides",l="data-ui-theme",u="data-ui-density",_="ui-theme-switching",h="ui",r="html:root",S=(t,e)=>{const n=t==="dark"?d.DARK_THEME:d.LIGHT_THEME,o=(t==="dark"?e==null?void 0:e.dark:e==null?void 0:e.light)??{};return{...n,...o}},m=t=>{const e=[],n=(s,E=" ")=>Object.entries(s).map(([$,p])=>`${E}${T}${$}: ${p};`).join(`
2
+ `),o=t.fonts??{},i=Object.entries(o).filter(([,s])=>!!s);i.length>0&&e.push(`${r} {
3
+ ${i.map(([s,E])=>` ${T}font-${s}: ${E};`).join(`
4
+ `)}
5
+ }`);const a=t.metrics??{};if(Object.keys(a).length>0){const s=n(a);e.push(`${r} {
6
+ ${s}
7
+ }`),e.push(`${r}[${u}='compact'] {
8
+ ${s}
9
+ }`)}if(t.light&&Object.keys(t.light).length>0){const s=n(t.light);e.push(`${r} {
10
+ ${s}
11
+ }`),e.push(`${r}[${l}='light'] {
12
+ ${s}
13
+ }`)}if(t.dark&&Object.keys(t.dark).length>0){const s=n(t.dark);e.push(`${r}[${l}='dark'] {
14
+ ${s}
15
+ }`),e.push(`@media (prefers-color-scheme: dark) {
16
+ ${r}:not([${l}]) {
17
+ ${n(t.dark," ")}
18
+ }
19
+ }`)}return e.length===0?"":`@layer ${h} {
20
+ ${e.join(`
21
+
22
+ `).replace(/^(?=.)/gm," ")}
23
+ }`},k=t=>t.replace(/<\/style/gi,"<\\/style"),I=t=>{if(!y.isClient())return;const e=t?m(t):"",n=document.getElementById(c);if(e===""){n==null||n.remove();return}const o=n??document.createElement("style");o.id=c,o.textContent=e,n||document.head.appendChild(o)},H=({storageKey:t})=>`(function(){try{var t=localStorage.getItem(${JSON.stringify(t)});if(t==="light"||t==="dark")document.documentElement.setAttribute("${l}",t)}catch(e){}})()`;exports.DENSITY_ATTRIBUTE=u;exports.THEME_ATTRIBUTE=l;exports.THEME_LAYER=h;exports.THEME_STYLE_ID=c;exports.THEME_SWITCHING_CLASS=_;exports.TOKEN_PREFIX=T;exports.applyThemeConfig=I;exports.buildThemeCss=m;exports.resolveTokens=S;exports.themeBootScript=H;exports.toStyleHtml=k;
24
+ //# sourceMappingURL=theme.helper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.helper.cjs","sources":["../../src/helpers/theme.helper.ts"],"sourcesContent":["import { isClient } from '@handijit/utils';\n\nimport { DARK_THEME, DEFAULT_FONTS, LIGHT_THEME } from '../theme/tokens';\nimport type { UiColorScheme, UiResolvedTokens, UiThemeConfig } from '@/types/theme.type';\n\n/** CSS özel özelliği öneki — `_tokens.generated.scss` ile aynı olmak zorunda. */\nexport const TOKEN_PREFIX = '--ui-';\n\n/** Ezme kurallarını taşıyan `<style>` etiketinin kimliği. */\nexport const THEME_STYLE_ID = 'ui-theme-overrides';\n\n/** Temanın taşındığı öznitelik. `<html data-ui-theme=\"dark\">`. */\nexport const THEME_ATTRIBUTE = 'data-ui-theme';\n\n/** Bilgi yoğunluğunun taşındığı öznitelik. `<html data-ui-density=\"compact\">`. */\nexport const DENSITY_ATTRIBUTE = 'data-ui-density';\n\n/** Geçiş animasyonlarını tek kare boyunca kapatan sınıf (bkz. `base.scss`). */\nexport const THEME_SWITCHING_CLASS = 'ui-theme-switching';\n\n/** Ezmelerin katmanı — `scripts/lib/postcss-ui-layer.mjs`in varsayılanıyla aynı olmak zorunda. */\nexport const THEME_LAYER = 'ui';\n\n/**\n * Ezme kurallarının kök seçicisi: `_tokens.generated.scss`teki karşılığından bir öğe (`html`) daha\n * özgül — (0,1,1) > (0,1,0), (0,2,1) > (0,2,0). Katman içinde ezme varsayılanı KAYNAK SIRASINDAN\n * bağımsız yener. Açık temanın `html:root`u (0,1,1) koyu varsayılanın `:root:not([…])`ına\n * (0,2,0) yenilir: açık ezme koyu temaya sızmaz.\n */\nconst THEME_ROOT = 'html:root';\n\n/** Verilen şemanın tam token eşlemesi — ezmeler uygulanmış hâliyle. */\nexport const resolveTokens = (scheme: UiColorScheme, config?: UiThemeConfig): UiResolvedTokens => {\n const base = scheme === 'dark' ? DARK_THEME : LIGHT_THEME;\n const overrides = (scheme === 'dark' ? config?.dark : config?.light) ?? {};\n\n return { ...base, ...overrides };\n};\n\n/**\n * Yapılandırmayı CSS metnine çevirir. Çıktının tamamı `@layer ui` içinde: tüketicinin katmansız\n * her kuralı ezmeyi özgüllükten ve sıradan bağımsız yener (README, \"CSS'imizi ezmek\").\n * ⚠ 5.6.2'ye kadar ezme katmansızdı: `:root:not([data-ui-theme])` (0,2,0) tüketicinin `<html>`e\n * yazdığı ezmeyi (`html:has(.panel)`, 0,1,1) hidrasyondan SONRA eziyordu — sunucu çiziminde\n * tüketicinin rengi, bir kare sonra temanınki (ölçüldü: panelin kırmızı sil düğmesi koyu temada\n * beyaza dönüyordu). Katmansız açık ezme koyu varsayılanı da yeniyor, koyu temaya sızıyordu.\n */\nexport const buildThemeCss = (config: UiThemeConfig): string => {\n const blocks: string[] = [];\n\n const declarations = (tokens: Record<string, string>, indent = ' ') =>\n Object.entries(tokens)\n .map(([name, value]) => `${indent}${TOKEN_PREFIX}${name}: ${value};`)\n .join('\\n');\n\n const fonts = config.fonts ?? {};\n const fontEntries = Object.entries(fonts).filter(([, value]) => Boolean(value)) as [\n keyof typeof DEFAULT_FONTS,\n string,\n ][];\n\n if (fontEntries.length > 0)\n blocks.push(\n `${THEME_ROOT} {\\n${fontEntries\n .map(([role, stack]) => ` ${TOKEN_PREFIX}font-${role}: ${stack};`)\n .join('\\n')}\\n}`,\n );\n\n /* OLCU EZMELERI TEMA BASINA DEGIL, TEK BLOKTA. */\n const metrics = config.metrics ?? {};\n\n if (Object.keys(metrics).length > 0) {\n const body = declarations(metrics as Record<string, string>);\n blocks.push(`${THEME_ROOT} {\\n${body}\\n}`);\n blocks.push(`${THEME_ROOT}[${DENSITY_ATTRIBUTE}='compact'] {\\n${body}\\n}`);\n }\n\n /*\n * Acik tema iki secicide birden yazilir: `html:root` (varsayilan) ve\n * `html:root[data-ui-theme='light']` (kullanicinin acik secimi).\n */\n if (config.light && Object.keys(config.light).length > 0) {\n const body = declarations(config.light);\n blocks.push(`${THEME_ROOT} {\\n${body}\\n}`);\n blocks.push(`${THEME_ROOT}[${THEME_ATTRIBUTE}='light'] {\\n${body}\\n}`);\n }\n\n if (config.dark && Object.keys(config.dark).length > 0) {\n const body = declarations(config.dark);\n blocks.push(`${THEME_ROOT}[${THEME_ATTRIBUTE}='dark'] {\\n${body}\\n}`);\n blocks.push(\n `@media (prefers-color-scheme: dark) {\\n ${THEME_ROOT}:not([${THEME_ATTRIBUTE}]) {\\n${declarations(\n config.dark,\n ' ',\n )}\\n }\\n}`,\n );\n }\n\n if (blocks.length === 0) return '';\n\n return `@layer ${THEME_LAYER} {\\n${blocks.join('\\n\\n').replace(/^(?=.)/gm, ' ')}\\n}`;\n};\n\n/**\n * `<style>` içine HTML olarak yazılacak CSS: `</style` dizisi etiketi kapatamaz. Değerler\n * yapılandırmadan (kiracının veritabanındaki marka rengi) gelebilir; `\\/` CSS'te `/` demek.\n */\nexport const toStyleHtml = (css: string): string => css.replace(/<\\/style/gi, '<\\\\/style');\n\n/**\n * Ezmeleri `<head>`in sonuna yazar — React dışındaki yol (`initUi`); sağlayıcı ezmeyi ağaçta\n * çizer.\n * ⚠ Stil sayfalarından SONRA çağrılmalı: `@layer ui` belgede ilk kez burada görülürse katman\n * sırası buradan kurulur ve tüketicinin sonra gelen `@layer reset, ui;` bildirimi `reset`i\n * `ui`nin üstüne koyar.\n */\nexport const applyThemeConfig = (config: UiThemeConfig | undefined): void => {\n if (!isClient()) return;\n\n const css = config ? buildThemeCss(config) : '';\n const existing = document.getElementById(THEME_STYLE_ID);\n\n if (css === '') {\n existing?.remove();\n return;\n }\n\n const element = existing ?? document.createElement('style');\n element.id = THEME_STYLE_ID;\n element.textContent = css;\n\n if (!existing) document.head.appendChild(element);\n};\n\n/**\n * İLK BOYAMADAN ÖNCE çalışacak tema betiği — `<head>` içine, React ağacından ÖNCE.\n * Kayıtlı açık seçimi (`light` / `dark`) `<html data-ui-theme>`e yazar; kayıt yoksa öznitelik\n * yazılmaz ve sistem tercihi izlenir.\n * ⚠ React ağacına konamaz: sağlayıcı ağaç monte olduktan sonra çalışıyor ve koyu tema seçmiş\n * kullanıcı o ana kadar bir kare beyaz ekran görüyordu. İki tüketici bu betiği ELLE yazıyordu.\n * ⚠ Depolama okunamazsa (gizli pencere, engellenmiş site verisi) sessizce sistem tercihine düşer.\n * @example <script dangerouslySetInnerHTML={{ __html: themeBootScript({ storageKey: 'theme' }) }} />\n */\nexport const themeBootScript = ({ storageKey }: { storageKey: string }): string =>\n `(function(){try{var t=localStorage.getItem(${JSON.stringify(storageKey)});` +\n `if(t===\"light\"||t===\"dark\")document.documentElement.setAttribute(\"${THEME_ATTRIBUTE}\",t)}` +\n `catch(e){}})()`;\n"],"names":["TOKEN_PREFIX","THEME_STYLE_ID","THEME_ATTRIBUTE","DENSITY_ATTRIBUTE","THEME_SWITCHING_CLASS","THEME_LAYER","THEME_ROOT","resolveTokens","scheme","config","base","DARK_THEME","LIGHT_THEME","overrides","buildThemeCss","blocks","declarations","tokens","indent","name","value","fonts","fontEntries","role","stack","metrics","body","toStyleHtml","css","applyThemeConfig","isClient","existing","element","themeBootScript","storageKey"],"mappings":"oJAMaA,EAAe,QAGfC,EAAiB,qBAGjBC,EAAkB,gBAGlBC,EAAoB,kBAGpBC,EAAwB,qBAGxBC,EAAc,KAQrBC,EAAa,YAGNC,EAAgB,CAACC,EAAuBC,IAA6C,CAChG,MAAMC,EAAOF,IAAW,OAASG,EAAAA,WAAaC,EAAAA,YACxCC,GAAaL,IAAW,OAASC,GAAA,YAAAA,EAAQ,KAAOA,GAAA,YAAAA,EAAQ,QAAU,CAAA,EAExE,MAAO,CAAE,GAAGC,EAAM,GAAGG,CAAA,CACvB,EAUaC,EAAiBL,GAAkC,CAC9D,MAAMM,EAAmB,CAAA,EAEnBC,EAAe,CAACC,EAAgCC,EAAS,OAC7D,OAAO,QAAQD,CAAM,EAClB,IAAI,CAAC,CAACE,EAAMC,CAAK,IAAM,GAAGF,CAAM,GAAGlB,CAAY,GAAGmB,CAAI,KAAKC,CAAK,GAAG,EACnE,KAAK;AAAA,CAAI,EAERC,EAAQZ,EAAO,OAAS,CAAA,EACxBa,EAAc,OAAO,QAAQD,CAAK,EAAE,OAAO,CAAC,EAAGD,CAAK,IAAM,EAAQA,CAAM,EAK1EE,EAAY,OAAS,GACvBP,EAAO,KACL,GAAGT,CAAU;AAAA,EAAOgB,EACjB,IAAI,CAAC,CAACC,EAAMC,CAAK,IAAM,KAAKxB,CAAY,QAAQuB,CAAI,KAAKC,CAAK,GAAG,EACjE,KAAK;AAAA,CAAI,CAAC;AAAA,EAAA,EAIjB,MAAMC,EAAUhB,EAAO,SAAW,CAAA,EAElC,GAAI,OAAO,KAAKgB,CAAO,EAAE,OAAS,EAAG,CACnC,MAAMC,EAAOV,EAAaS,CAAiC,EAC3DV,EAAO,KAAK,GAAGT,CAAU;AAAA,EAAOoB,CAAI;AAAA,EAAK,EACzCX,EAAO,KAAK,GAAGT,CAAU,IAAIH,CAAiB;AAAA,EAAkBuB,CAAI;AAAA,EAAK,CAC3E,CAMA,GAAIjB,EAAO,OAAS,OAAO,KAAKA,EAAO,KAAK,EAAE,OAAS,EAAG,CACxD,MAAMiB,EAAOV,EAAaP,EAAO,KAAK,EACtCM,EAAO,KAAK,GAAGT,CAAU;AAAA,EAAOoB,CAAI;AAAA,EAAK,EACzCX,EAAO,KAAK,GAAGT,CAAU,IAAIJ,CAAe;AAAA,EAAgBwB,CAAI;AAAA,EAAK,CACvE,CAEA,GAAIjB,EAAO,MAAQ,OAAO,KAAKA,EAAO,IAAI,EAAE,OAAS,EAAG,CACtD,MAAMiB,EAAOV,EAAaP,EAAO,IAAI,EACrCM,EAAO,KAAK,GAAGT,CAAU,IAAIJ,CAAe;AAAA,EAAewB,CAAI;AAAA,EAAK,EACpEX,EAAO,KACL;AAAA,IAA4CT,CAAU,SAASJ,CAAe;AAAA,EAASc,EACrFP,EAAO,KACP,MAAA,CACD;AAAA;AAAA,EAAA,CAEL,CAEA,OAAIM,EAAO,SAAW,EAAU,GAEzB,UAAUV,CAAW;AAAA,EAAOU,EAAO,KAAK;AAAA;AAAA,CAAM,EAAE,QAAQ,WAAY,IAAI,CAAC;AAAA,EAClF,EAMaY,EAAeC,GAAwBA,EAAI,QAAQ,aAAc,WAAW,EAS5EC,EAAoBpB,GAA4C,CAC3E,GAAI,CAACqB,EAAAA,WAAY,OAEjB,MAAMF,EAAMnB,EAASK,EAAcL,CAAM,EAAI,GACvCsB,EAAW,SAAS,eAAe9B,CAAc,EAEvD,GAAI2B,IAAQ,GAAI,CACdG,GAAA,MAAAA,EAAU,SACV,MACF,CAEA,MAAMC,EAAUD,GAAY,SAAS,cAAc,OAAO,EAC1DC,EAAQ,GAAK/B,EACb+B,EAAQ,YAAcJ,EAEjBG,GAAU,SAAS,KAAK,YAAYC,CAAO,CAClD,EAWaC,EAAkB,CAAC,CAAE,WAAAC,CAAA,IAChC,8CAA8C,KAAK,UAAUA,CAAU,CAAC,uEACHhC,CAAe"}
@@ -0,0 +1,49 @@
1
+ import { UiColorScheme, UiResolvedTokens, UiThemeConfig } from '../types/theme.type';
2
+ /** CSS özel özelliği öneki — `_tokens.generated.scss` ile aynı olmak zorunda. */
3
+ export declare const TOKEN_PREFIX = "--ui-";
4
+ /** Ezme kurallarını taşıyan `<style>` etiketinin kimliği. */
5
+ export declare const THEME_STYLE_ID = "ui-theme-overrides";
6
+ /** Temanın taşındığı öznitelik. `<html data-ui-theme="dark">`. */
7
+ export declare const THEME_ATTRIBUTE = "data-ui-theme";
8
+ /** Bilgi yoğunluğunun taşındığı öznitelik. `<html data-ui-density="compact">`. */
9
+ export declare const DENSITY_ATTRIBUTE = "data-ui-density";
10
+ /** Geçiş animasyonlarını tek kare boyunca kapatan sınıf (bkz. `base.scss`). */
11
+ export declare const THEME_SWITCHING_CLASS = "ui-theme-switching";
12
+ /** Ezmelerin katmanı — `scripts/lib/postcss-ui-layer.mjs`in varsayılanıyla aynı olmak zorunda. */
13
+ export declare const THEME_LAYER = "ui";
14
+ /** Verilen şemanın tam token eşlemesi — ezmeler uygulanmış hâliyle. */
15
+ export declare const resolveTokens: (scheme: UiColorScheme, config?: UiThemeConfig) => UiResolvedTokens;
16
+ /**
17
+ * Yapılandırmayı CSS metnine çevirir. Çıktının tamamı `@layer ui` içinde: tüketicinin katmansız
18
+ * her kuralı ezmeyi özgüllükten ve sıradan bağımsız yener (README, "CSS'imizi ezmek").
19
+ * ⚠ 5.6.2'ye kadar ezme katmansızdı: `:root:not([data-ui-theme])` (0,2,0) tüketicinin `<html>`e
20
+ * yazdığı ezmeyi (`html:has(.panel)`, 0,1,1) hidrasyondan SONRA eziyordu — sunucu çiziminde
21
+ * tüketicinin rengi, bir kare sonra temanınki (ölçüldü: panelin kırmızı sil düğmesi koyu temada
22
+ * beyaza dönüyordu). Katmansız açık ezme koyu varsayılanı da yeniyor, koyu temaya sızıyordu.
23
+ */
24
+ export declare const buildThemeCss: (config: UiThemeConfig) => string;
25
+ /**
26
+ * `<style>` içine HTML olarak yazılacak CSS: `</style` dizisi etiketi kapatamaz. Değerler
27
+ * yapılandırmadan (kiracının veritabanındaki marka rengi) gelebilir; `\/` CSS'te `/` demek.
28
+ */
29
+ export declare const toStyleHtml: (css: string) => string;
30
+ /**
31
+ * Ezmeleri `<head>`in sonuna yazar — React dışındaki yol (`initUi`); sağlayıcı ezmeyi ağaçta
32
+ * çizer.
33
+ * ⚠ Stil sayfalarından SONRA çağrılmalı: `@layer ui` belgede ilk kez burada görülürse katman
34
+ * sırası buradan kurulur ve tüketicinin sonra gelen `@layer reset, ui;` bildirimi `reset`i
35
+ * `ui`nin üstüne koyar.
36
+ */
37
+ export declare const applyThemeConfig: (config: UiThemeConfig | undefined) => void;
38
+ /**
39
+ * İLK BOYAMADAN ÖNCE çalışacak tema betiği — `<head>` içine, React ağacından ÖNCE.
40
+ * Kayıtlı açık seçimi (`light` / `dark`) `<html data-ui-theme>`e yazar; kayıt yoksa öznitelik
41
+ * yazılmaz ve sistem tercihi izlenir.
42
+ * ⚠ React ağacına konamaz: sağlayıcı ağaç monte olduktan sonra çalışıyor ve koyu tema seçmiş
43
+ * kullanıcı o ana kadar bir kare beyaz ekran görüyordu. İki tüketici bu betiği ELLE yazıyordu.
44
+ * ⚠ Depolama okunamazsa (gizli pencere, engellenmiş site verisi) sessizce sistem tercihine düşer.
45
+ * @example <script dangerouslySetInnerHTML={{ __html: themeBootScript({ storageKey: 'theme' }) }} />
46
+ */
47
+ export declare const themeBootScript: ({ storageKey }: {
48
+ storageKey: string;
49
+ }) => string;
@@ -0,0 +1,75 @@
1
+ import { isClient as u } from "@handijit/utils";
2
+ import { DARK_THEME as E, LIGHT_THEME as T } from "../theme/tokens.js";
3
+ const i = "--ui-", m = "ui-theme-overrides", l = "data-ui-theme", p = "data-ui-density", H = "ui-theme-switching", y = "ui", o = "html:root", I = (t, e) => {
4
+ const n = t === "dark" ? E : T, r = (t === "dark" ? e == null ? void 0 : e.dark : e == null ? void 0 : e.light) ?? {};
5
+ return { ...n, ...r };
6
+ }, k = (t) => {
7
+ const e = [], n = (s, c = " ") => Object.entries(s).map(([h, $]) => `${c}${i}${h}: ${$};`).join(`
8
+ `), r = t.fonts ?? {}, a = Object.entries(r).filter(([, s]) => !!s);
9
+ a.length > 0 && e.push(
10
+ `${o} {
11
+ ${a.map(([s, c]) => ` ${i}font-${s}: ${c};`).join(`
12
+ `)}
13
+ }`
14
+ );
15
+ const d = t.metrics ?? {};
16
+ if (Object.keys(d).length > 0) {
17
+ const s = n(d);
18
+ e.push(`${o} {
19
+ ${s}
20
+ }`), e.push(`${o}[${p}='compact'] {
21
+ ${s}
22
+ }`);
23
+ }
24
+ if (t.light && Object.keys(t.light).length > 0) {
25
+ const s = n(t.light);
26
+ e.push(`${o} {
27
+ ${s}
28
+ }`), e.push(`${o}[${l}='light'] {
29
+ ${s}
30
+ }`);
31
+ }
32
+ if (t.dark && Object.keys(t.dark).length > 0) {
33
+ const s = n(t.dark);
34
+ e.push(`${o}[${l}='dark'] {
35
+ ${s}
36
+ }`), e.push(
37
+ `@media (prefers-color-scheme: dark) {
38
+ ${o}:not([${l}]) {
39
+ ${n(
40
+ t.dark,
41
+ " "
42
+ )}
43
+ }
44
+ }`
45
+ );
46
+ }
47
+ return e.length === 0 ? "" : `@layer ${y} {
48
+ ${e.join(`
49
+
50
+ `).replace(/^(?=.)/gm, " ")}
51
+ }`;
52
+ }, O = (t) => t.replace(/<\/style/gi, "<\\/style"), S = (t) => {
53
+ if (!u()) return;
54
+ const e = t ? k(t) : "", n = document.getElementById(m);
55
+ if (e === "") {
56
+ n == null || n.remove();
57
+ return;
58
+ }
59
+ const r = n ?? document.createElement("style");
60
+ r.id = m, r.textContent = e, n || document.head.appendChild(r);
61
+ }, j = ({ storageKey: t }) => `(function(){try{var t=localStorage.getItem(${JSON.stringify(t)});if(t==="light"||t==="dark")document.documentElement.setAttribute("${l}",t)}catch(e){}})()`;
62
+ export {
63
+ p as DENSITY_ATTRIBUTE,
64
+ l as THEME_ATTRIBUTE,
65
+ y as THEME_LAYER,
66
+ m as THEME_STYLE_ID,
67
+ H as THEME_SWITCHING_CLASS,
68
+ i as TOKEN_PREFIX,
69
+ S as applyThemeConfig,
70
+ k as buildThemeCss,
71
+ I as resolveTokens,
72
+ j as themeBootScript,
73
+ O as toStyleHtml
74
+ };
75
+ //# sourceMappingURL=theme.helper.js.map