vireuikit 0.5.0 → 0.6.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,"sources":["../src/web/a11y.ts","../src/web/glass.ts","../src/web/input.ts","../src/web/styles.ts","../src/web/element.ts","../src/web/index.ts"],"names":[],"mappings":"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","file":"web.js","sourcesContent":["import { A11Y_NONE, resolveA11y, type A11yMode, type A11yOverride } from '../kit/a11y';\n\nconst QUERIES = {\n reduceMotion: '(prefers-reduced-motion: reduce)',\n increaseContrast: '(prefers-contrast: more)',\n reduceTransparency: '(prefers-reduced-transparency: reduce)',\n} as const satisfies Record<keyof A11yMode, string>;\n\nconst KEYS = Object.keys(QUERIES) as (keyof A11yMode)[];\n\nexport function systemA11y(): A11yMode {\n if (typeof matchMedia === 'undefined') return A11Y_NONE;\n return {\n reduceMotion: matchMedia(QUERIES.reduceMotion).matches,\n increaseContrast: matchMedia(QUERIES.increaseContrast).matches,\n reduceTransparency: matchMedia(QUERIES.reduceTransparency).matches,\n };\n}\n\nexport function watchSystemA11y(onChange: () => void): () => void {\n if (typeof matchMedia === 'undefined') return () => {};\n const lists = KEYS.map((key) => matchMedia(QUERIES[key]));\n for (const list of lists) list.addEventListener('change', onChange);\n return () => {\n for (const list of lists) list.removeEventListener('change', onChange);\n };\n}\n\nlet globalOverride: A11yOverride = {};\nconst listeners = new Set<() => void>();\n\n/** Overrides the system for every element on the page; a key set to `undefined` follows it again. */\nexport function setA11yOverride(next: A11yOverride): void {\n globalOverride = { ...globalOverride, ...next };\n for (const listener of listeners) listener();\n}\n\nexport function getA11yOverride(): A11yOverride {\n return globalOverride;\n}\n\nexport function watchA11yOverride(onChange: () => void): () => void {\n listeners.add(onChange);\n return () => {\n listeners.delete(onChange);\n };\n}\n\n/** An element's own override wins over the page's, which wins over the system. */\nexport function effectiveA11y(own: A11yOverride): A11yMode {\n const merged: A11yOverride = { ...globalOverride };\n for (const key of KEYS) if (own[key] !== undefined) merged[key] = own[key];\n return resolveA11y(systemA11y(), merged);\n}\n","import type { BackdropSample, VireGlassAccessibility, VireGlassGeometry, VireGlassMaterial } from 'vireglass';\nimport type { AttachGlassOptions, GlassHandle, GlassMorph } from 'vireglass/dom';\n\nexport type GlassParams = {\n material: VireGlassMaterial;\n geometry: VireGlassGeometry;\n accessibility: VireGlassAccessibility;\n /** The glass appears only under the finger. */\n onTouch: boolean;\n /** The backdrop as the host knows it; null leaves it to the lens's probe. */\n sample: BackdropSample | null;\n};\n\nexport type GlassSession = {\n setMaterial(material: VireGlassMaterial): void;\n setGeometry(geometry: VireGlassGeometry): void;\n setAppear(t: number): void;\n setMorph(morph: GlassMorph | null): void;\n setSample(sample: BackdropSample | null): void;\n destroy(): void;\n};\n\n// Loaded on demand: the control works without it, so the glass is an upgrade, not a dependency of\n// first paint. Resolves to null if the caller stopped wanting it while the module loaded.\nexport async function attachControlGlass(\n el: HTMLElement,\n params: GlassParams,\n stillWanted: () => boolean,\n): Promise<GlassSession | null> {\n const { attachGlass } = await import('vireglass/dom');\n if (!stillWanted()) return null;\n\n // `attachGlass` re-reads these on `update()`. The geometry is passed in because a pressed\n // element is scaled and a measured box would be the scaled one.\n const opts: AttachGlassOptions = {\n material: params.material,\n geometry: params.geometry,\n accessibility: params.accessibility,\n variant: params.onTouch ? 'interactive' : 'present',\n // The kit paints its own body: the core's is not lighter than its surround over a light backdrop and\n // near black under reduced transparency with light ink (docs/acceptance.md, \"Resting body\").\n body: false,\n };\n if (params.sample) opts.sample = params.sample;\n const handle: GlassHandle = attachGlass(el, opts);\n\n return {\n setMaterial(material) {\n opts.material = material;\n handle.update();\n },\n setGeometry(geometry) {\n opts.geometry = geometry;\n handle.update();\n },\n setAppear: (t) => handle.setAppear(t),\n setMorph: (morph) => handle.setMorph(morph),\n setSample: (sample) => handle.setSample(sample),\n destroy: () => handle.destroy(),\n };\n}\n","const COARSE = '(pointer: coarse)';\n\n/** One query decides the size tier, the hit area, and whether hover and focus rings exist. */\nexport function isCoarsePointer(): boolean {\n return typeof matchMedia !== 'undefined' && matchMedia(COARSE).matches;\n}\n\nexport function watchCoarsePointer(onChange: () => void): () => void {\n if (typeof matchMedia === 'undefined') return () => {};\n const list = matchMedia(COARSE);\n list.addEventListener('change', onChange);\n return () => list.removeEventListener('change', onChange);\n}\n","const HOST = ':is(vire-button,vire-icon-button)[data-vk]';\nconst BODY = `${HOST}>button`;\n\n// Every rule is keyed on `data-vk`, set at upgrade, so a native button keeps its own look until\n// then. Text takes the page's colour; frosted and contrast bodies assume `color-scheme` matches it.\nexport const STYLES = `\nvire-button,vire-icon-button{display:inline-flex;vertical-align:middle}\n${HOST}{position:relative;--vk-press:0;--vk-hover:0;--vk-body-alpha:0;--vk-body-white:0;--vk-body-lift:0;--vk-grow:0;--vk-defocus:0;--vk-slop-x:0;--vk-slop-y:0}\n${HOST}::before{content:'';position:absolute;inset:calc(var(--vk-slop-y)*-1px) calc(var(--vk-slop-x)*-1px)}\n${BODY}{appearance:none;-webkit-appearance:none;box-sizing:border-box;margin:0;border:0;outline:none;\n font:inherit;font-weight:500;line-height:1;white-space:nowrap;color:inherit;\n display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;\n height:var(--vk-height);min-width:var(--vk-height);padding:0 var(--vk-pad-x);border-radius:var(--vk-radius);\n -webkit-text-fill-color:color-mix(in srgb,currentColor calc((1 - var(--vk-press)*.55)*100%),transparent);\n text-shadow:0 0 calc(var(--vk-press)*var(--vk-defocus)*1px) currentColor;\n background:transparent;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-tap-highlight-color:transparent;\n transform:scale(calc(1 + var(--vk-press)*var(--vk-grow)))}\nvire-icon-button[data-vk]>button{padding:0;width:var(--vk-height)}\n${BODY}>svg{width:var(--vk-icon);height:var(--vk-icon);flex:none;\n opacity:calc(1 - var(--vk-press)*.45);filter:blur(calc(var(--vk-press)*var(--vk-defocus)*1px))}\n${BODY}:disabled{cursor:default}\n${HOST}[data-disabled]>button{-webkit-text-fill-color:color-mix(in srgb,currentColor 40%,transparent)}\n${HOST}[data-disabled]>button>svg{opacity:.4}\n${HOST}[data-focus]>button{outline:2px solid currentColor;outline-offset:2px}\n\n${HOST}[data-surface=glass]>button{color:var(--vireglass-ink-color,inherit);\n background:color-mix(in srgb,color-mix(in srgb,#fff calc((var(--vk-body-white) + var(--vk-body-lift)*2)*100%),var(--vireglass-tint-color,#fff)) calc(var(--vk-body-alpha)*100%),transparent);\n background:oklab(from color-mix(in srgb,#fff calc(var(--vk-body-white)*100%),var(--vireglass-tint-color,#fff)) calc(l + var(--vk-body-lift)) a b / var(--vk-body-alpha))}\n${HOST}[data-frost][data-surface=glass]>button{color:oklab(from var(--vireglass-tint-color,#fff) calc(.95 - .87*clamp(0,(l + var(--vk-body-lift) - .6)*20,1)) 0 0)}\n\n${HOST}[data-surface=plain]>button{background:color-mix(in srgb,currentColor calc(10% + var(--vk-hover)*6% + var(--vk-press)*14%),transparent)}\n\n${HOST}[data-surface=frosted]>button{\n background:color-mix(in srgb,Canvas calc(88% - var(--vk-hover)*4% - var(--vk-press)*10%),currentColor);\n backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);\n box-shadow:0 1px 3px color-mix(in srgb,currentColor 22%,transparent)}\n\n@supports not (color:oklab(from red l a b)){\n${HOST}[data-frost][data-surface=glass]>button{color:inherit;background:color-mix(in srgb,Canvas 82%,currentColor)}\n}\n\n${HOST}[data-contrast]:is([data-surface=plain],[data-surface=frosted])>button{box-shadow:inset 0 0 0 2px currentColor}\n${HOST}[data-contrast][data-surface=frosted]>button{background:Canvas}\n${HOST}[data-contrast][data-surface=glass]>button{background:color-mix(in srgb,color-mix(in srgb,#fff calc((1 - var(--vireglass-ink,0))*100%),#000) 88%,transparent)}\n\n@media (forced-colors:active){\n${BODY}{-webkit-text-fill-color:currentColor;text-shadow:none;color:ButtonText;background:ButtonFace;border:1px solid ButtonText;backdrop-filter:none;-webkit-backdrop-filter:none;transform:none}\n${BODY}>svg{opacity:1;filter:none}\n${HOST}[data-disabled]>button{-webkit-text-fill-color:currentColor;color:GrayText;border-color:GrayText}\n${HOST}[data-focus]>button{outline-color:Highlight}\n}\n`;\n\nconst STYLE_ATTR = 'data-vireuikit';\n\nexport function ensureStyles(from: Element, nonce?: string): void {\n const root = from.getRootNode();\n const host: Document | ShadowRoot = root instanceof ShadowRoot ? root : from.ownerDocument;\n if (host.querySelector(`style[${STYLE_ATTR}]`)) return;\n const style = from.ownerDocument.createElement('style');\n style.setAttribute(STYLE_ATTR, '');\n if (nonce) style.nonce = nonce;\n style.textContent = STYLES;\n (host instanceof ShadowRoot ? host : host.head).appendChild(style);\n}\n","import { VIREGLASS_CONTROL_MATERIAL, type BackdropSample, type VireGlassMaterial } from 'vireglass';\nimport type { GlassMorph } from 'vireglass/dom';\nimport { presentationFor, sameA11y, type A11yMode, type A11yOverride, type Presentation } from '../kit/a11y';\nimport { atomBody, atomMaterial, type VireUIKitAtomKind } from '../kit/atom';\nimport {\n CONTROL_IDLE,\n POINTER_INPUT,\n TOUCH_INPUT,\n stepControl,\n type ControlEvent,\n type ControlState,\n type InputCaps,\n} from '../kit/behavior/control';\nimport {\n createControlVisual,\n settleControlVisual,\n stepControlVisual,\n visualAtomState,\n} from '../kit/behavior/visual';\nimport { pressResponse } from '../kit/response';\nimport {\n BUTTON_SIZES,\n CONTROL_SIZES,\n defaultSize,\n hitSlop,\n iconButtonSize,\n minTarget,\n type ControlSize,\n} from '../kit/sizes';\nimport { effectiveA11y, watchA11yOverride, watchSystemA11y } from './a11y';\nimport { attachControlGlass, type GlassSession } from './glass';\nimport { isCoarsePointer, watchCoarsePointer } from './input';\nimport { ensureStyles } from './styles';\n\ntype GlassMode = 'present' | 'touch' | 'off';\n\nconst FORCE_ATTRIBUTE = 'data-vire-force-state';\n\nconst FORCED = {\n rest: CONTROL_IDLE,\n hover: { ...CONTROL_IDLE, hovered: true },\n focus: { ...CONTROL_IDLE, focused: true },\n pressed: { ...CONTROL_IDLE, press: { by: 'pointer' } },\n disabled: { ...CONTROL_IDLE, disabled: true },\n} as const satisfies Record<string, ControlState>;\n\ntype ForcedState = keyof typeof FORCED;\n\n// Every distinct material rebuilds the lens's displacement map, so the press value is snapped\n// instead of handing the lens a new one every frame.\nconst MATERIAL_STEPS = 10;\n// How long after a release outside the button its click is still treated as that release's.\nconst SUPPRESS_MS = 100;\n\nexport interface VireControlElement extends HTMLElement {\n a11y: A11yOverride;\n sample: BackdropSample | null;\n setMorph(morph: GlassMorph | null): void;\n}\n\nexport type ControlElementOptions = { nonce?: string | undefined };\n\nexport function createControlElementClass(\n kind: Extract<VireUIKitAtomKind, 'button' | 'iconButton'>,\n options: ControlElementOptions = {},\n) {\n const response = pressResponse(kind);\n\n return class VireControl extends HTMLElement implements VireControlElement {\n static observedAttributes = ['glass', 'size', 'disabled', FORCE_ATTRIBUTE];\n\n #control: HTMLButtonElement | null = null;\n #state: ControlState = CONTROL_IDLE;\n #caps: InputCaps = POINTER_INPUT;\n #visual = createControlVisual();\n #own: A11yOverride = {};\n #mode: A11yMode | null = null;\n #presentation: Presentation | null = null;\n #glass: GlassSession | null = null;\n #glassToken = 0;\n #glassKey = '';\n #glassBroken = false;\n #lastMaterialKey = '';\n #frame = 0;\n #lastFrame = 0;\n #cleanups: (() => void)[] = [];\n #suppressClick = false;\n #suppressTimer = 0;\n #slop = { x: 0, y: 0 };\n #morph: GlassMorph | null = null;\n #sample: BackdropSample | null = null;\n\n get a11y(): A11yOverride {\n return this.#own;\n }\n\n set a11y(next: A11yOverride) {\n this.#own = { ...next };\n if (this.#control) this.#refreshMode();\n }\n\n get sample(): BackdropSample | null {\n return this.#sample;\n }\n\n set sample(next: BackdropSample | null) {\n this.#sample = next;\n this.#glass?.setSample(next);\n }\n\n setMorph(morph: GlassMorph | null): void {\n this.#morph = morph;\n this.#glass?.setMorph(morph);\n }\n\n connectedCallback(): void {\n // Set before the element was defined, a property lands on the instance and hides the accessor.\n for (const key of ['a11y', 'sample']) {\n if (!Object.prototype.hasOwnProperty.call(this, key)) continue;\n const value: unknown = Reflect.get(this, key);\n Reflect.deleteProperty(this, key);\n Reflect.set(this, key, value);\n }\n ensureStyles(this, options.nonce);\n this.#cleanups.push(watchCoarsePointer(() => this.#onInputChange()));\n this.#cleanups.push(watchSystemA11y(() => this.#refreshMode()));\n this.#cleanups.push(watchA11yOverride(() => this.#refreshMode()));\n this.#awaitControl();\n }\n\n disconnectedCallback(): void {\n for (const cleanup of this.#cleanups.splice(0)) cleanup();\n cancelAnimationFrame(this.#frame);\n clearTimeout(this.#suppressTimer);\n this.#frame = 0;\n this.#dropGlass();\n this.#control = null;\n this.#state = CONTROL_IDLE;\n this.#suppressClick = false;\n for (const name of ['data-vk', 'data-surface', 'data-glass', 'data-frost', 'data-size']) this.removeAttribute(name);\n for (const name of Array.from(this.style)) if (name.startsWith('--vk-')) this.style.removeProperty(name);\n this.#presentation = null;\n this.#mode = null;\n }\n\n attributeChangedCallback(name: string): void {\n if (!this.#control) return;\n if (name === 'disabled') {\n const wanted = this.hasAttribute('disabled');\n if (this.#control.disabled !== wanted) this.#control.disabled = wanted;\n this.#syncDisabled();\n } else if (name === FORCE_ATTRIBUTE) {\n this.#applyForced();\n } else {\n this.#refreshMode(true);\n }\n }\n\n // The parser connects the element before its children exist, so the button is waited for\n // rather than made up.\n #awaitControl(): void {\n const found = this.querySelector<HTMLButtonElement>(':scope > button');\n if (found) {\n this.#upgrade(found);\n return;\n }\n const observer = new MutationObserver(() => {\n const button = this.querySelector<HTMLButtonElement>(':scope > button');\n if (!button) return;\n observer.disconnect();\n this.#upgrade(button);\n });\n observer.observe(this, { childList: true });\n this.#cleanups.push(() => observer.disconnect());\n }\n\n #upgrade(control: HTMLButtonElement): void {\n this.#control = control;\n this.setAttribute('data-vk', '');\n this.#caps = isCoarsePointer() ? TOUCH_INPUT : POINTER_INPUT;\n this.#listen(control);\n this.#cleanups.push(this.#observeSize(control));\n this.#syncDisabled();\n if (control.matches(':focus')) {\n this.#dispatch({ type: 'focus', visible: control.matches(':focus-visible') });\n }\n this.#mode = null;\n this.#refreshMode();\n }\n\n #onInputChange(): void {\n if (!this.#control) return;\n this.#caps = isCoarsePointer() ? TOUCH_INPUT : POINTER_INPUT;\n this.#refreshMode(true);\n }\n\n #size(): ControlSize {\n const wanted = this.getAttribute('size');\n if (wanted && (CONTROL_SIZES as readonly string[]).includes(wanted)) return wanted as ControlSize;\n return defaultSize({ touch: isCoarsePointer() });\n }\n\n #glassMode(): GlassMode {\n const wanted = this.getAttribute('glass');\n if (wanted === 'touch') return 'touch';\n return wanted === '' || wanted === 'present' ? 'present' : 'off';\n }\n\n #forced(): ForcedState | null {\n const wanted = this.getAttribute(FORCE_ATTRIBUTE);\n return wanted !== null && Object.hasOwn(FORCED, wanted) ? (wanted as ForcedState) : null;\n }\n\n #dispatch(event: ControlEvent): boolean {\n if (this.#forced()) return false;\n const step = stepControl(this.#state, event, this.#caps);\n this.#state = step.state;\n this.#render();\n return step.activated;\n }\n\n #listen(control: HTMLButtonElement): void {\n const on = <E extends Event>(\n target: EventTarget,\n type: string,\n handler: (event: E) => void,\n capture = false,\n ) => {\n target.addEventListener(type, handler as EventListener, capture);\n this.#cleanups.push(() => target.removeEventListener(type, handler as EventListener, capture));\n };\n // The host's own box is the unscaled one; the button grows while pressed.\n const inside = (e: PointerEvent) => {\n const r = this.getBoundingClientRect();\n return (\n e.clientX >= r.left - this.#slop.x &&\n e.clientX <= r.right + this.#slop.x &&\n e.clientY >= r.top - this.#slop.y &&\n e.clientY <= r.bottom + this.#slop.y\n );\n };\n const holdSuppression = () => {\n this.#suppressClick = true;\n clearTimeout(this.#suppressTimer);\n this.#suppressTimer = window.setTimeout(() => (this.#suppressClick = false), SUPPRESS_MS);\n };\n const releaseSuppression = () => {\n this.#suppressClick = false;\n clearTimeout(this.#suppressTimer);\n };\n\n // The hit area reaches past the button on coarse pointers, so the host sees those events.\n const bind = (target: HTMLElement, own: boolean) => {\n const mine = (e: Event) => own || e.target === this;\n on<PointerEvent>(target, 'pointerdown', (e) => {\n if (e.button !== 0 || !mine(e)) return;\n releaseSuppression();\n this.#dispatch({ type: 'down', source: 'pointer' });\n });\n on<PointerEvent>(target, 'pointermove', (e) => {\n if (!mine(e)) return;\n if (this.#state.press.by === 'pointer' && !inside(e)) this.#dispatch({ type: 'leave' });\n });\n on<PointerEvent>(target, 'pointerup', (e) => {\n if (!mine(e)) return;\n const wasPressed = this.#state.press.by === 'pointer';\n const activated = this.#dispatch({ type: 'up', source: 'pointer' });\n if (own && !activated && !wasPressed && !inside(e)) holdSuppression();\n });\n on<PointerEvent>(target, 'pointercancel', (e) => {\n if (mine(e)) this.#dispatch({ type: 'cancel' });\n });\n on<PointerEvent>(target, 'pointerenter', (e) => {\n if (mine(e) && e.pointerType !== 'touch') this.#dispatch({ type: 'enter' });\n });\n on<PointerEvent>(target, 'pointerleave', (e) => {\n // A captured pointer never leaves; the move handler decides by position instead.\n if (mine(e) && !control.hasPointerCapture?.(e.pointerId)) this.#dispatch({ type: 'leave' });\n });\n };\n bind(control, true);\n bind(this, false);\n\n // A tap in the hit area clicks the host; the button gets the one click, and the host sees it bubble.\n on<MouseEvent>(\n this,\n 'click',\n (e) => {\n if (e.target !== this) return;\n e.stopImmediatePropagation();\n e.preventDefault();\n control.click();\n },\n true,\n );\n\n // The lens captures the pointer, so a release outside the button still clicks it; only a\n // click that follows such a release is dropped, a keyboard or scripted one never is.\n on<MouseEvent>(\n control,\n 'click',\n (e) => {\n if (!this.#suppressClick) return;\n releaseSuppression();\n if (e.detail === 0) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n },\n true,\n );\n on<KeyboardEvent>(control, 'keydown', (e) => {\n releaseSuppression();\n if ((e.key === ' ' || e.key === 'Enter') && !e.repeat) this.#dispatch({ type: 'down', source: 'keyboard' });\n });\n on<KeyboardEvent>(control, 'keyup', (e) => {\n if (e.key === ' ' || e.key === 'Enter') this.#dispatch({ type: 'up', source: 'keyboard' });\n });\n on(control, 'focus', () => this.#dispatch({ type: 'focus', visible: control.matches(':focus-visible') }));\n on(control, 'blur', () => this.#dispatch({ type: 'blur' }));\n on(control, 'focusout', () => this.#dispatch({ type: 'blur' }));\n\n const mutations = new MutationObserver(() => this.#syncDisabled());\n mutations.observe(control, { attributes: true, attributeFilter: ['disabled'] });\n this.#cleanups.push(() => mutations.disconnect());\n }\n\n #observeSize(control: HTMLButtonElement): () => void {\n if (typeof ResizeObserver === 'undefined') return () => {};\n const observer = new ResizeObserver(() => {\n this.#applySlop();\n this.#glass?.setGeometry(this.#geometry(control));\n });\n observer.observe(control);\n return () => observer.disconnect();\n }\n\n #geometry(control: HTMLElement) {\n const radius = parseFloat(getComputedStyle(control).borderTopLeftRadius) || 0;\n return { width: control.offsetWidth, height: control.offsetHeight, cornerRadius: radius };\n }\n\n #applySlop(): void {\n const control = this.#control;\n if (!control) return;\n const floor = minTarget({ touch: isCoarsePointer() });\n this.#slop = { x: hitSlop(control.offsetWidth, floor), y: hitSlop(control.offsetHeight, floor) };\n this.style.setProperty('--vk-slop-x', String(this.#slop.x));\n this.style.setProperty('--vk-slop-y', String(this.#slop.y));\n }\n\n #syncDisabled(): void {\n const control = this.#control;\n if (!control) return;\n // Assigning an already-set `disabled` still queues a mutation record, which would loop.\n if (this.hasAttribute('disabled') && !control.disabled) control.disabled = true;\n const disabled = control.disabled;\n if (this.#forced()) return;\n if (disabled !== this.#state.disabled) {\n this.#state = stepControl(this.#state, { type: 'disable', disabled }, this.#caps).state;\n this.#render();\n }\n }\n\n #applyForced(): void {\n const forced = this.#forced();\n if (forced) {\n this.#state = FORCED[forced];\n settleControlVisual(this.#visual, this.#state);\n if (forced === 'disabled' && this.#control && !this.#control.disabled) this.#control.disabled = true;\n } else {\n this.#state = CONTROL_IDLE;\n this.#syncDisabled();\n }\n this.#render(true);\n }\n\n #refreshMode(force = false, afterFailure = false): void {\n if (!afterFailure) this.#glassBroken = false;\n const mode = effectiveA11y(this.#own);\n let next = presentationFor(mode, this.#glassMode() !== 'off');\n if (this.#glassBroken && next.glass) next = { ...next, glass: false, surface: next.frost ? 'frosted' : 'plain' };\n const changed =\n force || !this.#mode || !sameA11y(this.#mode, mode) || next.surface !== this.#presentation?.surface;\n this.#mode = mode;\n this.#presentation = next;\n this.#applySize();\n this.setAttribute('data-surface', next.surface);\n this.toggleAttribute('data-contrast', next.contrastBorder);\n this.toggleAttribute('data-frost', next.frost);\n this.setAttribute('data-glass', next.glass ? 'on' : 'off');\n if (changed) this.#reattachGlass(mode);\n if (this.#forced()) this.#applyForced();\n else this.#render(true);\n }\n\n #applySize(): void {\n const size = this.#size();\n const spec = kind === 'iconButton' ? iconButtonSize(size) : BUTTON_SIZES[size];\n const set = (name: string, value: string) => this.style.setProperty(name, value);\n set('--vk-height', `${spec.height}px`);\n set('--vk-pad-x', `${spec.paddingX}px`);\n set('--vk-icon', `${spec.icon}px`);\n set('--vk-radius', `${spec.radius}px`);\n set('--vk-grow', String(response.grow));\n set('--vk-defocus', String(response.defocus));\n this.setAttribute('data-size', size);\n this.#applySlop();\n }\n\n #dropGlass(): void {\n this.#glassToken += 1;\n this.#glass?.destroy();\n this.#glass = null;\n this.#glassKey = '';\n this.#lastMaterialKey = '';\n }\n\n #reattachGlass(mode: A11yMode): void {\n const control = this.#control;\n const want = this.#presentation?.glass === true && control !== null;\n const key = want ? `${this.#glassMode()}|${JSON.stringify(mode)}|${this.#size()}` : '';\n if (key === this.#glassKey) return;\n this.#dropGlass();\n this.#glassKey = key;\n if (!want || !control) return;\n const token = this.#glassToken;\n const sample = this.#sample;\n void attachControlGlass(\n control,\n {\n material: VIREGLASS_CONTROL_MATERIAL,\n geometry: this.#geometry(control),\n accessibility: mode,\n onTouch: this.#glassMode() === 'touch',\n sample,\n },\n () => token === this.#glassToken && this.isConnected,\n )\n .then((session) => {\n if (!session) return;\n this.#glass = session;\n if (this.#morph) session.setMorph(this.#morph);\n if (this.#sample !== sample) session.setSample(this.#sample);\n this.#pushMaterial(true);\n this.dispatchEvent(new CustomEvent('vire-glass-ready'));\n })\n .catch(() => {\n if (token !== this.#glassToken) return;\n this.#glassKey = '';\n this.#glassBroken = true;\n this.#refreshMode(false, true);\n });\n }\n\n #pushMaterial(force = false): void {\n const glass = this.#glass;\n if (!glass) return;\n const atom = visualAtomState(this.#visual, this.#state);\n const snap = (v: number) => Math.round(Math.min(Math.max(v, 0), 1) * MATERIAL_STEPS) / MATERIAL_STEPS;\n const quantized = { ...atom, pressed: snap(atom.pressed), hovered: snap(atom.hovered) };\n const key = `${quantized.pressed}|${quantized.hovered}|${quantized.disabled}`;\n if (!force && key === this.#lastMaterialKey) return;\n this.#lastMaterialKey = key;\n const material: VireGlassMaterial = atomMaterial(VIREGLASS_CONTROL_MATERIAL, kind, quantized);\n glass.setMaterial(material);\n if (this.#glassMode() === 'touch' && this.#forced()) glass.setAppear(quantized.pressed);\n }\n\n #render(immediate = false): void {\n if (immediate && this.#forced()) settleControlVisual(this.#visual, this.#state);\n this.#paint();\n if (this.#frame || (immediate && this.#forced())) return;\n this.#lastFrame = 0;\n this.#frame = requestAnimationFrame((t) => this.#tick(t));\n }\n\n #tick(now: number): void {\n this.#frame = 0;\n if (!this.isConnected) return;\n const dt = this.#lastFrame ? Math.min((now - this.#lastFrame) / 1000, 0.05) : 1 / 60;\n this.#lastFrame = now;\n const moving = stepControlVisual(this.#visual, dt, this.#state, this.#presentation?.instantSprings ?? false);\n this.#paint();\n if (moving) this.#frame = requestAnimationFrame((t) => this.#tick(t));\n }\n\n #paint(): void {\n const v = this.#visual;\n const set = (name: string, value: number) => this.style.setProperty(name, value.toFixed(3));\n set('--vk-press', v.pressed.x);\n set('--vk-hover', v.hovered.x);\n const body = atomBody(VIREGLASS_CONTROL_MATERIAL, visualAtomState(v, this.#state), this.#presentation?.frost ?? false);\n set('--vk-body-alpha', body.alpha);\n set('--vk-body-white', body.white);\n set('--vk-body-lift', body.lift);\n this.toggleAttribute('data-pressed', this.#state.press.by !== null);\n this.toggleAttribute('data-hovered', this.#state.hovered);\n this.toggleAttribute('data-focus', this.#state.focused);\n this.toggleAttribute('data-disabled', this.#state.disabled);\n this.#pushMaterial();\n }\n };\n}\n","import { createControlElementClass } from './element';\n\nexport { getA11yOverride, setA11yOverride, systemA11y } from './a11y';\nexport type { VireControlElement } from './element';\nexport { STYLES } from './styles';\n\nexport const BUTTON_TAG = 'vire-button';\nexport const ICON_BUTTON_TAG = 'vire-icon-button';\n\nexport type DefineOptions = {\n /** CSP nonce for the stylesheet the elements inject. Alternatively, ship `STYLES` yourself. */\n nonce?: string | undefined;\n registry?: CustomElementRegistry | undefined;\n};\n\n// A call rather than an import side effect: the classes extend `HTMLElement`, which a server lacks.\nexport function defineVireElements(options: DefineOptions = {}): void {\n const registry = options.registry ?? (typeof customElements === 'undefined' ? undefined : customElements);\n if (!registry) return;\n const pairs: [string, 'button' | 'iconButton'][] = [\n [BUTTON_TAG, 'button'],\n [ICON_BUTTON_TAG, 'iconButton'],\n ];\n for (const [tag, kind] of pairs) {\n if (!registry.get(tag)) registry.define(tag, createControlElementClass(kind, { nonce: options.nonce }));\n }\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vireuikit",
3
- "version": "0.5.0",
4
- "description": "A UI kit built on the VireGlass material: atom states and capsule-to-target morphs.",
3
+ "version": "0.6.0",
4
+ "description": "A UI kit built on the VireGlass material: atom states, capsule-to-target morphs and web elements.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Danil Kotlaev",
7
7
  "homepage": "https://github.com/pruffit/vireuikit#readme",
@@ -31,6 +31,11 @@
31
31
  "import": "./dist/index.js",
32
32
  "require": "./dist/index.cjs"
33
33
  },
