@rimelight/ui 0.0.34 → 0.0.36
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.
- package/README.md +1 -0
- package/package.json +19 -24
- package/src/components/astro/RLAAccordion.astro +94 -18
- package/src/components/astro/RLAAvatar.astro +135 -68
- package/src/components/astro/RLABadge.astro +4 -2
- package/src/components/astro/RLABanner.astro +138 -23
- package/src/components/astro/RLABreadcrumb.astro +13 -0
- package/src/components/astro/RLAButton.astro +8 -4
- package/src/components/astro/RLACallout.astro +112 -0
- package/src/components/astro/RLACard.astro +6 -5
- package/src/components/astro/RLACarousel.astro +104 -75
- package/src/components/astro/RLAChart.astro +4 -1
- package/src/components/astro/RLAChip.astro +11 -5
- package/src/components/astro/RLACollapsible.astro +4 -1
- package/src/components/astro/RLAColorArea.astro +432 -0
- package/src/components/astro/RLAColorField.astro +300 -0
- package/src/components/astro/RLAColorSlider.astro +413 -0
- package/src/components/astro/RLAConfirm.astro +13 -11
- package/src/components/astro/RLACopyMarkdown.astro +78 -0
- package/src/components/astro/RLADate.astro +30 -0
- package/src/components/astro/RLADrawer.astro +50 -3
- package/src/components/astro/RLADropdownMenu.astro +78 -51
- package/src/components/astro/RLAFieldGroup.astro +4 -1
- package/src/components/astro/RLAFileUpload.astro +114 -100
- package/src/components/astro/RLAFooter.astro +2 -1
- package/src/components/astro/RLAFormField.astro +10 -6
- package/src/components/astro/RLAGrid.astro +31 -39
- package/src/components/astro/RLAHead.astro +139 -39
- package/src/components/astro/RLAHeader.astro +2 -1
- package/src/components/astro/RLAImage.astro +274 -251
- package/src/components/astro/RLAInput.astro +14 -9
- package/src/components/astro/RLAInputMenu.astro +119 -83
- package/src/components/astro/RLAKbd.astro +5 -5
- package/src/components/astro/RLALayoutGrid.astro +395 -0
- package/src/components/astro/RLALink.astro +23 -1
- package/src/components/astro/RLALinkGroup.astro +99 -99
- package/src/components/astro/RLALocaleSelector.astro +34 -41
- package/src/components/astro/RLALogo.astro +117 -90
- package/src/components/astro/RLAModal.astro +48 -18
- package/src/components/astro/RLANavigationMenu.astro +381 -326
- package/src/components/astro/{RLADocsPackageManagers.astro → RLAPackageManagers.astro} +81 -87
- package/src/components/astro/RLAPageSection.astro +4 -2
- package/src/components/astro/RLAPopover.astro +4 -3
- package/src/components/astro/RLAPost.astro +11 -2
- package/src/components/astro/RLAScrollArea.astro +4 -1
- package/src/components/astro/RLAScrollToTop.astro +200 -172
- package/src/components/astro/RLASearch.astro +282 -0
- package/src/components/astro/RLASelect.astro +78 -55
- package/src/components/astro/RLASeparator.astro +11 -6
- package/src/components/astro/RLAShare.astro +60 -0
- package/src/components/astro/RLAShortcuts.astro +429 -0
- package/src/components/astro/RLASidebar.astro +158 -212
- package/src/components/astro/RLASlideover.astro +47 -17
- package/src/components/astro/RLASplitter.astro +194 -141
- package/src/components/astro/RLASteps.astro +118 -71
- package/src/components/astro/RLASurround.astro +39 -0
- package/src/components/astro/RLATable.astro +4 -1
- package/src/components/astro/RLATableOfContents.astro +109 -23
- package/src/components/astro/RLATabs.astro +147 -133
- package/src/components/astro/RLATextarea.astro +4 -1
- package/src/components/astro/RLAThemeSelector.astro +105 -76
- package/src/components/astro/RLAToast.astro +35 -21
- package/src/components/vue/RLVBanner.vue +230 -0
- package/src/components/vue/RLVButton.vue +3 -2
- package/src/components/vue/RLVCheckbox.vue +4 -2
- package/src/components/vue/RLVFooter.vue +3 -2
- package/src/components/vue/RLVHeader.vue +3 -2
- package/src/components/vue/RLVIcon.vue +4 -2
- package/src/components/vue/RLVInput.vue +5 -4
- package/src/components/vue/RLVLogo.vue +25 -3
- package/src/components/vue/RLVPlaceholder.vue +3 -2
- package/src/components/vue/RLVPost.vue +8 -2
- package/src/components/vue/RLVProgress.vue +60 -0
- package/src/components/vue/RLVScrollToTop.vue +65 -52
- package/src/components/vue/RLVSection.vue +14 -13
- package/src/components/vue/RLVToast.vue +17 -4
- package/src/composables/index.ts +1 -0
- package/src/composables/useHeaderStore.ts +1 -0
- package/src/composables/useShortcuts.ts +11 -0
- package/src/config/security.ts +43 -36
- package/src/config/site.config.ts +1 -0
- package/src/docs/components/ApiChangelog.astro +147 -0
- package/src/{plugins/starlightDocsApi → docs}/components/ApiEmits.astro +4 -4
- package/src/{plugins/starlightDocsApi → docs}/components/ApiProps.astro +4 -4
- package/src/{plugins/starlightDocsApi → docs}/components/ApiSlots.astro +4 -4
- package/src/docs/components/ApiTheme.astro +100 -0
- package/src/docs/extractAll.ts +94 -0
- package/src/docs/extractors/extractAstro.ts +69 -0
- package/src/docs/extractors/extractTheme.ts +56 -0
- package/src/{plugins/starlightDocsApi/extract-vue.ts → docs/extractors/extractVue.ts} +164 -15
- package/src/{plugins/starlightDocsApi → docs}/utils.ts +1 -2
- package/src/env.d.ts +0 -12
- package/src/integrations/ui.ts +35 -19
- package/src/middleware/security.ts +75 -19
- package/src/presets/index.ts +118 -293
- package/src/styles/index.css +0 -2
- package/src/themes/accordion.theme.ts +29 -3
- package/src/themes/aspect-ratio.theme.ts +1 -1
- package/src/themes/avatar-group.theme.ts +1 -1
- package/src/themes/avatar.theme.ts +2 -2
- package/src/themes/badge.theme.ts +2 -3
- package/src/themes/banner.theme.ts +40 -4
- package/src/themes/breadcrumb.theme.ts +1 -1
- package/src/themes/button.theme.ts +21 -22
- package/src/themes/{alert.theme.ts → callout.theme.ts} +12 -39
- package/src/themes/card.theme.ts +17 -9
- package/src/themes/carousel.theme.ts +1 -1
- package/src/themes/checkbox.theme.ts +1 -2
- package/src/themes/chip.theme.ts +2 -3
- package/src/themes/color-area.theme.ts +33 -0
- package/src/themes/color-field.theme.ts +32 -0
- package/src/themes/color-slider.theme.ts +34 -0
- package/src/themes/confirm.theme.ts +1 -1
- package/src/themes/container.theme.ts +1 -1
- package/src/themes/drawer.theme.ts +1 -1
- package/src/themes/footer.theme.ts +2 -2
- package/src/themes/grid.theme.ts +38 -0
- package/src/themes/header.theme.ts +4 -3
- package/src/themes/hover-card.theme.ts +1 -1
- package/src/themes/image.theme.ts +11 -1
- package/src/themes/input.theme.ts +7 -1
- package/src/themes/kbd.theme.ts +2 -3
- package/src/themes/label.theme.ts +1 -1
- package/src/themes/layout-grid.theme.ts +16 -0
- package/src/themes/link-group.theme.ts +0 -4
- package/src/themes/marquee.theme.ts +1 -1
- package/src/themes/modal.theme.ts +1 -1
- package/src/themes/navigation-menu.theme.ts +2 -2
- package/src/themes/page-section.theme.ts +4 -2
- package/src/themes/pagination.theme.ts +1 -1
- package/src/themes/pin-input.theme.ts +1 -1
- package/src/themes/popover.theme.ts +1 -1
- package/src/themes/post.theme.ts +23 -3
- package/src/themes/progress.theme.ts +1 -2
- package/src/themes/scroll-to-top.theme.ts +2 -3
- package/src/themes/search.theme.ts +64 -0
- package/src/themes/separator.theme.ts +1 -1
- package/src/themes/slideover.theme.ts +1 -1
- package/src/themes/slider.theme.ts +1 -2
- package/src/themes/spinner.theme.ts +1 -2
- package/src/themes/{megamenu.theme.ts → steps.theme.ts} +3 -3
- package/src/themes/sticky-surface.theme.ts +1 -1
- package/src/themes/switch.theme.ts +1 -2
- package/src/themes/table-of-contents.theme.ts +21 -2
- package/src/themes/timeline.theme.ts +7 -2
- package/src/themes/toast.theme.ts +1 -1
- package/src/types/components/accordion.ts +35 -2
- package/src/types/components/avatar.ts +16 -0
- package/src/types/components/banner.ts +42 -0
- package/src/types/components/button.ts +3 -4
- package/src/types/components/{alert.ts → callout.ts} +6 -6
- package/src/types/components/color-area.ts +19 -0
- package/src/types/components/color-field.ts +21 -0
- package/src/types/components/color-slider.ts +20 -0
- package/src/types/components/grid.ts +23 -0
- package/src/types/components/input.ts +4 -0
- package/src/types/components/layout-grid.ts +145 -0
- package/src/types/components/link-group.ts +4 -2
- package/src/types/components/link.ts +15 -0
- package/src/types/components/logo.ts +3 -3
- package/src/types/components/post.ts +12 -0
- package/src/types/components/search.ts +29 -0
- package/src/types/components/sidebar.ts +2 -6
- package/src/types/components/{megamenu.ts → steps.ts} +7 -1
- package/src/types/components/table-of-contents.ts +22 -0
- package/src/types/components/toast.ts +4 -0
- package/src/types/docs.ts +40 -0
- package/src/types/index.ts +151 -1
- package/src/types/theme.ts +6 -6
- package/src/utils/color.ts +165 -0
- package/src/utils/docs.ts +260 -110
- package/src/utils/headerStack.ts +24 -4
- package/src/utils/index.ts +2 -0
- package/src/utils/shortcuts.ts +322 -0
- package/src/components/TableOfContents.astro +0 -107
- package/src/components/astro/RLAAlert.astro +0 -93
- package/src/components/astro/RLAChangelog.astro +0 -23
- package/src/components/astro/RLAMegamenu.astro +0 -23
- package/src/plugins/index.ts +0 -2
- package/src/plugins/starlightDocsApi/components/ApiTheme.astro +0 -27
- package/src/plugins/starlightDocsApi/index.ts +0 -272
- package/src/styles/prism.css +0 -42
- package/src/themes/changelog.theme.ts +0 -13
- package/src/types/components/index.ts +0 -134
- /package/src/{plugins/starlightDocsApi → docs}/types.ts +0 -0
package/src/themes/kbd.theme.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createKbdTheme = (colors: string[] = defaultColors) =>
|
|
4
|
+
export const createKbdTheme = (colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root"],
|
|
7
7
|
base: {
|
|
@@ -11,7 +11,7 @@ export const createKbdTheme = (colors: string[] = defaultColors) =>
|
|
|
11
11
|
color: {
|
|
12
12
|
...Object.fromEntries(colors.map((color) => [color, { root: "" }])),
|
|
13
13
|
neutral: { root: "" }
|
|
14
|
-
},
|
|
14
|
+
} as Record<string, { root: string }>,
|
|
15
15
|
variant: {
|
|
16
16
|
solid: { root: "" },
|
|
17
17
|
outline: { root: "" },
|
|
@@ -24,7 +24,6 @@ export const createKbdTheme = (colors: string[] = defaultColors) =>
|
|
|
24
24
|
lg: { root: "h-6 min-w-[24px] text-[12px]" }
|
|
25
25
|
},
|
|
26
26
|
theme: {
|
|
27
|
-
flat: { root: "rl-flat" },
|
|
28
27
|
light: { root: "rl-light" },
|
|
29
28
|
dark: { root: "rl-dark" }
|
|
30
29
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createLabelTheme = (
|
|
4
|
+
export const createLabelTheme = (_colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root"],
|
|
7
7
|
base: {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineTheme } from "../utils/defineTheme"
|
|
2
|
+
|
|
3
|
+
export const createLayoutGridTheme = () =>
|
|
4
|
+
defineTheme({
|
|
5
|
+
slots: ["root", "overlay", "container", "columns"],
|
|
6
|
+
base: {
|
|
7
|
+
root: "",
|
|
8
|
+
overlay: "fixed top-0 left-0 w-full h-full pointer-events-none",
|
|
9
|
+
container: "h-full mx-auto",
|
|
10
|
+
columns: "grid h-full"
|
|
11
|
+
},
|
|
12
|
+
variants: {},
|
|
13
|
+
defaultVariants: {}
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
export default createLayoutGridTheme()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createMarqueeTheme = (
|
|
4
|
+
export const createMarqueeTheme = (_colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root", "track"],
|
|
7
7
|
base: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createModalTheme = (
|
|
4
|
+
export const createModalTheme = (_colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: [
|
|
7
7
|
"root",
|
|
@@ -13,11 +13,11 @@ export const createNavigationMenuTheme = () =>
|
|
|
13
13
|
content:
|
|
14
14
|
"absolute left-0 top-full z-50 mt-1.5 w-56 rounded-md border bg-popover p-1 text-popover-foreground shadow-md origin-top-left",
|
|
15
15
|
viewportWrapper: "absolute left-0 top-full flex justify-center w-full",
|
|
16
|
-
viewport:
|
|
16
|
+
viewport:
|
|
17
|
+
"relative mt-1.5 h-auto w-full origin-[top_center] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90"
|
|
17
18
|
},
|
|
18
19
|
variants: {
|
|
19
20
|
theme: {
|
|
20
|
-
flat: { link: "rl-flat", trigger: "rl-flat" },
|
|
21
21
|
light: { link: "rl-light", trigger: "rl-light" },
|
|
22
22
|
dark: { link: "rl-dark", trigger: "rl-dark" }
|
|
23
23
|
},
|
|
@@ -20,7 +20,8 @@ export const createPageSectionTheme = () =>
|
|
|
20
20
|
base: {
|
|
21
21
|
root: "relative isolate",
|
|
22
22
|
background: "absolute inset-0 -z-1 overflow-hidden",
|
|
23
|
-
container:
|
|
23
|
+
container:
|
|
24
|
+
"mx-auto w-full max-w-[1440px] px-xs sm:px-md md:px-xl lg:px-xl flex flex-col lg:grid",
|
|
24
25
|
wrapper: "",
|
|
25
26
|
header: "",
|
|
26
27
|
leading: "flex items-center mb-6",
|
|
@@ -55,7 +56,8 @@ export const createPageSectionTheme = () =>
|
|
|
55
56
|
},
|
|
56
57
|
cta: {
|
|
57
58
|
root: "rounded-xl overflow-hidden",
|
|
58
|
-
container:
|
|
59
|
+
container:
|
|
60
|
+
"mx-auto w-full max-w-[1440px] px-xs sm:px-md md:px-xl lg:px-xl lg:grid py-12 sm:py-24 lg:py-24 gap-8 sm:gap-16",
|
|
59
61
|
title: "text-3xl sm:text-4xl",
|
|
60
62
|
description: "text-base sm:text-lg",
|
|
61
63
|
body: "mt-8",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createPaginationTheme = (
|
|
4
|
+
export const createPaginationTheme = (_colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root", "list", "item", "link", "ellipsis"],
|
|
7
7
|
base: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createPinInputTheme = (
|
|
4
|
+
export const createPinInputTheme = (_colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root"],
|
|
7
7
|
base: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createPopoverTheme = (
|
|
4
|
+
export const createPopoverTheme = (_colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root", "trigger", "content"],
|
|
7
7
|
base: {
|
package/src/themes/post.theme.ts
CHANGED
|
@@ -2,11 +2,21 @@ import { defineTheme } from "../utils/defineTheme"
|
|
|
2
2
|
|
|
3
3
|
export const createPostTheme = () =>
|
|
4
4
|
defineTheme({
|
|
5
|
-
slots: [
|
|
5
|
+
slots: [
|
|
6
|
+
"root",
|
|
7
|
+
"imageWrapper",
|
|
8
|
+
"image",
|
|
9
|
+
"content",
|
|
10
|
+
"title",
|
|
11
|
+
"description",
|
|
12
|
+
"badge",
|
|
13
|
+
"date",
|
|
14
|
+
"footer"
|
|
15
|
+
],
|
|
6
16
|
base: {
|
|
7
|
-
root: "group relative flex
|
|
17
|
+
root: "group relative flex overflow-hidden transition-all duration-300",
|
|
8
18
|
imageWrapper: "relative overflow-hidden aspect-video",
|
|
9
|
-
image: "w-full h-full object-cover transition-transform duration-500",
|
|
19
|
+
image: "absolute inset-0 w-full h-full object-cover transition-transform duration-500",
|
|
10
20
|
content: "flex-1 p-4",
|
|
11
21
|
title: "font-bold text-xl line-clamp-2",
|
|
12
22
|
description: "text-neutral-500 text-sm mt-1 line-clamp-3",
|
|
@@ -14,6 +24,15 @@ export const createPostTheme = () =>
|
|
|
14
24
|
footer: "p-4 border-t border-neutral-100"
|
|
15
25
|
},
|
|
16
26
|
variants: {
|
|
27
|
+
orientation: {
|
|
28
|
+
vertical: {
|
|
29
|
+
root: "flex-col"
|
|
30
|
+
},
|
|
31
|
+
horizontal: {
|
|
32
|
+
root: "flex-col md:flex-row",
|
|
33
|
+
imageWrapper: "w-full md:w-80 md:shrink-0 md:aspect-auto"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
17
36
|
variant: {
|
|
18
37
|
soft: {
|
|
19
38
|
root: "bg-white rounded-2xl shadow-xl hover:shadow-2xl border border-neutral-100",
|
|
@@ -26,6 +45,7 @@ export const createPostTheme = () =>
|
|
|
26
45
|
}
|
|
27
46
|
},
|
|
28
47
|
defaultVariants: {
|
|
48
|
+
orientation: "vertical",
|
|
29
49
|
variant: "soft"
|
|
30
50
|
}
|
|
31
51
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createProgressTheme = (colors: string[] = defaultColors) =>
|
|
4
|
+
export const createProgressTheme = (colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root", "indicator"],
|
|
7
7
|
base: {
|
|
@@ -24,7 +24,6 @@ export const createProgressTheme = (colors: string[] = defaultColors) =>
|
|
|
24
24
|
lg: { root: "h-5" }
|
|
25
25
|
},
|
|
26
26
|
theme: {
|
|
27
|
-
flat: { root: "rl-flat" },
|
|
28
27
|
light: { root: "rl-light" },
|
|
29
28
|
dark: { root: "rl-dark" }
|
|
30
29
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { defineTheme } from "../utils/defineTheme"
|
|
2
2
|
|
|
3
|
-
export const createScrollToTopTheme = (colors: string[] = ["primary", "secondary"]) =>
|
|
3
|
+
export const createScrollToTopTheme = (colors: readonly string[] = ["primary", "secondary"]) =>
|
|
4
4
|
defineTheme({
|
|
5
5
|
slots: ["root", "button", "progressBase", "svg", "iconContainer", "icon"],
|
|
6
6
|
base: {
|
|
7
7
|
root: "fixed bottom-6 right-6 z-50",
|
|
8
|
-
button: "size-14 lg:size-12 p-0 rounded-full",
|
|
8
|
+
button: "size-14 lg:size-12 p-0 rounded-full bg-black/85",
|
|
9
9
|
progressBase: "progress-circle-base size-full",
|
|
10
10
|
svg: "size-full",
|
|
11
11
|
iconContainer: "absolute inset-0 flex items-center justify-center text-center",
|
|
@@ -25,7 +25,6 @@ export const createScrollToTopTheme = (colors: string[] = ["primary", "secondary
|
|
|
25
25
|
])
|
|
26
26
|
),
|
|
27
27
|
theme: {
|
|
28
|
-
flat: { root: "rl-flat" },
|
|
29
28
|
light: { root: "rl-light" },
|
|
30
29
|
dark: { root: "rl-dark" }
|
|
31
30
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { defineTheme } from "../utils/defineTheme"
|
|
2
|
+
|
|
3
|
+
export const createSearchTheme = () =>
|
|
4
|
+
defineTheme({
|
|
5
|
+
slots: [
|
|
6
|
+
"root",
|
|
7
|
+
"trigger",
|
|
8
|
+
"triggerIcon",
|
|
9
|
+
"triggerLabel",
|
|
10
|
+
"triggerKbd",
|
|
11
|
+
"modal",
|
|
12
|
+
"dialog",
|
|
13
|
+
"header",
|
|
14
|
+
"headerIcon",
|
|
15
|
+
"input",
|
|
16
|
+
"close",
|
|
17
|
+
"closeIcon",
|
|
18
|
+
"results",
|
|
19
|
+
"resultItem",
|
|
20
|
+
"resultHeader",
|
|
21
|
+
"resultTitle",
|
|
22
|
+
"resultBadge",
|
|
23
|
+
"resultSnippet",
|
|
24
|
+
"empty",
|
|
25
|
+
"footer",
|
|
26
|
+
"footerHint"
|
|
27
|
+
],
|
|
28
|
+
base: {
|
|
29
|
+
root: "relative inline-block",
|
|
30
|
+
trigger:
|
|
31
|
+
"flex items-center gap-xs text-neutral-400 hover:text-white transition-colors bg-neutral-900 border border-neutral-800 rounded-full px-3 py-1.5 text-sm cursor-pointer",
|
|
32
|
+
triggerIcon: "i-lucide-search w-4 h-4",
|
|
33
|
+
triggerLabel: "hidden lg:inline text-xs opacity-60",
|
|
34
|
+
triggerKbd:
|
|
35
|
+
"hidden lg:inline-flex items-center gap-0.5 text-[10px] bg-neutral-800 border border-neutral-700 px-1.5 py-0.5 rounded font-sans text-neutral-400",
|
|
36
|
+
modal:
|
|
37
|
+
"fixed inset-0 z-[1000] hidden items-start justify-center pt-[10vh] px-4 bg-black/70 backdrop-blur-sm",
|
|
38
|
+
dialog:
|
|
39
|
+
"bg-neutral-900 border border-neutral-800 rounded-xl w-full max-w-xl shadow-2xl overflow-hidden flex flex-col",
|
|
40
|
+
header: "flex items-center border-b border-neutral-800 px-4 py-3",
|
|
41
|
+
headerIcon: "i-lucide-search text-neutral-400 w-5 h-5 mr-3",
|
|
42
|
+
input:
|
|
43
|
+
"bg-transparent text-white placeholder-neutral-500 focus:outline-none flex-1 text-base border-none p-0",
|
|
44
|
+
close:
|
|
45
|
+
"text-neutral-400 hover:text-white transition-colors bg-transparent border-0 cursor-pointer p-0 flex items-center justify-center",
|
|
46
|
+
closeIcon: "i-lucide-x w-5 h-5",
|
|
47
|
+
results: "max-h-[350px] overflow-y-auto p-2 empty:hidden flex flex-col gap-1",
|
|
48
|
+
resultItem:
|
|
49
|
+
"flex flex-col gap-1 p-3 hover:bg-neutral-800 rounded-lg transition-colors border border-transparent hover:border-neutral-700 text-left decoration-none",
|
|
50
|
+
resultHeader: "flex items-center justify-between",
|
|
51
|
+
resultTitle: "text-sm font-semibold text-white",
|
|
52
|
+
resultBadge:
|
|
53
|
+
"text-[10px] uppercase tracking-wider px-1.5 py-0.5 rounded bg-neutral-800 text-neutral-400 font-mono",
|
|
54
|
+
resultSnippet: "text-xs text-neutral-400 line-clamp-2 m-0",
|
|
55
|
+
empty: "p-6 text-center text-neutral-500 text-sm hidden",
|
|
56
|
+
footer:
|
|
57
|
+
"bg-neutral-950 border-t border-neutral-800 px-4 py-2 flex items-center justify-between text-[11px] text-neutral-500",
|
|
58
|
+
footerHint: "flex items-center gap-1"
|
|
59
|
+
},
|
|
60
|
+
variants: {},
|
|
61
|
+
defaultVariants: {}
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
export default createSearchTheme()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createSeparatorTheme = (colors: string[] = defaultColors) =>
|
|
4
|
+
export const createSeparatorTheme = (colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root", "border", "container", "icon", "avatar", "avatarSize", "label"],
|
|
7
7
|
base: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createSlideoverTheme = (
|
|
4
|
+
export const createSlideoverTheme = (_colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: [
|
|
7
7
|
"root",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createSliderTheme = (colors: string[] = defaultColors) =>
|
|
4
|
+
export const createSliderTheme = (colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root", "track", "range", "thumb"],
|
|
7
7
|
base: {
|
|
@@ -23,7 +23,6 @@ export const createSliderTheme = (colors: string[] = defaultColors) =>
|
|
|
23
23
|
])
|
|
24
24
|
),
|
|
25
25
|
theme: {
|
|
26
|
-
flat: { root: "rl-flat" },
|
|
27
26
|
light: { root: "rl-light" },
|
|
28
27
|
dark: { root: "rl-dark" }
|
|
29
28
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createSpinnerTheme = (colors: string[] = defaultColors) =>
|
|
4
|
+
export const createSpinnerTheme = (colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root"],
|
|
7
7
|
base: {
|
|
@@ -20,7 +20,6 @@ export const createSpinnerTheme = (colors: string[] = defaultColors) =>
|
|
|
20
20
|
...colors.map((color) => [color, { root: "rl-color-" + color + " text-[var(--rl-text)]" }])
|
|
21
21
|
]),
|
|
22
22
|
theme: {
|
|
23
|
-
flat: { root: "rl-flat" },
|
|
24
23
|
light: { root: "rl-light" },
|
|
25
24
|
dark: { root: "rl-dark" }
|
|
26
25
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { defineTheme } from "../utils/defineTheme"
|
|
2
2
|
|
|
3
|
-
export const
|
|
3
|
+
export const createStepsTheme = () =>
|
|
4
4
|
defineTheme({
|
|
5
5
|
slots: ["root"],
|
|
6
6
|
base: {
|
|
7
|
-
root: ""
|
|
7
|
+
root: "w-full"
|
|
8
8
|
},
|
|
9
9
|
variants: {},
|
|
10
10
|
defaultVariants: {}
|
|
11
11
|
})
|
|
12
12
|
|
|
13
|
-
export default
|
|
13
|
+
export default createStepsTheme()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createStickySurfaceTheme = (
|
|
4
|
+
export const createStickySurfaceTheme = (_colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root"],
|
|
7
7
|
base: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defaultColors } from "../presets/defaults"
|
|
2
2
|
import { defineTheme } from "../utils/defineTheme"
|
|
3
3
|
|
|
4
|
-
export const createSwitchTheme = (colors: string[] = defaultColors) =>
|
|
4
|
+
export const createSwitchTheme = (colors: readonly string[] = defaultColors) =>
|
|
5
5
|
defineTheme({
|
|
6
6
|
slots: ["root", "input", "track", "thumb", "label"],
|
|
7
7
|
base: {
|
|
@@ -35,7 +35,6 @@ export const createSwitchTheme = (colors: string[] = defaultColors) =>
|
|
|
35
35
|
false: { thumb: "translate-x-0" }
|
|
36
36
|
},
|
|
37
37
|
theme: {
|
|
38
|
-
flat: { root: "rl-flat" },
|
|
39
38
|
light: { root: "rl-light" },
|
|
40
39
|
dark: { root: "rl-dark" }
|
|
41
40
|
}
|
|
@@ -2,9 +2,28 @@ import { defineTheme } from "../utils/defineTheme"
|
|
|
2
2
|
|
|
3
3
|
export const createTableOfContentsTheme = () =>
|
|
4
4
|
defineTheme({
|
|
5
|
-
slots: [
|
|
5
|
+
slots: [
|
|
6
|
+
"root",
|
|
7
|
+
"container",
|
|
8
|
+
"top",
|
|
9
|
+
"bottom",
|
|
10
|
+
"trigger",
|
|
11
|
+
"title",
|
|
12
|
+
"trailing",
|
|
13
|
+
"trailingIcon",
|
|
14
|
+
"content",
|
|
15
|
+
"list",
|
|
16
|
+
"listWithChildren",
|
|
17
|
+
"item",
|
|
18
|
+
"itemWithChildren",
|
|
19
|
+
"link",
|
|
20
|
+
"linkText",
|
|
21
|
+
"indicator",
|
|
22
|
+
"indicatorLine",
|
|
23
|
+
"indicatorActive"
|
|
24
|
+
],
|
|
6
25
|
base: {
|
|
7
|
-
root: "sticky top-(--ui-header-height) z-10 bg-default/75 lg:bg-[initial] backdrop-blur -mx-4 px-4 sm:px-6 sm:-mx-6 lg:ms-0 overflow-y-auto max-h-[calc(100vh-var(--ui-header-height))]",
|
|
26
|
+
root: "sticky top-(--ui-header-height) z-10 bg-default/75 lg:bg-[initial] backdrop-blur -mx-4 px-4 sm:px-6 sm:-mx-6 lg:ms-0 xl:mx-0 overflow-y-auto overflow-x-hidden max-h-[calc(100vh-var(--ui-header-height))]",
|
|
8
27
|
container:
|
|
9
28
|
"pt-4 sm:pt-6 pb-2.5 sm:pb-4.5 lg:py-8 border-b border-dashed border-default lg:border-0 flex flex-col",
|
|
10
29
|
top: "",
|
|
@@ -2,9 +2,14 @@ import { defineTheme } from "../utils/defineTheme"
|
|
|
2
2
|
|
|
3
3
|
export const createTimelineTheme = () =>
|
|
4
4
|
defineTheme({
|
|
5
|
-
slots: ["root"],
|
|
5
|
+
slots: ["root", "node", "dot", "dotInner", "header", "content"],
|
|
6
6
|
base: {
|
|
7
|
-
root: ""
|
|
7
|
+
root: "relative flex flex-col pl-6 border-l-2 border-gray-800 ml-2 py-2",
|
|
8
|
+
node: "relative timeline-node",
|
|
9
|
+
dot: "absolute -left-[33px] top-[2px] flex h-4 w-4 items-center justify-center rounded-full bg-gray-950 ring-2 ring-gray-800",
|
|
10
|
+
dotInner: "h-2 w-2 rounded-full bg-primary-500",
|
|
11
|
+
header: "flex items-center justify-between gap-4 mb-3",
|
|
12
|
+
content: "space-y-2 text-sm text-gray-400"
|
|
8
13
|
},
|
|
9
14
|
variants: {},
|
|
10
15
|
defaultVariants: {}
|
|
@@ -4,7 +4,7 @@ export const createToastTheme = () =>
|
|
|
4
4
|
defineTheme({
|
|
5
5
|
slots: ["root", "title", "description", "action", "close"],
|
|
6
6
|
base: {
|
|
7
|
-
root: "group pointer-events-auto relative flex w-full items-
|
|
7
|
+
root: "group pointer-events-auto relative flex w-full items-start justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all border-border bg-background text-foreground",
|
|
8
8
|
title: "text-sm font-semibold",
|
|
9
9
|
description: "text-xs opacity-90",
|
|
10
10
|
action:
|
|
@@ -1,8 +1,37 @@
|
|
|
1
|
+
export interface AccordionItem {
|
|
2
|
+
label?: string
|
|
3
|
+
icon?: string
|
|
4
|
+
trailingIcon?: string
|
|
5
|
+
content?: string
|
|
6
|
+
disabled?: boolean
|
|
7
|
+
slot?: string
|
|
8
|
+
class?: any
|
|
9
|
+
ui?: any
|
|
10
|
+
[key: string]: unknown
|
|
11
|
+
}
|
|
12
|
+
|
|
1
13
|
export interface AccordionProps {
|
|
2
14
|
/**
|
|
3
|
-
*
|
|
15
|
+
* An array of accordion items to render.
|
|
16
|
+
*/
|
|
17
|
+
items?: AccordionItem[]
|
|
18
|
+
/**
|
|
19
|
+
* The summary text displayed when the accordion is collapsed (for single-item usage).
|
|
20
|
+
*/
|
|
21
|
+
summary?: string
|
|
22
|
+
/**
|
|
23
|
+
* Determines whether multiple items can be open at the same time. If false, uses HTML5 details
|
|
24
|
+
* 'name' attribute to group them. Defaults to false (single open at a time).
|
|
25
|
+
*/
|
|
26
|
+
multiple?: boolean
|
|
27
|
+
/**
|
|
28
|
+
* The icon displayed on the right side of the trigger. Defaults to 'i-lucide-chevron-down'.
|
|
4
29
|
*/
|
|
5
|
-
|
|
30
|
+
trailingIcon?: string
|
|
31
|
+
/**
|
|
32
|
+
* When true, prevents user interaction with all items.
|
|
33
|
+
*/
|
|
34
|
+
disabled?: boolean
|
|
6
35
|
/**
|
|
7
36
|
* Slot-specific CSS class overrides.
|
|
8
37
|
*/
|
|
@@ -11,5 +40,9 @@ export interface AccordionProps {
|
|
|
11
40
|
* Additional CSS classes to apply to the root element.
|
|
12
41
|
*/
|
|
13
42
|
class?: any
|
|
43
|
+
/**
|
|
44
|
+
* A unique name to group accordion items when multiple is false.
|
|
45
|
+
*/
|
|
46
|
+
name?: string
|
|
14
47
|
[key: string]: unknown
|
|
15
48
|
}
|
|
@@ -48,6 +48,22 @@ export interface AvatarProps {
|
|
|
48
48
|
sizes?: string
|
|
49
49
|
srcset?: string
|
|
50
50
|
usemap?: string
|
|
51
|
+
/**
|
|
52
|
+
* Compact initials displayed inside the avatar circle (alias for fallback)
|
|
53
|
+
*/
|
|
54
|
+
initials?: string
|
|
55
|
+
/**
|
|
56
|
+
* Display name rendered adjacent to the avatar (e.g. "Daniel Marchi")
|
|
57
|
+
*/
|
|
58
|
+
title?: string
|
|
59
|
+
/**
|
|
60
|
+
* Secondary description rendered below the title (e.g. "Lead Developer")
|
|
61
|
+
*/
|
|
62
|
+
subtitle?: string
|
|
63
|
+
/**
|
|
64
|
+
* Accessible aria-label fallback for screen readers when avatar is purely visual
|
|
65
|
+
*/
|
|
66
|
+
label?: string
|
|
51
67
|
/**
|
|
52
68
|
* Slot-specific CSS class overrides.
|
|
53
69
|
*/
|
|
@@ -1,4 +1,46 @@
|
|
|
1
|
+
export interface BannerAction {
|
|
2
|
+
label: string
|
|
3
|
+
href?: string
|
|
4
|
+
variant?: string
|
|
5
|
+
color?: string
|
|
6
|
+
size?: string
|
|
7
|
+
class?: string
|
|
8
|
+
[key: string]: unknown
|
|
9
|
+
}
|
|
10
|
+
|
|
1
11
|
export interface BannerProps {
|
|
12
|
+
/**
|
|
13
|
+
* Whether to contain the banner content within a max-width container.
|
|
14
|
+
*/
|
|
15
|
+
contain?: boolean
|
|
16
|
+
/**
|
|
17
|
+
* Whether the banner should be sticky at the top of the viewport.
|
|
18
|
+
*/
|
|
19
|
+
sticky?: boolean
|
|
20
|
+
/**
|
|
21
|
+
* Whether the banner should be fixed at the top of the viewport.
|
|
22
|
+
*/
|
|
23
|
+
fixed?: boolean
|
|
24
|
+
/**
|
|
25
|
+
* The z-index stack position of the banner.
|
|
26
|
+
*/
|
|
27
|
+
stackIndex?: number
|
|
28
|
+
/**
|
|
29
|
+
* Whether to hide the banner when scrolling down and show it when scrolling up.
|
|
30
|
+
*/
|
|
31
|
+
hideOnScroll?: boolean
|
|
32
|
+
/**
|
|
33
|
+
* Whether the banner can be closed by the user. Closes permanently via localStorage.
|
|
34
|
+
*/
|
|
35
|
+
dismissable?: boolean
|
|
36
|
+
/**
|
|
37
|
+
* Key used for localStorage dismissal persistence. Defaults to auto-generated id.
|
|
38
|
+
*/
|
|
39
|
+
dismissId?: string
|
|
40
|
+
/**
|
|
41
|
+
* List of action buttons to render in the banner.
|
|
42
|
+
*/
|
|
43
|
+
actions?: BannerAction[]
|
|
2
44
|
/**
|
|
3
45
|
* Slot-specific CSS class overrides.
|
|
4
46
|
*/
|
|
@@ -4,7 +4,7 @@ export interface ButtonProps {
|
|
|
4
4
|
/**
|
|
5
5
|
* The visual style variant of the button
|
|
6
6
|
*/
|
|
7
|
-
variant?: "solid" | "outline" | "
|
|
7
|
+
variant?: "solid" | "outline" | "soft" | "subtle" | "ghost" | "link"
|
|
8
8
|
/**
|
|
9
9
|
* The color scheme applied to the button
|
|
10
10
|
*/
|
|
@@ -52,12 +52,11 @@ export interface ButtonProps {
|
|
|
52
52
|
/**
|
|
53
53
|
* Color used when button is in active state
|
|
54
54
|
*/
|
|
55
|
-
activeColor?:
|
|
56
|
-
| ThemeColor
|
|
55
|
+
activeColor?: ThemeColor
|
|
57
56
|
/**
|
|
58
57
|
* Variant used when button is in active state
|
|
59
58
|
*/
|
|
60
|
-
activeVariant?: "solid" | "outline" | "
|
|
59
|
+
activeVariant?: "solid" | "outline" | "soft" | "subtle" | "ghost" | "link"
|
|
61
60
|
/**
|
|
62
61
|
* Theme mode override — pins colors to flat, light, or dark mode.
|
|
63
62
|
*/
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import type { Theme, ThemeColor } from "../theme"
|
|
2
2
|
|
|
3
|
-
export interface
|
|
3
|
+
export interface CalloutProps {
|
|
4
4
|
/**
|
|
5
|
-
* The visual variant of the
|
|
5
|
+
* The visual variant of the callout.
|
|
6
6
|
*/
|
|
7
|
-
variant?: "default" | "destructive" | "outline" | "solid"
|
|
7
|
+
variant?: "default" | "destructive" | "outline" | "solid" | "soft" | "subtle"
|
|
8
8
|
/**
|
|
9
|
-
* The color scheme of the
|
|
9
|
+
* The color scheme of the callout.
|
|
10
10
|
*/
|
|
11
11
|
color?: ThemeColor
|
|
12
12
|
/**
|
|
13
|
-
* The main title text of the
|
|
13
|
+
* The main title text of the callout.
|
|
14
14
|
*/
|
|
15
15
|
title?: string
|
|
16
16
|
/**
|
|
17
|
-
* The secondary description text of the
|
|
17
|
+
* The secondary description text of the callout.
|
|
18
18
|
*/
|
|
19
19
|
description?: string
|
|
20
20
|
/**
|