Skip to content

Instantly share code, notes, and snippets.

View mmiszy's full-sized avatar
❤️
https://github.com/sponsors/typeofweb

Michał Miszczyszyn mmiszy

❤️
https://github.com/sponsors/typeofweb
View GitHub Profile
@mmiszy
mmiszy / Button.tsx
Created February 12, 2024 10:22
`asChild` pattern in React
import { clsx } from "clsx";
import { type ButtonHTMLAttributes } from "react";
import { Slot } from "./Slot";
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
asChild?: boolean;
children: React.ReactNode;
}
export const Button = ({ asChild = false, ...props }: ButtonProps) => {
{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"Permission": {
"title": "Permission",
"description": "An enumeration.",
"enum": [
"MANAGE_USERS",
"MANAGE_STAFF",
"IMPERSONATE_USER",
import type { Stripe } from "stripe";
type StripeWebhookEventTypes = Stripe.WebhookEndpointCreateParams.EnabledEvent;
type StripeWebhookEvent<EventType extends StripeWebhookEventTypes, Payload> = {
type: EventType;
data: {
object: Payload;
};
};
import Fetch from 'node-fetch';
interface JJITOffer {
title: string;
street: string;
city: string;
country_code: string;
address_text: string;
marker_icon: string;
workplace_type: string;
const LogicValues = [true, false] as const;
type Logic = typeof LogicValues[number];
const CARDINALITY = LogicValues.length;
type Literal = { __t: "Literal"; symbol: string };
type UnaryOperator = { __t: "Unary"; e: (a: Logic) => Logic };
type BinaryOperator = { __t: "Binary"; e: (a: Logic, b: Logic) => Logic };
type Token = Literal | UnaryOperator | BinaryOperator;
/* eslint-disable functional/no-this-expression -- it's a class */
/* eslint-disable functional/prefer-readonly-type -- it's a class */
export const useBodyFix = () => {
return fixBodyService;
};
class FixBodyService {
private windowOffsetY: number = 0;
private scrollbarWidth: number = 0;
function getHexValue(intInput: number) {
return intInput.toString(16).padStart(2, "0");
}
function getTintValue(tint: number, bgTint: number, alpha: number) {
return Math.min(Math.floor((1 - alpha) * bgTint + alpha * tint), 255);
}
class Color {
constructor(
const getAllCSSVariableNames = () =>
Array.from(document.styleSheets)
.filter((s) => s.href === null || s.href.startsWith(window.location.origin))
.flatMap((s) => Array.from(s.cssRules))
.filter((r): r is CSSStyleRule => r.type === CSSRule.STYLE_RULE)
.flatMap((r) => (r.selectorText === ":root" ? Array.from(r.style) : []))
.filter((name) => name.startsWith("--"))
.sort();
const getCSSColorVariableNames = () =>
@mmiszy
mmiszy / prezentacja.ts
Created June 22, 2021 19:29
JuniorSenior
import { definitions as Api } from './apitypes';
{
function id1(arg: unknown): unknown {
return arg;
}
function id<Argument>(arg: Argument): Argument {
return arg;
}
// prettier-ignore
const pairs = [
[0x00E5,0x212B],[0x00C5,0x212B],[0x0399,0x1FBE],[0x03B9,0x1FBE],[0x03B2,0x03D0],
[0x03B5,0x03F5],[0x03B8,0x03D1],[0x03B8,0x03F4],[0x03D1,0x03F4],[0x03B9,0x1FBE],
[0x0345,0x03B9],[0x0345,0x1FBE],[0x03BA,0x03F0],[0x00B5,0x03BC],[0x03C0,0x03D6],
[0x03C1,0x03F1],[0x03C2,0x03C3],[0x03C6,0x03D5],[0x03C9,0x2126],[0x0392,0x03D0],
[0x0395,0x03F5],[0x03D1,0x03F4],[0x0398,0x03D1],[0x0398,0x03F4],[0x0345,0x1FBE],
[0x0345,0x0399],[0x0399,0x1FBE],[0x039A,0x03F0],[0x00B5,0x039C],[0x03A0,0x03D6],
[0x03A1,0x03F1],[0x03A3,0x03C2],[0x03A6,0x03D5],[0x03A9,0x2126],[0x0398,0x03F4],
[0x03B8,0x03F4],[0x03B8,0x03D1],[0x0398,0x03D1],[0x0432,0x1C80],[0x0434,0x1C81],