# Quick Start

## Content

This quick start creates a Blazor page with `C1ColorPicker` controls that define colors of a CSS linear-gradient preview.

## 1\. Create the Project

Create a Blazor Web App project with the following options:

* **Interactive render mode:** Server
* **Interactivity location:** Per page/component

Add the ![](https://cdn.mescius.io/document-site-files/images/f5b600ba-f1a7-4f89-a20c-aa6c0c35880d/NuGet_project_logo.svg-20261030.052ff7.webp?width=15) [C1.Blazor.ColorPicker](https://www.nuget.org/packages/C1.Blazor.ColorPicker/10.0.20262.62-beta) NuGet package to the project.

## 2\. Add the namespaces

Add the following namespaces to `Components/_Imports.razor`:

```csharp
@using C1.Blazor.Core
@using C1.Blazor.ColorPicker
@using C1.Blazor.Input
```

## 3\. Add the styles and scripts

Add the ColorPicker style sheets and scripts to `Components/App.razor`. Retain the files generated by the Blazor project template, including application style sheets and the Blazor framework script.

```csharp
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <base href="/" />
    <ResourcePreloader />
    <link rel="stylesheet" href="@Assets["lib/bootstrap/dist/css/bootstrap.min.css"]" />
    <link rel="stylesheet" href="@Assets["app.css"]" />
    <link rel="stylesheet" href="@Assets["YourProject.styles.css"]" />
    <!-- Added for ColorPicker -->
    <link rel="stylesheet" href="_content/C1.Blazor.Core/styles.css" />
    <link rel="stylesheet" href="_content/C1.Blazor.ColorPicker/styles.css" />
    <link rel="stylesheet" href="_content/C1.Blazor.Input/styles.css" />
    <ImportMap />
    <link rel="icon" type="image/png" href="favicon.png" />
    <HeadOutlet />
</head>

<body>
    <Routes />
    <ReconnectModal />
    <!-- Added for ColorPicker -->
    <script src="_content/C1.Blazor.Core/scripts.js"></script>
    <script src="_content/C1.Blazor.ColorPicker/scripts.js"></script>
    <script src="_content/C1.Blazor.Input/scripts.js"></script>
    <script src="@Assets["_framework/blazor.web.js"]"></script>
</body>
```

>type=note
> **<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-1">Note:</span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-1"> </span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-1">C1.Blazor.Input</span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-1"> is installed automatically as a dependency of </span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-1">C1.Blazor.ColorPicker</span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-1">, so you don't need to add a second package. The ColorPicker uses its styles and scripts, so reference them as shown.</span>

## 4\. Add the page

Replace the contents of `Components/Pages/Home.razor` with the following markup:

```csharp
@page "/"
@rendermode InteractiveServer

<PageTitle>Color</PageTitle>

<h1>Color</h1>

<div style="display:flex; gap:32px; align-items:flex-start; flex-wrap:wrap;">
    <div>
        <div>Color</div>
        <C1ColorPicker @bind-SelectedColor="_color" />
    </div>

    <div>
        <div style="width:320px; height:160px; border:1px solid #d0d7de; border-radius:6px; background:@ColorCss;"></div>
        <code style="display:block; margin-top:12px;">background: @ColorCss;</code>
    </div>
</div>

@code {
    C1Color _color = C1Color.FromArgb(255, 0, 122, 204);

    string ColorCss
    {
        get
        {
            var color = _color ?? C1Color.Transparent;
            var alpha = (color.A / 255d).ToString("0.###", System.Globalization.CultureInfo.InvariantCulture);
            return $"rgba({color.R}, {color.G}, {color.B}, {alpha})";
        }
    }
}
```

>type=note
> <span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2">Note:</span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2">@bind-SelectedColor</span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2"> keeps </span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2">\_color</span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2"> in sync with the picker. </span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2">ColorCss</span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2"> falls back to </span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2">C1Color.Transparent</span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2"> if the value is ever null. It formats the alpha value with </span>**<span data-loadable-vc-wrapper="true" data-ssr-placeholder-replace="Hm6N8:EfLS5:z8NN7:qz-Pe:OP-5u-2">CultureInfo.InvariantCulture so cultures that use a decimal comma still produce valid CSS.</span>**

## Run the application

![C1Blazor ColorPicker - Quick start colorpicker menu](https://cdn.mescius.io/document-site-files/images/f5b600ba-f1a7-4f89-a20c-aa6c0c35880d/colorPicker-20261016.648fa8.png?width=400&verticalAlign=bottom)
Run the application and open the site root.
Select a color. The gradient preview and its CSS value update when the selected color changes.