diff --git a/package.json b/package.json index 0545857..34f69c3 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "gen-branches && vite", + "dev": "npm run gen-branches && vite", "build": "tsc -b && vite build", "lint": "eslint .", "preview": "vite preview", diff --git a/src/generated/branches.ts b/src/generated/branches.ts index 7a56c3b..5dae704 100644 --- a/src/generated/branches.ts +++ b/src/generated/branches.ts @@ -2,170 +2,722 @@ import type { BranchData } from "../types"; const data: BranchData = { - "generatedAt": "2026-04-26T22:06:42.722Z", - "currentBranch": "", + "generatedAt": "2026-05-26T12:54:20.347Z", + "currentBranch": "sola_sola1_shifraZ", "mainBranch": "master", "branches": [ + { + "name": "Eti-NewJoke", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Eti-Orenbach", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Hilla_Arye", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Hilla_Arye_2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Maayan-Bukrits", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "MaayanBaba", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "RivkaBarashi", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Shira-Shemesh", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "ShiraShemesh2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Vcomm", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Vcomm_1", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Vcomm_2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Vcomm_3", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "Vcomm_3_noaNew", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "ayala-joke2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "ayala-oshri-stars-green-johnny-update-team1", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "ayala-samson", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "hadar-gerafi", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "hadas-karasenti", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "johnny-update-3", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "johnny-update-team3-Eti_Munk", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiter-2-RachelWeinberger", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kitera", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-1", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-1-chedvaf", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-1-efrat", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-2-yehudit", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-3", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-3-Ayelet", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-3-ester", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria-3_RachelPanet", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "kiteria_chedva", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "maayan-vecomm-1-vecomm", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "maayan2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, { "name": "master", "parentBranch": null, + "shortHash": "0c10217", + "lastCommitMessage": "fix: instructions branch names", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "mayanSJoke", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "newBSHIFRA1", + "parentBranch": null, + "shortHash": "0c10217", + "lastCommitMessage": "fix: instructions branch names", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "newNew", + "parentBranch": "new_branch_SHIFRA1", + "shortHash": "21756af", + "lastCommitMessage": "commit6", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "new_branch_SHIFRA1", + "parentBranch": "new_branch_SHIFRA3", + "shortHash": "21452fd", + "lastCommitMessage": "commit4", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "new_branch_SHIFRA2", + "parentBranch": "new_branch_SHIFRA3", + "shortHash": "21452fd", + "lastCommitMessage": "commit4", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "new_branch_SHIFRA3", + "parentBranch": "newNew", + "shortHash": "2985d97", + "lastCommitMessage": "commit5", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "noa_gabay", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "shani", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "shani2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "shiraGidi", + "parentBranch": null, "shortHash": "", "lastCommitMessage": "", "isMergedIntoParent": false, "isCurrent": false }, { - "name": "diamond", - "parentBranch": "master", - "shortHash": "234", - "lastCommitMessage": "diamond", + "name": "sola", + "parentBranch": null, + "shortHash": "0c10217", + "lastCommitMessage": "fix: instructions branch names", "isMergedIntoParent": false, "isCurrent": false }, { - "name": "red", - "parentBranch": "diamond", - "shortHash": "23444", - "lastCommitMessage": "moshe", + "name": "sola3", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", "isMergedIntoParent": false, "isCurrent": false }, { - "name": "miri", - "parentBranch": "red", - "shortHash": "23444", - "lastCommitMessage": "miri", + "name": "sola4", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", "isMergedIntoParent": false, "isCurrent": false }, { - "name": "roch", - "parentBranch": "red", - "shortHash": "23444", - "lastCommitMessage": "roch ", + "name": "sola_sola1", + "parentBranch": null, + "shortHash": "0c10217", + "lastCommitMessage": "fix: instructions branch names", "isMergedIntoParent": false, "isCurrent": false }, { - "name": "roch", - "parentBranch": "red", - "shortHash": "23444", - "lastCommitMessage": "roch ", + "name": "sola_sola1_carmi", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", "isMergedIntoParent": false, "isCurrent": false }, { - "name": "avi nos", - "parentBranch": "red", - "shortHash": "23444", - "lastCommitMessage": "roch ", - "isMergedIntoParent": true, + "name": "sola_sola1_malka", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "shia cjss s", - "parentBranch": "red", - "shortHash": "23444", - "lastCommitMessage": "roch ", + "name": "sola_sola1_ruti", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", "isMergedIntoParent": false, "isCurrent": false }, { - "name": "blue", - "parentBranch": "diamond", - "shortHash": "23444", - "lastCommitMessage": "moshe", + "name": "sola_sola1_sari", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", "isMergedIntoParent": false, "isCurrent": false }, { - "name": "red", - "parentBranch": "diamond", - "shortHash": "23444", - "lastCommitMessage": "moshe", + "name": "sola_sola1_shifraZ", + "parentBranch": "newNew", + "shortHash": "6ea2ffe", + "lastCommitMessage": "fix: cleanup system files to pass github actions", "isMergedIntoParent": false, "isCurrent": true }, { - "name": "star", - "parentBranch": "master", - "shortHash": "23454", - "lastCommitMessage": "yos", - "isMergedIntoParent": true, + "name": "sola_sola2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola2-Tamar", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola2_gili", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola2_hadas", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola2_tamarD", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola2_yehudit", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola3_Efrat_Madmon", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola3_saralevin", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola3_yaeli", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "sola_sola3_yehudit", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-bat-sheva-bloch", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team1", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team1-Tamar", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team1-Yael", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team1-bracha", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team2-LitalShamanov", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team3", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team3-Zehavi", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-johnny-update-team3-chanaMoshayev", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "stars-green-jonny-update-miryam-dahari", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + }, + { + "name": "tamar-levi-branch", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "green", - "parentBranch": "star", - "shortHash": "23454", - "lastCommitMessage": "green", - "isMergedIntoParent": true, + "name": "team/vcomm/sub/vcomm3/noagabay", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "tut", - "parentBranch": "green", - "shortHash": "23454", - "lastCommitMessage": "green", - "isMergedIntoParent": true, + "name": "tovi", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "brach", - "parentBranch": "green", - "shortHash": "23454", - "lastCommitMessage": "green", - "isMergedIntoParent": true, + "name": "vcomm/vcomm-1/ShiraShemesh", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "yochi", - "parentBranch": "green", - "shortHash": "23454", - "lastCommitMessage": "green", - "isMergedIntoParent": true, + "name": "vcomm/vcomm-1/ShiraShemesh2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "sjn cjknd", - "parentBranch": "green", - "shortHash": "23454", - "lastCommitMessage": "green", - "isMergedIntoParent": true, + "name": "vcomm/vcomm-1/tova", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "yellow", - "parentBranch": "star", - "shortHash": "23454", - "lastCommitMessage": "yellow fkgnlfg df", - "isMergedIntoParent": true, + "name": "vcomm/vcomm-1/tovi", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "hjdf df", - "parentBranch": "yellow", - "shortHash": "23454", - "lastCommitMessage": "yellow fkgnlfg df", - "isMergedIntoParent": true, + "name": "vcomm/vcomm-1/tovi-joke2", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "gfkj dfkn", - "parentBranch": "yellow", - "shortHash": "23454", - "lastCommitMessage": "yellow fkgnlfg df", - "isMergedIntoParent": true, + "name": "vcomm/vcomm3/ayalaKlein", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, { - "name": "fldngk df", - "parentBranch": "yellow", - "shortHash": "23454", - "lastCommitMessage": "yellow fkgnlfg df", - "isMergedIntoParent": true, + "name": "yonny", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, "isCurrent": false }, + { + "name": "yonny-update-saraRafalowitz", + "parentBranch": null, + "shortHash": "", + "lastCommitMessage": "", + "isMergedIntoParent": false, + "isCurrent": false + } ] }; diff --git a/src/students/Shifra-Zaafrani/Card.tsx b/src/students/Shifra-Zaafrani/Card.tsx new file mode 100644 index 0000000..c135d4f --- /dev/null +++ b/src/students/Shifra-Zaafrani/Card.tsx @@ -0,0 +1,11 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function ShifraZaafraniCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

{student.name}

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

{'איש אחד הולך ברחוב ורואה אדם יושב על המדרכה מחזיק שלט:'}

+

{'"אני קבצן, תנו לי כסף בבקשה."'}

+

{'האיש מתקרב אליו, נותן לו כסף ושואל אותו: "תגיד, למה אתה לא הולך לעבוד?"'}

+

{'הקבצן עונה לו: "אני לא יכול לעבוד, אני קבצן!"'}

+ +
+ ); +} \ No newline at end of file diff --git a/src/students/Shifra-Zaafrani/styles.module.css b/src/students/Shifra-Zaafrani/styles.module.css new file mode 100644 index 0000000..a72c7d0 --- /dev/null +++ b/src/students/Shifra-Zaafrani/styles.module.css @@ -0,0 +1,100 @@ +:root { + --bg: #141e30; + --bg-secondary: #1f2a44; + --text: #f3f7ff; + --accent: #ffb347; + --accent-strong: #ff7a18; + --border: rgba(255, 255, 255, 0.15); +} + +.container { + max-width: 1100px; + margin: 0 auto; + padding: 32px; + background: linear-gradient(135deg, rgba(20, 30, 48, 0.95), rgba(31, 42, 68, 0.95)); + color: var(--text); + border-radius: 24px; + box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28); +} + +.header { + font-size: clamp(2rem, 1.8rem + 1vw, 3rem); + font-weight: 700; + margin-bottom: 24px; + text-align: center; + letter-spacing: 0.03em; + text-transform: uppercase; + color: #f9fafc; +} + +.description { + max-width: 720px; + margin: 0 auto 32px; + line-height: 1.8; + color: #dbe6ff; + text-align: center; +} + +.grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 20px; +} + +.card { + background: rgba(255, 255, 255, 0.08); + border: 1px solid var(--border); + padding: 24px; + border-radius: 20px; + backdrop-filter: blur(12px); + transition: transform 0.25s ease, box-shadow 0.25s ease; +} + +.card:hover { + transform: translateY(-6px); + box-shadow: 0 22px 40px rgba(0, 0, 0, 0.24); +} + +.card-title { + font-size: 1.4rem; + margin-bottom: 12px; + font-weight: 700; + color: #ffffff; +} + +.card-text { + font-size: 1rem; + line-height: 1.7; + color: #c8d5ff; +} + +.button { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 12px 28px; + margin-top: 18px; + background: linear-gradient(135deg, var(--accent), var(--accent-strong)); + color: #111827; + border: none; + border-radius: 999px; + text-decoration: none; + font-weight: 700; + transition: transform 0.2s ease, opacity 0.2s ease; +} + +.button:hover { + transform: translateY(-2px); + opacity: 0.95; +} + +.highlight { + color: var(--accent); +} + +.footer { + margin-top: 32px; + text-align: center; + color: #9fb4db; + font-size: 0.95rem; +} diff --git a/src/students/index.ts b/src/students/index.ts index 5be78e7..d547554 100644 --- a/src/students/index.ts +++ b/src/students/index.ts @@ -6,24 +6,74 @@ import DanaDuviJokePage from "./dana-duvi/JokePage"; import ChaniChanzinCard from "./chani-chanzin/Card"; import ChaniChanzinJokePage from "./chani-chanzin/JokePage"; +import RutiCard from "./ruti-paniri/Card"; +import RutiJokePage from "./ruti-paniri/JokePage"; + +import ShiraCarmiJokePage from "./shira-carmi/JokePage"; +import ShiraCarmiCard from "./shira-carmi/Card"; + +import ShifraZaafraniCard from "./Shifra-Zaafrani/Card"; +import ShifraZaafraniJokePage from "./Shifra-Zaafrani/JokePage"; + +import MalkaCard from "./malka-gadlowitz/Card"; +import MalkaJokePage from "./malka-gadlowitz/JokePage"; + // ⚠️ סדר הרשימה חייב להיות לפי סדר האלף-בית העברי לפי שם המשפחה. // כל תלמידה מוסיפה את עצמה במקום הנכון ידנית. // אסור להשתמש בפונקציית-sort! const students: Student[] = [ - { + { + id: "malka-gedelovitz", + name: "מלכה גדלוביץ", + jokeTitle: "המתכנת והקפה", + CardComponent: MalkaCard, + JokePageComponent: MalkaJokePage, +}, + { id: "dana-duvi", name: "דנה דובי", jokeTitle: "הדוב הפחדן", CardComponent: DanaDuviCard, JokePageComponent: DanaDuviJokePage, }, - { + { + id: "Shifra-Zaafrani", + name: "שפרה זעפרני", + jokeTitle: "הקבצן ברחוב", + CardComponent: ShifraZaafraniCard, + JokePageComponent: ShifraZaafraniJokePage, + }, + { id: "chani-chanzin", name: "חני חנזין", jokeTitle: "התנין והתנינה", CardComponent: ChaniChanzinCard, JokePageComponent: ChaniChanzinJokePage, }, + { + id: "shira-carmi", + name: "שירה כרמי", + jokeTitle: "המפתחים וה-Git", + CardComponent: ShiraCarmiCard, + JokePageComponent: ShiraCarmiJokePage, + }, + + + + { + id: "Ruti-Paniri", + name: "רותי פנירי", + jokeTitle: "המחשב העקשן", + CardComponent: RutiCard, + JokePageComponent: RutiJokePage, +}, + + + + + + + ]; export default students; diff --git a/src/students/malka-gadlowitz/Card.tsx b/src/students/malka-gadlowitz/Card.tsx new file mode 100644 index 0000000..b74d4ff --- /dev/null +++ b/src/students/malka-gadlowitz/Card.tsx @@ -0,0 +1,11 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function MalkaCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

{student.name}

+
+ ); +} diff --git a/src/students/malka-gadlowitz/JokePage.tsx b/src/students/malka-gadlowitz/JokePage.tsx new file mode 100644 index 0000000..05dcb67 --- /dev/null +++ b/src/students/malka-gadlowitz/JokePage.tsx @@ -0,0 +1,14 @@ +import styles from "./styles.module.css"; +import { PageProps } from "../../types"; + +export default function MalkaJokePage({ onBack }: PageProps) { + return ( +
+

למה מתכנתים שותים קפה? + כי בלי Java הם לא רצים. +

+ + +
+ ); +} \ No newline at end of file diff --git a/src/students/malka-gadlowitz/styles.module.css b/src/students/malka-gadlowitz/styles.module.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/students/malka-gadlowitz/styles.module.css @@ -0,0 +1 @@ + diff --git a/src/students/ruti-paniri/Card.tsx b/src/students/ruti-paniri/Card.tsx new file mode 100644 index 0000000..0898004 --- /dev/null +++ b/src/students/ruti-paniri/Card.tsx @@ -0,0 +1,12 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function RutiCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

{student.name}

+ מעבר לבדיחה +
+ ); +} \ No newline at end of file diff --git a/src/students/ruti-paniri/JokePage.tsx b/src/students/ruti-paniri/JokePage.tsx new file mode 100644 index 0000000..dfb301d --- /dev/null +++ b/src/students/ruti-paniri/JokePage.tsx @@ -0,0 +1,17 @@ +import styles from "./styles.module.css"; +import { PageProps } from "../../types"; + +export default function RutiJokePage({ onBack }: PageProps) { + return ( +
+
+

המחשב העקשן

+

אדם אחד שואל את חבר שלו: "איך זה שהמחשב שלך תמיד עובד כל כך מהר?"

+

החבר עונה לו: "זה פשוט מאוד, כל פעם כשהוא מתחיל לעבוד לאט, אני מראה לו את חשבון החשמל שלי!"

+ +
+
+ ); +} \ No newline at end of file diff --git a/src/students/ruti-paniri/styles.module.css b/src/students/ruti-paniri/styles.module.css new file mode 100644 index 0000000..ee6f29b --- /dev/null +++ b/src/students/ruti-paniri/styles.module.css @@ -0,0 +1,265 @@ +.card { + background: linear-gradient(160deg, #eef7ff 0%, #cce7ff 100%); + border: 3px solid #4a90e2; + box-shadow: 0 6px 20px rgba(74, 144, 226, 0.25); + border-radius: 15px; + padding: 1.5rem; + margin: 1rem; +} + +.avatar { + font-size: 3rem; + margin-bottom: 0.5rem; +} + +.title { + font-size: 1.4rem; + color: #1a3a5a; + margin-bottom: 0.4rem; +} + +.name { + font-size: 1rem; + color: #2c5680; + margin-bottom: 1rem; +} + +.badge { + display: inline-block; + background: #4a90e2; + color: #fff; + border-radius: 20px; + padding: 0.3rem 1rem; + font-size: 0.85rem; + font-weight: bold; +} + +.jokePage { + background: linear-gradient(135deg, #e3f2fd, #bbdefb); + min-height: 100vh; + display: flex; + justify-content: center; + align-items: center; +} + +.jokeHeader { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.3rem; +} + +.bigEmoji { + font-size: 5rem; +} + +.jokeCard { + background: #ffffff; + border-radius: 20px; + padding: 2rem 2.5rem; + max-width: 700px; + width: 100%; + text-align: center; + box-shadow: 0 8px 24px rgba(74, 144, 226, 0.2); + color: #1a3a5a; +} + +.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: #4a90e2; + color: #fff; + border: none; + border-radius: 30px; + padding: 0.7rem 2rem; + font-size: 1rem; + font-weight: bold; + cursor: pointer; + transition: background 0.3s; + margin-top: 1.5rem; +} + +.backBtn:hover { + background: #357abd; +} +.card { + background: #ffffff; + border: 2px solid #4a90e2; + border-radius: 20px; + padding: 1.5rem; + width: 300px; /* גודל קבוע לכל הכרטיסים */ + height: 200px; /* גודל קבוע לכל הכרטיסים */ + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + transition: transform 0.2s; + cursor: pointer; + box-shadow: 0 4px 10px rgba(0,0,0,0.1); +} + +.card:hover { + transform: scale(1.05); /* אפקט מגניב כשעוברים עם העכבר */ +} + +.avatar { + font-size: 3rem; /* גודל האימוג'י */ + margin-top: 0.5rem; +} +/* --- עיצוב הכרטיס המרכזי באותו סטייל של הפרויקט --- */ +.card { + background: #ffffff; + border: 2px solid #4a90e2; + border-radius: 20px; + padding: 1.5rem; + width: 300px; + height: 200px; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + transition: all 0.3s ease; + cursor: pointer; + /* צל עדין שנותן תחושת עומק */ + box-shadow: 0 6px 12px rgba(74, 144, 226, 0.15); + position: relative; + overflow: hidden; +} + +.card:hover { + transform: translateY(-5px) scale(1.02); + box-shadow: 0 10px 20px rgba(74, 144, 226, 0.25); + border-color: #357abd; +} + +/* --- עיצוב הטקסט והתוכן --- */ +.title { + font-size: 1.3rem; + color: #1a3a5a; + margin: 0; + font-weight: 700; + text-align: center; +} + +.avatar { + font-size: 3.5rem; + margin-top: 0.5rem; +} + +.badge { + background: #eef7ff; + color: #4a90e2; + border: 1px solid #4a90e2; + border-radius: 12px; + padding: 0.4rem 1.2rem; + font-size: 0.8rem; + font-weight: bold; + text-transform: uppercase; +} + +/* --- עיצוב עמוד הבדיחה המלא --- */ +.jokePage { + background-color: #f8fbff; + min-height: 100vh; + display: flex; + justify-content: center; + align-items: center; +} + +.jokeCard { + background: #ffffff; + border-radius: 25px; + padding: 3rem; + max-width: 500px; + text-align: center; + border: 1px solid #d1e3f8; + box-shadow: 0 15px 35px rgba(74, 144, 226, 0.1); +} + +.backBtn { + background: #4a90e2; + color: #fff; + border: none; + border-radius: 25px; + padding: 0.8rem 2.5rem; + cursor: pointer; + font-weight: bold; + margin-top: 2rem; +} +.card { + background: #ffffff; + /* מסגרת עם צל פנימי עדין למראה תלת-ממדי */ + border: 2px solid #4a90e2; + border-radius: 20px; + padding: 1.5rem; + width: 300px; + height: 200px; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + cursor: pointer; + /* צל כפול למראה עמוק */ + box-shadow: 0 10px 20px rgba(0,0,0,0.1), 0 0 0 4px #e3f2fd; + position: relative; + overflow: hidden; +} + +/* אפקט ריחוף (Hover) מרשים */ +.card:hover { + transform: translateY(-10px) rotate(2deg); + box-shadow: 0 20px 30px rgba(74, 144, 226, 0.3); + border-color: #1a3a5a; +} + +/* הוספת "פס טכנולוגי" למעלה למראה של כרטיס משחק */ +.card::before { + content: "SYSTEM_01"; + position: absolute; + top: 10px; + left: 15px; + font-family: monospace; + font-size: 0.7rem; + color: #4a90e2; + opacity: 0.6; +} + +.title { + font-size: 1.3rem; + color: #1a3a5a; + margin-top: 15px; + font-weight: 800; + text-transform: uppercase; + letter-spacing: 1px; +} + +.avatar { + font-size: 3.5rem; + margin-top: 0.5rem; + filter: drop-shadow(0 5px 5px rgba(0,0,0,0.1)); +} + +.badge { + background: #1a3a5a; + color: #fff; + border-radius: 8px; + padding: 0.4rem 1.2rem; + font-size: 0.75rem; + font-weight: bold; + margin-bottom: 5px; + transition: background 0.3s; +} + +.card:hover .badge { + background: #4a90e2; +} diff --git a/src/students/shira-carmi/Card.tsx b/src/students/shira-carmi/Card.tsx new file mode 100644 index 0000000..4ee84cb --- /dev/null +++ b/src/students/shira-carmi/Card.tsx @@ -0,0 +1,11 @@ +import styles from "./styles.module.css"; +import { CardProps } from "../../types"; + +export default function ShiraCarmiCard({ student, onClick }: CardProps) { + return ( +
+

{student.jokeTitle}

+

{student.name}

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

למה מפתחים כל כךg אוהבים להשתמש ב-Git?

+

כי זה המקום היחיד שבו מותר לדחוף (push) בלי לבקש סליחה!

+

😄

+

ממש מצחיקק

+

לאא נצחיק

+

חחחחח

+

הסבר הבדיחה: ב-Git, "push" הוא הפקודה שמשמשת לשלוח שינויים מהמערכת המקומית שלך למערכת המרכזית (repository). המילה "push" באנגלית יכולה להתפרש גם כ"דחיפה", ולכן הבדיחה משחקת על הכפילות הזו - מפתחים יכולים "לדחוף" את השינויים שלהם ל-Git בלי לחשוש מתגובה שלילית, בניגוד לדחיפה במציאות שבה אנשים עשויים להתנגד.

+

מקור הבדיחה: Reddit - Programmer Humor

+ +
+ ); +} \ No newline at end of file diff --git a/src/students/shira-carmi/styles.module.css b/src/students/shira-carmi/styles.module.css new file mode 100644 index 0000000..ef79fb3 --- /dev/null +++ b/src/students/shira-carmi/styles.module.css @@ -0,0 +1,124 @@ +/* ========================================================================== + משתני עיצוב קבועים (CSS Variables) - מאפשר לשנות צבעים בקלות בעתיד + ========================================================================== */ +:local { + --primary-color: #4f46e5; /* כחול אינדיגו מודרני */ + --primary-hover: #4338ca; /* אינדיגו כהה יותר למצב ריחוף */ + --text-dark: #1e293b; /* אפור כהה מאוד לקריאות מקסימלית */ + --text-muted: #64748b; /* אפור משני לשם הסטודנט */ + --bg-light: #f8fafc; /* רקע דף בהיר ונקי */ + --card-bg: #ffffff; /* רקע לבן נקי לכרטיסים */ + --border-color: #e2e8f0; /* גבולות עדינים */ + --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); +} + +/* ========================================================================== + עיצוב רכיב: ShiraCarmiCard (כרטיס הבדיחה ברשימה) + ========================================================================== */ +.card { + background-color: var(--card-bg); + border: 1px solid var(--border-color); + border-radius: 12px; + padding: 24px; + margin: 16px 0; + box-shadow: var(--shadow-sm); + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; + direction: rtl; /* מותאם לעברית, ישתנה אוטומטית לפי הטקסט */ + text-align: right; +} + +/* אפקט ריחוף מרשים ומעודן כשהעכבר מעל הכרטיס */ +.card:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-lg); + border-color: var(--primary-color); +} + +/* כותרת הבדיחה (ה-h2 בכרטיס) */ +.title { + font-size: 1.25rem; + font-weight: 600; + color: var(--text-dark); + margin: 0 0 8px 0; + line-height: 1.4; +} + +/* שם הסטודנט שכתב את הבדיחה */ +.name { + font-size: 0.9rem; + color: var(--text-muted); + margin: 0; + font-weight: 500; + display: inline-block; + position: relative; +} + +/* אלמנט עיצובי קטן (קו תחתון עדין) מתחת לשם הסטודנט בריחוף */ +.card:hover .name { + color: var(--primary-color); +} + + +/* ========================================================================== + עיצוב רכיב: ShiraCarmiJokePage (דף הצגת הבדיחה המלאה) + ========================================================================== */ +.jokePage { + background-color: var(--card-bg); + border: 1px solid var(--border-color); + border-radius: 16px; + padding: 40px; + max-width: 600px; + margin: 40px auto; + box-shadow: var(--shadow-md); + text-align: center; + direction: rtl; +} + +/* עיצוב הפסקה של ה-Setup (החלק הראשון של הבדיחה) */ +.jokePage p:first-of-type { + font-size: 1.5rem; + font-weight: 600; + color: var(--text-dark); + margin-bottom: 24px; + line-height: 1.5; +} + +/* עיצוב הפסקה של ה-Punchline (הפואנטה) */ +.jokePage p:nth-of-type(2) { + font-size: 1.3rem; + font-weight: 500; + color: var(--primary-color); + background-color: #f5f3ff; /* רקע סגלגל עדין שמדגיש את הפואנטה */ + padding: 16px 24px; + border-radius: 8px; + margin-bottom: 32px; + display: inline-block; + border-right: 4px solid var(--primary-color); /* פס הדגשה בצד */ +} + +/* עיצוב כפתור החזרה (Back Button) */ +.jokePage button { + background-color: transparent; + color: var(--text-muted); + border: 1px solid var(--border-color); + padding: 10px 20px; + font-size: 1rem; + font-weight: 500; + border-radius: 8px; + cursor: pointer; + transition: all 0.2s ease; + display: inline-flex; + align-items: center; + gap: 8px; +} + +/* אפקט ריחוף לכפתור החזרה */ +.jokePage button:hover { + background-color: #f1f5f9; + color: var(--text-dark); + border-color: var(--text-muted); + transform: translateX(2px); /* הזזה קלה ימינה באפקט החזרה */ +} \ No newline at end of file