Skip to content

Commit 253e69f

Browse files
Merge branch 'main' into 499-ui-fixes
2 parents 16016ad + 92414aa commit 253e69f

File tree

13 files changed

+752
-434
lines changed

13 files changed

+752
-434
lines changed

package-lock.json

Lines changed: 420 additions & 372 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,19 @@
1818
"format:check": "prettier --check 'src/**/*.{js,jsx,ts,tsx,json,css,md}'"
1919
},
2020
"dependencies": {
21-
"@tailwindcss/vite": "^4.1.14",
22-
"axios": "^1.12.2",
21+
"@tailwindcss/vite": "^4.1.16",
22+
"axios": "^1.13.2",
2323
"class-variance-authority": "^0.7.1",
2424
"clsx": "^2.1.1",
25-
"dompurify": "^3.2.7",
26-
"framer-motion": "^12.23.22",
25+
"dompurify": "^3.3.0",
26+
"framer-motion": "^12.23.24",
2727
"hastscript": "^9.0.1",
28-
"lucide-react": "^0.544.0",
29-
"react": "^19.1.1",
30-
"react-dom": "^19.1.1",
28+
"lucide-react": "^0.552.0",
29+
"react": "^19.2.0",
30+
"react-dom": "^19.2.0",
3131
"react-markdown": "^10.1.0",
3232
"react-responsive-carousel": "^3.2.23",
33-
"react-router-dom": "^7.9.3",
33+
"react-router-dom": "^7.9.5",
3434
"rehype-autolink-headings": "^7.1.0",
3535
"rehype-raw": "^7.0.0",
3636
"rehype-sanitize": "^6.0.0",
@@ -39,29 +39,29 @@
3939
"remark-gfm": "^4.0.1",
4040
"remark-supersub": "^1.0.0",
4141
"tailwind-merge": "^3.3.1",
42-
"tailwindcss": "^4.1.14",
42+
"tailwindcss": "^4.1.16",
4343
"tailwindcss-animate": "^1.0.7",
4444
"unist-util-visit": "^5.0.0"
4545
},
4646
"devDependencies": {
47-
"@eslint/js": "^9.36.0",
48-
"@types/node": "^24.6.1",
49-
"@types/react": "^19.1.16",
50-
"@types/react-dom": "^19.1.9",
51-
"@vitejs/plugin-react": "^5.0.4",
52-
"eslint": "^9.36.0",
47+
"@eslint/js": "^9.39.1",
48+
"@types/node": "^24.10.0",
49+
"@types/react": "^19.2.2",
50+
"@types/react-dom": "^19.2.2",
51+
"@vitejs/plugin-react": "^5.1.0",
52+
"eslint": "^9.39.1",
5353
"eslint-config-prettier": "^10.1.8",
5454
"eslint-plugin-prettier": "^5.5.4",
5555
"eslint-plugin-react": "^7.37.5",
56-
"eslint-plugin-react-hooks": "^5.2.0",
57-
"eslint-plugin-react-refresh": "^0.4.22",
56+
"eslint-plugin-react-hooks": "^7.0.1",
57+
"eslint-plugin-react-refresh": "^0.4.24",
5858
"gh-pages": "^6.3.0",
59-
"globals": "^16.4.0",
60-
"markdownlint": "^0.38.0",
59+
"globals": "^16.5.0",
60+
"markdownlint": "^0.39.0",
6161
"markdownlint-cli": "^0.45.0",
6262
"prettier": "^3.6.2",
6363
"typescript": "~5.9.3",
64-
"typescript-eslint": "^8.45.0",
65-
"vite": "^7.1.7"
64+
"typescript-eslint": "^8.46.3",
65+
"vite": "^7.1.12"
6666
}
6767
}

