|
1 | | -import { createExternalPackageIconLoader } from '@iconify/utils/lib/loader/external-pkg' |
2 | | -import { colorToString } from '@unocss/preset-mini/utils' |
3 | | -import { |
4 | | - defineConfig, |
5 | | - presetAttributify, |
6 | | - presetIcons, |
7 | | - presetTypography, |
8 | | - presetWebFonts, |
9 | | - presetWind3, |
10 | | - transformerDirectives, |
11 | | - transformerVariantGroup, |
12 | | -} from 'unocss' |
13 | | -import { parseColor } from 'unocss/preset-mini' |
| 1 | +import { mergeConfigs } from 'unocss' |
14 | 2 |
|
15 | | -function createColorSchemeConfig(hueOffset = 0) { |
16 | | - return { |
17 | | - DEFAULT: `oklch(62% var(--theme-colors-chroma) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
18 | | - 50: `color-mix(in srgb, oklch(95% var(--theme-colors-chroma-50) calc(var(--theme-colors-hue) + ${hueOffset})) 30%, oklch(100% 0 360))`, |
19 | | - 100: `color-mix(in srgb, oklch(95% var(--theme-colors-chroma-100) calc(var(--theme-colors-hue) + ${hueOffset})) 80%, oklch(100% 0 360))`, |
20 | | - 200: `oklch(90% var(--theme-colors-chroma-200) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
21 | | - 300: `oklch(85% var(--theme-colors-chroma-300) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
22 | | - 400: `oklch(74% var(--theme-colors-chroma-400) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
23 | | - 500: `oklch(62% var(--theme-colors-chroma) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
24 | | - 600: `oklch(54% var(--theme-colors-chroma-600) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
25 | | - 700: `oklch(49% var(--theme-colors-chroma-700) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
26 | | - 800: `oklch(42% var(--theme-colors-chroma-800) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
27 | | - 900: `oklch(37% var(--theme-colors-chroma-900) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
28 | | - 950: `oklch(29% var(--theme-colors-chroma-950) calc(var(--theme-colors-hue) + ${hueOffset}))`, |
29 | | - } |
30 | | -} |
| 3 | +import { histoireUnoConfig, sharedUnoConfig } from '../../uno.config' |
31 | 4 |
|
32 | | -export default defineConfig({ |
33 | | - presets: [ |
34 | | - presetWind3(), |
35 | | - presetAttributify(), |
36 | | - presetTypography(), |
37 | | - presetWebFonts({ |
38 | | - fonts: { |
39 | | - sans: 'DM Sans', |
40 | | - serif: 'DM Serif Display', |
41 | | - mono: 'DM Mono', |
42 | | - cute: 'Kiwi Maru', |
43 | | - cuteen: 'Sniglet', |
44 | | - gugi: 'Gugi', |
45 | | - }, |
46 | | - timeouts: { |
47 | | - warning: 5000, |
48 | | - failure: 10000, |
49 | | - }, |
50 | | - }), |
51 | | - presetIcons({ |
52 | | - scale: 1.2, |
53 | | - collections: { |
54 | | - ...createExternalPackageIconLoader('@proj-airi/lobe-icons'), |
55 | | - }, |
56 | | - }), |
57 | | - ], |
58 | | - transformers: [ |
59 | | - transformerDirectives({ |
60 | | - applyVariable: ['--at-apply'], |
61 | | - }), |
62 | | - transformerVariantGroup(), |
63 | | - ], |
64 | | - safelist: 'prose prose-sm m-auto text-left'.split(' '), |
65 | | - // hyoban/unocss-preset-shadcn: Use shadcn ui with UnoCSS |
66 | | - // https://github.com/hyoban/unocss-preset-shadcn |
67 | | - // |
68 | | - // Thanks to |
69 | | - // https://github.com/unovue/shadcn-vue/issues/34#issuecomment-2467318118 |
70 | | - // https://github.com/hyoban-template/shadcn-vue-unocss-starter |
71 | | - // |
72 | | - // By default, `.ts` and `.js` files are NOT extracted. |
73 | | - // If you want to extract them, use the following configuration. |
74 | | - // It's necessary to add the following configuration if you use shadcn-vue or shadcn-svelte. |
75 | | - content: { |
76 | | - pipeline: { |
77 | | - include: [ |
78 | | - // the default |
79 | | - /\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/, |
80 | | - // include js/ts files |
81 | | - '(components|src)/**/*.{js,ts}', |
82 | | - '**/stage-ui/**/*.{js,ts}', |
83 | | - ], |
84 | | - }, |
| 5 | +export default mergeConfigs([ |
| 6 | + sharedUnoConfig(), |
| 7 | + histoireUnoConfig(), |
| 8 | + { |
| 9 | + rules: [ |
| 10 | + ['transition-colors-none', { |
| 11 | + 'transition-property': 'color, background-color, border-color, text-color', |
| 12 | + 'transition-duration': '0s', |
| 13 | + }], |
| 14 | + ], |
85 | 15 | }, |
86 | | - rules: [ |
87 | | - [/^mask-\[(.*)\]$/, ([, suffix]) => ({ '-webkit-mask-image': suffix.replace(/_/g, ' ') })], |
88 | | - [/^bg-dotted-\[(.*)\]$/, ([, color], { theme }) => { |
89 | | - const parsedColor = parseColor(color, theme) |
90 | | - // Util usage: https://github.com/unocss/unocss/blob/f57ef6ae50006a92f444738e50f3601c0d1121f2/packages-presets/preset-mini/src/_utils/utilities.ts#L186 |
91 | | - return { |
92 | | - 'background-image': `radial-gradient(circle at 1px 1px, ${colorToString(parsedColor?.cssColor ?? parsedColor?.color ?? color, 'var(--un-background-opacity)')} 1px, transparent 0)`, |
93 | | - '--un-background-opacity': parsedColor?.cssColor?.alpha ?? parsedColor?.alpha ?? 1, |
94 | | - } |
95 | | - }], |
96 | | - ['transition-colors-none', { |
97 | | - 'transition-property': 'color, background-color, border-color, text-color', |
98 | | - 'transition-duration': '0s', |
99 | | - }], |
100 | | - ], |
101 | | - theme: { |
102 | | - colors: { |
103 | | - primary: createColorSchemeConfig(), |
104 | | - complementary: createColorSchemeConfig(180), |
105 | | - }, |
106 | | - }, |
107 | | -}) |
| 16 | +]) |
0 commit comments