@rimelight/ui 0.0.32 → 0.0.33

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 (383) hide show
  1. package/README.md +157 -30
  2. package/package.json +105 -108
  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/RLABlogPost.astro +7 -0
  14. package/src/components/astro/RLABlogPosts.astro +9 -0
  15. package/src/components/astro/RLABreadcrumb.astro +48 -44
  16. package/src/components/astro/RLABrowserMockup.astro +22 -18
  17. package/src/components/astro/RLAButton.astro +51 -2
  18. package/src/components/astro/RLACalendar.astro +22 -18
  19. package/src/components/astro/RLACard.astro +78 -74
  20. package/src/components/astro/RLACarousel.astro +75 -71
  21. package/src/components/astro/RLAChangelog.astro +22 -18
  22. package/src/components/astro/RLAChat.astro +22 -18
  23. package/src/components/astro/RLAChatMessage.astro +22 -18
  24. package/src/components/astro/RLAChatMessages.astro +22 -18
  25. package/src/components/astro/RLAChatPalette.astro +22 -18
  26. package/src/components/astro/RLAChatPrompt.astro +22 -18
  27. package/src/components/astro/RLAChatPromptSubmit.astro +22 -18
  28. package/src/components/astro/RLAChatReasoning.astro +22 -18
  29. package/src/components/astro/RLAChatShimmer.astro +22 -18
  30. package/src/components/astro/RLAChatTool.astro +22 -18
  31. package/src/components/astro/RLAChip.astro +51 -20
  32. package/src/components/astro/RLAColorPicker.astro +22 -18
  33. package/src/components/astro/RLACommandPalette.astro +22 -18
  34. package/src/components/astro/RLACompare.astro +22 -18
  35. package/src/components/astro/RLAConfirm.astro +117 -86
  36. package/src/components/astro/RLAContainer.astro +22 -18
  37. package/src/components/astro/RLAContextMenu.astro +22 -18
  38. package/src/components/astro/RLADashboardGroup.astro +22 -18
  39. package/src/components/astro/RLADashboardNavbar.astro +22 -18
  40. package/src/components/astro/RLADashboardPanel.astro +22 -18
  41. package/src/components/astro/RLADashboardResizeHandle.astro +22 -18
  42. package/src/components/astro/RLADashboardSearch.astro +22 -18
  43. package/src/components/astro/RLADashboardSearchButton.astro +22 -18
  44. package/src/components/astro/RLADashboardSidebar.astro +22 -18
  45. package/src/components/astro/RLADashboardSidebarCollapse.astro +22 -18
  46. package/src/components/astro/RLADashboardSidebarToggle.astro +22 -18
  47. package/src/components/astro/RLADashboardToolbar.astro +22 -18
  48. package/src/components/astro/RLADock.astro +22 -18
  49. package/src/{plugins/starlightAddons/components/Gamepad.astro → components/astro/RLADocsGamepad.astro} +178 -180
  50. package/src/{plugins/starlightAddons/components/Keyboard.astro → components/astro/RLADocsKeyboard.astro} +1 -3
  51. package/src/{plugins/starlightAddons/PackageManagers.astro → components/astro/RLADocsPackageManagers.astro} +28 -14
  52. package/src/components/astro/RLADrawer.astro +78 -74
  53. package/src/components/astro/RLAEditor.astro +22 -18
  54. package/src/components/astro/RLAEmpty.astro +22 -18
  55. package/src/components/astro/RLAError.astro +22 -18
  56. package/src/components/astro/RLAFieldset.astro +22 -18
  57. package/src/components/astro/RLAFloatingAction.astro +22 -18
  58. package/src/components/astro/RLAFooter.astro +39 -35
  59. package/src/components/astro/RLAForm.astro +23 -19
  60. package/src/components/astro/RLAGallery.astro +22 -18
  61. package/src/components/astro/RLAGrid.astro +39 -0
  62. package/src/components/astro/RLAHead.astro +25 -9
  63. package/src/components/astro/RLAHeader.astro +59 -107
  64. package/src/components/astro/RLAHoverCard.astro +35 -31
  65. package/src/components/astro/RLAIcon.astro +31 -27
  66. package/src/components/astro/RLAImage.astro +209 -19
  67. package/src/components/astro/RLAInputDate.astro +22 -18
  68. package/src/components/astro/RLAInputNumber.astro +22 -18
  69. package/src/components/astro/RLAInputTags.astro +22 -18
  70. package/src/components/astro/RLAInputTime.astro +22 -18
  71. package/src/components/astro/RLAKbd.astro +32 -22
  72. package/src/components/astro/RLAKnob.astro +22 -18
  73. package/src/components/astro/RLALabel.astro +27 -23
  74. package/src/components/astro/RLALink.astro +22 -18
  75. package/src/components/astro/RLALinkGroup.astro +37 -18
  76. package/src/components/astro/RLAListbox.astro +22 -18
  77. package/src/components/astro/RLALocaleSelector.astro +5 -1
  78. package/src/components/astro/RLALogo.astro +90 -56
  79. package/src/components/astro/RLAMain.astro +8 -2
  80. package/src/components/astro/RLAMarquee.astro +36 -32
  81. package/src/components/astro/RLAMegamenu.astro +22 -18
  82. package/src/components/astro/RLAMeter.astro +22 -18
  83. package/src/components/astro/RLAModal.astro +99 -95
  84. package/src/components/astro/RLANavigationMenu.astro +137 -136
  85. package/src/components/astro/RLAPage.astro +22 -18
  86. package/src/components/astro/RLAPageAside.astro +22 -18
  87. package/src/components/astro/RLAPageBody.astro +22 -18
  88. package/src/components/astro/RLAPageHeader.astro +22 -18
  89. package/src/components/astro/RLAPageSection.astro +5 -1
  90. package/src/components/astro/RLAPagination.astro +98 -94
  91. package/src/components/astro/RLAPassword.astro +22 -18
  92. package/src/components/astro/RLAPhoneMockup.astro +22 -18
  93. package/src/components/astro/RLAPinInput.astro +23 -0
  94. package/src/components/astro/RLAPlaceholder.astro +45 -41
  95. package/src/components/astro/RLAPopover.astro +35 -31
  96. package/src/components/astro/RLAPost.astro +65 -19
  97. package/src/components/astro/RLAPosts.astro +23 -0
  98. package/src/components/astro/RLAPricingPlan.astro +22 -18
  99. package/src/components/astro/RLAPricingTable.astro +22 -18
  100. package/src/components/astro/RLAProse.astro +22 -18
  101. package/src/components/astro/RLAQrCode.astro +22 -18
  102. package/src/components/astro/RLARadioGroup.astro +22 -18
  103. package/src/components/astro/RLARating.astro +22 -18
  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 +76 -72
  108. package/src/components/astro/RLASpeedDial.astro +22 -18
  109. package/src/components/astro/RLASpoiler.astro +22 -18
  110. package/src/components/astro/RLAStepper.astro +22 -18
  111. package/src/components/astro/RLASteps.astro +71 -0
  112. package/src/components/astro/RLAStickySurface.astro +31 -27
  113. package/src/components/astro/RLATableOfContents.astro +22 -18
  114. package/src/components/astro/RLATabs.astro +133 -92
  115. package/src/components/astro/RLAThemeSelector.astro +5 -1
  116. package/src/components/astro/RLATimeline.astro +22 -18
  117. package/src/components/astro/RLATooltip.astro +35 -31
  118. package/src/components/astro/RLATour.astro +22 -18
  119. package/src/components/astro/RLATree.astro +22 -18
  120. package/src/components/astro/RLAUser.astro +22 -18
  121. package/src/components/astro/RLAVideo.astro +200 -196
  122. package/src/components/astro/RLAWatermark.astro +22 -18
  123. package/src/components/astro/RLAWindowMockup.astro +22 -18
  124. package/src/components/vue/RLVCheckbox.vue +68 -0
  125. package/src/components/vue/RLVForm.vue +44 -0
  126. package/src/components/vue/RLVFormField.vue +58 -0
  127. package/src/components/vue/RLVInput.vue +93 -0
  128. package/src/components/vue/RLVPost.vue +63 -0
  129. package/src/components/vue/RLVPosts.vue +21 -0
  130. package/src/components/vue/RLVSection.vue +5 -4
  131. package/src/components/vue/RLVToast.vue +68 -0
  132. package/src/components/vue/RLVToaster.vue +29 -0
  133. package/src/composables/index.ts +3 -1
  134. package/src/composables/useHeaderStore.ts +14 -0
  135. package/src/composables/useScrollToTop.ts +62 -62
  136. package/src/composables/useToast.ts +42 -0
  137. package/src/env.d.ts +0 -13
  138. package/src/integrations/ui.ts +40 -49
  139. package/src/plugins/index.ts +2 -5
  140. package/src/plugins/starlightDocsApi/index.ts +272 -265
  141. package/src/presets/defaults.ts +297 -285
  142. package/src/presets/index.ts +208 -108
  143. package/src/styles/index.css +160 -162
  144. package/src/themes/3d-hover.theme.ts +13 -10
  145. package/src/themes/accordion.theme.ts +13 -10
  146. package/src/themes/alert.theme.ts +125 -56
  147. package/src/themes/app.theme.ts +13 -10
  148. package/src/themes/aspect-ratio.theme.ts +10 -8
  149. package/src/themes/audio.theme.ts +13 -10
  150. package/src/themes/avatar-group.theme.ts +9 -7
  151. package/src/themes/avatar.theme.ts +84 -28
  152. package/src/themes/badge.theme.ts +163 -66
  153. package/src/themes/banner.theme.ts +13 -10
  154. package/src/themes/breadcrumb.theme.ts +14 -12
  155. package/src/themes/browser-mockup.theme.ts +13 -10
  156. package/src/themes/button.theme.ts +73 -66
  157. package/src/themes/calendar.theme.ts +13 -10
  158. package/src/themes/card.theme.ts +42 -34
  159. package/src/themes/carousel.theme.ts +30 -28
  160. package/src/themes/changelog.theme.ts +13 -10
  161. package/src/themes/chart.theme.ts +22 -21
  162. package/src/themes/chat-message.theme.ts +13 -10
  163. package/src/themes/chat-messages.theme.ts +13 -10
  164. package/src/themes/chat-palette.theme.ts +13 -10
  165. package/src/themes/chat-prompt-submit.theme.ts +13 -10
  166. package/src/themes/chat-prompt.theme.ts +13 -10
  167. package/src/themes/chat-reasoning.theme.ts +13 -10
  168. package/src/themes/chat-shimmer.theme.ts +13 -10
  169. package/src/themes/chat-tool.theme.ts +13 -10
  170. package/src/themes/chat.theme.ts +13 -10
  171. package/src/themes/checkbox.theme.ts +50 -48
  172. package/src/themes/chip.theme.ts +74 -16
  173. package/src/themes/color-picker.theme.ts +13 -10
  174. package/src/themes/command-palette.theme.ts +13 -10
  175. package/src/themes/compare.theme.ts +13 -10
  176. package/src/themes/confirm.theme.ts +48 -33
  177. package/src/themes/container.theme.ts +13 -10
  178. package/src/themes/context-menu.theme.ts +13 -10
  179. package/src/themes/dashboard-group.theme.ts +13 -10
  180. package/src/themes/dashboard-navbar.theme.ts +13 -10
  181. package/src/themes/dashboard-panel.theme.ts +13 -10
  182. package/src/themes/dashboard-resize-handle.theme.ts +13 -10
  183. package/src/themes/dashboard-search-button.theme.ts +13 -10
  184. package/src/themes/dashboard-search.theme.ts +13 -10
  185. package/src/themes/dashboard-sidebar-collapse.theme.ts +13 -10
  186. package/src/themes/dashboard-sidebar-toggle.theme.ts +13 -10
  187. package/src/themes/dashboard-sidebar.theme.ts +13 -10
  188. package/src/themes/dashboard-toolbar.theme.ts +13 -10
  189. package/src/themes/dock.theme.ts +13 -10
  190. package/src/themes/drawer.theme.ts +61 -44
  191. package/src/themes/dropdown-menu.theme.ts +29 -27
  192. package/src/themes/editor.theme.ts +13 -10
  193. package/src/themes/empty.theme.ts +13 -10
  194. package/src/themes/error.theme.ts +13 -10
  195. package/src/themes/field-group.theme.ts +24 -23
  196. package/src/themes/fieldset.theme.ts +13 -10
  197. package/src/themes/floating-action.theme.ts +13 -10
  198. package/src/themes/footer.theme.ts +30 -27
  199. package/src/themes/form.theme.ts +13 -10
  200. package/src/themes/gallery.theme.ts +13 -10
  201. package/src/themes/head.theme.ts +13 -10
  202. package/src/themes/header.theme.ts +46 -43
  203. package/src/themes/hover-card.theme.ts +25 -23
  204. package/src/themes/icon.theme.ts +23 -20
  205. package/src/themes/image.theme.ts +19 -10
  206. package/src/themes/input-date.theme.ts +13 -10
  207. package/src/themes/input-menu.theme.ts +35 -28
  208. package/src/themes/input-number.theme.ts +13 -10
  209. package/src/themes/input-tags.theme.ts +13 -10
  210. package/src/themes/input-time.theme.ts +13 -10
  211. package/src/themes/input.theme.ts +42 -41
  212. package/src/themes/kbd.theme.ts +89 -24
  213. package/src/themes/knob.theme.ts +13 -10
  214. package/src/themes/label.theme.ts +18 -16
  215. package/src/themes/link-group.theme.ts +32 -10
  216. package/src/themes/link.theme.ts +13 -10
  217. package/src/themes/listbox.theme.ts +13 -10
  218. package/src/themes/locale-selector.theme.ts +40 -41
  219. package/src/themes/logo.theme.ts +13 -10
  220. package/src/themes/main.theme.ts +7 -6
  221. package/src/themes/marquee.theme.ts +24 -22
  222. package/src/themes/megamenu.theme.ts +13 -10
  223. package/src/themes/meter.theme.ts +13 -10
  224. package/src/themes/modal.theme.ts +44 -32
  225. package/src/themes/navigation-menu.theme.ts +27 -19
  226. package/src/themes/page-aside.theme.ts +13 -10
  227. package/src/themes/page-body.theme.ts +13 -10
  228. package/src/themes/page-header.theme.ts +13 -10
  229. package/src/themes/page-section.theme.ts +187 -186
  230. package/src/themes/page.theme.ts +13 -10
  231. package/src/themes/pagination.theme.ts +24 -22
  232. package/src/themes/password.theme.ts +13 -10
  233. package/src/themes/phone-mockup.theme.ts +13 -10
  234. package/src/themes/pin-input.theme.ts +14 -0
  235. package/src/themes/placeholder.theme.ts +15 -12
  236. package/src/themes/popover.theme.ts +26 -24
  237. package/src/themes/post.theme.ts +33 -10
  238. package/src/themes/posts.theme.ts +13 -0
  239. package/src/themes/pricing-plan.theme.ts +13 -10
  240. package/src/themes/pricing-table.theme.ts +13 -10
  241. package/src/themes/progress.theme.ts +38 -37
  242. package/src/themes/prose.theme.ts +13 -10
  243. package/src/themes/qr-code.theme.ts +13 -10
  244. package/src/themes/quote.theme.ts +13 -10
  245. package/src/themes/radio-group.theme.ts +13 -10
  246. package/src/themes/rating.theme.ts +13 -10
  247. package/src/themes/scroll-area.theme.ts +26 -24
  248. package/src/themes/scroll-to-top.theme.ts +52 -50
  249. package/src/themes/select.theme.ts +29 -27
  250. package/src/themes/separator.theme.ts +147 -19
  251. package/src/themes/sidebar.theme.ts +38 -33
  252. package/src/themes/skeleton.theme.ts +21 -20
  253. package/src/themes/slideover.theme.ts +53 -37
  254. package/src/themes/slider.theme.ts +36 -34
  255. package/src/themes/speed-dial.theme.ts +13 -10
  256. package/src/themes/spinner.theme.ts +34 -35
  257. package/src/themes/splitter.theme.ts +23 -22
  258. package/src/themes/spoiler.theme.ts +13 -10
  259. package/src/themes/stepper.theme.ts +13 -10
  260. package/src/themes/sticky-surface.theme.ts +9 -7
  261. package/src/themes/switch.theme.ts +67 -65
  262. package/src/themes/table-of-contents.theme.ts +48 -10
  263. package/src/themes/tabs.theme.ts +52 -44
  264. package/src/themes/textarea.theme.ts +27 -26
  265. package/src/themes/theme-selector.theme.ts +9 -10
  266. package/src/themes/timeline.theme.ts +13 -10
  267. package/src/themes/toast.theme.ts +31 -25
  268. package/src/themes/tooltip.theme.ts +28 -27
  269. package/src/themes/tour.theme.ts +13 -10
  270. package/src/themes/tree.theme.ts +13 -10
  271. package/src/themes/user.theme.ts +13 -10
  272. package/src/themes/video.theme.ts +17 -14
  273. package/src/themes/watermark.theme.ts +13 -10
  274. package/src/themes/window-mockup.theme.ts +13 -10
  275. package/src/types/components/3d-hover.ts +11 -11
  276. package/src/types/components/app.ts +11 -11
  277. package/src/types/components/audio.ts +11 -11
  278. package/src/types/components/avatar-group.ts +9 -10
  279. package/src/types/components/avatar.ts +60 -35
  280. package/src/types/components/banner.ts +11 -11
  281. package/src/types/components/browser-mockup.ts +11 -11
  282. package/src/types/components/button.ts +81 -77
  283. package/src/types/components/calendar.ts +11 -11
  284. package/src/types/components/changelog.ts +11 -11
  285. package/src/types/components/chat-message.ts +11 -11
  286. package/src/types/components/chat-messages.ts +11 -11
  287. package/src/types/components/chat-palette.ts +11 -11
  288. package/src/types/components/chat-prompt-submit.ts +11 -11
  289. package/src/types/components/chat-prompt.ts +11 -11
  290. package/src/types/components/chat-reasoning.ts +11 -11
  291. package/src/types/components/chat-shimmer.ts +11 -11
  292. package/src/types/components/chat-tool.ts +11 -11
  293. package/src/types/components/chat.ts +11 -11
  294. package/src/types/components/chip.ts +17 -17
  295. package/src/types/components/color-picker.ts +11 -11
  296. package/src/types/components/command-palette.ts +11 -11
  297. package/src/types/components/compare.ts +11 -11
  298. package/src/types/components/container.ts +17 -11
  299. package/src/types/components/context-menu.ts +11 -11
  300. package/src/types/components/dashboard-group.ts +11 -11
  301. package/src/types/components/dashboard-navbar.ts +11 -11
  302. package/src/types/components/dashboard-panel.ts +11 -11
  303. package/src/types/components/dashboard-resize-handle.ts +11 -11
  304. package/src/types/components/dashboard-search-button.ts +11 -11
  305. package/src/types/components/dashboard-search.ts +11 -11
  306. package/src/types/components/dashboard-sidebar-collapse.ts +11 -11
  307. package/src/types/components/dashboard-sidebar-toggle.ts +11 -11
  308. package/src/types/components/dashboard-sidebar.ts +11 -11
  309. package/src/types/components/dashboard-toolbar.ts +11 -11
  310. package/src/types/components/dock.ts +11 -11
  311. package/src/types/components/editor.ts +11 -11
  312. package/src/types/components/empty.ts +11 -11
  313. package/src/types/components/error.ts +11 -11
  314. package/src/types/components/fieldset.ts +11 -11
  315. package/src/types/components/floating-action.ts +11 -11
  316. package/src/types/components/form.ts +19 -11
  317. package/src/types/components/gallery.ts +11 -11
  318. package/src/types/components/icon.ts +19 -20
  319. package/src/types/components/image.ts +27 -10
  320. package/src/types/components/index.ts +2 -1
  321. package/src/types/components/input-date.ts +11 -11
  322. package/src/types/components/input-menu.ts +43 -44
  323. package/src/types/components/input-number.ts +11 -11
  324. package/src/types/components/input-pin.ts +35 -11
  325. package/src/types/components/input-tags.ts +11 -11
  326. package/src/types/components/input-time.ts +11 -11
  327. package/src/types/components/knob.ts +11 -11
  328. package/src/types/components/link-group.ts +23 -11
  329. package/src/types/components/listbox.ts +11 -11
  330. package/src/types/components/locale-selector.ts +28 -28
  331. package/src/types/components/logo.ts +31 -27
  332. package/src/types/components/main.ts +15 -15
  333. package/src/types/components/megamenu.ts +11 -11
  334. package/src/types/components/meter.ts +11 -11
  335. package/src/types/components/modal.ts +39 -40
  336. package/src/types/components/navigation-menu.ts +54 -54
  337. package/src/types/components/page-aside.ts +11 -11
  338. package/src/types/components/page-body.ts +11 -11
  339. package/src/types/components/page-header.ts +11 -11
  340. package/src/types/components/page.ts +11 -11
  341. package/src/types/components/password.ts +11 -11
  342. package/src/types/components/phone-mockup.ts +5 -5
  343. package/src/types/components/pin-input.ts +11 -0
  344. package/src/types/components/popover.ts +23 -24
  345. package/src/types/components/post.ts +35 -11
  346. package/src/types/components/posts.ts +11 -0
  347. package/src/types/components/pricing-plan.ts +11 -11
  348. package/src/types/components/pricing-table.ts +11 -11
  349. package/src/types/components/progress.ts +33 -34
  350. package/src/types/components/prose.ts +11 -11
  351. package/src/types/components/qr-code.ts +11 -11
  352. package/src/types/components/radio-group.ts +11 -11
  353. package/src/types/components/rating.ts +11 -11
  354. package/src/types/components/scroll-area.ts +23 -24
  355. package/src/types/components/separator.ts +19 -20
  356. package/src/types/components/sidebar.ts +72 -37
  357. package/src/types/components/slideover.ts +31 -32
  358. package/src/types/components/speed-dial.ts +11 -11
  359. package/src/types/components/spinner.ts +25 -26
  360. package/src/types/components/splitter.ts +19 -20
  361. package/src/types/components/spoiler.ts +11 -11
  362. package/src/types/components/stepper.ts +11 -11
  363. package/src/types/components/sticky-surface.ts +19 -20
  364. package/src/types/components/switch.ts +41 -42
  365. package/src/types/components/table-of-contents.ts +17 -11
  366. package/src/types/components/theme-selector.ts +13 -13
  367. package/src/types/components/timeline.ts +11 -11
  368. package/src/types/components/tooltip.ts +23 -24
  369. package/src/types/components/tour.ts +11 -11
  370. package/src/types/components/tree.ts +11 -11
  371. package/src/types/components/user.ts +11 -11
  372. package/src/types/components/watermark.ts +11 -11
  373. package/src/types/components/window-mockup.ts +11 -11
  374. package/src/utils/docs.ts +189 -0
  375. package/src/utils/headerStack.ts +95 -88
  376. package/src/utils/index.ts +5 -4
  377. package/src/components/astro/RLAInputPin.astro +0 -19
  378. package/src/integrations/vue-entrypoint.ts +0 -6
  379. package/src/nuxt.ts +0 -125
  380. package/src/plugins/starlightAddons/PageTitle.astro +0 -113
  381. package/src/plugins/starlightAddons/index.ts +0 -58
  382. package/src/plugins/starlightAddons/starlight.d.ts +0 -6
  383. package/src/themes/input-pin.theme.ts +0 -10