src/components/AboutUs/HeroSection.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { motion } from 'framer-motion';
2+
import { useState } from 'react';
23
import { heroAnimations } from '@/styles/Animations';
34
import {
45
fadeIn,
@@ -12,6 +13,9 @@ import {
1213

1314
const HeroSection = () => {
1415
const title = 'ABOUT US'.split('');
16+
const [randomRotations] = useState(() =>
17+
title.map(() => Math.random() * 10 - 5),
18+
);
1519

1620
return (
1721
<motion.div
@@ -71,7 +75,7 @@ const HeroSection = () => {
7175
}
7276
whileHover={{
7377
scale: 1.2,
74-
rotate: Math.random() * 10 - 5,
78+
rotate: randomRotations[index],
7579
transition: { duration: 0.2 },
7680
}}
7781
>

src/components/DeveloperLinks.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ const DeveloperLinks = () => {
6767

6868
{/* Arrow with enhanced animation */}
6969
<div className="relative z-10 flex items-center justify-center w-8 h-8 rounded-full bg-red-100 group-hover:bg-red-200 transition-colors ml-4 flex-shrink-0">
70-
<span className="text-gray-600 group-hover:text-red-700 transform group-hover:translate-x-1 transition-all">
70+
<span className="-mt-1 text-gray-600 group-hover:text-red-700 transform group-hover:translate-x-1 transition-all">
7171
7272
</span>
7373
</div>

src/components/FAQItem.tsx

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,14 @@ const faqItemVariants = {
1313
};
1414

1515
const faqQuestionButtonVariants = {
16-
hover: { scale: 1.02 },
16+
initial: { backgroundColor: 'rgba(0,0,0,0)', y: 0 },
17+
hover: {
18+
scale: 1.02,
19+
backgroundColor: 'rgba(0,0,0,0.12)',
20+
y: -1,
21+
boxShadow: '0 4px 8px rgba(0,0,0,0.1)',
22+
transition: { type: 'spring' as const, stiffness: 300, damping: 15 },
23+
},
1724
};
1825

1926
const faqToggleIconVariants = (isOpen: boolean) => ({
@@ -44,17 +51,17 @@ const FAQItem = ({ index, question, answer }: FAQItemProps) => {
4451
animate="animate"
4552
>
4653
<motion.button
47-
className="w-full text-left py-4 text-lg font-medium flex justify-between items-center hover:cursor-pointer text-gray-900 dark:text-gray-100"
54+
className="w-full text-left py-4 px-4 text-lg font-medium flex justify-between items-center hover:cursor-pointer text-gray-900 dark:text-gray-100 rounded-md"
4855
onClick={toggleFAQ}
4956
whileHover="hover"
5057
variants={faqQuestionButtonVariants}
5158
>
52-
{question}
59+
<span className="flex-1">{question}</span>
5360
<motion.span
5461
variants={faqToggleIconVariants(isOpen)}
5562
initial="initial"
5663
animate="animate"
57-
className="text-gray-600 dark:text-gray-400"
64+
className="text-gray-600 dark:text-gray-400 ml-2"
5865
>
5966
{isOpen ? '-' : '+'}
6067
</motion.span>
@@ -65,7 +72,7 @@ const FAQItem = ({ index, question, answer }: FAQItemProps) => {
6572
animate="animate"
6673
style={{ overflow: 'hidden' }}
6774
>
68-
<p className="p-4 text-gray-700 dark:text-gray-300">{answer}</p>
75+
<p className="px-6 pb-4 text-gray-700 dark:text-gray-300">{answer}</p>
6976
</motion.div>
7077
</motion.div>
7178
);

src/components/TryNow/Paragraph.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ const Paragraph: React.FC<ParagraphProps> = ({
1616
title,
1717
content,
1818
button,
19-
buttonLink,
2019
links,
2120
}) => {
2221
const contentPoints = content.includes('\n')
@@ -80,7 +79,9 @@ const Paragraph: React.FC<ParagraphProps> = ({
8079
className="mt-4 bg-blue-600 text-white font-bold py-2 px-6 rounded-full shadow-lg hover:bg-blue-700 transition"
8180
whileHover="hover"
8281
variants={paragraphAnimations.button}
83-
onClick={() => window.open(buttonLink, '_blank')}
82+
onClick={() =>
83+
window.open('https://musicblocks.sugarlabs.org/', '_blank')
84+
}
8485
>
8586
{button}
8687
</motion.button>

src/constants/Header.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export const navigationData = {
55
items: [
66
{ label: 'About Us', path: '/about-us' },
77
{ label: 'Leadership', path: '/leadership' },
8+
{ label: 'Authors', path: '/authors' },
89
{ label: 'Contact Us', path: '/contact-us' },
910
{ label: 'FAQs', path: '/faqs' },
1011
],

src/constants/TryCardData.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export const TryCardData: CardDataType[] = [
7575
{
7676
title: 'Desktop/laptop installation',
7777
description:
78-
'Sugar Learning platform can be installed as a full operating system on ost desktop and laptop computers.',
78+
'Sugar Learning platform can be installed as a full operating system on most desktop and laptop computers.',
7979
tryNowText: 'Try Desktop Installation now!',
8080
tryNowHref: 'https://fedoraproject.org/spins/soas/download/',
8181
learnMoreText: 'Learn more about Installation',

src/pages/About/FAQs.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Header from '@/sections/Header';
22
import Footer from '@/sections/Footer';
3-
import { useEffect, useState } from 'react';
3+
import { useMemo, useState } from 'react';
44
import { stats } from '@/constants/Stats';
55
import faqs, { FAQ_CATEGORIES } from '@/constants/aboutUs/faqs';
66
import { quickAnswers } from '@/constants/aboutUs/quickanswers';
@@ -17,14 +17,11 @@ import FAQItem from '@/components/FAQItem';
1717

1818
const FAQs = () => {
1919
const [selectedCategory, setSelectedCategory] = useState<string>('all');
20-
const [filteredFaqs, setFilteredFaqs] = useState(faqs);
2120

22-
useEffect(() => {
23-
const filtered =
24-
selectedCategory === 'all'
25-
? faqs
26-
: faqs.filter((faq) => faq.category === selectedCategory);
27-
setFilteredFaqs(filtered);
21+
const filteredFaqs = useMemo(() => {
22+
return selectedCategory === 'all'
23+
? faqs
24+
: faqs.filter((faq) => faq.category === selectedCategory);
2825
}, [selectedCategory]);
2926

3027
return (

0 commit comments

Comments
 (0)