diff --git a/package.json b/package.json
index bb41a552..55d93bee 100644
--- a/package.json
+++ b/package.json
@@ -38,6 +38,7 @@
"@loomhq/loom-embed": "1.5.0",
"@markdoc/markdoc": "0.4.0",
"@markdoc/next.js": "0.2.2",
+ "@next/third-parties": "15.0.1",
"@open-draft/until": "2.1.0",
"@pluralsh/design-system": "3.54.0",
"@react-types/shared": "3.22.0",
diff --git a/pages/_app.tsx b/pages/_app.tsx
index cc4440ea..730e6a01 100644
--- a/pages/_app.tsx
+++ b/pages/_app.tsx
@@ -14,6 +14,7 @@ import { type AppProps } from 'next/app'
import NextLink from 'next/link'
import { useRouter } from 'next/router'
+import { GoogleTagManager } from '@next/third-parties/google'
import { MarkdocContextProvider } from '@pluralsh/design-system/dist/markdoc'
import { ThemeProvider as StyledThemeProvider } from 'styled-components'
import { SWRConfig } from 'swr'
@@ -82,6 +83,7 @@ function App({ Component, pageProps }: MyAppProps) {
}
const app = (
<>
+
diff --git a/pages/_document.tsx b/pages/_document.tsx
index 5380d452..a44a46f7 100644
--- a/pages/_document.tsx
+++ b/pages/_document.tsx
@@ -49,23 +49,19 @@ class MyDocument extends Document {
type="text/javascript"
data-widget-position="bottom-right"
/>
-
-
+ {/* */}
+
+ {/* */}
diff --git a/pages/kubecon.tsx b/pages/kubecon.tsx
index 701cfa46..fd9e4992 100644
--- a/pages/kubecon.tsx
+++ b/pages/kubecon.tsx
@@ -6,7 +6,7 @@ import styled from 'styled-components'
import { TextColumnWithIcon } from '@src/components/custom-page/MultiColumnText'
import { FooterVariant } from '@src/components/FooterFull'
-import { KubeconHeader } from '@src/components/Kubecon'
+import { KubeconHeader, handleDownloadICS } from '@src/components/Kubecon'
import { StandardPageWidth } from '@src/components/layout/LayoutHelpers'
import { ImpactCardSection } from '@src/components/page-sections/ImpactCardSection'
import {
@@ -23,7 +23,7 @@ import { propsWithGlobalSettings } from '@src/utils/getGlobalProps'
export default function KubeCon() {
return (
-
+
+
-
-
-
- Meet us at KubeCon
-
- Join Plural at KubeCon North America 2024 in Salt Lake City, UT.
- We're excited to showcase our latest solutions that empower
- organizations to streamline their Kubernetes deployments and
- operations.
-
-
-
-
-
-
-
- Where to find us
-
- Visit our booth —{' '}
- R23
-
-
- Booth R23 is near the CNCF project pavilion, across from the game
- zone.
+
+
+
+
+ Meet us at KubeCon
+
+ Join Plural at KubeCon North America 2024 in Salt Lake City, UT.
+ We're excited to showcase our latest solutions that empower
+ organizations to streamline their Kubernetes deployments and
+ operations.
-
-
-
+ Book a demo
+
+
+
+
+
+
+
+ Where to find us
+
+ Visit our booth —{' '}
+ R23
+
+
+ Booth R23 is near the CNCF project pavilion, across from the
+ game zone.
+
+
+
-
+
+
+
+
+
-
-
+
@@ -168,10 +188,9 @@ export default function KubeCon() {
}
+ onClick={handleDownloadICS}
>
Add session to calendar
@@ -273,7 +292,7 @@ export const getStaticProps = async () => {
})
}
-const WhereToFindUsSection = styled(StandardPageWidth)(({ theme }) => {
+const WhereToFindUsSection = styled.div(({ theme }) => {
const bgGradient = `linear-gradient(180deg, #0E1015 0%, rgba(14, 16, 21, 0.0) 50%, #0E1015 100%),
radial-gradient(81.85% 81.85% at 50% 18.15%, #0E1015 0%, rgba(14, 16, 21, 0.55) 100%)`
diff --git a/src/components/Kubecon.tsx b/src/components/Kubecon.tsx
index c1a4af9b..34107ba3 100644
--- a/src/components/Kubecon.tsx
+++ b/src/components/Kubecon.tsx
@@ -58,3 +58,53 @@ export function KubeconHeader() {
)
}
+
+export const handleDownloadICS = () => {
+ const icsContent = `
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Plural//EN
+BEGIN:VTIMEZONE
+TZID:America/Denver
+LAST-MODIFIED:20240422T053451Z
+TZURL:https://www.tzurl.org/zoneinfo-outlook/America/Denver
+X-LIC-LOCATION:America/Denver
+BEGIN:DAYLIGHT
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+DTSTART:19700308T020000
+RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
+END:DAYLIGHT
+BEGIN:STANDARD
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+DTSTART:19701101T020000
+RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20241024T194031Z
+UID:1729798817923
+DTSTART;TZID=America/Denver:20241115T165500
+DTEND;TZID=America/Denver:20241115T173000
+SUMMARY:Navigating the Future: Exploring the Latest in Kubernetes Dashboard Development - Marcin Maciaszczyk & Sebastian Florek\\, Plural
+URL:https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/program/schedule/
+DESCRIPTION:Join us for an insightful presentation on the latest updates from the Kubernetes SIG-UI\\, focusing on the evolution of the Kubernetes Dashboard project. Dive into a comprehensive overview of key changes\\, enhancements\\, and advancements\\, including a detailed exploration of the project's new architecture. Gain valuable insights into how these developments shape the future of Kubernetes management and user experience. Whether you're a seasoned Kubernetes user or new to the ecosystem\\, this presentation promises to provide valuable perspectives on the cutting-edge developments in Kubernetes Dashboard.
+LOCATION:Salt Palace | Level 3| 355 B
+END:VEVENT
+END:VCALENDAR
+ `.trim()
+
+ const blob = new Blob([icsContent], { type: 'text/calendar' })
+ const url = URL.createObjectURL(blob)
+ const a = document.createElement('a')
+
+ a.href = url
+ a.download = 'kubecon-session.ics'
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ URL.revokeObjectURL(url)
+}
diff --git a/yarn.lock b/yarn.lock
index d20e91a6..2c19afb6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3881,6 +3881,18 @@ __metadata:
languageName: node
linkType: hard
+"@next/third-parties@npm:15.0.1":
+ version: 15.0.1
+ resolution: "@next/third-parties@npm:15.0.1"
+ dependencies:
+ third-party-capital: 1.0.20
+ peerDependencies:
+ next: ^13.0.0 || ^14.0.0 || ^15.0.0
+ react: ^18.2.0 || 19.0.0-rc-65a56d0e-20241020
+ checksum: 1b67cef2c61b91e4902a0c4644a143dda66ef29e3b344a825306dacc26b67dd1df351fc22c7c64fa0ef237a438fe1578ae9d86e09a95cc7b37f6424dbc511294
+ languageName: node
+ linkType: hard
+
"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1":
version: 5.1.1-v1
resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1"
@@ -13742,6 +13754,7 @@ __metadata:
"@markdoc/markdoc": 0.4.0
"@markdoc/next.js": 0.2.2
"@next/bundle-analyzer": 13.4.12
+ "@next/third-parties": 15.0.1
"@open-draft/until": 2.1.0
"@pluralsh/design-system": 3.54.0
"@pluralsh/eslint-config-typescript": 2.5.183
@@ -16289,6 +16302,13 @@ __metadata:
languageName: node
linkType: hard
+"third-party-capital@npm:1.0.20":
+ version: 1.0.20
+ resolution: "third-party-capital@npm:1.0.20"
+ checksum: ef5eae00bdb82b538b9f628a011fc294cd6f4bafdbb46d88f3d1a72e8c3b9e2cc2a547fdb62bc16bdd847e9da3dac2df676b154c64914f6c90ea15aac6ce0a6a
+ languageName: node
+ linkType: hard
+
"throttle-debounce@npm:^3.0.1":
version: 3.0.1
resolution: "throttle-debounce@npm:3.0.1"