@@ -0,0 +1,58 @@
1
+ <script setup lang="ts">
2
+ import { computed, useSlots } from "vue"
3
+ import { scv } from "css-variants"
4
+ import { useUi, resolveClasses } from "../../utils"
5
+ import type { FormFieldProps } from "../../types/components/form-field"
6
+ import formFieldTheme from "../../themes/form-field.theme"
7
+
8
+ const formField = scv(formFieldTheme)
9
+
10
+ const props = withDefaults(defineProps<FormFieldProps>(), {
11
+ size: "md"
12
+ })
13
+
14
+ const slots = useSlots()
15
+
16
+ const resolvedClasses = computed(() =>
17
+ resolveClasses(
18
+ formField,
19
+ {
20
+ size: props.size
21
+ },
22
+ useUi("formField", props.ui),
23
+ props.class
24
+ )
25
+ )
26
+ </script>
27
+
28
+ <template>
29
+ <div :class="resolvedClasses.root" data-slot="root">
30
+ <div v-if="label || slots.label" class="flex items-center justify-between gap-2">
31
+ <label v-if="label || slots.label" :class="resolvedClasses.label" data-slot="label">
32
+ <slot name="label">{{ label }}</slot>
33
+ <span v-if="required" class="text-error-500">*</span>
34
+ </label>
35
+ <slot name="hint" />
36
+ </div>
37
+
38
+ <p
39
+ v-if="description || slots.description"
40
+ :class="resolvedClasses.description"
41
+ data-slot="description"
42
+ >
43
+ <slot name="description">{{ description }}</slot>
44
+ </p>
45
+
46
+ <div class="relative">
47
+ <slot :ui="resolvedClasses" />
48
+ </div>
49
+
50
+ <p v-if="error || slots.error" :class="resolvedClasses.error" data-slot="error">
51
+ <slot name="error">{{ error }}</slot>
52
+ </p>
53
+
54
+ <div v-if="slots.help" class="mt-1">
55
+ <slot name="help" />
56
+ </div>
57
+ </div>
58
+ </template>
@@ -0,0 +1,93 @@
1
+ <script setup lang="ts">
2
+ import { computed, useSlots } from "vue"
3
+ import { scv } from "css-variants"
4
+ import { useUi, resolveClasses } from "../../utils"
5
+ import type { InputProps } from "../../types/components/input"
6
+ import inputTheme from "../../themes/input.theme"
7
+
8
+ const input = scv(inputTheme)
9
+
10
+ const props = withDefaults(defineProps<InputProps & { modelValue?: string | number }>(), {
11
+ type: "text",
12
+ size: "md",
13
+ color: "primary"
14
+ })
15
+
16
+ const emit = defineEmits<{
17
+ (e: "update:modelValue", value: string | number): void
18
+ (e: "change", event: Event): void
19
+ (e: "input", event: Event): void
20
+ (e: "focus", event: FocusEvent): void
21
+ (e: "blur", event: FocusEvent): void
22
+ }>()
23
+
24
+ const slots = useSlots()
25
+
26
+ const value = computed({
27
+ get: () => props.modelValue ?? props.value ?? "",
28
+ set: (val) => emit("update:modelValue", val)
29
+ })
30
+
31
+ const isLeading = computed(() => !!(props.leadingIcon || slots.leading))
32
+ const isTrailing = computed(() => !!(props.trailingIcon || slots.trailing))
33
+
34
+ const resolvedClasses = computed(() =>
35
+ resolveClasses(
36
+ input,
37
+ {
38
+ size: props.size,
39
+ color: props.color,
40
+ error: !!props.error,
41
+ disabled: props.disabled,
42
+ leading: isLeading.value,
43
+ trailing: isTrailing.value,
44
+ theme: props.theme
45
+ },
46
+ useUi("input", props.ui),
47
+ props.class
48
+ )
49
+ )
50
+
51
+ function onInput(event: Event) {
52
+ const target = event.target as HTMLInputElement
53
+ value.value = target.value
54
+ emit("input", event)
55
+ }
56
+
57
+ function onChange(event: Event) {
58
+ emit("change", event)
59
+ }
60
+ </script>
61
+
62
+ <template>
63
+ <div :class="resolvedClasses.root" data-slot="root">
64
+ <slot name="leading" :ui="resolvedClasses">
65
+ <span v-if="isLeading" :class="resolvedClasses.leadingIcon" data-slot="leading-icon">
66
+ <span :class="leadingIcon" aria-hidden="true" />
67
+ </span>
68
+ </slot>
69
+
70
+ <input
71
+ v-bind="$attrs"
72
+ :type="type"
73
+ :name="name"
74
+ :value="value"
75
+ :placeholder="placeholder"
76
+ :disabled="disabled"
77
+ :readonly="readonly"
78
+ :required="required"
79
+ :class="resolvedClasses.input"
80
+ data-slot="input"
81
+ @input="onInput"
82
+ @change="onChange"
83
+ @focus="emit('focus', $event)"
84
+ @blur="emit('blur', $event)"
85
+ />
86
+
87
+ <slot name="trailing" :ui="resolvedClasses">
88
+ <span v-if="isTrailing" :class="resolvedClasses.trailingIcon" data-slot="trailing-icon">
89
+ <span :class="trailingIcon" aria-hidden="true" />
90
+ </span>
91
+ </slot>
92
+ </div>
93
+ </template>
@@ -0,0 +1,63 @@
1
+ <script setup lang="ts">
2
+ import { computed, useSlots } from "vue"
3
+ import { scv } from "css-variants"
4
+ import { useUi, resolveClasses } from "../../utils"
5
+ import type { PostProps } from "../../types/components/post"
6
+ import postTheme from "../../themes/post.theme"
7
+
8
+ const post = scv(postTheme)
9
+
10
+ const props = withDefaults(defineProps<PostProps>(), {
11
+ variant: "soft"
12
+ })
13
+
14
+ const slots = useSlots()
15
+
16
+ const resolvedClasses = computed(() =>
17
+ resolveClasses(post, { variant: props.variant }, useUi("post", props.ui), props.class)
18
+ )
19
+
20
+ const Tag = props.to ? "a" : "div"
21
+ const formattedDate = computed(() =>
22
+ props.date ? (props.date instanceof Date ? props.date.toLocaleDateString() : props.date) : null
23
+ )
24
+ </script>
25
+
26
+ <template>
27
+ <component :is="Tag" :href="to" :class="resolvedClasses.root" data-slot="root">
28
+ <slot name="image" :ui="resolvedClasses">
29
+ <div v-if="image" :class="resolvedClasses.imageWrapper" data-slot="image-wrapper">
30
+ <img
31
+ :src="typeof image === 'string' ? image : image.src"
32
+ :alt="title"
33
+ :class="resolvedClasses.image"
34
+ data-slot="image"
35
+ />
36
+ </div>
37
+ </slot>
38
+
39
+ <div :class="resolvedClasses.content" data-slot="content">
40
+ <slot name="title" :ui="resolvedClasses">
41
+ <h3 v-if="title" :class="resolvedClasses.title" data-slot="title">{{ title }}</h3>
42
+ </slot>
43
+
44
+ <slot name="description" :ui="resolvedClasses">
45
+ <p v-if="description" :class="resolvedClasses.description" data-slot="description">
46
+ {{ description }}
47
+ </p>
48
+ </slot>
49
+
50
+ <slot name="date" :ui="resolvedClasses">
51
+ <time v-if="formattedDate" :class="resolvedClasses.date" data-slot="date">{{
52
+ formattedDate
53
+ }}</time>
54
+ </slot>
55
+
56
+ <slot />
57
+ </div>
58
+
59
+ <div v-if="slots.footer" :class="resolvedClasses.footer" data-slot="footer">
60
+ <slot name="footer" :ui="resolvedClasses" />
61
+ </div>
62
+ </component>
63
+ </template>
@@ -0,0 +1,21 @@
1
+ <script setup lang="ts">
2
+ import { computed } from "vue"
3
+ import { scv } from "css-variants"
4
+ import { useUi, resolveClasses } from "../../utils"
5
+ import type { PostsProps } from "../../types/components/posts"
6
+ import postsTheme from "../../themes/posts.theme"
7
+
8
+ const posts = scv(postsTheme)
9
+
10
+ const props = defineProps<PostsProps>()
11
+
12
+ const resolvedClasses = computed(() =>
13
+ resolveClasses(posts, {}, useUi("posts", props.ui), props.class)
14
+ )
15
+ </script>
16
+
17
+ <template>
18
+ <div :class="resolvedClasses.root" data-slot="root">
19
+ <slot />
20
+ </div>
21
+ </template>
@@ -2,12 +2,12 @@
2
2
  import { computed, useSlots } from "vue"
