@uoguelph/web-components 1.2.0-rc.7 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -63
- package/dist/uofg-web-components/index-ClyJk2_i.js +977 -0
- package/dist/uofg-web-components/uofg-alert.esm.js +154 -0
- package/dist/uofg-web-components/uofg-footer.esm.js +429 -0
- package/dist/uofg-web-components/uofg-header.esm.js +2404 -0
- package/dist/uofg-web-components/uofg-modal.esm.js +329 -0
- package/dist/uofg-web-components/uofg-web-components.css +1 -1
- package/dist/uofg-web-components/uofg-web-components.esm.js +8 -1
- package/package.json +21 -33
- package/dist/cjs/app-globals-3a1e7e63.js +0 -5
- package/dist/cjs/index-eb919017.js +0 -1990
- package/dist/cjs/index.cjs.js +0 -2
- package/dist/cjs/loader.cjs.js +0 -15
- package/dist/cjs/uofg-alert.cjs.entry.js +0 -21
- package/dist/cjs/uofg-back-to-top_5.cjs.entry.js +0 -1400
- package/dist/cjs/uofg-modal.cjs.entry.js +0 -168
- package/dist/cjs/uofg-web-components.cjs.js +0 -25
- package/dist/cjs/utils-93383c5b.js +0 -65
- package/dist/collection/collection-manifest.json +0 -18
- package/dist/collection/components/uofg-alert/uofg-alert.js +0 -15
- package/dist/collection/components/uofg-back-to-top/uofg-back-to-top.js +0 -64
- package/dist/collection/components/uofg-card/uofg-card.js +0 -40
- package/dist/collection/components/uofg-footer/improve-life.svg +0 -4
- package/dist/collection/components/uofg-footer/uofg-footer.js +0 -145
- package/dist/collection/components/uofg-header/decoration.svg +0 -1
- package/dist/collection/components/uofg-header/logo-full.svg +0 -1
- package/dist/collection/components/uofg-header/logo-reduced.svg +0 -1
- package/dist/collection/components/uofg-header/uofg-header.js +0 -280
- package/dist/collection/components/uofg-menu/uofg-menu.js +0 -438
- package/dist/collection/components/uofg-modal/uofg-modal.js +0 -408
- package/dist/collection/index.js +0 -1
- package/dist/collection/utils/font-awesome-icon.js +0 -7
- package/dist/collection/utils/utils.js +0 -29
- package/dist/components/font-awesome-icon.js +0 -10
- package/dist/components/index.d.ts +0 -50
- package/dist/components/index.js +0 -8
- package/dist/components/index2.js +0 -18
- package/dist/components/uofg-alert.d.ts +0 -11
- package/dist/components/uofg-alert.js +0 -37
- package/dist/components/uofg-back-to-top.d.ts +0 -11
- package/dist/components/uofg-back-to-top.js +0 -51
- package/dist/components/uofg-card.d.ts +0 -11
- package/dist/components/uofg-card.js +0 -41
- package/dist/components/uofg-footer.d.ts +0 -11
- package/dist/components/uofg-footer.js +0 -749
- package/dist/components/uofg-header.d.ts +0 -11
- package/dist/components/uofg-header.js +0 -418
- package/dist/components/uofg-menu.d.ts +0 -11
- package/dist/components/uofg-menu.js +0 -6
- package/dist/components/uofg-menu2.js +0 -268
- package/dist/components/uofg-modal.d.ts +0 -11
- package/dist/components/uofg-modal.js +0 -198
- package/dist/components/utils.js +0 -30
- package/dist/esm/app-globals-0f993ce5.js +0 -3
- package/dist/esm/index-06ec28fa.js +0 -1960
- package/dist/esm/index.js +0 -1
- package/dist/esm/loader.js +0 -11
- package/dist/esm/polyfills/core-js.js +0 -11
- package/dist/esm/polyfills/dom.js +0 -79
- package/dist/esm/polyfills/es5-html-element.js +0 -1
- package/dist/esm/polyfills/index.js +0 -34
- package/dist/esm/polyfills/system.js +0 -6
- package/dist/esm/uofg-alert.entry.js +0 -17
- package/dist/esm/uofg-back-to-top_5.entry.js +0 -1392
- package/dist/esm/uofg-modal.entry.js +0 -164
- package/dist/esm/uofg-web-components.js +0 -20
- package/dist/esm/utils-acd1ee82.js +0 -56
- package/dist/index.cjs.js +0 -1
- package/dist/index.js +0 -1
- package/dist/types/components/uofg-alert/uofg-alert.d.ts +0 -5
- package/dist/types/components/uofg-back-to-top/uofg-back-to-top.d.ts +0 -11
- package/dist/types/components/uofg-card/uofg-card.d.ts +0 -9
- package/dist/types/components/uofg-footer/uofg-footer.d.ts +0 -8
- package/dist/types/components/uofg-header/uofg-header.d.ts +0 -37
- package/dist/types/components/uofg-menu/uofg-menu.d.ts +0 -68
- package/dist/types/components/uofg-modal/uofg-modal.d.ts +0 -77
- package/dist/types/components.d.ts +0 -303
- package/dist/types/index.d.ts +0 -1
- package/dist/types/stencil-public-runtime.d.ts +0 -1681
- package/dist/types/utils/font-awesome-icon.d.ts +0 -5
- package/dist/types/utils/utils.d.ts +0 -5
- package/dist/uofg-web-components/index.esm.js +0 -0
- package/dist/uofg-web-components/p-4a896033.js +0 -2
- package/dist/uofg-web-components/p-4e0da5c7.entry.js +0 -1
- package/dist/uofg-web-components/p-663d722e.entry.js +0 -1
- package/dist/uofg-web-components/p-84b2d8d2.js +0 -1
- package/dist/uofg-web-components/p-b0718d71.entry.js +0 -1
- package/dist/uofg-web-components/p-e1255160.js +0 -1
- package/loader/cdn.js +0 -3
- package/loader/index.cjs.js +0 -3
- package/loader/index.d.ts +0 -21
- package/loader/index.es2017.js +0 -3
- package/loader/index.js +0 -4
- package/loader/package.json +0 -11
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h, g as getElement } from './index-06ec28fa.js';
|
|
2
|
-
import { a as attachTailwind, g as getAllFocusableElements, F as FontAwesomeIcon, c as faTimes } from './utils-acd1ee82.js';
|
|
3
|
-
|
|
4
|
-
const UofgModal = class {
|
|
5
|
-
constructor(hostRef) {
|
|
6
|
-
registerInstance(this, hostRef);
|
|
7
|
-
this.opened = createEvent(this, "opened", 2);
|
|
8
|
-
this.closed = createEvent(this, "closed", 2);
|
|
9
|
-
this.inertElements = [];
|
|
10
|
-
this.label = undefined;
|
|
11
|
-
this.alertDialog = false;
|
|
12
|
-
this.centered = false;
|
|
13
|
-
this.staticBackdrop = false;
|
|
14
|
-
this.autoOpen = false;
|
|
15
|
-
this.isOpen = false;
|
|
16
|
-
}
|
|
17
|
-
connectedCallback() {
|
|
18
|
-
attachTailwind(this.el.shadowRoot);
|
|
19
|
-
// Bind event handlers so that 'this' is always the component instance.
|
|
20
|
-
this.handleClick = this.handleClick.bind(this);
|
|
21
|
-
this.handleKeyUp = this.handleKeyUp.bind(this);
|
|
22
|
-
this.handleFocusOut = this.handleFocusOut.bind(this);
|
|
23
|
-
if (this.autoOpen) {
|
|
24
|
-
this.isOpen = true;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
disconnectedCallback() {
|
|
28
|
-
// Just in case the modal is removed from the DOM before it is closed, make sure to remove the inert attribute from all elements that we marked as inert when the modal was opened.
|
|
29
|
-
for (const element of this.inertElements) {
|
|
30
|
-
element.removeAttribute('inert');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
handleClick(e) {
|
|
34
|
-
if (!this.staticBackdrop && e.target === e.currentTarget) {
|
|
35
|
-
this.isOpen = false;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
handleKeyUp(e) {
|
|
39
|
-
if (e.key === 'Escape') {
|
|
40
|
-
this.isOpen = false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
handleFocusOut(e) {
|
|
44
|
-
var _a;
|
|
45
|
-
if (!this.isOpen)
|
|
46
|
-
return; // Don't do anything if the modal is closed.
|
|
47
|
-
const relatedTarget = e.relatedTarget;
|
|
48
|
-
// If the focus is moving outside the modal
|
|
49
|
-
if (!this.container.contains(relatedTarget) && !this.el.contains(relatedTarget)) {
|
|
50
|
-
e.preventDefault();
|
|
51
|
-
// If the focus is moving away from the dismiss button, focus the last focusable element in the modal.
|
|
52
|
-
if (e.target === this.dismissButton) {
|
|
53
|
-
const focusableElements = getAllFocusableElements(this.el);
|
|
54
|
-
(_a = focusableElements[focusableElements.length - 1]) === null || _a === void 0 ? void 0 : _a.focus();
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
// Otherwise, focus the dismiss button.
|
|
58
|
-
this.dismissButton.focus();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
handleIsOpenChange(newValue) {
|
|
63
|
-
if (newValue) {
|
|
64
|
-
window.requestAnimationFrame(() => {
|
|
65
|
-
window.requestAnimationFrame(() => {
|
|
66
|
-
window.requestAnimationFrame(() => {
|
|
67
|
-
// Focus the container element when the modal is opened, so that the screen reader's will announce the modal when it opens.
|
|
68
|
-
this.container.focus();
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
// Mark outer elements as inert when the modal is open.
|
|
73
|
-
let current = this.el;
|
|
74
|
-
// We want to mark all elements outside the modal as inert, so we need to traverse up the DOM tree until we reach the body element.
|
|
75
|
-
while (current !== null && current !== document.body) {
|
|
76
|
-
const parent = current.parentElement;
|
|
77
|
-
// If parent is null, then we may be inside a shadow root. If so, we get the host element and continue traversing up the DOM tree.
|
|
78
|
-
if (parent === null) {
|
|
79
|
-
const root = current.getRootNode();
|
|
80
|
-
if (root instanceof ShadowRoot) {
|
|
81
|
-
current = root.host;
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (parent !== null) {
|
|
86
|
-
for (const child of parent.children) {
|
|
87
|
-
if (child !== current && !child.inert) {
|
|
88
|
-
// Mark the element as inert and store it in an array so that we can remove the inert attribute when the modal closes.
|
|
89
|
-
child.inert = true;
|
|
90
|
-
this.inertElements.push(child);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
current = parent;
|
|
95
|
-
this.opened.emit();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
// Remove the inert attribute from all elements that we marked as inert when the modal was opened.
|
|
100
|
-
for (const element of this.inertElements) {
|
|
101
|
-
element.removeAttribute('inert');
|
|
102
|
-
}
|
|
103
|
-
// Clear the array of inert elements. This is important because we don't want to keep a reference to elements as they may be removed from the DOM and we could cause a memory leak.
|
|
104
|
-
this.inertElements = [];
|
|
105
|
-
this.closed.emit();
|
|
106
|
-
}
|
|
107
|
-
// Prevent scrolling of the body when the modal is open.
|
|
108
|
-
document.body.style.overflow = newValue ? 'hidden' : '';
|
|
109
|
-
}
|
|
110
|
-
render() {
|
|
111
|
-
return (h("div", { key: 'd4cbcdbf263ad8ea2aceb3a1718629cfc50056b0', class: {
|
|
112
|
-
'tw-visible tw-opacity-100': this.isOpen,
|
|
113
|
-
'tw-invisible tw-opacity-0': !this.isOpen,
|
|
114
|
-
'tw-fixed tw-left-0 tw-top-0 tw-z-[1000] tw-flex tw-h-screen tw-w-screen tw-bg-black tw-bg-opacity-50 tw-transition-[opacity,visibility]': true,
|
|
115
|
-
}, role: this.alertDialog ? 'alertdialog' : 'dialog', "aria-modal": this.isOpen ? 'true' : '', "aria-label": this.label, tabIndex: -1, onClick: this.handleClick, onKeyUp: this.handleKeyUp, onFocusout: this.handleFocusOut, ref: (el) => (this.container = el) }, h("div", { key: '56ec3bc88ac19f00c813eb1a3f8ef41139217174', part: "content", class: {
|
|
116
|
-
'tw-visible tw-opacity-100': this.isOpen,
|
|
117
|
-
'tw-translate-y-[calc(-50%_-_50px)]': !this.isOpen && this.centered,
|
|
118
|
-
'tw-translate-y-[-50px]': (!this.isOpen && !this.centered) || (this.isOpen && this.centered),
|
|
119
|
-
'tw-z-1 tw-absolute tw-left-1/2 tw-h-fit tw-max-h-full tw-w-fit tw-max-w-full -tw-translate-x-1/2 tw-overflow-auto tw-p-8 tw-transition-transform motion-reduce:tw-transition-none': true,
|
|
120
|
-
} }, h("button", { key: 'ca5eff3c18c70d9e0d3a05901ecec519e81e298e', class: "[&>svg]:h-[1em] tw-absolute tw-right-8 tw-top-8 tw-z-[2] tw-flex tw-h-12 tw-w-12 tw-items-center tw-justify-center tw-border-0 tw-bg-transparent tw-text-3xl tw-p-2 tw-text-[var(--uofg-modal-dismiss-color,white)] [&>svg]:tw-h-[1em] [&>svg]:tw-fill-current", part: "dismiss-button", "aria-label": "Close modal", ref: (el) => (this.dismissButton = el), onClick: () => (this.isOpen = false) }, h(FontAwesomeIcon, { key: 'a8d1e9d10fdfd83d6059651dfba660c2446293d8', icon: faTimes })), h("slot", { key: '3931cf9245a94e7aa1eac9d769d823a6e184da0b' }))));
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Get the current state of the modal.
|
|
124
|
-
* @returns A promise which will resolve to true when the modal is open, or false when the modal is closed.
|
|
125
|
-
*/
|
|
126
|
-
async getState() {
|
|
127
|
-
return this.isOpen;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Set the state of the modal.
|
|
131
|
-
* @param value The new state, set it to true to open the modal, or false to close the modal.
|
|
132
|
-
*/
|
|
133
|
-
async setState(value) {
|
|
134
|
-
this.isOpen = value;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Toggle the state of the modal.
|
|
138
|
-
* @returns A promise which will resolve to true (if the modal opened) or false (if the modal closed).
|
|
139
|
-
*/
|
|
140
|
-
async toggle() {
|
|
141
|
-
this.isOpen = !this.isOpen;
|
|
142
|
-
return this.isOpen;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Closes the modal.
|
|
146
|
-
* @returns empty Promise.
|
|
147
|
-
*/
|
|
148
|
-
async close() {
|
|
149
|
-
this.isOpen = false;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Opens the modal.
|
|
153
|
-
* @returns empty Promise.
|
|
154
|
-
*/
|
|
155
|
-
async open() {
|
|
156
|
-
this.isOpen = true;
|
|
157
|
-
}
|
|
158
|
-
get el() { return getElement(this); }
|
|
159
|
-
static get watchers() { return {
|
|
160
|
-
"isOpen": ["handleIsOpenChange"]
|
|
161
|
-
}; }
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
export { UofgModal as uofg_modal };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { p as promiseResolve, b as bootstrapLazy } from './index-06ec28fa.js';
|
|
2
|
-
export { s as setNonce } from './index-06ec28fa.js';
|
|
3
|
-
import { g as globalScripts } from './app-globals-0f993ce5.js';
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
Stencil Client Patch Browser v4.12.4 | MIT Licensed | https://stenciljs.com
|
|
7
|
-
*/
|
|
8
|
-
const patchBrowser = () => {
|
|
9
|
-
const importMeta = import.meta.url;
|
|
10
|
-
const opts = {};
|
|
11
|
-
if (importMeta !== '') {
|
|
12
|
-
opts.resourcesUrl = new URL('.', importMeta).href;
|
|
13
|
-
}
|
|
14
|
-
return promiseResolve(opts);
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
patchBrowser().then(async (options) => {
|
|
18
|
-
await globalScripts();
|
|
19
|
-
return bootstrapLazy([["uofg-alert",[[1,"uofg-alert"]]],["uofg-modal",[[1,"uofg-modal",{"label":[1],"alertDialog":[4,"alert-dialog"],"centered":[4],"staticBackdrop":[4,"static-backdrop"],"autoOpen":[4,"auto-open"],"isOpen":[32],"getState":[64],"setState":[64],"toggle":[64],"close":[64],"open":[64]},null,{"isOpen":["handleIsOpenChange"]}]]],["uofg-back-to-top_5",[[1,"uofg-header",{"pageTitle":[1,"page-title"],"pageUrl":[1,"page-url"],"isFullSize":[32],"pageSpecificContent":[32],"isSubContainerOverflowing":[32]},[[9,"resize","updateFullSize"]]],[1,"uofg-back-to-top",{"threshold":[2],"isVisible":[32]},[[9,"scroll","onScroll"]]],[1,"uofg-card",{"href":[1]}],[1,"uofg-footer",{"extraLinks":[32]}],[0,"uofg-menu",{"autoCollapse":[4,"auto-collapse"],"isExpanded":[32],"getExpanded":[64],"setExpanded":[64],"toggle":[64],"collapse":[64],"expand":[64]},null,{"isExpanded":["handleIsExpandedChange"]}]]]], options);
|
|
20
|
-
});
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { h } from './index-06ec28fa.js';
|
|
2
|
-
|
|
3
|
-
const FontAwesomeIcon = props => {
|
|
4
|
-
const width = props.icon.icon[0];
|
|
5
|
-
const height = props.icon.icon[1];
|
|
6
|
-
const iconPathData = props.icon.icon[4];
|
|
7
|
-
return (h("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: `0 0 ${width} ${height}` }, Array.isArray(iconPathData) ? (iconPathData.map(path => h("path", { d: path }))) : (h("path", { d: iconPathData }))));
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
var faCircleExclamation = {
|
|
11
|
-
prefix: 'fas',
|
|
12
|
-
iconName: 'circle-exclamation',
|
|
13
|
-
icon: [512, 512, ["exclamation-circle"], "f06a", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"]
|
|
14
|
-
};
|
|
15
|
-
var faChevronUp = {
|
|
16
|
-
prefix: 'fas',
|
|
17
|
-
iconName: 'chevron-up',
|
|
18
|
-
icon: [512, 512, [], "f077", "M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z"]
|
|
19
|
-
};
|
|
20
|
-
var faXmark = {
|
|
21
|
-
prefix: 'fas',
|
|
22
|
-
iconName: 'xmark',
|
|
23
|
-
icon: [384, 512, [128473, 10005, 10006, 10060, 215, "close", "multiply", "remove", "times"], "f00d", "M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]
|
|
24
|
-
};
|
|
25
|
-
var faTimes = faXmark;
|
|
26
|
-
|
|
27
|
-
const twCss = "*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb;--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;}body{margin:0;line-height:inherit;}hr{height:0;color:inherit;border-top-width:1px;}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse;}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0;}button,select{text-transform:none}button,[type='button'],[type='reset'],[type='submit']{-webkit-appearance:button;background-color:transparent;background-image:none;}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type='search']{-webkit-appearance:textfield;outline-offset:-2px;}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af;}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af;}button,[role=\"button\"]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle;}img,video{max-width:100%;height:auto}[hidden]{display:none}*{box-sizing:border-box}uofg-menu{--uofg-menu-animation-type:slide;--uofg-menu-animation-duration:0.2s;--uofg-menu-animation-easing:ease-in-out}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}.tw-visible{visibility:visible}.tw-invisible{visibility:hidden}.tw-fixed{position:fixed}.tw-absolute{position:absolute}.tw-relative{position:relative}.tw-bottom-0{bottom:0px}.tw-left-0{left:0px}.tw-left-1\\/2{left:50%}.tw-right-0{right:0px}.tw-right-8{right:2rem}.tw-top-0{top:0px}.tw-top-8{top:2rem}.tw-top-full{top:100%}.tw-z-50{z-index:50}.tw-z-\\[1000\\]{z-index:1000}.tw-z-\\[2\\]{z-index:2}.tw-m-4{margin:1rem}.tw-my-4{margin-top:1rem;margin-bottom:1rem}.tw-mr-auto{margin-right:auto}.tw-block{display:block}.tw-flex{display:flex}.tw-contents{display:contents}.tw-aspect-square{aspect-ratio:1 / 1}.tw-h-12{height:3rem}.tw-h-16{height:4rem}.tw-h-\\[10rem\\]{height:10rem}.tw-h-\\[3\\.5rem\\]{height:3.5rem}.tw-h-\\[5rem\\]{height:5rem}.tw-h-auto{height:auto}.tw-h-fit{height:-moz-fit-content;height:fit-content}.tw-h-full{height:100%}.tw-h-screen{height:100vh}.tw-max-h-\\[calc\\(100vh-5rem\\)\\]{max-height:calc(100vh - 5rem)}.tw-max-h-full{max-height:100%}.tw-w-12{width:3rem}.tw-w-\\[3\\.5rem\\]{width:3.5rem}.tw-w-\\[7\\.5rem\\]{width:7.5rem}.tw-w-fit{width:-moz-fit-content;width:fit-content}.tw-w-full{width:100%}.tw-w-screen{width:100vw}.tw-min-w-\\[20rem\\]{min-width:20rem}.tw-max-w-full{max-width:100%}.-tw-translate-x-1\\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-translate-y-\\[-50px\\]{--tw-translate-y:-50px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-translate-y-\\[calc\\(-50\\%_-_50px\\)\\]{--tw-translate-y:calc(-50% - 50px);transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-cursor-pointer{cursor:pointer}.tw-flex-col{flex-direction:column}.tw-flex-wrap{flex-wrap:wrap}.tw-content-center{align-content:center}.tw-items-center{align-items:center}.tw-justify-end{justify-content:flex-end}.tw-justify-center{justify-content:center}.tw-justify-between{justify-content:space-between}.tw-gap-2{gap:0.5rem}.tw-gap-3{gap:0.75rem}.tw-gap-4{gap:1rem}.tw-gap-8{gap:2rem}.tw-overflow-auto{overflow:auto}.tw-overflow-hidden{overflow:hidden}.tw-overflow-y-auto{overflow-y:auto}.tw-whitespace-normal{white-space:normal}.tw-rounded{border-radius:0.25rem}.tw-rounded-\\[50\\%\\]{border-radius:50%}.tw-border{border-width:1px}.tw-border-0{border-width:0px}.tw-border-b{border-bottom-width:1px}.tw-border-b-2{border-bottom-width:2px}.tw-border-b-8{border-bottom-width:8px}.tw-border-l{border-left-width:1px}.tw-border-r-2{border-right-width:2px}.tw-border-solid{border-style:solid}.tw-border-dotted{border-style:dotted}.tw-border-transparent{border-color:transparent}.tw-border-uofg-blue-100{--tw-border-opacity:1;border-color:rgb(221 236 240 / var(--tw-border-opacity))}.tw-border-uofg-grey-300{--tw-border-opacity:1;border-color:rgb(209 209 209 / var(--tw-border-opacity))}.tw-border-uofg-grey-400{--tw-border-opacity:1;border-color:rgb(180 180 180 / var(--tw-border-opacity))}.tw-border-uofg-grey-500{--tw-border-opacity:1;border-color:rgb(154 154 154 / var(--tw-border-opacity))}.tw-border-uofg-grey-950{--tw-border-opacity:1;border-color:rgb(40 40 40 / var(--tw-border-opacity))}.tw-border-white{--tw-border-opacity:1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.tw-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.tw-bg-transparent{background-color:transparent}.tw-bg-uofg-blue-200{--tw-bg-opacity:1;background-color:rgb(190 218 227 / var(--tw-bg-opacity))}.tw-bg-uofg-blue-50{--tw-bg-opacity:1;background-color:rgb(241 248 250 / var(--tw-bg-opacity))}.tw-bg-uofg-grey{--tw-bg-opacity:1;background-color:rgb(221 221 221 / var(--tw-bg-opacity))}.tw-bg-uofg-red{--tw-bg-opacity:1;background-color:rgb(194 4 48 / var(--tw-bg-opacity))}.tw-bg-uofg-yellow{--tw-bg-opacity:1;background-color:rgb(255 199 42 / var(--tw-bg-opacity))}.tw-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.tw-bg-opacity-50{--tw-bg-opacity:0.5}.tw-fill-current{fill:currentColor}.tw-p-2{padding:0.5rem}.tw-p-4{padding:1rem}.tw-p-5{padding:1.25rem}.tw-p-6{padding:1.5rem}.tw-p-8{padding:2rem}.tw-px-4{padding-left:1rem;padding-right:1rem}.tw-px-5{padding-left:1.25rem;padding-right:1.25rem}.tw-px-6{padding-left:1.5rem;padding-right:1.5rem}.tw-px-8{padding-left:2rem;padding-right:2rem}.tw-px-\\[calc\\(\\(100\\%-1320px\\)\\/2\\)\\]{padding-left:calc((100% - 1320px) / 2);padding-right:calc((100% - 1320px) / 2)}.tw-px-\\[max\\(calc\\(\\(100\\%-1320px\\)\\/2\\)\\,2rem\\)\\]{padding-left:max(calc((100% - 1320px) / 2),2rem);padding-right:max(calc((100% - 1320px) / 2),2rem)}.tw-py-2{padding-top:0.5rem;padding-bottom:0.5rem}.tw-py-4{padding-top:1rem;padding-bottom:1rem}.tw-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.tw-py-8{padding-top:2rem;padding-bottom:2rem}.tw-pb-6{padding-bottom:1.5rem}.tw-pt-8{padding-top:2rem}.tw-font-condensed{font-family:Roboto Condensed, Arial, sans-serif}.tw-text-2xl{font-size:1.5rem;line-height:2rem}.tw-text-3xl{font-size:1.875rem;line-height:2.25rem}.tw-text-4xl{font-size:2.25rem;line-height:2.5rem}.tw-font-bold{font-weight:700}.tw-font-medium{font-weight:500}.tw-not-italic{font-style:normal}.tw-tracking-wide{letter-spacing:0.025em}.tw-text-\\[var\\(--uofg-modal-dismiss-color\\,white\\)\\]{color:var(--uofg-modal-dismiss-color,white)}.tw-text-black{--tw-text-opacity:1;color:rgb(0 0 0 / var(--tw-text-opacity))}.tw-text-uofg-blue{--tw-text-opacity:1;color:rgb(105 163 185 / var(--tw-text-opacity))}.tw-text-uofg-blue-500{--tw-text-opacity:1;color:rgb(65 127 153 / var(--tw-text-opacity))}.tw-text-uofg-yellow{--tw-text-opacity:1;color:rgb(255 199 42 / var(--tw-text-opacity))}.tw-text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.tw-opacity-0{opacity:0}.tw-opacity-100{opacity:1}.tw-shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.tw-transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.tw-transition-\\[opacity\\,visibility\\]{transition-property:opacity,visibility;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.tw-transition-colors{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.tw-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.tw-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.first\\:tw-border-l-2:first-child{border-left-width:2px}.focus-within\\:tw-border-uofg-blue-400:focus-within{--tw-border-opacity:1;border-color:rgb(105 163 185 / var(--tw-border-opacity))}.hover\\:tw-border-uofg-yellow:hover{--tw-border-opacity:1;border-color:rgb(255 199 42 / var(--tw-border-opacity))}.hover\\:tw-bg-uofg-grey:hover{--tw-bg-opacity:1;background-color:rgb(221 221 221 / var(--tw-bg-opacity))}.hover\\:tw-bg-uofg-yellow:hover{--tw-bg-opacity:1;background-color:rgb(255 199 42 / var(--tw-bg-opacity))}.hover\\:tw-text-uofg-yellow:hover{--tw-text-opacity:1;color:rgb(255 199 42 / var(--tw-text-opacity))}.hover\\:tw-text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.aria-expanded\\:tw-rotate-180[aria-expanded=\"true\"]{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.aria-expanded\\:tw-bg-uofg-grey[aria-expanded=\"true\"]{--tw-bg-opacity:1;background-color:rgb(221 221 221 / var(--tw-bg-opacity))}.aria-expanded\\:tw-bg-uofg-yellow[aria-expanded=\"true\"]{--tw-bg-opacity:1;background-color:rgb(255 199 42 / var(--tw-bg-opacity))}.aria-expanded\\:tw-bg-white[aria-expanded=\"true\"]{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.aria-expanded\\:tw-text-black[aria-expanded=\"true\"]{--tw-text-opacity:1;color:rgb(0 0 0 / var(--tw-text-opacity))}.hocus\\:tw-border-current:hover{border-color:currentColor}.hocus\\:tw-border-uofg-blue-400:hover{--tw-border-opacity:1;border-color:rgb(105 163 185 / var(--tw-border-opacity))}.hocus\\:tw-border-white:hover{--tw-border-opacity:1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.hocus\\:tw-bg-uofg-red:hover{--tw-bg-opacity:1;background-color:rgb(194 4 48 / var(--tw-bg-opacity))}.hocus\\:tw-text-\\[\\#0077b5\\]:hover{--tw-text-opacity:1;color:rgb(0 119 181 / var(--tw-text-opacity))}.hocus\\:tw-text-\\[\\#1da1f2\\]:hover{--tw-text-opacity:1;color:rgb(29 161 242 / var(--tw-text-opacity))}.hocus\\:tw-text-\\[\\#4267b2\\]:hover{--tw-text-opacity:1;color:rgb(66 103 178 / var(--tw-text-opacity))}.hocus\\:tw-text-\\[\\#e1306c\\]:hover{--tw-text-opacity:1;color:rgb(225 48 108 / var(--tw-text-opacity))}.hocus\\:tw-text-\\[\\#f00\\]:hover{--tw-text-opacity:1;color:rgb(255 0 0 / var(--tw-text-opacity))}.hocus\\:tw-text-uofg-blue-950:hover{--tw-text-opacity:1;color:rgb(25 40 51 / var(--tw-text-opacity))}.hocus\\:tw-opacity-75:hover{opacity:0.75}.hocus\\:tw-border-current:focus{border-color:currentColor}.hocus\\:tw-border-uofg-blue-400:focus{--tw-border-opacity:1;border-color:rgb(105 163 185 / var(--tw-border-opacity))}.hocus\\:tw-border-white:focus{--tw-border-opacity:1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.hocus\\:tw-bg-uofg-red:focus{--tw-bg-opacity:1;background-color:rgb(194 4 48 / var(--tw-bg-opacity))}.hocus\\:tw-text-\\[\\#0077b5\\]:focus{--tw-text-opacity:1;color:rgb(0 119 181 / var(--tw-text-opacity))}.hocus\\:tw-text-\\[\\#1da1f2\\]:focus{--tw-text-opacity:1;color:rgb(29 161 242 / var(--tw-text-opacity))}.hocus\\:tw-text-\\[\\#4267b2\\]:focus{--tw-text-opacity:1;color:rgb(66 103 178 / var(--tw-text-opacity))}.hocus\\:tw-text-\\[\\#e1306c\\]:focus{--tw-text-opacity:1;color:rgb(225 48 108 / var(--tw-text-opacity))}.hocus\\:tw-text-\\[\\#f00\\]:focus{--tw-text-opacity:1;color:rgb(255 0 0 / var(--tw-text-opacity))}.hocus\\:tw-text-uofg-blue-950:focus{--tw-text-opacity:1;color:rgb(25 40 51 / var(--tw-text-opacity))}.hocus\\:tw-opacity-75:focus{opacity:0.75}@media (prefers-reduced-motion: reduce){.motion-reduce\\:tw-transition-none{transition-property:none}}@media (min-width: 768px){.md\\:tw-col-span-2{grid-column:span 2 / span 2}.md\\:tw-row-start-2{grid-row-start:2}.md\\:tw-grid{display:grid}.md\\:tw-grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (min-width: 1024px){.lg\\:tw-relative{position:relative}.lg\\:tw-row-auto{grid-row:auto}.lg\\:tw-h-16{height:4rem}.lg\\:tw-w-\\[30rem\\]{width:30rem}.lg\\:tw-grid-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.lg\\:tw-whitespace-nowrap{white-space:nowrap}.lg\\:tw-border-l-0{border-left-width:0px}}@media (min-width: 1320px){.min-\\[1320px\\]\\:tw-absolute{position:absolute}.min-\\[1320px\\]\\:tw-left-\\[max\\(calc\\(\\(100\\%-1320px\\)\\/2\\)\\2c 7\\.5rem\\)\\]{left:max(calc((100% - 1320px) / 2),7.5rem)}}.\\[\\&\\>a\\]\\:last\\:tw-pb-4:last-child>a{padding-bottom:1rem}.\\[\\&\\>div\\>slot\\:\\:slotted\\(img\\)\\]\\:hocus\\:tw-scale-110:hover>div>slot::slotted(img){--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&\\>div\\>slot\\:\\:slotted\\(img\\)\\]\\:hocus\\:tw-transform:hover>div>slot::slotted(img){transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&\\>div\\>slot\\:\\:slotted\\(img\\)\\]\\:hocus\\:tw-transition-transform:hover>div>slot::slotted(img){transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.\\[\\&\\>div\\>slot\\:\\:slotted\\(img\\)\\]\\:hocus\\:tw-scale-110:focus>div>slot::slotted(img){--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&\\>div\\>slot\\:\\:slotted\\(img\\)\\]\\:hocus\\:tw-transform:focus>div>slot::slotted(img){transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&\\>div\\>slot\\:\\:slotted\\(img\\)\\]\\:hocus\\:tw-transition-transform:focus>div>slot::slotted(img){transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.\\[\\&\\>li\\]\\:tw-contents>li{display:contents}.\\[\\&\\>slot\\:\\:slotted\\(img\\)\\]\\:tw-w-full>slot::slotted(img){width:100%}.\\[\\&\\>slot\\:\\:slotted\\(img\\)\\]\\:tw-object-cover>slot::slotted(img){-o-object-fit:cover;object-fit:cover}.\\[\\&\\>slot\\:\\:slotted\\(img\\)\\]\\:tw-transition-transform>slot::slotted(img){transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.\\[\\&\\>slot\\[name\\=\\\"body\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-m-0>slot[name=\"body\"]::slotted(*){margin:0px}.\\[\\&\\>slot\\[name\\=\\\"body\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-text-xl>slot[name=\"body\"]::slotted(*){font-size:1.25rem;line-height:1.75rem}.\\[\\&\\>slot\\[name\\=\\\"body\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-font-normal>slot[name=\"body\"]::slotted(*){font-weight:400}.\\[\\&\\>slot\\[name\\=\\\"message\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-text-2xl>slot[name=\"message\"]::slotted(*){font-size:1.5rem;line-height:2rem}.\\[\\&\\>slot\\[name\\=\\\"subtitle\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-m-0>slot[name=\"subtitle\"]::slotted(*){margin:0px}.\\[\\&\\>slot\\[name\\=\\\"subtitle\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-mb-8>slot[name=\"subtitle\"]::slotted(*){margin-bottom:2rem}.\\[\\&\\>slot\\[name\\=\\\"subtitle\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-py-4>slot[name=\"subtitle\"]::slotted(*){padding-top:1rem;padding-bottom:1rem}.\\[\\&\\>slot\\[name\\=\\\"subtitle\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-text-2xl>slot[name=\"subtitle\"]::slotted(*){font-size:1.5rem;line-height:2rem}.\\[\\&\\>slot\\[name\\=\\\"subtitle\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-text-4xl>slot[name=\"subtitle\"]::slotted(*){font-size:2.25rem;line-height:2.5rem}.\\[\\&\\>slot\\[name\\=\\\"subtitle\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-font-bold>slot[name=\"subtitle\"]::slotted(*){font-weight:700}.\\[\\&\\>slot\\[name\\=\\\"subtitle\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-font-normal>slot[name=\"subtitle\"]::slotted(*){font-weight:400}.\\[\\&\\>slot\\[name\\=\\\"title\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-m-0>slot[name=\"title\"]::slotted(*){margin:0px}.\\[\\&\\>slot\\[name\\=\\\"title\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-py-4>slot[name=\"title\"]::slotted(*){padding-top:1rem;padding-bottom:1rem}.\\[\\&\\>slot\\[name\\=\\\"title\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-text-4xl>slot[name=\"title\"]::slotted(*){font-size:2.25rem;line-height:2.5rem}.\\[\\&\\>slot\\[name\\=\\\"title\\\"\\]\\:\\:slotted\\(\\*\\)\\]\\:tw-font-normal>slot[name=\"title\"]::slotted(*){font-weight:400}.\\[\\&\\>svg\\]\\:tw-mr-4>svg{margin-right:1rem}.\\[\\&\\>svg\\]\\:tw-block>svg{display:block}.\\[\\&\\>svg\\]\\:tw-h-\\[1\\.5em\\]>svg{height:1.5em}.\\[\\&\\>svg\\]\\:tw-h-\\[1\\.6em\\]>svg{height:1.6em}.\\[\\&\\>svg\\]\\:tw-h-\\[1em\\]>svg{height:1em}.\\[\\&\\>svg\\]\\:tw-h-full>svg{height:100%}.\\[\\&\\>svg\\]\\:tw-w-auto>svg{width:auto}.\\[\\&\\>svg\\]\\:tw-fill-current>svg{fill:currentColor}.\\[\\&\\>svg\\]\\:tw-fill-uofg-yellow>svg{fill:#ffc72a}.\\[\\&\\>svg\\]\\:tw-transition-transform>svg{transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.\\[\\&\\>svg\\]\\:aria-expanded\\:tw-rotate-180[aria-expanded=\"true\"]>svg{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&\\>uofg-menu\\]\\:last\\:tw-pb-6:last-child>uofg-menu{padding-bottom:1.5rem}";
|
|
28
|
-
const tw = twCss;
|
|
29
|
-
|
|
30
|
-
const WEB_ANIMATIONS_SUPPORTED = () => {
|
|
31
|
-
return typeof window !== 'undefined' && 'animate' in HTMLElement.prototype;
|
|
32
|
-
};
|
|
33
|
-
const PREFERS_REDUCED_MOTION = () => {
|
|
34
|
-
return typeof window !== 'undefined' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
35
|
-
};
|
|
36
|
-
const getAllFocusableElements = (container) => {
|
|
37
|
-
const query = 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [contenteditable], audio[controls], video[controls], details, summary, [tabindex]:not([tabindex="-1"])';
|
|
38
|
-
return Array.from(container.querySelectorAll(query));
|
|
39
|
-
};
|
|
40
|
-
let stylesheet = null;
|
|
41
|
-
if (typeof CSSStyleSheet === 'function') {
|
|
42
|
-
stylesheet = new CSSStyleSheet();
|
|
43
|
-
stylesheet.replaceSync(tw);
|
|
44
|
-
}
|
|
45
|
-
const attachTailwind = (root) => {
|
|
46
|
-
if (stylesheet) {
|
|
47
|
-
root.adoptedStyleSheets = [...root.adoptedStyleSheets, stylesheet];
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
const style = document.createElement('style');
|
|
51
|
-
style.innerHTML = tw;
|
|
52
|
-
root.prepend(style);
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
export { FontAwesomeIcon as F, PREFERS_REDUCED_MOTION as P, WEB_ANIMATIONS_SUPPORTED as W, attachTailwind as a, faCircleExclamation as b, faTimes as c, faChevronUp as f, getAllFocusableElements as g };
|
package/dist/index.cjs.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('./cjs/index.cjs.js');
|
package/dist/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './esm/index.js';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export declare class UofgBackToTop {
|
|
2
|
-
/**
|
|
3
|
-
* The number of pixels the user has to scroll down before the button appears.
|
|
4
|
-
*/
|
|
5
|
-
threshold: number;
|
|
6
|
-
isVisible: boolean;
|
|
7
|
-
el: HTMLUofgBackToTopElement;
|
|
8
|
-
connectedCallback(): void;
|
|
9
|
-
onScroll(): void;
|
|
10
|
-
render(): any;
|
|
11
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
interface PageSpecificLink {
|
|
2
|
-
text: string;
|
|
3
|
-
href: string;
|
|
4
|
-
attributes?: Record<string, string>;
|
|
5
|
-
}
|
|
6
|
-
interface PageSpecificSubMenu {
|
|
7
|
-
title: string;
|
|
8
|
-
links: PageSpecificLink[];
|
|
9
|
-
wrapContent?: boolean;
|
|
10
|
-
}
|
|
11
|
-
type PageSpecificContent = Array<PageSpecificLink | PageSpecificSubMenu>;
|
|
12
|
-
export declare class UofgHeader {
|
|
13
|
-
/**
|
|
14
|
-
* The title of the department/topic that the header is being used for. For example, for the Convocation pages, this would be set to "Convocation".
|
|
15
|
-
*/
|
|
16
|
-
pageTitle: string;
|
|
17
|
-
/**
|
|
18
|
-
* The URL to the home/landing page of the department/topic the header is being used for. For example, for the Convocation pages, this would be set to "https://www.uoguelph.ca/convocation/".
|
|
19
|
-
*/
|
|
20
|
-
pageUrl: string;
|
|
21
|
-
el: HTMLUofgHeaderElement;
|
|
22
|
-
isFullSize: boolean;
|
|
23
|
-
pageSpecificContent: PageSpecificContent;
|
|
24
|
-
private observer;
|
|
25
|
-
private subContainer?;
|
|
26
|
-
private subContainerOverflowWidth;
|
|
27
|
-
isSubContainerOverflowing: boolean;
|
|
28
|
-
private needsOverflowWidthUpdate;
|
|
29
|
-
connectedCallback(): void;
|
|
30
|
-
componentDidLoad(): void;
|
|
31
|
-
updateFullSize(): void;
|
|
32
|
-
private updateSubContainerOverflow;
|
|
33
|
-
componentDidRender(): void;
|
|
34
|
-
private updatePageSpecificContent;
|
|
35
|
-
render(): any;
|
|
36
|
-
}
|
|
37
|
-
export {};
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '../../stencil-public-runtime';
|
|
2
|
-
export declare class UofgMenu {
|
|
3
|
-
el: HTMLUofgMenuElement;
|
|
4
|
-
isExpanded: boolean;
|
|
5
|
-
/**
|
|
6
|
-
* Controls whether the menu should automatically collapse when the focused element in the page is not contained within the menu (e.g. it's button or content). This is useful for when you want the menu to collapse whenever a user interacts with any other part of the page.
|
|
7
|
-
*/
|
|
8
|
-
autoCollapse: boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Dispatched whenever the menu is expanded whether by user interaction or or programmatically (e.g. expand()).
|
|
11
|
-
*/
|
|
12
|
-
expanded: EventEmitter<void>;
|
|
13
|
-
/**
|
|
14
|
-
* Dispatched whenever the menu is collapsed whether by user interaction or programmatically (e.g. collapse()).
|
|
15
|
-
*/
|
|
16
|
-
collapsed: EventEmitter<void>;
|
|
17
|
-
/**
|
|
18
|
-
* Dispatched whenever the menu is expanding or collapsing and the animation has started. This event is not dispatched if the animation is disabled (e.g. due to reduced motion, css variable set to none, or lack of Web Animations API support).
|
|
19
|
-
*/
|
|
20
|
-
animationStarted: EventEmitter<boolean>;
|
|
21
|
-
/**
|
|
22
|
-
* Dispatched whenever the menu is expanding or collapsing and the animation has ended. This event is not dispatched if the animation is disabled (e.g. due to reduced motion, css variable set to none, or lack of Web Animations API support).
|
|
23
|
-
*/
|
|
24
|
-
animationEnded: EventEmitter<boolean>;
|
|
25
|
-
private computedStyle;
|
|
26
|
-
private button;
|
|
27
|
-
private content;
|
|
28
|
-
private contentComputedStyle;
|
|
29
|
-
private observer;
|
|
30
|
-
connectedCallback(): void;
|
|
31
|
-
disconnectedCallback(): void;
|
|
32
|
-
private handleMutation;
|
|
33
|
-
private handleKeyUp;
|
|
34
|
-
private handleClick;
|
|
35
|
-
private handleFocusout;
|
|
36
|
-
handleIsExpandedChange(newValue: boolean): void;
|
|
37
|
-
private getAnimationType;
|
|
38
|
-
private getAnimationDuration;
|
|
39
|
-
private getAnimationEasing;
|
|
40
|
-
private fadeAnimation;
|
|
41
|
-
private slideAnimation;
|
|
42
|
-
render(): any;
|
|
43
|
-
/**
|
|
44
|
-
* Get the current expanded state of the menu.
|
|
45
|
-
* @returns A promise which will resolve to the current expanded state.
|
|
46
|
-
*/
|
|
47
|
-
getExpanded(): Promise<boolean>;
|
|
48
|
-
/**
|
|
49
|
-
* Set the expanded state of the menu.
|
|
50
|
-
* @param value The new expanded state.
|
|
51
|
-
*/
|
|
52
|
-
setExpanded(value: boolean): Promise<void>;
|
|
53
|
-
/**
|
|
54
|
-
* Toggle the expanded state of the menu.
|
|
55
|
-
* @returns A promise which will resolve to the new expanded state.
|
|
56
|
-
*/
|
|
57
|
-
toggle(): Promise<boolean>;
|
|
58
|
-
/**
|
|
59
|
-
* Collapse the menu. This is the same as setting the expanded state to false.
|
|
60
|
-
* @returns empty Promise.
|
|
61
|
-
*/
|
|
62
|
-
collapse(): Promise<void>;
|
|
63
|
-
/**
|
|
64
|
-
* Expand the menu. This is the same as setting the expanded state to true.
|
|
65
|
-
* @returns empty Promise.
|
|
66
|
-
*/
|
|
67
|
-
expand(): Promise<void>;
|
|
68
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '../../stencil-public-runtime';
|
|
2
|
-
/**
|
|
3
|
-
* @part content - The modal content container.
|
|
4
|
-
* @part dismiss-button - The button that closes the modal.
|
|
5
|
-
*/
|
|
6
|
-
export declare class UofgModal {
|
|
7
|
-
/**
|
|
8
|
-
* The label for the modal. It is recommended that you set this to describe the modal's content.
|
|
9
|
-
* This is required for accessibility.
|
|
10
|
-
*/
|
|
11
|
-
label: string;
|
|
12
|
-
/**
|
|
13
|
-
* Used to determine whether the modal should be rendered as an alert dialog.
|
|
14
|
-
* This is useful for when you want to use the modal to alert the user of something, rather than to ask the user to make a decision.
|
|
15
|
-
* If this is set to true, the modal will be rendered with a role of "alertdialog" instead of "dialog".
|
|
16
|
-
*/
|
|
17
|
-
alertDialog: boolean;
|
|
18
|
-
/**
|
|
19
|
-
* Used to determine whether the modal content is centered vertically.
|
|
20
|
-
*/
|
|
21
|
-
centered: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Used to determine whether clicking on the backdrop of the modal will close the modal.
|
|
24
|
-
* If this is set to true, clicking on the backdrop will NOT close the modal.
|
|
25
|
-
*/
|
|
26
|
-
staticBackdrop: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Used to determine whether the modal should open automatically when the component is first rendered.
|
|
29
|
-
* It is important to ensure this is only set to true for ONE modal on the page.
|
|
30
|
-
*/
|
|
31
|
-
autoOpen: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Dispatched whenever the modal is opened whether by user interaction or programmatically (e.g. open()).
|
|
34
|
-
*/
|
|
35
|
-
opened: EventEmitter<void>;
|
|
36
|
-
/**
|
|
37
|
-
* Dispatched whenever the modal is closed whether by user interaction or programmatically (e.g. close()).
|
|
38
|
-
*/
|
|
39
|
-
closed: EventEmitter<void>;
|
|
40
|
-
isOpen: boolean;
|
|
41
|
-
el: HTMLUofgModalElement;
|
|
42
|
-
private container;
|
|
43
|
-
private dismissButton;
|
|
44
|
-
private inertElements;
|
|
45
|
-
connectedCallback(): void;
|
|
46
|
-
disconnectedCallback(): void;
|
|
47
|
-
private handleClick;
|
|
48
|
-
private handleKeyUp;
|
|
49
|
-
private handleFocusOut;
|
|
50
|
-
handleIsOpenChange(newValue: boolean): void;
|
|
51
|
-
render(): any;
|
|
52
|
-
/**
|
|
53
|
-
* Get the current state of the modal.
|
|
54
|
-
* @returns A promise which will resolve to true when the modal is open, or false when the modal is closed.
|
|
55
|
-
*/
|
|
56
|
-
getState(): Promise<boolean>;
|
|
57
|
-
/**
|
|
58
|
-
* Set the state of the modal.
|
|
59
|
-
* @param value The new state, set it to true to open the modal, or false to close the modal.
|
|
60
|
-
*/
|
|
61
|
-
setState(value: boolean): Promise<void>;
|
|
62
|
-
/**
|
|
63
|
-
* Toggle the state of the modal.
|
|
64
|
-
* @returns A promise which will resolve to true (if the modal opened) or false (if the modal closed).
|
|
65
|
-
*/
|
|
66
|
-
toggle(): Promise<boolean>;
|
|
67
|
-
/**
|
|
68
|
-
* Closes the modal.
|
|
69
|
-
* @returns empty Promise.
|
|
70
|
-
*/
|
|
71
|
-
close(): Promise<void>;
|
|
72
|
-
/**
|
|
73
|
-
* Opens the modal.
|
|
74
|
-
* @returns empty Promise.
|
|
75
|
-
*/
|
|
76
|
-
open(): Promise<void>;
|
|
77
|
-
}
|