From 7ae049d08b131f9234f44b9ce9c402460ca4dc14 Mon Sep 17 00:00:00 2001 From: shevi32 Date: Wed, 27 May 2026 11:02:03 +0300 Subject: [PATCH 01/14] first --- src/students/index.ts | 13 +++++- src/students/shevi shapira/Card.tsx | 11 +++++ src/students/shevi shapira/JokePage.tsx | 14 +++++++ src/students/shevi shapira/styles.module.css | 42 ++++++++++++++++++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 src/students/shevi shapira/Card.tsx create mode 100644 src/students/shevi shapira/JokePage.tsx create mode 100644 src/students/shevi shapira/styles.module.css diff --git a/src/students/index.ts b/src/students/index.ts index 5be78e7..539ae5f 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -6,6 +6,10 @@ import DanaDuviJokePage from "./dana-duvi/JokePage"; import ChaniChanzinCard from "./chani-chanzin/Card"; import ChaniChanzinJokePage from "./chani-chanzin/JokePage"; +// מייבא את הקומפוננטות שלך +import SheviShapiraCard from "./shevi shapira/Card"; +import SheviShapiraJokePage from "./shevi shapira/JokePage"; + // ⚠️ סדר הרשימה חייב להיות לפי סדר האלף-בית העברי לפי שם המשפחה. // כל תלמידה מוסיפה את עצמה במקום הנכון ידנית. // אסור להשתמש בפונקציית-sort! @@ -24,6 +28,13 @@ const students: Student[] = [ CardComponent: ChaniChanzinCard, JokePageComponent: ChaniChanzinJokePage, }, + { + id: "shevi-shapira", + name: "שבי שפירא", + jokeTitle: "למה מתכנתים מעדיפים Dark Mode?", // תוכלי לשנות את הכותרת הזו בהתאם לבדיחה שלך + CardComponent: SheviShapiraCard, + JokePageComponent: SheviShapiraJokePage, + }, ]; -export default students; +export default students; \ No newline at end of file diff --git a/src/students/shevi shapira/Card.tsx b/src/students/shevi shapira/Card.tsx new file mode 100644 index 0000000..c4e5464 --- /dev/null +++ b/src/students/shevi shapira/Card.tsx @@ -0,0 +1,11 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function SheviShapiraCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

{student.name}

