@codefast/ui 0.0.40 → 0.0.42

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 (387) hide show
  1. package/dist/{chunk-EVN2IB57.js → chunk-6EAQQBWG.js} +2 -2
  2. package/dist/chunk-6EAQQBWG.js.map +1 -0
  3. package/dist/{chunk-YR36SVVG.mjs → chunk-7HJV22OF.mjs} +1 -1
  4. package/dist/chunk-7HJV22OF.mjs.map +1 -0
  5. package/dist/{chunk-5WJB3UAO.js → chunk-CERSQE5J.js} +1 -1
  6. package/dist/chunk-CERSQE5J.js.map +1 -0
  7. package/dist/{chunk-UPZHCTQV.js → chunk-ELWITZPX.js} +2 -2
  8. package/dist/chunk-ELWITZPX.js.map +1 -0
  9. package/dist/{chunk-WLMYX3C7.mjs → chunk-GDMHMSJ2.mjs} +2 -2
  10. package/dist/chunk-GDMHMSJ2.mjs.map +1 -0
  11. package/dist/{chunk-UJJZZCAC.js → chunk-HQ4AUOQM.js} +1 -1
  12. package/dist/{chunk-UJJZZCAC.js.map → chunk-HQ4AUOQM.js.map} +1 -1
  13. package/dist/{chunk-HLXU3SQI.mjs → chunk-HWEFQSTC.mjs} +1 -1
  14. package/dist/chunk-HWEFQSTC.mjs.map +1 -0
  15. package/dist/{chunk-JTAXNFUM.mjs → chunk-HX5YKP4E.mjs} +2 -2
  16. package/dist/chunk-HX5YKP4E.mjs.map +1 -0
  17. package/dist/{chunk-PLX35IKX.mjs → chunk-I6QCJDIF.mjs} +1 -1
  18. package/dist/chunk-I6QCJDIF.mjs.map +1 -0
  19. package/dist/{chunk-466PAJCA.mjs → chunk-LEUB3C3L.mjs} +1 -1
  20. package/dist/chunk-LEUB3C3L.mjs.map +1 -0
  21. package/dist/{chunk-KJ77RPJ4.mjs → chunk-M5UKNISJ.mjs} +2 -2
  22. package/dist/chunk-M5UKNISJ.mjs.map +1 -0
  23. package/dist/{chunk-EYERINEJ.js → chunk-MZJL73RI.js} +1 -1
  24. package/dist/chunk-MZJL73RI.js.map +1 -0
  25. package/dist/{chunk-JCMRDCFT.js → chunk-NH6X3FON.js} +1 -1
  26. package/dist/{chunk-JCMRDCFT.js.map → chunk-NH6X3FON.js.map} +1 -1
  27. package/dist/{chunk-UDNWQQ3I.js → chunk-NSK74YTM.js} +2 -2
  28. package/dist/chunk-NSK74YTM.js.map +1 -0
  29. package/dist/{chunk-N6QGG4WS.mjs → chunk-P5AV3QU7.mjs} +2 -2
  30. package/dist/chunk-P5AV3QU7.mjs.map +1 -0
  31. package/dist/{chunk-GRQGCS7U.mjs → chunk-PWF46YXQ.mjs} +2 -2
  32. package/dist/chunk-PWF46YXQ.mjs.map +1 -0
  33. package/dist/{chunk-ZWGC5M4G.js → chunk-SCJ3W2VO.js} +2 -2
  34. package/dist/chunk-SCJ3W2VO.js.map +1 -0
  35. package/dist/{chunk-MSHUAEXI.js → chunk-SCPFGC2X.js} +2 -2
  36. package/dist/chunk-SCPFGC2X.js.map +1 -0
  37. package/dist/{chunk-JIHHUXA5.js → chunk-VXPAGNPJ.js} +2 -2
  38. package/dist/chunk-VXPAGNPJ.js.map +1 -0
  39. package/dist/{chunk-6B2PU2GG.mjs → chunk-WL65TBKJ.mjs} +2 -2
  40. package/dist/chunk-WL65TBKJ.mjs.map +1 -0
  41. package/dist/{chunk-4TJBMO2Y.mjs → chunk-WYYOCZNI.mjs} +2 -2
  42. package/dist/chunk-WYYOCZNI.mjs.map +1 -0
  43. package/dist/{chunk-FEE6PNWV.js → chunk-XM4Y2S5E.js} +2 -2
  44. package/dist/chunk-XM4Y2S5E.js.map +1 -0
  45. package/dist/{chunk-7PJR4WFR.mjs → chunk-ZEYIBYZP.mjs} +2 -2
  46. package/dist/chunk-ZEYIBYZP.mjs.map +1 -0
  47. package/dist/{chunk-AEWLL6A2.js → chunk-ZTEJNUH6.js} +2 -2
  48. package/dist/chunk-ZTEJNUH6.js.map +1 -0
  49. package/dist/lib/utils.js +1 -1
  50. package/dist/lib/utils.mjs +1 -1
  51. package/dist/plugin/animate.plugin.js +1 -1
  52. package/dist/plugin/animate.plugin.mjs +1 -1
  53. package/dist/plugin/base.plugin.js +1 -1
  54. package/dist/plugin/base.plugin.mjs +1 -1
  55. package/dist/plugin/perspective.plugin.js +1 -1
  56. package/dist/plugin/perspective.plugin.mjs +1 -1
  57. package/dist/react/accordion.js +1 -1
  58. package/dist/react/accordion.js.map +1 -1
  59. package/dist/react/accordion.mjs +1 -1
  60. package/dist/react/accordion.mjs.map +1 -1
  61. package/dist/react/alert-dialog.js +1 -1
  62. package/dist/react/alert-dialog.js.map +1 -1
  63. package/dist/react/alert-dialog.mjs +1 -1
  64. package/dist/react/alert-dialog.mjs.map +1 -1
  65. package/dist/react/alert.js +1 -1
  66. package/dist/react/alert.js.map +1 -1
  67. package/dist/react/alert.mjs +1 -1
  68. package/dist/react/alert.mjs.map +1 -1
  69. package/dist/react/aspect-ratio.js.map +1 -1
  70. package/dist/react/aspect-ratio.mjs.map +1 -1
  71. package/dist/react/avatar.js +1 -1
  72. package/dist/react/avatar.js.map +1 -1
  73. package/dist/react/avatar.mjs +1 -1
  74. package/dist/react/avatar.mjs.map +1 -1
  75. package/dist/react/badge.js +1 -1
  76. package/dist/react/badge.js.map +1 -1
  77. package/dist/react/badge.mjs +1 -1
  78. package/dist/react/badge.mjs.map +1 -1
  79. package/dist/react/blockquote.js.map +1 -1
  80. package/dist/react/blockquote.mjs.map +1 -1
  81. package/dist/react/box.d.mts +2 -2
  82. package/dist/react/box.d.ts +2 -2
  83. package/dist/react/box.js.map +1 -1
  84. package/dist/react/box.mjs.map +1 -1
  85. package/dist/react/breadcrumb.js +1 -1
  86. package/dist/react/breadcrumb.js.map +1 -1
  87. package/dist/react/breadcrumb.mjs +1 -1
  88. package/dist/react/breadcrumb.mjs.map +1 -1
  89. package/dist/react/button.js +1 -1
  90. package/dist/react/button.mjs +1 -1
  91. package/dist/react/calendar.js +1 -1
  92. package/dist/react/calendar.js.map +1 -1
  93. package/dist/react/calendar.mjs +1 -1
  94. package/dist/react/calendar.mjs.map +1 -1
  95. package/dist/react/card.js +1 -1
  96. package/dist/react/card.js.map +1 -1
  97. package/dist/react/card.mjs +1 -1
  98. package/dist/react/card.mjs.map +1 -1
  99. package/dist/react/carousel.d.mts +1 -1
  100. package/dist/react/carousel.d.ts +1 -1
  101. package/dist/react/carousel.js +1 -1
  102. package/dist/react/carousel.js.map +1 -1
  103. package/dist/react/carousel.mjs +1 -1
  104. package/dist/react/carousel.mjs.map +1 -1
  105. package/dist/react/checkbox-cards.js +1 -1
  106. package/dist/react/checkbox-cards.js.map +1 -1
  107. package/dist/react/checkbox-cards.mjs +1 -1
  108. package/dist/react/checkbox-cards.mjs.map +1 -1
  109. package/dist/react/checkbox-group.js +1 -1
  110. package/dist/react/checkbox-group.js.map +1 -1
  111. package/dist/react/checkbox-group.mjs +1 -1
  112. package/dist/react/checkbox-group.mjs.map +1 -1
  113. package/dist/react/checkbox-group.primitive.d.mts +8 -8
  114. package/dist/react/checkbox-group.primitive.d.ts +8 -8
  115. package/dist/react/checkbox-group.primitive.js +1 -1
  116. package/dist/react/checkbox-group.primitive.mjs +1 -1
  117. package/dist/react/checkbox.js +1 -1
  118. package/dist/react/checkbox.js.map +1 -1
  119. package/dist/react/checkbox.mjs +1 -1
  120. package/dist/react/checkbox.mjs.map +1 -1
  121. package/dist/react/code.js.map +1 -1
  122. package/dist/react/code.mjs.map +1 -1
  123. package/dist/react/collapsible.js +1 -1
  124. package/dist/react/collapsible.js.map +1 -1
  125. package/dist/react/collapsible.mjs +1 -1
  126. package/dist/react/collapsible.mjs.map +1 -1
  127. package/dist/react/command.js +1 -1
  128. package/dist/react/command.js.map +1 -1
  129. package/dist/react/command.mjs +1 -1
  130. package/dist/react/command.mjs.map +1 -1
  131. package/dist/react/container.js +1 -1
  132. package/dist/react/container.js.map +1 -1
  133. package/dist/react/container.mjs +1 -1
  134. package/dist/react/container.mjs.map +1 -1
  135. package/dist/react/context-menu.js +1 -1
  136. package/dist/react/context-menu.js.map +1 -1
  137. package/dist/react/context-menu.mjs +1 -1
  138. package/dist/react/context-menu.mjs.map +1 -1
  139. package/dist/react/data-table.d.mts +1 -1
  140. package/dist/react/data-table.d.ts +1 -1
  141. package/dist/react/data-table.js +1 -1
  142. package/dist/react/data-table.js.map +1 -1
  143. package/dist/react/data-table.mjs +1 -1
  144. package/dist/react/data-table.mjs.map +1 -1
  145. package/dist/react/dialog.js +1 -1
  146. package/dist/react/dialog.mjs +1 -1
  147. package/dist/react/drawer.js +1 -1
  148. package/dist/react/drawer.js.map +1 -1
  149. package/dist/react/drawer.mjs +1 -1
  150. package/dist/react/drawer.mjs.map +1 -1
  151. package/dist/react/dropdown-menu.js +1 -1
  152. package/dist/react/dropdown-menu.mjs +1 -1
  153. package/dist/react/em.js.map +1 -1
  154. package/dist/react/em.mjs.map +1 -1
  155. package/dist/react/form.js +1 -1
  156. package/dist/react/form.js.map +1 -1
  157. package/dist/react/form.mjs +1 -1
  158. package/dist/react/form.mjs.map +1 -1
  159. package/dist/react/heading.d.mts +1 -1
  160. package/dist/react/heading.d.ts +1 -1
  161. package/dist/react/heading.js.map +1 -1
  162. package/dist/react/heading.mjs.map +1 -1
  163. package/dist/react/hover-card.js +1 -1
  164. package/dist/react/hover-card.js.map +1 -1
  165. package/dist/react/hover-card.mjs +1 -1
  166. package/dist/react/hover-card.mjs.map +1 -1
  167. package/dist/react/input-otp.js +1 -1
  168. package/dist/react/input-otp.js.map +1 -1
  169. package/dist/react/input-otp.mjs +1 -1
  170. package/dist/react/input-otp.mjs.map +1 -1
  171. package/dist/react/input.js +1 -1
  172. package/dist/react/input.js.map +1 -1
  173. package/dist/react/input.mjs +1 -1
  174. package/dist/react/input.mjs.map +1 -1
  175. package/dist/react/kbd.js +1 -1
  176. package/dist/react/kbd.js.map +1 -1
  177. package/dist/react/kbd.mjs +1 -1
  178. package/dist/react/kbd.mjs.map +1 -1
  179. package/dist/react/label.js +1 -1
  180. package/dist/react/label.mjs +1 -1
  181. package/dist/react/menubar.js +1 -1
  182. package/dist/react/menubar.js.map +1 -1
  183. package/dist/react/menubar.mjs +1 -1
  184. package/dist/react/menubar.mjs.map +1 -1
  185. package/dist/react/navigation-menu.js +1 -1
  186. package/dist/react/navigation-menu.js.map +1 -1
  187. package/dist/react/navigation-menu.mjs +1 -1
  188. package/dist/react/navigation-menu.mjs.map +1 -1
  189. package/dist/react/pagination.d.mts +1 -1
  190. package/dist/react/pagination.d.ts +1 -1
  191. package/dist/react/pagination.js +1 -1
  192. package/dist/react/pagination.js.map +1 -1
  193. package/dist/react/pagination.mjs +1 -1
  194. package/dist/react/pagination.mjs.map +1 -1
  195. package/dist/react/popover.js +1 -1
  196. package/dist/react/popover.js.map +1 -1
  197. package/dist/react/popover.mjs +1 -1
  198. package/dist/react/popover.mjs.map +1 -1
  199. package/dist/react/pre.js.map +1 -1
  200. package/dist/react/pre.mjs.map +1 -1
  201. package/dist/react/progress.js +1 -1
  202. package/dist/react/progress.js.map +1 -1
  203. package/dist/react/progress.mjs +1 -1
  204. package/dist/react/progress.mjs.map +1 -1
  205. package/dist/react/quote.js.map +1 -1
  206. package/dist/react/quote.mjs.map +1 -1
  207. package/dist/react/radio-cards.js +1 -1
  208. package/dist/react/radio-cards.js.map +1 -1
  209. package/dist/react/radio-cards.mjs +1 -1
  210. package/dist/react/radio-cards.mjs.map +1 -1
  211. package/dist/react/radio-group.js +1 -1
  212. package/dist/react/radio-group.js.map +1 -1
  213. package/dist/react/radio-group.mjs +1 -1
  214. package/dist/react/radio-group.mjs.map +1 -1
  215. package/dist/react/radio.js +1 -1
  216. package/dist/react/radio.js.map +1 -1
  217. package/dist/react/radio.mjs +1 -1
  218. package/dist/react/radio.mjs.map +1 -1
  219. package/dist/react/resizable.js +1 -1
  220. package/dist/react/resizable.js.map +1 -1
  221. package/dist/react/resizable.mjs +1 -1
  222. package/dist/react/resizable.mjs.map +1 -1
  223. package/dist/react/scroll-area.js +1 -1
  224. package/dist/react/scroll-area.js.map +1 -1
  225. package/dist/react/scroll-area.mjs +1 -1
  226. package/dist/react/scroll-area.mjs.map +1 -1
  227. package/dist/react/section.js.map +1 -1
  228. package/dist/react/section.mjs.map +1 -1
  229. package/dist/react/select.js +1 -1
  230. package/dist/react/select.mjs +1 -1
  231. package/dist/react/separator.js +1 -1
  232. package/dist/react/separator.js.map +1 -1
  233. package/dist/react/separator.mjs +1 -1
  234. package/dist/react/separator.mjs.map +1 -1
  235. package/dist/react/sheet.js +1 -1
  236. package/dist/react/sheet.js.map +1 -1
  237. package/dist/react/sheet.mjs +1 -1
  238. package/dist/react/sheet.mjs.map +1 -1
  239. package/dist/react/skeleton.js +1 -1
  240. package/dist/react/skeleton.js.map +1 -1
  241. package/dist/react/skeleton.mjs +1 -1
  242. package/dist/react/skeleton.mjs.map +1 -1
  243. package/dist/react/slider.js +1 -1
  244. package/dist/react/slider.js.map +1 -1
  245. package/dist/react/slider.mjs +1 -1
  246. package/dist/react/slider.mjs.map +1 -1
  247. package/dist/react/sonner.js.map +1 -1
  248. package/dist/react/sonner.mjs.map +1 -1
  249. package/dist/react/spinner.js +1 -1
  250. package/dist/react/spinner.mjs +1 -1
  251. package/dist/react/strong.js.map +1 -1
  252. package/dist/react/strong.mjs.map +1 -1
  253. package/dist/react/switch.js +1 -1
  254. package/dist/react/switch.js.map +1 -1
  255. package/dist/react/switch.mjs +1 -1
  256. package/dist/react/switch.mjs.map +1 -1
  257. package/dist/react/table.js +1 -1
  258. package/dist/react/table.js.map +1 -1
  259. package/dist/react/table.mjs +1 -1
  260. package/dist/react/table.mjs.map +1 -1
  261. package/dist/react/tabs.js +1 -1
  262. package/dist/react/tabs.js.map +1 -1
  263. package/dist/react/tabs.mjs +1 -1
  264. package/dist/react/tabs.mjs.map +1 -1
  265. package/dist/react/text.d.mts +2 -2
  266. package/dist/react/text.d.ts +2 -2
  267. package/dist/react/text.js.map +1 -1
  268. package/dist/react/text.mjs.map +1 -1
  269. package/dist/react/textarea.js +1 -1
  270. package/dist/react/textarea.js.map +1 -1
  271. package/dist/react/textarea.mjs +1 -1
  272. package/dist/react/textarea.mjs.map +1 -1
  273. package/dist/react/toggle-group.js +1 -1
  274. package/dist/react/toggle-group.js.map +1 -1
  275. package/dist/react/toggle-group.mjs +1 -1
  276. package/dist/react/toggle-group.mjs.map +1 -1
  277. package/dist/react/toggle.js +1 -1
  278. package/dist/react/toggle.mjs +1 -1
  279. package/dist/react/tooltip.js +1 -1
  280. package/dist/react/tooltip.js.map +1 -1
  281. package/dist/react/tooltip.mjs +1 -1
  282. package/dist/react/tooltip.mjs.map +1 -1
  283. package/dist/styles.css +1 -1
  284. package/dist/styles.css.map +1 -1
  285. package/dist/tailwind.config.js +1 -1
  286. package/dist/tailwind.config.js.map +1 -1
  287. package/dist/tailwind.config.mjs +1 -1
  288. package/dist/tailwind.config.mjs.map +1 -1
  289. package/package.json +7 -7
  290. package/plugin/animate.plugin.ts +114 -111
  291. package/plugin/base.plugin.ts +10 -7
  292. package/plugin/perspective.plugin.ts +1 -1
  293. package/src/lib/utils.ts +2 -2
  294. package/src/react/accordion.tsx +65 -41
  295. package/src/react/alert-dialog.tsx +130 -62
  296. package/src/react/alert.tsx +50 -24
  297. package/src/react/aspect-ratio.tsx +6 -4
  298. package/src/react/avatar.tsx +47 -19
  299. package/src/react/badge.tsx +15 -10
  300. package/src/react/blockquote.tsx +11 -8
  301. package/src/react/box.tsx +11 -9
  302. package/src/react/breadcrumb.tsx +62 -29
  303. package/src/react/button.tsx +47 -31
  304. package/src/react/calendar.tsx +54 -37
  305. package/src/react/card.tsx +64 -30
  306. package/src/react/carousel.tsx +101 -43
  307. package/src/react/checkbox-cards.tsx +60 -33
  308. package/src/react/checkbox-group.primitive.tsx +93 -38
  309. package/src/react/checkbox-group.tsx +57 -34
  310. package/src/react/checkbox.tsx +24 -20
  311. package/src/react/code.tsx +9 -7
  312. package/src/react/collapsible.tsx +33 -23
  313. package/src/react/command.tsx +140 -75
  314. package/src/react/container.tsx +12 -8
  315. package/src/react/context-menu.tsx +228 -150
  316. package/src/react/data-table.tsx +51 -21
  317. package/src/react/dialog.tsx +95 -50
  318. package/src/react/drawer.tsx +96 -49
  319. package/src/react/dropdown-menu.tsx +199 -131
  320. package/src/react/em.tsx +9 -7
  321. package/src/react/form.tsx +96 -61
  322. package/src/react/heading.tsx +10 -8
  323. package/src/react/hover-card.tsx +42 -26
  324. package/src/react/input-otp.tsx +48 -37
  325. package/src/react/input.tsx +25 -15
  326. package/src/react/kbd.tsx +21 -19
  327. package/src/react/label.tsx +16 -14
  328. package/src/react/menubar.tsx +214 -135
  329. package/src/react/navigation-menu.tsx +153 -111
  330. package/src/react/pagination.tsx +59 -26
  331. package/src/react/popover.tsx +44 -29
  332. package/src/react/pre.tsx +9 -7
  333. package/src/react/progress.tsx +26 -19
  334. package/src/react/quote.tsx +9 -7
  335. package/src/react/radio-cards.tsx +32 -12
  336. package/src/react/radio-group.tsx +32 -12
  337. package/src/react/radio.tsx +24 -20
  338. package/src/react/resizable.tsx +13 -8
  339. package/src/react/scroll-area.tsx +56 -34
  340. package/src/react/section.tsx +9 -7
  341. package/src/react/select.tsx +167 -114
  342. package/src/react/separator.tsx +16 -7
  343. package/src/react/sheet.tsx +84 -34
  344. package/src/react/skeleton.tsx +8 -3
  345. package/src/react/slider.tsx +31 -24
  346. package/src/react/sonner.tsx +12 -10
  347. package/src/react/spinner.tsx +14 -9
  348. package/src/react/strong.tsx +9 -7
  349. package/src/react/switch.tsx +18 -16
  350. package/src/react/table.tsx +97 -52
  351. package/src/react/tabs.tsx +48 -38
  352. package/src/react/text.tsx +13 -10
  353. package/src/react/textarea.tsx +17 -15
  354. package/src/react/toggle-group.tsx +66 -23
  355. package/src/react/toggle.tsx +26 -18
  356. package/src/react/tooltip.tsx +43 -28
  357. package/tailwind.config.ts +62 -62
  358. package/dist/chunk-466PAJCA.mjs.map +0 -1
  359. package/dist/chunk-4TJBMO2Y.mjs.map +0 -1
  360. package/dist/chunk-5WJB3UAO.js.map +0 -1
  361. package/dist/chunk-6B2PU2GG.mjs.map +0 -1
  362. package/dist/chunk-7PJR4WFR.mjs.map +0 -1
  363. package/dist/chunk-AEWLL6A2.js.map +0 -1
  364. package/dist/chunk-EVN2IB57.js.map +0 -1
  365. package/dist/chunk-EYERINEJ.js.map +0 -1
  366. package/dist/chunk-FEE6PNWV.js.map +0 -1
  367. package/dist/chunk-GRQGCS7U.mjs.map +0 -1
  368. package/dist/chunk-HLXU3SQI.mjs.map +0 -1
  369. package/dist/chunk-JIHHUXA5.js.map +0 -1
  370. package/dist/chunk-JTAXNFUM.mjs.map +0 -1
  371. package/dist/chunk-KJ77RPJ4.mjs.map +0 -1
  372. package/dist/chunk-MSHUAEXI.js.map +0 -1
  373. package/dist/chunk-N6QGG4WS.mjs.map +0 -1
  374. package/dist/chunk-PLX35IKX.mjs.map +0 -1
  375. package/dist/chunk-UDNWQQ3I.js.map +0 -1
  376. package/dist/chunk-UPZHCTQV.js.map +0 -1
  377. package/dist/chunk-WLMYX3C7.mjs.map +0 -1
  378. package/dist/chunk-YR36SVVG.mjs.map +0 -1
  379. package/dist/chunk-ZWGC5M4G.js.map +0 -1
  380. package/dist/plugin/animate.plugin.d.mts +0 -9
  381. package/dist/plugin/animate.plugin.d.ts +0 -9
  382. package/dist/plugin/base.plugin.d.mts +0 -8
  383. package/dist/plugin/base.plugin.d.ts +0 -8
  384. package/dist/plugin/perspective.plugin.d.mts +0 -8
  385. package/dist/plugin/perspective.plugin.d.ts +0 -8
  386. package/dist/tailwind.config.d.mts +0 -5
  387. package/dist/tailwind.config.d.ts +0 -5
