Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
5b38419
Created basic theme file structure
spiralnebulam31 Feb 17, 2025
cc80304
Added index.php
spiralnebulam31 Feb 17, 2025
4aca7ef
Added colour variables
spiralnebulam31 Feb 17, 2025
0968d73
Created and styled header, plus added burger menu functionality
spiralnebulam31 Feb 17, 2025
394c499
Added template names to page templates
spiralnebulam31 Feb 17, 2025
c8ca6f4
Created basic hero section for front page
spiralnebulam31 Feb 17, 2025
a0b39a8
Added countdown to hero section
spiralnebulam31 Feb 18, 2025
9653833
Added font variables
spiralnebulam31 Feb 18, 2025
70f7b61
Added logo image code to hero section
spiralnebulam31 Feb 18, 2025
71a0ae5
Membership growth structure added
spiralnebulam31 Feb 18, 2025
d1f642a
Added structure for hightlights section
spiralnebulam31 Feb 18, 2025
d46cf89
Added host and speakers sections structure
spiralnebulam31 Feb 18, 2025
afe96fa
Added ticket section structure
spiralnebulam31 Feb 18, 2025
508ab7b
Added location section structure
spiralnebulam31 Feb 18, 2025
10e30d3
Added FAQ section including js for collapsible questions
spiralnebulam31 Feb 18, 2025
258129b
Added schedule secion, js for schedule tabs and comments to divide se…
spiralnebulam31 Feb 18, 2025
46dc9e3
Added styling for the section titles
spiralnebulam31 Feb 18, 2025
8b99975
Fixed image paths, added images in assets folder, added menu theme su…
spiralnebulam31 Feb 19, 2025
cec6213
Corrected font variables - now working
spiralnebulam31 Feb 19, 2025
33d122a
Adjusted header styling
spiralnebulam31 Feb 19, 2025
a509c71
Embedded google map on front page
spiralnebulam31 Feb 19, 2025
8f31bf6
Added ACF repeater fields for speakers
spiralnebulam31 Feb 19, 2025
b2f61ec
Added schedule day 1 and day 2 repeater fields
spiralnebulam31 Feb 19, 2025
10abc27
Adjusted hero and what to expect styling
spiralnebulam31 Feb 19, 2025
e7399f6
Added correct styling to header, title parallelograms corrected, init…
spiralnebulam31 Feb 20, 2025
a6a39ad
Fixed header styling
spiralnebulam31 Feb 20, 2025
3a57bd3
Adjusted hero styling
spiralnebulam31 Feb 20, 2025
1886032
Fixed styling up to highlights section
spiralnebulam31 Feb 20, 2025
7116815
Adjusted host section css up to host photo
spiralnebulam31 Feb 20, 2025
0cecb4b
Adjusted styling for host section and speakers section for desktop
spiralnebulam31 Feb 21, 2025
59a3b3a
Ticket section styling
spiralnebulam31 Feb 21, 2025
b06a9bd
Location section styled
spiralnebulam31 Feb 21, 2025
9373d95
FAQ section styled
spiralnebulam31 Feb 21, 2025
6b8f3d4
Added basic styling for Schedule section
spiralnebulam31 Feb 21, 2025
563a6b2
Merge branch 'production' into dev/create-theme-fles
spiralnebulam31 Feb 24, 2025
ce827dd
Adjusted speaker bubble styling
spiralnebulam31 Feb 24, 2025
cc61fbc
Adjusted margin details
spiralnebulam31 Feb 24, 2025
0ddd56f
Styled schedule buttons for desktop
spiralnebulam31 Feb 24, 2025
a51cd85
Schedule section styled on desktop
spiralnebulam31 Feb 24, 2025
87ff9d5
Added clip paths to the speaker images on the schedule section
spiralnebulam31 Feb 24, 2025
956d560
Fixed speaker name and photo showing when there are no name and photo
spiralnebulam31 Feb 24, 2025
32d67fa
Adjusted mobile screen styling
spiralnebulam31 Feb 24, 2025
ca73dd5
Added vertical line on Schedule session
spiralnebulam31 Feb 25, 2025
f0c6b22
Fixed height and margin of cards in Schedule section
spiralnebulam31 Feb 25, 2025
e1e709b
Adjusted height of vertical line on Schedule section
spiralnebulam31 Feb 25, 2025
567508d
tweaking logo left hand side alignment
neilpie Feb 28, 2025
6bf008c
styling tweaks to desktop navigation
neilpie Feb 28, 2025
6d9da79
adding fixed width to site-main instead of section elemnts
neilpie Feb 28, 2025
cd3df1e
desktop hero
neilpie Feb 28, 2025
871e7ed
Hero section styling tweaks
spiralnebulam31 Feb 28, 2025
63a8de9
Membership growth icon tweak
spiralnebulam31 Feb 28, 2025
e421daa
Centered earlybird text in tickets section
spiralnebulam31 Feb 28, 2025
e092daa
Host section styling tweaks
spiralnebulam31 Feb 28, 2025
f1c395d
Tweaked centered alignment for all desktop sections, fixed hero margin
spiralnebulam31 Feb 28, 2025
c86a26f
Speakers section desktop tidy up
spiralnebulam31 Feb 28, 2025
1756168
Speakers section styling fixed
spiralnebulam31 Feb 28, 2025
4183d08
Fixing styling details
spiralnebulam31 Mar 3, 2025
5a8cd98
Styling fixed up to location section
spiralnebulam31 Mar 3, 2025
6eb2518
Tweaks for faq section styling
spiralnebulam31 Mar 3, 2025
579409d
Tweaked ticket card button width
spiralnebulam31 Mar 3, 2025
3affcee
Speaker session styling tweak
spiralnebulam31 Mar 3, 2025
524daea
Fixed blending mode on hero section
spiralnebulam31 Mar 3, 2025
ff78f0f
Tweaked mobile styling
spiralnebulam31 Mar 3, 2025
2aae55a
Speaker image clip paths
neilpie Mar 4, 2025
4a8d6c3
Tweaked header mobile styling
spiralnebulam31 Mar 4, 2025
651ff39
Fixed ticket section height
spiralnebulam31 Mar 4, 2025
3cb0bf4
Tweaked what to expect and highlights section styling
spiralnebulam31 Mar 4, 2025
15f7aaa
Tweaked faq section styling
spiralnebulam31 Mar 4, 2025
aa69274
Tweaked location title styling
spiralnebulam31 Mar 4, 2025
e4449f6
Adjusted hero images
spiralnebulam31 Mar 4, 2025
ea1c2f8
Fixed hero image positioning
spiralnebulam31 Mar 4, 2025
3316028
Tweaked hero styling
spiralnebulam31 Mar 4, 2025
15a0ab3
Accessibility improvements
spiralnebulam31 Mar 5, 2025
27a3aee
Centered images in speakers speech bubbles on desktop
spiralnebulam31 Mar 5, 2025
3cfe1e3
Changed h4 to h2 to achieve correct sequentially-descending order
spiralnebulam31 Mar 7, 2025
f0898d7
Added aria labels to p elements with heading role
spiralnebulam31 Mar 7, 2025
e8dbb43
Added aria label to menu toggle button
spiralnebulam31 Mar 7, 2025
fd2a54a
Added aria levels to p elements with header roles
spiralnebulam31 Mar 7, 2025
5156db2
Speaker bubbles tweak
spiralnebulam31 Mar 7, 2025
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 .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
Binary file added assets/faq/faq-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/hero/hero-bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/hero/hero-image-left.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/hero/hero-image-right.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/hero/hero-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/highlights/highlights-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/location/location-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/meet-your-host/host-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/meet-your-host/host.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/membership-growth/growth-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/schedule/schedule-bubble.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/schedule/schedule-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/schedule/schedule-speaker.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/speakers/bg1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/speakers/bg2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/speakers/speaker-bubble.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/speakers/speaker1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/speakers/speaker2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/speakers/speaker3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/tickets/card-bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/tickets/tickets-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/what-to-expect/people-collage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 64 additions & 0 deletions enqueue.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?php
// Exit if accessed directly
if (!defined('ABSPATH')) {
exit;
}

