Sagar Kothari avatar

πŸš€ **Day 9 – Toasts, Laughs & Custom Magic!** 🍞✨

sagarkothari88

Published: 04 Aug 2025 β€Ί Updated: 04 Aug 2025πŸš€ **Day 9 – Toasts, Laughs & Custom Magic!** 🍞✨

πŸš€ **Day 9 – Toasts, Laughs & Custom Magic!** 🍞✨

Hey Hive Community Members! 🐝

Welcome back to my wild ReactJS learning ride 🎒 β€” and guess what? We’re already on Day 9! If you've missed previous episodes, don't worry. Grab some popcorn 🍿 and catch up with the epic saga below:


πŸ“– ReactJS Journey So Far


πŸ₯³ Today's Adventure: Custom Toast Component

As highlighted in earlier posts, there’s a super cool way to show toast messages with the 'sonner' library (link)... But! I created my own Toast component. It's my first React babyβ€”how could I abandon it? 🀣

So, today we jazz things up and show how to customize our own toast messages and style them like a pro. πŸ§‘β€πŸŽ¨


πŸ–ΌοΈ Toasty Visuals

image for toast


πŸ’‘ Define Custom Enums for Toasts

// ToastType as a string enum
export enum ToastType {
  Error = "error",
  Warning = "warning",
  Info = "info",
  Success = "success"
}

// ToastStyle as a string enum
export enum ToastStyle {
  Regular = "regular",
  Soft = "soft",
  Outline = "outline",
  Dash = "dash"
}

Because when life hands you errors, turn them into enums! πŸ˜‚


🎨 SVG Icons for Every Occasion

  function errorPath() {
    return <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />;
  }

  function warningPath() {
    return <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
  }

  function successPath() {
    return <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />;
  }

  function infoPath() {
    return <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />;
  }

Why pick one mood when you can have four? πŸ˜‰


βš™οΈ Toast Props Ready for Showbiz

type ToastProps = {
  message: string;
  type: ToastType;
  style: ToastStyle;
  show: boolean;
  setShow: React.Dispatch<React.SetStateAction<boolean>>;
};

const Toast: React.FC<ToastProps> = ({ message, type, style, show, setShow }) => {

Toast gets picky: β€œI want my message! And my style! And my own show!”


πŸ–ŒοΈ SVG Rendering, Like a Boss

<svg xmlns="http://www.w3.org/2000/svg" className="h-6 w-6 shrink-0 stroke-current" fill="none" viewBox="0 0 24 24">
    {path()}
</svg>

Unleashing the right icon for the right moment⏳

🧩 Path Selector – Icon Power!

function path() {
  switch (type) {
    case ToastType.Error: return errorPath();
    case ToastType.Info: return infoPath();
    case ToastType.Warning: return warningPath();
    case ToastType.Success: return successPath();
    default: return successPath();
  }
}

🌈 Dynamic Class Value: Automatic Styling!

<div role="alert" className={`alert ${classValue()} shadow-lg px-4 py-2 rounded-md`}>
function classValue() {
  switch (type) {
    case ToastType.Error: return "alert-error";
    case ToastType.Info: return "alert-info";
    case ToastType.Warning: return "alert-warning";
    case ToastType.Success: return "alert-success";
    default: return "alert-success";
  }
}

🎩 Supercharged Toast Display Styles

function toastStyle() {
  switch (style) {
    case ToastStyle.Dash: return "alert-dash";
    case ToastStyle.Soft: return "alert-soft";
    case ToastStyle.Outline: return "alert-outline";
    case ToastStyle.Regular: return "";
    default: return "";
  }
}

Update toast-alert-jsx

<div role="alert" className={`alert ${classValue()} ${toastStyle} shadow-lg px-4 py-2 rounded-md`}>

πŸš€ Implement Your Toast! like a boss

<Toast
    message={errorMessage}
    style={toastStyle}
    type={toastType}
    show={showToast}
    setShow={setShowToast}
/>

Here are the sample screenshots from my project to let you know how it looks.

Screenshot 2025-08-02 at 7.59.42 AM.png

Screenshot 2025-08-02 at 7.57.41 AM.png

Now you can send out all the success, error, or info vibes you want!

πŸ₯‚ Cheers & Closing

That’s it for this post! I hope you had some laughs, learned how to supercharge your own toast component, and got more confident with customizing ReactJS components. 🍻

🌟 Thank you so much for reading my post. More power to Hive Blockchain. More power to Hive community members! Cheers and high fives to YOU for following along. Have a good one! πŸš€πŸŽ‰


πŸ“ Final Note


πŸš€ My Contributions to ♦️ Hive Ecosystem

ContributionToHiveEcosystem
Hive Witness NodeHive API Node (in progress)3Speak Video Encoder Node Operator (highest number of nodes)3Speak Mobile App Developer
3Speak Podcast App Developer3Speak Shorts App Developer3Speak Support & Maintenance TeamDistriator Developer
CheckinWithXYZHive InboxHiFindHive Donate App
Contributed to HiveAuth Mobile AppEcency ↔ 3Speak IntegrationEcency ↔ InLeo IntegrationEcency ↔ Actifit Integration
Hive Stats AppVote for Witness AppHiveFlutterKitNew 3Speak App

πŸ™Œ Support Back

❀️ Appreciate my work? Consider supporting threespeak@threespeak & sagarkothari88@sagarkothari88! ❀️

VoteForWitness
sagarkothari88sagarkothari88@sagarkothari88
threespeakthreespeak@threespeak

Leave πŸš€ **Day 9 – Toasts, Laughs & Custom Magic!** 🍞✨ to:

Written by

App Developer on Hive - Distriator, Check in With XYZ, 3Speak, HiveSuite.app.

Read more #hive posts


Best Posts From Sagar Kothari

We have not curated any of sagarkothari88's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From Sagar Kothari