@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
@@ -1,107 +1,59 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { HeaderProps } from "../../types"
5
- import headerTheme from "../../themes/header.theme"
6
-
7
- const header = scv(headerTheme)
8
-
9
- const {
10
- contain = true,
11
- sticky = true,
12
- fixed = false,
13
- stackIndex = 0,
14
- hideOnScroll = false,
15
- ui: uiProp,
16
- class: className,
17
- ...rest
18
- } = Astro.props as HeaderProps;
19
-
20
- const classes = resolveClasses(header, {
21
- contain,
22
- sticky: fixed ? false : sticky,
23
- fixed,
24
- }, useUi("header", uiProp), className);
25
-
26
- const headerId = `rla-header-${Math.random().toString(36).slice(2, 8)}`;
27
- const zIndex = 100 - stackIndex;
28
- ---
29
-
30
- <header
31
- id={headerId}
32
- data-slot="root"
33
- class:list={[classes.root]}
34
- data-rla-header={fixed ? "true" : undefined}
35
- data-stack-index={stackIndex}
36
- data-hide-on-scroll={String(hideOnScroll)}
37
- style={fixed ? `z-index: ${zIndex};` : undefined}
38
- {...rest}
39
- >
40
- <div class:list={[classes.content]} data-header-content>
41
- <div class:list={[classes.container]}>
42
- <div class:list={[classes.left]} data-slot="left">
43
- <slot name="left" />
44
- </div>
45
- <div class:list={[classes.center]} data-slot="center">
46
- <slot name="center" />
47
- </div>
48
- <div class:list={[classes.right]} data-slot="right">
49
- <slot name="right" />
50
- </div>
51
- </div>
52
- </div>
53
- </header>
54
-
55
- {fixed && (
56
- <script>
57
- import { getHeaderStack } from "../../utils/headerStack";
58
-
59
- const stack = getHeaderStack();
60
- const headers = document.querySelectorAll("[data-rla-header='true']");
61
-
62
- headers.forEach(header => {
63
- if ((header as any)._rl_initialized) return;
64
- (header as any)._rl_initialized = true;
65
-
66
- const id = header.id;
67
- const stackIndex = parseInt(header.getAttribute("data-stack-index") || "0", 10);
68
- const hideOnScroll = header.getAttribute("data-hide-on-scroll") === "true";
69
- const contentEl = header.querySelector("[data-header-content]") as HTMLElement;
70
-
71
- let naturalHeight = contentEl ? contentEl.offsetHeight : 0;
72
- let isVisible = true;
73
-
74
- const updateStack = () => {
75
- stack.register(id, stackIndex, naturalHeight, isVisible, header as HTMLElement);
76
- };
77
-
78
- if (typeof ResizeObserver !== "undefined" && contentEl) {
79
- new ResizeObserver(entries => {
80
- const h = entries[0]?.contentRect.height;
81
- if (h && h > 0) {
82
- naturalHeight = h;
83
- updateStack();
84
- }
85
- }).observe(contentEl);
86
- }
87
-
88
- if (hideOnScroll) {
89
- let localLastScrollY = window.scrollY;
90
- window.addEventListener("scroll", () => {
91
- const current = window.scrollY;
92
- const diff = current - localLastScrollY;
93
- if (Math.abs(diff) >= 10) {
94
- const newVisible = current <= 50 ? true : diff <= 0;
95
- if (newVisible !== isVisible) {
96
- isVisible = newVisible;
97
- updateStack();
98
- }
99
- localLastScrollY = current;
100
- }
101
- }, { passive: true });
102
- }
103
-
104
- updateStack();
105
- });
106
- </script>
107
- )}
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { HeaderProps } from "../../types"
5
+ import headerThemeDefault, { createHeaderTheme } from "../../themes/header.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const headerTheme = uiConfig.colors ? createHeaderTheme() : headerThemeDefault
10
+
11
+ const header = scv(headerTheme)
12
+
13
+ const {
14
+ contain = true,
15
+ sticky = true,
16
+ fixed = false,
17
+ stackIndex = 0,
18
+ hideOnScroll = false,
19
+ ui: uiProp,
20
+ class: className,
21
+ ...rest
22
+ } = Astro.props as HeaderProps;
23
+
24
+ const classes = resolveClasses(header, {
25
+ contain,
26
+ sticky: fixed ? false : sticky,
27
+ fixed,
28
+ }, useUi("header", uiProp), className);
29
+
30
+ const headerId = `rla-header-${Math.random().toString(36).slice(2, 8)}`;
31
+ const zIndex = 100 - stackIndex;
32
+ ---
33
+
34
+ <header
35
+ id={headerId}
36
+ data-slot="root"
37
+ class:list={[classes.root]}
38
+ data-rla-header={fixed ? "true" : undefined}
39
+ data-stack-index={stackIndex}
40
+ data-hide-on-scroll={String(hideOnScroll)}
41
+ data-header-layer-id={headerId}
42
+ style={fixed ? `z-index: ${zIndex};` : undefined}
43
+ {...rest}
44
+ >
45
+ <div class:list={[classes.content]} data-header-content>
46
+ <div class:list={[classes.container]}>
47
+ <div class:list={[classes.left]} data-slot="left">
48
+ <slot name="left" />
49
+ </div>
50
+ <div class:list={[classes.center]} data-slot="center">
51
+ <slot name="center" />
52
+ </div>
53
+ <div class:list={[classes.right]} data-slot="right">
54
+ <slot name="right" />
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </header>
59
+
@@ -1,31 +1,35 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { HoverCardProps } from "../../types"
5
- import hoverCardTheme from "../../themes/hover-card.theme"
6
-
7
- const hoverCard = scv(hoverCardTheme)
8
-
9
- const {
10
- triggerLabel,
11
- placement = "bottom",
12
- ui: uiProp,
13
- class: className,
14
- ...rest
15
- } = Astro.props as HoverCardProps
16
-
17
- const classes = resolveClasses(hoverCard, {
18
- placement
19
- }, useUi("hoverCard", uiProp), className)
20
- ---
21
- <div class={classes.root} data-slot="hover-card-container" {...rest}>
22
- <div class={classes.trigger} data-slot="trigger" tabindex="0">
23
- <slot name="trigger">
24
- {triggerLabel && <span class="cursor-help underline decoration-dotted">{triggerLabel}</span>}
25
- </slot>
26
- </div>
27
-
28
- <div class={classes.content} data-slot="content">
29
- <slot />
30
- </div>
31
- </div>
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { HoverCardProps } from "../../types"
5
+ import hoverCardThemeDefault, { createHoverCardTheme } from "../../themes/hover-card.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const hoverCardTheme = uiConfig.colors ? createHoverCardTheme() : hoverCardThemeDefault
10
+
11
+ const hoverCard = scv(hoverCardTheme)
12
+
13
+ const {
14
+ triggerLabel,
15
+ placement = "bottom",
16
+ ui: uiProp,
17
+ class: className,
18
+ ...rest
19
+ } = Astro.props as HoverCardProps
20
+
21
+ const classes = resolveClasses(hoverCard, {
22
+ placement
23
+ }, useUi("hoverCard", uiProp), className)
24
+ ---
25
+ <div class={classes.root} data-slot="hover-card-container" {...rest}>
26
+ <div class={classes.trigger} data-slot="trigger" tabindex="0">
27
+ <slot name="trigger">
28
+ {triggerLabel && <span class="cursor-help underline decoration-dotted">{triggerLabel}</span>}
29
+ </slot>
30
+ </div>
31
+
32
+ <div class={classes.content} data-slot="content">
33
+ <slot />
34
+ </div>
35
+ </div>
@@ -1,27 +1,31 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { IconProps } from "../../types"
5
- import iconTheme from "../../themes/icon.theme"
6
-
7
- const icon = scv(iconTheme)
8
-
9
- const {
10
- name,
11
- size = "md",
12
- ui: uiProp,
13
- class: className,
14
- ...rest
15
- } = Astro.props as IconProps
16
-
17
- const classes = resolveClasses(icon, { size }, useUi("icon", uiProp), className)
18
- ---
19
-
20
- <span
21
- class={classes.root}
22
- data-slot="root"
23
- aria-hidden="true"
24
- {...rest}
25
- >
26
- <span class={name} />
27
- </span>
1
+ ---
2
+ import { scv } from "css-variants"
3
+ import { useUi, resolveClasses } from "../../utils"
4
+ import type { IconProps } from "../../types"
5
+ import iconThemeDefault, { createIconTheme } from "../../themes/icon.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const iconTheme = uiConfig.colors ? createIconTheme() : iconThemeDefault
10
+
11
+ const icon = scv(iconTheme)
12
+
13
+ const {
14
+ name,
15
+ size = "md",
16
+ ui: uiProp,
17
+ class: className,
18
+ ...rest
19
+ } = Astro.props as IconProps
20
+
21
+ const classes = resolveClasses(icon, { size }, useUi("icon", uiProp), className)
22
+ ---
23
+
24
+ <span
25
+ class={classes.root}
26
+ data-slot="root"
27
+ aria-hidden="true"
28
+ {...rest}
29
+ >
30
+ <span class={name} />
31
+ </span>
@@ -1,19 +1,209 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { ImageProps } from "../../types"
5
- import imageThemeDefault from "../../themes/image.theme"
6
-
7
- const image = scv(imageThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as ImageProps
14
-
15
- const classes = resolveClasses(image, {}, useUi("image", uiProp), className);
16
- ---
17
- <div class={classes.root} data-slot="root" {...rest}>
18
- <slot />
19
- </div>
1
+ ---
2
+ import { Image } from "astro:assets"
3
+ import { scv } from "css-variants"
4
+ import { useUi, resolveClasses } from "../../utils"
5
+ import type { ImageProps, ImageMetadataInfo } from "../../types"
6
+ import imageThemeDefault, { createImageTheme } from "../../themes/image.theme"
7
+ import { getUIConfig } from "virtual:rimelight-ui"
8
+
9
+ const uiConfig = getUIConfig()
10
+ const imageTheme = uiConfig.colors ? createImageTheme() : imageThemeDefault
11
+
12
+ const imgc = scv(imageTheme)
13
+
14
+ const {
15
+ src,
16
+ alt = "",
17
+ height,
18
+ width,
19
+ loading = "lazy",
20
+ fit = "cover",
21
+ metadata: preMetadata,
22
+ open,
23
+ ui: uiProp,
24
+ class: className,
25
+ metaSource = true,
26
+ metaFormat = true,
27
+ metaDimensions = true,
28
+ metaSize = true,
29
+ metaAlt = true,
30
+ metaDownload = true,
31
+ ...rest
32
+ } = Astro.props as ImageProps
33
+
34
+ const classes = resolveClasses(imgc, {}, useUi("image", uiProp), className)
35
+
36
+ const isMetadata = typeof src !== "string"
37
+ const imgWidth = width ?? (isMetadata ? src.width : undefined)
38
+ const imgHeight = height ?? (isMetadata ? src.height : undefined)
39
+ const imgFormat = isMetadata ? src.format : (preMetadata?.format ?? undefined)
40
+ const rawName = typeof src === "string" ? src.split("/").pop() || "image" : src.src.split("/").pop() || "image"
41
+ const fileName = rawName.split("?")[0]
42
+ const fileExtension = imgFormat?.toUpperCase() || (fileName.includes(".") ? fileName.split(".").pop()?.toUpperCase() : "IMG")
43
+ const initialSize = preMetadata?.size ?? undefined
44
+ ---
45
+
46
+ <div class={classes.root} data-slot="root" {...rest}>
47
+ <slot name="trigger">
48
+ <button
49
+ type="button"
50
+ class={classes.trigger}
51
+ data-image-trigger
52
+ >
53
+ <Image src={src} alt={alt} width={imgWidth ?? 800} height={imgHeight ?? 400} loading={loading} fit={fit} />
54
+ </button>
55
+ </slot>
56
+
57
+ <dialog
58
+ class={classes.dialog}
59
+ data-image-dialog
60
+ >
61
+ <div class="flex flex-col bg-background text-foreground max-h-[90vh]">
62
+ <div class="flex-1 min-h-0 flex items-center justify-center p-4 overflow-hidden">
63
+ <img
64
+ src={typeof src === "string" ? src : src.src}
65
+ alt={alt}
66
+ class={classes.image}
67
+ data-modal-img
68
+ />
69
+ </div>
70
+
71
+ <hr class="border-border mx-4 mb-3 shrink-0" />
72
+
73
+ <div class={classes.fileInfo}>
74
+ <div class="flex flex-col gap-xs text-sm">
75
+ {
76
+ metaSource && (
77
+ <div class="flex flex-row gap-xs items-center">
78
+ <span class="i-lucide-image size-4 shrink-0 text-muted-foreground" />
79
+ <span class="text-muted-foreground">Source:</span>
80
+ <span class="text-dimmed truncate max-w-[40vw]">{fileName}</span>
81
+ </div>
82
+ )
83
+ }
84
+ {
85
+ metaFormat && (
86
+ <div class="flex flex-row gap-xs items-center">
87
+ <span class="i-lucide-file-question-mark size-4 shrink-0 text-muted-foreground" />
88
+ <span class="text-muted-foreground">Format:</span>
89
+ <span class="text-dimmed" data-metadata-format>{fileExtension || "IMG"}</span>
90
+ </div>
91
+ )
92
+ }
93
+ {
94
+ metaDimensions && (
95
+ <div class="flex flex-row gap-xs items-center">
96
+ <span class="i-lucide-image-upscale size-4 shrink-0 text-muted-foreground" />
97
+ <span class="text-muted-foreground">Dimensions:</span>
98
+ <span class="text-dimmed">{(imgWidth || "?")} x {(imgHeight || "?")}</span>
99
+ </div>
100
+ )
101
+ }
102
+ {
103
+ metaSize && (
104
+ <div class="flex flex-row gap-xs items-center">
105
+ <span class="i-lucide-hard-drive size-4 shrink-0 text-muted-foreground" />
106
+ <span class="text-muted-foreground">Size:</span>
107
+ <span class="text-dimmed" data-metadata-size>{initialSize !== undefined ? `${initialSize} bytes` : "fetching..."}</span>
108
+ </div>
109
+ )
110
+ }
111
+ {
112
+ metaAlt && (
113
+ <div class="flex flex-row gap-xs items-center">
114
+ <span class="i-lucide-align-left size-4 shrink-0 text-muted-foreground" />
115
+ <span class="text-muted-foreground">Alt:</span>
116
+ <span class="text-dimmed truncate max-w-[30vw]" class:list={{ "italic opacity-50": !alt }}>{alt || "none"}</span>
117
+ </div>
118
+ )
119
+ }
120
+ </div>
121
+
122
+ {
123
+ metaDownload && (
124
+ <button
125
+ type="button"
126
+ class={classes.download}
127
+ data-image-download
128
+ >
129
+ <span class="i-lucide-download size-4 shrink-0" />
130
+ Download Original
131
+ </button>
132
+ )
133
+ }
134
+ </div>
135
+
136
+ <form method="dialog" class="absolute top-2 right-2">
137
+ <button
138
+ type="submit"
139
+ class={classes.closeButton}
140
+ aria-label="Close"
141
+ >
142
+ <span class="i-lucide-x size-4" />
143
+ </button>
144
+ </form>
145
+ </div>
146
+ </dialog>
147
+ </div>
148
+
149
+ <script>
150
+ const triggers = document.querySelectorAll("[data-image-trigger]")
151
+ for (const trigger of triggers) {
152
+ const parent = trigger.closest(".group\\/image") || trigger.parentElement
153
+ const dialog = parent?.querySelector("[data-image-dialog]")
154
+ if (!dialog) continue
155
+
156
+ const sizeEl = parent?.querySelector("[data-metadata-size]")
157
+ const formatEl = parent?.querySelector("[data-metadata-format]")
158
+ let fetched = false
159
+
160
+ trigger.addEventListener("click", () => {
161
+ if (!fetched) {
162
+ fetched = true
163
+ const imgEl = dialog.querySelector("[data-modal-img]")
164
+ if (imgEl) {
165
+ const src = imgEl.getAttribute("src")
166
+ if (src) {
167
+ fetch(src).then(r => r.blob()).then(blob => {
168
+ if (sizeEl) sizeEl.textContent = (blob.size / 1024).toFixed(2) + " KB"
169
+ if (formatEl && blob.type) {
170
+ const mime = blob.type.split("/").pop().toUpperCase()
171
+ if (mime && mime !== "OCTET-STREAM") formatEl.textContent = mime
172
+ }
173
+ }).catch(() => { if (sizeEl) sizeEl.textContent = "unavailable" })
174
+ }
175
+ }
176
+ }
177
+ dialog.showModal()
178
+ })
179
+
180
+ dialog.addEventListener("click", (e) => {
181
+ if (e.target === dialog) dialog.close()
182
+ })
183
+
184
+ const downloadBtn = dialog.querySelector("[data-image-download]")
185
+ if (downloadBtn) {
186
+ downloadBtn.addEventListener("click", async () => {
187
+ const img = dialog.querySelector("img")
188
+ const imgSrc = img?.getAttribute("src")
189
+ if (!imgSrc) return
190
+ try {
191
+ const response = await fetch(imgSrc)
192
+ const blob = await response.blob()
193
+ const url = URL.createObjectURL(blob)
194
+ const link = document.createElement("a")
195
+ link.href = url
196
+ const srcAttr = (trigger.querySelector("img") || {}).getAttribute("src") || ""
197
+ const name = (srcAttr.split("/").pop() || "").split("?")[0] || `image-${Date.now()}`
198
+ link.download = name
199
+ document.body.appendChild(link)
200
+ link.click()
201
+ document.body.removeChild(link)
202
+ URL.revokeObjectURL(url)
203
+ } catch (err) {
204
+ console.error("Download failed", err)
205
+ }
206
+ })
207
+ }
208
+ }
209
+ </script>
@@ -1,19 +1,23 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { InputDateProps } from "../../types"
5
- import inputDateThemeDefault from "../../themes/input-date.theme"
6
-
7
- const inputDate = scv(inputDateThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as InputDateProps
14
-
15
- const classes = resolveClasses(inputDate, {}, useUi("inputDate", 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 { InputDateProps } from "../../types"
5
+ import inputDateThemeDefault, { createInputDateTheme } from "../../themes/input-date.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const inputDateTheme = uiConfig.colors ? createInputDateTheme() : inputDateThemeDefault
10
+
11
+ const inputDate = scv(inputDateTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as InputDateProps
18
+
19
+ const classes = resolveClasses(inputDate, {}, useUi("inputDate", 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 { InputNumberProps } from "../../types"
5
- import inputNumberThemeDefault from "../../themes/input-number.theme"
6
-
7
- const inputNumber = scv(inputNumberThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as InputNumberProps
14
-
15
- const classes = resolveClasses(inputNumber, {}, useUi("inputNumber", 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 { InputNumberProps } from "../../types"
5
+ import inputNumberThemeDefault, { createInputNumberTheme } from "../../themes/input-number.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const inputNumberTheme = uiConfig.colors ? createInputNumberTheme() : inputNumberThemeDefault
10
+
11
+ const inputNumber = scv(inputNumberTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as InputNumberProps
18
+
19
+ const classes = resolveClasses(inputNumber, {}, useUi("inputNumber", 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 { InputTagsProps } from "../../types"
5
- import inputTagsThemeDefault from "../../themes/input-tags.theme"
6
-
7
- const inputTags = scv(inputTagsThemeDefault)
8
-
9
- const {
10
- ui: uiProp,
11
- class: className,
12
- ...rest
13
- } = Astro.props as InputTagsProps
14
-
15
- const classes = resolveClasses(inputTags, {}, useUi("inputTags", 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 { InputTagsProps } from "../../types"
5
+ import inputTagsThemeDefault, { createInputTagsTheme } from "../../themes/input-tags.theme"
6
+ import { getUIConfig } from "virtual:rimelight-ui"
7
+
8
+ const uiConfig = getUIConfig()
9
+ const inputTagsTheme = uiConfig.colors ? createInputTagsTheme() : inputTagsThemeDefault
10
+
11
+ const inputTags = scv(inputTagsTheme)
12
+
13
+ const {
14
+ ui: uiProp,
15
+ class: className,
16
+ ...rest
17
+ } = Astro.props as InputTagsProps
18
+
19
+ const classes = resolveClasses(inputTags, {}, useUi("inputTags", uiProp), className);
20
+ ---
21
+ <div class={classes.root} data-slot="root" {...rest}>
22
+ <slot />
19
23
  </div>