From bfe0d005dfb037f8d540b1dc44762d6bbbe720de Mon Sep 17 00:00:00 2001 From: Jamie Henson Date: Fri, 6 Sep 2024 15:21:41 +0100 Subject: [PATCH 1/6] feat: add additional className and onClick props to ProductTile --- src/core/ProductTile.tsx | 13 +++++++++++-- src/core/ProductTile/ProductTile.stories.tsx | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/core/ProductTile.tsx b/src/core/ProductTile.tsx index 05ff431c7..e0653de03 100644 --- a/src/core/ProductTile.tsx +++ b/src/core/ProductTile.tsx @@ -7,14 +7,23 @@ type ProductTileProps = { name: ProductName; selected?: boolean; currentPage?: boolean; + className?: string; + onClick?: () => void; }; -const ProductTile = ({ name, selected, currentPage }: ProductTileProps) => { +const ProductTile = ({ + name, + selected, + currentPage, + className, + onClick, +}: ProductTileProps) => { const { icon, label, description, link, unavailable } = products[name] ?? {}; return (
{icon ? : null} diff --git a/src/core/ProductTile/ProductTile.stories.tsx b/src/core/ProductTile/ProductTile.stories.tsx index 265fbbe49..cdcb1cbf1 100644 --- a/src/core/ProductTile/ProductTile.stories.tsx +++ b/src/core/ProductTile/ProductTile.stories.tsx @@ -47,3 +47,22 @@ export const SelectedProductTiles = { }, }, }; + +export const ProductTileWithOverriddenStylesAndClick = { + render: () => ( + alert("yo congrats on the click")} + /> + ), + parameters: { + docs: { + description: { + story: + "`className` is overridden to change the background color and cursor. `onClick` is also overridden to show an alert on click.", + }, + }, + }, +}; From 3d27f8538e0146f217b057b85fd3a3c875fae6f7 Mon Sep 17 00:00:00 2001 From: Jamie Henson Date: Fri, 6 Sep 2024 15:42:00 +0100 Subject: [PATCH 2/6] feat: add line support to Code component --- src/core/Code.tsx | 19 ++++++++++++++++++- src/core/Code/Code.stories.tsx | 14 ++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/core/Code.tsx b/src/core/Code.tsx index ea4738c17..1192c2881 100644 --- a/src/core/Code.tsx +++ b/src/core/Code.tsx @@ -14,6 +14,8 @@ type CodeProps = { textSize?: string; padding?: string; additionalCSS?: string; + showLines?: boolean; + lineCSS?: string; }; const Code = ({ @@ -22,15 +24,30 @@ const Code = ({ textSize = "ui-text-code", padding = "p-32", additionalCSS = "", + showLines, + lineCSS, }: CodeProps) => { const HTMLraw = highlightSnippet(language, `${snippet}`.trim()) ?? ""; const className = `language-${language} ${textSize}`; + const lineCount = snippet.split(/\r\n|\r|\n/).length; return (
+ {showLines ? ( +
+ {[...Array(lineCount)].map((_, i) => ( +

+ {i + 1} +

+ ))} +
+ ) : null}
         
Date: Fri, 6 Sep 2024 16:51:41 +0100
Subject: [PATCH 3/6] chore: sort Storybook categories by importance

---
 .storybook/preview.tsx | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx
index 8bd2978d4..81d64a388 100644
--- a/.storybook/preview.tsx
+++ b/.storybook/preview.tsx
@@ -38,6 +38,12 @@ const preview = {
       theme,
       container: docsContainer,
     },
+    options: {
+      storySort: {
+        method: "alphabetical",
+        order: ["CSS", "JS Components", "Brand"],
+      },
+    },
   },
   loaders: [mswLoader],
   tags: ["autodocs"],

From f6fbf81c7d9b277f8e4f37434a08db4b5b657707 Mon Sep 17 00:00:00 2001
From: Jamie Henson 
Date: Fri, 6 Sep 2024 16:52:16 +0100
Subject: [PATCH 4/6] fix: allow bg- tailwind classes in icon secondaryColor
 prop

---
 src/core/Icon.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/Icon.tsx b/src/core/Icon.tsx
index 4a46248e4..ca178de34 100644
--- a/src/core/Icon.tsx
+++ b/src/core/Icon.tsx
@@ -10,7 +10,7 @@ type IconProps = {
 };
 
 const convertTailwindClassToVar = (className: string) =>
-  className.replace(/text-([a-z0-9-]+)/gi, "var(--color-$1)");
+  className.replace(/(text|bg)-([a-z0-9-]+)/gi, "var(--color-$2)");
 
 const Icon = ({
   name,

From 4905258b50da7663250b2ec2e68dc44f06db90e3 Mon Sep 17 00:00:00 2001
From: Jamie Henson 
Date: Fri, 6 Sep 2024 16:52:34 +0100
Subject: [PATCH 5/6] feat: port Colors storybook page to stories

---
 src/core/styles/Colors.stories.tsx | 189 +++++++++++++++++++++++++++++
 src/pages/Colour.mdx               |  23 ----
 src/pages/utils.ts                 |  49 --------
 3 files changed, 189 insertions(+), 72 deletions(-)
 create mode 100644 src/core/styles/Colors.stories.tsx
 delete mode 100644 src/pages/Colour.mdx

diff --git a/src/core/styles/Colors.stories.tsx b/src/core/styles/Colors.stories.tsx
new file mode 100644
index 000000000..f4d0f24d0
--- /dev/null
+++ b/src/core/styles/Colors.stories.tsx
@@ -0,0 +1,189 @@
+import React from "react";
+
+export default {
+  title: "CSS/Colors",
+};
+
+const neutralColors = [
+  "bg-neutral-000",
+  "bg-neutral-100",
+  "bg-neutral-200",
+  "bg-neutral-300",
+  "bg-neutral-400",
+  "bg-neutral-500",
+  "bg-neutral-600",
+  "bg-neutral-700",
+  "bg-neutral-800",
+  "bg-neutral-900",
+  "bg-neutral-1000",
+  "bg-neutral-1100",
+  "bg-neutral-1200",
+  "bg-neutral-1300",
+];
+
+const orangeColors = [
+  "bg-orange-100",
+  "bg-orange-200",
+  "bg-orange-300",
+  "bg-orange-400",
+  "bg-orange-500",
+  "bg-orange-600",
+  "bg-orange-700",
+  "bg-orange-800",
+  "bg-orange-900",
+  "bg-orange-1000",
+  "bg-orange-1100",
+];
+
+const secondaryColors = [
+  "bg-yellow-100",
+  "bg-yellow-200",
+  "bg-yellow-300",
+  "bg-yellow-400",
+  "bg-yellow-500",
+  "bg-yellow-600",
+  "bg-yellow-700",
+  "bg-yellow-800",
+  "bg-yellow-900",
+  "bg-green-100",
+  "bg-green-200",
+  "bg-green-300",
+  "bg-green-400",
+  "bg-green-500",
+  "bg-green-600",
+  "bg-green-700",
+  "bg-green-800",
+  "bg-green-900",
+  "bg-blue-100",
+  "bg-blue-200",
+  "bg-blue-300",
+  "bg-blue-400",
+  "bg-blue-500",
+  "bg-blue-600",
+  "bg-blue-700",
+  "bg-blue-800",
+  "bg-blue-900",
+  "bg-violet-100",
+  "bg-violet-200",
+  "bg-violet-300",
+  "bg-violet-400",
+  "bg-violet-500",
+  "bg-violet-600",
+  "bg-violet-700",
+  "bg-violet-800",
+  "bg-violet-900",
+  "bg-pink-100",
+  "bg-pink-200",
+  "bg-pink-300",
+  "bg-pink-400",
+  "bg-pink-500",
+  "bg-pink-600",
+  "bg-pink-700",
+  "bg-pink-800",
+  "bg-pink-900",
+];
+
+const guiColors = [
+  "bg-gui-blue-default-light",
+  "bg-gui-blue-hover-light",
+  "bg-gui-blue-active-light",
+  "bg-gui-blue-default-dark",
+  "bg-gui-blue-hover-dark",
+  "bg-gui-blue-active-dark",
+  "bg-gui-blue-focus",
+  "bg-gui-unavailable",
+  "bg-gui-success-green",
+  "bg-gui-error-red",
+  "bg-gui-focus",
+  "bg-gui-focus-outline",
+  "bg-gui-visited",
+];
+
+const colorSet = (colors) =>
+  colors.map((color) => (
+    
+
+
+

+ {color.replace("bg-", "")} +

+

+ {varToValues(color)[0]} +

+

+ {varToValues(color)[1]} +

+
+
+ )); + +const varToValues = (color: string) => { + // Convert the computed color value in the page to a hex string + const hex = getComputedStyle(document.body).getPropertyValue( + color.replace("bg-", "--color-"), + ); + + // Parse the hex string into its RGB components + const bigint = parseInt(hex.replace(/^#/, ""), 16); + const r = (bigint >> 16) & 255; + const g = (bigint >> 8) & 255; + const b = bigint & 255; + + return [hex, `rgb(${r}, ${g}, ${b})`]; +}; + +export const NeutralColors = { + render: () => ( +
{colorSet(neutralColors)}
+ ), + parameters: { + docs: { + description: { + story: "Example usage: `.text-neutral-1000`, `.bg-neutral-1000`", + }, + }, + }, +}; + +export const OrangeColors = { + render: () => ( +
{colorSet(orangeColors)}
+ ), + parameters: { + docs: { + description: { + story: "Example usage: `.text-orange-600`, `.bg-orange-600`", + }, + }, + }, +}; + +export const SecondaryColors = { + render: () => ( +
{colorSet(secondaryColors)}
+ ), + parameters: { + docs: { + description: { + story: "Example usage: `.text-green-1000`, `.bg-green-1000`", + }, + }, + }, +}; + +export const GUIColors = { + render: () => ( +
{colorSet(guiColors)}
+ ), + parameters: { + docs: { + description: { + story: + "Example usage: `.text-gui-blue-default`, `.bg-gui-blue-default`", + }, + }, + }, +}; diff --git a/src/pages/Colour.mdx b/src/pages/Colour.mdx deleted file mode 100644 index 68b40d36a..000000000 --- a/src/pages/Colour.mdx +++ /dev/null @@ -1,23 +0,0 @@ -import { Fragment } from "react"; -import { Meta, Unstyled } from "@storybook/blocks"; -import { colours } from "./utils"; - - - - -

Colour

- {colours.map((category) => ( - -

{category.name}

-
    - {category.colours.map(({ hex, name, bg }) => ( -
  • -
    -

    {name}

    -

    hex {hex}

    -
  • - ))} -
-
- ))} -
diff --git a/src/pages/utils.ts b/src/pages/utils.ts index 4d5f4962b..183b61f9a 100644 --- a/src/pages/utils.ts +++ b/src/pages/utils.ts @@ -1,52 +1,3 @@ -export const colours = [ - { - name: "Primary", - colours: [ - { bg: "bg-cool-black", name: "Cool Black", hex: "#03020D" }, - { bg: "bg-active-orange", name: "Active Orange", hex: "#FF5416" }, - { bg: "bg-white", name: "White", hex: "#FFFFFF" }, - ], - }, - { - name: "Secondary", - colours: [ - { bg: "bg-electric-cyan", name: "Electric Cyan", hex: "#4AD4FF" }, - { bg: "bg-zingy-green", name: "Zingy Green", hex: "#08FF13" }, - { bg: "bg-bright-red", name: "Bright Red", hex: "#FE372B" }, - { bg: "bg-jazzy-pink", name: "Jazzy Pink", hex: "#FF17D2" }, - ], - }, - { - name: "Neutrals", - colours: [ - { bg: "bg-extra-light-grey", name: "Extra Light Grey", hex: "#F8FAFC" }, - { bg: "bg-light-grey", name: "Light Grey", hex: "#F4F8FB" }, - { bg: "bg-mid-grey", name: "Mid Grey", hex: "#C6CED9" }, - { bg: "bg-dark-grey", name: "Dark Grey", hex: "#667085" }, - { bg: "bg-charcoal-grey", name: "Charcoal Grey", hex: "#2B303B" }, - { bg: "bg-neutral-500", name: "Neutral 500", hex: "#C6CED9" }, - { bg: "bg-neutral-900", name: "Neutral 900", hex: "#39414E" }, - ], - }, - { - name: "GUI", - colours: [ - { bg: "bg-gui-default", name: "Default (Light)", hex: "#006EDC" }, - { bg: "bg-gui-hover", name: "Hover (Light)", hex: "#0862B9" }, - { bg: "bg-gui-active", name: "Active (Light)", hex: "#074095" }, - { bg: "bg-gui-default-dark", name: "Default (Dark)", hex: "#4DA6FF" }, - { bg: "bg-gui-hover-dark", name: "Hover (Dark)", hex: "#2894FF" }, - { bg: "bg-gui-active-dark", name: "Active (Dark)", hex: "#0080FF" }, - { bg: "bg-gui-blue-visited", name: "Visited", hex: "#4887c2" }, - { bg: "bg-gui-focus", name: "Focus", hex: "#80B9F2" }, - { bg: "bg-gui-focus-outline", name: "Focus Outline", hex: "#80B9F2" }, - { bg: "bg-gui-unavailable", name: "Unavailable", hex: "#a8a8a8" }, - { bg: "bg-gui-success", name: "Success", hex: "#11CB24" }, - { bg: "bg-gui-error", name: "Error", hex: "#FB0C0C" }, - ], - }, -]; - export const formsHtml = `
Date: Fri, 6 Sep 2024 16:59:48 +0100 Subject: [PATCH 6/6] chore: update snapshots --- .../Code/__snapshots__/Code.stories.tsx.snap | 106 +- .../ProductTile.stories.tsx.snap | 48 +- .../__snapshots__/Colors.stories.tsx.snap | 1266 +++++++++++++++++ 3 files changed, 1404 insertions(+), 16 deletions(-) create mode 100644 src/core/styles/__snapshots__/Colors.stories.tsx.snap diff --git a/src/core/Code/__snapshots__/Code.stories.tsx.snap b/src/core/Code/__snapshots__/Code.stories.tsx.snap index f0af95b8f..18b584745 100644 --- a/src/core/Code/__snapshots__/Code.stories.tsx.snap +++ b/src/core/Code/__snapshots__/Code.stories.tsx.snap @@ -1,7 +1,105 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`JS Components/Code CodeWithLines smoke-test 1`] = ` +
+
+

+ 1 +

+

+ 2 +

+

+ 3 +

+

+ 4 +

+

+ 5 +

+

+ 6 +

+

+ 7 +

+
+
+    
+      
+        var
+      
+      ably =
+      
+        new
+      
+      
+        Ably
+      
+      .
+      
+        Realtime
+      
+      (
+      
+        '1WChTA.mc0Biw:kNfiYG4KiPgmHHgH'
+      
+      );
+      
+        var
+      
+      channel = ably.
+      
+        channels
+      
+      .
+      
+        get
+      
+      (
+      
+        'web-pal'
+      
+      );
+      
+        // Subscribe to messages on channel
+      
+      channel.
+      
+        subscribe
+      
+      (
+      
+        'greeting'
+      
+      ,
+      
+        function
+      
+      (
+      
+        message
+      
+      ) {
+      
+        alert
+      
+      (message.
+      
+        data
+      
+      );
+});
+    
+  
+
+`; + exports[`JS Components/Code Java smoke-test 1`] = ` -
@@ -82,7 +180,7 @@ channel.subscribe(
 `;
 
 exports[`JS Components/Code Javascript smoke-test 1`] = `
-
@@ -157,7 +255,7 @@ exports[`JS Components/Code Javascript smoke-test 1`] = `
 `;
 
 exports[`JS Components/Code Kotlin smoke-test 1`] = `
-
@@ -212,7 +310,7 @@ exports[`JS Components/Code Kotlin smoke-test 1`] = `
 `;
 
 exports[`JS Components/Code Swift smoke-test 1`] = `
-
diff --git a/src/core/ProductTile/__snapshots__/ProductTile.stories.tsx.snap b/src/core/ProductTile/__snapshots__/ProductTile.stories.tsx.snap
index dd4d9212b..0fc3156d3 100644
--- a/src/core/ProductTile/__snapshots__/ProductTile.stories.tsx.snap
+++ b/src/core/ProductTile/__snapshots__/ProductTile.stories.tsx.snap
@@ -1,8 +1,32 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
+exports[`JS Components/Product Tile ProductTileWithOverriddenStylesAndClick smoke-test 1`] = `
+
+
+ + + + +
+

+ Ably +

+

+ PubSub +

+
+
+

+ Low-level APIs to build any realtime experience +

+
+`; + exports[`JS Components/Product Tile ProductTiles smoke-test 1`] = `
-
+
-
+
-
+
-
+
-
+
-
+

@@ -132,7 +156,7 @@ exports[`JS Components/Product Tile ProductTiles smoke-test 1`] = ` exports[`JS Components/Product Tile SelectedProductTiles smoke-test 1`] = `

-
+
-
+
-
+
-
+
-
+
-
+

diff --git a/src/core/styles/__snapshots__/Colors.stories.tsx.snap b/src/core/styles/__snapshots__/Colors.stories.tsx.snap new file mode 100644 index 000000000..6037c64bf --- /dev/null +++ b/src/core/styles/__snapshots__/Colors.stories.tsx.snap @@ -0,0 +1,1266 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CSS/Colors GUIColors smoke-test 1`] = ` +

+
+
+
+
+

+ gui-blue-default-light +

+

+ #006edc +

+

+ rgb(0, 110, 220) +

+
+
+
+
+
+
+

+ gui-blue-hover-light +

+

+ #0862b9 +

+

+ rgb(8, 98, 185) +

+
+
+
+
+
+
+

+ gui-blue-active-light +

+

+ #074095 +

+

+ rgb(7, 64, 149) +

+
+
+
+
+
+
+

+ gui-blue-default-dark +

+

+ #4da6ff +

+

+ rgb(77, 166, 255) +

+
+
+
+
+
+
+

+ gui-blue-hover-dark +

+

+ #2894ff +

+

+ rgb(40, 148, 255) +

+
+
+
+
+
+
+

+ gui-blue-active-dark +

+

+ #0080ff +

+

+ rgb(0, 128, 255) +

+
+
+
+
+
+
+

+ gui-blue-focus +

+

+ #80b9f2 +

+

+ rgb(128, 185, 242) +

+
+
+
+
+
+
+

+ gui-unavailable +

+

+ #a8a8a8 +

+

+ rgb(168, 168, 168) +

+
+
+
+
+
+
+

+ gui-success-green +

+

+ #11cb24 +

+

+ rgb(17, 203, 36) +

+
+
+
+
+
+
+

+ gui-error-red +

+

+ #fb0c0c +

+

+ rgb(251, 12, 12) +

+
+
+
+
+
+
+

+ gui-focus +

+

+ #80b9f2 +

+

+ rgb(128, 185, 242) +

+
+
+
+
+
+
+

+ gui-focus-outline +

+

+ #80b9f2 +

+

+ rgb(128, 185, 242) +

+
+
+
+
+
+
+

+ gui-visited +

+

+ #4887c2 +

+

+ rgb(72, 135, 194) +

+
+
+
+`; + +exports[`CSS/Colors NeutralColors smoke-test 1`] = ` +
+
+
+
+
+

+ neutral-000 +

+

+ #ffffff +

+

+ rgb(255, 255, 255) +

+
+
+
+
+
+
+

+ neutral-100 +

+

+ #f8fafc +

+

+ rgb(248, 250, 252) +

+
+
+
+
+
+
+

+ neutral-200 +

+

+ #f4f8fb +

+

+ rgb(244, 248, 251) +

+
+
+
+
+
+
+

+ neutral-300 +

+

+ #edf1f7 +

+

+ rgb(237, 241, 247) +

+
+
+
+
+
+
+

+ neutral-400 +

+

+ #e2e7ef +

+

+ rgb(226, 231, 239) +

+
+
+
+
+
+
+

+ neutral-500 +

+

+ #c6ced9 +

+

+ rgb(198, 206, 217) +

+
+
+
+
+
+
+

+ neutral-600 +

+

+ #adb6c2 +

+

+ rgb(173, 182, 194) +

+
+
+
+
+
+
+

+ neutral-700 +

+

+ #89929f +

+

+ rgb(137, 146, 159) +

+
+
+
+
+
+
+

+ neutral-800 +

+

+ #667085 +

+

+ rgb(102, 112, 133) +

+
+
+
+
+
+
+

+ neutral-900 +

+

+ #39414e +

+

+ rgb(57, 65, 78) +

+
+
+
+
+
+
+

+ neutral-1000 +

+

+ #2b303b +

+

+ rgb(43, 48, 59) +

+
+
+
+
+
+
+

+ neutral-1100 +

+

+ #202531 +

+

+ rgb(32, 37, 49) +

+
+
+
+
+
+
+

+ neutral-1200 +

+

+ #141924 +

+

+ rgb(20, 25, 36) +

+
+
+
+
+
+
+

+ neutral-1300 +

+

+ #03020d +

+

+ rgb(3, 2, 13) +

+
+
+
+`; + +exports[`CSS/Colors OrangeColors smoke-test 1`] = ` +
+
+
+
+
+

+ orange-100 +

+

+ #fff5f1 +

+

+ rgb(255, 245, 241) +

+
+
+
+
+
+
+

+ orange-200 +

+

+ #ffe3d8 +

+

+ rgb(255, 227, 216) +

+
+
+
+
+
+
+

+ orange-300 +

+

+ #ffc4ae +

+

+ rgb(255, 196, 174) +

+
+
+
+
+
+
+

+ orange-400 +

+

+ #ff9c79 +

+

+ rgb(255, 156, 121) +

+
+
+
+
+
+
+

+ orange-500 +

+

+ #ff723f +

+

+ rgb(255, 114, 63) +

+
+
+
+
+
+
+

+ orange-600 +

+

+ #ff5416 +

+

+ rgb(255, 84, 22) +

+
+
+
+
+
+
+

+ orange-700 +

+

+ #ff2739 +

+

+ rgb(255, 39, 57) +

+
+
+
+
+
+
+

+ orange-800 +

+

+ #e40000 +

+

+ rgb(228, 0, 0) +

+
+
+
+
+
+
+

+ orange-900 +

+

+ #b82202 +

+

+ rgb(184, 34, 2) +

+
+
+
+
+
+
+

+ orange-1000 +

+

+ #751500 +

+

+ rgb(117, 21, 0) +

+
+
+
+
+
+
+

+ orange-1100 +

+

+ #2a0b00 +

+

+ rgb(42, 11, 0) +

+
+
+
+`; + +exports[`CSS/Colors SecondaryColors smoke-test 1`] = ` +
+
+
+
+
+

+ yellow-100 +

+

+ #fffbef +

+

+ rgb(255, 251, 239) +

+
+
+
+
+
+
+

+ yellow-200 +

+

+ #fff0ba +

+

+ rgb(255, 240, 186) +

+
+
+
+
+
+
+

+ yellow-300 +

+

+ #ffe27c +

+

+ rgb(255, 226, 124) +

+
+
+
+
+
+
+

+ yellow-400 +

+

+ #ffd43d +

+

+ rgb(255, 212, 61) +

+
+
+
+
+
+
+

+ yellow-500 +

+

+ #f8c100 +

+

+ rgb(248, 193, 0) +

+
+
+
+
+
+
+

+ yellow-600 +

+

+ #e8a700 +

+

+ rgb(232, 167, 0) +

+
+
+
+
+
+
+

+ yellow-700 +

+

+ #ac8600 +

+

+ rgb(172, 134, 0) +

+
+
+
+
+
+
+

+ yellow-800 +

+

+ #654f00 +

+

+ rgb(101, 79, 0) +

+
+
+
+
+
+
+

+ yellow-900 +

+

+ #291c01 +

+

+ rgb(41, 28, 1) +

+
+
+
+
+
+
+

+ green-100 +

+

+ #f1fff1 +

+

+ rgb(241, 255, 241) +

+
+
+
+
+
+
+

+ green-200 +

+

+ #b8ffbb +

+

+ rgb(184, 255, 187) +

+
+
+
+
+
+
+

+ green-300 +

+

+ #80ff85 +

+

+ rgb(128, 255, 133) +

+
+
+
+
+
+
+

+ green-400 +

+

+ #08ff13 +

+

+ rgb(8, 255, 19) +

+
+
+
+
+
+
+

+ green-500 +

+

+ #00e80b +

+

+ rgb(0, 232, 11) +

+
+
+
+
+
+
+

+ green-600 +

+

+ #00c008 +

+

+ rgb(0, 192, 8) +

+
+
+
+
+
+
+

+ green-700 +

+

+ #008e06 +

+

+ rgb(0, 142, 6) +

+
+
+
+
+
+
+

+ green-800 +

+

+ #005303 +

+

+ rgb(0, 83, 3) +

+
+
+
+
+
+
+

+ green-900 +

+

+ #002a02 +

+

+ rgb(0, 42, 2) +

+
+
+
+
+
+
+

+ blue-100 +

+

+ #f1fbff +

+

+ rgb(241, 251, 255) +

+
+
+
+
+
+
+

+ blue-200 +

+

+ #b8eaff +

+

+ rgb(184, 234, 255) +

+
+
+
+
+
+
+

+ blue-300 +

+

+ #80d9ff +

+

+ rgb(128, 217, 255) +

+
+
+
+
+
+
+

+ blue-400 +

+

+ #4ad4ff +

+

+ rgb(74, 212, 255) +

+
+
+
+
+
+
+

+ blue-500 +

+

+ #2cc0ff +

+

+ rgb(44, 192, 255) +

+
+
+
+
+
+
+

+ blue-600 +

+

+ #00a5ec +

+

+ rgb(0, 165, 236) +

+
+
+
+
+
+
+

+ blue-700 +

+

+ #0284cd +

+

+ rgb(2, 132, 205) +

+
+
+
+
+
+
+

+ blue-800 +

+

+ #004b75 +

+

+ rgb(0, 75, 117) +

+
+
+
+
+
+
+

+ blue-900 +

+

+ #001b2a +

+

+ rgb(0, 27, 42) +

+
+
+
+
+
+
+

+ violet-100 +

+

+ #f7f2fe +

+

+ rgb(247, 242, 254) +

+
+
+
+
+
+
+

+ violet-200 +

+

+ #d8bcfb +

+

+ rgb(216, 188, 251) +

+
+
+
+
+
+
+

+ violet-300 +

+

+ #b986f8 +

+

+ rgb(185, 134, 248) +

+
+
+
+
+
+
+

+ violet-400 +

+

+ #9951f5 +

+

+ rgb(153, 81, 245) +

+
+
+
+
+
+
+

+ violet-500 +

+

+ #7a1bf2 +

+

+ rgb(122, 27, 242) +

+
+
+
+
+
+
+

+ violet-600 +

+

+ #5f0bc9 +

+

+ rgb(95, 11, 201) +

+
+
+
+
+
+
+

+ violet-700 +

+

+ #460894 +

+

+ rgb(70, 8, 148) +

+
+
+
+
+
+
+

+ violet-800 +

+

+ #2d055e +

+

+ rgb(45, 5, 94) +

+
+
+
+
+
+
+

+ violet-900 +

+

+ #130228 +

+

+ rgb(19, 2, 40) +

+
+
+
+
+
+
+

+ pink-100 +

+

+ #fff1fc +

+

+ rgb(255, 241, 252) +

+
+
+
+
+
+
+

+ pink-200 +

+

+ #ffb8f1 +

+

+ rgb(255, 184, 241) +

+
+
+
+
+
+
+

+ pink-300 +

+

+ #ff80e6 +

+

+ rgb(255, 128, 230) +

+
+
+
+
+
+
+

+ pink-400 +

+

+ #ff47db +

+

+ rgb(255, 71, 219) +

+
+
+
+
+
+
+

+ pink-500 +

+

+ #ff17d2 +

+

+ rgb(255, 23, 210) +

+
+
+
+
+
+
+

+ pink-600 +

+

+ #d400ab +

+

+ rgb(212, 0, 171) +

+
+
+
+
+
+
+

+ pink-700 +

+

+ #9c007e +

+

+ rgb(156, 0, 126) +

+
+
+
+
+
+
+

+ pink-800 +

+

+ #630050 +

+

+ rgb(99, 0, 80) +

+
+
+
+
+
+
+

+ pink-900 +

+

+ #2a0022 +

+

+ rgb(42, 0, 34) +

+
+
+
+`;