@rimelight/ui 0.0.27 → 0.0.29
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/package.json +14 -13
- package/src/components/astro/RLAAccordion.astro +2 -6
- package/src/components/astro/RLAButton.astro +7 -23
- package/src/components/astro/RLAEmbedYoutube.astro +34 -25
- package/src/components/astro/RLAFooter.astro +2 -10
- package/src/components/astro/RLAHeader.astro +2 -14
- package/src/components/astro/RLAIcon.astro +2 -11
- package/src/components/astro/RLALogo.astro +2 -12
- package/src/components/astro/RLAPlaceholder.astro +2 -8
- package/src/components/astro/RLAScrollToTop.astro +2 -14
- package/src/components/astro/RLASection.astro +24 -82
- package/src/components/vue/RLVButton.vue +2 -64
- package/src/components/vue/RLVFooter.vue +2 -9
- package/src/components/vue/RLVHeader.vue +2 -13
- package/src/components/vue/RLVIcon.vue +2 -10
- package/src/components/vue/RLVLogo.vue +13 -21
- package/src/components/vue/RLVPlaceholder.vue +2 -8
- package/src/components/vue/RLVScrollToTop.vue +2 -13
- package/src/components/vue/RLVSection.vue +2 -19
- package/src/env.d.ts +1 -1
- package/src/integrations/ui.ts +17 -1
- package/src/presets/index.ts +63 -193
- package/src/themes/button.theme.ts +180 -511
- package/src/themes/embedYoutube.theme.ts +14 -0
- package/src/types/components/accordion.ts +15 -0
- package/src/types/components/button.ts +71 -0
- package/src/types/components/embed-youtube.ts +27 -0
- package/src/types/components/footer.ts +15 -0
- package/src/types/components/header.ts +31 -0
- package/src/types/components/icon.ts +19 -0
- package/src/types/components/index.ts +12 -0
- package/src/types/components/link.ts +23 -0
- package/src/types/components/logo.ts +27 -0
- package/src/types/components/navigation.ts +34 -0
- package/src/types/components/placeholder.ts +11 -0
- package/src/types/components/scroll-to-top.ts +31 -0
- package/src/types/components/section.ts +63 -0
- package/src/types/index.ts +1 -0
- package/src/nuxt-types.ts +0 -3
|
@@ -2,72 +2,10 @@
|
|
|
2
2
|
import { computed, useSlots } from "vue"
|
|
3
3
|
import { scv } from "css-variants"
|
|
4
4
|
import { useUi, resolveClasses } from "../../utils"
|
|
5
|
-
import type {
|
|
5
|
+
import type { ButtonProps } from "../../types/components/button"
|
|
6
6
|
import buttonTheme from "../../themes/button.theme"
|
|
7
7
|
|
|
8
8
|
const button = scv(buttonTheme)
|
|
9
|
-
type ButtonVariants = ComponentVariants<typeof buttonTheme>
|
|
10
|
-
|
|
11
|
-
export interface RLVButtonProps {
|
|
12
|
-
/**
|
|
13
|
-
* The visual style variant of the button
|
|
14
|
-
*/
|
|
15
|
-
variant?: ButtonVariants["variant"]
|
|
16
|
-
/**
|
|
17
|
-
* The color scheme applied to the button
|
|
18
|
-
*/
|
|
19
|
-
color?: ButtonVariants["color"]
|
|
20
|
-
/**
|
|
21
|
-
* The size scale of the button
|
|
22
|
-
*/
|
|
23
|
-
size?: ButtonVariants["size"]
|
|
24
|
-
/**
|
|
25
|
-
* When provided, renders the button as an anchor link
|
|
26
|
-
*/
|
|
27
|
-
href?: string
|
|
28
|
-
/**
|
|
29
|
-
* The text label displayed inside the button
|
|
30
|
-
*/
|
|
31
|
-
label?: string
|
|
32
|
-
/**
|
|
33
|
-
* Icon name displayed before the label
|
|
34
|
-
*/
|
|
35
|
-
leadingIcon?: string
|
|
36
|
-
/**
|
|
37
|
-
* Icon name displayed after the label
|
|
38
|
-
*/
|
|
39
|
-
trailingIcon?: string
|
|
40
|
-
/**
|
|
41
|
-
* Shows a loading spinner animation
|
|
42
|
-
*/
|
|
43
|
-
loading?: boolean
|
|
44
|
-
/**
|
|
45
|
-
* Renders a square button with equal padding
|
|
46
|
-
*/
|
|
47
|
-
square?: boolean
|
|
48
|
-
/**
|
|
49
|
-
* Makes the button stretch to full width
|
|
50
|
-
*/
|
|
51
|
-
block?: boolean
|
|
52
|
-
/**
|
|
53
|
-
* Applies active state styling
|
|
54
|
-
*/
|
|
55
|
-
active?: boolean
|
|
56
|
-
/**
|
|
57
|
-
* Color used when button is in active state
|
|
58
|
-
*/
|
|
59
|
-
activeColor?: ButtonVariants["color"]
|
|
60
|
-
/**
|
|
61
|
-
* Variant used when button is in active state
|
|
62
|
-
*/
|
|
63
|
-
activeVariant?: ButtonVariants["variant"]
|
|
64
|
-
/**
|
|
65
|
-
* Component-specific CSS class overrides
|
|
66
|
-
*/
|
|
67
|
-
ui?: ComponentSlots<typeof buttonTheme>
|
|
68
|
-
class?: any
|
|
69
|
-
[key: string]: unknown
|
|
70
|
-
}
|
|
71
9
|
|
|
72
10
|
const {
|
|
73
11
|
variant = "solid",
|
|
@@ -85,7 +23,7 @@ const {
|
|
|
85
23
|
activeVariant,
|
|
86
24
|
ui: uiProp,
|
|
87
25
|
class: className
|
|
88
|
-
} = defineProps<
|
|
26
|
+
} = defineProps<ButtonProps>()
|
|
89
27
|
|
|
90
28
|
const slots = useSlots()
|
|
91
29
|
|
|
@@ -2,19 +2,12 @@
|
|
|
2
2
|
import { computed } from "vue"
|
|
3
3
|
import { scv } from "css-variants"
|
|
4
4
|
import { useUi, resolveClasses } from "../../utils"
|
|
5
|
-
import type {
|
|
5
|
+
import type { FooterProps } from "../../types/components/footer"
|
|
6
6
|
import footerTheme from "../../themes/footer.theme"
|
|
7
7
|
|
|
8
8
|
const footer = scv(footerTheme)
|
|
9
|
-
type FooterVariants = ComponentVariants<typeof footerTheme>
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
contain?: FooterVariants["contain"]
|
|
13
|
-
ui?: ComponentSlots<typeof footerTheme>
|
|
14
|
-
class?: any
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const { contain = false, ui: uiProp, class: className } = defineProps<RLVFooterProps>()
|
|
10
|
+
const { contain = false, ui: uiProp, class: className } = defineProps<FooterProps>()
|
|
18
11
|
|
|
19
12
|
defineSlots<{
|
|
20
13
|
left(props: {}): any
|
|
@@ -2,22 +2,11 @@
|
|
|
2
2
|
import { computed, onMounted, onUnmounted, ref } from "vue"
|
|
3
3
|
import { scv } from "css-variants"
|
|
4
4
|
import { useUi, resolveClasses } from "../../utils"
|
|
5
|
-
import type {
|
|
5
|
+
import type { HeaderProps } from "../../types/components/header"
|
|
6
6
|
import headerTheme from "../../themes/header.theme"
|
|
7
7
|
import { getHeaderStack } from "../../utils/headerStack"
|
|
8
8
|
|
|
9
9
|
const header = scv(headerTheme)
|
|
10
|
-
type HeaderVariants = ComponentVariants<typeof headerTheme>
|
|
11
|
-
|
|
12
|
-
export interface RLVHeaderProps {
|
|
13
|
-
contain?: HeaderVariants["contain"]
|
|
14
|
-
sticky?: HeaderVariants["sticky"]
|
|
15
|
-
fixed?: HeaderVariants["fixed"]
|
|
16
|
-
stackIndex?: number
|
|
17
|
-
hideOnScroll?: boolean
|
|
18
|
-
ui?: ComponentSlots<typeof headerTheme>
|
|
19
|
-
class?: any
|
|
20
|
-
}
|
|
21
10
|
|
|
22
11
|
const {
|
|
23
12
|
contain = true,
|
|
@@ -27,7 +16,7 @@ const {
|
|
|
27
16
|
hideOnScroll = false,
|
|
28
17
|
ui: uiProp,
|
|
29
18
|
class: className
|
|
30
|
-
} = defineProps<
|
|
19
|
+
} = defineProps<HeaderProps>()
|
|
31
20
|
|
|
32
21
|
defineSlots<{
|
|
33
22
|
left(props: {}): any
|
|
@@ -2,20 +2,12 @@
|
|
|
2
2
|
import { computed } from "vue"
|
|
3
3
|
import { scv } from "css-variants"
|
|
4
4
|
import { useUi, resolveClasses } from "../../utils"
|
|
5
|
-
import type {
|
|
5
|
+
import type { IconProps } from "../../types/components/icon"
|
|
6
6
|
import iconTheme from "../../themes/icon.theme"
|
|
7
7
|
|
|
8
8
|
const icon = scv(iconTheme)
|
|
9
|
-
type IconVariants = ComponentVariants<typeof iconTheme>
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
name: string
|
|
13
|
-
size?: IconVariants["size"]
|
|
14
|
-
ui?: ComponentSlots<typeof iconTheme>
|
|
15
|
-
class?: any
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const { name, size = "md", ui: uiProp, class: className } = defineProps<RLVIconProps>()
|
|
10
|
+
const { name, size = "md", ui: uiProp, class: className } = defineProps<IconProps>()
|
|
19
11
|
|
|
20
12
|
const resolvedClasses = computed(() =>
|
|
21
13
|
resolveClasses(icon, { size }, useUi("icon", uiProp), className)
|
|
@@ -2,34 +2,26 @@
|
|
|
2
2
|
import { computed } from "vue"
|
|
3
3
|
import { scv } from "css-variants"
|
|
4
4
|
import { useUi, resolveClasses } from "../../utils"
|
|
5
|
-
import type {
|
|
5
|
+
import type { LogoProps } from "../../types/components/logo"
|
|
6
6
|
import logoTheme from "../../themes/logo.theme"
|
|
7
7
|
import { getUIConfig } from "virtual:rimelight-ui"
|
|
8
8
|
|
|
9
9
|
const logo = scv(logoTheme)
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
variant
|
|
13
|
-
mode
|
|
14
|
-
href
|
|
15
|
-
alt
|
|
16
|
-
ui
|
|
17
|
-
class
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const props = withDefaults(defineProps<RLVLogoProps>(), {
|
|
22
|
-
variant: "logomark",
|
|
23
|
-
href: "/"
|
|
24
|
-
})
|
|
11
|
+
const {
|
|
12
|
+
variant = "logomark",
|
|
13
|
+
mode,
|
|
14
|
+
href = "/",
|
|
15
|
+
alt,
|
|
16
|
+
ui: uiProp,
|
|
17
|
+
class: className
|
|
18
|
+
} = defineProps<LogoProps>()
|
|
25
19
|
|
|
26
20
|
defineSlots<{
|
|
27
21
|
default(props: {}): any
|
|
28
22
|
}>()
|
|
29
23
|
|
|
30
|
-
const resolvedClasses = computed(() =>
|
|
31
|
-
resolveClasses(logo, {}, useUi("logo", props.ui), props.class)
|
|
32
|
-
)
|
|
24
|
+
const resolvedClasses = computed(() => resolveClasses(logo, {}, useUi("logo", uiProp), className))
|
|
33
25
|
|
|
34
26
|
const logoSrc = computed<string | null>(() => {
|
|
35
27
|
const globalConfig = getUIConfig()
|
|
@@ -37,9 +29,9 @@ const logoSrc = computed<string | null>(() => {
|
|
|
37
29
|
let src: any = null
|
|
38
30
|
|
|
39
31
|
if (rcLogos && typeof rcLogos === "object") {
|
|
40
|
-
src = rcLogos[
|
|
32
|
+
src = rcLogos[variant]
|
|
41
33
|
if (src && typeof src === "object") {
|
|
42
|
-
src = src[
|
|
34
|
+
src = src[mode || "color"] || src.black || src.color
|
|
43
35
|
}
|
|
44
36
|
}
|
|
45
37
|
|
|
@@ -55,7 +47,7 @@ const isIcon = computed(() => {
|
|
|
55
47
|
return src.includes(":") || src.startsWith("i-")
|
|
56
48
|
})
|
|
57
49
|
|
|
58
|
-
const Tag = computed(() => (
|
|
50
|
+
const Tag = computed(() => (href ? "a" : "div"))
|
|
59
51
|
</script>
|
|
60
52
|
|
|
61
53
|
<template>
|
|
@@ -2,18 +2,12 @@
|
|
|
2
2
|
import { computed } from "vue"
|
|
3
3
|
import { scv } from "css-variants"
|
|
4
4
|
import { useUi, resolveClasses } from "../../utils"
|
|
5
|
-
import type {
|
|
5
|
+
import type { PlaceholderProps } from "../../types/components/placeholder"
|
|
6
6
|
import placeholderTheme from "../../themes/placeholder.theme"
|
|
7
7
|
|
|
8
8
|
const placeholder = scv(placeholderTheme)
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
ui?: ComponentSlots<typeof placeholderTheme>
|
|
12
|
-
class?: any
|
|
13
|
-
[key: string]: unknown
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const { ui: uiProp, class: className } = defineProps<RLVPlaceholderProps>()
|
|
10
|
+
const { ui: uiProp, class: className } = defineProps<PlaceholderProps>()
|
|
17
11
|
|
|
18
12
|
defineSlots<{
|
|
19
13
|
/**
|
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { scv } from "css-variants"
|
|
3
3
|
import { useUi, resolveClasses } from "../../utils"
|
|
4
|
-
import type {
|
|
4
|
+
import type { ScrollToTopProps } from "../../types/components/scroll-to-top"
|
|
5
5
|
import scrollToTopTheme from "../../themes/scroll-to-top.theme"
|
|
6
6
|
import { useScrollToTop } from "../../composables/useScrollToTop"
|
|
7
7
|
import { computed } from "vue"
|
|
8
8
|
|
|
9
9
|
const scrollToTop = scv(scrollToTopTheme)
|
|
10
|
-
type ScrollToTopVariants = ComponentVariants<typeof scrollToTopTheme>
|
|
11
|
-
|
|
12
|
-
export interface RLVScrollToTopProps {
|
|
13
|
-
color?: ScrollToTopVariants["color"]
|
|
14
|
-
progressWidth?: number
|
|
15
|
-
duration?: number
|
|
16
|
-
threshold?: number
|
|
17
|
-
showProgress?: boolean
|
|
18
|
-
ui?: ComponentSlots<typeof scrollToTopTheme>
|
|
19
|
-
class?: any
|
|
20
|
-
}
|
|
21
10
|
|
|
22
11
|
const {
|
|
23
12
|
color = "primary",
|
|
@@ -27,7 +16,7 @@ const {
|
|
|
27
16
|
showProgress = false,
|
|
28
17
|
ui: uiProp,
|
|
29
18
|
class: className
|
|
30
|
-
} = defineProps<
|
|
19
|
+
} = defineProps<ScrollToTopProps>()
|
|
31
20
|
|
|
32
21
|
const classes = resolveClasses(scrollToTop, { color }, useUi("scrollToTop", uiProp), className)
|
|
33
22
|
|
|
@@ -2,29 +2,12 @@
|
|
|
2
2
|
import { computed, useSlots } from "vue"
|
|
3
3
|
import { scv } from "css-variants"
|
|
4
4
|
import { useUi, resolveClasses } from "../../utils"
|
|
5
|
-
import type {
|
|
5
|
+
import type { SectionProps } from "../../types/components/section"
|
|
6
6
|
import sectionTheme from "../../themes/section.theme"
|
|
7
|
-
import type { RLVButtonProps } from "./RLVButton.vue"
|
|
8
7
|
import RLVIcon from "./RLVIcon.vue"
|
|
9
8
|
import RLVButton from "./RLVButton.vue"
|
|
10
9
|
|
|
11
10
|
const section = scv(sectionTheme)
|
|
12
|
-
type SectionVariants = ComponentVariants<typeof sectionTheme>
|
|
13
|
-
|
|
14
|
-
export interface RLVSectionProps {
|
|
15
|
-
as?: any
|
|
16
|
-
variant?: SectionVariants["variant"]
|
|
17
|
-
headline?: string
|
|
18
|
-
icon?: string
|
|
19
|
-
title?: string
|
|
20
|
-
description?: string
|
|
21
|
-
links?: RLVButtonProps[]
|
|
22
|
-
orientation?: SectionVariants["orientation"]
|
|
23
|
-
reverse?: boolean
|
|
24
|
-
ctaVariant?: SectionVariants["ctaVariant"]
|
|
25
|
-
ui?: ComponentSlots<typeof sectionTheme>
|
|
26
|
-
class?: any
|
|
27
|
-
}
|
|
28
11
|
|
|
29
12
|
const {
|
|
30
13
|
as = "div",
|
|
@@ -38,7 +21,7 @@ const {
|
|
|
38
21
|
title,
|
|
39
22
|
description,
|
|
40
23
|
links
|
|
41
|
-
} = defineProps<
|
|
24
|
+
} = defineProps<SectionProps>()
|
|
42
25
|
|
|
43
26
|
const slots = useSlots()
|
|
44
27
|
|
package/src/env.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ declare module "virtual:nuxt-ui-plugins" {
|
|
|
9
9
|
declare module "virtual:rimelight-ui" {
|
|
10
10
|
import type { DefaultUIConfig } from "../themes"
|
|
11
11
|
|
|
12
|
-
export function getUIConfig(): DefaultUIConfig
|
|
12
|
+
export function getUIConfig(): DefaultUIConfig & { colors?: string[] }
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
interface StarlightAddonsConfig {
|
package/src/integrations/ui.ts
CHANGED
|
@@ -33,6 +33,10 @@ export interface UIOptions {
|
|
|
33
33
|
* wins).
|
|
34
34
|
*/
|
|
35
35
|
ui?: UIConfigOverrides
|
|
36
|
+
/**
|
|
37
|
+
* Custom color names to dynamically generate variants for.
|
|
38
|
+
*/
|
|
39
|
+
colors?: string[]
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
/**
|
|
@@ -59,7 +63,19 @@ export interface UIOptions {
|
|
|
59
63
|
*/
|
|
60
64
|
export function ui(options: UIOptions = {}): AstroIntegration[] {
|
|
61
65
|
const resolvedUI = defu(options.ui ?? {}, defaultUIConfig)
|
|
62
|
-
const
|
|
66
|
+
const coreColors = [
|
|
67
|
+
"primary",
|
|
68
|
+
"secondary",
|
|
69
|
+
"info",
|
|
70
|
+
"success",
|
|
71
|
+
"warning",
|
|
72
|
+
"error",
|
|
73
|
+
"commentary",
|
|
74
|
+
"ideation",
|
|
75
|
+
"source"
|
|
76
|
+
]
|
|
77
|
+
const mergedColors = [...new Set([...coreColors, ...(options.colors || [])])]
|
|
78
|
+
const resolvedConfig = { ...resolvedUI, logos: options.logos ?? {}, colors: mergedColors }
|
|
63
79
|
|
|
64
80
|
const virtualModuleId = "virtual:rimelight-ui"
|
|
65
81
|
const resolvedVirtualModuleId = "\0" + virtualModuleId
|
package/src/presets/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { dirname, join } from "node:path"
|
|
2
|
+
import { fileURLToPath } from "node:url"
|
|
1
3
|
import {
|
|
2
4
|
definePreset,
|
|
3
5
|
presetTypography,
|
|
@@ -7,9 +9,65 @@ import {
|
|
|
7
9
|
transformerVariantGroup
|
|
8
10
|
} from "unocss"
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
13
|
+
const uiSrcGlob = join(__dirname, "../**/*.{js,ts,jsx,tsx,vue,svelte,astro}")
|
|
14
|
+
const uiFilesystemGlob = join(__dirname, "../**/*")
|
|
15
|
+
|
|
16
|
+
const createScale = (colorName: string) => ({
|
|
17
|
+
"DEFAULT": `var(--${colorName})`,
|
|
18
|
+
"foreground": `var(--${colorName}-foreground)`,
|
|
19
|
+
"accent": `var(--${colorName}-accent)`,
|
|
20
|
+
"50": `var(--color-${colorName}-50)`,
|
|
21
|
+
"100": `var(--color-${colorName}-100)`,
|
|
22
|
+
"200": `var(--color-${colorName}-200)`,
|
|
23
|
+
"300": `var(--color-${colorName}-300)`,
|
|
24
|
+
"400": `var(--color-${colorName}-400)`,
|
|
25
|
+
"500": `var(--color-${colorName}-500)`,
|
|
26
|
+
"600": `var(--color-${colorName}-600)`,
|
|
27
|
+
"700": `var(--color-${colorName}-700)`,
|
|
28
|
+
"800": `var(--color-${colorName}-800)`,
|
|
29
|
+
"900": `var(--color-${colorName}-900)`,
|
|
30
|
+
"950": `var(--color-${colorName}-950)`
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
export interface RimelightPresetOptions {
|
|
34
|
+
colors?: string[]
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default definePreset((options?: RimelightPresetOptions) => {
|
|
38
|
+
const customColors = options?.colors || []
|
|
39
|
+
const coreColors = [
|
|
40
|
+
"primary",
|
|
41
|
+
"secondary",
|
|
42
|
+
"info",
|
|
43
|
+
"success",
|
|
44
|
+
"warning",
|
|
45
|
+
"error",
|
|
46
|
+
"commentary",
|
|
47
|
+
"ideation",
|
|
48
|
+
"source"
|
|
49
|
+
]
|
|
50
|
+
const allColors = [...new Set([...coreColors, ...customColors])]
|
|
51
|
+
|
|
52
|
+
const safelist = allColors.flatMap((color) => [
|
|
53
|
+
`bg-${color}-500`,
|
|
54
|
+
`hover:bg-${color}-600`,
|
|
55
|
+
`focus-visible:ring-${color}-500/50`,
|
|
56
|
+
`border-${color}-500/20`,
|
|
57
|
+
`text-${color}-600`,
|
|
58
|
+
`bg-${color}-500/5`,
|
|
59
|
+
`hover:bg-${color}-500/10`,
|
|
60
|
+
`hover:border-${color}-500/30`,
|
|
61
|
+
`focus-visible:ring-${color}-500/40`,
|
|
62
|
+
`bg-${color}-500/10`,
|
|
63
|
+
`hover:bg-${color}-500/20`,
|
|
64
|
+
`hover:underline`,
|
|
65
|
+
`hover:decoration-${color}-300`
|
|
66
|
+
])
|
|
67
|
+
|
|
11
68
|
return {
|
|
12
69
|
name: "rimelight-ui",
|
|
70
|
+
safelist,
|
|
13
71
|
presets: [
|
|
14
72
|
presetWind4(),
|
|
15
73
|
presetTypography({
|
|
@@ -47,10 +105,11 @@ export default definePreset(() => {
|
|
|
47
105
|
include: [
|
|
48
106
|
/\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/,
|
|
49
107
|
"src/**/*.{js,ts,jsx,tsx,vue,svelte,astro}",
|
|
108
|
+
uiSrcGlob,
|
|
50
109
|
"../ui/src/**/*.{js,ts,jsx,tsx,vue,svelte,astro}"
|
|
51
110
|
]
|
|
52
111
|
},
|
|
53
|
-
filesystem: ["../ui/src/**/*", "src/components/**/*", "src/pages/**/*"]
|
|
112
|
+
filesystem: [uiFilesystemGlob, "../ui/src/**/*", "src/components/**/*", "src/pages/**/*"]
|
|
54
113
|
},
|
|
55
114
|
|
|
56
115
|
shortcuts: {
|
|
@@ -94,16 +153,7 @@ export default definePreset(() => {
|
|
|
94
153
|
DEFAULT: "var(--popover)",
|
|
95
154
|
foreground: "var(--popover-foreground)"
|
|
96
155
|
},
|
|
97
|
-
|
|
98
|
-
DEFAULT: "var(--primary)",
|
|
99
|
-
foreground: "var(--primary-foreground)",
|
|
100
|
-
accent: "var(--primary-accent)"
|
|
101
|
-
},
|
|
102
|
-
"secondary": {
|
|
103
|
-
DEFAULT: "var(--secondary)",
|
|
104
|
-
foreground: "var(--secondary-foreground)",
|
|
105
|
-
accent: "var(--secondary-accent)"
|
|
106
|
-
},
|
|
156
|
+
...Object.fromEntries(allColors.map((color) => [color, createScale(color)])),
|
|
107
157
|
"muted": {
|
|
108
158
|
DEFAULT: "var(--muted)",
|
|
109
159
|
foreground: "var(--muted-foreground)"
|
|
@@ -112,34 +162,6 @@ export default definePreset(() => {
|
|
|
112
162
|
DEFAULT: "var(--accent)",
|
|
113
163
|
foreground: "var(--accent-foreground)"
|
|
114
164
|
},
|
|
115
|
-
"info": {
|
|
116
|
-
DEFAULT: "var(--info)",
|
|
117
|
-
foreground: "var(--info-foreground)"
|
|
118
|
-
},
|
|
119
|
-
"success": {
|
|
120
|
-
DEFAULT: "var(--success)",
|
|
121
|
-
foreground: "var(--success-foreground)"
|
|
122
|
-
},
|
|
123
|
-
"warning": {
|
|
124
|
-
DEFAULT: "var(--warning)",
|
|
125
|
-
foreground: "var(--warning-foreground)"
|
|
126
|
-
},
|
|
127
|
-
"error": {
|
|
128
|
-
DEFAULT: "var(--error)",
|
|
129
|
-
foreground: "var(--error-foreground)"
|
|
130
|
-
},
|
|
131
|
-
"commentary": {
|
|
132
|
-
DEFAULT: "var(--commentary)",
|
|
133
|
-
foreground: "var(--commentary-foreground)"
|
|
134
|
-
},
|
|
135
|
-
"ideation": {
|
|
136
|
-
DEFAULT: "var(--ideation)",
|
|
137
|
-
foreground: "var(--ideation-foreground)"
|
|
138
|
-
},
|
|
139
|
-
"source": {
|
|
140
|
-
DEFAULT: "var(--source)",
|
|
141
|
-
foreground: "var(--source-foreground)"
|
|
142
|
-
},
|
|
143
165
|
"border": "var(--border)",
|
|
144
166
|
"input": "var(--input)",
|
|
145
167
|
"outline": "var(--outline)",
|
|
@@ -209,159 +231,7 @@ export default definePreset(() => {
|
|
|
209
231
|
}
|
|
210
232
|
},
|
|
211
233
|
|
|
212
|
-
preflights: [
|
|
213
|
-
{
|
|
214
|
-
getCSS: () => `
|
|
215
|
-
:root {
|
|
216
|
-
--background: #ffffff;
|
|
217
|
-
--foreground: #030712;
|
|
218
|
-
--card: #ffffff;
|
|
219
|
-
--card-foreground: #030712;
|
|
220
|
-
--popover: #ffffff;
|
|
221
|
-
--popover-foreground: #030712;
|
|
222
|
-
--primary: #f97316;
|
|
223
|
-
--primary-foreground: #f9fafb;
|
|
224
|
-
--primary-accent: #ea580c;
|
|
225
|
-
--secondary: #8b5cf6;
|
|
226
|
-
--secondary-foreground: #f9fafb;
|
|
227
|
-
--secondary-accent: #7c3aed;
|
|
228
|
-
--muted: #f3f4f6;
|
|
229
|
-
--muted-foreground: #4b5563;
|
|
230
|
-
--accent: #f3f4f6;
|
|
231
|
-
--accent-foreground: #111827;
|
|
232
|
-
--info: #3b82f6;
|
|
233
|
-
--info-foreground: #ffffff;
|
|
234
|
-
--success: #22c55e;
|
|
235
|
-
--success-foreground: #ffffff;
|
|
236
|
-
--warning: #f59e0b;
|
|
237
|
-
--warning-foreground: #000000;
|
|
238
|
-
--error: #ef4444;
|
|
239
|
-
--error-foreground: #f9fafb;
|
|
240
|
-
--commentary: #ec4899;
|
|
241
|
-
--commentary-foreground: #f9fafb;
|
|
242
|
-
--ideation: #8b5cf6;
|
|
243
|
-
--ideation-foreground: #f9fafb;
|
|
244
|
-
--source: #38bdf8;
|
|
245
|
-
--source-foreground: #0f172a;
|
|
246
|
-
--border: #e5e7eb;
|
|
247
|
-
--input: #e5e7eb;
|
|
248
|
-
--outline: #9ca3af;
|
|
249
|
-
--ring: #9ca3af;
|
|
250
|
-
--radius: 0.625rem;
|
|
251
|
-
--sidebar: #f9fafb;
|
|
252
|
-
--sidebar-foreground: #030712;
|
|
253
|
-
--sidebar-primary: #1d4ed8;
|
|
254
|
-
--sidebar-primary-foreground: #f9fafb;
|
|
255
|
-
--sidebar-accent: #f3f4f6;
|
|
256
|
-
--sidebar-accent-foreground: #111827;
|
|
257
|
-
--sidebar-border: #e5e7eb;
|
|
258
|
-
--sidebar-ring: #9ca3af;
|
|
259
|
-
--chart-1: #3b82f6;
|
|
260
|
-
--chart-2: #6366f1;
|
|
261
|
-
--chart-3: #8b5cf6;
|
|
262
|
-
--chart-4: #a855f7;
|
|
263
|
-
--chart-5: #ec4899;
|
|
264
|
-
--destructive: #ef4444;
|
|
265
|
-
--color-surface: #ffffff;
|
|
266
|
-
--color-muted-strong: #e5e7eb;
|
|
267
|
-
--color-foreground-secondary: #4b5563;
|
|
268
|
-
--color-foreground-tertiary: #6b7280;
|
|
269
|
-
--color-placeholder: #9ca3af;
|
|
270
|
-
--color-input-border: #d1d5db;
|
|
271
|
-
--color-hover: #f3f4f6;
|
|
272
|
-
--color-destructive-subtle: #fef2f2;
|
|
273
|
-
--color-accent-subtle: #eff6ff;
|
|
274
|
-
--font-sans: "Noto Sans", sans-serif;
|
|
275
|
-
--font-serif: "Noto Serif", serif;
|
|
276
|
-
--font-mono: "Noto Sans Mono", monospace;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
.dark {
|
|
280
|
-
--background: #030712;
|
|
281
|
-
--foreground: #f9fafb;
|
|
282
|
-
--card: #111827;
|
|
283
|
-
--card-foreground: #f9fafb;
|
|
284
|
-
--popover: #1f2937;
|
|
285
|
-
--popover-foreground: #f9fafb;
|
|
286
|
-
--primary: #f97316;
|
|
287
|
-
--primary-foreground: #f9fafb;
|
|
288
|
-
--primary-accent: #fb923c;
|
|
289
|
-
--secondary: #8b5cf6;
|
|
290
|
-
--secondary-foreground: #f9fafb;
|
|
291
|
-
--secondary-accent: #a78bfa;
|
|
292
|
-
--muted: #1f2937;
|
|
293
|
-
--muted-foreground: #9ca3af;
|
|
294
|
-
--accent: #374151;
|
|
295
|
-
--accent-foreground: #f3f4f6;
|
|
296
|
-
--info: #3b82f6;
|
|
297
|
-
--info-foreground: #ffffff;
|
|
298
|
-
--success: #22c55e;
|
|
299
|
-
--success-foreground: #ffffff;
|
|
300
|
-
--warning: #f59e0b;
|
|
301
|
-
--warning-foreground: #000000;
|
|
302
|
-
--error: #ef4444;
|
|
303
|
-
--error-foreground: #f9fafb;
|
|
304
|
-
--commentary: #f472b6;
|
|
305
|
-
--commentary-foreground: #0f172a;
|
|
306
|
-
--ideation: #a78bfa;
|
|
307
|
-
--ideation-foreground: #0f172a;
|
|
308
|
-
--source: #7dd3fc;
|
|
309
|
-
--source-foreground: #0f172a;
|
|
310
|
-
--border: rgba(249, 250, 251, 0.1);
|
|
311
|
-
--input: rgba(249, 250, 251, 0.15);
|
|
312
|
-
--outline: #6b7280;
|
|
313
|
-
--ring: #6b7280;
|
|
314
|
-
--sidebar: #111827;
|
|
315
|
-
--sidebar-foreground: #f9fafb;
|
|
316
|
-
--sidebar-primary: #1d4ed8;
|
|
317
|
-
--sidebar-primary-foreground: #f9fafb;
|
|
318
|
-
--sidebar-accent: #1f2937;
|
|
319
|
-
--sidebar-accent-foreground: #f3f4f6;
|
|
320
|
-
--sidebar-border: #1f2937;
|
|
321
|
-
--sidebar-ring: #6b7280;
|
|
322
|
-
--chart-1: #60a5fa;
|
|
323
|
-
--chart-2: #818cf8;
|
|
324
|
-
--chart-3: #a78bfa;
|
|
325
|
-
--chart-4: #c084fc;
|
|
326
|
-
--chart-5: #f472b6;
|
|
327
|
-
--destructive: #f87171;
|
|
328
|
-
--color-surface: #1f2937;
|
|
329
|
-
--color-muted-strong: #374151;
|
|
330
|
-
--color-foreground-secondary: #d1d5db;
|
|
331
|
-
--color-foreground-tertiary: #9ca3af;
|
|
332
|
-
--color-placeholder: #6b7280;
|
|
333
|
-
--color-input-border: #4b5563;
|
|
334
|
-
--color-hover: #374151;
|
|
335
|
-
--color-destructive-subtle: #451a1a;
|
|
336
|
-
--color-accent-subtle: #1e293b;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
* {
|
|
340
|
-
border-color: var(--border);
|
|
341
|
-
outline-color: rgba(156, 163, 175, 0.5);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
body {
|
|
345
|
-
background-color: var(--background);
|
|
346
|
-
color: var(--foreground);
|
|
347
|
-
font-family: var(--font-sans);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
button {
|
|
351
|
-
cursor: pointer;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
::selection {
|
|
355
|
-
background-color: var(--primary);
|
|
356
|
-
color: var(--primary-foreground);
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
@view-transition {
|
|
360
|
-
navigation: auto;
|
|
361
|
-
}
|
|
362
|
-
`
|
|
363
|
-
}
|
|
364
|
-
],
|
|
234
|
+
preflights: [],
|
|
365
235
|
|
|
366
236
|
async configResolved(config) {
|
|
367
237
|
if (process.env.NODE_ENV === "development" && !process.env.UNO_CONFIG_LOGGED) {
|