@rimelight/ui 0.0.32 → 0.0.34

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 (402) hide show
  1. package/README.md +135 -8
  2. package/package.json +17 -20
  3. package/src/components/TableOfContents.astro +44 -43
  4. package/src/components/astro/RLA3dHover.astro +22 -18
  5. package/src/components/astro/RLAAlert.astro +93 -62
  6. package/src/components/astro/RLAApp.astro +22 -18
  7. package/src/components/astro/RLAAspectRatio.astro +27 -23
  8. package/src/components/astro/RLAAudio.astro +22 -18
  9. package/src/components/astro/RLAAvatar.astro +68 -56
  10. package/src/components/astro/RLAAvatarGroup.astro +23 -19
  11. package/src/components/astro/RLABadge.astro +34 -33
  12. package/src/components/astro/RLABanner.astro +22 -18
  13. package/src/components/astro/RLABreadcrumb.astro +48 -44
  14. package/src/components/astro/RLABrowserMockup.astro +22 -18
  15. package/src/components/astro/RLAButton.astro +141 -90
  16. package/src/components/astro/RLACalendar.astro +22 -18
  17. package/src/components/astro/RLACard.astro +78 -74
  18. package/src/components/astro/RLACarousel.astro +75 -71
  19. package/src/components/astro/RLAChangelog.astro +22 -18
  20. package/src/components/astro/RLAChart.astro +19 -34
  21. package/src/components/astro/RLAChat.astro +22 -18
  22. package/src/components/astro/RLAChatMessage.astro +22 -18
  23. package/src/components/astro/RLAChatMessages.astro +22 -18
  24. package/src/components/astro/RLAChatPalette.astro +22 -18
  25. package/src/components/astro/RLAChatPrompt.astro +22 -18
  26. package/src/components/astro/RLAChatPromptSubmit.astro +22 -18
  27. package/src/components/astro/RLAChatReasoning.astro +22 -18
  28. package/src/components/astro/RLAChatShimmer.astro +22 -18
  29. package/src/components/astro/RLAChatTool.astro +22 -18
  30. package/src/components/astro/RLAChip.astro +51 -20
  31. package/src/components/astro/RLAColorPicker.astro +22 -18
  32. package/src/components/astro/RLACommandPalette.astro +22 -18
  33. package/src/components/astro/RLACompare.astro +22 -18
  34. package/src/components/astro/RLAConfirm.astro +117 -86
  35. package/src/components/astro/RLAContainer.astro +22 -18
  36. package/src/components/astro/RLAContextMenu.astro +22 -18
  37. package/src/components/astro/RLADashboardGroup.astro +22 -18
  38. package/src/components/astro/RLADashboardNavbar.astro +22 -18
  39. package/src/components/astro/RLADashboardPanel.astro +22 -18
  40. package/src/components/astro/RLADashboardResizeHandle.astro +22 -18
  41. package/src/components/astro/RLADashboardSearch.astro +22 -18
  42. package/src/components/astro/RLADashboardSearchButton.astro +22 -18
  43. package/src/components/astro/RLADashboardSidebar.astro +22 -18
  44. package/src/components/astro/RLADashboardSidebarCollapse.astro +22 -18
  45. package/src/components/astro/RLADashboardSidebarToggle.astro +22 -18
  46. package/src/components/astro/RLADashboardToolbar.astro +22 -18
  47. package/src/components/astro/RLADock.astro +22 -18
  48. package/src/{plugins/starlightAddons/components/Gamepad.astro → components/astro/RLADocsGamepad.astro} +178 -180
  49. package/src/{plugins/starlightAddons/components/Keyboard.astro → components/astro/RLADocsKeyboard.astro} +1 -3
  50. package/src/{plugins/starlightAddons/PackageManagers.astro → components/astro/RLADocsPackageManagers.astro} +28 -14
  51. package/src/components/astro/RLADrawer.astro +78 -74
  52. package/src/components/astro/RLAEditor.astro +22 -18
  53. package/src/components/astro/RLAEmpty.astro +22 -18
  54. package/src/components/astro/RLAError.astro +22 -18
  55. package/src/components/astro/RLAFieldset.astro +22 -18
  56. package/src/components/astro/RLAFloatingAction.astro +22 -18
  57. package/src/components/astro/RLAFooter.astro +39 -35
  58. package/src/components/astro/RLAForm.astro +23 -19
  59. package/src/components/astro/RLAGallery.astro +22 -18
  60. package/src/components/astro/RLAGrid.astro +39 -0
  61. package/src/components/astro/RLAHead.astro +427 -180
  62. package/src/components/astro/RLAHeader.astro +12 -53
  63. package/src/components/astro/RLAHoverCard.astro +35 -31
  64. package/src/components/astro/RLAIcon.astro +31 -27
  65. package/src/components/astro/RLAImage.astro +251 -19
  66. package/src/components/astro/RLAInputDate.astro +22 -18
  67. package/src/components/astro/RLAInputNumber.astro +22 -18
  68. package/src/components/astro/RLAInputTags.astro +22 -18
  69. package/src/components/astro/RLAInputTime.astro +22 -18
  70. package/src/components/astro/RLAKbd.astro +32 -22
  71. package/src/components/astro/RLAKnob.astro +22 -18
  72. package/src/components/astro/RLALabel.astro +27 -23
  73. package/src/components/astro/RLALink.astro +13 -10
  74. package/src/components/astro/RLALinkGroup.astro +99 -18
  75. package/src/components/astro/RLAListbox.astro +22 -18
  76. package/src/components/astro/RLALocaleSelector.astro +136 -109
  77. package/src/components/astro/RLALogo.astro +90 -56
  78. package/src/components/astro/RLAMain.astro +15 -4
  79. package/src/components/astro/RLAMarquee.astro +43 -32
  80. package/src/components/astro/RLAMegamenu.astro +22 -18
  81. package/src/components/astro/RLAMeter.astro +22 -18
  82. package/src/components/astro/RLAModal.astro +99 -95
  83. package/src/components/astro/RLANavigationMenu.astro +326 -136
  84. package/src/components/astro/RLAPage.astro +22 -18
  85. package/src/components/astro/RLAPageAside.astro +22 -18
  86. package/src/components/astro/RLAPageBody.astro +22 -18
  87. package/src/components/astro/RLAPageHeader.astro +22 -18
  88. package/src/components/astro/RLAPageSection.astro +5 -1
  89. package/src/components/astro/RLAPagination.astro +96 -94
  90. package/src/components/astro/RLAPassword.astro +22 -18
  91. package/src/components/astro/RLAPhoneMockup.astro +22 -18
  92. package/src/components/astro/RLAPinInput.astro +23 -0
  93. package/src/components/astro/RLAPlaceholder.astro +45 -41
  94. package/src/components/astro/RLAPopover.astro +35 -31
  95. package/src/components/astro/RLAPost.astro +65 -19
  96. package/src/components/astro/RLAPricingPlan.astro +22 -18
  97. package/src/components/astro/RLAPricingTable.astro +22 -18
  98. package/src/components/astro/RLAProgress.astro +8 -2
  99. package/src/components/astro/RLAProse.astro +22 -18
  100. package/src/components/astro/RLAQrCode.astro +22 -18
  101. package/src/components/astro/RLARadioGroup.astro +22 -18
  102. package/src/components/astro/RLARating.astro +22 -18
  103. package/src/components/astro/RLASelect.astro +38 -24
  104. package/src/components/astro/RLASeparator.astro +78 -27
  105. package/src/components/astro/RLASidebar.astro +212 -135
  106. package/src/components/astro/RLASkeleton.astro +24 -20
  107. package/src/components/astro/RLASlideover.astro +141 -72
  108. package/src/components/astro/RLASlider.astro +14 -14
  109. package/src/components/astro/RLASpeedDial.astro +22 -18
  110. package/src/components/astro/RLASplitter.astro +14 -2
  111. package/src/components/astro/RLASpoiler.astro +22 -18
  112. package/src/components/astro/RLAStepper.astro +22 -18
  113. package/src/components/astro/RLASteps.astro +71 -0
  114. package/src/components/astro/RLAStickySurface.astro +38 -27
  115. package/src/components/astro/RLATableOfContents.astro +22 -18
  116. package/src/components/astro/RLATabs.astro +133 -92
  117. package/src/components/astro/RLAThemeSelector.astro +5 -1
  118. package/src/components/astro/RLATimeline.astro +22 -18
  119. package/src/components/astro/RLATooltip.astro +35 -31
  120. package/src/components/astro/RLATour.astro +22 -18
  121. package/src/components/astro/RLATree.astro +22 -18
  122. package/src/components/astro/RLAUser.astro +22 -18
  123. package/src/components/astro/RLAVideo.astro +200 -196
  124. package/src/components/astro/RLAWatermark.astro +22 -18
  125. package/src/components/astro/RLAWindowMockup.astro +22 -18
  126. package/src/components/vue/RLVCheckbox.vue +68 -0
  127. package/src/components/vue/RLVForm.vue +44 -0
  128. package/src/components/vue/RLVFormField.vue +58 -0
  129. package/src/components/vue/RLVInput.vue +93 -0
  130. package/src/components/vue/RLVPost.vue +63 -0
  131. package/src/components/vue/RLVPosts.vue +21 -0
  132. package/src/components/vue/RLVSection.vue +5 -4
  133. package/src/components/vue/RLVToast.vue +68 -0
  134. package/src/components/vue/RLVToaster.vue +29 -0
  135. package/src/composables/index.ts +2 -0
  136. package/src/composables/useHeaderStore.ts +13 -0
  137. package/src/composables/useScrollToTop.ts +7 -7
  138. package/src/composables/useToast.ts +43 -0
  139. package/src/config/index.ts +1 -0
  140. package/src/config/security.ts +220 -0
  141. package/src/env.d.ts +0 -13
  142. package/src/integrations/ui.ts +199 -208
  143. package/src/middleware/security.ts +75 -15
  144. package/src/plugins/index.ts +0 -3
  145. package/src/plugins/starlightDocsApi/index.ts +20 -13
  146. package/src/presets/defaults.ts +12 -0
  147. package/src/presets/index.ts +683 -537
  148. package/src/styles/index.css +0 -2
  149. package/src/themes/3d-hover.theme.ts +11 -8
  150. package/src/themes/accordion.theme.ts +11 -8
  151. package/src/themes/alert.theme.ts +96 -21
  152. package/src/themes/app.theme.ts +11 -8
  153. package/src/themes/aspect-ratio.theme.ts +10 -8
  154. package/src/themes/audio.theme.ts +11 -8
  155. package/src/themes/avatar-group.theme.ts +9 -7
  156. package/src/themes/avatar.theme.ts +79 -23
  157. package/src/themes/badge.theme.ts +119 -16
  158. package/src/themes/banner.theme.ts +11 -8
  159. package/src/themes/breadcrumb.theme.ts +14 -12
  160. package/src/themes/browser-mockup.theme.ts +11 -8
  161. package/src/themes/button.theme.ts +224 -195
  162. package/src/themes/calendar.theme.ts +11 -8
  163. package/src/themes/card.theme.ts +37 -29
  164. package/src/themes/carousel.theme.ts +30 -28
  165. package/src/themes/changelog.theme.ts +11 -8
  166. package/src/themes/chart.theme.ts +2 -1
  167. package/src/themes/chat-message.theme.ts +11 -8
  168. package/src/themes/chat-messages.theme.ts +11 -8
  169. package/src/themes/chat-palette.theme.ts +11 -8
  170. package/src/themes/chat-prompt-submit.theme.ts +11 -8
  171. package/src/themes/chat-prompt.theme.ts +11 -8
  172. package/src/themes/chat-reasoning.theme.ts +11 -8
  173. package/src/themes/chat-shimmer.theme.ts +11 -8
  174. package/src/themes/chat-tool.theme.ts +11 -8
  175. package/src/themes/chat.theme.ts +11 -8
  176. package/src/themes/checkbox.theme.ts +12 -10
  177. package/src/themes/chip.theme.ts +71 -13
  178. package/src/themes/color-picker.theme.ts +11 -8
  179. package/src/themes/command-palette.theme.ts +11 -8
  180. package/src/themes/compare.theme.ts +11 -8
  181. package/src/themes/confirm.theme.ts +43 -28
  182. package/src/themes/container.theme.ts +11 -8
  183. package/src/themes/context-menu.theme.ts +11 -8
  184. package/src/themes/dashboard-group.theme.ts +11 -8
  185. package/src/themes/dashboard-navbar.theme.ts +11 -8
  186. package/src/themes/dashboard-panel.theme.ts +11 -8
  187. package/src/themes/dashboard-resize-handle.theme.ts +11 -8
  188. package/src/themes/dashboard-search-button.theme.ts +11 -8
  189. package/src/themes/dashboard-search.theme.ts +11 -8
  190. package/src/themes/dashboard-sidebar-collapse.theme.ts +11 -8
  191. package/src/themes/dashboard-sidebar-toggle.theme.ts +11 -8
  192. package/src/themes/dashboard-sidebar.theme.ts +11 -8
  193. package/src/themes/dashboard-toolbar.theme.ts +11 -8
  194. package/src/themes/dock.theme.ts +11 -8
  195. package/src/themes/drawer.theme.ts +55 -38
  196. package/src/themes/dropdown-menu.theme.ts +4 -2
  197. package/src/themes/editor.theme.ts +11 -8
  198. package/src/themes/empty.theme.ts +11 -8
  199. package/src/themes/error.theme.ts +11 -8
  200. package/src/themes/field-group.theme.ts +2 -1
  201. package/src/themes/fieldset.theme.ts +11 -8
  202. package/src/themes/floating-action.theme.ts +11 -8
  203. package/src/themes/footer.theme.ts +26 -23
  204. package/src/themes/form.theme.ts +11 -8
  205. package/src/themes/gallery.theme.ts +11 -8
  206. package/src/themes/head.theme.ts +11 -8
  207. package/src/themes/header.theme.ts +38 -36
  208. package/src/themes/hover-card.theme.ts +25 -23
  209. package/src/themes/icon.theme.ts +20 -17
  210. package/src/themes/image.theme.ts +21 -8
  211. package/src/themes/input-date.theme.ts +11 -8
  212. package/src/themes/input-menu.theme.ts +11 -4
  213. package/src/themes/input-number.theme.ts +11 -8
  214. package/src/themes/input-tags.theme.ts +11 -8
  215. package/src/themes/input-time.theme.ts +11 -8
  216. package/src/themes/input.theme.ts +2 -1
  217. package/src/themes/kbd.theme.ts +91 -20
  218. package/src/themes/knob.theme.ts +11 -8
  219. package/src/themes/label.theme.ts +18 -16
  220. package/src/themes/link-group.theme.ts +30 -8
  221. package/src/themes/link.theme.ts +11 -8
  222. package/src/themes/listbox.theme.ts +11 -8
  223. package/src/themes/locale-selector.theme.ts +49 -50
  224. package/src/themes/logo.theme.ts +11 -8
  225. package/src/themes/main.theme.ts +13 -12
  226. package/src/themes/marquee.theme.ts +24 -22
  227. package/src/themes/megamenu.theme.ts +11 -8
  228. package/src/themes/meter.theme.ts +11 -8
  229. package/src/themes/modal.theme.ts +44 -32
  230. package/src/themes/navigation-menu.theme.ts +34 -9
  231. package/src/themes/page-aside.theme.ts +11 -8
  232. package/src/themes/page-body.theme.ts +11 -8
  233. package/src/themes/page-header.theme.ts +11 -8
  234. package/src/themes/page-section.theme.ts +173 -172
  235. package/src/themes/page.theme.ts +11 -8
  236. package/src/themes/pagination.theme.ts +24 -22
  237. package/src/themes/password.theme.ts +11 -8
  238. package/src/themes/phone-mockup.theme.ts +11 -8
  239. package/src/themes/pin-input.theme.ts +14 -0
  240. package/src/themes/placeholder.theme.ts +13 -10
  241. package/src/themes/popover.theme.ts +26 -24
  242. package/src/themes/post.theme.ts +31 -8
  243. package/src/themes/pricing-plan.theme.ts +11 -8
  244. package/src/themes/pricing-table.theme.ts +11 -8
  245. package/src/themes/progress.theme.ts +10 -9
  246. package/src/themes/prose.theme.ts +11 -8
  247. package/src/themes/qr-code.theme.ts +11 -8
  248. package/src/themes/quote.theme.ts +11 -8
  249. package/src/themes/radio-group.theme.ts +11 -8
  250. package/src/themes/rating.theme.ts +11 -8
  251. package/src/themes/scroll-area.theme.ts +4 -2
  252. package/src/themes/scroll-to-top.theme.ts +12 -10
  253. package/src/themes/select.theme.ts +4 -2
  254. package/src/themes/separator.theme.ts +143 -15
  255. package/src/themes/sidebar.theme.ts +9 -4
  256. package/src/themes/skeleton.theme.ts +17 -16
  257. package/src/themes/slideover.theme.ts +53 -37
  258. package/src/themes/slider.theme.ts +13 -11
  259. package/src/themes/speed-dial.theme.ts +11 -8
  260. package/src/themes/spinner.theme.ts +2 -3
  261. package/src/themes/splitter.theme.ts +2 -1
  262. package/src/themes/spoiler.theme.ts +11 -8
  263. package/src/themes/stepper.theme.ts +11 -8
  264. package/src/themes/sticky-surface.theme.ts +9 -7
  265. package/src/themes/switch.theme.ts +12 -10
  266. package/src/themes/table-of-contents.theme.ts +46 -8
  267. package/src/themes/tabs.theme.ts +14 -6
  268. package/src/themes/textarea.theme.ts +2 -1
  269. package/src/themes/theme-selector.theme.ts +15 -16
  270. package/src/themes/timeline.theme.ts +11 -8
  271. package/src/themes/toast.theme.ts +10 -4
  272. package/src/themes/tooltip.theme.ts +24 -23
  273. package/src/themes/tour.theme.ts +11 -8
  274. package/src/themes/tree.theme.ts +11 -8
  275. package/src/themes/user.theme.ts +11 -8
  276. package/src/themes/video.theme.ts +15 -12
  277. package/src/themes/watermark.theme.ts +11 -8
  278. package/src/themes/window-mockup.theme.ts +11 -8
  279. package/src/types/components/3d-hover.ts +1 -1
  280. package/src/types/components/alert.ts +2 -2
  281. package/src/types/components/app.ts +1 -1
  282. package/src/types/components/audio.ts +1 -1
  283. package/src/types/components/avatar-group.ts +11 -12
  284. package/src/types/components/avatar.ts +46 -21
  285. package/src/types/components/badge.ts +2 -2
  286. package/src/types/components/banner.ts +1 -1
  287. package/src/types/components/browser-mockup.ts +1 -1
  288. package/src/types/components/button.ts +7 -10
  289. package/src/types/components/calendar.ts +1 -1
  290. package/src/types/components/changelog.ts +1 -1
  291. package/src/types/components/chart.ts +2 -1
  292. package/src/types/components/chat-message.ts +1 -1
  293. package/src/types/components/chat-messages.ts +1 -1
  294. package/src/types/components/chat-palette.ts +1 -1
  295. package/src/types/components/chat-prompt-submit.ts +1 -1
  296. package/src/types/components/chat-prompt.ts +1 -1
  297. package/src/types/components/chat-reasoning.ts +1 -1
  298. package/src/types/components/chat-shimmer.ts +1 -1
  299. package/src/types/components/chat-tool.ts +1 -1
  300. package/src/types/components/chat.ts +1 -1
  301. package/src/types/components/checkbox.ts +2 -2
  302. package/src/types/components/chip.ts +1 -1
  303. package/src/types/components/collapsible.ts +2 -1
  304. package/src/types/components/color-picker.ts +1 -1
  305. package/src/types/components/command-palette.ts +1 -1
  306. package/src/types/components/compare.ts +1 -1
  307. package/src/types/components/container.ts +7 -1
  308. package/src/types/components/context-menu.ts +1 -1
  309. package/src/types/components/dashboard-group.ts +1 -1
  310. package/src/types/components/dashboard-navbar.ts +1 -1
  311. package/src/types/components/dashboard-panel.ts +1 -1
  312. package/src/types/components/dashboard-resize-handle.ts +1 -1
  313. package/src/types/components/dashboard-search-button.ts +1 -1
  314. package/src/types/components/dashboard-search.ts +1 -1
  315. package/src/types/components/dashboard-sidebar-collapse.ts +1 -1
  316. package/src/types/components/dashboard-sidebar-toggle.ts +1 -1
  317. package/src/types/components/dashboard-sidebar.ts +1 -1
  318. package/src/types/components/dashboard-toolbar.ts +1 -1
  319. package/src/types/components/dock.ts +1 -1
  320. package/src/types/components/dropdown-menu.ts +2 -1
  321. package/src/types/components/editor.ts +1 -1
  322. package/src/types/components/empty.ts +1 -1
  323. package/src/types/components/error.ts +1 -1
  324. package/src/types/components/fieldset.ts +1 -1
  325. package/src/types/components/file-upload.ts +2 -1
  326. package/src/types/components/floating-action.ts +1 -1
  327. package/src/types/components/form.ts +9 -1
  328. package/src/types/components/gallery.ts +1 -1
  329. package/src/types/components/icon.ts +0 -1
  330. package/src/types/components/image.ts +28 -7
  331. package/src/types/components/index.ts +134 -134
  332. package/src/types/components/input-date.ts +1 -1
  333. package/src/types/components/input-menu.ts +2 -2
  334. package/src/types/components/input-number.ts +1 -1
  335. package/src/types/components/input-pin.ts +26 -1
  336. package/src/types/components/input-tags.ts +1 -1
  337. package/src/types/components/input-time.ts +1 -1
  338. package/src/types/components/input.ts +2 -2
  339. package/src/types/components/knob.ts +1 -1
  340. package/src/types/components/link-group.ts +35 -1
  341. package/src/types/components/link.ts +4 -0
  342. package/src/types/components/listbox.ts +1 -1
  343. package/src/types/components/locale-selector.ts +33 -33
  344. package/src/types/components/logo.ts +5 -0
  345. package/src/types/components/main.ts +17 -17
  346. package/src/types/components/megamenu.ts +1 -1
  347. package/src/types/components/meter.ts +1 -1
  348. package/src/types/components/modal.ts +0 -1
  349. package/src/types/components/navigation-menu.ts +13 -8
  350. package/src/types/components/page-aside.ts +1 -1
  351. package/src/types/components/page-body.ts +1 -1
  352. package/src/types/components/page-header.ts +1 -1
  353. package/src/types/components/page.ts +1 -1
  354. package/src/types/components/password.ts +1 -1
  355. package/src/types/components/phone-mockup.ts +1 -1
  356. package/src/types/components/pin-input.ts +11 -0
  357. package/src/types/components/popover.ts +0 -1
  358. package/src/types/components/post.ts +25 -1
  359. package/src/types/components/pricing-plan.ts +1 -1
  360. package/src/types/components/pricing-table.ts +1 -1
  361. package/src/types/components/progress.ts +2 -3
  362. package/src/types/components/prose.ts +1 -1
  363. package/src/types/components/qr-code.ts +1 -1
  364. package/src/types/components/radio-group.ts +1 -1
  365. package/src/types/components/rating.ts +1 -1
  366. package/src/types/components/scroll-area.ts +0 -1
  367. package/src/types/components/scroll-to-top.ts +2 -2
  368. package/src/types/components/select.ts +2 -1
  369. package/src/types/components/separator.ts +0 -1
  370. package/src/types/components/sidebar.ts +53 -3
  371. package/src/types/components/slideover.ts +0 -1
  372. package/src/types/components/slider.ts +2 -2
  373. package/src/types/components/speed-dial.ts +1 -1
  374. package/src/types/components/spinner.ts +2 -3
  375. package/src/types/components/splitter.ts +0 -1
  376. package/src/types/components/spoiler.ts +1 -1
  377. package/src/types/components/stepper.ts +1 -1
  378. package/src/types/components/sticky-surface.ts +0 -1
  379. package/src/types/components/switch.ts +2 -3
  380. package/src/types/components/table-of-contents.ts +7 -1
  381. package/src/types/components/tabs.ts +2 -1
  382. package/src/types/components/textarea.ts +2 -1
  383. package/src/types/components/theme-selector.ts +15 -15
  384. package/src/types/components/timeline.ts +1 -1
  385. package/src/types/components/toast.ts +2 -1
  386. package/src/types/components/tooltip.ts +0 -1
  387. package/src/types/components/tour.ts +1 -1
  388. package/src/types/components/tree.ts +1 -1
  389. package/src/types/components/user.ts +1 -1
  390. package/src/types/components/watermark.ts +1 -1
  391. package/src/types/components/window-mockup.ts +1 -1
  392. package/src/types/theme.ts +10 -0
  393. package/src/utils/docs.ts +215 -0
  394. package/src/utils/headerStack.ts +12 -5
  395. package/src/utils/index.ts +1 -0
  396. package/src/components/astro/RLAInputPin.astro +0 -19
  397. package/src/integrations/vue-entrypoint.ts +0 -6
  398. package/src/nuxt.ts +0 -125
  399. package/src/plugins/starlightAddons/PageTitle.astro +0 -113
  400. package/src/plugins/starlightAddons/index.ts +0 -58
  401. package/src/plugins/starlightAddons/starlight.d.ts +0 -6
  402. package/src/themes/input-pin.theme.ts +0 -10
