@rimelight/ui 0.0.42 → 0.0.44

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 (434) hide show
  1. package/README.md +18 -26
  2. package/package.json +24 -37
  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 +11 -39
  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 +24 -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 +114 -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 +13 -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 +159 -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 +11 -18
  39. package/src/components/callout/callout.theme.ts +55 -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 +45 -13
  46. package/src/components/carousel/carousel.theme.ts +28 -32
  47. package/src/components/chart/RLAChart.astro +6 -12
  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 +3 -17
  69. package/src/components/checkbox/RLSCheckbox.tsx +65 -0
  70. package/src/components/checkbox/checkbox.theme.ts +31 -46
  71. package/src/components/checkbox/checkbox.ts +1 -1
  72. package/src/components/chip/RLAChip.astro +33 -56
  73. package/src/components/chip/chip.theme.ts +62 -72
  74. package/src/components/chip/chip.ts +3 -1
  75. package/src/components/collapsible/RLACollapsible.astro +3 -13
  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 +3 -13
  79. package/src/components/color-area/color-area.theme.ts +16 -32
  80. package/src/components/color-area/color-area.ts +1 -1
  81. package/src/components/color-field/RLAColorField.astro +4 -14
  82. package/src/components/color-field/color-field.theme.ts +15 -31
  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 +3 -13
  87. package/src/components/color-slider/color-slider.theme.ts +17 -33
  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 +15 -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 -12
  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 +122 -21
  119. package/src/components/dashboard-sidebar/dashboard-sidebar.theme.ts +41 -11
  120. package/src/components/dashboard-sidebar/dashboard-sidebar.ts +8 -6
  121. package/src/components/dashboard-sidebar-collapse/RLADashboardSidebarCollapse.astro +25 -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/editor.theme.ts +9 -12
  140. package/src/components/empty/RLAEmpty.astro +86 -20
  141. package/src/components/empty/empty.theme.ts +79 -11
  142. package/src/components/empty/empty.ts +59 -2
  143. package/src/components/error/RLAError.astro +9 -20
  144. package/src/components/error/error.theme.ts +9 -12
  145. package/src/components/field-group/RLAFieldGroup.astro +2 -11
  146. package/src/components/field-group/field-group.theme.ts +18 -22
  147. package/src/components/fieldset/RLAFieldset.astro +9 -20
  148. package/src/components/fieldset/fieldset.theme.ts +9 -12
  149. package/src/components/file-upload/RLAFileUpload.astro +4 -13
  150. package/src/components/file-upload/file-upload.theme.ts +19 -22
  151. package/src/components/file-upload/file-upload.ts +1 -1
  152. package/src/components/floating-action/RLAFloatingAction.astro +9 -20
  153. package/src/components/floating-action/floating-action.theme.ts +9 -12
  154. package/src/components/footer/RLAFooter.astro +34 -38
  155. package/src/components/footer/footer.theme.ts +24 -27
  156. package/src/components/footer/footer.ts +4 -0
  157. package/src/components/form/RLAForm.astro +9 -20
  158. package/src/components/form/form.theme.ts +9 -12
  159. package/src/components/form-field/RLAFormField.astro +5 -12
  160. package/src/components/form-field/RLSFormField.tsx +71 -0
  161. package/src/components/form-field/RLVFormField.vue +5 -14
  162. package/src/components/form-field/form-field.theme.ts +19 -22
  163. package/src/components/form-field/form-field.ts +1 -0
  164. package/src/components/gallery/RLAGallery.astro +9 -20
  165. package/src/components/gallery/gallery.theme.ts +9 -12
  166. package/src/components/gamepad/RLAGamepad.astro +1 -1
  167. package/src/components/grid/RLAGrid.astro +2 -15
  168. package/src/components/grid/grid.theme.ts +31 -34
  169. package/src/components/head/UIHead.astro +297 -0
  170. package/src/components/head/head.theme.ts +9 -12
  171. package/src/components/header/HeaderLayer.astro +63 -0
  172. package/src/components/header/RLAHeader.astro +29 -48
  173. package/src/components/header/header.theme.ts +37 -40
  174. package/src/components/header/header.ts +4 -0
  175. package/src/{utils → components/header}/headerStack.ts +30 -22
  176. package/src/components/hover-card/RLAHoverCard.astro +24 -35
  177. package/src/components/hover-card/hover-card.theme.ts +23 -27
  178. package/src/components/icon/RLAIcon.astro +26 -36
  179. package/src/components/icon/RLSIcon.tsx +8 -9
  180. package/src/components/icon/RLVIcon.vue +23 -12
  181. package/src/components/icon/icon.theme.ts +18 -28
  182. package/src/components/image/RLAImage.astro +20 -23
  183. package/src/components/image/image.theme.ts +29 -32
  184. package/src/components/input/RLAInput.astro +7 -21
  185. package/src/components/input/RLSInput.tsx +101 -0
  186. package/src/components/input/RLVInput.vue +11 -20
  187. package/src/components/input/input.theme.ts +37 -44
  188. package/src/components/input/input.ts +1 -1
  189. package/src/components/input-date/RLAInputDate.astro +9 -20
  190. package/src/components/input-date/input-date.theme.ts +9 -12
  191. package/src/components/input-menu/RLAInputMenu.astro +4 -14
  192. package/src/components/input-menu/input-menu.theme.ts +29 -32
  193. package/src/components/input-menu/input-menu.ts +1 -1
  194. package/src/components/input-number/RLAInputNumber.astro +9 -20
  195. package/src/components/input-number/input-number.theme.ts +9 -12
  196. package/src/components/input-pin/RLAInputPin.astro +9 -22
  197. package/src/components/input-pin/input-pin.theme.ts +9 -13
  198. package/src/components/input-rating/RLAInputRating.astro +2 -23
  199. package/src/components/input-rating/input-rating.theme.ts +64 -76
  200. package/src/components/input-rating/input-rating.ts +1 -1
  201. package/src/components/input-tags/RLAInputTags.astro +174 -21
  202. package/src/components/input-tags/input-tags.theme.ts +37 -12
  203. package/src/components/input-tags/input-tags.ts +50 -0
  204. package/src/components/input-time/RLAInputTime.astro +9 -20
  205. package/src/components/input-time/input-time.theme.ts +9 -12
  206. package/src/components/kbd/RLAKbd.astro +18 -32
  207. package/src/components/kbd/kbd.theme.ts +45 -91
  208. package/src/components/kbd/kbd.ts +3 -0
  209. package/src/components/keyboard/RLAKeyboard.astro +1 -1
  210. package/src/components/knob/RLAKnob.astro +9 -20
  211. package/src/components/knob/knob.theme.ts +9 -12
  212. package/src/components/label/RLALabel.astro +16 -27
  213. package/src/components/label/label.theme.ts +16 -20
  214. package/src/components/layout-grid/RLALayoutGrid.astro +5 -11
  215. package/src/components/layout-grid/layout-grid.theme.ts +12 -15
  216. package/src/components/link/RLALink.astro +7 -20
  217. package/src/components/link/RLSLink.tsx +8 -16
  218. package/src/components/link/RLVLink.vue +7 -16
  219. package/src/components/link/link.theme.ts +33 -37
  220. package/src/components/link/link.ts +5 -5
  221. package/src/components/link-group/RLALinkGroup.astro +8 -45
  222. package/src/components/link-group/link-group.theme.ts +13 -27
  223. package/src/components/link-group/link-group.ts +5 -16
  224. package/src/components/listbox/RLAListbox.astro +9 -20
  225. package/src/components/listbox/listbox.theme.ts +9 -12
  226. package/src/components/locale-selector/RLALocaleSelector.astro +12 -52
  227. package/src/components/locale-selector/locale-selector.theme.ts +42 -45
  228. package/src/components/locale-selector/locale-selector.ts +4 -0
  229. package/src/components/logo/RLALogo.astro +13 -27
  230. package/src/components/logo/logo.theme.ts +9 -12
  231. package/src/components/main/RLAMain.astro +31 -36
  232. package/src/components/main/main.theme.ts +9 -12
  233. package/src/components/marquee/RLAMarquee.astro +62 -43
  234. package/src/components/marquee/marquee.theme.ts +22 -26
  235. package/src/components/meter/RLAMeter.astro +9 -20
  236. package/src/components/meter/meter.theme.ts +9 -12
  237. package/src/components/modal/RLAModal.astro +71 -73
  238. package/src/components/modal/RLSModal.tsx +156 -0
  239. package/src/components/modal/RLVModal.vue +5 -6
  240. package/src/components/modal/modal.theme.ts +42 -46
  241. package/src/components/modal/modal.ts +1 -0
  242. package/src/components/navigation-menu/RLANavigationMenu.astro +22 -31
  243. package/src/components/navigation-menu/navigation-menu.theme.ts +33 -40
  244. package/src/components/navigation-menu/navigation-menu.ts +19 -18
  245. package/src/components/page/RLAPage.astro +9 -20
  246. package/src/components/page/page.theme.ts +9 -12
  247. package/src/components/page-aside/RLAPageAside.astro +9 -20
  248. package/src/components/page-aside/page-aside.theme.ts +9 -12
  249. package/src/components/page-body/RLAPageBody.astro +9 -20
  250. package/src/components/page-body/page-body.theme.ts +9 -12
  251. package/src/components/page-header/RLAPageHeader.astro +9 -20
  252. package/src/components/page-header/page-header.theme.ts +9 -12
  253. package/src/components/page-section/RLAPageSection.astro +11 -15
  254. package/src/components/page-section/page-section.theme.ts +193 -176
  255. package/src/components/pagination/RLAPagination.astro +91 -97
  256. package/src/components/pagination/pagination.theme.ts +22 -26
  257. package/src/components/password/RLAPassword.astro +9 -20
  258. package/src/components/password/password.theme.ts +9 -12
  259. package/src/components/phone-mockup/RLAPhoneMockup.astro +9 -20
  260. package/src/components/phone-mockup/phone-mockup.theme.ts +9 -12
  261. package/src/components/placeholder/RLAPlaceholder.astro +32 -43
  262. package/src/components/placeholder/placeholder.theme.ts +11 -14
  263. package/src/components/popover/RLAPopover.astro +241 -129
  264. package/src/components/popover/popover.theme.ts +23 -27
  265. package/src/components/post/RLAPost.astro +2 -10
  266. package/src/components/post/post.theme.ts +45 -48
  267. package/src/components/pricing-plan/RLAPricingPlan.astro +9 -20
  268. package/src/components/pricing-plan/pricing-plan.theme.ts +9 -12
  269. package/src/components/pricing-table/RLAPricingTable.astro +9 -20
  270. package/src/components/pricing-table/pricing-table.theme.ts +9 -12
  271. package/src/components/progress/RLAProgress.astro +3 -16
  272. package/src/components/progress/progress.theme.ts +19 -35
  273. package/src/components/progress/progress.ts +1 -1
  274. package/src/components/prose/RLAProse.astro +9 -20
  275. package/src/components/prose/prose.theme.ts +9 -12
  276. package/src/components/qr-code/RLAQrCode.astro +9 -20
  277. package/src/components/qr-code/qr-code.theme.ts +9 -12
  278. package/src/components/quote/quote.theme.ts +9 -12
  279. package/src/components/radio-group/RLARadioGroup.astro +9 -20
  280. package/src/components/radio-group/radio-group.theme.ts +9 -12
  281. package/src/components/rating/RLARating.astro +9 -20
  282. package/src/components/rating/rating.theme.ts +9 -12
  283. package/src/components/scroll-area/RLAScrollArea.astro +2 -10
  284. package/src/components/scroll-area/scroll-area.theme.ts +21 -24
  285. package/src/components/scroll-to-top/RLAScrollToTop.astro +70 -45
  286. package/src/components/scroll-to-top/RLVScrollToTop.vue +13 -17
  287. package/src/components/scroll-to-top/scroll-to-top.theme.ts +28 -46
  288. package/src/components/scroll-to-top/scroll-to-top.ts +1 -1
  289. package/src/{utils → components/scroll-to-top}/scroll.ts +19 -6
  290. package/src/components/search/RLASearch.astro +6 -12
  291. package/src/components/search/search.theme.ts +60 -63
  292. package/src/components/select/RLASelect.astro +101 -132
  293. package/src/components/select/RLSSelect.tsx +180 -0
  294. package/src/components/select/RLVSelect.vue +64 -15
  295. package/src/components/select/select.theme.ts +21 -27
  296. package/src/components/select/select.ts +58 -36
  297. package/src/components/separator/RLASeparator.astro +62 -83
  298. package/src/components/separator/separator.theme.ts +135 -138
  299. package/src/components/separator/separator.ts +4 -0
  300. package/src/components/shortcuts/RLAShortcuts.astro +11 -12
  301. package/src/components/sidebar/RLASidebar.astro +14 -24
  302. package/src/components/sidebar/sidebar.theme.ts +39 -42
  303. package/src/components/sidebar/sidebar.ts +2 -0
  304. package/src/components/skeleton/RLASkeleton.astro +13 -22
  305. package/src/components/skeleton/skeleton.theme.ts +16 -19
  306. package/src/components/slideover/RLASlideover.astro +3 -13
  307. package/src/components/slideover/slideover.theme.ts +51 -55
  308. package/src/components/slider/RLASlider.astro +3 -15
  309. package/src/components/slider/slider.theme.ts +17 -34
  310. package/src/components/slider/slider.ts +1 -1
  311. package/src/components/speed-dial/RLASpeedDial.astro +9 -20
  312. package/src/components/speed-dial/speed-dial.theme.ts +9 -12
  313. package/src/components/spinner/RLASpinner.astro +3 -17
  314. package/src/components/spinner/spinner.theme.ts +25 -30
  315. package/src/components/spinner/spinner.ts +1 -1
  316. package/src/components/splitter/RLASplitter.astro +3 -11
  317. package/src/components/splitter/splitter.theme.ts +18 -21
  318. package/src/components/spoiler/RLASpoiler.astro +9 -20
  319. package/src/components/spoiler/spoiler.theme.ts +9 -12
  320. package/src/components/stepper/RLAStepper.astro +300 -21
  321. package/src/components/stepper/stepper.theme.ts +213 -12
  322. package/src/components/stepper/stepper.ts +23 -6
  323. package/src/components/steps/RLASteps.astro +5 -11
  324. package/src/components/steps/steps.theme.ts +9 -12
  325. package/src/components/sticky-surface/RLAStickySurface.astro +67 -38
  326. package/src/components/sticky-surface/sticky-surface.theme.ts +7 -11
  327. package/src/components/sticky-surface/sticky-surface.ts +1 -0
  328. package/src/components/surround/RLASurround.astro +5 -5
  329. package/src/components/switch/RLASwitch.astro +3 -18
  330. package/src/components/switch/switch.theme.ts +46 -61
  331. package/src/components/switch/switch.ts +1 -1
  332. package/src/components/table/RLATable.astro +566 -50
  333. package/src/components/table/table.theme.ts +112 -31
  334. package/src/components/table/table.ts +207 -6
  335. package/src/components/table-of-contents/RLATableOfContents.astro +12 -17
  336. package/src/components/table-of-contents/table-of-contents.theme.ts +60 -63
  337. package/src/components/tabs/RLATabs.astro +195 -51
  338. package/src/components/tabs/tabs.theme.ts +81 -84
  339. package/src/components/tabs/tabs.ts +18 -1
  340. package/src/components/textarea/RLATextarea.astro +16 -13
  341. package/src/components/textarea/RLSTextarea.tsx +69 -0
  342. package/src/components/textarea/RLVTextarea.vue +8 -16
  343. package/src/components/textarea/textarea.theme.ts +21 -24
  344. package/src/components/textarea/textarea.ts +2 -1
  345. package/src/components/theme-selector/RLAThemeSelector.astro +21 -27
  346. package/src/components/theme-selector/theme-selector.theme.ts +11 -14
  347. package/src/components/timeline/RLATimeline.astro +24 -44
  348. package/src/components/timeline/timeline.theme.ts +302 -307
  349. package/src/components/toast/RLAToast.astro +50 -24
  350. package/src/components/toast/store.ts +97 -0
  351. package/src/components/toast/toast.theme.ts +31 -34
  352. package/src/components/toast/toast.ts +1 -1
  353. package/src/components/toaster/RLAToaster.astro +76 -6
  354. package/src/components/tooltip/RLATooltip.astro +136 -33
  355. package/src/components/tooltip/tooltip.theme.ts +23 -26
  356. package/src/components/tour/RLATour.astro +9 -20
  357. package/src/components/tour/tour.theme.ts +9 -12
  358. package/src/components/tree/RLATree.astro +9 -20
  359. package/src/components/tree/tree.theme.ts +9 -12
  360. package/src/components/user/RLAUser.astro +9 -20
  361. package/src/components/user/user.theme.ts +9 -12
  362. package/src/components/video/RLAVideo.astro +5 -10
  363. package/src/components/video/video.theme.ts +13 -16
  364. package/src/components/watermark/RLAWatermark.astro +9 -20
  365. package/src/components/watermark/watermark.theme.ts +9 -12
  366. package/src/components/window-mockup/RLAWindowMockup.astro +9 -20
  367. package/src/components/window-mockup/window-mockup.theme.ts +9 -12
  368. package/src/icons.raw.ts +67 -0
  369. package/src/icons.ts +35 -0
  370. package/src/index.ts +32 -0
  371. package/src/preset.ts +148 -0
  372. package/src/resolver.ts +132 -0
  373. package/src/shortcuts.ts +191 -0
  374. package/src/stores.ts +22 -0
  375. package/src/types.ts +75 -0
  376. package/src/virtual.d.ts +4 -0
  377. package/src/components/editor/PageEditor.vue +0 -459
  378. package/src/components/editor/PageMention.vue +0 -87
  379. package/src/components/editor/PagePropertiesEditor.vue +0 -358
  380. package/src/components/editor/PagePropertiesRenderer.vue +0 -285
  381. package/src/components/editor/PageRenderer.vue +0 -155
  382. package/src/components/editor/PageSurround.vue +0 -130
  383. package/src/components/editor/PageVersionSelector.vue +0 -371
  384. package/src/components/editor/blocks/AddBlockModal.vue +0 -196
  385. package/src/components/editor/blocks/Block.vue +0 -141
  386. package/src/components/editor/blocks/BlockEditRenderer.vue +0 -26
  387. package/src/components/editor/blocks/BlockEditor.vue +0 -141
  388. package/src/components/editor/blocks/BlockViewRenderer.vue +0 -65
  389. package/src/components/editor/blocks/TextRenderer.vue +0 -31
  390. package/src/components/editor/blocks/editor/CalloutBlockEditor.vue +0 -53
  391. package/src/components/editor/blocks/editor/ImageBlockEditor.vue +0 -55
  392. package/src/components/editor/blocks/editor/ParagraphBlockEditor.vue +0 -31
  393. package/src/components/editor/blocks/editor/SectionBlockEditor.vue +0 -65
  394. package/src/components/editor/blocks/nodes/LinkNode.vue +0 -28
  395. package/src/components/editor/blocks/nodes/TextNode.vue +0 -22
  396. package/src/components/editor/blocks/renderer/CalloutBlockRenderer.vue +0 -66
  397. package/src/components/editor/blocks/renderer/ImageBlockRenderer.vue +0 -20
  398. package/src/components/editor/blocks/renderer/ParagraphBlockRenderer.vue +0 -21
  399. package/src/components/editor/blocks/renderer/SectionBlockRenderer.vue +0 -55
  400. package/src/components/editor/composables/injectionKeys.ts +0 -3
  401. package/src/components/editor/composables/useBlockEditor.ts +0 -261
  402. package/src/components/editor/composables/usePageEditor.ts +0 -97
  403. package/src/components/editor/modals/CreatePageModal.vue +0 -160
  404. package/src/components/editor/modals/DeletePageModal.vue +0 -116
  405. package/src/components/editor/modals/PageTreeModal.vue +0 -275
  406. package/src/components/editor/types/blocks.ts +0 -100
  407. package/src/components/editor/types/pages.ts +0 -89
  408. package/src/components/editor/types/schemas.ts +0 -36
  409. package/src/components/editor/utils/blocks.ts +0 -42
  410. package/src/components/editor/utils/editorHelpers.ts +0 -24
  411. package/src/components/editor/utils/page.ts +0 -219
  412. package/src/components/editor/utils/richTextHelpers.ts +0 -35
  413. package/src/components/editor/views/PageEditView.vue +0 -195
  414. package/src/components/editor/views/PageLiveView.vue +0 -90
  415. package/src/components/editor/views/PageReviewView.vue +0 -308
  416. package/src/components/head/RLAHead.astro +0 -528
  417. package/src/components/icon/resolver.ts +0 -37
  418. package/src/config/color.config.ts +0 -300
  419. package/src/config/site.config.ts +0 -28
  420. package/src/config/ui.config.ts +0 -89
  421. package/src/env.d.ts +0 -23
  422. package/src/icons/defaults.ts +0 -44
  423. package/src/presets/index.ts +0 -577
  424. package/src/stores/toast.ts +0 -24
  425. package/src/themes.ts +0 -26
  426. package/src/types/component.ts +0 -28
  427. package/src/ui.ts +0 -159
  428. package/src/utils/defineTheme.ts +0 -5
  429. package/src/utils/merge.ts +0 -62
  430. package/src/utils/resolveClasses.ts +0 -39
  431. package/src/utils/resolveTheme.ts +0 -13
  432. package/src/utils/shortcuts.ts +0 -322
  433. package/src/utils/toast.ts +0 -36
  434. package/src/utils/useUi.ts +0 -33
