@tokis/react 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 (354) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -0
  3. package/dist/cjs/components/accordion/index.js +36 -0
  4. package/dist/cjs/components/alert/index.js +14 -0
  5. package/dist/cjs/components/app-bar/index.js +9 -0
  6. package/dist/cjs/components/avatar/index.js +64 -0
  7. package/dist/cjs/components/badge/index.js +6 -0
  8. package/dist/cjs/components/bottom-nav/index.js +12 -0
  9. package/dist/cjs/components/breadcrumbs/index.js +19 -0
  10. package/dist/cjs/components/button/ButtonIcon.js +9 -0
  11. package/dist/cjs/components/button/ButtonLabel.js +9 -0
  12. package/dist/cjs/components/button/ButtonRoot.js +23 -0
  13. package/dist/cjs/components/button/index.js +11 -0
  14. package/dist/cjs/components/button/useButton.js +14 -0
  15. package/dist/cjs/components/card/index.js +25 -0
  16. package/dist/cjs/components/charts/index.js +214 -0
  17. package/dist/cjs/components/checkbox/index.js +18 -0
  18. package/dist/cjs/components/chip/index.js +6 -0
  19. package/dist/cjs/components/circular-progress/index.js +28 -0
  20. package/dist/cjs/components/codeblock/CodeBlock.js +35 -0
  21. package/dist/cjs/components/codeblock/index.js +5 -0
  22. package/dist/cjs/components/command-palette/index.js +84 -0
  23. package/dist/cjs/components/confirm-dialog/index.js +10 -0
  24. package/dist/cjs/components/context-menu/index.js +82 -0
  25. package/dist/cjs/components/dialog/index.js +43 -0
  26. package/dist/cjs/components/divider/index.js +6 -0
  27. package/dist/cjs/components/drawer/index.js +37 -0
  28. package/dist/cjs/components/dropdown/index.js +104 -0
  29. package/dist/cjs/components/emptystate/index.js +9 -0
  30. package/dist/cjs/components/extended/index.js +329 -0
  31. package/dist/cjs/components/hover-card/index.js +107 -0
  32. package/dist/cjs/components/infinite-scroll/index.js +21 -0
  33. package/dist/cjs/components/input/index.js +27 -0
  34. package/dist/cjs/components/layout/index.js +34 -0
  35. package/dist/cjs/components/link/index.js +7 -0
  36. package/dist/cjs/components/list/index.js +14 -0
  37. package/dist/cjs/components/menu/index.js +120 -0
  38. package/dist/cjs/components/nav-rail/index.js +12 -0
  39. package/dist/cjs/components/pagination/index.js +46 -0
  40. package/dist/cjs/components/popover/index.js +114 -0
  41. package/dist/cjs/components/portal/index.js +10 -0
  42. package/dist/cjs/components/progress/index.js +21 -0
  43. package/dist/cjs/components/radio/index.js +60 -0
  44. package/dist/cjs/components/result/index.js +25 -0
  45. package/dist/cjs/components/search-field/index.js +30 -0
  46. package/dist/cjs/components/select/index.js +88 -0
  47. package/dist/cjs/components/skeleton/index.js +6 -0
  48. package/dist/cjs/components/slider/index.js +73 -0
  49. package/dist/cjs/components/snackbar/index.js +41 -0
  50. package/dist/cjs/components/spinner/index.js +6 -0
  51. package/dist/cjs/components/statistic/index.js +17 -0
  52. package/dist/cjs/components/stepper/index.js +24 -0
  53. package/dist/cjs/components/switch/index.js +19 -0
  54. package/dist/cjs/components/table/index.js +26 -0
  55. package/dist/cjs/components/tabs/index.js +44 -0
  56. package/dist/cjs/components/tag/index.js +6 -0
  57. package/dist/cjs/components/timeline/index.js +12 -0
  58. package/dist/cjs/components/toggle/index.js +32 -0
  59. package/dist/cjs/components/tooltip/index.js +116 -0
  60. package/dist/cjs/components/treeview/index.js +89 -0
  61. package/dist/cjs/components/typography/index.js +20 -0
  62. package/dist/cjs/components/virtual-list/index.js +25 -0
  63. package/dist/cjs/context/ConfigProvider.js +22 -0
  64. package/dist/cjs/context/ThemeContext.js +25 -0
  65. package/dist/cjs/hooks/useControllableState.js +31 -0
  66. package/dist/cjs/hooks/useDialog.js +35 -0
  67. package/dist/cjs/hooks/useId.js +13 -0
  68. package/dist/cjs/hooks/useMenu.js +64 -0
  69. package/dist/cjs/hooks/usePopover.js +32 -0
  70. package/dist/cjs/hooks/useTabs.js +51 -0
  71. package/dist/cjs/index.js +102 -0
  72. package/dist/cjs/package.json +3 -0
  73. package/dist/cjs/utils/cn.js +10 -0
  74. package/dist/components/accordion/index.d.ts +19 -0
  75. package/dist/components/accordion/index.d.ts.map +1 -0
  76. package/dist/components/accordion/index.js +34 -0
  77. package/dist/components/accordion/index.js.map +1 -0
  78. package/dist/components/alert/index.d.ts +11 -0
  79. package/dist/components/alert/index.d.ts.map +1 -0
  80. package/dist/components/alert/index.js +12 -0
  81. package/dist/components/alert/index.js.map +1 -0
  82. package/dist/components/app-bar/index.d.ts +17 -0
  83. package/dist/components/app-bar/index.d.ts.map +1 -0
  84. package/dist/components/app-bar/index.js +7 -0
  85. package/dist/components/app-bar/index.js.map +1 -0
  86. package/dist/components/avatar/index.d.ts +33 -0
  87. package/dist/components/avatar/index.d.ts.map +1 -0
  88. package/dist/components/avatar/index.js +28 -0
  89. package/dist/components/avatar/index.js.map +1 -0
  90. package/dist/components/badge/index.d.ts +3 -0
  91. package/dist/components/badge/index.d.ts.map +1 -0
  92. package/dist/components/badge/index.js +3 -0
  93. package/dist/components/badge/index.js.map +1 -0
  94. package/dist/components/bottom-nav/index.d.ts +18 -0
  95. package/dist/components/bottom-nav/index.d.ts.map +1 -0
  96. package/dist/components/bottom-nav/index.js +10 -0
  97. package/dist/components/bottom-nav/index.js.map +1 -0
  98. package/dist/components/breadcrumbs/index.d.ts +19 -0
  99. package/dist/components/breadcrumbs/index.d.ts.map +1 -0
  100. package/dist/components/breadcrumbs/index.js +17 -0
  101. package/dist/components/breadcrumbs/index.js.map +1 -0
  102. package/dist/components/button/ButtonIcon.d.ts +8 -0
  103. package/dist/components/button/ButtonIcon.d.ts.map +1 -0
  104. package/dist/components/button/ButtonIcon.js +6 -0
  105. package/dist/components/button/ButtonIcon.js.map +1 -0
  106. package/dist/components/button/ButtonLabel.d.ts +6 -0
  107. package/dist/components/button/ButtonLabel.d.ts.map +1 -0
  108. package/dist/components/button/ButtonLabel.js +6 -0
  109. package/dist/components/button/ButtonLabel.js.map +1 -0
  110. package/dist/components/button/ButtonRoot.d.ts +15 -0
  111. package/dist/components/button/ButtonRoot.d.ts.map +1 -0
  112. package/dist/components/button/ButtonRoot.js +21 -0
  113. package/dist/components/button/ButtonRoot.js.map +1 -0
  114. package/dist/components/button/index.d.ts +9 -0
  115. package/dist/components/button/index.d.ts.map +1 -0
  116. package/dist/components/button/index.js +5 -0
  117. package/dist/components/button/index.js.map +1 -0
  118. package/dist/components/button/useButton.d.ts +16 -0
  119. package/dist/components/button/useButton.d.ts.map +1 -0
  120. package/dist/components/button/useButton.js +12 -0
  121. package/dist/components/button/useButton.js.map +1 -0
  122. package/dist/components/card/index.d.ts +17 -0
  123. package/dist/components/card/index.d.ts.map +1 -0
  124. package/dist/components/card/index.js +23 -0
  125. package/dist/components/card/index.js.map +1 -0
  126. package/dist/components/charts/index.d.ts +60 -0
  127. package/dist/components/charts/index.d.ts.map +1 -0
  128. package/dist/components/charts/index.js +209 -0
  129. package/dist/components/charts/index.js.map +1 -0
  130. package/dist/components/checkbox/index.d.ts +17 -0
  131. package/dist/components/checkbox/index.d.ts.map +1 -0
  132. package/dist/components/checkbox/index.js +16 -0
  133. package/dist/components/checkbox/index.js.map +1 -0
  134. package/dist/components/chip/index.d.ts +3 -0
  135. package/dist/components/chip/index.d.ts.map +1 -0
  136. package/dist/components/chip/index.js +3 -0
  137. package/dist/components/chip/index.js.map +1 -0
  138. package/dist/components/circular-progress/index.d.ts +15 -0
  139. package/dist/components/circular-progress/index.d.ts.map +1 -0
  140. package/dist/components/circular-progress/index.js +26 -0
  141. package/dist/components/circular-progress/index.js.map +1 -0
  142. package/dist/components/codeblock/CodeBlock.d.ts +13 -0
  143. package/dist/components/codeblock/CodeBlock.d.ts.map +1 -0
  144. package/dist/components/codeblock/CodeBlock.js +32 -0
  145. package/dist/components/codeblock/CodeBlock.js.map +1 -0
  146. package/dist/components/codeblock/index.d.ts +3 -0
  147. package/dist/components/codeblock/index.d.ts.map +1 -0
  148. package/dist/components/codeblock/index.js +2 -0
  149. package/dist/components/codeblock/index.js.map +1 -0
  150. package/dist/components/command-palette/index.d.ts +22 -0
  151. package/dist/components/command-palette/index.d.ts.map +1 -0
  152. package/dist/components/command-palette/index.js +82 -0
  153. package/dist/components/command-palette/index.js.map +1 -0
  154. package/dist/components/confirm-dialog/index.d.ts +17 -0
  155. package/dist/components/confirm-dialog/index.d.ts.map +1 -0
  156. package/dist/components/confirm-dialog/index.js +8 -0
  157. package/dist/components/confirm-dialog/index.js.map +1 -0
  158. package/dist/components/context-menu/index.d.ts +19 -0
  159. package/dist/components/context-menu/index.d.ts.map +1 -0
  160. package/dist/components/context-menu/index.js +47 -0
  161. package/dist/components/context-menu/index.js.map +1 -0
  162. package/dist/components/dialog/index.d.ts +16 -0
  163. package/dist/components/dialog/index.d.ts.map +1 -0
  164. package/dist/components/dialog/index.js +41 -0
  165. package/dist/components/dialog/index.js.map +1 -0
  166. package/dist/components/divider/index.d.ts +3 -0
  167. package/dist/components/divider/index.d.ts.map +1 -0
  168. package/dist/components/divider/index.js +3 -0
  169. package/dist/components/divider/index.js.map +1 -0
  170. package/dist/components/drawer/index.d.ts +16 -0
  171. package/dist/components/drawer/index.d.ts.map +1 -0
  172. package/dist/components/drawer/index.js +35 -0
  173. package/dist/components/drawer/index.js.map +1 -0
  174. package/dist/components/dropdown/index.d.ts +16 -0
  175. package/dist/components/dropdown/index.d.ts.map +1 -0
  176. package/dist/components/dropdown/index.js +69 -0
  177. package/dist/components/dropdown/index.js.map +1 -0
  178. package/dist/components/emptystate/index.d.ts +13 -0
  179. package/dist/components/emptystate/index.d.ts.map +1 -0
  180. package/dist/components/emptystate/index.js +7 -0
  181. package/dist/components/emptystate/index.js.map +1 -0
  182. package/dist/components/extended/index.d.ts +163 -0
  183. package/dist/components/extended/index.d.ts.map +1 -0
  184. package/dist/components/extended/index.js +267 -0
  185. package/dist/components/extended/index.js.map +1 -0
  186. package/dist/components/hover-card/index.d.ts +14 -0
  187. package/dist/components/hover-card/index.d.ts.map +1 -0
  188. package/dist/components/hover-card/index.js +72 -0
  189. package/dist/components/hover-card/index.js.map +1 -0
  190. package/dist/components/infinite-scroll/index.d.ts +16 -0
  191. package/dist/components/infinite-scroll/index.d.ts.map +1 -0
  192. package/dist/components/infinite-scroll/index.js +19 -0
  193. package/dist/components/infinite-scroll/index.js.map +1 -0
  194. package/dist/components/input/index.d.ts +19 -0
  195. package/dist/components/input/index.d.ts.map +1 -0
  196. package/dist/components/input/index.js +25 -0
  197. package/dist/components/input/index.js.map +1 -0
  198. package/dist/components/layout/index.d.ts +39 -0
  199. package/dist/components/layout/index.d.ts.map +1 -0
  200. package/dist/components/layout/index.js +32 -0
  201. package/dist/components/layout/index.js.map +1 -0
  202. package/dist/components/link/index.d.ts +3 -0
  203. package/dist/components/link/index.d.ts.map +1 -0
  204. package/dist/components/link/index.js +3 -0
  205. package/dist/components/link/index.js.map +1 -0
  206. package/dist/components/list/index.d.ts +13 -0
  207. package/dist/components/list/index.d.ts.map +1 -0
  208. package/dist/components/list/index.js +12 -0
  209. package/dist/components/list/index.js.map +1 -0
  210. package/dist/components/menu/index.d.ts +19 -0
  211. package/dist/components/menu/index.d.ts.map +1 -0
  212. package/dist/components/menu/index.js +85 -0
  213. package/dist/components/menu/index.js.map +1 -0
  214. package/dist/components/nav-rail/index.d.ts +20 -0
  215. package/dist/components/nav-rail/index.d.ts.map +1 -0
  216. package/dist/components/nav-rail/index.js +10 -0
  217. package/dist/components/nav-rail/index.js.map +1 -0
  218. package/dist/components/pagination/index.d.ts +9 -0
  219. package/dist/components/pagination/index.d.ts.map +1 -0
  220. package/dist/components/pagination/index.js +44 -0
  221. package/dist/components/pagination/index.js.map +1 -0
  222. package/dist/components/popover/index.d.ts +16 -0
  223. package/dist/components/popover/index.d.ts.map +1 -0
  224. package/dist/components/popover/index.js +79 -0
  225. package/dist/components/popover/index.js.map +1 -0
  226. package/dist/components/portal/index.d.ts +7 -0
  227. package/dist/components/portal/index.d.ts.map +1 -0
  228. package/dist/components/portal/index.js +8 -0
  229. package/dist/components/portal/index.js.map +1 -0
  230. package/dist/components/progress/index.d.ts +25 -0
  231. package/dist/components/progress/index.d.ts.map +1 -0
  232. package/dist/components/progress/index.js +19 -0
  233. package/dist/components/progress/index.js.map +1 -0
  234. package/dist/components/radio/index.d.ts +25 -0
  235. package/dist/components/radio/index.d.ts.map +1 -0
  236. package/dist/components/radio/index.js +24 -0
  237. package/dist/components/radio/index.js.map +1 -0
  238. package/dist/components/result/index.d.ts +14 -0
  239. package/dist/components/result/index.d.ts.map +1 -0
  240. package/dist/components/result/index.js +23 -0
  241. package/dist/components/result/index.js.map +1 -0
  242. package/dist/components/search-field/index.d.ts +15 -0
  243. package/dist/components/search-field/index.d.ts.map +1 -0
  244. package/dist/components/search-field/index.js +28 -0
  245. package/dist/components/search-field/index.js.map +1 -0
  246. package/dist/components/select/index.d.ts +23 -0
  247. package/dist/components/select/index.d.ts.map +1 -0
  248. package/dist/components/select/index.js +86 -0
  249. package/dist/components/select/index.js.map +1 -0
  250. package/dist/components/skeleton/index.d.ts +3 -0
  251. package/dist/components/skeleton/index.d.ts.map +1 -0
  252. package/dist/components/skeleton/index.js +3 -0
  253. package/dist/components/skeleton/index.js.map +1 -0
  254. package/dist/components/slider/index.d.ts +18 -0
  255. package/dist/components/slider/index.d.ts.map +1 -0
  256. package/dist/components/slider/index.js +71 -0
  257. package/dist/components/slider/index.js.map +1 -0
  258. package/dist/components/snackbar/index.d.ts +27 -0
  259. package/dist/components/snackbar/index.d.ts.map +1 -0
  260. package/dist/components/snackbar/index.js +38 -0
  261. package/dist/components/snackbar/index.js.map +1 -0
  262. package/dist/components/spinner/index.d.ts +3 -0
  263. package/dist/components/spinner/index.d.ts.map +1 -0
  264. package/dist/components/spinner/index.js +3 -0
  265. package/dist/components/spinner/index.js.map +1 -0
  266. package/dist/components/statistic/index.d.ts +13 -0
  267. package/dist/components/statistic/index.d.ts.map +1 -0
  268. package/dist/components/statistic/index.js +15 -0
  269. package/dist/components/statistic/index.js.map +1 -0
  270. package/dist/components/stepper/index.d.ts +17 -0
  271. package/dist/components/stepper/index.d.ts.map +1 -0
  272. package/dist/components/stepper/index.js +22 -0
  273. package/dist/components/stepper/index.js.map +1 -0
  274. package/dist/components/switch/index.d.ts +16 -0
  275. package/dist/components/switch/index.d.ts.map +1 -0
  276. package/dist/components/switch/index.js +17 -0
  277. package/dist/components/switch/index.js.map +1 -0
  278. package/dist/components/table/index.d.ts +17 -0
  279. package/dist/components/table/index.d.ts.map +1 -0
  280. package/dist/components/table/index.js +24 -0
  281. package/dist/components/table/index.js.map +1 -0
  282. package/dist/components/tabs/index.d.ts +19 -0
  283. package/dist/components/tabs/index.d.ts.map +1 -0
  284. package/dist/components/tabs/index.js +42 -0
  285. package/dist/components/tabs/index.js.map +1 -0
  286. package/dist/components/tag/index.d.ts +3 -0
  287. package/dist/components/tag/index.d.ts.map +1 -0
  288. package/dist/components/tag/index.js +3 -0
  289. package/dist/components/tag/index.js.map +1 -0
  290. package/dist/components/timeline/index.d.ts +16 -0
  291. package/dist/components/timeline/index.d.ts.map +1 -0
  292. package/dist/components/timeline/index.js +10 -0
  293. package/dist/components/timeline/index.js.map +1 -0
  294. package/dist/components/toggle/index.d.ts +32 -0
  295. package/dist/components/toggle/index.d.ts.map +1 -0
  296. package/dist/components/toggle/index.js +29 -0
  297. package/dist/components/toggle/index.js.map +1 -0
  298. package/dist/components/tooltip/index.d.ts +11 -0
  299. package/dist/components/tooltip/index.d.ts.map +1 -0
  300. package/dist/components/tooltip/index.js +81 -0
  301. package/dist/components/tooltip/index.js.map +1 -0
  302. package/dist/components/treeview/index.d.ts +19 -0
  303. package/dist/components/treeview/index.d.ts.map +1 -0
  304. package/dist/components/treeview/index.js +87 -0
  305. package/dist/components/treeview/index.js.map +1 -0
  306. package/dist/components/typography/index.d.ts +11 -0
  307. package/dist/components/typography/index.d.ts.map +1 -0
  308. package/dist/components/typography/index.js +18 -0
  309. package/dist/components/typography/index.js.map +1 -0
  310. package/dist/components/virtual-list/index.d.ts +15 -0
  311. package/dist/components/virtual-list/index.d.ts.map +1 -0
  312. package/dist/components/virtual-list/index.js +23 -0
  313. package/dist/components/virtual-list/index.js.map +1 -0
  314. package/dist/context/ConfigProvider.d.ts +12 -0
  315. package/dist/context/ConfigProvider.d.ts.map +1 -0
  316. package/dist/context/ConfigProvider.js +18 -0
  317. package/dist/context/ConfigProvider.js.map +1 -0
  318. package/dist/context/ThemeContext.d.ts +15 -0
  319. package/dist/context/ThemeContext.d.ts.map +1 -0
  320. package/dist/context/ThemeContext.js +21 -0
  321. package/dist/context/ThemeContext.js.map +1 -0
  322. package/dist/hooks/useControllableState.d.ts +10 -0
  323. package/dist/hooks/useControllableState.d.ts.map +1 -0
  324. package/dist/hooks/useControllableState.js +29 -0
  325. package/dist/hooks/useControllableState.js.map +1 -0
  326. package/dist/hooks/useDialog.d.ts +24 -0
  327. package/dist/hooks/useDialog.d.ts.map +1 -0
  328. package/dist/hooks/useDialog.js +33 -0
  329. package/dist/hooks/useDialog.js.map +1 -0
  330. package/dist/hooks/useId.d.ts +7 -0
  331. package/dist/hooks/useId.d.ts.map +1 -0
  332. package/dist/hooks/useId.js +11 -0
  333. package/dist/hooks/useId.js.map +1 -0
  334. package/dist/hooks/useMenu.d.ts +21 -0
  335. package/dist/hooks/useMenu.d.ts.map +1 -0
  336. package/dist/hooks/useMenu.js +62 -0
  337. package/dist/hooks/useMenu.js.map +1 -0
  338. package/dist/hooks/usePopover.d.ts +22 -0
  339. package/dist/hooks/usePopover.d.ts.map +1 -0
  340. package/dist/hooks/usePopover.js +30 -0
  341. package/dist/hooks/usePopover.js.map +1 -0
  342. package/dist/hooks/useTabs.d.ts +22 -0
  343. package/dist/hooks/useTabs.d.ts.map +1 -0
  344. package/dist/hooks/useTabs.js +49 -0
  345. package/dist/hooks/useTabs.js.map +1 -0
  346. package/dist/index.d.ts +65 -0
  347. package/dist/index.d.ts.map +1 -0
  348. package/dist/index.js +85 -0
  349. package/dist/index.js.map +1 -0
  350. package/dist/utils/cn.d.ts +6 -0
  351. package/dist/utils/cn.d.ts.map +1 -0
  352. package/dist/utils/cn.js +8 -0
  353. package/dist/utils/cn.js.map +1 -0
  354. package/package.json +79 -0
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef, useEffect, useId } from 'react';
3
+ import { cn } from '../../utils/cn.js';
4
+ export function Checkbox({ label, description, checked, defaultChecked, indeterminate = false, disabled = false, onChange, id, name, value, className, 'aria-label': ariaLabel, }) {
5
+ const autoId = useId();
6
+ const inputId = id ?? `checkbox-${autoId}`;
7
+ const descId = description ? `${inputId}-desc` : undefined;
8
+ const inputRef = useRef(null);
9
+ useEffect(() => {
10
+ if (inputRef.current) {
11
+ inputRef.current.indeterminate = indeterminate;
12
+ }
13
+ }, [indeterminate]);
14
+ return (_jsxs("label", { className: cn('tokis-checkbox-root', className), "data-disabled": disabled || undefined, htmlFor: inputId, children: [_jsx("input", { ref: inputRef, type: "checkbox", id: inputId, name: name, value: value, checked: checked, defaultChecked: defaultChecked, disabled: disabled, onChange: (e) => onChange?.(e.target.checked), className: "tokis-checkbox-native", "aria-label": !label ? ariaLabel : undefined, "aria-describedby": descId }), _jsx("span", { "aria-hidden": "true", className: "tokis-checkbox-control", "data-checked": checked && !indeterminate ? 'true' : undefined, "data-indeterminate": indeterminate ? 'true' : undefined }), (label || description) && (_jsxs("div", { children: [label && _jsx("span", { className: "tokis-checkbox-label", children: label }), description && _jsx("p", { id: descId, className: "tokis-checkbox-description", children: description })] }))] }));
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/checkbox/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAiBvC,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,GAAG,KAAK,EAClE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GACjE;IACd,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,EAAE,IAAI,YAAY,MAAM,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,iBACE,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,mBAChC,QAAQ,IAAI,SAAS,EACpC,OAAO,EAAE,OAAO,aAEhB,gBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC7C,SAAS,EAAC,uBAAuB,gBACrB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,sBACxB,MAAM,GACxB,EACF,8BACc,MAAM,EAClB,SAAS,EAAC,wBAAwB,kBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,wBACxC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GACtD,EACD,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,0BACG,KAAK,IAAI,eAAM,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAQ,EAC9D,WAAW,IAAI,YAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,IACnF,CACP,IACK,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Chip } from '../avatar/index.js';
2
+ export type { ChipProps } from '../avatar/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/chip/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Re-export Chip from avatar
2
+ export { Chip } from '../avatar/index.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/chip/index.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export type CircularProgressSize = 'sm' | 'md' | 'lg' | 'xl';
3
+ export interface CircularProgressProps {
4
+ value?: number;
5
+ size?: CircularProgressSize;
6
+ strokeWidth?: number;
7
+ label?: React.ReactNode;
8
+ variant?: 'default' | 'success' | 'warning' | 'error';
9
+ className?: string;
10
+ }
11
+ export declare function CircularProgress({ value, size, strokeWidth, label, variant, className, }: CircularProgressProps): JSX.Element;
12
+ export declare namespace CircularProgress {
13
+ var displayName: string;
14
+ }
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/circular-progress/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAW,EACX,WAAW,EACX,KAAK,EACL,OAAmB,EACnB,SAAS,GACV,EAAE,qBAAqB,GAAG,GAAG,CAAC,OAAO,CA2CrC;yBAlDe,gBAAgB"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../../utils/cn.js';
3
+ const sizeMap = {
4
+ sm: 32,
5
+ md: 48,
6
+ lg: 64,
7
+ xl: 80,
8
+ };
9
+ const strokeWidthMap = {
10
+ sm: 3,
11
+ md: 4,
12
+ lg: 5,
13
+ xl: 6,
14
+ };
15
+ export function CircularProgress({ value, size = 'md', strokeWidth, label, variant = 'default', className, }) {
16
+ const svgSize = sizeMap[size];
17
+ const sw = strokeWidth ?? strokeWidthMap[size];
18
+ const radius = (svgSize - sw) / 2;
19
+ const circumference = 2 * Math.PI * radius;
20
+ const isIndeterminate = value === undefined;
21
+ const clampedValue = Math.min(100, Math.max(0, value ?? 0));
22
+ const offset = circumference * (1 - clampedValue / 100);
23
+ return (_jsxs("div", { className: cn('tokis-circular-progress', `tokis-circular-progress--${size}`, `tokis-circular-progress--${variant}`, isIndeterminate && 'tokis-circular-progress--indeterminate', className), role: "progressbar", "aria-valuenow": isIndeterminate ? undefined : clampedValue, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": isIndeterminate ? 'Loading…' : `${clampedValue}%`, children: [_jsxs("svg", { width: svgSize, height: svgSize, viewBox: `0 0 ${svgSize} ${svgSize}`, fill: "none", children: [_jsx("circle", { className: "tokis-circular-progress__track", cx: svgSize / 2, cy: svgSize / 2, r: radius, strokeWidth: sw }), _jsx("circle", { className: "tokis-circular-progress__fill", cx: svgSize / 2, cy: svgSize / 2, r: radius, strokeWidth: sw, strokeDasharray: circumference, strokeDashoffset: isIndeterminate ? circumference * 0.75 : offset, strokeLinecap: "round", transform: `rotate(-90 ${svgSize / 2} ${svgSize / 2})` })] }), label && _jsx("div", { className: "tokis-circular-progress__label", children: label })] }));
24
+ }
25
+ CircularProgress.displayName = 'CircularProgress';
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/circular-progress/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAavC,MAAM,OAAO,GAAyC;IACpD,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;CACP,CAAC;AAEF,MAAM,cAAc,GAAyC;IAC3D,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;CACN,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAI,GAAG,IAAI,EACX,WAAW,EACX,KAAK,EACL,OAAO,GAAG,SAAS,EACnB,SAAS,GACa;IACtB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,WAAW,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;IAC3C,MAAM,eAAe,GAAG,KAAK,KAAK,SAAS,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC;IAExD,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,4BAA4B,IAAI,EAAE,EAAE,4BAA4B,OAAO,EAAE,EAAE,eAAe,IAAI,wCAAwC,EAAE,SAAS,CAAC,EAC3L,IAAI,EAAC,aAAa,mBACH,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,mBAC1C,CAAC,mBACD,GAAG,gBACN,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,aAE7D,eAAK,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,OAAO,IAAI,OAAO,EAAE,EAAE,IAAI,EAAC,MAAM,aAErF,iBACE,SAAS,EAAC,gCAAgC,EAC1C,EAAE,EAAE,OAAO,GAAG,CAAC,EACf,EAAE,EAAE,OAAO,GAAG,CAAC,EACf,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,EAAE,GACf,EAEF,iBACE,SAAS,EAAC,+BAA+B,EACzC,EAAE,EAAE,OAAO,GAAG,CAAC,EACf,EAAE,EAAE,OAAO,GAAG,CAAC,EACf,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,EAAE,EACf,eAAe,EAAE,aAAa,EAC9B,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EACjE,aAAa,EAAC,OAAO,EACrB,SAAS,EAAE,cAAc,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,GACtD,IACE,EACL,KAAK,IAAI,cAAK,SAAS,EAAC,gCAAgC,YAAE,KAAK,GAAO,IACnE,CACP,CAAC;AACJ,CAAC;AAED,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export type CodeBlockTheme = 'dark' | 'light' | 'auto';
3
+ export interface CodeBlockProps {
4
+ code: string;
5
+ language?: string;
6
+ filename?: string;
7
+ highlightedHtml?: string;
8
+ showLineNumbers?: boolean;
9
+ theme?: CodeBlockTheme;
10
+ className?: string;
11
+ }
12
+ export declare const CodeBlock: React.FC<CodeBlockProps>;
13
+ //# sourceMappingURL=CodeBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../../src/components/codeblock/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAGrD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2E9C,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from 'react';
3
+ import { cn } from '../../utils/cn.js';
4
+ const CopyIcon = () => (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: [_jsx("rect", { x: "4", y: "4", width: "8", height: "8", rx: "1.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M10 4V2.5A1.5 1.5 0 0 0 8.5 1h-6A1.5 1.5 0 0 0 1 2.5v6A1.5 1.5 0 0 0 2.5 10H4", stroke: "currentColor", strokeWidth: "1.5" })] }));
5
+ const CheckIcon = () => (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M2 7l3.5 3.5L12 4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
6
+ export const CodeBlock = ({ code, language, filename, highlightedHtml, showLineNumbers = false, theme = 'auto', className, }) => {
7
+ const [copied, setCopied] = useState(false);
8
+ const handleCopy = useCallback(async () => {
9
+ try {
10
+ await navigator.clipboard.writeText(code);
11
+ setCopied(true);
12
+ setTimeout(() => setCopied(false), 2000);
13
+ }
14
+ catch {
15
+ // Fallback for browsers without clipboard API
16
+ const textarea = document.createElement('textarea');
17
+ textarea.value = code;
18
+ textarea.style.position = 'fixed';
19
+ textarea.style.opacity = '0';
20
+ document.body.appendChild(textarea);
21
+ textarea.select();
22
+ document.execCommand('copy');
23
+ document.body.removeChild(textarea);
24
+ setCopied(true);
25
+ setTimeout(() => setCopied(false), 2000);
26
+ }
27
+ }, [code]);
28
+ const lines = code.split('\n');
29
+ return (_jsxs("div", { className: cn('tokis-codeblock', className), "data-codeblock-theme": theme !== 'auto' ? theme : undefined, children: [_jsxs("div", { className: "tokis-codeblock__header", children: [_jsx("span", { className: "tokis-codeblock__lang", children: filename ?? language ?? 'code' }), _jsxs("button", { type: "button", className: cn('tokis-codeblock__copy', copied && 'tokis-codeblock__copy--copied'), onClick: handleCopy, "aria-label": copied ? 'Copied!' : 'Copy code', children: [copied ? _jsx(CheckIcon, {}) : _jsx(CopyIcon, {}), _jsx("span", { children: copied ? 'Copied!' : 'Copy' })] })] }), _jsxs("div", { className: "tokis-codeblock__body", children: [showLineNumbers && (_jsx("div", { className: "tokis-codeblock__lines", "aria-hidden": "true", children: lines.map((_, i) => (_jsx("span", { className: "tokis-codeblock__line-num", children: i + 1 }, i))) })), _jsx("pre", { className: "tokis-codeblock__pre", children: highlightedHtml ? (_jsx("code", { className: cn('tokis-codeblock__code', language && `language-${language}`), dangerouslySetInnerHTML: { __html: highlightedHtml } })) : (_jsx("code", { className: cn('tokis-codeblock__code', language && `language-${language}`), children: code })) })] })] }));
30
+ };
31
+ CodeBlock.displayName = 'CodeBlock';
32
+ //# sourceMappingURL=CodeBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../src/components/codeblock/CodeBlock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { CodeBlock } from './CodeBlock.js';
2
+ export type { CodeBlockProps } from './CodeBlock.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/codeblock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { CodeBlock } from './CodeBlock.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/codeblock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ export interface CommandItem {
3
+ id: string;
4
+ label: string;
5
+ description?: string;
6
+ icon?: React.ReactNode;
7
+ shortcut?: string[];
8
+ category?: string;
9
+ onSelect: () => void;
10
+ }
11
+ export interface CommandPaletteProps {
12
+ open: boolean;
13
+ onClose: () => void;
14
+ items: CommandItem[];
15
+ placeholder?: string;
16
+ className?: string;
17
+ }
18
+ export declare function CommandPalette({ open, onClose, items, placeholder, className, }: CommandPaletteProps): JSX.Element | null;
19
+ export declare namespace CommandPalette {
20
+ var displayName: string;
21
+ }
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAKjF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,OAAO,EACP,KAAK,EACL,WAAgC,EAChC,SAAS,GACV,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAsJ1C;yBA5Je,cAAc"}
@@ -0,0 +1,82 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect, useRef, useMemo, useCallback } from 'react';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { Portal } from '../portal/index.js';
5
+ import { trapFocus } from '@tokis/core';
6
+ export function CommandPalette({ open, onClose, items, placeholder = 'Search commands…', className, }) {
7
+ const [query, setQuery] = useState('');
8
+ const [activeIndex, setActiveIndex] = useState(0);
9
+ const containerRef = useRef(null);
10
+ const inputRef = useRef(null);
11
+ const filtered = useMemo(() => {
12
+ const q = query.trim().toLowerCase();
13
+ if (!q)
14
+ return items;
15
+ return items.filter((item) => item.label.toLowerCase().includes(q) ||
16
+ item.description?.toLowerCase().includes(q) ||
17
+ item.category?.toLowerCase().includes(q));
18
+ }, [query, items]);
19
+ const grouped = useMemo(() => {
20
+ const map = new Map();
21
+ for (const item of filtered) {
22
+ const cat = item.category ?? '';
23
+ if (!map.has(cat))
24
+ map.set(cat, []);
25
+ map.get(cat).push(item);
26
+ }
27
+ return map;
28
+ }, [filtered]);
29
+ const flatFiltered = filtered;
30
+ const handleSelect = useCallback((item) => {
31
+ item.onSelect();
32
+ onClose();
33
+ setQuery('');
34
+ setActiveIndex(0);
35
+ }, [onClose]);
36
+ useEffect(() => {
37
+ if (!open) {
38
+ setQuery('');
39
+ setActiveIndex(0);
40
+ return;
41
+ }
42
+ const cleanup = containerRef.current ? trapFocus(containerRef.current) : undefined;
43
+ inputRef.current?.focus();
44
+ return () => cleanup?.();
45
+ }, [open]);
46
+ useEffect(() => {
47
+ if (!open)
48
+ return;
49
+ const onKey = (e) => {
50
+ if (e.key === 'Escape') {
51
+ onClose();
52
+ return;
53
+ }
54
+ if (e.key === 'ArrowDown') {
55
+ e.preventDefault();
56
+ setActiveIndex((i) => Math.min(i + 1, flatFiltered.length - 1));
57
+ }
58
+ else if (e.key === 'ArrowUp') {
59
+ e.preventDefault();
60
+ setActiveIndex((i) => Math.max(i - 1, 0));
61
+ }
62
+ else if (e.key === 'Enter') {
63
+ const item = flatFiltered[activeIndex];
64
+ if (item)
65
+ handleSelect(item);
66
+ }
67
+ };
68
+ document.addEventListener('keydown', onKey);
69
+ return () => document.removeEventListener('keydown', onKey);
70
+ }, [open, flatFiltered, activeIndex, handleSelect, onClose]);
71
+ useEffect(() => { setActiveIndex(0); }, [query]);
72
+ if (!open)
73
+ return null;
74
+ let globalIndex = 0;
75
+ return (_jsxs(Portal, { children: [_jsx("div", { className: "tokis-command-palette-backdrop", "aria-hidden": "true", onClick: onClose }), _jsxs("div", { ref: containerRef, className: cn('tokis-command-palette', className), role: "dialog", "aria-label": "Command palette", "aria-modal": "true", children: [_jsxs("div", { className: "tokis-command-palette__search", children: [_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", className: "tokis-command-palette__search-icon", children: [_jsx("circle", { cx: "7", cy: "7", r: "4.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M11 11l3 3", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }), _jsx("input", { ref: inputRef, type: "text", className: "tokis-command-palette__input", placeholder: placeholder, value: query, onChange: (e) => setQuery(e.target.value), "aria-label": placeholder, autoComplete: "off", spellCheck: false })] }), _jsx("div", { className: "tokis-command-palette__list", role: "listbox", children: filtered.length === 0 ? (_jsx("div", { className: "tokis-command-palette__empty", children: "No commands found" })) : (Array.from(grouped.entries()).map(([category, categoryItems]) => (_jsxs("div", { className: "tokis-command-palette__group", children: [category && (_jsx("div", { className: "tokis-command-palette__group-label", children: category })), categoryItems.map((item) => {
76
+ const idx = globalIndex++;
77
+ const isActive = activeIndex === idx;
78
+ return (_jsxs("button", { role: "option", "aria-selected": isActive, className: cn('tokis-command-palette__item', isActive && 'tokis-command-palette__item--active'), onClick: () => handleSelect(item), onMouseEnter: () => setActiveIndex(idx), children: [item.icon && (_jsx("span", { className: "tokis-command-palette__item-icon", "aria-hidden": "true", children: item.icon })), _jsxs("span", { className: "tokis-command-palette__item-content", children: [_jsx("span", { className: "tokis-command-palette__item-label", children: item.label }), item.description && (_jsx("span", { className: "tokis-command-palette__item-desc", children: item.description }))] }), item.shortcut && (_jsx("span", { className: "tokis-command-palette__shortcut", "aria-label": `Shortcut: ${item.shortcut.join('+')}`, children: item.shortcut.map((k, ki) => (_jsx("kbd", { className: "tokis-command-palette__kbd", children: k }, ki))) }))] }, item.id));
79
+ })] }, category)))) })] })] }));
80
+ }
81
+ CommandPalette.displayName = 'CommandPalette';
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/command-palette/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface ConfirmDialogProps {
2
+ open: boolean;
3
+ onClose: () => void;
4
+ onConfirm: () => void;
5
+ title: string;
6
+ description?: string;
7
+ confirmLabel?: string;
8
+ cancelLabel?: string;
9
+ destructive?: boolean;
10
+ loading?: boolean;
11
+ className?: string;
12
+ }
13
+ export declare function ConfirmDialog({ open, onClose, onConfirm, title, description, confirmLabel, cancelLabel, destructive, loading, className, }: ConfirmDialogProps): JSX.Element;
14
+ export declare namespace ConfirmDialog {
15
+ var displayName: string;
16
+ }
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/confirm-dialog/index.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAwB,EACxB,WAAsB,EACtB,WAAmB,EACnB,OAAe,EACf,SAAS,GACV,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAmClC;yBA9Ce,aAAa"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Dialog } from '../dialog/index.js';
3
+ import { cn } from '../../utils/cn.js';
4
+ export function ConfirmDialog({ open, onClose, onConfirm, title, description, confirmLabel = 'Confirm', cancelLabel = 'Cancel', destructive = false, loading = false, className, }) {
5
+ return (_jsx(Dialog, { open: open, onClose: onClose, title: title, description: description, size: "sm", className: cn('tokis-confirm-dialog', className), footer: _jsxs("div", { className: "tokis-confirm-dialog__actions", children: [_jsx("button", { type: "button", className: "tokis-confirm-dialog__cancel", onClick: onClose, disabled: loading, children: cancelLabel }), _jsxs("button", { type: "button", className: cn('tokis-confirm-dialog__confirm', destructive && 'tokis-confirm-dialog__confirm--destructive'), onClick: onConfirm, disabled: loading, "aria-busy": loading, children: [loading ? (_jsx("span", { className: "tokis-confirm-dialog__spinner", "aria-hidden": "true" })) : null, confirmLabel] })] }) }));
6
+ }
7
+ ConfirmDialog.displayName = 'ConfirmDialog';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/confirm-dialog/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAevC,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,EACtB,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,KAAK,EACf,SAAS,GACU;IACnB,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,EAChD,MAAM,EACJ,eAAK,SAAS,EAAC,+BAA+B,aAC5C,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,8BAA8B,EACxC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,YAEhB,WAAW,GACL,EACT,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,WAAW,IAAI,4CAA4C,CAAC,EAC3G,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,OAAO,eACN,OAAO,aAEjB,OAAO,CAAC,CAAC,CAAC,CACT,eAAM,SAAS,EAAC,+BAA+B,iBAAa,MAAM,GAAG,CACtE,CAAC,CAAC,CAAC,IAAI,EACP,YAAY,IACN,IACL,GAER,CACH,CAAC;AACJ,CAAC;AAED,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ export interface ContextMenuItem {
3
+ type: 'item' | 'separator' | 'label';
4
+ label?: string;
5
+ icon?: React.ReactNode;
6
+ onClick?: () => void;
7
+ disabled?: boolean;
8
+ destructive?: boolean;
9
+ }
10
+ export interface ContextMenuProps {
11
+ items: ContextMenuItem[];
12
+ children: React.ReactElement;
13
+ className?: string;
14
+ }
15
+ export declare function ContextMenu({ items, children, className }: ContextMenuProps): JSX.Element;
16
+ export declare namespace ContextMenu {
17
+ var displayName: string;
18
+ }
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/context-menu/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAyEzF;yBAzEe,WAAW"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import React, { useState, useEffect, useRef, useCallback } from 'react';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { Portal } from '../portal/index.js';
5
+ export function ContextMenu({ items, children, className }) {
6
+ const [visible, setVisible] = useState(false);
7
+ const [pos, setPos] = useState({ x: 0, y: 0 });
8
+ const menuRef = useRef(null);
9
+ const close = useCallback(() => setVisible(false), []);
10
+ const handleContextMenu = useCallback((e) => {
11
+ e.preventDefault();
12
+ setPos({ x: e.clientX, y: e.clientY });
13
+ setVisible(true);
14
+ }, []);
15
+ useEffect(() => {
16
+ if (!visible)
17
+ return;
18
+ const onKey = (e) => { if (e.key === 'Escape')
19
+ close(); };
20
+ const onClick = (e) => {
21
+ if (menuRef.current && !menuRef.current.contains(e.target))
22
+ close();
23
+ };
24
+ document.addEventListener('keydown', onKey);
25
+ document.addEventListener('mousedown', onClick);
26
+ return () => {
27
+ document.removeEventListener('keydown', onKey);
28
+ document.removeEventListener('mousedown', onClick);
29
+ };
30
+ }, [visible, close]);
31
+ useEffect(() => {
32
+ if (!visible || !menuRef.current)
33
+ return;
34
+ menuRef.current.focus();
35
+ }, [visible]);
36
+ return (_jsxs(_Fragment, { children: [React.cloneElement(children, { onContextMenu: handleContextMenu }), visible && (_jsx(Portal, { children: _jsx("div", { ref: menuRef, className: cn('tokis-context-menu', className), role: "menu", tabIndex: -1, style: { position: 'fixed', top: pos.y, left: pos.x }, children: items.map((item, i) => {
37
+ if (item.type === 'separator') {
38
+ return _jsx("div", { className: "tokis-context-menu__separator", role: "separator" }, i);
39
+ }
40
+ if (item.type === 'label') {
41
+ return _jsx("div", { className: "tokis-context-menu__label", children: item.label }, i);
42
+ }
43
+ return (_jsxs("button", { role: "menuitem", className: cn('tokis-context-menu__item', item.destructive && 'tokis-context-menu__item--destructive', item.disabled && 'tokis-context-menu__item--disabled'), disabled: item.disabled, onClick: () => { item.onClick?.(); close(); }, children: [item.icon && _jsx("span", { className: "tokis-context-menu__icon", "aria-hidden": "true", children: item.icon }), item.label] }, i));
44
+ }) }) }))] }));
45
+ }
46
+ ContextMenu.displayName = 'ContextMenu';
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/context-menu/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export interface DialogProps {
3
+ open: boolean;
4
+ onClose: () => void;
5
+ title?: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ children?: React.ReactNode;
8
+ footer?: React.ReactNode;
9
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
10
+ closeOnBackdrop?: boolean;
11
+ closeOnEsc?: boolean;
12
+ className?: string;
13
+ 'aria-label'?: string;
14
+ }
15
+ export declare function Dialog({ open, onClose, title, description, children, footer, size, closeOnBackdrop, closeOnEsc, className, 'aria-label': ariaLabel, }: DialogProps): import("react/jsx-runtime").JSX.Element | null;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dialog/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmC,MAAM,OAAO,CAAC;AAKxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,MAAM,CAAC,EACrB,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EACnD,IAAW,EAAE,eAAsB,EAAE,UAAiB,EACtD,SAAS,EAAE,YAAY,EAAE,SAAS,GACnC,EAAE,WAAW,kDAuEb"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useId } from 'react';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { Portal } from '../portal/index.js';
5
+ import { trapFocus } from '@tokis/core';
6
+ export function Dialog({ open, onClose, title, description, children, footer, size = 'md', closeOnBackdrop = true, closeOnEsc = true, className, 'aria-label': ariaLabel, }) {
7
+ const contentRef = useRef(null);
8
+ const uid = useId();
9
+ const titleId = title ? `dialog-title-${uid}` : undefined;
10
+ const descId = description ? `dialog-desc-${uid}` : undefined;
11
+ useEffect(() => {
12
+ if (!open)
13
+ return;
14
+ const cleanup = contentRef.current ? trapFocus(contentRef.current) : undefined;
15
+ const prev = document.activeElement;
16
+ contentRef.current?.focus();
17
+ return () => {
18
+ cleanup?.();
19
+ prev?.focus();
20
+ };
21
+ }, [open]);
22
+ useEffect(() => {
23
+ if (!open || !closeOnEsc)
24
+ return;
25
+ const handle = (e) => { if (e.key === 'Escape')
26
+ onClose(); };
27
+ document.addEventListener('keydown', handle);
28
+ return () => document.removeEventListener('keydown', handle);
29
+ }, [open, closeOnEsc, onClose]);
30
+ useEffect(() => {
31
+ if (open) {
32
+ const prev = document.body.style.overflow;
33
+ document.body.style.overflow = 'hidden';
34
+ return () => { document.body.style.overflow = prev; };
35
+ }
36
+ }, [open]);
37
+ if (!open)
38
+ return null;
39
+ return (_jsx(Portal, { children: _jsx("div", { className: "tokis-dialog-backdrop", "aria-hidden": "true", onClick: closeOnBackdrop ? onClose : undefined, children: _jsxs("div", { ref: contentRef, role: "dialog", "aria-modal": "true", "aria-labelledby": titleId, "aria-describedby": descId, "aria-label": !title ? ariaLabel : undefined, tabIndex: -1, className: cn('tokis-dialog-content', size !== 'md' && `tokis-dialog-content--${size}`, className), onClick: (e) => e.stopPropagation(), children: [(title || description) && (_jsxs("div", { className: "tokis-dialog-header", children: [_jsxs("div", { children: [title && _jsx("h2", { id: titleId, className: "tokis-dialog-title", children: title }), description && _jsx("p", { id: descId, className: "tokis-dialog-description", children: description })] }), _jsx("button", { className: "tokis-dialog-close", onClick: onClose, "aria-label": "Close dialog", children: _jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 3l10 10M13 3L3 13", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })] })), children && _jsx("div", { className: "tokis-dialog-body", children: children }), footer && _jsx("div", { className: "tokis-dialog-footer", children: footer })] }) }) }));
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/dialog/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { Divider } from '../card/index.js';
2
+ export type { DividerProps } from '../card/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/divider/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Re-export Divider from card
2
+ export { Divider } from '../card/index.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/divider/index.tsx"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export type DrawerSide = 'left' | 'right' | 'top' | 'bottom';
3
+ export interface DrawerProps {
4
+ open: boolean;
5
+ onClose: () => void;
6
+ side?: DrawerSide;
7
+ title?: React.ReactNode;
8
+ description?: React.ReactNode;
9
+ children?: React.ReactNode;
10
+ footer?: React.ReactNode;
11
+ closeOnBackdrop?: boolean;
12
+ closeOnEsc?: boolean;
13
+ className?: string;
14
+ }
15
+ export declare function Drawer({ open, onClose, side, title, description, children, footer, closeOnBackdrop, closeOnEsc, className }: DrawerProps): import("react/jsx-runtime").JSX.Element | null;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/drawer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAc,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAsB,EAAE,UAAiB,EAAE,SAAS,EAAE,EAAE,WAAW,kDAuDhK"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { Portal } from '../portal/index.js';
5
+ import { trapFocus } from '@tokis/core';
6
+ export function Drawer({ open, onClose, side = 'right', title, description, children, footer, closeOnBackdrop = true, closeOnEsc = true, className }) {
7
+ const contentRef = useRef(null);
8
+ useEffect(() => {
9
+ if (!open)
10
+ return;
11
+ const cleanup = contentRef.current ? trapFocus(contentRef.current) : undefined;
12
+ const prev = document.activeElement;
13
+ contentRef.current?.focus();
14
+ return () => { cleanup?.(); prev?.focus(); };
15
+ }, [open]);
16
+ useEffect(() => {
17
+ if (!open || !closeOnEsc)
18
+ return;
19
+ const h = (e) => { if (e.key === 'Escape')
20
+ onClose(); };
21
+ document.addEventListener('keydown', h);
22
+ return () => document.removeEventListener('keydown', h);
23
+ }, [open, closeOnEsc, onClose]);
24
+ useEffect(() => {
25
+ if (open) {
26
+ const prev = document.body.style.overflow;
27
+ document.body.style.overflow = 'hidden';
28
+ return () => { document.body.style.overflow = prev; };
29
+ }
30
+ }, [open]);
31
+ if (!open)
32
+ return null;
33
+ return (_jsxs(Portal, { children: [_jsx("div", { className: "tokis-drawer-backdrop", "aria-hidden": "true", onClick: closeOnBackdrop ? onClose : undefined }), _jsxs("div", { ref: contentRef, role: "dialog", "aria-modal": "true", tabIndex: -1, className: cn(`tokis-drawer-content tokis-drawer-content--${side}`, className), onClick: (e) => e.stopPropagation(), children: [(title || description) && (_jsxs("div", { className: "tokis-drawer-header", children: [title && _jsx("h2", { className: "tokis-drawer-title", children: title }), description && _jsx("p", { className: "tokis-drawer-description", children: description }), _jsx("button", { className: "tokis-drawer-close", onClick: onClose, "aria-label": "Close drawer", children: _jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 3l10 10M13 3L3 13", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })] })), _jsx("div", { className: "tokis-drawer-body", children: children }), footer && _jsx("div", { className: "tokis-drawer-footer", children: footer })] })] }));
34
+ }
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/drawer/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export type DropdownPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
3
+ export interface DropdownProps {
4
+ trigger: React.ReactElement;
5
+ children: React.ReactNode;
6
+ placement?: DropdownPlacement;
7
+ open?: boolean;
8
+ defaultOpen?: boolean;
9
+ onOpenChange?: (open: boolean) => void;
10
+ className?: string;
11
+ }
12
+ export declare function Dropdown({ trigger, children, placement, open: controlledOpen, defaultOpen, onOpenChange, className, }: DropdownProps): JSX.Element;
13
+ export declare namespace Dropdown {
14
+ var displayName: string;
15
+ }
16
+ //# sourceMappingURL=index.d.ts.map