-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4f3cea0
commit 414680b
Showing
7 changed files
with
82 additions
and
96 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,14 +13,14 @@ const PrivacyPolicy: React.FC = () => { | |
Your privacy is important to us. This Privacy Policy explains how we handle user information when you visit our website. | ||
</p> | ||
|
||
<h2 className="text-2xl font-semibold mb-2">Information We Don't Collect</h2> | ||
<h2 className="text-2xl font-semibold mb-2">Information We Don't Collect</h2> | ||
<p className="mb-6"> | ||
We want to assure you that we do not collect any personal information from users visiting our website. You can explore our site anonymously without providing any identifiable details. | ||
</p> | ||
|
||
<h2 className="text-2xl font-semibold mb-2">How We Use Your Information</h2> | ||
<p className="mb-6"> | ||
Since we don't collect any user information, there is no usage of such information. Your privacy is of utmost importance to us, and you can navigate our site without concerns about your personal data being used for any purposes. | ||
Since we don't collect any user information, there is no usage of such information. Your privacy is of utmost importance to us, and you can navigate our site without concerns about your personal data being used for any purposes. | ||
</p> | ||
|
||
<h2 className="text-2xl font-semibold mb-2">Cookies</h2> | ||
|
@@ -40,25 +40,23 @@ const PrivacyPolicy: React.FC = () => { | |
|
||
<h2 className="text-2xl font-semibold mb-2">Contact Us</h2> | ||
<p className="mb-6"> | ||
If you have any questions or concerns about our Privacy Policy, please feel free to contact us at | ||
If you have any questions or concerns about our Privacy Policy, please feel free to contact us at{' '} | ||
<a href='mailto:[email protected]' className='text-blue-300'> | ||
[email protected] | ||
[email protected] | ||
</a>. | ||
|
||
We are committed to addressing any inquiries related to your privacy and data security. | ||
</p> | ||
|
||
<h2 className="text-2xl font-semibold mb-2">Data Security</h2> | ||
<p className="mb-6"> | ||
We take the security of your data seriously. While we don't collect personal information, we employ measures to protect any data that may be collected through cookies or other means. Our security measures include encryption, access controls, and regular security assessments. | ||
We take the security of your data seriously. While we don't collect personal information, we employ measures to protect any data that may be collected through cookies or other means. Our security measures include encryption, access controls, and regular security assessments. | ||
</p> | ||
|
||
<h2 className="text-2xl font-semibold mb-2">Children's Privacy</h2> | ||
<h2 className="text-2xl font-semibold mb-2">Children's Privacy</h2> | ||
<p className="mb-6"> | ||
Our website is not directed at individuals under the age of 13. We do not knowingly collect information from children. If you believe that a child has provided us with personal information, please contact us, and we will take steps to delete such information. | ||
</p> | ||
|
||
|
||
</div> | ||
</> | ||
); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,98 +1,86 @@ | ||
"use client" | ||
import Programs from "@/comps/Programs"; | ||
import Program from "@/comps/Program"; | ||
import { | ||
Dialog, | ||
DialogContent, | ||
DialogDescription, | ||
DialogHeader, | ||
DialogTitle, | ||
DialogTrigger, | ||
DialogFooter, | ||
DialogClose | ||
} from "@/components/ui/dialog" | ||
import { Button } from "@/components/ui/button"; | ||
import { Label } from "@/components/ui/label" | ||
import { Input } from "@/components/ui/input" | ||
import { CopyIcon } from "@radix-ui/react-icons" | ||
import { useEffect, useState } from "react"; | ||
Dialog, | ||
DialogContent, | ||
DialogHeader, | ||
DialogTitle, | ||
DialogTrigger, | ||
DialogClose, | ||
|
||
} from "@/components/ui/dialog"; | ||
import { Button } from "@/components/ui/button"; | ||
import { useEffect, useState } from "react"; | ||
|
||
type FilterOption = "" | "Yes" | "No"; | ||
|
||
export default function Programs() { | ||
const [filterOption, setFilterOption] = useState<FilterOption>(""); | ||
|
||
const handleFilterChange = (newOption: FilterOption) => { | ||
setFilterOption(newOption); | ||
}; | ||
|
||
export default function programs() { | ||
const [filterOption, setFilterOption] = useState(""); | ||
|
||
const handleFilterChange = (newOption) => { | ||
setFilterOption(newOption); | ||
}; | ||
|
||
return ( | ||
<div> | ||
<section className="mx-4 "> | ||
return ( | ||
<div> | ||
<section className="mx-4 "> | ||
<div className="container flex flex-col items-center gap-4 text-center"> | ||
<h1 className="tracking-tight font-semibold text-2xl sm:text-5xl md:text-6xl lg:text-5xl mb-4 dark:text-white"> | ||
Opensource Programs List | ||
</h1> | ||
<p className="max-w-[42rem] leading-normal dark:text-white text-muted-foreground sm:text-xl sm:leading-8"> | ||
Discover a curated collection of diverse open source programs. Filter based on stipend availability and find opportunities that match your interests and skills. | ||
|
||
</p> | ||
</div> | ||
<h1 className="tracking-tight font-semibold text-2xl sm:text-5xl md:text-6xl lg:text-5xl mb-4 dark:text-white"> | ||
Opensource Programs List | ||
</h1> | ||
<p className="max-w-[42rem] leading-normal dark:text-white text-muted-foreground sm:text-xl sm:leading-8"> | ||
Discover a curated collection of diverse open source programs. Filter based on stipend availability and find opportunities that match your interests and skills. | ||
</p> | ||
</div> | ||
<Filter onFilterChange={handleFilterChange} /> | ||
</section> | ||
<Programs filter_option={filterOption} /> | ||
</div> | ||
); | ||
} | ||
function Filter({ onFilterChange }) { | ||
const [opt, setOpt] = useState(""); | ||
useEffect(() => { | ||
// Call the callback function whenever opt changes | ||
onFilterChange(opt); | ||
}, [opt, onFilterChange]); | ||
return ( | ||
<div className="dark:text-white dark:bg-[#09090B]"> | ||
<Dialog> | ||
<DialogTrigger asChild> | ||
<Button variant="outline">Filters</Button> | ||
</DialogTrigger> | ||
<DialogContent className="sm:max-w-md"> | ||
<DialogHeader className="dark:text-white "> | ||
<DialogTitle className="dark:text-white ">Filters</DialogTitle> | ||
</DialogHeader> | ||
<div className="flex items-center space-x-2"> | ||
</section> | ||
<Program filter_option={filterOption} /> | ||
</div> | ||
); | ||
} | ||
|
||
function Filter({ onFilterChange }) { | ||
const [opt, setOpt] = useState(""); | ||
|
||
useEffect(() => { | ||
// Call the callback function whenever opt changes | ||
onFilterChange(opt); | ||
}, [opt, onFilterChange]); | ||
|
||
return ( | ||
<div className="dark:text-white dark:bg-[#09090B]"> | ||
<Dialog> | ||
<DialogTrigger asChild> | ||
<Button variant="outline">Filters</Button> | ||
</DialogTrigger> | ||
<DialogContent className="sm:max-w-md"> | ||
<DialogHeader className="dark:text-white "> | ||
<DialogTitle className="dark:text-white ">Filters</DialogTitle> | ||
</DialogHeader> | ||
<div className="flex items-center space-x-2"> | ||
<DialogClose asChild> | ||
<Button size="sm" className="px-3" onClick={() => setOpt("Yes")}> | ||
<span className="sr-only">Copy</span> | ||
With stipend | ||
</Button> | ||
</DialogClose> | ||
|
||
|
||
|
||
<DialogClose asChild> | ||
</DialogClose> | ||
|
||
<DialogClose asChild> | ||
<Button onClick={() => setOpt("No")} size="sm" className="px-3"> | ||
<span className="sr-only">Copy</span> | ||
No stipend | ||
</Button> | ||
</DialogClose> | ||
</DialogClose> | ||
|
||
<DialogClose asChild> | ||
<DialogClose asChild> | ||
<Button size="sm" className="px-3" onClick={() => setOpt("")}> | ||
<span className="sr-only">Copy</span> | ||
Default | ||
</Button> | ||
</DialogClose> | ||
|
||
</div> | ||
</DialogContent> | ||
</Dialog> | ||
</div> | ||
); | ||
} | ||
|
||
</DialogClose> | ||
</div> | ||
</DialogContent> | ||
</Dialog> | ||
</div> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters