@rimelight/ui 0.0.33 → 0.0.35

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 (389) hide show
  1. package/README.md +158 -157
  2. package/package.json +100 -105
  3. package/src/components/astro/RLAAccordion.astro +94 -18
  4. package/src/components/astro/RLAAspectRatio.astro +2 -2
  5. package/src/components/astro/RLAAvatar.astro +135 -68
  6. package/src/components/astro/RLABadge.astro +4 -2
  7. package/src/components/astro/RLABanner.astro +138 -23
  8. package/src/components/astro/RLABreadcrumb.astro +13 -0
  9. package/src/components/astro/RLAButton.astro +145 -139
  10. package/src/components/astro/RLACallout.astro +112 -0
  11. package/src/components/astro/RLACard.astro +6 -5
  12. package/src/components/astro/RLACarousel.astro +104 -75
  13. package/src/components/astro/RLAChart.astro +23 -35
  14. package/src/components/astro/RLAChip.astro +11 -5
  15. package/src/components/astro/RLACollapsible.astro +4 -1
  16. package/src/components/astro/RLAColorArea.astro +432 -0
  17. package/src/components/astro/RLAColorField.astro +300 -0
  18. package/src/components/astro/RLAColorSlider.astro +413 -0
  19. package/src/components/astro/RLAConfirm.astro +13 -11
  20. package/src/components/astro/RLACopyMarkdown.astro +78 -0
  21. package/src/components/astro/RLADate.astro +30 -0
  22. package/src/components/astro/RLADrawer.astro +50 -3
  23. package/src/components/astro/RLADropdownMenu.astro +78 -51
  24. package/src/components/astro/RLAFieldGroup.astro +4 -1
  25. package/src/components/astro/RLAFileUpload.astro +114 -100
  26. package/src/components/astro/RLAFooter.astro +2 -1
  27. package/src/components/astro/RLAFormField.astro +10 -6
  28. package/src/components/astro/RLAGrid.astro +31 -39
  29. package/src/components/astro/RLAHead.astro +528 -197
  30. package/src/components/astro/RLAHeader.astro +67 -59
  31. package/src/components/astro/RLAImage.astro +274 -209
  32. package/src/components/astro/RLAInput.astro +14 -9
  33. package/src/components/astro/RLAInputMenu.astro +119 -83
  34. package/src/components/astro/RLAKbd.astro +5 -5
  35. package/src/components/astro/RLALayoutGrid.astro +395 -0
  36. package/src/components/astro/RLALink.astro +44 -23
  37. package/src/components/astro/RLALinkGroup.astro +99 -37
  38. package/src/components/astro/RLALocaleSelector.astro +130 -113
  39. package/src/components/astro/RLALogo.astro +117 -90
  40. package/src/components/astro/RLAMain.astro +8 -3
  41. package/src/components/astro/RLAMarquee.astro +9 -2
  42. package/src/components/astro/RLAModal.astro +48 -18
  43. package/src/components/astro/RLANavigationMenu.astro +381 -137
  44. package/src/components/astro/{RLADocsPackageManagers.astro → RLAPackageManagers.astro} +81 -87
  45. package/src/components/astro/RLAPageSection.astro +4 -2
  46. package/src/components/astro/RLAPagination.astro +2 -4
  47. package/src/components/astro/RLAPopover.astro +4 -3
  48. package/src/components/astro/RLAPost.astro +11 -2
  49. package/src/components/astro/RLAProgress.astro +8 -2
  50. package/src/components/astro/RLAScrollArea.astro +4 -1
  51. package/src/components/astro/RLAScrollToTop.astro +200 -172
  52. package/src/components/astro/RLASearch.astro +282 -0
  53. package/src/components/astro/RLASelect.astro +101 -64
  54. package/src/components/astro/RLASeparator.astro +11 -6
  55. package/src/components/astro/RLAShare.astro +60 -0
  56. package/src/components/astro/RLAShortcuts.astro +429 -0
  57. package/src/components/astro/RLASidebar.astro +158 -212
  58. package/src/components/astro/RLASlideover.astro +99 -4
  59. package/src/components/astro/RLASlider.astro +14 -14
  60. package/src/components/astro/RLASplitter.astro +207 -142
  61. package/src/components/astro/RLASteps.astro +118 -71
  62. package/src/components/astro/RLAStickySurface.astro +9 -2
  63. package/src/components/astro/RLASurround.astro +39 -0
  64. package/src/components/astro/RLATable.astro +4 -1
  65. package/src/components/astro/RLATableOfContents.astro +109 -23
  66. package/src/components/astro/RLATabs.astro +147 -133
  67. package/src/components/astro/RLATextarea.astro +4 -1
  68. package/src/components/astro/RLAThemeSelector.astro +105 -76
  69. package/src/components/astro/RLAToast.astro +35 -21
  70. package/src/components/vue/RLVBanner.vue +230 -0
  71. package/src/components/vue/RLVButton.vue +3 -2
  72. package/src/components/vue/RLVCheckbox.vue +70 -68
  73. package/src/components/vue/RLVFooter.vue +3 -2
  74. package/src/components/vue/RLVForm.vue +44 -44
  75. package/src/components/vue/RLVFormField.vue +58 -58
  76. package/src/components/vue/RLVHeader.vue +3 -2
  77. package/src/components/vue/RLVIcon.vue +4 -2
  78. package/src/components/vue/RLVInput.vue +94 -93
  79. package/src/components/vue/RLVLogo.vue +25 -3
  80. package/src/components/vue/RLVPlaceholder.vue +3 -2
  81. package/src/components/vue/RLVPost.vue +69 -63
  82. package/src/components/vue/RLVPosts.vue +21 -21
  83. package/src/components/vue/RLVProgress.vue +60 -0
  84. package/src/components/vue/RLVScrollToTop.vue +65 -52
  85. package/src/components/vue/RLVSection.vue +14 -13
  86. package/src/components/vue/RLVToast.vue +81 -68
  87. package/src/components/vue/RLVToaster.vue +29 -29
  88. package/src/composables/index.ts +4 -3
  89. package/src/composables/useHeaderStore.ts +14 -14
  90. package/src/composables/useScrollToTop.ts +62 -62
  91. package/src/composables/useShortcuts.ts +11 -0
  92. package/src/composables/useToast.ts +43 -42
  93. package/src/config/index.ts +1 -0
  94. package/src/config/security.ts +227 -0
  95. package/src/config/site.config.ts +1 -0
  96. package/src/docs/components/ApiChangelog.astro +147 -0
  97. package/src/{plugins/starlightDocsApi → docs}/components/ApiEmits.astro +4 -4
  98. package/src/{plugins/starlightDocsApi → docs}/components/ApiProps.astro +4 -4
  99. package/src/{plugins/starlightDocsApi → docs}/components/ApiSlots.astro +4 -4
  100. package/src/docs/components/ApiTheme.astro +100 -0
  101. package/src/docs/extractAll.ts +94 -0
  102. package/src/docs/extractors/extractAstro.ts +69 -0
  103. package/src/docs/extractors/extractTheme.ts +56 -0
  104. package/src/{plugins/starlightDocsApi/extract-vue.ts → docs/extractors/extractVue.ts} +164 -15
  105. package/src/{plugins/starlightDocsApi → docs}/utils.ts +1 -2
  106. package/src/env.d.ts +0 -12
  107. package/src/integrations/ui.ts +215 -199
  108. package/src/middleware/security.ts +145 -29
  109. package/src/presets/defaults.ts +297 -297
  110. package/src/presets/index.ts +508 -637
  111. package/src/styles/index.css +158 -160
  112. package/src/themes/3d-hover.theme.ts +13 -13
  113. package/src/themes/accordion.theme.ts +39 -13
  114. package/src/themes/app.theme.ts +13 -13
  115. package/src/themes/aspect-ratio.theme.ts +1 -1
  116. package/src/themes/audio.theme.ts +13 -13
  117. package/src/themes/avatar-group.theme.ts +1 -1
  118. package/src/themes/avatar.theme.ts +84 -84
  119. package/src/themes/badge.theme.ts +168 -163
  120. package/src/themes/banner.theme.ts +49 -13
  121. package/src/themes/breadcrumb.theme.ts +1 -1
  122. package/src/themes/browser-mockup.theme.ts +13 -13
  123. package/src/themes/button.theme.ts +223 -202
  124. package/src/themes/calendar.theme.ts +13 -13
  125. package/src/themes/{alert.theme.ts → callout.theme.ts} +104 -125
  126. package/src/themes/card.theme.ts +50 -42
  127. package/src/themes/carousel.theme.ts +1 -1
  128. package/src/themes/chart.theme.ts +22 -22
  129. package/src/themes/chat-message.theme.ts +13 -13
  130. package/src/themes/chat-messages.theme.ts +13 -13
  131. package/src/themes/chat-palette.theme.ts +13 -13
  132. package/src/themes/chat-prompt-submit.theme.ts +13 -13
  133. package/src/themes/chat-prompt.theme.ts +13 -13
  134. package/src/themes/chat-reasoning.theme.ts +13 -13
  135. package/src/themes/chat-shimmer.theme.ts +13 -13
  136. package/src/themes/chat-tool.theme.ts +13 -13
  137. package/src/themes/chat.theme.ts +13 -13
  138. package/src/themes/checkbox.theme.ts +49 -50
  139. package/src/themes/chip.theme.ts +73 -74
  140. package/src/themes/color-area.theme.ts +33 -0
  141. package/src/themes/color-field.theme.ts +32 -0
  142. package/src/themes/color-picker.theme.ts +13 -13
  143. package/src/themes/color-slider.theme.ts +34 -0
  144. package/src/themes/command-palette.theme.ts +13 -13
  145. package/src/themes/compare.theme.ts +13 -13
  146. package/src/themes/confirm.theme.ts +48 -48
  147. package/src/themes/container.theme.ts +13 -13
  148. package/src/themes/context-menu.theme.ts +13 -13
  149. package/src/themes/dashboard-group.theme.ts +13 -13
  150. package/src/themes/dashboard-navbar.theme.ts +13 -13
  151. package/src/themes/dashboard-panel.theme.ts +13 -13
  152. package/src/themes/dashboard-resize-handle.theme.ts +13 -13
  153. package/src/themes/dashboard-search-button.theme.ts +13 -13
  154. package/src/themes/dashboard-search.theme.ts +13 -13
  155. package/src/themes/dashboard-sidebar-collapse.theme.ts +13 -13
  156. package/src/themes/dashboard-sidebar-toggle.theme.ts +13 -13
  157. package/src/themes/dashboard-sidebar.theme.ts +13 -13
  158. package/src/themes/dashboard-toolbar.theme.ts +13 -13
  159. package/src/themes/dock.theme.ts +13 -13
  160. package/src/themes/drawer.theme.ts +61 -61
  161. package/src/themes/dropdown-menu.theme.ts +29 -29
  162. package/src/themes/editor.theme.ts +13 -13
  163. package/src/themes/empty.theme.ts +13 -13
  164. package/src/themes/error.theme.ts +13 -13
  165. package/src/themes/field-group.theme.ts +24 -24
  166. package/src/themes/fieldset.theme.ts +13 -13
  167. package/src/themes/floating-action.theme.ts +13 -13
  168. package/src/themes/footer.theme.ts +30 -30
  169. package/src/themes/form.theme.ts +13 -13
  170. package/src/themes/gallery.theme.ts +13 -13
  171. package/src/themes/grid.theme.ts +38 -0
  172. package/src/themes/head.theme.ts +13 -13
  173. package/src/themes/header.theme.ts +46 -46
  174. package/src/themes/hover-card.theme.ts +1 -1
  175. package/src/themes/icon.theme.ts +23 -23
  176. package/src/themes/image.theme.ts +33 -19
  177. package/src/themes/input-date.theme.ts +13 -13
  178. package/src/themes/input-menu.theme.ts +35 -35
  179. package/src/themes/input-number.theme.ts +13 -13
  180. package/src/themes/input-tags.theme.ts +13 -13
  181. package/src/themes/input-time.theme.ts +13 -13
  182. package/src/themes/input.theme.ts +48 -42
  183. package/src/themes/kbd.theme.ts +94 -89
  184. package/src/themes/knob.theme.ts +13 -13
  185. package/src/themes/label.theme.ts +1 -1
  186. package/src/themes/layout-grid.theme.ts +16 -0
  187. package/src/themes/link-group.theme.ts +28 -32
  188. package/src/themes/link.theme.ts +13 -13
  189. package/src/themes/listbox.theme.ts +13 -13
  190. package/src/themes/locale-selector.theme.ts +49 -49
  191. package/src/themes/logo.theme.ts +13 -13
  192. package/src/themes/main.theme.ts +13 -13
  193. package/src/themes/marquee.theme.ts +1 -1
  194. package/src/themes/meter.theme.ts +13 -13
  195. package/src/themes/modal.theme.ts +1 -1
  196. package/src/themes/navigation-menu.theme.ts +44 -27
  197. package/src/themes/page-aside.theme.ts +13 -13
  198. package/src/themes/page-body.theme.ts +13 -13
  199. package/src/themes/page-header.theme.ts +13 -13
  200. package/src/themes/page-section.theme.ts +189 -187
  201. package/src/themes/page.theme.ts +13 -13
  202. package/src/themes/pagination.theme.ts +1 -1
  203. package/src/themes/password.theme.ts +13 -13
  204. package/src/themes/phone-mockup.theme.ts +13 -13
  205. package/src/themes/pin-input.theme.ts +1 -1
  206. package/src/themes/placeholder.theme.ts +15 -15
  207. package/src/themes/popover.theme.ts +1 -1
  208. package/src/themes/post.theme.ts +53 -33
  209. package/src/themes/pricing-plan.theme.ts +13 -13
  210. package/src/themes/pricing-table.theme.ts +13 -13
  211. package/src/themes/progress.theme.ts +37 -38
  212. package/src/themes/prose.theme.ts +13 -13
  213. package/src/themes/qr-code.theme.ts +13 -13
  214. package/src/themes/quote.theme.ts +13 -13
  215. package/src/themes/radio-group.theme.ts +13 -13
  216. package/src/themes/rating.theme.ts +13 -13
  217. package/src/themes/scroll-area.theme.ts +26 -26
  218. package/src/themes/scroll-to-top.theme.ts +51 -52
  219. package/src/themes/search.theme.ts +64 -0
  220. package/src/themes/select.theme.ts +29 -29
  221. package/src/themes/separator.theme.ts +147 -147
  222. package/src/themes/sidebar.theme.ts +38 -38
  223. package/src/themes/skeleton.theme.ts +21 -21
  224. package/src/themes/slideover.theme.ts +5 -5
  225. package/src/themes/slider.theme.ts +35 -36
  226. package/src/themes/speed-dial.theme.ts +13 -13
  227. package/src/themes/spinner.theme.ts +33 -34
  228. package/src/themes/splitter.theme.ts +23 -23
  229. package/src/themes/spoiler.theme.ts +13 -13
  230. package/src/themes/stepper.theme.ts +13 -13
  231. package/src/themes/{megamenu.theme.ts → steps.theme.ts} +13 -13
  232. package/src/themes/sticky-surface.theme.ts +1 -1
  233. package/src/themes/switch.theme.ts +66 -67
  234. package/src/themes/table-of-contents.theme.ts +67 -48
  235. package/src/themes/tabs.theme.ts +52 -52
  236. package/src/themes/textarea.theme.ts +27 -27
  237. package/src/themes/theme-selector.theme.ts +15 -15
  238. package/src/themes/timeline.theme.ts +18 -13
  239. package/src/themes/toast.theme.ts +31 -31
  240. package/src/themes/tooltip.theme.ts +28 -28
  241. package/src/themes/tour.theme.ts +13 -13
  242. package/src/themes/tree.theme.ts +13 -13
  243. package/src/themes/user.theme.ts +13 -13
  244. package/src/themes/video.theme.ts +17 -17
  245. package/src/themes/watermark.theme.ts +13 -13
  246. package/src/themes/window-mockup.theme.ts +13 -13
  247. package/src/types/components/3d-hover.ts +11 -11
  248. package/src/types/components/accordion.ts +35 -2
  249. package/src/types/components/app.ts +11 -11
  250. package/src/types/components/audio.ts +11 -11
  251. package/src/types/components/avatar-group.ts +11 -11
  252. package/src/types/components/avatar.ts +76 -60
  253. package/src/types/components/badge.ts +2 -2
  254. package/src/types/components/banner.ts +53 -11
  255. package/src/types/components/browser-mockup.ts +11 -11
  256. package/src/types/components/button.ts +73 -81
  257. package/src/types/components/calendar.ts +11 -11
  258. package/src/types/components/{alert.ts → callout.ts} +8 -8
  259. package/src/types/components/changelog.ts +11 -11
  260. package/src/types/components/chart.ts +2 -1
  261. package/src/types/components/chat-message.ts +11 -11
  262. package/src/types/components/chat-messages.ts +11 -11
  263. package/src/types/components/chat-palette.ts +11 -11
  264. package/src/types/components/chat-prompt-submit.ts +11 -11
  265. package/src/types/components/chat-prompt.ts +11 -11
  266. package/src/types/components/chat-reasoning.ts +11 -11
  267. package/src/types/components/chat-shimmer.ts +11 -11
  268. package/src/types/components/chat-tool.ts +11 -11
  269. package/src/types/components/chat.ts +11 -11
  270. package/src/types/components/checkbox.ts +2 -2
  271. package/src/types/components/chip.ts +17 -17
  272. package/src/types/components/collapsible.ts +2 -1
  273. package/src/types/components/color-area.ts +19 -0
  274. package/src/types/components/color-field.ts +21 -0
  275. package/src/types/components/color-picker.ts +11 -11
  276. package/src/types/components/color-slider.ts +20 -0
  277. package/src/types/components/command-palette.ts +11 -11
  278. package/src/types/components/compare.ts +11 -11
  279. package/src/types/components/container.ts +17 -17
  280. package/src/types/components/context-menu.ts +11 -11
  281. package/src/types/components/dashboard-group.ts +11 -11
  282. package/src/types/components/dashboard-navbar.ts +11 -11
  283. package/src/types/components/dashboard-panel.ts +11 -11
  284. package/src/types/components/dashboard-resize-handle.ts +11 -11
  285. package/src/types/components/dashboard-search-button.ts +11 -11
  286. package/src/types/components/dashboard-search.ts +11 -11
  287. package/src/types/components/dashboard-sidebar-collapse.ts +11 -11
  288. package/src/types/components/dashboard-sidebar-toggle.ts +11 -11
  289. package/src/types/components/dashboard-sidebar.ts +11 -11
  290. package/src/types/components/dashboard-toolbar.ts +11 -11
  291. package/src/types/components/dock.ts +11 -11
  292. package/src/types/components/dropdown-menu.ts +2 -1
  293. package/src/types/components/editor.ts +11 -11
  294. package/src/types/components/empty.ts +11 -11
  295. package/src/types/components/error.ts +11 -11
  296. package/src/types/components/fieldset.ts +11 -11
  297. package/src/types/components/file-upload.ts +2 -1
  298. package/src/types/components/floating-action.ts +11 -11
  299. package/src/types/components/form.ts +19 -19
  300. package/src/types/components/gallery.ts +11 -11
  301. package/src/types/components/grid.ts +23 -0
  302. package/src/types/components/icon.ts +19 -19
  303. package/src/types/components/image.ts +32 -28
  304. package/src/types/components/input-date.ts +11 -11
  305. package/src/types/components/input-menu.ts +44 -43
  306. package/src/types/components/input-number.ts +11 -11
  307. package/src/types/components/input-pin.ts +36 -35
  308. package/src/types/components/input-tags.ts +11 -11
  309. package/src/types/components/input-time.ts +11 -11
  310. package/src/types/components/input.ts +6 -2
  311. package/src/types/components/knob.ts +11 -11
  312. package/src/types/components/layout-grid.ts +145 -0
  313. package/src/types/components/link-group.ts +47 -23
  314. package/src/types/components/link.ts +19 -0
  315. package/src/types/components/listbox.ts +11 -11
  316. package/src/types/components/locale-selector.ts +33 -33
  317. package/src/types/components/logo.ts +32 -31
  318. package/src/types/components/main.ts +17 -17
  319. package/src/types/components/meter.ts +11 -11
  320. package/src/types/components/modal.ts +39 -39
  321. package/src/types/components/navigation-menu.ts +59 -54
  322. package/src/types/components/page-aside.ts +11 -11
  323. package/src/types/components/page-body.ts +11 -11
  324. package/src/types/components/page-header.ts +11 -11
  325. package/src/types/components/page.ts +11 -11
  326. package/src/types/components/password.ts +11 -11
  327. package/src/types/components/phone-mockup.ts +5 -5
  328. package/src/types/components/pin-input.ts +11 -11
  329. package/src/types/components/popover.ts +23 -23
  330. package/src/types/components/post.ts +47 -35
  331. package/src/types/components/pricing-plan.ts +11 -11
  332. package/src/types/components/pricing-table.ts +11 -11
  333. package/src/types/components/progress.ts +33 -33
  334. package/src/types/components/prose.ts +11 -11
  335. package/src/types/components/qr-code.ts +11 -11
  336. package/src/types/components/radio-group.ts +11 -11
  337. package/src/types/components/rating.ts +11 -11
  338. package/src/types/components/scroll-area.ts +23 -23
  339. package/src/types/components/scroll-to-top.ts +2 -2
  340. package/src/types/components/search.ts +29 -0
  341. package/src/types/components/select.ts +2 -1
  342. package/src/types/components/separator.ts +19 -19
  343. package/src/types/components/sidebar.ts +83 -72
  344. package/src/types/components/slideover.ts +31 -31
  345. package/src/types/components/slider.ts +2 -2
  346. package/src/types/components/speed-dial.ts +11 -11
  347. package/src/types/components/spinner.ts +25 -25
  348. package/src/types/components/splitter.ts +19 -19
  349. package/src/types/components/spoiler.ts +11 -11
  350. package/src/types/components/stepper.ts +11 -11
  351. package/src/types/components/{megamenu.ts → steps.ts} +17 -11
  352. package/src/types/components/sticky-surface.ts +19 -19
  353. package/src/types/components/switch.ts +41 -41
  354. package/src/types/components/table-of-contents.ts +39 -17
  355. package/src/types/components/tabs.ts +2 -1
  356. package/src/types/components/textarea.ts +2 -1
  357. package/src/types/components/theme-selector.ts +15 -15
  358. package/src/types/components/timeline.ts +11 -11
  359. package/src/types/components/toast.ts +6 -1
  360. package/src/types/components/tooltip.ts +23 -23
  361. package/src/types/components/tour.ts +11 -11
  362. package/src/types/components/tree.ts +11 -11
  363. package/src/types/components/user.ts +11 -11
  364. package/src/types/components/watermark.ts +11 -11
  365. package/src/types/components/window-mockup.ts +11 -11
  366. package/src/types/docs.ts +40 -0
  367. package/src/types/index.ts +151 -1
  368. package/src/types/theme.ts +11 -1
  369. package/src/utils/color.ts +165 -0
  370. package/src/utils/docs.ts +365 -189
  371. package/src/utils/headerStack.ts +115 -95
  372. package/src/utils/index.ts +7 -5
  373. package/src/utils/shortcuts.ts +322 -0
  374. package/src/components/TableOfContents.astro +0 -107
  375. package/src/components/astro/RLAAlert.astro +0 -93
  376. package/src/components/astro/RLABlogPost.astro +0 -7
  377. package/src/components/astro/RLABlogPosts.astro +0 -9
  378. package/src/components/astro/RLAChangelog.astro +0 -23
  379. package/src/components/astro/RLAMegamenu.astro +0 -23
  380. package/src/components/astro/RLAPosts.astro +0 -23
  381. package/src/plugins/index.ts +0 -2
  382. package/src/plugins/starlightDocsApi/components/ApiTheme.astro +0 -27
  383. package/src/plugins/starlightDocsApi/index.ts +0 -272
  384. package/src/styles/prism.css +0 -42
  385. package/src/themes/changelog.theme.ts +0 -13
  386. package/src/themes/posts.theme.ts +0 -13
  387. package/src/types/components/index.ts +0 -135
  388. package/src/types/components/posts.ts +0 -11
  389. /package/src/{plugins/starlightDocsApi → docs}/types.ts +0 -0