@@ -1,9 +1,13 @@
1
- "use client";
1
+ 'use client';
2
2
 
3
- import * as React from "react";
4
- import { CheckIcon, ChevronRightIcon, DotFilledIcon } from "@radix-ui/react-icons";
5
- import * as MenubarPrimitive from "@radix-ui/react-menubar";
6
- import { cn } from "../lib/utils";
3
+ import * as React from 'react';
4
+ import {
5
+ CheckIcon,
6
+ ChevronRightIcon,
7
+ DotFilledIcon,
8
+ } from '@radix-ui/react-icons';
9
+ import * as MenubarPrimitive from '@radix-ui/react-menubar';
10
+ import { cn } from '../lib/utils';
7
11
 
8
12
  /* -----------------------------------------------------------------------------
9
13
  * Component: MenubarMenu
@@ -16,21 +20,27 @@ const MenubarMenu = MenubarPrimitive.Menu;
16
20
  * Component: MenubarGroup
17
21
  * -------------------------------------------------------------------------- */
18
22
 
19
- type MenubarGroupProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Group>;
23
+ type MenubarGroupProps = React.ComponentPropsWithoutRef<
24
+ typeof MenubarPrimitive.Group
25
+ >;
20
26
  const MenubarGroup = MenubarPrimitive.Group;
