@voltro/ui-shadcn 0.66.0 → 0.67.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.
- package/CHANGELOG.md +52 -0
- package/THIRD-PARTY-NOTICES.md +6 -6
- package/dist/brand.d.ts +5 -1
- package/dist/brand.js +3 -177
- package/dist/index.d.ts +80 -5
- package/dist/index.js +1316 -882
- package/dist/signal.css +223 -0
- package/dist/voltroLogo-CSnSpQhz.js +207 -0
- package/package.json +7 -6
- package/src/brand/voltroLogo.tsx +13 -4
- package/src/compositions/appShell.tsx +7 -9
- package/src/compositions/codeCompare.tsx +2 -3
- package/src/compositions/docsLayout.tsx +56 -35
- package/src/compositions/profileMenu.tsx +12 -9
- package/src/compositions/signalControls.tsx +43 -0
- package/src/compositions/signalField.tsx +75 -0
- package/src/compositions/signalHeader.tsx +96 -0
- package/src/compositions/signalMotion.ts +68 -0
- package/src/compositions/themeToggle.tsx +6 -3
- package/src/cookies.ts +3 -0
- package/src/index.ts +5 -1
- package/src/primitives/codeBlock.tsx +4 -4
- package/src/primitives/highlightedCode.tsx +2 -0
- package/src/primitives/searchModal.tsx +16 -2
- package/src/signal.css +223 -0
package/CHANGELOG.md
CHANGED
|
@@ -39,6 +39,58 @@ _Changes staged for the next release accumulate here (rolled up from
|
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
42
|
+
## [0.67.0] — 2026-09-07
|
|
43
|
+
|
|
44
|
+
### ⚠ BREAKING
|
|
45
|
+
|
|
46
|
+
- **@voltro/client, @voltro/protocol, @voltro/runtime, @voltro/cli, @voltro/web** — Confirmed optimistic writes now reconcile against a token-bound post-ACK primary snapshot, never an unrelated delta, changed row or timeout. Matching snapshots retire only covered previews; server normalisation and later writers remain authoritative. Same-tick acknowledgements coalesce, and affected cache entries preserve primary consistency across same-subject reconnects. Migration: deploy matching client/server framework versions together and account for an additional subscription read per affected acknowledgement group; affected entries use primary snapshots instead of replica reads/delta-resume for their cache lifetime. Native hooks need no source rewrite. Direct callers of the public `supersedesConfirmedPatches(event, baseBefore, baseAfter)` helper must migrate to `(event, reconciliationToken)` using the token of the post-ACK read, or use the native `SubscriptionCache`; row comparison cannot be mechanically rewritten into causal proof.
|
|
47
|
+
|
|
48
|
+
**`voltro update` carries you across this** — codemod `0.67.0/01_subscription-reconciliation`. If you pin versions by hand and never run it, print the notes without changing anything: `voltro update --codemods-only --from <your current version> --dry-run` (this one ships in 0.67.0).
|
|
49
|
+
- **@voltro/cli** — `voltro support sentry <eventId>` is removed. It wrapped `sentry-cli sourcemaps explain`, which sentry-cli 3 dropped in favour of Sentry's in-product source-map debugger; `@voltro/cli` now depends on `@sentry/cli` 3, whose `execute(args, live)` takes a boolean. Migration: delete the invocation from scripts, CI jobs and runbooks and read the event's source-map resolution in Sentry itself. `voltro support collect` is unchanged.
|
|
50
|
+
|
|
51
|
+
**`voltro update` carries you across this** — codemod `0.67.0/03_support-sentry-removed`. If you pin versions by hand and never run it, print the notes without changing anything: `voltro update --codemods-only --from <your current version> --dry-run` (this one ships in 0.67.0).
|
|
52
|
+
- **@voltro/cli, @voltro/workflow, @voltro/testing** — `voltro test` runs on vitest 5, and `@voltro/workflow` names `vitest ^5.0.0` as its peer. Migration: set `vitest` and `@vitest/coverage-v8` to `^5.0.0` together in every app that declares them (the coverage provider peer-pins the exact vitest version), install, and run the suite once — vitest 5 clears mocks before each test by default, fails a test whose async assertion was not awaited, and no longer looks a config file up in ancestor directories. Scaffolded templates ship on 5.
|
|
53
|
+
|
|
54
|
+
**`voltro update` carries you across this** — codemod `0.67.0/02_vitest-5`. If you pin versions by hand and never run it, print the notes without changing anything: `voltro update --codemods-only --from <your current version> --dry-run` (this one ships in 0.67.0).
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
|
|
58
|
+
- **@voltro/ui-shadcn, @voltro/cli, @voltro/devtools, @voltro/devtools-ui** — Add the opt-in Signal brand stylesheet, accessible `SignalHeader` and pausable `SignalField` with reduced-motion and visibility handling. Development and production builds resolve the stylesheet from the same UI-kit installation; the in-browser devtools use the matching plum/violet palette and declare the Tailwind dependency required to compile their source stylesheet locally.
|
|
59
|
+
|
|
60
|
+
Code blocks use matching light/dark surfaces, code comparisons retain readable contrast, and the shared routes view uses a direct heading.
|
|
61
|
+
|
|
62
|
+
`DocsLayout` supports custom header and introduction slots and an optional desktop sidebar. Its mobile drawer uses native modal focus and Escape behavior; search contains keyboard focus and restores the opener when dismissed.
|
|
63
|
+
|
|
64
|
+
`VoltroWordmark` owns product badges and an operator warning tone. `SignalHeader` shares responsive brand geometry and an optional sticky reading surface; `AppShell` accepts a custom header slot. All first-party product headers and footers use this composition, including the compact local Devtools identity.
|
|
65
|
+
|
|
66
|
+
Shared `SignalPreferences`, `SignalSearch` and `SignalHeaderAction` align header controls across public and operating apps. Signal fields support both themes; `ProfileMenu` accepts a custom trigger and preserves an explicit System choice.
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
|
|
70
|
+
- **@voltro/cli, @voltro/runtime, @voltro/database, @voltro/protocol, @voltro/voltro, @voltro/sql-mssql, @voltro/sql-turso, @voltro/workflow, @voltro/plugin-sso-saml, @voltro/plugin-sentry** — Dependency refresh: Effect 3.22.1 with the matching `@effect/*` patch releases (`@effect/cluster` 0.60.2, `@effect/sql-mssql` 0.54.0, `@effect/platform` 0.97.1, `@effect/rpc` 0.76.2, `@effect/sql` 0.52.1, `@effect/workflow` 0.19.1), `@libsql/client` 0.18.0 — and `@effect/sql-mssql` 0.54.0 flipped its TLS default to encrypt-and-verify, so the mssql dialect now passes `encrypt: false` explicitly for an unset connection to keep the documented modes (unset → plaintext, `sslmode=require` → encrypt without verification) — `@sentry/cli` 3, `xml-encryption` 6, vite 8.2.2, and the tracked minor/patch lines. The mssql patch for `@effect/cluster` — the four SQL fixes plus the shard-release backoff — was regenerated against 0.60.2 (upstream refactored `SqlMessageStorage`, so the 0.60.0 hunks no longer applied) and ships as `patches/@effect__cluster@0.60.2.patch`; `voltro add mssql` writes the new key. Projects scaffolded by the CLI record the pnpm that ran it, which is 12.x on the framework's own toolchain; pnpm 11+ replaced `onlyBuiltDependencies` with `allowBuilds`, and the framework's workspaces declare it.
|
|
71
|
+
|
|
72
|
+
### Fixed
|
|
73
|
+
|
|
74
|
+
- **@voltro/cli, @voltro/runtime, @voltro/database, @voltro/voltro** — The tunable readers that take `env = process.env` (`resolveEagerFallbackWarnIntervalMs`, `resolveWorkflowRecordingMode`, `readPollCeilingMs`, and the `SchedulingEnv` / `ReactiveEnv` / `InspectRingsEnv` shapes) accept a bare `NodeJS.ProcessEnv` again. They were typed as all-optional literals, which TypeScript's weak-type check rejects for `Dict<string>` the moment nothing in the compilation augments `ProcessEnv` — an app that compiles framework source with only `@types/node` (a mobile app, which declares no env) failed `tsc` on `dbMetrics.ts`. The parameters now carry an index signature.
|
|
75
|
+
- **@voltro/client, @voltro/web** — The subscription recovery watchdog knows when it was throttled. A browser delays timers in a hidden tab, so the stall timer could fire long after it was due, report the interval it was armed with as the interval waited, warn, and invalidate entries whose deliveries were queued behind the same throttling. It now compares its due time with its fire time: late beyond a tolerance, or firing in a hidden tab, it records one `subscription.recovery-timer-late` per attempt (with `timerLateMs` and `hidden`) and re-arms; the first on-time fire in a visible tab decides. `subscription.recovery-stuck` carries the time actually waited and the number of deferrals.
|
|
76
|
+
|
|
77
|
+
The client runtime yields to the event loop through a `MessageChannel` in the browser instead of `setTimeout`, so tasks queued behind Effect's periodic yield are not held to the hidden-tab timer grid. `runtime.resolved` records the channel in use as `scheduler`.
|
|
78
|
+
|
|
79
|
+
`socket.frames` marks frame-arrival bursts on the raw socket — the first frame after open and each frame that follows a gap of five seconds or more, at most eight per socket — so an export separates a late arrival from late processing.
|
|
80
|
+
|
|
81
|
+
`apiSurface: compatible` — the golden churn in `@voltro/client` and `@voltro/web` is two members added to the `ClientDiagnosticKind` union (`socket.frames`, `subscription.recovery-timer-late`); every existing member is unchanged, the framework is the only producer, and a reader that does not know the new kinds sees two more events it can ignore. Only a switch exhaustive over the vocabulary needs two arms.
|
|
82
|
+
- **@voltro/cli** — Web middleware is precompiled into the server production output and rooted by runtime pruning, preserving its behavior in source-free Docker deployments. Missing transitive imports now fail loudly instead of silently disabling a present middleware; rebuilding after removal clears the previous policy. Runtime tracing also preserves transitive dependencies when a deploy directory is reached through a symlink. Native bundle imports now propagate missing-library and initialization errors instead of returning a circular shim's empty exports. Rebuild and deploy the complete `.framework` output; no application API changes are required.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## [0.66.1] — 2026-09-06
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
|
|
90
|
+
- **@voltro/cli** — API serve and web start bundles preserve esbuild's caught-import handling: a missing `require()` inside `try/catch` or a caught dynamic import can use its source fallback without a package.json optional-dependency declaration. This fixes the 0.66.0 minified MySQL/MariaDB serve-build regression at mysql2's optional `cardinal` debug highlighter; no direct `cardinal` dependency is needed after upgrading and rebuilding the API. Unhandled missing dependencies and broken installed exports still fail the build. Regression tests execute minified fallback code and build/import production serve bundles for every registered SQL-driver package, plus MariaDB, without requiring database services.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
42
94
|
## [0.66.0] — 2026-09-06
|
|
43
95
|
|
|
44
96
|
### ⚠ BREAKING
|
package/THIRD-PARTY-NOTICES.md
CHANGED
|
@@ -9,7 +9,7 @@ Generated from the resolved runtime dependency closure (107 packages).
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
## @effect/sql@0.52.
|
|
12
|
+
## @effect/sql@0.52.1
|
|
13
13
|
|
|
14
14
|
License: MIT
|
|
15
15
|
|
|
@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
37
37
|
SOFTWARE.
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
## @floating-ui/core@1.
|
|
40
|
+
## @floating-ui/core@1.8.0
|
|
41
41
|
|
|
42
42
|
License: MIT
|
|
43
43
|
|
|
@@ -64,7 +64,7 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
|
64
64
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
## @floating-ui/dom@1.
|
|
67
|
+
## @floating-ui/dom@1.8.0
|
|
68
68
|
|
|
69
69
|
License: MIT
|
|
70
70
|
|
|
@@ -118,7 +118,7 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
|
118
118
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
-
## @floating-ui/utils@0.2.
|
|
121
|
+
## @floating-ui/utils@0.2.12
|
|
122
122
|
|
|
123
123
|
License: MIT
|
|
124
124
|
|
|
@@ -1876,7 +1876,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
|
1876
1876
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
1877
1877
|
```
|
|
1878
1878
|
|
|
1879
|
-
## effect@3.22.
|
|
1879
|
+
## effect@3.22.1
|
|
1880
1880
|
|
|
1881
1881
|
License: MIT
|
|
1882
1882
|
|
|
@@ -2047,7 +2047,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
|
2047
2047
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
2048
2048
|
```
|
|
2049
2049
|
|
|
2050
|
-
## jose@6.2.
|
|
2050
|
+
## jose@6.2.10
|
|
2051
2051
|
|
|
2052
2052
|
License: MIT
|
|
2053
2053
|
|
package/dist/brand.d.ts
CHANGED
|
@@ -52,7 +52,7 @@ export declare type VoltroMarkVariant = 'gradient' | 'mono' | 'white';
|
|
|
52
52
|
* type set in the surrounding font and `currentColor`, so it inherits
|
|
53
53
|
* the app's typography and is correct in light + dark automatically.
|
|
54
54
|
*/
|
|
55
|
-
export declare const VoltroWordmark: ({ size, markVariant, label, className, style, }: VoltroWordmarkProps) => ReactNode;
|
|
55
|
+
export declare const VoltroWordmark: ({ size, markVariant, label, product, productTone, className, style, }: VoltroWordmarkProps) => ReactNode;
|
|
56
56
|
|
|
57
57
|
export declare interface VoltroWordmarkProps {
|
|
58
58
|
/** Mark height in px; the wordmark text scales with it. Default 28. */
|
|
@@ -60,6 +60,10 @@ export declare interface VoltroWordmarkProps {
|
|
|
60
60
|
readonly markVariant?: VoltroMarkVariant;
|
|
61
61
|
/** Wordmark label. Default "Voltro". */
|
|
62
62
|
readonly label?: string;
|
|
63
|
+
/** Product badge beside the shared wordmark, e.g. Framework or Cloud. */
|
|
64
|
+
readonly product?: ReactNode;
|
|
65
|
+
/** Warning tone for an operator surface; proportions stay shared. */
|
|
66
|
+
readonly productTone?: 'brand' | 'warning';
|
|
63
67
|
readonly className?: string;
|
|
64
68
|
readonly style?: CSSProperties;
|
|
65
69
|
}
|
package/dist/brand.js
CHANGED
|
@@ -1,177 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
//#region src/brand/voltroLogo.tsx
|
|
5
|
-
var a = "M28 5 13 27 22 26 20 43 35 21 26 22Z", o = "M28 5 13 27 22 26 20 43Z", s = "M28 5 20 43 35 21 26 22Z", c = "#7C3AED", l = ({ size: c = 32, variant: l = "gradient", title: u, className: d, ...f }) => {
|
|
6
|
-
let p = t(), m = `vmF-${p}`, h = `vmB-${p}`;
|
|
7
|
-
return /* @__PURE__ */ r("svg", {
|
|
8
|
-
width: c,
|
|
9
|
-
height: c,
|
|
10
|
-
viewBox: "0 0 48 48",
|
|
11
|
-
fill: "none",
|
|
12
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
13
|
-
...u === void 0 ? { "aria-hidden": !0 } : {
|
|
14
|
-
role: "img",
|
|
15
|
-
"aria-label": u
|
|
16
|
-
},
|
|
17
|
-
className: e("inline-block shrink-0", d),
|
|
18
|
-
...f,
|
|
19
|
-
children: l === "gradient" ? /* @__PURE__ */ i(n, { children: [
|
|
20
|
-
/* @__PURE__ */ i("defs", { children: [/* @__PURE__ */ i("linearGradient", {
|
|
21
|
-
id: m,
|
|
22
|
-
x1: "13",
|
|
23
|
-
y1: "5",
|
|
24
|
-
x2: "33",
|
|
25
|
-
y2: "43",
|
|
26
|
-
gradientUnits: "userSpaceOnUse",
|
|
27
|
-
children: [/* @__PURE__ */ r("stop", { stopColor: "#A874FF" }), /* @__PURE__ */ r("stop", {
|
|
28
|
-
offset: "1",
|
|
29
|
-
stopColor: "#7C3AED"
|
|
30
|
-
})]
|
|
31
|
-
}), /* @__PURE__ */ i("linearGradient", {
|
|
32
|
-
id: h,
|
|
33
|
-
x1: "22",
|
|
34
|
-
y1: "5",
|
|
35
|
-
x2: "35",
|
|
36
|
-
y2: "43",
|
|
37
|
-
gradientUnits: "userSpaceOnUse",
|
|
38
|
-
children: [/* @__PURE__ */ r("stop", { stopColor: "#6D28D9" }), /* @__PURE__ */ r("stop", {
|
|
39
|
-
offset: "1",
|
|
40
|
-
stopColor: "#4C1D95"
|
|
41
|
-
})]
|
|
42
|
-
})] }),
|
|
43
|
-
/* @__PURE__ */ r("path", {
|
|
44
|
-
d: o,
|
|
45
|
-
fill: `url(#${m})`
|
|
46
|
-
}),
|
|
47
|
-
/* @__PURE__ */ r("path", {
|
|
48
|
-
d: s,
|
|
49
|
-
fill: `url(#${h})`
|
|
50
|
-
})
|
|
51
|
-
] }) : /* @__PURE__ */ r("path", {
|
|
52
|
-
d: a,
|
|
53
|
-
fill: l === "white" ? "#FFFFFF" : "currentColor"
|
|
54
|
-
})
|
|
55
|
-
});
|
|
56
|
-
}, u = ({ size: a = 40, tone: c = "brand", radius: l = .225, title: u = "Voltro", className: d, style: f }) => {
|
|
57
|
-
let p = t(), m = `viBg-${p}`, h = `viGlow-${p}`, g = `viF-${p}`, _ = `viB-${p}`, v = (64 * l).toFixed(2);
|
|
58
|
-
return /* @__PURE__ */ i("svg", {
|
|
59
|
-
width: a,
|
|
60
|
-
height: a,
|
|
61
|
-
viewBox: "0 0 64 64",
|
|
62
|
-
fill: "none",
|
|
63
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
64
|
-
role: "img",
|
|
65
|
-
"aria-label": u,
|
|
66
|
-
className: e("inline-block shrink-0", d),
|
|
67
|
-
style: f,
|
|
68
|
-
children: [
|
|
69
|
-
/* @__PURE__ */ i("defs", { children: [
|
|
70
|
-
/* @__PURE__ */ r("linearGradient", {
|
|
71
|
-
id: m,
|
|
72
|
-
x1: "0",
|
|
73
|
-
y1: "0",
|
|
74
|
-
x2: "64",
|
|
75
|
-
y2: "64",
|
|
76
|
-
gradientUnits: "userSpaceOnUse",
|
|
77
|
-
children: c === "brand" ? /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ r("stop", { stopColor: "#8B5CFF" }), /* @__PURE__ */ r("stop", {
|
|
78
|
-
offset: "1",
|
|
79
|
-
stopColor: "#6D28D9"
|
|
80
|
-
})] }) : /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ r("stop", { stopColor: "#1B1726" }), /* @__PURE__ */ r("stop", {
|
|
81
|
-
offset: "1",
|
|
82
|
-
stopColor: "#120F1A"
|
|
83
|
-
})] })
|
|
84
|
-
}),
|
|
85
|
-
c === "dark" ? /* @__PURE__ */ i("radialGradient", {
|
|
86
|
-
id: h,
|
|
87
|
-
cx: "0.5",
|
|
88
|
-
cy: "0.46",
|
|
89
|
-
r: "0.5",
|
|
90
|
-
children: [/* @__PURE__ */ r("stop", {
|
|
91
|
-
stopColor: "#7C3AED",
|
|
92
|
-
stopOpacity: "0.55"
|
|
93
|
-
}), /* @__PURE__ */ r("stop", {
|
|
94
|
-
offset: "1",
|
|
95
|
-
stopColor: "#7C3AED",
|
|
96
|
-
stopOpacity: "0"
|
|
97
|
-
})]
|
|
98
|
-
}) : null,
|
|
99
|
-
/* @__PURE__ */ i("linearGradient", {
|
|
100
|
-
id: g,
|
|
101
|
-
x1: "13",
|
|
102
|
-
y1: "5",
|
|
103
|
-
x2: "33",
|
|
104
|
-
y2: "43",
|
|
105
|
-
gradientUnits: "userSpaceOnUse",
|
|
106
|
-
children: [/* @__PURE__ */ r("stop", { stopColor: "#C4A6FF" }), /* @__PURE__ */ r("stop", {
|
|
107
|
-
offset: "1",
|
|
108
|
-
stopColor: "#9D5BFF"
|
|
109
|
-
})]
|
|
110
|
-
}),
|
|
111
|
-
/* @__PURE__ */ i("linearGradient", {
|
|
112
|
-
id: _,
|
|
113
|
-
x1: "22",
|
|
114
|
-
y1: "5",
|
|
115
|
-
x2: "35",
|
|
116
|
-
y2: "43",
|
|
117
|
-
gradientUnits: "userSpaceOnUse",
|
|
118
|
-
children: [/* @__PURE__ */ r("stop", { stopColor: "#A874FF" }), /* @__PURE__ */ r("stop", {
|
|
119
|
-
offset: "1",
|
|
120
|
-
stopColor: "#7C3AED"
|
|
121
|
-
})]
|
|
122
|
-
})
|
|
123
|
-
] }),
|
|
124
|
-
/* @__PURE__ */ r("rect", {
|
|
125
|
-
width: "64",
|
|
126
|
-
height: "64",
|
|
127
|
-
rx: v,
|
|
128
|
-
fill: `url(#${m})`
|
|
129
|
-
}),
|
|
130
|
-
c === "brand" ? /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ r("path", {
|
|
131
|
-
transform: "translate(8 8)",
|
|
132
|
-
d: o,
|
|
133
|
-
fill: "#FFFFFF"
|
|
134
|
-
}), /* @__PURE__ */ r("path", {
|
|
135
|
-
transform: "translate(8 8)",
|
|
136
|
-
d: s,
|
|
137
|
-
fill: "#D7C4FF"
|
|
138
|
-
})] }) : /* @__PURE__ */ i(n, { children: [
|
|
139
|
-
/* @__PURE__ */ r("ellipse", {
|
|
140
|
-
cx: "32",
|
|
141
|
-
cy: "30",
|
|
142
|
-
rx: "26",
|
|
143
|
-
ry: "26",
|
|
144
|
-
fill: `url(#${h})`
|
|
145
|
-
}),
|
|
146
|
-
/* @__PURE__ */ r("path", {
|
|
147
|
-
transform: "translate(8 8)",
|
|
148
|
-
d: o,
|
|
149
|
-
fill: `url(#${g})`
|
|
150
|
-
}),
|
|
151
|
-
/* @__PURE__ */ r("path", {
|
|
152
|
-
transform: "translate(8 8)",
|
|
153
|
-
d: s,
|
|
154
|
-
fill: `url(#${_})`
|
|
155
|
-
})
|
|
156
|
-
] })
|
|
157
|
-
]
|
|
158
|
-
});
|
|
159
|
-
}, d = ({ size: t = 28, markVariant: n = "gradient", label: a = "Voltro", className: o, style: s }) => /* @__PURE__ */ i("span", {
|
|
160
|
-
className: e("inline-flex items-center font-semibold tracking-tight leading-none", o),
|
|
161
|
-
style: {
|
|
162
|
-
gap: t * .28,
|
|
163
|
-
fontSize: t * .74,
|
|
164
|
-
...s
|
|
165
|
-
},
|
|
166
|
-
children: [/* @__PURE__ */ r(l, {
|
|
167
|
-
size: Math.round(t * 1.18),
|
|
168
|
-
variant: n,
|
|
169
|
-
"aria-hidden": !0
|
|
170
|
-
}), /* @__PURE__ */ r("span", { children: a })]
|
|
171
|
-
}), f = {
|
|
172
|
-
full: a,
|
|
173
|
-
front: o,
|
|
174
|
-
back: s
|
|
175
|
-
};
|
|
176
|
-
//#endregion
|
|
177
|
-
export { f as VOLTRO_BOLT_PATH, c as VOLTRO_VIOLET, u as VoltroIcon, l as VoltroMark, d as VoltroWordmark };
|
|
1
|
+
import "./cn.js";
|
|
2
|
+
import { a as e, i as t, n, r, t as i } from "./voltroLogo-CSnSpQhz.js";
|
|
3
|
+
export { i as VOLTRO_BOLT_PATH, n as VOLTRO_VIOLET, r as VoltroIcon, t as VoltroMark, e as VoltroWordmark };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ButtonHTMLAttributes } from 'react';
|
|
2
2
|
import { ClassProp } from 'class-variance-authority/types';
|
|
3
3
|
import { ClassValue } from 'clsx';
|
|
4
|
+
import { ComponentProps } from 'react';
|
|
4
5
|
import { ComponentPropsWithoutRef } from 'react';
|
|
5
6
|
import { ComponentType } from 'react';
|
|
6
7
|
import { CSSProperties } from 'react';
|
|
@@ -40,10 +41,12 @@ declare interface AnimatedNumberProps {
|
|
|
40
41
|
* is immediate (the pre-paint `themeBootScript` handles the first load). */
|
|
41
42
|
export declare const applyTheme: (theme: ThemePreference) => void;
|
|
42
43
|
|
|
43
|
-
export declare const AppShell: ({ brand, nav, right, children, className, LinkComponent, }: AppShellProps) => ReactNode;
|
|
44
|
+
export declare const AppShell: ({ brand, header, nav, right, children, className, LinkComponent, }: AppShellProps) => ReactNode;
|
|
44
45
|
|
|
45
46
|
declare interface AppShellProps {
|
|
46
47
|
readonly brand: ReactNode;
|
|
48
|
+
/** Custom top navigation using the app's own shared header composition. */
|
|
49
|
+
readonly header?: ReactNode;
|
|
47
50
|
readonly nav?: ReadonlyArray<NavLink>;
|
|
48
51
|
readonly right?: ReactNode;
|
|
49
52
|
readonly children: ReactNode;
|
|
@@ -189,7 +192,7 @@ declare interface CodeComparePanelProps {
|
|
|
189
192
|
readonly code?: string;
|
|
190
193
|
/** Shiki language. Triggers syntax highlighting on `code`. */
|
|
191
194
|
readonly lang?: ShikiLang;
|
|
192
|
-
/** Visual treatment — `'muted'`
|
|
195
|
+
/** Visual treatment — `'muted'` uses a neutral border (the "before"),
|
|
193
196
|
* `'highlight'` keeps the full styling + adds a primary border. */
|
|
194
197
|
readonly tone?: 'muted' | 'highlight';
|
|
195
198
|
/** The corner tag. Pass a translated string on a localised page. */
|
|
@@ -317,7 +320,7 @@ declare interface DocShellProps {
|
|
|
317
320
|
readonly LinkComponent?: ComponentType<ShellLinkProps>;
|
|
318
321
|
}
|
|
319
322
|
|
|
320
|
-
export declare const DocsLayout: ({ brand, nav, children, currentPath, topNav, topRight, search, page, LinkComponent, className, labels, footer, sidebarHeader, }: DocsLayoutProps) => ReactNode;
|
|
323
|
+
export declare const DocsLayout: ({ brand, nav, children, currentPath, topNav, topRight, search, page, LinkComponent, className, labels, footer, sidebarHeader, header, intro, sidebar, }: DocsLayoutProps) => ReactNode;
|
|
321
324
|
|
|
322
325
|
/** User-facing strings for the layout's own chrome. Defaults are English
|
|
323
326
|
* so the layout works unconfigured; pass catalog values to localize. */
|
|
@@ -350,6 +353,14 @@ declare interface DocsLayoutProps {
|
|
|
350
353
|
readonly brand: ReactNode;
|
|
351
354
|
readonly nav: ReadonlyArray<DocsNavGroup>;
|
|
352
355
|
readonly children: ReactNode;
|
|
356
|
+
/** Compose the top bar while retaining the layout's mobile navigation control. */
|
|
357
|
+
readonly header?: (controls: {
|
|
358
|
+
readonly menuButton: ReactNode;
|
|
359
|
+
}) => ReactNode;
|
|
360
|
+
/** Full-width introduction above the reading columns. */
|
|
361
|
+
readonly intro?: ReactNode;
|
|
362
|
+
/** Show the desktop section rail. Mobile navigation remains available. */
|
|
363
|
+
readonly sidebar?: boolean;
|
|
353
364
|
/** Current pathname — used to highlight the active nav entry +
|
|
354
365
|
* decide which group opens by default. */
|
|
355
366
|
readonly currentPath?: string;
|
|
@@ -712,7 +723,7 @@ export declare interface PreferenceCookies {
|
|
|
712
723
|
readonly locale?: string;
|
|
713
724
|
}
|
|
714
725
|
|
|
715
|
-
export declare const ProfileMenu: ({ identity, links, languages, currentLanguage, onLanguageChange, logoutUrl, onLogout, signInUrl, labels, }: ProfileMenuProps) => ReactNode;
|
|
726
|
+
export declare const ProfileMenu: ({ identity, links, languages, currentLanguage, onLanguageChange, logoutUrl, onLogout, signInUrl, labels, trigger, }: ProfileMenuProps) => ReactNode;
|
|
716
727
|
|
|
717
728
|
export declare interface ProfileMenuLabels {
|
|
718
729
|
/** Section label for the theme switch. Default `'Theme'`. */
|
|
@@ -747,6 +758,8 @@ export declare interface ProfileMenuLink {
|
|
|
747
758
|
}
|
|
748
759
|
|
|
749
760
|
export declare interface ProfileMenuProps {
|
|
761
|
+
/** Custom accessible trigger; Radix supplies menu state and focus handling. */
|
|
762
|
+
readonly trigger?: ReactNode;
|
|
750
763
|
readonly identity?: {
|
|
751
764
|
readonly name: string;
|
|
752
765
|
readonly sublabel?: string;
|
|
@@ -912,6 +925,61 @@ export declare const SHIKI_LANGS: readonly ["text", "ts", "tsx", "typescript", "
|
|
|
912
925
|
|
|
913
926
|
export declare type ShikiLang = typeof SHIKI_LANGS[number];
|
|
914
927
|
|
|
928
|
+
/** Decorative Voltro contour field. Import `@voltro/ui-shadcn/signal.css`.
|
|
929
|
+
* Static at SSR, with reduced-motion and visibility-aware animation on hydration. */
|
|
930
|
+
export declare function SignalField({ animated, paused, className }: SignalFieldProps): ReactNode;
|
|
931
|
+
|
|
932
|
+
export declare interface SignalFieldProps {
|
|
933
|
+
/** Enable the ambient wave. Supply a visible pause control when enabling it. */
|
|
934
|
+
readonly animated?: boolean;
|
|
935
|
+
readonly paused?: boolean;
|
|
936
|
+
readonly className?: string;
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
/** Compact brand navigation with a keyboard-accessible disclosure and moving marker. */
|
|
940
|
+
export declare function SignalHeader({ brand, links, navigationLabel, menuLabel, menuTitle, menuLinks, utilities, navigationAction, className, sticky }: SignalHeaderProps): ReactNode;
|
|
941
|
+
|
|
942
|
+
/** Secondary header action; the filled Signal CTA remains the page's primary action. */
|
|
943
|
+
export declare function SignalHeaderAction({ children, className, ...props }: ComponentProps<'a'>): ReactNode;
|
|
944
|
+
|
|
945
|
+
export declare interface SignalHeaderProps {
|
|
946
|
+
readonly brand: ReactNode;
|
|
947
|
+
readonly links: readonly SignalNavigationLink[];
|
|
948
|
+
readonly navigationLabel: string;
|
|
949
|
+
readonly menuLabel: string;
|
|
950
|
+
readonly menuTitle: ReactNode;
|
|
951
|
+
readonly menuLinks: readonly SignalNavigationLink[];
|
|
952
|
+
readonly utilities?: ReactNode;
|
|
953
|
+
/** Context navigation, such as the Docs section drawer, stays beside the rail. */
|
|
954
|
+
readonly navigationAction?: ReactNode;
|
|
955
|
+
readonly className?: string;
|
|
956
|
+
/** Keep navigation available while reading; the surface appears after scrolling. */
|
|
957
|
+
readonly sticky?: boolean;
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
export declare interface SignalNavigationLink {
|
|
961
|
+
readonly label: string;
|
|
962
|
+
readonly href: string;
|
|
963
|
+
readonly description?: string;
|
|
964
|
+
readonly current?: boolean;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
/** One appearance/language entry point for public and operating Signal surfaces. */
|
|
968
|
+
export declare function SignalPreferences({ locale, ...props }: SignalPreferencesProps): ReactNode;
|
|
969
|
+
|
|
970
|
+
export declare interface SignalPreferencesProps extends Omit<ProfileMenuProps, 'trigger' | 'labels' | 'languages' | 'currentLanguage'> {
|
|
971
|
+
readonly locale: 'en' | 'de';
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
/** Search is a command trigger, sized to the navigation rail with a compact mobile state. */
|
|
975
|
+
export declare function SignalSearch({ label, onOpen, className }: SignalSearchProps): ReactNode;
|
|
976
|
+
|
|
977
|
+
export declare interface SignalSearchProps {
|
|
978
|
+
readonly label: string;
|
|
979
|
+
readonly onOpen: () => void;
|
|
980
|
+
readonly className?: string;
|
|
981
|
+
}
|
|
982
|
+
|
|
915
983
|
export declare const SiteFooter: ({ brand, tagline, social, columns, bottomLeft, bottomRight, copyrightHolder, socialLabel, LinkComponent, className, }: SiteFooterProps) => ReactNode;
|
|
916
984
|
|
|
917
985
|
export declare interface SiteFooterColumn {
|
|
@@ -1054,6 +1122,9 @@ export declare const TerminalIcon: (p: DocIconProps) => ReactNode;
|
|
|
1054
1122
|
|
|
1055
1123
|
export declare const Textarea: ({ className, ...props }: TextareaHTMLAttributes<HTMLTextAreaElement>) => ReactNode;
|
|
1056
1124
|
|
|
1125
|
+
/** Fired after applyTheme so preference controls in the same document stay in sync. */
|
|
1126
|
+
export declare const THEME_CHANGE_EVENT = "voltro:theme-change";
|
|
1127
|
+
|
|
1057
1128
|
export declare const THEME_COOKIE = "voltro:theme";
|
|
1058
1129
|
|
|
1059
1130
|
/**
|
|
@@ -1170,7 +1241,7 @@ export declare type VoltroMarkVariant = 'gradient' | 'mono' | 'white';
|
|
|
1170
1241
|
* type set in the surrounding font and `currentColor`, so it inherits
|
|
1171
1242
|
* the app's typography and is correct in light + dark automatically.
|
|
1172
1243
|
*/
|
|
1173
|
-
export declare const VoltroWordmark: ({ size, markVariant, label, className, style, }: VoltroWordmarkProps) => ReactNode;
|
|
1244
|
+
export declare const VoltroWordmark: ({ size, markVariant, label, product, productTone, className, style, }: VoltroWordmarkProps) => ReactNode;
|
|
1174
1245
|
|
|
1175
1246
|
export declare interface VoltroWordmarkProps {
|
|
1176
1247
|
/** Mark height in px; the wordmark text scales with it. Default 28. */
|
|
@@ -1178,6 +1249,10 @@ export declare interface VoltroWordmarkProps {
|
|
|
1178
1249
|
readonly markVariant?: VoltroMarkVariant;
|
|
1179
1250
|
/** Wordmark label. Default "Voltro". */
|
|
1180
1251
|
readonly label?: string;
|
|
1252
|
+
/** Product badge beside the shared wordmark, e.g. Framework or Cloud. */
|
|
1253
|
+
readonly product?: ReactNode;
|
|
1254
|
+
/** Warning tone for an operator surface; proportions stay shared. */
|
|
1255
|
+
readonly productTone?: 'brand' | 'warning';
|
|
1181
1256
|
readonly className?: string;
|
|
1182
1257
|
readonly style?: CSSProperties;
|
|
1183
1258
|
}
|