Skip to content

Commit fd570a2

Browse files
committed
merged letter page to english
1 parent 2f86f0a commit fd570a2

File tree

4 files changed

+146
-154
lines changed

4 files changed

+146
-154
lines changed

src/assets/styles/english.css

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,81 @@
1717
padding: 0;
1818
color: var(--letter__txt--2);
1919
transition: color 0.5s ease-in;
20+
}
21+
22+
/* Controls styles */
23+
.controls {
24+
position: relative;
25+
background-color: color-mix(in srgb, var(--background) 95%, var(--text) 5%);
26+
padding: 1rem;
27+
z-index: 100;
28+
display: flex;
29+
justify-content: space-around;
30+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
31+
color: var(--text);
32+
}
33+
34+
.control-group {
35+
display: flex;
36+
align-items: center;
37+
gap: 1rem;
38+
accent-color: var(--primary);
39+
}
40+
41+
.control-group label {
42+
font-weight: bold;
43+
color: var(--text);
44+
}
45+
46+
.control-group select,
47+
.control-group button {
48+
padding: 0.5rem;
49+
border-radius: 4px;
50+
border: 1px solid var(--border);
51+
background-color: var(--background);
52+
color: var(--text);
53+
}
54+
55+
.control-group button {
56+
cursor: pointer;
57+
transition: all 0.3s;
58+
}
59+
60+
.control-group button:hover,
61+
.control-group select:hover {
62+
background-color: color-mix(in srgb, var(--background) 90%, var(--text) 10%);
63+
border-color: var(--primary);
64+
}
65+
66+
/* Background styles */
67+
.bg-gradient1 {
68+
background: linear-gradient(45deg, #ff6b6b, #4ecdc4);
69+
}
70+
71+
.bg-gradient2 {
72+
background: linear-gradient(45deg, #a8e6cf, #dcedc1);
73+
}
74+
75+
.bg-pattern1 {
76+
background-image: repeating-linear-gradient(45deg,
77+
rgba(0, 0, 0, 0.1) 0px,
78+
rgba(0, 0, 0, 0.1) 2px,
79+
transparent 2px,
80+
transparent 4px);
81+
}
82+
83+
.no-background {
84+
background: none !important;
85+
}
86+
87+
@keyframes letterPop {
88+
0% {
89+
transform: scale(0.8);
90+
opacity: 0.5;
91+
}
92+
93+
100% {
94+
transform: scale(1);
95+
opacity: 1;
96+
}
2097
}

src/pages/english.astro

Lines changed: 69 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,47 @@ import Help from "@/components/Help.astro";
1111
description="Just press any letter fron keyboard and it display the letter and it's relative word in clear way and if you type again it will change the color"
1212
/>
1313
</Fragment>
14-
<article class="container__hindi">
14+
<div class="controls" id="controls">
15+
<div class="control-group">
16+
<label>Background:</label>
17+
<select id="bgSelector">
18+
<option value="none">None</option>
19+
<option value="gradient1">Gradient 1</option>
20+
<option value="gradient2">Gradient 2</option>
21+
<option value="pattern1">Pattern 1</option>
22+
</select>
23+
<button id="toggleBg">Toggle Background</button>
24+
</div>
25+
26+
<div class="control-group">
27+
<label>Font:</label>
28+
<select id="fontSelector">
29+
<option value="Arial">Arial</option>
30+
<option value="Georgia">Georgia</option>
31+
<option value="Times New Roman">Times New Roman</option>
32+
</select>
33+
<input type="color" id="colorPicker" value="#000000" />
34+
</div>
35+
</div>
36+
<article class="container__hindi" id="letterContainer">
1537
<div class="letter">A</div>
1638
</article>
1739
<script>
1840
import { colorBox, isAlphabet, random } from "@/utils/utils.js";
1941

2042
const letterDiv = document.querySelector(".letter") as HTMLDivElement;
43+
const controls = document.getElementById("controls") as HTMLElement;
44+
const letterContainer = document.getElementById("letterContainer") as HTMLElement;
45+
const bgSelector = document.getElementById("bgSelector") as HTMLInputElement;
46+
const fontSelector = document.getElementById("fontSelector") as HTMLInputElement;
47+
const colorPicker = document.getElementById("colorPicker") as HTMLInputElement;
48+
const toggleBg = document.getElementById("toggleBg") as HTMLButtonElement;
49+
50+
// Event Listeners
51+
bgSelector?.addEventListener("change", updateBackground);
52+
fontSelector?.addEventListener("change", updateFont);
53+
colorPicker?.addEventListener("change", updateColor);
54+
toggleBg?.addEventListener("click", toggleBackground);
2155

2256
document.addEventListener(
2357
"keydown",
@@ -27,7 +61,7 @@ import Help from "@/components/Help.astro";
2761
const { key, keyCode } = e;
2862
if (isAlphabet(keyCode)) {
2963
const keyCapital = key.toUpperCase();
30-
drawLetter(keyCapital, color);
64+
drawLetter(keyCapital, colorPicker.value || color);
3165
}
3266
},
3367
false
@@ -36,6 +70,39 @@ import Help from "@/components/Help.astro";
3670
const drawLetter = (letter: string, color = "pink") => {
3771
letterDiv.innerHTML = letter;
3872
letterDiv.style.color = color;
73+
letterDiv.style.animation = "letterPop 0.3s ease-out";
74+
setTimeout(() => {
75+
letterDiv.style.animation = "";
76+
}, 300);
3977
};
78+
79+
function updateBackground() {
80+
letterContainer.className = "container__hindi";
81+
if (bgSelector.value !== "none") {
82+
letterContainer.classList.add(`bg-${bgSelector.value}`);
83+
}
84+
}
85+
86+
function updateFont() {
87+
letterDiv.style.fontFamily = fontSelector.value;
88+
}
89+
90+
function updateColor() {
91+
letterDiv.style.color = colorPicker.value;
92+
}
93+
94+
function toggleBackground() {
95+
letterContainer.classList.toggle("no-background");
96+
}
97+
98+
// Intersection Observer for sticky header
99+
const observer = new IntersectionObserver(
100+
([e]) => {
101+
controls.classList.toggle("sticky", e.intersectionRatio < 1);
102+
},
103+
{ threshold: [1] }
104+
);
105+
106+
observer.observe(controls);
40107
</script>
41108
</BaseLayout>

src/pages/letter.astro

Lines changed: 0 additions & 146 deletions
This file was deleted.

src/utils/constants.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,6 @@ export const NavbarLinks: LinkProps[] = [
6767
path: "/map",
6868
isActive: true
6969
},
70-
{
71-
name: "Letter",
72-
title: "Letter Pad",
73-
path: "/letter",
74-
isActive: true
75-
},
7670
{
7771
name: "Feedback",
7872
title: "Feedback Form",

0 commit comments

Comments
 (0)