21
27
 
22
28
  /* -----------------------------------------------------------------------------
23
29
  * Component: MenubarSub
24
30
  * -------------------------------------------------------------------------- */
25
31
 
26
- type MenubarSubProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Sub>;
32
+ type MenubarSubProps = React.ComponentPropsWithoutRef<
33
+ typeof MenubarPrimitive.Sub
34
+ >;
27
35
  const MenubarSub = MenubarPrimitive.Sub;
28
36
 
29
37
  /* -----------------------------------------------------------------------------
30
38
  * Component: MenubarRadioGroup
31
39
  * -------------------------------------------------------------------------- */
32
40
 
33
- type MenubarRadioGroupProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioGroup>;
41
+ type MenubarRadioGroupProps = React.ComponentPropsWithoutRef<
42
+ typeof MenubarPrimitive.RadioGroup
43
+ >;
34
44
  const MenubarRadioGroup = MenubarPrimitive.RadioGroup;
35
45
 
36
46
  /* -----------------------------------------------------------------------------
@@ -38,15 +48,22 @@ const MenubarRadioGroup = MenubarPrimitive.RadioGroup;
38
48
  * -------------------------------------------------------------------------- */
39
49
 
40
50
  type MenubarElement = React.ElementRef<typeof MenubarPrimitive.Root>;
