uno.config.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { defineConfig, toEscapedSelector as e, presetUno, presetIcons } from 'unocss'
  2. // import transformerVariantGroup from '@unocss/transformer-variant-group'
  3. export default defineConfig({
  4. content: {
  5. pipeline: {
  6. include: [/\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/, 'src/**/*.{js,ts}']
  7. }
  8. },
  9. // ...UnoCSS options
  10. rules: [
  11. [
  12. /^custom-hover$/,
  13. ([], { rawSelector }) => {
  14. const selector = e(rawSelector)
  15. return `
  16. ${selector} {
  17. display: flex;
  18. height: 100%;
  19. padding: 0 10px;
  20. cursor: pointer;
  21. align-items: center;
  22. transition: background var(--transition-time-02);
  23. }
  24. /* you can have multiple rules */
  25. ${selector}:hover {
  26. background-color: var(--top-header-hover-color);
  27. }
  28. .dark ${selector}:hover {
  29. background-color: var(--el-bg-color-overlay);
  30. }
  31. `
  32. }
  33. ],
  34. [
  35. /^layout-border__left$/,
  36. ([], { rawSelector }) => {
  37. const selector = e(rawSelector)
  38. return `
  39. ${selector}:before {
  40. content: "";
  41. position: absolute;
  42. top: 0;
  43. left: 0;
  44. width: 1px;
  45. height: 100%;
  46. background-color: var(--el-border-color);
  47. z-index: 3;
  48. }
  49. `
  50. }
  51. ],
  52. [
  53. /^layout-border__right$/,
  54. ([], { rawSelector }) => {
  55. const selector = e(rawSelector)
  56. return `
  57. ${selector}:after {
  58. content: "";
  59. position: absolute;
  60. top: 0;
  61. right: 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__top$/,
  72. ([], { rawSelector }) => {
  73. const selector = e(rawSelector)
  74. return `
  75. ${selector}:before {
  76. content: "";
  77. position: absolute;
  78. top: 0;
  79. left: 0;
  80. width: 100%;
  81. height: 1px;
  82. background-color: var(--el-border-color);
  83. z-index: 3;
  84. }
  85. `
  86. }
  87. ],
  88. [
  89. /^layout-border__bottom$/,
  90. ([], { rawSelector }) => {
  91. const selector = e(rawSelector)
  92. return `
  93. ${selector}:after {
  94. content: "";
  95. position: absolute;
  96. bottom: 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. presets: [presetUno({ dark: 'class', attributify: false }), presetIcons()],
  108. // transformers: [transformerVariantGroup()],
  109. shortcuts: {
  110. 'wh-full': 'w-full h-full'
  111. }
  112. })