@@ -1,21 +1,10 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
- import type { TourProps } from "./tour"
6
- import tourTheme from "./tour.theme"
7
-
8
-
9
- const tour = scv(tourTheme)
10
-
11
- const {
12
- ui: uiProp,
13
- class: className,
14
- ...rest
15
- } = Astro.props as TourProps
16
-
17
- const classes = resolveClasses(tour, {}, useUi("tour", uiProp), className);
18
- ---
19
- <div class={classes.root} data-slot="root" {...rest}>
20
- <slot />
1
+ ---
2
+ import { tourTheme } from "./tour.theme"
3
+
4
+
5
+
6
+ const classes = tourTheme(Astro.props)
7
+ ---
8
+ <div class={classes.root} data-slot="root" {...Astro.props}>
9
+ <slot />
21
10
  </div>
@@ -1,13 +1,10 @@
1
- import { defineTheme } from "../../utils/defineTheme"
1
+ import { defineTheme } from "../../resolver"
2
2
 
3
- export const createTourTheme = () =>
4
- defineTheme({
5
- slots: ["root"],
6
- base: {
7
- root: ""
8
- },
9
- variants: {},
10
- defaultVariants: {}
11
- })
12
-
13
- export default createTourTheme()
3
+ export const tourTheme = defineTheme("tour", {
4
+ slots: ["root"],
5
+ base: {
6
+ root: ""
7
+ },
8
+ variants: {},
9
+ defaultVariants: {}
10
+ })
@@ -1,21 +1,10 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
- import type { TreeProps } from "./tree"
6
- import treeTheme from "./tree.theme"
7
-
8
-
9
- const tree = scv(treeTheme)
10
-
11
- const {
12
- ui: uiProp,
13
- class: className,
14
- ...rest
15
- } = Astro.props as TreeProps
16
-
17
- const classes = resolveClasses(tree, {}, useUi("tree", uiProp), className);
18
- ---
19
- <div class={classes.root} data-slot="root" {...rest}>
20
- <slot />
1
+ ---
2
+ import { treeTheme } from "./tree.theme"
3
+
4
+
5
+
6
+ const classes = treeTheme(Astro.props)
7
+ ---
8
+ <div class={classes.root} data-slot="root" {...Astro.props}>
9
+ <slot />
21
10
  </div>
