diff --git a/.changeset/weak-jars-rhyme.md b/.changeset/weak-jars-rhyme.md
new file mode 100644
index 0000000000..0a81503669
--- /dev/null
+++ b/.changeset/weak-jars-rhyme.md
@@ -0,0 +1,6 @@
+---
+'@swisspost/design-system-documentation': minor
+'@swisspost/design-system-styles': minor
+---
+
+Added color palettes to easily apply colors to a page section using predefined color sets.
diff --git a/packages/documentation/cypress/e2e/components/palette.cy.ts b/packages/documentation/cypress/e2e/components/palette.cy.ts
new file mode 100644
index 0000000000..dc38dc8312
--- /dev/null
+++ b/packages/documentation/cypress/e2e/components/palette.cy.ts
@@ -0,0 +1,13 @@
+describe('Palette', () => {
+ describe('Accessibility', () => {
+ beforeEach(() => {
+ cy.visit('/iframe.html?id=snapshots--palette');
+ cy.get('.palette-default', { timeout: 30000 }).should('be.visible');
+ cy.injectAxe();
+ });
+
+ it('Has no detectable a11y violations on load for all variants', () => {
+ cy.checkA11y('#root-inner');
+ });
+ });
+});
diff --git a/packages/documentation/cypress/snapshots/components/palette.snapshot.ts b/packages/documentation/cypress/snapshots/components/palette.snapshot.ts
new file mode 100644
index 0000000000..a0e3bedc09
--- /dev/null
+++ b/packages/documentation/cypress/snapshots/components/palette.snapshot.ts
@@ -0,0 +1,7 @@
+describe('Palette', () => {
+ it('default', () => {
+ cy.visit('/iframe.html?id=snapshots--palette');
+ cy.get('.palette-default', { timeout: 30000 }).should('be.visible');
+ cy.percySnapshot('Palettes', { widths: [1440] });
+ });
+});
diff --git a/packages/documentation/src/stories/foundation/palette/palette.docs.mdx b/packages/documentation/src/stories/foundation/palette/palette.docs.mdx
new file mode 100644
index 0000000000..0296bc2bfa
--- /dev/null
+++ b/packages/documentation/src/stories/foundation/palette/palette.docs.mdx
@@ -0,0 +1,27 @@
+import { Canvas, Controls, Meta } from '@storybook/blocks';
+import * as paletteStories from './palette.stories';
+
+
+
+
+ # Palettes
+
+
+
+ Easily apply colors to a section of your page using predefined color sets.
+
+
+There are four different palettes:
+- **Default** - The standard palette used when no other palette is specified.
+- **Alternate** - Used to differentiate alternating sections from the body, without strong emphasis or highlighting.
+- **Accent** - A complementary color used for highlights and emphasis.
+- **Brand** - The primary color for the brand.
+
+Palettes may also include a specific text color that is different from the body color.
+You can apply this text color to any element by using the `.palette-text` class.
+
+
+
+
+
+
diff --git a/packages/documentation/src/stories/foundation/palette/palette.snapshot.stories.ts b/packages/documentation/src/stories/foundation/palette/palette.snapshot.stories.ts
new file mode 100644
index 0000000000..5fc42a0cb4
--- /dev/null
+++ b/packages/documentation/src/stories/foundation/palette/palette.snapshot.stories.ts
@@ -0,0 +1,35 @@
+import type { StoryObj } from '@storybook/web-components';
+import { html } from 'lit';
+import meta from './palette.stories';
+
+const { id, ...metaWithoutId } = meta;
+
+export default {
+ ...metaWithoutId,
+ title: 'Snapshots',
+};
+
+type Story = StoryObj;
+
+export const Palette: Story = {
+ render: () => {
+ return html`${['light', 'dark'].map(
+ mainScheme => html`
+