@@ -1,19 +1,23 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { DashboardSidebarCollapseProps } from "../../types"
5
- import dashboardSidebarCollapseThemeDefault from "../../themes/dashboard-sidebar-collapse.theme"
6
-
7
- const dashboardSidebarCollapse = scv(dashboardSidebarCollapseThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as DashboardSidebarCollapseProps
14
-
15
- const classes = resolveClasses(dashboardSidebarCollapse, {}, useUi("dashboardSidebarCollapse", uiProp), className);
16
- ---
17
- <div class={classes.root} data-slot="root" {...rest}>
18
- <slot />
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { DashboardSidebarCollapseProps } from "../../types"
5
+ import dashboardSidebarCollapseThemeDefault, { createDashboardSidebarCollapseTheme } from "../../themes/dashboard-sidebar-collapse.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const dashboardSidebarCollapseTheme = uiConfig.colors ? createDashboardSidebarCollapseTheme() : dashboardSidebarCollapseThemeDefault
10
+
11
+ const dashboardSidebarCollapse = scv(dashboardSidebarCollapseTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as DashboardSidebarCollapseProps
18
+
19
+ const classes = resolveClasses(dashboardSidebarCollapse, {}, useUi("dashboardSidebarCollapse", uiProp), className);
20
+ ---
21
+ <div class={classes.root} data-slot="root" {...rest}>
22
+ <slot />
19
23
  </div>
@@ -1,19 +1,23 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { DashboardSidebarToggleProps } from "../../types"
5
- import dashboardSidebarToggleThemeDefault from "../../themes/dashboard-sidebar-toggle.theme"
6
-
7
- const dashboardSidebarToggle = scv(dashboardSidebarToggleThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as DashboardSidebarToggleProps
14
-
15
- const classes = resolveClasses(dashboardSidebarToggle, {}, useUi("dashboardSidebarToggle", uiProp), className);
16
- ---
17
- <div class={classes.root} data-slot="root" {...rest}>
18
- <slot />
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { DashboardSidebarToggleProps } from "../../types"
5
+ import dashboardSidebarToggleThemeDefault, { createDashboardSidebarToggleTheme } from "../../themes/dashboard-sidebar-toggle.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const dashboardSidebarToggleTheme = uiConfig.colors ? createDashboardSidebarToggleTheme() : dashboardSidebarToggleThemeDefault
10
+
11
+ const dashboardSidebarToggle = scv(dashboardSidebarToggleTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as DashboardSidebarToggleProps
18
+
19
+ const classes = resolveClasses(dashboardSidebarToggle, {}, useUi("dashboardSidebarToggle", uiProp), className);
20
+ ---
21
+ <div class={classes.root} data-slot="root" {...rest}>
22
+ <slot />
19
23
  </div>
@@ -1,19 +1,23 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { DashboardToolbarProps } from "../../types"
5
- import dashboardToolbarThemeDefault from "../../themes/dashboard-toolbar.theme"
6
-
7
- const dashboardToolbar = scv(dashboardToolbarThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as DashboardToolbarProps
14
-
15
- const classes = resolveClasses(dashboardToolbar, {}, useUi("dashboardToolbar", uiProp), className);
16
- ---
17
- <div class={classes.root} data-slot="root" {...rest}>
18
- <slot />
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { DashboardToolbarProps } from "../../types"
5
+ import dashboardToolbarThemeDefault, { createDashboardToolbarTheme } from "../../themes/dashboard-toolbar.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const dashboardToolbarTheme = uiConfig.colors ? createDashboardToolbarTheme() : dashboardToolbarThemeDefault
10
+
11
+ const dashboardToolbar = scv(dashboardToolbarTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as DashboardToolbarProps
18
+
19
+ const classes = resolveClasses(dashboardToolbar, {}, useUi("dashboardToolbar", uiProp), className);
20
+ ---
21
+ <div class={classes.root} data-slot="root" {...rest}>
22
+ <slot />
19
23
  </div>
@@ -1,19 +1,23 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { DockProps } from "../../types"
5
- import dockThemeDefault from "../../themes/dock.theme"
6
-
7
- const dock = scv(dockThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as DockProps
14
-
15
- const classes = resolveClasses(dock, {}, useUi("dock", uiProp), className);
16
- ---
17
- <div class={classes.root} data-slot="root" {...rest}>
18
- <slot />
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { DockProps } from "../../types"
5
+ import dockThemeDefault, { createDockTheme } from "../../themes/dock.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const dockTheme = uiConfig.colors ? createDockTheme() : dockThemeDefault
10
+
11
+ const dock = scv(dockTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as DockProps
18
+
19
+ const classes = resolveClasses(dock, {}, useUi("dock", uiProp), className);
20
+ ---
21
+ <div class={classes.root} data-slot="root" {...rest}>
22
+ <slot />
19
23
  </div>
@@ -1,180 +1,178 @@
1
- ---
2
-
3
- interface HighlightGroup {
4
- label: string
5
- buttons: string[]
6
- color: string
7
- }
8
-
9
- interface Props {
10
- highlightedButtons?: string[]
11
- groups?: HighlightGroup[]
12
- highlightColor?: string
13
- backgroundColor?: string
14
- }
15
-
16
- const {
17
- highlightedButtons = [],
18
- groups = [],
19
- highlightColor = 'var(--ui-color-primary-500, #00c16a)',
20
- backgroundColor = 'transparent'
21
- } = Astro.props
22
-
23
- function getButtonHighlight(buttonId: string) {
24
- if (highlightedButtons.includes(buttonId)) {
25
- return { active: true, color: highlightColor }
26
- }
27
- for (const group of groups) {
28
- if (group.buttons.includes(buttonId)) {
29
- return { active: true, color: group.color }
30
- }
31
- }
32
- return { active: false, color: undefined }
33
- }
34
-
35
- interface Button {
36
- id: string
37
- label?: string
38
- x: number
39
- y: number
40
- r?: number
41
- w?: number
42
- h?: number
43
- type?: string
44
- }
45
-
46
- const shoulderButtons: Button[] = [
47
- { id: 'L2', label: 'LT', x: 65, y: 10, w: 80, h: 22 },
48
- { id: 'L1', label: 'LB', x: 65, y: 42, w: 80, h: 22 },
49
- { id: 'R2', label: 'RT', x: 255, y: 10, w: 80, h: 22 },
50
- { id: 'R1', label: 'RB', x: 255, y: 42, w: 80, h: 22 },
51
- ]
52
-
53
- const mainButtons: Button[] = [
54
- // Face Buttons (Smaller, tighter)
55
- { id: 'Y', label: 'Y', x: 315, y: 125, r: 12 },
56
- { id: 'X', label: 'X', x: 288, y: 152, r: 12 },
57
- { id: 'B', label: 'B', x: 342, y: 152, r: 12 },
58
- { id: 'A', label: 'A', x: 315, y: 179, r: 12 },
59
-
60
- // D-Pad (Refined)
61
- { id: 'DPadUp', x: 85, y: 130, w: 20, h: 20, type: 'dpad' },
62
- { id: 'DPadDown', x: 85, y: 174, w: 20, h: 20, type: 'dpad' },
63
- { id: 'DPadLeft', x: 63, y: 152, w: 20, h: 20, type: 'dpad' },
64
- { id: 'DPadRight', x: 107, y: 152, w: 20, h: 20, type: 'dpad' },
65
-
66
- // Sticks (Smaller, proportional)
67
- { id: 'LS', x: 155, y: 215, r: 24 },
68
- { id: 'RS', x: 245, y: 215, r: 24 },
69
-
70
- // Menu Buttons
71
- { id: 'View', label: '', x: 145, y: 105, w: 16, h: 10 },
72
- { id: 'Menu', label: '≡', x: 239, y: 105, w: 16, h: 10 },
73
- ]
74
- ---
75
-
76
- <div class="gamepad-wrapper">
77
- <div class="gamepad-container">
78
- <svg viewBox="-20 -20 440 380" class="gamepad-svg">
79
- <defs>
80
- <linearGradient id="bodyGrad" x1="0%" y1="0%" x2="0%" y2="100%">
81
- <stop offset="0%" stop-color="#2a2a40" stop-opacity="1" />
82
- <stop offset="100%" stop-color="#1a1a2e" stop-opacity="1" />
83
- </linearGradient>
84
- </defs>
85
-
86
- {backgroundColor && backgroundColor !== 'transparent' && (
87
- <rect x="-20" y="-20" width="440" height="360" fill={backgroundColor} rx="24" />
88
- )}
89
-
90
- <!-- Shoulder Buttons -->
91
- {shoulderButtons.map(btn => {
92
- const highlight = getButtonHighlight(btn.id);
93
- const w = btn.w || 0;
94
- const h = btn.h || 0;
95
- const color = highlight.active ? (highlight.color || highlightColor) : '#1e1e30';
96
-
97
- return (
98
- <g class={`gp-btn shoulder ${highlight.active ? 'active' : ''}`}>
99
- <rect
100
- x={btn.x}
101
- y={btn.y}
102
- width={w}
103
- height={h}
104
- rx="5"
105
- fill={color}
106
- stroke={highlight.active ? "#ffffff33" : "#33334d"}
107
- stroke-width={highlight.active ? "1.5" : "1"}
108
- />
109
- <text x={btn.x + w/2} y={btn.y + h/2} text-anchor="middle" dominant-baseline="central" class="btn-label" fill={highlight.active ? "#fff" : "#555570"}>{btn.label}</text>
110
- </g>
111
- )
112
- })}
113
-
114
- <!-- Controller Body -->
115
- <path
116
- d="M120,85 L280,85 C320,85 340,95 350,115 C370,145 390,215 390,245 C390,285 360,315 320,315 C290,315 260,285 240,255 C220,245 180,245 160,255 C140,285 110,315 80,315 C40,315 10,285 10,245 C10,215 30,145 50,115 C60,95 80,85 120,85 Z"
117
- fill="url(#bodyGrad)"
118
- stroke="#33334d"
119
- stroke-width="1"
120
- />
121
-
122
- <!-- Touchpad -->
123
- <path d="M145,90 L255,90 L262,150 L138,150 Z" fill="#151525" stroke="#33334d" stroke-width="0.5" />
124
-
125
- {mainButtons.map(btn => {
126
- const highlight = getButtonHighlight(btn.id);
127
- const color = highlight.active ? (highlight.color || highlightColor) : '#1e1e30';
128
-
129
- if (btn.r) {
130
- return (
131
- <g class={`gp-btn ${highlight.active ? 'active' : ''}`}>
132
- <circle
133
- cx={btn.x}
134
- cy={btn.y}
135
- r={btn.r}
136
- fill={color}
137
- stroke={highlight.active ? "#ffffff33" : "#33334d"}
138
- stroke-width={highlight.active ? "1.5" : "1"}
139
- />
140
- {btn.label && <text x={btn.x} y={btn.y} text-anchor="middle" dominant-baseline="central" class="btn-label" fill={highlight.active ? "#fff" : "#555570"}>{btn.label}</text>}
141
- </g>
142
- )
143
- }
144
-
145
- const w = btn.w || 0;
146
- const h = btn.h || 0;
147
- return (
148
- <g class={`gp-btn ${highlight.active ? 'active' : ''}`}>
149
- <rect
150
- x={btn.x}
151
- y={btn.y}
152
- width={w}
153
- height={h}
154
- rx="3"
155
- fill={color}
156
- stroke={highlight.active ? "#ffffff33" : "#33334d"}
157
- stroke-width={highlight.active ? "1.5" : "1"}
158
- />
159
- {btn.label && <text x={btn.x + w/2} y={btn.y + h/2} text-anchor="middle" dominant-baseline="central" class="btn-label" fill={highlight.active ? "#fff" : "#555570"}>{btn.label}</text>}
160
- </g>
161
- )
162
- })}
163
-
164
- </svg>
165
- </div>
166
-
167
- {groups.some(g => g.label) && (
168
- <div class="flex flex-wrap justify-center gap-x-6 gap-y-3 mt-10 w-full">
169
- {groups.filter(g => g.label).map(group => (
170
- <div class="flex items-center gap-2 m-0 p-0 h-[10px] text-[10px] text-[#777790] uppercase tracking-[0.1em] font-bold leading-[10px]">
171
- <svg width="8" height="8" class="flex-shrink-0 block">
172
- <rect width="8" height="8" rx="2" fill={group.color} />
173
- </svg>
174
- <span class="inline-block h-[10px] leading-[10px] m-0 p-0">{group.label}</span>
175
- </div>
176
- ))}
177
- </div>
178
- )}
179
- </div>
180
-
1
+ ---
2
+ interface HighlightGroup {
3
+ label: string
4
+ buttons: string[]
5
+ color: string
6
+ }
7
+
8
+ interface Props {
9
+ highlightedButtons?: string[]
10
+ groups?: HighlightGroup[]
11
+ highlightColor?: string
12
+ backgroundColor?: string
13
+ }
14
+
15
+ const {
16
+ highlightedButtons = [],
17
+ groups = [],
18
+ highlightColor = 'var(--color-primary-500, #00c16a)',
19
+ backgroundColor = 'transparent'
20
+ } = Astro.props
21
+
22
+ function getButtonHighlight(buttonId: string) {
23
+ if (highlightedButtons.includes(buttonId)) {
24
+ return { active: true, color: highlightColor }
25
+ }
26
+ for (const group of groups) {
27
+ if (group.buttons.includes(buttonId)) {
28
+ return { active: true, color: group.color }
29
+ }
30
+ }
31
+ return { active: false, color: undefined }
32
+ }
33
+
34
+ interface Button {
35
+ id: string
36
+ label?: string
37
+ x: number
38
+ y: number
39
+ r?: number
40
+ w?: number
41
+ h?: number
42
+ type?: string
43
+ }
44
+
45
+ const shoulderButtons: Button[] = [
46
+ { id: 'L2', label: 'LT', x: 65, y: 10, w: 80, h: 22 },
47
+ { id: 'L1', label: 'LB', x: 65, y: 42, w: 80, h: 22 },
48
+ { id: 'R2', label: 'RT', x: 255, y: 10, w: 80, h: 22 },
49
+ { id: 'R1', label: 'RB', x: 255, y: 42, w: 80, h: 22 },
50
+ ]
51
+
52
+ const mainButtons: Button[] = [
53
+ // Face Buttons
54
+ { id: 'Y', label: 'Y', x: 315, y: 125, r: 12 },
55
+ { id: 'X', label: 'X', x: 288, y: 152, r: 12 },
56
+ { id: 'B', label: 'B', x: 342, y: 152, r: 12 },
57
+ { id: 'A', label: 'A', x: 315, y: 179, r: 12 },
58
+
59
+ // D-Pad
60
+ { id: 'DPadUp', x: 85, y: 130, w: 20, h: 20, type: 'dpad' },
61
+ { id: 'DPadDown', x: 85, y: 174, w: 20, h: 20, type: 'dpad' },
62
+ { id: 'DPadLeft', x: 63, y: 152, w: 20, h: 20, type: 'dpad' },
63
+ { id: 'DPadRight', x: 107, y: 152, w: 20, h: 20, type: 'dpad' },
64
+
65
+ // Sticks
66
+ { id: 'LS', x: 155, y: 215, r: 24 },
67
+ { id: 'RS', x: 245, y: 215, r: 24 },
68
+
69
+ // Menu Buttons
70
+ { id: 'View', label: '⧉', x: 145, y: 105, w: 16, h: 10 },
71
+ { id: 'Menu', label: '', x: 239, y: 105, w: 16, h: 10 },
72
+ ]
73
+ ---
74
+
75
+ <div class="gamepad-wrapper">
76
+ <div class="gamepad-container">
77
+ <svg viewBox="-20 -20 440 380" class="gamepad-svg">
78
+ <defs>
79
+ <linearGradient id="bodyGrad" x1="0%" y1="0%" x2="0%" y2="100%">
80
+ <stop offset="0%" stop-color="#2a2a40" stop-opacity="1" />
81
+ <stop offset="100%" stop-color="#1a1a2e" stop-opacity="1" />
82
+ </linearGradient>
83
+ </defs>
84
+
85
+ {backgroundColor && backgroundColor !== 'transparent' && (
86
+ <rect x="-20" y="-20" width="440" height="360" fill={backgroundColor} rx="24" />
87
+ )}
88
+
89
+ <!-- Shoulder Buttons -->
90
+ {shoulderButtons.map(btn => {
91
+ const highlight = getButtonHighlight(btn.id);
92
+ const w = btn.w || 0;
93
+ const h = btn.h || 0;
94
+ const color = highlight.active ? (highlight.color || highlightColor) : '#1e1e30';
95
+
96
+ return (
97
+ <g class={`gp-btn shoulder ${highlight.active ? 'active' : ''}`}>
98
+ <rect
99
+ x={btn.x}
100
+ y={btn.y}
101
+ width={w}
102
+ height={h}
103
+ rx="5"
104
+ fill={color}
105
+ stroke={highlight.active ? "#ffffff33" : "#33334d"}
106
+ stroke-width={highlight.active ? "1.5" : "1"}
107
+ />
108
+ <text x={btn.x + w/2} y={btn.y + h/2} text-anchor="middle" dominant-baseline="central" class="btn-label" fill={highlight.active ? "#fff" : "#555570"}>{btn.label}</text>
109
+ </g>
110
+ )
111
+ })}
112
+
113
+ <!-- Controller Body -->
114
+ <path
115
+ d="M120,85 L280,85 C320,85 340,95 350,115 C370,145 390,215 390,245 C390,285 360,315 320,315 C290,315 260,285 240,255 C220,245 180,245 160,255 C140,285 110,315 80,315 C40,315 10,285 10,245 C10,215 30,145 50,115 C60,95 80,85 120,85 Z"
116
+ fill="url(#bodyGrad)"
117
+ stroke="#33334d"
118
+ stroke-width="1"
119
+ />
120
+
121
+ <!-- Touchpad -->
122
+ <path d="M145,90 L255,90 L262,150 L138,150 Z" fill="#151525" stroke="#33334d" stroke-width="0.5" />
123
+
124
+ {mainButtons.map(btn => {
125
+ const highlight = getButtonHighlight(btn.id);
126
+ const color = highlight.active ? (highlight.color || highlightColor) : '#1e1e30';
127
+
128
+ if (btn.r) {
129
+ return (
130
+ <g class={`gp-btn ${highlight.active ? 'active' : ''}`}>
131
+ <circle
132
+ cx={btn.x}
133
+ cy={btn.y}
134
+ r={btn.r}
135
+ fill={color}
136
+ stroke={highlight.active ? "#ffffff33" : "#33334d"}
137
+ stroke-width={highlight.active ? "1.5" : "1"}
138
+ />
139
+ {btn.label && <text x={btn.x} y={btn.y} text-anchor="middle" dominant-baseline="central" class="btn-label" fill={highlight.active ? "#fff" : "#555570"}>{btn.label}</text>}
140
+ </g>
141
+ )
142
+ }
143
+
144
+ const w = btn.w || 0;
145
+ const h = btn.h || 0;
146
+ return (
147
+ <g class={`gp-btn ${highlight.active ? 'active' : ''}`}>
148
+ <rect
149
+ x={btn.x}
150
+ y={btn.y}
151
+ width={w}
152
+ height={h}
153
+ rx="3"
154
+ fill={color}
155
+ stroke={highlight.active ? "#ffffff33" : "#33334d"}
156
+ stroke-width={highlight.active ? "1.5" : "1"}
157
+ />
158
+ {btn.label && <text x={btn.x + w/2} y={btn.y + h/2} text-anchor="middle" dominant-baseline="central" class="btn-label" fill={highlight.active ? "#fff" : "#555570"}>{btn.label}</text>}
159
+ </g>
160
+ )
161
+ })}
162
+
163
+ </svg>
164
+ </div>
165
+
166
+ {groups.some(g => g.label) && (
167
+ <div class="flex flex-wrap justify-center gap-x-6 gap-y-3 mt-10 w-full">
168
+ {groups.filter(g => g.label).map(group => (
169
+ <div class="flex items-center gap-2 m-0 p-0 h-[10px] text-[10px] text-[#777790] uppercase tracking-[0.1em] font-bold leading-[10px]">
170
+ <svg width="8" height="8" class="flex-shrink-0 block">
171
+ <rect width="8" height="8" rx="2" fill={group.color} />
172
+ </svg>
173
+ <span class="inline-block h-[10px] leading-[10px] m-0 p-0">{group.label}</span>
174
+ </div>
175
+ ))}
176
+ </div>
177
+ )}
178
+ </div>
@@ -25,7 +25,7 @@ const {
25
25
  keySize = 40,
26
26
  variant = 'full',
27
27
  os = 'windows',
28
- highlightColor = 'var(--ui-color-primary-500, #00c16a)',
28
+ highlightColor = 'var(--color-primary-500, #00c16a)',
29
29
  backgroundColor = 'transparent'
30
30
  } = Astro.props
31
31
 
@@ -159,7 +159,6 @@ const displayMainRows = variant === '60'
159
159
  ]
160
160
  : mainRows;
161
161
 
162
-
163
162
  interface RenderKey extends Key {
164
163
  x: number;
165
164
  y: number;
@@ -318,4 +317,3 @@ if (variant === 'full') {
318
317
  </div>
319
318
  )}
320
319
  </div>
321
-
@@ -1,14 +1,19 @@
1
1
  ---
2
- import { Tabs, TabItem } from "@astrojs/starlight/components"
3
- import { Prism } from "@astrojs/prism"
2
+ import RLATabs from "./RLATabs.astro";
3
+ import Prism from "prismjs";
4
+ import "prismjs/components/prism-bash.js";
5
+
6
+ type Manager = "npm" | "pnpm" | "yarn" | "deno" | "bun" | "vp"
7
+ type CommandType = "add" | "create" | "dlx" | "exec" | "install" | "remove" | "run"
4
8
 
5
9
  interface Props {
6
10
  pkg?: string
7
- type?: "add" | "create" | "dlx" | "exec" | "install" | "remove" | "run"
11
+ type?: CommandType
8
12
  dev?: boolean
9
13
  args?: string
10
14
  comment?: string
11
15
  prefix?: string
16
+ managers?: Manager[]
12
17
  }
13
18
 
14
19
  const {
@@ -18,20 +23,18 @@ const {
18
23
  args,
19
24
  comment,
20
25
  prefix,
26
+ managers = ["npm", "pnpm", "yarn", "deno", "bun", "vp"]
21
27
  } = Astro.props
22
28
 
23
- type Manager = "npm" | "yarn" | "pnpm" | "bun"
24
- type CommandType = NonNullable<Props["type"]>
25
-
26
29
  const commands: Record<Manager, Partial<Record<CommandType, string>> & { dev: string }> = {
27
30
  npm: { add: "npm i", create: "npm create", dlx: "npx", exec: "npx", install: "npm install", run: "npm run", remove: "npm uninstall", dev: "-D" },
28
31
  yarn: { add: "yarn add", create: "yarn create", dlx: "yarn dlx", exec: "yarn", install: "yarn install", run: "yarn run", remove: "yarn remove", dev: "-D" },
29
32
  pnpm: { add: "pnpm add", create: "pnpm create", dlx: "pnpx", exec: "pnpm", install: "pnpm install", run: "pnpm run", remove: "pnpm remove", dev: "-D" },
33
+ deno: { add: "deno add", create: "deno run -A", dlx: "deno run", exec: "deno run", install: "deno install", run: "deno task", remove: "deno remove", dev: "--dev" },
30
34
  bun: { add: "bun add", create: "bun create", install: "bun install", run: "bun run", remove: "bun remove", dev: "-d" },
35
+ vp: { add: "vp add", create: "vp create", dlx: "vp dlx", exec: "vp exec", install: "vp install", run: "vp run", remove: "vp remove", dev: "-D" },
31
36
  }
32
37
 
33
- const managers: Manager[] = ["npm", "pnpm", "yarn", "bun"]
34
-
35
38
  function getCommand(mgr: Manager, cmdType: CommandType): string | undefined {
36
39
  let cmd = commands[mgr][cmdType]
37
40
  if (cmd === undefined) return undefined
@@ -62,12 +65,23 @@ const tabs = managers
62
65
  cmd: getCommand(mgr, type),
63
66
  }))
64
67
  .filter((tab) => tab.cmd !== undefined)
68
+
69
+ const tabItems = tabs.map((tab) => ({
70
+ value: tab.mgr,
71
+ label: tab.mgr,
72
+ }))
73
+
74
+ // Pre-render the highlighted bash command via pure static prismjs
75
+ const highlightedTabs = tabs.map((tab) => ({
76
+ mgr: tab.mgr,
77
+ html: Prism.highlight(tab.cmd!, Prism.languages.bash || Prism.languages.shell, "bash")
78
+ }))
65
79
  ---
66
80
 
67
- <Tabs syncKey="package-managers">
68
- {tabs.map((tab) => (
69
- <TabItem label={tab.mgr}>
70
- <Prism lang="sh" code={tab.cmd!} />
71
- </TabItem>
81
+ <RLATabs items={tabItems} color="primary" size="md" variant="solid">
82
+ {highlightedTabs.map((tab, idx) => (
83
+ <div role="tabpanel" data-value={tab.mgr} class:list={[{ "hidden": idx !== 0 }]}>
84
+ <pre class="language-sh"><code class="language-sh" set:html={tab.html}></code></pre>
85
+ </div>
72
86
  ))}
73
- </Tabs>
87
+ </RLATabs>