+
+ ); +} \ No newline at end of file diff --git a/src/students/shevi shapira/JokePage.tsx b/src/students/shevi shapira/JokePage.tsx new file mode 100644 index 0000000..add6451 --- /dev/null +++ b/src/students/shevi shapira/JokePage.tsx @@ -0,0 +1,14 @@ +import styles from "./styles.module.css"; +import { PageProps } from "../../types"; + +export default function SheviShapiraJokePage({ onBack }: PageProps) { + return ( +
+ {/* 🔴 החליפי את הטקסטים האלו בבדיחה האמיתית שלך */} +

למה מתכנתים מעדיפים מצב חשוך (Dark Mode)?

+

כי האור מושך באגים! 🐛

+ + +
+ ); +} \ No newline at end of file diff --git a/src/students/shevi shapira/styles.module.css b/src/students/shevi shapira/styles.module.css new file mode 100644 index 0000000..7f1c1d4 --- /dev/null +++ b/src/students/shevi shapira/styles.module.css @@ -0,0 +1,42 @@ +.card { + padding: 20px; + border: 1px solid #ccc; + border-radius: 8px; + cursor: pointer; + transition: transform 0.2s; +} + +.card:hover { + transform: scale(1.02); +} + +.title { + font-size: 1.5rem; + margin-bottom: 10px; +} + +.name { + color: #666; +} + +.jokePage { + padding: 40px; + text-align: center; +} + +.setup { + font-size: 2rem; + font-weight: bold; + margin-bottom: 20px; +} + +.punchline { + font-size: 1.8rem; + color: #0070f3; + margin-bottom: 40px; +} + +.backButton { + padding: 10px 20px; + cursor: pointer; +} \ No newline at end of file From 7245f056426825960daca6ee38479cfc69f9805a Mon Sep 17 00:00:00 2001 From: miriamBitan Date: Wed, 27 May 2026 11:25:18 +0300 Subject: [PATCH 02/14] add --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 424b715..fc87284 100644 --- a/index.html +++ b/index.html @@ -17,3 +17,4 @@ + From 37b6cc5a48232f8aad304371eda7e5e9965e0cb2 Mon Sep 17 00:00:00 2001 From: shevi32 Date: Wed, 27 May 2026 11:27:20 +0300 Subject: [PATCH 03/14] add: Shevi Shapira joke --- src/students/shevi shapira/JokePage.tsx | 26 ++++++-- src/students/shevi shapira/styles.module.css | 66 ++++++++++++++++++++ 2 files changed, 88 insertions(+), 4 deletions(-) diff --git a/src/students/shevi shapira/JokePage.tsx b/src/students/shevi shapira/JokePage.tsx index add6451..d8730f2 100644 --- a/src/students/shevi shapira/JokePage.tsx +++ b/src/students/shevi shapira/JokePage.tsx @@ -4,11 +4,29 @@ import { PageProps } from "../../types"; export default function SheviShapiraJokePage({ onBack }: PageProps) { return (
- {/* 🔴 החליפי את הטקסטים האלו בבדיחה האמיתית שלך */} -

למה מתכנתים מעדיפים מצב חשוך (Dark Mode)?

-

כי האור מושך באגים! 🐛

- +
+

סיוט של כל מפתח 💻😨

+ +
+ שלב א': +

+ הקוד שלך לא עובד, ואתה יושב שעות ואין לך מושג למה... +

+
+ +
+ שלב ב' (האימה האמיתית): +

+ שינית משהו קטן, עכשיו הקוד פתאום עובד מושלם, **ועדיין אין לך מושג למה!** 😱😭 +

+
+
+ + +
); } \ No newline at end of file diff --git a/src/students/shevi shapira/styles.module.css b/src/students/shevi shapira/styles.module.css index 7f1c1d4..dbe9b31 100644 --- a/src/students/shevi shapira/styles.module.css +++ b/src/students/shevi shapira/styles.module.css @@ -39,4 +39,70 @@ .backButton { padding: 10px 20px; cursor: pointer; +} +.jokePage { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 60vh; + padding: 40px; + font-family: system-ui, -apple-system, sans-serif; +} + +.jokeContainer { + max-width: 600px; + background-color: #f8f9fa; + border-radius: 12px; + padding: 30px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + margin-bottom: 30px; + text-align: right; /* בשביל עברית מסודרת */ + direction: rtl; +} + +.jokeHeader { + font-size: 1.8rem; + color: #333; + margin-bottom: 25px; + border-bottom: 2px solid #eceff1; + padding-bottom: 10px; +} + +.jokeStep { + margin-bottom: 20px; +} + +.stepNumber { + font-weight: bold; + color: #5c6bc0; + font-size: 1.1rem; +} + +.setup { + font-size: 1.3rem; + color: #455a64; + margin-top: 5px; +} + +.punchline { + font-size: 1.4rem; + color: #d32f2f; /* צבע אדום להדגשת הדרמה */ + font-weight: bold; + margin-top: 5px; +} + +.backButton { + padding: 12px 24px; + font-size: 1rem; + background-color: #0070f3; + color: white; + border: none; + border-radius: 6px; + cursor: pointer; + transition: background-color 0.2s; +} + +.backButton:hover { + background-color: #0051b3; } \ No newline at end of file From 12c8ce568ca2612f6132405f402dc5984ff162cb Mon Sep 17 00:00:00 2001 From: shevi32 Date: Wed, 27 May 2026 11:38:28 +0300 Subject: [PATCH 04/14] style: update joke page to terminal cyber theme --- src/students/shevi shapira/JokePage.tsx | 49 ++++--- src/students/shevi shapira/styles.module.css | 133 +++++++++++-------- 2 files changed, 107 insertions(+), 75 deletions(-) diff --git a/src/students/shevi shapira/JokePage.tsx b/src/students/shevi shapira/JokePage.tsx index d8730f2..7b9b24c 100644 --- a/src/students/shevi shapira/JokePage.tsx +++ b/src/students/shevi shapira/JokePage.tsx @@ -4,29 +4,42 @@ import { PageProps } from "../../types"; export default function SheviShapiraJokePage({ onBack }: PageProps) { return (
- -
-

סיוט של כל מפתח 💻😨

- -
- שלב א': -

- הקוד שלך לא עובד, ואתה יושב שעות ואין לך מושג למה... -

+
+
+ + + + bash - joke_generator.sh
+ +
+
+ $ npm run tell-joke +
+ +
+

+ אשתו של מתכנת שולחת אותו לסופר: "תקנה כיכר לחם. ואם יש ביצים — תקנה עשרה". +

+
-
- שלב ב' (האימה האמיתית): -

- שינית משהו קטן, עכשיו הקוד פתאום עובד מושלם, **ועדיין אין לך מושג למה!** 😱😭 -

+
+ $ resolve --logic +
+ +
+

+ המתכנת חוזר הביתה עם 10 כיכרות לחם.
+ אשתו המומה: "למה קנית עשרה כיכרות לחם?!"
+ המתכנת: "כי היו ביצים". 🥚🫥 +

+
- - -
); } \ No newline at end of file diff --git a/src/students/shevi shapira/styles.module.css b/src/students/shevi shapira/styles.module.css index dbe9b31..4bec8aa 100644 --- a/src/students/shevi shapira/styles.module.css +++ b/src/students/shevi shapira/styles.module.css @@ -1,3 +1,4 @@ +/* כרטיס תצוגה בדף הבית */ .card { padding: 20px; border: 1px solid #ccc; @@ -19,90 +20,108 @@ color: #666; } +/* עמוד הבדיחה - סגנון טרמינל אפל */ .jokePage { - padding: 40px; - text-align: center; + background-color: #0f172a; + min-height: 80vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-family: 'Fira Code', 'Courier New', monospace; + padding: 20px; } -.setup { - font-size: 2rem; - font-weight: bold; - margin-bottom: 20px; +.terminalContainer { + width: 100%; + max-width: 650px; + background-color: #050b14; + border: 1px solid #1e293b; + border-radius: 8px; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); + margin-bottom: 30px; + overflow: hidden; } -.punchline { - font-size: 1.8rem; - color: #0070f3; - margin-bottom: 40px; +.terminalHeader { + background-color: #1e293b; + padding: 10px; + display: flex; + align-items: center; + gap: 8px; } -.backButton { - padding: 10px 20px; - cursor: pointer; +.dot { + width: 12px; + height: 12px; + border-radius: 50%; + display: inline-block; } -.jokePage { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - min-height: 60vh; - padding: 40px; - font-family: system-ui, -apple-system, sans-serif; + +.dot:nth-child(1) { background-color: #ef4444; } +.dot:nth-child(2) { background-color: #eab308; } +.dot:nth-child(3) { background-color: #22c55e; } + +.title { + color: #94a3b8; + font-size: 0.85rem; + margin-left: auto; + margin-right: auto; } -.jokeContainer { - max-width: 600px; - background-color: #f8f9fa; - border-radius: 12px; - padding: 30px; - box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); - margin-bottom: 30px; - text-align: right; /* בשביל עברית מסודרת */ +.terminalBody { + padding: 20px; + text-align: right; direction: rtl; } -.jokeHeader { - font-size: 1.8rem; - color: #333; - margin-bottom: 25px; - border-bottom: 2px solid #eceff1; - padding-bottom: 10px; +.line { + color: #38bdf8; + font-size: 1rem; + margin-bottom: 10px; + text-align: left; + direction: ltr; } -.jokeStep { - margin-bottom: 20px; +.prompt { + color: #f43f5e; + font-weight: bold; } -.stepNumber { - font-weight: bold; - color: #5c6bc0; - font-size: 1.1rem; +.output { + margin-bottom: 25px; + padding-right: 15px; + border-right: 2px solid #334155; } .setup { - font-size: 1.3rem; - color: #455a64; - margin-top: 5px; + color: #e2e8f0; + font-size: 1.2rem; + line-height: 1.6; } .punchline { - font-size: 1.4rem; - color: #d32f2f; /* צבע אדום להדגשת הדרמה */ - font-weight: bold; - margin-top: 5px; + color: #4ade80; + font-size: 1.2rem; + line-height: 1.6; + font-weight: 600; } -.backButton { - padding: 12px 24px; + +.cyberButton { + background-color: transparent; + color: #f43f5e; + border: 1px solid #f43f5e; + padding: 10px 20px; + font-family: inherit; font-size: 1rem; - background-color: #0070f3; - color: white; - border: none; - border-radius: 6px; cursor: pointer; - transition: background-color 0.2s; + border-radius: 4px; + transition: all 0.2s ease; } -.backButton:hover { - background-color: #0051b3; +.cyberButton:hover { + background-color: #f43f5e; + color: #0f172a; + box-shadow: 0 0 15px rgba(244, 63, 94, 0.4); } \ No newline at end of file From 2ed928e22c01bd76be19beb902a98553d39e8dfb Mon Sep 17 00:00:00 2001 From: shevi32 Date: Wed, 27 May 2026 12:11:49 +0300 Subject: [PATCH 05/14] style: redesign card and joke page to supermarket theme --- src/students/index.ts | 12 +-- src/students/shevi shapira/JokePage.tsx | 15 +-- src/students/shevi shapira/styles.module.css | 102 +++++++++---------- 3 files changed, 59 insertions(+), 70 deletions(-) diff --git a/src/students/index.ts b/src/students/index.ts index 539ae5f..4ce9cbf 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -29,12 +29,12 @@ const students: Student[] = [ JokePageComponent: ChaniChanzinJokePage, }, { - id: "shevi-shapira", - name: "שבי שפירא", - jokeTitle: "למה מתכנתים מעדיפים Dark Mode?", // תוכלי לשנות את הכותרת הזו בהתאם לבדיחה שלך - CardComponent: SheviShapiraCard, - JokePageComponent: SheviShapiraJokePage, - }, + id: "shevi-shapira", + name: "שבי שפירא", + jokeTitle: "אלגוריתם בסופרמרקט 🛒", // הכותרת החדשה והמתאימה + CardComponent: SheviShapiraCard, + JokePageComponent: SheviShapiraJokePage, +}, ]; export default students; \ No newline at end of file diff --git a/src/students/shevi shapira/JokePage.tsx b/src/students/shevi shapira/JokePage.tsx index 7b9b24c..11e4cc5 100644 --- a/src/students/shevi shapira/JokePage.tsx +++ b/src/students/shevi shapira/JokePage.tsx @@ -9,24 +9,17 @@ export default function SheviShapiraJokePage({ onBack }: PageProps) { - bash - joke_generator.sh + מערכת הבדיקות - הרצת לוגיקה
-
- $ npm run tell-joke -
-

- אשתו של מתכנת שולחת אותו לסופר: "תקנה כיכר לחם. ואם יש ביצים — תקנה עשרה". + אשתו של מתכנת שולחת אותו לסופר:
+ "תקנה כיכר לחם אחת. ואם יש ביצים — תקנה עשרה".

-
- $ resolve --logic -
-

המתכנת חוזר הביתה עם 10 כיכרות לחם.
@@ -38,7 +31,7 @@ export default function SheviShapiraJokePage({ onBack }: PageProps) {

); diff --git a/src/students/shevi shapira/styles.module.css b/src/students/shevi shapira/styles.module.css index 4bec8aa..19b8dc5 100644 --- a/src/students/shevi shapira/styles.module.css +++ b/src/students/shevi shapira/styles.module.css @@ -1,51 +1,60 @@ -/* כרטיס תצוגה בדף הבית */ +/* כרטיס תצוגה משודרג בדף הבית - מזמין ללחיצה */ .card { - padding: 20px; - border: 1px solid #ccc; - border-radius: 8px; + padding: 25px; + background: linear-gradient(135deg, #1e1b4b 0%, #311042 100%); + border: 2px solid #a855f7; + border-radius: 16px; cursor: pointer; - transition: transform 0.2s; + text-align: center; + box-shadow: 0 4px 15px rgba(168, 85, 247, 0.2); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .card:hover { - transform: scale(1.02); + transform: translateY(-5px) scale(1.03); + box-shadow: 0 10px 25px rgba(168, 85, 247, 0.4); + border-color: #c084fc; } .title { - font-size: 1.5rem; - margin-bottom: 10px; + font-size: 1.4rem; + font-weight: bold; + color: #ffffff; + margin-bottom: 12px; } .name { - color: #666; + color: #cbd5e1; + font-size: 1rem; + font-weight: 500; } -/* עמוד הבדיחה - סגנון טרמינל אפל */ +/* עמוד הבדיחה - טרמינל נקי */ .jokePage { - background-color: #0f172a; + background-color: #0b0f19; min-height: 80vh; display: flex; flex-direction: column; align-items: center; justify-content: center; - font-family: 'Fira Code', 'Courier New', monospace; + font-family: system-ui, -apple-system, sans-serif; padding: 20px; } .terminalContainer { width: 100%; - max-width: 650px; - background-color: #050b14; - border: 1px solid #1e293b; - border-radius: 8px; - box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); - margin-bottom: 30px; + max-width: 600px; + background-color: #020617; + border: 1px solid #334155; + border-radius: 12px; + box-shadow: 0 20px 40px rgba(0, 0, 0, 0.7); + margin-bottom: 35px; overflow: hidden; } .terminalHeader { background-color: #1e293b; - padding: 10px; + padding: 12px; display: flex; align-items: center; gap: 8px; @@ -64,64 +73,51 @@ .title { color: #94a3b8; - font-size: 0.85rem; + font-size: 0.9rem; margin-left: auto; margin-right: auto; } .terminalBody { - padding: 20px; + padding: 30px; text-align: right; direction: rtl; } -.line { - color: #38bdf8; - font-size: 1rem; - margin-bottom: 10px; - text-align: left; - direction: ltr; -} - -.prompt { - color: #f43f5e; - font-weight: bold; -} - .output { - margin-bottom: 25px; - padding-right: 15px; - border-right: 2px solid #334155; + margin-bottom: 30px; + padding-right: 20px; + border-right: 3px solid #475569; } .setup { - color: #e2e8f0; - font-size: 1.2rem; + color: #f8fafc; + font-size: 1.3rem; line-height: 1.6; } .punchline { - color: #4ade80; - font-size: 1.2rem; + color: #22c55e; + font-size: 1.3rem; line-height: 1.6; - font-weight: 600; + font-weight: bold; } - +/* כפתור חזרה מעוצב ומזמין */ .cyberButton { - background-color: transparent; - color: #f43f5e; - border: 1px solid #f43f5e; - padding: 10px 20px; - font-family: inherit; - font-size: 1rem; + background: linear-gradient(90deg, #ec4899 0%, #8b5cf6 100%); + color: #ffffff; + border: none; + padding: 14px 32px; + font-size: 1.1rem; + font-weight: bold; cursor: pointer; - border-radius: 4px; + border-radius: 50px; + box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3); transition: all 0.2s ease; } .cyberButton:hover { - background-color: #f43f5e; - color: #0f172a; - box-shadow: 0 0 15px rgba(244, 63, 94, 0.4); + transform: scale(1.05); + box-shadow: 0 6px 20px rgba(236, 72, 153, 0.5); } \ No newline at end of file From 656c4ae0c587e0d277980c3dbbb9b5a8a28d95b0 Mon Sep 17 00:00:00 2001 From: shevi32 Date: Wed, 27 May 2026 13:00:40 +0300 Subject: [PATCH 06/14] style: ultra vibrant rainbow card design --- src/students/shevi shapira/Card.tsx | 11 ++-- src/students/shevi shapira/styles.module.css | 63 +++++++++++++++----- 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/src/students/shevi shapira/Card.tsx b/src/students/shevi shapira/Card.tsx index c4e5464..d3b0995 100644 --- a/src/students/shevi shapira/Card.tsx +++ b/src/students/shevi shapira/Card.tsx @@ -1,11 +1,14 @@ import styles from "./styles.module.css"; import { CardProps } from "../../types"; -export default function SheviShapiraCard({ student, onClick }: CardProps) { +export default function SheviShapiraCard({ onClick }: CardProps) { return ( -
-

{student.jokeTitle}

-

{student.name}

+
+
+ 🛒 + אלגוריתם בסופרמרקט +
+
שבי שפירא
); } \ No newline at end of file diff --git a/src/students/shevi shapira/styles.module.css b/src/students/shevi shapira/styles.module.css index 19b8dc5..e2be96e 100644 --- a/src/students/shevi shapira/styles.module.css +++ b/src/students/shevi shapira/styles.module.css @@ -1,32 +1,65 @@ -/* כרטיס תצוגה משודרג בדף הבית - מזמין ללחיצה */ +/* כרטיס תצוגה משודרג בדף הבית - מראה בוגר, נקי והייטקיסטי */ .card { - padding: 25px; - background: linear-gradient(135deg, #1e1b4b 0%, #311042 100%); - border: 2px solid #a855f7; - border-radius: 16px; + padding: 30px 24px; + background: rgba(255, 255, 255, 0.04); /* רקע שקוף למחצה */ + backdrop-filter: blur(12px); /* אפקט טשטוש זכוכית */ + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(255, 255, 255, 0.08); /* גבול סמי-שקוף עדין */ + border-radius: 20px; /* פינות מעוגלות מקצועיות */ cursor: pointer; text-align: center; - box-shadow: 0 4px 15px rgba(168, 85, 247, 0.2); - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: hidden; } +/* אפקט משיכה יוקרתי בעת מעבר עכבר (Hover) */ .card:hover { - transform: translateY(-5px) scale(1.03); - box-shadow: 0 10px 25px rgba(168, 85, 247, 0.4); - border-color: #c084fc; + transform: translateY(-6px); + background: rgba(255, 255, 255, 0.08); + border-color: rgba(168, 85, 247, 0.4); /* נגיעה עדינה של סגול בגבול */ + box-shadow: 0 12px 30px rgba(168, 85, 247, 0.2); /* הילה סגולה מתוחכמת למטה */ } -.title { - font-size: 1.4rem; - font-weight: bold; +/* כותרת הכרטיס (האייקון והטקסט) */ +.cardTitleWithIcon { + display: flex; + align-items: center; + justify-content: center; + gap: 12px; color: #ffffff; - margin-bottom: 12px; + font-size: 1.4rem; + font-weight: 700; + letter-spacing: -0.02em; + margin-bottom: 8px; +} + +/* האייקון של העגלה - תנועה קלה ב-Hover */ +.cardTitleWithIcon span:first-child { + font-size: 1.5rem; + transition: transform 0.3s ease; } +.card:hover .cardTitleWithIcon span:first-child { + transform: scale(1.1) rotate(-5deg); +} + +/* תת כותרת - שם המפתח */ .name { - color: #cbd5e1; + color: #94a3b8; /* צבע אפור-כחול אלגנטי */ font-size: 1rem; font-weight: 500; + letter-spacing: 0.5px; + transition: color 0.3s ease; +} + +.card:hover .name { + color: #c084fc; /* השם נצבע בסגול בהיר מעודן */ } /* עמוד הבדיחה - טרמינל נקי */ From c0ad8d3ceb26eea52bd08c084db42977db0bfcea Mon Sep 17 00:00:00 2001 From: chaya-Sprung Date: Wed, 27 May 2026 13:03:59 +0300 Subject: [PATCH 07/14] add: chaya-sprungjoke --- src/students/chaya-sprung/Card.tsx | 11 +++ src/students/chaya-sprung/JokePage.tsx | 13 +++ src/students/chaya-sprung/styles.module.css | 92 +++++++++++++++++++++ src/students/index.ts | 9 ++ 4 files changed, 125 insertions(+) create mode 100644 src/students/chaya-sprung/Card.tsx create mode 100644 src/students/chaya-sprung/JokePage.tsx create mode 100644 src/students/chaya-sprung/styles.module.css diff --git a/src/students/chaya-sprung/Card.tsx b/src/students/chaya-sprung/Card.tsx new file mode 100644 index 0000000..1585fae --- /dev/null +++ b/src/students/chaya-sprung/Card.tsx @@ -0,0 +1,11 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function ChayaSprungCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

{student.name}

+
+ ); +} \ No newline at end of file diff --git a/src/students/chaya-sprung/JokePage.tsx b/src/students/chaya-sprung/JokePage.tsx new file mode 100644 index 0000000..1128892 --- /dev/null +++ b/src/students/chaya-sprung/JokePage.tsx @@ -0,0 +1,13 @@ +import styles from "./styles.module.css"; +import { PageProps } from "../../types"; + +export default function ChayaSprungJokePage({ onBack }: PageProps) { + return ( +
+

בדיקת ראיה

+

חולה אומר לרופא: "דוקטור, אני חושב שאני צריך משקפיים." +עונה לו הרופא: "אתה בהחלט צריך... זה בנק, לא מרפאה."

+ +
+ ); +} \ No newline at end of file diff --git a/src/students/chaya-sprung/styles.module.css b/src/students/chaya-sprung/styles.module.css new file mode 100644 index 0000000..7fc78d2 --- /dev/null +++ b/src/students/chaya-sprung/styles.module.css @@ -0,0 +1,92 @@ +/* ========================================================================== + 1. עיצוב הכרטיסייה הראשית (ChayaSprungCard) + ========================================================================== */ +.card { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + padding: 24px; + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease; + background: transparent; /* הרקע הסגול מגיע מאפליקציית האם */ +} + +/* אפקט ריחוף עדין מעל הכרטיסייה */ +.card:hover { + transform: translateY(-4px); +} + +/* עיצוב כותרת הבדיחה "בדיקת ראיה" בסגנון מחשב/פיקסלים */ +.title { + font-family: 'Courier New', Courier, monospace; + font-size: 2rem; + font-weight: 900; + color: #000000; + margin: 0 0 8px 0; + letter-spacing: -0.5px; +} + +/* עיצוב שם התלמידה */ +.name { + font-family: system-ui, -apple-system, sans-serif; + font-size: 1.1rem; + color: #333333; + margin: 0; +} + +/* ========================================================================== + 2. עיצוב עמוד הבדיחה המלא (ChayaSprungJokePage) + ========================================================================== */ +.jokePage { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + min-height: 50vh; + padding: 40px 20px; + font-family: system-ui, -apple-system, sans-serif; +} + +/* כותרת עמוד הבדיחה */ +.jokePage h1 { + font-family: 'Courier New', Courier, monospace; + font-size: 3rem; + color: #000000; + margin-bottom: 24px; +} + +/* תוכן הבדיחה */ +.jokePage p { + font-size: 1.4rem; + line-height: 1.6; + max-width: 600px; + color: #111111; + margin-bottom: 40px; + white-space: pre-line; /* שומר על ירידת השורה בין הדוקטור לחולה */ +} + +/* כפתור החזרה */ +.jokePage button { + background-color: #fca311; /* צבע כתום התואם לכפתורים האחרים בעיצוב */ + color: #ffffff; + border: none; + padding: 12px 28px; + font-size: 1.1rem; + font-weight: bold; + border-radius: 25px; + cursor: pointer; + transition: background-color 0.2s ease, transform 0.1s ease; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} + +.jokePage button:hover { + background-color: #e5920a; + transform: scale(1.03); +} + +.jokePage button:active { + transform: scale(0.98); +} \ No newline at end of file diff --git a/src/students/index.ts b/src/students/index.ts index 5be78e7..2ee0516 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -5,6 +5,8 @@ import DanaDuviJokePage from "./dana-duvi/JokePage"; import ChaniChanzinCard from "./chani-chanzin/Card"; import ChaniChanzinJokePage from "./chani-chanzin/JokePage"; +import ChayaSprungJokePage from "./chaya-sprung/JokePage"; +import ChayaSprungCard from "./chaya-sprung/Card"; // ⚠️ סדר הרשימה חייב להיות לפי סדר האלף-בית העברי לפי שם המשפחה. // כל תלמידה מוסיפה את עצמה במקום הנכון ידנית. @@ -17,6 +19,13 @@ const students: Student[] = [ CardComponent: DanaDuviCard, JokePageComponent: DanaDuviJokePage, }, + { + id: "chaya-sprung", + name: "חיה שפרונג", + jokeTitle: "בדיקת ראיה", + CardComponent: ChayaSprungCard, + JokePageComponent: ChayaSprungJokePage, +}, { id: "chani-chanzin", name: "חני חנזין", From 6b1d015347246ba9974d12bca9f06e4652fd3d16 Mon Sep 17 00:00:00 2001 From: efratmit-byte Date: Wed, 27 May 2026 13:11:15 +0300 Subject: [PATCH 08/14] Added joke to my page --- src/students/efrat-mittelman/Card.tsx | 11 ++ src/students/efrat-mittelman/JokePage.tsx | 15 ++ .../efrat-mittelman/styles.module.css | 145 ++++++++++++++++++ src/students/index.ts | 13 ++ 4 files changed, 184 insertions(+) create mode 100644 src/students/efrat-mittelman/Card.tsx create mode 100644 src/students/efrat-mittelman/JokePage.tsx create mode 100644 src/students/efrat-mittelman/styles.module.css diff --git a/src/students/efrat-mittelman/Card.tsx b/src/students/efrat-mittelman/Card.tsx new file mode 100644 index 0000000..d76ec30 --- /dev/null +++ b/src/students/efrat-mittelman/Card.tsx @@ -0,0 +1,11 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function EfratMittelmanCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

מאת: {student.name}

+
+ ); +} \ No newline at end of file diff --git a/src/students/efrat-mittelman/JokePage.tsx b/src/students/efrat-mittelman/JokePage.tsx new file mode 100644 index 0000000..ff2ba5b --- /dev/null +++ b/src/students/efrat-mittelman/JokePage.tsx @@ -0,0 +1,15 @@ +import styles from "./styles.module.css"; +import { PageProps } from "../../types"; + +export default function EfratMittelmanJokePage({ onBack }: PageProps) { + return ( +
+

למה המחשב הלך לרופא?

+

כי היה לו וירוס 😄

+ + +
+ ); +} \ No newline at end of file diff --git a/src/students/efrat-mittelman/styles.module.css b/src/students/efrat-mittelman/styles.module.css new file mode 100644 index 0000000..5070e18 --- /dev/null +++ b/src/students/efrat-mittelman/styles.module.css @@ -0,0 +1,145 @@ +.jokePage { + background: rgba(255, 255, 255, 0.75); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border-radius: 32px; + padding: 60px 40px; + max-width: 520px; + width: 92%; + margin: 60px auto; + text-align: center; + border: 1px solid rgba(255, 255, 255, 0.6); + box-shadow: + 0 30px 60px rgba(0, 0, 0, 0.04), + 0 0 0 1px rgba(0, 0, 0, 0.01), + inset 0 1px 0 rgba(255, 255, 255, 0.8); + font-family: 'Inter', system-ui, -apple-system, sans-serif; + transition: all 0.6s cubic-bezier(0.16, 1, 0.3, 1); +} + +.jokePage:hover { + transform: translateY(-10px) scale(1.01); + box-shadow: + 0 50px 70px rgba(0, 0, 0, 0.09), + 0 0 30px rgba(79, 70, 229, 0.15); + background: rgba(255, 255, 255, 0.85); +} + +.jokeTitle { + color: #111827; + font-size: 2.2rem; + font-weight: 900; + letter-spacing: -0.03em; + margin-bottom: 35px; + background: linear-gradient(135deg, #0f172a 0%, #475569 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.jokeAnswer { + color: #4f46e5; + font-size: 1.6rem; + font-weight: 700; + padding: 18px 32px; + background: linear-gradient(135deg, rgba(79, 70, 229, 0.08) 0%, rgba(6, 182, 212, 0.03) 100%); + border-radius: 20px; + display: inline-block; + margin-bottom: 45px; + border: 1px solid rgba(79, 70, 229, 0.1); + box-shadow: inset 0 1px 2px rgba(79, 70, 229, 0.05); +} + +.backButton { + background: #0f172a; + color: #ffffff; + border: none; + padding: 16px 40px; + font-size: 1rem; + font-weight: 600; + border-radius: 100px; + cursor: pointer; + transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); + display: inline-flex; + align-items: center; + justify-content: center; + box-shadow: 0 10px 25px rgba(15, 23, 42, 0.2); +} + +.backButton:hover { + background: linear-gradient(135deg, #4f46e5 0%, #2563eb 100%); + transform: translateY(-2px) scale(1.04); + box-shadow: 0 15px 30px rgba(79, 70, 229, 0.3); +} + +.backButton:active { + transform: translateY(1px) scale(0.97); +} + +.card { + background: #ffffff; + border-radius: 24px; + padding: 35px 28px; + width: 290px; + min-height: 220px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + + border: 2px solid transparent; + background-image: linear-gradient(#fff, #fff), linear-gradient(135deg, #e5e7eb, #cbd5e1); + background-origin: border-box; + background-clip: padding-box, border-box; + + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.04); + cursor: pointer; + transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1); + position: relative; + overflow: hidden; +} + +.card:hover { + transform: translateY(-12px) scale(1.03); + background-image: linear-gradient(#fff, #fff), linear-gradient(135deg, #4f46e5, #06b6d4); + box-shadow: + 0 30px 50px rgba(79, 70, 229, 0.18), + 0 0 20px rgba(6, 182, 212, 0.1); +} + +.title { + color: #0f172a; + font-size: 1.45rem; + font-weight: 800; + margin-bottom: 10px; + letter-spacing: -0.01em; + transition: color 0.3s ease; +} + +.card:hover .title { + background: linear-gradient(135deg, #4f46e5 0%, #06b6d4 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.author { + color: #64748b; + font-size: 0.95rem; + font-weight: 600; +} + +.card::after { + content: '⚡'; + position: absolute; + top: 18px; + right: 18px; + font-size: 1.2rem; + opacity: 0.15; + transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); +} + +.card:hover::after { + transform: rotate(25deg) scale(1.3); + opacity: 1; + filter: drop-shadow(0 0 4px rgba(79, 70, 229, 0.6)); +} \ No newline at end of file diff --git a/src/students/index.ts b/src/students/index.ts index 5be78e7..2d5c853 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -6,10 +6,16 @@ import DanaDuviJokePage from "./dana-duvi/JokePage"; import ChaniChanzinCard from "./chani-chanzin/Card"; import ChaniChanzinJokePage from "./chani-chanzin/JokePage"; +import efratMittelmanCard from "./efrat-mittelman/Card"; +import efratMittelmanJokePage from "./efrat-mittelman/JokePage"; + + + // ⚠️ סדר הרשימה חייב להיות לפי סדר האלף-בית העברי לפי שם המשפחה. // כל תלמידה מוסיפה את עצמה במקום הנכון ידנית. // אסור להשתמש בפונקציית-sort! const students: Student[] = [ + { id: "dana-duvi", name: "דנה דובי", @@ -24,6 +30,13 @@ const students: Student[] = [ CardComponent: ChaniChanzinCard, JokePageComponent: ChaniChanzinJokePage, }, + { + id: "efrat-mittelman", + name: "אפרת מיטלמן", + jokeTitle: "וירוס במחשב ", + CardComponent: efratMittelmanCard, + JokePageComponent: efratMittelmanJokePage, + } ]; export default students; From c95eb93875b429c6b7710e024db3f8dd34381951 Mon Sep 17 00:00:00 2001 From: LNechami Date: Wed, 27 May 2026 13:11:39 +0300 Subject: [PATCH 09/14] add: nechami_brim jock --- src/students/index.ts | 11 + src/students/nechami_brim/Card.tsx | 11 + src/students/nechami_brim/JokePage.tsx | 62 ++++++ src/students/nechami_brim/styles.module.css | 210 ++++++++++++++++++++ 4 files changed, 294 insertions(+) create mode 100644 src/students/nechami_brim/Card.tsx create mode 100644 src/students/nechami_brim/JokePage.tsx create mode 100644 src/students/nechami_brim/styles.module.css diff --git a/src/students/index.ts b/src/students/index.ts index 5be78e7..688058c 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -6,6 +6,9 @@ import DanaDuviJokePage from "./dana-duvi/JokePage"; import ChaniChanzinCard from "./chani-chanzin/Card"; import ChaniChanzinJokePage from "./chani-chanzin/JokePage"; +import NechamiJokePage from "./nechami_brim/JokePage"; +import NechamiCard from "./nechami_brim/Card"; + // ⚠️ סדר הרשימה חייב להיות לפי סדר האלף-בית העברי לפי שם המשפחה. // כל תלמידה מוסיפה את עצמה במקום הנכון ידנית. // אסור להשתמש בפונקציית-sort! @@ -24,6 +27,14 @@ const students: Student[] = [ CardComponent: ChaniChanzinCard, JokePageComponent: ChaniChanzinJokePage, }, + { + id: "nechami-brim", + name: "נחמי ברים", + jokeTitle: "חוקי הפיזיקה של ההייטק", + CardComponent: NechamiCard, + JokePageComponent: NechamiJokePage, +}, + ]; export default students; diff --git a/src/students/nechami_brim/Card.tsx b/src/students/nechami_brim/Card.tsx new file mode 100644 index 0000000..9cb5d18 --- /dev/null +++ b/src/students/nechami_brim/Card.tsx @@ -0,0 +1,11 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function NechamiCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

{student.name}

+
+ ); +} \ No newline at end of file diff --git a/src/students/nechami_brim/JokePage.tsx b/src/students/nechami_brim/JokePage.tsx new file mode 100644 index 0000000..17b343a --- /dev/null +++ b/src/students/nechami_brim/JokePage.tsx @@ -0,0 +1,62 @@ +// import styles from "./styles.module.css"; +// import { PageProps } from "../../types"; + +// export default function NechamiJokePage({ onBack }: PageProps) { +// return ( +//
+//