@@ -1,13 +1,10 @@
1
- import { defineTheme } from "../../utils/defineTheme"
1
+ import { defineTheme } from "../../resolver"
2
2
 
3
- export const createTreeTheme = () =>
4
- defineTheme({
5
- slots: ["root"],
6
- base: {
7
- root: ""
8
- },
9
- variants: {},
10
- defaultVariants: {}
11
- })
12
-
13
- export default createTreeTheme()
3
+ export const treeTheme = defineTheme("tree", {
4
+ slots: ["root"],
5
+ base: {
6
+ root: ""
7
+ },
8
+ variants: {},
9
+ defaultVariants: {}
10
+ })
@@ -1,21 +1,10 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
- import type { UserProps } from "./user"
6
- import userTheme from "./user.theme"
7
-
8
-
9
- const user = scv(userTheme)
10
-
11
- const {
12
- ui: uiProp,
13
- class: className,
14
- ...rest
15
- } = Astro.props as UserProps
16
-
17
- const classes = resolveClasses(user, {}, useUi("user", uiProp), className);
18
- ---
19
- <div class={classes.root} data-slot="root" {...rest}>
20
- <slot />
1
+ ---
2
+ import { userTheme } from "./user.theme"
3
+
4
+
5
+
6
+ const classes = userTheme(Astro.props)
7
+ ---
8
+ <div class={classes.root} data-slot="root" {...Astro.props}>
9
+ <slot />
21
10
  </div>
