@@ -33,10 +33,13 @@ export const themes: Theme[] = [
3333 {
3434 id : "rainbow" ,
3535 name : "Rainbow Pride" ,
36+ // Functional colors (links, buttons, gradients) use softened, readable
37+ // jewel tones so text stays legible. The full 6-color flag lives only in
38+ // decorative gradients (dot below, .gradient-hero/header/text in rainbow.css).
3639 colors : {
37- primary : "#E40303 " , // Red
38- secondary : "#FF8C00 " , // Orange
39- accent : "#FFED00 " , // Yellow
40+ primary : "#D6336C " , // Raspberry (readable on white & dark)
41+ secondary : "#7048E8 " , // Violet
42+ accent : "#0B7285 " , // Deep teal
4043 } ,
4144 dotGradient :
4245 "linear-gradient(to bottom right, #E40303 0%, #E40303 16.67%, #FF8C00 16.67%, #FF8C00 33.33%, #FFED00 33.33%, #FFED00 50%, #008026 50%, #008026 66.67%, #004CFF 66.67%, #004CFF 83.33%, #732982 83.33%, #732982 100%)" ,
@@ -278,34 +281,51 @@ export function getCurrentTheme(): string {
278281 * - id: stable identifier for the season (used to remember banner dismissal)
279282 * - themeId: the color theme auto-applied during this season
280283 * - banner: dismissable banner text shown during this season (empty string = no banner)
284+ * - command: optional faux IPython input rendered before the banner, e.g.
285+ * `celebrate('pride')`. Shown as `In [<month>]: <command>`.
286+ * - accentGradient: optional CSS gradient for the banner's top strip. Falls back
287+ * to the active theme's gradient when omitted.
281288 */
282289export interface SeasonalConfig {
283290 id : string ;
284291 themeId : string ;
285292 banner : string ;
293+ command ?: string ;
294+ accentGradient ?: string ;
286295}
287296
297+ // The authentic 6-color Pride flag as hard-edged horizontal bands.
298+ const PRIDE_FLAG_GRADIENT =
299+ "linear-gradient(to right, " +
300+ "#E40303 0 16.66%, #FF8C00 16.66% 33.33%, #FFED00 33.33% 50%, " +
301+ "#008026 50% 66.66%, #004CFF 66.66% 83.33%, #732982 83.33% 100%)" ;
302+
303+ const WINTER_SEASON : SeasonalConfig = {
304+ id : "winter" ,
305+ themeId : "winter" ,
306+ banner : "❄️ Happy holidays from the IPython team!" ,
307+ command : "celebrate('holidays')" ,
308+ accentGradient :
309+ "linear-gradient(to right, #0ea5e9, #38bdf8, #e0f2fe, #38bdf8, #0ea5e9)" ,
310+ } ;
311+
312+ const PRIDE_SEASON : SeasonalConfig = {
313+ id : "pride" ,
314+ themeId : "rainbow" ,
315+ banner :
316+ "🏳️🌈 Happy Pride Month! IPython celebrates and supports our diverse community." ,
317+ command : "celebrate('pride')" ,
318+ accentGradient : PRIDE_FLAG_GRADIENT ,
319+ } ;
320+
288321/**
289322 * Seasonal configuration keyed by month (0 = January, 11 = December).
290- * Edit the `banner` text here to change what the seasonal banner says.
323+ * Edit the `banner` text (and `command`) above to change what the banner says.
291324 */
292325export const seasonalConfigs : Record < number , SeasonalConfig > = {
293- 0 : {
294- id : "winter" ,
295- themeId : "winter" ,
296- banner : "❄️ Happy holidays from the IPython team!" ,
297- } ,
298- 5 : {
299- id : "pride" ,
300- themeId : "rainbow" ,
301- banner :
302- "🏳️🌈 Happy Pride Month! IPython celebrates and supports our diverse community." ,
303- } ,
304- 11 : {
305- id : "winter" ,
306- themeId : "winter" ,
307- banner : "❄️ Happy holidays from the IPython team!" ,
308- } ,
326+ 0 : WINTER_SEASON ,
327+ 5 : PRIDE_SEASON ,
328+ 11 : WINTER_SEASON ,
309329} ;
310330
311331/**
0 commit comments