חוקי הפיזיקה של ההייטק

+//

+// +//
+// ); +// } + + +//------------- +import React, { useState } from 'react'; +import styles from "./styles.module.css"; + +const DevHumorComponent = () => { + const [showPunchline, setShowPunchline] = useState(false); + + return ( +
+
+

+ סיפור אמיתי בצוות פיתוח 💻 +

+ + {/* הודעת הסטאז'ר */} +
+ + 👶 סטאז'ר בפרקטיקום: + +

+ "איך זה הגיוני שהקוד שכתבתי אתמול עבד מעולה, והיום בבוקר בלי שנגעתי בו הוא פתאום לא עובד?" +

+
+ + {/* כפתור לחשיפת התשובה */} + {!showPunchline && ( + + )} + + {/* תגובת המפתח הבכיר */} + {showPunchline && ( +
+ + 👴 מפתח בכיר (מחייך): + +

+ "ברוך הבא להייטק. חוק שימור הבאגים אומר: קוד אף פעם לא באמת 'עובד', הוא פשוט לוקח הפסקת קפה לפעמים." ☕ +

+
+ )} +
+
+ ); +}; + +export default DevHumorComponent; \ No newline at end of file diff --git a/src/students/nechami_brim/styles.module.css b/src/students/nechami_brim/styles.module.css new file mode 100644 index 0000000..90de9ac --- /dev/null +++ b/src/students/nechami_brim/styles.module.css @@ -0,0 +1,210 @@ + /* ========================================== + 1. עיצוב עמוד הרקע והכרטיס המלא (DevHumorComponent) + ========================================== */ + +.page { + display: flex; + justify-content: center; + align-items: center; + min-height: 400px; + padding: 20px; + background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); + font-family: system-ui, -apple-system, sans-serif; + direction: rtl; +} + +.card { + background-color: #ffffff; + border-radius: 20px; + padding: 30px; + width: 100%; + max-width: 480px; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); + border: 1px solid rgba(0, 0, 0, 0.03); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.card:hover { + transform: translateY(-4px); + box-shadow: 0 15px 35px rgba(0, 0, 0, 0.12); +} + +.heading { + color: #1a202c; + font-size: 1.4rem; + font-weight: 700; + text-align: center; + margin-top: 0; + margin-bottom: 25px; +} + +.messageBox { + background-color: #f7fafc; + border-right: 4px solid #3182ce; + border-radius: 4px 12px 12px 4px; + padding: 16px; + margin-bottom: 20px; +} + +.messageTitle { + color: #2b6cb0; + font-size: 0.95rem; + display: block; + margin-bottom: 6px; +} + +.messageText { + margin: 0; + color: #4a5568; + font-size: 1.05rem; + line-height: 1.6; +} + +.button { + width: 100%; + padding: 14px; + background: linear-gradient(135deg, #3182ce 0%, #2b6cb0 100%); + color: #ffffff; + border: none; + border-radius: 12px; + font-size: 1.05rem; + font-weight: 600; + cursor: pointer; + box-shadow: 0 4px 12px rgba(49, 130, 206, 0.3); + transition: all 0.2s ease; +} + +.button:hover { + background: linear-gradient(135deg, #2b6cb0 0%, #2c5282 100%); + transform: scale(1.01); + box-shadow: 0 6px 16px rgba(49, 130, 206, 0.4); +} + +.button:active { + transform: scale(0.99); +} + +.punchlineBox { + background-color: #f0fff4; + border-right: 4px solid #38a169; + border-radius: 4px 12px 12px 4px; + padding: 16px; + margin-top: 20px; + animation: slideDown 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards; +} + +.punchlineTitle { + color: #276749; + font-size: 0.95rem; + display: block; + margin-bottom: 6px; +} + +.punchlineText { + margin: 0; + color: #2f855a; + font-size: 1.05rem; + line-height: 1.6; + font-style: italic; +} + +/* ========================================== + עיצוב משודרג ומניע לפעולה לכרטיס תצוגה מקדימה (NechamiCard) + ========================================== */ + +:global(.joke-card).card { + cursor: pointer; + padding: 24px; + background: #ffffff; + border: 1px solid #e2e8f0; + border-radius: 20px; /* פינות מעוגלות ומודרניות יותר */ + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: space-between; + min-height: 140px; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03); + + /* מעבר חלק לכל השינויים (צבע, צל, מיקום) */ + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +/* אפקט ריחוף (Hover) עוצמתי שיוצר תחושה שהכרטיס "קופץ" לקראת המשתמש */ +:global(.joke-card).card:hover { + transform: translateY(-6px); /* הכרטיס עולה מעט למעלה */ + border-color: #3182ce; /* המסגרת הופכת לכחול הייטק */ + box-shadow: 0 20px 25px -5px rgba(49, 130, 206, 0.1), 0 10px 10px -5px rgba(49, 130, 206, 0.04); +} + +/* הוספת פס צבע דקורטיבי עדין בצד הכרטיס שמשתנה בריחוף */ +:global(.joke-card).card::before { + content: ''; + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 5px; + background-color: #e2e8f0; + transition: background-color 0.3s ease; +} + +:global(.joke-card).card:hover::before { + background-color: #3182ce; /* הפס נצבע בכחול בריחוף */ +} + +/* עיצוב כותרת הבדיחה */ +.title { + color: #1a202c; + font-size: 1.25rem; + font-weight: 700; + margin: 0 0 12px 0; + line-height: 1.5; + transition: color 0.3s ease; +} + +/* בריחוף על הכרטיס, הכותרת נצבעת בכחול */ +:global(.joke-card).card:hover .title { + color: #2b6cb0; +} + +/* עיצוב שורת שם הסטודנט */ +.name { + color: #718096; + font-size: 0.85rem; + font-weight: 600; + margin: 0; + display: flex; + align-items: center; + justify-content: space-between; /* דוחף את השם לימין ואת הרמז לשמאל */ +} + +/* הוספת רמז ויזואלי דינמי (חץ קטן) שמופיע רק כשהמשתמש מרחף על הכרטיס */ +.name::after { + content: 'קרא עוד ←'; + font-size: 0.8rem; + color: #3182ce; + opacity: 0; + transform: translateX(10px); + transition: all 0.3s ease; +} + +:global(.joke-card).card:hover .name::after { + opacity: 1; + transform: translateX(0); /* החץ מחליק פנימה בצורה יפה */ +} + +/* ========================================== + 3. אנימציות + ========================================== */ + +@keyframes slideDown { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} \ No newline at end of file From 362102850f93b116719b44232af5b426252b834b Mon Sep 17 00:00:00 2001 From: LNechami Date: Wed, 27 May 2026 13:26:03 +0300 Subject: [PATCH 10/14] fix: resolve CI issues --- src/students/nechami_brim/JokePage.tsx | 70 ++++++++++++-------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/src/students/nechami_brim/JokePage.tsx b/src/students/nechami_brim/JokePage.tsx index 17b343a..a7d9d8e 100644 --- a/src/students/nechami_brim/JokePage.tsx +++ b/src/students/nechami_brim/JokePage.tsx @@ -1,27 +1,22 @@ -// import styles from "./styles.module.css"; -// import { PageProps } from "../../types"; - -// export default function NechamiJokePage({ onBack }: PageProps) { -// return ( -//
-//

חוקי הפיזיקה של ההייטק

-//

-// -//
-// ); -// } - - -//------------- import React, { useState } from 'react'; import styles from "./styles.module.css"; +import { PageProps } from "../../types"; -const DevHumorComponent = () => { - const [showPunchline, setShowPunchline] = useState(false); +export default function NechamiJokePage({ onBack }: PageProps) { + // ניהול הסטייט להצגת הפאנץ' ליין + const [showPunchline, setShowPunchline] = useState(false); return (
+ + {/* כפתור חזרה (אופציונלי - משתמש ב-onBack שהגיע מה-Props) */} + {onBack && ( + + )} +

סיפור אמיתי בצוות פיתוח 💻

@@ -36,27 +31,26 @@ const DevHumorComponent = () => {

- {/* כפתור לחשיפת התשובה */} - {!showPunchline && ( - - )} - - {/* תגובת המפתח הבכיר */} - {showPunchline && ( -
- - 👴 מפתח בכיר (מחייך): - -

- "ברוך הבא להייטק. חוק שימור הבאגים אומר: קוד אף פעם לא באמת 'עובד', הוא פשוט לוקח הפסקת קפה לפעמים." ☕ -

-
- )} + {/* כפתור לחשיפת התשובה */} + {!showPunchline && ( + + )} + + {/* תגובת המפתח הבכיר */} + {showPunchline && ( +
+ + 👴 מפתח בכיר (מחייך): + +

+ "ברוך הבא להייטק. חוק שימור הבאגים אומר: קוד אף פעם לא באמת 'עובד', הוא פשוט לוקח הפסקת קפה לפעמים." ☕ +

+
+ )} +
); -}; - -export default DevHumorComponent; \ No newline at end of file +} \ No newline at end of file From 93c006a1eadfb29f8d7748e0368dedc00dc83f27 Mon Sep 17 00:00:00 2001 From: shevi32 Date: Wed, 27 May 2026 14:11:51 +0300 Subject: [PATCH 11/14] finish --- src/students/index.ts | 4 ++-- src/students/{shevi shapira => shevi-shapira}/Card.tsx | 0 src/students/{shevi shapira => shevi-shapira}/JokePage.tsx | 0 .../{shevi shapira => shevi-shapira}/styles.module.css | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename src/students/{shevi shapira => shevi-shapira}/Card.tsx (100%) rename src/students/{shevi shapira => shevi-shapira}/JokePage.tsx (100%) rename src/students/{shevi shapira => shevi-shapira}/styles.module.css (100%) diff --git a/src/students/index.ts b/src/students/index.ts index 4ce9cbf..4d31c41 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -7,8 +7,8 @@ import ChaniChanzinCard from "./chani-chanzin/Card"; import ChaniChanzinJokePage from "./chani-chanzin/JokePage"; // מייבא את הקומפוננטות שלך -import SheviShapiraCard from "./shevi shapira/Card"; -import SheviShapiraJokePage from "./shevi shapira/JokePage"; +import SheviShapiraCard from "./shevi-shapira/Card"; +import SheviShapiraJokePage from "./shevi-shapira/JokePage"; // ⚠️ סדר הרשימה חייב להיות לפי סדר האלף-בית העברי לפי שם המשפחה. // כל תלמידה מוסיפה את עצמה במקום הנכון ידנית. diff --git a/src/students/shevi shapira/Card.tsx b/src/students/shevi-shapira/Card.tsx similarity index 100% rename from src/students/shevi shapira/Card.tsx rename to src/students/shevi-shapira/Card.tsx diff --git a/src/students/shevi shapira/JokePage.tsx b/src/students/shevi-shapira/JokePage.tsx similarity index 100% rename from src/students/shevi shapira/JokePage.tsx rename to src/students/shevi-shapira/JokePage.tsx diff --git a/src/students/shevi shapira/styles.module.css b/src/students/shevi-shapira/styles.module.css similarity index 100% rename from src/students/shevi shapira/styles.module.css rename to src/students/shevi-shapira/styles.module.css From 8229e88dd1280488bd4b537e0291ee410d14cba3 Mon Sep 17 00:00:00 2001 From: shevi32 Date: Wed, 27 May 2026 14:53:59 +0300 Subject: [PATCH 12/14] fix: resolve merge conflict with catalystIQ_1 --- src/students/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/students/index.ts b/src/students/index.ts index 1399157..be22de9 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -51,7 +51,7 @@ const students: Student[] = [ jokeTitle: "וירוס במחשב ", CardComponent: efratMittelmanCard, JokePageComponent: efratMittelmanJokePage, - } + }, { id: "shevi-shapira", name: "שבי שפירא", From bcbcfa996ee0fc0b8fc6fd1557630bcf6b144d57 Mon Sep 17 00:00:00 2001 From: yael ordman Date: Wed, 27 May 2026 15:08:28 +0300 Subject: [PATCH 13/14] add-joke --- src/students/index.ts | 10 ++ src/students/yael-ordman/Card.tsx | 11 ++ src/students/yael-ordman/JokePage.tsx | 12 ++ src/students/yael-ordman/styles.module.css | 156 +++++++++++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 src/students/yael-ordman/Card.tsx create mode 100644 src/students/yael-ordman/JokePage.tsx create mode 100644 src/students/yael-ordman/styles.module.css diff --git a/src/students/index.ts b/src/students/index.ts index 5be78e7..80a92df 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -1,5 +1,8 @@ import { Student } from "../types"; +import YaelOrdmanCard from "./yael-ordman/Card"; +import YaelOrdmanJokePage from "./yael-ordman/JokePage"; + import DanaDuviCard from "./dana-duvi/Card"; import DanaDuviJokePage from "./dana-duvi/JokePage"; @@ -10,6 +13,13 @@ import ChaniChanzinJokePage from "./chani-chanzin/JokePage"; // כל תלמידה מוסיפה את עצמה במקום הנכון ידנית. // אסור להשתמש בפונקציית-sort! const students: Student[] = [ + { + id: "yael-ordman", + name: "יעל אורדמן", + jokeTitle: "רקורסיה",//מה ההגדרה המילונית של רקורסיה? עיין ערך רקורסיה... חחח + CardComponent: YaelOrdmanCard, + JokePageComponent: YaelOrdmanJokePage, + }, { id: "dana-duvi", name: "דנה דובי", diff --git a/src/students/yael-ordman/Card.tsx b/src/students/yael-ordman/Card.tsx new file mode 100644 index 0000000..83ad7e7 --- /dev/null +++ b/src/students/yael-ordman/Card.tsx @@ -0,0 +1,11 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function YaelOrdmanCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

