Skip to content

Instantly share code, notes, and snippets.

@Salemsky
Salemsky / Button.tsx
Created February 14, 2025 15:25
sc responsive button
import { mqw, rem, styled } from '@styled';
import Link from 'next/link';
import { Icon } from './Icon';
import { Label } from './Label';
const PX_SIZE = {
sm: { h: 30, p: 6 },
md: { h: 35, p: 8 },
lg: { h: 40, p: 10 },
@Salemsky
Salemsky / Example.tsx
Created February 12, 2025 13:03
sc image hover effect
import { styled } from 'styled-components';
import { hoverEffect } from './hover-effect.ts';
import { Image } from './Image.tsx';
const Wrapper = styled.div`
display: flex;
width: 600px;
margin: 20px auto 20px auto;
`;
@Salemsky
Salemsky / tsconfig-paths.mjs
Last active February 12, 2025 23:25
tsconfig paths to webpack
import { dirname, resolve } from 'node:path';
import ts from 'typescript';
/** @typedef {Record<'compilerOptions', ts.server.protocol.CompilerOptions>} CompilerOptions */
const parsedConfig =
/** @type {Record<'raw', CompilerOptions>} */
(
ts.getParsedCommandLineOfConfigFile('tsconfig.json', undefined, {
...ts.sys,
@Salemsky
Salemsky / logger.mjs
Created January 15, 2025 09:46
logger in node(v22+)
import { styleText } from 'node:util';
/** @typedef {Extract<keyof typeof console, 'error' | 'info' | 'log' | 'warn'>} LogLevel */
/** @typedef {Parameters<typeof styleText>[0]} Format */
/** @type {Record<LogLevel, Format>} */
const LOG_COLORS = {
error: 'red',
info: 'cyan',
log: 'reset',
@Salemsky
Salemsky / config.base.mjs
Created January 7, 2025 03:52
ts-loader dynamic jsx
import { resolve } from 'node:path';
import { tsLoader } from './loaders.mjs';
/** @type {import('webpack').Configuration} */
export default {
resolve: {
extensions: ['.ts', '.tsx', '...'],
},
module: {
rules: [