uno.config.ts 2.6 KB

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