@codefast/ui 0.0.9 → 0.0.11

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 (434) hide show
  1. package/dist/accordion.d.mts +7 -7
  2. package/dist/accordion.d.ts +7 -7
  3. package/dist/accordion.js +42 -32
  4. package/dist/accordion.js.map +1 -1
  5. package/dist/accordion.mjs +42 -32
  6. package/dist/accordion.mjs.map +1 -1
  7. package/dist/alert-dialog.d.mts +12 -12
  8. package/dist/alert-dialog.d.ts +12 -12
  9. package/dist/alert-dialog.js +47 -75
  10. package/dist/alert-dialog.js.map +1 -1
  11. package/dist/alert-dialog.mjs +47 -75
  12. package/dist/alert-dialog.mjs.map +1 -1
  13. package/dist/alert.js +5 -30
  14. package/dist/alert.js.map +1 -1
  15. package/dist/alert.mjs +5 -30
  16. package/dist/alert.mjs.map +1 -1
  17. package/dist/aspect-ratio.d.mts +1 -1
  18. package/dist/aspect-ratio.d.ts +1 -1
  19. package/dist/aspect-ratio.js.map +1 -1
  20. package/dist/aspect-ratio.mjs.map +1 -1
  21. package/dist/avatar.d.mts +6 -6
  22. package/dist/avatar.d.ts +6 -6
  23. package/dist/avatar.js +3 -16
  24. package/dist/avatar.js.map +1 -1
  25. package/dist/avatar.mjs +3 -16
  26. package/dist/avatar.mjs.map +1 -1
  27. package/dist/badge.js +1 -5
  28. package/dist/badge.js.map +1 -1
  29. package/dist/badge.mjs +1 -5
  30. package/dist/badge.mjs.map +1 -1
  31. package/dist/blockquote.js +4 -6
  32. package/dist/blockquote.js.map +1 -1
  33. package/dist/blockquote.mjs +4 -6
  34. package/dist/blockquote.mjs.map +1 -1
  35. package/dist/box.js +4 -6
  36. package/dist/box.js.map +1 -1
  37. package/dist/box.mjs +4 -6
  38. package/dist/box.mjs.map +1 -1
  39. package/dist/breadcrumb.js +30 -67
  40. package/dist/breadcrumb.js.map +1 -1
  41. package/dist/breadcrumb.mjs +30 -67
  42. package/dist/breadcrumb.mjs.map +1 -1
  43. package/dist/button.d.mts +1 -0
  44. package/dist/button.d.ts +1 -0
  45. package/dist/button.js +3 -2
  46. package/dist/button.mjs +2 -1
  47. package/dist/calendar.js +7 -19
  48. package/dist/calendar.js.map +1 -1
  49. package/dist/calendar.mjs +6 -18
  50. package/dist/calendar.mjs.map +1 -1
  51. package/dist/card.js +8 -55
  52. package/dist/card.js.map +1 -1
  53. package/dist/card.mjs +8 -55
  54. package/dist/card.mjs.map +1 -1
  55. package/dist/carousel.js +58 -64
  56. package/dist/carousel.js.map +1 -1
  57. package/dist/carousel.mjs +57 -63
  58. package/dist/carousel.mjs.map +1 -1
  59. package/dist/checkbox-cards.d.mts +15 -0
  60. package/dist/checkbox-cards.d.ts +15 -0
  61. package/dist/checkbox-cards.js +56 -0
  62. package/dist/checkbox-cards.js.map +1 -0
  63. package/dist/checkbox-cards.mjs +56 -0
  64. package/dist/checkbox-cards.mjs.map +1 -0
  65. package/dist/checkbox-group.d.mts +13 -0
  66. package/dist/checkbox-group.d.ts +13 -0
  67. package/dist/checkbox-group.js +44 -0
  68. package/dist/checkbox-group.js.map +1 -0
  69. package/dist/checkbox-group.mjs +44 -0
  70. package/dist/checkbox-group.mjs.map +1 -0
  71. package/dist/checkbox-group.primitive.d.mts +38 -0
  72. package/dist/checkbox-group.primitive.d.ts +38 -0
  73. package/dist/checkbox-group.primitive.js +19 -0
  74. package/dist/checkbox-group.primitive.js.map +1 -0
  75. package/dist/checkbox-group.primitive.mjs +19 -0
  76. package/dist/checkbox-group.primitive.mjs.map +1 -0
  77. package/dist/checkbox.d.mts +2 -2
  78. package/dist/checkbox.d.ts +2 -2
  79. package/dist/checkbox.js +5 -1
  80. package/dist/checkbox.js.map +1 -1
  81. package/dist/checkbox.mjs +5 -1
  82. package/dist/checkbox.mjs.map +1 -1
  83. package/dist/chunk-3ZZ3SRTJ.js +148 -0
  84. package/dist/chunk-3ZZ3SRTJ.js.map +1 -0
  85. package/dist/{chunk-MJDKD2K4.mjs → chunk-6J6VPUBP.mjs} +9 -10
  86. package/dist/chunk-6J6VPUBP.mjs.map +1 -0
  87. package/dist/{chunk-PKB2G726.js → chunk-7S4DOWLB.js} +9 -10
  88. package/dist/chunk-7S4DOWLB.js.map +1 -0
  89. package/dist/{chunk-JOJW7BBY.js → chunk-BWCO2ZQQ.js} +29 -8
  90. package/dist/chunk-BWCO2ZQQ.js.map +1 -0
  91. package/dist/chunk-EWS3N4OZ.mjs +148 -0
  92. package/dist/chunk-EWS3N4OZ.mjs.map +1 -0
  93. package/dist/{chunk-PIU627A3.mjs → chunk-FGI3JA75.mjs} +1 -1
  94. package/dist/chunk-FGI3JA75.mjs.map +1 -0
  95. package/dist/{chunk-GRKABVK4.js → chunk-IVYGBU4G.js} +1 -1
  96. package/dist/chunk-IVYGBU4G.js.map +1 -0
  97. package/dist/chunk-IXEJO7ZP.js +86 -0
  98. package/dist/chunk-IXEJO7ZP.js.map +1 -0
  99. package/dist/chunk-JULVZPCS.mjs +120 -0
  100. package/dist/chunk-JULVZPCS.mjs.map +1 -0
  101. package/dist/chunk-LNSEYAPJ.js +121 -0
  102. package/dist/chunk-LNSEYAPJ.js.map +1 -0
  103. package/dist/chunk-MDSPK3M6.js +54 -0
  104. package/dist/chunk-MDSPK3M6.js.map +1 -0
  105. package/dist/chunk-MOJNV3XZ.js +120 -0
  106. package/dist/chunk-MOJNV3XZ.js.map +1 -0
  107. package/dist/chunk-OK63Q6EJ.mjs +121 -0
  108. package/dist/chunk-OK63Q6EJ.mjs.map +1 -0
  109. package/dist/chunk-V2254PQL.mjs +54 -0
  110. package/dist/chunk-V2254PQL.mjs.map +1 -0
  111. package/dist/chunk-WFXEFJRB.mjs +77 -0
  112. package/dist/chunk-WFXEFJRB.mjs.map +1 -0
  113. package/dist/chunk-XCKLBP2V.mjs +86 -0
  114. package/dist/chunk-XCKLBP2V.mjs.map +1 -0
  115. package/dist/code.js +4 -6
  116. package/dist/code.js.map +1 -1
  117. package/dist/code.mjs +4 -6
  118. package/dist/code.mjs.map +1 -1
  119. package/dist/collapsible.d.mts +3 -3
  120. package/dist/collapsible.d.ts +3 -3
  121. package/dist/collapsible.js.map +1 -1
  122. package/dist/collapsible.mjs.map +1 -1
  123. package/dist/command.d.mts +11 -10
  124. package/dist/command.d.ts +11 -10
  125. package/dist/command.js +10 -44
  126. package/dist/command.js.map +1 -1
  127. package/dist/command.mjs +10 -44
  128. package/dist/command.mjs.map +1 -1
  129. package/dist/container.js +4 -6
  130. package/dist/container.js.map +1 -1
  131. package/dist/container.mjs +4 -6
  132. package/dist/container.mjs.map +1 -1
  133. package/dist/context-menu.d.mts +18 -18
  134. package/dist/context-menu.d.ts +18 -18
  135. package/dist/context-menu.js +108 -124
  136. package/dist/context-menu.js.map +1 -1
  137. package/dist/context-menu.mjs +109 -125
  138. package/dist/context-menu.mjs.map +1 -1
  139. package/dist/data-table.d.mts +1 -1
  140. package/dist/data-table.d.ts +1 -1
  141. package/dist/data-table.js +131 -149
  142. package/dist/data-table.js.map +1 -1
  143. package/dist/data-table.mjs +120 -138
  144. package/dist/data-table.mjs.map +1 -1
  145. package/dist/dialog.d.mts +9 -9
  146. package/dist/dialog.d.ts +9 -9
  147. package/dist/dialog.js +2 -2
  148. package/dist/dialog.mjs +1 -1
  149. package/dist/drawer.d.mts +2 -2
  150. package/dist/drawer.d.ts +2 -2
  151. package/dist/drawer.js +30 -63
  152. package/dist/drawer.js.map +1 -1
  153. package/dist/drawer.mjs +30 -63
  154. package/dist/drawer.mjs.map +1 -1
  155. package/dist/dropdown-menu.d.mts +16 -16
  156. package/dist/dropdown-menu.d.ts +16 -16
  157. package/dist/dropdown-menu.js +2 -2
  158. package/dist/dropdown-menu.mjs +1 -1
  159. package/dist/em.js +4 -6
  160. package/dist/em.js.map +1 -1
  161. package/dist/em.mjs +4 -6
  162. package/dist/em.mjs.map +1 -1
  163. package/dist/form.js +23 -54
  164. package/dist/form.js.map +1 -1
  165. package/dist/form.mjs +23 -54
  166. package/dist/form.mjs.map +1 -1
  167. package/dist/heading.js +4 -6
  168. package/dist/heading.js.map +1 -1
  169. package/dist/heading.mjs +4 -6
  170. package/dist/heading.mjs.map +1 -1
  171. package/dist/hover-card.d.mts +4 -4
  172. package/dist/hover-card.d.ts +4 -4
  173. package/dist/hover-card.js +15 -13
  174. package/dist/hover-card.js.map +1 -1
  175. package/dist/hover-card.mjs +15 -13
  176. package/dist/hover-card.mjs.map +1 -1
  177. package/dist/input-otp.js +32 -37
  178. package/dist/input-otp.js.map +1 -1
  179. package/dist/input-otp.mjs +32 -37
  180. package/dist/input-otp.mjs.map +1 -1
  181. package/dist/input.js +10 -14
  182. package/dist/input.js.map +1 -1
  183. package/dist/input.mjs +10 -14
  184. package/dist/input.mjs.map +1 -1
  185. package/dist/kbd.js +14 -16
  186. package/dist/kbd.js.map +1 -1
  187. package/dist/kbd.mjs +14 -16
  188. package/dist/kbd.mjs.map +1 -1
  189. package/dist/label.d.mts +2 -2
  190. package/dist/label.d.ts +2 -2
  191. package/dist/label.js +2 -2
  192. package/dist/label.mjs +1 -1
  193. package/dist/menubar.d.mts +21 -21
  194. package/dist/menubar.d.ts +21 -21
  195. package/dist/menubar.js +73 -93
  196. package/dist/menubar.js.map +1 -1
  197. package/dist/menubar.mjs +74 -94
  198. package/dist/menubar.mjs.map +1 -1
  199. package/dist/navigation-menu.d.mts +16 -16
  200. package/dist/navigation-menu.d.ts +16 -16
  201. package/dist/navigation-menu.js +89 -93
  202. package/dist/navigation-menu.js.map +1 -1
  203. package/dist/navigation-menu.mjs +89 -93
  204. package/dist/navigation-menu.mjs.map +1 -1
  205. package/dist/pagination.js +19 -58
  206. package/dist/pagination.js.map +1 -1
  207. package/dist/pagination.mjs +19 -58
  208. package/dist/pagination.mjs.map +1 -1
  209. package/dist/popover.d.mts +7 -7
  210. package/dist/popover.d.ts +7 -7
  211. package/dist/popover.js +16 -21
  212. package/dist/popover.js.map +1 -1
  213. package/dist/popover.mjs +16 -21
  214. package/dist/popover.mjs.map +1 -1
  215. package/dist/pre.js +4 -6
  216. package/dist/pre.js.map +1 -1
  217. package/dist/pre.mjs +4 -6
  218. package/dist/pre.mjs.map +1 -1
  219. package/dist/progress.d.mts +2 -2
  220. package/dist/progress.d.ts +2 -2
  221. package/dist/progress.js +1 -4
  222. package/dist/progress.js.map +1 -1
  223. package/dist/progress.mjs +1 -4
  224. package/dist/progress.mjs.map +1 -1
  225. package/dist/quote.js +4 -6
  226. package/dist/quote.js.map +1 -1
  227. package/dist/quote.mjs +4 -6
  228. package/dist/quote.mjs.map +1 -1
  229. package/dist/radio-cards.d.mts +9 -0
  230. package/dist/radio-cards.d.ts +9 -0
  231. package/dist/radio-cards.js +36 -0
  232. package/dist/radio-cards.js.map +1 -0
  233. package/dist/radio-cards.mjs +36 -0
  234. package/dist/radio-cards.mjs.map +1 -0
  235. package/dist/radio-group.d.mts +4 -4
  236. package/dist/radio-group.d.ts +4 -4
  237. package/dist/radio-group.js +3 -9
  238. package/dist/radio-group.js.map +1 -1
  239. package/dist/radio-group.mjs +3 -9
  240. package/dist/radio-group.mjs.map +1 -1
  241. package/dist/radio.d.mts +8 -0
  242. package/dist/radio.d.ts +8 -0
  243. package/dist/radio.js +35 -0
  244. package/dist/radio.js.map +1 -0
  245. package/dist/radio.mjs +35 -0
  246. package/dist/radio.mjs.map +1 -0
  247. package/dist/resizable.d.mts +2 -2
  248. package/dist/resizable.d.ts +2 -2
  249. package/dist/resizable.js +3 -5
  250. package/dist/resizable.js.map +1 -1
  251. package/dist/resizable.mjs +3 -5
  252. package/dist/resizable.mjs.map +1 -1
  253. package/dist/scroll-area.d.mts +4 -4
  254. package/dist/scroll-area.d.ts +4 -4
  255. package/dist/scroll-area.js +23 -29
  256. package/dist/scroll-area.js.map +1 -1
  257. package/dist/scroll-area.mjs +23 -29
  258. package/dist/scroll-area.mjs.map +1 -1
  259. package/dist/section.js +4 -6
  260. package/dist/section.js.map +1 -1
  261. package/dist/section.mjs +4 -6
  262. package/dist/section.mjs.map +1 -1
  263. package/dist/segmented.d.mts +22 -0
  264. package/dist/segmented.d.ts +22 -0
  265. package/dist/segmented.js +126 -0
  266. package/dist/segmented.js.map +1 -0
  267. package/dist/segmented.mjs +126 -0
  268. package/dist/segmented.mjs.map +1 -0
  269. package/dist/select.d.mts +17 -17
  270. package/dist/select.d.ts +17 -17
  271. package/dist/select.js +2 -2
  272. package/dist/select.mjs +1 -1
  273. package/dist/separator.d.mts +2 -2
  274. package/dist/separator.d.ts +2 -2
  275. package/dist/separator.js +1 -5
  276. package/dist/separator.js.map +1 -1
  277. package/dist/separator.mjs +1 -5
  278. package/dist/separator.mjs.map +1 -1
  279. package/dist/sheet.d.mts +9 -9
  280. package/dist/sheet.d.ts +9 -9
  281. package/dist/sheet.js +35 -76
  282. package/dist/sheet.js.map +1 -1
  283. package/dist/sheet.mjs +35 -76
  284. package/dist/sheet.mjs.map +1 -1
  285. package/dist/skeleton.js +1 -7
  286. package/dist/skeleton.js.map +1 -1
  287. package/dist/skeleton.mjs +1 -7
  288. package/dist/skeleton.mjs.map +1 -1
  289. package/dist/slider.d.mts +2 -2
  290. package/dist/slider.d.ts +2 -2
  291. package/dist/slider.js +10 -5
  292. package/dist/slider.js.map +1 -1
  293. package/dist/slider.mjs +10 -5
  294. package/dist/slider.mjs.map +1 -1
  295. package/dist/sonner.js +1 -6
  296. package/dist/sonner.js.map +1 -1
  297. package/dist/sonner.mjs +1 -6
  298. package/dist/sonner.mjs.map +1 -1
  299. package/dist/spinner.d.mts +8 -0
  300. package/dist/spinner.d.ts +8 -0
  301. package/dist/spinner.js +8 -0
  302. package/dist/spinner.js.map +1 -0
  303. package/dist/spinner.mjs +8 -0
  304. package/dist/spinner.mjs.map +1 -0
  305. package/dist/strong.js +4 -6
  306. package/dist/strong.js.map +1 -1
  307. package/dist/strong.mjs +4 -6
  308. package/dist/strong.mjs.map +1 -1
  309. package/dist/styles.css +1 -1
  310. package/dist/styles.css.map +1 -1
  311. package/dist/switch.d.mts +2 -2
  312. package/dist/switch.d.ts +2 -2
  313. package/dist/switch.js +2 -1
  314. package/dist/switch.js.map +1 -1
  315. package/dist/switch.mjs +2 -1
  316. package/dist/switch.mjs.map +1 -1
  317. package/dist/table.js +22 -80
  318. package/dist/table.js.map +1 -1
  319. package/dist/table.mjs +22 -80
  320. package/dist/table.mjs.map +1 -1
  321. package/dist/tabs.d.mts +7 -7
  322. package/dist/tabs.d.ts +7 -7
  323. package/dist/tabs.js +4 -2
  324. package/dist/tabs.js.map +1 -1
  325. package/dist/tabs.mjs +4 -2
  326. package/dist/tabs.mjs.map +1 -1
  327. package/dist/text.js +4 -6
  328. package/dist/text.js.map +1 -1
  329. package/dist/text.mjs +4 -6
  330. package/dist/text.mjs.map +1 -1
  331. package/dist/textarea.js +14 -15
  332. package/dist/textarea.js.map +1 -1
  333. package/dist/textarea.mjs +14 -15
  334. package/dist/textarea.mjs.map +1 -1
  335. package/dist/toggle-group.d.mts +2 -2
  336. package/dist/toggle-group.d.ts +2 -2
  337. package/dist/toggle-group.js +41 -34
  338. package/dist/toggle-group.js.map +1 -1
  339. package/dist/toggle-group.mjs +40 -33
  340. package/dist/toggle-group.mjs.map +1 -1
  341. package/dist/toggle.d.mts +2 -2
  342. package/dist/toggle.d.ts +2 -2
  343. package/dist/toggle.js +2 -2
  344. package/dist/toggle.mjs +1 -1
  345. package/dist/tooltip.d.mts +7 -7
  346. package/dist/tooltip.d.ts +7 -7
  347. package/dist/tooltip.js +15 -20
  348. package/dist/tooltip.js.map +1 -1
  349. package/dist/tooltip.mjs +15 -20
  350. package/dist/tooltip.mjs.map +1 -1
  351. package/package.json +43 -6
  352. package/src/accordion.tsx +53 -43
  353. package/src/alert-dialog.tsx +73 -92
  354. package/src/alert.tsx +24 -41
  355. package/src/aspect-ratio.tsx +2 -1
  356. package/src/avatar.tsx +19 -36
  357. package/src/badge.tsx +3 -7
  358. package/src/blockquote.tsx +9 -8
  359. package/src/box.tsx +7 -6
  360. package/src/breadcrumb.tsx +54 -63
  361. package/src/button.tsx +42 -16
  362. package/src/calendar.tsx +6 -22
  363. package/src/card.tsx +40 -56
  364. package/src/carousel.tsx +95 -81
  365. package/src/checkbox-cards.tsx +68 -0
  366. package/src/checkbox-group.primitive.tsx +199 -0
  367. package/src/checkbox-group.tsx +57 -0
  368. package/src/checkbox.tsx +10 -6
  369. package/src/code.tsx +8 -6
  370. package/src/collapsible.tsx +4 -3
  371. package/src/command.tsx +53 -90
  372. package/src/container.tsx +8 -6
  373. package/src/context-menu.tsx +163 -175
  374. package/src/data-table.tsx +26 -43
  375. package/src/dialog.tsx +58 -77
  376. package/src/drawer.tsx +48 -78
  377. package/src/dropdown-menu.tsx +143 -154
  378. package/src/em.tsx +8 -6
  379. package/src/form.tsx +61 -86
  380. package/src/heading.tsx +8 -6
  381. package/src/hover-card.tsx +22 -20
  382. package/src/input-otp.tsx +50 -48
  383. package/src/input.tsx +14 -15
  384. package/src/kbd.tsx +18 -16
  385. package/src/label.tsx +5 -5
  386. package/src/menubar.tsx +133 -149
  387. package/src/navigation-menu.tsx +110 -114
  388. package/src/pagination.tsx +26 -48
  389. package/src/popover.tsx +29 -31
  390. package/src/pre.tsx +8 -6
  391. package/src/progress.tsx +6 -9
  392. package/src/quote.tsx +8 -6
  393. package/src/radio-cards.tsx +50 -0
  394. package/src/radio-group.tsx +14 -24
  395. package/src/radio.tsx +44 -0
  396. package/src/resizable.tsx +5 -7
  397. package/src/scroll-area.tsx +29 -40
  398. package/src/section.tsx +8 -6
  399. package/src/segmented.tsx +176 -0
  400. package/src/select.tsx +106 -115
  401. package/src/separator.tsx +7 -14
  402. package/src/sheet.tsx +50 -76
  403. package/src/skeleton.tsx +2 -6
  404. package/src/slider.tsx +12 -10
  405. package/src/sonner.tsx +3 -7
  406. package/src/spinner.tsx +71 -0
  407. package/src/strong.tsx +8 -6
  408. package/src/switch.tsx +7 -6
  409. package/src/table.tsx +60 -82
  410. package/src/tabs.tsx +20 -18
  411. package/src/text.tsx +8 -8
  412. package/src/textarea.tsx +16 -14
  413. package/src/toggle-group.tsx +59 -58
  414. package/src/toggle.tsx +14 -13
  415. package/src/tooltip.tsx +28 -30
  416. package/dist/chunk-3BDLWZ3W.js +0 -158
  417. package/dist/chunk-3BDLWZ3W.js.map +0 -1
  418. package/dist/chunk-43YGVOCO.js +0 -135
  419. package/dist/chunk-43YGVOCO.js.map +0 -1
  420. package/dist/chunk-AJLEALVP.mjs +0 -112
  421. package/dist/chunk-AJLEALVP.mjs.map +0 -1
  422. package/dist/chunk-D6NQEMTJ.js +0 -112
  423. package/dist/chunk-D6NQEMTJ.js.map +0 -1
  424. package/dist/chunk-FATZHRHR.mjs +0 -56
  425. package/dist/chunk-FATZHRHR.mjs.map +0 -1
  426. package/dist/chunk-GRKABVK4.js.map +0 -1
  427. package/dist/chunk-JOJW7BBY.js.map +0 -1
  428. package/dist/chunk-KV4VL2ZF.mjs +0 -135
  429. package/dist/chunk-KV4VL2ZF.mjs.map +0 -1
  430. package/dist/chunk-MJDKD2K4.mjs.map +0 -1
  431. package/dist/chunk-NCEN3XBK.mjs +0 -158
  432. package/dist/chunk-NCEN3XBK.mjs.map +0 -1
  433. package/dist/chunk-PIU627A3.mjs.map +0 -1
  434. package/dist/chunk-PKB2G726.js.map +0 -1