41
- type MenubarProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>;
51
+ type MenubarProps = React.ComponentPropsWithoutRef<
52
+ typeof MenubarPrimitive.Root
53
+ >;
42
54
 
43
- const Menubar = React.forwardRef<MenubarElement, MenubarProps>(({ className, ...props }, ref) => (
44
- <MenubarPrimitive.Root
45
- ref={ref}
46
- className={cn("bg-background flex h-10 items-center space-x-1 rounded-md border p-1 shadow-sm", className)}
47
- {...props}
48
- />
49
- ));
55
+ const Menubar = React.forwardRef<MenubarElement, MenubarProps>(
56
+ ({ className, ...props }, ref) => (
57
+ <MenubarPrimitive.Root
58
+ ref={ref}
59
+ className={cn(
60
+ 'bg-background flex h-10 items-center space-x-1 rounded-md border p-1 shadow-sm',
61
+ className,
62
+ )}
63
+ {...props}
64
+ />
65
+ ),
66
+ );
50
67
 
51
68
  Menubar.displayName = MenubarPrimitive.Root.displayName;
52
69
 
@@ -55,13 +72,18 @@ Menubar.displayName = MenubarPrimitive.Root.displayName;
55
72
  * -------------------------------------------------------------------------- */
56
73
 
57
74
  type MenubarTriggerElement = React.ElementRef<typeof MenubarPrimitive.Trigger>;
