pendentive 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +88 -0
- package/dist/components/avatar/Avatar.d.ts +26 -0
- package/dist/components/badge/Badge.d.ts +25 -0
- package/dist/components/button/Button.d.ts +51 -0
- package/dist/components/button/ButtonGroup.d.ts +36 -0
- package/dist/components/checkbox/Checkbox.d.ts +34 -0
- package/dist/components/command/Command.d.ts +59 -0
- package/dist/components/data/List.d.ts +40 -0
- package/dist/components/data/Table.d.ts +37 -0
- package/dist/components/data/Tree.d.ts +36 -0
- package/dist/components/feedback/Alert.d.ts +29 -0
- package/dist/components/feedback/ProgressBar.d.ts +32 -0
- package/dist/components/feedback/Skeleton.d.ts +20 -0
- package/dist/components/feedback/Spinner.d.ts +20 -0
- package/dist/components/feedback/Toast.d.ts +30 -0
- package/dist/components/field/ColorField.d.ts +33 -0
- package/dist/components/field/NumberField.d.ts +42 -0
- package/dist/components/field/TextArea.d.ts +35 -0
- package/dist/components/field/TextField.d.ts +39 -0
- package/dist/components/field/shared.d.ts +9 -0
- package/dist/components/field/textInput.css.d.ts +5 -0
- package/dist/components/hovercard/HoverCard.d.ts +35 -0
- package/dist/components/input/ChipInput.d.ts +31 -0
- package/dist/components/input/DatePicker.d.ts +66 -0
- package/dist/components/input/FileDropzone.d.ts +26 -0
- package/dist/components/layout/Card.d.ts +24 -0
- package/dist/components/layout/Section.d.ts +33 -0
- package/dist/components/layout/Separator.d.ts +18 -0
- package/dist/components/misc/ModeCard.d.ts +35 -0
- package/dist/components/navigation/Accordion.d.ts +42 -0
- package/dist/components/navigation/Breadcrumb.d.ts +25 -0
- package/dist/components/navigation/Pagination.d.ts +30 -0
- package/dist/components/navigation/Tabs.d.ts +38 -0
- package/dist/components/overlay/AlertDialog.d.ts +37 -0
- package/dist/components/overlay/ContextMenu.d.ts +19 -0
- package/dist/components/overlay/Dialog.d.ts +38 -0
- package/dist/components/overlay/Drawer.d.ts +40 -0
- package/dist/components/overlay/DropdownMenu.d.ts +55 -0
- package/dist/components/overlay/Popover.d.ts +33 -0
- package/dist/components/radio/RadioGroup.d.ts +37 -0
- package/dist/components/select/Combobox.d.ts +42 -0
- package/dist/components/select/Select.d.ts +48 -0
- package/dist/components/slider/RangeSlider.d.ts +43 -0
- package/dist/components/slider/Slider.d.ts +41 -0
- package/dist/components/switch/Switch.d.ts +35 -0
- package/dist/components/toggle/Toggle.d.ts +39 -0
- package/dist/components/toggle/ToggleGroup.d.ts +47 -0
- package/dist/components/tooltip/Tooltip.d.ts +22 -0
- package/dist/core/classNames.d.ts +6 -0
- package/dist/core/content.d.ts +2 -0
- package/dist/core/controller.d.ts +34 -0
- package/dist/core/dom.d.ts +14 -0
- package/dist/core/overlay.d.ts +14 -0
- package/dist/core/styleInjector.d.ts +12 -0
- package/dist/core/theme.d.ts +18 -0
- package/dist/core/types.d.ts +10 -0
- package/dist/index.cjs +4054 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.js +3934 -0
- package/dist/index.js.map +1 -0
- package/dist/linteau.global.js +397 -0
- package/dist/linteau.global.js.map +7 -0
- package/dist/styles/tokens.d.ts +33 -0
- package/dist/svg/Icon.d.ts +19 -0
- package/dist/svg/create-icon.d.ts +13 -0
- package/dist/svg/icons/alertTriangle.d.ts +1 -0
- package/dist/svg/icons/bell.d.ts +1 -0
- package/dist/svg/icons/calendar.d.ts +1 -0
- package/dist/svg/icons/check.d.ts +1 -0
- package/dist/svg/icons/chevronDown.d.ts +1 -0
- package/dist/svg/icons/chevronLeft.d.ts +1 -0
- package/dist/svg/icons/chevronRight.d.ts +1 -0
- package/dist/svg/icons/chevronUp.d.ts +1 -0
- package/dist/svg/icons/circle.d.ts +1 -0
- package/dist/svg/icons/copy.d.ts +1 -0
- package/dist/svg/icons/download.d.ts +1 -0
- package/dist/svg/icons/edit.d.ts +1 -0
- package/dist/svg/icons/externalLink.d.ts +1 -0
- package/dist/svg/icons/eye.d.ts +1 -0
- package/dist/svg/icons/eyeOff.d.ts +1 -0
- package/dist/svg/icons/filter.d.ts +1 -0
- package/dist/svg/icons/heart.d.ts +1 -0
- package/dist/svg/icons/home.d.ts +1 -0
- package/dist/svg/icons/index.d.ts +54 -0
- package/dist/svg/icons/info.d.ts +1 -0
- package/dist/svg/icons/link.d.ts +1 -0
- package/dist/svg/icons/loader.d.ts +1 -0
- package/dist/svg/icons/lock.d.ts +1 -0
- package/dist/svg/icons/mail.d.ts +1 -0
- package/dist/svg/icons/menu.d.ts +1 -0
- package/dist/svg/icons/minus.d.ts +1 -0
- package/dist/svg/icons/moon.d.ts +1 -0
- package/dist/svg/icons/moreHorizontal.d.ts +1 -0
- package/dist/svg/icons/phone.d.ts +1 -0
- package/dist/svg/icons/plus.d.ts +1 -0
- package/dist/svg/icons/refreshCw.d.ts +1 -0
- package/dist/svg/icons/search.d.ts +1 -0
- package/dist/svg/icons/settings.d.ts +1 -0
- package/dist/svg/icons/star.d.ts +1 -0
- package/dist/svg/icons/sun.d.ts +1 -0
- package/dist/svg/icons/trash.d.ts +1 -0
- package/dist/svg/icons/upload.d.ts +1 -0
- package/dist/svg/icons/user.d.ts +1 -0
- package/dist/svg/icons/x.d.ts +1 -0
- package/dist/svg/index.cjs +380 -0
- package/dist/svg/index.cjs.map +1 -0
- package/dist/svg/index.d.ts +4 -0
- package/dist/svg/index.js +352 -0
- package/dist/svg/index.js.map +1 -0
- package/dist/svg/types.d.ts +26 -0
- package/package.json +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/svg/index.ts","../../src/svg/Icon.ts","../../src/svg/create-icon.ts","../../src/svg/icons/alertTriangle.ts","../../src/svg/icons/bell.ts","../../src/svg/icons/calendar.ts","../../src/svg/icons/check.ts","../../src/svg/icons/chevronDown.ts","../../src/svg/icons/chevronLeft.ts","../../src/svg/icons/chevronRight.ts","../../src/svg/icons/chevronUp.ts","../../src/svg/icons/circle.ts","../../src/svg/icons/copy.ts","../../src/svg/icons/download.ts","../../src/svg/icons/edit.ts","../../src/svg/icons/externalLink.ts","../../src/svg/icons/eye.ts","../../src/svg/icons/eyeOff.ts","../../src/svg/icons/filter.ts","../../src/svg/icons/heart.ts","../../src/svg/icons/home.ts","../../src/svg/icons/info.ts","../../src/svg/icons/link.ts","../../src/svg/icons/loader.ts","../../src/svg/icons/lock.ts","../../src/svg/icons/mail.ts","../../src/svg/icons/menu.ts","../../src/svg/icons/minus.ts","../../src/svg/icons/moon.ts","../../src/svg/icons/moreHorizontal.ts","../../src/svg/icons/phone.ts","../../src/svg/icons/plus.ts","../../src/svg/icons/refreshCw.ts","../../src/svg/icons/search.ts","../../src/svg/icons/settings.ts","../../src/svg/icons/star.ts","../../src/svg/icons/sun.ts","../../src/svg/icons/trash.ts","../../src/svg/icons/upload.ts","../../src/svg/icons/user.ts","../../src/svg/icons/x.ts","../../src/svg/icons/index.ts"],"sourcesContent":["/** Public entry for Linteau's icon system, importable standalone via `import { Icon, icons } from 'linteau/svg'` -- usable independently of any component. */\r\nexport { Icon } from './Icon'\r\nexport { icons } from './icons/index'\r\nexport type { IconInput, IconShape, IconChildNode, IconRenderProps, IconComponent } from './types'","import type { IconInput, IconRenderProps, IconShape } from './types'\r\n\r\nconst SVGNS = 'http://www.w3.org/2000/svg'\r\n\r\n/** Builds the shared base attributes (sizing, stroke, viewBox) applied to every rendered icon `<svg>`. */\r\nfunction baseAttrs(props: IconRenderProps): Record<string, string> {\r\n const size = String(props.size ?? 16)\r\n return {\r\n xmlns: SVGNS,\r\n width: size,\r\n height: size,\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: props.color ?? 'currentColor',\r\n 'stroke-width': String(props.strokeWidth ?? 2),\r\n 'stroke-linecap': 'round',\r\n 'stroke-linejoin': 'round'\r\n }\r\n}\r\n\r\n/**\r\n * Renders a static `IconShape` into a real `SVGSVGElement`.\r\n *\r\n * Exported so per-icon components (`svg/icons/*`) can reuse the exact same rendering\r\n * path as the generic `Icon()` dispatcher below -- one source of truth, no duplication.\r\n */\r\nexport function renderIconShape(shape: IconShape, props: IconRenderProps): SVGSVGElement {\r\n const svg = document.createElementNS(SVGNS, 'svg') as SVGSVGElement\r\n const attrs = baseAttrs(props)\r\n for (const key in attrs) svg.setAttribute(key, attrs[key] as string)\r\n if (props.className) svg.setAttribute('class', props.className)\r\n for (const [tag, childAttrs] of shape) {\r\n const node = document.createElementNS(SVGNS, tag)\r\n for (const key in childAttrs) node.setAttribute(key, childAttrs[key] as string)\r\n svg.appendChild(node)\r\n }\r\n return svg\r\n}\r\n\r\n/** Clones an existing `SVGSVGElement`, re-applying size/color/stroke/class overrides. */\r\nfunction fromElement(source: SVGSVGElement, props: IconRenderProps): SVGSVGElement {\r\n const svg = source.cloneNode(true) as SVGSVGElement\r\n const size = String(props.size ?? 16)\r\n svg.setAttribute('width', size)\r\n svg.setAttribute('height', size)\r\n if (props.color) svg.setAttribute('stroke', props.color)\r\n if (props.strokeWidth != null) svg.setAttribute('stroke-width', String(props.strokeWidth))\r\n if (props.className) svg.classList.add(...props.className.split(' ').filter(Boolean))\r\n return svg\r\n}\r\n\r\n/** Parses raw `<svg>...</svg>` markup into a real element before delegating to `fromElement`. */\r\nfunction fromMarkup(markup: string, props: IconRenderProps): SVGSVGElement {\r\n const doc = new DOMParser().parseFromString(markup, 'image/svg+xml')\r\n return fromElement(doc.documentElement as unknown as SVGSVGElement, props)\r\n}\r\n\r\n/**\r\n * Renders any supported `IconInput` shape into a real `SVGSVGElement`.\r\n * Returns `null` when input is `null`/`undefined`, so callers never need to branch\r\n * before rendering an optional icon.\r\n *\r\n * @param input - The icon source: shape array, raw markup, an existing element, a component/render function, or nothing.\r\n * @param size - Shorthand for `props.size` (overridden if `props.size` is also set).\r\n * @param props - Additional render props: color, strokeWidth, className.\r\n * @requires A DOM environment (browser, or Node/Bun with a DOM shim).\r\n */\r\nexport function Icon(input: IconInput, size?: number | string, props: IconRenderProps = {}): SVGSVGElement | null {\r\n if (input === null || input === undefined) return null\r\n const resolved: IconRenderProps = { ...(size !== undefined ? { size } : {}), ...props }\r\n if (typeof input === 'function') return input(resolved)\r\n if (typeof input === 'string') return fromMarkup(input, resolved)\r\n if (input instanceof SVGElement) return fromElement(input as SVGSVGElement, resolved)\r\n if (Array.isArray(input)) return renderIconShape(input, resolved)\r\n return null\r\n}","import { renderIconShape } from './Icon'\r\nimport type { IconComponent, IconRenderProps, IconShape } from './types'\r\n\r\n/**\r\n * Builds a ready-to-use icon component from a static shape -- mirroring how lucide\r\n * generates one component per icon via `createLucideIcon`.\r\n *\r\n * Every file in `svg/icons/*` calls this once and exports the result, so each icon\r\n * is a real, standalone, tree-shakeable SVG component instead of a shared data blob.\r\n *\r\n * @param name - Icon name, stamped onto the rendered element as `data-icon` (debugging/theming hook).\r\n * @param shape - The ordered list of child nodes that make up the icon.\r\n * @returns A component: call it with optional render props to get a fresh `SVGSVGElement`.\r\n */\r\nexport function createIcon(name: string, shape: IconShape): IconComponent {\r\n return function renderIcon(props: IconRenderProps = {}): SVGSVGElement {\r\n const svg = renderIconShape(shape, props)\r\n svg.setAttribute('data-icon', name)\r\n return svg\r\n }\r\n}","import { createIcon } from '../create-icon'\r\n\r\nexport const alertTriangle = createIcon('alert-triangle', [\r\n ['path', { d: 'M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z' }],\r\n ['line', { x1: '12', y1: '9', x2: '12', y2: '13' }],\r\n ['line', { x1: '12', y1: '17', x2: '12.01', y2: '17' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const bell = createIcon('bell', [\r\n ['path', { d: 'M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9' }],\r\n ['path', { d: 'M10.3 21a1.94 1.94 0 0 0 3.4 0' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const calendar = createIcon('calendar', [\r\n ['rect', { x: '3', y: '4', width: '18', height: '18', rx: '2' }],\r\n ['line', { x1: '16', y1: '2', x2: '16', y2: '6' }],\r\n ['line', { x1: '8', y1: '2', x2: '8', y2: '6' }],\r\n ['line', { x1: '3', y1: '10', x2: '21', y2: '10' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const check = createIcon('check', [\r\n ['polyline', { points: '20 6 9 17 4 12' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const chevronDown = createIcon('chevron-down', [\r\n ['polyline', { points: '6 9 12 15 18 9' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const chevronLeft = createIcon('chevron-left', [\r\n ['polyline', { points: '15 18 9 12 15 6' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const chevronRight = createIcon('chevron-right', [\r\n ['polyline', { points: '9 18 15 12 9 6' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const chevronUp = createIcon('chevron-up', [\r\n ['polyline', { points: '18 15 12 9 6 15' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const circle = createIcon('circle', [\r\n ['circle', { cx: '12', cy: '12', r: '10' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const copy = createIcon('copy', [\r\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2' }],\r\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const download = createIcon('download', [\r\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4' }],\r\n ['polyline', { points: '7 10 12 15 17 10' }],\r\n ['line', { x1: '12', y1: '15', x2: '12', y2: '3' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const edit = createIcon('edit', [\r\n ['path', { d: 'M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const externalLink = createIcon('external-link', [\r\n ['path', { d: 'M15 3h6v6' }],\r\n ['path', { d: 'M10 14 21 3' }],\r\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const eye = createIcon('eye', [\r\n ['path', { d: 'M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z' }],\r\n ['circle', { cx: '12', cy: '12', r: '3' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const eyeOff = createIcon('eye-off', [\r\n ['path', { d: 'M9.88 9.88a3 3 0 1 0 4.24 4.24' }],\r\n ['path', { d: 'M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68' }],\r\n ['path', { d: 'M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61' }],\r\n ['line', { x1: '2', y1: '2', x2: '22', y2: '22' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const filter = createIcon('filter', [\r\n ['polygon', { points: '22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const heart = createIcon('heart', [\r\n ['path', { d: 'M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const home = createIcon('home', [\r\n ['path', { d: 'M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z' }],\r\n ['polyline', { points: '9 22 9 12 15 12 15 22' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const info = createIcon('info', [\r\n ['circle', { cx: '12', cy: '12', r: '10' }],\r\n ['line', { x1: '12', y1: '16', x2: '12', y2: '12' }],\r\n ['line', { x1: '12', y1: '8', x2: '12.01', y2: '8' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const link = createIcon('link', [\r\n ['path', { d: 'M9 17H7A5 5 0 0 1 7 7h2' }],\r\n ['path', { d: 'M15 7h2a5 5 0 1 1 0 10h-2' }],\r\n ['line', { x1: '8', y1: '12', x2: '16', y2: '12' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const loader = createIcon('loader', [\r\n ['line', { x1: '12', y1: '2', x2: '12', y2: '6' }],\r\n ['line', { x1: '12', y1: '18', x2: '12', y2: '22' }],\r\n ['line', { x1: '4.9', y1: '4.9', x2: '7.8', y2: '7.8' }],\r\n ['line', { x1: '16.2', y1: '16.2', x2: '19.1', y2: '19.1' }],\r\n ['line', { x1: '2', y1: '12', x2: '6', y2: '12' }],\r\n ['line', { x1: '18', y1: '12', x2: '22', y2: '12' }],\r\n ['line', { x1: '4.9', y1: '19.1', x2: '7.8', y2: '16.2' }],\r\n ['line', { x1: '16.2', y1: '7.8', x2: '19.1', y2: '4.9' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const lock = createIcon('lock', [\r\n ['rect', { x: '3', y: '11', width: '18', height: '11', rx: '2', ry: '2' }],\r\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const mail = createIcon('mail', [\r\n ['rect', { width: '20', height: '16', x: '2', y: '4', rx: '2' }],\r\n ['path', { d: 'm22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const menu = createIcon('menu', [\r\n ['line', { x1: '4', y1: '12', x2: '20', y2: '12' }],\r\n ['line', { x1: '4', y1: '6', x2: '20', y2: '6' }],\r\n ['line', { x1: '4', y1: '18', x2: '20', y2: '18' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const minus = createIcon('minus', [\r\n ['line', { x1: '5', y1: '12', x2: '19', y2: '12' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const moon = createIcon('moon', [\r\n ['path', { d: 'M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const moreHorizontal = createIcon('more-horizontal', [\r\n ['circle', { cx: '5', cy: '12', r: '1' }],\r\n ['circle', { cx: '12', cy: '12', r: '1' }],\r\n ['circle', { cx: '19', cy: '12', r: '1' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const phone = createIcon('phone', [\r\n ['path', { d: 'M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const plus = createIcon('plus', [\r\n ['line', { x1: '12', y1: '5', x2: '12', y2: '19' }],\r\n ['line', { x1: '5', y1: '12', x2: '19', y2: '12' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const refreshCw = createIcon('refresh-cw', [\r\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8' }],\r\n ['path', { d: 'M3 3v5h5' }],\r\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16' }],\r\n ['path', { d: 'M16 16h5v5' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const search = createIcon('search', [\r\n ['circle', { cx: '11', cy: '11', r: '8' }],\r\n ['line', { x1: '21', y1: '21', x2: '16.65', y2: '16.65' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const settings = createIcon('settings', [\r\n ['path', { d: 'M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z' }],\r\n ['circle', { cx: '12', cy: '12', r: '3' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const star = createIcon('star', [\r\n ['polygon', { points: '12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const sun = createIcon('sun', [\r\n ['circle', { cx: '12', cy: '12', r: '4' }],\r\n ['line', { x1: '12', y1: '2', x2: '12', y2: '4' }],\r\n ['line', { x1: '12', y1: '20', x2: '12', y2: '22' }],\r\n ['line', { x1: '4.93', y1: '4.93', x2: '6.34', y2: '6.34' }],\r\n ['line', { x1: '17.66', y1: '17.66', x2: '19.07', y2: '19.07' }],\r\n ['line', { x1: '2', y1: '12', x2: '4', y2: '12' }],\r\n ['line', { x1: '20', y1: '12', x2: '22', y2: '12' }],\r\n ['line', { x1: '6.34', y1: '17.66', x2: '4.93', y2: '19.07' }],\r\n ['line', { x1: '19.07', y1: '4.93', x2: '17.66', y2: '6.34' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const trash = createIcon('trash', [\r\n ['path', { d: 'M3 6h18' }],\r\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2' }],\r\n ['path', { d: 'M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6' }],\r\n ['line', { x1: '10', y1: '11', x2: '10', y2: '17' }],\r\n ['line', { x1: '14', y1: '11', x2: '14', y2: '17' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const upload = createIcon('upload', [\r\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4' }],\r\n ['polyline', { points: '17 8 12 3 7 8' }],\r\n ['line', { x1: '12', y1: '3', x2: '12', y2: '15' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const user = createIcon('user', [\r\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2' }],\r\n ['circle', { cx: '12', cy: '7', r: '4' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const x = createIcon('x', [\r\n ['line', { x1: '18', y1: '6', x2: '6', y2: '18' }],\r\n ['line', { x1: '6', y1: '6', x2: '18', y2: '18' }]\r\n])","import { alertTriangle } from './alertTriangle'\nimport { bell } from './bell'\nimport { calendar } from './calendar'\nimport { check } from './check'\nimport { chevronDown } from './chevronDown'\nimport { chevronLeft } from './chevronLeft'\nimport { chevronRight } from './chevronRight'\nimport { chevronUp } from './chevronUp'\nimport { circle } from './circle'\nimport { copy } from './copy'\nimport { download } from './download'\nimport { edit } from './edit'\nimport { externalLink } from './externalLink'\nimport { eye } from './eye'\nimport { eyeOff } from './eyeOff'\nimport { filter } from './filter'\nimport { heart } from './heart'\nimport { home } from './home'\nimport { info } from './info'\nimport { link } from './link'\nimport { loader } from './loader'\nimport { lock } from './lock'\nimport { mail } from './mail'\nimport { menu } from './menu'\nimport { minus } from './minus'\nimport { moon } from './moon'\nimport { moreHorizontal } from './moreHorizontal'\nimport { phone } from './phone'\nimport { plus } from './plus'\nimport { refreshCw } from './refreshCw'\nimport { search } from './search'\nimport { settings } from './settings'\nimport { star } from './star'\nimport { sun } from './sun'\nimport { trash } from './trash'\nimport { upload } from './upload'\nimport { user } from './user'\nimport { x } from './x'\nimport type { IconComponent } from '../types'\n\nexport { alertTriangle } from './alertTriangle'\nexport { bell } from './bell'\nexport { calendar } from './calendar'\nexport { check } from './check'\nexport { chevronDown } from './chevronDown'\nexport { chevronLeft } from './chevronLeft'\nexport { chevronRight } from './chevronRight'\nexport { chevronUp } from './chevronUp'\nexport { circle } from './circle'\nexport { copy } from './copy'\nexport { download } from './download'\nexport { edit } from './edit'\nexport { externalLink } from './externalLink'\nexport { eye } from './eye'\nexport { eyeOff } from './eyeOff'\nexport { filter } from './filter'\nexport { heart } from './heart'\nexport { home } from './home'\nexport { info } from './info'\nexport { link } from './link'\nexport { loader } from './loader'\nexport { lock } from './lock'\nexport { mail } from './mail'\nexport { menu } from './menu'\nexport { minus } from './minus'\nexport { moon } from './moon'\nexport { moreHorizontal } from './moreHorizontal'\nexport { phone } from './phone'\nexport { plus } from './plus'\nexport { refreshCw } from './refreshCw'\nexport { search } from './search'\nexport { settings } from './settings'\nexport { star } from './star'\nexport { sun } from './sun'\nexport { trash } from './trash'\nexport { upload } from './upload'\nexport { user } from './user'\nexport { x } from './x'\n\n/**\n * Linteau's built-in icon set, keyed by name -- auto-generated by `scripts/generate-icons.ts`\n * from every file in `svg/icons/*`. Do not edit this file by hand: add or remove an icon\n * file instead and re-run `bun run generate:icons` (any `build`/`typecheck`/`serve` run\n * does this automatically for you).\n *\n * Every entry is a real, standalone `IconComponent`, so this object is fully interchangeable\n * with, and spreadable alongside, your own lucide clone:\n *\n * ```ts\n * import { icons } from 'linteau/svg'\n * const allIcons: Record<string, IconComponent> = { ...icons, ...myLucideCloneIcons }\n * ```\n */\nexport const icons: Record<string, IconComponent> = {\n alertTriangle,\n bell,\n calendar,\n check,\n chevronDown,\n chevronLeft,\n chevronRight,\n chevronUp,\n circle,\n copy,\n download,\n edit,\n externalLink,\n eye,\n eyeOff,\n filter,\n heart,\n home,\n info,\n link,\n loader,\n lock,\n mail,\n menu,\n minus,\n moon,\n moreHorizontal,\n phone,\n plus,\n refreshCw,\n search,\n settings,\n star,\n sun,\n trash,\n upload,\n user,\n x\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Public entry for Linteau's icon system, importable standalone via `import { Icon, icons } from 'linteau/svg'` -- usable independently of any component. */
|
|
2
|
+
export { Icon } from './Icon';
|
|
3
|
+
export { icons } from './icons/index';
|
|
4
|
+
export type { IconInput, IconShape, IconChildNode, IconRenderProps, IconComponent } from './types';
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
// src/svg/Icon.ts
|
|
2
|
+
var SVGNS = "http://www.w3.org/2000/svg";
|
|
3
|
+
function baseAttrs(props) {
|
|
4
|
+
const size = String(props.size ?? 16);
|
|
5
|
+
return {
|
|
6
|
+
xmlns: SVGNS,
|
|
7
|
+
width: size,
|
|
8
|
+
height: size,
|
|
9
|
+
viewBox: "0 0 24 24",
|
|
10
|
+
fill: "none",
|
|
11
|
+
stroke: props.color ?? "currentColor",
|
|
12
|
+
"stroke-width": String(props.strokeWidth ?? 2),
|
|
13
|
+
"stroke-linecap": "round",
|
|
14
|
+
"stroke-linejoin": "round"
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function renderIconShape(shape, props) {
|
|
18
|
+
const svg = document.createElementNS(SVGNS, "svg");
|
|
19
|
+
const attrs = baseAttrs(props);
|
|
20
|
+
for (const key in attrs) svg.setAttribute(key, attrs[key]);
|
|
21
|
+
if (props.className) svg.setAttribute("class", props.className);
|
|
22
|
+
for (const [tag, childAttrs] of shape) {
|
|
23
|
+
const node = document.createElementNS(SVGNS, tag);
|
|
24
|
+
for (const key in childAttrs) node.setAttribute(key, childAttrs[key]);
|
|
25
|
+
svg.appendChild(node);
|
|
26
|
+
}
|
|
27
|
+
return svg;
|
|
28
|
+
}
|
|
29
|
+
function fromElement(source, props) {
|
|
30
|
+
const svg = source.cloneNode(true);
|
|
31
|
+
const size = String(props.size ?? 16);
|
|
32
|
+
svg.setAttribute("width", size);
|
|
33
|
+
svg.setAttribute("height", size);
|
|
34
|
+
if (props.color) svg.setAttribute("stroke", props.color);
|
|
35
|
+
if (props.strokeWidth != null) svg.setAttribute("stroke-width", String(props.strokeWidth));
|
|
36
|
+
if (props.className) svg.classList.add(...props.className.split(" ").filter(Boolean));
|
|
37
|
+
return svg;
|
|
38
|
+
}
|
|
39
|
+
function fromMarkup(markup, props) {
|
|
40
|
+
const doc = new DOMParser().parseFromString(markup, "image/svg+xml");
|
|
41
|
+
return fromElement(doc.documentElement, props);
|
|
42
|
+
}
|
|
43
|
+
function Icon(input, size, props = {}) {
|
|
44
|
+
if (input === null || input === void 0) return null;
|
|
45
|
+
const resolved = { ...size !== void 0 ? { size } : {}, ...props };
|
|
46
|
+
if (typeof input === "function") return input(resolved);
|
|
47
|
+
if (typeof input === "string") return fromMarkup(input, resolved);
|
|
48
|
+
if (input instanceof SVGElement) return fromElement(input, resolved);
|
|
49
|
+
if (Array.isArray(input)) return renderIconShape(input, resolved);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/svg/create-icon.ts
|
|
54
|
+
function createIcon(name, shape) {
|
|
55
|
+
return function renderIcon(props = {}) {
|
|
56
|
+
const svg = renderIconShape(shape, props);
|
|
57
|
+
svg.setAttribute("data-icon", name);
|
|
58
|
+
return svg;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// src/svg/icons/alertTriangle.ts
|
|
63
|
+
var alertTriangle = createIcon("alert-triangle", [
|
|
64
|
+
["path", { d: "M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z" }],
|
|
65
|
+
["line", { x1: "12", y1: "9", x2: "12", y2: "13" }],
|
|
66
|
+
["line", { x1: "12", y1: "17", x2: "12.01", y2: "17" }]
|
|
67
|
+
]);
|
|
68
|
+
|
|
69
|
+
// src/svg/icons/bell.ts
|
|
70
|
+
var bell = createIcon("bell", [
|
|
71
|
+
["path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }],
|
|
72
|
+
["path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" }]
|
|
73
|
+
]);
|
|
74
|
+
|
|
75
|
+
// src/svg/icons/calendar.ts
|
|
76
|
+
var calendar = createIcon("calendar", [
|
|
77
|
+
["rect", { x: "3", y: "4", width: "18", height: "18", rx: "2" }],
|
|
78
|
+
["line", { x1: "16", y1: "2", x2: "16", y2: "6" }],
|
|
79
|
+
["line", { x1: "8", y1: "2", x2: "8", y2: "6" }],
|
|
80
|
+
["line", { x1: "3", y1: "10", x2: "21", y2: "10" }]
|
|
81
|
+
]);
|
|
82
|
+
|
|
83
|
+
// src/svg/icons/check.ts
|
|
84
|
+
var check = createIcon("check", [
|
|
85
|
+
["polyline", { points: "20 6 9 17 4 12" }]
|
|
86
|
+
]);
|
|
87
|
+
|
|
88
|
+
// src/svg/icons/chevronDown.ts
|
|
89
|
+
var chevronDown = createIcon("chevron-down", [
|
|
90
|
+
["polyline", { points: "6 9 12 15 18 9" }]
|
|
91
|
+
]);
|
|
92
|
+
|
|
93
|
+
// src/svg/icons/chevronLeft.ts
|
|
94
|
+
var chevronLeft = createIcon("chevron-left", [
|
|
95
|
+
["polyline", { points: "15 18 9 12 15 6" }]
|
|
96
|
+
]);
|
|
97
|
+
|
|
98
|
+
// src/svg/icons/chevronRight.ts
|
|
99
|
+
var chevronRight = createIcon("chevron-right", [
|
|
100
|
+
["polyline", { points: "9 18 15 12 9 6" }]
|
|
101
|
+
]);
|
|
102
|
+
|
|
103
|
+
// src/svg/icons/chevronUp.ts
|
|
104
|
+
var chevronUp = createIcon("chevron-up", [
|
|
105
|
+
["polyline", { points: "18 15 12 9 6 15" }]
|
|
106
|
+
]);
|
|
107
|
+
|
|
108
|
+
// src/svg/icons/circle.ts
|
|
109
|
+
var circle = createIcon("circle", [
|
|
110
|
+
["circle", { cx: "12", cy: "12", r: "10" }]
|
|
111
|
+
]);
|
|
112
|
+
|
|
113
|
+
// src/svg/icons/copy.ts
|
|
114
|
+
var copy = createIcon("copy", [
|
|
115
|
+
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" }],
|
|
116
|
+
["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" }]
|
|
117
|
+
]);
|
|
118
|
+
|
|
119
|
+
// src/svg/icons/download.ts
|
|
120
|
+
var download = createIcon("download", [
|
|
121
|
+
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }],
|
|
122
|
+
["polyline", { points: "7 10 12 15 17 10" }],
|
|
123
|
+
["line", { x1: "12", y1: "15", x2: "12", y2: "3" }]
|
|
124
|
+
]);
|
|
125
|
+
|
|
126
|
+
// src/svg/icons/edit.ts
|
|
127
|
+
var edit = createIcon("edit", [
|
|
128
|
+
["path", { d: "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" }]
|
|
129
|
+
]);
|
|
130
|
+
|
|
131
|
+
// src/svg/icons/externalLink.ts
|
|
132
|
+
var externalLink = createIcon("external-link", [
|
|
133
|
+
["path", { d: "M15 3h6v6" }],
|
|
134
|
+
["path", { d: "M10 14 21 3" }],
|
|
135
|
+
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }]
|
|
136
|
+
]);
|
|
137
|
+
|
|
138
|
+
// src/svg/icons/eye.ts
|
|
139
|
+
var eye = createIcon("eye", [
|
|
140
|
+
["path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }],
|
|
141
|
+
["circle", { cx: "12", cy: "12", r: "3" }]
|
|
142
|
+
]);
|
|
143
|
+
|
|
144
|
+
// src/svg/icons/eyeOff.ts
|
|
145
|
+
var eyeOff = createIcon("eye-off", [
|
|
146
|
+
["path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }],
|
|
147
|
+
["path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }],
|
|
148
|
+
["path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }],
|
|
149
|
+
["line", { x1: "2", y1: "2", x2: "22", y2: "22" }]
|
|
150
|
+
]);
|
|
151
|
+
|
|
152
|
+
// src/svg/icons/filter.ts
|
|
153
|
+
var filter = createIcon("filter", [
|
|
154
|
+
["polygon", { points: "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3" }]
|
|
155
|
+
]);
|
|
156
|
+
|
|
157
|
+
// src/svg/icons/heart.ts
|
|
158
|
+
var heart = createIcon("heart", [
|
|
159
|
+
["path", { d: "M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" }]
|
|
160
|
+
]);
|
|
161
|
+
|
|
162
|
+
// src/svg/icons/home.ts
|
|
163
|
+
var home = createIcon("home", [
|
|
164
|
+
["path", { d: "M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }],
|
|
165
|
+
["polyline", { points: "9 22 9 12 15 12 15 22" }]
|
|
166
|
+
]);
|
|
167
|
+
|
|
168
|
+
// src/svg/icons/info.ts
|
|
169
|
+
var info = createIcon("info", [
|
|
170
|
+
["circle", { cx: "12", cy: "12", r: "10" }],
|
|
171
|
+
["line", { x1: "12", y1: "16", x2: "12", y2: "12" }],
|
|
172
|
+
["line", { x1: "12", y1: "8", x2: "12.01", y2: "8" }]
|
|
173
|
+
]);
|
|
174
|
+
|
|
175
|
+
// src/svg/icons/link.ts
|
|
176
|
+
var link = createIcon("link", [
|
|
177
|
+
["path", { d: "M9 17H7A5 5 0 0 1 7 7h2" }],
|
|
178
|
+
["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2" }],
|
|
179
|
+
["line", { x1: "8", y1: "12", x2: "16", y2: "12" }]
|
|
180
|
+
]);
|
|
181
|
+
|
|
182
|
+
// src/svg/icons/loader.ts
|
|
183
|
+
var loader = createIcon("loader", [
|
|
184
|
+
["line", { x1: "12", y1: "2", x2: "12", y2: "6" }],
|
|
185
|
+
["line", { x1: "12", y1: "18", x2: "12", y2: "22" }],
|
|
186
|
+
["line", { x1: "4.9", y1: "4.9", x2: "7.8", y2: "7.8" }],
|
|
187
|
+
["line", { x1: "16.2", y1: "16.2", x2: "19.1", y2: "19.1" }],
|
|
188
|
+
["line", { x1: "2", y1: "12", x2: "6", y2: "12" }],
|
|
189
|
+
["line", { x1: "18", y1: "12", x2: "22", y2: "12" }],
|
|
190
|
+
["line", { x1: "4.9", y1: "19.1", x2: "7.8", y2: "16.2" }],
|
|
191
|
+
["line", { x1: "16.2", y1: "7.8", x2: "19.1", y2: "4.9" }]
|
|
192
|
+
]);
|
|
193
|
+
|
|
194
|
+
// src/svg/icons/lock.ts
|
|
195
|
+
var lock = createIcon("lock", [
|
|
196
|
+
["rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }],
|
|
197
|
+
["path", { d: "M7 11V7a5 5 0 0 1 10 0v4" }]
|
|
198
|
+
]);
|
|
199
|
+
|
|
200
|
+
// src/svg/icons/mail.ts
|
|
201
|
+
var mail = createIcon("mail", [
|
|
202
|
+
["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2" }],
|
|
203
|
+
["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7" }]
|
|
204
|
+
]);
|
|
205
|
+
|
|
206
|
+
// src/svg/icons/menu.ts
|
|
207
|
+
var menu = createIcon("menu", [
|
|
208
|
+
["line", { x1: "4", y1: "12", x2: "20", y2: "12" }],
|
|
209
|
+
["line", { x1: "4", y1: "6", x2: "20", y2: "6" }],
|
|
210
|
+
["line", { x1: "4", y1: "18", x2: "20", y2: "18" }]
|
|
211
|
+
]);
|
|
212
|
+
|
|
213
|
+
// src/svg/icons/minus.ts
|
|
214
|
+
var minus = createIcon("minus", [
|
|
215
|
+
["line", { x1: "5", y1: "12", x2: "19", y2: "12" }]
|
|
216
|
+
]);
|
|
217
|
+
|
|
218
|
+
// src/svg/icons/moon.ts
|
|
219
|
+
var moon = createIcon("moon", [
|
|
220
|
+
["path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" }]
|
|
221
|
+
]);
|
|
222
|
+
|
|
223
|
+
// src/svg/icons/moreHorizontal.ts
|
|
224
|
+
var moreHorizontal = createIcon("more-horizontal", [
|
|
225
|
+
["circle", { cx: "5", cy: "12", r: "1" }],
|
|
226
|
+
["circle", { cx: "12", cy: "12", r: "1" }],
|
|
227
|
+
["circle", { cx: "19", cy: "12", r: "1" }]
|
|
228
|
+
]);
|
|
229
|
+
|
|
230
|
+
// src/svg/icons/phone.ts
|
|
231
|
+
var phone = createIcon("phone", [
|
|
232
|
+
["path", { d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z" }]
|
|
233
|
+
]);
|
|
234
|
+
|
|
235
|
+
// src/svg/icons/plus.ts
|
|
236
|
+
var plus = createIcon("plus", [
|
|
237
|
+
["line", { x1: "12", y1: "5", x2: "12", y2: "19" }],
|
|
238
|
+
["line", { x1: "5", y1: "12", x2: "19", y2: "12" }]
|
|
239
|
+
]);
|
|
240
|
+
|
|
241
|
+
// src/svg/icons/refreshCw.ts
|
|
242
|
+
var refreshCw = createIcon("refresh-cw", [
|
|
243
|
+
["path", { d: "M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }],
|
|
244
|
+
["path", { d: "M3 3v5h5" }],
|
|
245
|
+
["path", { d: "M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16" }],
|
|
246
|
+
["path", { d: "M16 16h5v5" }]
|
|
247
|
+
]);
|
|
248
|
+
|
|
249
|
+
// src/svg/icons/search.ts
|
|
250
|
+
var search = createIcon("search", [
|
|
251
|
+
["circle", { cx: "11", cy: "11", r: "8" }],
|
|
252
|
+
["line", { x1: "21", y1: "21", x2: "16.65", y2: "16.65" }]
|
|
253
|
+
]);
|
|
254
|
+
|
|
255
|
+
// src/svg/icons/settings.ts
|
|
256
|
+
var settings = createIcon("settings", [
|
|
257
|
+
["path", { d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" }],
|
|
258
|
+
["circle", { cx: "12", cy: "12", r: "3" }]
|
|
259
|
+
]);
|
|
260
|
+
|
|
261
|
+
// src/svg/icons/star.ts
|
|
262
|
+
var star = createIcon("star", [
|
|
263
|
+
["polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }]
|
|
264
|
+
]);
|
|
265
|
+
|
|
266
|
+
// src/svg/icons/sun.ts
|
|
267
|
+
var sun = createIcon("sun", [
|
|
268
|
+
["circle", { cx: "12", cy: "12", r: "4" }],
|
|
269
|
+
["line", { x1: "12", y1: "2", x2: "12", y2: "4" }],
|
|
270
|
+
["line", { x1: "12", y1: "20", x2: "12", y2: "22" }],
|
|
271
|
+
["line", { x1: "4.93", y1: "4.93", x2: "6.34", y2: "6.34" }],
|
|
272
|
+
["line", { x1: "17.66", y1: "17.66", x2: "19.07", y2: "19.07" }],
|
|
273
|
+
["line", { x1: "2", y1: "12", x2: "4", y2: "12" }],
|
|
274
|
+
["line", { x1: "20", y1: "12", x2: "22", y2: "12" }],
|
|
275
|
+
["line", { x1: "6.34", y1: "17.66", x2: "4.93", y2: "19.07" }],
|
|
276
|
+
["line", { x1: "19.07", y1: "4.93", x2: "17.66", y2: "6.34" }]
|
|
277
|
+
]);
|
|
278
|
+
|
|
279
|
+
// src/svg/icons/trash.ts
|
|
280
|
+
var trash = createIcon("trash", [
|
|
281
|
+
["path", { d: "M3 6h18" }],
|
|
282
|
+
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }],
|
|
283
|
+
["path", { d: "M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" }],
|
|
284
|
+
["line", { x1: "10", y1: "11", x2: "10", y2: "17" }],
|
|
285
|
+
["line", { x1: "14", y1: "11", x2: "14", y2: "17" }]
|
|
286
|
+
]);
|
|
287
|
+
|
|
288
|
+
// src/svg/icons/upload.ts
|
|
289
|
+
var upload = createIcon("upload", [
|
|
290
|
+
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }],
|
|
291
|
+
["polyline", { points: "17 8 12 3 7 8" }],
|
|
292
|
+
["line", { x1: "12", y1: "3", x2: "12", y2: "15" }]
|
|
293
|
+
]);
|
|
294
|
+
|
|
295
|
+
// src/svg/icons/user.ts
|
|
296
|
+
var user = createIcon("user", [
|
|
297
|
+
["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" }],
|
|
298
|
+
["circle", { cx: "12", cy: "7", r: "4" }]
|
|
299
|
+
]);
|
|
300
|
+
|
|
301
|
+
// src/svg/icons/x.ts
|
|
302
|
+
var x = createIcon("x", [
|
|
303
|
+
["line", { x1: "18", y1: "6", x2: "6", y2: "18" }],
|
|
304
|
+
["line", { x1: "6", y1: "6", x2: "18", y2: "18" }]
|
|
305
|
+
]);
|
|
306
|
+
|
|
307
|
+
// src/svg/icons/index.ts
|
|
308
|
+
var icons = {
|
|
309
|
+
alertTriangle,
|
|
310
|
+
bell,
|
|
311
|
+
calendar,
|
|
312
|
+
check,
|
|
313
|
+
chevronDown,
|
|
314
|
+
chevronLeft,
|
|
315
|
+
chevronRight,
|
|
316
|
+
chevronUp,
|
|
317
|
+
circle,
|
|
318
|
+
copy,
|
|
319
|
+
download,
|
|
320
|
+
edit,
|
|
321
|
+
externalLink,
|
|
322
|
+
eye,
|
|
323
|
+
eyeOff,
|
|
324
|
+
filter,
|
|
325
|
+
heart,
|
|
326
|
+
home,
|
|
327
|
+
info,
|
|
328
|
+
link,
|
|
329
|
+
loader,
|
|
330
|
+
lock,
|
|
331
|
+
mail,
|
|
332
|
+
menu,
|
|
333
|
+
minus,
|
|
334
|
+
moon,
|
|
335
|
+
moreHorizontal,
|
|
336
|
+
phone,
|
|
337
|
+
plus,
|
|
338
|
+
refreshCw,
|
|
339
|
+
search,
|
|
340
|
+
settings,
|
|
341
|
+
star,
|
|
342
|
+
sun,
|
|
343
|
+
trash,
|
|
344
|
+
upload,
|
|
345
|
+
user,
|
|
346
|
+
x
|
|
347
|
+
};
|
|
348
|
+
export {
|
|
349
|
+
Icon,
|
|
350
|
+
icons
|
|
351
|
+
};
|
|
352
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/svg/Icon.ts","../../src/svg/create-icon.ts","../../src/svg/icons/alertTriangle.ts","../../src/svg/icons/bell.ts","../../src/svg/icons/calendar.ts","../../src/svg/icons/check.ts","../../src/svg/icons/chevronDown.ts","../../src/svg/icons/chevronLeft.ts","../../src/svg/icons/chevronRight.ts","../../src/svg/icons/chevronUp.ts","../../src/svg/icons/circle.ts","../../src/svg/icons/copy.ts","../../src/svg/icons/download.ts","../../src/svg/icons/edit.ts","../../src/svg/icons/externalLink.ts","../../src/svg/icons/eye.ts","../../src/svg/icons/eyeOff.ts","../../src/svg/icons/filter.ts","../../src/svg/icons/heart.ts","../../src/svg/icons/home.ts","../../src/svg/icons/info.ts","../../src/svg/icons/link.ts","../../src/svg/icons/loader.ts","../../src/svg/icons/lock.ts","../../src/svg/icons/mail.ts","../../src/svg/icons/menu.ts","../../src/svg/icons/minus.ts","../../src/svg/icons/moon.ts","../../src/svg/icons/moreHorizontal.ts","../../src/svg/icons/phone.ts","../../src/svg/icons/plus.ts","../../src/svg/icons/refreshCw.ts","../../src/svg/icons/search.ts","../../src/svg/icons/settings.ts","../../src/svg/icons/star.ts","../../src/svg/icons/sun.ts","../../src/svg/icons/trash.ts","../../src/svg/icons/upload.ts","../../src/svg/icons/user.ts","../../src/svg/icons/x.ts","../../src/svg/icons/index.ts"],"sourcesContent":["import type { IconInput, IconRenderProps, IconShape } from './types'\r\n\r\nconst SVGNS = 'http://www.w3.org/2000/svg'\r\n\r\n/** Builds the shared base attributes (sizing, stroke, viewBox) applied to every rendered icon `<svg>`. */\r\nfunction baseAttrs(props: IconRenderProps): Record<string, string> {\r\n const size = String(props.size ?? 16)\r\n return {\r\n xmlns: SVGNS,\r\n width: size,\r\n height: size,\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: props.color ?? 'currentColor',\r\n 'stroke-width': String(props.strokeWidth ?? 2),\r\n 'stroke-linecap': 'round',\r\n 'stroke-linejoin': 'round'\r\n }\r\n}\r\n\r\n/**\r\n * Renders a static `IconShape` into a real `SVGSVGElement`.\r\n *\r\n * Exported so per-icon components (`svg/icons/*`) can reuse the exact same rendering\r\n * path as the generic `Icon()` dispatcher below -- one source of truth, no duplication.\r\n */\r\nexport function renderIconShape(shape: IconShape, props: IconRenderProps): SVGSVGElement {\r\n const svg = document.createElementNS(SVGNS, 'svg') as SVGSVGElement\r\n const attrs = baseAttrs(props)\r\n for (const key in attrs) svg.setAttribute(key, attrs[key] as string)\r\n if (props.className) svg.setAttribute('class', props.className)\r\n for (const [tag, childAttrs] of shape) {\r\n const node = document.createElementNS(SVGNS, tag)\r\n for (const key in childAttrs) node.setAttribute(key, childAttrs[key] as string)\r\n svg.appendChild(node)\r\n }\r\n return svg\r\n}\r\n\r\n/** Clones an existing `SVGSVGElement`, re-applying size/color/stroke/class overrides. */\r\nfunction fromElement(source: SVGSVGElement, props: IconRenderProps): SVGSVGElement {\r\n const svg = source.cloneNode(true) as SVGSVGElement\r\n const size = String(props.size ?? 16)\r\n svg.setAttribute('width', size)\r\n svg.setAttribute('height', size)\r\n if (props.color) svg.setAttribute('stroke', props.color)\r\n if (props.strokeWidth != null) svg.setAttribute('stroke-width', String(props.strokeWidth))\r\n if (props.className) svg.classList.add(...props.className.split(' ').filter(Boolean))\r\n return svg\r\n}\r\n\r\n/** Parses raw `<svg>...</svg>` markup into a real element before delegating to `fromElement`. */\r\nfunction fromMarkup(markup: string, props: IconRenderProps): SVGSVGElement {\r\n const doc = new DOMParser().parseFromString(markup, 'image/svg+xml')\r\n return fromElement(doc.documentElement as unknown as SVGSVGElement, props)\r\n}\r\n\r\n/**\r\n * Renders any supported `IconInput` shape into a real `SVGSVGElement`.\r\n * Returns `null` when input is `null`/`undefined`, so callers never need to branch\r\n * before rendering an optional icon.\r\n *\r\n * @param input - The icon source: shape array, raw markup, an existing element, a component/render function, or nothing.\r\n * @param size - Shorthand for `props.size` (overridden if `props.size` is also set).\r\n * @param props - Additional render props: color, strokeWidth, className.\r\n * @requires A DOM environment (browser, or Node/Bun with a DOM shim).\r\n */\r\nexport function Icon(input: IconInput, size?: number | string, props: IconRenderProps = {}): SVGSVGElement | null {\r\n if (input === null || input === undefined) return null\r\n const resolved: IconRenderProps = { ...(size !== undefined ? { size } : {}), ...props }\r\n if (typeof input === 'function') return input(resolved)\r\n if (typeof input === 'string') return fromMarkup(input, resolved)\r\n if (input instanceof SVGElement) return fromElement(input as SVGSVGElement, resolved)\r\n if (Array.isArray(input)) return renderIconShape(input, resolved)\r\n return null\r\n}","import { renderIconShape } from './Icon'\r\nimport type { IconComponent, IconRenderProps, IconShape } from './types'\r\n\r\n/**\r\n * Builds a ready-to-use icon component from a static shape -- mirroring how lucide\r\n * generates one component per icon via `createLucideIcon`.\r\n *\r\n * Every file in `svg/icons/*` calls this once and exports the result, so each icon\r\n * is a real, standalone, tree-shakeable SVG component instead of a shared data blob.\r\n *\r\n * @param name - Icon name, stamped onto the rendered element as `data-icon` (debugging/theming hook).\r\n * @param shape - The ordered list of child nodes that make up the icon.\r\n * @returns A component: call it with optional render props to get a fresh `SVGSVGElement`.\r\n */\r\nexport function createIcon(name: string, shape: IconShape): IconComponent {\r\n return function renderIcon(props: IconRenderProps = {}): SVGSVGElement {\r\n const svg = renderIconShape(shape, props)\r\n svg.setAttribute('data-icon', name)\r\n return svg\r\n }\r\n}","import { createIcon } from '../create-icon'\r\n\r\nexport const alertTriangle = createIcon('alert-triangle', [\r\n ['path', { d: 'M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z' }],\r\n ['line', { x1: '12', y1: '9', x2: '12', y2: '13' }],\r\n ['line', { x1: '12', y1: '17', x2: '12.01', y2: '17' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const bell = createIcon('bell', [\r\n ['path', { d: 'M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9' }],\r\n ['path', { d: 'M10.3 21a1.94 1.94 0 0 0 3.4 0' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const calendar = createIcon('calendar', [\r\n ['rect', { x: '3', y: '4', width: '18', height: '18', rx: '2' }],\r\n ['line', { x1: '16', y1: '2', x2: '16', y2: '6' }],\r\n ['line', { x1: '8', y1: '2', x2: '8', y2: '6' }],\r\n ['line', { x1: '3', y1: '10', x2: '21', y2: '10' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const check = createIcon('check', [\r\n ['polyline', { points: '20 6 9 17 4 12' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const chevronDown = createIcon('chevron-down', [\r\n ['polyline', { points: '6 9 12 15 18 9' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const chevronLeft = createIcon('chevron-left', [\r\n ['polyline', { points: '15 18 9 12 15 6' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const chevronRight = createIcon('chevron-right', [\r\n ['polyline', { points: '9 18 15 12 9 6' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const chevronUp = createIcon('chevron-up', [\r\n ['polyline', { points: '18 15 12 9 6 15' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const circle = createIcon('circle', [\r\n ['circle', { cx: '12', cy: '12', r: '10' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const copy = createIcon('copy', [\r\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2' }],\r\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const download = createIcon('download', [\r\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4' }],\r\n ['polyline', { points: '7 10 12 15 17 10' }],\r\n ['line', { x1: '12', y1: '15', x2: '12', y2: '3' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const edit = createIcon('edit', [\r\n ['path', { d: 'M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const externalLink = createIcon('external-link', [\r\n ['path', { d: 'M15 3h6v6' }],\r\n ['path', { d: 'M10 14 21 3' }],\r\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const eye = createIcon('eye', [\r\n ['path', { d: 'M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z' }],\r\n ['circle', { cx: '12', cy: '12', r: '3' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const eyeOff = createIcon('eye-off', [\r\n ['path', { d: 'M9.88 9.88a3 3 0 1 0 4.24 4.24' }],\r\n ['path', { d: 'M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68' }],\r\n ['path', { d: 'M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61' }],\r\n ['line', { x1: '2', y1: '2', x2: '22', y2: '22' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const filter = createIcon('filter', [\r\n ['polygon', { points: '22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const heart = createIcon('heart', [\r\n ['path', { d: 'M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const home = createIcon('home', [\r\n ['path', { d: 'M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z' }],\r\n ['polyline', { points: '9 22 9 12 15 12 15 22' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const info = createIcon('info', [\r\n ['circle', { cx: '12', cy: '12', r: '10' }],\r\n ['line', { x1: '12', y1: '16', x2: '12', y2: '12' }],\r\n ['line', { x1: '12', y1: '8', x2: '12.01', y2: '8' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const link = createIcon('link', [\r\n ['path', { d: 'M9 17H7A5 5 0 0 1 7 7h2' }],\r\n ['path', { d: 'M15 7h2a5 5 0 1 1 0 10h-2' }],\r\n ['line', { x1: '8', y1: '12', x2: '16', y2: '12' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const loader = createIcon('loader', [\r\n ['line', { x1: '12', y1: '2', x2: '12', y2: '6' }],\r\n ['line', { x1: '12', y1: '18', x2: '12', y2: '22' }],\r\n ['line', { x1: '4.9', y1: '4.9', x2: '7.8', y2: '7.8' }],\r\n ['line', { x1: '16.2', y1: '16.2', x2: '19.1', y2: '19.1' }],\r\n ['line', { x1: '2', y1: '12', x2: '6', y2: '12' }],\r\n ['line', { x1: '18', y1: '12', x2: '22', y2: '12' }],\r\n ['line', { x1: '4.9', y1: '19.1', x2: '7.8', y2: '16.2' }],\r\n ['line', { x1: '16.2', y1: '7.8', x2: '19.1', y2: '4.9' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const lock = createIcon('lock', [\r\n ['rect', { x: '3', y: '11', width: '18', height: '11', rx: '2', ry: '2' }],\r\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const mail = createIcon('mail', [\r\n ['rect', { width: '20', height: '16', x: '2', y: '4', rx: '2' }],\r\n ['path', { d: 'm22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const menu = createIcon('menu', [\r\n ['line', { x1: '4', y1: '12', x2: '20', y2: '12' }],\r\n ['line', { x1: '4', y1: '6', x2: '20', y2: '6' }],\r\n ['line', { x1: '4', y1: '18', x2: '20', y2: '18' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const minus = createIcon('minus', [\r\n ['line', { x1: '5', y1: '12', x2: '19', y2: '12' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const moon = createIcon('moon', [\r\n ['path', { d: 'M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const moreHorizontal = createIcon('more-horizontal', [\r\n ['circle', { cx: '5', cy: '12', r: '1' }],\r\n ['circle', { cx: '12', cy: '12', r: '1' }],\r\n ['circle', { cx: '19', cy: '12', r: '1' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const phone = createIcon('phone', [\r\n ['path', { d: 'M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const plus = createIcon('plus', [\r\n ['line', { x1: '12', y1: '5', x2: '12', y2: '19' }],\r\n ['line', { x1: '5', y1: '12', x2: '19', y2: '12' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const refreshCw = createIcon('refresh-cw', [\r\n ['path', { d: 'M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8' }],\r\n ['path', { d: 'M3 3v5h5' }],\r\n ['path', { d: 'M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16' }],\r\n ['path', { d: 'M16 16h5v5' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const search = createIcon('search', [\r\n ['circle', { cx: '11', cy: '11', r: '8' }],\r\n ['line', { x1: '21', y1: '21', x2: '16.65', y2: '16.65' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const settings = createIcon('settings', [\r\n ['path', { d: 'M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z' }],\r\n ['circle', { cx: '12', cy: '12', r: '3' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const star = createIcon('star', [\r\n ['polygon', { points: '12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const sun = createIcon('sun', [\r\n ['circle', { cx: '12', cy: '12', r: '4' }],\r\n ['line', { x1: '12', y1: '2', x2: '12', y2: '4' }],\r\n ['line', { x1: '12', y1: '20', x2: '12', y2: '22' }],\r\n ['line', { x1: '4.93', y1: '4.93', x2: '6.34', y2: '6.34' }],\r\n ['line', { x1: '17.66', y1: '17.66', x2: '19.07', y2: '19.07' }],\r\n ['line', { x1: '2', y1: '12', x2: '4', y2: '12' }],\r\n ['line', { x1: '20', y1: '12', x2: '22', y2: '12' }],\r\n ['line', { x1: '6.34', y1: '17.66', x2: '4.93', y2: '19.07' }],\r\n ['line', { x1: '19.07', y1: '4.93', x2: '17.66', y2: '6.34' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const trash = createIcon('trash', [\r\n ['path', { d: 'M3 6h18' }],\r\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2' }],\r\n ['path', { d: 'M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6' }],\r\n ['line', { x1: '10', y1: '11', x2: '10', y2: '17' }],\r\n ['line', { x1: '14', y1: '11', x2: '14', y2: '17' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const upload = createIcon('upload', [\r\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4' }],\r\n ['polyline', { points: '17 8 12 3 7 8' }],\r\n ['line', { x1: '12', y1: '3', x2: '12', y2: '15' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const user = createIcon('user', [\r\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2' }],\r\n ['circle', { cx: '12', cy: '7', r: '4' }]\r\n])","import { createIcon } from '../create-icon'\r\n\r\nexport const x = createIcon('x', [\r\n ['line', { x1: '18', y1: '6', x2: '6', y2: '18' }],\r\n ['line', { x1: '6', y1: '6', x2: '18', y2: '18' }]\r\n])","import { alertTriangle } from './alertTriangle'\nimport { bell } from './bell'\nimport { calendar } from './calendar'\nimport { check } from './check'\nimport { chevronDown } from './chevronDown'\nimport { chevronLeft } from './chevronLeft'\nimport { chevronRight } from './chevronRight'\nimport { chevronUp } from './chevronUp'\nimport { circle } from './circle'\nimport { copy } from './copy'\nimport { download } from './download'\nimport { edit } from './edit'\nimport { externalLink } from './externalLink'\nimport { eye } from './eye'\nimport { eyeOff } from './eyeOff'\nimport { filter } from './filter'\nimport { heart } from './heart'\nimport { home } from './home'\nimport { info } from './info'\nimport { link } from './link'\nimport { loader } from './loader'\nimport { lock } from './lock'\nimport { mail } from './mail'\nimport { menu } from './menu'\nimport { minus } from './minus'\nimport { moon } from './moon'\nimport { moreHorizontal } from './moreHorizontal'\nimport { phone } from './phone'\nimport { plus } from './plus'\nimport { refreshCw } from './refreshCw'\nimport { search } from './search'\nimport { settings } from './settings'\nimport { star } from './star'\nimport { sun } from './sun'\nimport { trash } from './trash'\nimport { upload } from './upload'\nimport { user } from './user'\nimport { x } from './x'\nimport type { IconComponent } from '../types'\n\nexport { alertTriangle } from './alertTriangle'\nexport { bell } from './bell'\nexport { calendar } from './calendar'\nexport { check } from './check'\nexport { chevronDown } from './chevronDown'\nexport { chevronLeft } from './chevronLeft'\nexport { chevronRight } from './chevronRight'\nexport { chevronUp } from './chevronUp'\nexport { circle } from './circle'\nexport { copy } from './copy'\nexport { download } from './download'\nexport { edit } from './edit'\nexport { externalLink } from './externalLink'\nexport { eye } from './eye'\nexport { eyeOff } from './eyeOff'\nexport { filter } from './filter'\nexport { heart } from './heart'\nexport { home } from './home'\nexport { info } from './info'\nexport { link } from './link'\nexport { loader } from './loader'\nexport { lock } from './lock'\nexport { mail } from './mail'\nexport { menu } from './menu'\nexport { minus } from './minus'\nexport { moon } from './moon'\nexport { moreHorizontal } from './moreHorizontal'\nexport { phone } from './phone'\nexport { plus } from './plus'\nexport { refreshCw } from './refreshCw'\nexport { search } from './search'\nexport { settings } from './settings'\nexport { star } from './star'\nexport { sun } from './sun'\nexport { trash } from './trash'\nexport { upload } from './upload'\nexport { user } from './user'\nexport { x } from './x'\n\n/**\n * Linteau's built-in icon set, keyed by name -- auto-generated by `scripts/generate-icons.ts`\n * from every file in `svg/icons/*`. Do not edit this file by hand: add or remove an icon\n * file instead and re-run `bun run generate:icons` (any `build`/`typecheck`/`serve` run\n * does this automatically for you).\n *\n * Every entry is a real, standalone `IconComponent`, so this object is fully interchangeable\n * with, and spreadable alongside, your own lucide clone:\n *\n * ```ts\n * import { icons } from 'linteau/svg'\n * const allIcons: Record<string, IconComponent> = { ...icons, ...myLucideCloneIcons }\n * ```\n */\nexport const icons: Record<string, IconComponent> = {\n alertTriangle,\n bell,\n calendar,\n check,\n chevronDown,\n chevronLeft,\n chevronRight,\n chevronUp,\n circle,\n copy,\n download,\n edit,\n externalLink,\n eye,\n eyeOff,\n filter,\n heart,\n home,\n info,\n link,\n loader,\n lock,\n mail,\n menu,\n minus,\n moon,\n moreHorizontal,\n phone,\n plus,\n refreshCw,\n search,\n settings,\n star,\n sun,\n trash,\n upload,\n user,\n x\n}\n"],"mappings":";AAEA,IAAM,QAAQ;AAGd,SAAS,UAAU,OAAgD;AACjE,QAAM,OAAO,OAAO,MAAM,QAAQ,EAAE;AACpC,SAAO;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ,MAAM,SAAS;AAAA,IACvB,gBAAgB,OAAO,MAAM,eAAe,CAAC;AAAA,IAC7C,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,EACrB;AACF;AAQO,SAAS,gBAAgB,OAAkB,OAAuC;AACvF,QAAM,MAAM,SAAS,gBAAgB,OAAO,KAAK;AACjD,QAAM,QAAQ,UAAU,KAAK;AAC7B,aAAW,OAAO,MAAO,KAAI,aAAa,KAAK,MAAM,GAAG,CAAW;AACnE,MAAI,MAAM,UAAW,KAAI,aAAa,SAAS,MAAM,SAAS;AAC9D,aAAW,CAAC,KAAK,UAAU,KAAK,OAAO;AACrC,UAAM,OAAO,SAAS,gBAAgB,OAAO,GAAG;AAChD,eAAW,OAAO,WAAY,MAAK,aAAa,KAAK,WAAW,GAAG,CAAW;AAC9E,QAAI,YAAY,IAAI;AAAA,EACtB;AACA,SAAO;AACT;AAGA,SAAS,YAAY,QAAuB,OAAuC;AACjF,QAAM,MAAM,OAAO,UAAU,IAAI;AACjC,QAAM,OAAO,OAAO,MAAM,QAAQ,EAAE;AACpC,MAAI,aAAa,SAAS,IAAI;AAC9B,MAAI,aAAa,UAAU,IAAI;AAC/B,MAAI,MAAM,MAAO,KAAI,aAAa,UAAU,MAAM,KAAK;AACvD,MAAI,MAAM,eAAe,KAAM,KAAI,aAAa,gBAAgB,OAAO,MAAM,WAAW,CAAC;AACzF,MAAI,MAAM,UAAW,KAAI,UAAU,IAAI,GAAG,MAAM,UAAU,MAAM,GAAG,EAAE,OAAO,OAAO,CAAC;AACpF,SAAO;AACT;AAGA,SAAS,WAAW,QAAgB,OAAuC;AACzE,QAAM,MAAM,IAAI,UAAU,EAAE,gBAAgB,QAAQ,eAAe;AACnE,SAAO,YAAY,IAAI,iBAA6C,KAAK;AAC3E;AAYO,SAAS,KAAK,OAAkB,MAAwB,QAAyB,CAAC,GAAyB;AAChH,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,QAAM,WAA4B,EAAE,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC,GAAI,GAAG,MAAM;AACtF,MAAI,OAAO,UAAU,WAAY,QAAO,MAAM,QAAQ;AACtD,MAAI,OAAO,UAAU,SAAU,QAAO,WAAW,OAAO,QAAQ;AAChE,MAAI,iBAAiB,WAAY,QAAO,YAAY,OAAwB,QAAQ;AACpF,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,gBAAgB,OAAO,QAAQ;AAChE,SAAO;AACT;;;AC7DO,SAAS,WAAW,MAAc,OAAiC;AACxE,SAAO,SAAS,WAAW,QAAyB,CAAC,GAAkB;AACrE,UAAM,MAAM,gBAAgB,OAAO,KAAK;AACxC,QAAI,aAAa,aAAa,IAAI;AAClC,WAAO;AAAA,EACT;AACF;;;AClBO,IAAM,gBAAgB,WAAW,kBAAkB;AAAA,EACxD,CAAC,QAAQ,EAAE,GAAG,2FAA2F,CAAC;AAAA,EAC1G,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EAClD,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,SAAS,IAAI,KAAK,CAAC;AACxD,CAAC;;;ACJM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,GAAG,4CAA4C,CAAC;AAAA,EAC3D,CAAC,QAAQ,EAAE,GAAG,iCAAiC,CAAC;AAClD,CAAC;;;ACHM,IAAM,WAAW,WAAW,YAAY;AAAA,EAC7C,CAAC,QAAQ,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,MAAM,QAAQ,MAAM,IAAI,IAAI,CAAC;AAAA,EAC/D,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,EACjD,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC;AAAA,EAC/C,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AACpD,CAAC;;;ACLM,IAAM,QAAQ,WAAW,SAAS;AAAA,EACvC,CAAC,YAAY,EAAE,QAAQ,iBAAiB,CAAC;AAC3C,CAAC;;;ACFM,IAAM,cAAc,WAAW,gBAAgB;AAAA,EACpD,CAAC,YAAY,EAAE,QAAQ,iBAAiB,CAAC;AAC3C,CAAC;;;ACFM,IAAM,cAAc,WAAW,gBAAgB;AAAA,EACpD,CAAC,YAAY,EAAE,QAAQ,kBAAkB,CAAC;AAC5C,CAAC;;;ACFM,IAAM,eAAe,WAAW,iBAAiB;AAAA,EACtD,CAAC,YAAY,EAAE,QAAQ,iBAAiB,CAAC;AAC3C,CAAC;;;ACFM,IAAM,YAAY,WAAW,cAAc;AAAA,EAChD,CAAC,YAAY,EAAE,QAAQ,kBAAkB,CAAC;AAC5C,CAAC;;;ACFM,IAAM,SAAS,WAAW,UAAU;AAAA,EACzC,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC;AAC5C,CAAC;;;ACFM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,OAAO,MAAM,QAAQ,MAAM,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC;AAAA,EACxE,CAAC,QAAQ,EAAE,GAAG,0DAA0D,CAAC;AAC3E,CAAC;;;ACHM,IAAM,WAAW,WAAW,YAAY;AAAA,EAC7C,CAAC,QAAQ,EAAE,GAAG,4CAA4C,CAAC;AAAA,EAC3D,CAAC,YAAY,EAAE,QAAQ,mBAAmB,CAAC;AAAA,EAC3C,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC;AACpD,CAAC;;;ACJM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,GAAG,mDAAmD,CAAC;AACpE,CAAC;;;ACFM,IAAM,eAAe,WAAW,iBAAiB;AAAA,EACtD,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC;AAAA,EAC3B,CAAC,QAAQ,EAAE,GAAG,cAAc,CAAC;AAAA,EAC7B,CAAC,QAAQ,EAAE,GAAG,2DAA2D,CAAC;AAC5E,CAAC;;;ACJM,IAAM,MAAM,WAAW,OAAO;AAAA,EACnC,CAAC,QAAQ,EAAE,GAAG,+CAA+C,CAAC;AAAA,EAC9D,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AAC3C,CAAC;;;ACHM,IAAM,SAAS,WAAW,WAAW;AAAA,EAC1C,CAAC,QAAQ,EAAE,GAAG,iCAAiC,CAAC;AAAA,EAChD,CAAC,QAAQ,EAAE,GAAG,+EAA+E,CAAC;AAAA,EAC9F,CAAC,QAAQ,EAAE,GAAG,yEAAyE,CAAC;AAAA,EACxF,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC;;;ACLM,IAAM,SAAS,WAAW,UAAU;AAAA,EACzC,CAAC,WAAW,EAAE,QAAQ,8CAA8C,CAAC;AACvE,CAAC;;;ACFM,IAAM,QAAQ,WAAW,SAAS;AAAA,EACvC,CAAC,QAAQ,EAAE,GAAG,2IAA2I,CAAC;AAC5J,CAAC;;;ACFM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,GAAG,iDAAiD,CAAC;AAAA,EAChE,CAAC,YAAY,EAAE,QAAQ,wBAAwB,CAAC;AAClD,CAAC;;;ACHM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC;AAAA,EAC1C,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EACnD,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC;AACtD,CAAC;;;ACJM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,GAAG,0BAA0B,CAAC;AAAA,EACzC,CAAC,QAAQ,EAAE,GAAG,4BAA4B,CAAC;AAAA,EAC3C,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AACpD,CAAC;;;ACJM,IAAM,SAAS,WAAW,UAAU;AAAA,EACzC,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,EACjD,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EACnD,CAAC,QAAQ,EAAE,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC;AAAA,EACvD,CAAC,QAAQ,EAAE,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,CAAC;AAAA,EAC3D,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC;AAAA,EACjD,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EACnD,CAAC,QAAQ,EAAE,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC;AAAA,EACzD,CAAC,QAAQ,EAAE,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,CAAC;AAC3D,CAAC;;;ACTM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,GAAG,KAAK,GAAG,MAAM,OAAO,MAAM,QAAQ,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC;AAAA,EACzE,CAAC,QAAQ,EAAE,GAAG,2BAA2B,CAAC;AAC5C,CAAC;;;ACHM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,OAAO,MAAM,QAAQ,MAAM,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;AAAA,EAC/D,CAAC,QAAQ,EAAE,GAAG,4CAA4C,CAAC;AAC7D,CAAC;;;ACHM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EAClD,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,EAChD,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AACpD,CAAC;;;ACJM,IAAM,QAAQ,WAAW,SAAS;AAAA,EACvC,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AACpD,CAAC;;;ACFM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,GAAG,qCAAqC,CAAC;AACtD,CAAC;;;ACFM,IAAM,iBAAiB,WAAW,mBAAmB;AAAA,EAC1D,CAAC,UAAU,EAAE,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC;AAAA,EACxC,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AAAA,EACzC,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AAC3C,CAAC;;;ACJM,IAAM,QAAQ,WAAW,SAAS;AAAA,EACvC,CAAC,QAAQ,EAAE,GAAG,+RAA+R,CAAC;AAChT,CAAC;;;ACFM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EAClD,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AACpD,CAAC;;;ACHM,IAAM,YAAY,WAAW,cAAc;AAAA,EAChD,CAAC,QAAQ,EAAE,GAAG,qDAAqD,CAAC;AAAA,EACpE,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC;AAAA,EAC1B,CAAC,QAAQ,EAAE,GAAG,sDAAsD,CAAC;AAAA,EACrE,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC;AAC9B,CAAC;;;ACLM,IAAM,SAAS,WAAW,UAAU;AAAA,EACzC,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AAAA,EACzC,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC;AAC3D,CAAC;;;ACHM,IAAM,WAAW,WAAW,YAAY;AAAA,EAC7C,CAAC,QAAQ,EAAE,GAAG,wjBAAwjB,CAAC;AAAA,EACvkB,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AAC3C,CAAC;;;ACHM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,WAAW,EAAE,QAAQ,iGAAiG,CAAC;AAC1H,CAAC;;;ACFM,IAAM,MAAM,WAAW,OAAO;AAAA,EACnC,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;AAAA,EACzC,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,EACjD,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EACnD,CAAC,QAAQ,EAAE,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,CAAC;AAAA,EAC3D,CAAC,QAAQ,EAAE,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,CAAC;AAAA,EAC/D,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC;AAAA,EACjD,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EACnD,CAAC,QAAQ,EAAE,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,CAAC;AAAA,EAC7D,CAAC,QAAQ,EAAE,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,CAAC;AAC/D,CAAC;;;ACVM,IAAM,QAAQ,WAAW,SAAS;AAAA,EACvC,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC;AAAA,EACzB,CAAC,QAAQ,EAAE,GAAG,yCAAyC,CAAC;AAAA,EACxD,CAAC,QAAQ,EAAE,GAAG,gDAAgD,CAAC;AAAA,EAC/D,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,EACnD,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC;AACrD,CAAC;;;ACNM,IAAM,SAAS,WAAW,UAAU;AAAA,EACzC,CAAC,QAAQ,EAAE,GAAG,4CAA4C,CAAC;AAAA,EAC3D,CAAC,YAAY,EAAE,QAAQ,gBAAgB,CAAC;AAAA,EACxC,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACpD,CAAC;;;ACJM,IAAM,OAAO,WAAW,QAAQ;AAAA,EACrC,CAAC,QAAQ,EAAE,GAAG,4CAA4C,CAAC;AAAA,EAC3D,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;AAC1C,CAAC;;;ACHM,IAAM,IAAI,WAAW,KAAK;AAAA,EAC/B,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC;AAAA,EACjD,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC;;;ACwFM,IAAM,QAAuC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** A single SVG child element in Linteau's lightweight icon format: [tagName, attributes]. */
|
|
2
|
+
export type IconChildNode = readonly [tag: string, attrs: Record<string, string>];
|
|
3
|
+
/** The full shape of an icon: an ordered list of child nodes rendered inside a root <svg>. Compatible with lucide-style icon exports. */
|
|
4
|
+
export type IconShape = readonly IconChildNode[];
|
|
5
|
+
/** Props accepted when rendering any icon, regardless of its source shape. */
|
|
6
|
+
export interface IconRenderProps {
|
|
7
|
+
/** Pixel size applied to both width and height. Defaults to `16`. */
|
|
8
|
+
size?: number | string;
|
|
9
|
+
/** Stroke width for the icon's paths. Defaults to `2`. */
|
|
10
|
+
strokeWidth?: number;
|
|
11
|
+
/** Stroke/fill color. Defaults to `currentColor` so icons inherit surrounding text color. */
|
|
12
|
+
color?: string | undefined;
|
|
13
|
+
/** Extra class names appended to the rendered `svg`. */
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
/** A ready-to-render icon component -- the shape every per-icon file in `svg/icons/*` exports, mirroring one lucide component per icon. */
|
|
17
|
+
export type IconComponent = (props?: IconRenderProps) => SVGSVGElement;
|
|
18
|
+
/**
|
|
19
|
+
* Every shape an icon can be provided in -- this is the type every `icon?` prop across the whole library accepts:
|
|
20
|
+
* - `IconShape` -- a lucide-style array of [tag, attrs] child nodes (tree-shakeable, framework-agnostic)
|
|
21
|
+
* - `string` -- raw `<svg>...</svg>` markup, parsed at render time
|
|
22
|
+
* - `SVGSVGElement` -- an already-built element, cloned before use
|
|
23
|
+
* - `IconComponent` -- a render function receiving `IconRenderProps` and returning an `SVGSVGElement` (what every built-in icon now is)
|
|
24
|
+
* - `null` / `undefined` -- renders nothing, so icons are always fully optional
|
|
25
|
+
*/
|
|
26
|
+
export type IconInput = IconShape | string | SVGSVGElement | IconComponent | null | undefined;
|
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pendentive",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "A self-sufficient, dependency-free UI component library for the browser, Node, and Bun.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "WTFPL",
|
|
7
|
+
"author": "Nolly",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"ui-components",
|
|
10
|
+
"component-library",
|
|
11
|
+
"design-system",
|
|
12
|
+
"vanilla-javascript",
|
|
13
|
+
"typescript",
|
|
14
|
+
"zero-dependency",
|
|
15
|
+
"dom",
|
|
16
|
+
"browser",
|
|
17
|
+
"nodejs",
|
|
18
|
+
"bun",
|
|
19
|
+
"web-components",
|
|
20
|
+
"svg-icons",
|
|
21
|
+
"css-variables",
|
|
22
|
+
"frontend"
|
|
23
|
+
],
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=18",
|
|
27
|
+
"bun": ">=1.0"
|
|
28
|
+
},
|
|
29
|
+
"main": "./dist/index.cjs",
|
|
30
|
+
"module": "./dist/index.js",
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
|
+
"unpkg": "./dist/pendentive.global.js",
|
|
33
|
+
"jsdelivr": "./dist/pendentive.global.js",
|
|
34
|
+
"exports": {
|
|
35
|
+
".": {
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"import": "./dist/index.js",
|
|
38
|
+
"require": "./dist/index.cjs"
|
|
39
|
+
},
|
|
40
|
+
"./svg": {
|
|
41
|
+
"types": "./dist/svg/index.d.ts",
|
|
42
|
+
"import": "./dist/svg/index.js",
|
|
43
|
+
"require": "./dist/svg/index.cjs"
|
|
44
|
+
},
|
|
45
|
+
"./package.json": "./package.json"
|
|
46
|
+
},
|
|
47
|
+
"files": [
|
|
48
|
+
"dist",
|
|
49
|
+
"LICENSE",
|
|
50
|
+
"README.md"
|
|
51
|
+
],
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "git+https://github.com/thenolle/pendentive.git"
|
|
55
|
+
},
|
|
56
|
+
"scripts": {
|
|
57
|
+
"generate:icons": "bun run scripts/generate-icons.ts",
|
|
58
|
+
"generate:index": "bun run scripts/generate-index.ts",
|
|
59
|
+
"generate": "bun run generate:icons && bun run generate:index",
|
|
60
|
+
"prebuild": "bun run generate",
|
|
61
|
+
"build": "bun run clean && bun run build:lib && bun run build:types && bun run build:browser",
|
|
62
|
+
"build:lib": "tsup",
|
|
63
|
+
"build:types": "tsc --emitDeclarationOnly --declaration --outDir dist",
|
|
64
|
+
"build:browser": "node scripts/browser.ts",
|
|
65
|
+
"preserve": "bun run generate",
|
|
66
|
+
"serve": "bun run scripts/serve.ts",
|
|
67
|
+
"pretypecheck": "bun run generate",
|
|
68
|
+
"typecheck": "tsc --noEmit",
|
|
69
|
+
"clean": "rm -rf dist",
|
|
70
|
+
"version:patch": "bun run scripts/sync-version.ts patch",
|
|
71
|
+
"version:minor": "bun run scripts/sync-version.ts minor",
|
|
72
|
+
"version:major": "bun run scripts/sync-version.ts major",
|
|
73
|
+
"version:sync": "bun run scripts/sync-version.ts --sync"
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@types/bun": "^1.4.2",
|
|
77
|
+
"esbuild": "^0.28.2",
|
|
78
|
+
"tsup": "^8.5.1",
|
|
79
|
+
"typescript": "^7.0.2"
|
|
80
|
+
}
|
|
81
|
+
}
|