Skip to content

Theme ​

UnoCSS ayrıca Tailwind CSS / Windi CSS'te aşina olabileceğiniz tema sistemini de destekler. Kullanıcı düzeyinde, yapılandırmanızda theme özelliğini belirtebilirsiniz ve bu varsayılan tema ile derinlemesine birleştirilecektir.

Usage ​

ts
theme: {
  // ...
  colors: {
    veryCool: '#0000ff', // class="text-very-cool"
    brand: {
      primary: 'hsl(var(--hue, 217) 78% 51%)', //class="bg-brand-primary"
      DEFAULT: '#942192' //class="bg-brand"
    },
  },
}

TIP

Ayrıştırma süreci sırasında, theme her zaman context'te mevcut olacaktır.

Usage in rules ​

Temayı kurallarda tüketmek için:

ts
rules: [
  [/^text-(.*)$/, ([, c], { theme }) => {
    if (theme.colors[c])
      return { color: theme.colors[c] }
  }],
]

Usage in variants ​

Temayı varyantlarda tüketmek için:

ts
variants: [
  {
    name: 'variant-name',
    match(matcher, { theme }) {
      // ...
    },
  },
]

Usage in shortcuts ​

Dinamik kısayollarda temayı tüketmek için:

ts
shortcuts: [
  [/^badge-(.*)$/, ([, c], { theme }) => {
    if (Object.keys(theme.colors).includes(c))
      return `bg-${c}4:10 text-${c}5 rounded`
  }],
]

Breakpoints ​

WARNING

Özel bir breakpoints nesnesi sağlandığında varsayılan birleştirme yerine geçersiz kılınacaktır.

Aşağıdaki örnekle, yalnızca sm: ve md: breakpoint varyantlarını kullanabilirsiniz:

ts
theme: {
  // ...
  breakpoints: {
    sm: '320px',
    md: '640px',
  },
}

original tema breakpoint'lerini miras almak istiyorsanız, extendTheme kullanabilirsiniz:

ts
extendTheme: (theme) => {
  return {
    ...theme,
    breakpoints: {
      ...theme.breakpoints,
      sm: '320px',
      md: '640px',
    },
  }
}

INFO

verticalBreakpoints, breakpoints ile aynıdır ancak dikey düzen içindir.

Ek olarak, ekran noktalarını boyuta göre sıralayacağız (aynı birim). Farklı birimlerdeki ekran noktaları için, hatalardan kaçınmak için lütfen yapılandırmada birleştirilmiş birimler kullanın.

ts
theme: {
  // ...
  breakpoints: {
    sm: '320px',
    // Farklı birim boyutlarının karşılaştırma sıralaması desteklenmediğinden, lütfen aynı birime dönüştürün.
    // md: '40rem',
    md: `${40 * 16}px`,
    lg: '960px',
  },
}

ExtendTheme ​

ExtendTheme, derinlemesine birleştirilmiş temayı düzenlemenize olanak tanır ve tam tema nesnesini alır.

Özel fonksiyonlar tema nesnesini değiştirir.

ts
extendTheme: (theme) => {
  theme.colors.veryCool = '#0000ff' // class="text-very-cool"
  theme.colors.brand = {
    primary: 'hsl(var(--hue, 217) 78% 51%)', // class="bg-brand-primary"
  }
}

Orijinal olanı tamamen değiştirmek için yeni bir tema nesnesi döndürmek de mümkündür.

ts
extendTheme: (theme) => {
  return {
    ...theme,
    colors: {
      ...theme.colors,
      veryCool: '#0000ff', // class="text-very-cool"
      brand: {
        primary: 'hsl(var(--hue, 217) 78% 51%)', // class="bg-brand-primary"
      },
    },
  }
}

Released under the MIT License.