@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,31 +1,35 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { TooltipProps } from "../../types"
5
- import tooltipTheme from "../../themes/tooltip.theme"
6
-
7
- const tooltip = scv(tooltipTheme)
8
-
9
- const {
10
- content,
11
- placement = "top",
12
- ui: uiProp,
13
- class: className,
14
- ...rest
15
- } = Astro.props as TooltipProps
16
-
17
- const classes = resolveClasses(tooltip, {
18
- placement
19
- }, useUi("tooltip", uiProp), className)
20
- ---
21
- <div class={classes.root} data-slot="tooltip-container" {...rest}>
22
- <div class={classes.trigger} data-slot="trigger" tabindex="0">
23
- <slot />
24
- </div>
25
-
26
- <div class={classes.content} data-slot="content" role="tooltip">
27
- <slot name="content">
28
- {content}
29
- </slot>
30
- </div>
31
- </div>
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { TooltipProps } from "../../types"
5
+ import tooltipThemeDefault, { createTooltipTheme } from "../../themes/tooltip.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const tooltipTheme = uiConfig.colors ? createTooltipTheme() : tooltipThemeDefault
10
+
11
+ const tooltip = scv(tooltipTheme)
12
+
13
+ const {
14
+ content,
15
+ placement = "top",
16
+ ui: uiProp,
17
+ class: className,
18
+ ...rest
19
+ } = Astro.props as TooltipProps
20
+
21
+ const classes = resolveClasses(tooltip, {
22
+ placement
23
+ }, useUi("tooltip", uiProp), className)
24
+ ---
25
+ <div class={classes.root} data-slot="tooltip-container" {...rest}>
26
+ <div class={classes.trigger} data-slot="trigger" tabindex="0">
27
+ <slot />
28
+ </div>
29
+
30
+ <div class={classes.content} data-slot="content" role="tooltip">
31
+ <slot name="content">
32
+ {content}
33
+ </slot>
34
+ </div>
35
+ </div>
@@ -1,19 +1,23 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { TourProps } from "../../types"
5
- import tourThemeDefault from "../../themes/tour.theme"
6
-
7
- const tour = scv(tourThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as TourProps
14
-
15
- const classes = resolveClasses(tour, {}, useUi("tour", 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 { TourProps } from "../../types"
5
+ import tourThemeDefault, { createTourTheme } from "../../themes/tour.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const tourTheme = uiConfig.colors ? createTourTheme() : tourThemeDefault
10
+
11
+ const tour = scv(tourTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as TourProps
18
+
19
+ const classes = resolveClasses(tour, {}, useUi("tour", 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 { TreeProps } from "../../types"
5
- import treeThemeDefault from "../../themes/tree.theme"
6
-
7
- const tree = scv(treeThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as TreeProps
14
-
15
- const classes = resolveClasses(tree, {}, useUi("tree", 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 { TreeProps } from "../../types"
5
+ import treeThemeDefault, { createTreeTheme } from "../../themes/tree.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const treeTheme = uiConfig.colors ? createTreeTheme() : treeThemeDefault
10
+
11
+ const tree = scv(treeTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as TreeProps
18
+
19
+ const classes = resolveClasses(tree, {}, useUi("tree", 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 { UserProps } from "../../types"
5
- import userThemeDefault from "../../themes/user.theme"
6
-
7
- const user = scv(userThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as UserProps
14
-
15
- const classes = resolveClasses(user, {}, useUi("user", 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 { UserProps } from "../../types"
5
+ import userThemeDefault, { createUserTheme } from "../../themes/user.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const userTheme = uiConfig.colors ? createUserTheme() : userThemeDefault
10
+
11
+ const user = scv(userTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as UserProps
18
+
19
+ const classes = resolveClasses(user, {}, useUi("user", uiProp), className);
20
+ ---
21
+ <div class={classes.root} data-slot="root" {...rest}>
22
+ <slot />
19
23
  </div>
@@ -1,197 +1,201 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { VideoProps } from "../../types"
5
- import videoTheme from "../../themes/video.theme"
6
- import { Image } from "astro:assets"
7
-
8
- const PLACEHOLDER_THUMBNAIL = "/assets/placeholder.webp";
9
- const YOUTUBE_EMBED_BASE = "https://www.youtube.com/embed/";
10
- const VALID_ID_PATTERN = /^[\w-]{11}$/;
11
- const KNOWN_PREFIXES = ["www.", "m.", "music.", "gaming."];
12
- const YOUTUBE_THUMB_BASE = "https://i3.ytimg.com/vi/";
13
- const MAXRES_THUMBNAIL = "maxresdefault.jpg";
14
- const DEFAULT_THUMBNAIL = "hqdefault.jpg";
15
-
16
- const thumbnailAvailabilityCache = new Map<string, boolean>();
17
-
18
- function normalizeHost(host: string): string {
19
- for (const prefix of KNOWN_PREFIXES) {
20
- if (host.startsWith(prefix)) {
21
- return host.slice(prefix.length);
22
- }
23
- }
24
- return host;
25
- }
26
-
27
- function sanitizeVideoId(id: string | null): string | null {
28
- if (!id) return null;
29
- return VALID_ID_PATTERN.test(id) ? id : null;
30
- }
31
-
32
- function extractYoutubeVideoId(rawUrl: string): string | null {
33
- if (!rawUrl) return null;
34
-
35
- try {
36
- const url = new URL(rawUrl);
37
- const host = normalizeHost(url.hostname);
38
-
39
- if (host === "youtu.be") {
40
- const id = url.pathname.split("/").filter(Boolean)[0] ?? null;
41
- return sanitizeVideoId(id);
42
- }
43
-
44
- if (host.endsWith("youtube.com")) {
45
- const paramsId = sanitizeVideoId(url.searchParams.get("v"));
46
- if (paramsId) return paramsId;
47
-
48
- const segments = url.pathname.split("/").filter(Boolean);
49
- if (!segments.length) return null;
50
-
51
- if (segments[0] === "embed" || segments[0] === "shorts" || segments[0] === "live") {
52
- return sanitizeVideoId(segments[1] ?? null);
53
- }
54
-
55
- return sanitizeVideoId(segments[segments.length - 1] ?? null);
56
- }
57
- } catch {
58
- // If it's just an 11-character ID passed directly, return it validated
59
- if (VALID_ID_PATTERN.test(rawUrl)) {
60
- return rawUrl;
61
- }
62
- return null;
63
- }
64
-
65
- return null;
66
- }
67
-
68
- async function isThumbnailAvailable(url: string): Promise<boolean> {
69
- if (thumbnailAvailabilityCache.has(url)) {
70
- return thumbnailAvailabilityCache.get(url)!;
71
- }
72
-
73
- if (typeof fetch !== "function") {
74
- return false;
75
- }
76
-
77
- try {
78
- const response = await fetch(url, { method: "HEAD" });
79
- let available = response.ok;
80
-
81
- if (!available && response.status === 405) {
82
- const getResponse = await fetch(url, { method: "GET" });
83
- available = getResponse.ok;
84
- }
85
-
86
- thumbnailAvailabilityCache.set(url, available);
87
- return available;
88
- } catch {
89
- return false;
90
- }
91
- }
92
-
93
- async function getYoutubeThumbnail(rawUrl: string): Promise<string> {
94
- const id = extractYoutubeVideoId(rawUrl);
95
- if (!id) return PLACEHOLDER_THUMBNAIL;
96
-
97
- const baseUrl = `${YOUTUBE_THUMB_BASE}${id}`;
98
- const maxResUrl = `${baseUrl}/${MAXRES_THUMBNAIL}`;
99
-
100
- if (await isThumbnailAvailable(maxResUrl)) {
101
- return maxResUrl;
102
- }
103
-
104
- return `${baseUrl}/${DEFAULT_THUMBNAIL}`;
105
- }
106
-
107
- function getYoutubeEmbedUrl(rawUrl: string): string | null {
108
- const id = extractYoutubeVideoId(rawUrl);
109
- return id ? `${YOUTUBE_EMBED_BASE}${id}?autoplay=1` : null;
110
- }
111
-
112
- const video = scv(videoTheme)
113
-
114
- const {
115
- src,
116
- title = "YouTube Video Player",
117
- icon = "i-lucide-play",
118
- ui: uiProp,
119
- class: className,
120
- ...rest
121
- } = Astro.props as VideoProps
122
-
123
- const classes = resolveClasses(video, {
124
- title: !!(Astro.slots.has("title") || title),
125
- icon: !!(Astro.slots.has("icon") || icon),
126
- }, useUi("video", uiProp), className);
127
-
128
- const embedUrl = getYoutubeEmbedUrl(src);
129
- const thumbnail = await getYoutubeThumbnail(src);
130
- const isPlayable = Boolean(embedUrl);
131
- const ariaLabel = isPlayable ? "Play YouTube Video" : "YouTube Video Unavailable";
132
- ---
133
-
134
- <div
135
- class:list={[classes.root]}
136
- {...rest}
137
- >
138
- <button
139
- type="button"
140
- data-youtube-trigger
141
- aria-label={ariaLabel}
142
- data-embed-url={isPlayable ? embedUrl : undefined}
143
- disabled={!isPlayable}
144
- data-video-title={title}
145
- class:list={[classes.trigger]}
146
- >
147
- <Image
148
- layout="full-width"
149
- src={thumbnail}
150
- alt={title}
151
- width="1280"
152
- height="720"
153
- loading="lazy"
154
- class:list={[classes.image]}
155
- />
156
-
157
- <slot name="icon">
158
- <span class:list={[classes.icon, icon]} aria-hidden="true" />
159
- </slot>
160
- </button>
161
- </div>
162
-
163
- <script is:inline>
164
- (() => {
165
- const root = document.currentScript?.previousElementSibling;
166
- if (!(root instanceof HTMLElement)) return;
167
-
168
- const trigger = root.querySelector("[data-youtube-trigger]");
169
- if (!(trigger instanceof HTMLButtonElement)) return;
170
-
171
- const embedUrl = trigger.dataset.embedUrl;
172
- const title = trigger.dataset.videoTitle;
173
- if (!embedUrl) return;
174
-
175
- const activate = () => {
176
- const iframe = document.createElement("iframe");
177
- iframe.src = embedUrl;
178
- iframe.title = title;
179
- iframe.allow =
180
- "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share";
181
- iframe.allowFullscreen = true;
182
- iframe.loading = "lazy";
183
- iframe.referrerPolicy = "strict-origin-when-cross-origin";
184
- iframe.classList.add("w-full", "h-full", "absolute", "inset-0");
185
-
186
- root.replaceChildren(iframe);
187
- };
188
-
189
- trigger.addEventListener("click", activate, { once: true });
190
- trigger.addEventListener("keydown", (event) => {
191
- if (event.key === "Enter" || event.key === " ") {
192
- event.preventDefault();
193
- activate();
194
- }
195
- }, { once: true });
196
- })();
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { VideoProps } from "../../types"
5
+ import videoThemeDefault, { createVideoTheme } from "../../themes/video.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+ import Image from "astro/components/Image.astro"
8
+
9
+ const PLACEHOLDER_THUMBNAIL = "/assets/placeholder.webp";
10
+ const YOUTUBE_EMBED_BASE = "https://www.youtube.com/embed/";
11
+ const VALID_ID_PATTERN = /^[\w-]{11}$/;
12
+ const KNOWN_PREFIXES = ["www.", "m.", "music.", "gaming."];
13
+ const YOUTUBE_THUMB_BASE = "https://i3.ytimg.com/vi/";
14
+ const MAXRES_THUMBNAIL = "maxresdefault.jpg";
15
+ const DEFAULT_THUMBNAIL = "hqdefault.jpg";
16
+
17
+ const thumbnailAvailabilityCache = new Map<string, boolean>();
18
+
19
+ function normalizeHost(host: string): string {
20
+ for (const prefix of KNOWN_PREFIXES) {
21
+ if (host.startsWith(prefix)) {
22
+ return host.slice(prefix.length);
23
+ }
24
+ }
25
+ return host;
26
+ }
27
+
28
+ function sanitizeVideoId(id: string | null): string | null {
29
+ if (!id) return null;
30
+ return VALID_ID_PATTERN.test(id) ? id : null;
31
+ }
32
+
33
+ function extractYoutubeVideoId(rawUrl: string): string | null {
34
+ if (!rawUrl) return null;
35
+
36
+ try {
37
+ const url = new URL(rawUrl);
38
+ const host = normalizeHost(url.hostname);
39
+
40
+ if (host === "youtu.be") {
41
+ const id = url.pathname.split("/").find(Boolean) ?? null;
42
+ return sanitizeVideoId(id);
43
+ }
44
+
45
+ if (host.endsWith("youtube.com")) {
46
+ const paramsId = sanitizeVideoId(url.searchParams.get("v"));
47
+ if (paramsId) return paramsId;
48
+
49
+ const segments = url.pathname.split("/").filter(Boolean);
50
+ if (!segments.length) return null;
51
+
52
+ if (segments[0] === "embed" || segments[0] === "shorts" || segments[0] === "live") {
53
+ return sanitizeVideoId(segments[1] ?? null);
54
+ }
55
+
56
+ return sanitizeVideoId(segments[segments.length - 1] ?? null);
57
+ }
58
+ } catch {
59
+ // If it's just an 11-character ID passed directly, return it validated
60
+ if (VALID_ID_PATTERN.test(rawUrl)) {
61
+ return rawUrl;
62
+ }
63
+ return null;
64
+ }
65
+
66
+ return null;
67
+ }
68
+
69
+ async function isThumbnailAvailable(url: string): Promise<boolean> {
70
+ if (thumbnailAvailabilityCache.has(url)) {
71
+ return thumbnailAvailabilityCache.get(url)!;
72
+ }
73
+
74
+ if (typeof fetch !== "function") {
75
+ return false;
76
+ }
77
+
78
+ try {
79
+ const response = await fetch(url, { method: "HEAD" });
80
+ let available = response.ok;
81
+
82
+ if (!available && response.status === 405) {
83
+ const getResponse = await fetch(url, { method: "GET" });
84
+ available = getResponse.ok;
85
+ }
86
+
87
+ thumbnailAvailabilityCache.set(url, available);
88
+ return available;
89
+ } catch {
90
+ return false;
91
+ }
92
+ }
93
+
94
+ async function getYoutubeThumbnail(rawUrl: string): Promise<string> {
95
+ const id = extractYoutubeVideoId(rawUrl);
96
+ if (!id) return PLACEHOLDER_THUMBNAIL;
97
+
98
+ const baseUrl = `${YOUTUBE_THUMB_BASE}${id}`;
99
+ const maxResUrl = `${baseUrl}/${MAXRES_THUMBNAIL}`;
100
+
101
+ if (await isThumbnailAvailable(maxResUrl)) {
102
+ return maxResUrl;
103
+ }
104
+
105
+ return `${baseUrl}/${DEFAULT_THUMBNAIL}`;
106
+ }
107
+
108
+ function getYoutubeEmbedUrl(rawUrl: string): string | null {
109
+ const id = extractYoutubeVideoId(rawUrl);
110
+ return id ? `${YOUTUBE_EMBED_BASE}${id}?autoplay=1` : null;
111
+ }
112
+
113
+ const uiConfig = getUIConfig()
114
+ const videoTheme = uiConfig.colors ? createVideoTheme() : videoThemeDefault
115
+
116
+ const video = scv(videoTheme)
117
+
118
+ const {
119
+ src,
120
+ title = "YouTube Video Player",
121
+ icon = "i-lucide-play",
122
+ ui: uiProp,
123
+ class: className,
124
+ ...rest
125
+ } = Astro.props as VideoProps
126
+
127
+ const classes = resolveClasses(video, {
128
+ title: !!(Astro.slots.has("title") || title),
129
+ icon: !!(Astro.slots.has("icon") || icon),
130
+ }, useUi("video", uiProp), className);
131
+
132
+ const embedUrl = getYoutubeEmbedUrl(src);
133
+ const thumbnail = await getYoutubeThumbnail(src);
134
+ const isPlayable = Boolean(embedUrl);
135
+ const ariaLabel = isPlayable ? "Play YouTube Video" : "YouTube Video Unavailable";
136
+ ---
137
+
138
+ <div
139
+ class:list={[classes.root]}
140
+ {...rest}
141
+ >
142
+ <button
143
+ type="button"
144
+ data-youtube-trigger
145
+ aria-label={ariaLabel}
146
+ data-embed-url={isPlayable ? embedUrl : undefined}
147
+ disabled={!isPlayable}
148
+ data-video-title={title}
149
+ class:list={[classes.trigger]}
150
+ >
151
+ <Image
152
+ layout="full-width"
153
+ src={thumbnail}
154
+ alt={title}
155
+ width="1280"
156
+ height="720"
157
+ loading="lazy"
158
+ class:list={[classes.image]}
159
+ />
160
+
161
+ <slot name="icon">
162
+ <span class:list={[classes.icon, icon]} aria-hidden="true" />
163
+ </slot>
164
+ </button>
165
+ </div>
166
+
167
+ <script is:inline>
168
+ (() => {
169
+ const root = document.currentScript?.previousElementSibling;
170
+ if (!(root instanceof HTMLElement)) return;
171
+
172
+ const trigger = root.querySelector("[data-youtube-trigger]");
173
+ if (!(trigger instanceof HTMLButtonElement)) return;
174
+
175
+ const embedUrl = trigger.dataset.embedUrl;
176
+ const title = trigger.dataset.videoTitle;
177
+ if (!embedUrl) return;
178
+
179
+ const activate = () => {
180
+ const iframe = document.createElement("iframe");
181
+ iframe.src = embedUrl;
182
+ iframe.title = title;
183
+ iframe.allow =
184
+ "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share";
185
+ iframe.allowFullscreen = true;
186
+ iframe.loading = "lazy";
187
+ iframe.referrerPolicy = "strict-origin-when-cross-origin";
188
+ iframe.classList.add("w-full", "h-full", "absolute", "inset-0");
189
+
190
+ root.replaceChildren(iframe);
191
+ };
192
+
193
+ trigger.addEventListener("click", activate, { once: true });
194
+ trigger.addEventListener("keydown", (event) => {
195
+ if (event.key === "Enter" || event.key === " ") {
196
+ event.preventDefault();
197
+ activate();
198
+ }
199
+ }, { once: true });
200
+ })();
197
201
  </script>
@@ -1,19 +1,23 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { WatermarkProps } from "../../types"
5
- import watermarkThemeDefault from "../../themes/watermark.theme"
6
-
7
- const watermark = scv(watermarkThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as WatermarkProps
14
-
15
- const classes = resolveClasses(watermark, {}, useUi("watermark", 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 { WatermarkProps } from "../../types"
5
+ import watermarkThemeDefault, { createWatermarkTheme } from "../../themes/watermark.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const watermarkTheme = uiConfig.colors ? createWatermarkTheme() : watermarkThemeDefault
10
+
11
+ const watermark = scv(watermarkTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as WatermarkProps
18
+
19
+ const classes = resolveClasses(watermark, {}, useUi("watermark", uiProp), className);
20
+ ---
21
+ <div class={classes.root} data-slot="root" {...rest}>
22
+ <slot />
19
23
  </div>