Skip to content

Gradients

Helper functions to create CSS gradients.

Usage Examples

vue
<script setup>
import {
  LinearGradient,
  RadialGradient,
  Container,
  BorderRadius,
  EdgeInsets,
  BoxDecoration,
  TextStyle,
  Text,
} from "fluekit";

// Linear Gradient
const linearGradient = LinearGradient({
  colors: ["red", "blue"],
  begin: "topLeft",
  end: "bottomRight",
});

// Radial Gradient
const radialGradient = RadialGradient({
  colors: ["yellow", "purple"],
  center: "center",
  radius: 0.5,
});

const linearDecoration = BoxDecoration({
  gradient: linearGradient,
  borderRadius: BorderRadius.all(8),
});

const radialDecoration = BoxDecoration({
  gradient: radialGradient,
  borderRadius: BorderRadius.all(8),
});

const whiteTextStyle = TextStyle({ color: "white" });
</script>

<template>
  <Container :width="100" :height="100" :decoration="linearDecoration" alignment="center">
    <Text data="Linear Gradient" :style="whiteTextStyle" />
  </Container>

  <Container
    :width="100"
    :height="100"
    :margin="EdgeInsets.only({ top: 20 })"
    :decoration="radialDecoration"
    alignment="center"
  >
    <Text data="Radial Gradient" :style="whiteTextStyle" />
  </Container>
</template>

API

Types

typescript
export enum TileMode {
  clamp = "clamp",
  repeated = "repeat",
  mirrored = "mirror",
  decal = "decal",
}

export interface GradientProps {
  colors: string[];
  stops?: number[];
}

export interface LinearGradientProps extends GradientProps {
  begin?: Alignment;
  end?: Alignment;
  tileMode?: TileMode;
}

export interface RadialGradientProps extends GradientProps {
  center?: Alignment;
  radius?: number;
  focal?: Alignment;
  focalRadius?: number;
  tileMode?: TileMode;
}

Methods

LinearGradient()

Creates a linear gradient CSS string.

typescript
function LinearGradient(props: LinearGradientProps): string;

RadialGradient()

Creates a radial gradient CSS string.

typescript
function RadialGradient(props: RadialGradientProps): string;

Examples

Linear Gradient with Stops

vue
<Container
  :decoration="
    BoxDecoration({
      gradient: LinearGradient({
        colors: ['red', 'yellow', 'green'],
        stops: [0, 0.5, 1],
        begin: 'left',
        end: 'right',
      }),
    })
  "
  :padding="EdgeInsets.all(16)"
  alignment="center"
>
  <Text data="Linear Gradient with Stops" :style="whiteTextStyle" />
</Container>

Radial Gradient with Custom Center

vue
<Container
  :decoration="
    BoxDecoration({
      gradient: RadialGradient({
        colors: ['blue', 'transparent'],
        center: 'topLeft',
        radius: 1,
      }),
    })
  "
  :padding="EdgeInsets.all(16)"
  :margin="EdgeInsets.only({ top: 10 })"
  alignment="center"
>
  <Text data="Radial Gradient" />
</Container>