@rimelight/ui 0.0.42 → 0.0.43

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 (400) hide show
  1. package/README.md +4 -14
  2. package/package.json +20 -30
  3. package/src/components/3d-hover/3d-hover.theme.ts +9 -12
  4. package/src/components/3d-hover/RLA3dHover.astro +9 -20
  5. package/src/components/accordion/RLAAccordion.astro +5 -14
  6. package/src/components/accordion/accordion.theme.ts +34 -37
  7. package/src/components/app/RLAApp.astro +9 -20
  8. package/src/components/app/app.theme.ts +9 -12
  9. package/src/components/aspect-ratio/RLAAspectRatio.astro +19 -27
  10. package/src/components/aspect-ratio/aspect-ratio.theme.ts +8 -12
  11. package/src/components/audio/RLAAudio.astro +3 -14
  12. package/src/components/audio/audio.theme.ts +9 -12
  13. package/src/components/avatar/RLAAvatar.astro +9 -29
  14. package/src/components/avatar/avatar.theme.ts +66 -77
  15. package/src/components/avatar/avatar.ts +6 -11
  16. package/src/components/avatar-group/RLAAvatarGroup.astro +188 -23
  17. package/src/components/avatar-group/avatar-group.theme.ts +12 -11
  18. package/src/components/avatar-group/avatar-group.ts +41 -0
  19. package/src/components/badge/RLABadge.astro +23 -36
  20. package/src/components/badge/RLSBadge.tsx +41 -0
  21. package/src/components/badge/RLVBadge.vue +8 -16
  22. package/src/components/badge/badge.theme.ts +118 -160
  23. package/src/components/badge/badge.ts +2 -1
  24. package/src/components/banner/RLABanner.astro +88 -103
  25. package/src/components/banner/banner.theme.ts +40 -43
  26. package/src/components/breadcrumb/RLABreadcrumb.astro +241 -62
  27. package/src/components/breadcrumb/breadcrumb.theme.ts +12 -16
  28. package/src/components/breadcrumb/breadcrumb.ts +19 -0
  29. package/src/components/browser-mockup/RLABrowserMockup.astro +9 -20
  30. package/src/components/browser-mockup/browser-mockup.theme.ts +9 -12
  31. package/src/components/button/RLAButton.astro +10 -30
  32. package/src/components/button/RLSButton.tsx +169 -0
  33. package/src/components/button/RLVButton.vue +13 -26
  34. package/src/components/button/button.theme.ts +163 -220
  35. package/src/components/button/button.ts +1 -1
  36. package/src/components/calendar/RLACalendar.astro +9 -20
  37. package/src/components/calendar/calendar.theme.ts +9 -12
  38. package/src/components/callout/RLACallout.astro +5 -14
  39. package/src/components/callout/callout.theme.ts +59 -101
  40. package/src/components/callout/callout.ts +1 -1
  41. package/src/components/card/RLACard.astro +71 -77
  42. package/src/components/card/RLSCard.tsx +116 -0
  43. package/src/components/card/RLVCard.vue +6 -14
  44. package/src/components/card/card.theme.ts +41 -44
  45. package/src/components/carousel/RLACarousel.astro +43 -11
  46. package/src/components/carousel/carousel.theme.ts +28 -32
  47. package/src/components/chart/RLAChart.astro +5 -11
  48. package/src/components/chart/chart.theme.ts +18 -21
  49. package/src/components/chart/chart.ts +1 -1
  50. package/src/components/chat/RLAChat.astro +9 -20
  51. package/src/components/chat/chat.theme.ts +9 -12
  52. package/src/components/chat-message/RLAChatMessage.astro +9 -20
  53. package/src/components/chat-message/chat-message.theme.ts +9 -12
  54. package/src/components/chat-messages/RLAChatMessages.astro +9 -20
  55. package/src/components/chat-messages/chat-messages.theme.ts +9 -12
  56. package/src/components/chat-palette/RLAChatPalette.astro +9 -20
  57. package/src/components/chat-palette/chat-palette.theme.ts +9 -12
  58. package/src/components/chat-prompt/RLAChatPrompt.astro +9 -20
  59. package/src/components/chat-prompt/chat-prompt.theme.ts +9 -12
  60. package/src/components/chat-prompt-submit/RLAChatPromptSubmit.astro +9 -20
  61. package/src/components/chat-prompt-submit/chat-prompt-submit.theme.ts +9 -12
  62. package/src/components/chat-reasoning/RLAChatReasoning.astro +9 -20
  63. package/src/components/chat-reasoning/chat-reasoning.theme.ts +9 -12
  64. package/src/components/chat-shimmer/RLAChatShimmer.astro +9 -20
  65. package/src/components/chat-shimmer/chat-shimmer.theme.ts +9 -12
  66. package/src/components/chat-tool/RLAChatTool.astro +9 -20
  67. package/src/components/chat-tool/chat-tool.theme.ts +9 -12
  68. package/src/components/checkbox/RLACheckbox.astro +2 -17
  69. package/src/components/checkbox/RLSCheckbox.tsx +65 -0
  70. package/src/components/checkbox/checkbox.theme.ts +34 -45
  71. package/src/components/checkbox/checkbox.ts +1 -1
  72. package/src/components/chip/RLAChip.astro +32 -56
  73. package/src/components/chip/chip.theme.ts +66 -72
  74. package/src/components/chip/chip.ts +3 -1
  75. package/src/components/collapsible/RLACollapsible.astro +2 -12
  76. package/src/components/collapsible/collapsible.theme.ts +17 -20
  77. package/src/components/collapsible/collapsible.ts +1 -1
  78. package/src/components/color-area/RLAColorArea.astro +2 -13
  79. package/src/components/color-area/color-area.theme.ts +19 -31
  80. package/src/components/color-area/color-area.ts +1 -1
  81. package/src/components/color-field/RLAColorField.astro +3 -14
  82. package/src/components/color-field/color-field.theme.ts +18 -30
  83. package/src/components/color-field/color-field.ts +1 -1
  84. package/src/components/color-picker/RLAColorPicker.astro +9 -20
  85. package/src/components/color-picker/color-picker.theme.ts +9 -12
  86. package/src/components/color-slider/RLAColorSlider.astro +2 -13
  87. package/src/components/color-slider/color-slider.theme.ts +20 -32
  88. package/src/components/color-slider/color-slider.ts +1 -1
  89. package/src/components/command-palette/RLACommandPalette.astro +9 -20
  90. package/src/components/command-palette/command-palette.theme.ts +9 -12
  91. package/src/components/compare/RLACompare.astro +9 -20
  92. package/src/components/compare/compare.theme.ts +9 -12
  93. package/src/components/confirm/RLAConfirm.astro +114 -122
  94. package/src/components/confirm/confirm.theme.ts +40 -44
  95. package/src/components/confirm/confirm.ts +1 -0
  96. package/src/components/container/RLAContainer.astro +9 -20
  97. package/src/components/container/container.theme.ts +9 -12
  98. package/src/components/context-menu/RLAContextMenu.astro +9 -20
  99. package/src/components/context-menu/context-menu.theme.ts +9 -12
  100. package/src/components/dashboard-group/RLADashboardGroup.astro +17 -21
  101. package/src/components/dashboard-group/dashboard-group.theme.ts +9 -12
  102. package/src/components/dashboard-group/dashboard-group.ts +1 -6
  103. package/src/components/dashboard-navbar/RLADashboardNavbar.astro +61 -21
  104. package/src/components/dashboard-navbar/dashboard-navbar.theme.ts +26 -12
  105. package/src/components/dashboard-navbar/dashboard-navbar.ts +5 -6
  106. package/src/components/dashboard-panel/RLADashboardPanel.astro +25 -13
  107. package/src/components/dashboard-panel/dashboard-panel.theme.ts +22 -12
  108. package/src/components/dashboard-panel/dashboard-panel.ts +4 -6
  109. package/src/components/dashboard-resize-handle/RLADashboardResizeHandle.astro +21 -21
  110. package/src/components/dashboard-resize-handle/dashboard-resize-handle.theme.ts +9 -12
  111. package/src/components/dashboard-resize-handle/dashboard-resize-handle.ts +1 -6
  112. package/src/components/dashboard-search/RLADashboardSearch.astro +100 -21
  113. package/src/components/dashboard-search/dashboard-search.theme.ts +24 -11
  114. package/src/components/dashboard-search/dashboard-search.ts +2 -6
  115. package/src/components/dashboard-search-button/RLADashboardSearchButton.astro +45 -21
  116. package/src/components/dashboard-search-button/dashboard-search-button.theme.ts +20 -12
  117. package/src/components/dashboard-search-button/dashboard-search-button.ts +4 -6
  118. package/src/components/dashboard-sidebar/RLADashboardSidebar.astro +119 -21
  119. package/src/components/dashboard-sidebar/dashboard-sidebar.theme.ts +40 -11
  120. package/src/components/dashboard-sidebar/dashboard-sidebar.ts +8 -6
  121. package/src/components/dashboard-sidebar-collapse/RLADashboardSidebarCollapse.astro +24 -21
  122. package/src/components/dashboard-sidebar-collapse/dashboard-sidebar-collapse.theme.ts +16 -12
  123. package/src/components/dashboard-sidebar-collapse/dashboard-sidebar-collapse.ts +2 -6
  124. package/src/components/dashboard-sidebar-toggle/RLADashboardSidebarToggle.astro +23 -21
  125. package/src/components/dashboard-sidebar-toggle/dashboard-sidebar-toggle.theme.ts +16 -12
  126. package/src/components/dashboard-sidebar-toggle/dashboard-sidebar-toggle.ts +2 -6
  127. package/src/components/dashboard-toolbar/RLADashboardToolbar.astro +25 -21
  128. package/src/components/dashboard-toolbar/dashboard-toolbar.theme.ts +11 -12
  129. package/src/components/dashboard-toolbar/dashboard-toolbar.ts +1 -6
  130. package/src/components/dock/RLADock.astro +9 -20
  131. package/src/components/dock/dock.theme.ts +9 -12
  132. package/src/components/drawer/RLADrawer.astro +115 -126
  133. package/src/components/drawer/drawer.theme.ts +53 -57
  134. package/src/components/dropdown-menu/RLADropdownMenu.astro +180 -47
  135. package/src/components/dropdown-menu/RLSDropdownMenu.tsx +196 -0
  136. package/src/components/dropdown-menu/dropdown-menu.theme.ts +51 -27
  137. package/src/components/dropdown-menu/dropdown-menu.ts +47 -9
  138. package/src/components/editor/RLAEditor.astro +9 -20
  139. package/src/components/editor/blocks/AddBlockModal.vue +3 -3
  140. package/src/components/editor/blocks/Block.vue +4 -3
  141. package/src/components/editor/blocks/BlockEditor.vue +3 -3
  142. package/src/components/editor/blocks/BlockViewRenderer.vue +8 -2
  143. package/src/components/editor/blocks/editor/CalloutBlockEditor.vue +2 -2
  144. package/src/components/editor/blocks/editor/ParagraphBlockEditor.vue +1 -1
  145. package/src/components/editor/blocks/editor/SectionBlockEditor.vue +3 -3
  146. package/src/components/editor/blocks/renderer/CalloutBlockRenderer.vue +2 -3
  147. package/src/components/editor/blocks/renderer/SectionBlockRenderer.vue +2 -2
  148. package/src/components/editor/editor.theme.ts +9 -12
  149. package/src/components/empty/RLAEmpty.astro +86 -20
  150. package/src/components/empty/empty.theme.ts +79 -11
  151. package/src/components/empty/empty.ts +59 -2
  152. package/src/components/error/RLAError.astro +9 -20
  153. package/src/components/error/error.theme.ts +9 -12
  154. package/src/components/field-group/RLAFieldGroup.astro +2 -11
  155. package/src/components/field-group/field-group.theme.ts +18 -22
  156. package/src/components/fieldset/RLAFieldset.astro +9 -20
  157. package/src/components/fieldset/fieldset.theme.ts +9 -12
  158. package/src/components/file-upload/RLAFileUpload.astro +4 -13
  159. package/src/components/file-upload/file-upload.theme.ts +19 -22
  160. package/src/components/file-upload/file-upload.ts +1 -1
  161. package/src/components/floating-action/RLAFloatingAction.astro +9 -20
  162. package/src/components/floating-action/floating-action.theme.ts +9 -12
  163. package/src/components/footer/RLAFooter.astro +32 -38
  164. package/src/components/footer/footer.theme.ts +31 -26
  165. package/src/components/footer/footer.ts +4 -0
  166. package/src/components/form/RLAForm.astro +9 -20
  167. package/src/components/form/form.theme.ts +9 -12
  168. package/src/components/form-field/RLAFormField.astro +5 -12
  169. package/src/components/form-field/RLSFormField.tsx +71 -0
  170. package/src/components/form-field/RLVFormField.vue +5 -14
  171. package/src/components/form-field/form-field.theme.ts +19 -22
  172. package/src/components/form-field/form-field.ts +1 -0
  173. package/src/components/gallery/RLAGallery.astro +9 -20
  174. package/src/components/gallery/gallery.theme.ts +9 -12
  175. package/src/components/grid/RLAGrid.astro +2 -15
  176. package/src/components/grid/grid.theme.ts +31 -34
  177. package/src/components/head/UIHead.astro +298 -0
  178. package/src/components/head/head.theme.ts +9 -12
  179. package/src/components/header/HeaderLayer.astro +63 -0
  180. package/src/components/header/RLAHeader.astro +29 -48
  181. package/src/components/header/header.theme.ts +37 -40
  182. package/src/components/header/header.ts +4 -0
  183. package/src/{utils → components/header}/headerStack.ts +30 -22
  184. package/src/components/hover-card/RLAHoverCard.astro +24 -35
  185. package/src/components/hover-card/hover-card.theme.ts +23 -27
  186. package/src/components/icon/RLAIcon.astro +29 -36
  187. package/src/components/icon/RLSIcon.tsx +6 -7
  188. package/src/components/icon/RLVIcon.vue +5 -6
  189. package/src/components/icon/icon.theme.ts +18 -28
  190. package/src/components/icon/resolver.ts +15 -29
  191. package/src/components/image/RLAImage.astro +20 -23
  192. package/src/components/image/image.theme.ts +29 -32
  193. package/src/components/input/RLAInput.astro +6 -21
  194. package/src/components/input/RLSInput.tsx +101 -0
  195. package/src/components/input/RLVInput.vue +11 -20
  196. package/src/components/input/input.theme.ts +41 -44
  197. package/src/components/input/input.ts +1 -1
  198. package/src/components/input-date/RLAInputDate.astro +9 -20
  199. package/src/components/input-date/input-date.theme.ts +9 -12
  200. package/src/components/input-menu/RLAInputMenu.astro +2 -12
  201. package/src/components/input-menu/input-menu.theme.ts +29 -32
  202. package/src/components/input-menu/input-menu.ts +1 -1
  203. package/src/components/input-number/RLAInputNumber.astro +9 -20
  204. package/src/components/input-number/input-number.theme.ts +9 -12
  205. package/src/components/input-pin/RLAInputPin.astro +9 -22
  206. package/src/components/input-pin/input-pin.theme.ts +9 -13
  207. package/src/components/input-rating/RLAInputRating.astro +2 -23
  208. package/src/components/input-rating/input-rating.theme.ts +64 -76
  209. package/src/components/input-rating/input-rating.ts +1 -1
  210. package/src/components/input-tags/RLAInputTags.astro +174 -21
  211. package/src/components/input-tags/input-tags.theme.ts +37 -12
  212. package/src/components/input-tags/input-tags.ts +50 -0
  213. package/src/components/input-time/RLAInputTime.astro +9 -20
  214. package/src/components/input-time/input-time.theme.ts +9 -12
  215. package/src/components/kbd/RLAKbd.astro +17 -32
  216. package/src/components/kbd/kbd.theme.ts +49 -91
  217. package/src/components/kbd/kbd.ts +3 -0
  218. package/src/components/knob/RLAKnob.astro +9 -20
  219. package/src/components/knob/knob.theme.ts +9 -12
  220. package/src/components/label/RLALabel.astro +16 -27
  221. package/src/components/label/label.theme.ts +16 -20
  222. package/src/components/layout-grid/RLALayoutGrid.astro +5 -11
  223. package/src/components/layout-grid/layout-grid.theme.ts +12 -15
  224. package/src/components/link/RLALink.astro +6 -20
  225. package/src/components/link/RLSLink.tsx +8 -16
  226. package/src/components/link/RLVLink.vue +7 -16
  227. package/src/components/link/link.theme.ts +37 -37
  228. package/src/components/link/link.ts +5 -5
  229. package/src/components/link-group/RLALinkGroup.astro +7 -44
  230. package/src/components/link-group/link-group.theme.ts +21 -26
  231. package/src/components/link-group/link-group.ts +5 -16
  232. package/src/components/listbox/RLAListbox.astro +9 -20
  233. package/src/components/listbox/listbox.theme.ts +9 -12
  234. package/src/components/locale-selector/RLALocaleSelector.astro +13 -21
  235. package/src/components/locale-selector/locale-selector.theme.ts +49 -44
  236. package/src/components/locale-selector/locale-selector.ts +4 -0
  237. package/src/components/logo/RLALogo.astro +13 -26
  238. package/src/components/logo/logo.theme.ts +9 -12
  239. package/src/components/main/RLAMain.astro +31 -36
  240. package/src/components/main/main.theme.ts +9 -12
  241. package/src/components/marquee/RLAMarquee.astro +62 -43
  242. package/src/components/marquee/marquee.theme.ts +22 -26
  243. package/src/components/meter/RLAMeter.astro +9 -20
  244. package/src/components/meter/meter.theme.ts +9 -12
  245. package/src/components/modal/RLAModal.astro +70 -72
  246. package/src/components/modal/RLSModal.tsx +156 -0
  247. package/src/components/modal/RLVModal.vue +5 -6
  248. package/src/components/modal/modal.theme.ts +42 -46
  249. package/src/components/modal/modal.ts +1 -0
  250. package/src/components/navigation-menu/RLANavigationMenu.astro +7 -12
  251. package/src/components/navigation-menu/navigation-menu.theme.ts +36 -39
  252. package/src/components/navigation-menu/navigation-menu.ts +19 -18
  253. package/src/components/page/RLAPage.astro +9 -20
  254. package/src/components/page/page.theme.ts +9 -12
  255. package/src/components/page-aside/RLAPageAside.astro +9 -20
  256. package/src/components/page-aside/page-aside.theme.ts +9 -12
  257. package/src/components/page-body/RLAPageBody.astro +9 -20
  258. package/src/components/page-body/page-body.theme.ts +9 -12
  259. package/src/components/page-header/RLAPageHeader.astro +9 -20
  260. package/src/components/page-header/page-header.theme.ts +9 -12
  261. package/src/components/page-section/RLAPageSection.astro +11 -15
  262. package/src/components/page-section/page-section.theme.ts +193 -176
  263. package/src/components/pagination/RLAPagination.astro +91 -97
  264. package/src/components/pagination/pagination.theme.ts +22 -26
  265. package/src/components/password/RLAPassword.astro +9 -20
  266. package/src/components/password/password.theme.ts +9 -12
  267. package/src/components/phone-mockup/RLAPhoneMockup.astro +9 -20
  268. package/src/components/phone-mockup/phone-mockup.theme.ts +9 -12
  269. package/src/components/placeholder/RLAPlaceholder.astro +32 -43
  270. package/src/components/placeholder/placeholder.theme.ts +11 -14
  271. package/src/components/popover/RLAPopover.astro +205 -132
  272. package/src/components/popover/popover.theme.ts +23 -27
  273. package/src/components/post/RLAPost.astro +2 -10
  274. package/src/components/post/post.theme.ts +45 -48
  275. package/src/components/pricing-plan/RLAPricingPlan.astro +9 -20
  276. package/src/components/pricing-plan/pricing-plan.theme.ts +9 -12
  277. package/src/components/pricing-table/RLAPricingTable.astro +9 -20
  278. package/src/components/pricing-table/pricing-table.theme.ts +9 -12
  279. package/src/components/progress/RLAProgress.astro +2 -17
  280. package/src/components/progress/progress.theme.ts +22 -34
  281. package/src/components/progress/progress.ts +1 -1
  282. package/src/components/prose/RLAProse.astro +9 -20
  283. package/src/components/prose/prose.theme.ts +9 -12
  284. package/src/components/qr-code/RLAQrCode.astro +9 -20
  285. package/src/components/qr-code/qr-code.theme.ts +9 -12
  286. package/src/components/quote/quote.theme.ts +9 -12
  287. package/src/components/radio-group/RLARadioGroup.astro +9 -20
  288. package/src/components/radio-group/radio-group.theme.ts +9 -12
  289. package/src/components/rating/RLARating.astro +9 -20
  290. package/src/components/rating/rating.theme.ts +9 -12
  291. package/src/components/scroll-area/RLAScrollArea.astro +2 -10
  292. package/src/components/scroll-area/scroll-area.theme.ts +21 -24
  293. package/src/components/scroll-to-top/RLAScrollToTop.astro +67 -43
  294. package/src/components/scroll-to-top/RLVScrollToTop.vue +6 -10
  295. package/src/components/scroll-to-top/scroll-to-top.theme.ts +32 -46
  296. package/src/components/scroll-to-top/scroll-to-top.ts +1 -1
  297. package/src/{utils → components/scroll-to-top}/scroll.ts +19 -6
  298. package/src/components/search/RLASearch.astro +3 -9
  299. package/src/components/search/search.theme.ts +60 -63
  300. package/src/components/select/RLASelect.astro +514 -113
  301. package/src/components/select/RLSSelect.tsx +126 -0
  302. package/src/components/select/RLVSelect.vue +7 -15
  303. package/src/components/select/select.theme.ts +104 -25
  304. package/src/components/select/select.ts +58 -36
  305. package/src/components/separator/RLASeparator.astro +62 -83
  306. package/src/components/separator/separator.theme.ts +135 -138
  307. package/src/components/separator/separator.ts +4 -0
  308. package/src/components/shortcuts/RLAShortcuts.astro +3 -4
  309. package/src/components/sidebar/RLASidebar.astro +11 -21
  310. package/src/components/sidebar/sidebar.theme.ts +39 -42
  311. package/src/components/sidebar/sidebar.ts +2 -0
  312. package/src/components/skeleton/RLASkeleton.astro +13 -22
  313. package/src/components/skeleton/skeleton.theme.ts +16 -19
  314. package/src/components/slideover/RLASlideover.astro +2 -12
  315. package/src/components/slideover/slideover.theme.ts +51 -55
  316. package/src/components/slider/RLASlider.astro +2 -15
  317. package/src/components/slider/slider.theme.ts +20 -33
  318. package/src/components/slider/slider.ts +1 -1
  319. package/src/components/speed-dial/RLASpeedDial.astro +9 -20
  320. package/src/components/speed-dial/speed-dial.theme.ts +9 -12
  321. package/src/components/spinner/RLASpinner.astro +2 -17
  322. package/src/components/spinner/spinner.theme.ts +29 -30
  323. package/src/components/spinner/spinner.ts +1 -1
  324. package/src/components/splitter/RLASplitter.astro +3 -11
  325. package/src/components/splitter/splitter.theme.ts +18 -21
  326. package/src/components/spoiler/RLASpoiler.astro +9 -20
  327. package/src/components/spoiler/spoiler.theme.ts +9 -12
  328. package/src/components/stepper/RLAStepper.astro +300 -21
  329. package/src/components/stepper/stepper.theme.ts +214 -12
  330. package/src/components/stepper/stepper.ts +23 -6
  331. package/src/components/steps/RLASteps.astro +2 -8
  332. package/src/components/steps/steps.theme.ts +9 -12
  333. package/src/components/sticky-surface/RLAStickySurface.astro +67 -38
  334. package/src/components/sticky-surface/sticky-surface.theme.ts +7 -11
  335. package/src/components/sticky-surface/sticky-surface.ts +1 -0
  336. package/src/components/surround/RLASurround.astro +5 -5
  337. package/src/components/switch/RLASwitch.astro +2 -18
  338. package/src/components/switch/switch.theme.ts +50 -61
  339. package/src/components/switch/switch.ts +1 -1
  340. package/src/components/table/RLATable.astro +566 -50
  341. package/src/components/table/table.theme.ts +112 -31
  342. package/src/components/table/table.ts +207 -6
  343. package/src/components/table-of-contents/RLATableOfContents.astro +8 -13
  344. package/src/components/table-of-contents/table-of-contents.theme.ts +60 -63
  345. package/src/components/tabs/RLATabs.astro +195 -51
  346. package/src/components/tabs/tabs.theme.ts +81 -84
  347. package/src/components/tabs/tabs.ts +18 -1
  348. package/src/components/textarea/RLATextarea.astro +16 -13
  349. package/src/components/textarea/RLSTextarea.tsx +69 -0
  350. package/src/components/textarea/RLVTextarea.vue +8 -16
  351. package/src/components/textarea/textarea.theme.ts +21 -24
  352. package/src/components/textarea/textarea.ts +2 -1
  353. package/src/components/theme-selector/RLAThemeSelector.astro +5 -13
  354. package/src/components/theme-selector/theme-selector.theme.ts +11 -14
  355. package/src/components/timeline/RLATimeline.astro +24 -44
  356. package/src/components/timeline/timeline.theme.ts +302 -307
  357. package/src/components/toast/RLAToast.astro +44 -18
  358. package/src/components/toast/store.ts +97 -0
  359. package/src/components/toast/toast.theme.ts +31 -34
  360. package/src/components/toast/toast.ts +1 -1
  361. package/src/components/toaster/RLAToaster.astro +76 -6
  362. package/src/components/tooltip/RLATooltip.astro +136 -33
  363. package/src/components/tooltip/tooltip.theme.ts +23 -26
  364. package/src/components/tour/RLATour.astro +9 -20
  365. package/src/components/tour/tour.theme.ts +9 -12
  366. package/src/components/tree/RLATree.astro +9 -20
  367. package/src/components/tree/tree.theme.ts +9 -12
  368. package/src/components/user/RLAUser.astro +9 -20
  369. package/src/components/user/user.theme.ts +9 -12
  370. package/src/components/video/RLAVideo.astro +5 -10
  371. package/src/components/video/video.theme.ts +13 -16
  372. package/src/components/watermark/RLAWatermark.astro +9 -20
  373. package/src/components/watermark/watermark.theme.ts +9 -12
  374. package/src/components/window-mockup/RLAWindowMockup.astro +9 -20
  375. package/src/components/window-mockup/window-mockup.theme.ts +9 -12
  376. package/src/icons.ts +68 -0
  377. package/src/index.ts +31 -0
  378. package/src/preset.ts +146 -0
  379. package/src/resolver.ts +20 -0
  380. package/src/shortcuts.ts +172 -0
  381. package/src/types.ts +57 -0
  382. package/LICENSE +0 -21
  383. package/src/components/head/RLAHead.astro +0 -528
  384. package/src/config/color.config.ts +0 -300
  385. package/src/config/site.config.ts +0 -28
  386. package/src/config/ui.config.ts +0 -89
  387. package/src/env.d.ts +0 -23
  388. package/src/icons/defaults.ts +0 -44
  389. package/src/presets/index.ts +0 -577
  390. package/src/stores/toast.ts +0 -24
  391. package/src/themes.ts +0 -26
  392. package/src/types/component.ts +0 -28
  393. package/src/ui.ts +0 -159
  394. package/src/utils/defineTheme.ts +0 -5
  395. package/src/utils/merge.ts +0 -62
  396. package/src/utils/resolveClasses.ts +0 -39
  397. package/src/utils/resolveTheme.ts +0 -13
  398. package/src/utils/shortcuts.ts +0 -322
  399. package/src/utils/toast.ts +0 -36
  400. package/src/utils/useUi.ts +0 -33