34
+ "./web": {
35
+ "types": "./dist/web.d.ts",
36
+ "import": "./dist/web.js",
37
+ "require": "./dist/web.cjs"
38
+ },
34
39
  "./package.json": "./package.json"
35
40
  },
36
41
  "main": "./dist/index.cjs",
@@ -44,21 +49,28 @@
44
49
  ],
45
50
  "scripts": {
46
51
  "build": "tsup",
47
- "typecheck": "tsc --noEmit && tsc -p tsconfig.scripts.json",
52
+ "typecheck": "tsc --noEmit && tsc -p tsconfig.kit.json && tsc -p tsconfig.scripts.json",
48
53
  "test": "vitest run",
49
54
  "test:watch": "vitest",
50
55
  "check:english": "node scripts/check-english.mjs",
51
56
  "check:package": "node scripts/check-package.mjs",
52
- "check:readme": "node scripts/check-readme.mjs"
57
+ "check:readme": "node scripts/check-readme.mjs",
58
+ "lab": "vite --config lab/vite.config.ts",
59
+ "check:lab": "playwright test behavior",
60
+ "check:lab:visual": "playwright test visual",
61
+ "check:lab:visual:update": "playwright test visual --update-snapshots"
53
62
  },
54
63
  "peerDependencies": {
55
- "vireglass": "^2.3.1"
64
+ "vireglass": "^3.0.0"
56
65
  },
57
66
  "devDependencies": {
67
+ "@playwright/test": "1.63.0",
58
68
  "@types/node": "^22",
69
+ "esbuild": "0.27.7",
59
70
  "tsup": "^8.5.0",
60
71
  "typescript": "^5.8.3",
61
- "vireglass": "^2.3.1",
72
+ "vireglass": "^3.0.0",
73
+ "vite": "8.3.2",
62
74
  "vitest": "^4.1.11"
63
75
  }
64
76
  }