@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,24 @@
1
+ import { ReactNode } from 'react';
2
+ export type SegmentOption<T extends string = string> = {
3
+ value: T;
4
+ label: string;
5
+ /** Yalnızca ikon gösterilecekse `label` erişilebilir ad olarak kalır. */
6
+ icon?: ReactNode;
7
+ isDisabled?: boolean;
8
+ };
9
+ type Props<T extends string> = {
10
+ options: SegmentOption<T>[];
11
+ value: T;
12
+ onChange: (value: T) => void;
13
+ /** Grubun erişilebilir adı ("Görünüm"). */
14
+ label: string;
15
+ /** Etiketler gizlenir, yalnızca ikon çizilir. `label` yine okunur. */
16
+ isIconOnly?: boolean;
17
+ size?: 'sm' | 'md';
18
+ className?: string;
19
+ testId?: string;
20
+ };
21
+ /** Bölmeli denetim — görünüm değiştirme. */
22
+ declare const SegmentedControl: <T extends string>({ options, value, onChange, label, isIconOnly, size, className, testId, }: Props<T>) => import("react").JSX.Element;
23
+ declare const _default: typeof SegmentedControl;
24
+ export default _default;
@@ -0,0 +1,69 @@
1
+ "use client";
2
+ import { jsx as s, jsxs as w } from "react/jsx-runtime";
3
+ import { memo as k, useRef as D } from "react";
4
+ import { cx as b } from "../../helpers/class-name.helper.js";
5
+ import { named as p } from "../../helpers/component.helper.js";
6
+ const l = {"segmented":"ui-segmented-qo2Bw","segmented--sm":"ui-segmented--sm-7tUry","segmented--md":"ui-segmented--md-PiSqt","segmented__item":"ui-segmented__item-mqRNZ","segmented__item--selected":"ui-segmented__item--selected-r7CLj","segmented__icon":"ui-segmented__icon-C9CT-","segmented__label":"ui-segmented__label-NVXBv"};
7
+ const S = ({
8
+ options: n,
9
+ value: d,
10
+ onChange: c,
11
+ label: g,
12
+ isIconOnly: i,
13
+ size: h = "md",
14
+ className: v,
15
+ testId: x
16
+ }) => {
17
+ const m = D(null), y = (e) => {
18
+ var u, f;
19
+ const r = e.key === "ArrowRight" || e.key === "ArrowDown" ? 1 : e.key === "ArrowLeft" || e.key === "ArrowUp" ? -1 : 0;
20
+ if (r === 0) return;
21
+ e.preventDefault();
22
+ const t = n.filter((a) => !a.isDisabled);
23
+ if (t.length === 0) return;
24
+ const _ = t.findIndex((a) => a.value === d), o = t[(_ + r + t.length) % t.length];
25
+ c(o.value), (f = (u = m.current) == null ? void 0 : u.querySelector(`[data-value="${o.value}"]`)) == null || f.focus({ preventScroll: !0 });
26
+ };
27
+ return /* @__PURE__ */ s(
28
+ "div",
29
+ {
30
+ ref: m,
31
+ role: "radiogroup",
32
+ "aria-label": g,
33
+ className: b(l.segmented, l[`segmented--${h}`], v),
34
+ "data-testid": x,
35
+ onKeyDown: y,
36
+ children: n.map((e) => {
37
+ const r = e.value === d;
38
+ return /* @__PURE__ */ w(
39
+ "button",
40
+ {
41
+ type: "button",
42
+ role: "radio",
43
+ "aria-checked": r,
44
+ "aria-label": i ? e.label : void 0,
45
+ "data-value": e.value,
46
+ disabled: e.isDisabled,
47
+ tabIndex: r ? 0 : -1,
48
+ className: b(
49
+ l.segmented__item,
50
+ r && l["segmented__item--selected"]
51
+ ),
52
+ onClick: () => !r && c(e.value),
53
+ children: [
54
+ e.icon && /* @__PURE__ */ s("span", { className: l.segmented__icon, "aria-hidden": !0, children: e.icon }),
55
+ !i && /* @__PURE__ */ s("span", { className: l.segmented__label, children: e.label })
56
+ ]
57
+ },
58
+ e.value
59
+ );
60
+ })
61
+ }
62
+ );
63
+ }, K = /* @__PURE__ */ k(
64
+ /* @__PURE__ */ p(S, "SegmentedControl")
65
+ );
66
+ export {
67
+ K as default
68
+ };
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/SegmentedControl/index.tsx"],"sourcesContent":["'use client';\n\nimport { type KeyboardEvent, memo, type ReactNode, useRef } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\nexport type SegmentOption<T extends string = string> = {\n value: T;\n label: string;\n /** Yalnızca ikon gösterilecekse `label` erişilebilir ad olarak kalır. */\n icon?: ReactNode;\n isDisabled?: boolean;\n};\n\ntype Props<T extends string> = {\n options: SegmentOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Grubun erişilebilir adı (\"Görünüm\"). */\n label: string;\n /** Etiketler gizlenir, yalnızca ikon çizilir. `label` yine okunur. */\n isIconOnly?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n testId?: string;\n};\n\n/** Bölmeli denetim — görünüm değiştirme. */\nconst SegmentedControl = <T extends string>({\n options,\n value,\n onChange,\n label,\n isIconOnly,\n size = 'md',\n className,\n testId,\n}: Props<T>) => {\n const listRef = useRef<HTMLDivElement>(null);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offset =\n event.key === 'ArrowRight' || event.key === 'ArrowDown'\n ? 1\n : event.key === 'ArrowLeft' || event.key === 'ArrowUp'\n ? -1\n : 0;\n\n if (offset === 0) return;\n event.preventDefault();\n\n const enabled = options.filter(option => !option.isDisabled);\n if (enabled.length === 0) return;\n\n const current = enabled.findIndex(option => option.value === value);\n const next = enabled[(current + offset + enabled.length) % enabled.length];\n\n onChange(next.value);\n listRef.current\n ?.querySelector<HTMLButtonElement>(`[data-value=\"${next.value}\"]`)\n ?.focus({ preventScroll: true });\n };\n\n return (\n <div\n ref={listRef}\n role=\"radiogroup\"\n aria-label={label}\n className={cx(styles.segmented, styles[`segmented--${size}`], className)}\n data-testid={testId}\n onKeyDown={handleKeyDown}\n >\n {options.map(option => {\n const isSelected = option.value === value;\n\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n aria-label={isIconOnly ? option.label : undefined}\n data-value={option.value}\n disabled={option.isDisabled}\n /* Donen `tabindex`: grup Tab sirasinda TEK durak. */\n tabIndex={isSelected ? 0 : -1}\n className={cx(\n styles.segmented__item,\n isSelected && styles['segmented__item--selected'],\n )}\n /*\n * Secili ogeye ikinci kez basmak HICBIR SEY yapmaz: gorunum anahtarinda \"hicbiri\" diye\n * bir hal yok. `ChipGroup`ta ayni hareket secimi kaldiriyor ve iki…\n */\n onClick={() => !isSelected && onChange(option.value)}\n >\n {option.icon && (\n <span className={styles.segmented__icon} aria-hidden>\n {option.icon}\n </span>\n )}\n {!isIconOnly && <span className={styles.segmented__label}>{option.label}</span>}\n </button>\n );\n })}\n </div>\n );\n};\n\nexport default /*#__PURE__*/ memo(\n /*#__PURE__*/ named(SegmentedControl, 'SegmentedControl'),\n) as typeof SegmentedControl;\n"],"names":["SegmentedControl","options","value","onChange","label","isIconOnly","size","className","testId","listRef","useRef","handleKeyDown","event","offset","enabled","option","current","next","_b","_a","jsx","cx","styles","isSelected","jsxs","index","memo","named"],"mappings":";;;;;;AA8BA,MAAMA,IAAmB,CAAmB;AAAA,EAC1C,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,QAAAC;AACF,MAAgB;AACd,QAAMC,IAAUC,EAAuB,IAAI,GAErCC,IAAgB,CAACC,MAAyC;;AAC9D,UAAMC,IACJD,EAAM,QAAQ,gBAAgBA,EAAM,QAAQ,cACxC,IACAA,EAAM,QAAQ,eAAeA,EAAM,QAAQ,YACzC,KACA;AAER,QAAIC,MAAW,EAAG;AAClB,IAAAD,EAAM,eAAA;AAEN,UAAME,IAAUb,EAAQ,OAAO,CAAAc,MAAU,CAACA,EAAO,UAAU;AAC3D,QAAID,EAAQ,WAAW,EAAG;AAE1B,UAAME,IAAUF,EAAQ,UAAU,CAAAC,MAAUA,EAAO,UAAUb,CAAK,GAC5De,IAAOH,GAASE,IAAUH,IAASC,EAAQ,UAAUA,EAAQ,MAAM;AAEzE,IAAAX,EAASc,EAAK,KAAK,IACnBC,KAAAC,IAAAV,EAAQ,YAAR,gBAAAU,EACI,cAAiC,gBAAgBF,EAAK,KAAK,UAD/D,QAAAC,EAEI,MAAM,EAAE,eAAe,GAAA;AAAA,EAC7B;AAEA,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKX;AAAA,MACL,MAAK;AAAA,MACL,cAAYL;AAAA,MACZ,WAAWiB,EAAGC,EAAO,WAAWA,EAAO,cAAchB,CAAI,EAAE,GAAGC,CAAS;AAAA,MACvE,eAAaC;AAAA,MACb,WAAWG;AAAA,MAEV,UAAAV,EAAQ,IAAI,CAAAc,MAAU;AACrB,cAAMQ,IAAaR,EAAO,UAAUb;AAEpC,eACE,gBAAAsB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,MAAK;AAAA,YACL,MAAK;AAAA,YACL,gBAAcD;AAAA,YACd,cAAYlB,IAAaU,EAAO,QAAQ;AAAA,YACxC,cAAYA,EAAO;AAAA,YACnB,UAAUA,EAAO;AAAA,YAEjB,UAAUQ,IAAa,IAAI;AAAA,YAC3B,WAAWF;AAAA,cACTC,EAAO;AAAA,cACPC,KAAcD,EAAO,2BAA2B;AAAA,YAAA;AAAA,YAMlD,SAAS,MAAM,CAACC,KAAcpB,EAASY,EAAO,KAAK;AAAA,YAElD,UAAA;AAAA,cAAAA,EAAO,0BACL,QAAA,EAAK,WAAWO,EAAO,iBAAiB,eAAW,IACjD,UAAAP,EAAO,KAAA,CACV;AAAA,cAED,CAACV,KAAc,gBAAAe,EAAC,QAAA,EAAK,WAAWE,EAAO,kBAAmB,YAAO,MAAA,CAAM;AAAA,YAAA;AAAA,UAAA;AAAA,UAxBnEP,EAAO;AAAA,QAAA;AAAA,MA2BlB,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP,GAEAU,IAA6B,gBAAAC;AAAA,EACb,gBAAAC,EAAM3B,GAAkB,kBAAkB;AAC1D;"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-segmented-qo2Bw{display:inline-flex;padding:3px;border-radius:var(--ui-radius-md);background-color:var(--ui-surface-2);border:1px solid var(--ui-border)}.ui-segmented--sm-7tUry{font-size:var(--ui-font-size-xs)}.ui-segmented--md-PiSqt{font-size:var(--ui-font-size-sm)}.ui-segmented__item-mqRNZ{display:flex;align-items:center;gap:var(--ui-space-2);position:relative}.ui-segmented__item-mqRNZ:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-segmented__item-mqRNZ{justify-content:center;min-width:0;padding:var(--ui-space-2) var(--ui-space-3);border:none;border-radius:calc(var(--ui-radius-md) - 3px);background:none;cursor:pointer;font-family:var(--ui-font-body);font-size:inherit;font-weight:500;color:var(--ui-text-2);white-space:nowrap;transition:background-color var(--ui-duration-fast) var(--ui-ease-out),color var(--ui-duration-fast) var(--ui-ease-out)}.ui-segmented--sm-7tUry .ui-segmented__item-mqRNZ{padding:var(--ui-space-1) var(--ui-space-2)}.ui-segmented__item-mqRNZ:hover:not(:disabled):not(.ui-segmented__item--selected-r7CLj){color:var(--ui-text)}.ui-segmented__item-mqRNZ:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, -1px)}.ui-segmented__item--selected-r7CLj{background-color:var(--ui-surface);color:var(--ui-text);box-shadow:var(--ui-shadow-xs)}.ui-segmented__item-mqRNZ:disabled{color:var(--ui-text-3);cursor:not-allowed}@media (prefers-reduced-motion: reduce){.ui-segmented__item-mqRNZ{transition:none}}.ui-segmented__icon-C9CT-{display:inline-flex;flex-shrink:0;font-size:var(--ui-icon-sm)}.ui-segmented__label-NVXBv{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),n=require("react"),X=require("react-dom"),A=require("react-bootstrap-icons"),Z=require("../../hooks/useListboxNavigation.cjs"),ee=require("../../hooks/usePortalSurface.cjs"),te=require("../../hooks/usePositioning.cjs"),re=require("../../constants/breakpoint.constants.cjs"),m=require("../../helpers/class-name.helper.cjs"),ne=require("../../helpers/label.helper.cjs"),ae=require("../../theme/context.cjs"),se=require("../BottomSheet/index.cjs"),t={default:{"select":"ui-select-tiiPL","trigger":"ui-trigger-rHQJz","trigger--empty":"ui-trigger--empty-cuinb","trigger--open":"ui-trigger--open-1nsvu","trigger--invalid":"ui-trigger--invalid-NtP0W","trigger--sm":"ui-trigger--sm-Xnu1C","trigger__icon":"ui-trigger__icon-apCcx","trigger__srName":"ui-trigger__srName-XLCxt","trigger__value":"ui-trigger__value-ioH7K","trigger__chevron":"ui-trigger__chevron-FtsIZ","trigger__chevron--open":"ui-trigger__chevron--open-1P2P-","panel":"ui-panel-rGOOd","list":"ui-list-SOKf8","list--sheet":"ui-list--sheet-BIjCb","option":"ui-option-ZDPef","option--active":"ui-option--active-R4lLF","option--selected":"ui-option--selected-glQMj","option--disabled":"ui-option--disabled-h4rdd","option__label":"ui-option__label-SsoYB","option__check":"ui-option__check-8CPSG"}},ie=({options:l,value:w,onChange:S,label:_,placeholder:B,closeLabel:K,icon:I,size:U="md",align:T="start",isDisabled:y,id:W,className:F,testId:Q,required:V,"aria-describedby":Y,"aria-invalid":E})=>{const{labels:d}=ae.useUi(),z=ne.resolveLabel("Select.placeholder",B,d==null?void 0:d.selectPlaceholder),G=n.useId(),o=W??G,R=`${o}-listbox`,j=e=>`${o}-option-${e}`,D=n.useRef(null),h=n.useRef(null),g=n.useRef(null),[s,$]=n.useState(null),q=te.default(h,g,{side:"bottom",align:T,isOpen:s==="popover"}),x=ee.default(s==="popover",h,g),i=s!==null,b=l.findIndex(e=>e.value===w),p=b>=0?l[b]:null,u=n.useCallback(()=>$(null),[]),C=n.useCallback(()=>{y||l.length===0||$(window.matchMedia(re.ABOVE_MOBILE_MEDIA_QUERY).matches?"popover":"sheet")},[y,l.length]),k=e=>{e.isDisabled||(S(e.value),u())},L=n.useRef(!1);n.useEffect(()=>{var e;L.current&&!i&&((e=h.current)==null||e.focus()),L.current=i},[i]),n.useEffect(()=>{if(s!=="popover")return;const e=a=>{var f,P;const c=a.target;(f=D.current)!=null&&f.contains(c)||(P=g.current)!=null&&P.contains(c)||u()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[s,u]);const{activeIndex:v,setActiveIndex:H,listRef:N,handleKeyDown:J}=Z.default({count:l.length,isOpen:i,initialIndex:b>=0?b:0,onSelect:e=>{const a=l[e];a&&k(a)},onClose:u});n.useEffect(()=>{var e;s==="sheet"&&((e=N.current)==null||e.focus({preventScroll:!0}))},[s,N]);const M=e=>{if(!i){["ArrowDown","ArrowUp","Enter"," "].includes(e.key)&&(e.preventDefault(),C());return}J(e)},O=e=>r.jsx("ul",{ref:N,id:R,role:"listbox","aria-label":_,"aria-activedescendant":e&&l[v]?j(v):void 0,tabIndex:e?0:-1,className:m.cx(t.default.list,e&&t.default["list--sheet"]),onKeyDown:e?M:void 0,children:l.map((a,c)=>{const f=a.value===w;return r.jsxs("li",{id:j(c),role:"option","data-index":c,"aria-selected":f,"aria-disabled":a.isDisabled,className:m.cx(t.default.option,c===v&&t.default["option--active"],f&&t.default["option--selected"],a.isDisabled&&t.default["option--disabled"]),onMouseEnter:()=>H(c),onClick:()=>k(a),children:[r.jsx("span",{className:t.default.option__label,children:a.label}),f&&r.jsx(A.CheckLg,{"aria-hidden":!0,className:t.default.option__check})]},a.value)})});return r.jsxs("span",{ref:D,className:m.cx(t.default.select,F),"data-testid":Q,children:[r.jsxs("button",{ref:h,id:o,type:"button",role:"combobox",className:m.cx(t.default.trigger,t.default[`trigger--${U}`],!p&&t.default["trigger--empty"],i&&t.default["trigger--open"],E&&t.default["trigger--invalid"]),disabled:y,"aria-haspopup":"listbox","aria-expanded":i,"aria-controls":i?R:void 0,"aria-activedescendant":s==="popover"&&l[v]?j(v):void 0,"aria-labelledby":p?`${o}-name ${o}-value`:`${o}-name`,"aria-describedby":Y,"aria-invalid":E,"aria-required":V||void 0,onClick:()=>i?u():C(),onKeyDown:M,children:[I&&r.jsx("span",{className:t.default.trigger__icon,"aria-hidden":!0,children:I}),r.jsx("span",{id:`${o}-name`,className:t.default.trigger__srName,children:_}),r.jsx("span",{id:`${o}-value`,className:t.default.trigger__value,children:(p==null?void 0:p.label)??z}),r.jsx(A.CaretDownFill,{"aria-hidden":!0,className:m.cx(t.default.trigger__chevron,i&&t.default["trigger__chevron--open"])})]}),s==="popover"&&x.container&&X.createPortal(r.jsx("div",{ref:g,className:t.default.panel,...x.attributes,style:{...q.style,...x.style,minWidth:q.anchorWidth||void 0,visibility:q.isPositioned?void 0:"hidden"},children:O(!1)}),x.container),s==="sheet"&&r.jsx(se.default,{title:_,closeLabel:K??(d==null?void 0:d.close),onClose:u,children:O(!0)})]})},le=n.memo(ie);exports.default=le;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Select/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type KeyboardEvent,\n memo,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { CaretDownFill, CheckLg } from 'react-bootstrap-icons';\n\nimport useListboxNavigation from '../../hooks/useListboxNavigation';\nimport usePortalSurface from '../../hooks/usePortalSurface';\nimport usePositioning from '../../hooks/usePositioning';\n\nimport { ABOVE_MOBILE_MEDIA_QUERY } from '../../constants/breakpoint.constants';\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport BottomSheet from '../BottomSheet';\n\nimport styles from './index.module.scss';\n\nexport type SelectOption<T extends string = string> = {\n value: T;\n label: string;\n isDisabled?: boolean;\n};\n\n/** Seçenek listesinin nerede açıldığı. */\ntype OpenMode = 'popover' | 'sheet';\n\ntype Props<T extends string> = {\n options: SelectOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Alanın adı. */\n label: string;\n /** Seçim yokken tetikleyicide görünen metin. */\n placeholder?: string;\n /** Alt sayfanın kapatma düğmesinin erişilebilir adı. */\n closeLabel?: string;\n /** Tetikleyicinin solundaki ikon. */\n icon?: ReactNode;\n /** `sm` yoğun şeritler içindir (araç çubuğu); varsayılan form ölçüsü `md`. */\n size?: 'sm' | 'md';\n /** Panelin hangi kenardan hizalanacağı. */\n align?: 'start' | 'end';\n isDisabled?: boolean;\n id?: string;\n /**\n * Zorunluluk — `Field`in `FieldChildProps` sözleşmesinden gelir.\n * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan sessizce buharlaşır.\n * `required` bir dönem tam olarak öyleydi: `<Field…\n */\n required?: boolean;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Seçim kutusu. */\nconst Select = <T extends string>({\n options,\n value,\n onChange,\n label,\n placeholder,\n closeLabel,\n icon,\n size = 'md',\n align = 'start',\n isDisabled,\n id,\n className,\n testId,\n required,\n 'aria-describedby': describedBy,\n 'aria-invalid': isInvalid,\n}: Props<T>) => {\n const { labels } = useUi();\n const emptyText = resolveLabel('Select.placeholder', placeholder, labels?.selectPlaceholder);\n const generatedId = useId();\n const baseId = id ?? generatedId;\n const listboxId = `${baseId}-listbox`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [openMode, setOpenMode] = useState<OpenMode | null>(null);\n\n /* PANEL SABIT KONUMLU, MUTLAK DEGIL — gerekce SCSS'te (`.panel`). */\n const positioning = usePositioning(triggerRef, panelRef, {\n side: 'bottom',\n align,\n isOpen: openMode === 'popover',\n });\n\n /*\n * Panel BODY'e (ya da icinde bulundugu acik `<dialog>`a) portallanir; gerekce\n * `hooks/usePortalSurface.ts`.\n */\n const portal = usePortalSurface(openMode === 'popover', triggerRef, panelRef);\n\n const isOpen = openMode !== null;\n const selectedIndex = options.findIndex(option => option.value === value);\n const selectedOption = selectedIndex >= 0 ? options[selectedIndex] : null;\n\n const close = useCallback(() => setOpenMode(null), []);\n\n const open = useCallback(() => {\n if (isDisabled || options.length === 0) return;\n\n /*\n * Etkin secenek SECILI olandan baslar (kancanin `initialIndex`i); kullanici listeyi bastan\n * taramaz.\n */\n setOpenMode(window.matchMedia(ABOVE_MOBILE_MEDIA_QUERY).matches ? 'popover' : 'sheet');\n }, [isDisabled, options.length]);\n\n const selectOption = (option: SelectOption<T>) => {\n if (option.isDisabled) return;\n onChange(option.value);\n close();\n };\n\n /* Kapaninca odak TETIKLEYICIYE doner. */\n const wasOpenRef = useRef(false);\n useEffect(() => {\n if (wasOpenRef.current && !isOpen) triggerRef.current?.focus();\n wasOpenRef.current = isOpen;\n }, [isOpen]);\n\n /*\n * Disari tiklamada panel kapanir.\n * ⚠ PANEL ARTIK KOKUN ICINDE DEGIL — portallandi. `rootRef` tek basina bakilsaydi panelin ICINE\n * yapilan `mousedown` \"disari\" sayilir ve panel…\n */\n useEffect(() => {\n if (openMode !== 'popover') return;\n\n const handlePointerDown = (event: globalThis.MouseEvent) => {\n const target = event.target as Node;\n if (rootRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n close();\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n return () => document.removeEventListener('mousedown', handlePointerDown);\n }, [openMode, close]);\n\n /* KLAVYE MODELI `useListboxNavigation`da — `Combobox`la AYNI kanca. */\n const { activeIndex, setActiveIndex, listRef, handleKeyDown } =\n useListboxNavigation<HTMLUListElement>({\n count: options.length,\n isOpen,\n initialIndex: selectedIndex >= 0 ? selectedIndex : 0,\n onSelect: index => {\n const option = options[index];\n if (option) selectOption(option);\n },\n onClose: close,\n });\n\n /* Alt sayfada odak listenin kendisine gecer: ok tuslari orada isler. */\n useEffect(() => {\n if (openMode === 'sheet') listRef.current?.focus({ preventScroll: true });\n /* `listRef` kancadan geliyor ve `useRef` kimligi SABIT; bagimlilikta\n olmasi etkiyi yeniden calistirmaz, denetci ise kancadan gelen bir\n degerin referans oldugunu kanitlayamiyor. */\n }, [openMode, listRef]);\n\n /* KAPALIYKEN ok/Enter/Space paneli ACAR. */\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (!isOpen) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n open();\n }\n return;\n }\n\n handleKeyDown(event);\n };\n\n const renderList = (isSheet: boolean) => (\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n /*\n * Alt sayfada baslik `BottomSheet`in icinde ve kimligi bize kapali; listenin adi dogrudan\n * yazilir.\n */\n aria-label={label}\n /*\n * Odak alt sayfada listede, panelde tetikleyicide: etkin seçeneği bildiren öznitelik odağın\n * olduğu öğede durmak zorunda.\n */\n aria-activedescendant={isSheet && options[activeIndex] ? optionId(activeIndex) : undefined}\n tabIndex={isSheet ? 0 : -1}\n className={cx(styles.list, isSheet && styles['list--sheet'])}\n onKeyDown={isSheet ? onKeyDown : undefined}\n >\n {options.map((option, index) => {\n const isChosen = option.value === value;\n\n return (\n <li\n key={option.value}\n id={optionId(index)}\n role=\"option\"\n data-index={index}\n aria-selected={isChosen}\n aria-disabled={option.isDisabled}\n className={cx(\n styles.option,\n index === activeIndex && styles['option--active'],\n isChosen && styles['option--selected'],\n option.isDisabled && styles['option--disabled'],\n )}\n // Fare imleci seçeneğin üstündeyken etkin seçenek de oraya taşınır; iki ayrı vurgu\n // kullanıcıyı şaşırtıyordu.\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectOption(option)}\n >\n <span className={styles.option__label}>{option.label}</span>\n {isChosen && <CheckLg aria-hidden className={styles.option__check} />}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <span ref={rootRef} className={cx(styles.select, className)} data-testid={testId}>\n <button\n ref={triggerRef}\n id={baseId}\n type=\"button\"\n role=\"combobox\"\n className={cx(\n styles.trigger,\n styles[`trigger--${size}`],\n !selectedOption && styles['trigger--empty'],\n isOpen && styles['trigger--open'],\n isInvalid && styles['trigger--invalid'],\n )}\n disabled={isDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? listboxId : undefined}\n aria-activedescendant={\n openMode === 'popover' && options[activeIndex] ? optionId(activeIndex) : undefined\n }\n /* ⚠ `aria-label` KULLANILMAZ — SECILI DEGERI MASKELIYORDU. */\n aria-labelledby={selectedOption ? `${baseId}-name ${baseId}-value` : `${baseId}-name`}\n aria-describedby={describedBy}\n aria-invalid={isInvalid}\n /* Tetikleyici bir `<button>`; yerel `required` yok, karsiligi bu. */\n aria-required={required || undefined}\n onClick={() => (isOpen ? close() : open())}\n onKeyDown={onKeyDown}\n >\n {icon && (\n <span className={styles.trigger__icon} aria-hidden>\n {icon}\n </span>\n )}\n\n {/* Kontrolün adı — yalnızca erişilebilirlik ağacında. */}\n <span id={`${baseId}-name`} className={styles.trigger__srName}>\n {label}\n </span>\n\n <span id={`${baseId}-value`} className={styles.trigger__value}>\n {selectedOption?.label ?? emptyText}\n </span>\n\n {/*\n * Ok DOLU CARET: ince chevron, kutunun sag ucunda `$text-2` tonunda\n * iki hairline cizgiye iniyor ve kutunun acilir oldugu uzaktan\n * okunmuyordu. Acikken 180° donuyor — yon hâlâ durumu bildiriyor.\n */}\n <CaretDownFill\n aria-hidden\n className={cx(styles.trigger__chevron, isOpen && styles['trigger__chevron--open'])}\n />\n </button>\n\n {openMode === 'popover' &&\n portal.container &&\n createPortal(\n <div\n ref={panelRef}\n className={styles.panel}\n {...portal.attributes}\n style={{\n ...positioning.style,\n ...portal.style,\n /* Panel tetikleyiciyle EN AZ ayni genislikte. */\n minWidth: positioning.anchorWidth || undefined,\n /* Ilk karede olcu yok; yanlis yerde bir kare parlamasin. */\n visibility: positioning.isPositioned ? undefined : 'hidden',\n }}\n >\n {renderList(false)}\n </div>,\n portal.container,\n )}\n\n {/* Dar ekranda liste alt sayfada acilir; panel klavye acilinca sikisiyor\n ve alt ucu ekranin disinda kaliyordu (bkz. `BottomSheet`). */}\n {openMode === 'sheet' && (\n <BottomSheet title={label} closeLabel={closeLabel ?? labels?.close} onClose={close}>\n {renderList(true)}\n </BottomSheet>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Select) as typeof Select;\n"],"names":["Select","options","value","onChange","label","placeholder","closeLabel","icon","size","align","isDisabled","id","className","testId","required","describedBy","isInvalid","labels","useUi","emptyText","resolveLabel","generatedId","useId","baseId","listboxId","optionId","index","rootRef","useRef","triggerRef","panelRef","openMode","setOpenMode","useState","positioning","usePositioning","portal","usePortalSurface","isOpen","selectedIndex","option","selectedOption","close","useCallback","open","ABOVE_MOBILE_MEDIA_QUERY","selectOption","wasOpenRef","useEffect","_a","handlePointerDown","event","target","_b","activeIndex","setActiveIndex","listRef","handleKeyDown","useListboxNavigation","onKeyDown","renderList","isSheet","jsx","cx","styles","isChosen","jsxs","CheckLg","CaretDownFill","createPortal","BottomSheet"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { ReactNode } from 'react';
2
+ export type SelectOption<T extends string = string> = {
3
+ value: T;
4
+ label: string;
5
+ isDisabled?: boolean;
6
+ };
7
+ type Props<T extends string> = {
8
+ options: SelectOption<T>[];
9
+ value: T;
10
+ onChange: (value: T) => void;
11
+ /** Alanın adı. */
12
+ label: string;
13
+ /** Seçim yokken tetikleyicide görünen metin. */
14
+ placeholder?: string;
15
+ /** Alt sayfanın kapatma düğmesinin erişilebilir adı. */
16
+ closeLabel?: string;
17
+ /** Tetikleyicinin solundaki ikon. */
18
+ icon?: ReactNode;
19
+ /** `sm` yoğun şeritler içindir (araç çubuğu); varsayılan form ölçüsü `md`. */
20
+ size?: 'sm' | 'md';
21
+ /** Panelin hangi kenardan hizalanacağı. */
22
+ align?: 'start' | 'end';
23
+ isDisabled?: boolean;
24
+ id?: string;
25
+ /**
26
+ * Zorunluluk — `Field`in `FieldChildProps` sözleşmesinden gelir.
27
+ * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan sessizce buharlaşır.
28
+ * `required` bir dönem tam olarak öyleydi: `<Field…
29
+ */
30
+ required?: boolean;
31
+ 'aria-describedby'?: string;
32
+ 'aria-invalid'?: boolean;
33
+ className?: string;
34
+ testId?: string;
35
+ };
36
+ /** Seçim kutusu. */
37
+ declare const Select: <T extends string>({ options, value, onChange, label, placeholder, closeLabel, icon, size, align, isDisabled, id, className, testId, required, "aria-describedby": describedBy, "aria-invalid": isInvalid, }: Props<T>) => import("react").JSX.Element;
38
+ declare const _default: typeof Select;
39
+ export default _default;
@@ -0,0 +1,179 @@
1
+ "use client";
2
+ import { jsxs as D, jsx as a } from "react/jsx-runtime";
3
+ import { memo as ee, useId as te, useRef as x, useState as re, useCallback as U, useEffect as E } from "react";
4
+ import { createPortal as oe } from "react-dom";
5
+ import { CaretDownFill as ne, CheckLg as ie } from "react-bootstrap-icons";
6
+ import ae from "../../hooks/useListboxNavigation.js";
7
+ import se from "../../hooks/usePortalSurface.js";
8
+ import le from "../../hooks/usePositioning.js";
9
+ import { ABOVE_MOBILE_MEDIA_QUERY as ce } from "../../constants/breakpoint.constants.js";
10
+ import { cx as f } from "../../helpers/class-name.helper.js";
11
+ import { resolveLabel as de } from "../../helpers/label.helper.js";
12
+ import { useUi as ue } from "../../theme/context.js";
13
+ import me from "../BottomSheet/index.js";
14
+ const t = {"select":"ui-select-tiiPL","trigger":"ui-trigger-rHQJz","trigger--empty":"ui-trigger--empty-cuinb","trigger--open":"ui-trigger--open-1nsvu","trigger--invalid":"ui-trigger--invalid-NtP0W","trigger--sm":"ui-trigger--sm-Xnu1C","trigger__icon":"ui-trigger__icon-apCcx","trigger__srName":"ui-trigger__srName-XLCxt","trigger__value":"ui-trigger__value-ioH7K","trigger__chevron":"ui-trigger__chevron-FtsIZ","trigger__chevron--open":"ui-trigger__chevron--open-1P2P-","panel":"ui-panel-rGOOd","list":"ui-list-SOKf8","list--sheet":"ui-list--sheet-BIjCb","option":"ui-option-ZDPef","option--active":"ui-option--active-R4lLF","option--selected":"ui-option--selected-glQMj","option--disabled":"ui-option--disabled-h4rdd","option__label":"ui-option__label-SsoYB","option__check":"ui-option__check-8CPSG"};
15
+ const pe = ({
16
+ options: i,
17
+ value: $,
18
+ onChange: j,
19
+ label: _,
20
+ placeholder: W,
21
+ closeLabel: q,
22
+ icon: C,
23
+ size: F = "md",
24
+ align: Q = "start",
25
+ isDisabled: y,
26
+ id: T,
27
+ className: V,
28
+ testId: Y,
29
+ required: z,
30
+ "aria-describedby": G,
31
+ "aria-invalid": L
32
+ }) => {
33
+ const { labels: c } = ue(), H = de("Select.placeholder", W, c == null ? void 0 : c.selectPlaceholder), J = te(), s = T ?? J, R = `${s}-listbox`, w = (e) => `${s}-option-${e}`, k = x(null), v = x(null), h = x(null), [o, M] = re(null), N = le(v, h, {
34
+ side: "bottom",
35
+ align: Q,
36
+ isOpen: o === "popover"
37
+ }), g = se(o === "popover", v, h), n = o !== null, b = i.findIndex((e) => e.value === $), m = b >= 0 ? i[b] : null, d = U(() => M(null), []), O = U(() => {
38
+ y || i.length === 0 || M(window.matchMedia(ce).matches ? "popover" : "sheet");
39
+ }, [y, i.length]), P = (e) => {
40
+ e.isDisabled || (j(e.value), d());
41
+ }, A = x(!1);
42
+ E(() => {
43
+ var e;
44
+ A.current && !n && ((e = v.current) == null || e.focus()), A.current = n;
45
+ }, [n]), E(() => {
46
+ if (o !== "popover") return;
47
+ const e = (r) => {
48
+ var u, K;
49
+ const l = r.target;
50
+ (u = k.current) != null && u.contains(l) || (K = h.current) != null && K.contains(l) || d();
51
+ };
52
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
53
+ }, [o, d]);
54
+ const { activeIndex: p, setActiveIndex: X, listRef: I, handleKeyDown: Z } = ae({
55
+ count: i.length,
56
+ isOpen: n,
57
+ initialIndex: b >= 0 ? b : 0,
58
+ onSelect: (e) => {
59
+ const r = i[e];
60
+ r && P(r);
61
+ },
62
+ onClose: d
63
+ });
64
+ E(() => {
65
+ var e;
66
+ o === "sheet" && ((e = I.current) == null || e.focus({ preventScroll: !0 }));
67
+ }, [o, I]);
68
+ const S = (e) => {
69
+ if (!n) {
70
+ ["ArrowDown", "ArrowUp", "Enter", " "].includes(e.key) && (e.preventDefault(), O());
71
+ return;
72
+ }
73
+ Z(e);
74
+ }, B = (e) => /* @__PURE__ */ a(
75
+ "ul",
76
+ {
77
+ ref: I,
78
+ id: R,
79
+ role: "listbox",
80
+ "aria-label": _,
81
+ "aria-activedescendant": e && i[p] ? w(p) : void 0,
82
+ tabIndex: e ? 0 : -1,
83
+ className: f(t.list, e && t["list--sheet"]),
84
+ onKeyDown: e ? S : void 0,
85
+ children: i.map((r, l) => {
86
+ const u = r.value === $;
87
+ return /* @__PURE__ */ D(
88
+ "li",
89
+ {
90
+ id: w(l),
91
+ role: "option",
92
+ "data-index": l,
93
+ "aria-selected": u,
94
+ "aria-disabled": r.isDisabled,
95
+ className: f(
96
+ t.option,
97
+ l === p && t["option--active"],
98
+ u && t["option--selected"],
99
+ r.isDisabled && t["option--disabled"]
100
+ ),
101
+ onMouseEnter: () => X(l),
102
+ onClick: () => P(r),
103
+ children: [
104
+ /* @__PURE__ */ a("span", { className: t.option__label, children: r.label }),
105
+ u && /* @__PURE__ */ a(ie, { "aria-hidden": !0, className: t.option__check })
106
+ ]
107
+ },
108
+ r.value
109
+ );
110
+ })
111
+ }
112
+ );
113
+ return /* @__PURE__ */ D("span", { ref: k, className: f(t.select, V), "data-testid": Y, children: [
114
+ /* @__PURE__ */ D(
115
+ "button",
116
+ {
117
+ ref: v,
118
+ id: s,
119
+ type: "button",
120
+ role: "combobox",
121
+ className: f(
122
+ t.trigger,
123
+ t[`trigger--${F}`],
124
+ !m && t["trigger--empty"],
125
+ n && t["trigger--open"],
126
+ L && t["trigger--invalid"]
127
+ ),
128
+ disabled: y,
129
+ "aria-haspopup": "listbox",
130
+ "aria-expanded": n,
131
+ "aria-controls": n ? R : void 0,
132
+ "aria-activedescendant": o === "popover" && i[p] ? w(p) : void 0,
133
+ "aria-labelledby": m ? `${s}-name ${s}-value` : `${s}-name`,
134
+ "aria-describedby": G,
135
+ "aria-invalid": L,
136
+ "aria-required": z || void 0,
137
+ onClick: () => n ? d() : O(),
138
+ onKeyDown: S,
139
+ children: [
140
+ C && /* @__PURE__ */ a("span", { className: t.trigger__icon, "aria-hidden": !0, children: C }),
141
+ /* @__PURE__ */ a("span", { id: `${s}-name`, className: t.trigger__srName, children: _ }),
142
+ /* @__PURE__ */ a("span", { id: `${s}-value`, className: t.trigger__value, children: (m == null ? void 0 : m.label) ?? H }),
143
+ /* @__PURE__ */ a(
144
+ ne,
145
+ {
146
+ "aria-hidden": !0,
147
+ className: f(t.trigger__chevron, n && t["trigger__chevron--open"])
148
+ }
149
+ )
150
+ ]
151
+ }
152
+ ),
153
+ o === "popover" && g.container && oe(
154
+ /* @__PURE__ */ a(
155
+ "div",
156
+ {
157
+ ref: h,
158
+ className: t.panel,
159
+ ...g.attributes,
160
+ style: {
161
+ ...N.style,
162
+ ...g.style,
163
+ /* Panel tetikleyiciyle EN AZ ayni genislikte. */
164
+ minWidth: N.anchorWidth || void 0,
165
+ /* Ilk karede olcu yok; yanlis yerde bir kare parlamasin. */
166
+ visibility: N.isPositioned ? void 0 : "hidden"
167
+ },
168
+ children: B(!1)
169
+ }
170
+ ),
171
+ g.container
172
+ ),
173
+ o === "sheet" && /* @__PURE__ */ a(me, { title: _, closeLabel: q ?? (c == null ? void 0 : c.close), onClose: d, children: B(!0) })
174
+ ] });
175
+ }, $e = /* @__PURE__ */ ee(pe);
176
+ export {
177
+ $e as default
178
+ };
179
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Select/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type KeyboardEvent,\n memo,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { CaretDownFill, CheckLg } from 'react-bootstrap-icons';\n\nimport useListboxNavigation from '../../hooks/useListboxNavigation';\nimport usePortalSurface from '../../hooks/usePortalSurface';\nimport usePositioning from '../../hooks/usePositioning';\n\nimport { ABOVE_MOBILE_MEDIA_QUERY } from '../../constants/breakpoint.constants';\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport BottomSheet from '../BottomSheet';\n\nimport styles from './index.module.scss';\n\nexport type SelectOption<T extends string = string> = {\n value: T;\n label: string;\n isDisabled?: boolean;\n};\n\n/** Seçenek listesinin nerede açıldığı. */\ntype OpenMode = 'popover' | 'sheet';\n\ntype Props<T extends string> = {\n options: SelectOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Alanın adı. */\n label: string;\n /** Seçim yokken tetikleyicide görünen metin. */\n placeholder?: string;\n /** Alt sayfanın kapatma düğmesinin erişilebilir adı. */\n closeLabel?: string;\n /** Tetikleyicinin solundaki ikon. */\n icon?: ReactNode;\n /** `sm` yoğun şeritler içindir (araç çubuğu); varsayılan form ölçüsü `md`. */\n size?: 'sm' | 'md';\n /** Panelin hangi kenardan hizalanacağı. */\n align?: 'start' | 'end';\n isDisabled?: boolean;\n id?: string;\n /**\n * Zorunluluk — `Field`in `FieldChildProps` sözleşmesinden gelir.\n * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan sessizce buharlaşır.\n * `required` bir dönem tam olarak öyleydi: `<Field…\n */\n required?: boolean;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Seçim kutusu. */\nconst Select = <T extends string>({\n options,\n value,\n onChange,\n label,\n placeholder,\n closeLabel,\n icon,\n size = 'md',\n align = 'start',\n isDisabled,\n id,\n className,\n testId,\n required,\n 'aria-describedby': describedBy,\n 'aria-invalid': isInvalid,\n}: Props<T>) => {\n const { labels } = useUi();\n const emptyText = resolveLabel('Select.placeholder', placeholder, labels?.selectPlaceholder);\n const generatedId = useId();\n const baseId = id ?? generatedId;\n const listboxId = `${baseId}-listbox`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [openMode, setOpenMode] = useState<OpenMode | null>(null);\n\n /* PANEL SABIT KONUMLU, MUTLAK DEGIL — gerekce SCSS'te (`.panel`). */\n const positioning = usePositioning(triggerRef, panelRef, {\n side: 'bottom',\n align,\n isOpen: openMode === 'popover',\n });\n\n /*\n * Panel BODY'e (ya da icinde bulundugu acik `<dialog>`a) portallanir; gerekce\n * `hooks/usePortalSurface.ts`.\n */\n const portal = usePortalSurface(openMode === 'popover', triggerRef, panelRef);\n\n const isOpen = openMode !== null;\n const selectedIndex = options.findIndex(option => option.value === value);\n const selectedOption = selectedIndex >= 0 ? options[selectedIndex] : null;\n\n const close = useCallback(() => setOpenMode(null), []);\n\n const open = useCallback(() => {\n if (isDisabled || options.length === 0) return;\n\n /*\n * Etkin secenek SECILI olandan baslar (kancanin `initialIndex`i); kullanici listeyi bastan\n * taramaz.\n */\n setOpenMode(window.matchMedia(ABOVE_MOBILE_MEDIA_QUERY).matches ? 'popover' : 'sheet');\n }, [isDisabled, options.length]);\n\n const selectOption = (option: SelectOption<T>) => {\n if (option.isDisabled) return;\n onChange(option.value);\n close();\n };\n\n /* Kapaninca odak TETIKLEYICIYE doner. */\n const wasOpenRef = useRef(false);\n useEffect(() => {\n if (wasOpenRef.current && !isOpen) triggerRef.current?.focus();\n wasOpenRef.current = isOpen;\n }, [isOpen]);\n\n /*\n * Disari tiklamada panel kapanir.\n * ⚠ PANEL ARTIK KOKUN ICINDE DEGIL — portallandi. `rootRef` tek basina bakilsaydi panelin ICINE\n * yapilan `mousedown` \"disari\" sayilir ve panel…\n */\n useEffect(() => {\n if (openMode !== 'popover') return;\n\n const handlePointerDown = (event: globalThis.MouseEvent) => {\n const target = event.target as Node;\n if (rootRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n close();\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n return () => document.removeEventListener('mousedown', handlePointerDown);\n }, [openMode, close]);\n\n /* KLAVYE MODELI `useListboxNavigation`da — `Combobox`la AYNI kanca. */\n const { activeIndex, setActiveIndex, listRef, handleKeyDown } =\n useListboxNavigation<HTMLUListElement>({\n count: options.length,\n isOpen,\n initialIndex: selectedIndex >= 0 ? selectedIndex : 0,\n onSelect: index => {\n const option = options[index];\n if (option) selectOption(option);\n },\n onClose: close,\n });\n\n /* Alt sayfada odak listenin kendisine gecer: ok tuslari orada isler. */\n useEffect(() => {\n if (openMode === 'sheet') listRef.current?.focus({ preventScroll: true });\n /* `listRef` kancadan geliyor ve `useRef` kimligi SABIT; bagimlilikta\n olmasi etkiyi yeniden calistirmaz, denetci ise kancadan gelen bir\n degerin referans oldugunu kanitlayamiyor. */\n }, [openMode, listRef]);\n\n /* KAPALIYKEN ok/Enter/Space paneli ACAR. */\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (!isOpen) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n open();\n }\n return;\n }\n\n handleKeyDown(event);\n };\n\n const renderList = (isSheet: boolean) => (\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n /*\n * Alt sayfada baslik `BottomSheet`in icinde ve kimligi bize kapali; listenin adi dogrudan\n * yazilir.\n */\n aria-label={label}\n /*\n * Odak alt sayfada listede, panelde tetikleyicide: etkin seçeneği bildiren öznitelik odağın\n * olduğu öğede durmak zorunda.\n */\n aria-activedescendant={isSheet && options[activeIndex] ? optionId(activeIndex) : undefined}\n tabIndex={isSheet ? 0 : -1}\n className={cx(styles.list, isSheet && styles['list--sheet'])}\n onKeyDown={isSheet ? onKeyDown : undefined}\n >\n {options.map((option, index) => {\n const isChosen = option.value === value;\n\n return (\n <li\n key={option.value}\n id={optionId(index)}\n role=\"option\"\n data-index={index}\n aria-selected={isChosen}\n aria-disabled={option.isDisabled}\n className={cx(\n styles.option,\n index === activeIndex && styles['option--active'],\n isChosen && styles['option--selected'],\n option.isDisabled && styles['option--disabled'],\n )}\n // Fare imleci seçeneğin üstündeyken etkin seçenek de oraya taşınır; iki ayrı vurgu\n // kullanıcıyı şaşırtıyordu.\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectOption(option)}\n >\n <span className={styles.option__label}>{option.label}</span>\n {isChosen && <CheckLg aria-hidden className={styles.option__check} />}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <span ref={rootRef} className={cx(styles.select, className)} data-testid={testId}>\n <button\n ref={triggerRef}\n id={baseId}\n type=\"button\"\n role=\"combobox\"\n className={cx(\n styles.trigger,\n styles[`trigger--${size}`],\n !selectedOption && styles['trigger--empty'],\n isOpen && styles['trigger--open'],\n isInvalid && styles['trigger--invalid'],\n )}\n disabled={isDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? listboxId : undefined}\n aria-activedescendant={\n openMode === 'popover' && options[activeIndex] ? optionId(activeIndex) : undefined\n }\n /* ⚠ `aria-label` KULLANILMAZ — SECILI DEGERI MASKELIYORDU. */\n aria-labelledby={selectedOption ? `${baseId}-name ${baseId}-value` : `${baseId}-name`}\n aria-describedby={describedBy}\n aria-invalid={isInvalid}\n /* Tetikleyici bir `<button>`; yerel `required` yok, karsiligi bu. */\n aria-required={required || undefined}\n onClick={() => (isOpen ? close() : open())}\n onKeyDown={onKeyDown}\n >\n {icon && (\n <span className={styles.trigger__icon} aria-hidden>\n {icon}\n </span>\n )}\n\n {/* Kontrolün adı — yalnızca erişilebilirlik ağacında. */}\n <span id={`${baseId}-name`} className={styles.trigger__srName}>\n {label}\n </span>\n\n <span id={`${baseId}-value`} className={styles.trigger__value}>\n {selectedOption?.label ?? emptyText}\n </span>\n\n {/*\n * Ok DOLU CARET: ince chevron, kutunun sag ucunda `$text-2` tonunda\n * iki hairline cizgiye iniyor ve kutunun acilir oldugu uzaktan\n * okunmuyordu. Acikken 180° donuyor — yon hâlâ durumu bildiriyor.\n */}\n <CaretDownFill\n aria-hidden\n className={cx(styles.trigger__chevron, isOpen && styles['trigger__chevron--open'])}\n />\n </button>\n\n {openMode === 'popover' &&\n portal.container &&\n createPortal(\n <div\n ref={panelRef}\n className={styles.panel}\n {...portal.attributes}\n style={{\n ...positioning.style,\n ...portal.style,\n /* Panel tetikleyiciyle EN AZ ayni genislikte. */\n minWidth: positioning.anchorWidth || undefined,\n /* Ilk karede olcu yok; yanlis yerde bir kare parlamasin. */\n visibility: positioning.isPositioned ? undefined : 'hidden',\n }}\n >\n {renderList(false)}\n </div>,\n portal.container,\n )}\n\n {/* Dar ekranda liste alt sayfada acilir; panel klavye acilinca sikisiyor\n ve alt ucu ekranin disinda kaliyordu (bkz. `BottomSheet`). */}\n {openMode === 'sheet' && (\n <BottomSheet title={label} closeLabel={closeLabel ?? labels?.close} onClose={close}>\n {renderList(true)}\n </BottomSheet>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Select) as typeof Select;\n"],"names":["Select","options","value","onChange","label","placeholder","closeLabel","icon","size","align","isDisabled","id","className","testId","required","describedBy","isInvalid","labels","useUi","emptyText","resolveLabel","generatedId","useId","baseId","listboxId","optionId","index","rootRef","useRef","triggerRef","panelRef","openMode","setOpenMode","useState","positioning","usePositioning","portal","usePortalSurface","isOpen","selectedIndex","option","selectedOption","close","useCallback","open","ABOVE_MOBILE_MEDIA_QUERY","selectOption","wasOpenRef","useEffect","_a","handlePointerDown","event","target","_b","activeIndex","setActiveIndex","listRef","handleKeyDown","useListboxNavigation","onKeyDown","renderList","isSheet","jsx","cx","styles","isChosen","jsxs","CheckLg","CaretDownFill","createPortal","BottomSheet"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-select-tiiPL{position:relative;display:block;width:100%}.ui-trigger-rHQJz{width:100%;font-family:var(--ui-font-body);font-size:var(--ui-font-size-control);line-height:var(--ui-leading-snug);color:var(--ui-text);background-color:var(--ui-surface);border:1px solid var(--ui-border-strong);border-radius:var(--ui-radius-md);padding:var(--ui-space-3) var(--ui-space-4);min-height:44px;transition:border-color var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out)}.ui-trigger-rHQJz::placeholder{color:var(--ui-placeholder, var(--ui-text-3))}.ui-trigger-rHQJz:hover:not(:disabled):not([aria-invalid=true]){border-color:color-mix(in oklab,var(--ui-border-strong),var(--ui-text) 30%)}.ui-trigger-rHQJz:focus{outline:none;border-color:var(--ui-ring-color);box-shadow:var(--ui-ring)}.ui-trigger-rHQJz:disabled{background-color:var(--ui-surface-2);border-color:var(--ui-border);cursor:not-allowed;color:var(--ui-text-3)}@media (forced-colors: active){.ui-trigger-rHQJz:disabled{color:GrayText;border-color:GrayText}}.ui-trigger-rHQJz[aria-invalid=true]{border-color:var(--ui-danger-solid)}.ui-trigger-rHQJz[aria-invalid=true]:focus{box-shadow:var(--ui-ring-danger)}@media (prefers-reduced-motion: reduce){.ui-trigger-rHQJz{transition:none}}.ui-trigger-rHQJz{display:flex;align-items:center;gap:var(--ui-space-2);text-align:start;cursor:pointer}.ui-trigger--empty-cuinb{color:var(--ui-text-3)}.ui-trigger--open-1nsvu{border-color:var(--ui-ring-color);box-shadow:var(--ui-ring)}.ui-trigger--invalid-NtP0W{border-color:var(--ui-danger-solid)}.ui-trigger--sm-Xnu1C{min-height:36px;padding-block:0;padding-inline:var(--ui-space-3);font-size:var(--ui-font-size-sm);position:relative}.ui-trigger--sm-Xnu1C:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-trigger--sm-Xnu1C{font-weight:500}.ui-trigger__icon-apCcx{display:inline-flex;color:var(--ui-text-2);flex-shrink:0;font-size:var(--ui-icon-md)}.ui-trigger__srName-XLCxt{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-trigger__value-ioH7K{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.ui-trigger__chevron-FtsIZ{color:var(--ui-text-2);flex-shrink:0;font-size:var(--ui-icon-xs);transition:transform var(--ui-duration-fast) var(--ui-ease-out)}.ui-trigger__chevron--open-1P2P-{transform:rotate(180deg)}@media (prefers-reduced-motion: reduce){.ui-trigger__chevron-FtsIZ{transition:none}}.ui-panel-rGOOd{position:fixed;z-index:200;min-width:200px;background-color:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-lg);overflow:hidden;animation:var(--ui-anim-fade-in-up) var(--ui-duration-fast) var(--ui-ease-out)}@media (prefers-reduced-motion: reduce){.ui-panel-rGOOd{animation:none}}.ui-list-SOKf8{position:relative;max-height:280px;overflow-y:auto;padding:var(--ui-space-1);margin:0;list-style:none;scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}.ui-list-SOKf8::-webkit-scrollbar{width:8px;height:8px}.ui-list-SOKf8::-webkit-scrollbar-track{background:transparent}.ui-list-SOKf8::-webkit-scrollbar-thumb{background-color:var(--ui-border-strong);border-radius:var(--ui-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-list-SOKf8::-webkit-scrollbar-thumb:hover{background-color:var(--ui-text-3)}.ui-list-SOKf8:focus{outline:none}.ui-list--sheet-BIjCb{max-height:none;overflow:visible;padding:0}.ui-list--sheet-BIjCb .ui-option-ZDPef{min-height:48px;font-size:var(--ui-font-size-base);border-radius:var(--ui-radius-md)}.ui-option-ZDPef{display:flex;align-items:center;gap:var(--ui-space-2);justify-content:space-between;padding:var(--ui-space-2) var(--ui-space-3);border-radius:var(--ui-radius-sm);font-size:var(--ui-font-size-sm);color:var(--ui-text);cursor:pointer;transition:background-color var(--ui-duration-fast) var(--ui-ease-out)}.ui-option--active-R4lLF{background-color:var(--ui-surface-2)}.ui-option--selected-glQMj{background-color:var(--ui-selected-tint);color:var(--ui-text);font-weight:600}.ui-option--disabled-h4rdd{color:var(--ui-text-3);cursor:not-allowed}.ui-option--disabled-h4rdd:hover{background-color:transparent}.ui-option__label-SsoYB{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.ui-option__check-8CPSG{color:var(--ui-text);flex-shrink:0;font-size:var(--ui-icon-md)}@media (prefers-reduced-motion: reduce){.ui-option-ZDPef{transition:none}}}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),i=require("react"),h=require("@handijit/utils"),d=require("../../helpers/class-name.helper.cjs"),c=require("../../helpers/component.helper.cjs"),t={default:{"skeleton":"ui-skeleton-n92if","skeleton--block":"ui-skeleton--block-tOZ-a","skeleton--text":"ui-skeleton--text-k-ROi","skeleton--circle":"ui-skeleton--circle-x-mX3","group":"ui-group-YMfwa","card":"ui-card-XQs-Q","card__media":"ui-card__media-YLJDv","card__body":"ui-card__body-msRvB","rows":"ui-rows-EZ9Am","row":"ui-row-se56N","row__text":"ui-row__text-TD4iS","table":"ui-table-L328g","table__row":"ui-table__row-rSJTK"}},l=({width:a,height:r,variant:n="block",lines:s=1,className:o})=>{const u={width:h.isNumber(a)?`${a}px`:a,height:h.isNumber(r)?`${r}px`:r};return n==="text"&&s>1?e.jsx("span",{className:d.cx(t.default.group,o),"aria-hidden":!0,children:Array.from({length:s},(x,m)=>e.jsx("span",{className:d.cx(t.default.skeleton,t.default["skeleton--text"]),style:m===s-1?{width:"60%"}:void 0},m))}):e.jsx("span",{className:d.cx(t.default.skeleton,t.default[`skeleton--${n}`],o),style:u,"aria-hidden":!0})},f=i.memo(l),j=({count:a=1,className:r})=>e.jsx(e.Fragment,{children:Array.from({length:a},(n,s)=>e.jsxs("div",{className:d.cx(t.default.card,r),"aria-hidden":!0,children:[e.jsx(l,{className:t.default.card__media}),e.jsxs("div",{className:t.default.card__body,children:[e.jsx(l,{variant:"text",width:"70%"}),e.jsx(l,{variant:"text",width:"40%"})]})]},s))}),_=({count:a=3,className:r})=>e.jsx("div",{className:d.cx(t.default.rows,r),"aria-hidden":!0,children:Array.from({length:a},(n,s)=>e.jsxs("div",{className:t.default.row,children:[e.jsx(l,{variant:"circle",width:36,height:36}),e.jsxs("div",{className:t.default.row__text,children:[e.jsx(l,{variant:"text",width:"45%"}),e.jsx(l,{variant:"text",width:"25%"})]})]},s))}),k=({count:a=5,columns:r=4,className:n})=>e.jsx("div",{className:d.cx(t.default.table,n),"aria-hidden":!0,children:Array.from({length:a},(s,o)=>e.jsx("div",{className:t.default.table__row,children:Array.from({length:r},(u,x)=>e.jsx(l,{variant:"text"},x))},o))}),v=c.named(i.memo(j),"SkeletonCard"),S=c.named(i.memo(_),"SkeletonRows"),p=c.named(i.memo(k),"SkeletonTable");exports.SkeletonCard=v;exports.SkeletonRows=S;exports.SkeletonTable=p;exports.default=f;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Skeleton/index.tsx"],"sourcesContent":["import { type CSSProperties, type FC, memo } from 'react';\n\nimport { isNumber } from '@handijit/utils';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /** Genişlik: sayı px, dize doğrudan CSS değeri. */\n width?: number | string;\n height?: number | string;\n /** Metin satırı görünümü: yuvarlatılmış, satır yüksekliğinde. */\n variant?: 'block' | 'text' | 'circle';\n /** Kaç satır çizilecek (`text` için). */\n lines?: number;\n className?: string;\n};\n\n/** Yükleme iskeleti. */\nconst Skeleton: FC<Props> = ({ width, height, variant = 'block', lines = 1, className }) => {\n const style: CSSProperties = {\n width: isNumber(width) ? `${width}px` : width,\n height: isNumber(height) ? `${height}px` : height,\n };\n\n if (variant === 'text' && lines > 1)\n return (\n <span className={cx(styles.group, className)} aria-hidden>\n {Array.from({ length: lines }, (_, index) => (\n <span\n key={index}\n className={cx(styles.skeleton, styles['skeleton--text'])}\n // Son satır kısa: gerçek paragraflar tam genişlikte bitmez.\n style={index === lines - 1 ? { width: '60%' } : undefined}\n />\n ))}\n </span>\n );\n\n return (\n <span\n className={cx(styles.skeleton, styles[`skeleton--${variant}`], className)}\n style={style}\n aria-hidden\n />\n );\n};\n\nexport default /*#__PURE__*/ memo(Skeleton) as typeof Skeleton;\n\ntype ShapeProps = {\n /** Kaç kopya çizilecek — bir listenin bilinen satır sayısı. */\n count?: number;\n className?: string;\n};\n\n/** KART iskeleti — `Card` + `CardMedia` + iki satır metnin ölçüsü. */\nconst CardShape: FC<ShapeProps> = ({ count = 1, className }) => (\n <>\n {Array.from({ length: count }, (_, index) => (\n <div key={index} className={cx(styles.card, className)} aria-hidden>\n <Skeleton className={styles.card__media} />\n <div className={styles.card__body}>\n <Skeleton variant=\"text\" width=\"70%\" />\n <Skeleton variant=\"text\" width=\"40%\" />\n </div>\n </div>\n ))}\n </>\n);\n\n/** SATIR iskeleti — avatar + iki metin satırı; liste satırlarının ölçüsü. */\nconst RowShape: FC<ShapeProps> = ({ count = 3, className }) => (\n <div className={cx(styles.rows, className)} aria-hidden>\n {Array.from({ length: count }, (_, index) => (\n <div key={index} className={styles.row}>\n <Skeleton variant=\"circle\" width={36} height={36} />\n <div className={styles.row__text}>\n <Skeleton variant=\"text\" width=\"45%\" />\n <Skeleton variant=\"text\" width=\"25%\" />\n </div>\n </div>\n ))}\n </div>\n);\n\n/** TABLO iskeleti — `DataTable`ın satır yüksekliğinde. */\nconst TableShape: FC<ShapeProps & { columns?: number }> = ({\n count = 5,\n columns = 4,\n className,\n}) => (\n <div className={cx(styles.table, className)} aria-hidden>\n {Array.from({ length: count }, (_, rowIndex) => (\n <div key={rowIndex} className={styles.table__row}>\n {Array.from({ length: columns }, (_, columnIndex) => (\n <Skeleton key={columnIndex} variant=\"text\" />\n ))}\n </div>\n ))}\n </div>\n);\n\nexport const SkeletonCard = /*#__PURE__*/ named(/*#__PURE__*/ memo(CardShape), 'SkeletonCard');\nexport const SkeletonRows = /*#__PURE__*/ named(/*#__PURE__*/ memo(RowShape), 'SkeletonRows');\nexport const SkeletonTable = /*#__PURE__*/ named(/*#__PURE__*/ memo(TableShape), 'SkeletonTable');\n"],"names":["Skeleton","width","height","variant","lines","className","style","isNumber","cx","styles","_","index","jsx","CardShape","count","Fragment","jsxs","RowShape","TableShape","columns","rowIndex","columnIndex","SkeletonCard","named","memo","SkeletonRows","SkeletonTable"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { FC } from 'react';
2
+ type Props = {
3
+ /** Genişlik: sayı px, dize doğrudan CSS değeri. */
4
+ width?: number | string;
5
+ height?: number | string;
6
+ /** Metin satırı görünümü: yuvarlatılmış, satır yüksekliğinde. */
7
+ variant?: 'block' | 'text' | 'circle';
8
+ /** Kaç satır çizilecek (`text` için). */
9
+ lines?: number;
10
+ className?: string;
11
+ };
12
+ /** Yükleme iskeleti. */
13
+ declare const Skeleton: FC<Props>;
14
+ declare const _default: typeof Skeleton;
15
+ export default _default;
16
+ type ShapeProps = {
17
+ /** Kaç kopya çizilecek — bir listenin bilinen satır sayısı. */
18
+ count?: number;
19
+ className?: string;
20
+ };
21
+ export declare const SkeletonCard: import('react').NamedExoticComponent<ShapeProps>;
22
+ export declare const SkeletonRows: import('react').NamedExoticComponent<ShapeProps>;
23
+ export declare const SkeletonTable: import('react').NamedExoticComponent<ShapeProps & {
24
+ columns?: number;
25
+ }>;
@@ -0,0 +1,50 @@
1
+ import { jsx as e, Fragment as v, jsxs as d } from "react/jsx-runtime";
2
+ import { memo as c } from "react";
3
+ import { isNumber as f } from "@handijit/utils";
4
+ import { cx as i } from "../../helpers/class-name.helper.js";
5
+ import { named as m } from "../../helpers/component.helper.js";
6
+ const t = {"skeleton":"ui-skeleton-n92if","skeleton--block":"ui-skeleton--block-tOZ-a","skeleton--text":"ui-skeleton--text-k-ROi","skeleton--circle":"ui-skeleton--circle-x-mX3","group":"ui-group-YMfwa","card":"ui-card-XQs-Q","card__media":"ui-card__media-YLJDv","card__body":"ui-card__body-msRvB","rows":"ui-rows-EZ9Am","row":"ui-row-se56N","row__text":"ui-row__text-TD4iS","table":"ui-table-L328g","table__row":"ui-table__row-rSJTK"};
7
+ const n = ({ width: r, height: a, variant: s = "block", lines: o = 1, className: l }) => {
8
+ const h = {
9
+ width: f(r) ? `${r}px` : r,
10
+ height: f(a) ? `${a}px` : a
11
+ };
12
+ return s === "text" && o > 1 ? /* @__PURE__ */ e("span", { className: i(t.group, l), "aria-hidden": !0, children: Array.from({ length: o }, (p, x) => /* @__PURE__ */ e(
13
+ "span",
14
+ {
15
+ className: i(t.skeleton, t["skeleton--text"]),
16
+ style: x === o - 1 ? { width: "60%" } : void 0
17
+ },
18
+ x
19
+ )) }) : /* @__PURE__ */ e(
20
+ "span",
21
+ {
22
+ className: i(t.skeleton, t[`skeleton--${s}`], l),
23
+ style: h,
24
+ "aria-hidden": !0
25
+ }
26
+ );
27
+ }, A = /* @__PURE__ */ c(n), _ = ({ count: r = 1, className: a }) => /* @__PURE__ */ e(v, { children: Array.from({ length: r }, (s, o) => /* @__PURE__ */ d("div", { className: i(t.card, a), "aria-hidden": !0, children: [
28
+ /* @__PURE__ */ e(n, { className: t.card__media }),
29
+ /* @__PURE__ */ d("div", { className: t.card__body, children: [
30
+ /* @__PURE__ */ e(n, { variant: "text", width: "70%" }),
31
+ /* @__PURE__ */ e(n, { variant: "text", width: "40%" })
32
+ ] })
33
+ ] }, o)) }), k = ({ count: r = 3, className: a }) => /* @__PURE__ */ e("div", { className: i(t.rows, a), "aria-hidden": !0, children: Array.from({ length: r }, (s, o) => /* @__PURE__ */ d("div", { className: t.row, children: [
34
+ /* @__PURE__ */ e(n, { variant: "circle", width: 36, height: 36 }),
35
+ /* @__PURE__ */ d("div", { className: t.row__text, children: [
36
+ /* @__PURE__ */ e(n, { variant: "text", width: "45%" }),
37
+ /* @__PURE__ */ e(n, { variant: "text", width: "25%" })
38
+ ] })
39
+ ] }, o)) }), w = ({
40
+ count: r = 5,
41
+ columns: a = 4,
42
+ className: s
43
+ }) => /* @__PURE__ */ e("div", { className: i(t.table, s), "aria-hidden": !0, children: Array.from({ length: r }, (o, l) => /* @__PURE__ */ e("div", { className: t.table__row, children: Array.from({ length: a }, (h, p) => /* @__PURE__ */ e(n, { variant: "text" }, p)) }, l)) }), C = /* @__PURE__ */ m(/* @__PURE__ */ c(_), "SkeletonCard"), R = /* @__PURE__ */ m(/* @__PURE__ */ c(k), "SkeletonRows"), T = /* @__PURE__ */ m(/* @__PURE__ */ c(w), "SkeletonTable");
44
+ export {
45
+ C as SkeletonCard,
46
+ R as SkeletonRows,
47
+ T as SkeletonTable,
48
+ A as default
49
+ };
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Skeleton/index.tsx"],"sourcesContent":["import { type CSSProperties, type FC, memo } from 'react';\n\nimport { isNumber } from '@handijit/utils';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { named } from '../../helpers/component.helper';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n /** Genişlik: sayı px, dize doğrudan CSS değeri. */\n width?: number | string;\n height?: number | string;\n /** Metin satırı görünümü: yuvarlatılmış, satır yüksekliğinde. */\n variant?: 'block' | 'text' | 'circle';\n /** Kaç satır çizilecek (`text` için). */\n lines?: number;\n className?: string;\n};\n\n/** Yükleme iskeleti. */\nconst Skeleton: FC<Props> = ({ width, height, variant = 'block', lines = 1, className }) => {\n const style: CSSProperties = {\n width: isNumber(width) ? `${width}px` : width,\n height: isNumber(height) ? `${height}px` : height,\n };\n\n if (variant === 'text' && lines > 1)\n return (\n <span className={cx(styles.group, className)} aria-hidden>\n {Array.from({ length: lines }, (_, index) => (\n <span\n key={index}\n className={cx(styles.skeleton, styles['skeleton--text'])}\n // Son satır kısa: gerçek paragraflar tam genişlikte bitmez.\n style={index === lines - 1 ? { width: '60%' } : undefined}\n />\n ))}\n </span>\n );\n\n return (\n <span\n className={cx(styles.skeleton, styles[`skeleton--${variant}`], className)}\n style={style}\n aria-hidden\n />\n );\n};\n\nexport default /*#__PURE__*/ memo(Skeleton) as typeof Skeleton;\n\ntype ShapeProps = {\n /** Kaç kopya çizilecek — bir listenin bilinen satır sayısı. */\n count?: number;\n className?: string;\n};\n\n/** KART iskeleti — `Card` + `CardMedia` + iki satır metnin ölçüsü. */\nconst CardShape: FC<ShapeProps> = ({ count = 1, className }) => (\n <>\n {Array.from({ length: count }, (_, index) => (\n <div key={index} className={cx(styles.card, className)} aria-hidden>\n <Skeleton className={styles.card__media} />\n <div className={styles.card__body}>\n <Skeleton variant=\"text\" width=\"70%\" />\n <Skeleton variant=\"text\" width=\"40%\" />\n </div>\n </div>\n ))}\n </>\n);\n\n/** SATIR iskeleti — avatar + iki metin satırı; liste satırlarının ölçüsü. */\nconst RowShape: FC<ShapeProps> = ({ count = 3, className }) => (\n <div className={cx(styles.rows, className)} aria-hidden>\n {Array.from({ length: count }, (_, index) => (\n <div key={index} className={styles.row}>\n <Skeleton variant=\"circle\" width={36} height={36} />\n <div className={styles.row__text}>\n <Skeleton variant=\"text\" width=\"45%\" />\n <Skeleton variant=\"text\" width=\"25%\" />\n </div>\n </div>\n ))}\n </div>\n);\n\n/** TABLO iskeleti — `DataTable`ın satır yüksekliğinde. */\nconst TableShape: FC<ShapeProps & { columns?: number }> = ({\n count = 5,\n columns = 4,\n className,\n}) => (\n <div className={cx(styles.table, className)} aria-hidden>\n {Array.from({ length: count }, (_, rowIndex) => (\n <div key={rowIndex} className={styles.table__row}>\n {Array.from({ length: columns }, (_, columnIndex) => (\n <Skeleton key={columnIndex} variant=\"text\" />\n ))}\n </div>\n ))}\n </div>\n);\n\nexport const SkeletonCard = /*#__PURE__*/ named(/*#__PURE__*/ memo(CardShape), 'SkeletonCard');\nexport const SkeletonRows = /*#__PURE__*/ named(/*#__PURE__*/ memo(RowShape), 'SkeletonRows');\nexport const SkeletonTable = /*#__PURE__*/ named(/*#__PURE__*/ memo(TableShape), 'SkeletonTable');\n"],"names":["Skeleton","width","height","variant","lines","className","style","isNumber","cx","styles","_","index","jsx","CardShape","count","Fragment","jsxs","RowShape","TableShape","columns","rowIndex","columnIndex","SkeletonCard","named","memo","SkeletonRows","SkeletonTable"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ @layer ui{.ui-skeleton-n92if{background:linear-gradient(90deg,var(--ui-skeleton-a) 0%,var(--ui-skeleton-b) 50%,var(--ui-skeleton-a) 100%);background-size:200% 100%;animation:var(--ui-anim-shimmer) var(--ui-duration-shimmer) ease-in-out infinite;border-radius:var(--ui-radius-sm)}@media (prefers-reduced-motion: reduce){.ui-skeleton-n92if{animation:none}}.ui-skeleton-n92if{display:block}.ui-skeleton--block-tOZ-a{width:100%;height:100%}.ui-skeleton--text-k-ROi{height:1em;border-radius:var(--ui-radius-xs)}.ui-skeleton--circle-x-mX3{border-radius:var(--ui-radius-pill);aspect-ratio:1}.ui-group-YMfwa{display:flex;flex-direction:column;gap:var(--ui-space-2)}.ui-card-XQs-Q{border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);background-color:var(--ui-surface);overflow:hidden}.ui-card__media-YLJDv{aspect-ratio:1.4;width:100%;height:auto;border-radius:0}.ui-card__body-msRvB{display:flex;flex-direction:column;gap:var(--ui-space-2);padding:var(--ui-space-3)}.ui-rows-EZ9Am{display:flex;flex-direction:column;gap:var(--ui-space-3)}.ui-row-se56N{display:flex;align-items:center;gap:var(--ui-space-3)}.ui-row__text-TD4iS{display:flex;flex-direction:column;gap:var(--ui-space-1);flex:1;min-width:0}.ui-table-L328g{display:flex;flex-direction:column;gap:var(--ui-space-3);padding:var(--ui-space-3);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);background-color:var(--ui-surface)}.ui-table__row-rSJTK{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--ui-space-3);align-items:center;min-height:40px}}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),i=require("react"),u=require("../../helpers/class-name.helper.cjs"),a=require("../../helpers/label.helper.cjs"),c=require("../../theme/context.cjs"),n={default:{"spinner":"ui-spinner-7pXwf","spinner__label":"ui-spinner__label-sZvSq","spinner--sm":"ui-spinner--sm-uI0wH","spinner--md":"ui-spinner--md--VmFK","spinner--lg":"ui-spinner--lg-K9k-Z"}},o=({size:s="md",label:t,className:l})=>{const{labels:e}=c.useUi();return r.jsx("span",{className:u.cx(n.default.spinner,n.default[`spinner--${s}`],l),role:"status",children:r.jsx("span",{className:n.default.spinner__label,children:t??a.resolveLabel("Spinner.label",e==null?void 0:e.loading)})})},d=i.memo(o);exports.default=d;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Spinner/index.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, memo } from 'react';\n\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\n\nimport styles from './index.module.scss';\n\ntype Props = {\n size?: 'sm' | 'md' | 'lg';\n /** Ekran okuyucuya okunacak metin; görsel olarak gizli. */\n label?: string;\n className?: string;\n};\n\n/** Yükleme göstergesi. */\nconst Spinner: FC<Props> = ({ size = 'md', label, className }) => {\n const { labels } = useUi();\n\n return (\n <span className={cx(styles.spinner, styles[`spinner--${size}`], className)} role=\"status\">\n <span className={styles.spinner__label}>\n {label ?? resolveLabel('Spinner.label', labels?.loading)}\n </span>\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Spinner) as typeof Spinner;\n"],"names":["Spinner","size","label","className","labels","useUi","jsx","cx","styles","resolveLabel"],"mappings":"wVAiBMA,EAAqB,CAAC,CAAE,KAAAC,EAAO,KAAM,MAAAC,EAAO,UAAAC,KAAgB,CAChE,KAAM,CAAE,OAAAC,CAAA,EAAWC,QAAA,EAEnB,OACEC,EAAAA,IAAC,OAAA,CAAK,UAAWC,EAAAA,GAAGC,EAAAA,QAAO,QAASA,EAAAA,QAAO,YAAYP,CAAI,EAAE,EAAGE,CAAS,EAAG,KAAK,SAC/E,SAAAG,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAAA,QAAO,eACrB,SAAAN,GAASO,EAAAA,aAAa,gBAAiBL,GAAA,YAAAA,EAAQ,OAAO,CAAA,CACzD,CAAA,CACF,CAEJ,EAEAJ,SAAkCA,CAAO"}
@@ -0,0 +1,11 @@
1
+ import { FC } from 'react';
2
+ type Props = {
3
+ size?: 'sm' | 'md' | 'lg';
4
+ /** Ekran okuyucuya okunacak metin; görsel olarak gizli. */
5
+ label?: string;
6
+ className?: string;
7
+ };
8
+ /** Yükleme göstergesi. */
9
+ declare const Spinner: FC<Props>;
10
+ declare const _default: typeof Spinner;
11
+ export default _default;