@@ -360,6 +539,16 @@
grid-template-columns: repeat(4, 1fr);
}
+ .web-pricing-cards-list-self-hosted {
+ display: grid;
+ gap: 1rem;
+ grid-template-columns: repeat(1, 1fr);
+
+ @media (min-width: 1023px) {
+ grid-template-columns: repeat(2, 1fr);
+ }
+ }
+
.web-pricing-cards-list .web-main-body-500 {
height: 78px;
--p-font-size: unset !important;
diff --git a/src/routes/pricing/compare-support.svelte b/src/routes/pricing/compare-support.svelte
new file mode 100644
index 0000000000..6b98fb2376
--- /dev/null
+++ b/src/routes/pricing/compare-support.svelte
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+ Support
+
+ We offer different support tiers for self-hosted projects who need
+ premium support.
+
+
+
+
+ {#if selectedOption}
+
+
+ {#each supportFeatureKeyValues as supportFeatureKeyValue}
+
+ {supportFeatureKeyValue.label}
+
+
+ {getFeatureValue(
+ selectedOption.features,
+ supportFeatureKeyValue.key
+ )}
+
+ {/each}
+
+ {/if}
+
+
+ {#each supportOptions as supportOption}
+
+
+ {supportOption.header.title}{supportOption.header.price}
+
+
+ Contact us
+
+
+ {/each}
+ {#each supportFeatureKeyValues as supportFeatureKeyValue}
+
+ {supportFeatureKeyValue.label}
+
+
+ {getFeatureValue(
+ supportOptions[0].features,
+ supportFeatureKeyValue.key
+ )}
+
+
+ {getFeatureValue(
+ supportOptions[1].features,
+ supportFeatureKeyValue.key
+ )}
+
+
+ {getFeatureValue(
+ supportOptions[2].features,
+ supportFeatureKeyValue.key
+ )}
+
+ {/each}
+
+
+
+
+
diff --git a/src/routes/pricing/index.ts b/src/routes/pricing/index.ts
new file mode 100644
index 0000000000..b160d6c70c
--- /dev/null
+++ b/src/routes/pricing/index.ts
@@ -0,0 +1,74 @@
+export type SupportFeatureKeys =
+ | 'response'
+ | 'resolutionTime'
+ | 'availability'
+ | 'channels'
+ | 'agents';
+
+export const supportFeatureKeyValues = [
+ { key: 'response', label: 'Response time' },
+ { key: 'resolutionTime', label: 'Resolution time' },
+ { key: 'availability', label: 'Availability' },
+ { key: 'channels', label: 'Support channels' },
+ { key: 'agents', label: 'Support agents' }
+];
+
+type SupportHeader = { title: string; price: string; button: string; href: string };
+export type SupportFeature = {
+ [K in SupportFeatureKeys]: string;
+};
+
+export const supportOptions: Array<{
+ key: string;
+ header: SupportHeader;
+ features: SupportFeature;
+}> = [
+ {
+ key: 'basic',
+ header: {
+ title: 'Basic',
+ price: '$50/month',
+ button: 'secondary',
+ href: '/contact-us/premium-support?supportTier=basic'
+ },
+ features: {
+ response: '7 days',
+ resolutionTime: '7 days',
+ availability: '-',
+ channels: 'email',
+ agents: 'Community'
+ }
+ },
+ {
+ key: 'standard',
+ header: {
+ title: 'Standard',
+ price: '$99/month',
+ button: 'primary',
+ href: '/contact-us/premium-support?supportTier=standard'
+ },
+ features: {
+ response: '2 days',
+ resolutionTime: '2 days',
+ availability: '24/5',
+ channels: 'email, chat',
+ agents: 'Random agent'
+ }
+ },
+ {
+ key: 'premium',
+ header: {
+ title: 'Premium',
+ price: '$999/month',
+ button: 'secondary',
+ href: '/contact-us/premium-support?supportTier=premium'
+ },
+ features: {
+ response: '1 days',
+ resolutionTime: '1 days',
+ availability: '24/7',
+ channels: 'email, chat, phone',
+ agents: 'Dedicated agent'
+ }
+ }
+];
diff --git a/src/scss/6-elements/_lists.scss b/src/scss/6-elements/_lists.scss
index ab08a87d5e..5464654b3b 100644
--- a/src/scss/6-elements/_lists.scss
+++ b/src/scss/6-elements/_lists.scss
@@ -78,6 +78,14 @@
}
}
+.#{$p}-checked-list-cross {
+ display:flex; flex-direction:column; gap:pxToRem(20);
+ li {
+ display:flex; align-items: start; gap:pxToRem(8);
+ &::before { @include cross-badge; }
+ }
+}
+
.#{$p}-pink-dots {
display:flex; flex-direction:column; gap:pxToRem(8);
list-style:disc; padding-inline-start:pxToRem(24);
diff --git a/src/scss/abstract/mixins/_cross-badge.scss b/src/scss/abstract/mixins/_cross-badge.scss
new file mode 100644
index 0000000000..63a05e578a
--- /dev/null
+++ b/src/scss/abstract/mixins/_cross-badge.scss
@@ -0,0 +1,12 @@
+@use '../../abstract/functions/pxToRem' as *;
+@mixin cross-badge {
+ content: "";
+ display:block;
+ inline-size:pxToRem(20);
+ min-inline-size:pxToRem(20);
+ block-size:pxToRem(24);
+ background-repeat: no-repeat;
+ background-size: contain;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSIxMCIgY3k9IjEwIiByPSI4IiBmaWxsPSJ3aGl0ZSIgZmlsbC1vcGFjaXR5PSIwLjA4IiBzdHJva2U9IndoaXRlIiBzdHJva2Utb3BhY2l0eT0iMC4zMiIgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik03LjMwMDA1IDcuMzAwMDVMMTIuNyAxMi43IiBzdHJva2U9IiNFNEU0RTciIHN0cm9rZS13aWR0aD0iMS4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48cGF0aCBkPSJNNy4zMDAwNSAxMi43MDAxTDEyLjcgNy4zMDAwNyIgc3Ryb2tlPSIjRTRFNEU3IiBzdHJva2Utd2lkdGg9IjEuMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+);
+ background-position-y: center;
+}
\ No newline at end of file
diff --git a/src/scss/abstract/mixins/_index.scss b/src/scss/abstract/mixins/_index.scss
index 58ae1eae90..770d78d301 100644
--- a/src/scss/abstract/mixins/_index.scss
+++ b/src/scss/abstract/mixins/_index.scss
@@ -3,4 +3,5 @@
@forward "scroll";
@forward "numeric-badge";
@forward "checked-badge";
-@forward "border-gradient";
\ No newline at end of file
+@forward "border-gradient";
+@forward "cross-badge";
\ No newline at end of file