@kayf/ui 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kayf-ui.umd.js","sources":["../src/core/KayfElement.ts","../src/core/tokens.ts","../src/components/SpotlightCard/SpotlightCard.ts","../src/components/BeamButton/BeamButton.ts","../src/components/AuroraCard/AuroraCard.ts","../src/components/GlitchText/GlitchText.ts","../src/components/HudPanel/HudPanel.ts","../src/index.ts"],"sourcesContent":["/**\n * KayfElement - базовый класс для всех компонентов.\n */\nexport abstract class KayfElement extends HTMLElement {\n protected root: ShadowRoot\n\n constructor() {\n super()\n this.root = this.attachShadow({ mode: 'open' })\n }\n\n static get observedAttributes(): string[] {\n return []\n }\n\n attributeChangedCallback(\n _name: string,\n oldValue: string | null,\n newValue: string | null\n ): void {\n if (oldValue !== newValue) {\n this.update()\n }\n }\n\n connectedCallback(): void {\n this.render()\n this.setup()\n }\n\n disconnectedCallback(): void {\n this.cleanup()\n }\n\n protected update(): void {\n if (this.isConnected) {\n this.render()\n this.setup()\n }\n }\n\n protected abstract template(): string\n protected styles(): string { return '' }\n\n protected render(): void {\n this.root.innerHTML = '<style>' + this.styles() + '</style>' + this.template()\n }\n\n protected setup(): void {}\n protected cleanup(): void {}\n\n protected attr(name: string, fallback = ''): string {\n return this.getAttribute(name) ?? fallback\n }\n\n protected numAttr(name: string, fallback = 0): number {\n const val = this.getAttribute(name)\n return val !== null ? parseFloat(val) : fallback\n }\n\n protected boolAttr(name: string): boolean {\n return this.hasAttribute(name)\n }\n}\n","export const tokens = {\n colors: {\n cyan: '#00d4ff',\n violet: '#7c3aed',\n emerald: '#10b981',\n amber: '#f59e0b',\n red: '#ef4444',\n white: '#e8e8f0',\n },\n glow: {\n cyan: 'rgba(0, 212, 255, 0.2)',\n violet: 'rgba(124, 58, 237, 0.2)',\n emerald: 'rgba(16, 185, 129, 0.2)',\n amber: 'rgba(245, 158, 11, 0.2)',\n red: 'rgba(239, 68, 68, 0.2)',\n white: 'rgba(232, 232, 240, 0.2)',\n },\n spotlight: {\n cyan: 'rgba(0, 212, 255, 0.12)',\n violet: 'rgba(124, 58, 237, 0.12)',\n emerald: 'rgba(16, 185, 129, 0.12)',\n amber: 'rgba(245, 158, 11, 0.12)',\n red: 'rgba(239, 68, 68, 0.12)',\n white: 'rgba(232, 232, 240, 0.12)',\n },\n} as const\n\n// ColorVariant выводится из colors — все три объекта теперь имеют одинаковые ключи\nexport type ColorVariant = keyof typeof tokens.colors\n\nexport const baseCSS = `\n :host {\n --kayf-cyan: #00d4ff;\n --kayf-violet: #7c3aed;\n --kayf-emerald: #10b981;\n --kayf-amber: #f59e0b;\n --kayf-red: #ef4444;\n --kayf-bg: #050508;\n --kayf-surface: rgba(255, 255, 255, 0.03);\n --kayf-border: rgba(255, 255, 255, 0.07);\n --kayf-text: #e8e8f0;\n --kayf-muted: rgba(232, 232, 240, 0.4);\n --kayf-font-sans: 'Syne', system-ui, sans-serif;\n --kayf-font-mono: 'JetBrains Mono', monospace;\n }\n`\n\nexport function getColor(v: ColorVariant | string): string {\n return tokens.colors[v as ColorVariant] ?? v\n}\n\nexport function getGlow(v: ColorVariant | string): string {\n return tokens.glow[v as ColorVariant] ?? 'rgba(255,255,255,0.1)'\n}\n\nexport function getSpotlight(v: ColorVariant | string): string {\n return tokens.spotlight[v as ColorVariant] ?? 'rgba(255,255,255,0.08)'\n}","import { KayfElement } from '../../core/KayfElement'\nimport { baseCSS, getColor, getGlow, getSpotlight, ColorVariant } from '../../core/tokens'\n\n/**\n * <kayf-spotlight-card>\n *\n * Атрибуты:\n * color - cyan | violet | emerald | amber | red (default: cyan)\n * glow - none | soft | medium | strong (default: soft)\n * radius - border-radius px (default: 16)\n *\n * Пример:\n * <kayf-spotlight-card color=\"violet\" glow=\"medium\">\n * <h3>Title</h3>\n * <p>Description</p>\n * </kayf-spotlight-card>\n */\n\nconst glowIntensity: Record<string, number> = {\n none: 0, soft: 0.15, medium: 0.25, strong: 0.4,\n}\n\nexport class SpotlightCard extends KayfElement {\n static get observedAttributes() {\n return ['color', 'glow', 'radius']\n }\n\n get color(): ColorVariant { return this.attr('color', 'cyan') as ColorVariant }\n get glowLevel(): string { return this.attr('glow', 'soft') }\n get radius(): number { return this.numAttr('radius', 16) }\n\n protected styles(): string {\n const color = getColor(this.color)\n const glowColor = getGlow(this.color)\n const spotColor = getSpotlight(this.color)\n const intensity = glowIntensity[this.glowLevel] ?? 0.15\n const r = this.radius\n\n return baseCSS + `\n *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n :host { display: block; position: relative; border-radius: ${r}px; }\n\n .card-border {\n border-radius: ${r}px;\n padding: 1px;\n background: rgba(255,255,255,0.07);\n transition: background 0.3s;\n height: 100%;\n }\n :host(:hover) .card-border {\n background: linear-gradient(135deg, ${color}44, rgba(255,255,255,0.05), ${color}22);\n }\n .card {\n position: relative;\n background: var(--kayf-surface);\n border-radius: ${r - 1}px;\n overflow: hidden;\n height: 100%;\n min-height: 160px;\n box-shadow: inset 0 1px 0 rgba(255,255,255,0.05);\n transition: box-shadow 0.3s, transform 0.3s;\n }\n :host(:hover) .card {\n box-shadow: inset 0 1px 0 rgba(255,255,255,0.08),\n 0 0 40px ${glowColor.replace('0.2', String(intensity))};\n transform: translateY(-2px);\n }\n .spotlight {\n position: absolute;\n width: 350px; height: 350px;\n border-radius: 50%;\n pointer-events: none;\n transform: translate(-50%, -50%);\n background: radial-gradient(circle, ${spotColor}, transparent 70%);\n opacity: 0;\n transition: opacity 0.3s;\n z-index: 0;\n }\n :host(:hover) .spotlight { opacity: 1; }\n .accent {\n position: absolute;\n top: 0; left: 20%; right: 20%; height: 1px;\n background: linear-gradient(90deg, transparent, ${color}88, transparent);\n opacity: 0; transition: opacity 0.3s; z-index: 2;\n }\n :host(:hover) .accent { opacity: 1; }\n .content { position: relative; z-index: 1; padding: 24px; height: 100%; }\n ::slotted(p) {\n font-family: var(--kayf-font-mono);\n font-size: 13px; color: var(--kayf-muted);\n line-height: 1.6; font-weight: 300;\n }\n `\n }\n\n protected template(): string {\n return `\n <div class=\"card-border\">\n <div class=\"card\">\n <div class=\"spotlight\"></div>\n <div class=\"accent\"></div>\n <div class=\"content\"><slot></slot></div>\n </div>\n </div>\n `\n }\n\n protected setup(): void {\n const card = this.root.querySelector('.card') as HTMLElement\n const spot = this.root.querySelector('.spotlight') as HTMLElement\n if (!card || !spot) return\n\n const fn = (e: MouseEvent) => {\n const rect = card.getBoundingClientRect()\n spot.style.left = (e.clientX - rect.left) + 'px'\n spot.style.top = (e.clientY - rect.top) + 'px'\n }\n\n card.addEventListener('mousemove', fn)\n ;(this as any)._fn = fn\n ;(this as any)._card = card\n }\n\n protected cleanup(): void {\n const card = (this as any)._card as HTMLElement | undefined\n const fn = (this as any)._fn\n if (card && fn) card.removeEventListener('mousemove', fn)\n }\n}\n\nif (!customElements.get('kayf-spotlight-card')) {\n customElements.define('kayf-spotlight-card', SpotlightCard)\n}\n","import { KayfElement } from '../../core/KayfElement'\nimport { baseCSS, getColor, ColorVariant } from '../../core/tokens'\n\n/**\n * <kayf-beam-button>\n *\n * Атрибуты:\n * color — cyan | violet | emerald | amber | red (default: cyan)\n * variant — solid | outline | ghost (default: outline)\n * size — sm | md | lg (default: md)\n * disabled — boolean\n * loading — boolean, показывает spinner\n *\n * Слоты:\n * (default) — текст кнопки\n * icon-left — иконка слева\n * icon-right — иконка справа\n *\n * События:\n * kayf-click — не срабатывает если disabled/loading\n *\n * Пример:\n * <kayf-beam-button color=\"cyan\" variant=\"solid\" size=\"lg\">\n * Launch Eclipse\n * </kayf-beam-button>\n */\n\ntype Variant = 'solid' | 'outline' | 'ghost'\ntype Size = 'sm' | 'md' | 'lg'\n\nconst sizes: Record<Size, { padding: string; fontSize: string; height: string; radius: string }> = {\n sm: { padding: '0 14px', fontSize: '12px', height: '32px', radius: '8px' },\n md: { padding: '0 22px', fontSize: '14px', height: '40px', radius: '10px' },\n lg: { padding: '0 32px', fontSize: '15px', height: '50px', radius: '12px' },\n}\n\nexport class BeamButton extends KayfElement {\n static get observedAttributes() {\n return ['color', 'variant', 'size', 'disabled', 'loading']\n }\n\n get color(): ColorVariant { return this.attr('color', 'cyan') as ColorVariant }\n get variant(): Variant { return this.attr('variant', 'outline') as Variant }\n get size(): Size { return this.attr('size', 'md') as Size }\n get isDisabled(): boolean { return this.boolAttr('disabled') }\n get isLoading(): boolean { return this.boolAttr('loading') }\n\n protected styles(): string {\n const color = getColor(this.color)\n const sz = sizes[this.size] ?? sizes.md\n\n const vs: Record<Variant, string> = {\n solid: `\n background: ${color};\n color: #050508;\n border: 1px solid transparent;\n font-weight: 700;\n box-shadow: 0 0 20px ${color}44, inset 0 1px 0 rgba(255,255,255,0.2);\n `,\n outline: `\n background: ${color}12;\n color: ${color};\n border: 1px solid ${color}44;\n font-weight: 600;\n box-shadow: inset 0 1px 0 rgba(255,255,255,0.05);\n `,\n ghost: `\n background: rgba(255,255,255,0.04);\n color: rgba(232,232,240,0.7);\n border: 1px solid rgba(255,255,255,0.08);\n font-weight: 500;\n `,\n }\n\n const vh: Record<Variant, string> = {\n solid: `\n background: ${color}dd;\n box-shadow: 0 0 30px ${color}66, 0 4px 20px ${color}33, inset 0 1px 0 rgba(255,255,255,0.3);\n transform: translateY(-2px);\n `,\n outline: `\n background: ${color}1e;\n border-color: ${color}88;\n box-shadow: 0 0 20px ${color}22;\n transform: translateY(-2px);\n `,\n ghost: `\n background: rgba(255,255,255,0.07);\n border-color: rgba(255,255,255,0.15);\n color: rgba(232,232,240,0.9);\n transform: translateY(-1px);\n `,\n }\n\n return baseCSS + `\n *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n :host { display: inline-block; }\n :host([disabled]), :host([loading]) { pointer-events: none; opacity: 0.45; }\n\n .btn {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n height: ${sz.height};\n padding: ${sz.padding};\n border-radius: ${sz.radius};\n font-family: var(--kayf-font-sans);\n font-size: ${sz.fontSize};\n letter-spacing: 0.04em;\n cursor: pointer;\n overflow: hidden;\n transition: background 0.25s, border-color 0.25s, box-shadow 0.25s, transform 0.2s, color 0.25s;\n white-space: nowrap;\n user-select: none;\n outline: none;\n ${vs[this.variant]}\n }\n .btn:hover { ${vh[this.variant]} }\n .btn:active { transform: translateY(0) scale(0.98) !important; transition-duration: 0.1s; }\n .btn:focus-visible { outline: 2px solid ${color}88; outline-offset: 3px; }\n\n /* Beam sweep */\n .beam {\n position: absolute; inset: 0;\n pointer-events: none; overflow: hidden; border-radius: inherit;\n }\n .beam::before {\n content: '';\n position: absolute;\n top: 0; left: -120%; width: 60%; height: 100%;\n background: linear-gradient(90deg, transparent, rgba(255,255,255,0.08) 40%, rgba(255,255,255,0.18) 50%, rgba(255,255,255,0.08) 60%, transparent);\n transform: skewX(-20deg);\n }\n .btn:hover .beam::before { animation: beam-sweep 0.55s cubic-bezier(0.4,0,0.2,1) forwards; }\n @keyframes beam-sweep { to { left: 160%; } }\n\n /* Ripple */\n .ripple {\n position: absolute; border-radius: 50%;\n background: rgba(255,255,255,0.15);\n transform: scale(0);\n animation: ripple-out 0.5s ease-out forwards;\n pointer-events: none;\n }\n @keyframes ripple-out { to { transform: scale(4); opacity: 0; } }\n\n /* Spinner */\n .spinner {\n display: none; width: 14px; height: 14px;\n border: 2px solid currentColor; border-top-color: transparent;\n border-radius: 50%; animation: spin 0.7s linear infinite; flex-shrink: 0;\n }\n :host([loading]) .spinner { display: block; }\n :host([loading]) .label { opacity: 0.6; }\n @keyframes spin { to { transform: rotate(360deg); } }\n\n /* Icon slots */\n .icon-wrap { display: inline-flex; align-items: center; width: 16px; height: 16px; flex-shrink: 0; }\n `\n }\n\n protected template(): string {\n return `\n <button class=\"btn\" part=\"button\" type=\"button\">\n <span class=\"beam\"></span>\n <span class=\"spinner\"></span>\n <span class=\"icon-wrap\"><slot name=\"icon-left\"></slot></span>\n <span class=\"label\"><slot></slot></span>\n <span class=\"icon-wrap\"><slot name=\"icon-right\"></slot></span>\n </button>\n `\n }\n\n protected setup(): void {\n const btn = this.root.querySelector('.btn') as HTMLElement\n if (!btn) return\n\n const onPointerDown = (e: PointerEvent) => {\n const rect = btn.getBoundingClientRect()\n const size = Math.max(rect.width, rect.height)\n const x = e.clientX - rect.left - size / 2\n const y = e.clientY - rect.top - size / 2\n const ripple = document.createElement('span')\n ripple.className = 'ripple'\n ripple.style.cssText = `width:${size}px;height:${size}px;left:${x}px;top:${y}px;`\n btn.appendChild(ripple)\n ripple.addEventListener('animationend', () => ripple.remove())\n }\n\n const onClick = (e: MouseEvent) => {\n if (this.isDisabled || this.isLoading) { e.stopPropagation(); return }\n this.dispatchEvent(new CustomEvent('kayf-click', {\n bubbles: true, composed: true, detail: { originalEvent: e },\n }))\n }\n\n btn.addEventListener('pointerdown', onPointerDown)\n btn.addEventListener('click', onClick)\n ;(this as any)._btn = btn\n ;(this as any)._pd = onPointerDown\n ;(this as any)._oc = onClick\n }\n\n protected cleanup(): void {\n const btn = (this as any)._btn as HTMLElement | undefined\n if (btn) {\n btn.removeEventListener('pointerdown', (this as any)._pd)\n btn.removeEventListener('click', (this as any)._oc)\n }\n }\n}\n\nif (!customElements.get('kayf-beam-button')) {\n customElements.define('kayf-beam-button', BeamButton)\n}","import { KayfElement } from '../../core/KayfElement'\nimport { baseCSS } from '../../core/tokens'\n\n/**\n * <kayf-aurora-card>\n *\n * Атрибуты:\n * speed — slow | normal | fast (default: normal)\n * blur — sm | md | lg (default: md)\n * opacity — 0.0–1.0 (default: 0.6)\n * colors — через запятую: \"cyan,violet,emerald\" (default: cyan,violet,emerald,amber)\n * static — boolean, отключает анимацию\n *\n * Слоты:\n * (default) — контент поверх aurora\n *\n * Пример:\n * <kayf-aurora-card colors=\"cyan,violet\" speed=\"slow\">\n * <h2>Title</h2>\n * <p>Content</p>\n * </kayf-aurora-card>\n */\n\nconst COLOR_MAP: Record<string, number[]> = {\n cyan: [0, 212, 255],\n violet: [124, 58, 237],\n emerald: [16, 185, 129],\n amber: [245, 158, 11 ],\n red: [239, 68, 68 ],\n white: [232, 232, 240],\n}\n\nconst SPEED_MAP: Record<string, number> = {\n slow: 0.00015, normal: 0.0003, fast: 0.0006,\n}\n\nconst BLUR_MAP: Record<string, number> = {\n sm: 80, md: 120, lg: 180,\n}\n\ninterface Blob {\n x: number\n y: number\n rgb: number[]\n phase: number\n speed: number\n}\n\nexport class AuroraCard extends KayfElement {\n private _canvas!: HTMLCanvasElement\n private _ctx!: CanvasRenderingContext2D\n private _blobs: Blob[] = []\n private _raf = 0\n private _resizeOb!: ResizeObserver\n\n static get observedAttributes() {\n return ['speed', 'blur', 'opacity', 'colors', 'static']\n }\n\n // Переименованы чтобы не конфликтовать с HTMLElement.blur()\n get speedValue(): number { return SPEED_MAP[this.attr('speed', 'normal')] ?? 0.0003 }\n get blurSize(): number { return BLUR_MAP[this.attr('blur', 'md')] ?? 120 }\n get opacityValue(): number { return this.numAttr('opacity', 0.6) }\n get isStatic(): boolean { return this.boolAttr('static') }\n\n get colorList(): number[][] {\n return this.attr('colors', 'cyan,violet,emerald,amber')\n .split(',')\n .map(s => COLOR_MAP[s.trim()] ?? COLOR_MAP.cyan)\n }\n\n protected styles(): string {\n return baseCSS + `\n *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n :host {\n display: block;\n position: relative;\n border-radius: 20px;\n overflow: hidden;\n }\n\n .wrap {\n position: relative;\n border-radius: 20px;\n overflow: hidden;\n border: 1px solid rgba(255,255,255,0.07);\n }\n\n canvas {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n border-radius: 20px;\n }\n\n .content {\n position: relative;\n z-index: 1;\n background: rgba(5, 5, 8, 0.55);\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n border-radius: 19px;\n min-height: 200px;\n padding: 40px;\n }\n\n ::slotted(h1), ::slotted(h2), ::slotted(h3) {\n font-family: var(--kayf-font-sans);\n font-weight: 800;\n color: #fff;\n margin-bottom: 12px;\n line-height: 1.1;\n }\n\n ::slotted(p) {\n font-family: var(--kayf-font-mono);\n font-size: 13px;\n color: rgba(232,232,240,0.5);\n line-height: 1.7;\n font-weight: 300;\n }\n `\n }\n\n protected template(): string {\n return `\n <div class=\"wrap\">\n <canvas part=\"canvas\"></canvas>\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `\n }\n\n protected setup(): void {\n // Останавливаем предыдущий цикл при реактивном обновлении атрибутов\n cancelAnimationFrame(this._raf)\n this._resizeOb?.disconnect()\n\n const canvas = this.root.querySelector('canvas') as HTMLCanvasElement\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n this._canvas = canvas\n this._ctx = ctx\n\n this._initBlobs()\n this._resize()\n\n this._resizeOb = new ResizeObserver(() => this._resize())\n this._resizeOb.observe(this)\n\n if (this.isStatic) {\n this._drawFrame(0)\n } else {\n this._startLoop()\n }\n }\n\n protected cleanup(): void {\n cancelAnimationFrame(this._raf)\n this._resizeOb?.disconnect()\n }\n\n private _initBlobs(): void {\n const colors = this.colorList\n this._blobs = colors.map((rgb, i) => ({\n x: 0.15 + (i / colors.length) * 0.7,\n y: 0.2 + Math.sin(i * 1.3) * 0.35 + 0.15,\n rgb,\n phase: i * (Math.PI * 2 / colors.length),\n speed: this.speedValue * (0.7 + Math.random() * 0.6),\n }))\n }\n\n private _resize(): void {\n this._canvas.width = this.offsetWidth || 600\n this._canvas.height = this.offsetHeight || 300\n if (this.isStatic) this._drawFrame(0)\n }\n\n private _startLoop(): void {\n const tick = (t: number) => {\n this._drawFrame(t)\n this._raf = requestAnimationFrame(tick)\n }\n this._raf = requestAnimationFrame(tick)\n }\n\n private _drawFrame(t: number): void {\n const { _ctx: ctx, _canvas: canvas, _blobs: blobs } = this\n const { width: w, height: h } = canvas\n if (!w || !h) return\n\n ctx.clearRect(0, 0, w, h)\n\n const blurPx = this.blurSize\n const opac = this.opacityValue\n const minDim = Math.min(w, h)\n\n blobs.forEach(b => {\n const bx = this.isStatic\n ? b.x\n : b.x + Math.sin(t * b.speed + b.phase) * 0.18\n\n const by = this.isStatic\n ? b.y\n : b.y + Math.cos(t * b.speed * 0.7 + b.phase) * 0.12\n\n const px = bx * w\n const py = by * h\n const r = 0.32 * minDim + blurPx\n\n const grad = ctx.createRadialGradient(px, py, 0, px, py, r)\n grad.addColorStop(0, `rgba(${b.rgb.join(',')},${opac})`)\n grad.addColorStop(0.5, `rgba(${b.rgb.join(',')},${opac * 0.35})`)\n grad.addColorStop(1, `rgba(${b.rgb.join(',')},0)`)\n\n ctx.fillStyle = grad\n ctx.beginPath()\n ctx.arc(px, py, r, 0, Math.PI * 2)\n ctx.fill()\n })\n }\n}\n\nif (!customElements.get('kayf-aurora-card')) {\n customElements.define('kayf-aurora-card', AuroraCard)\n}","import { KayfElement } from '../../core/KayfElement'\nimport { baseCSS, getColor, ColorVariant } from '../../core/tokens'\n\n/**\n * <kayf-glitch-text>\n *\n * Атрибуты:\n * color - cyan | violet | emerald | amber | red | white (default: cyan)\n * intensity - subtle | medium | hard (default: medium)\n * speed - slow | normal | fast (default: normal)\n * text - fallback текст, если slot пустой\n * static - boolean, отключает анимации\n * uppercase - boolean, включает text-transform: uppercase\n *\n * Пример:\n * <kayf-glitch-text color=\"violet\" intensity=\"hard\">\n * SIGNAL LOST\n * </kayf-glitch-text>\n */\n\ntype Intensity = 'subtle' | 'medium' | 'hard'\ntype Speed = 'slow' | 'normal' | 'fast'\n\nconst INTENSITY_MAP: Record<Intensity, { shiftPx: number; layerOpacity: number; shadowAlpha: number }> = {\n subtle: { shiftPx: 1.2, layerOpacity: 0.55, shadowAlpha: 0.28 },\n medium: { shiftPx: 2.2, layerOpacity: 0.72, shadowAlpha: 0.35 },\n hard: { shiftPx: 3.2, layerOpacity: 0.84, shadowAlpha: 0.45 },\n}\n\nconst SPEED_MAP: Record<Speed, { layerMs: number; flickerMs: number; burstMs: number }> = {\n slow: { layerMs: 3900, flickerMs: 5300, burstMs: 2400 },\n normal: { layerMs: 2500, flickerMs: 3600, burstMs: 1700 },\n fast: { layerMs: 1700, flickerMs: 2400, burstMs: 1100 },\n}\n\nexport class GlitchText extends KayfElement {\n private _wrap?: HTMLElement\n private _slot?: HTMLSlotElement\n private _layerA?: HTMLElement\n private _layerB?: HTMLElement\n private _onSlotChange?: () => void\n private _onEnter?: () => void\n private _observer?: MutationObserver\n private _burstInterval = 0\n private _burstTimeout = 0\n\n static get observedAttributes() {\n return ['color', 'intensity', 'speed', 'text', 'static', 'uppercase']\n }\n\n get color(): ColorVariant { return this.attr('color', 'cyan') as ColorVariant }\n get intensity(): Intensity { return this.attr('intensity', 'medium') as Intensity }\n get speed(): Speed { return this.attr('speed', 'normal') as Speed }\n get isStatic(): boolean { return this.boolAttr('static') }\n get isUppercase(): boolean { return this.boolAttr('uppercase') }\n\n protected styles(): string {\n const color = getColor(this.color)\n const level = INTENSITY_MAP[this.intensity] ?? INTENSITY_MAP.medium\n const speed = SPEED_MAP[this.speed] ?? SPEED_MAP.normal\n\n return baseCSS + `\n *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n :host {\n display: inline-block;\n position: relative;\n color: ${color};\n }\n\n .wrap {\n position: relative;\n display: inline-grid;\n align-items: center;\n justify-items: start;\n line-height: 1.05;\n letter-spacing: 0.03em;\n font-family: var(--kayf-font-sans);\n font-weight: 800;\n isolation: isolate;\n text-shadow: 0 0 16px rgba(255,255,255,${level.shadowAlpha});\n ${this.isUppercase ? 'text-transform: uppercase;' : ''}\n }\n\n .content,\n .layer {\n grid-area: 1 / 1;\n white-space: pre-wrap;\n }\n\n .content {\n position: relative;\n z-index: 2;\n color: rgba(255,255,255,0.96);\n filter: drop-shadow(0 0 6px ${color}44);\n animation: main-flicker ${speed.flickerMs}ms linear infinite;\n }\n\n .layer {\n position: relative;\n z-index: 1;\n pointer-events: none;\n opacity: ${level.layerOpacity};\n mix-blend-mode: screen;\n }\n\n .layer-a {\n color: ${color};\n transform: translateX(calc(var(--offset-x, 0px) * -1));\n animation:\n glitch-clip-a ${speed.layerMs}ms steps(2, end) infinite,\n glitch-shift-a ${Math.round(speed.layerMs * 0.9)}ms steps(1, end) infinite;\n }\n\n .layer-b {\n color: #ff4d8d;\n transform: translateX(var(--offset-x, 0px));\n animation:\n glitch-clip-b ${Math.round(speed.layerMs * 1.1)}ms steps(2, end) infinite,\n glitch-shift-b ${Math.round(speed.layerMs * 0.8)}ms steps(1, end) infinite;\n }\n\n .scanline {\n position: absolute;\n left: -2%;\n width: 104%;\n height: 2px;\n top: -15%;\n opacity: 0;\n pointer-events: none;\n background: linear-gradient(90deg, transparent, ${color}99, transparent);\n filter: blur(0.5px);\n z-index: 3;\n animation: scan ${Math.round(speed.layerMs * 1.25)}ms linear infinite;\n }\n\n .wrap.is-burst .layer-a,\n .wrap.is-burst .layer-b {\n opacity: 0.98;\n }\n\n .wrap.is-burst .layer-a { transform: translateX(${level.shiftPx * -1.65}px); }\n .wrap.is-burst .layer-b { transform: translateX(${level.shiftPx * 1.65}px); }\n .wrap.is-burst .content { opacity: 0.88; }\n\n :host([static]) .content,\n :host([static]) .layer,\n :host([static]) .scanline {\n animation: none !important;\n }\n\n :host([static]) .layer { opacity: 0.25; }\n :host([static]) .scanline { display: none; }\n\n @keyframes glitch-clip-a {\n 0%, 7%, 58%, 100% { clip-path: inset(0 0 0 0); }\n 8% { clip-path: inset(12% 0 72% 0); }\n 14% { clip-path: inset(50% 0 28% 0); }\n 20% { clip-path: inset(72% 0 6% 0); }\n 36% { clip-path: inset(32% 0 40% 0); }\n }\n\n @keyframes glitch-clip-b {\n 0%, 9%, 62%, 100% { clip-path: inset(0 0 0 0); }\n 10% { clip-path: inset(70% 0 8% 0); }\n 16% { clip-path: inset(18% 0 62% 0); }\n 28% { clip-path: inset(45% 0 29% 0); }\n 43% { clip-path: inset(8% 0 77% 0); }\n }\n\n @keyframes glitch-shift-a {\n 0%, 58%, 100% { transform: translateX(0); }\n 7% { transform: translateX(${level.shiftPx * -1.2}px); }\n 13% { transform: translateX(${level.shiftPx * 0.45}px); }\n 19% { transform: translateX(${level.shiftPx * -0.9}px); }\n }\n\n @keyframes glitch-shift-b {\n 0%, 63%, 100% { transform: translateX(0); }\n 8% { transform: translateX(${level.shiftPx * 1.1}px); }\n 15% { transform: translateX(${level.shiftPx * -0.35}px); }\n 22% { transform: translateX(${level.shiftPx * 0.8}px); }\n }\n\n @keyframes main-flicker {\n 0%, 13%, 40%, 64%, 100% { opacity: 1; }\n 14% { opacity: 0.82; }\n 41% { opacity: 0.9; }\n 66% { opacity: 0.86; }\n }\n\n @keyframes scan {\n 0% { top: -15%; opacity: 0; }\n 8% { opacity: 0.4; }\n 30% { opacity: 0.2; }\n 52% { opacity: 0.35; }\n 100% { top: 115%; opacity: 0; }\n }\n `\n }\n\n protected template(): string {\n return `\n <span class=\"wrap\">\n <span class=\"scanline\" aria-hidden=\"true\"></span>\n <span class=\"layer layer-a\" aria-hidden=\"true\"></span>\n <span class=\"layer layer-b\" aria-hidden=\"true\"></span>\n <span class=\"content\"><slot></slot></span>\n </span>\n `\n }\n\n protected setup(): void {\n this.cleanup()\n\n this._wrap = this.root.querySelector('.wrap') as HTMLElement | null ?? undefined\n this._slot = this.root.querySelector('slot') as HTMLSlotElement | null ?? undefined\n this._layerA = this.root.querySelector('.layer-a') as HTMLElement | null ?? undefined\n this._layerB = this.root.querySelector('.layer-b') as HTMLElement | null ?? undefined\n if (!this._wrap || !this._slot || !this._layerA || !this._layerB) return\n\n const syncText = () => {\n const text = this._resolveText(this._slot!)\n this._layerA!.textContent = text\n this._layerB!.textContent = text\n this._wrap!.style.setProperty('--offset-x', `${(INTENSITY_MAP[this.intensity] ?? INTENSITY_MAP.medium).shiftPx}px`)\n }\n\n this._onSlotChange = syncText\n this._slot.addEventListener('slotchange', this._onSlotChange)\n syncText()\n\n this._observer = new MutationObserver(syncText)\n this._observer.observe(this, { subtree: true, childList: true, characterData: true })\n\n if (this.isStatic) return\n\n this._onEnter = () => this._burst()\n this._wrap.addEventListener('pointerenter', this._onEnter)\n\n const step = SPEED_MAP[this.speed] ?? SPEED_MAP.normal\n this._burstInterval = window.setInterval(() => {\n if (Math.random() > 0.52) this._burst()\n }, step.burstMs)\n }\n\n protected cleanup(): void {\n if (this._slot && this._onSlotChange) {\n this._slot.removeEventListener('slotchange', this._onSlotChange)\n }\n\n if (this._wrap && this._onEnter) {\n this._wrap.removeEventListener('pointerenter', this._onEnter)\n }\n\n this._observer?.disconnect()\n\n if (this._burstInterval) {\n window.clearInterval(this._burstInterval)\n this._burstInterval = 0\n }\n\n if (this._burstTimeout) {\n window.clearTimeout(this._burstTimeout)\n this._burstTimeout = 0\n }\n }\n\n private _resolveText(slot: HTMLSlotElement): string {\n const assigned = slot.assignedNodes({ flatten: true })\n const fromSlot = assigned.map(node => node.textContent ?? '').join(' ')\n .replace(/\\s+/g, ' ')\n .trim()\n return fromSlot || this.attr('text', '').trim()\n }\n\n private _burst(): void {\n if (!this._wrap) return\n this._wrap.classList.add('is-burst')\n if (this._burstTimeout) window.clearTimeout(this._burstTimeout)\n this._burstTimeout = window.setTimeout(() => {\n this._wrap?.classList.remove('is-burst')\n this._burstTimeout = 0\n }, 130)\n }\n}\n\nif (!customElements.get('kayf-glitch-text')) {\n customElements.define('kayf-glitch-text', GlitchText)\n}\n","import { KayfElement } from '../../core/KayfElement'\nimport { baseCSS, getColor, getGlow, getSpotlight, ColorVariant } from '../../core/tokens'\n\n/**\n * <kayf-hud-panel>\n *\n * Атрибуты:\n * color - cyan | violet | emerald | amber | red | white (default: cyan)\n * glow - none | soft | medium | strong (default: soft)\n * radius - border-radius px (default: 16)\n * padding - внутренний отступ контента px (default: 20)\n *\n * Слоты:\n * title - заголовок в верхней части\n * meta - правый верхний блок (статус/значение)\n * footer - нижняя строка/действия\n * (default) - основной контент\n *\n * Пример:\n * <kayf-hud-panel color=\"emerald\" glow=\"medium\">\n * <span slot=\"title\">Telemetry</span>\n * <span slot=\"meta\">ONLINE</span>\n * <p>Signal quality 98%</p>\n * </kayf-hud-panel>\n */\n\nconst GLOW_MAP: Record<string, number> = {\n none: 0, soft: 0.16, medium: 0.26, strong: 0.4,\n}\n\nexport class HudPanel extends KayfElement {\n private _panel?: HTMLElement\n private _spot?: HTMLElement\n private _titleSlot?: HTMLSlotElement\n private _metaSlot?: HTMLSlotElement\n private _footerSlot?: HTMLSlotElement\n private _onMove?: (e: MouseEvent) => void\n private _onLeave?: () => void\n private _onSlotChange?: () => void\n\n static get observedAttributes() {\n return ['color', 'glow', 'radius', 'padding']\n }\n\n get color(): ColorVariant { return this.attr('color', 'cyan') as ColorVariant }\n get glowLevel(): string { return this.attr('glow', 'soft') }\n get radius(): number { return this.numAttr('radius', 16) }\n get padding(): number { return this.numAttr('padding', 20) }\n\n protected styles(): string {\n const color = getColor(this.color)\n const spot = getSpotlight(this.color)\n const glow = getGlow(this.color)\n const glowAlpha = GLOW_MAP[this.glowLevel] ?? GLOW_MAP.soft\n const glowHover = glow.replace('0.2', String(glowAlpha))\n const radius = Math.max(0, this.radius)\n const innerRadius = Math.max(0, radius - 1)\n const pad = Math.max(8, this.padding)\n\n return baseCSS + `\n *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n :host { display: block; position: relative; border-radius: ${radius}px; }\n\n .hud-border {\n position: relative;\n border-radius: ${radius}px;\n padding: 1px;\n background:\n linear-gradient(150deg, ${color}44, rgba(255,255,255,0.08) 38%, rgba(255,255,255,0.03) 62%, ${color}22);\n transition: box-shadow 0.3s ease, background 0.3s ease;\n }\n\n .panel {\n position: relative;\n border-radius: ${innerRadius}px;\n overflow: hidden;\n min-height: 140px;\n background:\n radial-gradient(circle at 20% 15%, rgba(255,255,255,0.045), transparent 40%),\n linear-gradient(165deg, rgba(255,255,255,0.04), rgba(255,255,255,0.015) 30%, rgba(5,5,8,0.76) 100%);\n border: 1px solid rgba(255,255,255,0.06);\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.06),\n 0 10px 26px rgba(0,0,0,0.25);\n transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;\n }\n\n :host(:hover) .hud-border {\n box-shadow: 0 0 34px ${glowHover};\n }\n\n :host(:hover) .panel {\n transform: translateY(-2px);\n border-color: ${color}66;\n box-shadow:\n inset 0 1px 0 rgba(255,255,255,0.08),\n 0 14px 34px rgba(0,0,0,0.32),\n 0 0 30px ${glowHover};\n }\n\n .spotlight {\n position: absolute;\n width: 360px;\n height: 360px;\n border-radius: 50%;\n pointer-events: none;\n transform: translate(-50%, -50%);\n background: radial-gradient(circle, ${spot}, transparent 72%);\n opacity: 0;\n transition: opacity 0.3s ease;\n z-index: 0;\n }\n\n :host(:hover) .spotlight { opacity: 1; }\n\n .grid {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n opacity: 0.18;\n background-image:\n linear-gradient(${color}26 1px, transparent 1px),\n linear-gradient(90deg, ${color}1f 1px, transparent 1px);\n background-size: 24px 24px, 24px 24px;\n mask-image: linear-gradient(to bottom, rgba(0,0,0,0.55), transparent 75%);\n }\n\n .scanline {\n position: absolute;\n top: -20%;\n left: 0;\n width: 100%;\n height: 1px;\n background: linear-gradient(90deg, transparent, ${color}88, transparent);\n opacity: 0.24;\n pointer-events: none;\n z-index: 1;\n animation: scan 5.4s linear infinite;\n }\n\n .corner {\n position: absolute;\n width: 16px;\n height: 16px;\n border-color: ${color}88;\n border-style: solid;\n z-index: 2;\n pointer-events: none;\n }\n\n .corner.tl { top: 8px; left: 8px; border-width: 1px 0 0 1px; border-radius: 3px 0 0 0; }\n .corner.tr { top: 8px; right: 8px; border-width: 1px 1px 0 0; border-radius: 0 3px 0 0; }\n .corner.bl { bottom: 8px; left: 8px; border-width: 0 0 1px 1px; border-radius: 0 0 0 3px; }\n .corner.br { bottom: 8px; right: 8px; border-width: 0 1px 1px 0; border-radius: 0 0 3px 0; }\n\n .frame-line {\n position: absolute;\n left: ${pad}px;\n right: ${pad}px;\n height: 1px;\n background: linear-gradient(90deg, transparent, ${color}66 20%, ${color}66 80%, transparent);\n opacity: 0.42;\n z-index: 2;\n pointer-events: none;\n }\n\n .frame-line.top { top: ${pad - 1}px; }\n .frame-line.bottom { bottom: ${pad - 1}px; }\n\n .content {\n position: relative;\n z-index: 3;\n padding: ${pad}px;\n display: grid;\n gap: 14px;\n }\n\n .header,\n .footer {\n display: none;\n }\n\n .panel.has-header .header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid rgba(255,255,255,0.06);\n }\n\n .panel.has-footer .footer {\n display: block;\n padding-top: 8px;\n border-top: 1px solid rgba(255,255,255,0.06);\n }\n\n .title {\n font-family: var(--kayf-font-sans);\n font-size: 14px;\n font-weight: 700;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: rgba(255,255,255,0.94);\n }\n\n .meta {\n font-family: var(--kayf-font-mono);\n font-size: 12px;\n line-height: 1.3;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: ${color};\n text-shadow: 0 0 10px ${color}55;\n }\n\n .body {\n font-family: var(--kayf-font-mono);\n font-size: 13px;\n line-height: 1.65;\n color: var(--kayf-text);\n }\n\n ::slotted(p) {\n margin: 0;\n color: var(--kayf-muted);\n }\n\n @keyframes scan {\n 0% { top: -20%; opacity: 0; }\n 10% { opacity: 0.3; }\n 55% { opacity: 0.14; }\n 100% { top: 120%; opacity: 0; }\n }\n `\n }\n\n protected template(): string {\n return `\n <div class=\"hud-border\">\n <section class=\"panel\" part=\"panel\">\n <div class=\"spotlight\"></div>\n <div class=\"grid\"></div>\n <div class=\"scanline\"></div>\n <span class=\"corner tl\"></span>\n <span class=\"corner tr\"></span>\n <span class=\"corner bl\"></span>\n <span class=\"corner br\"></span>\n <span class=\"frame-line top\"></span>\n <span class=\"frame-line bottom\"></span>\n <div class=\"content\">\n <header class=\"header\">\n <div class=\"title\"><slot name=\"title\"></slot></div>\n <div class=\"meta\"><slot name=\"meta\"></slot></div>\n </header>\n <div class=\"body\"><slot></slot></div>\n <footer class=\"footer\"><slot name=\"footer\"></slot></footer>\n </div>\n </section>\n </div>\n `\n }\n\n protected setup(): void {\n this.cleanup()\n\n this._panel = this.root.querySelector('.panel') as HTMLElement | null ?? undefined\n this._spot = this.root.querySelector('.spotlight') as HTMLElement | null ?? undefined\n this._titleSlot = this.root.querySelector('slot[name=\"title\"]') as HTMLSlotElement | null ?? undefined\n this._metaSlot = this.root.querySelector('slot[name=\"meta\"]') as HTMLSlotElement | null ?? undefined\n this._footerSlot = this.root.querySelector('slot[name=\"footer\"]') as HTMLSlotElement | null ?? undefined\n if (!this._panel || !this._spot) return\n\n this._onMove = (e: MouseEvent) => {\n const rect = this._panel!.getBoundingClientRect()\n this._spot!.style.left = (e.clientX - rect.left) + 'px'\n this._spot!.style.top = (e.clientY - rect.top) + 'px'\n }\n\n this._onLeave = () => {\n this._spot!.style.left = '50%'\n this._spot!.style.top = '50%'\n }\n\n this._panel.addEventListener('mousemove', this._onMove)\n this._panel.addEventListener('mouseleave', this._onLeave)\n this._onLeave()\n\n this._onSlotChange = () => this._syncSlotState()\n\n if (this._titleSlot) this._titleSlot.addEventListener('slotchange', this._onSlotChange)\n if (this._metaSlot) this._metaSlot.addEventListener('slotchange', this._onSlotChange)\n if (this._footerSlot) this._footerSlot.addEventListener('slotchange', this._onSlotChange)\n this._syncSlotState()\n }\n\n protected cleanup(): void {\n if (this._panel && this._onMove) this._panel.removeEventListener('mousemove', this._onMove)\n if (this._panel && this._onLeave) this._panel.removeEventListener('mouseleave', this._onLeave)\n\n if (this._titleSlot && this._onSlotChange) this._titleSlot.removeEventListener('slotchange', this._onSlotChange)\n if (this._metaSlot && this._onSlotChange) this._metaSlot.removeEventListener('slotchange', this._onSlotChange)\n if (this._footerSlot && this._onSlotChange) this._footerSlot.removeEventListener('slotchange', this._onSlotChange)\n }\n\n private _syncSlotState(): void {\n if (!this._panel) return\n const hasTitle = this._slotHasContent(this._titleSlot)\n const hasMeta = this._slotHasContent(this._metaSlot)\n const hasFooter = this._slotHasContent(this._footerSlot)\n\n this._panel.classList.toggle('has-header', hasTitle || hasMeta)\n this._panel.classList.toggle('has-footer', hasFooter)\n }\n\n private _slotHasContent(slot: HTMLSlotElement | undefined): boolean {\n if (!slot) return false\n return slot.assignedNodes({ flatten: true }).some(node => {\n if (node.nodeType === Node.ELEMENT_NODE) return true\n if (node.nodeType === Node.TEXT_NODE) return (node.textContent ?? '').trim().length > 0\n return false\n })\n }\n}\n\nif (!customElements.get('kayf-hud-panel')) {\n customElements.define('kayf-hud-panel', HudPanel)\n}\n","export { KayfElement } from './core/KayfElement'\nexport { tokens, baseCSS, getColor, getGlow, getSpotlight } from './core/tokens'\nexport type { ColorVariant } from './core/tokens'\nexport { SpotlightCard } from './components/SpotlightCard/SpotlightCard'\nexport { BeamButton } from './components/BeamButton/BeamButton'\nexport { AuroraCard } from './components/AuroraCard/AuroraCard'\nexport { GlitchText } from './components/GlitchText/GlitchText'\nexport { HudPanel } from './components/HudPanel/HudPanel'\nexport const version = '0.1.0'\n"],"names":["SPEED_MAP"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@kayf/ui",
3
+ "version": "0.1.0",
4
+ "description": "Dark premium Web Components with game DNA. No React, no dependencies.",
5
+ "main": "dist/kayf-ui.cjs.js",
6
+ "module": "dist/kayf-ui.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/kayf-ui.esm.js",
11
+ "require": "./dist/kayf-ui.cjs.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": ["dist"],
16
+ "keywords": ["web-components", "ui", "game-ui", "dark-theme", "glassmorphism"],
17
+ "author": "KAYF",
18
+ "license": "MIT",
19
+ "scripts": {
20
+ "build": "rollup -c",
21
+ "dev": "rollup -c -w",
22
+ "typecheck": "tsc --noEmit"
23
+ },
24
+ "devDependencies": {
25
+ "rollup": "^4.0.0",
26
+ "@rollup/plugin-typescript": "^11.0.0",
27
+ "typescript": "^5.0.0",
28
+ "tslib": "^2.6.0"
29
+ }
30
+ }