function retain_scripts() {
// Enqueue Google Fonts stylesheet for Source Sans Pro font
wp_enqueue_style(
'retain-google-fonts',
'https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;700&display=swap',
array(),
null
);

// Enqueue Typekit stylesheet for Brandon Grotesque font
wp_enqueue_style(
'retain-typekit',
'https://use.typekit.net/hmd0zsv.css',
array(),
null
);

// Enqueue compiled stylesheet
wp_enqueue_style(
'retain-style',
get_template_directory_uri() . '/style.css',
array(),
RETAIN_VERSION
);

// Enqueue navigation script
wp_enqueue_script(
'retain-navigation',
get_template_directory_uri() . '/inc/js/navigation.js',
array(),
RETAIN_VERSION
);

// Enqueue countdown script
wp_enqueue_script(
'retain-countdown',
get_template_directory_uri() . '/inc/js/countdown.js',
array(),
RETAIN_VERSION
);

// Enqueue collapsible script
wp_enqueue_script(
'retain-collapsible',
get_template_directory_uri() . '/inc/js/collapsible.js',
array(),
RETAIN_VERSION
);

// Enqueue schedule tabs script
wp_enqueue_script(
'retain-schedule-tabs',
get_template_directory_uri() . '/inc/js/schedule-tabs.js',
array(),
RETAIN_VERSION
);
}
add_action('wp_enqueue_scripts', 'retain_scripts');
525 changes: 525 additions & 0 deletions front-page.php

