aboutsummaryrefslogtreecommitdiff
path: root/packages/create-astro/src/data
diff options
context:
space:
mode:
Diffstat (limited to 'packages/create-astro/src/data')
-rw-r--r--packages/create-astro/src/data/seasonal.ts112
1 files changed, 112 insertions, 0 deletions
diff --git a/packages/create-astro/src/data/seasonal.ts b/packages/create-astro/src/data/seasonal.ts
new file mode 100644
index 000000000..c333affa0
--- /dev/null
+++ b/packages/create-astro/src/data/seasonal.ts
@@ -0,0 +1,112 @@
+interface SeasonalHouston {
+ hats?: string[];
+ ties?: string[];
+ messages: string[];
+}
+
+export default function getSeasonalHouston({ fancy }: { fancy?: boolean }): SeasonalHouston {
+ const season = getSeason();
+ switch (season) {
+ case 'new-year': {
+ const year = new Date().getFullYear();
+ return {
+ hats: rarity(0.5, ['๐ŸŽฉ']),
+ ties: rarity(0.25, ['๐ŸŽŠ', '๐ŸŽ€', '๐ŸŽ‰']),
+ messages: [
+ `New year, new Astro site!`,
+ `Kicking ${year} off with Astro?! What an honor!`,
+ `Happy ${year}! Let's make something cool.`,
+ `${year} is your year! Let's build something awesome.`,
+ `${year} is the year of Astro!`,
+ `${year} is clearly off to a great start!`,
+ `Thanks for starting ${year} with Astro!`,
+ ],
+ };
+ }
+ case 'spooky':
+ return {
+ hats: rarity(0.5, ['๐ŸŽƒ', '๐Ÿ‘ป', 'โ˜ ๏ธ', '๐Ÿ’€', '๐Ÿ•ท๏ธ', '๐Ÿ”ฎ']),
+ ties: rarity(0.25, ['๐Ÿฆด', '๐Ÿฌ', '๐Ÿซ']),
+ messages: [
+ `I'm afraid I can't help you... Just kidding!`,
+ `Boo! Just kidding. Let's make a website!`,
+ `Let's haunt the internet. OooOooOOoo!`,
+ `No tricks here. Seeing you is always treat!`,
+ `Spiders aren't the only ones building the web!`,
+ `Let's conjure up some web magic!`,
+ `Let's harness the power of Astro to build a frightful new site!`,
+ `We're conjuring up a spooktacular website!`,
+ `Prepare for a web of spooky wonders to be woven.`,
+ `Chills and thrills await you on your new project!`,
+ ],
+ };
+ case 'holiday':
+ return {
+ hats: rarity(0.75, ['๐ŸŽ', '๐ŸŽ„', '๐ŸŒฒ']),
+ ties: rarity(0.75, ['๐Ÿงฃ']),
+ messages: [
+ `'Tis the season to code and create.`,
+ `Jingle all the way through your web creation journey!`,
+ `Bells are ringing, and so are your creative ideas!`,
+ `Let's make the internet our own winter wonderland!`,
+ `It's time to decorate a brand new website!`,
+ `Let's unwrap the magic of the web together!`,
+ `Hope you're enjoying the holiday season!`,
+ `I'm dreaming of a brand new website!`,
+ `No better holiday gift than a new site!`,
+ `Your creativity is the gift that keeps on giving!`,
+ ],
+ };
+ case undefined:
+ default:
+ return {
+ hats: fancy ? ['๐ŸŽฉ', '๐ŸŽฉ', '๐ŸŽฉ', '๐ŸŽฉ', '๐ŸŽ“', '๐Ÿ‘‘', '๐Ÿงข', '๐Ÿฆ'] : undefined,
+ ties: fancy ? rarity(0.33, ['๐ŸŽ€', '๐Ÿงฃ']) : undefined,
+ messages: [
+ `Let's claim your corner of the internet.`,
+ `I'll be your assistant today.`,
+ `Let's build something awesome!`,
+ `Let's build something great!`,
+ `Let's build something fast!`,
+ `Let's build the web we want.`,
+ `Let's make the web weird!`,
+ `Let's make the web a better place!`,
+ `Let's create a new project!`,
+ `Let's create something unique!`,
+ `Time to build a new website.`,
+ `Time to build a faster website.`,
+ `Time to build a sweet new website.`,
+ `We're glad to have you on board.`,
+ `Keeping the internet weird since 2021.`,
+ `Initiating launch sequence...`,
+ `Initiating launch sequence... right... now!`,
+ `Awaiting further instructions.`,
+ ],
+ };
+ }
+}
+
+type Season = 'spooky' | 'holiday' | 'new-year';
+function getSeason(): Season | undefined {
+ const date = new Date();
+ const month = date.getMonth() + 1;
+ const day = date.getDate() + 1;
+
+ if (month === 1 && day <= 7) {
+ return 'new-year';
+ }
+ if (month === 10 && day > 7) {
+ return 'spooky';
+ }
+ if (month === 12 && day > 7 && day < 25) {
+ return 'holiday';
+ }
+}
+
+// Generates an array padded with empty strings to make decorations more rare
+function rarity(frequency: number, emoji: string[]) {
+ if (frequency === 1) return emoji;
+ if (frequency === 0) return [''];
+ const empty = Array.from({ length: Math.round(emoji.length * frequency) }, () => '');
+ return [...emoji, ...empty];
+}