@@ -2,241 +2,241 @@
2
2
 
3
3
  import * as React from "react";
4
4
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
5
- import {
6
- CheckIcon,
7
- ChevronRightIcon,
8
- DotFilledIcon,
9
- } from "@radix-ui/react-icons";
5
+ import { CheckIcon, ChevronRightIcon, DotFilledIcon } from "@radix-ui/react-icons";
10
6
  import { cn } from "./utils";
11
7
 
12
8
  /* -----------------------------------------------------------------------------
13
9
  * Component: ContextMenu
14
10
  * -------------------------------------------------------------------------- */
15
11
 
16
- type ContextMenuProps = ContextMenuPrimitive.ContextMenuProps;
12
+ type ContextMenuProps = React.ComponentProps<typeof ContextMenuPrimitive.Root>;
17
13
  const ContextMenu = ContextMenuPrimitive.Root;
18
14
 
19
15
  /* -----------------------------------------------------------------------------
20
16
  * Component: ContextMenuTrigger
21
17
  * -------------------------------------------------------------------------- */
22
18
 
23
- type ContextMenuTriggerProps = ContextMenuPrimitive.ContextMenuTriggerProps;
19
+ type ContextMenuTriggerProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Trigger>;
24
20
  const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
25
21
 
26
22
  /* -----------------------------------------------------------------------------
27
23
  * Component: ContextMenuGroup
28
24
  * -------------------------------------------------------------------------- */