Large diffs are not rendered by default.

27 changes: 27 additions & 0 deletions functions.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

if (!defined('RETAIN_VERSION')) {
define('RETAIN_VERSION', '0.0.1');
}

// Theme setup function
function retain_theme_setup() {
// Let WordPress manage the document title
add_theme_support('title-tag');
// Enable support for Post Thumbnails
add_theme_support('post-thumbnails');
// Enable support for menus
add_theme_support('menus');
// Register menus
register_nav_menus(array(
'primary' => __('Primary Menu', 'retain-theme'),
));
}
add_action('after_setup_theme', 'retain_theme_setup');

// Include enqueue functions
require_once get_template_directory() . '/enqueue.php';

// Include ACF fields
require_once get_template_directory() . '/inc/acf/speaker-fields.php';
require_once get_template_directory() . '/inc/acf/schedule-fields.php';
122 changes: 122 additions & 0 deletions inc/acf/schedule-fields.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
<?php
/**
* Register ACF Fields for the Schedule section (Day 1 and Day 2)
*/
if( function_exists('acf_add_local_field_group') ):

acf_add_local_field_group(array(
'key' => 'group_schedule',
'title' => 'Schedule Section',
'fields' => array(
// Day 1 Schedule
array(
'key' => 'field_schedule_day_1',
'label' => 'Day 1 Schedule',
'name' => 'schedule_day_1',
'type' => 'repeater',
'instructions' => 'Add schedule for Day 1',
'required' => 0,
'min' => 0,
'max' => 0,
'layout' => 'block',
'button_label' => 'Add Session',
'sub_fields' => array(
array(
'key' => 'field_day1_time',
'label' => 'Time',
'name' => 'time',
'type' => 'text',
'required' => 1,
),
array(
'key' => 'field_day1_session',
'label' => 'Session',
'name' => 'session',
'type' => 'text',
'required' => 1,
),
array(
'key' => 'field_day1_speaker_name',
'label' => 'Speaker Name',
'name' => 'speaker_name',
'type' => 'text',
'required' => 0,
),
array(
'key' => 'field_day1_speaker_photo',
'label' => 'Speaker Photo',
'name' => 'speaker_photo',
'type' => 'image',
'required' => 0,
'return_format' => 'array',
'preview_size' => 'medium',
'library' => 'all',
),
),
),
// Day 2 Schedule
array(
'key' => 'field_schedule_day_2',
'label' => 'Day 2 Schedule',
'name' => 'schedule_day_2',
'type' => 'repeater',
'instructions' => 'Add schedule for Day 2',
'required' => 0,
'min' => 0,
'max' => 0,
'layout' => 'block',
'button_label' => 'Add Session',
'sub_fields' => array(
array(
'key' => 'field_day2_time',
'label' => 'Time',
'name' => 'time',
'type' => 'text',
'required' => 1,
),
array(
'key' => 'field_day2_session',
'label' => 'Session',
'name' => 'session',
'type' => 'text',
'required' => 1,
),
array(
'key' => 'field_day2_speaker_name',
'label' => 'Speaker Name',
'name' => 'speaker_name',
'type' => 'text',
'required' => 0,
),
array(
'key' => 'field_day2_speaker_photo',
'label' => 'Speaker Photo',
'name' => 'speaker_photo',
'type' => 'image',
'required' => 0,
'return_format' => 'array',
'preview_size' => 'medium',
'library' => 'all',
),
),
),
),
'location' => array(
array(
array(
'param' => 'page_template',
'operator' => '==',
'value' => 'front-page.php',
),
),
),
'menu_order' => 0,
'position' => 'normal',
'style' => 'default',
'label_placement' => 'top',
'instruction_placement' => 'label',
'hide_on_screen' => '',
));

