@rimelight/ui 0.0.41 → 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 +35 -21
  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
package/src/ui.ts DELETED
@@ -1,159 +0,0 @@
1
- import type { AstroIntegration } from "astro"
2
- import UnoCSS from "unocss/astro"
3
- import { merge } from "./utils/merge"
4
- import { uiConfig } from "./themes"
5
- import type { UIConfig } from "./config/ui.config"
6
- import { colorConfig } from "./config/color.config"
7
- import rimelightUiPreset, { uiSrcGlob, uiFilesystemGlob } from "./presets"
8
- import type { RimelightPresetOptions } from "./presets"
9
-
10
- export type { UIConfig } from "./config/ui.config"
11
- export type { RimelightIcons } from "./icons/defaults"
12
- export { defineTheme } from "./themes"
13
-
14
- export function ui(options: UIConfig = {}): AstroIntegration[] {
15
- let astroLogger: any = null
16
-
17
- const presetOptions: RimelightPresetOptions = {
18
- colors: options.colors ?? {},
19
- ...(options.autogenerateColorModes !== undefined && {
20
- autogenerateColorModes: options.autogenerateColorModes
21
- }),
22
- ...(options.presets !== undefined && {
23
- presets: options.presets
24
- })
25
- }
26
-
27
- const resolvedConfig = {
28
- ...merge(options.components?.themes ?? {}, uiConfig),
29
- logos: options.logos ?? {},
30
- colors: Array.from(new Set([...colorConfig.colors, ...Object.keys(options.colors ?? {})])),
31
- shortcuts: options.shortcuts ?? {},
32
- icons: options.icons ?? {}
33
- }
34
-
35
- const userUnoConfig = options.unocss ?? {}
36
-
37
- const contentObj =
38
- userUnoConfig.content && typeof userUnoConfig.content === "object"
39
- ? userUnoConfig.content
40
- : null
41
- const pipeline =
42
- contentObj &&
43
- "pipeline" in contentObj &&
44
- typeof contentObj.pipeline === "object" &&
45
- contentObj.pipeline !== null
46
- ? contentObj.pipeline
47
- : null
48
- const rawIncludes = pipeline && "include" in pipeline ? pipeline.include : undefined
49
- let userPipelineIncludes: (string | RegExp)[] = []
50
- if (Array.isArray(rawIncludes)) {
51
- userPipelineIncludes = rawIncludes.filter(
52
- (item): item is string | RegExp => typeof item === "string" || item instanceof RegExp
53
- )
54
- } else if (typeof rawIncludes === "string" || rawIncludes instanceof RegExp) {
55
- userPipelineIncludes = [rawIncludes]
56
- }
57
-
58
- const rawFilesystem = contentObj && "filesystem" in contentObj ? contentObj.filesystem : undefined
59
- let userFilesystem: string[] = []
60
- if (Array.isArray(rawFilesystem)) {
61
- userFilesystem = rawFilesystem.filter((item): item is string => typeof item === "string")
62
- } else if (typeof rawFilesystem === "string") {
63
- userFilesystem = [rawFilesystem]
64
- }
65
-
66
- return [
67
- UnoCSS({
68
- ...userUnoConfig,
69
- presets: [rimelightUiPreset(presetOptions), ...(userUnoConfig.presets ?? [])],
70
- safelist: [
71
- ...Object.values(options.icons ?? {}).filter(
72
- (v): v is string => typeof v === "string" && v.startsWith("i-")
73
- ),
74
- ...(userUnoConfig.safelist ?? [])
75
- ],
76
- content: {
77
- pipeline: {
78
- include: [
79
- /\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/,
80
- "src/**/*.{js,ts,jsx,tsx,vue,svelte,astro}",
81
- uiSrcGlob,
82
- ...userPipelineIncludes
83
- ]
84
- },
85
- filesystem: [uiFilesystemGlob, "src/components/**/*", "src/pages/**/*", ...userFilesystem]
86
- },
87
- configResolved(config) {
88
- logUnoConfig(config, astroLogger)
89
- userUnoConfig.configResolved?.(config)
90
- }
91
- }),
92
- {
93
- name: "@rimelight/ui",
94
- hooks: {
95
- "astro:config:setup": ({ updateConfig, logger }) => {
96
- astroLogger = logger
97
- logger.info("Initializing @rimelight/ui core")
98
- updateConfig({
99
- vite: {
100
- plugins: [createVirtualModulePlugin(resolvedConfig)]
101
- }
102
- })
103
- }
104
- }
105
- }
106
- ]
107
- }
108
-
109
- /**
110
- * Creates a Vite plugin to resolve and load the virtual config module.
111
- */
112
- function createVirtualModulePlugin(config: any) {
113
- const id = "virtual:rimelight-ui"
114
- return {
115
- name: "vite-plugin-rimelight-ui-virtual",
116
- enforce: "pre" as const,
117
- resolveId: (rId: string) => (rId === id ? "\0" + id : null),
118
- load: (rId: string) =>
119
- rId === "\0" + id
120
- ? `const _config = ${JSON.stringify(config)}; export const getUIConfig = () => _config;`
121
- : null
122
- }
123
- }
124
-
125
- /**
126
- * Helper to log UnoCSS configuration details and rule collisions in development.
127
- */
128
- function logUnoConfig(config: any, astroLogger: any) {
129
- if (process.env.NODE_ENV !== "development" || process.env.UNO_CONFIG_LOGGED) {
130
- return
131
- }
132
- process.env.UNO_CONFIG_LOGGED = "true"
133
-
134
- const log = (msg: string, isWarn = false) => {
135
- const logger = astroLogger ?? console
136
- const method = isWarn ? "warn" : astroLogger ? "info" : "log"
137
- logger[method](msg)
138
- }
139
-
140
- log(`[UnoCSS] Presets: ${config.presets.map((p: any) => p.name).join(", ")}`)
141
- log(`[UnoCSS] Rules: ${config.rules.length}`)
142
- log(`[UnoCSS] Shortcuts: ${Object.keys(config.shortcuts).length}`)
143
-
144
- const ruleNames = config.rules.map((r: any) => (Array.isArray(r) ? r[0].toString() : "dynamic"))
145
- const seen = new Set<string>()
146
- const duplicates = new Set<string>()
147
- for (const name of ruleNames) {
148
- if (seen.has(name)) {
149
- duplicates.add(name)
150
- } else {
151
- seen.add(name)
152
- }
153
- }
154
- const filtered = Array.from(duplicates).filter((d: string) => d !== "/^(.+?)-(\\$.+)$/")
155
-
156
- if (filtered.length > 0) {
157
- log(`[UnoCSS] Rule collisions: ${filtered.join(", ")}`, true)
158
- }
159
- }
@@ -1,5 +0,0 @@
1
- import type { ComponentTheme } from "../types/component"
2
-
3
- export function defineTheme<const T extends ComponentTheme>(theme: T): T {
4
- return theme
5
- }
@@ -1,62 +0,0 @@
1
- export function isPlainObject(value: unknown): boolean {
2
- if (value === null || typeof value !== "object") {
3
- return false
4
- }
5
- const prototype = Object.getPrototypeOf(value)
6
-
7
- if (
8
- prototype !== null &&
9
- prototype !== Object.prototype &&
10
- Object.getPrototypeOf(prototype) !== null
11
- ) {
12
- return false
13
- }
14
-
15
- if (Symbol.iterator in value) {
16
- return false
17
- }
18
-
19
- if (Symbol.toStringTag in value) {
20
- return Object.prototype.toString.call(value) === "[object Module]"
21
- }
22
-
23
- return true
24
- }
25
-
26
- export function merge<T extends Record<string, any>>(base: T, defaults: Record<string, any>): T
27
-
28
- export function merge(
29
- base: Record<string, any>,
30
- defaults: Record<string, any>
31
- ): Record<string, any> {
32
- if (!isPlainObject(defaults)) {
33
- return merge(base, {})
34
- }
35
- if (!isPlainObject(base)) {
36
- return { ...defaults }
37
- }
38
-
39
- const object = { ...defaults }
40
-
41
- for (const key of Object.keys(base)) {
42
- if (key === "__proto__" || key === "constructor") {
43
- continue
44
- }
45
-
46
- const value = base[key]
47
-
48
- if (value === null || value === undefined) {
49
- continue
50
- }
51
-
52
- if (Array.isArray(value) && Array.isArray(object[key])) {
53
- object[key] = [...value, ...object[key]]
54
- } else if (isPlainObject(value) && isPlainObject(object[key])) {
55
- object[key] = merge(value, object[key])
56
- } else {
57
- object[key] = value
58
- }
59
- }
60
-
61
- return object
62
- }
@@ -1,39 +0,0 @@
1
- import { cx } from "css-variants"
2
- import { getUIConfig } from "virtual:rimelight-ui"
3
-
4
- // Hoisted once at module load — getUIConfig() returns a static frozen object.
5
- const uiConfig = getUIConfig()
6
-
7
- export function resolveClasses<T extends (...args: never[]) => Record<string, string>>(
8
- themeFn: T,
9
- variants: Parameters<T>[0],
10
- mergedUI: Record<string, string | Function | undefined>,
11
- rootClass?: string
12
- ): Record<string, string> {
13
- const isUnstyled = uiConfig?.unstyled === true
14
-
15
- const resolved = isUnstyled ? {} : themeFn(variants)
16
- const result: Record<string, string> = {}
17
-
18
- // Fill in slots from theme function or default to empty strings if unstyled
19
- const slots = isUnstyled ? Object.keys(mergedUI) : Object.keys(resolved)
20
- if (isUnstyled && rootClass && !slots.includes("root")) {
21
- slots.push("root")
22
- }
23
-
24
- for (const slot of slots) {
25
- const value = isUnstyled ? "" : (resolved[slot] ?? "")
26
- const override = mergedUI[slot]
27
- if (typeof override === "function") {
28
- result[slot] = cx(override(value))
29
- } else {
30
- result[slot] = cx(value, override)
31
- }
32
- }
33
-
34
- if (rootClass) {
35
- result.root = cx(result.root ?? "", rootClass)
36
- }
37
-
38
- return result
39
- }
@@ -1,13 +0,0 @@
1
- import { getUIConfig } from "virtual:rimelight-ui"
2
-
3
- const uiConfig = getUIConfig()
4
-
5
- export function resolveTheme<T>(
6
- themeDefault: T,
7
- themeCreator?: (colors: readonly string[]) => T
8
- ): T {
9
- if (uiConfig.colors && themeCreator) {
10
- return themeCreator(uiConfig.colors)
11
- }
12
- return themeDefault
13
- }
@@ -1,322 +0,0 @@
1
- import { atom } from "nanostores"
2
-
3
- export type Handler = (e: KeyboardEvent) => void
4
-
5
- export interface ShortcutConfig {
6
- handler: Handler
7
- usingInput?: boolean | string
8
- label?: string
9
- description?: string
10
- category?: string
11
- order?: number
12
- }
13
-
14
- export interface ShortcutsConfig {
15
- [key: string]: ShortcutConfig | Handler | false | null | undefined
16
- }
17
-
18
- export interface ShortcutsOptions {
19
- chainDelay?: number
20
- }
21
-
22
- interface Shortcut {
23
- key: string
24
- handler: Handler
25
- chained: boolean
26
- ctrlKey: boolean
27
- metaKey: boolean
28
- shiftKey: boolean
29
- altKey: boolean
30
- usingInput?: boolean | string
31
- }
32
-
33
- export interface RegisteredShortcut {
34
- id: string
35
- keys: string[]
36
- label?: string
37
- description?: string
38
- category?: string
39
- order?: number
40
- }
41
-
42
- // OS detection
43
- const macOS =
44
- typeof window !== "undefined" &&
45
- typeof navigator !== "undefined" &&
46
- /Macintosh;/.test(navigator.userAgent)
47
-
48
- // Modifiers map for human-readable display
49
- const kbdKeysMap: Record<string, string> = {
50
- meta: macOS ? "⌘" : "Ctrl",
51
- command: macOS ? "⌘" : "Ctrl",
52
- ctrl: "Ctrl",
53
- control: "Ctrl",
54
- alt: macOS ? "⌥" : "Alt",
55
- option: macOS ? "⌥" : "Alt",
56
- shift: macOS ? "⇧" : "Shift",
57
- enter: "↵",
58
- delete: "⌦",
59
- backspace: "⌫",
60
- escape: "Esc",
61
- tab: "⇥",
62
- space: "Space",
63
- arrowup: "↑",
64
- arrowdown: "↓",
65
- arrowleft: "←",
66
- arrowright: "→"
67
- }
68
-
69
- // Convert a combination string (e.g. meta_alt_t) into platform-specific readable key symbol arrays
70
- export function formatShortcutKeys(keyStr: string): string[] {
71
- const parts = keyStr.split("_")
72
- return parts.map((part) => {
73
- const lower = part.toLowerCase()
74
- if (kbdKeysMap[lower] !== undefined) {
75
- return kbdKeysMap[lower]
76
- }
77
- if (lower.length === 1) {
78
- return lower.toUpperCase()
79
- }
80
- return part.charAt(0).toUpperCase() + part.slice(1)
81
- })
82
- }
83
-
84
- // Reactive store containing all currently registered shortcuts on the page
85
- export const activeShortcutsStore = atom<RegisteredShortcut[]>([])
86
-
87
- const specialKeysMap: Record<string, string> = {
88
- space: "Space",
89
- enter: "Enter",
90
- escape: "Escape",
91
- tab: "Tab",
92
- backspace: "Backspace",
93
- delete: "Delete",
94
- arrowup: "ArrowUp",
95
- arrowdown: "ArrowDown",
96
- arrowleft: "ArrowLeft",
97
- arrowright: "ArrowRight"
98
- }
99
-
100
- // Simple key to code conversion for layout/translation independence under Alt
101
- function convertKeyToCode(key: string): string {
102
- if (/^[a-z]$/i.test(key)) return `Key${key.toUpperCase()}`
103
- if (/^\d$/.test(key)) return `Digit${key}`
104
- if (/^f\d+$/i.test(key)) return key.toUpperCase()
105
- return specialKeysMap[key.toLowerCase()] || key
106
- }
107
-
108
- // Input tag checking
109
- function isUsingInput(activeElement: Element | null): boolean | string {
110
- if (!activeElement) return false
111
- const tagName = activeElement.tagName
112
- const contentEditable = activeElement.getAttribute("contenteditable")
113
- const isInput =
114
- tagName === "INPUT" ||
115
- tagName === "TEXTAREA" ||
116
- contentEditable === "true" ||
117
- contentEditable === "plaintext-only"
118
- if (isInput) {
119
- return activeElement.getAttribute("name") || true
120
- }
121
- return false
122
- }
123
-
124
- interface ParsedShortcuts {
125
- shortcuts: Shortcut[]
126
- registered: RegisteredShortcut[]
127
- }
128
-
129
- const parseCache = new WeakMap<ShortcutsConfig, ParsedShortcuts>()
130
-
131
- function parseShortcutConfig(config: ShortcutsConfig): ParsedShortcuts {
132
- const cached = parseCache.get(config)
133
- if (cached) return cached
134
-
135
- const shortcuts: Shortcut[] = Object.entries(config)
136
- .map(([key, shortcutConfig]): Shortcut | null => {
137
- if (!shortcutConfig) return null
138
-
139
- let handler: Handler
140
- let usingInput: boolean | string = false
141
-
142
- if (typeof shortcutConfig === "function") {
143
- handler = shortcutConfig
144
- } else {
145
- handler = shortcutConfig.handler
146
- usingInput = shortcutConfig.usingInput ?? false
147
- }
148
-
149
- if (!handler) return null
150
-
151
- const chained = key.includes("-") && key !== "-" && !key.includes("_")
152
- let baseKey = ""
153
- let ctrlKey = false
154
- let metaKey = false
155
- let shiftKey = false
156
- let altKey = false
157
-
158
- if (chained) {
159
- baseKey = key.toLowerCase()
160
- } else {
161
- const parts = key.toLowerCase().split("_")
162
- baseKey = parts
163
- .filter((p) => !["meta", "command", "ctrl", "shift", "alt", "option"].includes(p))
164
- .join("_")
165
- ctrlKey = parts.includes("ctrl")
166
- metaKey = parts.includes("meta") || parts.includes("command")
167
- shiftKey = parts.includes("shift")
168
- altKey = parts.includes("alt") || parts.includes("option")
169
-
170
- if (!macOS && metaKey && !ctrlKey) {
171
- metaKey = false
172
- ctrlKey = true
173
- }
174
- }
175
-
176
- return { key: baseKey, handler, chained, ctrlKey, metaKey, shiftKey, altKey, usingInput }
177
- })
178
- .filter((item): item is Shortcut => item !== null)
179
-
180
- const registered: RegisteredShortcut[] = Object.entries(config).flatMap(
181
- ([key, shortcutConfig]) => {
182
- if (!shortcutConfig || typeof shortcutConfig !== "object") return []
183
-
184
- const { label, description, category, order } = shortcutConfig
185
- if (!label && !description) return []
186
-
187
- const item: RegisteredShortcut = {
188
- id: `${key}-${Math.random().toString(36).slice(2, 7)}`,
189
- keys: formatShortcutKeys(key),
190
- category: category || "system"
191
- }
192
- if (label) item.label = label
193
- if (description) item.description = description
194
- if (order !== undefined) item.order = order
195
- return [item]
196
- }
197
- )
198
-
199
- const result = { shortcuts, registered }
200
- parseCache.set(config, result)
201
- return result
202
- }
203
-
204
- export function defineShortcuts(
205
- config: ShortcutsConfig,
206
- options: ShortcutsOptions = {}
207
- ): () => void {
208
- if (typeof window === "undefined") {
209
- return () => {}
210
- }
211
-
212
- const { shortcuts: parsedShortcuts, registered: itemsToRegister } = parseShortcutConfig(config)
213
-
214
- const chainDelay = options.chainDelay ?? 800
215
- const chainedInputs: string[] = []
216
- let debounceTimer: ReturnType<typeof setTimeout> | undefined
217
-
218
- const clearChainedInput = () => {
219
- chainedInputs.length = 0
220
- }
221
-
222
- if (itemsToRegister.length > 0) {
223
- activeShortcutsStore.set([...activeShortcutsStore.get(), ...itemsToRegister])
224
- }
225
-
226
- const onKeyDown = (e: KeyboardEvent) => {
227
- if (!e.key) return
228
-
229
- const activeEl = document.activeElement
230
- const currentlyUsingInput = isUsingInput(activeEl)
231
-
232
- // Helper to check if a shortcut is enabled given current focus state
233
- const isShortcutEnabled = (shortcut: Shortcut) => {
234
- if (!shortcut.usingInput) {
235
- return !currentlyUsingInput
236
- }
237
- if (typeof shortcut.usingInput === "string") {
238
- return currentlyUsingInput === shortcut.usingInput
239
- }
240
- return true
241
- }
242
-
243
- // Handle chained shortcuts
244
- chainedInputs.push(e.key.toLowerCase())
245
- clearTimeout(debounceTimer)
246
-
247
- if (chainedInputs.length >= 2) {
248
- const chainedKey = chainedInputs.slice(-2).join("-")
249
- const matchedChained = parsedShortcuts.find((s) => s.chained && s.key === chainedKey)
250
- if (matchedChained && isShortcutEnabled(matchedChained)) {
251
- e.preventDefault()
252
- matchedChained.handler(e)
253
- clearChainedInput()
254
- return
255
- }
256
- }
257
-
258
- // Handle standard shortcuts
259
- for (const shortcut of parsedShortcuts) {
260
- if (shortcut.chained) continue
261
-
262
- if (e.ctrlKey !== shortcut.ctrlKey) continue
263
- if (e.metaKey !== shortcut.metaKey) continue
264
- if (e.altKey !== shortcut.altKey) continue
265
-
266
- // Match by code when Alt modifier is active to avoid key translation issues
267
- const useCode = shortcut.altKey && e.altKey
268
- if (useCode) {
269
- if (e.code !== convertKeyToCode(shortcut.key)) continue
270
- } else {
271
- const pressedKey = e.key.toLowerCase()
272
- if (pressedKey !== shortcut.key) continue
273
- }
274
-
275
- // Shift modifier check:
276
- // If the shortcut explicitly specifies shiftKey: true, then e.shiftKey must be true.
277
- // If the shortcut does NOT specify shiftKey: true, but e.shiftKey is true:
278
- // - If the base key is a letter (e.g. 'k'), then we do NOT match (because it's Shift+K, not K).
279
- // - If the base key is a shiftable control key (like 'arrowleft'), we do NOT match.
280
- // - For other keys (like '?', '/', etc.), we allow it to match even if e.shiftKey is true.
281
- const alphabetKey = /^[a-z]$/i.test(shortcut.key)
282
- const shiftableKeys = [
283
- "arrowleft",
284
- "arrowright",
285
- "arrowup",
286
- "arrowdown",
287
- "tab",
288
- "escape",
289
- "enter",
290
- "backspace"
291
- ]
292
- const shiftableKey = shiftableKeys.includes(shortcut.key)
293
-
294
- if (shortcut.shiftKey && !e.shiftKey) continue
295
- if (!shortcut.shiftKey && e.shiftKey && (alphabetKey || shiftableKey)) continue
296
-
297
- if (isShortcutEnabled(shortcut)) {
298
- e.preventDefault()
299
- shortcut.handler(e)
300
- clearChainedInput()
301
- return
302
- }
303
- }
304
-
305
- debounceTimer = setTimeout(clearChainedInput, chainDelay)
306
- }
307
-
308
- window.addEventListener("keydown", onKeyDown)
309
-
310
- return () => {
311
- window.removeEventListener("keydown", onKeyDown)
312
- clearTimeout(debounceTimer)
313
-
314
- // Unregister items from the active store
315
- if (itemsToRegister.length > 0) {
316
- const idsToRemove = new Set(itemsToRegister.map((item) => item.id))
317
- activeShortcutsStore.set(
318
- activeShortcutsStore.get().filter((item) => !idsToRemove.has(item.id))
319
- )
320
- }
321
- }
322
- }
@@ -1,36 +0,0 @@
1
- import { atom } from "nanostores"
2
- import type { ThemeColor } from "../types/component"
3
-
4
- export interface Toast {
5
- id?: string | number
6
- title?: string
7
- description?: string
8
- icon?: string
9
- color?: ThemeColor
10
- timeout?: number
11
- callback?: () => void
12
- }
13
-
14
- export const toastsStore = atom<Toast[]>([])
15
-
16
- export function addToast(toast: Toast) {
17
- const id = toast.id || Date.now()
18
- const newToast = { ...toast, id }
19
- toastsStore.set([...toastsStore.get(), newToast])
20
-
21
- if (toast.timeout !== 0) {
22
- setTimeout(() => {
23
- removeToast(id)
24
- }, toast.timeout || 5000)
25
- }
26
-
27
- return newToast
28
- }
29
-
30
- export function removeToast(id: string | number) {
31
- const currentToasts = toastsStore.get()
32
- const target = currentToasts.find((t) => t.id === id)
33
- if (!target) return
34
- if (target.callback) target.callback()
35
- toastsStore.set(currentToasts.filter((t) => t.id !== id))
36
- }
@@ -1,33 +0,0 @@
1
- import { merge } from "./merge"
2
- import { getUIConfig } from "virtual:rimelight-ui"
3
-
4
- const mergeCache = new WeakMap<object, Record<string, string | Function | undefined>>()
5
-
6
- export function useUi(
7
- componentName: string,
8
- uiProp?: Record<string, string | Function | undefined>
9
- ): Record<string, string | Function | undefined> {
10
- const globalConfig = getUIConfig()
11
- const defaults = globalConfig[componentName]
12
-
13
- if (!defaults) return {}
14
-
15
- if (!uiProp || Object.keys(uiProp).length === 0) {
16
- return defaults
17
- }
18
-
19
- const cached = mergeCache.get(uiProp)
20
- if (cached) return cached
21
-
22
- const merged = merge(uiProp, defaults)
23
- const result: Record<string, string | Function | undefined> = {}
24
- for (const key of Object.keys(merged)) {
25
- const value = merged[key]
26
- if (typeof value === "string" || typeof value === "function") {
27
- result[key] = value
28
- }
29
- }
30
-
31
- mergeCache.set(uiProp, result)
32
- return result
33
- }