fix(brand): capitalize "Punktfunk" in user-facing text; name the legal copyright holder #81
+1
-1
@@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2026 unom
|
||||
Copyright 2026 unom - Enrico Bühler
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 unom
|
||||
Copyright (c) 2026 unom - Enrico Bühler
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
THIRD-PARTY SOFTWARE NOTICES
|
||||
============================================================================
|
||||
|
||||
punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.
|
||||
Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.
|
||||
The binaries it ships statically/dynamically link the third-party Rust crates listed
|
||||
below. Each is distributed under its own permissive license; the full license texts
|
||||
follow the manifest. This file is generated by scripts/gen-third-party-notices.py
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
THIRD-PARTY SOFTWARE NOTICES
|
||||
============================================================================
|
||||
|
||||
punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.
|
||||
Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.
|
||||
The binaries it ships statically/dynamically link the third-party Rust crates below.
|
||||
Each is distributed under its own permissive license; full texts follow.
|
||||
Generated by `cargo about generate about.hbs` (see about.toml) — do not edit by hand.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
THIRD-PARTY SOFTWARE NOTICES
|
||||
============================================================================
|
||||
|
||||
punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.
|
||||
Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.
|
||||
The binaries it ships statically/dynamically link the third-party Rust crates listed
|
||||
below. Each is distributed under its own permissive license; the full license texts
|
||||
follow the manifest. This file is generated by scripts/gen-third-party-notices.py
|
||||
|
||||
@@ -168,9 +168,9 @@ internal fun LocalNetworkDialog(onAllow: () -> Unit, onSettings: () -> Unit, onD
|
||||
title = { Text("Allow local network access") },
|
||||
text = {
|
||||
Text(
|
||||
"Android blocks punktfunk from talking to devices on your network, so it can't " +
|
||||
"Android blocks Punktfunk from talking to devices on your network, so it can't " +
|
||||
"find or reach any host until you allow it. If no prompt appears when you tap " +
|
||||
"Allow, enable “Nearby devices” for punktfunk in system settings.",
|
||||
"Allow, enable “Nearby devices” for Punktfunk in system settings.",
|
||||
)
|
||||
},
|
||||
confirmButton = {
|
||||
|
||||
@@ -941,7 +941,7 @@ fun ConnectScreen(
|
||||
color = MaterialTheme.colorScheme.onErrorContainer,
|
||||
)
|
||||
Text(
|
||||
"Android blocks punktfunk from finding or reaching hosts until you allow it.",
|
||||
"Android blocks Punktfunk from finding or reaching hosts until you allow it.",
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onErrorContainer,
|
||||
textAlign = TextAlign.Center,
|
||||
|
||||
@@ -191,7 +191,7 @@ fun ControllersScreen(gamepadSetting: Int, onBack: () -> Unit) {
|
||||
dsUsb?.let { DsRow(it) }
|
||||
if (pads.isEmpty() && !sc2Present) {
|
||||
Text(
|
||||
"No controller detected. punktfunk can only forward devices Android " +
|
||||
"No controller detected. Punktfunk can only forward devices Android " +
|
||||
"classifies as a gamepad or joystick — a pad connected through an adapter " +
|
||||
"or hub may show up under \"Other input devices\" below with the adapter's " +
|
||||
"identity, or not at all.",
|
||||
|
||||
@@ -463,11 +463,11 @@ fun GamepadLocalNetworkDialog(onAllow: () -> Unit, onSettings: () -> Unit, onDis
|
||||
),
|
||||
) {
|
||||
DialogText(
|
||||
"Android blocks punktfunk from talking to devices on your network, so it can't find " +
|
||||
"Android blocks Punktfunk from talking to devices on your network, so it can't find " +
|
||||
"or reach any host until you allow it.",
|
||||
)
|
||||
DialogText(
|
||||
"If no prompt appears after Allow, enable “Nearby devices” for punktfunk in " +
|
||||
"If no prompt appears after Allow, enable “Nearby devices” for Punktfunk in " +
|
||||
"system settings.",
|
||||
)
|
||||
}
|
||||
|
||||
@@ -344,7 +344,7 @@ struct HomeView: View {
|
||||
ContentUnavailableView {
|
||||
Label("No Hosts", systemImage: "rectangle.connected.to.line.below")
|
||||
} description: {
|
||||
Text("Add your punktfunk host with the + button, or scan the network again.")
|
||||
Text("Add your Punktfunk host with the + button, or scan the network again.")
|
||||
} actions: {
|
||||
Button("Add Host") { showAddHost = true }
|
||||
.glassProminentButtonStyle()
|
||||
|
||||
@@ -453,7 +453,7 @@ public final class HostDiscovery: ObservableObject {
|
||||
|
||||
private static func instanceName(_ endpoint: NWEndpoint) -> String {
|
||||
if case let .service(name, _, _, _) = endpoint { return name }
|
||||
return "punktfunk host"
|
||||
return "Punktfunk host"
|
||||
}
|
||||
|
||||
private static func entry(_ txt: NWTXTRecord, _ field: String) -> String? {
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2026 unom
|
||||
Copyright 2026 unom - Enrico Bühler
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 unom
|
||||
Copyright (c) 2026 unom - Enrico Bühler
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
THIRD-PARTY SOFTWARE NOTICES
|
||||
============================================================================
|
||||
|
||||
punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.
|
||||
Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.
|
||||
The binaries it ships statically/dynamically link the third-party Rust crates listed
|
||||
below. Each is distributed under its own permissive license; the full license texts
|
||||
follow the manifest. This file is generated by scripts/gen-third-party-notices.py
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 unom
|
||||
Copyright (c) 2026 unom - Enrico Bühler
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -244,7 +244,7 @@ fn run_headless_cli(args: &[String], identity: (String, String)) {
|
||||
#[cfg(windows)]
|
||||
fn discover_and_print() {
|
||||
use std::time::{Duration, Instant};
|
||||
println!("Browsing the LAN for punktfunk hosts (~5 s)…");
|
||||
println!("Browsing the LAN for Punktfunk hosts (~5 s)…");
|
||||
let (rx, _rescan) = discovery::browse();
|
||||
let deadline = Instant::now() + Duration::from_secs(5);
|
||||
let mut seen = std::collections::HashSet::new();
|
||||
|
||||
@@ -271,7 +271,7 @@ impl KwinFakeInjector {
|
||||
)?;
|
||||
// Authenticate (the legacy handshake; for an interface-authorized client KWin accepts it
|
||||
// without a dialog — same as krdpserver/krfb headless).
|
||||
fake.authenticate("punktfunk".into(), "remote streaming input".into());
|
||||
fake.authenticate("Punktfunk".into(), "remote streaming input".into());
|
||||
queue
|
||||
.roundtrip(&mut state)
|
||||
.context("fake_input authenticate roundtrip")?;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "punktfunk-docs",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "punktfunk documentation site — Fumadocs on TanStack Start (Vite + Nitro/bun)",
|
||||
"description": "Punktfunk documentation site — Fumadocs on TanStack Start (Vite + Nitro/bun)",
|
||||
"scripts": {
|
||||
"dev": "vite dev --port 3001",
|
||||
"build": "vite build",
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
// punktfunk brand mark: two overlapping circles forming a lens — the violet
|
||||
// Punktfunk brand mark: two overlapping circles forming a lens — the violet
|
||||
// brand identity. Copied verbatim from the marketing site (flattened from the
|
||||
// clients/apple punktfunk_Logo.icon). Back-to-front: large light-violet circle,
|
||||
// deep-violet circle, light highlight where they overlap.
|
||||
export default function BrandMark({ className }: { className?: string }) {
|
||||
return (
|
||||
<svg
|
||||
aria-label="punktfunk"
|
||||
aria-label="Punktfunk"
|
||||
role="img"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 1000 1000"
|
||||
className={className}
|
||||
>
|
||||
<title>punktfunk</title>
|
||||
<title>Punktfunk</title>
|
||||
<path
|
||||
d="M403.037,791.672c107.586,0 194.41,-86.824 194.41,-194.41c0,-107.586 -86.824,-194.41 -194.41,-194.41c-107.586,0 -194.41,86.824 -194.41,194.41c0,107.586 86.824,194.41 194.41,194.41Z"
|
||||
fill="#a79ff8"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// The punktfunk "funk" wordmark — vectorised from
|
||||
// The Punktfunk "funk" wordmark — vectorised from
|
||||
// Export/Punktfunk_Logo-Text_No-Border_Dark.svg (the white export background is
|
||||
// dropped). Inline SVG using currentColor so it recolours per theme: the
|
||||
// deep-violet brand on light, the light-violet lens highlight on dark (matching
|
||||
@@ -7,13 +7,13 @@ export default function Wordmark({ className = '' }: { className?: string }) {
|
||||
return (
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="punktfunk"
|
||||
aria-label="Punktfunk"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 579 136"
|
||||
fill="currentColor"
|
||||
className={`w-auto text-[var(--pf-brand)] dark:text-[var(--pf-highlight)] ${className}`}
|
||||
>
|
||||
<title>punktfunk</title>
|
||||
<title>Punktfunk</title>
|
||||
<path d="M16.782,16.051l0,102.687l31.253,0l0,-35.563l73.436,0l0,-23.555l-73.436,0l0,-19.398l77.285,0l0,-24.171l-108.537,0Z" />
|
||||
<path d="M131.785,16.051l0,47.264c0.154,16.627 0.154,16.627 0.308,20.014c0.77,15.087 2.463,21.4 7.544,26.634c7.698,8.16 20.014,10.315 59.272,10.315c23.863,0 34.178,-0.616 43.415,-2.463c11.7,-2.463 19.552,-10.623 21.246,-22.323c0.924,-7.236 1.078,-8.929 1.54,-32.176l0,-47.264l-31.253,0l0,47.264c0,2.155 -0.154,7.082 -0.308,10.623c-0.462,9.699 -1.232,12.47 -3.695,15.087c-3.387,3.695 -9.853,4.619 -31.407,4.619c-26.634,0 -32.638,-1.693 -34.332,-9.853c-0.77,-4.157 -0.77,-4.311 -1.078,-20.476l0,-47.264l-31.253,0Z" />
|
||||
<path d="M271.575,15.943l0,102.687l31.868,0l-0.77,-76.669l3.387,0l54.038,76.669l54.346,0l0,-102.687l-31.868,0l0.77,76.515l-3.233,0l-53.73,-76.515l-54.808,0Z" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// The docs reuse the punktfunk footer from the shared unom CMS (cms.unom.io).
|
||||
// The docs reuse the Punktfunk footer from the shared unom CMS (cms.unom.io).
|
||||
// The footer shape comes from @unom/app-ui/footer so the docs and the marketing
|
||||
// site share one type. The CMS is multi-tenant: footer is a per-tenant
|
||||
// collection, so scope the read to this project's tenant. Read-only GET, so a
|
||||
|
||||
@@ -3,7 +3,7 @@ import BrandMark from '@/components/BrandMark'
|
||||
import Wordmark from '@/components/Wordmark'
|
||||
|
||||
// Shared chrome (nav title, links) for both the docs layout and the home layout.
|
||||
// The lens mark + wordmark mirror the punktfunk marketing site's header.
|
||||
// The lens mark + wordmark mirror the Punktfunk marketing site's header.
|
||||
export function baseOptions(): BaseLayoutProps {
|
||||
return {
|
||||
nav: {
|
||||
|
||||
@@ -30,7 +30,7 @@ export const Route = createRootRoute({
|
||||
{ charSet: 'utf-8' },
|
||||
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
||||
{ name: 'color-scheme', content: 'dark light' },
|
||||
{ title: 'punktfunk docs' },
|
||||
{ title: 'Punktfunk Docs' },
|
||||
],
|
||||
links: [
|
||||
{ rel: 'stylesheet', href: appCss },
|
||||
|
||||
@@ -13,18 +13,18 @@ export const Route = createFileRoute('/api/')({
|
||||
component: ApiReference,
|
||||
head: () => ({
|
||||
meta: [
|
||||
{ title: 'punktfunk — Management API reference' },
|
||||
{ title: 'Punktfunk — Management API Reference' },
|
||||
{
|
||||
name: 'description',
|
||||
content:
|
||||
'Interactive reference for the punktfunk host management REST API (OpenAPI).',
|
||||
'Interactive reference for the Punktfunk host management REST API (OpenAPI).',
|
||||
},
|
||||
],
|
||||
links: [{ rel: 'stylesheet', href: scalarCss }],
|
||||
}),
|
||||
})
|
||||
|
||||
// The full punktfunk theme rolled out onto Scalar — the same dark-violet (and
|
||||
// The full Punktfunk theme rolled out onto Scalar — the same dark-violet (and
|
||||
// light-lavender) product chrome as the docs/management console.
|
||||
//
|
||||
// IMPORTANT: Scalar toggles `.light-mode` / `.dark-mode` on `document.body`,
|
||||
@@ -191,7 +191,7 @@ function ApiReference() {
|
||||
url: '/openapi.json',
|
||||
darkMode: isDark,
|
||||
hideDarkModeToggle: true,
|
||||
metaData: { title: 'punktfunk Management API' },
|
||||
metaData: { title: 'Punktfunk Management API' },
|
||||
hideDownloadButton: false,
|
||||
customCss: SCALAR_CSS,
|
||||
}),
|
||||
@@ -200,13 +200,13 @@ function ApiReference() {
|
||||
|
||||
return (
|
||||
<div className="flex min-h-screen flex-col">
|
||||
{/* Slim branded bar so the reference stays inside the punktfunk identity
|
||||
{/* Slim branded bar so the reference stays inside the Punktfunk identity
|
||||
and links back into the docs. */}
|
||||
<header className="flex h-14 shrink-0 items-center justify-between border-b border-fd-border px-4 md:px-6">
|
||||
<Link
|
||||
to="/docs/$"
|
||||
params={{ _splat: '' }}
|
||||
aria-label="punktfunk documentation"
|
||||
aria-label="Punktfunk documentation"
|
||||
className="flex items-center gap-2 no-underline"
|
||||
>
|
||||
<BrandMark className="size-6" />
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
/* Pull Fumadocs UI's own classes — and @unom/ui's compiled components — into
|
||||
the Tailwind 4 scan so their utilities aren't purged. @unom/ui is the shared
|
||||
design-token system the punktfunk marketing site also builds on. */
|
||||
design-token system the Punktfunk marketing site also builds on. */
|
||||
@source '../../node_modules/fumadocs-ui/dist/**/*.js';
|
||||
@source '../../node_modules/@unom/ui/dist/**/*.{js,mjs}';
|
||||
@source '../../node_modules/@unom/app-ui/dist/**/*.{js,mjs}';
|
||||
|
||||
/* ── punktfunk brand ────────────────────────────────────────────────────────
|
||||
/* ── Punktfunk brand ────────────────────────────────────────────────────────
|
||||
The brand colour is the violet lens mark. (The marketing site's blue is just
|
||||
a page background, not the brand.) These values feed both @unom/ui's semantic
|
||||
token contract (--brand/--primary/--accent/--highlight) and the Fumadocs
|
||||
@@ -61,7 +61,7 @@
|
||||
}
|
||||
|
||||
@theme {
|
||||
/* Geist — the punktfunk brand typeface, same as the marketing site
|
||||
/* Geist — the Punktfunk brand typeface, same as the marketing site
|
||||
(the @fontsource-variable/geist face is loaded in __root.tsx). */
|
||||
--font-sans: 'Geist Variable', ui-sans-serif, system-ui, sans-serif;
|
||||
--font-display: 'Geist Variable', ui-sans-serif, system-ui, sans-serif;
|
||||
|
||||
@@ -224,7 +224,7 @@ path below is the maintainer's test box — substitute your own `punktfunk-probe
|
||||
# Recover a WEDGED driver. Symptom: every session fails with
|
||||
# create virtual output: pf-vdisplay ADD ...: DeviceIoControl(0x222400): Element nicht gefunden (0x80070490)
|
||||
# i.e. ERROR_NOT_FOUND — sustained ADD/REMOVE churn exhausted the IddCx monitor slots (ghost
|
||||
# "Generic Monitor (punktfunk)" nodes pile up, target_ids climb). A host restart's CLEAR_ALL does NOT
|
||||
# "Generic Monitor (Punktfunk)" nodes pile up, target_ids climb). A host restart's CLEAR_ALL does NOT
|
||||
# fix it; the driver instance must be reloaded. This clears the ghosts + cycles the adapter (no reboot —
|
||||
# this box boots to Proxmox).
|
||||
powershell -ExecutionPolicy Bypass -File reset-pf-vdisplay.ps1 -Verify -Probe C:\t-goal1\debug\punktfunk-probe.exe
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2026 unom
|
||||
Copyright 2026 unom - Enrico Bühler
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 unom
|
||||
Copyright (c) 2026 unom - Enrico Bühler
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2026 unom
|
||||
Copyright 2026 unom - Enrico Bühler
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 unom
|
||||
Copyright (c) 2026 unom - Enrico Bühler
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -83,7 +83,7 @@ export const runPluginCli = async <E, R>(opts: {
|
||||
} catch (e) {
|
||||
const hint =
|
||||
e instanceof HostRequestError
|
||||
? " (is the punktfunk host running?)"
|
||||
? " (is the Punktfunk host running?)"
|
||||
: "";
|
||||
console.error(`${opts.def.name}: ${name} failed: ${e}${hint}`);
|
||||
process.exitCode = 1;
|
||||
|
||||
@@ -137,7 +137,7 @@ def main():
|
||||
w("THIRD-PARTY SOFTWARE NOTICES")
|
||||
w("=" * 76)
|
||||
w("")
|
||||
w("punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.")
|
||||
w("Punktfunk (https://git.unom.io/unom/punktfunk) is licensed under MIT OR Apache-2.0.")
|
||||
w("The binaries it ships statically/dynamically link the third-party Rust crates listed")
|
||||
w("below. Each is distributed under its own permissive license; the full license texts")
|
||||
w("follow the manifest. This file is generated by scripts/gen-third-party-notices.py")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// punktfunk brand mark: two overlapping circles forming a lens — the violet
|
||||
// Punktfunk brand mark: two overlapping circles forming a lens — the violet
|
||||
// brand identity (flattened from the clients/apple punktfunk_Logo.icon, shared
|
||||
// verbatim with the marketing site + docs). Back-to-front: large light-violet
|
||||
// circle, deep-violet circle, light highlight where they overlap.
|
||||
|
||||
@@ -2,7 +2,7 @@ import { cn } from "@/lib/utils";
|
||||
import { BrandMark } from "./brand-mark";
|
||||
import { Wordmark } from "./wordmark";
|
||||
|
||||
// Full punktfunk lockup: the lens mark anchored to the top-left corner of the
|
||||
// Full Punktfunk lockup: the lens mark anchored to the top-left corner of the
|
||||
// "funk" wordmark. Size the lockup with a width on the wrapper (e.g. `w-40`);
|
||||
// the mark scales as a fraction of that width.
|
||||
export function Logo({ className }: { className?: string }) {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useEffect, useRef } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { m } from "@/paraglide/messages";
|
||||
|
||||
// The punktfunk lens, alive. The two overlapping circles of the brand mark are
|
||||
// The Punktfunk lens, alive. The two overlapping circles of the brand mark are
|
||||
// recreated from divs and animated as if orbiting on a path whose long axis points
|
||||
// INTO the screen, so depth is the dominant motion: each circle surges toward and
|
||||
// away from the viewer in antiphase, passing in front of and behind the other.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
// The punktfunk "funk" wordmark — the real brand typo, vectorised from the
|
||||
// The Punktfunk "funk" wordmark — the real brand typo, vectorised from the
|
||||
// marketing logo. currentColor so it recolours per surface; defaults to the
|
||||
// light-violet lens highlight that reads on the dark console chrome. Size via
|
||||
// height (e.g. `h-5`); width follows the viewBox.
|
||||
|
||||
@@ -73,7 +73,7 @@ export const Incompatible: Story = {
|
||||
...BASE,
|
||||
compatible: false,
|
||||
incompatible_reason:
|
||||
"needs punktfunk host ≥ 0.16.0 (this host is 0.15.0)",
|
||||
"needs Punktfunk host ≥ 0.16.0 (this host is 0.15.0)",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@
|
||||
Tailwind 4 scan so their utilities aren't purged. */
|
||||
@source "../node_modules/@unom/ui/dist/**/*.{js,mjs}";
|
||||
|
||||
/* ── punktfunk brand · violet product chrome ────────────────────────────────
|
||||
/* ── Punktfunk brand · violet product chrome ────────────────────────────────
|
||||
Two themes on one violet identity: LIGHT (lavender docs surface — the same
|
||||
palette the design/Scalar reference uses: white bg, faint-violet cards/borders,
|
||||
#6c5bf3 brand) is the :root default; DARK (the violet-tinted app-icon chrome
|
||||
@@ -27,7 +27,7 @@
|
||||
:root {
|
||||
--radius: 0.625rem;
|
||||
|
||||
/* Brand — the violet lens mark (from the punktfunk app icon). Theme-independent. */
|
||||
/* Brand — the violet lens mark (from the Punktfunk app icon). Theme-independent. */
|
||||
--pf-brand: #6c5bf3; /* deep violet — primary on light */
|
||||
--pf-brand-light: #a79ff8; /* light violet — primary on dark */
|
||||
--pf-highlight: #d2c9fb; /* lens highlight */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Penner easing tokens — shared with the punktfunk marketing site + @unom/ui.
|
||||
/* Penner easing tokens — shared with the Punktfunk marketing site + @unom/ui.
|
||||
@unom/ui's accordion/collapsible/material animations resolve these by name. */
|
||||
@theme {
|
||||
--ease-in-sine: cubic-bezier(0.47, 0, 0.745, 0.715);
|
||||
|
||||
Reference in New Issue
Block a user