{student.name}

+
+ ); +} \ No newline at end of file diff --git a/src/students/yael-ordman/JokePage.tsx b/src/students/yael-ordman/JokePage.tsx new file mode 100644 index 0000000..88b1b00 --- /dev/null +++ b/src/students/yael-ordman/JokePage.tsx @@ -0,0 +1,12 @@ +import styles from "./styles.module.css"; +import { PageProps } from "../../types"; + +export default function YaelOrdmanJokePage({ onBack }: PageProps) { + return ( +
+

מה ההגדרה המילונית של רקורסיה?

+

עיין ערך רקורסיה...

+ +
+ ); +} \ No newline at end of file diff --git a/src/students/yael-ordman/styles.module.css b/src/students/yael-ordman/styles.module.css new file mode 100644 index 0000000..2dc35ac --- /dev/null +++ b/src/students/yael-ordman/styles.module.css @@ -0,0 +1,156 @@ + +.dinoWrapper { + position: relative; + width: 64px; + height: 64px; + overflow: visible; +} + +.dinoPixel { + position: absolute; + left: 32px; + top: 0; + width: 8px; + height: 8px; + background: #db2020; + box-shadow: 8px 0, 16px 0, -8px 8px, 0 8px, 8px 8px, 16px 8px, 24px 8px, + -8px 16px, 8px 16px, 16px 16px, 24px 16px, -8px 24px, 0 24px, 8px 24px, + 16px 24px, -16px 32px, -8px 32px, 0 32px, 8px 32px, 16px 32px, 24px 32px, + -32px 40px, -24px 40px, -16px 40px, -8px 40px, 0 40px, 8px 40px, 16px 40px, + 24px 40px, -16px 48px, 8px 48px, -16px 56px, -8px 56px, 8px 56px, 16px 56px; +} + +.dinoEye { + position: absolute; + left: 32px; + top: 16px; + width: 8px; + height: 8px; + background: rgb(208, 24, 24); +} + +.dinoDead .dinoEye { + background: transparent; +} + +.dinoX { + position: absolute; + left: 26px; + top: 10px; + font-family: "Press Start 2P", monospace; + font-size: 10px; + color: #da1313; + line-height: 1; +} + +.scene { + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 0 1rem; + width: 100%; + max-width: 340px; +} + +.ground { + width: 100%; + height: 2px; + background: #ffffff; + margin-top: 4px; +} + +/* ── Card ── */ +.card { + background: #0dcaca; + border: 2px solid #0008fb; + box-shadow: 4px 4px 0 #0008fb8b; + color: #0008fb; + font-family: "Press Start 2P", monospace; + image-rendering: pixelated; + padding-top: 1rem; +} + +.scoreBar { + display: flex; + justify-content: space-between; + font-size: 0.55rem; + letter-spacing: 1px; + margin-bottom: 0.8rem; + padding: 0 0.2rem; +} + +.name { + font-size: 0.65rem; + line-height: 1.6; + margin-bottom: 0.8rem; +} + +.title { + line-height: 1.8; + font-size: 1.2rem; + letter-spacing: 3px; + margin: 0.4rem; +} + +.press { + font-size: 0.45rem; + letter-spacing: 1px; + color: #0dcaca; + animation: blink 1.2s step-start infinite; +} + +@keyframes blink { + 50% { + opacity: 0; + } +} + +/* ── Joke page ── */ +.jokePage { + background: #0dcaca; + color: #535353; + font-family: "Press Start 2P", monospace; +} + +.sceneDead { + margin: 0.5rem 0; +} + +.jokeBox { + background: #0db6cc; + border: 5px solid #535353; + box-shadow: 4px 4px 0 #535353; + padding: 1.5rem 2rem; + max-width: 480px; + width: 90%; + text-align: center; +} + +.jokeSetup { + font-size: 2rem; + line-height: 2; + margin-bottom: 1rem; +} + +.jokePunchline { + font-size: 1.8rem; + line-height: 2; + border-top: 2px solid #535353; + padding-top: 0.8rem; +} + +.backBtn { + background: #535353; + color: #f7f7f7; + border: none; + padding: 0.8rem 1.8rem; + font-family: "Press Start 2P", monospace; + font-size: 0.65rem; + letter-spacing: 2px; + cursor: pointer; + transition: background 0.1s; +} + +.backBtn:hover { + background: #333; +} From 9a1a2e39901ab05d4461422d6b564dfa4dfde2d9 Mon Sep 17 00:00:00 2001 From: Yael Date: Thu, 28 May 2026 11:37:52 +0300 Subject: [PATCH 14/14] add joke of yael --- package-lock.json | 2 +- src/students/index.ts | 9 +++ src/students/yael-shitrit/Card.tsx | 13 ++++ src/students/yael-shitrit/JokePage.tsx | 19 +++++ src/students/yael-shitrit/styles.module.css | 85 +++++++++++++++++++++ 5 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 src/students/yael-shitrit/Card.tsx create mode 100644 src/students/yael-shitrit/JokePage.tsx create mode 100644 src/students/yael-shitrit/styles.module.css diff --git a/package-lock.json b/package-lock.json index fc37715..32980b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3007,4 +3007,4 @@ } } } -} +} \ No newline at end of file diff --git a/src/students/index.ts b/src/students/index.ts index 5be78e7..015f435 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -5,6 +5,8 @@ import DanaDuviJokePage from "./dana-duvi/JokePage"; import ChaniChanzinCard from "./chani-chanzin/Card"; import ChaniChanzinJokePage from "./chani-chanzin/JokePage"; +import YaelShitritCard from "./yael-shitrit/Card"; +import YaelShitritJokePage from "./yael-shitrit/JokePage"; // ⚠️ סדר הרשימה חייב להיות לפי סדר האלף-בית העברי לפי שם המשפחה. // כל תלמידה מוסיפה את עצמה במקום הנכון ידנית. @@ -24,6 +26,13 @@ const students: Student[] = [ CardComponent: ChaniChanzinCard, JokePageComponent: ChaniChanzinJokePage, }, + { + id: "Yael-Shitrit", + name: "יעל שטרית", + jokeTitle: "הדוב הפחדן", + CardComponent: YaelShitritCard, + JokePageComponent: YaelShitritJokePage, + }, ]; export default students; diff --git a/src/students/yael-shitrit/Card.tsx b/src/students/yael-shitrit/Card.tsx new file mode 100644 index 0000000..cab7d55 --- /dev/null +++ b/src/students/yael-shitrit/Card.tsx @@ -0,0 +1,13 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function YaelShitritCard({ student, onClick }: CardProps) { + return ( +
+
🐻
+

{student.jokeTitle}

+

{student.name}

+ לחצי לצחוק +
+ ); +} diff --git a/src/students/yael-shitrit/JokePage.tsx b/src/students/yael-shitrit/JokePage.tsx new file mode 100644 index 0000000..1bed970 --- /dev/null +++ b/src/students/yael-shitrit/JokePage.tsx @@ -0,0 +1,19 @@ +import styles from "./styles.module.css"; +import { PageProps } from "../../types"; + +export default function YaelShitritJokePage({ onBack }: PageProps) { + return ( +
+
+ 🐻 +
+
+

למה הדוב לא משתמש במחשב?

+

כי הוא מפחד מהעכבר! 🐭

+
+ +
+ ); +} diff --git a/src/students/yael-shitrit/styles.module.css b/src/students/yael-shitrit/styles.module.css new file mode 100644 index 0000000..d70b8b2 --- /dev/null +++ b/src/students/yael-shitrit/styles.module.css @@ -0,0 +1,85 @@ +.card { + background: linear-gradient(160deg, #fff8e7 0%, #ffe0a3 100%); + border: 3px solid #f5a623; + box-shadow: 0 6px 20px rgba(245, 166, 35, 0.35); +} + +.avatar { + font-size: 3rem; + margin-bottom: 0.5rem; +} + +.title { + font-size: 1.4rem; + color: #7a4800; + margin-bottom: 0.4rem; +} + +.name { + font-size: 1rem; + color: #5a3400; + margin-bottom: 1rem; +} + +.badge { + display: inline-block; + background: #f5a623; + color: #fff; + border-radius: 20px; + padding: 0.3rem 1rem; + font-size: 0.85rem; + font-weight: bold; +} + +.jokePage { + background: linear-gradient(135deg, #fff3cd, #ffd77a); +} + +.jokeHeader { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.3rem; +} + +.bigEmoji { + font-size: 5rem; +} + +.jokeCard { + background: #fff; + border-radius: 20px; + padding: 2rem 2.5rem; + max-width: 500px; + width: 100%; + text-align: center; + box-shadow: 0 8px 24px rgba(245, 166, 35, 0.3); + color: #5a3400; +} + +.jokeCard h2 { + font-size: 1.3rem; + margin-bottom: 0.6rem; +} + +.jokeCard p { + font-size: 1.4rem; + line-height: 1.6; + margin-top: 0.8rem; +} + +.backBtn { + background: #f5a623; + color: #fff; + border: none; + border-radius: 30px; + padding: 0.7rem 2rem; + font-size: 1rem; + font-weight: bold; + cursor: pointer; + transition: background 0.2s; +} + +.backBtn:hover { + background: #d4891a; +}