29
25
 
30
- type ContextMenuGroupProps = ContextMenuPrimitive.ContextMenuGroupProps;
26
+ type ContextMenuGroupProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Group>;
31
27
  const ContextMenuGroup = ContextMenuPrimitive.Group;
32
28
 
33
29
  /* -----------------------------------------------------------------------------
34
30
  * Component: ContextMenuSub
35
31
  * -------------------------------------------------------------------------- */
36
32
 
37
- type ContextMenuSubProps = ContextMenuPrimitive.ContextMenuSubProps;
33
+ type ContextMenuSubProps = React.ComponentProps<typeof ContextMenuPrimitive.Sub>;
38
34
  const ContextMenuSub = ContextMenuPrimitive.Sub;
39
35
 
40
36
  /* -----------------------------------------------------------------------------
41
37
  * Component: ContextMenuRadioGroup
42
38
  * -------------------------------------------------------------------------- */
43
39
 
44
- type ContextMenuRadioGroupProps =
45
- ContextMenuPrimitive.ContextMenuRadioGroupProps;
40
+ type ContextMenuRadioGroupProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioGroup>;
46
41
  const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
47
42
 
48
43
  /* -----------------------------------------------------------------------------
49
44
  * Component: ContextMenuSubTrigger
50
45
  * -------------------------------------------------------------------------- */
