diff --git a/app/components/Noodle/Emoji/Logo.vue b/app/components/Noodle/Emoji/Logo.vue new file mode 100644 index 0000000000..2e7e7a6b62 --- /dev/null +++ b/app/components/Noodle/Emoji/Logo.vue @@ -0,0 +1,13 @@ + diff --git a/app/components/Noodle/index.ts b/app/components/Noodle/index.ts index 7bfd792578..e85c69d0e9 100644 --- a/app/components/Noodle/index.ts +++ b/app/components/Noodle/index.ts @@ -1,5 +1,6 @@ import type { Component } from 'vue' import NoodleArtemisLogo from './Artemis/Logo.vue' +import NoodleEmojiLogo from './Emoji/Logo.vue' import NoodleKawaiiLogo from './Kawaii/Logo.vue' import NoodleNodejsLogo from './Nodejs/Logo.vue' import NoodlePressLogo from './Press/Logo.vue' @@ -64,6 +65,13 @@ export const ACTIVE_NOODLES: Noodle[] = [ dateTo: '2026-07-01', timezone: 'auto', }, + { + key: 'emoji', + logo: NoodleEmojiLogo, + date: '2026-07-17', + dateTo: '2026-07-17', + timezone: 'auto', + }, ] // Logo registry for the /noodles archive, keyed by the entry's `key` in @@ -74,6 +82,7 @@ const NOODLE_LOGOS: Record = { 'kawaii': NoodleKawaiiLogo, 'transgender-visibility-day': NoodleTransgenderVisibilityLogo, 'artemis': NoodleArtemisLogo, + 'emoji': NoodleEmojiLogo, 'nodejs': NoodleNodejsLogo, 'pride-1': NoodlePride1Logo, 'tetris': NoodleTetrisLogo, diff --git a/app/noodles.ts b/app/noodles.ts index 5a376d9bb9..6bf2ecc0d8 100644 --- a/app/noodles.ts +++ b/app/noodles.ts @@ -6,6 +6,7 @@ import type { Noodle } from '#shared/schemas/noodle' const ALEX = { name: 'Alex Savelyev', blueskyHandle: 'alexdln.com' } const ALFON = { name: 'Alfon', blueskyHandle: 'alfon.dev' } const GRAPHIEROS = { name: 'Graphieros', blueskyHandle: 'graphieros.npmx.social' } +const FELIX = { name: 'Felix Schneider', blueskyHandle: 'felixs.dev' } const entries: Noodle[] = [ { @@ -133,6 +134,23 @@ const entries: Noodle[] = [ }, ], }, + { + key: 'emoji', + title: 'World Emoji Day', + slug: 'emoji', + date: '2026-07-17', + dateTo: '2026-07-17', + timezone: 'auto', + tagline: false, + occasion: '📅🌍🚀💬🥳✨', + prUrl: 'https://github.com/npmx-dev/npmx.dev/pull/3029', + authors: [FELIX], + posterImage: '/extra/emoji.png', + references: [ + { label: 'World Emoji Day Website', url: 'https://worldemojiday.com/' }, + { label: 'Wikipedia', url: 'https://en.wikipedia.org/wiki/World_Emoji_Day' }, + ], + }, ] export const noodles: Noodle[] = [...entries].sort( diff --git a/public/extra/emoji.png b/public/extra/emoji.png new file mode 100644 index 0000000000..7aae55b7d8 Binary files /dev/null and b/public/extra/emoji.png differ diff --git a/test/nuxt/a11y.spec.ts b/test/nuxt/a11y.spec.ts index a44ef8acf2..aa515a8d43 100644 --- a/test/nuxt/a11y.spec.ts +++ b/test/nuxt/a11y.spec.ts @@ -159,6 +159,7 @@ import { ButtonBase, LandingIntroHeader, NoodleArtemisLogo, + NoodleEmojiLogo, NoodleKawaiiLogo, NoodleTransgenderVisibilityLogo, NoodleListCard, @@ -412,6 +413,12 @@ describe('component accessibility audits', () => { expect(results.violations).toEqual([]) }) + it('should have no accessibility violations', async () => { + const component = await mountSuspended(NoodleEmojiLogo) + const results = await runAxe(component) + expect(results.violations).toEqual([]) + }) + it('should have no accessibility violations', async () => { const component = await mountSuspended(NoodlePride1Logo) const results = await runAxe(component)