3
3
  import { scv } from "css-variants"
4
4
  import { useUi, resolveClasses } from "../../utils"
5
- import type { SectionProps } from "../../types/components/section"
6
- import sectionTheme from "../../themes/section.theme"
5
+ import type { PageSectionProps } from "../../types/components/page-section"
6
+ import pageSectionTheme from "../../themes/page-section.theme"
7
7
  import RLVIcon from "./RLVIcon.vue"
8
8
  import RLVButton from "./RLVButton.vue"
9
9
 
10
- const section = scv(sectionTheme)
10
+ const section = scv(pageSectionTheme)
11
11
 
12
12
  const {
13
13
  as = "div",
@@ -18,10 +18,11 @@ const {
18
18
  ui: uiProp,
19
19
  class: className,
20
20
  headline,
21
+ icon,
21
22
  title,
22
23
  description,
23
24
  links
24
- } = defineProps<SectionProps>()
25
+ } = defineProps<PageSectionProps>()
25
26
 
26
27
  const slots = useSlots()
27
28
 
@@ -0,0 +1,68 @@
1
+ <script setup lang="ts">
2
+ import { computed } from "vue"
3
+ import { scv } from "css-variants"
4
+ import { useUi, resolveClasses } from "../../utils"
5
+ import type { ToastProps } from "../../types/components/toast"
6
+ import toastTheme from "../../themes/toast.theme"
7
+
8
+ const toast = scv(toastTheme)
9
+
10
+ const props = withDefaults(defineProps<ToastProps & { id?: string | number }>(), {
11
+ variant: "default",
12
+ duration: 5000
13
+ })
14
+
15
+ const emit = defineEmits<{
16
+ (e: "close", id: string | number | undefined): void
17
+ }>()
18
+
19
+ const resolvedClasses = computed(() =>
20
+ resolveClasses(toast, { variant: props.variant }, useUi("toast", props.ui), props.class)
21
+ )
22
+
23
+ const variantIcons: Record<string, string> = {
24
+ default: "i-lucide-bell",
25
+ destructive: "i-lucide-alert-circle",
26
+ success: "i-lucide-check-circle-2",
27
+ warning: "i-lucide-alert-triangle",
28
+ info: "i-lucide-info"
29
+ }
30
+
31
+ const icon = computed(() => variantIcons[props.variant] ?? variantIcons.default!)
32
+ </script>
33
+
34
+ <template>
35
+ <div
36
+ :class="resolvedClasses.root"
37
+ data-slot="root"
38
+ role="alert"
39
+ aria-live="assertive"
40
+ aria-atomic="true"
41
+ >
42
+ <span :class="[icon, 'size-4 shrink-0 mt-0.5']" aria-hidden="true" />
43
+
44
+ <div class="flex flex-col gap-0.5 flex-1 min-w-0">
45
+ <div v-if="title" :class="resolvedClasses.title" data-slot="title">
46
+ {{ title }}
47
+ </div>
48
+ <div v-if="description" :class="resolvedClasses.description" data-slot="description">
49
+ {{ description }}
50
+ </div>
51
+ <slot />
52
+ </div>
53
+
54
+ <button v-if="actionLabel" type="button" :class="resolvedClasses.action" data-slot="action">
55
+ {{ actionLabel }}
56
+ </button>
57
+
58
+ <button
59
+ type="button"
60
+ :class="resolvedClasses.close"
61
+ data-slot="close"
62
+ aria-label="Dismiss notification"
63
+ @click="emit('close', id)"
64
+ >
65
+ <span class="i-lucide-x size-3.5" aria-hidden="true" />
66
+ </button>
67
+ </div>
68
+ </template>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import { useToast } from "../../composables/useToast"
3
+ import RLVToast from "./RLVToast.vue"
4
+
5
+ const { toasts, remove } = useToast()
6
+ </script>
7
+
8
+ <template>
9
+ <div
10
+ class="fixed bottom-0 right-0 p-4 z-[100] flex flex-col gap-2 w-full max-w-sm pointer-events-none"
11
+ >
12
+ <TransitionGroup
13
+ enter-active-class="transition duration-300 ease-out"
14
+ enter-from-class="transform translate-y-2 opacity-0"
15
+ enter-to-class="transform translate-y-0 opacity-100"
16
+ leave-active-class="transition duration-200 ease-in"
17
+ leave-from-class="transform translate-y-0 opacity-100"
18
+ leave-to-class="transform translate-y-2 opacity-0"
19
+ >
20
+ <RLVToast
21
+ v-for="toast in toasts"
22
+ :key="toast.id"
23
+ v-bind="toast"
24
+ class="pointer-events-auto"
25
+ @close="remove"
26
+ />
27
+ </TransitionGroup>
28
+ </div>
29
+ </template>
@@ -1 +1,3 @@
1
- export { useScrollToTop } from "./useScrollToTop"
1
+ export { useScrollToTop } from "./useScrollToTop"
2
+ export { useToast } from "./useToast"
3
+ export { headerLayersStore } from "./useHeaderStore"
@@ -0,0 +1,14 @@
1
+ import { map } from "nanostores"
2
+
3
+ export interface HeaderLayerInfo {
4
+ order: number
5
+ isVisible: boolean
6
+ height: number
7
+ }
8
+
9
+ /**
10
+ * Global store tracking all registered header layers.
11
+ * This allows child components to subscribe to header layer changes
12
+ * even across Vue/Astro boundaries, since nanostores is framework-agnostic.
13
+ */
14
+ export const headerLayersStore = map<Record<string, HeaderLayerInfo>>({})
@@ -1,62 +1,62 @@
1
- import { ref, onMounted, onUnmounted, type Ref } from "vue"
2
-
3
- export interface UseScrollToTopOptions {
4
- /**
5
- * The scroll threshold (in pixels) before the button becomes visible.
6
- *
7
- * @default 200
8
- */
9
- threshold?: number
10
- }
11
-
12
- export interface UseScrollToTopReturn {
13
- /**
14
- * Whether the scroll-to-top button should be visible.
15
- */
16
- isVisible: Ref<boolean>
17
- /**
18
- * The current scroll percentage (0-100).
19
- */
20
- scrollPercentage: Ref<number>
21
- /**
22
- * Scrolls the window to the top with a smooth animation.
23
- */
24
- scrollToTop: () => void
25
- }
26
-
27
- export function useScrollToTop(options: UseScrollToTopOptions = {}): UseScrollToTopReturn {
28
- const { threshold = 200 } = options
29
-
30
- const isVisible = ref(false)
31
- const scrollPercentage = ref(0)
32
-
33
- function updateScrollState() {
34
- const scrollTop = window.scrollY || document.documentElement.scrollTop
35
- const scrollHeight = document.documentElement.scrollHeight - window.innerHeight
36
-
37
- isVisible.value = scrollTop > threshold
38
- scrollPercentage.value = scrollHeight > 0 ? (scrollTop / scrollHeight) * 100 : 0
39
- }
40
-
41
- function scrollToTop() {
42
- window.scrollTo({
43
- top: 0,
44
- behavior: "smooth"
45
- })
46
- }
47
-
48
- onMounted(() => {
49
- window.addEventListener("scroll", updateScrollState, { passive: true })
50
- updateScrollState()
51
- })
52
-
53
- onUnmounted(() => {
54
- window.removeEventListener("scroll", updateScrollState)
55
- })
56
-
57
- return {
58
- isVisible,
59
- scrollPercentage,
60
- scrollToTop
61
- }
62
- }
1
+ import { ref, onMounted, onUnmounted, type Ref } from "vue"
2
+
3
+ export interface UseScrollToTopOptions {
4
+ /**
5
+ * The scroll threshold (in pixels) before the button becomes visible.
6
+ *
7
+ * @default 200
8
+ */
9
+ threshold?: number
10
+ }
11
+
12
+ export interface UseScrollToTopReturn {
13
+ /**
14
+ * Whether the scroll-to-top button should be visible.
15
+ */
16
+ isVisible: Ref<boolean>
17
+ /**
18
+ * The current scroll percentage (0-100).
19
+ */
20
+ scrollPercentage: Ref<number>
21
+ /**
22
+ * Scrolls the window to the top with a smooth animation.
23
+ */
24
+ scrollToTop: () => void
25
+ }
26
+
27
+ function scrollToTop() {
28
+ window.scrollTo({
29
+ top: 0,
30
+ behavior: "smooth"
31
+ })
32
+ }
33
+
34
+ export function useScrollToTop(options: UseScrollToTopOptions = {}): UseScrollToTopReturn {
35
+ const { threshold = 200 } = options
36
+
37
+ const isVisible = ref(false)
38
+ const scrollPercentage = ref(0)
39
+
40
+ function updateScrollState() {
41
+ const scrollTop = window.scrollY || document.documentElement.scrollTop
42
+ const scrollHeight = document.documentElement.scrollHeight - window.innerHeight
43
+
44
+ isVisible.value = scrollTop > threshold
45
+ scrollPercentage.value = scrollHeight > 0 ? (scrollTop / scrollHeight) * 100 : 0
46
+ }
47
+
48
+ onMounted(() => {
49
+ window.addEventListener("scroll", updateScrollState, { passive: true })
50
+ updateScrollState()
51
+ })
52
+
53
+ onUnmounted(() => {
54
+ window.removeEventListener("scroll", updateScrollState)
55
+ })
56
+
57
+ return {
58
+ isVisible,
59
+ scrollPercentage,
60
+ scrollToTop
61
+ }
62
+ }
@@ -0,0 +1,42 @@
1
+ import { reactive } from "vue"
2
+
3
+ export interface Toast {
4
+ id?: string | number
5
+ title?: string
6
+ description?: string
7
+ icon?: string
8
+ color?: "primary" | "success" | "warning" | "error" | "info" | "neutral"
9
+ timeout?: number
10
+ callback?: () => void
11
+ }
12
+
13
+ const toasts = reactive<Toast[]>([])
14
+
15
+ export function useToast() {
16
+ const add = (toast: Toast) => {
17
+ const id = toast.id || Date.now()
18
+ const newToast = { ...toast, id }
19
+ toasts.push(newToast)
20
+
21
+ if (toast.timeout !== 0) {
22
+ setTimeout(() => {
23
+ remove(id)
24
+ }, toast.timeout || 5000)
25
+ }
26
+
27
+ return newToast
28
+ }
29
+
30
+ const remove = (id: string | number) => {
31
+ const index = toasts.findIndex((t) => t.id === id)
32
+ if (index !== -1) {
33
+ toasts.splice(index, 1)
34
+ }
35
+ }
36
+
37
+ return {
38
+ toasts,
39
+ add,
40
+ remove
41
+ }
42
+ }
package/src/env.d.ts CHANGED
@@ -1,10 +1,5 @@
1
1
  /// <reference types="astro/client" />
2
2
 
3
- declare module "virtual:nuxt-ui-plugins" {
4
- import type { Plugin } from "vue"
5
- const plugin: Plugin
6
- export default plugin
7
- }
8
3
 
9
4
  declare module "virtual:rimelight-ui" {
10
5
  import type { DefaultUIConfig } from "../themes"
@@ -17,11 +12,6 @@ interface StarlightAddonsConfig {
17
12
  share?: boolean
18
13
  }
19
14
 
20
- declare module "virtual:rimelight-starlight-addons-config" {
21
- const config: StarlightAddonsConfig
22
- export default config
23
- }
24
-
25
15
  declare module "virtual:rimelight-ui-docs-meta" {
26
16
  const meta: Record<string, unknown>
27
17
  export default meta
@@ -43,8 +33,5 @@ declare module "turndown-plugin-gfm" {
43
33
  declare namespace App {
44
34
  interface Locals {
45
35
  cfContext?: Record<string, unknown>
46
- // Extended locals used by Starlight Addons for richer type safety
47
- starlightSidebarTopics?: any
48
- starlightRoute?: any
49
36
  }
50
37
  }