51
46
 
52
- interface ContextMenuSubTriggerProps
53
- extends ContextMenuPrimitive.ContextMenuSubTriggerProps {
47
+ type ContextMenuSubTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>;
48
+
49
+ interface ContextMenuSubTriggerProps extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> {
54
50
  inset?: boolean;
55
51
  }
56
- const ContextMenuSubTrigger = React.forwardRef<
57
- React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,
58
- ContextMenuSubTriggerProps
59
- >(({ className, inset, children, ...props }, ref) => (
60
- <ContextMenuPrimitive.SubTrigger
61
- ref={ref}
62
- className={cn(
63
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:outline-none",
64
- inset && "pl-8",
65
- className,
66
- )}
67
- {...props}
68
- >
69
- {children}
70
- <ChevronRightIcon className="ml-auto size-4" />
71
- </ContextMenuPrimitive.SubTrigger>
72
- ));
73
- ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
74
-
75
- /* -----------------------------------------------------------------------------
76
- * Component: ContextMenuSubContent
77
- * -------------------------------------------------------------------------- */
78
52
 
79
- type ContextMenuSubContentProps =
80
- ContextMenuPrimitive.ContextMenuSubContentProps;
81
- const ContextMenuSubContent = React.forwardRef<
82
- React.ElementRef<typeof ContextMenuPrimitive.SubContent>,
83
- ContextMenuSubContentProps
84
- >(({ className, ...props }, ref) => (
85
- <ContextMenuPrimitive.Portal>
86
- <ContextMenuPrimitive.SubContent
53
+ const ContextMenuSubTrigger = React.forwardRef<ContextMenuSubTriggerElement, ContextMenuSubTriggerProps>(
54
+ ({ className, inset, children, ...props }, ref) => (
55
+ <ContextMenuPrimitive.SubTrigger
87
56
  ref={ref}
88
57
  className={cn(
89
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:data-[side=top]:slide-in-from-bottom-2 data-[state=open]:data-[side=right]:slide-in-from-left-2 data-[state=open]:data-[side=bottom]:slide-in-from-top-2 data-[state=open]:data-[side=left]:slide-in-from-right-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 z-50 min-w-[8rem] rounded-md border p-1 shadow-md focus:outline-none",
58
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:outline-none",
59
+ inset && "pl-8",
90
60
  className,
91
61
  )}
92
62
  {...props}
93
- />
94
- </ContextMenuPrimitive.Portal>
95
- ));
63
+ >
64
+ {children}
65
+ <ChevronRightIcon className="ml-auto size-4" />
66
+ </ContextMenuPrimitive.SubTrigger>
67
+ ),
68
+ );
69
+
70
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
71
+
72
+ /* -----------------------------------------------------------------------------
73
+ * Component: ContextMenuSubContent
74
+ * -------------------------------------------------------------------------- */
75
+
76
+ type ContextMenuSubContentElement = React.ElementRef<typeof ContextMenuPrimitive.SubContent>;
77
+ type ContextMenuSubContentProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>;
78
+
79
+ const ContextMenuSubContent = React.forwardRef<ContextMenuSubContentElement, ContextMenuSubContentProps>(
80
+ ({ className, ...props }, ref) => (
81
+ <ContextMenuPrimitive.Portal>
82
+ <ContextMenuPrimitive.SubContent
83
+ ref={ref}
84
+ className={cn(
85
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:data-[side=top]:slide-in-from-bottom-2 data-[state=open]:data-[side=right]:slide-in-from-left-2 data-[state=open]:data-[side=bottom]:slide-in-from-top-2 data-[state=open]:data-[side=left]:slide-in-from-right-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 z-50 min-w-[8rem] rounded-md border p-1 shadow-md focus:outline-none",
86
+ className,
87
+ )}
88
+ {...props}
89
+ />
90
+ </ContextMenuPrimitive.Portal>
91
+ ),
92
+ );
93
+
96
94
  ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
97
95
 
98
96
  /* -----------------------------------------------------------------------------
99
97
  * Component: ContextMenuContent
100
98
  * -------------------------------------------------------------------------- */
101
99
 
102
- type ContextMenuContentProps = ContextMenuPrimitive.ContextMenuContentProps;
103
- const ContextMenuContent = React.forwardRef<
104
- React.ElementRef<typeof ContextMenuPrimitive.Content>,
105
- ContextMenuContentProps
106
- >(({ className, ...props }, ref) => (
107
- <ContextMenuPrimitive.Portal>
108
- <ContextMenuPrimitive.Content
109
- ref={ref}
110
- className={cn(
111
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:data-[side=top]:slide-in-from-bottom-2 data-[state=open]:data-[side=right]:slide-in-from-left-2 data-[state=open]:data-[side=bottom]:slide-in-from-top-2 data-[state=open]:data-[side=left]:slide-in-from-right-2 z-50 min-w-[8rem] rounded-md border p-1 shadow-md focus:outline-none",
112
- className,
113
- )}
114
- {...props}
115
- />
116
- </ContextMenuPrimitive.Portal>
117
- ));
100
+ type ContextMenuContentElement = React.ElementRef<typeof ContextMenuPrimitive.Content>;
101
+ type ContextMenuContentProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>;
102
+
103
+ const ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMenuContentProps>(
104
+ ({ className, ...props }, ref) => (
105
+ <ContextMenuPrimitive.Portal>
106
+ <ContextMenuPrimitive.Content
107
+ ref={ref}
108
+ className={cn(
109
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:data-[side=top]:slide-in-from-bottom-2 data-[state=open]:data-[side=right]:slide-in-from-left-2 data-[state=open]:data-[side=bottom]:slide-in-from-top-2 data-[state=open]:data-[side=left]:slide-in-from-right-2 z-50 min-w-[8rem] rounded-md border p-1 shadow-md focus:outline-none",
110
+ className,
111
+ )}
112
+ {...props}
113
+ />
114
+ </ContextMenuPrimitive.Portal>
115
+ ),
116
+ );
117
+
118
118
  ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
119
119
 
120
120
  /* -----------------------------------------------------------------------------
121
121
  * Component: ContextMenuItem
122
122
  * -------------------------------------------------------------------------- */
123
123
 
124
- interface ContextMenuItemProps
125
- extends ContextMenuPrimitive.ContextMenuItemProps {
124
+ type ContextMenuItemElement = React.ElementRef<typeof ContextMenuPrimitive.Item>;
125
+
126
+ interface ContextMenuItemProps extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> {
126
127
  inset?: boolean;
127
128
  }
128
- const ContextMenuItem = React.forwardRef<
129
- React.ElementRef<typeof ContextMenuPrimitive.Item>,
130
- ContextMenuItemProps
131
- >(({ className, inset, ...props }, ref) => (
132
- <ContextMenuPrimitive.Item
133
- ref={ref}
134
- className={cn(
135
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
136
- inset && "pl-8",
137
- className,
138
- )}
139
- {...props}
140
- />
141
- ));
129
+
130
+ const ContextMenuItem = React.forwardRef<ContextMenuItemElement, ContextMenuItemProps>(
131
+ ({ className, inset, ...props }, ref) => (
132
+ <ContextMenuPrimitive.Item
133
+ ref={ref}
134
+ className={cn(
135
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
136
+ inset && "pl-8",
137
+ className,
138
+ )}
139
+ {...props}
140
+ />
141
+ ),
142
+ );
143
+
142
144
  ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
143
145
 
144
146
  /* -----------------------------------------------------------------------------
145
147
  * Component: ContextMenuCheckboxItem
146
148
  * -------------------------------------------------------------------------- */
147
149
 
148
- type ContextMenuCheckboxItemProps =
149
- ContextMenuPrimitive.ContextMenuCheckboxItemProps;
150
- const ContextMenuCheckboxItem = React.forwardRef<
151
- React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,
152
- ContextMenuCheckboxItemProps
153
- >(({ className, children, checked, ...props }, ref) => (
154
- <ContextMenuPrimitive.CheckboxItem
155
- ref={ref}
156
- className={cn(
157
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
158
- className,
159
- )}
160
- checked={checked}
161
- {...props}
162
- >
163
- <span className="absolute left-2 flex size-3.5 items-center justify-center">
164
- <ContextMenuPrimitive.ItemIndicator>
165
- <CheckIcon className="size-4" />
166
- </ContextMenuPrimitive.ItemIndicator>
167
- </span>
168
- {children}
169
- </ContextMenuPrimitive.CheckboxItem>
170
- ));
171
- ContextMenuCheckboxItem.displayName =
172
- ContextMenuPrimitive.CheckboxItem.displayName;
150
+ type ContextMenuCheckboxItemElement = React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>;
151
+ type ContextMenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>;
152
+
153
+ const ContextMenuCheckboxItem = React.forwardRef<ContextMenuCheckboxItemElement, ContextMenuCheckboxItemProps>(
154
+ ({ className, children, checked, ...props }, ref) => (
155
+ <ContextMenuPrimitive.CheckboxItem
156
+ ref={ref}
157
+ className={cn(
158
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
159
+ className,
160
+ )}
161
+ checked={checked}
162
+ {...props}
163
+ >
164
+ <span className="absolute left-2 flex size-3.5 items-center justify-center">
165
+ <ContextMenuPrimitive.ItemIndicator>
166
+ <CheckIcon className="size-4" />
167
+ </ContextMenuPrimitive.ItemIndicator>
168
+ </span>
169
+ {children}
170
+ </ContextMenuPrimitive.CheckboxItem>
171
+ ),
172
+ );
173
+
174
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
173
175
 
174
176
  /* -----------------------------------------------------------------------------
175
177
  * Component: ContextMenuRadioItem
176
178
  * -------------------------------------------------------------------------- */
177
179
 
178
- type ContextMenuRadioItemProps = ContextMenuPrimitive.ContextMenuRadioItemProps;
179
- const ContextMenuRadioItem = React.forwardRef<
180
- React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,
181
- ContextMenuRadioItemProps
182
- >(({ className, children, ...props }, ref) => (
183
- <ContextMenuPrimitive.RadioItem
184
- ref={ref}
185
- className={cn(
186
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
187
- className,
188
- )}
189
- {...props}
190
- >
191
- <span className="absolute left-2 flex size-3.5 items-center justify-center">
192
- <ContextMenuPrimitive.ItemIndicator>
193
- <DotFilledIcon className="size-4 fill-current" />
194
- </ContextMenuPrimitive.ItemIndicator>
195
- </span>
196
- {children}
197
- </ContextMenuPrimitive.RadioItem>
198
- ));
180
+ type ContextMenuRadioItemElement = React.ElementRef<typeof ContextMenuPrimitive.RadioItem>;
181
+ type ContextMenuRadioItemProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>;
182
+
183
+ const ContextMenuRadioItem = React.forwardRef<ContextMenuRadioItemElement, ContextMenuRadioItemProps>(
184
+ ({ className, children, ...props }, ref) => (
185
+ <ContextMenuPrimitive.RadioItem
186
+ ref={ref}
187
+ className={cn(
188
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
189
+ className,
190
+ )}
191
+ {...props}
192
+ >
193
+ <span className="absolute left-2 flex size-3.5 items-center justify-center">
194
+ <ContextMenuPrimitive.ItemIndicator>
195
+ <DotFilledIcon className="size-4 fill-current" />
196
+ </ContextMenuPrimitive.ItemIndicator>
197
+ </span>
198
+ {children}
199
+ </ContextMenuPrimitive.RadioItem>
200
+ ),
201
+ );
202
+
199
203
  ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
200
204
 
201
205
  /* -----------------------------------------------------------------------------
202
206
  * Component: ContextMenuLabel
203
207
  * -------------------------------------------------------------------------- */
204
208
 
205
- interface ContextMenuLabelProps
206
- extends ContextMenuPrimitive.ContextMenuLabelProps {
209
+ type ContextMenuLabelElement = React.ElementRef<typeof ContextMenuPrimitive.Label>;
210
+
211
+ interface ContextMenuLabelProps extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> {
207
212
  inset?: boolean;
208
213
  }
209
- const ContextMenuLabel = React.forwardRef<
210
- React.ElementRef<typeof ContextMenuPrimitive.Label>,
211
- ContextMenuLabelProps
212
- >(({ className, inset, ...props }, ref) => (
213
- <ContextMenuPrimitive.Label
214
- ref={ref}
215
- className={cn(
216
- "text-foreground px-2 py-1.5 text-sm font-semibold",
217
- inset && "pl-8",
218
- className,
219
- )}
220
- {...props}
221
- />
222
- ));
214
+
215
+ const ContextMenuLabel = React.forwardRef<ContextMenuLabelElement, ContextMenuLabelProps>(
216
+ ({ className, inset, ...props }, ref) => (
217
+ <ContextMenuPrimitive.Label
218
+ ref={ref}
219
+ className={cn("text-foreground px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className)}
220
+ {...props}
221
+ />
222
+ ),
223
+ );
224
+
223
225
  ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
224
226
 
225
227
  /* -----------------------------------------------------------------------------
226
228
  * Component: ContextMenuSeparator
227
229
  * -------------------------------------------------------------------------- */
228
230
 
229
- type ContextMenuSeparatorProps = ContextMenuPrimitive.ContextMenuSeparatorProps;
230
- const ContextMenuSeparator = React.forwardRef<
231
- React.ElementRef<typeof ContextMenuPrimitive.Separator>,
232
- ContextMenuSeparatorProps
233
- >(({ className, ...props }, ref) => (
234
- <ContextMenuPrimitive.Separator
235
- ref={ref}
236
- className={cn("bg-border -mx-1 my-1 h-px", className)}
237
- {...props}
238
- />
239
- ));
231
+ type ContextMenuSeparatorElement = React.ElementRef<typeof ContextMenuPrimitive.Separator>;
232
+ type ContextMenuSeparatorProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>;
233
+
234
+ const ContextMenuSeparator = React.forwardRef<ContextMenuSeparatorElement, ContextMenuSeparatorProps>(
235
+ ({ className, ...props }, ref) => (
236
+ <ContextMenuPrimitive.Separator ref={ref} className={cn("bg-border -mx-1 my-1 h-px", className)} {...props} />
237
+ ),
238
+ );
239
+
240
240
  ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
241
241
 
242
242
  /* -----------------------------------------------------------------------------
@@ -244,36 +244,24 @@ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
244
244
  * -------------------------------------------------------------------------- */
245
245
 
246
246
  type ContextMenuShortcutProps = React.HTMLAttributes<HTMLSpanElement>;
247
- function ContextMenuShortcut({
248
- className,
249
- ...props
250
- }: ContextMenuShortcutProps): React.JSX.Element {
251
- return (
252
- <span
253
- className={cn(
254
- "text-muted-foreground ml-auto text-xs tracking-widest",
255
- className,
256
- )}
257
- {...props}
258
- />
259
- );
247
+
248
+ function ContextMenuShortcut({ className, ...props }: ContextMenuShortcutProps): React.JSX.Element {
249
+ return <span className={cn("text-muted-foreground ml-auto text-xs tracking-widest", className)} {...props} />;
260
250
  }
261
251
 
262
252
  /* -----------------------------------------------------------------------------
263
253
  * Component: ContextMenuArrow
264
254
  * -------------------------------------------------------------------------- */
265
255
 
256
+ type ContextMenuArrowElement = React.ElementRef<typeof ContextMenuPrimitive.Arrow>;
266
257
  type ContextMenuArrowProps = ContextMenuPrimitive.ContextMenuArrowProps;
267
- const ContextMenuArrow = React.forwardRef<
268
- React.ElementRef<typeof ContextMenuPrimitive.Arrow>,
269
- ContextMenuArrowProps
270
- >(({ className, ...props }, ref) => (
271
- <ContextMenuPrimitive.Arrow
272
- ref={ref}
273
- className={cn("fill-popover", className)}
274
- {...props}
275
- />
276
- ));
258
+
259
+ const ContextMenuArrow = React.forwardRef<ContextMenuArrowElement, ContextMenuArrowProps>(
260
+ ({ className, ...props }, ref) => (
261
+ <ContextMenuPrimitive.Arrow ref={ref} className={cn("fill-popover", className)} {...props} />
262
+ ),
263
+ );
264
+
277
265
  ContextMenuArrow.displayName = ContextMenuPrimitive.Arrow.displayName;
278
266
 
279
267
  /* -----------------------------------------------------------------------------
@@ -2,6 +2,7 @@
2
2
 
3
3
  import * as React from "react";
4
4
  import type * as ReactTable from "@tanstack/react-table";
5
+ import { type SortDirection } from "@tanstack/react-table";
5
6
  import {
6
7
  ArrowDownIcon,
7
8
  ArrowUpIcon,
@@ -23,13 +24,7 @@ import {
23
24
  DropdownMenuTrigger,
24
25
  } from "./dropdown-menu";
25
26
  import { Button } from "./button";
26
- import {
27
- Select,
28
- SelectContent,
29
- SelectItem,
30
- SelectTrigger,
31
- SelectValue,
32
- } from "./select";
27
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./select";
33
28
  import { cn } from "./utils";
34
29
 
35
30
  /* -----------------------------------------------------------------------------
@@ -39,17 +34,12 @@ import { cn } from "./utils";
39
34
  interface DataTableViewOptionsProps<TData> {
40
35
  table: ReactTable.Table<TData>;
41
36
  }
42
- function DataTableViewOptions<TData>({
43
- table,
44
- }: DataTableViewOptionsProps<TData>): React.JSX.Element {
37
+
38
+ function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): React.JSX.Element {
45
39
  return (
46
40
  <DropdownMenu>
47
41
  <DropdownMenuTrigger asChild>
48
- <Button
49
- variant="outline"
50
- size="sm"
51
- className="ml-auto hidden h-8 lg:flex"
52
- >
42
+ <Button variant="outline" size="sm" className="ml-auto hidden h-8 lg:flex">
53
43
  <MixerHorizontalIcon className="mr-2 size-4" />
54
44
  View
55
45
  </Button>
@@ -59,10 +49,7 @@ function DataTableViewOptions<TData>({
59
49
  <DropdownMenuSeparator />
60
50
  {table
61
51
  .getAllColumns()
62
- .filter(
63
- (column) =>
64
- typeof column.accessorFn !== "undefined" && column.getCanHide(),
65
- )
52
+ .filter((column) => typeof column.accessorFn !== "undefined" && column.getCanHide())
66
53
  .map((column) => {
67
54
  return (
68
55
  <DropdownMenuCheckboxItem
@@ -86,23 +73,19 @@ function DataTableViewOptions<TData>({
86
73
  * Component: DataTablePagination
87
74
  * -------------------------------------------------------------------------- */
88
75
 
89
- interface DataTablePaginationProps<TData>
90
- extends React.HTMLAttributes<HTMLDivElement> {
76
+ interface DataTablePaginationProps<TData> extends React.HTMLAttributes<HTMLDivElement> {
91
77
  table: ReactTable.Table<TData>;
92
78
  }
79
+
93
80
  function DataTablePagination<TData>({
94
81
  table,
95
82
  className,
96
83
  ...props
97
84
  }: DataTablePaginationProps<TData>): React.JSX.Element {
98
85
  return (
99
- <div
100
- className={cn("flex items-center justify-between px-2", className)}
101
- {...props}
102
- >
86
+ <div className={cn("flex items-center justify-between px-2", className)} {...props}>
103
87
  <div className="text-muted-foreground flex-1 text-sm">
104
- {table.getFilteredSelectedRowModel().rows.length} of{" "}
105
- {table.getFilteredRowModel().rows.length} row(s) selected.
88
+ {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.
106
89
  </div>
107
90
  <div className="flex items-center space-x-6 lg:space-x-8">
108
91
  <div className="flex items-center space-x-2">
@@ -126,8 +109,7 @@ function DataTablePagination<TData>({
126
109
  </Select>
127
110
  </div>
128
111
  <div className="flex w-[100px] items-center justify-center text-sm font-medium">
129
- Page {table.getState().pagination.pageIndex + 1} of{" "}
130
- {table.getPageCount()}
112
+ Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}
131
113
  </div>
132
114
  <div className="flex items-center space-x-2">
133
115
  <Button
@@ -186,11 +168,11 @@ function DataTablePagination<TData>({
186
168
  * Component: DataTableColumnHeader
187
169
  * -------------------------------------------------------------------------- */
188
170
 
189
- interface DataTableColumnHeaderProps<TData, TValue>
190
- extends React.HTMLAttributes<HTMLDivElement> {
171
+ interface DataTableColumnHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {
191
172
  column: ReactTable.Column<TData, TValue>;
192
173
  title: string;
193
174
  }
175
+
194
176
  function DataTableColumnHeader<TData, TValue>({
195
177
  column,
196
178
  title,
@@ -204,19 +186,9 @@ function DataTableColumnHeader<TData, TValue>({
204
186
  <div className={cn("flex items-center space-x-2", className)}>
205
187
  <DropdownMenu>
206
188
  <DropdownMenuTrigger asChild>
207
- <Button
208
- variant="ghost"
209
- size="xs"
210
- className="data-[state=open]:bg-accent -ml-3"
211
- >
189
+ <Button variant="ghost" size="xs" className="data-[state=open]:bg-accent -ml-3">
212
190
  <span>{title}</span>
213
- {column.getIsSorted() === "desc" ? (
214
- <ArrowDownIcon className="ml-2 size-4" />
215
- ) : column.getIsSorted() === "asc" ? (
216
- <ArrowUpIcon className="ml-2 size-4" />
217
- ) : (
218
- <CaretSortIcon className="ml-2 size-4" />
219
- )}
191
+ <SortIcon sorted={column.getIsSorted()} />
220
192
  </Button>
221
193
  </DropdownMenuTrigger>
222
194
  <DropdownMenuContent align="start">
@@ -251,6 +223,17 @@ function DataTableColumnHeader<TData, TValue>({
251
223
  );
252
224
  }
253
225
 
226
+ function SortIcon({ sorted }: { sorted: false | SortDirection }): React.JSX.Element {
227
+ switch (sorted) {
228
+ case "desc":
229
+ return <ArrowDownIcon className="ml-2 size-4" />;
230
+ case "asc":
231
+ return <ArrowUpIcon className="ml-2 size-4" />;
232
+ default:
233
+ return <CaretSortIcon className="ml-2 size-4" />;
234
+ }
235
+ }
236
+
254
237
  /* -----------------------------------------------------------------------------
255
238
  * Exports
256
239
  * -------------------------------------------------------------------------- */