Skip to content

Instantly share code, notes, and snippets.

View imanshu03's full-sized avatar
:electron:

Imanshu Rathore imanshu03

:electron:
View GitHub Profile
@imanshu03
imanshu03 / slots.tsx
Created September 30, 2025 10:59
Slots for Button Component
import React, { FC, ReactNode } from 'react';
import clsx from 'clsx';
import { useBtn } from './context';
type SlotProps = { children?: ReactNode; className?: string };
export const Icon: FC<SlotProps> = ({ children, className }) => {
const { size } = useBtn();
const icon = size === 'sm' ? 'size-4' : size === 'md' ? 'size-5' : 'size-5';
return (
<button id="win-button">Win</button>
<button id="loose-button">Loose</button>
<script>
const { promise, resolve, reject } = createDeferredExecution();
document.getElementById("win-button").addEventListener("click", () => {
resolve("You won! 🎉");
});
document.getElementById("loose-button").addEventListener("click", () => {
reject("You loose 😔");
<button id="win-button">Win</button>
<button id="loose-button">Loose</button>
<script>
function winButtonClickHandler() {
return new Promise((resolve) => {
document
.getElementById("win-button")
.addEventListener("click", () => {
resolve("You won! 🎉");
});
const createDeferredExecution = () => {
let resolve, reject;
const promise = new Promise((res,rej) => {
resolve = res;
reject = rej;
});
return {
promise,
resolve,
reject
import React from "react";
import withUserPermission from "./withUserPermission";
const Component1: React.FC = (props) => {
return (
<p>Component only accessible if user has ACCESS_COMPONENT1 permission</p>
);
};
export default withUserPermission(Component1, 'ACCESS_COMPONENT1');
import React, { useContext } from "react";
import { UserPermissionStore } from "./UserPermissionProvider";
const withUserPermission = (Component, requiredPermission) => (props) => {
const { userPermission } = useContext(UserPermissionStore);
if (!userPermission[requiredPermission]) return null;
return <Component {...props} />;
};
import React from "react";
import Component1 from "./Component1";
import Component2 from "./Component2";
import Component3 from "./Component3";
import UserPermissionProvider from "./UserPermissionProvider";
const App = (props) => {
return (
<UserPermissionProvider>
<div>
import React, { createContext, useState, useEffect } from "react";
export const UserPermissionStore = createContext({ userPermission: {} });
const UserPermissionProvider = (props) => {
const { children } = props;
const [userPermission, setUserPermission] = useState({});
useEffect(() => {
const permissions = {
import React from "react";
const Component2: React.FC = (props) => {
return (
<p>Component only accessible if user has ACCESS_COMPONENT2 permission</p>
);
};
export default Component2;
import React from "react";
const Component1: React.FC = (props) => {
return (
<p>Component only accessible if user has ACCESS_COMPONENT1 permission</p>
);
};
export default Component1;