@@ -1,13 +1,10 @@
1
- import { defineTheme } from "../../utils/defineTheme"
1
+ import { defineTheme } from "../../resolver"
2
2
 
3
- export const createUserTheme = () =>
4
- defineTheme({
5
- slots: ["root"],
6
- base: {
7
- root: ""
8
- },
9
- variants: {},
10
- defaultVariants: {}
11
- })
12
-
13
- export default createUserTheme()
3
+ export const userTheme = defineTheme("user", {
4
+ slots: ["root"],
5
+ base: {
6
+ root: ""
7
+ },
8
+ variants: {},
9
+ defaultVariants: {}
10
+ })
@@ -1,9 +1,6 @@
1
1
  ---
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
2
  import type { VideoProps } from "./video"
6
- import videoTheme from "./video.theme"
3
+ import { videoTheme } from "./video.theme"
7
4
  import { Image } from "astro:assets"
8
5
  import RLAIcon from "../icon/RLAIcon.astro"
9
6
 
@@ -112,21 +109,19 @@ function getYoutubeEmbedUrl(rawUrl: string): string | null {
112
109
  }
113
110
 
114
111
 
115
- const video = scv(videoTheme)
116
112
 
117
113
  const {
118
114
  src,
119
115
  title = "YouTube Video Player",
120
116
  icon = "play",
121
- ui: uiProp,
122
- class: className,
123
117
  ...rest
124
118
  } = Astro.props as VideoProps
