diff --git a/frontend/src/components/drawer/DrawerSection.tsx b/frontend/src/components/drawer/DrawerSection.tsx index ea23c1d..8251fb2 100644 --- a/frontend/src/components/drawer/DrawerSection.tsx +++ b/frontend/src/components/drawer/DrawerSection.tsx @@ -1,98 +1,102 @@ import { GearFineIcon } from "@phosphor-icons/react"; interface DrawerSectionProps { - id: string; - title: string; - count: number; - subtext: string; - isOpen: boolean; - onClick: () => void; - children: React.ReactNode; - icon: React.ReactNode; + id: string; + title: string; + count: number; + subtext: string; + isOpen: boolean; + onClick: () => void; + children: React.ReactNode; + icon: React.ReactNode; } export function DrawerSection({ - id, - title, - count, - subtext, - isOpen, - onClick, - children, - icon, + id, + title, + count, + subtext, + isOpen, + onClick, + children, + icon, }: DrawerSectionProps) { - return ( + return ( +
- This drawer remains silent -
- )} -- It's encrypted and always safe in your drawer. -
- {type === "KEPT" ? ( -
- When you're ready,
-
- you can
- read it,
- send it to
- someone, or
- burn it to
- release
-
- Be assured that the letter will find you when the time is right.
-
- Till then,
-
- take a deep breath
-
- , manifest
- , and
-
- let it rest
-
- .
-
+ It's encrypted and always safe in your drawer. +
+ {type === "KEPT" ? ( +
+ When you're ready,
+
+ you can
+ read
+ it,
+ send it to
+ someone, or
+ burn it to
+ release
+
+ Be assured that the letter will find you when the time is right.
+
+ Till then,
+
+ take a deep breath
+
+ , manifest
+ , and
+
+ let it rest
+
+ .
+
- By vaulting this letter, you ask me to hold on to this.
-
- I'll remember to mail you this on the unlock date.
-
-
-
- But I won't let you read or rewrite this letter until then.
-
-
-
+ By vaulting this letter, you ask me to hold on to this.
+
+ I'll remember to mail you this on the unlock date.
+
+
+ But I won't let you read or rewrite this letter until then.
+
+
+
- Before we begin, let me make a small promise.
-
A fancy way of saying, I couldn't if I tried.
-
+ Before we begin, let me make a small promise.
+
+
A fancy way of saying, no one else can read them without your
+ key—not even me.
+
- Some words are meant to be unsaid, but they don't have to linger
- forever.
-
- Let the echoes of your unsaid be finally released.
-
+ Some words are meant to be unsaid, but they don't have to linger
+ forever.
+
+ Let the echoes of your unsaid be finally released.
+
+ May your soul find
+ solace,
+
+ just like your unsaid
+ words did.
+
- May your soul find
- solace,
-
- just like your unsaid
- words did.
-
+ You've carried these words long enough.
+
+ Send your letter now, and let the
+ unsaid finally
+ find its home.
+
+ They'll receive it exactly as you're seeing it now. ++
+ Nothing more, nothing less. +
- You've carried these words long enough.
-
- Send your letter now, and let the
- unsaid finally
- find its home.
-
- They'll receive it exactly as you're seeing it now. --
- Nothing more, nothing less. -
-
- The key never leaves your or the recipient's browser. -
-
+
+ The key never leaves your or the recipient's browser. +
++ Your letters. + Nobody else's. +
++ When you write or upload anything + (yes, even images) here, it gets + encrypted in your browser before anything leaves your device. What + reaches the server is something unreadable—and the server has no + way to change that, because the key never left you. +
+- Your letters. - Nobody else's. +
+
+ B@z1ng4A
- When you write or upload anything - (yes, even images) here, it gets - encrypted in your browser before anything leaves your device. What - reaches the server is something unreadable—and the server has no - way to change that, because the key never left you. -
-
-
- B@z1ng4A
-
Hello friend,
-I've never told anyone this...
-- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut - semper, justo eget vehicula vestibulum, enim enim suscipit - lectus, et sagittis nibh risus vel metus. Quisque eu ornare - ante, et gravida mauris. Vivamus massa justo, sagittis non - viverra sed, sodales non nisi. Nunc semper, massa a aliquet - dictum, enim nisi malesuada orci, et elementum lectus turpis - et velit. Nam vel felis vitae tortor dignissim malesuada. - Nam suscipit, justo eu elementum pulvinar, magna sem tempor - ex, vitae iaculis tellus odio non nisl. Duis dolor orci, - viverra ut finibus sed, aliquet vitae tortor. Proin sodales - ipsum ac ipsum hendrerit tempus. Nunc nec nibh nibh. Aenean - consequat auctor posuere. Integer sed magna volutpat, - efficitur nisl ut, dignissim neque. Vestibulum convallis nec - dui a euismod. Duis dignissim magna in mattis pulvinar. Sed - blandit nibh quis arcu ornare, sit amet fermentum nisi - rhoncus. -
-- 9e54d05f88bdd67a675b03bf1cd0a1647e2109b5aa18185ff6a9ba4c6959a19d -
-- SZ0Mq9M9sCZsdDB8HGjk7JfWG56Kaot8Lgma74MCusDUYibUGoR7VviWgvc341pvFV9/IAyot9KtlDvwIX1ZmUw9Oh340JMaajRQ7iNgVjHgAwmJAr2cLbReNqlF6xzaf3mIYkiK9BXNQekk2h/9XufklsqoIXpaK1re7xWQ8mdddzy6z4EQFVH/Ev3np5ERW/ss7Z1kqYWUnANK7olWNL/7GgZmhU+L29rgbR52kcH9fng7gnEI3KEuISYExYCg81G1VaJYspkW3A4qwcet+jXdgmbKvkux5qNw6gyNi9d/YqKV7OUNrmoH190rHdJ5A7HOIv3/SvPhb3Zm4sNF5PcMxmhM0+T9m5PejV1GhV9bMBHbbgacay7hZJU3O0+q+7fBAE/+pqfvZdv78lLDFSdtHAXUpYOvHPrI5BNNwuS3T+FK1zjurLnUPThlOSYRICoZSUcxVswXz897PoRmFNNvbal0dpKUmCFrBwV5c/W3d1+iZor5msbm/JxpbNtys59e0StSTwHKsxvxm/rTuUAxWSOmzt13MDBxxd2zyVnX8rtQ7mEjMJ8IHHpvhKjONoa2S11VBJY68Ee1vNrw7htu+wajvmXhHAyfh1lYql8pu8VvPUG7leEQ9I0pMY35Y/C1cYCBLkDT5zf8NeZFtbp0BNgHd+QDVSFH+GSnvTskU2BCio3YE+zE6cDhvLUOMy3e5RAtPqsi5VzpEUcdCwph+Z+1pFlTxiEZ62i4wNpqw2lhS3b/E9ifJgnncSgRHLtfw/VxHZCRc4tBQ24xSZ507lSlQch+5lQeO7rx2htgd2D7aGNx/UN/xmeuEd4a28AxNOVS3uYh3wTDh8CSXyBRCRPxrANOV1ZBojdfK+v5fOJNPgDn3r5/pG80L3FTkecRB0zFuKNG8jIzi5ADx9k4SlhRNo17gPl2if8gRA6tzTae4kbzieG+woxhUWj/qvXg0MQmg59VTK2HHS34exdKDP9a561svlw+lJ2AtM1EL9srJk8i3kiyEPUeIlaLl3AfgbbSuC2RhlzFFAYuQ06rbsSvEoe4rrYeMXxL9jwVsXX0xrp8H25mOJu3ahn5pFYzADMSGf4L11H1vDArpefj/lW+8zcmogxxBktYYNF/qU4v+9367hp4MEn/84tQPpmb47TL+XpVnl9tQ3r9OfOaW3zX7NkWZbqoX7OgdgHOtTLP/euQujSs2MAzMO4BmbuCS7pR/GTZwDqF1sXiWAkunjo2qpKHieqlvSVmtwEhh6wsNwYTKEkddmTqvKSx0fHRvs3D9lMGJfg7wLSz/3Otx3G65tk9l/3B3r87qQTvbqXmcfnFdEIaR8mO/yMyCKnxtJkJb3lEzNUOrvnSxwL7Gyn54TLTWA== -
-Hello friend,
+I've never told anyone this...
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut + semper, justo eget vehicula vestibulum, enim enim suscipit + lectus, et sagittis nibh risus vel metus. Quisque eu ornare + ante, et gravida mauris. Vivamus massa justo, sagittis non + viverra sed, sodales non nisi. Nunc semper, massa a aliquet + dictum, enim nisi malesuada orci, et elementum lectus turpis + et velit. Nam vel felis vitae tortor dignissim malesuada. + Nam suscipit, justo eu elementum pulvinar, magna sem tempor + ex, vitae iaculis tellus odio non nisl. Duis dolor orci, + viverra ut finibus sed, aliquet vitae tortor. Proin sodales + ipsum ac ipsum hendrerit tempus. Nunc nec nibh nibh. Aenean + consequat auctor posuere. Integer sed magna volutpat, + efficitur nisl ut, dignissim neque. Vestibulum convallis nec + dui a euismod. Duis dignissim magna in mattis pulvinar. Sed + blandit nibh quis arcu ornare, sit amet fermentum nisi + rhoncus. +
++ 9e54d05f88bdd67a675b03bf1cd0a1647e2109b5aa18185ff6a9ba4c6959a19d +
++ SZ0Mq9M9sCZsdDB8HGjk7JfWG56Kaot8Lgma74MCusDUYibUGoR7VviWgvc341pvFV9/IAyot9KtlDvwIX1ZmUw9Oh340JMaajRQ7iNgVjHgAwmJAr2cLbReNqlF6xzaf3mIYkiK9BXNQekk2h/9XufklsqoIXpaK1re7xWQ8mdddzy6z4EQFVH/Ev3np5ERW/ss7Z1kqYWUnANK7olWNL/7GgZmhU+L29rgbR52kcH9fng7gnEI3KEuISYExYCg81G1VaJYspkW3A4qwcet+jXdgmbKvkux5qNw6gyNi9d/YqKV7OUNrmoH190rHdJ5A7HOIv3/SvPhb3Zm4sNF5PcMxmhM0+T9m5PejV1GhV9bMBHbbgacay7hZJU3O0+q+7fBAE/+pqfvZdv78lLDFSdtHAXUpYOvHPrI5BNNwuS3T+FK1zjurLnUPThlOSYRICoZSUcxVswXz897PoRmFNNvbal0dpKUmCFrBwV5c/W3d1+iZor5msbm/JxpbNtys59e0StSTwHKsxvxm/rTuUAxWSOmzt13MDBxxd2zyVnX8rtQ7mEjMJ8IHHpvhKjONoa2S11VBJY68Ee1vNrw7htu+wajvmXhHAyfh1lYql8pu8VvPUG7leEQ9I0pMY35Y/C1cYCBLkDT5zf8NeZFtbp0BNgHd+QDVSFH+GSnvTskU2BCio3YE+zE6cDhvLUOMy3e5RAtPqsi5VzpEUcdCwph+Z+1pFlTxiEZ62i4wNpqw2lhS3b/E9ifJgnncSgRHLtfw/VxHZCRc4tBQ24xSZ507lSlQch+5lQeO7rx2htgd2D7aGNx/UN/xmeuEd4a28AxNOVS3uYh3wTDh8CSXyBRCRPxrANOV1ZBojdfK+v5fOJNPgDn3r5/pG80L3FTkecRB0zFuKNG8jIzi5ADx9k4SlhRNo17gPl2if8gRA6tzTae4kbzieG+woxhUWj/qvXg0MQmg59VTK2HHS34exdKDP9a561svlw+lJ2AtM1EL9srJk8i3kiyEPUeIlaLl3AfgbbSuC2RhlzFFAYuQ06rbsSvEoe4rrYeMXxL9jwVsXX0xrp8H25mOJu3ahn5pFYzADMSGf4L11H1vDArpefj/lW+8zcmogxxBktYYNF/qU4v+9367hp4MEn/84tQPpmb47TL+XpVnl9tQ3r9OfOaW3zX7NkWZbqoX7OgdgHOtTLP/euQujSs2MAzMO4BmbuCS7pR/GTZwDqF1sXiWAkunjo2qpKHieqlvSVmtwEhh6wsNwYTKEkddmTqvKSx0fHRvs3D9lMGJfg7wLSz/3Otx3G65tk9l/3B3r87qQTvbqXmcfnFdEIaR8mO/yMyCKnxtJkJb3lEzNUOrvnSxwL7Gyn54TLTWA== +
+- Of course, this level of - privacy comes with a - catch. No password reset - for you. -
-
-
+ Of course, this level of + privacy comes with a + catch. No password reset + for you. +
+
+
+
+ You can also
+ Self-host
+
+
+ git clone https://git.ramvignesh.dev/me/pi-ku.git
+
+
+ cd pi-ku
+
+
+ ./scripts/setup.sh
+
+
+ ./scripts/start.sh
+
+
+ Found something to report or request?
+
-
-
- You can also
- Self-host
-
- Found something to report or request?
-
- Please say so.
-
-
+ Built on the shoulders of open source.
+
- Built on the shoulders of open source.
-
+ a big thanks to
+
+ Web Crypto API
+
+ : Browser-native cryptography that runs entirely on your device. The
+ backbone of everything secure—your letters, keys—here.
+
- a big thanks to
-
- Web Crypto API
-
- : Browser-native cryptography that runs entirely on your device. The
- backbone of everything secure—your letters, keys—here.
-
+
+ DaisyUI
+
+ ·
+
+ Fabric.js
+
+ ·
+
+ Phosphor Icons
+
+ : The brilliant work by others that let me focus on the core
+ experience instead of re-inventing the wheel.
+
-
- DaisyUI
-
- ·
-
- Fabric.js
-
- ·
-
- Phosphor Icons
-
- : The brilliant work by others that let me focus on the core
- experience instead of re-inventing the wheel.
-
- Open source is what made
-
- git clone https://git.ramvignesh.dev/me/pi-ku.git
-
-
- cd pi-ku
-
-
- ./scripts/setup.sh
-
-
- ./scripts/start.sh
-
+ Open source is what made
- "the most honest thing was always in the - பி. கு." --
-
-
- Most of what we actually mean to say never gets said.
-
-
- It sits in drafts , in half-written notes, in the pause before we
- change the subject.
- Those words
-
- And that's okay... -
-
-
A space for the letters you meant to send, the afterthoughts
- that deserved more than silence.
-
+ "the most honest thing was always in the + பி. கு." ++
+
+
+ Most of what we actually mean to say never gets said.
+
+
+ It sits in drafts , in half-written notes, in the pause before we
+ change the subject.
+ Those words
+
+ And that's okay... +
+
+
A space for the letters you meant to send, the afterthoughts
+ that deserved more than silence.
+
-
+
of writing
-
- A person who left. A relationship that ended without a real
- ending. Someone who's still in your life but will never know
- what you felt. Some conversations just close before they're
- finished.
-
-
- Write the letter anyway. Keep it close. -
-- Not every letter is about distance. Sometimes you just need to - say something properly—without a text thread, without the - noise of a conversation already in motion. A letter slows it - down. -
-- Give people their due flowers while they can still smell them. -
-
- Not a journal. Not a note-to-self. A proper letter—to
- whoever you'll be in a year, or five, or ten.
-
- Ask yourself of the healed wounds, forgotten fears, or the
- things you finally learned to live with.
-
- Set a date and let a letter surprise you when you've long - forgotten writing it. -
-
- Some unsaid words just need to leave your headspace. There's no
- recipient, no subject line, no send button. Just the act of
- putting it somewhere outside of yourself.
- That's sometimes enough.
-
- Say it once. All of it. Then let it fade. -
-
- If any of these felt familiar,
-
- no matter how little,
-
- this is for you.
-
of writing
+
+ A person who left. A relationship that ended without a real
+ ending. Someone who's still in your life but will never know
+ what you felt. Some conversations just close before they're
+ finished.
+
+
+ Write the letter anyway. Keep it close. +
+ Not every letter is about distance. Sometimes you just need to + say something properly—without a text thread, without the + noise of a conversation already in motion. A letter slows it + down. +
++ Give people their due flowers while they can still smell them. +
+
+ Not a journal. Not a note-to-self. A proper letter—to
+ whoever you'll be in a year, or five, or ten.
+
+ Ask yourself of the healed wounds, forgotten fears, or the
+ things you finally learned to live with.
+
+ Set a date and let a letter surprise you when you've long + forgotten writing it. +
+
+ Some unsaid words just need to leave your headspace. There's no
+ recipient, no subject line, no send button. Just the act of
+ putting it somewhere outside of yourself.
+ That's sometimes enough.
+
+ Say it once. All of it. Then let it fade. +
+
+ If any of these felt familiar,
+
+ no matter how little,
+
+ this is for you.
+
Thank you so much for making it this far. Really.
+
+ Thank you so much for making it this far. Really.
- So, I gave it all I've got.
- Of course, frustrations, id-exisi crises, crept in from time to
- time. But
- The "why" behind all of this didn't just appear out of nowhere. For
- a while, I kept coming back to
-
- setHover({
- visible: true,
- x: e.clientX,
- y: e.clientY,
- })
- }
- onMouseMove={(e) =>
- setHover((h) => ({
- ...h,
- x: e.clientX,
- y: e.clientY,
- }))
- }
- onMouseLeave={() => setHover((h) => ({ ...h, visible: false }))}
- >
- Saajan
-
- from
-
- The Lunchbox
-
- —brought to life with such subtle brilliance by
-
- Irrfan Khan
-
-
- There's a lot that goes
-
- unsaid
-
- these days. Not for a lack of feeling, not for the lack of time, but
- because the ways we reach each other have quietly changed. We're
- always reachable digitally, yet
- somehow the things that actually matter most end up staying
- inside—a trapped one at that.
- Or maybe it won't—but it's worth a try.
-
- —Ram
-
- P.S. And just so we're clear—I wrote every word of this
- myself—as I continue to back
-
- Em DASH
-
- . Why should AI get to have all the fun with 'em em dashes?
- (get it?)
-
+ This started as a
+
- Honest Speak
-
-
- This started as a
-
- CS50W
-
- capstone—one I kept postponing until I ran out of excuses.
- When I sat down to build it, it felt heavier than a typical
- assignment—not just because things were difficult. It had to
- be something that outlasted the grade. I wanted to make this one
- count more than anything else I'd ever made. Something as close to
- perfect as I could get it. Something to be remembered for—a
- Swan Song if you will.
-
- Maybe writing can/will help. Maybe putting words somewhere
- deliberate makes them feel less like a weight you're carrying alone.
-
-
-
So, I gave it all I've got.
+
+ Of course, frustrations, id-exisi crises, crept in from time to
+ time. But
+ The "why" behind all of this didn't just appear out of nowhere. For
+ a while, I kept coming back to
+
+ setHover({
+ visible: true,
+ x: e.clientX,
+ y: e.clientY,
+ })
+ }
+ onMouseMove={(e) =>
+ setHover((h) => ({
+ ...h,
+ x: e.clientX,
+ y: e.clientY,
+ }))
+ }
+ onMouseLeave={() => setHover((h) => ({ ...h, visible: false }))}
+ >
+ Saajan
+
+ from
+
+ The Lunchbox
+
+ —brought to life with such subtle brilliance by
+
+ Irrfan Khan
+
+
+
+ There's a lot that goes
+
+ unsaid
+
+ these days. Not for a lack of feeling, not for the lack of
+ time, but because the ways we reach each other have quietly changed.
+ We're always reachable digitally,
+ yet somehow the things that actually matter most end up
+ staying inside—a trapped one at that.
+
+ Maybe writing can/will help. Maybe putting words somewhere
+ deliberate makes them feel less like a weight you're carrying alone.
+
Or maybe it won't—but it's worth a try.
+
+
+ —Ram +
++ P.S. And just so we're clear—I wrote every word of this + myself—as I continue to back + + Em DASH + + . Why should AI get to have all the fun with 'em em dashes? + (get it?) +
+++ I think we forget things if there is nobody to tell them. + + ~ Saajan Fernandes, + + The Lunchbox + + +
- Welcome to
Just one more step and you can start writing timeless letters.
- Choose a password you won't forget.
- Just like life,
- there is no reset
- here. If you lose it, your letters cannot be recovered.
-
+ Choose a password you won't forget.
+ Just like life,
+ there is no reset
+ here. If you lose it, your letters cannot be recovered.
+
- You're one train away from starting your
- Nothing yet? Sometimes letters take the wrong train. Check your spam
- folder.
-
-
- The link expires in 24 hours.
-
-
I'm patient... but not endlessly so
-
+ You're one train away from starting your
+ Nothing yet? Sometimes letters take the wrong train. Check your spam
+ folder.
+
+
+ The link expires in 24 hours.
+
+
I'm patient... but not endlessly so
+