uno.config.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import {
  2. defineConfig,
  3. toEscapedSelector as e,
  4. presetUno,
  5. presetIcons,
  6. presetWebFonts
  7. } from 'unocss'
  8. // import transformerVariantGroup from '@unocss/transformer-variant-group'
  9. export default defineConfig({
  10. content: {
  11. pipeline: {
  12. include: [/\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/, 'src/**/*.{js,ts}']
  13. }
  14. },
  15. theme: {
  16. breakpoints: {
  17. sm: '640px',
  18. md: '768px',
  19. lg: '1024px',
  20. xl: '1280px',
  21. '2xl': '1920px',
  22. '3xl': '2000px'
  23. }
  24. },
  25. // ...UnoCSS options
  26. rules: [
  27. [
  28. /^custom-hover$/,
  29. ([], { rawSelector }) => {
  30. const selector = e(rawSelector)
  31. return `
  32. ${selector} {
  33. display: flex;
  34. height: 100%;
  35. padding: 0 10px;
  36. cursor: pointer;
  37. align-items: center;
  38. transition: background var(--transition-time-02);
  39. }
  40. /* you can have multiple rules */
  41. ${selector}:hover {
  42. background-color: var(--top-header-hover-color);
  43. }
  44. .dark ${selector}:hover {
  45. background-color: var(--el-bg-color-overlay);
  46. }
  47. `
  48. }
  49. ],
  50. [
  51. /^layout-border__left$/,
  52. ([], { rawSelector }) => {
  53. const selector = e(rawSelector)
  54. return `
  55. ${selector}:before {
  56. content: "";
  57. position: absolute;
  58. top: 0;
  59. left: 0;
  60. width: 1px;
  61. height: 100%;
  62. background-color: var(--el-border-color);
  63. z-index: 3;
  64. }
  65. `
  66. }
  67. ],
  68. [
  69. /^layout-border__right$/,
  70. ([], { rawSelector }) => {
  71. const selector = e(rawSelector)
  72. return `
  73. ${selector}:after {
  74. content: "";
  75. position: absolute;
  76. top: 0;
  77. right: 0;
  78. width: 1px;
  79. height: 100%;
  80. background-color: var(--el-border-color);
  81. z-index: 3;
  82. }
  83. `
  84. }
  85. ],
  86. [
  87. /^layout-border__top$/,
  88. ([], { rawSelector }) => {
  89. const selector = e(rawSelector)
  90. return `
  91. ${selector}:before {
  92. content: "";
  93. position: absolute;
  94. top: 0;
  95. left: 0;
  96. width: 100%;
  97. height: 1px;
  98. background-color: var(--el-border-color);
  99. z-index: 3;
  100. }
  101. `
  102. }
  103. ],
  104. [
  105. /^layout-border__bottom$/,
  106. ([], { rawSelector }) => {
  107. const selector = e(rawSelector)
  108. return `
  109. ${selector}:after {
  110. content: "";
  111. position: absolute;
  112. bottom: 0;
  113. left: 0;
  114. width: 100%;
  115. height: 1px;
  116. background-color: var(--el-border-color);
  117. z-index: 3;
  118. }
  119. `
  120. }
  121. ]
  122. ],
  123. presets: [
  124. presetUno({ dark: 'class', attributify: false }),
  125. presetIcons(),
  126. presetWebFonts({
  127. provider: 'google',
  128. fonts: {
  129. sans: 'Noto Sans SC'
  130. }
  131. })
  132. ],
  133. // transformers: [transformerVariantGroup()],
  134. shortcuts: {
  135. 'wh-full': 'w-full h-full'
  136. }
  137. })