@pubinfo/config 2.0.0-beta.3 → 2.0.0-beta.31

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 (57) hide show
  1. package/dist/eslint/index.d.ts +1 -1
  2. package/dist/eslint/index.mjs +1 -1
  3. package/dist/index.d.mts +2 -2
  4. package/dist/index.d.ts +2 -2
  5. package/dist/index.mjs +4 -5
  6. package/dist/shared/{config.DPEra-Xx.mjs → config.D4FYsBnQ.mjs} +0 -8
  7. package/dist/stylelint.d.ts +1 -1
  8. package/dist/themes/index.d.mts +2 -8
  9. package/dist/themes/index.d.ts +2 -8
  10. package/dist/themes/index.mjs +610 -3
  11. package/dist/unocss/index.d.mts +8 -0
  12. package/dist/unocss/index.d.ts +8 -0
  13. package/dist/unocss/index.mjs +103 -0
  14. package/package.json +16 -21
  15. package/src/eslint/config/ignores.ts +10 -0
  16. package/src/eslint/config/stylistic.ts +21 -0
  17. package/src/eslint/config/vue.ts +54 -0
  18. package/src/eslint/factory.ts +20 -0
  19. package/src/eslint/globs.ts +86 -0
  20. package/src/eslint/index.ts +3 -0
  21. package/src/index.ts +4 -0
  22. package/src/stylelint.ts +135 -0
  23. package/src/themes/index.ts +3 -0
  24. package/src/themes/system/dark/dark.ts +47 -0
  25. package/src/themes/system/dark/dracula.ts +47 -0
  26. package/src/themes/system/dark/luxury.ts +47 -0
  27. package/src/themes/system/dark/night.ts +47 -0
  28. package/src/themes/system/dark/stone.ts +47 -0
  29. package/src/themes/system/dark/synthwave.ts +47 -0
  30. package/src/themes/system/light/barbie.ts +47 -0
  31. package/src/themes/system/light/classic.ts +47 -0
  32. package/src/themes/system/light/cyberpunk.ts +47 -0
  33. package/src/themes/system/light/light.ts +47 -0
  34. package/src/themes/system/light/naive.ts +47 -0
  35. package/src/themes/system/light/winter.ts +47 -0
  36. package/src/themes/theme.ts +18 -0
  37. package/src/themes/unocss-utils.ts +52 -0
  38. package/src/themes/utils.ts +81 -0
  39. package/src/unocss/index.ts +61 -0
  40. package/src/unocss/presetThemes.ts +57 -0
  41. package/dist/eslint/index.cjs +0 -8
  42. package/dist/eslint/index.d.cts +0 -6
  43. package/dist/index.cjs +0 -21
  44. package/dist/index.d.cts +0 -6
  45. package/dist/shared/config.BDKVPKTO.mjs +0 -635
  46. package/dist/shared/config.CSqBb4YU.d.cts +0 -5
  47. package/dist/shared/config.YMrrkzU5.cjs +0 -641
  48. package/dist/shared/config.wdnazHMp.cjs +0 -147
  49. package/dist/stylelint.cjs +0 -139
  50. package/dist/stylelint.d.cts +0 -106
  51. package/dist/themes/index.cjs +0 -13
  52. package/dist/themes/index.d.cts +0 -33
  53. package/dist/unocss.cjs +0 -59
  54. package/dist/unocss.d.cts +0 -5
  55. package/dist/unocss.d.mts +0 -5
  56. package/dist/unocss.d.ts +0 -5
  57. package/dist/unocss.mjs +0 -57
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'night',
5
+ colors: {
6
+ 'label': '夜蓝梦',
7
+ // 颜色主题
8
+ 'color-scheme': 'dark',
9
+ // 内置 UI
10
+ '--ui-primary': '#0ca6e9',
11
+ '--ui-text': '#242b33',
12
+ // 主体
13
+ '--g-bg': '#0f1729',
14
+ '--g-container-bg': '#1d283a',
15
+ '--g-border-color': '#191E24',
16
+ // 头部
17
+ '--g-header-bg': '#0f1729',
18
+ '--g-header-color': '#c8cad0',
19
+ '--g-header-menu-color': '#a6adbb',
20
+ '--g-header-menu-hover-color': '#c8cad0',
21
+ '--g-header-menu-hover-bg': '#1d283a',
22
+ '--g-header-menu-active-color': '#c8cad0',
23
+ '--g-header-menu-active-bg': '#1d283a',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#0f1729',
26
+ '--g-main-sidebar-menu-color': '#a6adbb',
27
+ '--g-main-sidebar-menu-hover-color': '#c8cad0',
28
+ '--g-main-sidebar-menu-hover-bg': '#1d283a',
29
+ '--g-main-sidebar-menu-active-color': '#c8cad0',
30
+ '--g-main-sidebar-menu-active-bg': '#1d283a',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#1d283a',
33
+ '--g-sub-sidebar-logo-color': '#1d232a',
34
+ '--g-sub-sidebar-logo-bg': '#a6adbb',
35
+ '--g-sub-sidebar-menu-color': '#a6adbb',
36
+ '--g-sub-sidebar-menu-hover-color': '#c8cad0',
37
+ '--g-sub-sidebar-menu-hover-bg': '#273449',
38
+ '--g-sub-sidebar-menu-active-color': '#c8cad0',
39
+ '--g-sub-sidebar-menu-active-bg': '#0f1729',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a6adbb',
42
+ '--g-tabbar-tab-color': '#a6adbb',
43
+ '--g-tabbar-tab-hover-color': '#c8cad0',
44
+ '--g-tabbar-tab-hover-bg': '#242b33',
45
+ '--g-tabbar-tab-active-color': '#c8cad0',
46
+ },
47
+ });
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'stone',
5
+ colors: {
6
+ 'label': '石青润',
7
+ // 颜色主题
8
+ 'color-scheme': 'dark',
9
+ // 内置 UI
10
+ '--ui-primary': '#68d1bf',
11
+ '--ui-text': '#1b1a18',
12
+ // 主体
13
+ '--g-bg': '#1b1917',
14
+ '--g-container-bg': '#282524',
15
+ '--g-border-color': '#43403c',
16
+ // 头部
17
+ '--g-header-bg': '#1b1917',
18
+ '--g-header-color': '#e7e5e4',
19
+ '--g-header-menu-color': '#e7e5e4',
20
+ '--g-header-menu-hover-color': '#e7e5e4',
21
+ '--g-header-menu-hover-bg': '#282524',
22
+ '--g-header-menu-active-color': '#e7e5e4',
23
+ '--g-header-menu-active-bg': '#282524',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#1b1917',
26
+ '--g-main-sidebar-menu-color': '#e7e5e4',
27
+ '--g-main-sidebar-menu-hover-color': '#e7e5e4',
28
+ '--g-main-sidebar-menu-hover-bg': '#282524',
29
+ '--g-main-sidebar-menu-active-color': '#e7e5e4',
30
+ '--g-main-sidebar-menu-active-bg': '#282524',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#282524',
33
+ '--g-sub-sidebar-logo-color': '#e7e5e4',
34
+ '--g-sub-sidebar-logo-bg': '#1a103c',
35
+ '--g-sub-sidebar-menu-color': '#e7e5e4',
36
+ '--g-sub-sidebar-menu-hover-color': '#e7e5e4',
37
+ '--g-sub-sidebar-menu-hover-bg': '#1b1917',
38
+ '--g-sub-sidebar-menu-active-color': '#e7e5e4',
39
+ '--g-sub-sidebar-menu-active-bg': '#1b1917',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a6adbb',
42
+ '--g-tabbar-tab-color': '#a6adbb',
43
+ '--g-tabbar-tab-hover-color': '#c8cad0',
44
+ '--g-tabbar-tab-hover-bg': '#282524',
45
+ '--g-tabbar-tab-active-color': '#c8cad0',
46
+ },
47
+ });
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'synthwave',
5
+ colors: {
6
+ 'label': '紫电流',
7
+ // 颜色主题
8
+ 'color-scheme': 'dark',
9
+ // 内置 UI
10
+ '--ui-primary': '#58c7f3',
11
+ '--ui-text': '#1a272e',
12
+ // 主体
13
+ '--g-bg': '#1a103c',
14
+ '--g-container-bg': '#221551',
15
+ '--g-border-color': '#191E24',
16
+ // 头部
17
+ '--g-header-bg': '#1a103c',
18
+ '--g-header-color': '#f9f7fd',
19
+ '--g-header-menu-color': '#f9f7fd',
20
+ '--g-header-menu-hover-color': '#f9f7fd',
21
+ '--g-header-menu-hover-bg': '#221551',
22
+ '--g-header-menu-active-color': '#f9f7fd',
23
+ '--g-header-menu-active-bg': '#221551',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#1a103c',
26
+ '--g-main-sidebar-menu-color': '#f9f7fd',
27
+ '--g-main-sidebar-menu-hover-color': '#f9f7fd',
28
+ '--g-main-sidebar-menu-hover-bg': '#221551',
29
+ '--g-main-sidebar-menu-active-color': '#f9f7fd',
30
+ '--g-main-sidebar-menu-active-bg': '#221551',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#221551',
33
+ '--g-sub-sidebar-logo-color': '#f9f7fd',
34
+ '--g-sub-sidebar-logo-bg': '#1a103c',
35
+ '--g-sub-sidebar-menu-color': '#f9f7fd',
36
+ '--g-sub-sidebar-menu-hover-color': '#f9f7fd',
37
+ '--g-sub-sidebar-menu-hover-bg': '#160e35',
38
+ '--g-sub-sidebar-menu-active-color': '#f9f7fd',
39
+ '--g-sub-sidebar-menu-active-bg': '#160e35',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a6adbb',
42
+ '--g-tabbar-tab-color': '#a6adbb',
43
+ '--g-tabbar-tab-hover-color': '#c8cad0',
44
+ '--g-tabbar-tab-hover-bg': '#242b33',
45
+ '--g-tabbar-tab-active-color': '#c8cad0',
46
+ },
47
+ });
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'barbie',
5
+ colors: {
6
+ 'label': '梦露粉',
7
+ // 颜色主题
8
+ 'color-scheme': 'light',
9
+ // 内置 UI
10
+ '--ui-primary': '#ff43bc',
11
+ '--ui-text': '#fcfcfc',
12
+ // 主体
13
+ '--g-bg': '#f2f2f2',
14
+ '--g-container-bg': '#fff',
15
+ '--g-border-color': '#f2f2f2',
16
+ // 头部
17
+ '--g-header-bg': '#ff43bc',
18
+ '--g-header-color': '#fff',
19
+ '--g-header-menu-color': '#fff',
20
+ '--g-header-menu-hover-bg': '#dd39a3',
21
+ '--g-header-menu-hover-color': '#fff',
22
+ '--g-header-menu-active-bg': '#dd39a3',
23
+ '--g-header-menu-active-color': '#fff',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#ff43bc',
26
+ '--g-main-sidebar-menu-color': '#fff',
27
+ '--g-main-sidebar-menu-hover-bg': '#dd39a3',
28
+ '--g-main-sidebar-menu-hover-color': '#fff',
29
+ '--g-main-sidebar-menu-active-bg': '#dd39a3',
30
+ '--g-main-sidebar-menu-active-color': '#fff',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#fff',
33
+ '--g-sub-sidebar-logo-bg': '#ff43bc',
34
+ '--g-sub-sidebar-logo-color': '#fff',
35
+ '--g-sub-sidebar-menu-color': '#0f0f0f',
36
+ '--g-sub-sidebar-menu-hover-bg': '#dd39a3',
37
+ '--g-sub-sidebar-menu-hover-color': '#fff',
38
+ '--g-sub-sidebar-menu-active-bg': '#dd39a3',
39
+ '--g-sub-sidebar-menu-active-color': '#fff',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a3a3a3',
42
+ '--g-tabbar-tab-color': '#a3a3a3',
43
+ '--g-tabbar-tab-hover-bg': '#e5e5e5',
44
+ '--g-tabbar-tab-hover-color': '#0f0f0f',
45
+ '--g-tabbar-tab-active-color': '#0f0f0f',
46
+ },
47
+ });
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'classic',
5
+ colors: {
6
+ 'label': '蓝古雅',
7
+ // 颜色主题
8
+ 'color-scheme': 'light',
9
+ // 内置 UI
10
+ '--ui-primary': '#1677ff',
11
+ '--ui-text': '#fcfcfc',
12
+ // 主体
13
+ '--g-bg': '#F5F8FE',
14
+ '--g-container-bg': '#fff',
15
+ '--g-border-color': '#f2f2f2',
16
+ // 头部
17
+ '--g-header-bg': '#2264F1',
18
+ '--g-header-color': '#fff',
19
+ '--g-header-menu-color': '#fff',
20
+ '--g-header-menu-hover-bg': '#57A1F7',
21
+ '--g-header-menu-hover-color': '#fff',
22
+ '--g-header-menu-active-bg': '#57A1F7',
23
+ '--g-header-menu-active-color': '#fff',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#222b45',
26
+ '--g-main-sidebar-menu-color': '#fff',
27
+ '--g-main-sidebar-menu-hover-bg': '#334067',
28
+ '--g-main-sidebar-menu-hover-color': '#fff',
29
+ '--g-main-sidebar-menu-active-bg': '#334067',
30
+ '--g-main-sidebar-menu-active-color': '#fff',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#F5F8FE',
33
+ '--g-sub-sidebar-logo-bg': '#F5F8FE',
34
+ '--g-sub-sidebar-logo-color': '#0f0f0f',
35
+ '--g-sub-sidebar-menu-color': '#0f0f0f',
36
+ '--g-sub-sidebar-menu-hover-bg': '#dde1e3',
37
+ '--g-sub-sidebar-menu-hover-color': '#0f0f0f',
38
+ '--g-sub-sidebar-menu-active-bg': '#F8FAFE',
39
+ '--g-sub-sidebar-menu-active-color': '#2264F1',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a3a3a3',
42
+ '--g-tabbar-tab-color': '#a3a3a3',
43
+ '--g-tabbar-tab-hover-bg': '#e5e5e5',
44
+ '--g-tabbar-tab-hover-color': '#0f0f0f',
45
+ '--g-tabbar-tab-active-color': '#0f0f0f',
46
+ },
47
+ });
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'cyberpunk',
5
+ colors: {
6
+ 'label': '黄未来',
7
+ // 颜色主题
8
+ 'color-scheme': 'light',
9
+ // 内置 UI
10
+ '--ui-primary': '#dbcb00',
11
+ '--ui-text': '#0f0f0f',
12
+ // 主体
13
+ '--g-bg': '#f2f2f2',
14
+ '--g-container-bg': '#fff',
15
+ '--g-border-color': '#f2f2f2',
16
+ // 头部
17
+ '--g-header-bg': '#fff',
18
+ '--g-header-color': '#302d12',
19
+ '--g-header-menu-color': '#302d12',
20
+ '--g-header-menu-hover-bg': '#dbcb00',
21
+ '--g-header-menu-hover-color': '#302d12',
22
+ '--g-header-menu-active-bg': '#dbcb00',
23
+ '--g-header-menu-active-color': '#302d12',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#f2f2f2',
26
+ '--g-main-sidebar-menu-color': '#302d12',
27
+ '--g-main-sidebar-menu-hover-bg': '#dbcb00',
28
+ '--g-main-sidebar-menu-hover-color': '#302d12',
29
+ '--g-main-sidebar-menu-active-bg': '#dbcb00',
30
+ '--g-main-sidebar-menu-active-color': '#302d12',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#fff',
33
+ '--g-sub-sidebar-logo-bg': '#dbcb00',
34
+ '--g-sub-sidebar-logo-color': '#302d12',
35
+ '--g-sub-sidebar-menu-color': '#0f0f0f',
36
+ '--g-sub-sidebar-menu-hover-bg': '#dbcb00',
37
+ '--g-sub-sidebar-menu-hover-color': '#302d12',
38
+ '--g-sub-sidebar-menu-active-bg': '#dbcb00',
39
+ '--g-sub-sidebar-menu-active-color': '#302d12',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a3a3a3',
42
+ '--g-tabbar-tab-color': '#a3a3a3',
43
+ '--g-tabbar-tab-hover-bg': '#e5e5e5',
44
+ '--g-tabbar-tab-hover-color': '#0f0f0f',
45
+ '--g-tabbar-tab-active-color': '#0f0f0f',
46
+ },
47
+ });
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'light',
5
+ colors: {
6
+ 'label': '幽影黑',
7
+ // 颜色主题
8
+ 'color-scheme': 'light',
9
+ // 内置 UI
10
+ '--ui-primary': '#1677ff',
11
+ '--ui-text': '#fcfcfc',
12
+ // 主体
13
+ '--g-bg': '#f2f2f2',
14
+ '--g-container-bg': '#fff',
15
+ '--g-border-color': '#f2f2f2',
16
+ // 头部
17
+ '--g-header-bg': '#222b45',
18
+ '--g-header-color': '#fff',
19
+ '--g-header-menu-color': '#fff',
20
+ '--g-header-menu-hover-bg': '#334067',
21
+ '--g-header-menu-hover-color': '#fff',
22
+ '--g-header-menu-active-bg': '#334067',
23
+ '--g-header-menu-active-color': '#fff',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#222b45',
26
+ '--g-main-sidebar-menu-color': '#fff',
27
+ '--g-main-sidebar-menu-hover-bg': '#334067',
28
+ '--g-main-sidebar-menu-hover-color': '#fff',
29
+ '--g-main-sidebar-menu-active-bg': '#334067',
30
+ '--g-main-sidebar-menu-active-color': '#fff',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#fff',
33
+ '--g-sub-sidebar-logo-bg': '#222b45',
34
+ '--g-sub-sidebar-logo-color': '#fff',
35
+ '--g-sub-sidebar-menu-color': '#0f0f0f',
36
+ '--g-sub-sidebar-menu-hover-bg': '#dde1e3',
37
+ '--g-sub-sidebar-menu-hover-color': '#0f0f0f',
38
+ '--g-sub-sidebar-menu-active-bg': '#1677ff',
39
+ '--g-sub-sidebar-menu-active-color': '#fff',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a3a3a3',
42
+ '--g-tabbar-tab-color': '#a3a3a3',
43
+ '--g-tabbar-tab-hover-bg': '#e5e5e5',
44
+ '--g-tabbar-tab-hover-color': '#0f0f0f',
45
+ '--g-tabbar-tab-active-color': '#0f0f0f',
46
+ },
47
+ });
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'naive',
5
+ colors: {
6
+ 'label': '青宇古',
7
+ // 颜色主题
8
+ 'color-scheme': 'light',
9
+ // 内置 UI
10
+ '--ui-primary': '#18a058',
11
+ '--ui-text': '#fcfcfc',
12
+ // 主体
13
+ '--g-bg': '#f2f2f2',
14
+ '--g-container-bg': '#fff',
15
+ '--g-border-color': '#f2f2f2',
16
+ // 头部
17
+ '--g-header-bg': '#1d2935',
18
+ '--g-header-color': '#fff',
19
+ '--g-header-menu-color': '#fff',
20
+ '--g-header-menu-hover-bg': '#42b983',
21
+ '--g-header-menu-hover-color': '#fff',
22
+ '--g-header-menu-active-bg': '#18a058',
23
+ '--g-header-menu-active-color': '#fff',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#1d2935',
26
+ '--g-main-sidebar-menu-color': '#fff',
27
+ '--g-main-sidebar-menu-hover-bg': '#42b983',
28
+ '--g-main-sidebar-menu-hover-color': '#fff',
29
+ '--g-main-sidebar-menu-active-bg': '#18a058',
30
+ '--g-main-sidebar-menu-active-color': '#fff',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#fff',
33
+ '--g-sub-sidebar-logo-bg': '#1d2935',
34
+ '--g-sub-sidebar-logo-color': '#fff',
35
+ '--g-sub-sidebar-menu-color': '#0f0f0f',
36
+ '--g-sub-sidebar-menu-hover-bg': '#42b983',
37
+ '--g-sub-sidebar-menu-hover-color': '#fff',
38
+ '--g-sub-sidebar-menu-active-bg': '#18a058',
39
+ '--g-sub-sidebar-menu-active-color': '#fff',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a3a3a3',
42
+ '--g-tabbar-tab-color': '#a3a3a3',
43
+ '--g-tabbar-tab-hover-bg': '#e5e5e5',
44
+ '--g-tabbar-tab-hover-color': '#0f0f0f',
45
+ '--g-tabbar-tab-active-color': '#0f0f0f',
46
+ },
47
+ });
@@ -0,0 +1,47 @@
1
+ import { defineTheme } from '../../utils';
2
+
3
+ export default defineTheme({
4
+ name: 'winter',
5
+ colors: {
6
+ 'label': '冰雪蓝',
7
+ // 颜色主题
8
+ 'color-scheme': 'light',
9
+ // 内置 UI
10
+ '--ui-primary': '#a6e4f8',
11
+ '--ui-text': '#3e4e68',
12
+ // 主体
13
+ '--g-bg': '#f1f5fe',
14
+ '--g-container-bg': '#fff',
15
+ '--g-border-color': '#f2f2f2',
16
+ // 头部
17
+ '--g-header-bg': '#fff',
18
+ '--g-header-color': '#3e4e68',
19
+ '--g-header-menu-color': '#3e4e68',
20
+ '--g-header-menu-hover-bg': '#e3e8f2',
21
+ '--g-header-menu-hover-color': '#3e4e68',
22
+ '--g-header-menu-active-bg': '#a6e4f8',
23
+ '--g-header-menu-active-color': '#3e4e68',
24
+ // 主导航
25
+ '--g-main-sidebar-bg': '#f1f5fe',
26
+ '--g-main-sidebar-menu-color': '#3e4e68',
27
+ '--g-main-sidebar-menu-hover-bg': '#e3e8f2',
28
+ '--g-main-sidebar-menu-hover-color': '#3e4e68',
29
+ '--g-main-sidebar-menu-active-bg': '#a6e4f8',
30
+ '--g-main-sidebar-menu-active-color': '#3e4e68',
31
+ // 次导航
32
+ '--g-sub-sidebar-bg': '#fff',
33
+ '--g-sub-sidebar-logo-bg': '#e3e8f2',
34
+ '--g-sub-sidebar-logo-color': '#3e4e68',
35
+ '--g-sub-sidebar-menu-color': '#0f0f0f',
36
+ '--g-sub-sidebar-menu-hover-bg': '#e3e8f2',
37
+ '--g-sub-sidebar-menu-hover-color': '#3e4e68',
38
+ '--g-sub-sidebar-menu-active-bg': '#a6e4f8',
39
+ '--g-sub-sidebar-menu-active-color': '#3e4e68',
40
+ // 标签栏
41
+ '--g-tabbar-dividers-bg': '#a3a3a3',
42
+ '--g-tabbar-tab-color': '#a3a3a3',
43
+ '--g-tabbar-tab-hover-bg': '#e5e5e5',
44
+ '--g-tabbar-tab-hover-color': '#0f0f0f',
45
+ '--g-tabbar-tab-active-color': '#0f0f0f',
46
+ },
47
+ });
@@ -0,0 +1,18 @@
1
+ /**
2
+ * ========================================================================
3
+ * system
4
+ *=========================================================================
5
+ */
6
+ import './system/dark/dark';
7
+ import './system/dark/dracula';
8
+ import './system/dark/luxury';
9
+ import './system/dark/night';
10
+ import './system/dark/stone';
11
+
12
+ import './system/dark/synthwave';
13
+ import './system/light/barbie';
14
+ import './system/light/classic';
15
+ import './system/light/cyberpunk';
16
+ import './system/light/light';
17
+ import './system/light/naive';
18
+ import './system/light/winter';
@@ -0,0 +1,52 @@
1
+ export type RGBAColorValue = [number, number, number, number] | [number, number, number];
2
+
3
+ export function hex2rgba(hex = ''): RGBAColorValue | undefined {
4
+ const color = parseHexColor(hex);
5
+ if (color != null) {
6
+ const { components, alpha } = color;
7
+ if (alpha == null) {
8
+ return components as [number, number, number];
9
+ }
10
+ return [...components, alpha] as [number, number, number, number];
11
+ }
12
+ }
13
+
14
+ export interface CSSColorValue {
15
+ type: string
16
+ components: (string | number)[]
17
+ alpha: string | number | undefined
18
+ }
19
+
20
+ function parseHexColor(str: string): CSSColorValue | undefined {
21
+ const [, body] = str.match(/^#([\da-f]+)$/i) || [];
22
+ if (!body) {
23
+ return;
24
+ }
25
+
26
+ switch (body.length) {
27
+ case 3:
28
+ case 4: {
29
+ const digits = Array.from(body, s => Number.parseInt(s, 16)).map(n => (n << 4) | n);
30
+ return {
31
+ type: 'rgb',
32
+ components: digits.slice(0, 3),
33
+ alpha: body.length === 3
34
+ ? undefined
35
+ : Math.round(digits[3] / 255 * 100) / 100,
36
+ };
37
+ }
38
+
39
+ case 6:
40
+ case 8:{
41
+ const value = Number.parseInt(body, 16);
42
+ return {
43
+ type: 'rgb',
44
+ components: body.length === 6
45
+ ? [(value >> 16) & 0xFF, (value >> 8) & 0xFF, value & 0xFF]
46
+ : [(value >> 24) & 0xFF, (value >> 16) & 0xFF, (value >> 8) & 0xFF],
47
+ alpha: body.length === 6
48
+ ? undefined
49
+ : Math.round((value & 0xFF) / 255 * 100) / 100,
50
+ }; }
51
+ }
52
+ }
@@ -0,0 +1,81 @@
1
+ import { hex2rgba } from './unocss-utils';
2
+
3
+ type CSSColorValue = string;
4
+ type manColor =
5
+ | 'bg'
6
+ | 'container-bg'
7
+ | 'border-color';
8
+
9
+ type headerColor =
10
+ | 'header-bg'
11
+ | 'header-color'
12
+ | 'header-menu-color'
13
+ | 'header-menu-hover-bg'
14
+ | 'header-menu-hover-color'
15
+ | 'header-menu-active-bg'
16
+ | 'header-menu-active-color';
17
+
18
+ type mainSidebarColor =
19
+ | 'main-sidebar-bg'
20
+ | 'main-sidebar-menu-color'
21
+ | 'main-sidebar-menu-hover-bg'
22
+ | 'main-sidebar-menu-hover-color'
23
+ | 'main-sidebar-menu-active-bg'
24
+ | 'main-sidebar-menu-active-color';
25
+
26
+ type subSidebarColor =
27
+ | 'sub-sidebar-bg'
28
+ | 'sub-sidebar-logo-bg'
29
+ | 'sub-sidebar-logo-color'
30
+ | 'sub-sidebar-menu-color'
31
+ | 'sub-sidebar-menu-hover-bg'
32
+ | 'sub-sidebar-menu-hover-color'
33
+ | 'sub-sidebar-menu-active-bg'
34
+ | 'sub-sidebar-menu-active-color';
35
+
36
+ type tabbarColor =
37
+ | 'tabbar-dividers-bg'
38
+ | 'tabbar-tab-color'
39
+ | 'tabbar-tab-hover-bg'
40
+ | 'tabbar-tab-hover-color'
41
+ | 'tabbar-tab-active-color';
42
+
43
+ type themeScheme = 'light' | 'dark';
44
+ type customColor = typeof customColorKey[number];
45
+ type benchmark = `--g-${manColor | headerColor | mainSidebarColor | subSidebarColor | tabbarColor}`;
46
+ export type cssVarKey = customColor | benchmark;
47
+
48
+ export type colorScheme = Record<cssVarKey, CSSColorValue> & { 'color-scheme': themeScheme } & { label?: string };
49
+
50
+ export interface themeOptions {
51
+ name: string
52
+ colors: colorScheme
53
+ }
54
+
55
+ export const customColorKey = ['--ui-primary', '--ui-text'] as const;
56
+
57
+ export interface globalTheme {
58
+ [key: string]: colorScheme
59
+ }
60
+
61
+ let themeColorMap: globalTheme = {};
62
+
63
+ export function getThemes() {
64
+ return themeColorMap;
65
+ }
66
+
67
+ function normalizeColor(colors: colorScheme) {
68
+ for (const key of customColorKey) {
69
+ const colorValue = colors[key];
70
+ colors[key] = hex2rgba(colorValue)!.join(' ');
71
+ }
72
+ return colors;
73
+ }
74
+
75
+ export function defineTheme(theme: themeOptions): globalTheme {
76
+ const { name, colors } = theme;
77
+ const colorScheme: globalTheme = Object.create(null);
78
+ colorScheme[name] = normalizeColor(colors);
79
+ themeColorMap = Object.assign(themeColorMap, colorScheme);
80
+ return colorScheme;
81
+ }
@@ -0,0 +1,61 @@
1
+ import type { globalTheme } from '../themes';
2
+ import {
3
+ definePreset,
4
+ presetAttributify,
5
+ presetIcons,
6
+ presetTypography,
7
+ presetUno,
8
+ transformerDirectives,
9
+ } from 'unocss';
10
+ import { presetThemes } from './presetThemes';
11
+
12
+ export default definePreset<{ themes?: globalTheme[] }>((options) => {
13
+ return {
14
+ name: 'preset-pubinfo',
15
+ presets: [
16
+ presetThemes({ themes: options?.themes }),
17
+ presetUno(),
18
+ presetAttributify(),
19
+ presetTypography(),
20
+ presetIcons({
21
+ extraProperties: {
22
+ 'display': 'inline-block',
23
+ 'vertical-align': 'middle',
24
+ },
25
+ }),
26
+ ],
27
+ transformers: [
28
+ transformerDirectives(),
29
+ ],
30
+ shortcuts: [
31
+ {
32
+ 'flex-center': 'flex justify-center items-center',
33
+ 'flex-col-center': 'flex flex-col justify-center items-center',
34
+ },
35
+ ],
36
+ theme: {
37
+ colors: {
38
+ 'ui-primary': 'rgb(var(--ui-primary))',
39
+ 'ui-text': 'rgb(var(--ui-text))',
40
+ },
41
+ breakpoints: {
42
+ 'sm': '768px',
43
+ 'smd': '1024px',
44
+ 'md': '1366px',
45
+ 'lg': '1440px',
46
+ 'xl': '1600px',
47
+ '2xl': '1920px',
48
+ },
49
+ },
50
+
51
+ // TOFIX 此文件中该配置不生效
52
+ content: {
53
+ pipeline: {
54
+ include: [
55
+ /\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/,
56
+ 'src/routes/**/*.ts',
57
+ ],
58
+ },
59
+ },
60
+ };
61
+ });