58
- type MenubarTriggerProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>;
59
-
60
- const MenubarTrigger = React.forwardRef<MenubarTriggerElement, MenubarTriggerProps>(({ className, ...props }, ref) => (
75
+ type MenubarTriggerProps = React.ComponentPropsWithoutRef<
76
+ typeof MenubarPrimitive.Trigger
77
+ >;
78
+
79
+ const MenubarTrigger = React.forwardRef<
80
+ MenubarTriggerElement,
81
+ MenubarTriggerProps
82
+ >(({ className, ...props }, ref) => (
61
83
  <MenubarPrimitive.Trigger
62
84
  ref={ref}
63
85
  className={cn(
64
- "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-3 py-1 text-sm font-medium focus:outline-none",
86
+ '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-3 py-1 text-sm font-medium focus:outline-none',
65
87
  className,
66
88
  )}
67
89
  {...props}
@@ -74,28 +96,32 @@ MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
74
96
  * Component: MenubarSubTrigger
75
97
  * -------------------------------------------------------------------------- */
76
98
 
77
- type MenubarSubTriggerElement = React.ElementRef<typeof MenubarPrimitive.SubTrigger>;
99
+ type MenubarSubTriggerElement = React.ElementRef<
100
+ typeof MenubarPrimitive.SubTrigger
101
+ >;
78
102
 
79
- interface MenubarSubTriggerProps extends React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> {
103
+ interface MenubarSubTriggerProps
104
+ extends React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> {
80
105
  inset?: boolean;
81
106
  }
82
107
 
83
- const MenubarSubTrigger = React.forwardRef<MenubarSubTriggerElement, MenubarSubTriggerProps>(
84
- ({ children, className, inset, ...props }, ref) => (
85
- <MenubarPrimitive.SubTrigger
86
- ref={ref}
87
- className={cn(
88
- "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",
89
- inset && "pl-8",
90
- className,
91
- )}
92
- {...props}
93
- >
94
- {children}
95
- <ChevronRightIcon className="ml-auto size-4" />
96
- </MenubarPrimitive.SubTrigger>
97
- ),
98
- );
108
+ const MenubarSubTrigger = React.forwardRef<
109
+ MenubarSubTriggerElement,
110
+ MenubarSubTriggerProps
111
+ >(({ children, className, inset, ...props }, ref) => (
112
+ <MenubarPrimitive.SubTrigger
113
+ ref={ref}
114
+ className={cn(
115
+ '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',
116
+ inset && 'pl-8',
117
+ className,
118
+ )}
119
+ {...props}
120
+ >
121
+ {children}
122
+ <ChevronRightIcon className="ml-auto size-4" />
123
+ </MenubarPrimitive.SubTrigger>
124
+ ));
99
125
 
100
126
  MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
101
127
 
@@ -103,23 +129,28 @@ MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
103
129
  * Component: MenubarSubContent
104
130
  * -------------------------------------------------------------------------- */
105
131
 
106
- type MenubarSubContentElement = React.ElementRef<typeof MenubarPrimitive.SubContent>;
107
- type MenubarSubContentProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>;
108
-
109
- const MenubarSubContent = React.forwardRef<MenubarSubContentElement, MenubarSubContentProps>(
110
- ({ className, ...props }, ref) => (
111
- <MenubarPrimitive.Portal>
112
- <MenubarPrimitive.SubContent
113
- ref={ref}
114
- className={cn(
115
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in 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 data-[state=closed]:zoom-out-95 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 z-50 min-w-32 rounded-md border p-1 shadow-md",
116
- className,
117
- )}
118
- {...props}
119
- />
120
- </MenubarPrimitive.Portal>
121
- ),
122
- );
132
+ type MenubarSubContentElement = React.ElementRef<
133
+ typeof MenubarPrimitive.SubContent
134
+ >;
135
+ type MenubarSubContentProps = React.ComponentPropsWithoutRef<
136
+ typeof MenubarPrimitive.SubContent
137
+ >;
138
+
139
+ const MenubarSubContent = React.forwardRef<
140
+ MenubarSubContentElement,
141
+ MenubarSubContentProps
142
+ >(({ className, ...props }, ref) => (
143
+ <MenubarPrimitive.Portal>
144
+ <MenubarPrimitive.SubContent
145
+ ref={ref}
146
+ className={cn(
147
+ 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in 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 data-[state=closed]:zoom-out-95 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 z-50 min-w-32 rounded-md border p-1 shadow-md',
148
+ className,
149
+ )}
150
+ {...props}
151
+ />
152
+ </MenubarPrimitive.Portal>
153
+ ));
123
154
 
124
155
  MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
125
156
 
@@ -128,10 +159,18 @@ MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
128
159
  * -------------------------------------------------------------------------- */
129
160
 
130
161
  type MenubarContentElement = React.ElementRef<typeof MenubarPrimitive.Content>;
131
- type MenubarContentProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>;
132
-
133
- const MenubarContent = React.forwardRef<MenubarContentElement, MenubarContentProps>(
134
- ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => (
162
+ type MenubarContentProps = React.ComponentPropsWithoutRef<
163
+ typeof MenubarPrimitive.Content
164
+ >;
165
+
166
+ const MenubarContent = React.forwardRef<
167
+ MenubarContentElement,
168
+ MenubarContentProps
169
+ >(
170
+ (
171
+ { className, align = 'start', alignOffset = -4, sideOffset = 8, ...props },
172
+ ref,
173
+ ) => (
135
174
  <MenubarPrimitive.Portal>
136
175
  <MenubarPrimitive.Content
137
176
  ref={ref}
@@ -139,7 +178,7 @@ const MenubarContent = React.forwardRef<MenubarContentElement, MenubarContentPro
139
178
  alignOffset={alignOffset}
140
179
  sideOffset={sideOffset}
141
180
  className={cn(
142
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in 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-32 rounded-md border p-1 shadow-md",
181
+ 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in 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-32 rounded-md border p-1 shadow-md',
143
182
  className,
144
183
  )}
145
184
  {...props}
@@ -156,80 +195,93 @@ MenubarContent.displayName = MenubarPrimitive.Content.displayName;
156
195
 
157
196
  type MenubarItemElement = React.ElementRef<typeof MenubarPrimitive.Item>;
158
197
 
159
- interface MenubarItemProps extends React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> {
198
+ interface MenubarItemProps
199
+ extends React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> {
160
200
  inset?: boolean;
161
201
  }
162
202
 
163
- const MenubarItem = React.forwardRef<MenubarItemElement, MenubarItemProps>(({ className, inset, ...props }, ref) => (
164
- <MenubarPrimitive.Item
165
- ref={ref}
166
- className={cn(
167
- "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",
168
- inset && "pl-8",
169
- className,
170
- )}
171
- {...props}
172
- />
173
- ));
174
-
175
- MenubarItem.displayName = MenubarPrimitive.Item.displayName;
176
-
177
- /* -----------------------------------------------------------------------------
178
- * Component: MenubarCheckboxItem
179
- * -------------------------------------------------------------------------- */
180
-
181
- type MenubarCheckboxItemElement = React.ElementRef<typeof MenubarPrimitive.CheckboxItem>;
182
- type MenubarCheckboxItemProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>;
183
-
184
- const MenubarCheckboxItem = React.forwardRef<MenubarCheckboxItemElement, MenubarCheckboxItemProps>(
185
- ({ children, className, checked, ...props }, ref) => (
186
- <MenubarPrimitive.CheckboxItem
203
+ const MenubarItem = React.forwardRef<MenubarItemElement, MenubarItemProps>(
204
+ ({ className, inset, ...props }, ref) => (
205
+ <MenubarPrimitive.Item
187
206
  ref={ref}
188
207
  className={cn(
189
- "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",
208
+ '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',
209
+ inset && 'pl-8',
190
210
  className,
191
211
  )}
192
- checked={checked}
193
212
  {...props}
194
- >
195
- <span className="absolute left-2 flex size-3.5 items-center justify-center">
196
- <MenubarPrimitive.ItemIndicator>
197
- <CheckIcon className="size-4" />
198
- </MenubarPrimitive.ItemIndicator>
199
- </span>
200
- {children}
201
- </MenubarPrimitive.CheckboxItem>
213
+ />
202
214
  ),
203
215
  );
204
216
 
217
+ MenubarItem.displayName = MenubarPrimitive.Item.displayName;
218
+
219
+ /* -----------------------------------------------------------------------------
220
+ * Component: MenubarCheckboxItem
221
+ * -------------------------------------------------------------------------- */
222
+
223
+ type MenubarCheckboxItemElement = React.ElementRef<
224
+ typeof MenubarPrimitive.CheckboxItem
225
+ >;
226
+ type MenubarCheckboxItemProps = React.ComponentPropsWithoutRef<
227
+ typeof MenubarPrimitive.CheckboxItem
228
+ >;
229
+
230
+ const MenubarCheckboxItem = React.forwardRef<
231
+ MenubarCheckboxItemElement,
232
+ MenubarCheckboxItemProps
233
+ >(({ children, className, checked, ...props }, ref) => (
234
+ <MenubarPrimitive.CheckboxItem
235
+ ref={ref}
236
+ className={cn(
237
+ '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',
238
+ className,
239
+ )}
240
+ checked={checked}
241
+ {...props}
242
+ >
243
+ <span className="absolute left-2 flex size-3.5 items-center justify-center">
244
+ <MenubarPrimitive.ItemIndicator>
245
+ <CheckIcon className="size-4" />
246
+ </MenubarPrimitive.ItemIndicator>
247
+ </span>
248
+ {children}
249
+ </MenubarPrimitive.CheckboxItem>
250
+ ));
251
+
205
252
  MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
206
253
 
207
254
  /* -----------------------------------------------------------------------------
208
255
  * Component: MenubarRadioItem
209
256
  * -------------------------------------------------------------------------- */
210
257
 
211
- type MenubarRadioItemElement = React.ElementRef<typeof MenubarPrimitive.RadioItem>;
212
- type MenubarRadioItemProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>;
213
-
214
- const MenubarRadioItem = React.forwardRef<MenubarRadioItemElement, MenubarRadioItemProps>(
215
- ({ children, className, ...props }, ref) => (
216
- <MenubarPrimitive.RadioItem
217
- ref={ref}
218
- className={cn(
219
- "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",
220
- className,
221
- )}
222
- {...props}
223
- >
224
- <span className="absolute left-2 flex size-3.5 items-center justify-center">
225
- <MenubarPrimitive.ItemIndicator>
226
- <DotFilledIcon className="size-4 fill-current" />
227
- </MenubarPrimitive.ItemIndicator>
228
- </span>
229
- {children}
230
- </MenubarPrimitive.RadioItem>
231
- ),
232
- );
258
+ type MenubarRadioItemElement = React.ElementRef<
259
+ typeof MenubarPrimitive.RadioItem
260
+ >;
261
+ type MenubarRadioItemProps = React.ComponentPropsWithoutRef<
262
+ typeof MenubarPrimitive.RadioItem
263
+ >;
264
+
265
+ const MenubarRadioItem = React.forwardRef<
266
+ MenubarRadioItemElement,
267
+ MenubarRadioItemProps
268
+ >(({ children, className, ...props }, ref) => (
269
+ <MenubarPrimitive.RadioItem
270
+ ref={ref}
271
+ className={cn(
272
+ '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',
273
+ className,
274
+ )}
275
+ {...props}
276
+ >
277
+ <span className="absolute left-2 flex size-3.5 items-center justify-center">
278
+ <MenubarPrimitive.ItemIndicator>
279
+ <DotFilledIcon className="size-4 fill-current" />
280
+ </MenubarPrimitive.ItemIndicator>
281
+ </span>
282
+ {children}
283
+ </MenubarPrimitive.RadioItem>
284
+ ));
233
285
 
234
286
  MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
235
287
 
@@ -239,17 +291,24 @@ MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
239
291
 
240
292
  type MenubarLabelElement = React.ElementRef<typeof MenubarPrimitive.Label>;
241
293
 
242
- interface MenubarLabelProps extends React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> {
294
+ interface MenubarLabelProps
295
+ extends React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> {
243
296
  inset?: boolean;
244
297
  }
245
298
 
246
- const MenubarLabel = React.forwardRef<MenubarLabelElement, MenubarLabelProps>(({ className, inset, ...props }, ref) => (
247
- <MenubarPrimitive.Label
248
- ref={ref}
249
- className={cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className)}
250
- {...props}
251
- />
252
- ));
299
+ const MenubarLabel = React.forwardRef<MenubarLabelElement, MenubarLabelProps>(
300
+ ({ className, inset, ...props }, ref) => (
301
+ <MenubarPrimitive.Label
302
+ ref={ref}
303
+ className={cn(
304
+ 'px-2 py-1.5 text-sm font-semibold',
305
+ inset && 'pl-8',
306
+ className,
307
+ )}
308
+ {...props}
309
+ />
310
+ ),
311
+ );
253
312
 
254
313
  MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
255
314
 
@@ -257,14 +316,23 @@ MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
257
316
  * Component: MenubarSeparator
258
317
  * -------------------------------------------------------------------------- */
259
318
 
260
- type MenubarSeparatorElement = React.ElementRef<typeof MenubarPrimitive.Separator>;
261
- type MenubarSeparatorProps = React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>;
262
-
263
- const MenubarSeparator = React.forwardRef<MenubarSeparatorElement, MenubarSeparatorProps>(
264
- ({ className, ...props }, ref) => (
265
- <MenubarPrimitive.Separator ref={ref} className={cn("bg-muted -mx-1 my-1 h-px", className)} {...props} />
266
- ),
267
- );
319
+ type MenubarSeparatorElement = React.ElementRef<
320
+ typeof MenubarPrimitive.Separator
321
+ >;
322
+ type MenubarSeparatorProps = React.ComponentPropsWithoutRef<
323
+ typeof MenubarPrimitive.Separator
324
+ >;
325
+
326
+ const MenubarSeparator = React.forwardRef<
327
+ MenubarSeparatorElement,
328
+ MenubarSeparatorProps
329
+ >(({ className, ...props }, ref) => (
330
+ <MenubarPrimitive.Separator
331
+ ref={ref}
332
+ className={cn('bg-muted -mx-1 my-1 h-px', className)}
333
+ {...props}
334
+ />
335
+ ));
268
336
 
269
337
  MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
270
338
 
@@ -274,8 +342,19 @@ MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
274
342
 
275
343
  type MenubarShortcutProps = React.HTMLAttributes<HTMLSpanElement>;
276
344
 
277
- function MenubarShortcut({ className, ...props }: MenubarShortcutProps): React.JSX.Element {
278
- return <span className={cn("text-muted-foreground ml-auto text-xs tracking-widest", className)} {...props} />;
345
+ function MenubarShortcut({
346
+ className,
347
+ ...props
348
+ }: MenubarShortcutProps): React.JSX.Element {
349
+ return (
350
+ <span
351
+ className={cn(
352
+ 'text-muted-foreground ml-auto text-xs tracking-widest',
353
+ className,
354
+ )}
355
+ {...props}
356
+ />
357
+ );
279
358
  }
280
359
 
281
360
  /* -----------------------------------------------------------------------------