primevue-mirror/pages/colors/index.vue

169 lines
6.2 KiB
Vue

<template>
<div>
<Head>
<Title>Color System - PrimeVue</Title>
<Meta name="description" content="Each PrimeVue theme exports its own color palette." />
</Head>
<div class="content-section documentation">
<h1>Colors</h1>
<p>Each PrimeVue theme exports its own color palette.</p>
<h5>Getting Started</h5>
<p>Colors are exported as CSS variables and used with the standard <i>var</i> syntax such as <i>var(--text-color)</i>.</p>
<pre v-code><code>
&lt;span :style="{color:var(--text-color)}"&gt;&lt;/span&gt;
</code></pre>
<h5>General Colors</h5>
<p>These are common variables used throughout the theme.</p>
<div class="doc-tablewrapper">
<table class="doc-table">
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><i>--text-color</i></td>
<td>Font text color.</td>
</tr>
<tr>
<td><i>--text-color-secondary</i></td>
<td>Muted font text color with a secondary level.</td>
</tr>
<tr>
<td><i>--primary-color</i></td>
<td>Primary color of the theme.</td>
</tr>
<tr>
<td><i>--primary-color-text</i></td>
<td>Text color when background is primary color.</td>
</tr>
<tr>
<td><i>--font-family</i></td>
<td>Font family of the theme.</td>
</tr>
<tr>
<td><i>--inline-spacing</i></td>
<td>Spacing between to adjacent items.</td>
</tr>
<tr>
<td><i>--border-radius</i></td>
<td>Common border radius of elements.</td>
</tr>
<tr>
<td><i>--focus-ring</i></td>
<td>Box shadow of a focused element.</td>
</tr>
<tr>
<td><i>--mask-bg</i></td>
<td>Background of an overlay mask.</td>
</tr>
</tbody>
</table>
</div>
<h5>Color Palette</h5>
<p>A palette consists of 9 colors where each color provides tints/shades from 50 to 900.</p>
<pre v-code><code>
&lt;div :style="{backgroundColor:var(--blue-500)}"&gt;&lt;/div&gt;
</code></pre>
<div class="card">
<div class="flex flex-wrap">
<div v-for="color of colors" :key="color" class="color-stack mr-6 mb-6">
<template v-for="shade of shades" :key="shade">
<div v-if="shade !== 0" class="color-box" :style="{ backgroundColor: `var(--${color}-${shade})`, color: shade > 500 ? '#fff' : '#000' }">{{ color }}-{{ shade }}</div>
</template>
</div>
</div>
</div>
<h5>Surfaces</h5>
<p>In addition, a theme brings a special palette called surfaces that can be used as the base when designing the surface layers and separators.</p>
<div class="card">
<div class="color-stack">
<div v-for="shade in shades" :key="shade" class="color-box" :style="{ backgroundColor: `var(--surface-${shade})`, color: $appState.darkTheme ? '#fff' : shade > 500 ? '#fff' : '#000' }">surface-{{ shade }}</div>
</div>
</div>
<p>A theme also exports named surfaces for common use cases.</p>
<div class="doc-tablewrapper">
<table class="doc-table">
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><i>--surface-ground</i></td>
<td>Base ground color.</td>
</tr>
<tr>
<td><i>--surface-section</i></td>
<td>Color of a section on a ground surface.</td>
</tr>
<tr>
<td><i>--surface-card</i></td>
<td>Color of a surface used as a card.</td>
</tr>
<tr>
<td><i>--surface-overlay</i></td>
<td>Color of overlay surfaces.</td>
</tr>
<tr>
<td><i>--surface-border</i></td>
<td>Color of a divider.</td>
</tr>
<tr>
<td><i>--surface-hover</i></td>
<td>Color of an element in hover state.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
colors: ['blue', 'green', 'yellow', 'cyan', 'pink', 'indigo', 'teal', 'orange', 'bluegray', 'purple', 'red', 'gray', 'primary'],
shades: [0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900]
};
}
};
</script>
<style lang="scss" scoped>
.color-stack {
display: flex;
flex-direction: column;
}
.color-box {
width: 2.5rem;
display: flex;
align-items: center;
padding: 1rem;
width: 250px;
font-weight: bold;
}
.sample-layout {
width: 375px;
}
</style>