From 7f3dfc8738adfa8cf230a86ced750abbc023dd3c Mon Sep 17 00:00:00 2001
From: Stacey Van Herk <13419300+svanherk@users.noreply.github.com>
Date: Fri, 1 May 2026 17:58:16 -0400
Subject: [PATCH 1/6] GAUD-9165 - Implement the d2l-page skeleton
---
components/page/README.md | 5 +
components/page/demo/page-component.js | 191 ++++++++++++++++++++
components/page/demo/page.html | 15 ++
components/page/demo/temp-nav-styles.js | 217 +++++++++++++++++++++++
components/page/page.js | 223 ++++++++++++++++++++++++
components/page/test/page.axe.js | 40 +++++
components/page/test/page.test.js | 10 ++
index.html | 1 +
lang/ar.js | 2 +
lang/ca.js | 2 +
lang/cy.js | 2 +
lang/da.js | 2 +
lang/de.js | 2 +
lang/en-gb.js | 2 +
lang/en.js | 2 +
lang/es-es.js | 2 +
lang/es.js | 2 +
lang/fr-fr.js | 2 +
lang/fr.js | 2 +
lang/haw.js | 2 +
lang/hi.js | 2 +
lang/ja.js | 2 +
lang/ko.js | 2 +
lang/mi.js | 2 +
lang/nl.js | 2 +
lang/pt.js | 2 +
lang/sv.js | 2 +
lang/th.js | 2 +
lang/tr.js | 2 +
lang/vi.js | 2 +
lang/zh-cn.js | 2 +
lang/zh-tw.js | 2 +
32 files changed, 750 insertions(+)
create mode 100644 components/page/README.md
create mode 100644 components/page/demo/page-component.js
create mode 100644 components/page/demo/page.html
create mode 100644 components/page/demo/temp-nav-styles.js
create mode 100644 components/page/page.js
create mode 100644 components/page/test/page.axe.js
create mode 100644 components/page/test/page.test.js
diff --git a/components/page/README.md b/components/page/README.md
new file mode 100644
index 00000000000..11d630c5402
--- /dev/null
+++ b/components/page/README.md
@@ -0,0 +1,5 @@
+# Page
+
+The `d2l-page` and page layout components are in progress.
+
+Please reach out before using them!
diff --git a/components/page/demo/page-component.js b/components/page/demo/page-component.js
new file mode 100644
index 00000000000..5aa62dc03e5
--- /dev/null
+++ b/components/page/demo/page-component.js
@@ -0,0 +1,191 @@
+import '../../collapsible-panel/collapsible-panel.js';
+import '../page.js';
+import { css, html, LitElement, nothing } from 'lit';
+import { navStyles } from './temp-nav-styles.js';
+import { selectStyles } from '../../inputs/input-select-styles.js';
+
+/**
+ * Component for d2l-page demos and tests
+ */
+class PageDemo extends LitElement {
+
+ static properties = {
+ demoMode: { type: Boolean, attribute: 'demo-mode' },
+ hasFooter: { type: Boolean, attribute: 'has-footer' },
+ hasSideNavPanel: { type: Boolean, attribute: 'has-side-nav-panel' },
+ hasSupportingPanel: { type: Boolean, attribute: 'has-supporting-panel' },
+ navType: { type: String, attribute: 'nav-type' },
+ widthType: { type: String, attribute: 'width-type' },
+ _allowThreePanels: { state: true }
+ };
+
+ static styles = [navStyles, selectStyles, css`
+ .demo-controls {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.75rem;
+ }
+ `];
+
+ constructor() {
+ super();
+ this._allowThreePanels = false; // Temp for dev/testing
+ this.demoMode = false;
+ this.hasFooter = false;
+ this.hasSideNavPanel = false;
+ this.hasSupportingPanel = false;
+ this.navType = 'full';
+ /** @type {'normal'|'wide'|'fullscreen'} */
+ this.widthType = 'normal';
+ }
+
+ render() {
+ return html`
+
I'm in the default slot of the d2l-page component!
+I'm in the default slot of the d2l-page component!
${this.demoMode ? html`I'm in the default slot of the d2l-page component!
+ +| Course | +Enrolled | +Completion Rate | +Avg Grade | +
|---|---|---|---|
| Introduction to Biology | +145 | +87% | +B+ | +
| Advanced Chemistry | +62 | +79% | +B | +
| World History | +98 | +92% | +A- | +
| Student | +Assignment 1 | +Assignment 2 | +Final Exam | +Total | +
|---|---|---|---|---|
| Alice Johnson | +92 | +88 | +95 | +91.7 | +
| Bob Smith | +85 | +79 | +82 | +82.0 | +
| Carol Davis | +78 | +91 | +87 | +85.3 | +
| David Lee | +95 | +93 | +90 | +92.7 | +
| Emily Chen | +88 | +84 | +91 | +87.7 | +
I'm in the side-nav slot of the d2l-page component!
+I'm in the supporting slot of the d2l-page component!
+