125
119
 
126
- const classes = resolveClasses(video, {
120
+ const classes = videoTheme({
121
+ ...Astro.props,
127
122
  title: !!(Astro.slots.has("title") || title),
128
- icon: !!(Astro.slots.has("icon") || icon),
129
- }, useUi("video", uiProp), className);
123
+ icon: !!(Astro.slots.has("icon") || icon)
124
+ });
130
125
 
131
126
  const embedUrl = getYoutubeEmbedUrl(src);
132
127
  const thumbnail = await getYoutubeThumbnail(src);
@@ -1,17 +1,14 @@
1
- import { defineTheme } from "../../utils/defineTheme"
1
+ import { defineTheme } from "../../resolver"
2
2
 
3
- export const createVideoTheme = () =>
4
- defineTheme({
5
- slots: ["root", "trigger", "image", "icon"],
6
- base: {
7
- root: "relative aspect-video h-full w-full cursor-pointer overflow-hidden",
8
- trigger: "group absolute inset-0 aspect-video h-full w-full overflow-hidden",
9
- image: "h-full w-full object-cover",
10
- icon: "absolute inset-0 m-auto h-24 w-24 text-white opacity-75 transition-opacity group-hover:opacity-100"
11
- },
12
- variants: {},
13
- compoundVariants: [],
14
- defaultVariants: {}
15
- })
16
-
17
- export default createVideoTheme()
3
+ export const videoTheme = defineTheme("video", {
4
+ slots: ["root", "trigger", "image", "icon"],
5
+ base: {
6
+ root: "relative aspect-video h-full w-full cursor-pointer overflow-hidden",
7
+ trigger: "group absolute inset-0 aspect-video h-full w-full overflow-hidden",
8
+ image: "h-full w-full object-cover",
9
+ icon: "absolute inset-0 m-auto h-24 w-24 text-white opacity-75 transition-opacity group-hover:opacity-100"
10
+ },
11
+ variants: {},
12
+ compoundVariants: [],
13
+ defaultVariants: {}
14
+ })
@@ -1,21 +1,10 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
- import type { WatermarkProps } from "./watermark"
6
- import watermarkTheme from "./watermark.theme"
7
-
8
-
9
- const watermark = scv(watermarkTheme)
10
-
11
- const {
12
- ui: uiProp,
13
- class: className,
14
- ...rest
15
- } = Astro.props as WatermarkProps
16
-
17
- const classes = resolveClasses(watermark, {}, useUi("watermark", uiProp), className);
18
- ---
19
- <div class={classes.root} data-slot="root" {...rest}>
20
- <slot />
1
+ ---
2
+ import { watermarkTheme } from "./watermark.theme"
3
+
4
+
5
+
6
+ const classes = watermarkTheme(Astro.props)
7
+ ---
8
+ <div class={classes.root} data-slot="root" {...Astro.props}>
9
+ <slot />
21
10
  </div>
@@ -1,13 +1,10 @@
1
- import { defineTheme } from "../../utils/defineTheme"
1
+ import { defineTheme } from "../../resolver"
2
2
 
3
- export const createWatermarkTheme = () =>
4
- defineTheme({
5
- slots: ["root"],
6
- base: {
7
- root: ""
8
- },
9
- variants: {},
10
- defaultVariants: {}
11
- })
12
-
13
- export default createWatermarkTheme()
3
+ export const watermarkTheme = defineTheme("watermark", {
4
+ slots: ["root"],
5
+ base: {
6
+ root: ""
7
+ },
8
+ variants: {},
9
+ defaultVariants: {}
10
+ })
@@ -1,21 +1,10 @@
1
- ---
2
- import { scv } from "css-variants"
3
- import { useUi } from "../../utils/useUi"
4
- import { resolveClasses } from "../../utils/resolveClasses"
5
- import type { WindowMockupProps } from "./window-mockup"
6
- import windowMockupTheme from "./window-mockup.theme"
7
-
8
-
9
- const windowMockup = scv(windowMockupTheme)
10
-
11
- const {
12
- ui: uiProp,
13
- class: className,
14
- ...rest
15
- } = Astro.props as WindowMockupProps
16
-
17
- const classes = resolveClasses(windowMockup, {}, useUi("windowMockup", uiProp), className);
18
- ---
19
- <div class={classes.root} data-slot="root" {...rest}>
20
- <slot />
1
+ ---
2
+ import { windowMockupTheme } from "./window-mockup.theme"
3
+
4
+
5
+
6
+ const classes = windowMockupTheme(Astro.props)
7
+ ---
8
+ <div class={classes.root} data-slot="root" {...Astro.props}>
9
+ <slot />
21
10
  </div>