@@ -1,93 +0,0 @@
1
- ---
2
- import { scv, cx } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { AlertProps } from "../../types"
5
- import alertThemeDefault, { createAlertTheme } from "../../themes/alert.theme"
6
- import { getUIConfig } from "virtual:rimelight-ui"
7
- import RLAAvatar from "./RLAAvatar.astro"
8
-
9
- const uiConfig = getUIConfig()
10
- const alertTheme = uiConfig.colors ? createAlertTheme(uiConfig.colors) : alertThemeDefault
11
- const alert = scv(alertTheme)
12
-
13
- const {
14
- variant = "solid",
15
- color = "primary",
16
- title,
17
- description,
18
- icon,
19
- avatar,
20
- actions,
21
- close,
22
- orientation = "horizontal",
23
- theme,
24
- ui: uiProp,
25
- class: className,
26
- ...rest
27
- } = Astro.props as AlertProps
28
-
29
- const isIcon = !!(icon || Astro.slots.has("icon"))
30
-
31
- const classes = resolveClasses(alert, {
32
- variant,
33
- color,
34
- orientation,
35
- title: !!(title || Astro.slots.has("title")),
36
- theme
37
- }, useUi("alert", uiProp), className)
38
- ---
39
- <div
40
- class={classes.root}
41
- data-slot="root"
42
- role="alert"
43
- {...rest}
44
- >
45
- <slot name="icon">
46
- {icon && (
47
- <span class={classes.icon} data-slot="icon">
48
- <span class={cx(icon)} aria-hidden="true" />
49
- </span>
50
- )}
51
- </slot>
52
-
53
- <slot name="avatar" {...{ ui: classes }}>
54
- {avatar && (
55
- <RLAAvatar
56
- {...(typeof avatar === 'string' ? { src: avatar } : avatar)}
57
- size={classes.avatarSize as any}
58
- class={classes.avatar}
59
- data-slot="avatar"
60
- />
61
- )}
62
- </slot>
63
-
64
- <div class={classes.wrapper} data-slot="wrapper">
65
- {(title || Astro.slots.has("title")) && (
66
- <h5 class={classes.title} data-slot="title">
67
- {title}
68
- <slot name="title" />
69
- </h5>
70
- )}
71
-
72
- {(description || Astro.slots.has("default")) && (
73
- <div class={classes.description} data-slot="description">
74
- {description}
75
- <slot />
76
- </div>
77
- )}
78
-
79
- {(actions || Astro.slots.has("actions")) && (
80
- <div class={classes.actions} data-slot="actions">
81
- <slot name="actions" />
82
- </div>
83
- )}
84
- </div>
85
-
86
- <slot name="close" {...{ ui: classes }}>
87
- {close && (
88
- <button class={classes.close} data-slot="close">
89
- <span class="i-lucide-x size-4" />
90
- </button>
91
- )}
92
- </slot>
93
- </div>
@@ -1,7 +0,0 @@
1
- ---
2
- import RLAPost from "./RLAPost.astro"
3
- import type { PostProps } from "../../types"
4
-
5
- const props = Astro.props as PostProps
6
- ---
7
- <RLAPost {...props} />
@@ -1,9 +0,0 @@
1
- ---
2
- import RLAPosts from "./RLAPosts.astro"
3
- import type { PostsProps } from "../../types"
4
-
5
- const props = Astro.props as PostsProps
6
- ---
7
- <RLAPosts {...props}>
8
- <slot />
9
- </RLAPosts>
@@ -1,23 +0,0 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { ChangelogProps } from "../../types"
5
- import changelogThemeDefault, { createChangelogTheme } from "../../themes/changelog.theme"
6
- import { getUIConfig } from "virtual:rimelight-ui"
7
-
8
- const uiConfig = getUIConfig()
9
- const changelogTheme = uiConfig.colors ? createChangelogTheme() : changelogThemeDefault
10
-
11
- const changelog = scv(changelogTheme)
12
-
13
- const {
14
- ui: uiProp,
15
- class: className,
16
- ...rest
17
- } = Astro.props as ChangelogProps
18
-
19
- const classes = resolveClasses(changelog, {}, useUi("changelog", uiProp), className);
20
- ---
21
- <div class={classes.root} data-slot="root" {...rest}>
22
- <slot />
23
- </div>
@@ -1,23 +0,0 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { MegamenuProps } from "../../types"
5
- import megamenuThemeDefault, { createMegamenuTheme } from "../../themes/megamenu.theme"
6
- import { getUIConfig } from "virtual:rimelight-ui"
7
-
8
- const uiConfig = getUIConfig()
9
- const megamenuTheme = uiConfig.colors ? createMegamenuTheme() : megamenuThemeDefault
10
-
11
- const megamenu = scv(megamenuTheme)
12
-
13
- const {
14
- ui: uiProp,
15
- class: className,
16
- ...rest
17
- } = Astro.props as MegamenuProps
18
-
19
- const classes = resolveClasses(megamenu, {}, useUi("megamenu", uiProp), className);
20
- ---
21
- <div class={classes.root} data-slot="root" {...rest}>
22
- <slot />
23
- </div>
@@ -1,23 +0,0 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi, resolveClasses } from "../../utils"
4
- import type { PostsProps } from "../../types"
5
- import postsThemeDefault, { createPostsTheme } from "../../themes/posts.theme"
6
- import { getUIConfig } from "virtual:rimelight-ui"
7
-
8
- const uiConfig = getUIConfig()
9
- const postsTheme = uiConfig.colors ? createPostsTheme() : postsThemeDefault
10
-
11
- const posts = scv(postsTheme)
12
-
13
- const {
14
- ui: uiProp,
15
- class: className,
16
- ...rest
17
- } = Astro.props as PostsProps
18
-
19
- const classes = resolveClasses(posts, {}, useUi("posts", uiProp), className);
20
- ---
21
- <div class={classes.root} data-slot="root" {...rest}>
22
- <slot />
23
- </div>
@@ -1,2 +0,0 @@
1
- export { default as starlightDocsApi } from "./starlightDocsApi"
2
- export type { StarlightDocsApiConfig } from "./starlightDocsApi"
@@ -1,27 +0,0 @@
1
- ---
2
- import type { ComponentMetaMap } from "../types"
3
- import { generateThemeCode } from "../utils"
4
- import meta from "virtual:rimelight-ui-docs-meta"
5
-
6
- interface Props {
7
- component: string
8
- }
9
-
10
- const { component } = Astro.props
11
-
12
- const allMeta = meta as unknown as ComponentMetaMap
13
- const compMeta = allMeta[component]
14
-
15
- const theme = compMeta?.theme ?? null
16
- const themeCode = theme ? generateThemeCode(component, theme) : null
17
- ---
18
-
19
- {themeCode ? (
20
- <div class="expressive-code">
21
- <figure class="frame">
22
- <pre class="language-ts overflow-x-auto"><code class="language-ts">{themeCode}</code></pre>
23
- </figure>
24
- </div>
25
- ) : (
26
- <p class="text-sm italic text-gray-500">No theme data available.</p>
27
- )}
@@ -1,272 +0,0 @@
1
- import type { StarlightPlugin } from "@astrojs/starlight/types"
2
- import virtual from "vite-plugin-virtual"
3
- import path from "node:path"
4
- import { fileURLToPath } from "node:url"
5
- import { readFileSync, existsSync, readdirSync } from "node:fs"
6
- import ts from "typescript"
7
- import type { ComponentMeta, PropMeta, SlotMeta, EmitMeta, ThemeMeta } from "./types"
8
- import { extractVueMetaDirect } from "./extract-vue"
9
-
10
- const pathDirname = path.dirname(fileURLToPath(import.meta.url))
11
- const uiRoot = path.resolve(pathDirname, "..", "..", "..")
12
-
13
- function pascalToKebab(name: string): string {
14
- return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase()
15
- }
16
-
17
- function extractAstroPropsFromInterface(sourceFile: ts.SourceFile): PropMeta[] {
18
- const props: PropMeta[] = []
19
-
20
- function visit(node: ts.Node) {
21
- if (
22
- (ts.isInterfaceDeclaration(node) || ts.isTypeAliasDeclaration(node)) &&
23
- node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)
24
- ) {
25
- const name = node.name.text
26
- if (name.endsWith("Props") || name === "Props") {
27
- if (ts.isInterfaceDeclaration(node)) {
28
- for (const member of node.members) {
29
- if (ts.isPropertySignature(member) && member.name && ts.isIdentifier(member.name)) {
30
- const propName = member.name.text
31
- if (propName === "class" || propName.startsWith("data-")) continue
32
- const type = member.type ? member.type.getText().replace(/^[^:]+:\s*/, "") : "unknown"
33
- const isOptional = member.questionToken !== undefined
34
- props.push({ name: propName, type, required: !isOptional, description: "" })
35
- }
36
- }
37
- } else if (ts.isTypeAliasDeclaration(node) && ts.isTypeLiteralNode(node.type)) {
38
- for (const member of node.type.members) {
39
- if (ts.isPropertySignature(member) && member.name && ts.isIdentifier(member.name)) {
40
- const propName = member.name.text
41
- if (propName === "class" || propName.startsWith("data-")) continue
42
- const type = member.type ? member.type.getText().replace(/^[^:]+:\s*/, "") : "unknown"
43
- const isOptional = member.questionToken !== undefined
44
- props.push({ name: propName, type, required: !isOptional, description: "" })
45
- }
46
- }
47
- }
48
- }
49
- }
50
- ts.forEachChild(node, visit)
51
- }
52
-
53
- visit(sourceFile)
54
- return props
55
- }
56
-
57
- function extractAstroMeta(filePath: string): { props: PropMeta[]; slots: SlotMeta[] } {
58
- const content = readFileSync(filePath, "utf-8")
59
- const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/)
60
- if (!frontmatterMatch) return { props: [], slots: [] }
61
-
62
- const frontmatter = frontmatterMatch[1]
63
- const sourceFile = ts.createSourceFile(
64
- "component.ts",
65
- frontmatter ?? "",
66
- ts.ScriptTarget.Latest,
67
- true,
68
- ts.ScriptKind.TS
69
- )
70
-
71
- const props = extractAstroPropsFromInterface(sourceFile)
72
-
73
- const slots: SlotMeta[] = []
74
- const slotMatches = content.matchAll(/<slot(?:\s+name=["']([^"']+)["'])?/g)
75
- for (const match of slotMatches) {
76
- slots.push({ name: match[1] ?? "default", bindings: {}, description: "" })
77
- }
78
- if (!slots.length) slots.push({ name: "default", bindings: {}, description: "" })
79
-
80
- return { props, slots }
81
- }
82
-
83
- function safeParse(code: string): unknown {
84
- try {
85
- const normalized = code
86
- .replace(/'/g, '"')
87
- .replace(/,\s*\}/g, "}")
88
- .replace(/,\s*\]/g, "]")
89
- return JSON.parse(normalized)
90
- } catch {
91
- return {}
92
- }
93
- }
94
-
95
- function isStringOrArray(value: unknown): value is string | string[] {
96
- return typeof value === "string" || Array.isArray(value)
97
- }
98
-
99
- function isStringRecord(value: unknown): value is Record<string, string | string[]> {
100
- if (typeof value !== "object" || value === null) return false
101
- return Object.values(value).every(isStringOrArray)
102
- }
103
-
104
- function isVariantRecord(
105
- value: unknown
106
- ): value is Record<string, Record<string, Record<string, string | string[]>>> {
107
- if (typeof value !== "object" || value === null) return false
108
- return Object.values(value).every(
109
- (v) => typeof v === "object" && v !== null && Object.values(v).every(isStringRecord)
110
- )
111
- }
112
-
113
- function isCompoundArray(value: unknown): value is Record<string, unknown>[] {
114
- return Array.isArray(value) && value.every((v) => typeof v === "object" && v !== null)
115
- }
116
-
117
- function isDefaultVariants(value: unknown): value is Record<string, unknown> {
118
- return typeof value === "object" && value !== null
119
- }
120
-
121
- function extractThemeMeta(componentName: string, themesDir: string): ThemeMeta | null {
122
- if (!existsSync(themesDir)) return null
123
-
124
- const themeFiles = readdirSync(themesDir).filter((f) => f.endsWith(".theme.ts"))
125
- let themePath: string | null = null
126
- for (const file of themeFiles) {
127
- const baseName = file.replace(".theme.ts", "")
128
- if (baseName === componentName.toLowerCase()) {
129
- themePath = path.join(themesDir, file)
130
- break
131
- }
132
- }
133
-
134
- if (!themePath || !existsSync(themePath)) return null
135
-
136
- const content = readFileSync(themePath, "utf-8")
137
- const slotsMatch = content.match(/slots:\s*\[([^\]]*)\]/)
138
- const baseMatch = content.match(/base:\s*(\{[\s\S]*?\n[ \t]*\})/)
139
- const variantsMatch = content.match(/variants:\s*(\{[\s\S]*?\n[ \t]*\})/)
140
- const compoundMatch = content.match(/compoundVariants:\s*(\[[\s\S]*?\n[ \t]*\])/)
141
- const defaultVariantsMatch = content.match(/defaultVariants:\s*(\{[\s\S]*?\n[ \t]*\})/)
142
-
143
- const slots = slotsMatch
144
- ? slotsMatch[1]!
145
- .split(",")
146
- .map((s) => s.trim().replace(/["']/g, ""))
147
- .filter(Boolean)
148
- : []
149
-
150
- const parsedBase = baseMatch ? safeParse(baseMatch[1]!) : {}
151
- const parsedVariants = variantsMatch ? safeParse(variantsMatch[1]!) : {}
152
- const parsedCompound = compoundMatch ? safeParse(compoundMatch[1]!) : []
153
- const parsedDefaults = defaultVariantsMatch ? safeParse(defaultVariantsMatch[1]!) : {}
154
-
155
- return {
156
- slots,
157
- base: isStringRecord(parsedBase) ? parsedBase : {},
158
- variants: isVariantRecord(parsedVariants) ? parsedVariants : {},
159
- compoundVariants: isCompoundArray(parsedCompound) ? parsedCompound : [],
160
- defaultVariants: isDefaultVariants(parsedDefaults) ? parsedDefaults : {}
161
- }
162
- }
163
-
164
- function getComponentNameFromFilename(filename: string): string {
165
- return filename.replace(/^(RLA|RLV)/, "").replace(/\.(astro|vue)$/, "")
166
- }
167
-
168
- function extractAllMeta(): Record<string, ComponentMeta> {
169
- const componentsDir = path.join(uiRoot, "src", "components")
170
- const themesDir = path.join(uiRoot, "src", "themes")
171
-
172
- const vueDir = path.join(componentsDir, "vue")
173
- const astroDir = path.join(componentsDir, "astro")
174
-
175
- const vueFiles = existsSync(vueDir)
176
- ? readdirSync(vueDir).filter((f: string) => f.endsWith(".vue"))
177
- : []
178
- const astroFiles = existsSync(astroDir)
179
- ? readdirSync(astroDir).filter((f: string) => f.endsWith(".astro") && f !== "Head.astro")
180
- : []
181
-
182
- const vueComponents = new Map<string, string>()
183
- const astroComponents = new Map<string, string>()
184
-
185
- for (const f of vueFiles) vueComponents.set(getComponentNameFromFilename(f), f)
186
- for (const f of astroFiles) astroComponents.set(getComponentNameFromFilename(f), f)
187
-
188
- const allNames = new Set([...vueComponents.keys(), ...astroComponents.keys()])
189
- const result: Record<string, ComponentMeta> = {}
190
-
191
- for (const name of [...allNames].toSorted()) {
192
- const vueFile = vueComponents.get(name)
193
- const astroFile = astroComponents.get(name)
194
-
195
- let props: PropMeta[] = []
196
- let slots: SlotMeta[] = []
197
- let emits: EmitMeta[] = []
198
- const frameworks: ("astro" | "vue")[] = []
199
-
200
- if (vueFile) {
201
- frameworks.push("vue")
202
- try {
203
- const vueMeta = extractVueMetaDirect(path.join(vueDir, vueFile))
204
- props = vueMeta.props
205
- slots = vueMeta.slots
206
- emits = vueMeta.emits
207
- } catch (err) {
208
- console.warn(`[starlightDocsApi] Failed to extract Vue meta for ${vueFile}:`, err)
209
- }
210
- }
211
-
212
- if (astroFile) {
213
- frameworks.push("astro")
214
- if (!vueFile) {
215
- try {
216
- const astroMeta = extractAstroMeta(path.join(astroDir, astroFile))
217
- props = astroMeta.props
218
- slots = astroMeta.slots
219
- } catch (err) {
220
- console.warn(`[starlightDocsApi] Failed to extract Astro meta for ${astroFile}:`, err)
221
- }
222
- }
223
- }
224
-
225
- const theme = extractThemeMeta(name, themesDir)
226
-
227
- result[pascalToKebab(name)] = {
228
- name,
229
- astroComponent: astroFile ?? null,
230
- vueComponent: vueFile ?? null,
231
- frameworks,
232
- props,
233
- slots,
234
- emits,
235
- theme
236
- }
237
- }
238
-
239
- return result
240
- }
241
-
242
- export interface StarlightDocsApiConfig {}
243
-
244
- export default function starlightDocsApi(_config?: StarlightDocsApiConfig): StarlightPlugin {
245
- return {
246
- name: "rimelight-ui-starlight-docs-api",
247
- hooks: {
248
- "config:setup"({ addIntegration, logger }) {
249
- logger.info("Initializing @rimelight/ui docs API")
250
-
251
- const meta = extractAllMeta()
252
-
253
- addIntegration({
254
- name: "rimelight-ui-starlight-docs-api-integration",
255
- hooks: {
256
- "astro:config:setup": ({ updateConfig }) => {
257
- updateConfig({
258
- vite: {
259
- plugins: [
260
- virtual({
261
- "virtual:rimelight-ui-docs-meta": `export default ${JSON.stringify(meta)}`
262
- })
263
- ]
264
- }
265
- } as Record<string, unknown>)
266
- }
267
- }
268
- })
269
- }
270
- }
271
- }
272
- }
@@ -1,42 +0,0 @@
1
- /* Minimal Prism theme to be used with @astrojs/prism */
2
- pre[class*="language-"],
3
- code[class*="language-"] {
4
- color: #d4e1f5;
5
- background: #1e1e1e;
6
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
7
- font-size: 0.95em;
8
- line-height: 1.5;
9
- padding: 1em;
10
- border-radius: 6px;
11
- overflow: auto;
12
- }
13
- .token.comment,
14
- .token.prolog,
15
- .token.doctype,
16
- .token.cdata {
17
- color: #6a9955; /* greenish */
18
- font-style: italic;
19
- }
20
- .token.punctuation {
21
- color: #d4e1f5;
22
- }
23
- .token.keyword {
24
- color: #569cd6;
25
- }
26
- .token.boolean {
27
- color: #d19a66;
28
- }
29
- .token.number {
30
- color: #b5cea8;
31
- }
32
- .token.string {
33
- color: #ce9178;
34
- }
35
- .token.function {
36
- color: #dcdcaa;
37
- }
38
-
39
- /* Basic line highlighting compatibility helpers (optional) */
40
- .code-line {
41
- display: block;
42
- }
@@ -1,13 +0,0 @@
1
- import { defineTheme } from "../utils/defineTheme"
2
-
3
- export const createChangelogTheme = () =>
4
- defineTheme({
5
- slots: ["root"],
6
- base: {
7
- root: ""
8
- },
9
- variants: {},
10
- defaultVariants: {}
11
- })
12
-
13
- export default createChangelogTheme()
@@ -1,13 +0,0 @@
1
- import { defineTheme } from "../utils/defineTheme"
2
-
3
- export const createPostsTheme = () =>
4
- defineTheme({
5
- slots: ["root"],
6
- base: {
7
- root: "grid gap-8"
8
- },
9
- variants: {},
10
- defaultVariants: {}
11
- })
12
-
13
- export default createPostsTheme()