diff --git a/.storybook/preview.ts b/.storybook/preview.ts
index 25ee5f2590..279744ce92 100644
--- a/.storybook/preview.ts
+++ b/.storybook/preview.ts
@@ -15,6 +15,7 @@ import {
SupportGoWhereTheme,
SGWDigitalLobbyTheme,
SMGSTheme,
+ CareerCompassTheme,
} from "../src/theme";
import { withThemeFromJSXProvider } from "./decorators/theme-decorator";
@@ -35,6 +36,7 @@ const preview: Preview = {
RBS: RBSTheme,
SPF: SPFTheme,
SMGS: SMGSTheme,
+ CareerCompass: CareerCompassTheme,
},
Provider: ThemeProvider,
}),
diff --git a/src/theme/colour-primitive/specs/careercompass-colour-set.ts b/src/theme/colour-primitive/specs/careercompass-colour-set.ts
new file mode 100644
index 0000000000..fd7b47649b
--- /dev/null
+++ b/src/theme/colour-primitive/specs/careercompass-colour-set.ts
@@ -0,0 +1,105 @@
+import { PrimitiveColourSet } from "../../types";
+
+export const CareerCompassColourSet: PrimitiveColourSet = {
+ white: "#FFFFFF",
+ black: "#000000",
+ "brand-10": "#001731",
+ "brand-20": "#002752",
+ "brand-30": "#003874",
+ "brand-40": "#004D9F",
+ "brand-50": "#1768BE",
+ "brand-60": "#3C91EC",
+ "brand-70": "#6CB4FF",
+ "brand-80": "#A5CDFF",
+ "brand-90": "#CFE1FE",
+ "brand-95": "#E8F0FE",
+ "brand-100": "#F7F9FF",
+
+ "primary-10": "#001731",
+ "primary-20": "#002752",
+ "primary-30": "#003874",
+ "primary-40": "#004D9F",
+ "primary-50": "#1768BE",
+ "primary-60": "#3C91EC",
+ "primary-70": "#6CB4FF",
+ "primary-80": "#A5CDFF",
+ "primary-90": "#CFE1FE",
+ "primary-95": "#E8F0FE",
+ "primary-100": "#F7F9FF",
+
+ "secondary-10": "#001A19",
+ "secondary-20": "#002D2B",
+ "secondary-30": "#00413D",
+ "secondary-40": "#005954",
+ "secondary-50": "#00756F",
+ "secondary-60": "#03A098",
+ "secondary-70": "#55BFBA",
+ "secondary-80": "#92D6D2",
+ "secondary-90": "#BFE7E5",
+ "secondary-95": "#DDF2F1",
+ "secondary-100": "#F4FBFA",
+
+ "neutral-10": "#161616",
+ "neutral-20": "#282828",
+ "neutral-30": "#393939",
+ "neutral-40": "#4E4E4E",
+ "neutral-50": "#686868",
+ "neutral-60": "#8E8E8E",
+ "neutral-70": "#AFAFB0",
+ "neutral-80": "#C7CACA",
+ "neutral-90": "#DDE1E2",
+ "neutral-95": "#EDEFEF",
+ "neutral-100": "#F9F9F9",
+
+ "success-10": "#081A0F",
+ "success-20": "#0E2D1B",
+ "success-30": "#154126",
+ "success-40": "#1C5A34",
+ "success-50": "#257645",
+ "success-60": "#44A068",
+ "success-70": "#64C189",
+ "success-80": "#80DCA5",
+ "success-90": "#B4ECCB",
+ "success-95": "#D5F6E2",
+ "success-100": "#EFFCF4",
+
+ "warning-10": "#221302",
+ "warning-20": "#3B2204",
+ "warning-30": "#543106",
+ "warning-40": "#744408",
+ "warning-50": "#98590C",
+ "warning-60": "#D07A13",
+ "warning-70": "#E4A244",
+ "warning-80": "#F5C26C",
+ "warning-90": "#FADBA6",
+ "warning-95": "#FCECD4",
+ "warning-100": "#FDF7F0",
+
+ "error-10": "#330505",
+ "error-20": "#550808",
+ "error-30": "#750C0C",
+ "error-40": "#9E130F",
+ "error-50": "#CB2213",
+ "error-60": "#DE6C6C",
+ "error-70": "#E89B9B",
+ "error-80": "#EFBEBE",
+ "error-90": "#F5D9D9",
+ "error-95": "#F9ECEC",
+ "error-100": "#FCF7F7",
+
+ "info-10": "#021824",
+ "info-20": "#032B3F",
+ "info-30": "#053D59",
+ "info-40": "#06547B",
+ "info-50": "#176E9B",
+ "info-60": "#5296BE",
+ "info-70": "#82B5DA",
+ "info-80": "#ACCFE7",
+ "info-90": "#CCE3F1",
+ "info-95": "#E3F1F8",
+ "info-100": "#F4FAFD",
+
+ "primary-inverse": "#FEAB10",
+};
+
+export default CareerCompassColourSet;
diff --git a/src/theme/colour-primitive/theme-helper.ts b/src/theme/colour-primitive/theme-helper.ts
index 91f83122ff..d5292c4d34 100644
--- a/src/theme/colour-primitive/theme-helper.ts
+++ b/src/theme/colour-primitive/theme-helper.ts
@@ -13,6 +13,7 @@ import { SupportGoWhereColourSet } from "./specs/supportgowhere-colour-set";
import { IMDAColourSet } from "./specs/imda-colour-set";
import { SPFColourSet } from "./specs/spf-colour-set";
import { SMGSColourSet } from "./specs/smgs-colour-set";
+import { CareerCompassColourSet } from "./specs/careercompass-colour-set";
import { ColourCollectionsMap } from "./types";
export const ColourSpec: ThemeCollectionSpec<
@@ -32,6 +33,7 @@ export const ColourSpec: ThemeCollectionSpec<
sgwdigitallobby: SupportGoWhereColourSet,
imda: IMDAColourSet,
spf: SPFColourSet,
+ careercompass: CareerCompassColourSet,
smgs: SMGSColourSet,
},
defaultValue: "lifesg",
@@ -58,6 +60,7 @@ export const DarkColourSpec: ThemeCollectionSpec<
sgwdigitallobby: SupportGoWhereColourSet,
imda: IMDAColourSet,
spf: SPFColourSet,
+ careercompass: CareerCompassColourSet,
smgs: SMGSColourSet,
},
defaultValue: "lifesg",
diff --git a/src/theme/colour-semantic/specs/a11yplayground-semantic-tokens.ts b/src/theme/colour-semantic/specs/a11yplayground-semantic-tokens.ts
index 0391dbed7d..bb3390c1fd 100644
--- a/src/theme/colour-semantic/specs/a11yplayground-semantic-tokens.ts
+++ b/src/theme/colour-semantic/specs/a11yplayground-semantic-tokens.ts
@@ -13,6 +13,8 @@ export const A11yPlaygroundColourSet: SemanticColourSet = {
"text-subtlest": getPrimitiveColour("neutral-60"),
"text-primary": getPrimitiveColour("primary-50"),
"text-primary-strongest": getPrimitiveColour("primary-20"),
+ "text-secondary": getPrimitiveColour("secondary-50"),
+ "text-secondary-subtle": getPrimitiveColour("secondary-60"),
"text-hover": getPrimitiveColour("primary-40"),
"text-selected": getPrimitiveColour("primary-50"),
@@ -36,6 +38,8 @@ export const A11yPlaygroundColourSet: SemanticColourSet = {
"icon-primary": getPrimitiveColour("primary-50"),
"icon-primary-subtle": getPrimitiveColour("primary-60"),
"icon-primary-subtlest": getPrimitiveColour("primary-70"),
+ "icon-secondary": getPrimitiveColour("secondary-50"),
+ "icon-secondary-subtle": getPrimitiveColour("secondary-60"),
"icon-hover": getPrimitiveColour("primary-40"),
"icon-selected": getPrimitiveColour("primary-50"),
@@ -134,6 +138,11 @@ export const A11yPlaygroundColourSet: SemanticColourSet = {
"bg-primary-subtlest": getPrimitiveColour("primary-100"),
"bg-available": "#6DD0A1",
+ "bg-secondary": getPrimitiveColour("secondary-50"),
+ "bg-secondary-subtle": getPrimitiveColour("secondary-60"),
+ "bg-secondary-subtler": getPrimitiveColour("secondary-95"),
+ "bg-secondary-subtlest": getPrimitiveColour("secondary-100"),
+
"bg-primary-hover": getPrimitiveColour("primary-40"),
"bg-primary-subtlest-hover": getPrimitiveColour("primary-90"),
"bg-primary-subtlest-selected": getPrimitiveColour("primary-90"),
@@ -165,6 +174,8 @@ export const A11yPlaygroundDarkColourSet: SemanticColourSet = {
"text-subtlest": getPrimitiveColour("neutral-50"),
"text-primary": getPrimitiveColour("primary-60"),
"text-primary-strongest": getPrimitiveColour("primary-90"),
+ "text-secondary": getPrimitiveColour("secondary-60"),
+ "text-secondary-subtle": getPrimitiveColour("secondary-50"),
"text-hover": getPrimitiveColour("primary-70"),
"text-selected": getPrimitiveColour("primary-60"),
@@ -188,6 +199,8 @@ export const A11yPlaygroundDarkColourSet: SemanticColourSet = {
"icon-primary": getPrimitiveColour("primary-60"),
"icon-primary-subtle": getPrimitiveColour("primary-50"),
"icon-primary-subtlest": getPrimitiveColour("primary-40"),
+ "icon-secondary": getPrimitiveColour("secondary-60"),
+ "icon-secondary-subtle": getPrimitiveColour("secondary-50"),
"icon-hover": getPrimitiveColour("primary-70"),
"icon-selected": getPrimitiveColour("primary-60"),
@@ -286,6 +299,11 @@ export const A11yPlaygroundDarkColourSet: SemanticColourSet = {
"bg-primary-subtlest": getPrimitiveColour("primary-10"),
"bg-available": "#185339", // Darker green for dark mode
+ "bg-secondary": getPrimitiveColour("secondary-60"),
+ "bg-secondary-subtle": getPrimitiveColour("secondary-50"),
+ "bg-secondary-subtler": getPrimitiveColour("secondary-20"),
+ "bg-secondary-subtlest": getPrimitiveColour("secondary-10"),
+
"bg-primary-hover": getPrimitiveColour("primary-70"),
"bg-primary-subtlest-hover": getPrimitiveColour("primary-20"),
"bg-primary-subtlest-selected": getPrimitiveColour("primary-20"),
diff --git a/src/theme/colour-semantic/specs/lifesg-semantic-tokens.ts b/src/theme/colour-semantic/specs/lifesg-semantic-tokens.ts
index 91330d3cfb..e31ba7266a 100644
--- a/src/theme/colour-semantic/specs/lifesg-semantic-tokens.ts
+++ b/src/theme/colour-semantic/specs/lifesg-semantic-tokens.ts
@@ -13,6 +13,8 @@ export const LifeSGColourSet: SemanticColourSet = {
"text-subtlest": getPrimitiveColour("neutral-60"),
"text-primary": getPrimitiveColour("primary-50"),
"text-primary-strongest": getPrimitiveColour("primary-20"),
+ "text-secondary": getPrimitiveColour("secondary-50"),
+ "text-secondary-subtle": getPrimitiveColour("secondary-60"),
"text-hover": getPrimitiveColour("primary-40"),
"text-selected": getPrimitiveColour("primary-50"),
@@ -36,6 +38,8 @@ export const LifeSGColourSet: SemanticColourSet = {
"icon-primary": getPrimitiveColour("primary-50"),
"icon-primary-subtle": getPrimitiveColour("primary-60"),
"icon-primary-subtlest": getPrimitiveColour("primary-70"),
+ "icon-secondary": getPrimitiveColour("secondary-50"),
+ "icon-secondary-subtle": getPrimitiveColour("secondary-60"),
"icon-hover": getPrimitiveColour("primary-40"),
"icon-selected": getPrimitiveColour("primary-50"),
@@ -134,6 +138,11 @@ export const LifeSGColourSet: SemanticColourSet = {
"bg-primary-subtlest": getPrimitiveColour("primary-100"),
"bg-available": "#6DD0A1",
+ "bg-secondary": getPrimitiveColour("secondary-50"),
+ "bg-secondary-subtle": getPrimitiveColour("secondary-60"),
+ "bg-secondary-subtler": getPrimitiveColour("secondary-95"),
+ "bg-secondary-subtlest": getPrimitiveColour("secondary-100"),
+
"bg-primary-hover": getPrimitiveColour("primary-40"),
"bg-primary-subtlest-hover": getPrimitiveColour("primary-90"),
"bg-primary-subtlest-selected": getPrimitiveColour("primary-90"),
@@ -166,6 +175,8 @@ export const LifeSGDarkColourSet: SemanticColourSet = {
"text-subtlest": getPrimitiveColour("neutral-50"),
"text-primary": getPrimitiveColour("primary-60"),
"text-primary-strongest": getPrimitiveColour("primary-90"),
+ "text-secondary": getPrimitiveColour("secondary-60"),
+ "text-secondary-subtle": getPrimitiveColour("secondary-50"),
"text-hover": getPrimitiveColour("primary-70"),
"text-selected": getPrimitiveColour("primary-60"),
@@ -189,6 +200,8 @@ export const LifeSGDarkColourSet: SemanticColourSet = {
"icon-primary": getPrimitiveColour("primary-60"),
"icon-primary-subtle": getPrimitiveColour("primary-50"),
"icon-primary-subtlest": getPrimitiveColour("primary-40"),
+ "icon-secondary": getPrimitiveColour("secondary-60"),
+ "icon-secondary-subtle": getPrimitiveColour("secondary-50"),
"icon-hover": getPrimitiveColour("primary-70"),
"icon-selected": getPrimitiveColour("primary-60"),
@@ -287,6 +300,11 @@ export const LifeSGDarkColourSet: SemanticColourSet = {
"bg-primary-subtlest": getPrimitiveColour("primary-10"),
"bg-available": "#185339", // Darker green for dark mode
+ "bg-secondary": getPrimitiveColour("secondary-60"),
+ "bg-secondary-subtle": getPrimitiveColour("secondary-50"),
+ "bg-secondary-subtler": getPrimitiveColour("secondary-20"),
+ "bg-secondary-subtlest": getPrimitiveColour("secondary-10"),
+
"bg-primary-hover": getPrimitiveColour("primary-70"),
"bg-primary-subtlest-hover": getPrimitiveColour("primary-20"),
"bg-primary-subtlest-selected": getPrimitiveColour("primary-20"),
diff --git a/src/theme/colour-semantic/specs/pa-semantic-tokens.ts b/src/theme/colour-semantic/specs/pa-semantic-tokens.ts
index 21848bc701..a2d5a9f636 100644
--- a/src/theme/colour-semantic/specs/pa-semantic-tokens.ts
+++ b/src/theme/colour-semantic/specs/pa-semantic-tokens.ts
@@ -13,6 +13,8 @@ export const PAColourSet: SemanticColourSet = {
"text-subtlest": getPrimitiveColour("neutral-70"),
"text-primary": getPrimitiveColour("neutral-10"),
"text-primary-strongest": getPrimitiveColour("neutral-10"),
+ "text-secondary": getPrimitiveColour("secondary-50"),
+ "text-secondary-subtle": getPrimitiveColour("secondary-60"),
"text-hover": getPrimitiveColour("neutral-70"),
"text-selected": getPrimitiveColour("neutral-20"),
@@ -36,6 +38,8 @@ export const PAColourSet: SemanticColourSet = {
"icon-primary": getPrimitiveColour("neutral-10"),
"icon-primary-subtle": getPrimitiveColour("neutral-30"),
"icon-primary-subtlest": getPrimitiveColour("neutral-60"),
+ "icon-secondary": getPrimitiveColour("secondary-50"),
+ "icon-secondary-subtle": getPrimitiveColour("secondary-60"),
"icon-hover": getPrimitiveColour("neutral-70"),
"icon-selected": getPrimitiveColour("brand-20"),
@@ -134,6 +138,11 @@ export const PAColourSet: SemanticColourSet = {
"bg-primary-subtlest": getPrimitiveColour("brand-100"),
"bg-available": getPrimitiveColour("success-60"),
+ "bg-secondary": getPrimitiveColour("secondary-50"),
+ "bg-secondary-subtle": getPrimitiveColour("secondary-60"),
+ "bg-secondary-subtler": getPrimitiveColour("secondary-95"),
+ "bg-secondary-subtlest": getPrimitiveColour("secondary-100"),
+
"bg-primary-hover": getPrimitiveColour("brand-10"),
"bg-primary-subtlest-hover": getPrimitiveColour("brand-80"),
"bg-primary-subtlest-selected": getPrimitiveColour("brand-40"),
diff --git a/src/theme/colour-semantic/specs/sgwdigitallobby-tokens.ts b/src/theme/colour-semantic/specs/sgwdigitallobby-tokens.ts
index 2658eb0ee7..e2726a0baa 100644
--- a/src/theme/colour-semantic/specs/sgwdigitallobby-tokens.ts
+++ b/src/theme/colour-semantic/specs/sgwdigitallobby-tokens.ts
@@ -13,6 +13,8 @@ export const SGWDigitalLobbyColourSet: SemanticColourSet = {
"text-subtlest": getPrimitiveColour("neutral-60"),
"text-primary": getPrimitiveColour("primary-50"),
"text-primary-strongest": getPrimitiveColour("primary-20"),
+ "text-secondary": getPrimitiveColour("secondary-50"),
+ "text-secondary-subtle": getPrimitiveColour("secondary-60"),
"text-hover": getPrimitiveColour("primary-40"),
"text-selected": getPrimitiveColour("primary-50"),
@@ -36,6 +38,8 @@ export const SGWDigitalLobbyColourSet: SemanticColourSet = {
"icon-primary": getPrimitiveColour("primary-50"),
"icon-primary-subtle": getPrimitiveColour("primary-60"),
"icon-primary-subtlest": getPrimitiveColour("primary-70"),
+ "icon-secondary": getPrimitiveColour("secondary-50"),
+ "icon-secondary-subtle": getPrimitiveColour("secondary-60"),
"icon-hover": getPrimitiveColour("primary-40"),
"icon-selected": getPrimitiveColour("primary-50"),
@@ -134,6 +138,11 @@ export const SGWDigitalLobbyColourSet: SemanticColourSet = {
"bg-primary-subtlest": getPrimitiveColour("primary-100"),
"bg-available": "#6DD0A1",
+ "bg-secondary": getPrimitiveColour("secondary-50"),
+ "bg-secondary-subtle": getPrimitiveColour("secondary-60"),
+ "bg-secondary-subtler": getPrimitiveColour("secondary-95"),
+ "bg-secondary-subtlest": getPrimitiveColour("secondary-100"),
+
"bg-primary-hover": getPrimitiveColour("primary-40"),
"bg-primary-subtlest-hover": getPrimitiveColour("primary-90"),
"bg-primary-subtlest-selected": getPrimitiveColour("primary-90"),
@@ -166,6 +175,8 @@ export const SGWDigitalLobbyDarkColourSet: SemanticColourSet = {
"text-subtlest": getPrimitiveColour("neutral-50"),
"text-primary": getPrimitiveColour("primary-60"),
"text-primary-strongest": getPrimitiveColour("primary-90"),
+ "text-secondary": getPrimitiveColour("secondary-60"),
+ "text-secondary-subtle": getPrimitiveColour("secondary-50"),
"text-hover": getPrimitiveColour("primary-70"),
"text-selected": getPrimitiveColour("primary-60"),
@@ -189,6 +200,8 @@ export const SGWDigitalLobbyDarkColourSet: SemanticColourSet = {
"icon-primary": getPrimitiveColour("primary-60"),
"icon-primary-subtle": getPrimitiveColour("primary-50"),
"icon-primary-subtlest": getPrimitiveColour("primary-40"),
+ "icon-secondary": getPrimitiveColour("secondary-60"),
+ "icon-secondary-subtle": getPrimitiveColour("secondary-50"),
"icon-hover": getPrimitiveColour("primary-70"),
"icon-selected": getPrimitiveColour("primary-60"),
@@ -287,6 +300,11 @@ export const SGWDigitalLobbyDarkColourSet: SemanticColourSet = {
"bg-primary-subtlest": getPrimitiveColour("primary-10"),
"bg-available": "#185339", // Darker green for dark mode
+ "bg-secondary": getPrimitiveColour("secondary-60"),
+ "bg-secondary-subtle": getPrimitiveColour("secondary-50"),
+ "bg-secondary-subtler": getPrimitiveColour("secondary-20"),
+ "bg-secondary-subtlest": getPrimitiveColour("secondary-10"),
+
"bg-primary-hover": getPrimitiveColour("primary-70"),
"bg-primary-subtlest-hover": getPrimitiveColour("primary-20"),
"bg-primary-subtlest-selected": getPrimitiveColour("primary-20"),
diff --git a/src/theme/colour-semantic/theme-helper.ts b/src/theme/colour-semantic/theme-helper.ts
index 24c3b1796a..a99fe06c9c 100644
--- a/src/theme/colour-semantic/theme-helper.ts
+++ b/src/theme/colour-semantic/theme-helper.ts
@@ -34,6 +34,7 @@ export const ColourSpec: ThemeCollectionSpec<
imda: LifeSGColourSet,
spf: LifeSGColourSet,
smgs: LifeSGColourSet,
+ careercompass: LifeSGColourSet,
},
defaultValue: "lifesg",
};
@@ -56,6 +57,7 @@ export const DarkColourSpec: ThemeCollectionSpec<
imda: LifeSGDarkColourSet,
spf: LifeSGDarkColourSet,
smgs: LifeSGDarkColourSet,
+ careercompass: LifeSGDarkColourSet,
},
defaultValue: "lifesg",
};
@@ -102,6 +104,8 @@ export const ColourSemantic: {
"text-subtlest": getSemanticColour("text-subtlest"),
"text-primary": getSemanticColour("text-primary"),
"text-primary-strongest": getSemanticColour("text-primary-strongest"),
+ "text-secondary": getSemanticColour("text-secondary"),
+ "text-secondary-subtle": getSemanticColour("text-secondary-subtle"),
"text-hover": getSemanticColour("text-hover"),
"text-selected": getSemanticColour("text-selected"),
@@ -125,6 +129,8 @@ export const ColourSemantic: {
"icon-primary": getSemanticColour("icon-primary"),
"icon-primary-subtle": getSemanticColour("icon-primary-subtle"),
"icon-primary-subtlest": getSemanticColour("icon-primary-subtlest"),
+ "icon-secondary": getSemanticColour("icon-secondary"),
+ "icon-secondary-subtle": getSemanticColour("icon-secondary-subtle"),
"icon-hover": getSemanticColour("icon-hover"),
"icon-selected": getSemanticColour("icon-selected"),
@@ -227,6 +233,11 @@ export const ColourSemantic: {
"bg-primary-subtlest": getSemanticColour("bg-primary-subtlest"),
"bg-available": getSemanticColour("bg-available"),
+ "bg-secondary": getSemanticColour("bg-secondary"),
+ "bg-secondary-subtle": getSemanticColour("bg-secondary-subtle"),
+ "bg-secondary-subtler": getSemanticColour("bg-secondary-subtler"),
+ "bg-secondary-subtlest": getSemanticColour("bg-secondary-subtlest"),
+
"bg-primary-hover": getSemanticColour("bg-primary-hover"),
"bg-primary-subtlest-hover": getSemanticColour("bg-primary-subtlest-hover"),
"bg-primary-subtlest-selected": getSemanticColour(
diff --git a/src/theme/colour-semantic/types.ts b/src/theme/colour-semantic/types.ts
index 4f5148b60c..47da1dca69 100644
--- a/src/theme/colour-semantic/types.ts
+++ b/src/theme/colour-semantic/types.ts
@@ -16,6 +16,8 @@ export type SemanticColourSet = {
"text-subtlest": SemanticColourValue;
"text-primary": SemanticColourValue;
"text-primary-strongest": SemanticColourValue;
+ "text-secondary": SemanticColourValue;
+ "text-secondary-subtle": SemanticColourValue;
"text-hover": SemanticColourValue;
"text-selected": SemanticColourValue;
@@ -39,6 +41,8 @@ export type SemanticColourSet = {
"icon-primary": SemanticColourValue;
"icon-primary-subtle": SemanticColourValue;
"icon-primary-subtlest": SemanticColourValue;
+ "icon-secondary": SemanticColourValue;
+ "icon-secondary-subtle": SemanticColourValue;
"icon-hover": SemanticColourValue;
"icon-selected": SemanticColourValue;
@@ -137,6 +141,11 @@ export type SemanticColourSet = {
"bg-primary-subtlest": SemanticColourValue;
"bg-available": SemanticColourValue;
+ "bg-secondary": SemanticColourValue;
+ "bg-secondary-subtle": SemanticColourValue;
+ "bg-secondary-subtler": SemanticColourValue;
+ "bg-secondary-subtlest": SemanticColourValue;
+
"bg-primary-hover": SemanticColourValue;
"bg-primary-subtlest-hover": SemanticColourValue;
"bg-primary-subtlest-selected": SemanticColourValue;
diff --git a/src/theme/index.ts b/src/theme/index.ts
index 80a69877f8..c129e0362f 100644
--- a/src/theme/index.ts
+++ b/src/theme/index.ts
@@ -114,6 +114,19 @@ const CCubeThemeBase: ThemeSpec = {
},
};
+const CareerCompassThemeBase: ThemeSpec = {
+ colourScheme: "careercompass",
+ fontScheme: "bookingsg",
+ motionScheme: "default",
+ borderScheme: "default",
+ spacingScheme: "default",
+ radiusScheme: "default",
+ shadowScheme: "default",
+ breakpointScheme: "default",
+ resourceScheme: "careercompass",
+ componentScheme: "default",
+};
+
const MyLegacyThemeBase: ThemeSpec = {
colourScheme: "mylegacy",
fontScheme: "mylegacy",
@@ -276,6 +289,12 @@ export const CCubeTheme = {
dark: createThemeWithColourMode(CCubeThemeBase, "dark"),
};
+export const CareerCompassTheme = {
+ ...CareerCompassThemeBase,
+ light: createThemeWithColourMode(CareerCompassThemeBase, "light"),
+ dark: createThemeWithColourMode(CareerCompassThemeBase, "dark"),
+};
+
export const MyLegacyTheme = {
...MyLegacyThemeBase,
light: createThemeWithColourMode(MyLegacyThemeBase, "light"),
diff --git a/src/theme/types.ts b/src/theme/types.ts
index 35e9b1f895..20ed2c16d1 100644
--- a/src/theme/types.ts
+++ b/src/theme/types.ts
@@ -50,7 +50,8 @@ export type ColourScheme =
| "sgwdigitallobby"
| "imda"
| "spf"
- | "smgs";
+ | "smgs"
+ | "careercompass";
export type FontScheme =
| "default"
| "bookingsg"
@@ -87,7 +88,8 @@ export type ResourceScheme =
| "supportgowhere"
| "imda"
| "spf"
- | "smgs";
+ | "smgs"
+ | "careercompass";
export type ColourMode = "light" | "dark";
diff --git a/stories/getting-started/installation.mdx b/stories/getting-started/installation.mdx
index 8c0a7fd6a3..31c695190f 100644
--- a/stories/getting-started/installation.mdx
+++ b/stories/getting-started/installation.mdx
@@ -283,6 +283,36 @@ Or if you are importing to an existing css file:
+
+
+
+
+Instructions for CareerCompass theme
+
+Add this into the `head` of your html file:
+
+```html
+
+
+```
+
+Or if you are importing to an existing css file:
+
+```css
+@import url("https://assets.life.gov.sg/react-design-system/v3/css/main.css");
+@import url("https://assets.life.gov.sg/react-design-system/v3/css/plus-jakarta-sans.css");
+```
+
+
+
### 3. Set up the theme
If you are intending to make use of the themes, you will need [**Styled
diff --git a/stories/theme/b-theme-introduction.mdx b/stories/theme/b-theme-introduction.mdx
index 5df1b732cb..cb69a53168 100644
--- a/stories/theme/b-theme-introduction.mdx
+++ b/stories/theme/b-theme-introduction.mdx
@@ -73,6 +73,9 @@ import { SPFTheme } from "@lifesg/react-design-system/theme";
// The SMGS theme
import { SMGSTheme } from "@lifesg/react-design-system/theme";
+
+// The CareerCompass theme
+import { CareerCompassTheme } from "@lifesg/react-design-system/theme";
```
To configure the theme in your project,
diff --git a/stories/theme/colour/a-colour-introduction.mdx b/stories/theme/colour/a-colour-introduction.mdx
index cde7540cdc..15644a47d3 100644
--- a/stories/theme/colour/a-colour-introduction.mdx
+++ b/stories/theme/colour/a-colour-introduction.mdx
@@ -33,7 +33,8 @@ primitive tokens.
[IMDA](/docs/foundations-colours-imda--docs) |
[RBS](/docs/foundations-colours-rbs--docs) |
[SPF](/docs/foundations-colours-spf--docs) |
-[SMGS](/docs/foundations-colours-smgs--docs)
+[SMGS](/docs/foundations-colours-smgs--docs) |
+[CareerCompass](/docs/foundations-colours-careercompass--docs)
## Usage
diff --git a/stories/theme/colour/n-colour-careercompass.mdx b/stories/theme/colour/n-colour-careercompass.mdx
new file mode 100644
index 0000000000..5af6acae30
--- /dev/null
+++ b/stories/theme/colour/n-colour-careercompass.mdx
@@ -0,0 +1,24 @@
+import { Meta } from "@storybook/addon-docs/blocks";
+import { CareerCompassTheme } from "src/theme";
+import { PrimitiveColourDisplay, SemanticColourDisplay } from "../doc-elements";
+
+
+
+# CareerCompass colours
+
+These are the palettes used when the `colourScheme` is `"careercompass"`.
+
+```tsx
+const theme: ThemeSpec = {
+ colourScheme: "careercompass",
+ // ...other specifications
+};
+```
+
+## Semantic colours
+
+
+
+## Primitive colours
+
+
diff --git a/stories/theme/doc-elements/doc-semantic-colour-display.tsx b/stories/theme/doc-elements/doc-semantic-colour-display.tsx
index 186852d29e..cb855fe10f 100644
--- a/stories/theme/doc-elements/doc-semantic-colour-display.tsx
+++ b/stories/theme/doc-elements/doc-semantic-colour-display.tsx
@@ -56,8 +56,12 @@ export const SemanticColourDisplay = ({
"text-subtler",
"text-subtlest",
"text-primary",
+ "text-primary-strongest",
]}
/>
+
+
+
Focus ring