@@ -1,12 +1,8 @@
1
1
  ---
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
2
  import type { ScrollToTopProps } from "./scroll-to-top"
6
- import scrollToTopTheme from "./scroll-to-top.theme"
3
+ import { scrollToTopTheme } from "./scroll-to-top.theme"
7
4
 
8
5
 
9
- const scrollToTop = scv(scrollToTopTheme)
10
6
 
11
7
  const {
12
8
  color = "primary",
@@ -14,13 +10,10 @@ const {
14
10
  duration = 0.1,
15
11
  threshold = 200,
16
12
  showProgress = false,
17
- theme,
18
- ui: uiProp,
19
- class: className,
20
13
  ...rest
21
14
  } = Astro.props as ScrollToTopProps
22
15
 
23
- const classes = resolveClasses(scrollToTop, { color, theme }, useUi("scrollToTop", uiProp), className)
16
+ const classes = scrollToTopTheme(Astro.props)
24
17
 
25
18
  ---
26
19
 
@@ -62,11 +55,10 @@ const classes = resolveClasses(scrollToTop, { color, theme }, useUi("scrollToTop
62
55
  </rla-scroll-to-top>
63
56
 
64
57
  <script>
65
- import { trackScroll, scrollToTop } from "../../utils/scroll"
58
+ import { trackScroll, scrollToTop } from "./scroll"
66
59
 
67
60
  class RLAScrollToTop extends HTMLElement {
68
61
  private cleanupScroll: (() => void) | null = null;
69
- private styleEl: HTMLStyleElement | null = null;
70
62
 
71
63
  connectedCallback() {
72
64
  this.style.display = 'contents';
@@ -80,50 +72,64 @@ const classes = resolveClasses(scrollToTop, { color, theme }, useUi("scrollToTop
80
72
  const color = this.dataset.color || 'primary';
81
73
  const progressWidth = Number(this.dataset.progressWidth) || 6;
82
74
  const gaugeBorderWidth = progressWidth * 0.5;
83
- const nonce = (document.querySelector('meta[name="csp-nonce"]')?.getAttribute('content') ?? '');
84
-
85
- const getStyleEl = () => {
86
- if (!this.styleEl) {
87
- this.styleEl = document.createElement('style');
88
- if (nonce) this.styleEl.setAttribute('nonce', nonce);
89
- document.head.appendChild(this.styleEl);
90
- }
91
- return this.styleEl;
92
- };
93
75
 
94
76
  innerElement.dataset.rlaInstance = String(id);
95
77
 
96
78
  button.addEventListener('click', scrollToTop);
97
79
 
98
- const unsubscribe = trackScroll({ threshold }, (state) => {
80
+ /**
81
+ * CSS scroll-state(scrollable: top) — Chrome 133+
82
+ *
83
+ * When supported, the body (or nearest scroll-state container) exposes
84
+ * its scrollability to CSS. The .rla-scroll-to-top-inner uses a
85
+ * \`@container\` scroll-state rule to hide itself when the page is already
86
+ * at the top. This eliminates the scroll event listener for show/hide.
87
+ *
88
+ * For browsers that don't support scroll-state() we fall back to the
89
+ * JS trackScroll() approach below.
90
+ */
91
+ // JS scroll tracking: show/hide via class toggling
92
+ const unsubscribeVisibility = trackScroll({ threshold }, (state) => {
99
93
  if (state.isVisible) {
100
- innerElement.classList.add('visible');
94
+ innerElement.classList.add('js-visible');
101
95
  } else {
102
- innerElement.classList.remove('visible');
96
+ innerElement.classList.remove('js-visible');
103
97
  }
104
-
105
- getStyleEl().textContent = `
106
- .rla-scroll-to-top-inner[data-rla-instance="${id}"] .gauge-track {
107
- border-width: ${gaugeBorderWidth}px;
108
- border-color: var(--color-${color}-900);
109
- background-color: #000;
110
- }
111
- .rla-scroll-to-top-inner[data-rla-instance="${id}"] .gauge-progress {
112
- --gauge-progress: ${state.scrollPercentage};
113
- --gauge-stroke-width: ${gaugeBorderWidth}px;
114
- --gauge-color: var(--color-${color}-500);
115
- }
116
- `;
117
98
  });
118
-
119
99
  this.cleanupScroll = () => {
120
100
  button.removeEventListener('click', scrollToTop);
121
- unsubscribe();
122
- if (this.styleEl) {
123
- this.styleEl.remove();
124
- this.styleEl = null;
101
+ unsubscribeVisibility();
102
+ const self = this as any;
103
+ if (self.styleEl) {
104
+ self.styleEl.remove();
105
+ self.styleEl = null;
125
106
  }
126
107
  };
108
+
109
+ // Progress ring scroll tracking using CSS variable on the element
110
+ const gaugeProgressEl = innerElement.querySelector('[data-gauge-progress]') as HTMLElement | null;
111
+ if (gaugeProgressEl) {
112
+ gaugeProgressEl.style.setProperty('--gauge-stroke-width', `${gaugeBorderWidth}px`);
113
+ gaugeProgressEl.style.setProperty('--gauge-color', `var(--color-${color}-500)`);
114
+ }
115
+ const gaugeTrackEl = innerElement.querySelector('.gauge-track') as HTMLElement | null;
116
+ if (gaugeTrackEl) {
117
+ gaugeTrackEl.style.setProperty('border-width', `${gaugeBorderWidth}px`);
118
+ gaugeTrackEl.style.setProperty('border-color', `var(--color-${color}-900)`);
119
+ gaugeTrackEl.style.setProperty('background-color', '#000');
120
+ }
121
+
122
+ const unsubscribeProgress = trackScroll({ threshold }, (state) => {
123
+ if (gaugeProgressEl) {
124
+ gaugeProgressEl.style.setProperty('--gauge-progress', String(state.scrollPercentage));
125
+ }
126
+ });
127
+
128
+ const previousCleanup = this.cleanupScroll;
129
+ this.cleanupScroll = () => {
130
+ if (previousCleanup) previousCleanup();
131
+ unsubscribeProgress();
132
+ };
127
133
  }
128
134
 
129
135
  disconnectedCallback() {
@@ -142,17 +148,35 @@ const classes = resolveClasses(scrollToTop, { color, theme }, useUi("scrollToTop
142
148
  </script>
143
149
 
144
150
  <style>
151
+ /*
152
+ * CSS scroll-state(scrollable: top) — Chrome 133+
153
+ *
154
+ * This declares the <body> as a scroll-state container so descendant
155
+ * elements can query whether the body is scrollable at the top.
156
+ * When the user is already at the top of the page, the button hides itself.
157
+ */
158
+ :global(body) {
159
+ container-type: scroll-state;
160
+ container-name: rla-page-scroll;
161
+ }
162
+
145
163
  .rla-scroll-to-top-inner {
164
+ /* Default: hidden (for JS fallback path) */
146
165
  opacity: 0;
147
166
  pointer-events: none;
148
167
  transition: opacity 0.3s ease-in-out;
149
168
  }
150
169
 
151
- .rla-scroll-to-top-inner.visible {
170
+ /* JS fallback visibility class */
171
+ .rla-scroll-to-top-inner.js-visible {
152
172
  opacity: 1;
153
173
  pointer-events: auto;
154
174
  }
155
175
 
176
+ /*
177
+ * Standard JS-backed scroll state visibility (CSP-compliant)
178
+ */
179
+
156
180
  .progress-circle-base {
157
181
  position: relative;
158
182
  transform: translateZ(0);
@@ -1,26 +1,22 @@
1
1
  <script setup lang="ts">
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
2
  import type { ScrollToTopProps } from "./scroll-to-top"
6
- import scrollToTopTheme from "./scroll-to-top.theme"
7
- import { trackScroll, scrollToTop as scrollToTopFn } from "../../utils/scroll"
3
+ import { scrollToTopTheme } from "./scroll-to-top.theme"
4
+ import { trackScroll, scrollToTop as scrollToTopFn } from "./scroll"
8
5
  import { ref, computed, onMounted, onUnmounted, watch, useAttrs } from "vue"
9
6
 
10
7
  const attrs = useAttrs()
11
- const scrollToTop = scv(scrollToTopTheme)
12
8
 
13
9
  const {
14
10
  color = "primary",
15
11
  progressWidth = 6,
16
12
  duration = 0.1,
17
13
  threshold = 200,
18
- showProgress = false,
19
- ui: uiProp,
20
- class: className
14
+ showProgress = false
21
15
  } = defineProps<ScrollToTopProps>()
22
16
 
23
- const classes = resolveClasses(scrollToTop, { color }, useUi("scrollToTop", uiProp), className)
17
+ const classes = scrollToTopTheme({
18
+ color
19
+ })
24
20
 
25
21
  const isVisible = ref(false)
26
22
  const scrollPercentage = ref(0)
@@ -1,51 +1,37 @@
1
- import { defineTheme } from "../../utils/defineTheme"
1
+ import { defineTheme } from "../../resolver"
2
2
 
3
- export const createScrollToTopTheme = (colors: readonly string[] = ["primary", "secondary"]) =>
4
- defineTheme({
5
- slots: ["root", "button", "progressBase", "svg", "iconContainer", "icon"],
6
- base: {
7
- root: "fixed bottom-6 right-6 z-50",
8
- button: "size-14 lg:size-12 p-0 rounded-full bg-black/85",
9
- progressBase: "progress-circle-base size-full",
10
- svg: "size-full",
11
- iconContainer: "absolute inset-0 flex items-center justify-center text-center",
12
- icon: "size-6 text-white"
13
- },
14
- variants: {
15
- color: Object.fromEntries(
16
- colors.map((color) => [
17
- color,
18
- {
19
- root: "rl-color-" + color,
20
- progressBase: "",
21
- svg: "",
22
- iconContainer: "",
23
- icon: ""
24
- }
25
- ])
26
- ),
27
- theme: {
28
- light: { root: "rl-light" },
29
- dark: { root: "rl-dark" }
3
+ export const scrollToTopTheme = defineTheme("scroll-to-top", {
4
+ slots: ["root", "button", "progressBase", "svg", "iconContainer", "icon"],
5
+ base: {
6
+ root: "fixed bottom-6 right-6 z-50",
7
+ button: "size-14 lg:size-12 p-0 rounded-full bg-black/85",
8
+ progressBase: "progress-circle-base size-full",
9
+ svg: "size-full",
10
+ iconContainer: "absolute inset-0 flex items-center justify-center text-center",
11
+ icon: "size-6 text-white"
12
+ },
13
+ variants: {
14
+ color: "auto",
15
+ theme: {
16
+ light: { root: "rl-light" },
17
+ dark: { root: "rl-dark" }
18
+ }
19
+ },
20
+ compoundVariants: [
21
+ {
22
+ color: "primary",
23
+ classNames: {
24
+ icon: "text-primary-foreground"
30
25
  }
31
26
  },
32
- compoundVariants: [
33
- {
34
- color: "primary",
35
- classNames: {
36
- icon: "text-primary-foreground"
37
- }
38
- },
39
- {
40
- color: "secondary",
41
- classNames: {
42
- icon: "text-secondary-foreground"
43
- }
27
+ {
28
+ color: "secondary",
29
+ classNames: {
30
+ icon: "text-secondary-foreground"
44
31
  }
45
- ],
46
- defaultVariants: {
47
- color: "primary"
48
32
  }
49
- })
50
-
51
- export default createScrollToTopTheme()
33
+ ],
34
+ defaultVariants: {
35
+ color: "primary"
36
+ }
37
+ })
@@ -1,4 +1,4 @@
1
- import type { Theme, ThemeColor } from "../../types/component"
1
+ import type { Theme, ThemeColor } from "../../types"
2
2
 
3
3
  export interface ScrollToTopProps {
4
4
  /**
@@ -14,13 +14,23 @@ export function trackScroll(
14
14
 
15
15
  const { threshold = 200 } = options
16
16
 
17
+ let ticking = false
18
+ let rafId: number | null = null
19
+
17
20
  function update() {
18
- const scrollTop = window.scrollY || document.documentElement.scrollTop
19
- const scrollHeight = document.documentElement.scrollHeight - window.innerHeight
20
- onUpdate({
21
- isVisible: scrollTop > threshold,
22
- scrollPercentage: scrollHeight > 0 ? (scrollTop / scrollHeight) * 100 : 0
23
- })
21
+ if (!ticking) {
22
+ rafId = requestAnimationFrame(() => {
23
+ const scrollTop = window.scrollY || document.documentElement.scrollTop
24
+ const scrollHeight = document.documentElement.scrollHeight - window.innerHeight
25
+ onUpdate({
26
+ isVisible: scrollTop > threshold,
27
+ scrollPercentage: scrollHeight > 0 ? (scrollTop / scrollHeight) * 100 : 0
28
+ })
29
+ ticking = false
30
+ rafId = null
31
+ })
32
+ ticking = true
33
+ }
24
34
  }
25
35
 
26
36
  window.addEventListener("scroll", update, { passive: true })
@@ -28,6 +38,9 @@ export function trackScroll(
28
38
 
29
39
  return () => {
30
40
  window.removeEventListener("scroll", update)
41
+ if (rafId !== null) {
42
+ cancelAnimationFrame(rafId)
43
+ }
31
44
  }
32
45
  }
33
46
 
@@ -1,27 +1,21 @@
1
1
  ---
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
2
  import type { SearchProps } from "./search"
6
- import searchTheme from "./search.theme"
3
+ import { searchTheme } from "./search.theme"
7
4
  import RLAIcon from "../icon/RLAIcon.astro"
8
5
  import RLAInput from "../input/RLAInput.astro"
9
6
  import RLAKbd from "../kbd/RLAKbd.astro"
10
7
  import RLAButton from "../button/RLAButton.astro"
11
8
 
12
9
 
13
- const search = scv(searchTheme)
14
10
 
15
11
  const {
16
12
  endpoint = "/api/search",
17
13
  placeholder = "Search...",
18
14
  messages = {},
19
- ui: uiProp,
20
- class: className,
21
15
  ...rest
22
16
  } = Astro.props as SearchProps
23
17
 
24
- const classes = resolveClasses(search, {}, useUi("search", uiProp), className)
18
+ const classes = searchTheme(Astro.props)
25
19
 
26
20
  // Default messages
27
21
  const searchPlaceholder = messages.searchPlaceholder || placeholder
@@ -111,7 +105,7 @@ const emptyId = `search-empty-${uniqueId}`
111
105
  </rla-search>
112
106
 
113
107
  <script>
114
- import { defineShortcuts } from "../../utils/shortcuts"
108
+ import { defineShortcuts } from "../../shortcuts"
115
109
 
116
110
  class RLASearch extends HTMLElement {
117
111
  private searchCleanup: (() => void) | null = null;
@@ -1,64 +1,61 @@
1
- import { defineTheme } from "../../utils/defineTheme"
1
+ import { defineTheme } from "../../resolver"
2
2
 
3
- export const createSearchTheme = () =>
4
- defineTheme({
5
- slots: [
6
- "root",
7
- "trigger",
8
- "triggerIcon",
9
- "triggerLabel",
10
- "triggerKbd",
11
- "modal",
12
- "dialog",
13
- "header",
14
- "headerIcon",
15
- "input",
16
- "close",
17
- "closeIcon",
18
- "results",
19
- "resultItem",
20
- "resultHeader",
21
- "resultTitle",
22
- "resultBadge",
23
- "resultSnippet",
24
- "empty",
25
- "footer",
26
- "footerHint"
27
- ],
28
- base: {
29
- root: "relative inline-block",
30
- trigger:
31
- "flex items-center gap-xs text-neutral-400 hover:text-white transition-colors bg-neutral-900 border border-neutral-800 rounded-full px-3 py-1.5 text-sm cursor-pointer",
32
- triggerIcon: "w-4 h-4",
33
- triggerLabel: "hidden lg:inline text-xs opacity-60",
34
- triggerKbd:
35
- "hidden lg:inline-flex items-center gap-0.5 text-[10px] bg-neutral-800 border border-neutral-700 px-1.5 py-0.5 rounded font-sans text-neutral-400",
36
- modal:
37
- "fixed inset-0 z-[1000] hidden items-start justify-center pt-[10vh] px-4 bg-black/70 backdrop-blur-sm",
38
- dialog:
39
- "bg-neutral-900 border border-neutral-800 rounded-xl w-full max-w-xl shadow-2xl overflow-hidden flex flex-col",
40
- header: "flex items-center border-b border-neutral-800 px-4 py-3",
41
- headerIcon: "text-neutral-400 w-5 h-5 mr-3",
42
- input:
43
- "bg-transparent text-white placeholder-neutral-500 focus:outline-none flex-1 text-base border-none p-0",
44
- close:
45
- "text-neutral-400 hover:text-white transition-colors bg-transparent border-0 cursor-pointer p-0 flex items-center justify-center",
46
- closeIcon: "w-5 h-5",
47
- results: "max-h-[350px] overflow-y-auto p-2 empty:hidden flex flex-col gap-1",
48
- resultItem:
49
- "flex flex-col gap-1 p-3 hover:bg-neutral-800 rounded-lg transition-colors border border-transparent hover:border-neutral-700 text-left decoration-none",
50
- resultHeader: "flex items-center justify-between",
51
- resultTitle: "text-sm font-semibold text-white",
52
- resultBadge:
53
- "text-[10px] uppercase tracking-wider px-1.5 py-0.5 rounded bg-neutral-800 text-neutral-400 font-mono",
54
- resultSnippet: "text-xs text-neutral-400 line-clamp-2 m-0",
55
- empty: "p-6 text-center text-neutral-500 text-sm hidden",
56
- footer:
57
- "bg-neutral-950 border-t border-neutral-800 px-4 py-2 flex items-center justify-between text-[11px] text-neutral-500",
58
- footerHint: "flex items-center gap-1"
59
- },
60
- variants: {},
61
- defaultVariants: {}
62
- })
63
-
64
- export default createSearchTheme()
3
+ export const searchTheme = defineTheme("search", {
4
+ slots: [
5
+ "root",
6
+ "trigger",
7
+ "triggerIcon",
8
+ "triggerLabel",
9
+ "triggerKbd",
10
+ "modal",
11
+ "dialog",
12
+ "header",
13
+ "headerIcon",
14
+ "input",
15
+ "close",
16
+ "closeIcon",
17
+ "results",
18
+ "resultItem",
19
+ "resultHeader",
20
+ "resultTitle",
21
+ "resultBadge",
22
+ "resultSnippet",
23
+ "empty",
24
+ "footer",
25
+ "footerHint"
26
+ ],
27
+ base: {
28
+ root: "relative inline-block",
29
+ trigger:
30
+ "flex items-center gap-xs text-neutral-400 hover:text-white transition-colors bg-neutral-900 border border-neutral-800 rounded-full px-3 py-1.5 text-sm cursor-pointer",
31
+ triggerIcon: "w-4 h-4",
32
+ triggerLabel: "hidden lg:inline text-xs opacity-60",
33
+ triggerKbd:
34
+ "hidden lg:inline-flex items-center gap-0.5 text-[10px] bg-neutral-800 border border-neutral-700 px-1.5 py-0.5 rounded font-sans text-neutral-400",
35
+ modal:
36
+ "fixed inset-0 z-[1000] hidden items-start justify-center pt-[10vh] px-4 bg-black/70 backdrop-blur-sm",
37
+ dialog:
38
+ "bg-neutral-900 border border-neutral-800 rounded-xl w-full max-w-xl shadow-2xl overflow-hidden flex flex-col",
39
+ header: "flex items-center border-b border-neutral-800 px-4 py-3",
40
+ headerIcon: "text-neutral-400 w-5 h-5 mr-3",
41
+ input:
42
+ "bg-transparent text-white placeholder-neutral-500 focus:outline-none flex-1 text-base border-none p-0",
43
+ close:
44
+ "text-neutral-400 hover:text-white transition-colors bg-transparent border-0 cursor-pointer p-0 flex items-center justify-center",
45
+ closeIcon: "w-5 h-5",
46
+ results: "max-h-[350px] overflow-y-auto p-2 empty:hidden flex flex-col gap-1",
47
+ resultItem:
48
+ "flex flex-col gap-1 p-3 hover:bg-neutral-800 rounded-lg transition-colors border border-transparent hover:border-neutral-700 text-left decoration-none",
49
+ resultHeader: "flex items-center justify-between",
50
+ resultTitle: "text-sm font-semibold text-white",
51
+ resultBadge:
52
+ "text-[10px] uppercase tracking-wider px-1.5 py-0.5 rounded bg-neutral-800 text-neutral-400 font-mono",
53
+ resultSnippet: "text-xs text-neutral-400 line-clamp-2 m-0",
54
+ empty: "p-6 text-center text-neutral-500 text-sm hidden",
55
+ footer:
56
+ "bg-neutral-950 border-t border-neutral-800 px-4 py-2 flex items-center justify-between text-[11px] text-neutral-500",
57
+ footerHint: "flex items-center gap-1"
58
+ },
59
+ variants: {},
60
+ defaultVariants: {}
61
+ })