uno.config.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. colors: {
  25. // ...
  26. myDarkBgColor: '#141414',
  27. myMainDarkBgColor: '#1c1c1c'
  28. }
  29. },
  30. // ...UnoCSS options
  31. rules: [
  32. [
  33. /^custom-hover$/,
  34. ([], { rawSelector }) => {
  35. const selector = e(rawSelector)
  36. return `
  37. ${selector} {
  38. display: flex;
  39. height: 100%;
  40. padding: 0 10px;
  41. cursor: pointer;
  42. align-items: center;
  43. transition: background var(--transition-time-02);
  44. }
  45. /* you can have multiple rules */
  46. ${selector}:hover {
  47. background-color: var(--top-header-hover-color);
  48. }
  49. .dark ${selector}:hover {
  50. background-color: var(--el-bg-color-overlay);
  51. }
  52. `
  53. }
  54. ],
  55. [
  56. /^layout-border__left$/,
  57. ([], { rawSelector }) => {
  58. const selector = e(rawSelector)
  59. return `
  60. ${selector}:before {
  61. content: "";
  62. position: absolute;
  63. top: 0;
  64. left: 0;
  65. width: 1px;
  66. height: 100%;
  67. background-color: var(--el-border-color);
  68. z-index: 3;
  69. }
  70. `
  71. }
  72. ],
  73. [
  74. /^layout-border__right$/,
  75. ([], { rawSelector }) => {
  76. const selector = e(rawSelector)
  77. return `
  78. ${selector}:after {
  79. content: "";
  80. position: absolute;
  81. top: 0;
  82. right: 0;
  83. width: 1px;
  84. height: 100%;
  85. background-color: var(--el-border-color);
  86. z-index: 3;
  87. }
  88. `
  89. }
  90. ],
  91. [
  92. /^layout-border__top$/,
  93. ([], { rawSelector }) => {
  94. const selector = e(rawSelector)
  95. return `
  96. ${selector}:before {
  97. content: "";
  98. position: absolute;
  99. top: 0;
  100. left: 0;
  101. width: 100%;
  102. height: 1px;
  103. background-color: var(--el-border-color);
  104. z-index: 3;
  105. }
  106. `
  107. }
  108. ],
  109. [
  110. /^layout-border__bottom$/,
  111. ([], { rawSelector }) => {
  112. const selector = e(rawSelector)
  113. return `
  114. ${selector}:after {
  115. content: "";
  116. position: absolute;
  117. bottom: 0;
  118. left: 0;
  119. width: 100%;
  120. height: 1px;
  121. background-color: var(--el-border-color);
  122. z-index: 3;
  123. }
  124. `
  125. }
  126. ]
  127. ],
  128. presets: [
  129. presetUno({ dark: 'class', attributify: false }),
  130. presetIcons(),
  131. presetWebFonts({
  132. provider: 'google',
  133. fonts: {
  134. sans: 'Noto Sans SC'
  135. }
  136. })
  137. ],
  138. // transformers: [transformerVariantGroup()],
  139. shortcuts: {
  140. 'wh-full': 'w-full h-full',
  141. 'ct-border': 'border-t-1px border-t-solid border-t-gray-300',
  142. 'cr-border': 'border-r-1px border-r-solid border-r-gray-300 ',
  143. 'cl-border': 'border-l-1px border-l-solid border-l-gray-300',
  144. 'cb-border': 'border-b-1px border-b-solid border-b-gray-300'
  145. }
  146. })