Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Prefix the change with one of these keywords:

## [Unreleased]

- Updated footer links of FF
## [0.29.4]

### Added
Expand Down
4 changes: 3 additions & 1 deletion docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,9 @@ export default defineConfig({
fileName: (format) => `rds.${format}.js`,
},
rollupOptions: {
external: [/* all dependencies externalized */],
external: [
/* all dependencies externalized */
],
output: {
globals: {
react: 'React',
Expand Down
32 changes: 16 additions & 16 deletions docs/motion-enhancement-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,23 +60,23 @@ This plan proposes a cohesive motion-and-interactivity layer for RDS. It is an _

### 2.1 Motion already in the codebase

| Component | Motion present | File:line | Notes |
| -------------------------------------- | -------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| Card | hover scale (1.02) + shadow | `lib/components/Card/Card.tsx:45` | `duration-300 ease-in`. No `motion-reduce` |
| Toast | slide-in + fade, JS removal after 200 ms | `lib/components/Toast/Toast.tsx:48,57` | Hard-coded timeout couples JS to CSS |
| Nav | header hide-on-scroll | `lib/components/Nav/Nav.tsx:28`, `scrollingNav.ts:12-32` | Unthrottled scroll listener; no `motion-reduce` |
| Nav | item color transitions, arrow rotation | `lib/components/Nav/Nav.Styles.ts:8-13`, `priority-plus.css:17,60` | No `motion-reduce` |
| Component | Motion present | File:line | Notes |
| -------------------------------------- | --------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| Card | hover scale (1.02) + shadow | `lib/components/Card/Card.tsx:45` | `duration-300 ease-in`. No `motion-reduce` |
| Toast | slide-in + fade, JS removal after 200 ms | `lib/components/Toast/Toast.tsx:48,57` | Hard-coded timeout couples JS to CSS |
| Nav | header hide-on-scroll | `lib/components/Nav/Nav.tsx:28`, `scrollingNav.ts:12-32` | Unthrottled scroll listener; no `motion-reduce` |
| Nav | item color transitions, arrow rotation | `lib/components/Nav/Nav.Styles.ts:8-13`, `priority-plus.css:17,60` | No `motion-reduce` |
| Description | accordion icon rotation (`rotate-0` ↔ `rotate-90`) | `lib/components/Description/DescriptionAccordion.tsx:27`, `script.ts` | Content shows/hides via `hidden` attribute — no height animation |
| FilterPanel | dropdown arrow rotation + color | `lib/components/FilterPanel/FilterPanelTop.tsx:34`, `dropdown.ts:66,88,141` | No `motion-reduce` |
| ProgressBar | width fill animation | `lib/components/ProgressBar/ProgressBar.tsx:31-32` | `transition-all duration-1000` — animates `width` (H3 violation) |
| ImageSlider | carousel slide (inline `transform 0.5s`) | `lib/components/ImageSlider/script.ts:78-113` | JS-set transitions; 50 ms timeouts to sequence phases |
| ImageSlider item | 5 s background-image transition | `lib/components/ImageSlider/ImageSliderItem.tsx:31` | `duration-[5000]`. Borderline H6 |
| Loaders (21+) | `animate-pulse` skeletons | `lib/components/Loaders/**` | None opt into `motion-reduce` (Tailwind does NOT auto-disable) |
| PageLoader | `animate-spin` + slowed-spin under reduced-motion | `lib/components/Loaders/PageLoader/PageLoader.tsx:5` | **Only** component currently honouring reduced-motion |
| TopNavLoader | `animate-spin` | `lib/components/Loaders/TopNavLoader/TopNavLoader.tsx:6` | No `motion-reduce` |
| Splash / FullBanner / WideBanner video | `autoPlay muted loop playsInline` | `lib/hooks/useVideoBanner.tsx:39-41` | Loops indefinitely. No pause control. **H6 risk.** |
| Modal | none (snap `block`/`hidden`) | `lib/components/Modal/Modal.tsx:129` | Open/close is instant — felt jarring per typical UX |
| Dialog | none (uses native `<dialog>` `showModal()`) | `lib/components/Dialog/Dialog.tsx:21` | Same — no entrance/exit |
| FilterPanel | dropdown arrow rotation + color | `lib/components/FilterPanel/FilterPanelTop.tsx:34`, `dropdown.ts:66,88,141` | No `motion-reduce` |
| ProgressBar | width fill animation | `lib/components/ProgressBar/ProgressBar.tsx:31-32` | `transition-all duration-1000` — animates `width` (H3 violation) |
| ImageSlider | carousel slide (inline `transform 0.5s`) | `lib/components/ImageSlider/script.ts:78-113` | JS-set transitions; 50 ms timeouts to sequence phases |
| ImageSlider item | 5 s background-image transition | `lib/components/ImageSlider/ImageSliderItem.tsx:31` | `duration-[5000]`. Borderline H6 |
| Loaders (21+) | `animate-pulse` skeletons | `lib/components/Loaders/**` | None opt into `motion-reduce` (Tailwind does NOT auto-disable) |
| PageLoader | `animate-spin` + slowed-spin under reduced-motion | `lib/components/Loaders/PageLoader/PageLoader.tsx:5` | **Only** component currently honouring reduced-motion |
| TopNavLoader | `animate-spin` | `lib/components/Loaders/TopNavLoader/TopNavLoader.tsx:6` | No `motion-reduce` |
| Splash / FullBanner / WideBanner video | `autoPlay muted loop playsInline` | `lib/hooks/useVideoBanner.tsx:39-41` | Loops indefinitely. No pause control. **H6 risk.** |
| Modal | none (snap `block`/`hidden`) | `lib/components/Modal/Modal.tsx:129` | Open/close is instant — felt jarring per typical UX |
| Dialog | none (uses native `<dialog>` `showModal()`) | `lib/components/Dialog/Dialog.tsx:21` | Same — no entrance/exit |

### 2.2 What's missing

Expand Down
77 changes: 46 additions & 31 deletions lib/data/FooterStandardData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,48 +118,63 @@ export const FooterAthleticsLinks = {

export const FooterFutureFunderLinks = {
Explore: [
{ name: 'Donate Now', href: 'https://futurefunder.carleton.ca/donate' },
{ name: 'Explore Campaigns', href: 'https://futurefunder.carleton.ca/campaigns' },
{ name: 'Submit a Campaign', href: 'https://futurefunder.carleton.ca/submit' },
{ name: 'Learn About FutureFunder', href: 'https://futurefunder.carleton.ca/about' },
{ name: 'Frequently Asked Questions', href: 'https://futurefunder.carleton.ca/faq' },
{ name: 'Read Our Blog', href: 'https://futurefunder.carleton.ca/blog' },
{ name: 'Contact Us', href: 'https://futurefunder.carleton.ca/contact' },
{ name: 'Donate Now', href: 'https://cutheme.local/futurefunder/donate' },
{ name: 'Explore Campaigns', href: 'https://cutheme.local/futurefunder/campaigns' },
{ name: 'Submit a Campaign', href: 'https://cutheme.local/futurefunder/submit' },
{ name: 'Learn About FutureFunder', href: 'https://cutheme.local/futurefunder/learn/' },
{ name: 'Frequently Asked Questions', href: 'https://cutheme.local/futurefunder/learn/#faq' },
{ name: 'Read Our Blog', href: 'https://cutheme.local/futurefunder/news' },
{ name: 'Contact Us', href: 'https://cutheme.local/futurefunder/contact' },
],
Categories: [

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@m-vojjala This will the links from the cutheme futurefunder.

EX: https://cutheme.local/futurefunder/campaign-type/arts/ will be valid for the new setup.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

{ name: 'Arts', href: 'https://futurefunder.carleton.ca/campaigns?category=arts' },
{ name: 'Athletics', href: 'https://futurefunder.carleton.ca/campaigns?category=athletics' },
{ name: 'Business', href: 'https://futurefunder.carleton.ca/campaigns?category=business' },
{ name: 'Community', href: 'https://futurefunder.carleton.ca/campaigns?category=community' },
{ name: 'Environment', href: 'https://futurefunder.carleton.ca/campaigns?category=environment' },
{ name: 'Global Impact', href: 'https://futurefunder.carleton.ca/campaigns?category=global-impact' },
{ name: 'Health', href: 'https://futurefunder.carleton.ca/campaigns?category=health' },
{ name: 'Science & Innovation', href: 'https://futurefunder.carleton.ca/campaigns?category=science-innovation' },
{ name: 'Student Experience', href: 'https://futurefunder.carleton.ca/campaigns?category=student-experience' },
{ name: 'Arts', href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=arts' },
{ name: 'Athletics', href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=athletics' },
{ name: 'Business', href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=business' },
{ name: 'Community', href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=community' },
{ name: 'Environment', href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=environment' },
{
name: 'Global Impact',
href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=globalization-global-identities',
},
{ name: 'Health', href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=health' },
{
name: 'Science & Innovation',
href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=science-innovation',
},
{
name: 'Student Experience',
href: 'https://cutheme.local/futurefunder/explore/?fwp_categories=student-experience-tmp',
},
{
name: 'Arts & Social Sciences',
href: 'https://futurefunder.carleton.ca/campaigns?category=arts-social-sciences',
href: 'https://cutheme.local/futurefunder/explore/?fwp_departments=art-social-sciences',
},
{
name: 'Engineering & Design',
href: 'https://cutheme.local/futurefunder/explore/?fwp_departments=engineering-design',
},
{ name: 'Engineering & Design', href: 'https://futurefunder.carleton.ca/campaigns?category=engineering-design' },
{ name: 'Library', href: 'https://futurefunder.carleton.ca/campaigns?category=library' },
{ name: 'Library', href: 'https://cutheme.local/futurefunder/explore/?fwp_departments=library' },
{
name: 'Recreation & Athletics',
href: 'https://futurefunder.carleton.ca/campaigns?category=recreation-athletics',
href: 'https://cutheme.local/futurefunder/explore/?fwp_departments=recreation-athletics',
},
{ name: 'Science', href: 'https://cutheme.local/futurefunder/explore/?fwp_departments=science' },
{
name: 'Sprott School of Business',
href: 'https://cutheme.local/futurefunder/explore/?fwp_departments=sprott-school-business',
},
{ name: 'Science', href: 'https://futurefunder.carleton.ca/campaigns?category=science' },
{ name: 'Sprott School of Business', href: 'https://futurefunder.carleton.ca/campaigns?category=sprott' },
{ name: 'University Wide', href: 'https://futurefunder.carleton.ca/campaigns?category=university-wide' },
{ name: 'University Wide', href: 'https://cutheme.local/futurefunder/explore/?fwp_departments=university-wide' },
],
RegisterLogin: [
{ name: 'Login', href: 'https://futurefunder.carleton.ca/login' },
{ name: 'Sign Up', href: 'https://futurefunder.carleton.ca/signup' },
{ name: 'Password Reset', href: 'https://futurefunder.carleton.ca/password-reset' },
{ name: 'Account Support', href: 'https://futurefunder.carleton.ca/support' },
{ name: 'Newsletter Sign Up', href: 'https://futurefunder.carleton.ca/newsletter' },
{ name: 'Login', href: 'https://cutheme.local/futurefunder/log-in' },
{ name: 'Sign Up', href: 'https://cutheme.local/futurefunder/register' },
{ name: 'Password Reset', href: 'https://cutheme.local/futurefunder/password-reset' },
{ name: 'Account Support', href: 'https://cutheme.local/futurefunder/contact' },
{ name: 'Newsletter Sign Up', href: 'https://carleton.ca/advancement/contact-preferences' },
],
HereForGood: [
{ name: 'University Advancement', href: 'https://carleton.ca/advancement/' },
{ name: 'Our Mission', href: 'https://futurefunder.carleton.ca/mission' },
{ name: 'Giving at Carleton', href: 'https://futurefunder.carleton.ca/giving' },
{ name: 'University Advancement', href: 'https://carleton.ca/advancement' },
{ name: 'Our Mission', href: 'https://carleton.ca/advancement/about' },
{ name: 'Giving at Carleton', href: 'https://carleton.ca/advancement/giving/' },
],
}
Loading