@@ -1,13 +1,10 @@
1
- import { defineTheme } from "../../utils/defineTheme"
1
+ import { defineTheme } from "../../resolver"
2
2
 
3
- export const createWindowMockupTheme = () =>
4
- defineTheme({
5
- slots: ["root"],
6
- base: {
7
- root: ""
8
- },
9
- variants: {},
10
- defaultVariants: {}
11
- })
12
-
13
- export default createWindowMockupTheme()
3
+ export const windowMockupTheme = defineTheme("window-mockup", {
4
+ slots: ["root"],
5
+ base: {
6
+ root: ""
7
+ },
8
+ variants: {},
9
+ defaultVariants: {}
10
+ })
@@ -0,0 +1,67 @@
1
+ export const svg = (inner: string) =>
2
+ `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" width="100%" height="100%">${inner}</svg>`
3
+
4
+ export const getIconSvg = (name: string): string | undefined => {
5
+ if (!Object.prototype.hasOwnProperty.call(ICONS, name)) return undefined
6
+ return svg(ICONS[name as keyof typeof ICONS])
7
+ }
8
+
9
+ export const ICONS = {
10
+ alertTriangle: `<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4M12 17h.01"/>`,
11
+ alignLeft: `<line x1="21" x2="3" y1="6" y2="6"/><line x1="15" x2="3" y1="12" y2="12"/><line x1="17" x2="3" y1="18" y2="18"/>`,
12
+ arrowLeft: `<path d="M19 12H5M12 19l-7-7 7-7"/>`,
13
+ arrowRight: `<path d="M5 12h14M12 5l7 7-7 7"/>`,
14
+ bell: `<path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9M10.3 21a1.94 1.94 0 0 0 3.4 0"/>`,
15
+ check: `<path d="M20 6 9 17l-5-5"/>`,
16
+ chevronDown: `<path d="m6 9 6 6 6-6"/>`,
17
+ chevronLeft: `<path d="m15 18-6-6 6-6"/>`,
18
+ chevronRight: `<path d="m9 18 6-6-6-6"/>`,
19
+ chevronsUpDown: `<path d="m7 15 5 5 5-5M7 9l5-5 5 5"/>`,
20
+ circleCheck: `<circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/>`,
21
+ circleX: `<circle cx="12" cy="12" r="10"/><path d="m15 9-6 6M9 9l6 6"/>`,
22
+ close: `<path d="M18 6 6 18M6 6l12 12"/>`,
23
+ copy: `<rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>`,
24
+ download: `<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3"/>`,
25
+ externalLink: `<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14 21 3"/>`,
26
+ fileQuestion: `<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4M9.1 11.8a3 3 0 0 1 5.8 1c0 .9-.6 1.4-1.1 1.8-.4.3-.8.7-.8 1.4M12 19h.01"/>`,
27
+ gripHorizontal: `<circle cx="12" cy="9" r="1"/><circle cx="19" cy="9" r="1"/><circle cx="5" cy="9" r="1"/><circle cx="12" cy="15" r="1"/><circle cx="19" cy="15" r="1"/><circle cx="5" cy="15" r="1"/>`,
28
+ gripVertical: `<circle cx="9" cy="12" r="1"/><circle cx="9" cy="5" r="1"/><circle cx="9" cy="19" r="1"/><circle cx="15" cy="12" r="1"/><circle cx="15" cy="5" r="1"/><circle cx="15" cy="19" r="1"/>`,
29
+ hardDrive: `<rect width="20" height="8" x="2" y="14" rx="2"/><path d="M6 18h.01M10 18h.01M2 14L5 3h14l3 11"/>`,
30
+ image: `<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>`,
31
+ imageUpscale: `<path d="M16 3H3v13h13V3z"/><path d="M21 21v-4a2 2 0 0 0-2-2h-3M21 11V9M21 5a2 2 0 0 0-2-2h-1"/>`,
32
+ info: `<circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/>`,
33
+ layers: `<path d="m12 3-10 5L12 13l10-5-10-5Z"/><path d="M2 17l10 5 10-5M2 12l10 5 10-5"/>`,
34
+ list: `<line x1="8" x2="21" y1="6" y2="6"/><line x1="8" x2="21" y1="12" y2="12"/><line x1="8" x2="21" y1="18" y2="18"/><line x1="3" x2="3.01" y1="6" y2="6"/><line x1="3" x2="3.01" y1="12" y2="12"/><line x1="3" x2="3.01" y1="18" y2="18"/>`,
35
+ loaderCircle: `<path d="M21 12a9 9 0 1 1-6.219-8.56"/>`,
36
+ moon: `<path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"/>`,
37
+ panelLeft: `<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M9 3v18"/>`,
38
+ play: `<polygon points="6 3 20 12 6 21 6 3"/>`,
39
+ quote: `<path d="M3 21c3 0 7-1 7-8V5c0-1.25-.75-2-2-2H4c-1.25 0-2 .75-2 2v6c0 1.25.75 2 2 2h3c0 4-3 6-3 6Zm11 0c3 0 7-1 7-8V5c0-1.25-.75-2-2-2h-4c-1.25 0-2 .75-2 2v6c0 1.25.75 2 2 2h3c0 4-3 6-3 6Z"/>`,
40
+ search: `<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>`,
41
+ share: `<circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="m8.59 13.51 6.83 3.98M15.41 6.51l-6.82 3.98"/>`,
42
+ sun: `<circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41"/>`,
43
+ uploadCloud: `<path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242M12 12v9M9 15l3-3 3 3"/>`,
44
+ user: `<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>`,
45
+ star: `<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>`,
46
+ lock: `<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>`,
47
+ eye: `<path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0z"/><circle cx="12" cy="12" r="3"/>`,
48
+ eyeOff: `<path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"/><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"/><path d="M17.479 17.499A10.75 10.75 0 0 1 2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.225-4.22"/><line x1="2" x2="22" y1="2" y2="22"/>`,
49
+ arrowUp: `<path d="M12 19V5M5 12l7-7 7 7"/>`,
50
+ arrowDown: `<path d="M12 5v14M19 12l-7 7-7-7"/>`,
51
+ edit: `<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>`,
52
+ link: `<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>`,
53
+ plus: `<path d="M5 12h14M12 5v14"/>`,
54
+ trash: `<path d="M3 6h18M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6M10 11v6M14 11v6"/><path d="M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/>`,
55
+ fileText: `<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M10 9H8M16 13H8M16 17H8"/>`,
56
+ settings: `<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/>`,
57
+ type: `<polyline points="4 7 4 4 20 4 20 7"/><line x1="9" x2="15" y1="20" y2="20"/><line x1="12" x2="12" y1="4" y2="20"/>`,
58
+ code: `<polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/>`,
59
+ film: `<rect width="18" height="18" x="3" y="3" rx="2"/><path d="M7 3v18M17 3v18M3 7h4M17 7h4M3 12h18M3 17h4M17 17h4"/>`,
60
+ messageSquare: `<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>`,
61
+ bookOpen: `<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/>`,
62
+ panelRight: `<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="M15 3v18"/>`,
63
+ pin: `<path d="M12 17v5"/><path d="M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"/>`,
64
+ ellipsisVertical: `<circle cx="12" cy="12" r="1"/><circle cx="12" cy="5" r="1"/><circle cx="12" cy="19" r="1"/>`,
65
+ arrowUpFromLine: `<path d="m18 9-6-6-6 6"/><path d="M12 3v14"/><path d="M5 21h14"/>`,
66
+ arrowDownToLine: `<path d="M12 17V3"/><path d="m6 11 6 6 6-6"/><path d="M5 21h14"/>`
67
+ } as const
package/src/icons.ts ADDED
@@ -0,0 +1,35 @@
1
+ import uiConfig from "virtual:rimelight/ui"
2
+ import { getIconSvg, ICONS, svg } from "./icons.raw"
3
+
4
+ export { ICONS, svg }
5
+
6
+ export const getSvgIcon = (k: string): string => getIconSvg(k) ?? ""
7
+
8
+ export const DEFAULT_ICONS: Record<keyof typeof ICONS, string> = Object.fromEntries(
9
+ Object.keys(ICONS).map((k) => [k, getSvgIcon(k)])
10
+ ) as Record<keyof typeof ICONS, string>
11
+
12
+ export type RimelightIcons = Partial<Record<keyof typeof ICONS | (string & {}), string>>
13
+
14
+ const EMPTY_ICON = { isClass: false, content: "" }
15
+ const cache = new Map<string, { isClass: boolean; content: string }>()
16
+
17
+ export const resolveIcon = (name = "", custom?: string) => {
18
+ if (!name) return EMPTY_ICON
19
+ const raw = custom || uiConfig?.icons?.[name] || name
20
+ let res = cache.get(raw)
21
+ if (!res) {
22
+ const content = getIconSvg(raw)
23
+ res =
24
+ content !== undefined
25
+ ? { isClass: false, content }
26
+ : raw.startsWith("i-") || raw.includes(":")
27
+ ? { isClass: true, content: raw }
28
+ : {
29
+ isClass: false,
30
+ content: raw.startsWith("<svg") ? raw : raw.startsWith("<") ? svg(raw) : ""
31
+ }
32
+ cache.set(raw, res)
33
+ }
34
+ return res
35
+ }
package/src/index.ts ADDED
@@ -0,0 +1,32 @@
1
+ import UnoCSS from "@unocss/vite"
2
+ import rimelightUiPreset from "./preset"
3
+ import type { UIConfig } from "./types"
4
+
5
+ const ID = "virtual:rimelight/ui"
6
+
7
+ export const ui = ({ unocss = {}, ...cfg }: UIConfig = {}) => [
8
+ UnoCSS({
9
+ ...unocss,
10
+ presets: [rimelightUiPreset(cfg), ...(unocss.presets || [])],
11
+ content: {
12
+ ...unocss.content,
13
+ pipeline: unocss.content?.pipeline !== false && {
14
+ ...unocss.content?.pipeline,
15
+ include: [
16
+ /\.(vue|svelte|[jt]sx?|mdx?|astro|html)($|\?)/,
17
+ /[\\/](@rimelight\/(ui|cms)|packages\/(ui|cms))[\\/]/,
18
+ ...[unocss.content?.pipeline?.include]
19
+ .flat()
20
+ .filter((v): v is string | RegExp => Boolean(v))
21
+ ]
22
+ }
23
+ }
24
+ }),
25
+ {
26
+ name: "rimelight/ui",
27
+ enforce: "pre",
28
+ resolveId: (id: string) => (id === ID ? `\0${ID}` : null),
29
+ load: (id: string) =>
30
+ id === `\0${ID}` ? `import "virtual:uno.css";\nexport default ${JSON.stringify(cfg)};` : null
31
+ }
32
+ ]
package/src/preset.ts ADDED
@@ -0,0 +1,148 @@
1
+ import { presetIcons, presetTypography, presetWind4, type Preset } from "unocss"
2
+ import type { ColorModeInput, UIConfig } from "./types"
3
+ import { getIconSvg } from "./icons.raw"
4
+
5
+ export const PALETTES = {
6
+ neutral: [0, 0],
7
+ primary: [0.21, 260],
8
+ secondary: [0.18, 70],
9
+ info: [0.24, 260],
10
+ success: [0.2, 150],
11
+ warning: [0.17, 86],
12
+ error: [0.24, 25],
13
+ commentary: [0.29, 322],
14
+ ideation: [0.28, 293],
15
+ source: [0.13, 215]
16
+ } as const
17
+
18
+ const SHADES = {
19
+ "50": [0.985, 0.1, 0.145, 0.2],
20
+ "100": [0.965, 0.25, 0.2, 0.35],
21
+ "200": [0.925, 0.45, 0.28, 0.55],
22
+ "300": [0.85, 0.7, 0.35, 0.75],
23
+ "400": [0.72, 0.9, 0.44, 0.9],
24
+ "500": [0.55, 1, 0.53, 1],
25
+ "600": [0.44, 0.9, 0.61, 0.85],
26
+ "700": [0.35, 0.75, 0.69, 0.7],
27
+ "800": [0.27, 0.6, 0.77, 0.55],
28
+ "900": [0.2, 0.45, 0.86, 0.4],
29
+ "950": [0.145, 0.3, 0.93, 0.25]
30
+ } as const
31
+
32
+ const SHADE_ENTRIES = Object.entries(SHADES)
33
+
34
+ const INTENTS: Record<string, Record<string, string>> = {
35
+ default: { text: "700", bg: "50", border: "200", ring: "300" },
36
+ muted: { text: "600", bg: "100", border: "200", ring: "300" },
37
+ elevated: { text: "800", bg: "100", border: "200", ring: "400" },
38
+ accented: { text: "900", bg: "200", border: "300", ring: "500" },
39
+ dimmed: { text: "500", bg: "50", border: "300", ring: "400" },
40
+ toned: { text: "800", bg: "700", border: "600", ring: "900" },
41
+ highlighted: { text: "950", bg: "200", border: "800", ring: "950" },
42
+ inverted: { text: "50", bg: "950", border: "800", ring: "700" }
43
+ }
44
+
45
+ const createThemeShades = (name: string) => ({
46
+ DEFAULT: `var(--rl-${name}-500)`,
47
+ ...Object.fromEntries(SHADE_ENTRIES.map(([s]) => [s, `var(--rl-${name}-${s})`]))
48
+ })
49
+
50
+ const createOklchShadeGetter = ([c, h]: readonly [number, number]) => {
51
+ const oklch = (l: number, factor: number) => `oklch(${l} ${(factor * c).toFixed(3)} ${h})`
52
+ return (_: string, [l1, c1, l2, c2]: readonly [number, number, number, number]) => [
53
+ oklch(l1, c1),
54
+ oklch(l2, c2)
55
+ ]
56
+ }
57
+
58
+ const createCustomShadeGetter = (val: any) => {
59
+ const isSplit = "light" in val || "dark" in val
60
+ const light = (isSplit ? val.light : val) ?? {}
61
+ const dark = (isSplit ? val.dark : light) ?? light
62
+ const fallback = light["500"] ?? Object.values(light)[0] ?? "oklch(0.55 0.15 0)"
63
+ return (s: string) => [light[s] ?? fallback, dark[s] ?? fallback]
64
+ }
65
+
66
+ function resolveTokens(custom: Record<string, ColorModeInput> = {}) {
67
+ const themeColors: Record<string, Record<string, string>> = {}
68
+ const tokenVarLines: string[] = []
69
+
70
+ for (const [name, val] of Object.entries({ ...PALETTES, ...custom })) {
71
+ themeColors[name] = createThemeShades(name)
72
+ const getShade = Array.isArray(val) ? createOklchShadeGetter(val) : createCustomShadeGetter(val)
73
+
74
+ for (const [s, coords] of SHADE_ENTRIES) {
75
+ const [light, dark] = getShade(s, coords as any)
76
+ tokenVarLines.push(`--rl-${name}-${s}: light-dark(${light}, ${dark});`)
77
+ }
78
+ }
79
+
80
+ return { themeColors, tokenVarLines }
81
+ }
82
+
83
+ export default function rimelightUiPreset({ colors, icons, presets = {} }: UIConfig = {}): Preset {
84
+ const { themeColors, tokenVarLines } = resolveTokens(colors)
85
+
86
+ return {
87
+ name: "rimelight-ui",
88
+ outputToCssLayers: true,
89
+ safelist: [
90
+ ...Object.keys(themeColors).map((c) => `rl-color-${c}`),
91
+ ...Object.values(icons ?? {}).filter(
92
+ (v): v is string => typeof v === "string" && v.startsWith("i-")
93
+ )
94
+ ],
95
+ presets: [
96
+ presets.wind !== false && presetWind4(),
97
+ presets.typography !== false && presetTypography(),
98
+ presets.icons !== false && presetIcons({ collections: { rl: getIconSvg } }),
99
+ {
100
+ name: "rimelight-theme",
101
+ theme: {
102
+ spacing: { md: "1rem" },
103
+ colors: themeColors
104
+ }
105
+ }
106
+ ].filter(Boolean) as Preset[],
107
+ shortcuts: [
108
+ [
109
+ /^(text|bg|ring|border)-([a-z]+)(?:\/(\d+))?$/,
110
+ ([, p, n, o]) => {
111
+ const s = INTENTS[n!]?.[p!]
112
+ if (!s) return
113
+ const base = `${p}-neutral-${s}${o ? `/${o}` : ""}`
114
+ return p === "bg" && n === "inverted" ? `${base} text-neutral-50` : base
115
+ }
116
+ ]
117
+ ],
118
+ rules: [
119
+ [
120
+ /^rl-color-([\w-]+)$/,
121
+ ([, c]) => {
122
+ const v500 = `var(--rl-${c}-500)`
123
+ const v600 = `var(--rl-${c}-600)`
124
+ return {
125
+ "--rl-bg": v500,
126
+ "--rl-ring": v500,
127
+ "--rl-border": v500,
128
+ "--rl-bg-hover": v600,
129
+ "--rl-text": v600
130
+ }
131
+ }
132
+ ]
133
+ ],
134
+ preflights: [
135
+ {
136
+ getCSS: () => `:root {
137
+ color-scheme: light dark;
138
+ --rl-header-height: 4rem;
139
+ --rl-container: 90rem;
140
+ ${tokenVarLines.join("\n ")}
141
+ }
142
+ [data-theme="dark"] { color-scheme: dark; }
143
+ [data-theme="light"] { color-scheme: light; }
144
+ body { background-color: var(--rl-neutral-50); color: var(--rl-neutral-950); }`
145
+ }
146
+ ]
147
+ }
148
+ }