unocss.config.js 900 B

1234567891011121314151617181920212223242526272829303132
  1. import { defineConfig, presetUno } from 'unocss'
  2. const DIRECTION_MAPPIINGS = { t: 'top', r: 'right', b: 'bottom', l: 'left' }
  3. export default defineConfig({
  4. presets: [presetUno],
  5. rules: [
  6. [
  7. /^b(t|r|b|l|d)-(.*)/,
  8. ([, d, c]) => {
  9. const direction = DIRECTION_MAPPIINGS[d] || ''
  10. const p = direction ? `border-${direction}` : 'border'
  11. const attrs = c.split('_')
  12. if (
  13. // 属性中不包含 border-style 则默认 solid
  14. !attrs.some((item) =>
  15. /^(none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)$/.test(item),
  16. )
  17. ) {
  18. attrs.push('solid')
  19. }
  20. // 属性中不包含 border-width 则默认 1px
  21. if (!attrs.some((item) => /^\d/.test(item))) {
  22. attrs.push('1px')
  23. }
  24. return {
  25. [p]: attrs.join(' '),
  26. }
  27. },
  28. ],
  29. ],
  30. })