Files
homarr/packages/ui/index.ts
T
+12 fcd7c979df feat!: release v2 (#6545)
Co-authored-by: Artur <145776561+arturict@users.noreply.github.com>
Co-authored-by: arturict <arturict@users.noreply.github.com>
Co-authored-by: Thomas <thomas@ajnart.fr>
Co-authored-by: Afonso Jorge Ramos <afonsojorgeramos@gmail.com>
Co-authored-by: Danura30082 <danura30082+github@gmail.com>
Co-authored-by: Kushie <122986913+kushiemoon-dev@users.noreply.github.com>
Co-authored-by: ajnart <thomas@ajnart.fr>
Co-authored-by: ajnart <thomas@ajnart.dev>
Co-authored-by: chenjun <chenjun@foxmail.com>
Co-authored-by: Wikibear <wikibear@users.noreply.github.com>
Co-authored-by: Bergasha <bergasha@gmail.com>
Co-authored-by: leafyelin <43306196+leafyelin@users.noreply.github.com>
Co-authored-by: Lucas Araujo <lucas.lra@gmail.com>
Co-authored-by: GreenMonito <86085570+GreenMonito@users.noreply.github.com>
Co-authored-by: Nerdy-Technician <roffo@nerdy-technician.social>
Co-authored-by: Jun <34545896+jcstrong@users.noreply.github.com>
Co-authored-by: Edmond Abraham <54119952+gitedmond@users.noreply.github.com>
Co-authored-by: thrawnx <tight.bulb9384@fastmail.com>
Co-authored-by: Chris <58918656+nordada@users.noreply.github.com>
Co-authored-by: yi111 <153097222+Yi-111-a@users.noreply.github.com>
Co-authored-by: Yanis <naamaneyanis@gmail.com>
Co-authored-by: Wikibear <me@sej.de>
Co-authored-by: alessiottavo <93441886+alessiottavo@users.noreply.github.com>
2026-10-02 21:00:14 +02:00

37 lines
1.8 KiB
TypeScript

import type { CSSProperties } from "react";
import type { Icon123, IconProps } from "@tabler/icons-react";
export * from "./src";
export type TablerIcon = typeof Icon123;
export type TablerIconProps = IconProps;
/**
* Icon sizes tied to Mantine's font-size scale instead of raw pixel
* numbers, so icons stay legible under the board's CSS zoom scaling.
* Pass as the `style` prop (not `size`) - tabler icons convert `size` into
* raw SVG width/height attributes, and CSS `var()` isn't guaranteed to
* resolve there (Firefox especially). `style` is real CSS, so it does.
*/
export const iconSizes = {
xs: { width: "var(--mantine-font-size-xs)", height: "var(--mantine-font-size-xs)", flexShrink: 0 },
sm: { width: "var(--mantine-font-size-sm)", height: "var(--mantine-font-size-sm)", flexShrink: 0 },
md: { width: "var(--mantine-font-size-md)", height: "var(--mantine-font-size-md)", flexShrink: 0 },
lg: { width: "var(--mantine-font-size-lg)", height: "var(--mantine-font-size-lg)", flexShrink: 0 },
xl: { width: "var(--mantine-font-size-xl)", height: "var(--mantine-font-size-xl)", flexShrink: 0 },
} as const satisfies Record<string, CSSProperties>;
/**
* For icon/element sizes that don't fit one of `iconSizes`' fixed tokens (e.g. a deliberately
* oversized icon). Same reasoning as `iconSizes`: pass as `style`, not a raw `size` number - a
* bare pixel value never re-scales when the board's zoom level changes, so it renders at a
* fraction of its intended size on any board that isn't at 100% zoom (which is most boards with
* more than a couple of widgets).
*/
export const zoomCompensatedSize = (px: number): CSSProperties => ({
width: `calc(${px}px * var(--board-canvas-ui-scale, 1))`,
height: `calc(${px}px * var(--board-canvas-ui-scale, 1))`,
flexShrink: 0,
});