endif;
?>
74 changes: 74 additions & 0 deletions inc/acf/speaker-fields.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<?php
/**
* Register ACF Fields for the Speakers section (repeater field appearing on front page)
*/
if( function_exists('acf_add_local_field_group') ):

acf_add_local_field_group(array(
'key' => 'group_speakers',
'title' => 'Speakers Section',
'fields' => array(
array(
'key' => 'field_speakers',
'label' => 'Speakers',
'name' => 'speakers',
'type' => 'repeater',
'instructions' => 'Add speakers here',
'required' => 0,
'min' => 0,
'max' => 0,
'layout' => 'block',
'button_label' => 'Add Speaker',
'sub_fields' => array(
array(
'key' => 'field_speaker_image',
'label' => 'Speaker Image',
'name' => 'speaker_image',
'type' => 'image',
'required' => 1,
'return_format' => 'array',
'preview_size' => 'medium',
'library' => 'all',
),
array(
'key' => 'field_speaker_first_name',
'label' => 'Speaker Name',
'name' => 'speaker_name',
'type' => 'text',
'required' => 1,
),
array(
'key' => 'field_speaker_last_name',
'label' => 'Speaker Last Name',
'name' => 'speaker_last_name',
'type' => 'text',
'required' => 1,
),
array(
'key' => 'field_speaker_role',
'label' => 'Speaker Role',
'name' => 'speaker_role',
'type' => 'text',
'required' => 1,
)
)
)
),
'location' => array(
array(
array(
'param' => 'page_template',
'operator' => '==',
'value' => 'front-page.php', // The ACF field group will only appear on the front-page.php template
),
),
),
'menu_order' => 0,
'position' => 'normal',
'style' => 'default',
'label_placement' => 'top',
'instruction_placement' => 'label',
'hide_on_screen' => '',
));

endif;
35 changes: 35 additions & 0 deletions inc/js/collapsible.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
document.addEventListener('DOMContentLoaded', function() {
var coll = document.getElementsByClassName("collapsible");

for (var i = 0; i < coll.length; i++) {
// Wrap the existing text inside a span
var span = document.createElement("span");
span.classList.add("toggle-icon"); // Add class for styling
span.textContent = "+";

// Move the existing text into another span for separation
var textSpan = document.createElement("span");
textSpan.classList.add("collapsible-text");
textSpan.textContent = coll[i].innerHTML;

// Clear the button content and append spans
coll[i].innerHTML = "";
coll[i].appendChild(span);
coll[i].appendChild(textSpan);

// Add click event
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
var icon = this.querySelector(".toggle-icon");

if (content.style.display === "block") {
content.style.display = "none";
icon.textContent = "+"; // Change to +
} else {
content.style.display = "block";
icon.textContent = "-"; // Change to -
}
});
}
});
67 changes: 67 additions & 0 deletions inc/js/countdown.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
class EventCountdown {
constructor(eventDate, elementIds) {
this.eventDate = new Date(eventDate).getTime();
this.elements = {
days: document.getElementById(elementIds.days),
hours: document.getElementById(elementIds.hours),
minutes: document.getElementById(elementIds.minutes),
seconds: document.getElementById(elementIds.seconds),
container: document.getElementById(elementIds.container)
};
this.countdownTimer = null;
}

calculateTimeRemaining() {
const now = new Date().getTime();
const distance = this.eventDate - now;

return {
days: Math.floor(distance / (1000 * 60 * 60 * 24)),
hours: Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
minutes: Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)),
seconds: Math.floor((distance % (1000 * 60)) / 1000),
distance: distance
};
}

padNumber(number) {
return String(number).padStart(2, '0');
}

updateDisplay(timeRemaining) {
this.elements.days.textContent = this.padNumber(timeRemaining.days);
this.elements.hours.textContent = this.padNumber(timeRemaining.hours);
this.elements.minutes.textContent = this.padNumber(timeRemaining.minutes);
this.elements.seconds.textContent = this.padNumber(timeRemaining.seconds);
}

start() {
const update = () => {
const timeRemaining = this.calculateTimeRemaining();

if (timeRemaining.distance < 0) {
clearInterval(this.countdownTimer);
this.elements.container.innerHTML = 'Event has started!';
return;
}

this.updateDisplay(timeRemaining);
};

update(); // Initial call
this.countdownTimer = setInterval(update, 1000);
}
}

// Initialize countdown when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
const countdown = new EventCountdown('September 22, 2025 00:00:00', {
days: 'days',
hours: 'hours',
minutes: 'minutes',
seconds: 'seconds',
container: 'countdown'
});

countdown.start();
});
Loading