Humuhumu33 commited on
Commit
20ed8b9
·
verified ·
1 Parent(s): 10e7cdb

kappa mirror: ui + q closures (2357 objects, blake3-addressed) - U3 (part 4)

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +3 -0
  2. b/4fc384ba42164fdb46c0d19fca37c4852e73da0b2404056cd9e51ced4890f0d5 +79 -0
  3. b/4fc49102fc08ff74b4a1a845fc4c587d31bfab549b1dd9cc325aa3f104f7eb96 +82 -0
  4. b/4fd97d390f142004475cbacb57a6301ccc4edc583cf04a3c5fab8b75e934aa53 +51 -0
  5. b/50460b42c88ed5246679aa684a67f22aa778f8edacf81bfb35814d205ec2e910 +21 -0
  6. b/5058e4ad8e4c449e4b22ef0bfe5fc609e1452ece6379b2ed7732cd6b70c6eaeb +1 -0
  7. b/50a06cf61ae9f6cbc0bbd72eeaf8a35e612ccb75a6a7788c9c1bdde61bb3dcae +50 -0
  8. b/50c1c41fd37016c99bd594acf5f06134d20eb236ea2a396da6f78b48fee1b776 +51 -0
  9. b/50cc95e131bb26b0837a6bfa44a62aff84fefcc21fb94118b099be12846fb87a +3 -0
  10. b/50e040aba2df77e543dc76ad8758f1ee017949dfb17e670643029cc009c35a00 +1 -0
  11. b/50fbbce888823b4a93479b927633b3186042b64559fab0ac30f75a42037be393 +20 -0
  12. b/5107ffe739414801a168b29ed3cbe27c819c05a36df88e69bbf1bfaf43d72bfc +270 -0
  13. b/514d2338fde41f8ac0d2e8de3ed44977c3e6118e4ee38697aecae792b3f73f74 +7 -0
  14. b/51eb93fec6c55e3e9ab18d2c06df56b95f453710ca4631f5e2810df8fd45ca27 +98 -0
  15. b/52076d8bbcb14f060166e2036765bb67628f7f5f4bfe4ead9ec1b74df02b28b2 +332 -0
  16. b/520bc2750bc02925237cdc2f11386cfd19f1d9771d22452584f16b20491723c9 +51 -0
  17. b/5234cf770796006df1fa5b2bc74cc5d6e8aba99d101004b2f126f6453e50eb45 +67 -0
  18. b/5238d9e68a93d529d853d579f8c538d26c0a3126344f79b5374f2aebcd005a56 +7 -0
  19. b/524501317c8dd4486d4fccfa13d0d72f8c4d67221e5d64e0634b07968d4e976c +0 -0
  20. b/5247fc1f9e640d38b26715d8103ac4980a3ae8dd45fce73f6c3049d67df151f4 +1 -0
  21. b/524bef23a0e591c09d5cf635fea5d4f6f97bba0ae1bfa764245f17059e96a193 +11 -0
  22. b/52502b76a884030e15afe3f560d0527fbc11da53af70aa83ee62a60dd9b3baa3 +42 -0
  23. b/527375202f7b72eb54ef192638315e78c7054efe29dc903f3cfadd7231a0d86f +20 -0
  24. b/52ec93844587582a17d7dfe1ad77fe1d8b8e10d35c5e3fc1b4c54491cb01ce06 +44 -0
  25. b/52f669be209dfa1b25bc7a2e3402177f9b496770ef0e9dc6e8061504129d34ac +117 -0
  26. b/530fb93805e1100d96fa73fc0797aa069182f71d6a62e875b86225dad311c160 +21 -0
  27. b/538212a3e366eec61cce645c7d903a4f3846c3d670e82dcc2da803e0a45959d1 +179 -0
  28. b/538eea94d0170957a83dbd5a3a57c660b82e885539b74f934e633c22b0b49df2 +0 -0
  29. b/5399ad39ce209e2d33ddec80da4271ac5a9cf98a199ce4ed51be05e852a9164c +89 -0
  30. b/53b4184761901acdb37e8de56796199ca58ebc795841172e7427da3dc08c534c +59 -0
  31. b/53e07d243c06c652b1ac5e31de83b23b43311fa66317635cae17115b70c659a3 +9 -0
  32. b/53eee6966441853930a8c119fcf1d47fdc9564852687b18a89bb13b617e48eea +91 -0
  33. b/54164ea7f3832958672228a77becb1b1774aba0e3a52f4ed593c40d4c5135c3b +20 -0
  34. b/54506a6d2e6a82b854ec22da523f80d02692038cd8a951d1bfd2527479ae88c2 +74 -0
  35. b/546ecee00f0c0cc7c342280e9558661a001cf622c6a6951b05edbc87f3a81197 +404 -0
  36. b/547a3d20ab71138e1ee98071e4bb37f9227ff8244be284088f69f4087ddb504f +51 -0
  37. b/54970b772dc9e6264cacd3fc1f09c437f382f76eadb80b20a979e3827fa05356 +55 -0
  38. b/54c6a21438a4975e5f47069f82dd0f528ef346e925d3962cf0aac956f8503b3f +16 -0
  39. b/54cfad210df8bfd36c207bfd664cbfc5512099125b9deb2783945113ace861b8 +7 -0
  40. b/5517fcd7d12df355ddb31146a22d1b76ed364761d181459d0c73f591807d094c +72 -0
  41. b/55232fc89acadff912e945fd85c92d9cb538d80eefc370c09f5717dc45221fd1 +22 -0
  42. b/555d862d7a4b2dddd12b951c4eddb1e023e46d19f3c181964909b8c12ebcbcd0 +1 -0
  43. b/55c3ca8e839517608c18ba0c41513311ba22cb03d06cd417837b5207f98c1f13 +184 -0
  44. b/55d2c61c568c176f395c9ea774868c740f49c08534f6387756bf9204d4beb53f +20 -0
  45. b/55dd5507b69268db332c46f357a355703f5ac6da3cb86a70918ac69c7eeecf1b +73 -0
  46. b/55f7f3e71c56ec17f08356720151daded82613f589ff568dd2174a7a4a0e0f8f +1 -0
  47. b/5605ca412d6e945038dca47f16e05e5b544cdd3bc360a531a35226241ccd2c9f +20 -0
  48. b/5608426c62550cd0a77afd59a228aa4c86ab5bc8dadf3aca1506a2a5f75e3f6b +1 -0
  49. b/560c8fd7423d640804fd2f3eaa05a94f2a8595db6866fde0b52e60627a193bf3 +1 -0
  50. b/56234b2d05618f547efac1e650343fef712d48544d361d66b9eac296229c4143 +171 -0
.gitattributes CHANGED
@@ -101,3 +101,6 @@ b/2afa619b30ce3b0f801a33d1061dc6f4385ca8cfb418a3f9afb4c6ffdc02c312 filter=lfs di
101
  b/3e1fb00e818d7ad9c0d554ba97fcb498188d13c9e8bea464efaf480f04e45ac6 filter=lfs diff=lfs merge=lfs -text
102
  b/49f2c8119a245bceba252d9a2335f836bcc926c3aea52e3c1ebc8f9bfc9730e8 filter=lfs diff=lfs merge=lfs -text
103
  b/4ad638420430db1bdd3051864a434b18e6fbc40cd6feb91ec48c873b6c23e82c filter=lfs diff=lfs merge=lfs -text
 
 
 
 
101
  b/3e1fb00e818d7ad9c0d554ba97fcb498188d13c9e8bea464efaf480f04e45ac6 filter=lfs diff=lfs merge=lfs -text
102
  b/49f2c8119a245bceba252d9a2335f836bcc926c3aea52e3c1ebc8f9bfc9730e8 filter=lfs diff=lfs merge=lfs -text
103
  b/4ad638420430db1bdd3051864a434b18e6fbc40cd6feb91ec48c873b6c23e82c filter=lfs diff=lfs merge=lfs -text
104
+ b/50cc95e131bb26b0837a6bfa44a62aff84fefcc21fb94118b099be12846fb87a filter=lfs diff=lfs merge=lfs -text
105
+ b/6f89df7ac143f7be87409587aa86fdf9640c28f743871f15954544dda360c16c filter=lfs diff=lfs merge=lfs -text
106
+ b/765a9f4b7f4975d323b6d2b03fc85c6240e533f89188b5c9c3712c774efd3a29 filter=lfs diff=lfs merge=lfs -text
b/4fc384ba42164fdb46c0d19fca37c4852e73da0b2404056cd9e51ced4890f0d5 ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // BitNet TQ2_0 fidelity witness — both directions, BIT-FOR-BIT vs ggml (the real
2
+ // dequantize_row_tq2_0 / quantize_row_tq2_0_ref in the llama.cpp fork).
3
+ // • dequant: JS oracle (gguf-forge-dequant) vs iq-ref.exe to_float
4
+ // • quant: JS quantizer (gguf-forge-quantize) vs quant-ref.exe ggml_quantize_chunk
5
+ // • round-trip: dequant(quant(x)) is ternary·d, idempotent under re-quant
6
+ // TQ2_0 = ggml type 35, block 66 B / 256 elems (qs[64] + f16 d). No tolerance —
7
+ // quant/dequant are deterministic. Both .exe via execFileSync + MinGW PATH (DLLs).
8
+ import { execFileSync } from "node:child_process";
9
+ import { existsSync } from "node:fs";
10
+ import assert from "node:assert";
11
+ import { GGML, dequantizeExact, typeByteLen } from "./gguf-forge-dequant.mjs";
12
+ import { quantizeRowTq2_0 } from "./gguf-forge-quantize.mjs";
13
+ import { f16ToF32 } from "../qvac-ingest.mjs";
14
+
15
+ const QV = "C:/Users/pavel/Desktop/qvac-fabric-llm.cpp-master/qvac-fabric-llm.cpp-master";
16
+ const IQREF = `${QV}/iq-ref.exe`, QREF = `${QV}/quant-ref.exe`;
17
+ const MINGW = "C:/Users/pavel/AppData/Local/Microsoft/WinGet/Packages/BrechtSanders.WinLibs.POSIX.UCRT_Microsoft.Winget.Source_8wekyb3d8bbwe/mingw64/bin";
18
+ const ENV = { env: { ...process.env, PATH: `${MINGW};${process.env.PATH}` }, maxBuffer: 1 << 26 };
19
+ const TQ2_0 = 35;
20
+
21
+ function mulberry32(a) { return () => { a |= 0; a = (a + 0x6d2b79f5) | 0; let t = Math.imul(a ^ (a >>> 15), 1 | a); t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; return ((t ^ (t >>> 14)) >>> 0) / 4294967296; }; }
22
+ const f32bits = (f) => { const b = new ArrayBuffer(4); new Float32Array(b)[0] = f; return new Uint32Array(b)[0]; };
23
+ const hexf = (arr) => Array.from(arr, (v) => f32bits(v).toString(16).padStart(8, "0")).join(" ");
24
+
25
+ // ggml dequant: block bytes hex → float32 bits
26
+ function refDequant(n, raw) {
27
+ const out = execFileSync(IQREF, [String(TQ2_0), String(n), Buffer.from(raw).toString("hex")], ENV).toString().trim();
28
+ return out.split(/\s+/).map((h) => parseInt(h, 16) >>> 0);
29
+ }
30
+ // ggml quant: n f32 (hex, stdin) → quant block bytes hex
31
+ function refQuant(n, x) {
32
+ const out = execFileSync(QREF, [String(TQ2_0), String(n)], { ...ENV, input: hexf(x) + "\n" }).toString().trim();
33
+ return out.split(/\s+/).map((h) => parseInt(h, 16));
34
+ }
35
+
36
+ let pass = 0, fail = 0;
37
+ const ok = (c, m) => { if (c) { console.log(` ok ${m}`); pass++; } else { console.log(` XX ${m}`); fail++; } };
38
+ assert(existsSync(IQREF), "iq-ref.exe missing"); assert(existsSync(QREF), "quant-ref.exe missing");
39
+
40
+ // ── 1. DEQUANT bit-exact (random qs, d pinned 1.0 at offset 64) ──
41
+ {
42
+ const nb = 4, n = 256 * nb, raw = new Uint8Array(66 * nb), rnd = mulberry32(0xb17);
43
+ for (let b = 0; b < nb; b++) {
44
+ for (let i = 0; i < 64; i++) raw[b * 66 + i] = (rnd() * 256) | 0;
45
+ raw[b * 66 + 64] = 0x00; raw[b * 66 + 65] = 0x3c; // d = 1.0
46
+ }
47
+ assert.equal(typeByteLen(TQ2_0, n), 66 * nb, "typeByteLen");
48
+ const ref = refDequant(n, raw), js = dequantizeExact(TQ2_0, raw, n);
49
+ let mism = -1; for (let i = 0; i < n; i++) if (f32bits(js[i]) !== ref[i]) { mism = i; break; }
50
+ ok(mism < 0, `dequant bit-exact vs ggml to_float (${n} elems)${mism < 0 ? "" : ` first@${mism} js=${js[mism]} ref=${ref[mism]}`}`);
51
+ }
52
+
53
+ // ── 2. QUANT bit-exact (random f32, varied amax → varied f16 d) ──
54
+ {
55
+ const nb = 4, n = 256 * nb, x = new Float32Array(n), rnd = mulberry32(0x7c2);
56
+ for (let i = 0; i < n; i++) x[i] = (rnd() * 2 - 1) * (1 + (i % 7)); // spread of magnitudes
57
+ const ref = refQuant(n, x), js = quantizeRowTq2_0(x, n);
58
+ assert.equal(js.length, 66 * nb, "quant byte length");
59
+ let mism = -1; for (let i = 0; i < js.length; i++) if (js[i] !== ref[i]) { mism = i; break; }
60
+ ok(mism < 0, `quant bit-exact vs ggml quantize_chunk (${js.length} bytes)${mism < 0 ? "" : ` first@${mism} js=${js[mism]} ref=${ref[mism]}`}`);
61
+ }
62
+
63
+ // ── 3. ROUND-TRIP: dequant(quant(x)) is ternary·d, and re-quant is idempotent ──
64
+ {
65
+ const n = 256, x = new Float32Array(n), rnd = mulberry32(0x3ee);
66
+ for (let i = 0; i < n; i++) x[i] = (rnd() * 2 - 1) * 3.5;
67
+ const q1 = quantizeRowTq2_0(x, n);
68
+ const y = dequantizeExact(TQ2_0, q1, n);
69
+ // d actually stored = f16(amax); dequant values are exactly {-1,0,1}·d_f16.
70
+ const d = f16ToF32(new DataView(q1.buffer).getUint16(64, true));
71
+ let ternary = true; for (let i = 0; i < n; i++) { const r = y[i] / d; if (Math.abs(Math.round(r) - r) > 1e-6 || Math.abs(r) > 1.0001) ternary = false; }
72
+ ok(ternary, "round-trip: every dequant value ∈ {-d, 0, +d}");
73
+ const q2 = quantizeRowTq2_0(y, n);
74
+ let idem = true; for (let i = 0; i < q1.length; i++) if (q1[i] !== q2[i]) idem = false;
75
+ ok(idem, "round-trip: re-quant(dequant(q)) == q (idempotent)");
76
+ }
77
+
78
+ console.log(`\n${pass} passed, ${fail} failed`);
79
+ process.exit(fail ? 1 : 0);
b/4fc49102fc08ff74b4a1a845fc4c587d31bfab549b1dd9cc325aa3f104f7eb96 ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client"
2
+
3
+ import { TrendingUp } from "lucide-react"
4
+ import { PolarAngleAxis, PolarGrid, Radar, RadarChart } from "recharts"
5
+
6
+ import {
7
+ Card,
8
+ CardContent,
9
+ CardDescription,
10
+ CardFooter,
11
+ CardHeader,
12
+ CardTitle,
13
+ } from "@/registry/new-york-v4/ui/card"
14
+ import {
15
+ ChartContainer,
16
+ ChartTooltip,
17
+ ChartTooltipContent,
18
+ type ChartConfig,
19
+ } from "@/registry/new-york-v4/ui/chart"
20
+
21
+ export const description = "A radar chart with a grid and circle fill"
22
+
23
+ const chartData = [
24
+ { month: "January", desktop: 186 },
25
+ { month: "February", desktop: 305 },
26
+ { month: "March", desktop: 237 },
27
+ { month: "April", desktop: 203 },
28
+ { month: "May", desktop: 209 },
29
+ { month: "June", desktop: 214 },
30
+ ]
31
+
32
+ const chartConfig = {
33
+ desktop: {
34
+ label: "Desktop",
35
+ color: "var(--chart-1)",
36
+ },
37
+ } satisfies ChartConfig
38
+
39
+ export function ChartRadarGridCircleNoLines() {
40
+ return (
41
+ <Card>
42
+ <CardHeader className="items-center pb-4">
43
+ <CardTitle>Radar Chart - Grid Circle - No lines</CardTitle>
44
+ <CardDescription>
45
+ Showing total visitors for the last 6 months
46
+ </CardDescription>
47
+ </CardHeader>
48
+ <CardContent className="pb-0">
49
+ <ChartContainer
50
+ config={chartConfig}
51
+ className="mx-auto aspect-square max-h-[250px]"
52
+ >
53
+ <RadarChart data={chartData}>
54
+ <ChartTooltip
55
+ cursor={false}
56
+ content={<ChartTooltipContent hideLabel />}
57
+ />
58
+ <PolarGrid gridType="circle" radialLines={false} />
59
+ <PolarAngleAxis dataKey="month" />
60
+ <Radar
61
+ dataKey="desktop"
62
+ fill="var(--color-desktop)"
63
+ fillOpacity={0.6}
64
+ dot={{
65
+ r: 4,
66
+ fillOpacity: 1,
67
+ }}
68
+ />
69
+ </RadarChart>
70
+ </ChartContainer>
71
+ </CardContent>
72
+ <CardFooter className="flex-col gap-2 text-sm">
73
+ <div className="flex items-center gap-2 leading-none font-medium">
74
+ Trending up by 5.2% this month <TrendingUp className="h-4 w-4" />
75
+ </div>
76
+ <div className="flex items-center gap-2 leading-none text-muted-foreground">
77
+ January - June 2024
78
+ </div>
79
+ </CardFooter>
80
+ </Card>
81
+ )
82
+ }
b/4fd97d390f142004475cbacb57a6301ccc4edc583cf04a3c5fab8b75e934aa53 ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client";var fr=Object.defineProperty;var Pe=(e,t)=>{for(var a in t)fr(e,a,{get:t[a],enumerable:!0})};var Ae,cr={lang:void 0,message:void 0,abortEarly:void 0,abortPipeEarly:void 0};function za(e){return!e&&!Ae?cr:{lang:e?.lang??Ae?.lang,message:e?.message,abortEarly:e?.abortEarly??Ae?.abortEarly,abortPipeEarly:e?.abortPipeEarly??Ae?.abortPipeEarly}}var pr;function mr(e){return pr?.get(e)}var hr;function xr(e){return hr?.get(e)}var gr;function yr(e,t){return gr?.get(e)?.get(t)}function Lr(e){let t=typeof e;return t==="string"?`"${e}"`:t==="number"||t==="bigint"||t==="boolean"?`${e}`:t==="object"||t==="function"?(e&&Object.getPrototypeOf(e)?.constructor?.name)??"null":t}function re(e,t,a,r,o){let s=o&&"input"in o?o.input:a.value,u=o?.expected??e.expects??null,l=o?.received??Lr(s),n={kind:e.kind,type:e.type,input:s,expected:u,received:l,message:`Invalid ${t}: ${u?`Expected ${u} but r`:"R"}eceived ${l}`,requirement:e.requirement,path:o?.path,issues:o?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},i=e.kind==="schema",d=o?.message??e.message??yr(e.reference,n.lang)??(i?xr(n.lang):null)??r.message??mr(n.lang);d!==void 0&&(n.message=typeof d=="function"?d(n):d),i&&(a.typed=!1),a.issues?a.issues.push(n):a.issues=[n]}var Na=new WeakMap;function ce(e){let t=Na.get(e);return t||(t={version:1,vendor:"valibot",validate(a){return e["~run"]({value:a},za())}},Na.set(e,t)),t}function Qe(e,t){return{kind:"validation",type:"check",reference:Qe,async:!1,expects:null,requirement:e,message:t,"~run"(a,r){return a.typed&&!this.requirement(a.value)&&re(this,"input",a,r),a}}}function ea(e,t){return{kind:"validation",type:"min_length",reference:ea,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(a,r){return a.typed&&a.value.length<this.requirement&&re(this,"length",a,r,{received:`${a.value.length}`}),a}}}function Ir(e,t,a){return typeof e.fallback=="function"?e.fallback(t,a):e.fallback}function aa(e,t,a){return typeof e.default=="function"?e.default(t,a):e.default}function ta(e,t){return{kind:"schema",type:"array",reference:ta,expects:"Array",async:!1,item:e,message:t,get"~standard"(){return ce(this)},"~run"(a,r){let o=a.value;if(Array.isArray(o)){a.typed=!0,a.value=[];for(let s=0;s<o.length;s++){let u=o[s],l=this.item["~run"]({value:u},r);if(l.issues){let n={type:"array",origin:"value",input:o,key:s,value:u};for(let i of l.issues)i.path?i.path.unshift(n):i.path=[n],a.issues?.push(i);if(a.issues||(a.issues=l.issues),r.abortEarly){a.typed=!1;break}}l.typed||(a.typed=!1),a.value.push(l.value)}}else re(this,"type",a,r);return a}}}function ra(e){return{kind:"schema",type:"boolean",reference:ra,expects:"boolean",async:!1,message:e,get"~standard"(){return ce(this)},"~run"(t,a){return typeof t.value=="boolean"?t.typed=!0:re(this,"type",t,a),t}}}function oa(e,t){return{kind:"schema",type:"object",reference:oa,expects:"Object",async:!1,entries:e,message:t,get"~standard"(){return ce(this)},"~run"(a,r){let o=a.value;if(o&&typeof o=="object"){a.typed=!0,a.value={};for(let s in this.entries){let u=this.entries[s];if(s in o||(u.type==="exact_optional"||u.type==="optional"||u.type==="nullish")&&u.default!==void 0){let l=s in o?o[s]:aa(u),n=u["~run"]({value:l},r);if(n.issues){let i={type:"object",origin:"value",input:o,key:s,value:l};for(let d of n.issues)d.path?d.path.unshift(i):d.path=[i],a.issues?.push(d);if(a.issues||(a.issues=n.issues),r.abortEarly){a.typed=!1;break}}n.typed||(a.typed=!1),a.value[s]=n.value}else if(u.fallback!==void 0)a.value[s]=Ir(u);else if(u.type!=="exact_optional"&&u.type!=="optional"&&u.type!=="nullish"&&(re(this,"key",a,r,{input:void 0,expected:`"${s}"`,path:[{type:"object",origin:"key",input:o,key:s,value:o[s]}]}),r.abortEarly))break}}else re(this,"type",a,r);return a}}}function sa(e){return{kind:"schema",type:"string",reference:sa,expects:"string",async:!1,message:e,get"~standard"(){return ce(this)},"~run"(t,a){return typeof t.value=="string"?t.typed=!0:re(this,"type",t,a),t}}}function Ga(...e){return{...e[0],pipe:e,get"~standard"(){return ce(this)},"~run"(t,a){for(let r of e)if(r.kind!=="metadata"){if(t.issues&&(r.kind==="schema"||r.kind==="transformation")){t.typed=!1;break}(!t.issues||!a.abortEarly&&!a.abortPipeEarly)&&(t=r["~run"](t,a))}return t}}}async function Va(e,t,a){let r=await e["~run"]({value:t},za(a));return{typed:r.typed,success:!r.issues,output:r.value,issues:r.issues}}import{useCallback as vr,useEffect as Ka,useLayoutEffect as $a,useMemo as Re,useReducer as Cr,useRef as br}from"react";import{jsx as kr}from"react/jsx-runtime";var wr="react";function da(){return Math.random().toString(36).slice(2)}var oe;function ja(e){oe=e}var de;function A(e){let t=new Set;return{get value(){return oe&&(t.add(oe),oe[1].add(t)),e},set value(a){if(a!==e){e=a;let r=[];for(let o of t)de?de.add(o):r.push(o),o[1].delete(t);t.clear();for(let o of r)o[0]()}}}}var ua=0;function me(e){ua++,de||(de=new Set);try{return e()}finally{if(ua--,ua===0){let t=de;de=void 0;for(let a of t)a[0]()}}}function J(e){let t=oe;oe=void 0;try{return e()}finally{oe=t}}function N(e,t,a,r,o=!1){if(wr==="qwik"&&t.type==="lazy"||t.type==="object_with_rest"||t.type==="record"||t.type==="tuple_with_rest"||t.type==="promise")throw new Error(`"${t.type}" schema is not supported`);if(t.type==="lazy")N(e,t.getter(void 0),a,r,o);else if(t.type==="exact_optional"||t.type==="nullable"||t.type==="nullish"||t.type==="optional"||t.type==="undefinedable")N(e,t.wrapped,a===void 0?aa(t):a,r,!0);else if(t.type==="non_nullable"||t.type==="non_nullish"||t.type==="non_optional")N(e,t.wrapped,a,r);else if(t.type==="intersect"||t.type==="union"||t.type==="variant")for(let s of t.options)N(e,s,a,r,o);else{e.schema=t,e.name=JSON.stringify(r);let s=[];if(e.initialElements=s,e.elements=s,e.errors=A(null),e.isTouched=A(!1),e.isDirty=A(!1),t.type==="array"||t.type==="loose_tuple"||t.type==="strict_tuple"||t.type==="tuple"){if(e.kind&&e.kind!=="array")throw new Error(`Store initialized as "${e.kind}" cannot be reinitialized as "array"`);if(e.kind="array",e.kind==="array"){if(e.children??=[],t.type==="array"){if(a)for(let n=0;n<a.length;n++)e.children[n]={},r.push(n),N(e.children[n],t.item,a[n],r),r.pop()}else for(let n=0;n<t.items.length;n++)e.children[n]={},r.push(n),N(e.children[n],t.items[n],a?.[n],r),r.pop();let u=o&&a==null?a:!0;e.initialInput=A(u),e.startInput=A(u),e.input=A(u);let l=e.children.map(da);e.initialItems=A(l),e.startItems=A(l),e.items=A(l)}}else if(t.type==="loose_object"||t.type==="object"||t.type==="strict_object"){if(e.kind&&e.kind!=="object")throw new Error(`Store initialized as "${e.kind}" cannot be reinitialized as "object"`);if(e.kind="object",e.kind==="object"){e.children??={};for(let l in t.entries)e.children[l]??={},r.push(l),N(e.children[l],t.entries[l],a?.[l],r),r.pop();let u=o&&a==null?a:!0;e.initialInput=A(u),e.startInput=A(u),e.input=A(u)}}else{if(e.kind&&e.kind!=="value")throw new Error(`Store initialized as "${e.kind}" cannot be reinitialized as "value"`);e.kind="value",e.kind==="value"&&(e.initialInput=A(a),e.startInput=A(a),e.input=A(a))}}}function j(e,t){if(e[t].value)return!0;if(e.kind==="array"){for(let a=0;a<e.items.value.length;a++)if(j(e.children[a],t))return!0;return!1}if(e.kind=="object"){for(let a in e.children)if(j(e.children[a],t))return!0;return!1}return!1}function pe(e){if(e.kind==="array"){if(e.input.value){let t=[];for(let a=0;a<e.items.value.length;a++)t[a]=pe(e.children[a]);return t}return e.input.value}if(e.kind==="object"){if(e.input.value){let t={};for(let a in e.children)t[a]=pe(e.children[a]);return t}return e.input.value}return e.input.value}function Sr(e,t){if(e.options&&e.multiple)return[...e.options].filter(a=>a.selected&&!a.disabled).map(a=>a.value);if(e.type==="checkbox"){let a=document.getElementsByName(e.name);return a.length>1?[...a].filter(r=>r.checked).map(r=>r.value):e.checked}return e.type==="radio"?e.checked?e.value:J(()=>pe(t)):e.type==="file"?e.multiple?[...e.files]:e.files[0]:e.value}function Ja(e,t){let a=e;for(let r of t)a=a.children[r];return a}function la(e,t,a){me(()=>{if(e.kind==="array"){e[t].value=a;for(let r=0;r<J(()=>e.items.value).length;r++)la(e.children[r],t,a)}else if(e.kind=="object")for(let r in e.children)la(e.children[r],t,a);else e[t].value=a})}function na(e,t){if(e.isTouched.value=!0,e.kind==="array"){let a=t??[],r=e.items.value;if(a.length<r.length)e.items.value=r.slice(0,a.length);else if(a.length>r.length){if(a.length>e.children.length){let o=JSON.parse(e.name);for(let s=e.children.length;s<a.length;s++)e.children[s]={},o.push(s),N(e.children[s],e.schema.item,a[s],o),o.pop()}e.items.value=[...r,...a.slice(r.length).map(da)]}for(let o=0;o<a.length;o++)na(e.children[o],a[o]);e.input.value=t==null?t:!0,e.isDirty.value=e.startInput.value!==e.input.value||e.startItems.value.length!==e.items.value.length}else if(e.kind==="object"){for(let a in e.children)na(e.children[a],t?.[a]);e.input.value=t==null?t:!0,e.isDirty.value=e.startInput.value!==e.input.value}else{e.input.value=t;let a=e.startInput.value;e.isDirty.value=a!==t&&(a!=null||t!==""&&!Number.isNaN(t))}}function Xa(e,t,a){me(()=>{J(()=>{let r=e;for(let o=0;o<t.length;o++)r=r.children[t[o]],o<t.length-1&&(r.input.value=!0);na(r,a)})})}function ia(e,t){me(()=>{if(e.kind==="array"){e.input.value=t==null?t:!0;let a=t??[];if(a.length>e.children.length){let r=JSON.parse(e.name);for(let o=e.children.length;o<a.length;o++)e.children[o]={},r.push(o),N(e.children[o],e.schema.item,a[o],r),r.pop()}e.initialItems.value=a.map(da);for(let r=0;r<e.children.length;r++)ia(e.children[r],a[r])}else if(e.kind==="object"){e.input.value=t==null?t:!0;for(let a in e.children)ia(e.children[a],t?.[a])}else e.initialInput.value=t})}function De(e,t){if(t(e),e.kind==="array")for(let a=0;a<J(()=>e.items.value).length;a++)De(e.children[a],t);else if(e.kind==="object")for(let a in e.children)De(e.children[a],t)}function Pr(e,t){let a={};return N(a,e.schema,e.initialInput,[]),a.validators=0,a.validate=e.validate??"submit",a.revalidate=e.revalidate??"input",a.parse=t,a.isSubmitting=A(!1),a.isSubmitted=A(!1),a.isValidating=A(!1),a}async function Me(e,t){e.validators++,e.isValidating.value=!0;let a=await e.parse(J(()=>pe(e))),r,o;if(a.issues){o={};for(let u of a.issues)if(u.path){let l=[];for(let d of u.path){let f=d.key,x=typeof f,g=d.type;if(x!=="string"&&x!=="number"||g==="map"||g==="set")break;l.push(f)}let n=JSON.stringify(l),i=o[n];i?i.push(u.message):o[n]=[u.message]}else r?r.push(u.message):r=[u.message]}let s=t?.shouldFocus??!1;return me(()=>{De(e,u=>{if(u.name==="[]")u.errors.value=r??null;else{let l=o?.[u.name]??null;u.errors.value=l,s&&l&&(u.elements[0]?.focus(),s=!1)}}),e.validators--,e.isValidating.value=e.validators>0}),a}function ie(e,t,a){a===(e.validate==="initial"||(e.validate==="submit"?J(()=>e.isSubmitted.value):J(()=>j(t,"errors")))?e.revalidate:e.validate)&&Me(e)}var he="~internal";function Ar(e,t){return async a=>{a?.preventDefault();let r=e[he];r.isSubmitted.value=!0,r.isSubmitting.value=!0;try{let o=await Me(r,{shouldFocus:!0});o.success&&await t(o.output,a)}catch(o){r.errors.value=[o&&typeof o=="object"&&"message"in o&&typeof o.message=="string"?o.message:"An unknown error has occurred."]}finally{r.isSubmitting.value=!1}}}function Rr(e,t){return Ar(e,t)}function Za(e,t){me(()=>{J(()=>{let a=e[he],r=t?.path?Ja(a,t.path):a;t&&"initialInput"in t&&ia(r,t.initialInput),De(r,o=>{if(o.elements=o.initialElements,t?.keepErrors||(o.errors.value=null),t?.keepTouched||(o.isTouched.value=!1),o.startInput.value=o.initialInput.value,t?.keepInput||(o.input.value=o.initialInput.value),o.kind==="array")o.startItems.value=o.initialItems.value,(!t?.keepInput||o.startItems.value.length===o.items.value.length)&&(o.items.value=o.initialItems.value),o.isDirty.value=o.startInput.value!==o.input.value||o.startItems.value!==o.items.value;else if(o.kind==="object")o.isDirty.value=o.startInput.value!==o.input.value;else{let s=o.startInput.value,u=o.input.value;o.isDirty.value=s!==u&&(s!=null||u!==""&&!Number.isNaN(u));for(let l of o.elements)l.type==="file"&&(l.value="")}}),t?.path||(t?.keepSubmitted||(a.isSubmitted.value=!1),a.validate==="initial"&&Me(a))})})}function Ya(){let[,e]=Cr(o=>o+1,0),t=Re(()=>[e,new Set],[]),a=vr(()=>{for(let o of t[1])o.delete(t)},[t]);a(),ja(t),$a(()=>ja(void 0));let r=br(null);Ka(()=>(r.current&&(clearTimeout(r.current),r.current=null),()=>{r.current=setTimeout(a)}),[a])}function Dr(e,t){Ya();let a=e[he],r=Ja(a,t.path);return Ka(()=>()=>{r.elements=r.elements.filter(o=>o.isConnected)},[r]),Re(()=>({path:t.path,get input(){return pe(r)},get errors(){return r.errors.value},get isTouched(){return j(r,"isTouched")},get isDirty(){return j(r,"isDirty")},get isValid(){return!j(r,"errors")},onChange(o){Xa(a,t.path,o),ie(a,r,"input"),ie(a,r,"change")},props:{name:r.name,autoFocus:!!r.errors.value,ref(o){o&&r.elements.push(o)},onFocus(){la(r,"isTouched",!0),ie(a,r,"touch")},onChange(o){Xa(a,t.path,Sr(o.currentTarget,r)),ie(a,r,"input"),ie(a,r,"change")},onBlur(){ie(a,r,"blur")}}}),[a,r])}function Qa(e){Ya();let t=Re(()=>Pr(e,a=>Va(e.schema,a)),[]);return $a(()=>{e.validate==="initial"&&Me(t)},[]),Re(()=>({[he]:t,get isSubmitting(){return t.isSubmitting.value},get isSubmitted(){return t.isSubmitted.value},get isValidating(){return t.isValidating.value},get isTouched(){return j(t,"isTouched")},get isDirty(){return j(t,"isDirty")},get isValid(){return!j(t,"errors")},get errors(){return t.errors.value}}),[t])}function fa({of:e,path:t,children:a}){return a(Dr(e,{path:t}))}function et({of:e,onSubmit:t,...a}){return kr("form",{...a,noValidate:!0,ref:r=>{r&&(e[he].element=r)},onSubmit:Rr(e,t)})}import xe from"react";import Rs from"react-dom";function Mr(e){if(!e||typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",t.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}var Ds=Array(12).fill(0);var ca=1,pa=class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let a=this.subscribers.indexOf(t);this.subscribers.splice(a,1)}),this.publish=t=>{this.subscribers.forEach(a=>a(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var a;let{message:r,...o}=t,s=typeof t?.id=="number"||((a=t.id)==null?void 0:a.length)>0?t.id:ca++,u=this.toasts.find(n=>n.id===s),l=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(s)&&this.dismissedToasts.delete(s),u?this.toasts=this.toasts.map(n=>n.id===s?(this.publish({...n,...t,id:s,title:r}),{...n,...t,id:s,dismissible:l,title:r}):n):this.addToast({title:r,...o,dismissible:l,id:s}),s},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(a=>a({id:t,dismiss:!0})))):this.toasts.forEach(a=>{this.subscribers.forEach(r=>r({id:a.id,dismiss:!0}))}),t),this.message=(t,a)=>this.create({...a,message:t}),this.error=(t,a)=>this.create({...a,message:t,type:"error"}),this.success=(t,a)=>this.create({...a,type:"success",message:t}),this.info=(t,a)=>this.create({...a,type:"info",message:t}),this.warning=(t,a)=>this.create({...a,type:"warning",message:t}),this.loading=(t,a)=>this.create({...a,type:"loading",message:t}),this.promise=(t,a)=>{if(!a)return;let r;a.loading!==void 0&&(r=this.create({...a,promise:t,type:"loading",message:a.loading,description:typeof a.description!="function"?a.description:void 0}));let o=Promise.resolve(t instanceof Function?t():t),s=r!==void 0,u,l=o.then(async i=>{if(u=["resolve",i],xe.isValidElement(i))s=!1,this.create({id:r,type:"default",message:i});else if(Tr(i)&&!i.ok){s=!1;let f=typeof a.error=="function"?await a.error(`HTTP error! status: ${i.status}`):a.error,x=typeof a.description=="function"?await a.description(`HTTP error! status: ${i.status}`):a.description,L=typeof f=="object"&&!xe.isValidElement(f)?f:{message:f};this.create({id:r,type:"error",description:x,...L})}else if(i instanceof Error){s=!1;let f=typeof a.error=="function"?await a.error(i):a.error,x=typeof a.description=="function"?await a.description(i):a.description,L=typeof f=="object"&&!xe.isValidElement(f)?f:{message:f};this.create({id:r,type:"error",description:x,...L})}else if(a.success!==void 0){s=!1;let f=typeof a.success=="function"?await a.success(i):a.success,x=typeof a.description=="function"?await a.description(i):a.description,L=typeof f=="object"&&!xe.isValidElement(f)?f:{message:f};this.create({id:r,type:"success",description:x,...L})}}).catch(async i=>{if(u=["reject",i],a.error!==void 0){s=!1;let d=typeof a.error=="function"?await a.error(i):a.error,f=typeof a.description=="function"?await a.description(i):a.description,g=typeof d=="object"&&!xe.isValidElement(d)?d:{message:d};this.create({id:r,type:"error",description:f,...g})}}).finally(()=>{s&&(this.dismiss(r),r=void 0),a.finally==null||a.finally.call(a)}),n=()=>new Promise((i,d)=>l.then(()=>u[0]==="reject"?d(u[1]):i(u[1])).catch(d));return typeof r!="string"&&typeof r!="number"?{unwrap:n}:Object.assign(r,{unwrap:n})},this.custom=(t,a)=>{let r=a?.id||ca++;return this.create({jsx:t(r),id:r,...a}),r},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},q=new pa,Br=(e,t)=>{let a=t?.id||ca++;return q.addToast({title:e,...t,id:a}),a},Tr=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",Er=Br,qr=()=>q.toasts,Or=()=>q.getActiveToasts(),at=Object.assign(Er,{success:q.success,info:q.info,warning:q.warning,error:q.error,custom:q.custom,message:q.message,promise:q.promise,dismiss:q.dismiss,loading:q.loading},{getHistory:qr,getToasts:Or});Mr("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function tt(e){var t,a,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(a=tt(e[t]))&&(r&&(r+=" "),r+=a)}else for(a in e)e[a]&&(r&&(r+=" "),r+=a);return r}function Be(){for(var e,t,a=0,r="",o=arguments.length;a<o;a++)(e=arguments[a])&&(t=tt(e))&&(r&&(r+=" "),r+=t);return r}var rt=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,ot=Be,Te=(e,t)=>a=>{var r;if(t?.variants==null)return ot(e,a?.class,a?.className);let{variants:o,defaultVariants:s}=t,u=Object.keys(o).map(i=>{let d=a?.[i],f=s?.[i];if(d===null)return null;let x=rt(d)||rt(f);return o[i][x]}),l=a&&Object.entries(a).reduce((i,d)=>{let[f,x]=d;return x===void 0||(i[f]=x),i},{}),n=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((i,d)=>{let{class:f,className:x,...g}=d;return Object.entries(g).every(L=>{let[I,C]=L;return Array.isArray(C)?C.includes({...s,...l}[I]):{...s,...l}[I]===C})?[...i,f,x]:i},[]);return ot(e,u,n,a?.class,a?.className)};import*as dt from"react";import*as Kr from"react-dom";var Oe={};Pe(Oe,{Root:()=>Ur,Slot:()=>Ur,Slottable:()=>_r,createSlot:()=>qe,createSlottable:()=>it});import*as R from"react";import*as ut from"react";function st(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Fr(...e){return t=>{let a=!1,r=e.map(o=>{let s=st(o,t);return!a&&typeof s=="function"&&(a=!0),s});if(a)return()=>{for(let o=0;o<r.length;o++){let s=r[o];typeof s=="function"?s():st(e[o],null)}}}}function ge(...e){return ut.useCallback(Fr(...e),e)}function qe(e){let t=R.forwardRef((a,r)=>{let{children:o,...s}=a,u=null,l=!1,n=[];lt(o)&&typeof Ee=="function"&&(o=Ee(o._payload)),R.Children.forEach(o,x=>{if(Gr(x)){l=!0;let g=x,L="child"in g.props?g.props.child:g.props.children;lt(L)&&typeof Ee=="function"&&(L=Ee(L._payload)),u=Hr(g,L),n.push(u?.props?.children)}else n.push(x)}),u?u=R.cloneElement(u,void 0,n):!l&&R.Children.count(o)===1&&R.isValidElement(o)&&(u=o);let i=u?zr(u):void 0,d=ge(r,i);if(!u){if(o||o===0)throw new Error(l?Xr(e):jr(e));return o}let f=Nr(s,u.props??{});return u.type!==R.Fragment&&(f.ref=r?d:i),R.cloneElement(u,f)});return t.displayName=`${e}.Slot`,t}var Ur=qe("Slot"),nt=Symbol.for("radix.slottable");function it(e){let t=a=>"child"in a?a.children(a.child):a.children;return t.displayName=`${e}.Slottable`,t.__radixId=nt,t}var _r=it("Slottable"),Hr=(e,t)=>{if("child"in e.props){let a=e.props.child;return R.isValidElement(a)?R.cloneElement(a,void 0,e.props.children(a.props.children)):null}return R.isValidElement(t)?t:null};function Nr(e,t){let a={...t};for(let r in t){let o=e[r],s=t[r];/^on[A-Z]/.test(r)?o&&s?a[r]=(...l)=>{let n=s(...l);return o(...l),n}:o&&(a[r]=o):r==="style"?a[r]={...o,...s}:r==="className"&&(a[r]=[o,s].filter(Boolean).join(" "))}return{...e,...a}}function zr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning;return a?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning,a?e.props.ref:e.props.ref||e.ref)}function Gr(e){return R.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===nt}var Vr=Symbol.for("react.lazy");function lt(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Vr&&"_payload"in e&&Wr(e._payload)}function Wr(e){return typeof e=="object"&&e!==null&&"then"in e}var jr=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,Xr=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,Ee=R[" use ".trim().toString()];import{jsx as $r}from"react/jsx-runtime";var Jr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Z=Jr.reduce((e,t)=>{let a=qe(`Primitive.${t}`),r=dt.forwardRef((o,s)=>{let{asChild:u,...l}=o,n=u?a:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),$r(n,{...l,ref:s})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});import*as X from"react";import{jsx as Zr}from"react/jsx-runtime";function ft(e,t=[]){let a=[];function r(s,u){let l=X.createContext(u);l.displayName=s+"Context";let n=a.length;a=[...a,u];let i=f=>{let{scope:x,children:g,...L}=f,I=x?.[e]?.[n]||l,C=X.useMemo(()=>L,Object.values(L));return Zr(I.Provider,{value:C,children:g})};i.displayName=s+"Provider";function d(f,x){let g=x?.[e]?.[n]||l,L=X.useContext(g);if(L)return L;if(u!==void 0)return u;throw new Error(`\`${f}\` must be used within \`${s}\``)}return[i,d]}let o=()=>{let s=a.map(u=>X.createContext(u));return function(l){let n=l?.[e]||s;return X.useMemo(()=>({[`__scope${e}`]:{...l,[e]:n}}),[l,n])}};return o.scopeName=e,[r,Yr(o,...t)]}function Yr(...e){let t=e[0];if(e.length===1)return t;let a=()=>{let r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(s){let u=r.reduce((l,{useScope:n,scopeName:i})=>{let f=n(s)[`__scope${i}`];return{...l,...f}},{});return X.useMemo(()=>({[`__scope${t.scopeName}`]:u}),[u])}};return a.scopeName=t.scopeName,a}var zs=!!(typeof window<"u"&&window.document&&window.document.createElement);function ma(e,t,{checkForDefaultPrevented:a=!0}={}){return function(o){if(e?.(o),a===!1||!o.defaultPrevented)return t?.(o)}}import*as O from"react";import*as ct from"react";var se=globalThis?.document?ct.useLayoutEffect:()=>{};import*as Fe from"react";var Qr=O[" useInsertionEffect ".trim().toString()]||se;function pt({prop:e,defaultProp:t,onChange:a=()=>{},caller:r}){let[o,s,u]=eo({defaultProp:t,onChange:a}),l=e!==void 0,n=l?e:o;{let d=O.useRef(e!==void 0);O.useEffect(()=>{let f=d.current;f!==l&&console.warn(`${r} is changing from ${f?"controlled":"uncontrolled"} to ${l?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=l},[l,r])}let i=O.useCallback(d=>{if(l){let f=ao(d)?d(e):d;f!==e&&u.current?.(f)}else s(d)},[l,e,s,u]);return[n,i]}function eo({defaultProp:e,onChange:t}){let[a,r]=O.useState(e),o=O.useRef(a),s=O.useRef(t);return Qr(()=>{s.current=t},[t]),O.useEffect(()=>{o.current!==a&&(s.current?.(a),o.current=a)},[a,o]),[a,r,s]}function ao(e){return typeof e=="function"}var js=Symbol("RADIX:SYNC_STATE");import*as D from"react";import*as ht from"react";function to(e,t){return ht.useReducer((a,r)=>t[a][r]??a,e)}var ha=e=>{let{present:t,children:a}=e,r=ro(t),o=typeof a=="function"?a({present:r.isPresent}):D.Children.only(a),s=oo(r.ref,so(o));return typeof a=="function"||r.isPresent?D.cloneElement(o,{ref:s}):null};ha.displayName="Presence";function ro(e){let[t,a]=D.useState(),r=D.useRef(null),o=D.useRef(e),s=D.useRef("none"),u=e?"mounted":"unmounted",[l,n]=to(u,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return D.useEffect(()=>{let i=Ue(r.current);s.current=l==="mounted"?i:"none"},[l]),se(()=>{let i=r.current,d=o.current;if(d!==e){let x=s.current,g=Ue(i);e?n("MOUNT"):g==="none"||i?.display==="none"?n("UNMOUNT"):n(d&&x!==g?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,n]),se(()=>{if(t){let i,d=t.ownerDocument.defaultView??window,f=g=>{let I=Ue(r.current).includes(CSS.escape(g.animationName));if(g.target===t&&I&&(n("ANIMATION_END"),!o.current)){let C=t.style.animationFillMode;t.style.animationFillMode="forwards",i=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=C)})}},x=g=>{g.target===t&&(s.current=Ue(r.current))};return t.addEventListener("animationstart",x),t.addEventListener("animationcancel",f),t.addEventListener("animationend",f),()=>{d.clearTimeout(i),t.removeEventListener("animationstart",x),t.removeEventListener("animationcancel",f),t.removeEventListener("animationend",f)}}else n("ANIMATION_END")},[t,n]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:D.useCallback(i=>{r.current=i?getComputedStyle(i):null,a(i)},[])}}function mt(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function oo(...e){let t=D.useRef(e);return t.current=e,D.useCallback(a=>{let r=t.current,o=!1,s=r.map(u=>{let l=mt(u,a);return!o&&typeof l=="function"&&(o=!0),l});if(o)return()=>{for(let u=0;u<s.length;u++){let l=s[u];typeof l=="function"?l():mt(r[u],null)}}},[])}function Ue(e){return e?.animationName||"none"}function so(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning;return a?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning,a?e.props.ref:e.props.ref||e.ref)}var ye={};Pe(ye,{Checkbox:()=>vt,CheckboxIndicator:()=>bt,Indicator:()=>bt,Root:()=>vt,createCheckboxScope:()=>io,unstable_BubbleInput:()=>ya,unstable_CheckboxBubbleInput:()=>ya,unstable_CheckboxProvider:()=>Lt,unstable_CheckboxTrigger:()=>ga,unstable_Provider:()=>Lt,unstable_Trigger:()=>ga});import*as T from"react";import*as _e from"react";function xt(e){let t=_e.useRef({value:e,previous:e});return _e.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}import*as gt from"react";function yt(e){let[t,a]=gt.useState(void 0);return se(()=>{if(e){a({width:e.offsetWidth,height:e.offsetHeight});let r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;let s=o[0],u,l;if("borderBoxSize"in s){let n=s.borderBoxSize,i=Array.isArray(n)?n[0]:n;u=i.inlineSize,l=i.blockSize}else u=e.offsetWidth,l=e.offsetHeight;a({width:u,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else a(void 0)},[e]),t}import{Fragment as uo,jsx as Y,jsxs as lo}from"react/jsx-runtime";var He="Checkbox",[no,io]=ft(He),[fo,xa]=no(He);function Lt(e){let{__scopeCheckbox:t,checked:a,children:r,defaultChecked:o,disabled:s,form:u,name:l,onCheckedChange:n,required:i,value:d="on",internal_do_not_use_render:f}=e,[x,g]=pt({prop:a,defaultProp:o??!1,onChange:n,caller:He}),[L,I]=T.useState(null),[C,w]=T.useState(null),v=T.useRef(!1),V=L?!!u||!!L.closest("form"):!0,H={checked:x,disabled:s,setChecked:g,control:L,setControl:I,name:l,form:u,value:d,hasConsumerStoppedPropagationRef:v,required:i,defaultChecked:Q(o)?!1:o,isFormControl:V,bubbleInput:C,setBubbleInput:w};return Y(fo,{scope:t,...H,children:co(f)?f(H):r})}var It="CheckboxTrigger",ga=T.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:a,...r},o)=>{let{control:s,value:u,disabled:l,checked:n,required:i,setControl:d,setChecked:f,hasConsumerStoppedPropagationRef:x,isFormControl:g,bubbleInput:L}=xa(It,e),I=ge(o,d),C=T.useRef(n);return T.useEffect(()=>{let w=s?.form;if(w){let v=()=>f(C.current);return w.addEventListener("reset",v),()=>w.removeEventListener("reset",v)}},[s,f]),Y(Z.button,{type:"button",role:"checkbox","aria-checked":Q(n)?"mixed":n,"aria-required":i,"data-state":wt(n),"data-disabled":l?"":void 0,disabled:l,value:u,...r,ref:I,onKeyDown:ma(t,w=>{w.key==="Enter"&&w.preventDefault()}),onClick:ma(a,w=>{f(v=>Q(v)?!0:!v),L&&g&&(x.current=w.isPropagationStopped(),x.current||w.stopPropagation())})})});ga.displayName=It;var vt=T.forwardRef((e,t)=>{let{__scopeCheckbox:a,name:r,checked:o,defaultChecked:s,required:u,disabled:l,value:n,onCheckedChange:i,form:d,...f}=e;return Y(Lt,{__scopeCheckbox:a,checked:o,defaultChecked:s,disabled:l,required:u,onCheckedChange:i,name:r,form:d,value:n,internal_do_not_use_render:({isFormControl:x})=>lo(uo,{children:[Y(ga,{...f,ref:t,__scopeCheckbox:a}),x&&Y(ya,{__scopeCheckbox:a})]})})});vt.displayName=He;var Ct="CheckboxIndicator",bt=T.forwardRef((e,t)=>{let{__scopeCheckbox:a,forceMount:r,...o}=e,s=xa(Ct,a);return Y(ha,{present:r||Q(s.checked)||s.checked===!0,children:Y(Z.span,{"data-state":wt(s.checked),"data-disabled":s.disabled?"":void 0,...o,ref:t,style:{pointerEvents:"none",...e.style}})})});bt.displayName=Ct;var kt="CheckboxBubbleInput",ya=T.forwardRef(({__scopeCheckbox:e,...t},a)=>{let{control:r,hasConsumerStoppedPropagationRef:o,checked:s,defaultChecked:u,required:l,disabled:n,name:i,value:d,form:f,bubbleInput:x,setBubbleInput:g}=xa(kt,e),L=ge(a,g),I=xt(s),C=yt(r);T.useEffect(()=>{let v=x;if(!v)return;let V=window.HTMLInputElement.prototype,W=Object.getOwnPropertyDescriptor(V,"checked").set,$=!o.current;if(I!==s&&W){let F=new Event("click",{bubbles:$});v.indeterminate=Q(s),W.call(v,Q(s)?!1:s),v.dispatchEvent(F)}},[x,I,s,o]);let w=T.useRef(Q(s)?!1:s);return Y(Z.input,{type:"checkbox","aria-hidden":!0,defaultChecked:u??w.current,required:l,disabled:n,name:i,value:d,form:f,...t,tabIndex:-1,ref:L,style:{...t.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});ya.displayName=kt;function co(e){return typeof e=="function"}function Q(e){return e==="indeterminate"}function wt(e){return Q(e)?"indeterminate":e?"checked":"unchecked"}var Ne={};Pe(Ne,{Label:()=>La,Root:()=>ho});import*as St from"react";import{jsx as po}from"react/jsx-runtime";var mo="Label",La=St.forwardRef((e,t)=>po(Z.label,{...e,ref:t,onMouseDown:a=>{a.target.closest("button, input, select, textarea")||(e.onMouseDown?.(a),!a.defaultPrevented&&a.detail>1&&a.preventDefault())}}));La.displayName=mo;var ho=La;var ze={};Pe(ze,{Root:()=>Io,Separator:()=>Ia});import*as At from"react";import{jsx as xo}from"react/jsx-runtime";var go="Separator",Pt="horizontal",yo=["horizontal","vertical"],Ia=At.forwardRef((e,t)=>{let{decorative:a,orientation:r=Pt,...o}=e,s=Lo(r)?r:Pt,l=a?{role:"none"}:{"aria-orientation":s==="vertical"?s:void 0,role:"separator"};return xo(Z.div,{"data-orientation":s,...l,...o,ref:t})});Ia.displayName=go;function Lo(e){return yo.includes(e)}var Io=Ia;var vo=(e,t)=>{let a=new Array(e.length+t.length);for(let r=0;r<e.length;r++)a[r]=e[r];for(let r=0;r<t.length;r++)a[e.length+r]=t[r];return a},Co=(e,t)=>({classGroupId:e,validator:t}),qt=(e=new Map,t=null,a)=>({nextPart:e,validators:t,classGroupId:a}),We="-",Rt=[],bo="arbitrary..",ko=e=>{let t=So(e),{conflictingClassGroups:a,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return wo(u);let l=u.split(We),n=l[0]===""&&l.length>1?1:0;return Ot(l,n,t)},getConflictingClassGroupIds:(u,l)=>{if(l){let n=r[u],i=a[u];return n?i?vo(i,n):n:i||Rt}return a[u]||Rt}}},Ot=(e,t,a)=>{if(e.length-t===0)return a.classGroupId;let o=e[t],s=a.nextPart.get(o);if(s){let i=Ot(e,t+1,s);if(i)return i}let u=a.validators;if(u===null)return;let l=t===0?e.join(We):e.slice(t).join(We),n=u.length;for(let i=0;i<n;i++){let d=u[i];if(d.validator(l))return d.classGroupId}},wo=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let t=e.slice(1,-1),a=t.indexOf(":"),r=t.slice(0,a);return r?bo+r:void 0})(),So=e=>{let{theme:t,classGroups:a}=e;return Po(a,t)},Po=(e,t)=>{let a=qt();for(let r in e){let o=e[r];ba(o,a,r,t)}return a},ba=(e,t,a,r)=>{let o=e.length;for(let s=0;s<o;s++){let u=e[s];Ao(u,t,a,r)}},Ao=(e,t,a,r)=>{if(typeof e=="string"){Ro(e,t,a);return}if(typeof e=="function"){Do(e,t,a,r);return}Mo(e,t,a,r)},Ro=(e,t,a)=>{let r=e===""?t:Ft(t,e);r.classGroupId=a},Do=(e,t,a,r)=>{if(Bo(e)){ba(e(r),t,a,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Co(a,e))},Mo=(e,t,a,r)=>{let o=Object.entries(e),s=o.length;for(let u=0;u<s;u++){let[l,n]=o[u];ba(n,Ft(t,l),a,r)}},Ft=(e,t)=>{let a=e,r=t.split(We),o=r.length;for(let s=0;s<o;s++){let u=r[s],l=a.nextPart.get(u);l||(l=qt(),a.nextPart.set(u,l)),a=l}return a},Bo=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,To=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,a=Object.create(null),r=Object.create(null),o=(s,u)=>{a[s]=u,t++,t>e&&(t=0,r=a,a=Object.create(null))};return{get(s){let u=a[s];if(u!==void 0)return u;if((u=r[s])!==void 0)return o(s,u),u},set(s,u){s in a?a[s]=u:o(s,u)}}},Ca="!",Dt=":",Eo=[],Mt=(e,t,a,r,o)=>({modifiers:e,hasImportantModifier:t,baseClassName:a,maybePostfixModifierPosition:r,isExternal:o}),qo=e=>{let{prefix:t,experimentalParseClassName:a}=e,r=o=>{let s=[],u=0,l=0,n=0,i,d=o.length;for(let I=0;I<d;I++){let C=o[I];if(u===0&&l===0){if(C===Dt){s.push(o.slice(n,I)),n=I+1;continue}if(C==="/"){i=I;continue}}C==="["?u++:C==="]"?u--:C==="("?l++:C===")"&&l--}let f=s.length===0?o:o.slice(n),x=f,g=!1;f.endsWith(Ca)?(x=f.slice(0,-1),g=!0):f.startsWith(Ca)&&(x=f.slice(1),g=!0);let L=i&&i>n?i-n:void 0;return Mt(s,g,x,L)};if(t){let o=t+Dt,s=r;r=u=>u.startsWith(o)?s(u.slice(o.length)):Mt(Eo,!1,u,void 0,!0)}if(a){let o=r;r=s=>a({className:s,parseClassName:o})}return r},Oo=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((a,r)=>{t.set(a,1e6+r)}),a=>{let r=[],o=[];for(let s=0;s<a.length;s++){let u=a[s],l=u[0]==="[",n=t.has(u);l||n?(o.length>0&&(o.sort(),r.push(...o),o=[]),r.push(u)):o.push(u)}return o.length>0&&(o.sort(),r.push(...o)),r}},Fo=e=>({cache:To(e.cacheSize),parseClassName:qo(e),sortModifiers:Oo(e),postfixLookupClassGroupIds:Uo(e),...ko(e)}),Uo=e=>{let t=Object.create(null),a=e.postfixLookupClassGroups;if(a)for(let r=0;r<a.length;r++)t[a[r]]=!0;return t},_o=/\s+/,Ho=(e,t)=>{let{parseClassName:a,getClassGroupId:r,getConflictingClassGroupIds:o,sortModifiers:s,postfixLookupClassGroupIds:u}=t,l=[],n=e.trim().split(_o),i="";for(let d=n.length-1;d>=0;d-=1){let f=n[d],{isExternal:x,modifiers:g,hasImportantModifier:L,baseClassName:I,maybePostfixModifierPosition:C}=a(f);if(x){i=f+(i.length>0?" "+i:i);continue}let w=!!C,v;if(w){let F=I.substring(0,C);v=r(F);let m=v&&u[v]?r(I):void 0;m&&m!==v&&(v=m,w=!1)}else v=r(I);if(!v){if(!w){i=f+(i.length>0?" "+i:i);continue}if(v=r(I),!v){i=f+(i.length>0?" "+i:i);continue}w=!1}let V=g.length===0?"":g.length===1?g[0]:s(g).join(":"),H=L?V+Ca:V,W=H+v;if(l.indexOf(W)>-1)continue;l.push(W);let $=o(v,w);for(let F=0;F<$.length;++F){let m=$[F];l.push(H+m)}i=f+(i.length>0?" "+i:i)}return i},No=(...e)=>{let t=0,a,r,o="";for(;t<e.length;)(a=e[t++])&&(r=Ut(a))&&(o&&(o+=" "),o+=r);return o},Ut=e=>{if(typeof e=="string")return e;let t,a="";for(let r=0;r<e.length;r++)e[r]&&(t=Ut(e[r]))&&(a&&(a+=" "),a+=t);return a},zo=(e,...t)=>{let a,r,o,s,u=n=>{let i=t.reduce((d,f)=>f(d),e());return a=Fo(i),r=a.cache.get,o=a.cache.set,s=l,l(n)},l=n=>{let i=r(n);if(i)return i;let d=Ho(n,a);return o(n,d),d};return s=u,(...n)=>s(No(...n))},Go=[],S=e=>{let t=a=>a[e]||Go;return t.isThemeGetter=!0,t},_t=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Ht=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Vo=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Wo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,jo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Xo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Ko=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,$o=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ee=e=>Vo.test(e),y=e=>!!e&&!Number.isNaN(Number(e)),z=e=>!!e&&Number.isInteger(Number(e)),va=e=>e.endsWith("%")&&y(e.slice(0,-1)),K=e=>Wo.test(e),Nt=()=>!0,Jo=e=>jo.test(e)&&!Xo.test(e),ka=()=>!1,Zo=e=>Ko.test(e),Yo=e=>$o.test(e),Qo=e=>!c(e)&&!p(e),es=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),as=e=>ae(e,Vt,ka),c=e=>_t.test(e),ue=e=>ae(e,Wt,Jo),Bt=e=>ae(e,is,y),ts=e=>ae(e,Xt,Nt),rs=e=>ae(e,jt,ka),Tt=e=>ae(e,zt,ka),os=e=>ae(e,Gt,Yo),Ge=e=>ae(e,Kt,Zo),p=e=>Ht.test(e),Le=e=>le(e,Wt),ss=e=>le(e,jt),Et=e=>le(e,zt),us=e=>le(e,Vt),ls=e=>le(e,Gt),Ve=e=>le(e,Kt,!0),ns=e=>le(e,Xt,!0),ae=(e,t,a)=>{let r=_t.exec(e);return r?r[1]?t(r[1]):a(r[2]):!1},le=(e,t,a=!1)=>{let r=Ht.exec(e);return r?r[1]?t(r[1]):a:!1},zt=e=>e==="position"||e==="percentage",Gt=e=>e==="image"||e==="url",Vt=e=>e==="length"||e==="size"||e==="bg-size",Wt=e=>e==="length",is=e=>e==="number",jt=e=>e==="family-name",Xt=e=>e==="number"||e==="weight",Kt=e=>e==="shadow";var ds=()=>{let e=S("color"),t=S("font"),a=S("text"),r=S("font-weight"),o=S("tracking"),s=S("leading"),u=S("breakpoint"),l=S("container"),n=S("spacing"),i=S("radius"),d=S("shadow"),f=S("inset-shadow"),x=S("text-shadow"),g=S("drop-shadow"),L=S("blur"),I=S("perspective"),C=S("aspect"),w=S("ease"),v=S("animate"),V=()=>["auto","avoid","all","avoid-page","page","left","right","column"],H=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],W=()=>[...H(),p,c],$=()=>["auto","hidden","clip","visible","scroll"],F=()=>["auto","contain","none"],m=()=>[p,c,n],E=()=>[ee,"full","auto",...m()],Ta=()=>[z,"none","subgrid",p,c],Ea=()=>["auto",{span:["full",z,p,c]},z,p,c],Ce=()=>[z,"auto",p,c],qa=()=>["auto","min","max","fr",p,c],Ke=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ne=()=>["start","end","center","stretch","center-safe","end-safe"],U=()=>["auto",...m()],te=()=>[ee,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...m()],$e=()=>[ee,"screen","full","dvw","lvw","svw","min","max","fit",...m()],Je=()=>[ee,"screen","full","lh","dvh","lvh","svh","min","max","fit",...m()],h=()=>[e,p,c],Oa=()=>[...H(),Et,Tt,{position:[p,c]}],Fa=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Ua=()=>["auto","cover","contain",us,as,{size:[p,c]}],Ze=()=>[va,Le,ue],M=()=>["","none","full",i,p,c],B=()=>["",y,Le,ue],be=()=>["solid","dashed","dotted","double"],_a=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],P=()=>[y,va,Et,Tt],Ha=()=>["","none",L,p,c],ke=()=>["none",y,p,c],we=()=>["none",y,p,c],Ye=()=>[y,p,c],Se=()=>[ee,"full",...m()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[K],breakpoint:[K],color:[Nt],container:[K],"drop-shadow":[K],ease:["in","out","in-out"],font:[Qo],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[K],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[K],shadow:[K],spacing:["px",y],text:[K],"text-shadow":[K],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ee,c,p,C]}],container:["container"],"container-type":[{"@container":["","normal","size",p,c]}],"container-named":[es],columns:[{columns:[y,c,p,l]}],"break-after":[{"break-after":V()}],"break-before":[{"break-before":V()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:W()}],overflow:[{overflow:$()}],"overflow-x":[{"overflow-x":$()}],"overflow-y":[{"overflow-y":$()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:E()}],"inset-x":[{"inset-x":E()}],"inset-y":[{"inset-y":E()}],start:[{"inset-s":E(),start:E()}],end:[{"inset-e":E(),end:E()}],"inset-bs":[{"inset-bs":E()}],"inset-be":[{"inset-be":E()}],top:[{top:E()}],right:[{right:E()}],bottom:[{bottom:E()}],left:[{left:E()}],visibility:["visible","invisible","collapse"],z:[{z:[z,"auto",p,c]}],basis:[{basis:[ee,"full","auto",l,...m()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[y,ee,"auto","initial","none",c]}],grow:[{grow:["",y,p,c]}],shrink:[{shrink:["",y,p,c]}],order:[{order:[z,"first","last","none",p,c]}],"grid-cols":[{"grid-cols":Ta()}],"col-start-end":[{col:Ea()}],"col-start":[{"col-start":Ce()}],"col-end":[{"col-end":Ce()}],"grid-rows":[{"grid-rows":Ta()}],"row-start-end":[{row:Ea()}],"row-start":[{"row-start":Ce()}],"row-end":[{"row-end":Ce()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":qa()}],"auto-rows":[{"auto-rows":qa()}],gap:[{gap:m()}],"gap-x":[{"gap-x":m()}],"gap-y":[{"gap-y":m()}],"justify-content":[{justify:[...Ke(),"normal"]}],"justify-items":[{"justify-items":[...ne(),"normal"]}],"justify-self":[{"justify-self":["auto",...ne()]}],"align-content":[{content:["normal",...Ke()]}],"align-items":[{items:[...ne(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ne(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ke()}],"place-items":[{"place-items":[...ne(),"baseline"]}],"place-self":[{"place-self":["auto",...ne()]}],p:[{p:m()}],px:[{px:m()}],py:[{py:m()}],ps:[{ps:m()}],pe:[{pe:m()}],pbs:[{pbs:m()}],pbe:[{pbe:m()}],pt:[{pt:m()}],pr:[{pr:m()}],pb:[{pb:m()}],pl:[{pl:m()}],m:[{m:U()}],mx:[{mx:U()}],my:[{my:U()}],ms:[{ms:U()}],me:[{me:U()}],mbs:[{mbs:U()}],mbe:[{mbe:U()}],mt:[{mt:U()}],mr:[{mr:U()}],mb:[{mb:U()}],ml:[{ml:U()}],"space-x":[{"space-x":m()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":m()}],"space-y-reverse":["space-y-reverse"],size:[{size:te()}],"inline-size":[{inline:["auto",...$e()]}],"min-inline-size":[{"min-inline":["auto",...$e()]}],"max-inline-size":[{"max-inline":["none",...$e()]}],"block-size":[{block:["auto",...Je()]}],"min-block-size":[{"min-block":["auto",...Je()]}],"max-block-size":[{"max-block":["none",...Je()]}],w:[{w:[l,"screen",...te()]}],"min-w":[{"min-w":[l,"screen","none",...te()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[u]},...te()]}],h:[{h:["screen","lh",...te()]}],"min-h":[{"min-h":["screen","lh","none",...te()]}],"max-h":[{"max-h":["screen","lh",...te()]}],"font-size":[{text:["base",a,Le,ue]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,ns,ts]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",va,c]}],"font-family":[{font:[ss,rs,t]}],"font-features":[{"font-features":[c]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[o,p,c]}],"line-clamp":[{"line-clamp":[y,"none",p,Bt]}],leading:[{leading:[s,...m()]}],"list-image":[{"list-image":["none",p,c]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",p,c]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:h()}],"text-color":[{text:h()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...be(),"wavy"]}],"text-decoration-thickness":[{decoration:[y,"from-font","auto",p,ue]}],"text-decoration-color":[{decoration:h()}],"underline-offset":[{"underline-offset":[y,"auto",p,c]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:m()}],"tab-size":[{tab:[z,p,c]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",p,c]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",p,c]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Oa()}],"bg-repeat":[{bg:Fa()}],"bg-size":[{bg:Ua()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},z,p,c],radial:["",p,c],conic:[z,p,c]},ls,os]}],"bg-color":[{bg:h()}],"gradient-from-pos":[{from:Ze()}],"gradient-via-pos":[{via:Ze()}],"gradient-to-pos":[{to:Ze()}],"gradient-from":[{from:h()}],"gradient-via":[{via:h()}],"gradient-to":[{to:h()}],rounded:[{rounded:M()}],"rounded-s":[{"rounded-s":M()}],"rounded-e":[{"rounded-e":M()}],"rounded-t":[{"rounded-t":M()}],"rounded-r":[{"rounded-r":M()}],"rounded-b":[{"rounded-b":M()}],"rounded-l":[{"rounded-l":M()}],"rounded-ss":[{"rounded-ss":M()}],"rounded-se":[{"rounded-se":M()}],"rounded-ee":[{"rounded-ee":M()}],"rounded-es":[{"rounded-es":M()}],"rounded-tl":[{"rounded-tl":M()}],"rounded-tr":[{"rounded-tr":M()}],"rounded-br":[{"rounded-br":M()}],"rounded-bl":[{"rounded-bl":M()}],"border-w":[{border:B()}],"border-w-x":[{"border-x":B()}],"border-w-y":[{"border-y":B()}],"border-w-s":[{"border-s":B()}],"border-w-e":[{"border-e":B()}],"border-w-bs":[{"border-bs":B()}],"border-w-be":[{"border-be":B()}],"border-w-t":[{"border-t":B()}],"border-w-r":[{"border-r":B()}],"border-w-b":[{"border-b":B()}],"border-w-l":[{"border-l":B()}],"divide-x":[{"divide-x":B()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":B()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...be(),"hidden","none"]}],"divide-style":[{divide:[...be(),"hidden","none"]}],"border-color":[{border:h()}],"border-color-x":[{"border-x":h()}],"border-color-y":[{"border-y":h()}],"border-color-s":[{"border-s":h()}],"border-color-e":[{"border-e":h()}],"border-color-bs":[{"border-bs":h()}],"border-color-be":[{"border-be":h()}],"border-color-t":[{"border-t":h()}],"border-color-r":[{"border-r":h()}],"border-color-b":[{"border-b":h()}],"border-color-l":[{"border-l":h()}],"divide-color":[{divide:h()}],"outline-style":[{outline:[...be(),"none","hidden"]}],"outline-offset":[{"outline-offset":[y,p,c]}],"outline-w":[{outline:["",y,Le,ue]}],"outline-color":[{outline:h()}],shadow:[{shadow:["","none",d,Ve,Ge]}],"shadow-color":[{shadow:h()}],"inset-shadow":[{"inset-shadow":["none",f,Ve,Ge]}],"inset-shadow-color":[{"inset-shadow":h()}],"ring-w":[{ring:B()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:h()}],"ring-offset-w":[{"ring-offset":[y,ue]}],"ring-offset-color":[{"ring-offset":h()}],"inset-ring-w":[{"inset-ring":B()}],"inset-ring-color":[{"inset-ring":h()}],"text-shadow":[{"text-shadow":["none",x,Ve,Ge]}],"text-shadow-color":[{"text-shadow":h()}],opacity:[{opacity:[y,p,c]}],"mix-blend":[{"mix-blend":[..._a(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":_a()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[y]}],"mask-image-linear-from-pos":[{"mask-linear-from":P()}],"mask-image-linear-to-pos":[{"mask-linear-to":P()}],"mask-image-linear-from-color":[{"mask-linear-from":h()}],"mask-image-linear-to-color":[{"mask-linear-to":h()}],"mask-image-t-from-pos":[{"mask-t-from":P()}],"mask-image-t-to-pos":[{"mask-t-to":P()}],"mask-image-t-from-color":[{"mask-t-from":h()}],"mask-image-t-to-color":[{"mask-t-to":h()}],"mask-image-r-from-pos":[{"mask-r-from":P()}],"mask-image-r-to-pos":[{"mask-r-to":P()}],"mask-image-r-from-color":[{"mask-r-from":h()}],"mask-image-r-to-color":[{"mask-r-to":h()}],"mask-image-b-from-pos":[{"mask-b-from":P()}],"mask-image-b-to-pos":[{"mask-b-to":P()}],"mask-image-b-from-color":[{"mask-b-from":h()}],"mask-image-b-to-color":[{"mask-b-to":h()}],"mask-image-l-from-pos":[{"mask-l-from":P()}],"mask-image-l-to-pos":[{"mask-l-to":P()}],"mask-image-l-from-color":[{"mask-l-from":h()}],"mask-image-l-to-color":[{"mask-l-to":h()}],"mask-image-x-from-pos":[{"mask-x-from":P()}],"mask-image-x-to-pos":[{"mask-x-to":P()}],"mask-image-x-from-color":[{"mask-x-from":h()}],"mask-image-x-to-color":[{"mask-x-to":h()}],"mask-image-y-from-pos":[{"mask-y-from":P()}],"mask-image-y-to-pos":[{"mask-y-to":P()}],"mask-image-y-from-color":[{"mask-y-from":h()}],"mask-image-y-to-color":[{"mask-y-to":h()}],"mask-image-radial":[{"mask-radial":[p,c]}],"mask-image-radial-from-pos":[{"mask-radial-from":P()}],"mask-image-radial-to-pos":[{"mask-radial-to":P()}],"mask-image-radial-from-color":[{"mask-radial-from":h()}],"mask-image-radial-to-color":[{"mask-radial-to":h()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":H()}],"mask-image-conic-pos":[{"mask-conic":[y]}],"mask-image-conic-from-pos":[{"mask-conic-from":P()}],"mask-image-conic-to-pos":[{"mask-conic-to":P()}],"mask-image-conic-from-color":[{"mask-conic-from":h()}],"mask-image-conic-to-color":[{"mask-conic-to":h()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Oa()}],"mask-repeat":[{mask:Fa()}],"mask-size":[{mask:Ua()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",p,c]}],filter:[{filter:["","none",p,c]}],blur:[{blur:Ha()}],brightness:[{brightness:[y,p,c]}],contrast:[{contrast:[y,p,c]}],"drop-shadow":[{"drop-shadow":["","none",g,Ve,Ge]}],"drop-shadow-color":[{"drop-shadow":h()}],grayscale:[{grayscale:["",y,p,c]}],"hue-rotate":[{"hue-rotate":[y,p,c]}],invert:[{invert:["",y,p,c]}],saturate:[{saturate:[y,p,c]}],sepia:[{sepia:["",y,p,c]}],"backdrop-filter":[{"backdrop-filter":["","none",p,c]}],"backdrop-blur":[{"backdrop-blur":Ha()}],"backdrop-brightness":[{"backdrop-brightness":[y,p,c]}],"backdrop-contrast":[{"backdrop-contrast":[y,p,c]}],"backdrop-grayscale":[{"backdrop-grayscale":["",y,p,c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[y,p,c]}],"backdrop-invert":[{"backdrop-invert":["",y,p,c]}],"backdrop-opacity":[{"backdrop-opacity":[y,p,c]}],"backdrop-saturate":[{"backdrop-saturate":[y,p,c]}],"backdrop-sepia":[{"backdrop-sepia":["",y,p,c]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":m()}],"border-spacing-x":[{"border-spacing-x":m()}],"border-spacing-y":[{"border-spacing-y":m()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",p,c]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[y,"initial",p,c]}],ease:[{ease:["linear","initial",w,p,c]}],delay:[{delay:[y,p,c]}],animate:[{animate:["none",v,p,c]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[I,p,c]}],"perspective-origin":[{"perspective-origin":W()}],rotate:[{rotate:ke()}],"rotate-x":[{"rotate-x":ke()}],"rotate-y":[{"rotate-y":ke()}],"rotate-z":[{"rotate-z":ke()}],scale:[{scale:we()}],"scale-x":[{"scale-x":we()}],"scale-y":[{"scale-y":we()}],"scale-z":[{"scale-z":we()}],"scale-3d":["scale-3d"],skew:[{skew:Ye()}],"skew-x":[{"skew-x":Ye()}],"skew-y":[{"skew-y":Ye()}],transform:[{transform:[p,c,"","none","gpu","cpu"]}],"transform-origin":[{origin:W()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Se()}],"translate-x":[{"translate-x":Se()}],"translate-y":[{"translate-y":Se()}],"translate-z":[{"translate-z":Se()}],"translate-none":["translate-none"],zoom:[{zoom:[z,p,c]}],accent:[{accent:h()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:h()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",p,c]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":h()}],"scrollbar-track-color":[{"scrollbar-track":h()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":m()}],"scroll-mx":[{"scroll-mx":m()}],"scroll-my":[{"scroll-my":m()}],"scroll-ms":[{"scroll-ms":m()}],"scroll-me":[{"scroll-me":m()}],"scroll-mbs":[{"scroll-mbs":m()}],"scroll-mbe":[{"scroll-mbe":m()}],"scroll-mt":[{"scroll-mt":m()}],"scroll-mr":[{"scroll-mr":m()}],"scroll-mb":[{"scroll-mb":m()}],"scroll-ml":[{"scroll-ml":m()}],"scroll-p":[{"scroll-p":m()}],"scroll-px":[{"scroll-px":m()}],"scroll-py":[{"scroll-py":m()}],"scroll-ps":[{"scroll-ps":m()}],"scroll-pe":[{"scroll-pe":m()}],"scroll-pbs":[{"scroll-pbs":m()}],"scroll-pbe":[{"scroll-pbe":m()}],"scroll-pt":[{"scroll-pt":m()}],"scroll-pr":[{"scroll-pr":m()}],"scroll-pb":[{"scroll-pb":m()}],"scroll-pl":[{"scroll-pl":m()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",p,c]}],fill:[{fill:["none",...h()]}],"stroke-w":[{stroke:[y,Le,ue,Bt]}],stroke:[{stroke:["none",...h()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var $t=zo(ds);function b(...e){return $t(Be(e))}import{jsx as cs}from"react/jsx-runtime";var fs=Te("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function wa({className:e,variant:t="default",size:a="default",asChild:r=!1,...o}){let s=r?Oe.Root:"button";return cs(s,{"data-slot":"button","data-variant":t,"data-size":a,className:b(fs({variant:t,size:a,className:e})),...o})}import{jsx as fe}from"react/jsx-runtime";function Jt({className:e,...t}){return fe("div",{"data-slot":"card",className:b("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",e),...t})}function Zt({className:e,...t}){return fe("div",{"data-slot":"card-header",className:b("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function Yt({className:e,...t}){return fe("div",{"data-slot":"card-title",className:b("leading-none font-semibold",e),...t})}function Qt({className:e,...t}){return fe("div",{"data-slot":"card-description",className:b("text-sm text-muted-foreground",e),...t})}function er({className:e,...t}){return fe("div",{"data-slot":"card-content",className:b("px-6",e),...t})}function ar({className:e,...t}){return fe("div",{"data-slot":"card-footer",className:b("flex items-center px-6 [.border-t]:pt-6",e),...t})}import{forwardRef as ms,createElement as hs}from"react";var tr=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),je=(...e)=>e.filter((t,a,r)=>!!t&&t.trim()!==""&&r.indexOf(t)===a).join(" ").trim();import{forwardRef as ps,createElement as or}from"react";var rr={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var sr=ps(({color:e="currentColor",size:t=24,strokeWidth:a=2,absoluteStrokeWidth:r,className:o="",children:s,iconNode:u,...l},n)=>or("svg",{ref:n,...rr,width:t,height:t,stroke:e,strokeWidth:r?Number(a)*24/Number(t):a,className:je("lucide",o),...l},[...u.map(([i,d])=>or(i,d)),...Array.isArray(s)?s:[s]]));var ur=(e,t)=>{let a=ms(({className:r,...o},s)=>hs(sr,{ref:s,iconNode:t,className:je(`lucide-${tr(e)}`,r),...o}));return a.displayName=`${e}`,a};var Ie=ur("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);import{jsx as Sa}from"react/jsx-runtime";function Pa({className:e,...t}){return Sa(ye.Root,{"data-slot":"checkbox",className:b("peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary",e),...t,children:Sa(ye.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:Sa(Ie,{className:"size-3.5"})})})}import{useMemo as ys}from"react";import{jsx as xs}from"react/jsx-runtime";function lr({className:e,...t}){return xs(Ne.Root,{"data-slot":"label",className:b("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}import{jsx as gs}from"react/jsx-runtime";function nr({className:e,orientation:t="horizontal",decorative:a=!0,...r}){return gs(ze.Root,{"data-slot":"separator",decorative:a,orientation:t,className:b("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...r})}import{jsx as _,jsxs as Is}from"react/jsx-runtime";function Aa({className:e,...t}){return _("fieldset",{"data-slot":"field-set",className:b("flex flex-col gap-6","has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",e),...t})}function Ra({className:e,variant:t="legend",...a}){return _("legend",{"data-slot":"field-legend","data-variant":t,className:b("mb-3 font-medium","data-[variant=legend]:text-base","data-[variant=label]:text-sm",e),...a})}function ve({className:e,...t}){return _("div",{"data-slot":"field-group",className:b("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",e),...t})}var Ls=Te("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function Xe({className:e,orientation:t="vertical",...a}){return _("div",{role:"group","data-slot":"field","data-orientation":t,className:b(Ls({orientation:t}),e),...a})}function Da({className:e,...t}){return _(lr,{"data-slot":"field-label",className:b("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5 dark:has-data-[state=checked]:bg-primary/10",e),...t})}function Ma({className:e,...t}){return _("p",{"data-slot":"field-description",className:b("text-sm leading-normal font-normal text-muted-foreground group-has-[[data-orientation=horizontal]]/field:text-balance","last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5","[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",e),...t})}function ir({children:e,className:t,...a}){return Is("div",{"data-slot":"field-separator","data-content":!!e,className:b("relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",t),...a,children:[_(nr,{className:"absolute inset-0 top-1/2"}),e&&_("span",{className:"relative mx-auto block w-fit bg-background px-2 text-muted-foreground","data-slot":"field-separator-content",children:e})]})}function Ba({className:e,children:t,errors:a,...r}){let o=ys(()=>{if(t)return t;if(!a?.length)return null;let s=[...new Map(a.map(u=>[u?.message,u])).values()];return s?.length==1?s[0]?.message:_("ul",{className:"ml-4 flex list-disc flex-col gap-1",children:s.map((u,l)=>u?.message&&_("li",{children:u.message},l))})},[t,a]);return o?_("div",{role:"alert","data-slot":"field-error",className:b("text-sm font-normal text-destructive",e),...r,children:o}):null}import{jsx as k,jsxs as G}from"react/jsx-runtime";var dr=[{id:"push",label:"Push notifications"},{id:"email",label:"Email notifications"}],vs=oa({responses:ra(),tasks:Ga(ta(sa()),ea(1,"Please select at least one notification type."),Qe(e=>e.every(t=>dr.some(a=>a.id===t)),"Invalid notification type selected."))});function Cs(){let e=Qa({schema:vs,initialInput:{responses:!0,tasks:[]}});return G(Jt,{className:"w-full sm:max-w-md",children:[G(Zt,{children:[k(Yt,{children:"Notifications"}),k(Qt,{children:"Manage your notification preferences."})]}),k(er,{children:k(et,{of:e,id:"form-formisch-checkbox",onSubmit:a=>{at("You submitted the following values:",{description:k("pre",{className:"mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground",children:k("code",{children:JSON.stringify(a,null,2)})}),position:"bottom-right",classNames:{content:"flex flex-col gap-2"},style:{"--border-radius":"calc(var(--radius) + 4px)"}})},children:G(ve,{children:[k(fa,{of:e,path:["responses"],children:a=>G("div",{children:[G(Aa,{"data-invalid":a.errors!==null,children:[k(Ra,{variant:"label",children:"Responses"}),k(Ma,{children:"Get notified for requests that take time, like research or image generation."}),k(ve,{"data-slot":"checkbox-group",children:G(Xe,{orientation:"horizontal",children:[k(Pa,{id:"form-formisch-checkbox-responses",checked:a.input??!1,onCheckedChange:r=>a.onChange(r===!0),disabled:!0}),k(Da,{htmlFor:"form-formisch-checkbox-responses",className:"font-normal",children:"Push notifications"})]})})]}),a.errors&&k(Ba,{errors:a.errors.map(r=>({message:r}))})]})}),k(ir,{}),k(fa,{of:e,path:["tasks"],children:a=>G(ve,{children:[G(Aa,{"data-invalid":a.errors!==null,children:[k(Ra,{variant:"label",children:"Tasks"}),k(Ma,{children:"Get notified when tasks you've created have updates."}),k(ve,{"data-slot":"checkbox-group",children:dr.map(r=>{let o=a.input??[];return G(Xe,{orientation:"horizontal","data-invalid":a.errors!==null,children:[k(Pa,{id:`form-formisch-checkbox-${r.id}`,"aria-invalid":a.errors!==null,checked:o.includes(r.id),onCheckedChange:s=>{a.onChange(s===!0?[...o,r.id]:o.filter(u=>u!==r.id))}}),k(Da,{htmlFor:`form-formisch-checkbox-${r.id}`,className:"font-normal",children:r.label})]},r.id)})})]}),a.errors&&k(Ba,{errors:a.errors.map(r=>({message:r}))})]})})]})})}),k(ar,{children:G(Xe,{orientation:"horizontal",children:[k(wa,{type:"button",variant:"outline",onClick:()=>Za(e),children:"Reset"}),k(wa,{type:"submit",form:"form-formisch-checkbox",children:"Save"})]})})]})}export{Cs as default};
2
+ /*! Bundled license information:
3
+
4
+ lucide-react/dist/esm/shared/src/utils.js:
5
+ (**
6
+ * @license lucide-react v0.456.0 - ISC
7
+ *
8
+ * This source code is licensed under the ISC license.
9
+ * See the LICENSE file in the root directory of this source tree.
10
+ *)
11
+
12
+ lucide-react/dist/esm/defaultAttributes.js:
13
+ (**
14
+ * @license lucide-react v0.456.0 - ISC
15
+ *
16
+ * This source code is licensed under the ISC license.
17
+ * See the LICENSE file in the root directory of this source tree.
18
+ *)
19
+
20
+ lucide-react/dist/esm/Icon.js:
21
+ (**
22
+ * @license lucide-react v0.456.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ *)
27
+
28
+ lucide-react/dist/esm/createLucideIcon.js:
29
+ (**
30
+ * @license lucide-react v0.456.0 - ISC
31
+ *
32
+ * This source code is licensed under the ISC license.
33
+ * See the LICENSE file in the root directory of this source tree.
34
+ *)
35
+
36
+ lucide-react/dist/esm/icons/check.js:
37
+ (**
38
+ * @license lucide-react v0.456.0 - ISC
39
+ *
40
+ * This source code is licensed under the ISC license.
41
+ * See the LICENSE file in the root directory of this source tree.
42
+ *)
43
+
44
+ lucide-react/dist/esm/lucide-react.js:
45
+ (**
46
+ * @license lucide-react v0.456.0 - ISC
47
+ *
48
+ * This source code is licensed under the ISC license.
49
+ * See the LICENSE file in the root directory of this source tree.
50
+ *)
51
+ */
b/50460b42c88ed5246679aa684a67f22aa778f8edacf81bfb35814d205ec2e910 ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "org.hologram.ui.example.data-table-demo",
3
+ "name": "data-table-demo",
4
+ "tier": "example",
5
+ "library": "shadcn",
6
+ "category": "Examples",
7
+ "upstream": "https://ui.shadcn.com/r/styles/new-york-v4/data-table-demo.json",
8
+ "did": "did:holo:sha256:9d0457a155531432a9b6ed2558d0f549cf58159d8df0e485a847620f1956e8cf",
9
+ "import": "holo://sha256:9f8fe734687b604c67aa072e50859fa6f5c7baf9d04d649fb090780522621d38",
10
+ "integrity": "sha256-n4/nNGh7YExnqgcuUIWfpvXHuvnQTWSfsJB4BSJiHTg=",
11
+ "kappa": "sha256:9d0457a155531432a9b6ed2558d0f549cf58159d8df0e485a847620f1956e8cf",
12
+ "moduleKappa": "sha256:9f8fe734687b604c67aa072e50859fa6f5c7baf9d04d649fb090780522621d38",
13
+ "renderExport": "default",
14
+ "source": "registry/new-york-v4/examples/data-table-demo.tsx",
15
+ "module": "vendor/components/data-table-demo.js",
16
+ "exports": [
17
+ "default",
18
+ "columns"
19
+ ],
20
+ "license": "MIT"
21
+ }
b/5058e4ad8e4c449e4b22ef0bfe5fc609e1452ece6379b2ed7732cd6b70c6eaeb ADDED
@@ -0,0 +1 @@
 
 
1
+ import{useEffect as bo,useRef as _}from"react";var Re=["x","y","z"],B=function(e){Object.assign(this,{uniforms:{},geometry:{vertices:[{x:0,y:0,z:0}]},mode:0,modifiers:{},attributes:[],multiplier:1,buffers:[]}),Object.assign(this,e),this.prepareProgram(),this.prepareUniforms(),this.prepareAttributes()};B.prototype.compileShader=function(e,o){var t=this.gl.createShader(e);return this.gl.shaderSource(t,o),this.gl.compileShader(t),t},B.prototype.prepareProgram=function(){var e=this.gl,o=this.vertex,t=this.fragment,r=e.createProgram();e.attachShader(r,this.compileShader(35633,o)),e.attachShader(r,this.compileShader(35632,t)),e.linkProgram(r),e.useProgram(r),this.program=r},B.prototype.prepareUniforms=function(){for(var e=Object.keys(this.uniforms),o=0;o<e.length;o+=1){var t=this.gl.getUniformLocation(this.program,e[o]);this.uniforms[e[o]].location=t}},B.prototype.prepareAttributes=function(){this.geometry.vertices!==void 0&&this.attributes.push({name:"aPosition",size:3}),this.geometry.normal!==void 0&&this.attributes.push({name:"aNormal",size:3}),this.attributeKeys=[];for(var e=0;e<this.attributes.length;e+=1)this.attributeKeys.push(this.attributes[e].name),this.prepareAttribute(this.attributes[e])},B.prototype.prepareAttribute=function(e){for(var o=this.geometry,t=this.multiplier,r=o.vertices,i=o.normal,n=new Float32Array(t*r.length*e.size),s=0;s<t;s+=1)for(var a=e.data&&e.data(s,t),c=s*r.length*e.size,l=0;l<r.length;l+=1)for(var b=0;b<e.size;b+=1){var p=this.modifiers[e.name];n[c]=p!==void 0?p(a,l,b,this):e.name==="aPosition"?r[l][Re[b]]:e.name==="aNormal"?i[l][Re[b]]:a[b],c+=1}this.attributes[this.attributeKeys.indexOf(e.name)].data=n,this.prepareBuffer(this.attributes[this.attributeKeys.indexOf(e.name)])},B.prototype.prepareBuffer=function(e){var o=e.data,t=e.name,r=e.size,i=this.gl.createBuffer();this.gl.bindBuffer(34962,i),this.gl.bufferData(34962,o,35044);var n=this.gl.getAttribLocation(this.program,t);this.gl.enableVertexAttribArray(n),this.gl.vertexAttribPointer(n,r,5126,!1,0,0),this.buffers[this.attributeKeys.indexOf(e.name)]={buffer:i,location:n,size:r}},B.prototype.render=function(e){var o=this,t=this.uniforms,r=this.multiplier,i=this.gl;i.useProgram(this.program);for(var n=0;n<this.buffers.length;n+=1){var s=this.buffers[n],a=s.location,c=s.buffer,l=s.size;i.enableVertexAttribArray(a),i.bindBuffer(34962,c),i.vertexAttribPointer(a,l,5126,!1,0,0)}Object.keys(e).forEach(function(b){t[b].value=e[b].value}),Object.keys(t).forEach(function(b){var p=t[b];o.uniformMap[p.type](p.location,p.value)}),i.drawArrays(this.mode,0,r*this.geometry.vertices.length),this.onRender&&this.onRender(this)},B.prototype.destroy=function(){for(var e=0;e<this.buffers.length;e+=1)this.gl.deleteBuffer(this.buffers[e].buffer);this.gl.deleteProgram(this.program),this.gl=null};var V=function(e){var o=this,t=e||{},r=t.canvas;r===void 0&&(r=document.querySelector("canvas"));var i=t.context;i===void 0&&(i={});var n=t.contextType;n===void 0&&(n="experimental-webgl");var s=t.settings;s===void 0&&(s={});var a=r.getContext(n,Object.assign({alpha:!1,antialias:!1},i));Object.assign(this,{gl:a,canvas:r,uniforms:{},instances:new Map,shouldRender:!0}),Object.assign(this,{devicePixelRatio:1,clearColor:[1,1,1,1],position:{x:0,y:0,z:2},clip:[.001,100]}),Object.assign(this,s),this.uniformMap={float:function(c,l){return a.uniform1f(c,l)},vec2:function(c,l){return a.uniform2fv(c,l)},vec3:function(c,l){return a.uniform3fv(c,l)},vec4:function(c,l){return a.uniform4fv(c,l)},mat2:function(c,l){return a.uniformMatrix2fv(c,!1,l)},mat3:function(c,l){return a.uniformMatrix3fv(c,!1,l)},mat4:function(c,l){return a.uniformMatrix4fv(c,!1,l)}},a.enable(a.DEPTH_TEST),a.depthFunc(a.LEQUAL),a.getContextAttributes().alpha===!1&&(a.clearColor.apply(a,this.clearColor),a.clearDepth(1)),this.onSetup&&this.onSetup(a),window.addEventListener("resize",function(){return o.resize()}),this.resize(),this.render()};V.prototype.resize=function(){var e=this.gl,o=this.canvas,t=this.devicePixelRatio,r=this.position;o.width=o.clientWidth*t,o.height=o.clientHeight*t;var i=e.drawingBufferWidth,n=e.drawingBufferHeight,s=i/n;e.viewport(0,0,i,n);var a=Math.tan(Math.PI/180*22.5),c=[1,0,0,0,0,1,0,0,0,0,1,0,r.x,r.y,(s<1?1:s)*-r.z,1];this.uniforms.uProjectionMatrix={type:"mat4",value:[.5/a,0,0,0,0,s/a*.5,0,0,0,0,-(this.clip[1]+this.clip[0])/(this.clip[1]-this.clip[0]),-1,0,0,-2*this.clip[1]*(this.clip[0]/(this.clip[1]-this.clip[0])),0]},this.uniforms.uViewMatrix={type:"mat4",value:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},this.uniforms.uModelMatrix={type:"mat4",value:c}},V.prototype.toggle=function(e){e!==this.shouldRender&&(this.shouldRender=e!==void 0?e:!this.shouldRender,this.shouldRender&&this.render())},V.prototype.render=function(){var e=this;this.gl.clear(16640),this.instances.forEach(function(o){o.render(e.uniforms)}),this.onRender&&this.onRender(this),this.shouldRender&&requestAnimationFrame(function(){return e.render()})},V.prototype.add=function(e,o){o===void 0&&(o={uniforms:{}}),o.uniforms===void 0&&(o.uniforms={}),Object.assign(o.uniforms,JSON.parse(JSON.stringify(this.uniforms))),Object.assign(o,{gl:this.gl,uniformMap:this.uniformMap});var t=new B(o);return this.instances.set(e,t),t},V.prototype.remove=function(e){var o=this.instances.get(e);o!==void 0&&(o.destroy(),this.instances.delete(e))},V.prototype.destroy=function(){var e=this;this.instances.forEach(function(o,t){o.destroy(),e.instances.delete(t)}),this.toggle(!1)};var Pe=V;var Le="phi",Ne="theta",D="mapSamples",Fe="mapBrightness",Ve="baseColor",je="markerColor",De="glowColor",j="markers",Ue="diffuse",Ge="devicePixelRatio",We="dark",Qe="offset",Ye="scale",Xe="opacity",Ke="mapBaseBrightness",Ee={[Le]:"z",[Ne]:"A",[D]:"k",[Fe]:"D",[Ve]:"S",[je]:"T",[De]:"y",[Ue]:"E",[We]:"F",[Qe]:"x",[Ye]:"B",[Xe]:"U",[Ke]:"G"},{PI:q,sin:fe,cos:pe,sqrt:Ie,atan2:yt,floor:K,max:xt,pow:wt,log2:kt}=Math,Te=2.23606797749979,Be=1.618033988749895,At=.7202100452062783,de=6.283185307179586,Oe=3.8832220774509327,ue=.618033988749895,zt=(e,o)=>{let t=[e[0],e[2],e[1]],r=1/o,i=xt(2,K(kt(Te*o*q*(1-t[2]*t[2]))*At)),n=wt(Be,i)/Te,s=[K(n+.5),K(n*Be+.5)],a=[(s[0]+1)*ue%1*de-Oe,(s[1]+1)*ue%1*de-Oe],c=[-2*s[0],-2*s[1]],l=[yt(t[1],t[0]),t[2]-1],b=a[0]*c[1]-c[0]*a[1],p=[K((c[1]*l[0]-a[1]*(l[1]*o+1))/b),K((-c[0]*l[0]+a[0]*(l[1]*o+1))/b)],x=q,g=[0,0,0];for(let P=0;P<4;P++){let w=s[0]*(p[0]+P%2)+s[1]*(p[1]+K(P*.5));if(w>o)continue;let C=w*ue%1*de,S=1-2*w*r,k=Ie(1-S*S),G=[pe(C)*k,fe(C)*k,S],I=Ie((t[0]-G[0])**2+(t[1]-G[1])**2+(t[2]-G[2])**2);I<x&&(x=I,g=G)}return[g[0],g[2],g[1]]},me=(e,o)=>[].concat(...e.map(t=>{let[r,i]=t.location;r=r*q/180,i=i*q/180-q;let n=pe(r),s=[-n*pe(i),fe(r),n*fe(i)];return[...zt(s,o),t.size,...t.color?[...t.color,1]:[0,0,0,0]]}),[0,0,0,0,0,0,0,0]),qe=(e,o)=>{let t=(n,s,a)=>({type:n,value:typeof o[s]>"u"?a:o[s]}),r=e.getContext("webgl2")?"webgl2":e.getContext("webgl")?"webgl":"experimental-webgl",i=new Pe({canvas:e,contextType:r,context:{alpha:!0,stencil:!1,antialias:!0,depth:!1,preserveDrawingBuffer:!1,...o.context},settings:{[Ge]:o[Ge]||1,onSetup:n=>{let s=n.RGB,a=n.UNSIGNED_BYTE,c=n.TEXTURE_2D,l=n.createTexture();n.bindTexture(c,l),n.texImage2D(c,0,s,1,1,0,s,a,new Uint8Array([0,0,0,0]));let b=new Image;b.onload=()=>{n.bindTexture(c,l),n.texImage2D(c,0,s,s,a,b),n.generateMipmap(c);let p=n.getParameter(n.CURRENT_PROGRAM),x=n.getUniformLocation(p,"H");n.texParameteri(c,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(c,n.TEXTURE_MAG_FILTER,n.NEAREST),n.uniform1i(x,0)},b.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAACAAQAAAADMzoqnAAAAAXNSR0IArs4c6QAABA5JREFUeNrV179uHEUAx/Hf3JpbF+E2VASBsmVKTBcpKJs3SMEDcDwBiVJAAewYEBUivIHT0uUBIt0YCovKD0CRjUC4QfHYh8hYXu+P25vZ2Zm9c66gMd/GJ/tz82d3bk8GN4SrByYF2366FNTACIAkivVAAazQdnf3MvAlbNUQfOPAdQDvSAimMWhwy4I2g4SU+Kp04ISLpPBAKLxPyic3O/CCi+Y7rUJbiodcpDOFY7CgxCEXmdYD2EYK2s5lApOx5pEDDYCUwM1XdJUwBV11QQMg59kePSCaPAASQMEL2hwo6TJFgxpg+TgC2ymXPbuvc40awr3D1QCFfbH9kcoqAOkZozpQo0aqAGQRKCog/+tjkgbNFEtg2FffBvBGlSxHoAaAa1u6X4PBAwDiR8FFsrQgeUhfJTSALaB9jy5NCybJPn1SVFiWk7ywN+KzhH1aKAuydhGkbEF4lWohLXDXavlyFgHY7LBnLRdlAP6BS5Cc8RfVDXbkwN/oIvmY+6obbNeBP0JwTuMGu9gTzy1Q4RS/cWpfzszeYwd+CAFrtBW/Hur0gLbJGlD+/OjVwe/drfBxkbbg63dndEDfiEBlAd7ac0BPe1D6Jd8dfbLH+RI0OzseFB5s01/M+gMdAeluLOCAuaUA9Lezo/vSgXoCX9rtEiXnp7Q1W/CNyWcd8DXoS6jH/YZ5vAJEWY2dXFQe2TUgaFaNejCzJ98g6HnlVrsE58sDcYqg+9XY75fPqdoh/kRQWiXKg8MWlJQxUFMPjqnyujhFBE7UxIMjyszk0QwQlFsezImsyvUYYYVED2pk6m0Tg8T04Fwjk2kdAwSACqlM6gRRt3vQYAFGX0Ah7Ebx1H+MDRI5ui0QldH4j7FGcm90XdxD2Jg1AOEAVAKhEFXSn4cKUELurIAKwJ3MArypPscQaLhJFICJ0ohjDySAdH8AhDtCiTuMycH8CXzhH9jUACAO5uMhoAwA5i+T6WAKmmAqnLy80wxHqIPFYpqCwxGaYLt4Dyievg5kEoVEUAhs6pqKgFtDQYOuaXypaWKQfIuwwoGSZgfLsu/XAtI8cGN+h7Cc1A5oLOMhwlIPXuhu48AIvsSBkvtV9wsJRKCyYLfq5lTrQMFd1a262oqBck9K1V0YjQg0iEYYgpS1A9GlXQV5cykwm4A7BzVsxQqo7E+zCegO7Ma7yKgsuOcfKbMBwLC8wvVNYDsANYalEpOAa6zpWjTeMKGwEwC1CiQewJc5EKfgy7GmRAZA4vUVGwE2dPM/g0xuAInE/yG5aZ8ISxWGfYigUVbdyBElTHh2uCwGdfCkOLGgQVBh3Ewp+/QK4CDlR5Ws/Zf7yhCf8pH7vinWAvoVCQ6zz0NX5V/6GkAVV+2/5qsJ/gU8bsxpM8IeAQAAAABJRU5ErkJggg=="}}});return i.add("",{vertex:"attribute vec3 aPosition;uniform mat4 uProjectionMatrix;uniform mat4 uModelMatrix;uniform mat4 uViewMatrix;void main(){gl_Position=uProjectionMatrix*uModelMatrix*uViewMatrix*vec4(aPosition,1.);}",fragment:"precision highp float;uniform vec2 w,x;uniform vec3 S,T,y;uniform vec4 u[64*2];uniform float z,A,k,B,C,D,E,F,U,G;uniform sampler2D H;float I=1./k;mat3 J(float a,float b){float c=cos(a),d=cos(b),e=sin(a),f=sin(b);return mat3(d,f*e,-f*c,0.,c,e,f,d*-e,d*c);}vec3 K(vec3 c,out float v){c=c.xzy;float p=max(2.,floor(log2(2.236068*k*3.141593*(1.-c.z*c.z))*.72021));vec2 g=floor(pow(1.618034,p)/2.236068*vec2(1,1.618034)+.5),d=fract((g+1.)*.618034)*6.283185-3.883222,e=-2.*g,f=vec2(atan(c.y,c.x),c.z-1.),q=floor(vec2(e.y*f.x-d.y*(f.y*k+1.),-e.x*f.x+d.x*(f.y*k+1.))/(d.x*e.y-e.x*d.y));float n=3.141593;vec3 r;for(float h=0.;h<4.;h+=1.){vec2 s=vec2(mod(h,2.),floor(h*.5));float j=dot(g,q+s);if(j>k)continue;float a=j,b=0.;if(a>=524288.)a-=524288.,b+=.803894;if(a>=262144.)a-=262144.,b+=.901947;if(a>=131072.)a-=131072.,b+=.950973;if(a>=65536.)a-=65536.,b+=.475487;if(a>=32768.)a-=32768.,b+=.737743;if(a>=16384.)a-=16384.,b+=.868872;if(a>=8192.)a-=8192.,b+=.934436;if(a>=4096.)a-=4096.,b+=.467218;if(a>=2048.)a-=2048.,b+=.733609;if(a>=1024.)a-=1024.,b+=.866804;if(a>=512.)a-=512.,b+=.433402;if(a>=256.)a-=256.,b+=.216701;if(a>=128.)a-=128.,b+=.108351;if(a>=64.)a-=64.,b+=.554175;if(a>=32.)a-=32.,b+=.777088;if(a>=16.)a-=16.,b+=.888544;if(a>=8.)a-=8.,b+=.944272;if(a>=4.)a-=4.,b+=.472136;if(a>=2.)a-=2.,b+=.236068;if(a>=1.)a-=1.,b+=.618034;float l=fract(b)*6.283185,i=1.-2.*j*I,m=sqrt(1.-i*i);vec3 o=vec3(cos(l)*m,sin(l)*m,i);float t=length(c-o);if(t<n)n=t,r=o;}v=n;return r.xzy;}void main(){vec2 f=1./w,a=(gl_FragCoord.xy*f*2.-1.)/B-x*vec2(1,-1)*f;a.x*=w.x*f.y;float c=dot(a,a);vec4 t=vec4(0);float j=0.;int V=int(C);if(c<=.64){float b;vec4 e=vec4(0);vec3 v=vec3(0,0,1),l=normalize(vec3(a,sqrt(.64-c)));mat3 L=J(A,z);float g=dot(l,v);vec3 m=l*L,h=K(m,b);float n=asin(h.y),i=acos(-h.x/cos(n));i=h.z<0.?-i:i;float M=max(texture2D(H,vec2(i*.5/3.141593,-(n/3.141593+.5))).x,G),N=smoothstep(8e-3,0.,b),o=pow(g,E)*D,p=M*N*o,W=mix((1.-p)*pow(g,.4),p,F)+.1;e+=vec4(S*W,1.);float X=0.;for(int d=0;d<128;d+=2){if(d>=V)break;vec4 q=u[d],O=u[d+1];vec3 P=q.xyz;float r=q.w;vec3 Y=P-m;b=length(Y);if(b<r){float Q=r*.5,s=smoothstep(Q,0.,b);X+=s,e.xyz=O.w>.5?mix(e.xyz,O.xyz,s*o):mix(e.xyz,T,s*o);}}e.xyz+=pow(1.-g,4.)*y,t+=e*(1.+U)*.5,j=pow(dot(normalize(vec3(-a,sqrt(1.-c))),vec3(0,0,1)),4.)*smoothstep(0.,1.,.2/(c-.64));}else{float R=sqrt(.2/(c-.64));j=smoothstep(.5,1.,R/(R+1.));}gl_FragColor=t+vec4(j*y,j);}",uniforms:{w:{type:"vec2",value:[o.width,o.height]},z:t("float",Le),A:t("float",Ne),k:t("float",D),D:t("float",Fe),G:t("float",Ke),S:t("vec3",Ve),T:t("vec3",je),E:t("float",Ue),y:t("vec3",De),F:t("float",We),u:{type:"vec4",value:me(o[j],o[D])},C:{type:"float",value:o[j].length*2},x:t("vec2",Qe,[0,0]),B:t("float",Ye,1),U:t("float",Xe,1)},mode:4,geometry:{vertices:[{x:-100,y:100,z:0},{x:-100,y:-100,z:0},{x:100,y:100,z:0},{x:100,y:-100,z:0},{x:-100,y:-100,z:0},{x:100,y:100,z:0}]},onRender:({uniforms:n})=>{let s={};if(o.onRender){s=o.onRender(s)||s;for(let a in Ee)s[a]!==void 0&&(n[Ee[a]].value=s[a]);if(s[j]!==void 0){let a=s[D]!==void 0?s[D]:n.k.value;n.u.value=me(s[j],a),n.C.value=s[j].length}s.width&&s.height&&(n.w.value=[s.width,s.height]),s[D]!==void 0&&(n.u.value=me(s[j]||o[j],s[D]))}}}),i};import{useMotionValue as go,useSpring as vo}from"motion/react";function Je(e){var o,t,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(o=0;o<i;o++)e[o]&&(t=Je(e[o]))&&(r&&(r+=" "),r+=t)}else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}function _e(){for(var e,o,t=0,r="",i=arguments.length;t<i;t++)(e=arguments[t])&&(o=Je(e))&&(r&&(r+=" "),r+=o);return r}var Ct=(e,o)=>{let t=new Array(e.length+o.length);for(let r=0;r<e.length;r++)t[r]=e[r];for(let r=0;r<o.length;r++)t[e.length+r]=o[r];return t},Mt=(e,o)=>({classGroupId:e,validator:o}),rt=(e=new Map,o=null,t)=>({nextPart:e,validators:o,classGroupId:t}),se="-",He=[],St="arbitrary..",Rt=e=>{let o=Gt(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return Pt(s);let a=s.split(se),c=a[0]===""&&a.length>1?1:0;return st(a,c,o)},getConflictingClassGroupIds:(s,a)=>{if(a){let c=r[s],l=t[s];return c?l?Ct(l,c):c:l||He}return t[s]||He}}},st=(e,o,t)=>{if(e.length-o===0)return t.classGroupId;let i=e[o],n=t.nextPart.get(i);if(n){let l=st(e,o+1,n);if(l)return l}let s=t.validators;if(s===null)return;let a=o===0?e.join(se):e.slice(o).join(se),c=s.length;for(let l=0;l<c;l++){let b=s[l];if(b.validator(a))return b.classGroupId}},Pt=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let o=e.slice(1,-1),t=o.indexOf(":"),r=o.slice(0,t);return r?St+r:void 0})(),Gt=e=>{let{theme:o,classGroups:t}=e;return Et(t,o)},Et=(e,o)=>{let t=rt();for(let r in e){let i=e[r];ge(i,t,r,o)}return t},ge=(e,o,t,r)=>{let i=e.length;for(let n=0;n<i;n++){let s=e[n];It(s,o,t,r)}},It=(e,o,t,r)=>{if(typeof e=="string"){Tt(e,o,t);return}if(typeof e=="function"){Bt(e,o,t,r);return}Ot(e,o,t,r)},Tt=(e,o,t)=>{let r=e===""?o:nt(o,e);r.classGroupId=t},Bt=(e,o,t,r)=>{if(Lt(e)){ge(e(r),o,t,r);return}o.validators===null&&(o.validators=[]),o.validators.push(Mt(t,e))},Ot=(e,o,t,r)=>{let i=Object.entries(e),n=i.length;for(let s=0;s<n;s++){let[a,c]=i[s];ge(c,nt(o,a),t,r)}},nt=(e,o)=>{let t=e,r=o.split(se),i=r.length;for(let n=0;n<i;n++){let s=r[n],a=t.nextPart.get(s);a||(a=rt(),t.nextPart.set(s,a)),t=a}return t},Lt=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Nt=e=>{if(e<1)return{get:()=>{},set:()=>{}};let o=0,t=Object.create(null),r=Object.create(null),i=(n,s)=>{t[n]=s,o++,o>e&&(o=0,r=t,t=Object.create(null))};return{get(n){let s=t[n];if(s!==void 0)return s;if((s=r[n])!==void 0)return i(n,s),s},set(n,s){n in t?t[n]=s:i(n,s)}}},be="!",Ze=":",Ft=[],$e=(e,o,t,r,i)=>({modifiers:e,hasImportantModifier:o,baseClassName:t,maybePostfixModifierPosition:r,isExternal:i}),Vt=e=>{let{prefix:o,experimentalParseClassName:t}=e,r=i=>{let n=[],s=0,a=0,c=0,l,b=i.length;for(let w=0;w<b;w++){let C=i[w];if(s===0&&a===0){if(C===Ze){n.push(i.slice(c,w)),c=w+1;continue}if(C==="/"){l=w;continue}}C==="["?s++:C==="]"?s--:C==="("?a++:C===")"&&a--}let p=n.length===0?i:i.slice(c),x=p,g=!1;p.endsWith(be)?(x=p.slice(0,-1),g=!0):p.startsWith(be)&&(x=p.slice(1),g=!0);let P=l&&l>c?l-c:void 0;return $e(n,g,x,P)};if(o){let i=o+Ze,n=r;r=s=>s.startsWith(i)?n(s.slice(i.length)):$e(Ft,!1,s,void 0,!0)}if(t){let i=r;r=n=>t({className:n,parseClassName:i})}return r},jt=e=>{let o=new Map;return e.orderSensitiveModifiers.forEach((t,r)=>{o.set(t,1e6+r)}),t=>{let r=[],i=[];for(let n=0;n<t.length;n++){let s=t[n],a=s[0]==="[",c=o.has(s);a||c?(i.length>0&&(i.sort(),r.push(...i),i=[]),r.push(s)):i.push(s)}return i.length>0&&(i.sort(),r.push(...i)),r}},Dt=e=>({cache:Nt(e.cacheSize),parseClassName:Vt(e),sortModifiers:jt(e),postfixLookupClassGroupIds:Ut(e),...Rt(e)}),Ut=e=>{let o=Object.create(null),t=e.postfixLookupClassGroups;if(t)for(let r=0;r<t.length;r++)o[t[r]]=!0;return o},Wt=/\s+/,Qt=(e,o)=>{let{parseClassName:t,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:n,postfixLookupClassGroupIds:s}=o,a=[],c=e.trim().split(Wt),l="";for(let b=c.length-1;b>=0;b-=1){let p=c[b],{isExternal:x,modifiers:g,hasImportantModifier:P,baseClassName:w,maybePostfixModifierPosition:C}=t(p);if(x){l=p+(l.length>0?" "+l:l);continue}let S=!!C,k;if(S){let T=w.substring(0,C);k=r(T);let m=k&&s[k]?r(w):void 0;m&&m!==k&&(k=m,S=!1)}else k=r(w);if(!k){if(!S){l=p+(l.length>0?" "+l:l);continue}if(k=r(w),!k){l=p+(l.length>0?" "+l:l);continue}S=!1}let G=g.length===0?"":g.length===1?g[0]:n(g).join(":"),I=P?G+be:G,Q=I+k;if(a.indexOf(Q)>-1)continue;a.push(Q);let Y=i(k,S);for(let T=0;T<Y.length;++T){let m=Y[T];a.push(I+m)}l=p+(l.length>0?" "+l:l)}return l},Yt=(...e)=>{let o=0,t,r,i="";for(;o<e.length;)(t=e[o++])&&(r=it(t))&&(i&&(i+=" "),i+=r);return i},it=e=>{if(typeof e=="string")return e;let o,t="";for(let r=0;r<e.length;r++)e[r]&&(o=it(e[r]))&&(t&&(t+=" "),t+=o);return t},Xt=(e,...o)=>{let t,r,i,n,s=c=>{let l=o.reduce((b,p)=>p(b),e());return t=Dt(l),r=t.cache.get,i=t.cache.set,n=a,a(c)},a=c=>{let l=r(c);if(l)return l;let b=Qt(c,t);return i(c,b),b};return n=s,(...c)=>n(Yt(...c))},Kt=[],v=e=>{let o=t=>t[e]||Kt;return o.isThemeGetter=!0,o},at=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,lt=/^\((?:(\w[\w-]*):)?(.+)\)$/i,qt=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Jt=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,_t=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ht=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Zt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,$t=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,L=e=>qt.test(e),h=e=>!!e&&!Number.isNaN(Number(e)),E=e=>!!e&&Number.isInteger(Number(e)),he=e=>e.endsWith("%")&&h(e.slice(0,-1)),O=e=>Jt.test(e),ct=()=>!0,eo=e=>_t.test(e)&&!Ht.test(e),ve=()=>!1,to=e=>Zt.test(e),oo=e=>$t.test(e),ro=e=>!d(e)&&!u(e),so=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),no=e=>N(e,mt,ve),d=e=>at.test(e),U=e=>N(e,ft,eo),et=e=>N(e,po,h),io=e=>N(e,ht,ct),ao=e=>N(e,pt,ve),tt=e=>N(e,dt,ve),lo=e=>N(e,ut,oo),oe=e=>N(e,bt,to),u=e=>lt.test(e),J=e=>W(e,ft),co=e=>W(e,pt),ot=e=>W(e,dt),uo=e=>W(e,mt),mo=e=>W(e,ut),re=e=>W(e,bt,!0),fo=e=>W(e,ht,!0),N=(e,o,t)=>{let r=at.exec(e);return r?r[1]?o(r[1]):t(r[2]):!1},W=(e,o,t=!1)=>{let r=lt.exec(e);return r?r[1]?o(r[1]):t:!1},dt=e=>e==="position"||e==="percentage",ut=e=>e==="image"||e==="url",mt=e=>e==="length"||e==="size"||e==="bg-size",ft=e=>e==="length",po=e=>e==="number",pt=e=>e==="family-name",ht=e=>e==="number"||e==="weight",bt=e=>e==="shadow";var ho=()=>{let e=v("color"),o=v("font"),t=v("text"),r=v("font-weight"),i=v("tracking"),n=v("leading"),s=v("breakpoint"),a=v("container"),c=v("spacing"),l=v("radius"),b=v("shadow"),p=v("inset-shadow"),x=v("text-shadow"),g=v("drop-shadow"),P=v("blur"),w=v("perspective"),C=v("aspect"),S=v("ease"),k=v("animate"),G=()=>["auto","avoid","all","avoid-page","page","left","right","column"],I=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],Q=()=>[...I(),u,d],Y=()=>["auto","hidden","clip","visible","scroll"],T=()=>["auto","contain","none"],m=()=>[u,d,c],M=()=>[L,"full","auto",...m()],xe=()=>[E,"none","subgrid",u,d],we=()=>["auto",{span:["full",E,u,d]},E,u,d],H=()=>[E,"auto",u,d],ke=()=>["auto","min","max","fr",u,d],ne=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],X=()=>["start","end","center","stretch","center-safe","end-safe"],R=()=>["auto",...m()],F=()=>[L,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...m()],ie=()=>[L,"screen","full","dvw","lvw","svw","min","max","fit",...m()],ae=()=>[L,"screen","full","lh","dvh","lvh","svh","min","max","fit",...m()],f=()=>[e,u,d],Ae=()=>[...I(),ot,tt,{position:[u,d]}],ze=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Ce=()=>["auto","cover","contain",uo,no,{size:[u,d]}],le=()=>[he,J,U],A=()=>["","none","full",l,u,d],z=()=>["",h,J,U],Z=()=>["solid","dashed","dotted","double"],Me=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],y=()=>[h,he,ot,tt],Se=()=>["","none",P,u,d],$=()=>["none",h,u,d],ee=()=>["none",h,u,d],ce=()=>[h,u,d],te=()=>[L,"full",...m()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[O],breakpoint:[O],color:[ct],container:[O],"drop-shadow":[O],ease:["in","out","in-out"],font:[ro],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[O],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[O],shadow:[O],spacing:["px",h],text:[O],"text-shadow":[O],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",L,d,u,C]}],container:["container"],"container-type":[{"@container":["","normal","size",u,d]}],"container-named":[so],columns:[{columns:[h,d,u,a]}],"break-after":[{"break-after":G()}],"break-before":[{"break-before":G()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:Q()}],overflow:[{overflow:Y()}],"overflow-x":[{"overflow-x":Y()}],"overflow-y":[{"overflow-y":Y()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:M()}],"inset-x":[{"inset-x":M()}],"inset-y":[{"inset-y":M()}],start:[{"inset-s":M(),start:M()}],end:[{"inset-e":M(),end:M()}],"inset-bs":[{"inset-bs":M()}],"inset-be":[{"inset-be":M()}],top:[{top:M()}],right:[{right:M()}],bottom:[{bottom:M()}],left:[{left:M()}],visibility:["visible","invisible","collapse"],z:[{z:[E,"auto",u,d]}],basis:[{basis:[L,"full","auto",a,...m()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[h,L,"auto","initial","none",d]}],grow:[{grow:["",h,u,d]}],shrink:[{shrink:["",h,u,d]}],order:[{order:[E,"first","last","none",u,d]}],"grid-cols":[{"grid-cols":xe()}],"col-start-end":[{col:we()}],"col-start":[{"col-start":H()}],"col-end":[{"col-end":H()}],"grid-rows":[{"grid-rows":xe()}],"row-start-end":[{row:we()}],"row-start":[{"row-start":H()}],"row-end":[{"row-end":H()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ke()}],"auto-rows":[{"auto-rows":ke()}],gap:[{gap:m()}],"gap-x":[{"gap-x":m()}],"gap-y":[{"gap-y":m()}],"justify-content":[{justify:[...ne(),"normal"]}],"justify-items":[{"justify-items":[...X(),"normal"]}],"justify-self":[{"justify-self":["auto",...X()]}],"align-content":[{content:["normal",...ne()]}],"align-items":[{items:[...X(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...X(),{baseline:["","last"]}]}],"place-content":[{"place-content":ne()}],"place-items":[{"place-items":[...X(),"baseline"]}],"place-self":[{"place-self":["auto",...X()]}],p:[{p:m()}],px:[{px:m()}],py:[{py:m()}],ps:[{ps:m()}],pe:[{pe:m()}],pbs:[{pbs:m()}],pbe:[{pbe:m()}],pt:[{pt:m()}],pr:[{pr:m()}],pb:[{pb:m()}],pl:[{pl:m()}],m:[{m:R()}],mx:[{mx:R()}],my:[{my:R()}],ms:[{ms:R()}],me:[{me:R()}],mbs:[{mbs:R()}],mbe:[{mbe:R()}],mt:[{mt:R()}],mr:[{mr:R()}],mb:[{mb:R()}],ml:[{ml:R()}],"space-x":[{"space-x":m()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":m()}],"space-y-reverse":["space-y-reverse"],size:[{size:F()}],"inline-size":[{inline:["auto",...ie()]}],"min-inline-size":[{"min-inline":["auto",...ie()]}],"max-inline-size":[{"max-inline":["none",...ie()]}],"block-size":[{block:["auto",...ae()]}],"min-block-size":[{"min-block":["auto",...ae()]}],"max-block-size":[{"max-block":["none",...ae()]}],w:[{w:[a,"screen",...F()]}],"min-w":[{"min-w":[a,"screen","none",...F()]}],"max-w":[{"max-w":[a,"screen","none","prose",{screen:[s]},...F()]}],h:[{h:["screen","lh",...F()]}],"min-h":[{"min-h":["screen","lh","none",...F()]}],"max-h":[{"max-h":["screen","lh",...F()]}],"font-size":[{text:["base",t,J,U]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,fo,io]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",he,d]}],"font-family":[{font:[co,ao,o]}],"font-features":[{"font-features":[d]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[i,u,d]}],"line-clamp":[{"line-clamp":[h,"none",u,et]}],leading:[{leading:[n,...m()]}],"list-image":[{"list-image":["none",u,d]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",u,d]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:f()}],"text-color":[{text:f()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Z(),"wavy"]}],"text-decoration-thickness":[{decoration:[h,"from-font","auto",u,U]}],"text-decoration-color":[{decoration:f()}],"underline-offset":[{"underline-offset":[h,"auto",u,d]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:m()}],"tab-size":[{tab:[E,u,d]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",u,d]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",u,d]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Ae()}],"bg-repeat":[{bg:ze()}],"bg-size":[{bg:Ce()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},E,u,d],radial:["",u,d],conic:[E,u,d]},mo,lo]}],"bg-color":[{bg:f()}],"gradient-from-pos":[{from:le()}],"gradient-via-pos":[{via:le()}],"gradient-to-pos":[{to:le()}],"gradient-from":[{from:f()}],"gradient-via":[{via:f()}],"gradient-to":[{to:f()}],rounded:[{rounded:A()}],"rounded-s":[{"rounded-s":A()}],"rounded-e":[{"rounded-e":A()}],"rounded-t":[{"rounded-t":A()}],"rounded-r":[{"rounded-r":A()}],"rounded-b":[{"rounded-b":A()}],"rounded-l":[{"rounded-l":A()}],"rounded-ss":[{"rounded-ss":A()}],"rounded-se":[{"rounded-se":A()}],"rounded-ee":[{"rounded-ee":A()}],"rounded-es":[{"rounded-es":A()}],"rounded-tl":[{"rounded-tl":A()}],"rounded-tr":[{"rounded-tr":A()}],"rounded-br":[{"rounded-br":A()}],"rounded-bl":[{"rounded-bl":A()}],"border-w":[{border:z()}],"border-w-x":[{"border-x":z()}],"border-w-y":[{"border-y":z()}],"border-w-s":[{"border-s":z()}],"border-w-e":[{"border-e":z()}],"border-w-bs":[{"border-bs":z()}],"border-w-be":[{"border-be":z()}],"border-w-t":[{"border-t":z()}],"border-w-r":[{"border-r":z()}],"border-w-b":[{"border-b":z()}],"border-w-l":[{"border-l":z()}],"divide-x":[{"divide-x":z()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":z()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Z(),"hidden","none"]}],"divide-style":[{divide:[...Z(),"hidden","none"]}],"border-color":[{border:f()}],"border-color-x":[{"border-x":f()}],"border-color-y":[{"border-y":f()}],"border-color-s":[{"border-s":f()}],"border-color-e":[{"border-e":f()}],"border-color-bs":[{"border-bs":f()}],"border-color-be":[{"border-be":f()}],"border-color-t":[{"border-t":f()}],"border-color-r":[{"border-r":f()}],"border-color-b":[{"border-b":f()}],"border-color-l":[{"border-l":f()}],"divide-color":[{divide:f()}],"outline-style":[{outline:[...Z(),"none","hidden"]}],"outline-offset":[{"outline-offset":[h,u,d]}],"outline-w":[{outline:["",h,J,U]}],"outline-color":[{outline:f()}],shadow:[{shadow:["","none",b,re,oe]}],"shadow-color":[{shadow:f()}],"inset-shadow":[{"inset-shadow":["none",p,re,oe]}],"inset-shadow-color":[{"inset-shadow":f()}],"ring-w":[{ring:z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:f()}],"ring-offset-w":[{"ring-offset":[h,U]}],"ring-offset-color":[{"ring-offset":f()}],"inset-ring-w":[{"inset-ring":z()}],"inset-ring-color":[{"inset-ring":f()}],"text-shadow":[{"text-shadow":["none",x,re,oe]}],"text-shadow-color":[{"text-shadow":f()}],opacity:[{opacity:[h,u,d]}],"mix-blend":[{"mix-blend":[...Me(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Me()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[h]}],"mask-image-linear-from-pos":[{"mask-linear-from":y()}],"mask-image-linear-to-pos":[{"mask-linear-to":y()}],"mask-image-linear-from-color":[{"mask-linear-from":f()}],"mask-image-linear-to-color":[{"mask-linear-to":f()}],"mask-image-t-from-pos":[{"mask-t-from":y()}],"mask-image-t-to-pos":[{"mask-t-to":y()}],"mask-image-t-from-color":[{"mask-t-from":f()}],"mask-image-t-to-color":[{"mask-t-to":f()}],"mask-image-r-from-pos":[{"mask-r-from":y()}],"mask-image-r-to-pos":[{"mask-r-to":y()}],"mask-image-r-from-color":[{"mask-r-from":f()}],"mask-image-r-to-color":[{"mask-r-to":f()}],"mask-image-b-from-pos":[{"mask-b-from":y()}],"mask-image-b-to-pos":[{"mask-b-to":y()}],"mask-image-b-from-color":[{"mask-b-from":f()}],"mask-image-b-to-color":[{"mask-b-to":f()}],"mask-image-l-from-pos":[{"mask-l-from":y()}],"mask-image-l-to-pos":[{"mask-l-to":y()}],"mask-image-l-from-color":[{"mask-l-from":f()}],"mask-image-l-to-color":[{"mask-l-to":f()}],"mask-image-x-from-pos":[{"mask-x-from":y()}],"mask-image-x-to-pos":[{"mask-x-to":y()}],"mask-image-x-from-color":[{"mask-x-from":f()}],"mask-image-x-to-color":[{"mask-x-to":f()}],"mask-image-y-from-pos":[{"mask-y-from":y()}],"mask-image-y-to-pos":[{"mask-y-to":y()}],"mask-image-y-from-color":[{"mask-y-from":f()}],"mask-image-y-to-color":[{"mask-y-to":f()}],"mask-image-radial":[{"mask-radial":[u,d]}],"mask-image-radial-from-pos":[{"mask-radial-from":y()}],"mask-image-radial-to-pos":[{"mask-radial-to":y()}],"mask-image-radial-from-color":[{"mask-radial-from":f()}],"mask-image-radial-to-color":[{"mask-radial-to":f()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":I()}],"mask-image-conic-pos":[{"mask-conic":[h]}],"mask-image-conic-from-pos":[{"mask-conic-from":y()}],"mask-image-conic-to-pos":[{"mask-conic-to":y()}],"mask-image-conic-from-color":[{"mask-conic-from":f()}],"mask-image-conic-to-color":[{"mask-conic-to":f()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Ae()}],"mask-repeat":[{mask:ze()}],"mask-size":[{mask:Ce()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",u,d]}],filter:[{filter:["","none",u,d]}],blur:[{blur:Se()}],brightness:[{brightness:[h,u,d]}],contrast:[{contrast:[h,u,d]}],"drop-shadow":[{"drop-shadow":["","none",g,re,oe]}],"drop-shadow-color":[{"drop-shadow":f()}],grayscale:[{grayscale:["",h,u,d]}],"hue-rotate":[{"hue-rotate":[h,u,d]}],invert:[{invert:["",h,u,d]}],saturate:[{saturate:[h,u,d]}],sepia:[{sepia:["",h,u,d]}],"backdrop-filter":[{"backdrop-filter":["","none",u,d]}],"backdrop-blur":[{"backdrop-blur":Se()}],"backdrop-brightness":[{"backdrop-brightness":[h,u,d]}],"backdrop-contrast":[{"backdrop-contrast":[h,u,d]}],"backdrop-grayscale":[{"backdrop-grayscale":["",h,u,d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[h,u,d]}],"backdrop-invert":[{"backdrop-invert":["",h,u,d]}],"backdrop-opacity":[{"backdrop-opacity":[h,u,d]}],"backdrop-saturate":[{"backdrop-saturate":[h,u,d]}],"backdrop-sepia":[{"backdrop-sepia":["",h,u,d]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":m()}],"border-spacing-x":[{"border-spacing-x":m()}],"border-spacing-y":[{"border-spacing-y":m()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",u,d]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[h,"initial",u,d]}],ease:[{ease:["linear","initial",S,u,d]}],delay:[{delay:[h,u,d]}],animate:[{animate:["none",k,u,d]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,u,d]}],"perspective-origin":[{"perspective-origin":Q()}],rotate:[{rotate:$()}],"rotate-x":[{"rotate-x":$()}],"rotate-y":[{"rotate-y":$()}],"rotate-z":[{"rotate-z":$()}],scale:[{scale:ee()}],"scale-x":[{"scale-x":ee()}],"scale-y":[{"scale-y":ee()}],"scale-z":[{"scale-z":ee()}],"scale-3d":["scale-3d"],skew:[{skew:ce()}],"skew-x":[{"skew-x":ce()}],"skew-y":[{"skew-y":ce()}],transform:[{transform:[u,d,"","none","gpu","cpu"]}],"transform-origin":[{origin:Q()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:te()}],"translate-x":[{"translate-x":te()}],"translate-y":[{"translate-y":te()}],"translate-z":[{"translate-z":te()}],"translate-none":["translate-none"],zoom:[{zoom:[E,u,d]}],accent:[{accent:f()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:f()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",u,d]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":f()}],"scrollbar-track-color":[{"scrollbar-track":f()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":m()}],"scroll-mx":[{"scroll-mx":m()}],"scroll-my":[{"scroll-my":m()}],"scroll-ms":[{"scroll-ms":m()}],"scroll-me":[{"scroll-me":m()}],"scroll-mbs":[{"scroll-mbs":m()}],"scroll-mbe":[{"scroll-mbe":m()}],"scroll-mt":[{"scroll-mt":m()}],"scroll-mr":[{"scroll-mr":m()}],"scroll-mb":[{"scroll-mb":m()}],"scroll-ml":[{"scroll-ml":m()}],"scroll-p":[{"scroll-p":m()}],"scroll-px":[{"scroll-px":m()}],"scroll-py":[{"scroll-py":m()}],"scroll-ps":[{"scroll-ps":m()}],"scroll-pe":[{"scroll-pe":m()}],"scroll-pbs":[{"scroll-pbs":m()}],"scroll-pbe":[{"scroll-pbe":m()}],"scroll-pt":[{"scroll-pt":m()}],"scroll-pr":[{"scroll-pr":m()}],"scroll-pb":[{"scroll-pb":m()}],"scroll-pl":[{"scroll-pl":m()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",u,d]}],fill:[{fill:["none",...f()]}],"stroke-w":[{stroke:[h,J,U,et]}],stroke:[{stroke:["none",...f()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var gt=Xt(ho);function ye(...e){return gt(_e(e))}import{jsx as vt}from"react/jsx-runtime";var yo=1400,xo={width:800,height:800,onRender:()=>{},devicePixelRatio:2,phi:0,theta:.3,dark:0,diffuse:.4,mapSamples:16e3,mapBrightness:1.2,baseColor:[1,1,1],markerColor:[251/255,100/255,21/255],glowColor:[1,1,1],markers:[{location:[14.5995,120.9842],size:.03},{location:[19.076,72.8777],size:.1},{location:[23.8103,90.4125],size:.05},{location:[30.0444,31.2357],size:.07},{location:[39.9042,116.4074],size:.08},{location:[-23.5505,-46.6333],size:.1},{location:[19.4326,-99.1332],size:.1},{location:[40.7128,-74.006],size:.1},{location:[34.6937,135.5022],size:.05},{location:[41.0082,28.9784],size:.06}]};function To({className:e,config:o=xo}){let t=_(null),r=_(0),i=_(0),n=_(null),s=_(0),a=go(0),c=vo(a,{mass:1,damping:30,stiffness:100}),l=p=>{n.current=p,t.current&&(t.current.style.cursor=p!==null?"grabbing":"grab")},b=p=>{if(n.current!==null){let x=p-n.current;s.current=x,a.set(a.get()+x/yo)}};return bo(()=>{let p=()=>{t.current&&(i.current=t.current.offsetWidth)};window.addEventListener("resize",p),p();let x=qe(t.current,{...o,width:i.current*2,height:i.current*2,onRender:g=>{n.current||(r.current+=.005),g.phi=r.current+c.get(),g.width=i.current*2,g.height=i.current*2}});return setTimeout(()=>t.current.style.opacity="1",0),()=>{x.destroy(),window.removeEventListener("resize",p)}},[c,o]),vt("div",{className:ye("absolute inset-0 mx-auto aspect-square w-full max-w-150",e),children:vt("canvas",{className:ye("size-full opacity-0 transition-opacity duration-500 contain-[layout_paint_size]"),ref:t,onPointerDown:p=>{n.current=p.clientX,l(p.clientX)},onPointerUp:()=>l(null),onPointerOut:()=>l(null),onMouseMove:p=>b(p.clientX),onTouchMove:p=>p.touches[0]&&b(p.touches[0].clientX)})})}export{To as Globe};
b/50a06cf61ae9f6cbc0bbd72eeaf8a35e612ccb75a6a7788c9c1bdde61bb3dcae ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Button } from "@/registry/new-york-v4/ui/button"
2
+ import {
3
+ Dialog,
4
+ DialogClose,
5
+ DialogContent,
6
+ DialogDescription,
7
+ DialogFooter,
8
+ DialogHeader,
9
+ DialogTitle,
10
+ DialogTrigger,
11
+ } from "@/registry/new-york-v4/ui/dialog"
12
+ import { Input } from "@/registry/new-york-v4/ui/input"
13
+ import { Label } from "@/registry/new-york-v4/ui/label"
14
+
15
+ export default function DialogCloseButton() {
16
+ return (
17
+ <Dialog>
18
+ <DialogTrigger asChild>
19
+ <Button variant="outline">Share</Button>
20
+ </DialogTrigger>
21
+ <DialogContent className="sm:max-w-md">
22
+ <DialogHeader>
23
+ <DialogTitle>Share link</DialogTitle>
24
+ <DialogDescription>
25
+ Anyone who has this link will be able to view this.
26
+ </DialogDescription>
27
+ </DialogHeader>
28
+ <div className="flex items-center gap-2">
29
+ <div className="grid flex-1 gap-2">
30
+ <Label htmlFor="link" className="sr-only">
31
+ Link
32
+ </Label>
33
+ <Input
34
+ id="link"
35
+ defaultValue="https://ui.shadcn.com/docs/installation"
36
+ readOnly
37
+ />
38
+ </div>
39
+ </div>
40
+ <DialogFooter className="sm:justify-start">
41
+ <DialogClose asChild>
42
+ <Button type="button" variant="secondary">
43
+ Close
44
+ </Button>
45
+ </DialogClose>
46
+ </DialogFooter>
47
+ </DialogContent>
48
+ </Dialog>
49
+ )
50
+ }
b/50c1c41fd37016c99bd594acf5f06134d20eb236ea2a396da6f78b48fee1b776 ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var ca=Object.defineProperty;var pa=(e,t)=>{for(var a in t)ca(e,a,{get:t[a],enumerable:!0})};function Ae(e){var t,a,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var l=e.length;for(t=0;t<l;t++)e[t]&&(a=Ae(e[t]))&&(o&&(o+=" "),o+=a)}else for(a in e)e[a]&&(o&&(o+=" "),o+=a);return o}function Y(){for(var e,t,a=0,o="",l=arguments.length;a<l;a++)(e=arguments[a])&&(t=Ae(e))&&(o&&(o+=" "),o+=t);return o}var Be=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,ye=Y,ce=(e,t)=>a=>{var o;if(t?.variants==null)return ye(e,a?.class,a?.className);let{variants:l,defaultVariants:r}=t,u=Object.keys(l).map(f=>{let L=a?.[f],I=r?.[f];if(L===null)return null;let C=Be(L)||Be(I);return l[f][C]}),c=a&&Object.entries(a).reduce((f,L)=>{let[I,C]=L;return C===void 0||(f[I]=C),f},{}),p=t==null||(o=t.compoundVariants)===null||o===void 0?void 0:o.reduce((f,L)=>{let{class:I,className:C,...h}=L;return Object.entries(h).every(y=>{let[w,k]=y;return Array.isArray(k)?k.includes({...r,...c}[w]):{...r,...c}[w]===k})?[...f,I,C]:f},[]);return ye(e,u,p,a?.class,a?.className)};var ae={};pa(ae,{Root:()=>La,Slot:()=>La,Slottable:()=>Ia,createSlot:()=>ve,createSlottable:()=>qe});import*as S from"react";import*as Fe from"react";function Me(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function ma(...e){return t=>{let a=!1,o=e.map(l=>{let r=Me(l,t);return!a&&typeof r=="function"&&(a=!0),r});if(a)return()=>{for(let l=0;l<o.length;l++){let r=o[l];typeof r=="function"?r():Me(e[l],null)}}}}function De(...e){return Fe.useCallback(ma(...e),e)}function ve(e){let t=S.forwardRef((a,o)=>{let{children:l,...r}=a,u=null,c=!1,p=[];Re(l)&&typeof ee=="function"&&(l=ee(l._payload)),S.Children.forEach(l,C=>{if(ha(C)){c=!0;let h=C,y="child"in h.props?h.props.child:h.props.children;Re(y)&&typeof ee=="function"&&(y=ee(y._payload)),u=xa(h,y),p.push(u?.props?.children)}else p.push(C)}),u?u=S.cloneElement(u,void 0,p):!c&&S.Children.count(l)===1&&S.isValidElement(l)&&(u=l);let f=u?ga(u):void 0,L=De(o,f);if(!u){if(l||l===0)throw new Error(c?ba(e):ka(e));return l}let I=Ca(r,u.props??{});return u.type!==S.Fragment&&(I.ref=o?L:f),S.cloneElement(u,I)});return t.displayName=`${e}.Slot`,t}var La=ve("Slot"),Te=Symbol.for("radix.slottable");function qe(e){let t=a=>"child"in a?a.children(a.child):a.children;return t.displayName=`${e}.Slottable`,t.__radixId=Te,t}var Ia=qe("Slottable"),xa=(e,t)=>{if("child"in e.props){let a=e.props.child;return S.isValidElement(a)?S.cloneElement(a,void 0,e.props.children(a.props.children)):null}return S.isValidElement(t)?t:null};function Ca(e,t){let a={...t};for(let o in t){let l=e[o],r=t[o];/^on[A-Z]/.test(o)?l&&r?a[o]=(...c)=>{let p=r(...c);return l(...c),p}:l&&(a[o]=l):o==="style"?a[o]={...l,...r}:o==="className"&&(a[o]=[l,r].filter(Boolean).join(" "))}return{...e,...a}}function ga(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning;return a?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning,a?e.props.ref:e.props.ref||e.ref)}function ha(e){return S.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Te}var Sa=Symbol.for("react.lazy");function Re(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Sa&&"_payload"in e&&wa(e._payload)}function wa(e){return typeof e=="object"&&e!==null&&"then"in e}var ka=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,ba=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,ee=S[" use ".trim().toString()];var Pa=(e,t)=>{let a=new Array(e.length+t.length);for(let o=0;o<e.length;o++)a[o]=e[o];for(let o=0;o<t.length;o++)a[e.length+o]=t[o];return a},Aa=(e,t)=>({classGroupId:e,validator:t}),Ee=(e=new Map,t=null,a)=>({nextPart:e,validators:t,classGroupId:a}),le="-",Ue=[],Ba="arbitrary..",ya=e=>{let t=Fa(e),{conflictingClassGroups:a,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return Ma(u);let c=u.split(le),p=c[0]===""&&c.length>1?1:0;return We(c,p,t)},getConflictingClassGroupIds:(u,c)=>{if(c){let p=o[u],f=a[u];return p?f?Pa(f,p):p:f||Ue}return a[u]||Ue}}},We=(e,t,a)=>{if(e.length-t===0)return a.classGroupId;let l=e[t],r=a.nextPart.get(l);if(r){let f=We(e,t+1,r);if(f)return f}let u=a.validators;if(u===null)return;let c=t===0?e.join(le):e.slice(t).join(le),p=u.length;for(let f=0;f<p;f++){let L=u[f];if(L.validator(c))return L.classGroupId}},Ma=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let t=e.slice(1,-1),a=t.indexOf(":"),o=t.slice(0,a);return o?Ba+o:void 0})(),Fa=e=>{let{theme:t,classGroups:a}=e;return Da(a,t)},Da=(e,t)=>{let a=Ee();for(let o in e){let l=e[o];Le(l,a,o,t)}return a},Le=(e,t,a,o)=>{let l=e.length;for(let r=0;r<l;r++){let u=e[r];Ra(u,t,a,o)}},Ra=(e,t,a,o)=>{if(typeof e=="string"){va(e,t,a);return}if(typeof e=="function"){Ta(e,t,a,o);return}qa(e,t,a,o)},va=(e,t,a)=>{let o=e===""?t:Ne(t,e);o.classGroupId=a},Ta=(e,t,a,o)=>{if(Ua(e)){Le(e(o),t,a,o);return}t.validators===null&&(t.validators=[]),t.validators.push(Aa(a,e))},qa=(e,t,a,o)=>{let l=Object.entries(e),r=l.length;for(let u=0;u<r;u++){let[c,p]=l[u];Le(p,Ne(t,c),a,o)}},Ne=(e,t)=>{let a=e,o=t.split(le),l=o.length;for(let r=0;r<l;r++){let u=o[r],c=a.nextPart.get(u);c||(c=Ee(),a.nextPart.set(u,c)),a=c}return a},Ua=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Oa=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,a=Object.create(null),o=Object.create(null),l=(r,u)=>{a[r]=u,t++,t>e&&(t=0,o=a,a=Object.create(null))};return{get(r){let u=a[r];if(u!==void 0)return u;if((u=o[r])!==void 0)return l(r,u),u},set(r,u){r in a?a[r]=u:l(r,u)}}},me="!",Oe=":",Ha=[],He=(e,t,a,o,l)=>({modifiers:e,hasImportantModifier:t,baseClassName:a,maybePostfixModifierPosition:o,isExternal:l}),Ga=e=>{let{prefix:t,experimentalParseClassName:a}=e,o=l=>{let r=[],u=0,c=0,p=0,f,L=l.length;for(let w=0;w<L;w++){let k=l[w];if(u===0&&c===0){if(k===Oe){r.push(l.slice(p,w)),p=w+1;continue}if(k==="/"){f=w;continue}}k==="["?u++:k==="]"?u--:k==="("?c++:k===")"&&c--}let I=r.length===0?l:l.slice(p),C=I,h=!1;I.endsWith(me)?(C=I.slice(0,-1),h=!0):I.startsWith(me)&&(C=I.slice(1),h=!0);let y=f&&f>p?f-p:void 0;return He(r,h,C,y)};if(t){let l=t+Oe,r=o;o=u=>u.startsWith(l)?r(u.slice(l.length)):He(Ha,!1,u,void 0,!0)}if(a){let l=o;o=r=>a({className:r,parseClassName:l})}return o},za=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((a,o)=>{t.set(a,1e6+o)}),a=>{let o=[],l=[];for(let r=0;r<a.length;r++){let u=a[r],c=u[0]==="[",p=t.has(u);c||p?(l.length>0&&(l.sort(),o.push(...l),l=[]),o.push(u)):l.push(u)}return l.length>0&&(l.sort(),o.push(...l)),o}},Va=e=>({cache:Oa(e.cacheSize),parseClassName:Ga(e),sortModifiers:za(e),postfixLookupClassGroupIds:Ea(e),...ya(e)}),Ea=e=>{let t=Object.create(null),a=e.postfixLookupClassGroups;if(a)for(let o=0;o<a.length;o++)t[a[o]]=!0;return t},Wa=/\s+/,Na=(e,t)=>{let{parseClassName:a,getClassGroupId:o,getConflictingClassGroupIds:l,sortModifiers:r,postfixLookupClassGroupIds:u}=t,c=[],p=e.trim().split(Wa),f="";for(let L=p.length-1;L>=0;L-=1){let I=p[L],{isExternal:C,modifiers:h,hasImportantModifier:y,baseClassName:w,maybePostfixModifierPosition:k}=a(I);if(C){f=I+(f.length>0?" "+f:f);continue}let O=!!k,A;if(O){let D=w.substring(0,k);A=o(D);let i=A&&u[A]?o(w):void 0;i&&i!==A&&(A=i,O=!1)}else A=o(w);if(!A){if(!O){f=I+(f.length>0?" "+f:f);continue}if(A=o(w),!A){f=I+(f.length>0?" "+f:f);continue}O=!1}let K=h.length===0?"":h.length===1?h[0]:r(h).join(":"),E=y?K+me:K,W=E+A;if(c.indexOf(W)>-1)continue;c.push(W);let N=l(A,O);for(let D=0;D<N.length;++D){let i=N[D];c.push(E+i)}f=I+(f.length>0?" "+f:f)}return f},Xa=(...e)=>{let t=0,a,o,l="";for(;t<e.length;)(a=e[t++])&&(o=Xe(a))&&(l&&(l+=" "),l+=o);return l},Xe=e=>{if(typeof e=="string")return e;let t,a="";for(let o=0;o<e.length;o++)e[o]&&(t=Xe(e[o]))&&(a&&(a+=" "),a+=t);return a},Ka=(e,...t)=>{let a,o,l,r,u=p=>{let f=t.reduce((L,I)=>I(L),e());return a=Va(f),o=a.cache.get,l=a.cache.set,r=c,c(p)},c=p=>{let f=o(p);if(f)return f;let L=Na(p,a);return l(p,L),L};return r=u,(...p)=>r(Xa(...p))},Za=[],x=e=>{let t=a=>a[e]||Za;return t.isThemeGetter=!0,t},Ke=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Ze=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Ja=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,_a=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ja=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Qa=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,$a=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ya=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,v=e=>Ja.test(e),m=e=>!!e&&!Number.isNaN(Number(e)),F=e=>!!e&&Number.isInteger(Number(e)),pe=e=>e.endsWith("%")&&m(e.slice(0,-1)),R=e=>_a.test(e),Je=()=>!0,et=e=>ja.test(e)&&!Qa.test(e),Ie=()=>!1,at=e=>$a.test(e),tt=e=>Ya.test(e),ot=e=>!d(e)&&!s(e),lt=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),rt=e=>T(e,Qe,Ie),d=e=>Ke.test(e),G=e=>T(e,$e,et),Ge=e=>T(e,pt,m),ut=e=>T(e,ea,Je),dt=e=>T(e,Ye,Ie),ze=e=>T(e,_e,Ie),st=e=>T(e,je,tt),te=e=>T(e,aa,at),s=e=>Ze.test(e),Z=e=>z(e,$e),ft=e=>z(e,Ye),Ve=e=>z(e,_e),it=e=>z(e,Qe),nt=e=>z(e,je),oe=e=>z(e,aa,!0),ct=e=>z(e,ea,!0),T=(e,t,a)=>{let o=Ke.exec(e);return o?o[1]?t(o[1]):a(o[2]):!1},z=(e,t,a=!1)=>{let o=Ze.exec(e);return o?o[1]?t(o[1]):a:!1},_e=e=>e==="position"||e==="percentage",je=e=>e==="image"||e==="url",Qe=e=>e==="length"||e==="size"||e==="bg-size",$e=e=>e==="length",pt=e=>e==="number",Ye=e=>e==="family-name",ea=e=>e==="number"||e==="weight",aa=e=>e==="shadow";var mt=()=>{let e=x("color"),t=x("font"),a=x("text"),o=x("font-weight"),l=x("tracking"),r=x("leading"),u=x("breakpoint"),c=x("container"),p=x("spacing"),f=x("radius"),L=x("shadow"),I=x("inset-shadow"),C=x("text-shadow"),h=x("drop-shadow"),y=x("blur"),w=x("perspective"),k=x("aspect"),O=x("ease"),A=x("animate"),K=()=>["auto","avoid","all","avoid-page","page","left","right","column"],E=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],W=()=>[...E(),s,d],N=()=>["auto","hidden","clip","visible","scroll"],D=()=>["auto","contain","none"],i=()=>[s,d,p],B=()=>[v,"full","auto",...i()],Ce=()=>[F,"none","subgrid",s,d],ge=()=>["auto",{span:["full",F,s,d]},F,s,d],J=()=>[F,"auto",s,d],he=()=>["auto","min","max","fr",s,d],de=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],X=()=>["start","end","center","stretch","center-safe","end-safe"],M=()=>["auto",...i()],H=()=>[v,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...i()],se=()=>[v,"screen","full","dvw","lvw","svw","min","max","fit",...i()],fe=()=>[v,"screen","full","lh","dvh","lvh","svh","min","max","fit",...i()],n=()=>[e,s,d],Se=()=>[...E(),Ve,ze,{position:[s,d]}],we=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ke=()=>["auto","cover","contain",it,rt,{size:[s,d]}],ie=()=>[pe,Z,G],b=()=>["","none","full",f,s,d],P=()=>["",m,Z,G],_=()=>["solid","dashed","dotted","double"],be=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],g=()=>[m,pe,Ve,ze],Pe=()=>["","none",y,s,d],j=()=>["none",m,s,d],Q=()=>["none",m,s,d],ne=()=>[m,s,d],$=()=>[v,"full",...i()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[R],breakpoint:[R],color:[Je],container:[R],"drop-shadow":[R],ease:["in","out","in-out"],font:[ot],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[R],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[R],shadow:[R],spacing:["px",m],text:[R],"text-shadow":[R],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",v,d,s,k]}],container:["container"],"container-type":[{"@container":["","normal","size",s,d]}],"container-named":[lt],columns:[{columns:[m,d,s,c]}],"break-after":[{"break-after":K()}],"break-before":[{"break-before":K()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:W()}],overflow:[{overflow:N()}],"overflow-x":[{"overflow-x":N()}],"overflow-y":[{"overflow-y":N()}],overscroll:[{overscroll:D()}],"overscroll-x":[{"overscroll-x":D()}],"overscroll-y":[{"overscroll-y":D()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:B()}],"inset-x":[{"inset-x":B()}],"inset-y":[{"inset-y":B()}],start:[{"inset-s":B(),start:B()}],end:[{"inset-e":B(),end:B()}],"inset-bs":[{"inset-bs":B()}],"inset-be":[{"inset-be":B()}],top:[{top:B()}],right:[{right:B()}],bottom:[{bottom:B()}],left:[{left:B()}],visibility:["visible","invisible","collapse"],z:[{z:[F,"auto",s,d]}],basis:[{basis:[v,"full","auto",c,...i()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[m,v,"auto","initial","none",d]}],grow:[{grow:["",m,s,d]}],shrink:[{shrink:["",m,s,d]}],order:[{order:[F,"first","last","none",s,d]}],"grid-cols":[{"grid-cols":Ce()}],"col-start-end":[{col:ge()}],"col-start":[{"col-start":J()}],"col-end":[{"col-end":J()}],"grid-rows":[{"grid-rows":Ce()}],"row-start-end":[{row:ge()}],"row-start":[{"row-start":J()}],"row-end":[{"row-end":J()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":he()}],"auto-rows":[{"auto-rows":he()}],gap:[{gap:i()}],"gap-x":[{"gap-x":i()}],"gap-y":[{"gap-y":i()}],"justify-content":[{justify:[...de(),"normal"]}],"justify-items":[{"justify-items":[...X(),"normal"]}],"justify-self":[{"justify-self":["auto",...X()]}],"align-content":[{content:["normal",...de()]}],"align-items":[{items:[...X(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...X(),{baseline:["","last"]}]}],"place-content":[{"place-content":de()}],"place-items":[{"place-items":[...X(),"baseline"]}],"place-self":[{"place-self":["auto",...X()]}],p:[{p:i()}],px:[{px:i()}],py:[{py:i()}],ps:[{ps:i()}],pe:[{pe:i()}],pbs:[{pbs:i()}],pbe:[{pbe:i()}],pt:[{pt:i()}],pr:[{pr:i()}],pb:[{pb:i()}],pl:[{pl:i()}],m:[{m:M()}],mx:[{mx:M()}],my:[{my:M()}],ms:[{ms:M()}],me:[{me:M()}],mbs:[{mbs:M()}],mbe:[{mbe:M()}],mt:[{mt:M()}],mr:[{mr:M()}],mb:[{mb:M()}],ml:[{ml:M()}],"space-x":[{"space-x":i()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":i()}],"space-y-reverse":["space-y-reverse"],size:[{size:H()}],"inline-size":[{inline:["auto",...se()]}],"min-inline-size":[{"min-inline":["auto",...se()]}],"max-inline-size":[{"max-inline":["none",...se()]}],"block-size":[{block:["auto",...fe()]}],"min-block-size":[{"min-block":["auto",...fe()]}],"max-block-size":[{"max-block":["none",...fe()]}],w:[{w:[c,"screen",...H()]}],"min-w":[{"min-w":[c,"screen","none",...H()]}],"max-w":[{"max-w":[c,"screen","none","prose",{screen:[u]},...H()]}],h:[{h:["screen","lh",...H()]}],"min-h":[{"min-h":["screen","lh","none",...H()]}],"max-h":[{"max-h":["screen","lh",...H()]}],"font-size":[{text:["base",a,Z,G]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,ct,ut]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",pe,d]}],"font-family":[{font:[ft,dt,t]}],"font-features":[{"font-features":[d]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[l,s,d]}],"line-clamp":[{"line-clamp":[m,"none",s,Ge]}],leading:[{leading:[r,...i()]}],"list-image":[{"list-image":["none",s,d]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",s,d]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:n()}],"text-color":[{text:n()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[..._(),"wavy"]}],"text-decoration-thickness":[{decoration:[m,"from-font","auto",s,G]}],"text-decoration-color":[{decoration:n()}],"underline-offset":[{"underline-offset":[m,"auto",s,d]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:i()}],"tab-size":[{tab:[F,s,d]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",s,d]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",s,d]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Se()}],"bg-repeat":[{bg:we()}],"bg-size":[{bg:ke()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},F,s,d],radial:["",s,d],conic:[F,s,d]},nt,st]}],"bg-color":[{bg:n()}],"gradient-from-pos":[{from:ie()}],"gradient-via-pos":[{via:ie()}],"gradient-to-pos":[{to:ie()}],"gradient-from":[{from:n()}],"gradient-via":[{via:n()}],"gradient-to":[{to:n()}],rounded:[{rounded:b()}],"rounded-s":[{"rounded-s":b()}],"rounded-e":[{"rounded-e":b()}],"rounded-t":[{"rounded-t":b()}],"rounded-r":[{"rounded-r":b()}],"rounded-b":[{"rounded-b":b()}],"rounded-l":[{"rounded-l":b()}],"rounded-ss":[{"rounded-ss":b()}],"rounded-se":[{"rounded-se":b()}],"rounded-ee":[{"rounded-ee":b()}],"rounded-es":[{"rounded-es":b()}],"rounded-tl":[{"rounded-tl":b()}],"rounded-tr":[{"rounded-tr":b()}],"rounded-br":[{"rounded-br":b()}],"rounded-bl":[{"rounded-bl":b()}],"border-w":[{border:P()}],"border-w-x":[{"border-x":P()}],"border-w-y":[{"border-y":P()}],"border-w-s":[{"border-s":P()}],"border-w-e":[{"border-e":P()}],"border-w-bs":[{"border-bs":P()}],"border-w-be":[{"border-be":P()}],"border-w-t":[{"border-t":P()}],"border-w-r":[{"border-r":P()}],"border-w-b":[{"border-b":P()}],"border-w-l":[{"border-l":P()}],"divide-x":[{"divide-x":P()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":P()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[..._(),"hidden","none"]}],"divide-style":[{divide:[..._(),"hidden","none"]}],"border-color":[{border:n()}],"border-color-x":[{"border-x":n()}],"border-color-y":[{"border-y":n()}],"border-color-s":[{"border-s":n()}],"border-color-e":[{"border-e":n()}],"border-color-bs":[{"border-bs":n()}],"border-color-be":[{"border-be":n()}],"border-color-t":[{"border-t":n()}],"border-color-r":[{"border-r":n()}],"border-color-b":[{"border-b":n()}],"border-color-l":[{"border-l":n()}],"divide-color":[{divide:n()}],"outline-style":[{outline:[..._(),"none","hidden"]}],"outline-offset":[{"outline-offset":[m,s,d]}],"outline-w":[{outline:["",m,Z,G]}],"outline-color":[{outline:n()}],shadow:[{shadow:["","none",L,oe,te]}],"shadow-color":[{shadow:n()}],"inset-shadow":[{"inset-shadow":["none",I,oe,te]}],"inset-shadow-color":[{"inset-shadow":n()}],"ring-w":[{ring:P()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:n()}],"ring-offset-w":[{"ring-offset":[m,G]}],"ring-offset-color":[{"ring-offset":n()}],"inset-ring-w":[{"inset-ring":P()}],"inset-ring-color":[{"inset-ring":n()}],"text-shadow":[{"text-shadow":["none",C,oe,te]}],"text-shadow-color":[{"text-shadow":n()}],opacity:[{opacity:[m,s,d]}],"mix-blend":[{"mix-blend":[...be(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":be()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[m]}],"mask-image-linear-from-pos":[{"mask-linear-from":g()}],"mask-image-linear-to-pos":[{"mask-linear-to":g()}],"mask-image-linear-from-color":[{"mask-linear-from":n()}],"mask-image-linear-to-color":[{"mask-linear-to":n()}],"mask-image-t-from-pos":[{"mask-t-from":g()}],"mask-image-t-to-pos":[{"mask-t-to":g()}],"mask-image-t-from-color":[{"mask-t-from":n()}],"mask-image-t-to-color":[{"mask-t-to":n()}],"mask-image-r-from-pos":[{"mask-r-from":g()}],"mask-image-r-to-pos":[{"mask-r-to":g()}],"mask-image-r-from-color":[{"mask-r-from":n()}],"mask-image-r-to-color":[{"mask-r-to":n()}],"mask-image-b-from-pos":[{"mask-b-from":g()}],"mask-image-b-to-pos":[{"mask-b-to":g()}],"mask-image-b-from-color":[{"mask-b-from":n()}],"mask-image-b-to-color":[{"mask-b-to":n()}],"mask-image-l-from-pos":[{"mask-l-from":g()}],"mask-image-l-to-pos":[{"mask-l-to":g()}],"mask-image-l-from-color":[{"mask-l-from":n()}],"mask-image-l-to-color":[{"mask-l-to":n()}],"mask-image-x-from-pos":[{"mask-x-from":g()}],"mask-image-x-to-pos":[{"mask-x-to":g()}],"mask-image-x-from-color":[{"mask-x-from":n()}],"mask-image-x-to-color":[{"mask-x-to":n()}],"mask-image-y-from-pos":[{"mask-y-from":g()}],"mask-image-y-to-pos":[{"mask-y-to":g()}],"mask-image-y-from-color":[{"mask-y-from":n()}],"mask-image-y-to-color":[{"mask-y-to":n()}],"mask-image-radial":[{"mask-radial":[s,d]}],"mask-image-radial-from-pos":[{"mask-radial-from":g()}],"mask-image-radial-to-pos":[{"mask-radial-to":g()}],"mask-image-radial-from-color":[{"mask-radial-from":n()}],"mask-image-radial-to-color":[{"mask-radial-to":n()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":E()}],"mask-image-conic-pos":[{"mask-conic":[m]}],"mask-image-conic-from-pos":[{"mask-conic-from":g()}],"mask-image-conic-to-pos":[{"mask-conic-to":g()}],"mask-image-conic-from-color":[{"mask-conic-from":n()}],"mask-image-conic-to-color":[{"mask-conic-to":n()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Se()}],"mask-repeat":[{mask:we()}],"mask-size":[{mask:ke()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",s,d]}],filter:[{filter:["","none",s,d]}],blur:[{blur:Pe()}],brightness:[{brightness:[m,s,d]}],contrast:[{contrast:[m,s,d]}],"drop-shadow":[{"drop-shadow":["","none",h,oe,te]}],"drop-shadow-color":[{"drop-shadow":n()}],grayscale:[{grayscale:["",m,s,d]}],"hue-rotate":[{"hue-rotate":[m,s,d]}],invert:[{invert:["",m,s,d]}],saturate:[{saturate:[m,s,d]}],sepia:[{sepia:["",m,s,d]}],"backdrop-filter":[{"backdrop-filter":["","none",s,d]}],"backdrop-blur":[{"backdrop-blur":Pe()}],"backdrop-brightness":[{"backdrop-brightness":[m,s,d]}],"backdrop-contrast":[{"backdrop-contrast":[m,s,d]}],"backdrop-grayscale":[{"backdrop-grayscale":["",m,s,d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m,s,d]}],"backdrop-invert":[{"backdrop-invert":["",m,s,d]}],"backdrop-opacity":[{"backdrop-opacity":[m,s,d]}],"backdrop-saturate":[{"backdrop-saturate":[m,s,d]}],"backdrop-sepia":[{"backdrop-sepia":["",m,s,d]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":i()}],"border-spacing-x":[{"border-spacing-x":i()}],"border-spacing-y":[{"border-spacing-y":i()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",s,d]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[m,"initial",s,d]}],ease:[{ease:["linear","initial",O,s,d]}],delay:[{delay:[m,s,d]}],animate:[{animate:["none",A,s,d]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,s,d]}],"perspective-origin":[{"perspective-origin":W()}],rotate:[{rotate:j()}],"rotate-x":[{"rotate-x":j()}],"rotate-y":[{"rotate-y":j()}],"rotate-z":[{"rotate-z":j()}],scale:[{scale:Q()}],"scale-x":[{"scale-x":Q()}],"scale-y":[{"scale-y":Q()}],"scale-z":[{"scale-z":Q()}],"scale-3d":["scale-3d"],skew:[{skew:ne()}],"skew-x":[{"skew-x":ne()}],"skew-y":[{"skew-y":ne()}],transform:[{transform:[s,d,"","none","gpu","cpu"]}],"transform-origin":[{origin:W()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:$()}],"translate-x":[{"translate-x":$()}],"translate-y":[{"translate-y":$()}],"translate-z":[{"translate-z":$()}],"translate-none":["translate-none"],zoom:[{zoom:[F,s,d]}],accent:[{accent:n()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:n()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",s,d]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":n()}],"scrollbar-track-color":[{"scrollbar-track":n()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":i()}],"scroll-mx":[{"scroll-mx":i()}],"scroll-my":[{"scroll-my":i()}],"scroll-ms":[{"scroll-ms":i()}],"scroll-me":[{"scroll-me":i()}],"scroll-mbs":[{"scroll-mbs":i()}],"scroll-mbe":[{"scroll-mbe":i()}],"scroll-mt":[{"scroll-mt":i()}],"scroll-mr":[{"scroll-mr":i()}],"scroll-mb":[{"scroll-mb":i()}],"scroll-ml":[{"scroll-ml":i()}],"scroll-p":[{"scroll-p":i()}],"scroll-px":[{"scroll-px":i()}],"scroll-py":[{"scroll-py":i()}],"scroll-ps":[{"scroll-ps":i()}],"scroll-pe":[{"scroll-pe":i()}],"scroll-pbs":[{"scroll-pbs":i()}],"scroll-pbe":[{"scroll-pbe":i()}],"scroll-pt":[{"scroll-pt":i()}],"scroll-pr":[{"scroll-pr":i()}],"scroll-pb":[{"scroll-pb":i()}],"scroll-pl":[{"scroll-pl":i()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",s,d]}],fill:[{fill:["none",...n()]}],"stroke-w":[{stroke:[m,Z,G,Ge]}],stroke:[{stroke:["none",...n()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var ta=Ka(mt);function q(...e){return ta(Y(e))}import{jsx as Ut}from"react/jsx-runtime";import{jsx as re}from"react/jsx-runtime";var Lt=ce("group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-accent/50",{variants:{variant:{default:"bg-transparent",outline:"border-border",muted:"bg-muted/50"},size:{default:"gap-4 p-4",sm:"gap-2.5 px-4 py-3"}},defaultVariants:{variant:"default",size:"default"}});function oa({className:e,variant:t="default",size:a="default",asChild:o=!1,...l}){let r=o?ae.Root:"div";return re(r,{"data-slot":"item","data-variant":t,"data-size":a,className:q(Lt({variant:t,size:a,className:e})),...l})}var It=ce("flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none",{variants:{variant:{default:"bg-transparent",icon:"size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4",image:"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover"}},defaultVariants:{variant:"default"}});function la({className:e,variant:t="default",...a}){return re("div",{"data-slot":"item-media","data-variant":t,className:q(It({variant:t,className:e})),...a})}function xe({className:e,...t}){return re("div",{"data-slot":"item-content",className:q("flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none",e),...t})}function ra({className:e,...t}){return re("div",{"data-slot":"item-title",className:q("flex w-fit items-center gap-2 text-sm leading-snug font-medium",e),...t})}import{forwardRef as Ct,createElement as gt}from"react";var ua=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ue=(...e)=>e.filter((t,a,o)=>!!t&&t.trim()!==""&&o.indexOf(t)===a).join(" ").trim();import{forwardRef as xt,createElement as sa}from"react";var da={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var fa=xt(({color:e="currentColor",size:t=24,strokeWidth:a=2,absoluteStrokeWidth:o,className:l="",children:r,iconNode:u,...c},p)=>sa("svg",{ref:p,...da,width:t,height:t,stroke:e,strokeWidth:o?Number(a)*24/Number(t):a,className:ue("lucide",l),...c},[...u.map(([f,L])=>sa(f,L)),...Array.isArray(r)?r:[r]]));var ia=(e,t)=>{let a=Ct(({className:o,...l},r)=>gt(fa,{ref:r,iconNode:t,className:ue(`lucide-${ua(e)}`,o),...l}));return a.displayName=`${e}`,a};var U=ia("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);import{jsx as ht}from"react/jsx-runtime";function na({className:e,...t}){return ht(U,{role:"status","aria-label":"Loading",className:q("size-4 animate-spin",e),...t})}import{jsx as V,jsxs as wt}from"react/jsx-runtime";function St(){return V("div",{className:"flex w-full max-w-xs flex-col gap-4 [--radius:1rem]",children:wt(oa,{variant:"muted",children:[V(la,{children:V(na,{})}),V(xe,{children:V(ra,{className:"line-clamp-1",children:"Processing payment..."})}),V(xe,{className:"flex-none justify-end",children:V("span",{className:"text-sm tabular-nums",children:"$100.00"})})]})})}export{St as default};
2
+ /*! Bundled license information:
3
+
4
+ lucide-react/dist/esm/shared/src/utils.js:
5
+ (**
6
+ * @license lucide-react v0.456.0 - ISC
7
+ *
8
+ * This source code is licensed under the ISC license.
9
+ * See the LICENSE file in the root directory of this source tree.
10
+ *)
11
+
12
+ lucide-react/dist/esm/defaultAttributes.js:
13
+ (**
14
+ * @license lucide-react v0.456.0 - ISC
15
+ *
16
+ * This source code is licensed under the ISC license.
17
+ * See the LICENSE file in the root directory of this source tree.
18
+ *)
19
+
20
+ lucide-react/dist/esm/Icon.js:
21
+ (**
22
+ * @license lucide-react v0.456.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ *)
27
+
28
+ lucide-react/dist/esm/createLucideIcon.js:
29
+ (**
30
+ * @license lucide-react v0.456.0 - ISC
31
+ *
32
+ * This source code is licensed under the ISC license.
33
+ * See the LICENSE file in the root directory of this source tree.
34
+ *)
35
+
36
+ lucide-react/dist/esm/icons/loader-circle.js:
37
+ (**
38
+ * @license lucide-react v0.456.0 - ISC
39
+ *
40
+ * This source code is licensed under the ISC license.
41
+ * See the LICENSE file in the root directory of this source tree.
42
+ *)
43
+
44
+ lucide-react/dist/esm/lucide-react.js:
45
+ (**
46
+ * @license lucide-react v0.456.0 - ISC
47
+ *
48
+ * This source code is licensed under the ISC license.
49
+ * See the LICENSE file in the root directory of this source tree.
50
+ *)
51
+ */
b/50cc95e131bb26b0837a6bfa44a62aff84fefcc21fb94118b099be12846fb87a ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b710cde29d9208481ec377b5d0ec4293f53a9407a99790a37750acc05509ca9f
3
+ size 229376
b/50e040aba2df77e543dc76ad8758f1ee017949dfb17e670643029cc009c35a00 ADDED
@@ -0,0 +1 @@
 
 
1
+ var xo=Object.defineProperty;var Ue=(e,t)=>{for(var o in t)xo(e,o,{get:t[o],enumerable:!0})};function wt(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t<n;t++)e[t]&&(o=wt(e[t]))&&(r&&(r+=" "),r+=o)}else for(o in e)e[o]&&(r&&(r+=" "),r+=o);return r}function Ce(){for(var e,t,o=0,r="",n=arguments.length;o<n;o++)(e=arguments[o])&&(t=wt(e))&&(r&&(r+=" "),r+=t);return r}var Rt=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Ct=Ce,ke=(e,t)=>o=>{var r;if(t?.variants==null)return Ct(e,o?.class,o?.className);let{variants:n,defaultVariants:i}=t,s=Object.keys(n).map(c=>{let u=o?.[c],p=i?.[c];if(u===null)return null;let h=Rt(u)||Rt(p);return n[c][h]}),a=o&&Object.entries(o).reduce((c,u)=>{let[p,h]=u;return h===void 0||(c[p]=h),c},{}),l=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((c,u)=>{let{class:p,className:h,...x}=u;return Object.entries(x).every(w=>{let[y,g]=w;return Array.isArray(g)?g.includes({...i,...a}[y]):{...i,...a}[y]===g})?[...c,p,h]:c},[]);return Ct(e,s,l,o?.class,o?.className)};import*as Pt from"react";import*as No from"react-dom";var Ie={};Ue(Ie,{Root:()=>wo,Slot:()=>wo,Slottable:()=>Ro,createSlot:()=>te,createSlottable:()=>At});import*as M from"react";import*as St from"react";function kt(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function yo(...e){return t=>{let o=!1,r=e.map(n=>{let i=kt(n,t);return!o&&typeof i=="function"&&(o=!0),i});if(o)return()=>{for(let n=0;n<r.length;n++){let i=r[n];typeof i=="function"?i():kt(e[n],null)}}}}function ee(...e){return St.useCallback(yo(...e),e)}function te(e){let t=M.forwardRef((o,r)=>{let{children:n,...i}=o,s=null,a=!1,l=[];It(n)&&typeof Se=="function"&&(n=Se(n._payload)),M.Children.forEach(n,h=>{if(Io(h)){a=!0;let x=h,w="child"in x.props?x.props.child:x.props.children;It(w)&&typeof Se=="function"&&(w=Se(w._payload)),s=Co(x,w),l.push(s?.props?.children)}else l.push(h)}),s?s=M.cloneElement(s,void 0,l):!a&&M.Children.count(n)===1&&M.isValidElement(n)&&(s=n);let c=s?So(s):void 0,u=ee(r,c);if(!s){if(n||n===0)throw new Error(a?Eo(e):Po(e));return n}let p=ko(i,s.props??{});return s.type!==M.Fragment&&(p.ref=r?u:c),M.cloneElement(s,p)});return t.displayName=`${e}.Slot`,t}var wo=te("Slot"),Tt=Symbol.for("radix.slottable");function At(e){let t=o=>"child"in o?o.children(o.child):o.children;return t.displayName=`${e}.Slottable`,t.__radixId=Tt,t}var Ro=At("Slottable"),Co=(e,t)=>{if("child"in e.props){let o=e.props.child;return M.isValidElement(o)?M.cloneElement(o,void 0,e.props.children(o.props.children)):null}return M.isValidElement(t)?t:null};function ko(e,t){let o={...t};for(let r in t){let n=e[r],i=t[r];/^on[A-Z]/.test(r)?n&&i?o[r]=(...a)=>{let l=i(...a);return n(...a),l}:n&&(o[r]=n):r==="style"?o[r]={...n,...i}:r==="className"&&(o[r]=[n,i].filter(Boolean).join(" "))}return{...e,...o}}function So(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}function Io(e){return M.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Tt}var To=Symbol.for("react.lazy");function It(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===To&&"_payload"in e&&Ao(e._payload)}function Ao(e){return typeof e=="object"&&e!==null&&"then"in e}var Po=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,Eo=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,Se=M[" use ".trim().toString()];import{jsx as Mo}from"react/jsx-runtime";var zo=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],U=zo.reduce((e,t)=>{let o=te(`Primitive.${t}`),r=Pt.forwardRef((n,i)=>{let{asChild:s,...a}=n,l=s?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),Mo(l,{...a,ref:i})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});import*as K from"react";import{jsx as Oo}from"react/jsx-runtime";function le(e,t=[]){let o=[];function r(i,s){let a=K.createContext(s);a.displayName=i+"Context";let l=o.length;o=[...o,s];let c=p=>{let{scope:h,children:x,...w}=p,y=h?.[e]?.[l]||a,g=K.useMemo(()=>w,Object.values(w));return Oo(y.Provider,{value:g,children:x})};c.displayName=i+"Provider";function u(p,h){let x=h?.[e]?.[l]||a,w=K.useContext(x);if(w)return w;if(s!==void 0)return s;throw new Error(`\`${p}\` must be used within \`${i}\``)}return[c,u]}let n=()=>{let i=o.map(s=>K.createContext(s));return function(a){let l=a?.[e]||i;return K.useMemo(()=>({[`__scope${e}`]:{...a,[e]:l}}),[a,l])}};return n.scopeName=e,[r,_o(n,...t)]}function _o(...e){let t=e[0];if(e.length===1)return t;let o=()=>{let r=e.map(n=>({useScope:n(),scopeName:n.scopeName}));return function(i){let s=r.reduce((a,{useScope:l,scopeName:c})=>{let p=l(i)[`__scope${c}`];return{...a,...p}},{});return K.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return o.scopeName=t.scopeName,o}import*as $ from"react";import{jsx as Be}from"react/jsx-runtime";import*as Te from"react";import{jsx as In}from"react/jsx-runtime";function Et(e){let t=e+"CollectionProvider",[o,r]=le(t),[n,i]=o(t,{collectionRef:{current:null},itemMap:new Map}),s=y=>{let{scope:g,children:k}=y,R=$.useRef(null),C=$.useRef(new Map).current;return Be(n,{scope:g,itemMap:C,collectionRef:R,children:k})};s.displayName=t;let a=e+"CollectionSlot",l=te(a),c=$.forwardRef((y,g)=>{let{scope:k,children:R}=y,C=i(a,k),S=ee(g,C.collectionRef);return Be(l,{ref:S,children:R})});c.displayName=a;let u=e+"CollectionItemSlot",p="data-radix-collection-item",h=te(u),x=$.forwardRef((y,g)=>{let{scope:k,children:R,...C}=y,S=$.useRef(null),D=ee(g,S),G=i(u,k);return $.useEffect(()=>(G.itemMap.set(S,{ref:S,...C}),()=>void G.itemMap.delete(S))),Be(h,{[p]:"",ref:D,children:R})});x.displayName=u;function w(y){let g=i(e+"CollectionConsumer",y);return $.useCallback(()=>{let R=g.collectionRef.current;if(!R)return[];let C=Array.from(R.querySelectorAll(`[${p}]`));return Array.from(g.itemMap.values()).sort((G,L)=>C.indexOf(G.ref.current)-C.indexOf(L.ref.current))},[g.collectionRef,g.itemMap])}return[{Provider:s,Slot:c,ItemSlot:x},w,r]}var An=!!(typeof window<"u"&&window.document&&window.document.createElement);function W(e,t,{checkForDefaultPrevented:o=!0}={}){return function(n){if(e?.(n),o===!1||!n.defaultPrevented)return t?.(n)}}import*as V from"react";import*as Nt from"react";var oe=globalThis?.document?Nt.useLayoutEffect:()=>{};import*as Pe from"react";var Fo=V[" useInsertionEffect ".trim().toString()]||oe;function Ae({prop:e,defaultProp:t,onChange:o=()=>{},caller:r}){let[n,i,s]=Lo({defaultProp:t,onChange:o}),a=e!==void 0,l=a?e:n;{let u=V.useRef(e!==void 0);V.useEffect(()=>{let p=u.current;p!==a&&console.warn(`${r} is changing from ${p?"controlled":"uncontrolled"} to ${a?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),u.current=a},[a,r])}let c=V.useCallback(u=>{if(a){let p=Do(u)?u(e):u;p!==e&&s.current?.(p)}else i(u)},[a,e,i,s]);return[l,c]}function Lo({defaultProp:e,onChange:t}){let[o,r]=V.useState(e),n=V.useRef(o),i=V.useRef(t);return Fo(()=>{i.current=t},[t]),V.useEffect(()=>{n.current!==o&&(i.current?.(o),n.current=o)},[o,n]),[o,r,i]}function Do(e){return typeof e=="function"}var Mn=Symbol("RADIX:SYNC_STATE");import*as z from"react";import*as zt from"react";function Go(e,t){return zt.useReducer((o,r)=>t[o][r]??o,e)}var Ke=e=>{let{present:t,children:o}=e,r=Vo(t),n=typeof o=="function"?o({present:r.isPresent}):z.Children.only(o),i=jo(r.ref,$o(n));return typeof o=="function"||r.isPresent?z.cloneElement(n,{ref:i}):null};Ke.displayName="Presence";function Vo(e){let[t,o]=z.useState(),r=z.useRef(null),n=z.useRef(e),i=z.useRef("none"),s=e?"mounted":"unmounted",[a,l]=Go(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return z.useEffect(()=>{let c=Ee(r.current);i.current=a==="mounted"?c:"none"},[a]),oe(()=>{let c=r.current,u=n.current;if(u!==e){let h=i.current,x=Ee(c);e?l("MOUNT"):x==="none"||c?.display==="none"?l("UNMOUNT"):l(u&&h!==x?"ANIMATION_OUT":"UNMOUNT"),n.current=e}},[e,l]),oe(()=>{if(t){let c,u=t.ownerDocument.defaultView??window,p=x=>{let y=Ee(r.current).includes(CSS.escape(x.animationName));if(x.target===t&&y&&(l("ANIMATION_END"),!n.current)){let g=t.style.animationFillMode;t.style.animationFillMode="forwards",c=u.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=g)})}},h=x=>{x.target===t&&(i.current=Ee(r.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{u.clearTimeout(c),t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:z.useCallback(c=>{r.current=c?getComputedStyle(c):null,o(c)},[])}}function Mt(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function jo(...e){let t=z.useRef(e);return t.current=e,z.useCallback(o=>{let r=t.current,n=!1,i=r.map(s=>{let a=Mt(s,o);return!n&&typeof a=="function"&&(n=!0),a});if(n)return()=>{for(let s=0;s<i.length;s++){let a=i[s];typeof a=="function"?a():Mt(r[s],null)}}},[])}function Ee(e){return e?.animationName||"none"}function $o(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}import*as He from"react";var Wo=He[" useId ".trim().toString()]||(()=>{}),Uo=0;function Ne(e){let[t,o]=He.useState(Wo());return oe(()=>{e||o(r=>r??String(Uo++))},[e]),e||(t?`radix-${t}`:"")}import*as Me from"react";import{jsx as Gn}from"react/jsx-runtime";var Bo=Me.createContext(void 0);function ze(e){let t=Me.useContext(Bo);return e||t||"ltr"}import*as de from"react";function Ot(e){let t=de.useRef(e);return de.useEffect(()=>{t.current=e}),de.useMemo(()=>(...o)=>t.current?.(...o),[])}import*as E from"react";import{jsx as re}from"react/jsx-runtime";var Ye="rovingFocusGroup.onEntryFocus",Ko={bubbles:!1,cancelable:!0},me="RovingFocusGroup",[qe,_t,Ho]=Et(me),[Yo,Xe]=le(me,[Ho]),[qo,Xo]=Yo(me),Ft=E.forwardRef((e,t)=>re(qe.Provider,{scope:e.__scopeRovingFocusGroup,children:re(qe.Slot,{scope:e.__scopeRovingFocusGroup,children:re(Zo,{...e,ref:t})})}));Ft.displayName=me;var Zo=E.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:o,orientation:r,loop:n=!1,dir:i,currentTabStopId:s,defaultCurrentTabStopId:a,onCurrentTabStopIdChange:l,onEntryFocus:c,preventScrollOnEntryFocus:u=!1,...p}=e,h=E.useRef(null),x=ee(t,h),w=ze(i),[y,g]=Ae({prop:s,defaultProp:a??null,onChange:l,caller:me}),[k,R]=E.useState(!1),C=Ot(c),S=_t(o),D=E.useRef(!1),[G,L]=E.useState(0);return E.useEffect(()=>{let d=h.current;if(d)return d.addEventListener(Ye,C),()=>d.removeEventListener(Ye,C)},[C]),re(qo,{scope:o,orientation:r,dir:w,loop:n,currentTabStopId:y,onItemFocus:E.useCallback(d=>g(d),[g]),onItemShiftTab:E.useCallback(()=>R(!0),[]),onFocusableItemAdd:E.useCallback(()=>L(d=>d+1),[]),onFocusableItemRemove:E.useCallback(()=>L(d=>d-1),[]),children:re(U.div,{tabIndex:k||G===0?-1:0,"data-orientation":r,...p,ref:x,style:{outline:"none",...e.style},onMouseDown:W(e.onMouseDown,()=>{D.current=!0}),onFocus:W(e.onFocus,d=>{let O=!D.current;if(d.target===d.currentTarget&&O&&!k){let fe=new CustomEvent(Ye,Ko);if(d.currentTarget.dispatchEvent(fe),!fe.defaultPrevented){let ae=S().filter(T=>T.focusable),ce=ae.find(T=>T.active),he=ae.find(T=>T.id===y),q=[ce,he,...ae].filter(Boolean).map(T=>T.ref.current);Gt(q,u)}}D.current=!1}),onBlur:W(e.onBlur,()=>R(!1))})})}),Lt="RovingFocusGroupItem",Dt=E.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:o,focusable:r=!0,active:n=!1,tabStopId:i,children:s,...a}=e,l=Ne(),c=i||l,u=Xo(Lt,o),p=u.currentTabStopId===c,h=_t(o),{onFocusableItemAdd:x,onFocusableItemRemove:w,currentTabStopId:y}=u;return E.useEffect(()=>{if(r)return x(),()=>w()},[r,x,w]),re(qe.ItemSlot,{scope:o,id:c,focusable:r,active:n,children:re(U.span,{tabIndex:p?0:-1,"data-orientation":u.orientation,...a,ref:t,onMouseDown:W(e.onMouseDown,g=>{r?u.onItemFocus(c):g.preventDefault()}),onFocus:W(e.onFocus,()=>u.onItemFocus(c)),onKeyDown:W(e.onKeyDown,g=>{if(g.key==="Tab"&&g.shiftKey){u.onItemShiftTab();return}if(g.target!==g.currentTarget)return;let k=er(g,u.orientation,u.dir);if(k!==void 0){if(g.metaKey||g.ctrlKey||g.altKey||g.shiftKey)return;g.preventDefault();let C=h().filter(S=>S.focusable).map(S=>S.ref.current);if(k==="last")C.reverse();else if(k==="prev"||k==="next"){k==="prev"&&C.reverse();let S=C.indexOf(g.currentTarget);C=u.loop?tr(C,S+1):C.slice(S+1)}setTimeout(()=>Gt(C))}}),children:typeof s=="function"?s({isCurrentTabStop:p,hasTabStop:y!=null}):s})})});Dt.displayName=Lt;var Jo={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Qo(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function er(e,t,o){let r=Qo(e.key,o);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Jo[r]}function Gt(e,t=!1){let o=document.activeElement;for(let r of e)if(r===o||(r.focus({preventScroll:t}),document.activeElement!==o))return}function tr(e,t){return e.map((o,r)=>e[(t+r)%e.length])}var Vt=Ft,jt=Dt;var Oe={};Ue(Oe,{Label:()=>Ze,Root:()=>sr});import*as $t from"react";import{jsx as rr}from"react/jsx-runtime";var nr="Label",Ze=$t.forwardRef((e,t)=>rr(U.label,{...e,ref:t,onMouseDown:o=>{o.target.closest("button, input, select, textarea")||(e.onMouseDown?.(o),!o.defaultPrevented&&o.detail>1&&o.preventDefault())}}));Ze.displayName=nr;var sr=Ze;var ne={};Ue(ne,{Content:()=>fr,List:()=>dr,Root:()=>lr,Tabs:()=>Qe,TabsContent:()=>ot,TabsList:()=>et,TabsTrigger:()=>tt,Trigger:()=>ur,createTabsScope:()=>ar});import*as H from"react";import{jsx as X}from"react/jsx-runtime";var _e="Tabs",[ir,ar]=le(_e,[Xe]),Wt=Xe(),[cr,Je]=ir(_e),Qe=H.forwardRef((e,t)=>{let{__scopeTabs:o,value:r,onValueChange:n,defaultValue:i,orientation:s="horizontal",dir:a,activationMode:l="automatic",...c}=e,u=ze(a),[p,h]=Ae({prop:r,onChange:n,defaultProp:i??"",caller:_e});return X(cr,{scope:o,baseId:Ne(),value:p,onValueChange:h,orientation:s,dir:u,activationMode:l,children:X(U.div,{dir:u,"data-orientation":s,...c,ref:t})})});Qe.displayName=_e;var Ut="TabsList",et=H.forwardRef((e,t)=>{let{__scopeTabs:o,loop:r=!0,...n}=e,i=Je(Ut,o),s=Wt(o);return X(Vt,{asChild:!0,...s,orientation:i.orientation,dir:i.dir,loop:r,children:X(U.div,{role:"tablist","aria-orientation":i.orientation,...n,ref:t})})});et.displayName=Ut;var Bt="TabsTrigger",tt=H.forwardRef((e,t)=>{let{__scopeTabs:o,value:r,disabled:n=!1,...i}=e,s=Je(Bt,o),a=Wt(o),l=Ht(s.baseId,r),c=Yt(s.baseId,r),u=r===s.value;return X(jt,{asChild:!0,...a,focusable:!n,active:u,children:X(U.button,{type:"button",role:"tab","aria-selected":u,"aria-controls":c,"data-state":u?"active":"inactive","data-disabled":n?"":void 0,disabled:n,id:l,...i,ref:t,onMouseDown:W(e.onMouseDown,p=>{!n&&p.button===0&&p.ctrlKey===!1?s.onValueChange(r):p.preventDefault()}),onKeyDown:W(e.onKeyDown,p=>{[" ","Enter"].includes(p.key)&&s.onValueChange(r)}),onFocus:W(e.onFocus,()=>{let p=s.activationMode!=="manual";!u&&!n&&p&&s.onValueChange(r)})})})});tt.displayName=Bt;var Kt="TabsContent",ot=H.forwardRef((e,t)=>{let{__scopeTabs:o,value:r,forceMount:n,children:i,...s}=e,a=Je(Kt,o),l=Ht(a.baseId,r),c=Yt(a.baseId,r),u=r===a.value,p=H.useRef(u);return H.useEffect(()=>{let h=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(h)},[]),X(Ke,{present:n||u,children:({present:h})=>X(U.div,{"data-state":u?"active":"inactive","data-orientation":a.orientation,role:"tabpanel","aria-labelledby":l,hidden:!h,id:c,tabIndex:0,...s,ref:t,style:{...e.style,animationDuration:p.current?"0s":void 0},children:h&&i})})});ot.displayName=Kt;function Ht(e,t){return`${e}-trigger-${t}`}function Yt(e,t){return`${e}-content-${t}`}var lr=Qe,dr=et,ur=tt,fr=ot;var mr=(e,t)=>{let o=new Array(e.length+t.length);for(let r=0;r<e.length;r++)o[r]=e[r];for(let r=0;r<t.length;r++)o[e.length+r]=t[r];return o},pr=(e,t)=>({classGroupId:e,validator:t}),to=(e=new Map,t=null,o)=>({nextPart:e,validators:t,classGroupId:o}),De="-",qt=[],br="arbitrary..",gr=e=>{let t=vr(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return hr(s);let a=s.split(De),l=a[0]===""&&a.length>1?1:0;return oo(a,l,t)},getConflictingClassGroupIds:(s,a)=>{if(a){let l=r[s],c=o[s];return l?c?mr(c,l):l:c||qt}return o[s]||qt}}},oo=(e,t,o)=>{if(e.length-t===0)return o.classGroupId;let n=e[t],i=o.nextPart.get(n);if(i){let c=oo(e,t+1,i);if(c)return c}let s=o.validators;if(s===null)return;let a=t===0?e.join(De):e.slice(t).join(De),l=s.length;for(let c=0;c<l;c++){let u=s[c];if(u.validator(a))return u.classGroupId}},hr=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let t=e.slice(1,-1),o=t.indexOf(":"),r=t.slice(0,o);return r?br+r:void 0})(),vr=e=>{let{theme:t,classGroups:o}=e;return xr(o,t)},xr=(e,t)=>{let o=to();for(let r in e){let n=e[r];st(n,o,r,t)}return o},st=(e,t,o,r)=>{let n=e.length;for(let i=0;i<n;i++){let s=e[i];yr(s,t,o,r)}},yr=(e,t,o,r)=>{if(typeof e=="string"){wr(e,t,o);return}if(typeof e=="function"){Rr(e,t,o,r);return}Cr(e,t,o,r)},wr=(e,t,o)=>{let r=e===""?t:ro(t,e);r.classGroupId=o},Rr=(e,t,o,r)=>{if(kr(e)){st(e(r),t,o,r);return}t.validators===null&&(t.validators=[]),t.validators.push(pr(o,e))},Cr=(e,t,o,r)=>{let n=Object.entries(e),i=n.length;for(let s=0;s<i;s++){let[a,l]=n[s];st(l,ro(t,a),o,r)}},ro=(e,t)=>{let o=e,r=t.split(De),n=r.length;for(let i=0;i<n;i++){let s=r[i],a=o.nextPart.get(s);a||(a=to(),o.nextPart.set(s,a)),o=a}return o},kr=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Sr=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,o=Object.create(null),r=Object.create(null),n=(i,s)=>{o[i]=s,t++,t>e&&(t=0,r=o,o=Object.create(null))};return{get(i){let s=o[i];if(s!==void 0)return s;if((s=r[i])!==void 0)return n(i,s),s},set(i,s){i in o?o[i]=s:n(i,s)}}},nt="!",Xt=":",Ir=[],Zt=(e,t,o,r,n)=>({modifiers:e,hasImportantModifier:t,baseClassName:o,maybePostfixModifierPosition:r,isExternal:n}),Tr=e=>{let{prefix:t,experimentalParseClassName:o}=e,r=n=>{let i=[],s=0,a=0,l=0,c,u=n.length;for(let y=0;y<u;y++){let g=n[y];if(s===0&&a===0){if(g===Xt){i.push(n.slice(l,y)),l=y+1;continue}if(g==="/"){c=y;continue}}g==="["?s++:g==="]"?s--:g==="("?a++:g===")"&&a--}let p=i.length===0?n:n.slice(l),h=p,x=!1;p.endsWith(nt)?(h=p.slice(0,-1),x=!0):p.startsWith(nt)&&(h=p.slice(1),x=!0);let w=c&&c>l?c-l:void 0;return Zt(i,x,h,w)};if(t){let n=t+Xt,i=r;r=s=>s.startsWith(n)?i(s.slice(n.length)):Zt(Ir,!1,s,void 0,!0)}if(o){let n=r;r=i=>o({className:i,parseClassName:n})}return r},Ar=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((o,r)=>{t.set(o,1e6+r)}),o=>{let r=[],n=[];for(let i=0;i<o.length;i++){let s=o[i],a=s[0]==="[",l=t.has(s);a||l?(n.length>0&&(n.sort(),r.push(...n),n=[]),r.push(s)):n.push(s)}return n.length>0&&(n.sort(),r.push(...n)),r}},Pr=e=>({cache:Sr(e.cacheSize),parseClassName:Tr(e),sortModifiers:Ar(e),postfixLookupClassGroupIds:Er(e),...gr(e)}),Er=e=>{let t=Object.create(null),o=e.postfixLookupClassGroups;if(o)for(let r=0;r<o.length;r++)t[o[r]]=!0;return t},Nr=/\s+/,Mr=(e,t)=>{let{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:n,sortModifiers:i,postfixLookupClassGroupIds:s}=t,a=[],l=e.trim().split(Nr),c="";for(let u=l.length-1;u>=0;u-=1){let p=l[u],{isExternal:h,modifiers:x,hasImportantModifier:w,baseClassName:y,maybePostfixModifierPosition:g}=o(p);if(h){c=p+(c.length>0?" "+c:c);continue}let k=!!g,R;if(k){let L=y.substring(0,g);R=r(L);let d=R&&s[R]?r(y):void 0;d&&d!==R&&(R=d,k=!1)}else R=r(y);if(!R){if(!k){c=p+(c.length>0?" "+c:c);continue}if(R=r(y),!R){c=p+(c.length>0?" "+c:c);continue}k=!1}let C=x.length===0?"":x.length===1?x[0]:i(x).join(":"),S=w?C+nt:C,D=S+R;if(a.indexOf(D)>-1)continue;a.push(D);let G=n(R,k);for(let L=0;L<G.length;++L){let d=G[L];a.push(S+d)}c=p+(c.length>0?" "+c:c)}return c},zr=(...e)=>{let t=0,o,r,n="";for(;t<e.length;)(o=e[t++])&&(r=no(o))&&(n&&(n+=" "),n+=r);return n},no=e=>{if(typeof e=="string")return e;let t,o="";for(let r=0;r<e.length;r++)e[r]&&(t=no(e[r]))&&(o&&(o+=" "),o+=t);return o},Or=(e,...t)=>{let o,r,n,i,s=l=>{let c=t.reduce((u,p)=>p(u),e());return o=Pr(c),r=o.cache.get,n=o.cache.set,i=a,a(l)},a=l=>{let c=r(l);if(c)return c;let u=Mr(l,o);return n(l,u),u};return i=s,(...l)=>i(zr(...l))},_r=[],A=e=>{let t=o=>o[e]||_r;return t.isThemeGetter=!0,t},so=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,io=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Fr=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Lr=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Dr=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Gr=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Vr=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,jr=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Z=e=>Fr.test(e),v=e=>!!e&&!Number.isNaN(Number(e)),B=e=>!!e&&Number.isInteger(Number(e)),rt=e=>e.endsWith("%")&&v(e.slice(0,-1)),Y=e=>Lr.test(e),ao=()=>!0,$r=e=>Dr.test(e)&&!Gr.test(e),it=()=>!1,Wr=e=>Vr.test(e),Ur=e=>jr.test(e),Br=e=>!f(e)&&!m(e),Kr=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),Hr=e=>J(e,uo,it),f=e=>so.test(e),se=e=>J(e,fo,$r),Jt=e=>J(e,tn,v),Yr=e=>J(e,po,ao),qr=e=>J(e,mo,it),Qt=e=>J(e,co,it),Xr=e=>J(e,lo,Ur),Fe=e=>J(e,bo,Wr),m=e=>io.test(e),pe=e=>ie(e,fo),Zr=e=>ie(e,mo),eo=e=>ie(e,co),Jr=e=>ie(e,uo),Qr=e=>ie(e,lo),Le=e=>ie(e,bo,!0),en=e=>ie(e,po,!0),J=(e,t,o)=>{let r=so.exec(e);return r?r[1]?t(r[1]):o(r[2]):!1},ie=(e,t,o=!1)=>{let r=io.exec(e);return r?r[1]?t(r[1]):o:!1},co=e=>e==="position"||e==="percentage",lo=e=>e==="image"||e==="url",uo=e=>e==="length"||e==="size"||e==="bg-size",fo=e=>e==="length",tn=e=>e==="number",mo=e=>e==="family-name",po=e=>e==="number"||e==="weight",bo=e=>e==="shadow";var on=()=>{let e=A("color"),t=A("font"),o=A("text"),r=A("font-weight"),n=A("tracking"),i=A("leading"),s=A("breakpoint"),a=A("container"),l=A("spacing"),c=A("radius"),u=A("shadow"),p=A("inset-shadow"),h=A("text-shadow"),x=A("drop-shadow"),w=A("blur"),y=A("perspective"),g=A("aspect"),k=A("ease"),R=A("animate"),C=()=>["auto","avoid","all","avoid-page","page","left","right","column"],S=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],D=()=>[...S(),m,f],G=()=>["auto","hidden","clip","visible","scroll"],L=()=>["auto","contain","none"],d=()=>[m,f,l],O=()=>[Z,"full","auto",...d()],fe=()=>[B,"none","subgrid",m,f],ae=()=>["auto",{span:["full",B,m,f]},B,m,f],ce=()=>[B,"auto",m,f],he=()=>["auto","min","max","fr",m,f],ve=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],q=()=>["start","end","center","stretch","center-safe","end-safe"],T=()=>["auto",...d()],Q=()=>[Z,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...d()],Ve=()=>[Z,"screen","full","dvw","lvw","svw","min","max","fit",...d()],je=()=>[Z,"screen","full","lh","dvh","lvh","svh","min","max","fit",...d()],b=()=>[e,m,f],gt=()=>[...S(),eo,Qt,{position:[m,f]}],ht=()=>["no-repeat",{repeat:["","x","y","space","round"]}],vt=()=>["auto","cover","contain",Jr,Hr,{size:[m,f]}],$e=()=>[rt,pe,se],_=()=>["","none","full",c,m,f],F=()=>["",v,pe,se],xe=()=>["solid","dashed","dotted","double"],xt=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],P=()=>[v,rt,eo,Qt],yt=()=>["","none",w,m,f],ye=()=>["none",v,m,f],we=()=>["none",v,m,f],We=()=>[v,m,f],Re=()=>[Z,"full",...d()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Y],breakpoint:[Y],color:[ao],container:[Y],"drop-shadow":[Y],ease:["in","out","in-out"],font:[Br],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Y],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Y],shadow:[Y],spacing:["px",v],text:[Y],"text-shadow":[Y],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Z,f,m,g]}],container:["container"],"container-type":[{"@container":["","normal","size",m,f]}],"container-named":[Kr],columns:[{columns:[v,f,m,a]}],"break-after":[{"break-after":C()}],"break-before":[{"break-before":C()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:D()}],overflow:[{overflow:G()}],"overflow-x":[{"overflow-x":G()}],"overflow-y":[{"overflow-y":G()}],overscroll:[{overscroll:L()}],"overscroll-x":[{"overscroll-x":L()}],"overscroll-y":[{"overscroll-y":L()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:O()}],"inset-x":[{"inset-x":O()}],"inset-y":[{"inset-y":O()}],start:[{"inset-s":O(),start:O()}],end:[{"inset-e":O(),end:O()}],"inset-bs":[{"inset-bs":O()}],"inset-be":[{"inset-be":O()}],top:[{top:O()}],right:[{right:O()}],bottom:[{bottom:O()}],left:[{left:O()}],visibility:["visible","invisible","collapse"],z:[{z:[B,"auto",m,f]}],basis:[{basis:[Z,"full","auto",a,...d()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[v,Z,"auto","initial","none",f]}],grow:[{grow:["",v,m,f]}],shrink:[{shrink:["",v,m,f]}],order:[{order:[B,"first","last","none",m,f]}],"grid-cols":[{"grid-cols":fe()}],"col-start-end":[{col:ae()}],"col-start":[{"col-start":ce()}],"col-end":[{"col-end":ce()}],"grid-rows":[{"grid-rows":fe()}],"row-start-end":[{row:ae()}],"row-start":[{"row-start":ce()}],"row-end":[{"row-end":ce()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":he()}],"auto-rows":[{"auto-rows":he()}],gap:[{gap:d()}],"gap-x":[{"gap-x":d()}],"gap-y":[{"gap-y":d()}],"justify-content":[{justify:[...ve(),"normal"]}],"justify-items":[{"justify-items":[...q(),"normal"]}],"justify-self":[{"justify-self":["auto",...q()]}],"align-content":[{content:["normal",...ve()]}],"align-items":[{items:[...q(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...q(),{baseline:["","last"]}]}],"place-content":[{"place-content":ve()}],"place-items":[{"place-items":[...q(),"baseline"]}],"place-self":[{"place-self":["auto",...q()]}],p:[{p:d()}],px:[{px:d()}],py:[{py:d()}],ps:[{ps:d()}],pe:[{pe:d()}],pbs:[{pbs:d()}],pbe:[{pbe:d()}],pt:[{pt:d()}],pr:[{pr:d()}],pb:[{pb:d()}],pl:[{pl:d()}],m:[{m:T()}],mx:[{mx:T()}],my:[{my:T()}],ms:[{ms:T()}],me:[{me:T()}],mbs:[{mbs:T()}],mbe:[{mbe:T()}],mt:[{mt:T()}],mr:[{mr:T()}],mb:[{mb:T()}],ml:[{ml:T()}],"space-x":[{"space-x":d()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":d()}],"space-y-reverse":["space-y-reverse"],size:[{size:Q()}],"inline-size":[{inline:["auto",...Ve()]}],"min-inline-size":[{"min-inline":["auto",...Ve()]}],"max-inline-size":[{"max-inline":["none",...Ve()]}],"block-size":[{block:["auto",...je()]}],"min-block-size":[{"min-block":["auto",...je()]}],"max-block-size":[{"max-block":["none",...je()]}],w:[{w:[a,"screen",...Q()]}],"min-w":[{"min-w":[a,"screen","none",...Q()]}],"max-w":[{"max-w":[a,"screen","none","prose",{screen:[s]},...Q()]}],h:[{h:["screen","lh",...Q()]}],"min-h":[{"min-h":["screen","lh","none",...Q()]}],"max-h":[{"max-h":["screen","lh",...Q()]}],"font-size":[{text:["base",o,pe,se]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,en,Yr]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",rt,f]}],"font-family":[{font:[Zr,qr,t]}],"font-features":[{"font-features":[f]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,m,f]}],"line-clamp":[{"line-clamp":[v,"none",m,Jt]}],leading:[{leading:[i,...d()]}],"list-image":[{"list-image":["none",m,f]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",m,f]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:b()}],"text-color":[{text:b()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...xe(),"wavy"]}],"text-decoration-thickness":[{decoration:[v,"from-font","auto",m,se]}],"text-decoration-color":[{decoration:b()}],"underline-offset":[{"underline-offset":[v,"auto",m,f]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:d()}],"tab-size":[{tab:[B,m,f]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",m,f]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",m,f]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:gt()}],"bg-repeat":[{bg:ht()}],"bg-size":[{bg:vt()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},B,m,f],radial:["",m,f],conic:[B,m,f]},Qr,Xr]}],"bg-color":[{bg:b()}],"gradient-from-pos":[{from:$e()}],"gradient-via-pos":[{via:$e()}],"gradient-to-pos":[{to:$e()}],"gradient-from":[{from:b()}],"gradient-via":[{via:b()}],"gradient-to":[{to:b()}],rounded:[{rounded:_()}],"rounded-s":[{"rounded-s":_()}],"rounded-e":[{"rounded-e":_()}],"rounded-t":[{"rounded-t":_()}],"rounded-r":[{"rounded-r":_()}],"rounded-b":[{"rounded-b":_()}],"rounded-l":[{"rounded-l":_()}],"rounded-ss":[{"rounded-ss":_()}],"rounded-se":[{"rounded-se":_()}],"rounded-ee":[{"rounded-ee":_()}],"rounded-es":[{"rounded-es":_()}],"rounded-tl":[{"rounded-tl":_()}],"rounded-tr":[{"rounded-tr":_()}],"rounded-br":[{"rounded-br":_()}],"rounded-bl":[{"rounded-bl":_()}],"border-w":[{border:F()}],"border-w-x":[{"border-x":F()}],"border-w-y":[{"border-y":F()}],"border-w-s":[{"border-s":F()}],"border-w-e":[{"border-e":F()}],"border-w-bs":[{"border-bs":F()}],"border-w-be":[{"border-be":F()}],"border-w-t":[{"border-t":F()}],"border-w-r":[{"border-r":F()}],"border-w-b":[{"border-b":F()}],"border-w-l":[{"border-l":F()}],"divide-x":[{"divide-x":F()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":F()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...xe(),"hidden","none"]}],"divide-style":[{divide:[...xe(),"hidden","none"]}],"border-color":[{border:b()}],"border-color-x":[{"border-x":b()}],"border-color-y":[{"border-y":b()}],"border-color-s":[{"border-s":b()}],"border-color-e":[{"border-e":b()}],"border-color-bs":[{"border-bs":b()}],"border-color-be":[{"border-be":b()}],"border-color-t":[{"border-t":b()}],"border-color-r":[{"border-r":b()}],"border-color-b":[{"border-b":b()}],"border-color-l":[{"border-l":b()}],"divide-color":[{divide:b()}],"outline-style":[{outline:[...xe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[v,m,f]}],"outline-w":[{outline:["",v,pe,se]}],"outline-color":[{outline:b()}],shadow:[{shadow:["","none",u,Le,Fe]}],"shadow-color":[{shadow:b()}],"inset-shadow":[{"inset-shadow":["none",p,Le,Fe]}],"inset-shadow-color":[{"inset-shadow":b()}],"ring-w":[{ring:F()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:b()}],"ring-offset-w":[{"ring-offset":[v,se]}],"ring-offset-color":[{"ring-offset":b()}],"inset-ring-w":[{"inset-ring":F()}],"inset-ring-color":[{"inset-ring":b()}],"text-shadow":[{"text-shadow":["none",h,Le,Fe]}],"text-shadow-color":[{"text-shadow":b()}],opacity:[{opacity:[v,m,f]}],"mix-blend":[{"mix-blend":[...xt(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":xt()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[v]}],"mask-image-linear-from-pos":[{"mask-linear-from":P()}],"mask-image-linear-to-pos":[{"mask-linear-to":P()}],"mask-image-linear-from-color":[{"mask-linear-from":b()}],"mask-image-linear-to-color":[{"mask-linear-to":b()}],"mask-image-t-from-pos":[{"mask-t-from":P()}],"mask-image-t-to-pos":[{"mask-t-to":P()}],"mask-image-t-from-color":[{"mask-t-from":b()}],"mask-image-t-to-color":[{"mask-t-to":b()}],"mask-image-r-from-pos":[{"mask-r-from":P()}],"mask-image-r-to-pos":[{"mask-r-to":P()}],"mask-image-r-from-color":[{"mask-r-from":b()}],"mask-image-r-to-color":[{"mask-r-to":b()}],"mask-image-b-from-pos":[{"mask-b-from":P()}],"mask-image-b-to-pos":[{"mask-b-to":P()}],"mask-image-b-from-color":[{"mask-b-from":b()}],"mask-image-b-to-color":[{"mask-b-to":b()}],"mask-image-l-from-pos":[{"mask-l-from":P()}],"mask-image-l-to-pos":[{"mask-l-to":P()}],"mask-image-l-from-color":[{"mask-l-from":b()}],"mask-image-l-to-color":[{"mask-l-to":b()}],"mask-image-x-from-pos":[{"mask-x-from":P()}],"mask-image-x-to-pos":[{"mask-x-to":P()}],"mask-image-x-from-color":[{"mask-x-from":b()}],"mask-image-x-to-color":[{"mask-x-to":b()}],"mask-image-y-from-pos":[{"mask-y-from":P()}],"mask-image-y-to-pos":[{"mask-y-to":P()}],"mask-image-y-from-color":[{"mask-y-from":b()}],"mask-image-y-to-color":[{"mask-y-to":b()}],"mask-image-radial":[{"mask-radial":[m,f]}],"mask-image-radial-from-pos":[{"mask-radial-from":P()}],"mask-image-radial-to-pos":[{"mask-radial-to":P()}],"mask-image-radial-from-color":[{"mask-radial-from":b()}],"mask-image-radial-to-color":[{"mask-radial-to":b()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":S()}],"mask-image-conic-pos":[{"mask-conic":[v]}],"mask-image-conic-from-pos":[{"mask-conic-from":P()}],"mask-image-conic-to-pos":[{"mask-conic-to":P()}],"mask-image-conic-from-color":[{"mask-conic-from":b()}],"mask-image-conic-to-color":[{"mask-conic-to":b()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:gt()}],"mask-repeat":[{mask:ht()}],"mask-size":[{mask:vt()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",m,f]}],filter:[{filter:["","none",m,f]}],blur:[{blur:yt()}],brightness:[{brightness:[v,m,f]}],contrast:[{contrast:[v,m,f]}],"drop-shadow":[{"drop-shadow":["","none",x,Le,Fe]}],"drop-shadow-color":[{"drop-shadow":b()}],grayscale:[{grayscale:["",v,m,f]}],"hue-rotate":[{"hue-rotate":[v,m,f]}],invert:[{invert:["",v,m,f]}],saturate:[{saturate:[v,m,f]}],sepia:[{sepia:["",v,m,f]}],"backdrop-filter":[{"backdrop-filter":["","none",m,f]}],"backdrop-blur":[{"backdrop-blur":yt()}],"backdrop-brightness":[{"backdrop-brightness":[v,m,f]}],"backdrop-contrast":[{"backdrop-contrast":[v,m,f]}],"backdrop-grayscale":[{"backdrop-grayscale":["",v,m,f]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[v,m,f]}],"backdrop-invert":[{"backdrop-invert":["",v,m,f]}],"backdrop-opacity":[{"backdrop-opacity":[v,m,f]}],"backdrop-saturate":[{"backdrop-saturate":[v,m,f]}],"backdrop-sepia":[{"backdrop-sepia":["",v,m,f]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":d()}],"border-spacing-x":[{"border-spacing-x":d()}],"border-spacing-y":[{"border-spacing-y":d()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",m,f]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[v,"initial",m,f]}],ease:[{ease:["linear","initial",k,m,f]}],delay:[{delay:[v,m,f]}],animate:[{animate:["none",R,m,f]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,m,f]}],"perspective-origin":[{"perspective-origin":D()}],rotate:[{rotate:ye()}],"rotate-x":[{"rotate-x":ye()}],"rotate-y":[{"rotate-y":ye()}],"rotate-z":[{"rotate-z":ye()}],scale:[{scale:we()}],"scale-x":[{"scale-x":we()}],"scale-y":[{"scale-y":we()}],"scale-z":[{"scale-z":we()}],"scale-3d":["scale-3d"],skew:[{skew:We()}],"skew-x":[{"skew-x":We()}],"skew-y":[{"skew-y":We()}],transform:[{transform:[m,f,"","none","gpu","cpu"]}],"transform-origin":[{origin:D()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Re()}],"translate-x":[{"translate-x":Re()}],"translate-y":[{"translate-y":Re()}],"translate-z":[{"translate-z":Re()}],"translate-none":["translate-none"],zoom:[{zoom:[B,m,f]}],accent:[{accent:b()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:b()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",m,f]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":b()}],"scrollbar-track-color":[{"scrollbar-track":b()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":d()}],"scroll-mx":[{"scroll-mx":d()}],"scroll-my":[{"scroll-my":d()}],"scroll-ms":[{"scroll-ms":d()}],"scroll-me":[{"scroll-me":d()}],"scroll-mbs":[{"scroll-mbs":d()}],"scroll-mbe":[{"scroll-mbe":d()}],"scroll-mt":[{"scroll-mt":d()}],"scroll-mr":[{"scroll-mr":d()}],"scroll-mb":[{"scroll-mb":d()}],"scroll-ml":[{"scroll-ml":d()}],"scroll-p":[{"scroll-p":d()}],"scroll-px":[{"scroll-px":d()}],"scroll-py":[{"scroll-py":d()}],"scroll-ps":[{"scroll-ps":d()}],"scroll-pe":[{"scroll-pe":d()}],"scroll-pbs":[{"scroll-pbs":d()}],"scroll-pbe":[{"scroll-pbe":d()}],"scroll-pt":[{"scroll-pt":d()}],"scroll-pr":[{"scroll-pr":d()}],"scroll-pb":[{"scroll-pb":d()}],"scroll-pl":[{"scroll-pl":d()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",m,f]}],fill:[{fill:["none",...b()]}],"stroke-w":[{stroke:[v,pe,se,Jt]}],stroke:[{stroke:["none",...b()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var go=Or(on);function N(...e){return go(Ce(e))}import{jsx as nn}from"react/jsx-runtime";var rn=ke("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function at({className:e,variant:t="default",size:o="default",asChild:r=!1,...n}){let i=r?Ie.Root:"button";return nn(i,{"data-slot":"button","data-variant":t,"data-size":o,className:N(rn({variant:t,size:o,className:e})),...n})}import{jsx as ue}from"react/jsx-runtime";function ct({className:e,...t}){return ue("div",{"data-slot":"card",className:N("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",e),...t})}function lt({className:e,...t}){return ue("div",{"data-slot":"card-header",className:N("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function dt({className:e,...t}){return ue("div",{"data-slot":"card-title",className:N("leading-none font-semibold",e),...t})}function ut({className:e,...t}){return ue("div",{"data-slot":"card-description",className:N("text-sm text-muted-foreground",e),...t})}function ft({className:e,...t}){return ue("div",{"data-slot":"card-content",className:N("px-6",e),...t})}function mt({className:e,...t}){return ue("div",{"data-slot":"card-footer",className:N("flex items-center px-6 [.border-t]:pt-6",e),...t})}import{jsx as sn}from"react/jsx-runtime";function be({className:e,type:t,...o}){return sn("input",{type:t,"data-slot":"input",className:N("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...o})}import{jsx as an}from"react/jsx-runtime";function ge({className:e,...t}){return an(Oe.Root,{"data-slot":"label",className:N("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}import{jsx as Ge}from"react/jsx-runtime";function ho({className:e,orientation:t="horizontal",...o}){return Ge(ne.Root,{"data-slot":"tabs","data-orientation":t,orientation:t,className:N("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",e),...o})}var cn=ke("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function vo({className:e,variant:t="default",...o}){return Ge(ne.List,{"data-slot":"tabs-list","data-variant":t,className:N(cn({variant:t}),e),...o})}function pt({className:e,...t}){return Ge(ne.Trigger,{"data-slot":"tabs-trigger",className:N("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent","data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",e),...t})}function bt({className:e,...t}){return Ge(ne.Content,{"data-slot":"tabs-content",className:N("flex-1 outline-none",e),...t})}import{jsx as I,jsxs as j}from"react/jsx-runtime";function ln(){return I("div",{className:"flex w-full max-w-sm flex-col gap-6",children:j(ho,{defaultValue:"account",children:[j(vo,{children:[I(pt,{value:"account",children:"Account"}),I(pt,{value:"password",children:"Password"})]}),I(bt,{value:"account",children:j(ct,{children:[j(lt,{children:[I(dt,{children:"Account"}),I(ut,{children:"Make changes to your account here. Click save when you're done."})]}),j(ft,{className:"grid gap-6",children:[j("div",{className:"grid gap-3",children:[I(ge,{htmlFor:"tabs-demo-name",children:"Name"}),I(be,{id:"tabs-demo-name",defaultValue:"Pedro Duarte"})]}),j("div",{className:"grid gap-3",children:[I(ge,{htmlFor:"tabs-demo-username",children:"Username"}),I(be,{id:"tabs-demo-username",defaultValue:"@peduarte"})]})]}),I(mt,{children:I(at,{children:"Save changes"})})]})}),I(bt,{value:"password",children:j(ct,{children:[j(lt,{children:[I(dt,{children:"Password"}),I(ut,{children:"Change your password here. After saving, you'll be logged out."})]}),j(ft,{className:"grid gap-6",children:[j("div",{className:"grid gap-3",children:[I(ge,{htmlFor:"tabs-demo-current",children:"Current password"}),I(be,{id:"tabs-demo-current",type:"password"})]}),j("div",{className:"grid gap-3",children:[I(ge,{htmlFor:"tabs-demo-new",children:"New password"}),I(be,{id:"tabs-demo-new",type:"password"})]})]}),I(mt,{children:I(at,{children:"Save password"})})]})})]})})}export{ln as default};
b/50fbbce888823b4a93479b927633b3186042b64559fab0ac30f75a42037be393 ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "org.hologram.ui.retro-grid",
3
+ "name": "retro-grid",
4
+ "tier": "component",
5
+ "library": "magicui",
6
+ "category": "Backgrounds",
7
+ "upstream": "https://magicui.design/r/retro-grid.json",
8
+ "did": "did:holo:sha256:5b32109847774e8b09084c743809e28589607b2df99fe5a8916e1845bf7d5979",
9
+ "import": "holo://sha256:ba440532f46452f745d24c6dde5a006f9162afbcd85cd787cc17c042bd4eeb06",
10
+ "integrity": "sha256-ukQFMvRkUvdF0kxt3loAb5Fir7zYXNeHzBfAQr1O6wY=",
11
+ "kappa": "sha256:5b32109847774e8b09084c743809e28589607b2df99fe5a8916e1845bf7d5979",
12
+ "moduleKappa": "sha256:ba440532f46452f745d24c6dde5a006f9162afbcd85cd787cc17c042bd4eeb06",
13
+ "renderExport": "RetroGrid",
14
+ "source": "components/ui/retro-grid.tsx",
15
+ "module": "vendor/components/retro-grid.js",
16
+ "exports": [
17
+ "RetroGrid"
18
+ ],
19
+ "license": "MIT"
20
+ }
b/5107ffe739414801a168b29ed3cbe27c819c05a36df88e69bbf1bfaf43d72bfc ADDED
@@ -0,0 +1,270 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // GGUF Forge — tokenizers. Dispatches on tokenizer.ggml.model:
2
+ // "gpt2" -> BPE (GPT2/Qwen2 byte-level): regex pretokenize -> GPT2 byte->unicode
3
+ // map -> rank-ordered pair merges -> vocab ids.
4
+ // "llama" -> SPM (SentencePiece, byte-level BPE w/ byte fallback): escape spaces to
5
+ // ▁ (U+2581) -> per-UTF8-char symbols -> score-priority bigram merges ->
6
+ // resegment with <0xXX> byte fallback. Port of llm_tokenizer_spm_session
7
+ // (src/llama-vocab.cpp:114-238); byte_to_token :3599, escape :3038.
8
+ //
9
+ // BPE pretokenizer regex from src/llama-vocab.cpp (LLAMA_VOCAB_PRE_TYPE_QWEN2, :375).
10
+ // BPE merge order = lowest merge-rank first, leftmost on ties (matches
11
+ // llm_tokenizer_bpe_session::tokenize, :562). Byte map = the standard GPT2
12
+ // bytes_to_unicode. Both paths verified against the built llama_tokenize (see test).
13
+
14
+ const QWEN2_RE = /(?:'[sS]|'[tT]|'[rR][eE]|'[vV][eE]|'[mM]|'[lL][lL]|'[dD])|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+/gu;
15
+
16
+ // ── GGUF KV reader (captures the tokenizer arrays parseGgufHeader skips) ──
17
+ function readTokenizerMeta(buf) {
18
+ const dv = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
19
+ let p = 0;
20
+ const u32 = () => { const v = dv.getUint32(p, true); p += 4; return v; };
21
+ const u64 = () => { const lo = dv.getUint32(p, true), hi = dv.getUint32(p + 4, true); p += 8; return hi * 4294967296 + lo; };
22
+ const str = () => { const n = u64(); const s = new TextDecoder().decode(buf.subarray(p, p + n)); p += n; return s; };
23
+ const td = new TextDecoder();
24
+ if (u32() !== 0x46554747) throw new Error("not GGUF");
25
+ const version = u32(); if (version !== 3 && version !== 2) throw new Error("GGUF v" + version);
26
+ u64(); // tensor_count
27
+ const nkv = u64();
28
+ const WANT = new Set(["tokenizer.ggml.tokens", "tokenizer.ggml.merges", "tokenizer.ggml.token_type",
29
+ "tokenizer.ggml.scores", "tokenizer.ggml.model", "tokenizer.ggml.pre",
30
+ "tokenizer.ggml.bos_token_id", "tokenizer.ggml.eos_token_id",
31
+ "tokenizer.ggml.add_bos_token", "tokenizer.ggml.add_eos_token", "tokenizer.ggml.add_space_prefix"]);
32
+ const out = {};
33
+ const readScalar = (ty) => {
34
+ switch (ty) {
35
+ case 0: case 7: { const v = buf[p]; p += 1; return ty === 7 ? v !== 0 : v; }
36
+ case 1: { const v = (buf[p] << 24 >> 24); p += 1; return v; }
37
+ case 2: { const v = dv.getUint16(p, true); p += 2; return v; }
38
+ case 3: { const v = dv.getInt16(p, true); p += 2; return v; }
39
+ case 4: return u32();
40
+ case 5: { const v = dv.getInt32(p, true); p += 4; return v; }
41
+ case 6: { const v = dv.getFloat32(p, true); p += 4; return v; }
42
+ case 8: return str();
43
+ case 10: case 11: return u64();
44
+ case 12: { const v = dv.getFloat64(p, true); p += 8; return v; }
45
+ default: throw new Error("bad type " + ty);
46
+ }
47
+ };
48
+ const skip = (ty) => { readScalar(ty); };
49
+ for (let i = 0; i < nkv; i++) {
50
+ const keyLen = u64(); const key = td.decode(buf.subarray(p, p + keyLen)); p += keyLen;
51
+ const ty = u32();
52
+ if (ty === 9) { // array
53
+ const ety = u32(), cnt = u64();
54
+ if (WANT.has(key)) {
55
+ const arr = new Array(cnt);
56
+ for (let j = 0; j < cnt; j++) arr[j] = readScalar(ety);
57
+ out[key] = arr;
58
+ } else {
59
+ for (let j = 0; j < cnt; j++) skip(ety);
60
+ }
61
+ } else {
62
+ const v = readScalar(ty);
63
+ if (WANT.has(key)) out[key] = v;
64
+ }
65
+ }
66
+ return out;
67
+ }
68
+
69
+ // Special/user-defined token pre-partition (tokenizer_st_partition, :2903). Tokens
70
+ // of type CONTROL(3)/USER_DEFINED(4)/UNKNOWN(2) are extracted from the raw text —
71
+ // longest first — BEFORE byte-level/escape processing, so e.g. Gemma's literal
72
+ // whitespace tokens (" ", "\t") become single ids. With parseSpecial=false,
73
+ // CONTROL/UNKNOWN are skipped but USER_DEFINED are still partitioned (:2909).
74
+ function buildPartition(tokens, tokenType) {
75
+ const ids = [];
76
+ for (let i = 0; i < tokens.length; i++) { const ty = tokenType ? tokenType[i] : 1; if (ty === 2 || ty === 3 || ty === 4) ids.push(i); }
77
+ ids.sort((a, b) => (tokens[b]?.length || 0) - (tokens[a]?.length || 0)); // longest text first
78
+ return function partition(text, parseSpecial) {
79
+ let frags = [{ raw: text }];
80
+ for (const id of ids) {
81
+ const ty = tokenType ? tokenType[id] : 1;
82
+ if (!parseSpecial && (ty === 2 || ty === 3)) continue; // skip CONTROL/UNKNOWN unless parse_special
83
+ const tt = tokens[id]; if (!tt) continue;
84
+ const next = [];
85
+ for (const f of frags) {
86
+ if (f.id !== undefined) { next.push(f); continue; }
87
+ const raw = f.raw; let from = 0, idx;
88
+ while ((idx = raw.indexOf(tt, from)) !== -1) {
89
+ if (idx > from) next.push({ raw: raw.slice(from, idx) });
90
+ next.push({ id });
91
+ from = idx + tt.length;
92
+ }
93
+ if (from < raw.length) next.push({ raw: raw.slice(from) });
94
+ }
95
+ frags = next;
96
+ }
97
+ return frags;
98
+ };
99
+ }
100
+
101
+ // GPT2 bytes_to_unicode (and inverse).
102
+ function byteUnicodeMaps() {
103
+ const bs = [];
104
+ for (let i = 33; i <= 126; i++) bs.push(i);
105
+ for (let i = 161; i <= 172; i++) bs.push(i);
106
+ for (let i = 174; i <= 255; i++) bs.push(i);
107
+ const cs = bs.slice();
108
+ let n = 0;
109
+ for (let b = 0; b < 256; b++) if (!bs.includes(b)) { bs.push(b); cs.push(256 + n); n++; }
110
+ const b2u = new Array(256), u2b = {};
111
+ for (let i = 0; i < bs.length; i++) { const ch = String.fromCharCode(cs[i]); b2u[bs[i]] = ch; u2b[ch] = bs[i]; }
112
+ return { b2u, u2b };
113
+ }
114
+
115
+ // Build a tokenizer from a GGUF buffer.
116
+ export function makeTokenizer(buf) {
117
+ const meta = readTokenizerMeta(buf);
118
+ const tokens = meta["tokenizer.ggml.tokens"];
119
+ if (!tokens) throw new Error("tokenizer: no tokens array in GGUF");
120
+ const model = meta["tokenizer.ggml.model"], pre = meta["tokenizer.ggml.pre"];
121
+ const tokenToId = new Map(); for (let i = 0; i < tokens.length; i++) tokenToId.set(tokens[i], i);
122
+ const partition = buildPartition(tokens, meta["tokenizer.ggml.token_type"]);
123
+ if (model === "llama") return makeSpmTokenizer({ meta, tokens, tokenToId, model, pre, partition });
124
+ const merges = meta["tokenizer.ggml.merges"] || [];
125
+ const rank = new Map(); for (let i = 0; i < merges.length; i++) rank.set(merges[i], i); // "A B" -> rank
126
+ const { b2u, u2b } = byteUnicodeMaps();
127
+ const enc = new TextEncoder(), dec = new TextDecoder();
128
+
129
+ // BPE on a byte-mapped char array: merge lowest-rank adjacent pair first.
130
+ function bpe(chars) {
131
+ if (chars.length < 2) return chars;
132
+ let word = chars;
133
+ for (;;) {
134
+ let best = Infinity, bi = -1;
135
+ for (let i = 0; i < word.length - 1; i++) {
136
+ const r = rank.get(word[i] + " " + word[i + 1]);
137
+ if (r !== undefined && r < best) { best = r; bi = i; }
138
+ }
139
+ if (bi < 0) break;
140
+ const merged = word.slice(0, bi);
141
+ merged.push(word[bi] + word[bi + 1]);
142
+ for (let i = bi + 2; i < word.length; i++) merged.push(word[i]);
143
+ word = merged;
144
+ }
145
+ return word;
146
+ }
147
+
148
+ function encode(text, { addSpecial = false, parseSpecial = false } = {}) {
149
+ const ids = [];
150
+ if (addSpecial && meta["tokenizer.ggml.add_bos_token"] && meta["tokenizer.ggml.bos_token_id"] != null)
151
+ ids.push(meta["tokenizer.ggml.bos_token_id"]);
152
+ for (const frag of partition(text, parseSpecial)) {
153
+ if (frag.id !== undefined) { ids.push(frag.id); continue; } // special/user-defined token, verbatim
154
+ for (const m of frag.raw.matchAll(QWEN2_RE)) {
155
+ const piece = m[0];
156
+ // byte-level map each UTF-8 byte -> unicode char
157
+ const bytes = enc.encode(piece);
158
+ const chars = new Array(bytes.length);
159
+ for (let i = 0; i < bytes.length; i++) chars[i] = b2u[bytes[i]];
160
+ for (const sub of bpe(chars)) {
161
+ const id = tokenToId.get(sub);
162
+ if (id === undefined) throw new Error("tokenizer: unknown subword '" + sub + "'");
163
+ ids.push(id);
164
+ }
165
+ }
166
+ }
167
+ return ids;
168
+ }
169
+
170
+ function decode(ids) {
171
+ const bytes = [];
172
+ for (const id of ids) {
173
+ const tok = tokens[id]; if (tok === undefined) continue;
174
+ for (const ch of tok) { const b = u2b[ch]; if (b !== undefined) bytes.push(b); }
175
+ }
176
+ return dec.decode(new Uint8Array(bytes));
177
+ }
178
+
179
+ return { encode, decode, model, pre, nVocab: tokens.length, meta, tokenToId, tokens };
180
+ }
181
+
182
+ // ── SPM (SentencePiece / LLaMA) ──────────────────────────────────────────────
183
+ // Port of llm_tokenizer_spm_session (src/llama-vocab.cpp:114). Symbols are UTF-8
184
+ // chars in a doubly-linked list; a max-priority queue (by token SCORE, ties→lower
185
+ // left index) repeatedly merges the best adjacent bigram that is a vocab token.
186
+ const HEXU = "0123456789ABCDEF";
187
+ const utf8Len = (b) => b < 0x80 ? 1 : (b & 0xe0) === 0xc0 ? 2 : (b & 0xf0) === 0xe0 ? 3 : (b & 0xf8) === 0xf0 ? 4 : 1;
188
+
189
+ function makeSpmTokenizer({ meta, tokens, tokenToId, model, pre, partition }) {
190
+ const scores = meta["tokenizer.ggml.scores"] || [];
191
+ const enc = new TextEncoder(), dec = new TextDecoder();
192
+ const addSpacePrefix = meta["tokenizer.ggml.add_space_prefix"] !== false; // default true for SPM
193
+ const byteFallback = (b) => {
194
+ const k = "<0x" + HEXU[b >> 4] + HEXU[b & 15] + ">";
195
+ let id = tokenToId.get(k);
196
+ if (id === undefined) id = tokenToId.get(String.fromCharCode(b)); // raw-byte fallback
197
+ if (id === undefined) throw new Error("spm: no byte token for 0x" + b.toString(16));
198
+ return id;
199
+ };
200
+
201
+ function tokenizePiece(bytes, out) {
202
+ // symbols: parallel arrays start/n/prev/next over the byte buffer
203
+ const start = [], n = [], prev = [], next = [];
204
+ for (let offs = 0, i = 0; offs < bytes.length; i++) {
205
+ const len = Math.min(utf8Len(bytes[offs]), bytes.length - offs);
206
+ start.push(offs); n.push(len); prev.push(i - 1); offs += len;
207
+ next.push(offs === bytes.length ? -1 : i + 1);
208
+ }
209
+ const symText = (i) => dec.decode(bytes.subarray(start[i], start[i] + n[i]));
210
+ // max-heap of bigrams: better = higher score, then lower left index.
211
+ const heap = [];
212
+ const better = (a, b) => a.score > b.score || (a.score === b.score && a.left < b.left);
213
+ const push = (x) => { heap.push(x); let c = heap.length - 1; while (c > 0) { const p = (c - 1) >> 1; if (better(heap[c], heap[p])) { [heap[c], heap[p]] = [heap[p], heap[c]]; c = p; } else break; } };
214
+ const pop = () => { const top = heap[0], last = heap.pop(); if (heap.length) { heap[0] = last; let c = 0; for (;;) { let m = c; const l = 2 * c + 1, r = 2 * c + 2; if (l < heap.length && better(heap[l], heap[m])) m = l; if (r < heap.length && better(heap[r], heap[m])) m = r; if (m === c) break; [heap[c], heap[m]] = [heap[m], heap[c]]; c = m; } } return top; };
215
+ const tryAdd = (left, right) => {
216
+ if (left === -1 || right === -1) return;
217
+ const text = dec.decode(bytes.subarray(start[left], start[left] + n[left] + n[right]));
218
+ const id = tokenToId.get(text);
219
+ if (id === undefined) return;
220
+ push({ left, right, score: scores[id] ?? 0, size: n[left] + n[right] });
221
+ };
222
+ for (let i = 1; i < start.length; i++) tryAdd(i - 1, i);
223
+ while (heap.length) {
224
+ const bg = pop();
225
+ const L = bg.left, R = bg.right;
226
+ if (n[L] === 0 || n[R] === 0 || n[L] + n[R] !== bg.size) continue; // stale
227
+ n[L] += n[R]; n[R] = 0; // merge R into L
228
+ next[L] = next[R]; if (next[R] >= 0) prev[next[R]] = L;
229
+ tryAdd(prev[L], L); tryAdd(L, next[L]);
230
+ }
231
+ // emit: each surviving symbol → its token, else byte fallback per UTF-8 byte.
232
+ for (let i = 0; i !== -1; i = next[i]) {
233
+ const id = tokenToId.get(symText(i));
234
+ if (id !== undefined) { out.push(id); continue; }
235
+ for (let j = 0; j < n[i]; j++) out.push(byteFallback(bytes[start[i] + j]));
236
+ }
237
+ }
238
+
239
+ function encode(text, { addSpecial = false, parseSpecial = false } = {}) {
240
+ const out = [];
241
+ let isPrevSpecial = true; // prefix-space only at start / after a special token
242
+ if (addSpecial && meta["tokenizer.ggml.add_bos_token"] && meta["tokenizer.ggml.bos_token_id"] != null)
243
+ out.push(meta["tokenizer.ggml.bos_token_id"]);
244
+ for (const frag of partition(text, parseSpecial)) {
245
+ if (frag.id !== undefined) { out.push(frag.id); isPrevSpecial = true; continue; }
246
+ let s = (addSpacePrefix && isPrevSpecial) ? " " + frag.raw : frag.raw;
247
+ s = s.replace(/ /g, "▁"); // llama_escape_whitespace: ' ' → ▁
248
+ if (s.length) tokenizePiece(enc.encode(s), out);
249
+ isPrevSpecial = false;
250
+ }
251
+ if (addSpecial && meta["tokenizer.ggml.add_eos_token"] && meta["tokenizer.ggml.eos_token_id"] != null)
252
+ out.push(meta["tokenizer.ggml.eos_token_id"]);
253
+ return out;
254
+ }
255
+
256
+ function decode(ids) {
257
+ const bytes = [];
258
+ for (const id of ids) {
259
+ const tok = tokens[id]; if (tok === undefined) continue;
260
+ const mB = /^<0x([0-9A-Fa-f]{2})>$/.exec(tok);
261
+ if (mB) { bytes.push(parseInt(mB[1], 16)); continue; }
262
+ for (const b of enc.encode(tok.replace(/▁/g, " "))) bytes.push(b);
263
+ }
264
+ let txt = dec.decode(new Uint8Array(bytes));
265
+ if (addSpacePrefix && txt.startsWith(" ")) txt = txt.slice(1); // drop the prefix space
266
+ return txt;
267
+ }
268
+
269
+ return { encode, decode, model, pre, nVocab: tokens.length, meta, tokenToId, tokens, scores };
270
+ }
b/514d2338fde41f8ac0d2e8de3ed44977c3e6118e4ee38697aecae792b3f73f74 ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import chat from './object.js';
2
+ import { addPrefix } from '../../functions/addPrefix.js';
3
+
4
+ export default ({ addComponents, prefix = '' }) => {
5
+ const prefixedchat = addPrefix(chat, prefix);
6
+ addComponents({ ...prefixedchat });
7
+ };
b/51eb93fec6c55e3e9ab18d2c06df56b95f453710ca4631f5e2810df8fd45ca27 ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // core/semantic.js — the SEMANTIC SKIN (gap C2): every κ-object the substrate produces carries an
2
+ // open-semantic-web type, so humans, agents, and W3C validators all read it the same way. Closes the
3
+ // weakest audit axis (κ names objects, but few declared a W3C @type). Two W3C standards, both native:
4
+ // • JSON-LD / schema.org — WHAT a thing is (a skill is a schema:HowTo; a file is a schema:DigitalDocument)
5
+ // • PROV-O — HOW it came to be (the κ-chain becomes prov:wasRevisionOf links)
6
+ // Pure, dependency-free, browser+node. The result round-trips through any JSON-LD/RDF tool.
7
+
8
+ export const HOLO_CONTEXT = {
9
+ schema: "https://schema.org/",
10
+ prov: "http://www.w3.org/ns/prov#",
11
+ holo: "https://hologram.foundation/ns/",
12
+ "@vocab": "https://schema.org/",
13
+ };
14
+
15
+ // schema.org type for a substrate object kind (the canonical mapping, L2 — fixed at the ingest boundary)
16
+ const TYPE_FOR = {
17
+ skill: "HowTo", // a reusable procedure = schema:HowTo (steps + when-to-use)
18
+ file: "DigitalDocument",
19
+ app: "SoftwareApplication",
20
+ model: "SoftwareSourceCode",
21
+ conversation: "Conversation",
22
+ receipt: "CreativeWork", // a sealed work record: schema:CreativeWork that is also a prov:Entity
23
+ };
24
+
25
+ // wrap any object as a typed, content-addressed JSON-LD node. `kappa` is its did:holo (the @id —
26
+ // content IS the identity, Law L1). `prov` is the κ-chain → prov:wasRevisionOf links (PROV-O).
27
+ export function asLinkedData({ kind, kappa, props = {}, prov = [] }) {
28
+ const t = TYPE_FOR[kind] || "Thing";
29
+ const node = {
30
+ "@context": HOLO_CONTEXT,
31
+ "@id": kappa, // content-derived identity (no location — Law L1)
32
+ "@type": Array.isArray(t) ? t : ["schema:" + t, "prov:Entity"], // schema kind + PROV entity
33
+ ...props,
34
+ };
35
+ if (prov.length >= 2) { // the version chain → PROV-O revision links
36
+ const cur = prov[prov.length - 1], parent = prov[prov.length - 2];
37
+ node["prov:wasRevisionOf"] = { "@id": parent.kappa };
38
+ node["holo:version"] = cur.v;
39
+ }
40
+ node["prov:wasDerivedFrom"] = prov.length ? prov.map((p) => ({ "@id": p.kappa })) : undefined;
41
+ return node;
42
+ }
43
+
44
+ // a skill → schema:HowTo (steps become schema:HowToStep), with its PROV-O revision chain.
45
+ export function skillAsHowTo({ name, description, instructions, kappa, prov = [] }) {
46
+ const steps = String(instructions || "").split("\n").map((s) => s.trim()).filter(Boolean)
47
+ .map((text, i) => ({ "@type": "schema:HowToStep", "schema:position": i + 1, "schema:text": text.replace(/^\d+[.)]\s*/, "") }));
48
+ return asLinkedData({ kind: "skill", kappa, prov, props: { "schema:name": name, "schema:description": description, "schema:step": steps } });
49
+ }
50
+
51
+ // extension → IANA media type (schema:encodingFormat). Small, common set; default text/plain.
52
+ const MEDIA = { html: "text/html", htm: "text/html", js: "text/javascript", mjs: "text/javascript", json: "application/json", jsonld: "application/ld+json", css: "text/css", md: "text/markdown", txt: "text/plain", py: "text/x-python", svg: "image/svg+xml", wasm: "application/wasm", gz: "application/gzip" };
53
+ const mediaOf = (name) => MEDIA[String(name).toLowerCase().split(".").pop()] || "text/plain";
54
+
55
+ // a workspace file → schema:DigitalDocument (name + media type + byte size), content-addressed (L1).
56
+ export function fileAsDocument({ path, kappa, bytes = 0, mediaType, prov = [] }) {
57
+ const name = String(path).split("/").filter(Boolean).pop() || String(path);
58
+ return asLinkedData({ kind: "file", kappa, prov, props: {
59
+ "schema:name": name, "schema:identifier": kappa,
60
+ "schema:encodingFormat": mediaType || mediaOf(name), "schema:contentSize": bytes } });
61
+ }
62
+
63
+ // a built app → schema:SoftwareApplication (a self-contained WebGPU/Web app object).
64
+ export function appAsSoftware({ name, kappa, bytes = 0, prov = [] }) {
65
+ return asLinkedData({ kind: "app", kappa, prov, props: {
66
+ "schema:name": String(name).replace(/\.html$/i, ""), "schema:identifier": kappa,
67
+ "schema:applicationCategory": "WebApplication", "schema:operatingSystem": "Any (WebGPU/Web)",
68
+ "schema:fileSize": bytes } });
69
+ }
70
+
71
+ // a loaded model → schema:SoftwareSourceCode (the κ-object that runs on the GPU).
72
+ export function modelAsSource({ name, kappa, family, params, format, prov = [] }) {
73
+ return asLinkedData({ kind: "model", kappa, prov, props: {
74
+ "schema:name": name, "schema:identifier": kappa, "schema:programmingLanguage": "WGSL/WebGPU",
75
+ "holo:family": family, "holo:parameters": params, "holo:format": format } });
76
+ }
77
+
78
+ // one dispatcher so any producer can type any κ-object: linkedDataFor("app", {...}) etc.
79
+ export function linkedDataFor(kind, props = {}) {
80
+ switch (kind) {
81
+ case "skill": return skillAsHowTo(props);
82
+ case "file": return fileAsDocument(props);
83
+ case "app": return appAsSoftware(props);
84
+ case "model": return modelAsSource(props);
85
+ default: return asLinkedData({ kind, kappa: props.kappa, prov: props.prov || [], props: props.props || props });
86
+ }
87
+ }
88
+
89
+ // VERIFY (the gate): an object is semantically valid iff it has @context, an @id (κ), and a @type
90
+ // carrying both a schema.org kind and PROV-O lineage. Returns { ok, types, hasId, hasContext }.
91
+ export function verifySemantic(node) {
92
+ const types = [].concat(node && node["@type"] || []);
93
+ const hasSchema = types.some((t) => /^schema:|^https:\/\/schema\.org\//.test(t));
94
+ const hasProv = types.some((t) => /^prov:/.test(t)) || !!node["prov:wasDerivedFrom"];
95
+ const hasId = typeof node?.["@id"] === "string" && node["@id"].startsWith("did:holo:");
96
+ const hasContext = !!node?.["@context"];
97
+ return { ok: hasSchema && hasId && hasContext, hasSchema, hasProv, hasId, hasContext, types };
98
+ }
b/52076d8bbcb14f060166e2036765bb67628f7f5f4bfe4ead9ec1b74df02b28b2 ADDED
@@ -0,0 +1,332 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // holo-brain-engine.mjs — Q's conversational brain over a PRECOMPILED .holo, on the QVAC WebGPU runtime.
2
+ //
3
+ // Loads a .holo through the UNIFIED κ-stream loader (openGgufHoloStream): per-κ Range fetch + per-block
4
+ // WebCrypto SHA-256 (L5), the persistent content store (OPFS "holo-kappa", cross-model dedup) and
5
+ // head-persist — so head + bodies are 0-wire on warm. Identical loader to run-native; runs the forge transformer
6
+ // forward on the GPU. Exposes a BRAIN PROVIDER identical in shape to holo-voice-gpu-brain.mjs, so
7
+ // holo-voice.js can bind it as Q's WebGPU brain tier:
8
+ // load(onProgress) · generate(history, opts) → async-iterator of text DELTAS · chat(history) → string.
9
+ //
10
+ // The forward (WGSL kernels + dispatch order) is the PROVEN run-native/run-holo path, byte-for-byte; only
11
+ // the loading (async κ-stream instead of a fetch+forge) and the multi-turn generate loop are new. Weights
12
+ // are fetched + L5-verified once at load() and kept on the GPU; each turn reuses them (fresh KV per turn).
13
+
14
+ import { openGgufHoloStream } from "../gguf-forge-kstream.mjs"; // unified κ-stream loader (per-κ Range + L5 + head-persist)
15
+ import { makeKappaStore } from "./holo-kappa-store.mjs"; // persistent content store (OPFS "holo-kappa", cross-model dedup)
16
+ import { synthesizeGraph } from "../gguf-forge-graph.mjs";
17
+ import { makeTokenizer } from "../gguf-forge-tokenizer.mjs";
18
+ import { dequantizeExact, GGML } from "../gguf-forge-dequant.mjs";
19
+ import { unpackWeight } from "../gguf-forge-gpupack.mjs";
20
+ import { ggmlNBytes } from "../gguf-forge.mjs";
21
+ import { createGpuRuntime, G } from "./holo-gguf-gpu.mjs"; // ONE shared WGSL kernel runtime (run-native + Q's brain)
22
+
23
+ // WGSL kernels now live in the shared runtime module holo-gguf-gpu.mjs (imported above) — the
24
+ // brain forward consumes the EXACT same kernels as run-native (proven greedy-parity with llama.cpp).
25
+
26
+ const QWEN_EOS = new Set([151643, 151645, 151662, 151663, 151664]); // <|endoftext|> / <|im_end|> / …
27
+ const MAX_CTX = 2048; // matches the ATTN sc[] array size
28
+
29
+ // ── OPFS κ-cache: a .holo is immutable (content-addressed footer), so the FIRST visit downloads it and
30
+ // writes it to the Origin Private File System; EVERY later visit reads it from disk — instant, offline,
31
+ // no network. Integrity is unaffected: openHoloStream re-derives each block's κ (WebCrypto L5) whether
32
+ // the bytes came from the network or OPFS, so a corrupted cache is REFUSED, not trusted. Best-effort:
33
+ // any OPFS error (unsupported / quota) silently falls back to a plain fetch. ──
34
+ export async function loadHoloBytes(url, kappa, prog, release) {
35
+ const name = (url.split("/").pop() || "model.holo").split("?")[0];
36
+ let dir = null;
37
+ try { dir = await (await navigator.storage.getDirectory()).getDirectoryHandle("holo-models", { create: true }); } catch (e) { dir = null; }
38
+ if (dir) {
39
+ try { const f = await (await dir.getFileHandle(name)).getFile(); if (f.size > 0) { prog && prog("loading .holo from cache (OPFS)"); return { bytes: new Uint8Array(await f.arrayBuffer()), src: "opfs" }; } } catch (e) {}
40
+ }
41
+ // FIRST visit: try the repo path (present in dev / if committed) → the GitHub Release asset (big weights
42
+ // that exceed the 100MB Pages limit live here, 2GB/file) → the content-addressed κ-route (/.holo/sha256/<κ>,
43
+ // SW heals from IPFS/mesh). Location is only a latency choice; every block is re-derived by openHoloStream
44
+ // (L5), so no host is trusted (Law L1/L5). First source that returns bytes wins.
45
+ let bytes = null, src = "net";
46
+ prog && prog("downloading .holo (first visit)");
47
+ try { const r = await fetch(url); if (r.ok) bytes = new Uint8Array(await r.arrayBuffer()); } catch (e) {}
48
+ if (!bytes && release) { prog && prog("downloading .holo (release asset)"); try { const r = await fetch(release); if (r.ok) { bytes = new Uint8Array(await r.arrayBuffer()); src = "release"; } } catch (e) {} }
49
+ if (!bytes && kappa) { prog && prog("resolving .holo by κ (serverless)"); try { const r = await fetch("/.holo/sha256/" + kappa); if (r.ok) { bytes = new Uint8Array(await r.arrayBuffer()); src = "kappa"; } } catch (e) {} }
50
+ if (!bytes) throw new Error("holo: could not load from path, release, or κ-route");
51
+ if (dir) { try { const w = await (await dir.getFileHandle(name, { create: true })).createWritable(); await w.write(bytes); await w.close(); prog && prog("cached .holo to OPFS"); } catch (e) {} }
52
+ return { bytes, src };
53
+ }
54
+
55
+ // A LAZY multi-source Range reader for openGgufHoloStream: resolves the first working source
56
+ // (dev path → GitHub Release asset → content-addressed κ-route /.holo/sha256/<κ>) on first byte,
57
+ // then serves per-κ Range reads (only what's needed). A no-Range source falls back to one full GET
58
+ // + in-memory slices. On a fully-warm load (head + bodies in OPFS) this is NEVER called → 0 network.
59
+ // Location is only a latency choice; every block is re-derived by κ (L5), so no host is trusted.
60
+ function makeBrainRange(url, release, kappa, prog, rstats) {
61
+ const candidates = [url, release, kappa ? "/.holo/sha256/" + kappa : null].filter(Boolean);
62
+ let activeUrl = null, ranged = false, whole = null;
63
+ const ensure = async () => {
64
+ if (activeUrl) return;
65
+ for (const u of candidates) {
66
+ try {
67
+ const probe = await fetch(u, { headers: { Range: "bytes=0-1" } });
68
+ if (probe.status === 206) { activeUrl = u; ranged = true; rstats.served += 2; prog && prog("streaming .holo by κ"); return; }
69
+ if (probe.ok) { activeUrl = u; whole = new Uint8Array(await (await fetch(u)).arrayBuffer()); rstats.served += whole.length; prog && prog("downloading .holo (no-range source)"); return; }
70
+ } catch (e) {}
71
+ }
72
+ throw new Error("holo: could not load from path, release, or κ-route");
73
+ };
74
+ return async (off, len) => {
75
+ await ensure();
76
+ if (ranged) { const r = await fetch(activeUrl, { headers: { Range: `bytes=${off}-${off + len - 1}` } }); const b = new Uint8Array(await r.arrayBuffer()); rstats.served += b.length; return b; }
77
+ return whole.subarray(off, off + len);
78
+ };
79
+ }
80
+
81
+ export function createHoloBrain(opts = {}) {
82
+ const cfg = Object.assign({ holoUrl: "", kappa: "", releaseUrl: "", maxTokens: 512, system: "You are Q, a concise, helpful on-device assistant." }, opts);
83
+ let loadingP = null, info = { ready: false, device: null, model: cfg.holoUrl.split("/").pop() };
84
+ let dev, tok, S, Wt = {}, lmChunks = [], embedRow, SB = {}, Kc = [], Vc = [], logits, aS, aQ;
85
+ let adEnabled = false, adA = [], adB = [], adR = 0, adScale = 0; // optional LoRA adapter (attn_q): y += scale·B·(A·xn)
86
+ let D, NH, NHKV, HD, EPS, FREQ, KV, QD, scale, grp, FF, lmK, vocab;
87
+ // the shared GPU runtime (kernels + dispatch/uniform/buffer helpers), bound from createGpuRuntime(dev) at load()
88
+ let P, disp, u4, f4, sbuf, wF, rawU32, resetUniforms;
89
+
90
+ // ── apply a LoRA adapter to the ALREADY-LOADED base (build/refresh the per-layer A,B GPU buffers). Used
91
+ // both at load() (cfg.adapter) and at runtime by setAdapter() — a per-task SWAP reuses the warm base
92
+ // weights untouched and only re-uploads the tiny delta, so switching specialists costs an adapter upload,
93
+ // never a base re-stream. Validated against the model frame (target/dims/depth) — a mismatch is REFUSED. ──
94
+ function applyAdapter(ad, prog) {
95
+ if (ad.target !== "attn_q") throw new Error("adapter target unsupported (only attn_q is GPU-proven): " + ad.target);
96
+ if (ad.nLayer < S.n_layer) throw new Error("adapter has " + ad.nLayer + " layers < model " + S.n_layer);
97
+ if (ad.inn != null && ad.inn !== D) throw new Error("adapter inn " + ad.inn + " != model n_embd " + D);
98
+ if (ad.out != null && ad.out !== QD) throw new Error("adapter out " + ad.out + " != model QD " + QD);
99
+ for (const b of adA) { try { b.destroy && b.destroy(); } catch (e) {} } // free the previous delta's GPU buffers
100
+ for (const b of adB) { try { b.destroy && b.destroy(); } catch (e) {} }
101
+ adA = []; adB = [];
102
+ adR = ad.r; adScale = ad.scale;
103
+ if (SB.hA) { try { SB.hA.destroy && SB.hA.destroy(); } catch (e) {} }
104
+ SB.hA = sbuf(adR); if (!SB.hB) SB.hB = sbuf(QD);
105
+ for (let L = 0; L < S.n_layer; L++) { adA.push(wF(ad.layers[L].A)); adB.push(wF(ad.layers[L].B)); }
106
+ adEnabled = true;
107
+ prog && prog("adapter bound (attn_q, r=" + adR + ", scale=" + adScale + ")");
108
+ }
109
+
110
+ async function load(onProgress) {
111
+ if (info.ready) return info;
112
+ if (loadingP) return loadingP;
113
+ loadingP = (async () => {
114
+ const _t0 = (typeof performance !== "undefined" && performance.now) ? performance.now() : Date.now();
115
+ if (!(typeof navigator !== "undefined" && navigator.gpu)) throw new Error("no WebGPU on this device");
116
+ const prog = (m) => { try { onProgress && onProgress(m); } catch (e) {} };
117
+ // ── UNIFIED κ-STREAM LOAD: the same loader run-native rides — per-κ Range streaming, the shared
118
+ // content-addressed OPFS store (cross-model dedup), and head-persist (head+bodies 0-wire on warm). ──
119
+ prog("opening .holo (stream by κ)");
120
+ const rstats = { served: 0 };
121
+ const persist = makeKappaStore(); // OPFS "holo-kappa": per-κ body cache + head-persist, shared with every model
122
+ // UNIFIED PACK (opt-in via cfg.openGgufStream): the same {plan,store,headerBytes} from the ONE q-models pack
123
+ // (ggufStreamFromPackModel) instead of this model's own .holo. Fail-soft: null → the per-model κ-stream below.
124
+ let streamed = null;
125
+ if (cfg.openGgufStream) { try { prog("opening unified pack"); streamed = await cfg.openGgufStream({ persist }); } catch (e) { streamed = null; } }
126
+ if (!streamed) {
127
+ const rangeReader = makeBrainRange(cfg.holoUrl, cfg.releaseUrl, cfg.kappa, prog, rstats);
128
+ streamed = await openGgufHoloStream(rangeReader, { persist, urlHint: cfg.holoUrl || cfg.kappa, rootKappa: cfg.kappa ? "did:holo:sha256:" + cfg.kappa : null });
129
+ }
130
+ const { plan, store, headerBytes, headWarm } = streamed;
131
+ const arch = plan.arch || "unknown";
132
+ const tensors = plan.tensors; // {name,dims,type,typeName,kappa} — same shape the forge forward consumes
133
+ const graph = synthesizeGraph({ format: "gguf-forge/1", arch, meta: plan.meta, tensors }); S = graph.stats;
134
+ tok = makeTokenizer(headerBytes);
135
+
136
+ // fetch + L5-verify every weight body ONCE through the persistent store (per-κ, content-addressed); a
137
+ // body seen before is served from OPFS (0 net), else Range-fetched + verified + persisted. Sync forward.
138
+ // PARALLEL κ-STREAM: the weights are ~290 content-addressed bodies, each a Range fetch + WebCrypto L5 verify.
139
+ // Loading them SEQUENTIALLY (await one at a time) made cold-load bound on round-trips (measured ~150s over 314
140
+ // blocks on software-WebGPU). Fetch+verify with a bounded concurrency window instead: order is irrelevant
141
+ // (blocks is keyed by κ), every unique κ is still fetched EXACTLY once (deduped up front) → same bytes, same
142
+ // per-block L5, ~10x faster wall-clock. A rejection (L5 refuse) still propagates and fails the load as before.
143
+ prog("verifying + loading weights (L5)");
144
+ const blocks = new Map();
145
+ const uniqHexes = [...new Set(tensors.map((t) => t.kappa.split(":").pop()))];
146
+ const STREAM_CONCURRENCY = Math.max(1, Math.min(16, cfg.streamConcurrency || 12));
147
+ let _wi = 0, _done = 0;
148
+ const _streamWorker = async () => {
149
+ while (_wi < uniqHexes.length) {
150
+ const hex = uniqHexes[_wi++]; // read+increment is atomic (no await between) → no double-fetch
151
+ blocks.set(hex, await store.get(hex)); // Range + L5; throws (refuses) propagate and fail the load
152
+ if ((++_done & 31) === 0) prog(`streaming weights (L5) ${_done}/${uniqHexes.length}`);
153
+ }
154
+ };
155
+ await Promise.all(Array.from({ length: Math.min(STREAM_CONCURRENCY, uniqHexes.length) }, _streamWorker));
156
+ const cacheSrc = headWarm && persist.stats.misses === 0 ? "warm" : "cold";
157
+ const tdir = {}; for (const t of tensors) tdir[t.name] = t;
158
+ const blk = (name) => blocks.get(tdir[name].kappa.split(":").pop());
159
+ const dimsNK = (name) => { const d = tdir[name].dims; return [d.length > 1 ? d[1] : 1, d[0]]; };
160
+
161
+ // ── GPU device + pipelines ──
162
+ const gpuAdapter = await navigator.gpu.requestAdapter({ powerPreference: "high-performance" });
163
+ if (!gpuAdapter) throw new Error("WebGPU adapter unavailable on this device");
164
+ // WebGPU's DEFAULT device limits are conservative (128MB bindings / 256MB buffers) — that caps desktop
165
+ // headroom AND under-uses what a phone can actually give. Ask for the adapter's full limits, clamped to it,
166
+ // so the SAME engine fits the device it's on (mobile-aware, no per-platform fork).
167
+ const aLim = gpuAdapter.limits || {}, requiredLimits = {};
168
+ for (const k of ["maxStorageBufferBindingSize", "maxBufferSize", "maxComputeWorkgroupStorageSize", "maxComputeInvocationsPerWorkgroup"]) if (aLim[k] != null) requiredLimits[k] = aLim[k];
169
+ dev = await gpuAdapter.requestDevice({ requiredLimits });
170
+ const lim = dev.limits, maxBind = lim.maxStorageBufferBindingSize || 134217728; // the real per-binding ceiling on THIS device
171
+ ({ P, disp, u4, f4, sbuf, wF, rawU32, resetUniforms } = createGpuRuntime(dev)); // shared kernel runtime
172
+
173
+ D = S.n_embd; NH = S.n_head; NHKV = S.n_head_kv; HD = S.head_dim; EPS = S.eps; FREQ = S.freq_base;
174
+ KV = NHKV * HD; QD = NH * HD; scale = 1 / Math.sqrt(HD); grp = NH / NHKV;
175
+
176
+ // weights: Q5_0/Q8_0 uploaded as PACKED κ-block bytes (in-shader unpack); others → f32.
177
+ const loadW = (name) => {
178
+ const t = tdir[name], [N, K] = dimsNK(name);
179
+ if (t.type === GGML.Q5_0) return { kind: "q5raw", buf: rawU32(blk(name)), N, K };
180
+ if (t.type === GGML.Q8_0) return { kind: "q8raw", buf: rawU32(blk(name)), N, K };
181
+ return { kind: "f32", fBuf: wF(unpackWeight(blk(name), t.type, N, K).data), N, K };
182
+ };
183
+ for (let i = 0; i < S.n_layer; i++) { const p = `blk.${i}.`; for (const [k, g] of [["attn_norm", "attn_norm.weight"], ["wq", "attn_q.weight"], ["bq", "attn_q.bias"], ["wk", "attn_k.weight"], ["bk", "attn_k.bias"], ["wv", "attn_v.weight"], ["bv", "attn_v.bias"], ["wo", "attn_output.weight"], ["ffn_norm", "ffn_norm.weight"], ["gate", "ffn_gate.weight"], ["up", "ffn_up.weight"], ["down", "ffn_down.weight"]]) Wt[`l${i}.${k}`] = loadW(p + g); }
184
+ Wt["final_norm"] = loadW("output_norm.weight");
185
+ FF = tdir["blk.0.ffn_gate.weight"].dims[1];
186
+
187
+ // lm_head (chunked: a single quants buffer would exceed the per-binding limit). Chunk count is LIMIT-AWARE:
188
+ // each chunk's bytes must fit THIS device's maxStorageBufferBindingSize (so a phone with a smaller ceiling
189
+ // simply gets more, smaller chunks — same code, no OOM); desktop keeps the proven ~100k-row chunking.
190
+ const lmName = tdir["output.weight"] ? "output.weight" : "token_embd.weight", lmT = tdir[lmName], [lmN, lmKv] = dimsNK(lmName);
191
+ lmK = lmKv; vocab = lmN; const nbL = lmK / 32;
192
+ const raw = blk(lmName), bpr = nbL * (lmT.type === GGML.Q5_0 ? 22 : 34), kind = lmT.type === GGML.Q5_0 ? "q5raw" : "q8raw";
193
+ const fitRows = Math.max(1, Math.floor((maxBind * 0.9) / bpr)); // rows whose packed bytes stay under the binding ceiling
194
+ const CH = Math.ceil(lmN / Math.min(100000, fitRows)), chunkRows = Math.ceil(lmN / CH);
195
+ for (let c = 0; c < CH; c++) { const r0 = c * chunkRows, r1 = Math.min(lmN, r0 + chunkRows); lmChunks.push({ kind, r0, n: r1 - r0, buf: rawU32(raw.subarray(r0 * bpr, r1 * bpr)) }); }
196
+
197
+ // embeddings: dequant token_embd rows ON DEMAND (avoid materializing the whole table)
198
+ const teT = tdir["token_embd.weight"], teRaw = blk("token_embd.weight"), teBpr = ggmlNBytes(teT.type, D);
199
+ embedRow = (t) => dequantizeExact(teT.type, teRaw.subarray(t * teBpr, (t + 1) * teBpr), D);
200
+
201
+ // persistent scratch + KV (reused across turns)
202
+ for (const [n, sz] of [["h", D], ["hh", D], ["xn", D], ["q", QD], ["qb", QD], ["qr", QD], ["k", KV], ["kb", KV], ["kr", KV], ["v", KV], ["vb", KV], ["ctx", QD], ["ao", D], ["fi", D], ["xn2", D], ["hn", D], ["g", FF], ["u", FF], ["sw", FF], ["fo", D]]) SB[n] = sbuf(sz);
203
+ for (let L = 0; L < S.n_layer; L++) { Kc.push(sbuf(MAX_CTX * KV)); Vc.push(sbuf(MAX_CTX * KV)); }
204
+ logits = sbuf(vocab);
205
+ aS = sbuf(FF / 32); aQ = dev.createBuffer({ size: (FF / 4) * 4, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST });
206
+
207
+ // ── LoRA adapter (optional): the SAME delta the run-native path + the CPU witness prove —
208
+ // per layer y_attn_q += scale·B·(A·xn), A:[r×D] B:[QD×r] dense f32, uploaded once, applied in run().
209
+ // Always allocate hB so a later runtime setAdapter() can swap specialists without re-streaming the base. ──
210
+ SB.hB = sbuf(QD);
211
+ if (cfg.adapter && cfg.adapter.layers) applyAdapter(cfg.adapter, prog);
212
+
213
+ // coarse device tier from the real per-binding ceiling: a phone/integrated GPU reports a much smaller
214
+ // maxStorageBufferBindingSize than a discrete desktop GPU. The upgrade policy reads this to decide whether
215
+ // the heavier 1.5B tier is safe (don't silently OOM a phone) — see holo-voice upgradeBrain gating.
216
+ const gpuTier = maxBind >= (1 << 30) ? "high" : maxBind >= (256 * 1024 * 1024) ? "mid" : "low";
217
+ // MEASURED load time (not a stated figure): wall-clock from load() entry to ready, tagged warm/cold by the
218
+ // κ-store hit pattern. warm = head + every body served from OPFS (0 wire) → sub-second; cold = first visit
219
+ // (network + convert + OPFS write). The UI reads info.timing so the claim is whatever was measured here.
220
+ const _t1 = (typeof performance !== "undefined" && performance.now) ? performance.now() : Date.now();
221
+ info = { ready: true, device: "webgpu", model: cfg.holoUrl.split("/").pop(), arch, vocab, nLayer: S.n_layer, cache: cacheSrc,
222
+ timing: { loadMs: Math.round(_t1 - _t0), cache: cacheSrc, wireBytes: rstats.served, ttftMs: null },
223
+ gpu: { tier: gpuTier, maxBind, maxBuffer: lim.maxBufferSize || 0, adapter: adEnabled },
224
+ stream: { headWarm, wireBytes: rstats.served, bodyHits: persist.stats.opfsHits, headHits: persist.stats.headHits, misses: persist.stats.misses, writes: persist.stats.opfsWrites + persist.stats.headWrites } };
225
+ return info;
226
+ })().catch((e) => { loadingP = null; throw e; });
227
+ return loadingP;
228
+ }
229
+
230
+ // Qwen ChatML, encoded with parseSpecial so <|im_start|>/<|im_end|> map to their token ids.
231
+ function frameChat(history) {
232
+ let s = "";
233
+ const sys = (history.find((m) => m && m.role === "system") || {}).content || cfg.system;
234
+ s += `<|im_start|>system\n${sys}<|im_end|>\n`;
235
+ for (const m of history) { if (!m || m.role === "system") continue; s += `<|im_start|>${m.role}\n${m.content}<|im_end|>\n`; }
236
+ s += `<|im_start|>assistant\n`;
237
+ return s;
238
+ }
239
+
240
+ // one autoregressive forward over `seq`, generating up to maxNew tokens; onToken(cumulativeText) per step.
241
+ async function* run(seq, maxNew, signal) {
242
+ const mv = (enc, w, xB, yB, ob, N, K) => {
243
+ if (w.kind === "q5raw") disp(enc, P.q5raw, [w.buf, xB, yB, u4([N, K, ob])], G(N));
244
+ else if (w.kind === "q8raw") disp(enc, P.q8raw, [w.buf, xB, yB, u4([N, K, ob])], G(N));
245
+ else disp(enc, P.f, [w.fBuf, xB, yB, u4([N, K, ob])], G(N));
246
+ };
247
+ const tokens = seq.slice(), gen = []; let pos = 0, prevText = "";
248
+ while (pos < seq.length) {
249
+ if (signal && signal.aborted) return;
250
+ resetUniforms();
251
+ dev.queue.writeBuffer(SB.h, 0, embedRow(seq[pos]));
252
+ const enc = dev.createCommandEncoder();
253
+ for (let L = 0; L < S.n_layer; L++) {
254
+ const w = (s) => Wt[`l${L}.${s}`];
255
+ disp(enc, P.rms, [SB.h, w("attn_norm").fBuf, SB.xn, f4([D, EPS])], 1);
256
+ mv(enc, w("wq"), SB.xn, SB.q, 0, QD, D);
257
+ if (adEnabled) { disp(enc, P.f, [adA[L], SB.xn, SB.hA, u4([adR, D, 0])], G(adR)); disp(enc, P.f, [adB[L], SB.hA, SB.hB, u4([QD, adR, 0])], G(QD)); disp(enc, P.saxpy, [SB.hB, SB.q, f4([adScale, QD])], G(QD)); }
258
+ disp(enc, P.add, [SB.q, w("bq").fBuf, SB.qb, u4([QD])], G(QD));
259
+ mv(enc, w("wk"), SB.xn, SB.k, 0, KV, D); disp(enc, P.add, [SB.k, w("bk").fBuf, SB.kb, u4([KV])], G(KV));
260
+ mv(enc, w("wv"), SB.xn, SB.v, 0, KV, D); disp(enc, P.add, [SB.v, w("bv").fBuf, SB.vb, u4([KV])], G(KV));
261
+ disp(enc, P.rope, [SB.qb, SB.qr, f4([HD, HD, NH, pos]), f4([FREQ])], G(NH * HD / 2));
262
+ disp(enc, P.rope, [SB.kb, SB.kr, f4([HD, HD, NHKV, pos]), f4([FREQ])], G(NHKV * HD / 2));
263
+ enc.copyBufferToBuffer(SB.kr, 0, Kc[L], pos * KV * 4, KV * 4);
264
+ enc.copyBufferToBuffer(SB.vb, 0, Vc[L], pos * KV * 4, KV * 4);
265
+ disp(enc, P.attn, [SB.qr, Kc[L], Vc[L], SB.ctx, u4([NH, HD, pos, KV]), f4([scale, grp])], G(NH));
266
+ mv(enc, w("wo"), SB.ctx, SB.ao, 0, D, QD);
267
+ disp(enc, P.add, [SB.h, SB.ao, SB.fi, u4([D])], G(D));
268
+ disp(enc, P.rms, [SB.fi, w("ffn_norm").fBuf, SB.xn2, f4([D, EPS])], 1);
269
+ mv(enc, w("gate"), SB.xn2, SB.g, 0, FF, D); mv(enc, w("up"), SB.xn2, SB.u, 0, FF, D);
270
+ disp(enc, P.swiglu, [SB.g, SB.u, SB.sw, u4([FF])], G(FF));
271
+ mv(enc, w("down"), SB.sw, SB.fo, 0, D, FF);
272
+ disp(enc, P.add, [SB.fi, SB.fo, SB.hh, u4([D])], G(D));
273
+ enc.copyBufferToBuffer(SB.hh, 0, SB.h, 0, D * 4);
274
+ }
275
+ const doGen = pos >= tokens.length - 1;
276
+ let rb = null;
277
+ if (doGen) {
278
+ disp(enc, P.rms, [SB.h, Wt["final_norm"].fBuf, SB.hn, f4([D, EPS])], 1);
279
+ for (const ch of lmChunks) disp(enc, P[ch.kind], [ch.buf, SB.hn, logits, u4([ch.n, lmK, ch.r0])], G(ch.n));
280
+ rb = dev.createBuffer({ size: vocab * 4, usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ });
281
+ enc.copyBufferToBuffer(logits, 0, rb, 0, vocab * 4);
282
+ }
283
+ dev.queue.submit([enc.finish()]);
284
+ if (doGen) {
285
+ await rb.mapAsync(GPUMapMode.READ); const lg = new Float32Array(rb.getMappedRange().slice(0)); rb.unmap(); rb.destroy();
286
+ let am = 0; for (let i = 1; i < vocab; i++) if (lg[i] > lg[am]) am = i;
287
+ if (QWEN_EOS.has(am) || gen.length >= maxNew) return;
288
+ gen.push(am);
289
+ const text = tok.decode(gen), delta = text.slice(prevText.length); prevText = text;
290
+ if (delta) yield delta;
291
+ seq.push(am);
292
+ } else {
293
+ await dev.queue.onSubmittedWorkDone();
294
+ }
295
+ pos++;
296
+ if (pos >= MAX_CTX) return;
297
+ }
298
+ }
299
+
300
+ async function* generate(history, o = {}) {
301
+ if (!info.ready) await load(o.onProgress);
302
+ const ids = tok.encode(frameChat(history || []), { addSpecial: false, parseSpecial: true });
303
+ const _g0 = (typeof performance !== "undefined" && performance.now) ? performance.now() : Date.now();
304
+ let first = true;
305
+ for await (const d of run(ids, o.maxTokens || cfg.maxTokens, o.signal)) {
306
+ if (first) { first = false; const now = (typeof performance !== "undefined" && performance.now) ? performance.now() : Date.now(); if (info.timing) info.timing.ttftMs = Math.round(now - _g0); }
307
+ yield d;
308
+ }
309
+ }
310
+ async function chat(history, o = {}) { let s = ""; for await (const d of generate(history, o)) s += d; return s.trim(); }
311
+
312
+ // ── runtime specialist swap: bind a decoded adapter ({target,scale,r,inn,out,nLayer,layers}) onto the warm
313
+ // base, or null to revert to base-only. Reuses the loaded base weights untouched (no re-stream) — this is
314
+ // the per-task hot-swap the mux drives. Returns the new adapter state; a frame/dim mismatch throws (REFUSE). ──
315
+ function setAdapter(ad) {
316
+ if (!info.ready) throw new Error("brain not loaded — call load() before setAdapter()");
317
+ if (!ad) {
318
+ for (const b of adA) { try { b.destroy && b.destroy(); } catch (e) {} }
319
+ for (const b of adB) { try { b.destroy && b.destroy(); } catch (e) {} }
320
+ adA = []; adB = []; adEnabled = false; adR = 0; adScale = 0;
321
+ if (info.gpu) info.gpu.adapter = false;
322
+ return { adapter: false };
323
+ }
324
+ applyAdapter(ad, null);
325
+ if (info.gpu) info.gpu.adapter = true;
326
+ return { adapter: true, r: adR, scale: adScale, target: ad.target };
327
+ }
328
+
329
+ return { id: "holo-q-brain-holo", load, generate, chat, setAdapter, info: () => info };
330
+ }
331
+
332
+ export default createHoloBrain;
b/520bc2750bc02925237cdc2f11386cfd19f1d9771d22452584f16b20491723c9 ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var La=Object.defineProperty;var Ia=(e,t)=>{for(var a in t)La(e,a,{get:t[a],enumerable:!0})};import{forwardRef as Ca,createElement as ga}from"react";var be=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),$=(...e)=>e.filter((t,a,o)=>!!t&&t.trim()!==""&&o.indexOf(t)===a).join(" ").trim();import{forwardRef as xa,createElement as Ae}from"react";var Pe={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var ye=xa(({color:e="currentColor",size:t=24,strokeWidth:a=2,absoluteStrokeWidth:o,className:l="",children:r,iconNode:u,...i},p)=>Ae("svg",{ref:p,...Pe,width:t,height:t,stroke:e,strokeWidth:o?Number(a)*24/Number(t):a,className:$("lucide",l),...i},[...u.map(([f,L])=>Ae(f,L)),...Array.isArray(r)?r:[r]]));var Be=(e,t)=>{let a=Ca(({className:o,...l},r)=>ga(ye,{ref:r,iconNode:t,className:$(`lucide-${be(e)}`,o),...l}));return a.displayName=`${e}`,a};var X=Be("Italic",[["line",{x1:"19",x2:"10",y1:"4",y2:"4",key:"15jd3p"}],["line",{x1:"14",x2:"5",y1:"20",y2:"20",key:"bu0au3"}],["line",{x1:"15",x2:"9",y1:"4",y2:"20",key:"uljnxc"}]]);function Me(e){var t,a,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var l=e.length;for(t=0;t<l;t++)e[t]&&(a=Me(e[t]))&&(o&&(o+=" "),o+=a)}else for(a in e)e[a]&&(o&&(o+=" "),o+=a);return o}function Y(){for(var e,t,a=0,o="",l=arguments.length;a<l;a++)(e=arguments[a])&&(t=Me(e))&&(o&&(o+=" "),o+=t);return o}var Re=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Fe=Y,De=(e,t)=>a=>{var o;if(t?.variants==null)return Fe(e,a?.class,a?.className);let{variants:l,defaultVariants:r}=t,u=Object.keys(l).map(f=>{let L=a?.[f],I=r?.[f];if(L===null)return null;let x=Re(L)||Re(I);return l[f][x]}),i=a&&Object.entries(a).reduce((f,L)=>{let[I,x]=L;return x===void 0||(f[I]=x),f},{}),p=t==null||(o=t.compoundVariants)===null||o===void 0?void 0:o.reduce((f,L)=>{let{class:I,className:x,...g}=L;return Object.entries(g).every(B=>{let[w,k]=B;return Array.isArray(k)?k.includes({...r,...i}[w]):{...r,...i}[w]===k})?[...f,I,x]:f},[]);return Fe(e,u,p,a?.class,a?.className)};import*as He from"react";import*as Ra from"react-dom";import*as S from"react";import*as Te from"react";function ve(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function ha(...e){return t=>{let a=!1,o=e.map(l=>{let r=ve(l,t);return!a&&typeof r=="function"&&(a=!0),r});if(a)return()=>{for(let l=0;l<o.length;l++){let r=o[l];typeof r=="function"?r():ve(e[l],null)}}}}function qe(...e){return Te.useCallback(ha(...e),e)}function Oe(e){let t=S.forwardRef((a,o)=>{let{children:l,...r}=a,u=null,i=!1,p=[];Ue(l)&&typeof ee=="function"&&(l=ee(l._payload)),S.Children.forEach(l,x=>{if(Pa(x)){i=!0;let g=x,B="child"in g.props?g.props.child:g.props.children;Ue(B)&&typeof ee=="function"&&(B=ee(B._payload)),u=wa(g,B),p.push(u?.props?.children)}else p.push(x)}),u?u=S.cloneElement(u,void 0,p):!i&&S.Children.count(l)===1&&S.isValidElement(l)&&(u=l);let f=u?ba(u):void 0,L=qe(o,f);if(!u){if(l||l===0)throw new Error(i?Ma(e):Ba(e));return l}let I=ka(r,u.props??{});return u.type!==S.Fragment&&(I.ref=o?L:f),S.cloneElement(u,I)});return t.displayName=`${e}.Slot`,t}var Sa=Symbol.for("radix.slottable");var wa=(e,t)=>{if("child"in e.props){let a=e.props.child;return S.isValidElement(a)?S.cloneElement(a,void 0,e.props.children(a.props.children)):null}return S.isValidElement(t)?t:null};function ka(e,t){let a={...t};for(let o in t){let l=e[o],r=t[o];/^on[A-Z]/.test(o)?l&&r?a[o]=(...i)=>{let p=r(...i);return l(...i),p}:l&&(a[o]=l):o==="style"?a[o]={...l,...r}:o==="className"&&(a[o]=[l,r].filter(Boolean).join(" "))}return{...e,...a}}function ba(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning;return a?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning,a?e.props.ref:e.props.ref||e.ref)}function Pa(e){return S.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Sa}var Aa=Symbol.for("react.lazy");function Ue(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===Aa&&"_payload"in e&&ya(e._payload)}function ya(e){return typeof e=="object"&&e!==null&&"then"in e}var Ba=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,Ma=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,ee=S[" use ".trim().toString()];import{jsx as Fa}from"react/jsx-runtime";var Da=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ge=Da.reduce((e,t)=>{let a=Oe(`Primitive.${t}`),o=He.forwardRef((l,r)=>{let{asChild:u,...i}=l,p=u?a:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),Fa(p,{...i,ref:r})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});var oo=!!(typeof window<"u"&&window.document&&window.document.createElement);function ze(e,t,{checkForDefaultPrevented:a=!0}={}){return function(l){if(e?.(l),a===!1||!l.defaultPrevented)return t?.(l)}}import*as M from"react";import*as Ee from"react";var Ve=globalThis?.document?Ee.useLayoutEffect:()=>{};import*as ae from"react";var va=M[" useInsertionEffect ".trim().toString()]||Ve;function We({prop:e,defaultProp:t,onChange:a=()=>{},caller:o}){let[l,r,u]=Ta({defaultProp:t,onChange:a}),i=e!==void 0,p=i?e:l;{let L=M.useRef(e!==void 0);M.useEffect(()=>{let I=L.current;I!==i&&console.warn(`${o} is changing from ${I?"controlled":"uncontrolled"} to ${i?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),L.current=i},[i,o])}let f=M.useCallback(L=>{if(i){let I=qa(L)?L(e):L;I!==e&&u.current?.(I)}else r(L)},[i,e,r,u]);return[p,f]}function Ta({defaultProp:e,onChange:t}){let[a,o]=M.useState(e),l=M.useRef(a),r=M.useRef(t);return va(()=>{r.current=t},[t]),M.useEffect(()=>{l.current!==a&&(r.current?.(a),l.current=a)},[a,l]),[a,o,r]}function qa(e){return typeof e=="function"}var so=Symbol("RADIX:SYNC_STATE");var te={};Ia(te,{Root:()=>Oa,Toggle:()=>ne});import*as Ne from"react";import{jsx as Ua}from"react/jsx-runtime";var Xe="Toggle",ne=Ne.forwardRef((e,t)=>{let{pressed:a,defaultPressed:o,onPressedChange:l,...r}=e,[u,i]=We({prop:a,onChange:l,defaultProp:o??!1,caller:Xe});return Ua(Ge.button,{type:"button","aria-pressed":u,"data-state":u?"on":"off","data-disabled":e.disabled?"":void 0,...r,ref:t,onClick:ze(e.onClick,()=>{e.disabled||i(!u)})})});ne.displayName=Xe;var Oa=ne;var Ha=(e,t)=>{let a=new Array(e.length+t.length);for(let o=0;o<e.length;o++)a[o]=e[o];for(let o=0;o<t.length;o++)a[e.length+o]=t[o];return a},Ga=(e,t)=>({classGroupId:e,validator:t}),$e=(e=new Map,t=null,a)=>({nextPart:e,validators:t,classGroupId:a}),re="-",Ke=[],za="arbitrary..",Ea=e=>{let t=Wa(e),{conflictingClassGroups:a,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return Va(u);let i=u.split(re),p=i[0]===""&&i.length>1?1:0;return Ye(i,p,t)},getConflictingClassGroupIds:(u,i)=>{if(i){let p=o[u],f=a[u];return p?f?Ha(f,p):p:f||Ke}return a[u]||Ke}}},Ye=(e,t,a)=>{if(e.length-t===0)return a.classGroupId;let l=e[t],r=a.nextPart.get(l);if(r){let f=Ye(e,t+1,r);if(f)return f}let u=a.validators;if(u===null)return;let i=t===0?e.join(re):e.slice(t).join(re),p=u.length;for(let f=0;f<p;f++){let L=u[f];if(L.validator(i))return L.classGroupId}},Va=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let t=e.slice(1,-1),a=t.indexOf(":"),o=t.slice(0,a);return o?za+o:void 0})(),Wa=e=>{let{theme:t,classGroups:a}=e;return Na(a,t)},Na=(e,t)=>{let a=$e();for(let o in e){let l=e[o];me(l,a,o,t)}return a},me=(e,t,a,o)=>{let l=e.length;for(let r=0;r<l;r++){let u=e[r];Xa(u,t,a,o)}},Xa=(e,t,a,o)=>{if(typeof e=="string"){Ka(e,t,a);return}if(typeof e=="function"){Za(e,t,a,o);return}Ja(e,t,a,o)},Ka=(e,t,a)=>{let o=e===""?t:ea(t,e);o.classGroupId=a},Za=(e,t,a,o)=>{if(_a(e)){me(e(o),t,a,o);return}t.validators===null&&(t.validators=[]),t.validators.push(Ga(a,e))},Ja=(e,t,a,o)=>{let l=Object.entries(e),r=l.length;for(let u=0;u<r;u++){let[i,p]=l[u];me(p,ea(t,i),a,o)}},ea=(e,t)=>{let a=e,o=t.split(re),l=o.length;for(let r=0;r<l;r++){let u=o[r],i=a.nextPart.get(u);i||(i=$e(),a.nextPart.set(u,i)),a=i}return a},_a=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,ja=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,a=Object.create(null),o=Object.create(null),l=(r,u)=>{a[r]=u,t++,t>e&&(t=0,o=a,a=Object.create(null))};return{get(r){let u=a[r];if(u!==void 0)return u;if((u=o[r])!==void 0)return l(r,u),u},set(r,u){r in a?a[r]=u:l(r,u)}}},pe="!",Ze=":",Qa=[],Je=(e,t,a,o,l)=>({modifiers:e,hasImportantModifier:t,baseClassName:a,maybePostfixModifierPosition:o,isExternal:l}),$a=e=>{let{prefix:t,experimentalParseClassName:a}=e,o=l=>{let r=[],u=0,i=0,p=0,f,L=l.length;for(let w=0;w<L;w++){let k=l[w];if(u===0&&i===0){if(k===Ze){r.push(l.slice(p,w)),p=w+1;continue}if(k==="/"){f=w;continue}}k==="["?u++:k==="]"?u--:k==="("?i++:k===")"&&i--}let I=r.length===0?l:l.slice(p),x=I,g=!1;I.endsWith(pe)?(x=I.slice(0,-1),g=!0):I.startsWith(pe)&&(x=I.slice(1),g=!0);let B=f&&f>p?f-p:void 0;return Je(r,g,x,B)};if(t){let l=t+Ze,r=o;o=u=>u.startsWith(l)?r(u.slice(l.length)):Je(Qa,!1,u,void 0,!0)}if(a){let l=o;o=r=>a({className:r,parseClassName:l})}return o},Ya=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((a,o)=>{t.set(a,1e6+o)}),a=>{let o=[],l=[];for(let r=0;r<a.length;r++){let u=a[r],i=u[0]==="[",p=t.has(u);i||p?(l.length>0&&(l.sort(),o.push(...l),l=[]),o.push(u)):l.push(u)}return l.length>0&&(l.sort(),o.push(...l)),o}},et=e=>({cache:ja(e.cacheSize),parseClassName:$a(e),sortModifiers:Ya(e),postfixLookupClassGroupIds:at(e),...Ea(e)}),at=e=>{let t=Object.create(null),a=e.postfixLookupClassGroups;if(a)for(let o=0;o<a.length;o++)t[a[o]]=!0;return t},tt=/\s+/,ot=(e,t)=>{let{parseClassName:a,getClassGroupId:o,getConflictingClassGroupIds:l,sortModifiers:r,postfixLookupClassGroupIds:u}=t,i=[],p=e.trim().split(tt),f="";for(let L=p.length-1;L>=0;L-=1){let I=p[L],{isExternal:x,modifiers:g,hasImportantModifier:B,baseClassName:w,maybePostfixModifierPosition:k}=a(I);if(x){f=I+(f.length>0?" "+f:f);continue}let U=!!k,A;if(U){let D=w.substring(0,k);A=o(D);let n=A&&u[A]?o(w):void 0;n&&n!==A&&(A=n,U=!1)}else A=o(w);if(!A){if(!U){f=I+(f.length>0?" "+f:f);continue}if(A=o(w),!A){f=I+(f.length>0?" "+f:f);continue}U=!1}let N=g.length===0?"":g.length===1?g[0]:r(g).join(":"),z=B?N+pe:N,E=z+A;if(i.indexOf(E)>-1)continue;i.push(E);let V=l(A,U);for(let D=0;D<V.length;++D){let n=V[D];i.push(z+n)}f=I+(f.length>0?" "+f:f)}return f},lt=(...e)=>{let t=0,a,o,l="";for(;t<e.length;)(a=e[t++])&&(o=aa(a))&&(l&&(l+=" "),l+=o);return l},aa=e=>{if(typeof e=="string")return e;let t,a="";for(let o=0;o<e.length;o++)e[o]&&(t=aa(e[o]))&&(a&&(a+=" "),a+=t);return a},rt=(e,...t)=>{let a,o,l,r,u=p=>{let f=t.reduce((L,I)=>I(L),e());return a=et(f),o=a.cache.get,l=a.cache.set,r=i,i(p)},i=p=>{let f=o(p);if(f)return f;let L=ot(p,a);return l(p,L),L};return r=u,(...p)=>r(lt(...p))},ut=[],C=e=>{let t=a=>a[e]||ut;return t.isThemeGetter=!0,t},ta=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,oa=/^\((?:(\w[\w-]*):)?(.+)\)$/i,dt=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,st=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ft=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,it=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,nt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ct=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,T=e=>dt.test(e),m=e=>!!e&&!Number.isNaN(Number(e)),F=e=>!!e&&Number.isInteger(Number(e)),ce=e=>e.endsWith("%")&&m(e.slice(0,-1)),v=e=>st.test(e),la=()=>!0,pt=e=>ft.test(e)&&!it.test(e),Le=()=>!1,mt=e=>nt.test(e),Lt=e=>ct.test(e),It=e=>!d(e)&&!s(e),xt=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),Ct=e=>q(e,da,Le),d=e=>ta.test(e),H=e=>q(e,sa,pt),_e=e=>q(e,At,m),gt=e=>q(e,ia,la),ht=e=>q(e,fa,Le),je=e=>q(e,ra,Le),St=e=>q(e,ua,Lt),oe=e=>q(e,na,mt),s=e=>oa.test(e),K=e=>G(e,sa),wt=e=>G(e,fa),Qe=e=>G(e,ra),kt=e=>G(e,da),bt=e=>G(e,ua),le=e=>G(e,na,!0),Pt=e=>G(e,ia,!0),q=(e,t,a)=>{let o=ta.exec(e);return o?o[1]?t(o[1]):a(o[2]):!1},G=(e,t,a=!1)=>{let o=oa.exec(e);return o?o[1]?t(o[1]):a:!1},ra=e=>e==="position"||e==="percentage",ua=e=>e==="image"||e==="url",da=e=>e==="length"||e==="size"||e==="bg-size",sa=e=>e==="length",At=e=>e==="number",fa=e=>e==="family-name",ia=e=>e==="number"||e==="weight",na=e=>e==="shadow";var yt=()=>{let e=C("color"),t=C("font"),a=C("text"),o=C("font-weight"),l=C("tracking"),r=C("leading"),u=C("breakpoint"),i=C("container"),p=C("spacing"),f=C("radius"),L=C("shadow"),I=C("inset-shadow"),x=C("text-shadow"),g=C("drop-shadow"),B=C("blur"),w=C("perspective"),k=C("aspect"),U=C("ease"),A=C("animate"),N=()=>["auto","avoid","all","avoid-page","page","left","right","column"],z=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...z(),s,d],V=()=>["auto","hidden","clip","visible","scroll"],D=()=>["auto","contain","none"],n=()=>[s,d,p],y=()=>[T,"full","auto",...n()],Ie=()=>[F,"none","subgrid",s,d],xe=()=>["auto",{span:["full",F,s,d]},F,s,d],Z=()=>[F,"auto",s,d],Ce=()=>["auto","min","max","fr",s,d],ue=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],W=()=>["start","end","center","stretch","center-safe","end-safe"],R=()=>["auto",...n()],O=()=>[T,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...n()],de=()=>[T,"screen","full","dvw","lvw","svw","min","max","fit",...n()],se=()=>[T,"screen","full","lh","dvh","lvh","svh","min","max","fit",...n()],c=()=>[e,s,d],ge=()=>[...z(),Qe,je,{position:[s,d]}],he=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Se=()=>["auto","cover","contain",kt,Ct,{size:[s,d]}],fe=()=>[ce,K,H],b=()=>["","none","full",f,s,d],P=()=>["",m,K,H],J=()=>["solid","dashed","dotted","double"],we=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],h=()=>[m,ce,Qe,je],ke=()=>["","none",B,s,d],_=()=>["none",m,s,d],j=()=>["none",m,s,d],ie=()=>[m,s,d],Q=()=>[T,"full",...n()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[v],breakpoint:[v],color:[la],container:[v],"drop-shadow":[v],ease:["in","out","in-out"],font:[It],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[v],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[v],shadow:[v],spacing:["px",m],text:[v],"text-shadow":[v],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",T,d,s,k]}],container:["container"],"container-type":[{"@container":["","normal","size",s,d]}],"container-named":[xt],columns:[{columns:[m,d,s,i]}],"break-after":[{"break-after":N()}],"break-before":[{"break-before":N()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:E()}],overflow:[{overflow:V()}],"overflow-x":[{"overflow-x":V()}],"overflow-y":[{"overflow-y":V()}],overscroll:[{overscroll:D()}],"overscroll-x":[{"overscroll-x":D()}],"overscroll-y":[{"overscroll-y":D()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:y()}],"inset-x":[{"inset-x":y()}],"inset-y":[{"inset-y":y()}],start:[{"inset-s":y(),start:y()}],end:[{"inset-e":y(),end:y()}],"inset-bs":[{"inset-bs":y()}],"inset-be":[{"inset-be":y()}],top:[{top:y()}],right:[{right:y()}],bottom:[{bottom:y()}],left:[{left:y()}],visibility:["visible","invisible","collapse"],z:[{z:[F,"auto",s,d]}],basis:[{basis:[T,"full","auto",i,...n()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[m,T,"auto","initial","none",d]}],grow:[{grow:["",m,s,d]}],shrink:[{shrink:["",m,s,d]}],order:[{order:[F,"first","last","none",s,d]}],"grid-cols":[{"grid-cols":Ie()}],"col-start-end":[{col:xe()}],"col-start":[{"col-start":Z()}],"col-end":[{"col-end":Z()}],"grid-rows":[{"grid-rows":Ie()}],"row-start-end":[{row:xe()}],"row-start":[{"row-start":Z()}],"row-end":[{"row-end":Z()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Ce()}],"auto-rows":[{"auto-rows":Ce()}],gap:[{gap:n()}],"gap-x":[{"gap-x":n()}],"gap-y":[{"gap-y":n()}],"justify-content":[{justify:[...ue(),"normal"]}],"justify-items":[{"justify-items":[...W(),"normal"]}],"justify-self":[{"justify-self":["auto",...W()]}],"align-content":[{content:["normal",...ue()]}],"align-items":[{items:[...W(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...W(),{baseline:["","last"]}]}],"place-content":[{"place-content":ue()}],"place-items":[{"place-items":[...W(),"baseline"]}],"place-self":[{"place-self":["auto",...W()]}],p:[{p:n()}],px:[{px:n()}],py:[{py:n()}],ps:[{ps:n()}],pe:[{pe:n()}],pbs:[{pbs:n()}],pbe:[{pbe:n()}],pt:[{pt:n()}],pr:[{pr:n()}],pb:[{pb:n()}],pl:[{pl:n()}],m:[{m:R()}],mx:[{mx:R()}],my:[{my:R()}],ms:[{ms:R()}],me:[{me:R()}],mbs:[{mbs:R()}],mbe:[{mbe:R()}],mt:[{mt:R()}],mr:[{mr:R()}],mb:[{mb:R()}],ml:[{ml:R()}],"space-x":[{"space-x":n()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":n()}],"space-y-reverse":["space-y-reverse"],size:[{size:O()}],"inline-size":[{inline:["auto",...de()]}],"min-inline-size":[{"min-inline":["auto",...de()]}],"max-inline-size":[{"max-inline":["none",...de()]}],"block-size":[{block:["auto",...se()]}],"min-block-size":[{"min-block":["auto",...se()]}],"max-block-size":[{"max-block":["none",...se()]}],w:[{w:[i,"screen",...O()]}],"min-w":[{"min-w":[i,"screen","none",...O()]}],"max-w":[{"max-w":[i,"screen","none","prose",{screen:[u]},...O()]}],h:[{h:["screen","lh",...O()]}],"min-h":[{"min-h":["screen","lh","none",...O()]}],"max-h":[{"max-h":["screen","lh",...O()]}],"font-size":[{text:["base",a,K,H]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,Pt,gt]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ce,d]}],"font-family":[{font:[wt,ht,t]}],"font-features":[{"font-features":[d]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[l,s,d]}],"line-clamp":[{"line-clamp":[m,"none",s,_e]}],leading:[{leading:[r,...n()]}],"list-image":[{"list-image":["none",s,d]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",s,d]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:c()}],"text-color":[{text:c()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:[m,"from-font","auto",s,H]}],"text-decoration-color":[{decoration:c()}],"underline-offset":[{"underline-offset":[m,"auto",s,d]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:n()}],"tab-size":[{tab:[F,s,d]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",s,d]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",s,d]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ge()}],"bg-repeat":[{bg:he()}],"bg-size":[{bg:Se()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},F,s,d],radial:["",s,d],conic:[F,s,d]},bt,St]}],"bg-color":[{bg:c()}],"gradient-from-pos":[{from:fe()}],"gradient-via-pos":[{via:fe()}],"gradient-to-pos":[{to:fe()}],"gradient-from":[{from:c()}],"gradient-via":[{via:c()}],"gradient-to":[{to:c()}],rounded:[{rounded:b()}],"rounded-s":[{"rounded-s":b()}],"rounded-e":[{"rounded-e":b()}],"rounded-t":[{"rounded-t":b()}],"rounded-r":[{"rounded-r":b()}],"rounded-b":[{"rounded-b":b()}],"rounded-l":[{"rounded-l":b()}],"rounded-ss":[{"rounded-ss":b()}],"rounded-se":[{"rounded-se":b()}],"rounded-ee":[{"rounded-ee":b()}],"rounded-es":[{"rounded-es":b()}],"rounded-tl":[{"rounded-tl":b()}],"rounded-tr":[{"rounded-tr":b()}],"rounded-br":[{"rounded-br":b()}],"rounded-bl":[{"rounded-bl":b()}],"border-w":[{border:P()}],"border-w-x":[{"border-x":P()}],"border-w-y":[{"border-y":P()}],"border-w-s":[{"border-s":P()}],"border-w-e":[{"border-e":P()}],"border-w-bs":[{"border-bs":P()}],"border-w-be":[{"border-be":P()}],"border-w-t":[{"border-t":P()}],"border-w-r":[{"border-r":P()}],"border-w-b":[{"border-b":P()}],"border-w-l":[{"border-l":P()}],"divide-x":[{"divide-x":P()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":P()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...J(),"hidden","none"]}],"divide-style":[{divide:[...J(),"hidden","none"]}],"border-color":[{border:c()}],"border-color-x":[{"border-x":c()}],"border-color-y":[{"border-y":c()}],"border-color-s":[{"border-s":c()}],"border-color-e":[{"border-e":c()}],"border-color-bs":[{"border-bs":c()}],"border-color-be":[{"border-be":c()}],"border-color-t":[{"border-t":c()}],"border-color-r":[{"border-r":c()}],"border-color-b":[{"border-b":c()}],"border-color-l":[{"border-l":c()}],"divide-color":[{divide:c()}],"outline-style":[{outline:[...J(),"none","hidden"]}],"outline-offset":[{"outline-offset":[m,s,d]}],"outline-w":[{outline:["",m,K,H]}],"outline-color":[{outline:c()}],shadow:[{shadow:["","none",L,le,oe]}],"shadow-color":[{shadow:c()}],"inset-shadow":[{"inset-shadow":["none",I,le,oe]}],"inset-shadow-color":[{"inset-shadow":c()}],"ring-w":[{ring:P()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:c()}],"ring-offset-w":[{"ring-offset":[m,H]}],"ring-offset-color":[{"ring-offset":c()}],"inset-ring-w":[{"inset-ring":P()}],"inset-ring-color":[{"inset-ring":c()}],"text-shadow":[{"text-shadow":["none",x,le,oe]}],"text-shadow-color":[{"text-shadow":c()}],opacity:[{opacity:[m,s,d]}],"mix-blend":[{"mix-blend":[...we(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":we()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[m]}],"mask-image-linear-from-pos":[{"mask-linear-from":h()}],"mask-image-linear-to-pos":[{"mask-linear-to":h()}],"mask-image-linear-from-color":[{"mask-linear-from":c()}],"mask-image-linear-to-color":[{"mask-linear-to":c()}],"mask-image-t-from-pos":[{"mask-t-from":h()}],"mask-image-t-to-pos":[{"mask-t-to":h()}],"mask-image-t-from-color":[{"mask-t-from":c()}],"mask-image-t-to-color":[{"mask-t-to":c()}],"mask-image-r-from-pos":[{"mask-r-from":h()}],"mask-image-r-to-pos":[{"mask-r-to":h()}],"mask-image-r-from-color":[{"mask-r-from":c()}],"mask-image-r-to-color":[{"mask-r-to":c()}],"mask-image-b-from-pos":[{"mask-b-from":h()}],"mask-image-b-to-pos":[{"mask-b-to":h()}],"mask-image-b-from-color":[{"mask-b-from":c()}],"mask-image-b-to-color":[{"mask-b-to":c()}],"mask-image-l-from-pos":[{"mask-l-from":h()}],"mask-image-l-to-pos":[{"mask-l-to":h()}],"mask-image-l-from-color":[{"mask-l-from":c()}],"mask-image-l-to-color":[{"mask-l-to":c()}],"mask-image-x-from-pos":[{"mask-x-from":h()}],"mask-image-x-to-pos":[{"mask-x-to":h()}],"mask-image-x-from-color":[{"mask-x-from":c()}],"mask-image-x-to-color":[{"mask-x-to":c()}],"mask-image-y-from-pos":[{"mask-y-from":h()}],"mask-image-y-to-pos":[{"mask-y-to":h()}],"mask-image-y-from-color":[{"mask-y-from":c()}],"mask-image-y-to-color":[{"mask-y-to":c()}],"mask-image-radial":[{"mask-radial":[s,d]}],"mask-image-radial-from-pos":[{"mask-radial-from":h()}],"mask-image-radial-to-pos":[{"mask-radial-to":h()}],"mask-image-radial-from-color":[{"mask-radial-from":c()}],"mask-image-radial-to-color":[{"mask-radial-to":c()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":z()}],"mask-image-conic-pos":[{"mask-conic":[m]}],"mask-image-conic-from-pos":[{"mask-conic-from":h()}],"mask-image-conic-to-pos":[{"mask-conic-to":h()}],"mask-image-conic-from-color":[{"mask-conic-from":c()}],"mask-image-conic-to-color":[{"mask-conic-to":c()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ge()}],"mask-repeat":[{mask:he()}],"mask-size":[{mask:Se()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",s,d]}],filter:[{filter:["","none",s,d]}],blur:[{blur:ke()}],brightness:[{brightness:[m,s,d]}],contrast:[{contrast:[m,s,d]}],"drop-shadow":[{"drop-shadow":["","none",g,le,oe]}],"drop-shadow-color":[{"drop-shadow":c()}],grayscale:[{grayscale:["",m,s,d]}],"hue-rotate":[{"hue-rotate":[m,s,d]}],invert:[{invert:["",m,s,d]}],saturate:[{saturate:[m,s,d]}],sepia:[{sepia:["",m,s,d]}],"backdrop-filter":[{"backdrop-filter":["","none",s,d]}],"backdrop-blur":[{"backdrop-blur":ke()}],"backdrop-brightness":[{"backdrop-brightness":[m,s,d]}],"backdrop-contrast":[{"backdrop-contrast":[m,s,d]}],"backdrop-grayscale":[{"backdrop-grayscale":["",m,s,d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m,s,d]}],"backdrop-invert":[{"backdrop-invert":["",m,s,d]}],"backdrop-opacity":[{"backdrop-opacity":[m,s,d]}],"backdrop-saturate":[{"backdrop-saturate":[m,s,d]}],"backdrop-sepia":[{"backdrop-sepia":["",m,s,d]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":n()}],"border-spacing-x":[{"border-spacing-x":n()}],"border-spacing-y":[{"border-spacing-y":n()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",s,d]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[m,"initial",s,d]}],ease:[{ease:["linear","initial",U,s,d]}],delay:[{delay:[m,s,d]}],animate:[{animate:["none",A,s,d]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,s,d]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:_()}],"rotate-x":[{"rotate-x":_()}],"rotate-y":[{"rotate-y":_()}],"rotate-z":[{"rotate-z":_()}],scale:[{scale:j()}],"scale-x":[{"scale-x":j()}],"scale-y":[{"scale-y":j()}],"scale-z":[{"scale-z":j()}],"scale-3d":["scale-3d"],skew:[{skew:ie()}],"skew-x":[{"skew-x":ie()}],"skew-y":[{"skew-y":ie()}],transform:[{transform:[s,d,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Q()}],"translate-x":[{"translate-x":Q()}],"translate-y":[{"translate-y":Q()}],"translate-z":[{"translate-z":Q()}],"translate-none":["translate-none"],zoom:[{zoom:[F,s,d]}],accent:[{accent:c()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:c()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",s,d]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":c()}],"scrollbar-track-color":[{"scrollbar-track":c()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":n()}],"scroll-mx":[{"scroll-mx":n()}],"scroll-my":[{"scroll-my":n()}],"scroll-ms":[{"scroll-ms":n()}],"scroll-me":[{"scroll-me":n()}],"scroll-mbs":[{"scroll-mbs":n()}],"scroll-mbe":[{"scroll-mbe":n()}],"scroll-mt":[{"scroll-mt":n()}],"scroll-mr":[{"scroll-mr":n()}],"scroll-mb":[{"scroll-mb":n()}],"scroll-ml":[{"scroll-ml":n()}],"scroll-p":[{"scroll-p":n()}],"scroll-px":[{"scroll-px":n()}],"scroll-py":[{"scroll-py":n()}],"scroll-ps":[{"scroll-ps":n()}],"scroll-pe":[{"scroll-pe":n()}],"scroll-pbs":[{"scroll-pbs":n()}],"scroll-pbe":[{"scroll-pbe":n()}],"scroll-pt":[{"scroll-pt":n()}],"scroll-pr":[{"scroll-pr":n()}],"scroll-pb":[{"scroll-pb":n()}],"scroll-pl":[{"scroll-pl":n()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",s,d]}],fill:[{fill:["none",...c()]}],"stroke-w":[{stroke:[m,K,H,_e]}],stroke:[{stroke:["none",...c()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var ca=rt(yt);function pa(...e){return ca(Y(e))}import{jsx as Mt}from"react/jsx-runtime";var Bt=De("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"},size:{default:"h-9 min-w-9 px-2",sm:"h-8 min-w-8 px-1.5",lg:"h-10 min-w-10 px-2.5"}},defaultVariants:{variant:"default",size:"default"}});function ma({className:e,variant:t,size:a,...o}){return Mt(te.Root,{"data-slot":"toggle",className:pa(Bt({variant:t,size:a,className:e})),...o})}import{jsx as Ft,jsxs as Dt}from"react/jsx-runtime";function Rt(){return Dt(ma,{"aria-label":"Toggle italic",children:[Ft(X,{}),"Italic"]})}export{Rt as default};
2
+ /*! Bundled license information:
3
+
4
+ lucide-react/dist/esm/shared/src/utils.js:
5
+ (**
6
+ * @license lucide-react v0.456.0 - ISC
7
+ *
8
+ * This source code is licensed under the ISC license.
9
+ * See the LICENSE file in the root directory of this source tree.
10
+ *)
11
+
12
+ lucide-react/dist/esm/defaultAttributes.js:
13
+ (**
14
+ * @license lucide-react v0.456.0 - ISC
15
+ *
16
+ * This source code is licensed under the ISC license.
17
+ * See the LICENSE file in the root directory of this source tree.
18
+ *)
19
+
20
+ lucide-react/dist/esm/Icon.js:
21
+ (**
22
+ * @license lucide-react v0.456.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ *)
27
+
28
+ lucide-react/dist/esm/createLucideIcon.js:
29
+ (**
30
+ * @license lucide-react v0.456.0 - ISC
31
+ *
32
+ * This source code is licensed under the ISC license.
33
+ * See the LICENSE file in the root directory of this source tree.
34
+ *)
35
+
36
+ lucide-react/dist/esm/icons/italic.js:
37
+ (**
38
+ * @license lucide-react v0.456.0 - ISC
39
+ *
40
+ * This source code is licensed under the ISC license.
41
+ * See the LICENSE file in the root directory of this source tree.
42
+ *)
43
+
44
+ lucide-react/dist/esm/lucide-react.js:
45
+ (**
46
+ * @license lucide-react v0.456.0 - ISC
47
+ *
48
+ * This source code is licensed under the ISC license.
49
+ * See the LICENSE file in the root directory of this source tree.
50
+ *)
51
+ */
b/5234cf770796006df1fa5b2bc74cc5d6e8aba99d101004b2f126f6453e50eb45 ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client";var io=Object.defineProperty;var qa=(e,t)=>{for(var a in t)io(e,a,{get:t[a],enumerable:!0})};import{createContext as Ll,forwardRef as ve,useCallback as Re,useContext as xl,useEffect as oo,useState as ao}from"react";import*as U from"react";import*as oe from"react";import{jsx as co}from"react/jsx-runtime";function le(e,t=[]){let a=[];function o(l,s){let u=oe.createContext(s);u.displayName=l+"Context";let f=a.length;a=[...a,s];let d=i=>{let{scope:c,children:p,...S}=i,h=c?.[e]?.[f]||u,w=oe.useMemo(()=>S,Object.values(S));return co(h.Provider,{value:w,children:p})};d.displayName=l+"Provider";function n(i,c){let p=c?.[e]?.[f]||u,S=oe.useContext(p);if(S)return S;if(s!==void 0)return s;throw new Error(`\`${i}\` must be used within \`${l}\``)}return[d,n]}let r=()=>{let l=a.map(s=>oe.createContext(s));return function(u){let f=u?.[e]||l;return oe.useMemo(()=>({[`__scope${e}`]:{...u,[e]:f}}),[u,f])}};return r.scopeName=e,[o,po(r,...t)]}function po(...e){let t=e[0];if(e.length===1)return t;let a=()=>{let o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(l){let s=o.reduce((u,{useScope:f,scopeName:d})=>{let i=f(l)[`__scope${d}`];return{...u,...i}},{});return oe.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return a.scopeName=t.scopeName,a}import*as J from"react";import*as Ea from"react";function Ua(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function mo(...e){return t=>{let a=!1,o=e.map(r=>{let l=Ua(r,t);return!a&&typeof l=="function"&&(a=!0),l});if(a)return()=>{for(let r=0;r<o.length;r++){let l=o[r];typeof l=="function"?l():Ua(e[r],null)}}}}function H(...e){return Ea.useCallback(mo(...e),e)}var Fe={};qa(Fe,{Root:()=>Lo,Slot:()=>Lo,Slottable:()=>xo,createSlot:()=>ce,createSlottable:()=>Va});import*as O from"react";function ce(e){let t=O.forwardRef((a,o)=>{let{children:r,...l}=a,s=null,u=!1,f=[];Ha(r)&&typeof Be=="function"&&(r=Be(r._payload)),O.Children.forEach(r,c=>{if(go(c)){u=!0;let p=c,S="child"in p.props?p.props.child:p.props.children;Ha(S)&&typeof Be=="function"&&(S=Be(S._payload)),s=Io(p,S),f.push(s?.props?.children)}else f.push(c)}),s?s=O.cloneElement(s,void 0,f):!u&&O.Children.count(r)===1&&O.isValidElement(r)&&(s=r);let d=s?Co(s):void 0,n=H(o,d);if(!s){if(r||r===0)throw new Error(u?Po(e):bo(e));return r}let i=ho(l,s.props??{});return s.type!==O.Fragment&&(i.ref=o?n:d),O.cloneElement(s,i)});return t.displayName=`${e}.Slot`,t}var Lo=ce("Slot"),za=Symbol.for("radix.slottable");function Va(e){let t=a=>"child"in a?a.children(a.child):a.children;return t.displayName=`${e}.Slottable`,t.__radixId=za,t}var xo=Va("Slottable"),Io=(e,t)=>{if("child"in e.props){let a=e.props.child;return O.isValidElement(a)?O.cloneElement(a,void 0,e.props.children(a.props.children)):null}return O.isValidElement(t)?t:null};function ho(e,t){let a={...t};for(let o in t){let r=e[o],l=t[o];/^on[A-Z]/.test(o)?r&&l?a[o]=(...u)=>{let f=l(...u);return r(...u),f}:r&&(a[o]=r):o==="style"?a[o]={...r,...l}:o==="className"&&(a[o]=[r,l].filter(Boolean).join(" "))}return{...e,...a}}function Co(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning;return a?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning,a?e.props.ref:e.props.ref||e.ref)}function go(e){return O.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===za}var So=Symbol.for("react.lazy");function Ha(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===So&&"_payload"in e&&wo(e._payload)}function wo(e){return typeof e=="object"&&e!==null&&"then"in e}var bo=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,Po=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,Be=O[" use ".trim().toString()];import{jsx as sa}from"react/jsx-runtime";import*as Oe from"react";import{jsx as Tl}from"react/jsx-runtime";function Na(e){let t=e+"CollectionProvider",[a,o]=le(t),[r,l]=a(t,{collectionRef:{current:null},itemMap:new Map}),s=h=>{let{scope:w,children:k}=h,C=J.useRef(null),A=J.useRef(new Map).current;return sa(r,{scope:w,itemMap:A,collectionRef:C,children:k})};s.displayName=t;let u=e+"CollectionSlot",f=ce(u),d=J.forwardRef((h,w)=>{let{scope:k,children:C}=h,A=l(u,k),M=H(w,A.collectionRef);return sa(f,{ref:M,children:C})});d.displayName=u;let n=e+"CollectionItemSlot",i="data-radix-collection-item",c=ce(n),p=J.forwardRef((h,w)=>{let{scope:k,children:C,...A}=h,M=J.useRef(null),v=H(w,M),R=l(n,k);return J.useEffect(()=>(R.itemMap.set(M,{ref:M,...A}),()=>void R.itemMap.delete(M))),sa(c,{[i]:"",ref:v,children:C})});p.displayName=n;function S(h){let w=l(e+"CollectionConsumer",h);return J.useCallback(()=>{let C=w.collectionRef.current;if(!C)return[];let A=Array.from(C.querySelectorAll(`[${i}]`));return Array.from(w.itemMap.values()).sort((R,D)=>A.indexOf(R.ref.current)-A.indexOf(D.ref.current))},[w.collectionRef,w.itemMap])}return[{Provider:s,Slot:d,ItemSlot:p},S,o]}var Fl=!!(typeof window<"u"&&window.document&&window.document.createElement);function X(e,t,{checkForDefaultPrevented:a=!0}={}){return function(r){if(e?.(r),a===!1||!r.defaultPrevented)return t?.(r)}}import*as K from"react";import*as Ga from"react";var Y=globalThis?.document?Ga.useLayoutEffect:()=>{};import*as qe from"react";var ko=K[" useInsertionEffect ".trim().toString()]||Y;function ge({prop:e,defaultProp:t,onChange:a=()=>{},caller:o}){let[r,l,s]=Ro({defaultProp:t,onChange:a}),u=e!==void 0,f=u?e:r;{let n=K.useRef(e!==void 0);K.useEffect(()=>{let i=n.current;i!==u&&console.warn(`${o} is changing from ${i?"controlled":"uncontrolled"} to ${u?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),n.current=u},[u,o])}let d=K.useCallback(n=>{if(u){let i=Ao(n)?n(e):n;i!==e&&s.current?.(i)}else l(n)},[u,e,l,s]);return[f,d]}function Ro({defaultProp:e,onChange:t}){let[a,o]=K.useState(e),r=K.useRef(a),l=K.useRef(t);return ko(()=>{l.current=t},[t]),K.useEffect(()=>{r.current!==a&&(l.current?.(a),r.current=a)},[a,r]),[a,o,l]}function Ao(e){return typeof e=="function"}var El=Symbol("RADIX:SYNC_STATE");import*as Wa from"react";import*as vo from"react-dom";import{jsx as yo}from"react/jsx-runtime";var Mo=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],_=Mo.reduce((e,t)=>{let a=ce(`Primitive.${t}`),o=Wa.forwardRef((r,l)=>{let{asChild:s,...u}=r,f=s?a:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),yo(f,{...u,ref:l})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});import*as q from"react";import*as z from"react";import*as Xa from"react";function Do(e,t){return Xa.useReducer((a,o)=>t[a][o]??a,e)}var se=e=>{let{present:t,children:a}=e,o=To(t),r=typeof a=="function"?a({present:o.isPresent}):z.Children.only(a),l=Bo(o.ref,Fo(r));return typeof a=="function"||o.isPresent?z.cloneElement(r,{ref:l}):null};se.displayName="Presence";function To(e){let[t,a]=z.useState(),o=z.useRef(null),r=z.useRef(e),l=z.useRef("none"),s=e?"mounted":"unmounted",[u,f]=Do(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return z.useEffect(()=>{let d=Ue(o.current);l.current=u==="mounted"?d:"none"},[u]),Y(()=>{let d=o.current,n=r.current;if(n!==e){let c=l.current,p=Ue(d);e?f("MOUNT"):p==="none"||d?.display==="none"?f("UNMOUNT"):f(n&&c!==p?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,f]),Y(()=>{if(t){let d,n=t.ownerDocument.defaultView??window,i=p=>{let h=Ue(o.current).includes(CSS.escape(p.animationName));if(p.target===t&&h&&(f("ANIMATION_END"),!r.current)){let w=t.style.animationFillMode;t.style.animationFillMode="forwards",d=n.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=w)})}},c=p=>{p.target===t&&(l.current=Ue(o.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",i),t.addEventListener("animationend",i),()=>{n.clearTimeout(d),t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",i),t.removeEventListener("animationend",i)}}else f("ANIMATION_END")},[t,f]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:z.useCallback(d=>{o.current=d?getComputedStyle(d):null,a(d)},[])}}function _a(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Bo(...e){let t=z.useRef(e);return t.current=e,z.useCallback(a=>{let o=t.current,r=!1,l=o.map(s=>{let u=_a(s,a);return!r&&typeof u=="function"&&(r=!0),u});if(r)return()=>{for(let s=0;s<l.length;s++){let u=l[s];typeof u=="function"?u():_a(o[s],null)}}},[])}function Ue(e){return e?.animationName||"none"}function Fo(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning;return a?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,a=t&&"isReactWarning"in t&&t.isReactWarning,a?e.props.ref:e.props.ref||e.ref)}import*as ua from"react";var Oo=ua[" useId ".trim().toString()]||(()=>{}),qo=0;function Ee(e){let[t,a]=ua.useState(Oo());return Y(()=>{e||a(o=>o??String(qo++))},[e]),e||(t?`radix-${t}`:"")}import{jsx as xe}from"react/jsx-runtime";var He="Collapsible",[Uo,da]=le(He),[Eo,fa]=Uo(He),Ka=q.forwardRef((e,t)=>{let{__scopeCollapsible:a,open:o,defaultOpen:r,disabled:l,onOpenChange:s,...u}=e,[f,d]=ge({prop:o,defaultProp:r??!1,onChange:s,caller:He});return xe(Eo,{scope:a,disabled:l,contentId:Ee(),open:f,onOpenToggle:q.useCallback(()=>d(n=>!n),[d]),children:xe(_.div,{"data-state":ia(f),"data-disabled":l?"":void 0,...u,ref:t})})});Ka.displayName=He;var ja="CollapsibleTrigger",Za=q.forwardRef((e,t)=>{let{__scopeCollapsible:a,...o}=e,r=fa(ja,a);return xe(_.button,{type:"button","aria-controls":r.open?r.contentId:void 0,"aria-expanded":r.open||!1,"data-state":ia(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...o,ref:t,onClick:X(e.onClick,r.onOpenToggle)})});Za.displayName=ja;var na="CollapsibleContent",$a=q.forwardRef((e,t)=>{let{forceMount:a,...o}=e,r=fa(na,e.__scopeCollapsible);return xe(se,{present:a||r.open,children:({present:l})=>xe(Ho,{...o,ref:t,present:l})})});$a.displayName=na;var Ho=q.forwardRef((e,t)=>{let{__scopeCollapsible:a,present:o,children:r,...l}=e,s=fa(na,a),[u,f]=q.useState(o),d=q.useRef(null),n=H(t,d),i=q.useRef(0),c=i.current,p=q.useRef(0),S=p.current,h=s.open||u,w=q.useRef(h),k=q.useRef(void 0);return q.useEffect(()=>{let C=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(C)},[]),Y(()=>{let C=d.current;if(C){k.current=k.current||{transitionDuration:C.style.transitionDuration,animationName:C.style.animationName},C.style.transitionDuration="0s",C.style.animationName="none";let A=C.getBoundingClientRect();i.current=A.height,p.current=A.width,w.current||(C.style.transitionDuration=k.current.transitionDuration,C.style.animationName=k.current.animationName),f(o)}},[s.open,o]),xe(_.div,{"data-state":ia(s.open),"data-disabled":s.disabled?"":void 0,id:s.contentId,hidden:!h,...l,ref:n,style:{"--radix-collapsible-content-height":c?`${c}px`:void 0,"--radix-collapsible-content-width":S?`${S}px`:void 0,...e.style},children:h&&r})});function ia(e){return e?"open":"closed"}var Ja=Ka,Ya=Za,Qa=$a;import*as ze from"react";import{jsx as os}from"react/jsx-runtime";var Vo=ze.createContext(void 0);function Ve(e){let t=ze.useContext(Vo);return e||t||"ltr"}import{jsx as F}from"react/jsx-runtime";var Q="Accordion",No=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[pa,Go,Wo]=Na(Q),[Ge,Ls]=le(Q,[Wo,da]),ma=da(),et=U.forwardRef((e,t)=>{let{type:a,...o}=e,r=o,l=o;return F(pa.Provider,{scope:e.__scopeAccordion,children:a==="multiple"?F(jo,{...l,ref:t}):F(Ko,{...r,ref:t})})});et.displayName=Q;var[at,_o]=Ge(Q),[tt,Xo]=Ge(Q,{collapsible:!1}),Ko=U.forwardRef((e,t)=>{let{value:a,defaultValue:o,onValueChange:r=()=>{},collapsible:l=!1,...s}=e,[u,f]=ge({prop:a,defaultProp:o??"",onChange:r,caller:Q});return F(at,{scope:e.__scopeAccordion,value:U.useMemo(()=>u?[u]:[],[u]),onItemOpen:f,onItemClose:U.useCallback(()=>l&&f(""),[l,f]),children:F(tt,{scope:e.__scopeAccordion,collapsible:l,children:F(ot,{...s,ref:t})})})}),jo=U.forwardRef((e,t)=>{let{value:a,defaultValue:o,onValueChange:r=()=>{},...l}=e,[s,u]=ge({prop:a,defaultProp:o??[],onChange:r,caller:Q}),f=U.useCallback(n=>u((i=[])=>[...i,n]),[u]),d=U.useCallback(n=>u((i=[])=>i.filter(c=>c!==n)),[u]);return F(at,{scope:e.__scopeAccordion,value:s,onItemOpen:f,onItemClose:d,children:F(tt,{scope:e.__scopeAccordion,collapsible:!0,children:F(ot,{...l,ref:t})})})}),[Zo,We]=Ge(Q),ot=U.forwardRef((e,t)=>{let{__scopeAccordion:a,disabled:o,dir:r,orientation:l="vertical",...s}=e,u=U.useRef(null),f=H(u,t),d=Go(a),i=Ve(r)==="ltr",c=X(e.onKeyDown,p=>{if(!No.includes(p.key))return;let S=p.target,h=d().filter(m=>!m.ref.current?.disabled),w=h.findIndex(m=>m.ref.current===S),k=h.length;if(w===-1)return;p.preventDefault();let C=w,A=0,M=k-1,v=()=>{C=w+1,C>M&&(C=A)},R=()=>{C=w-1,C<A&&(C=M)};switch(p.key){case"Home":C=A;break;case"End":C=M;break;case"ArrowRight":l==="horizontal"&&(i?v():R());break;case"ArrowDown":l==="vertical"&&v();break;case"ArrowLeft":l==="horizontal"&&(i?R():v());break;case"ArrowUp":l==="vertical"&&R();break}let D=C%k;h[D].ref.current?.focus()});return F(Zo,{scope:a,disabled:o,direction:r,orientation:l,children:F(pa.Slot,{scope:a,children:F(_.div,{...s,"data-orientation":l,ref:f,onKeyDown:o?void 0:c})})})}),Ne="AccordionItem",[$o,La]=Ge(Ne),rt=U.forwardRef((e,t)=>{let{__scopeAccordion:a,value:o,...r}=e,l=We(Ne,a),s=_o(Ne,a),u=ma(a),f=Ee(),d=o&&s.value.includes(o)||!1,n=l.disabled||e.disabled;return F($o,{scope:a,open:d,disabled:n,triggerId:f,children:F(Ja,{"data-orientation":l.orientation,"data-state":ft(d),...u,...r,ref:t,disabled:n,open:d,onOpenChange:i=>{i?s.onItemOpen(o):s.onItemClose(o)}})})});rt.displayName=Ne;var lt="AccordionHeader",Jo=U.forwardRef((e,t)=>{let{__scopeAccordion:a,...o}=e,r=We(Q,a),l=La(lt,a);return F(_.h3,{"data-orientation":r.orientation,"data-state":ft(l.open),"data-disabled":l.disabled?"":void 0,...o,ref:t})});Jo.displayName=lt;var ca="AccordionTrigger",st=U.forwardRef((e,t)=>{let{__scopeAccordion:a,...o}=e,r=We(Q,a),l=La(ca,a),s=Xo(ca,a),u=ma(a);return F(pa.ItemSlot,{scope:a,children:F(Ya,{"aria-disabled":l.open&&!s.collapsible||void 0,"data-orientation":r.orientation,id:l.triggerId,...u,...o,ref:t})})});st.displayName=ca;var ut="AccordionContent",dt=U.forwardRef((e,t)=>{let{__scopeAccordion:a,...o}=e,r=We(Q,a),l=La(ut,a),s=ma(a);return F(Qa,{role:"region","aria-labelledby":l.triggerId,"data-orientation":r.orientation,...s,...o,ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});dt.displayName=ut;function ft(e){return e?"open":"closed"}var xa=et,nt=rt;var it=st,ct=dt;import{forwardRef as er,createElement as ar}from"react";var pt=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),_e=(...e)=>e.filter((t,a,o)=>!!t&&t.trim()!==""&&o.indexOf(t)===a).join(" ").trim();import{forwardRef as Qo,createElement as Lt}from"react";var mt={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var xt=Qo(({color:e="currentColor",size:t=24,strokeWidth:a=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},f)=>Lt("svg",{ref:f,...mt,width:t,height:t,stroke:e,strokeWidth:o?Number(a)*24/Number(t):a,className:_e("lucide",r),...u},[...s.map(([d,n])=>Lt(d,n)),...Array.isArray(l)?l:[l]]));var Ie=(e,t)=>{let a=er(({className:o,...r},l)=>ar(xt,{ref:l,iconNode:t,className:_e(`lucide-${pt(e)}`,o),...r}));return a.displayName=`${e}`,a};var Se=Ie("File",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]]);var we=Ie("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);var be=Ie("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);function It(e){var t,a,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(a=It(e[t]))&&(o&&(o+=" "),o+=a)}else for(a in e)e[a]&&(o&&(o+=" "),o+=a);return o}function Xe(){for(var e,t,a=0,o="",r=arguments.length;a<r;a++)(e=arguments[a])&&(t=It(e))&&(o&&(o+=" "),o+=t);return o}var tr=(e,t)=>{let a=new Array(e.length+t.length);for(let o=0;o<e.length;o++)a[o]=e[o];for(let o=0;o<t.length;o++)a[e.length+o]=t[o];return a},or=(e,t)=>({classGroupId:e,validator:t}),Pt=(e=new Map,t=null,a)=>({nextPart:e,validators:t,classGroupId:a}),Ze="-",ht=[],rr="arbitrary..",lr=e=>{let t=ur(e),{conflictingClassGroups:a,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return sr(s);let u=s.split(Ze),f=u[0]===""&&u.length>1?1:0;return kt(u,f,t)},getConflictingClassGroupIds:(s,u)=>{if(u){let f=o[s],d=a[s];return f?d?tr(d,f):f:d||ht}return a[s]||ht}}},kt=(e,t,a)=>{if(e.length-t===0)return a.classGroupId;let r=e[t],l=a.nextPart.get(r);if(l){let d=kt(e,t+1,l);if(d)return d}let s=a.validators;if(s===null)return;let u=t===0?e.join(Ze):e.slice(t).join(Ze),f=s.length;for(let d=0;d<f;d++){let n=s[d];if(n.validator(u))return n.classGroupId}},sr=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let t=e.slice(1,-1),a=t.indexOf(":"),o=t.slice(0,a);return o?rr+o:void 0})(),ur=e=>{let{theme:t,classGroups:a}=e;return dr(a,t)},dr=(e,t)=>{let a=Pt();for(let o in e){let r=e[o];Ca(r,a,o,t)}return a},Ca=(e,t,a,o)=>{let r=e.length;for(let l=0;l<r;l++){let s=e[l];fr(s,t,a,o)}},fr=(e,t,a,o)=>{if(typeof e=="string"){nr(e,t,a);return}if(typeof e=="function"){ir(e,t,a,o);return}cr(e,t,a,o)},nr=(e,t,a)=>{let o=e===""?t:Rt(t,e);o.classGroupId=a},ir=(e,t,a,o)=>{if(pr(e)){Ca(e(o),t,a,o);return}t.validators===null&&(t.validators=[]),t.validators.push(or(a,e))},cr=(e,t,a,o)=>{let r=Object.entries(e),l=r.length;for(let s=0;s<l;s++){let[u,f]=r[s];Ca(f,Rt(t,u),a,o)}},Rt=(e,t)=>{let a=e,o=t.split(Ze),r=o.length;for(let l=0;l<r;l++){let s=o[l],u=a.nextPart.get(s);u||(u=Pt(),a.nextPart.set(s,u)),a=u}return a},pr=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,mr=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,a=Object.create(null),o=Object.create(null),r=(l,s)=>{a[l]=s,t++,t>e&&(t=0,o=a,a=Object.create(null))};return{get(l){let s=a[l];if(s!==void 0)return s;if((s=o[l])!==void 0)return r(l,s),s},set(l,s){l in a?a[l]=s:r(l,s)}}},ha="!",Ct=":",Lr=[],gt=(e,t,a,o,r)=>({modifiers:e,hasImportantModifier:t,baseClassName:a,maybePostfixModifierPosition:o,isExternal:r}),xr=e=>{let{prefix:t,experimentalParseClassName:a}=e,o=r=>{let l=[],s=0,u=0,f=0,d,n=r.length;for(let h=0;h<n;h++){let w=r[h];if(s===0&&u===0){if(w===Ct){l.push(r.slice(f,h)),f=h+1;continue}if(w==="/"){d=h;continue}}w==="["?s++:w==="]"?s--:w==="("?u++:w===")"&&u--}let i=l.length===0?r:r.slice(f),c=i,p=!1;i.endsWith(ha)?(c=i.slice(0,-1),p=!0):i.startsWith(ha)&&(c=i.slice(1),p=!0);let S=d&&d>f?d-f:void 0;return gt(l,p,c,S)};if(t){let r=t+Ct,l=o;o=s=>s.startsWith(r)?l(s.slice(r.length)):gt(Lr,!1,s,void 0,!0)}if(a){let r=o;o=l=>a({className:l,parseClassName:r})}return o},Ir=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((a,o)=>{t.set(a,1e6+o)}),a=>{let o=[],r=[];for(let l=0;l<a.length;l++){let s=a[l],u=s[0]==="[",f=t.has(s);u||f?(r.length>0&&(r.sort(),o.push(...r),r=[]),o.push(s)):r.push(s)}return r.length>0&&(r.sort(),o.push(...r)),o}},hr=e=>({cache:mr(e.cacheSize),parseClassName:xr(e),sortModifiers:Ir(e),postfixLookupClassGroupIds:Cr(e),...lr(e)}),Cr=e=>{let t=Object.create(null),a=e.postfixLookupClassGroups;if(a)for(let o=0;o<a.length;o++)t[a[o]]=!0;return t},gr=/\s+/,Sr=(e,t)=>{let{parseClassName:a,getClassGroupId:o,getConflictingClassGroupIds:r,sortModifiers:l,postfixLookupClassGroupIds:s}=t,u=[],f=e.trim().split(gr),d="";for(let n=f.length-1;n>=0;n-=1){let i=f[n],{isExternal:c,modifiers:p,hasImportantModifier:S,baseClassName:h,maybePostfixModifierPosition:w}=a(i);if(c){d=i+(d.length>0?" "+d:d);continue}let k=!!w,C;if(k){let D=h.substring(0,w);C=o(D);let m=C&&s[C]?o(h):void 0;m&&m!==C&&(C=m,k=!1)}else C=o(h);if(!C){if(!k){d=i+(d.length>0?" "+d:d);continue}if(C=o(h),!C){d=i+(d.length>0?" "+d:d);continue}k=!1}let A=p.length===0?"":p.length===1?p[0]:l(p).join(":"),M=S?A+ha:A,v=M+C;if(u.indexOf(v)>-1)continue;u.push(v);let R=r(C,k);for(let D=0;D<R.length;++D){let m=R[D];u.push(M+m)}d=i+(d.length>0?" "+d:d)}return d},wr=(...e)=>{let t=0,a,o,r="";for(;t<e.length;)(a=e[t++])&&(o=At(a))&&(r&&(r+=" "),r+=o);return r},At=e=>{if(typeof e=="string")return e;let t,a="";for(let o=0;o<e.length;o++)e[o]&&(t=At(e[o]))&&(a&&(a+=" "),a+=t);return a},br=(e,...t)=>{let a,o,r,l,s=f=>{let d=t.reduce((n,i)=>i(n),e());return a=hr(d),o=a.cache.get,r=a.cache.set,l=u,u(f)},u=f=>{let d=o(f);if(d)return d;let n=Sr(f,a);return r(f,n),n};return l=s,(...f)=>l(wr(...f))},Pr=[],T=e=>{let t=a=>a[e]||Pr;return t.isThemeGetter=!0,t},vt=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,yt=/^\((?:(\w[\w-]*):)?(.+)\)$/i,kr=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Rr=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ar=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,vr=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,yr=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Mr=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ue=e=>kr.test(e),b=e=>!!e&&!Number.isNaN(Number(e)),ae=e=>!!e&&Number.isInteger(Number(e)),Ia=e=>e.endsWith("%")&&b(e.slice(0,-1)),re=e=>Rr.test(e),Mt=()=>!0,Dr=e=>Ar.test(e)&&!vr.test(e),ga=()=>!1,Tr=e=>yr.test(e),Br=e=>Mr.test(e),Fr=e=>!L(e)&&!x(e),Or=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),qr=e=>de(e,Bt,ga),L=e=>vt.test(e),pe=e=>de(e,Ft,Dr),St=e=>de(e,Wr,b),Ur=e=>de(e,qt,Mt),Er=e=>de(e,Ot,ga),wt=e=>de(e,Dt,ga),Hr=e=>de(e,Tt,Br),Ke=e=>de(e,Ut,Tr),x=e=>yt.test(e),Pe=e=>me(e,Ft),zr=e=>me(e,Ot),bt=e=>me(e,Dt),Vr=e=>me(e,Bt),Nr=e=>me(e,Tt),je=e=>me(e,Ut,!0),Gr=e=>me(e,qt,!0),de=(e,t,a)=>{let o=vt.exec(e);return o?o[1]?t(o[1]):a(o[2]):!1},me=(e,t,a=!1)=>{let o=yt.exec(e);return o?o[1]?t(o[1]):a:!1},Dt=e=>e==="position"||e==="percentage",Tt=e=>e==="image"||e==="url",Bt=e=>e==="length"||e==="size"||e==="bg-size",Ft=e=>e==="length",Wr=e=>e==="number",Ot=e=>e==="family-name",qt=e=>e==="number"||e==="weight",Ut=e=>e==="shadow";var _r=()=>{let e=T("color"),t=T("font"),a=T("text"),o=T("font-weight"),r=T("tracking"),l=T("leading"),s=T("breakpoint"),u=T("container"),f=T("spacing"),d=T("radius"),n=T("shadow"),i=T("inset-shadow"),c=T("text-shadow"),p=T("drop-shadow"),S=T("blur"),h=T("perspective"),w=T("aspect"),k=T("ease"),C=T("animate"),A=()=>["auto","avoid","all","avoid-page","page","left","right","column"],M=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],v=()=>[...M(),x,L],R=()=>["auto","hidden","clip","visible","scroll"],D=()=>["auto","contain","none"],m=()=>[x,L,f],P=()=>[ue,"full","auto",...m()],E=()=>[ae,"none","subgrid",x,L],V=()=>["auto",{span:["full",ae,x,L]},ae,x,L],Z=()=>[ae,"auto",x,L],Ma=()=>["auto","min","max","fr",x,L],aa=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Le=()=>["start","end","center","stretch","center-safe","end-safe"],$=()=>["auto",...m()],ie=()=>[ue,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...m()],ta=()=>[ue,"screen","full","dvw","lvw","svw","min","max","fit",...m()],oa=()=>[ue,"screen","full","lh","dvh","lvh","svh","min","max","fit",...m()],g=()=>[e,x,L],Da=()=>[...M(),bt,wt,{position:[x,L]}],Ta=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Ba=()=>["auto","cover","contain",Vr,qr,{size:[x,L]}],ra=()=>[Ia,Pe,pe],N=()=>["","none","full",d,x,L],G=()=>["",b,Pe,pe],ye=()=>["solid","dashed","dotted","double"],Fa=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],B=()=>[b,Ia,bt,wt],Oa=()=>["","none",S,x,L],Me=()=>["none",b,x,L],De=()=>["none",b,x,L],la=()=>[b,x,L],Te=()=>[ue,"full",...m()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[re],breakpoint:[re],color:[Mt],container:[re],"drop-shadow":[re],ease:["in","out","in-out"],font:[Fr],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[re],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[re],shadow:[re],spacing:["px",b],text:[re],"text-shadow":[re],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ue,L,x,w]}],container:["container"],"container-type":[{"@container":["","normal","size",x,L]}],"container-named":[Or],columns:[{columns:[b,L,x,u]}],"break-after":[{"break-after":A()}],"break-before":[{"break-before":A()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:v()}],overflow:[{overflow:R()}],"overflow-x":[{"overflow-x":R()}],"overflow-y":[{"overflow-y":R()}],overscroll:[{overscroll:D()}],"overscroll-x":[{"overscroll-x":D()}],"overscroll-y":[{"overscroll-y":D()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:P()}],"inset-x":[{"inset-x":P()}],"inset-y":[{"inset-y":P()}],start:[{"inset-s":P(),start:P()}],end:[{"inset-e":P(),end:P()}],"inset-bs":[{"inset-bs":P()}],"inset-be":[{"inset-be":P()}],top:[{top:P()}],right:[{right:P()}],bottom:[{bottom:P()}],left:[{left:P()}],visibility:["visible","invisible","collapse"],z:[{z:[ae,"auto",x,L]}],basis:[{basis:[ue,"full","auto",u,...m()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[b,ue,"auto","initial","none",L]}],grow:[{grow:["",b,x,L]}],shrink:[{shrink:["",b,x,L]}],order:[{order:[ae,"first","last","none",x,L]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:V()}],"col-start":[{"col-start":Z()}],"col-end":[{"col-end":Z()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:V()}],"row-start":[{"row-start":Z()}],"row-end":[{"row-end":Z()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Ma()}],"auto-rows":[{"auto-rows":Ma()}],gap:[{gap:m()}],"gap-x":[{"gap-x":m()}],"gap-y":[{"gap-y":m()}],"justify-content":[{justify:[...aa(),"normal"]}],"justify-items":[{"justify-items":[...Le(),"normal"]}],"justify-self":[{"justify-self":["auto",...Le()]}],"align-content":[{content:["normal",...aa()]}],"align-items":[{items:[...Le(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Le(),{baseline:["","last"]}]}],"place-content":[{"place-content":aa()}],"place-items":[{"place-items":[...Le(),"baseline"]}],"place-self":[{"place-self":["auto",...Le()]}],p:[{p:m()}],px:[{px:m()}],py:[{py:m()}],ps:[{ps:m()}],pe:[{pe:m()}],pbs:[{pbs:m()}],pbe:[{pbe:m()}],pt:[{pt:m()}],pr:[{pr:m()}],pb:[{pb:m()}],pl:[{pl:m()}],m:[{m:$()}],mx:[{mx:$()}],my:[{my:$()}],ms:[{ms:$()}],me:[{me:$()}],mbs:[{mbs:$()}],mbe:[{mbe:$()}],mt:[{mt:$()}],mr:[{mr:$()}],mb:[{mb:$()}],ml:[{ml:$()}],"space-x":[{"space-x":m()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":m()}],"space-y-reverse":["space-y-reverse"],size:[{size:ie()}],"inline-size":[{inline:["auto",...ta()]}],"min-inline-size":[{"min-inline":["auto",...ta()]}],"max-inline-size":[{"max-inline":["none",...ta()]}],"block-size":[{block:["auto",...oa()]}],"min-block-size":[{"min-block":["auto",...oa()]}],"max-block-size":[{"max-block":["none",...oa()]}],w:[{w:[u,"screen",...ie()]}],"min-w":[{"min-w":[u,"screen","none",...ie()]}],"max-w":[{"max-w":[u,"screen","none","prose",{screen:[s]},...ie()]}],h:[{h:["screen","lh",...ie()]}],"min-h":[{"min-h":["screen","lh","none",...ie()]}],"max-h":[{"max-h":["screen","lh",...ie()]}],"font-size":[{text:["base",a,Pe,pe]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,Gr,Ur]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Ia,L]}],"font-family":[{font:[zr,Er,t]}],"font-features":[{"font-features":[L]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,x,L]}],"line-clamp":[{"line-clamp":[b,"none",x,St]}],leading:[{leading:[l,...m()]}],"list-image":[{"list-image":["none",x,L]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",x,L]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:g()}],"text-color":[{text:g()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ye(),"wavy"]}],"text-decoration-thickness":[{decoration:[b,"from-font","auto",x,pe]}],"text-decoration-color":[{decoration:g()}],"underline-offset":[{"underline-offset":[b,"auto",x,L]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:m()}],"tab-size":[{tab:[ae,x,L]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",x,L]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",x,L]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Da()}],"bg-repeat":[{bg:Ta()}],"bg-size":[{bg:Ba()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ae,x,L],radial:["",x,L],conic:[ae,x,L]},Nr,Hr]}],"bg-color":[{bg:g()}],"gradient-from-pos":[{from:ra()}],"gradient-via-pos":[{via:ra()}],"gradient-to-pos":[{to:ra()}],"gradient-from":[{from:g()}],"gradient-via":[{via:g()}],"gradient-to":[{to:g()}],rounded:[{rounded:N()}],"rounded-s":[{"rounded-s":N()}],"rounded-e":[{"rounded-e":N()}],"rounded-t":[{"rounded-t":N()}],"rounded-r":[{"rounded-r":N()}],"rounded-b":[{"rounded-b":N()}],"rounded-l":[{"rounded-l":N()}],"rounded-ss":[{"rounded-ss":N()}],"rounded-se":[{"rounded-se":N()}],"rounded-ee":[{"rounded-ee":N()}],"rounded-es":[{"rounded-es":N()}],"rounded-tl":[{"rounded-tl":N()}],"rounded-tr":[{"rounded-tr":N()}],"rounded-br":[{"rounded-br":N()}],"rounded-bl":[{"rounded-bl":N()}],"border-w":[{border:G()}],"border-w-x":[{"border-x":G()}],"border-w-y":[{"border-y":G()}],"border-w-s":[{"border-s":G()}],"border-w-e":[{"border-e":G()}],"border-w-bs":[{"border-bs":G()}],"border-w-be":[{"border-be":G()}],"border-w-t":[{"border-t":G()}],"border-w-r":[{"border-r":G()}],"border-w-b":[{"border-b":G()}],"border-w-l":[{"border-l":G()}],"divide-x":[{"divide-x":G()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":G()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ye(),"hidden","none"]}],"divide-style":[{divide:[...ye(),"hidden","none"]}],"border-color":[{border:g()}],"border-color-x":[{"border-x":g()}],"border-color-y":[{"border-y":g()}],"border-color-s":[{"border-s":g()}],"border-color-e":[{"border-e":g()}],"border-color-bs":[{"border-bs":g()}],"border-color-be":[{"border-be":g()}],"border-color-t":[{"border-t":g()}],"border-color-r":[{"border-r":g()}],"border-color-b":[{"border-b":g()}],"border-color-l":[{"border-l":g()}],"divide-color":[{divide:g()}],"outline-style":[{outline:[...ye(),"none","hidden"]}],"outline-offset":[{"outline-offset":[b,x,L]}],"outline-w":[{outline:["",b,Pe,pe]}],"outline-color":[{outline:g()}],shadow:[{shadow:["","none",n,je,Ke]}],"shadow-color":[{shadow:g()}],"inset-shadow":[{"inset-shadow":["none",i,je,Ke]}],"inset-shadow-color":[{"inset-shadow":g()}],"ring-w":[{ring:G()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:g()}],"ring-offset-w":[{"ring-offset":[b,pe]}],"ring-offset-color":[{"ring-offset":g()}],"inset-ring-w":[{"inset-ring":G()}],"inset-ring-color":[{"inset-ring":g()}],"text-shadow":[{"text-shadow":["none",c,je,Ke]}],"text-shadow-color":[{"text-shadow":g()}],opacity:[{opacity:[b,x,L]}],"mix-blend":[{"mix-blend":[...Fa(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Fa()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[b]}],"mask-image-linear-from-pos":[{"mask-linear-from":B()}],"mask-image-linear-to-pos":[{"mask-linear-to":B()}],"mask-image-linear-from-color":[{"mask-linear-from":g()}],"mask-image-linear-to-color":[{"mask-linear-to":g()}],"mask-image-t-from-pos":[{"mask-t-from":B()}],"mask-image-t-to-pos":[{"mask-t-to":B()}],"mask-image-t-from-color":[{"mask-t-from":g()}],"mask-image-t-to-color":[{"mask-t-to":g()}],"mask-image-r-from-pos":[{"mask-r-from":B()}],"mask-image-r-to-pos":[{"mask-r-to":B()}],"mask-image-r-from-color":[{"mask-r-from":g()}],"mask-image-r-to-color":[{"mask-r-to":g()}],"mask-image-b-from-pos":[{"mask-b-from":B()}],"mask-image-b-to-pos":[{"mask-b-to":B()}],"mask-image-b-from-color":[{"mask-b-from":g()}],"mask-image-b-to-color":[{"mask-b-to":g()}],"mask-image-l-from-pos":[{"mask-l-from":B()}],"mask-image-l-to-pos":[{"mask-l-to":B()}],"mask-image-l-from-color":[{"mask-l-from":g()}],"mask-image-l-to-color":[{"mask-l-to":g()}],"mask-image-x-from-pos":[{"mask-x-from":B()}],"mask-image-x-to-pos":[{"mask-x-to":B()}],"mask-image-x-from-color":[{"mask-x-from":g()}],"mask-image-x-to-color":[{"mask-x-to":g()}],"mask-image-y-from-pos":[{"mask-y-from":B()}],"mask-image-y-to-pos":[{"mask-y-to":B()}],"mask-image-y-from-color":[{"mask-y-from":g()}],"mask-image-y-to-color":[{"mask-y-to":g()}],"mask-image-radial":[{"mask-radial":[x,L]}],"mask-image-radial-from-pos":[{"mask-radial-from":B()}],"mask-image-radial-to-pos":[{"mask-radial-to":B()}],"mask-image-radial-from-color":[{"mask-radial-from":g()}],"mask-image-radial-to-color":[{"mask-radial-to":g()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":M()}],"mask-image-conic-pos":[{"mask-conic":[b]}],"mask-image-conic-from-pos":[{"mask-conic-from":B()}],"mask-image-conic-to-pos":[{"mask-conic-to":B()}],"mask-image-conic-from-color":[{"mask-conic-from":g()}],"mask-image-conic-to-color":[{"mask-conic-to":g()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Da()}],"mask-repeat":[{mask:Ta()}],"mask-size":[{mask:Ba()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",x,L]}],filter:[{filter:["","none",x,L]}],blur:[{blur:Oa()}],brightness:[{brightness:[b,x,L]}],contrast:[{contrast:[b,x,L]}],"drop-shadow":[{"drop-shadow":["","none",p,je,Ke]}],"drop-shadow-color":[{"drop-shadow":g()}],grayscale:[{grayscale:["",b,x,L]}],"hue-rotate":[{"hue-rotate":[b,x,L]}],invert:[{invert:["",b,x,L]}],saturate:[{saturate:[b,x,L]}],sepia:[{sepia:["",b,x,L]}],"backdrop-filter":[{"backdrop-filter":["","none",x,L]}],"backdrop-blur":[{"backdrop-blur":Oa()}],"backdrop-brightness":[{"backdrop-brightness":[b,x,L]}],"backdrop-contrast":[{"backdrop-contrast":[b,x,L]}],"backdrop-grayscale":[{"backdrop-grayscale":["",b,x,L]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[b,x,L]}],"backdrop-invert":[{"backdrop-invert":["",b,x,L]}],"backdrop-opacity":[{"backdrop-opacity":[b,x,L]}],"backdrop-saturate":[{"backdrop-saturate":[b,x,L]}],"backdrop-sepia":[{"backdrop-sepia":["",b,x,L]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":m()}],"border-spacing-x":[{"border-spacing-x":m()}],"border-spacing-y":[{"border-spacing-y":m()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",x,L]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[b,"initial",x,L]}],ease:[{ease:["linear","initial",k,x,L]}],delay:[{delay:[b,x,L]}],animate:[{animate:["none",C,x,L]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[h,x,L]}],"perspective-origin":[{"perspective-origin":v()}],rotate:[{rotate:Me()}],"rotate-x":[{"rotate-x":Me()}],"rotate-y":[{"rotate-y":Me()}],"rotate-z":[{"rotate-z":Me()}],scale:[{scale:De()}],"scale-x":[{"scale-x":De()}],"scale-y":[{"scale-y":De()}],"scale-z":[{"scale-z":De()}],"scale-3d":["scale-3d"],skew:[{skew:la()}],"skew-x":[{"skew-x":la()}],"skew-y":[{"skew-y":la()}],transform:[{transform:[x,L,"","none","gpu","cpu"]}],"transform-origin":[{origin:v()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Te()}],"translate-x":[{"translate-x":Te()}],"translate-y":[{"translate-y":Te()}],"translate-z":[{"translate-z":Te()}],"translate-none":["translate-none"],zoom:[{zoom:[ae,x,L]}],accent:[{accent:g()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:g()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",x,L]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":g()}],"scrollbar-track-color":[{"scrollbar-track":g()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":m()}],"scroll-mx":[{"scroll-mx":m()}],"scroll-my":[{"scroll-my":m()}],"scroll-ms":[{"scroll-ms":m()}],"scroll-me":[{"scroll-me":m()}],"scroll-mbs":[{"scroll-mbs":m()}],"scroll-mbe":[{"scroll-mbe":m()}],"scroll-mt":[{"scroll-mt":m()}],"scroll-mr":[{"scroll-mr":m()}],"scroll-mb":[{"scroll-mb":m()}],"scroll-ml":[{"scroll-ml":m()}],"scroll-p":[{"scroll-p":m()}],"scroll-px":[{"scroll-px":m()}],"scroll-py":[{"scroll-py":m()}],"scroll-ps":[{"scroll-ps":m()}],"scroll-pe":[{"scroll-pe":m()}],"scroll-pbs":[{"scroll-pbs":m()}],"scroll-pbe":[{"scroll-pbe":m()}],"scroll-pt":[{"scroll-pt":m()}],"scroll-pr":[{"scroll-pr":m()}],"scroll-pb":[{"scroll-pb":m()}],"scroll-pl":[{"scroll-pl":m()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",x,L]}],fill:[{fill:["none",...g()]}],"stroke-w":[{stroke:[b,Pe,pe,St]}],stroke:[{stroke:["none",...g()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var Et=br(_r);function ee(...e){return Et(Xe(e))}var Ht=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,zt=Xe,Vt=(e,t)=>a=>{var o;if(t?.variants==null)return zt(e,a?.class,a?.className);let{variants:r,defaultVariants:l}=t,s=Object.keys(r).map(d=>{let n=a?.[d],i=l?.[d];if(n===null)return null;let c=Ht(n)||Ht(i);return r[d][c]}),u=a&&Object.entries(a).reduce((d,n)=>{let[i,c]=n;return c===void 0||(d[i]=c),d},{}),f=t==null||(o=t.compoundVariants)===null||o===void 0?void 0:o.reduce((d,n)=>{let{class:i,className:c,...p}=n;return Object.entries(p).every(S=>{let[h,w]=S;return Array.isArray(w)?w.includes({...l,...u}[h]):{...l,...u}[h]===w})?[...d,i,c]:d},[]);return zt(e,s,f,a?.class,a?.className)};import*as he from"react";function fe(e){let t=he.useRef(e);return he.useEffect(()=>{t.current=e}),he.useMemo(()=>(...a)=>t.current?.(...a),[])}function Nt(e,[t,a]){return Math.min(a,Math.max(t,e))}var ne={};qa(ne,{Corner:()=>nl,Root:()=>sl,ScrollArea:()=>wa,ScrollAreaCorner:()=>va,ScrollAreaScrollbar:()=>Pa,ScrollAreaThumb:()=>Ra,ScrollAreaViewport:()=>ba,Scrollbar:()=>dl,Thumb:()=>fl,Viewport:()=>ul,createScrollAreaScope:()=>Zr});import*as I from"react";import*as Wt from"react";import{Fragment as Kr,jsx as y,jsxs as jr}from"react/jsx-runtime";function Xr(e,t){return Wt.useReducer((a,o)=>t[a][o]??a,e)}var Sa="ScrollArea",[_t,Zr]=le(Sa),[$r,j]=_t(Sa),wa=I.forwardRef((e,t)=>{let{__scopeScrollArea:a,type:o="hover",dir:r,scrollHideDelay:l=600,...s}=e,[u,f]=I.useState(null),[d,n]=I.useState(null),[i,c]=I.useState(null),[p,S]=I.useState(null),[h,w]=I.useState(null),[k,C]=I.useState(0),[A,M]=I.useState(0),[v,R]=I.useState(!1),[D,m]=I.useState(!1),P=H(t,V=>f(V)),E=Ve(r);return y($r,{scope:a,type:o,dir:E,scrollHideDelay:l,scrollArea:u,viewport:d,onViewportChange:n,content:i,onContentChange:c,scrollbarX:p,onScrollbarXChange:S,scrollbarXEnabled:v,onScrollbarXEnabledChange:R,scrollbarY:h,onScrollbarYChange:w,scrollbarYEnabled:D,onScrollbarYEnabledChange:m,onCornerWidthChange:C,onCornerHeightChange:M,children:y(_.div,{dir:E,...s,ref:P,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":A+"px",...e.style}})})});wa.displayName=Sa;var Xt="ScrollAreaViewport",ba=I.forwardRef((e,t)=>{let{__scopeScrollArea:a,children:o,nonce:r,...l}=e,s=j(Xt,a),u=I.useRef(null),f=H(t,u,s.onViewportChange);return jr(Kr,{children:[y("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),y(_.div,{"data-radix-scroll-area-viewport":"",...l,ref:f,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style},children:y("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"},children:o})})]})});ba.displayName=Xt;var te="ScrollAreaScrollbar",Pa=I.forwardRef((e,t)=>{let{forceMount:a,...o}=e,r=j(te,e.__scopeScrollArea),{onScrollbarXEnabledChange:l,onScrollbarYEnabledChange:s}=r,u=e.orientation==="horizontal";return I.useEffect(()=>(u?l(!0):s(!0),()=>{u?l(!1):s(!1)}),[u,l,s]),r.type==="hover"?y(Jr,{...o,ref:t,forceMount:a}):r.type==="scroll"?y(Yr,{...o,ref:t,forceMount:a}):r.type==="auto"?y(Kt,{...o,ref:t,forceMount:a}):r.type==="always"?y(ka,{...o,ref:t,"data-state":"visible"}):null});Pa.displayName=te;var Jr=I.forwardRef((e,t)=>{let{forceMount:a,...o}=e,r=j(te,e.__scopeScrollArea),[l,s]=I.useState(!1);return I.useEffect(()=>{let u=r.scrollArea,f=0;if(u){let d=()=>{window.clearTimeout(f),s(!0)},n=()=>{f=window.setTimeout(()=>s(!1),r.scrollHideDelay)};return u.addEventListener("pointerenter",d),u.addEventListener("pointerleave",n),()=>{window.clearTimeout(f),u.removeEventListener("pointerenter",d),u.removeEventListener("pointerleave",n)}}},[r.scrollArea,r.scrollHideDelay]),y(se,{present:a||l,children:y(Kt,{"data-state":l?"visible":"hidden",...o,ref:t})})}),Yr=I.forwardRef((e,t)=>{let{forceMount:a,...o}=e,r=j(te,e.__scopeScrollArea),l=e.orientation==="horizontal",s=Qe(()=>f("SCROLL_END"),100),[u,f]=Xr("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return I.useEffect(()=>{if(u==="idle"){let d=window.setTimeout(()=>f("HIDE"),r.scrollHideDelay);return()=>window.clearTimeout(d)}},[u,r.scrollHideDelay,f]),I.useEffect(()=>{let d=r.viewport,n=l?"scrollLeft":"scrollTop";if(d){let i=d[n],c=()=>{let p=d[n];i!==p&&(f("SCROLL"),s()),i=p};return d.addEventListener("scroll",c),()=>d.removeEventListener("scroll",c)}},[r.viewport,l,f,s]),y(se,{present:a||u!=="hidden",children:y(ka,{"data-state":u==="hidden"?"hidden":"visible",...o,ref:t,onPointerEnter:X(e.onPointerEnter,()=>f("POINTER_ENTER")),onPointerLeave:X(e.onPointerLeave,()=>f("POINTER_LEAVE"))})})}),Kt=I.forwardRef((e,t)=>{let a=j(te,e.__scopeScrollArea),{forceMount:o,...r}=e,[l,s]=I.useState(!1),u=e.orientation==="horizontal",f=Qe(()=>{if(a.viewport){let d=a.viewport.offsetWidth<a.viewport.scrollWidth,n=a.viewport.offsetHeight<a.viewport.scrollHeight;s(u?d:n)}},10);return Ce(a.viewport,f),Ce(a.content,f),y(se,{present:o||l,children:y(ka,{"data-state":l?"visible":"hidden",...r,ref:t})})}),ka=I.forwardRef((e,t)=>{let{orientation:a="vertical",...o}=e,r=j(te,e.__scopeScrollArea),l=I.useRef(null),s=I.useRef(0),[u,f]=I.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=$t(u.viewport,u.content),n={...o,sizes:u,onSizesChange:f,hasThumb:d>0&&d<1,onThumbChange:c=>l.current=c,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:c=>s.current=c};function i(c,p){return rl(c,s.current,u,p)}return a==="horizontal"?y(Qr,{...n,ref:t,onThumbPositionChange:()=>{if(r.viewport&&l.current){let c=r.viewport.scrollLeft,p=Gt(c,u,r.dir);l.current.style.transform=`translate3d(${p}px, 0, 0)`}},onWheelScroll:c=>{r.viewport&&(r.viewport.scrollLeft=c)},onDragScroll:c=>{r.viewport&&(r.viewport.scrollLeft=i(c,r.dir))}}):a==="vertical"?y(el,{...n,ref:t,onThumbPositionChange:()=>{if(r.viewport&&l.current){let c=r.viewport.scrollTop,p=Gt(c,u);l.current.style.transform=`translate3d(0, ${p}px, 0)`}},onWheelScroll:c=>{r.viewport&&(r.viewport.scrollTop=c)},onDragScroll:c=>{r.viewport&&(r.viewport.scrollTop=i(c))}}):null}),Qr=I.forwardRef((e,t)=>{let{sizes:a,onSizesChange:o,...r}=e,l=j(te,e.__scopeScrollArea),[s,u]=I.useState(),f=I.useRef(null),d=H(t,f,l.onScrollbarXChange);return I.useEffect(()=>{f.current&&u(getComputedStyle(f.current))},[f]),y(Zt,{"data-orientation":"horizontal",...r,ref:d,sizes:a,style:{bottom:0,left:l.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:l.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Ye(a)+"px",...e.style},onThumbPointerDown:n=>e.onThumbPointerDown(n.x),onDragScroll:n=>e.onDragScroll(n.x),onWheelScroll:(n,i)=>{if(l.viewport){let c=l.viewport.scrollLeft+n.deltaX;e.onWheelScroll(c),Yt(c,i)&&n.preventDefault()}},onResize:()=>{f.current&&l.viewport&&s&&o({content:l.viewport.scrollWidth,viewport:l.viewport.offsetWidth,scrollbar:{size:f.current.clientWidth,paddingStart:Je(s.paddingLeft),paddingEnd:Je(s.paddingRight)}})}})}),el=I.forwardRef((e,t)=>{let{sizes:a,onSizesChange:o,...r}=e,l=j(te,e.__scopeScrollArea),[s,u]=I.useState(),f=I.useRef(null),d=H(t,f,l.onScrollbarYChange);return I.useEffect(()=>{f.current&&u(getComputedStyle(f.current))},[f]),y(Zt,{"data-orientation":"vertical",...r,ref:d,sizes:a,style:{top:0,right:l.dir==="ltr"?0:void 0,left:l.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Ye(a)+"px",...e.style},onThumbPointerDown:n=>e.onThumbPointerDown(n.y),onDragScroll:n=>e.onDragScroll(n.y),onWheelScroll:(n,i)=>{if(l.viewport){let c=l.viewport.scrollTop+n.deltaY;e.onWheelScroll(c),Yt(c,i)&&n.preventDefault()}},onResize:()=>{f.current&&l.viewport&&s&&o({content:l.viewport.scrollHeight,viewport:l.viewport.offsetHeight,scrollbar:{size:f.current.clientHeight,paddingStart:Je(s.paddingTop),paddingEnd:Je(s.paddingBottom)}})}})}),[al,jt]=_t(te),Zt=I.forwardRef((e,t)=>{let{__scopeScrollArea:a,sizes:o,hasThumb:r,onThumbChange:l,onThumbPointerUp:s,onThumbPointerDown:u,onThumbPositionChange:f,onDragScroll:d,onWheelScroll:n,onResize:i,...c}=e,p=j(te,a),[S,h]=I.useState(null),w=H(t,P=>h(P)),k=I.useRef(null),C=I.useRef(""),A=p.viewport,M=o.content-o.viewport,v=fe(n),R=fe(f),D=Qe(i,10);function m(P){if(k.current){let E=P.clientX-k.current.left,V=P.clientY-k.current.top;d({x:E,y:V})}}return I.useEffect(()=>{let P=E=>{let V=E.target;S?.contains(V)&&v(E,M)};return document.addEventListener("wheel",P,{passive:!1}),()=>document.removeEventListener("wheel",P,{passive:!1})},[A,S,M,v]),I.useEffect(R,[o,R]),Ce(S,D),Ce(p.content,D),y(al,{scope:a,scrollbar:S,hasThumb:r,onThumbChange:fe(l),onThumbPointerUp:fe(s),onThumbPositionChange:R,onThumbPointerDown:fe(u),children:y(_.div,{...c,ref:w,style:{position:"absolute",...c.style},onPointerDown:X(e.onPointerDown,P=>{P.button===0&&(P.target.setPointerCapture(P.pointerId),k.current=S.getBoundingClientRect(),C.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",p.viewport&&(p.viewport.style.scrollBehavior="auto"),m(P))}),onPointerMove:X(e.onPointerMove,m),onPointerUp:X(e.onPointerUp,P=>{let E=P.target;E.hasPointerCapture(P.pointerId)&&E.releasePointerCapture(P.pointerId),document.body.style.webkitUserSelect=C.current,p.viewport&&(p.viewport.style.scrollBehavior=""),k.current=null})})})}),$e="ScrollAreaThumb",Ra=I.forwardRef((e,t)=>{let{forceMount:a,...o}=e,r=jt($e,e.__scopeScrollArea);return y(se,{present:a||r.hasThumb,children:y(tl,{ref:t,...o})})}),tl=I.forwardRef((e,t)=>{let{__scopeScrollArea:a,style:o,...r}=e,l=j($e,a),s=jt($e,a),{onThumbPositionChange:u}=s,f=H(t,i=>s.onThumbChange(i)),d=I.useRef(void 0),n=Qe(()=>{d.current&&(d.current(),d.current=void 0)},100);return I.useEffect(()=>{let i=l.viewport;if(i){let c=()=>{if(n(),!d.current){let p=ll(i,u);d.current=p,u()}};return u(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)}},[l.viewport,n,u]),y(_.div,{"data-state":s.hasThumb?"visible":"hidden",...r,ref:f,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...o},onPointerDownCapture:X(e.onPointerDownCapture,i=>{let p=i.target.getBoundingClientRect(),S=i.clientX-p.left,h=i.clientY-p.top;s.onThumbPointerDown({x:S,y:h})}),onPointerUp:X(e.onPointerUp,s.onThumbPointerUp)})});Ra.displayName=$e;var Aa="ScrollAreaCorner",va=I.forwardRef((e,t)=>{let a=j(Aa,e.__scopeScrollArea),o=!!(a.scrollbarX&&a.scrollbarY);return a.type!=="scroll"&&o?y(ol,{...e,ref:t}):null});va.displayName=Aa;var ol=I.forwardRef((e,t)=>{let{__scopeScrollArea:a,...o}=e,r=j(Aa,a),[l,s]=I.useState(0),[u,f]=I.useState(0),d=!!(l&&u);return Ce(r.scrollbarX,()=>{let n=r.scrollbarX?.offsetHeight||0;r.onCornerHeightChange(n),f(n)}),Ce(r.scrollbarY,()=>{let n=r.scrollbarY?.offsetWidth||0;r.onCornerWidthChange(n),s(n)}),d?y(_.div,{...o,ref:t,style:{width:l,height:u,position:"absolute",right:r.dir==="ltr"?0:void 0,left:r.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function Je(e){return e?parseInt(e,10):0}function $t(e,t){let a=e/t;return isNaN(a)?0:a}function Ye(e){let t=$t(e.viewport,e.content),a=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,o=(e.scrollbar.size-a)*t;return Math.max(o,18)}function rl(e,t,a,o="ltr"){let r=Ye(a),l=r/2,s=t||l,u=r-s,f=a.scrollbar.paddingStart+s,d=a.scrollbar.size-a.scrollbar.paddingEnd-u,n=a.content-a.viewport,i=o==="ltr"?[0,n]:[n*-1,0];return Jt([f,d],i)(e)}function Gt(e,t,a="ltr"){let o=Ye(t),r=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,l=t.scrollbar.size-r,s=t.content-t.viewport,u=l-o,f=a==="ltr"?[0,s]:[s*-1,0],d=Nt(e,f);return Jt([0,s],[0,u])(d)}function Jt(e,t){return a=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let o=(t[1]-t[0])/(e[1]-e[0]);return t[0]+o*(a-e[0])}}function Yt(e,t){return e>0&&e<t}var ll=(e,t=()=>{})=>{let a={left:e.scrollLeft,top:e.scrollTop},o=0;return function r(){let l={left:e.scrollLeft,top:e.scrollTop},s=a.left!==l.left,u=a.top!==l.top;(s||u)&&t(),a=l,o=window.requestAnimationFrame(r)}(),()=>window.cancelAnimationFrame(o)};function Qe(e,t){let a=fe(e),o=I.useRef(0);return I.useEffect(()=>()=>window.clearTimeout(o.current),[]),I.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(a,t)},[a,t])}function Ce(e,t){let a=fe(t);Y(()=>{let o=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(o),o=window.requestAnimationFrame(a)});return r.observe(e),()=>{window.cancelAnimationFrame(o),r.unobserve(e)}}},[e,a])}var sl=wa,ul=ba,dl=Pa,fl=Ra,nl=va;import{jsx as cl}from"react/jsx-runtime";var il=Vt("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function Qt({className:e,variant:t="default",size:a="default",asChild:o=!1,...r}){let l=o?Fe.Root:"button";return cl(l,{"data-slot":"button","data-variant":t,"data-size":a,className:ee(il({variant:t,size:a,className:e})),...r})}import{jsx as ke,jsxs as ml}from"react/jsx-runtime";function eo({className:e,children:t,...a}){return ml(ne.Root,{"data-slot":"scroll-area",className:ee("relative",e),...a,children:[ke(ne.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:t}),ke(pl,{}),ke(ne.Corner,{})]})}function pl({className:e,orientation:t="vertical",...a}){return ke(ne.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:t,className:ee("flex touch-none p-px transition-colors select-none",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent",e),...a,children:ke(ne.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}import{jsx as W,jsxs as Ae}from"react/jsx-runtime";var ro=Ll(null),ea=()=>{let e=xl(ro);if(!e)throw new Error("useTree must be used within a TreeProvider");return e},ya=e=>e.type?e.type==="folder":Array.isArray(e.children),to=(e,t)=>[...new Set([...e??[],...t])],Il=new Intl.Collator("en",{numeric:!0,sensitivity:"base"}),hl=(e,t)=>{let a=ya(e),o=ya(t);return a!==o?a?-1:1:Il.compare(e.name,t.name)},Cl=e=>{if(e!=="none")return e==="default"?hl:e},lo=(e,t)=>{let a=Cl(t),o=e.map(r=>Array.isArray(r.children)?{...r,children:lo(r.children,t)}:r);return a?[...o].sort(a):o},so=(e,t)=>lo(e,t).map(a=>ya(a)?W(fo,{value:a.id,element:a.name,isSelectable:a.isSelectable,children:Array.isArray(a.children)?so(a.children,t):null},a.id):W(no,{value:a.id,isSelectable:a.isSelectable,children:W("span",{children:a.name})},a.id)),gl=ve(({className:e,elements:t,initialSelectedId:a,initialExpandedItems:o,children:r,indicator:l=!0,openIcon:s,closeIcon:u,sort:f="default",dir:d,...n},i)=>{let[c,p]=ao(a),[S,h]=ao(o),w=Re(v=>{p(v)},[]),k=Re(v=>{h(R=>R?.includes(v)?R.filter(D=>D!==v):[...R??[],v])},[]),C=Re((v,R)=>{if(!v||!R)return;let D=(m,P=[])=>{let E=m.isSelectable??!0,V=[...P,m.id];if(m.id===R){E?h(Z=>to(Z,V)):V.includes(m.id)&&(V.pop(),h(Z=>to(Z,V)));return}Array.isArray(m.children)&&m.children.length>0&&m.children.forEach(Z=>{D(Z,V)})};v.forEach(m=>{D(m)})},[]);oo(()=>{a&&C(t,a)},[a,t,C]);let A=d==="rtl"?"rtl":"ltr",M=r??(t?so(t,f):null);return W(ro.Provider,{value:{selectedId:c,expandedItems:S,handleExpand:k,selectItem:w,setExpandedItems:h,indicator:l,openIcon:s,closeIcon:u,direction:A},children:W("div",{className:ee("size-full",e),children:W(eo,{ref:i,className:"relative h-full px-2",dir:d,children:W(xa,{...n,type:"multiple",value:S,className:"flex flex-col gap-1",dir:d,children:M})})})})});gl.displayName="Tree";var uo=ve(({className:e,...t},a)=>{let{direction:o}=ea();return W("div",{dir:o,ref:a,className:ee("bg-muted absolute left-1.5 h-full w-px rounded-md py-3 duration-300 ease-in-out hover:bg-slate-300 rtl:right-1.5",e),...t})});uo.displayName="TreeIndicator";var fo=ve(({className:e,element:t,value:a,isSelectable:o=!0,isSelect:r,children:l,...s},u)=>{let{direction:f,handleExpand:d,expandedItems:n,indicator:i,selectedId:c,selectItem:p,openIcon:S,closeIcon:h}=ea();return Ae(nt,{ref:u,...s,value:a,className:"relative h-full overflow-hidden",children:[Ae(it,{className:ee("flex items-center gap-1 rounded-md text-sm",e,{"bg-muted rounded-md":(r??c===a)&&o,"cursor-pointer":o,"cursor-not-allowed opacity-50":!o}),disabled:!o,onClick:()=>{p(a),d(a)},children:[n?.includes(a)?S??W(we,{className:"size-4"}):h??W(be,{className:"size-4"}),W("span",{children:t})]}),Ae(ct,{className:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down relative h-full overflow-hidden text-sm",children:[t&&i&&W(uo,{"aria-hidden":"true"}),W(xa,{dir:f,type:"multiple",className:"ml-5 flex flex-col gap-1 py-1 rtl:mr-5",value:n,children:l})]})]})});fo.displayName="Folder";var no=ve(({value:e,className:t,handleSelect:a,onClick:o,isSelectable:r=!0,isSelect:l,fileIcon:s,children:u,...f},d)=>{let{direction:n,selectedId:i,selectItem:c}=ea();return Ae("button",{ref:d,type:"button",disabled:!r,className:ee("flex w-fit items-center gap-1 rounded-md pr-1 text-sm duration-200 ease-in-out rtl:pr-0 rtl:pl-1",{"bg-muted":(l??i===e)&&r},r?"cursor-pointer":"cursor-not-allowed opacity-50",n==="rtl"?"rtl":"ltr",t),onClick:S=>{c(e),a?.(e),o?.(S)},...f,children:[s??W(Se,{className:"size-4"}),u]})});no.displayName="File";var Sl=ve(({className:e,elements:t,expandAll:a=!1,children:o,...r},l)=>{let{expandedItems:s,setExpandedItems:u}=ea(),f=Re(n=>{let i=[],c=p=>{if((p.isSelectable??!0)&&p.children&&p.children.length>0){i.push(p.id);for(let h of p.children)c(h)}};for(let p of n)c(p);return[...new Set(i)]},[]),d=Re(()=>{u?.([])},[u]);return oo(()=>{a&&u?.(f(t))},[a,t,f,u]),Ae(Qt,{variant:"ghost",className:ee("absolute right-2 bottom-1 h-8 w-fit p-1",e),onClick:s&&s.length>0?d:()=>u?.(f(t)),ref:l,...r,children:[o,W("span",{className:"sr-only",children:"Toggle"})]})});Sl.displayName="CollapseButton";export{Sl as CollapseButton,no as File,fo as Folder,gl as Tree};
2
+ /*! Bundled license information:
3
+
4
+ lucide-react/dist/esm/shared/src/utils.js:
5
+ (**
6
+ * @license lucide-react v0.456.0 - ISC
7
+ *
8
+ * This source code is licensed under the ISC license.
9
+ * See the LICENSE file in the root directory of this source tree.
10
+ *)
11
+
12
+ lucide-react/dist/esm/defaultAttributes.js:
13
+ (**
14
+ * @license lucide-react v0.456.0 - ISC
15
+ *
16
+ * This source code is licensed under the ISC license.
17
+ * See the LICENSE file in the root directory of this source tree.
18
+ *)
19
+
20
+ lucide-react/dist/esm/Icon.js:
21
+ (**
22
+ * @license lucide-react v0.456.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ *)
27
+
28
+ lucide-react/dist/esm/createLucideIcon.js:
29
+ (**
30
+ * @license lucide-react v0.456.0 - ISC
31
+ *
32
+ * This source code is licensed under the ISC license.
33
+ * See the LICENSE file in the root directory of this source tree.
34
+ *)
35
+
36
+ lucide-react/dist/esm/icons/file.js:
37
+ (**
38
+ * @license lucide-react v0.456.0 - ISC
39
+ *
40
+ * This source code is licensed under the ISC license.
41
+ * See the LICENSE file in the root directory of this source tree.
42
+ *)
43
+
44
+ lucide-react/dist/esm/icons/folder-open.js:
45
+ (**
46
+ * @license lucide-react v0.456.0 - ISC
47
+ *
48
+ * This source code is licensed under the ISC license.
49
+ * See the LICENSE file in the root directory of this source tree.
50
+ *)
51
+
52
+ lucide-react/dist/esm/icons/folder.js:
53
+ (**
54
+ * @license lucide-react v0.456.0 - ISC
55
+ *
56
+ * This source code is licensed under the ISC license.
57
+ * See the LICENSE file in the root directory of this source tree.
58
+ *)
59
+
60
+ lucide-react/dist/esm/lucide-react.js:
61
+ (**
62
+ * @license lucide-react v0.456.0 - ISC
63
+ *
64
+ * This source code is licensed under the ISC license.
65
+ * See the LICENSE file in the root directory of this source tree.
66
+ *)
67
+ */
b/5238d9e68a93d529d853d579f8c538d26c0a3126344f79b5374f2aebcd005a56 ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import scrollbar from './object.js';
2
+ import { addPrefix } from '../../functions/addPrefix.js';
3
+
4
+ export default ({ addBase, prefix = '' }) => {
5
+ const prefixedscrollbar = addPrefix(scrollbar, prefix);
6
+ addBase({ ...prefixedscrollbar });
7
+ };
b/524501317c8dd4486d4fccfa13d0d72f8c4d67221e5d64e0634b07968d4e976c ADDED
The diff for this file is too large to render. See raw diff
 
b/5247fc1f9e640d38b26715d8103ac4980a3ae8dd45fce73f6c3049d67df151f4 ADDED
@@ -0,0 +1 @@
 
 
1
+ function he(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(r=he(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function xe(){for(var e,t,r=0,o="",i=arguments.length;r<i;r++)(e=arguments[r])&&(t=he(e))&&(o&&(o+=" "),o+=t);return o}var Be=(e,t)=>{let r=new Array(e.length+t.length);for(let o=0;o<e.length;o++)r[o]=e[o];for(let o=0;o<t.length;o++)r[e.length+o]=t[o];return r},$e=(e,t)=>({classGroupId:e,validator:t}),Se=(e=new Map,t=null,r)=>({nextPart:e,validators:t,classGroupId:r}),H="-",ke=[],Ue="arbitrary..",De=e=>{let t=qe(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:l=>{if(l.startsWith("[")&&l.endsWith("]"))return Ye(l);let u=l.split(H),b=u[0]===""&&u.length>1?1:0;return Ae(u,b,t)},getConflictingClassGroupIds:(l,u)=>{if(u){let b=o[l],m=r[l];return b?m?Be(m,b):b:m||ke}return r[l]||ke}}},Ae=(e,t,r)=>{if(e.length-t===0)return r.classGroupId;let i=e[t],d=r.nextPart.get(i);if(d){let m=Ae(e,t+1,d);if(m)return m}let l=r.validators;if(l===null)return;let u=t===0?e.join(H):e.slice(t).join(H),b=l.length;for(let m=0;m<b;m++){let h=l[m];if(h.validator(u))return h.classGroupId}},Ye=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let t=e.slice(1,-1),r=t.indexOf(":"),o=t.slice(0,r);return o?Ue+o:void 0})(),qe=e=>{let{theme:t,classGroups:r}=e;return Xe(r,t)},Xe=(e,t)=>{let r=Se();for(let o in e){let i=e[o];ae(i,r,o,t)}return r},ae=(e,t,r,o)=>{let i=e.length;for(let d=0;d<i;d++){let l=e[d];Je(l,t,r,o)}},Je=(e,t,r,o)=>{if(typeof e=="string"){Qe(e,t,r);return}if(typeof e=="function"){He(e,t,r,o);return}Ke(e,t,r,o)},Qe=(e,t,r)=>{let o=e===""?t:Ge(t,e);o.classGroupId=r},He=(e,t,r,o)=>{if(Ze(e)){ae(e(o),t,r,o);return}t.validators===null&&(t.validators=[]),t.validators.push($e(r,e))},Ke=(e,t,r,o)=>{let i=Object.entries(e),d=i.length;for(let l=0;l<d;l++){let[u,b]=i[l];ae(b,Ge(t,u),r,o)}},Ge=(e,t)=>{let r=e,o=t.split(H),i=o.length;for(let d=0;d<i;d++){let l=o[d],u=r.nextPart.get(l);u||(u=Se(),r.nextPart.set(l,u)),r=u}return r},Ze=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,eo=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=Object.create(null),o=Object.create(null),i=(d,l)=>{r[d]=l,t++,t>e&&(t=0,o=r,r=Object.create(null))};return{get(d){let l=r[d];if(l!==void 0)return l;if((l=o[d])!==void 0)return i(d,l),l},set(d,l){d in r?r[d]=l:i(d,l)}}},ne="!",we=":",oo=[],ye=(e,t,r,o,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:r,maybePostfixModifierPosition:o,isExternal:i}),ro=e=>{let{prefix:t,experimentalParseClassName:r}=e,o=i=>{let d=[],l=0,u=0,b=0,m,h=i.length;for(let y=0;y<h;y++){let C=i[y];if(l===0&&u===0){if(C===we){d.push(i.slice(b,y)),b=y+1;continue}if(C==="/"){m=y;continue}}C==="["?l++:C==="]"?l--:C==="("?u++:C===")"&&u--}let x=d.length===0?i:i.slice(b),T=x,A=!1;x.endsWith(ne)?(T=x.slice(0,-1),A=!0):x.startsWith(ne)&&(T=x.slice(1),A=!0);let F=m&&m>b?m-b:void 0;return ye(d,A,T,F)};if(t){let i=t+we,d=o;o=l=>l.startsWith(i)?d(l.slice(i.length)):ye(oo,!1,l,void 0,!0)}if(r){let i=o;o=d=>r({className:d,parseClassName:i})}return o},to=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((r,o)=>{t.set(r,1e6+o)}),r=>{let o=[],i=[];for(let d=0;d<r.length;d++){let l=r[d],u=l[0]==="[",b=t.has(l);u||b?(i.length>0&&(i.sort(),o.push(...i),i=[]),o.push(l)):i.push(l)}return i.length>0&&(i.sort(),o.push(...i)),o}},so=e=>({cache:eo(e.cacheSize),parseClassName:ro(e),sortModifiers:to(e),postfixLookupClassGroupIds:no(e),...De(e)}),no=e=>{let t=Object.create(null),r=e.postfixLookupClassGroups;if(r)for(let o=0;o<r.length;o++)t[r[o]]=!0;return t},ao=/\s+/,io=(e,t)=>{let{parseClassName:r,getClassGroupId:o,getConflictingClassGroupIds:i,sortModifiers:d,postfixLookupClassGroupIds:l}=t,u=[],b=e.trim().split(ao),m="";for(let h=b.length-1;h>=0;h-=1){let x=b[h],{isExternal:T,modifiers:A,hasImportantModifier:F,baseClassName:y,maybePostfixModifierPosition:C}=r(x);if(T){m=x+(m.length>0?" "+m:m);continue}let L=!!C,v;if(L){let M=y.substring(0,C);v=o(M);let a=v&&l[v]?o(y):void 0;a&&a!==v&&(v=a,L=!1)}else v=o(y);if(!v){if(!L){m=x+(m.length>0?" "+m:m);continue}if(v=o(y),!v){m=x+(m.length>0?" "+m:m);continue}L=!1}let B=A.length===0?"":A.length===1?A[0]:d(A).join(":"),O=F?B+ne:B,E=O+v;if(u.indexOf(E)>-1)continue;u.push(E);let _=i(v,L);for(let M=0;M<_.length;++M){let a=_[M];u.push(O+a)}m=x+(m.length>0?" "+m:m)}return m},lo=(...e)=>{let t=0,r,o,i="";for(;t<e.length;)(r=e[t++])&&(o=Me(r))&&(i&&(i+=" "),i+=o);return i},Me=e=>{if(typeof e=="string")return e;let t,r="";for(let o=0;o<e.length;o++)e[o]&&(t=Me(e[o]))&&(r&&(r+=" "),r+=t);return r},co=(e,...t)=>{let r,o,i,d,l=b=>{let m=t.reduce((h,x)=>x(h),e());return r=so(m),o=r.cache.get,i=r.cache.set,d=u,u(b)},u=b=>{let m=o(b);if(m)return m;let h=io(b,r);return i(b,h),h};return d=l,(...b)=>d(lo(...b))},mo=[],f=e=>{let t=r=>r[e]||mo;return t.isThemeGetter=!0,t},Pe=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Ie=/^\((?:(\w[\w-]*):)?(.+)\)$/i,po=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,uo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,bo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,fo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,go=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ho=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,I=e=>po.test(e),p=e=>!!e&&!Number.isNaN(Number(e)),G=e=>!!e&&Number.isInteger(Number(e)),se=e=>e.endsWith("%")&&p(e.slice(0,-1)),P=e=>uo.test(e),Re=()=>!0,xo=e=>bo.test(e)&&!fo.test(e),ie=()=>!1,ko=e=>go.test(e),wo=e=>ho.test(e),yo=e=>!s(e)&&!n(e),vo=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),zo=e=>R(e,Ne,ie),s=e=>Pe.test(e),V=e=>R(e,Ve,xo),ve=e=>R(e,Ro,p),Co=e=>R(e,Oe,Re),So=e=>R(e,We,ie),ze=e=>R(e,Te,ie),Ao=e=>R(e,Le,wo),J=e=>R(e,Ee,ko),n=e=>Ie.test(e),$=e=>W(e,Ve),Go=e=>W(e,We),Ce=e=>W(e,Te),Mo=e=>W(e,Ne),Po=e=>W(e,Le),Q=e=>W(e,Ee,!0),Io=e=>W(e,Oe,!0),R=(e,t,r)=>{let o=Pe.exec(e);return o?o[1]?t(o[1]):r(o[2]):!1},W=(e,t,r=!1)=>{let o=Ie.exec(e);return o?o[1]?t(o[1]):r:!1},Te=e=>e==="position"||e==="percentage",Le=e=>e==="image"||e==="url",Ne=e=>e==="length"||e==="size"||e==="bg-size",Ve=e=>e==="length",Ro=e=>e==="number",We=e=>e==="family-name",Oe=e=>e==="number"||e==="weight",Ee=e=>e==="shadow";var To=()=>{let e=f("color"),t=f("font"),r=f("text"),o=f("font-weight"),i=f("tracking"),d=f("leading"),l=f("breakpoint"),u=f("container"),b=f("spacing"),m=f("radius"),h=f("shadow"),x=f("inset-shadow"),T=f("text-shadow"),A=f("drop-shadow"),F=f("blur"),y=f("perspective"),C=f("aspect"),L=f("ease"),v=f("animate"),B=()=>["auto","avoid","all","avoid-page","page","left","right","column"],O=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...O(),n,s],_=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],a=()=>[n,s,b],z=()=>[I,"full","auto",...a()],ce=()=>[G,"none","subgrid",n,s],de=()=>["auto",{span:["full",G,n,s]},G,n,s],U=()=>[G,"auto",n,s],me=()=>["auto","min","max","fr",n,s],Z=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],j=()=>["start","end","center","stretch","center-safe","end-safe"],S=()=>["auto",...a()],N=()=>[I,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...a()],ee=()=>[I,"screen","full","dvw","lvw","svw","min","max","fit",...a()],oe=()=>[I,"screen","full","lh","dvh","lvh","svh","min","max","fit",...a()],c=()=>[e,n,s],pe=()=>[...O(),Ce,ze,{position:[n,s]}],ue=()=>["no-repeat",{repeat:["","x","y","space","round"]}],be=()=>["auto","cover","contain",Mo,zo,{size:[n,s]}],re=()=>[se,$,V],k=()=>["","none","full",m,n,s],w=()=>["",p,$,V],D=()=>["solid","dashed","dotted","double"],fe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],g=()=>[p,se,Ce,ze],ge=()=>["","none",F,n,s],Y=()=>["none",p,n,s],q=()=>["none",p,n,s],te=()=>[p,n,s],X=()=>[I,"full",...a()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[P],breakpoint:[P],color:[Re],container:[P],"drop-shadow":[P],ease:["in","out","in-out"],font:[yo],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[P],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[P],shadow:[P],spacing:["px",p],text:[P],"text-shadow":[P],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",I,s,n,C]}],container:["container"],"container-type":[{"@container":["","normal","size",n,s]}],"container-named":[vo],columns:[{columns:[p,s,n,u]}],"break-after":[{"break-after":B()}],"break-before":[{"break-before":B()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:E()}],overflow:[{overflow:_()}],"overflow-x":[{"overflow-x":_()}],"overflow-y":[{"overflow-y":_()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:z()}],"inset-x":[{"inset-x":z()}],"inset-y":[{"inset-y":z()}],start:[{"inset-s":z(),start:z()}],end:[{"inset-e":z(),end:z()}],"inset-bs":[{"inset-bs":z()}],"inset-be":[{"inset-be":z()}],top:[{top:z()}],right:[{right:z()}],bottom:[{bottom:z()}],left:[{left:z()}],visibility:["visible","invisible","collapse"],z:[{z:[G,"auto",n,s]}],basis:[{basis:[I,"full","auto",u,...a()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[p,I,"auto","initial","none",s]}],grow:[{grow:["",p,n,s]}],shrink:[{shrink:["",p,n,s]}],order:[{order:[G,"first","last","none",n,s]}],"grid-cols":[{"grid-cols":ce()}],"col-start-end":[{col:de()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":ce()}],"row-start-end":[{row:de()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":me()}],"auto-rows":[{"auto-rows":me()}],gap:[{gap:a()}],"gap-x":[{"gap-x":a()}],"gap-y":[{"gap-y":a()}],"justify-content":[{justify:[...Z(),"normal"]}],"justify-items":[{"justify-items":[...j(),"normal"]}],"justify-self":[{"justify-self":["auto",...j()]}],"align-content":[{content:["normal",...Z()]}],"align-items":[{items:[...j(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...j(),{baseline:["","last"]}]}],"place-content":[{"place-content":Z()}],"place-items":[{"place-items":[...j(),"baseline"]}],"place-self":[{"place-self":["auto",...j()]}],p:[{p:a()}],px:[{px:a()}],py:[{py:a()}],ps:[{ps:a()}],pe:[{pe:a()}],pbs:[{pbs:a()}],pbe:[{pbe:a()}],pt:[{pt:a()}],pr:[{pr:a()}],pb:[{pb:a()}],pl:[{pl:a()}],m:[{m:S()}],mx:[{mx:S()}],my:[{my:S()}],ms:[{ms:S()}],me:[{me:S()}],mbs:[{mbs:S()}],mbe:[{mbe:S()}],mt:[{mt:S()}],mr:[{mr:S()}],mb:[{mb:S()}],ml:[{ml:S()}],"space-x":[{"space-x":a()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":a()}],"space-y-reverse":["space-y-reverse"],size:[{size:N()}],"inline-size":[{inline:["auto",...ee()]}],"min-inline-size":[{"min-inline":["auto",...ee()]}],"max-inline-size":[{"max-inline":["none",...ee()]}],"block-size":[{block:["auto",...oe()]}],"min-block-size":[{"min-block":["auto",...oe()]}],"max-block-size":[{"max-block":["none",...oe()]}],w:[{w:[u,"screen",...N()]}],"min-w":[{"min-w":[u,"screen","none",...N()]}],"max-w":[{"max-w":[u,"screen","none","prose",{screen:[l]},...N()]}],h:[{h:["screen","lh",...N()]}],"min-h":[{"min-h":["screen","lh","none",...N()]}],"max-h":[{"max-h":["screen","lh",...N()]}],"font-size":[{text:["base",r,$,V]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,Io,Co]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",se,s]}],"font-family":[{font:[Go,So,t]}],"font-features":[{"font-features":[s]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[i,n,s]}],"line-clamp":[{"line-clamp":[p,"none",n,ve]}],leading:[{leading:[d,...a()]}],"list-image":[{"list-image":["none",n,s]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",n,s]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:c()}],"text-color":[{text:c()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...D(),"wavy"]}],"text-decoration-thickness":[{decoration:[p,"from-font","auto",n,V]}],"text-decoration-color":[{decoration:c()}],"underline-offset":[{"underline-offset":[p,"auto",n,s]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:a()}],"tab-size":[{tab:[G,n,s]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",n,s]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",n,s]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:pe()}],"bg-repeat":[{bg:ue()}],"bg-size":[{bg:be()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},G,n,s],radial:["",n,s],conic:[G,n,s]},Po,Ao]}],"bg-color":[{bg:c()}],"gradient-from-pos":[{from:re()}],"gradient-via-pos":[{via:re()}],"gradient-to-pos":[{to:re()}],"gradient-from":[{from:c()}],"gradient-via":[{via:c()}],"gradient-to":[{to:c()}],rounded:[{rounded:k()}],"rounded-s":[{"rounded-s":k()}],"rounded-e":[{"rounded-e":k()}],"rounded-t":[{"rounded-t":k()}],"rounded-r":[{"rounded-r":k()}],"rounded-b":[{"rounded-b":k()}],"rounded-l":[{"rounded-l":k()}],"rounded-ss":[{"rounded-ss":k()}],"rounded-se":[{"rounded-se":k()}],"rounded-ee":[{"rounded-ee":k()}],"rounded-es":[{"rounded-es":k()}],"rounded-tl":[{"rounded-tl":k()}],"rounded-tr":[{"rounded-tr":k()}],"rounded-br":[{"rounded-br":k()}],"rounded-bl":[{"rounded-bl":k()}],"border-w":[{border:w()}],"border-w-x":[{"border-x":w()}],"border-w-y":[{"border-y":w()}],"border-w-s":[{"border-s":w()}],"border-w-e":[{"border-e":w()}],"border-w-bs":[{"border-bs":w()}],"border-w-be":[{"border-be":w()}],"border-w-t":[{"border-t":w()}],"border-w-r":[{"border-r":w()}],"border-w-b":[{"border-b":w()}],"border-w-l":[{"border-l":w()}],"divide-x":[{"divide-x":w()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":w()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...D(),"hidden","none"]}],"divide-style":[{divide:[...D(),"hidden","none"]}],"border-color":[{border:c()}],"border-color-x":[{"border-x":c()}],"border-color-y":[{"border-y":c()}],"border-color-s":[{"border-s":c()}],"border-color-e":[{"border-e":c()}],"border-color-bs":[{"border-bs":c()}],"border-color-be":[{"border-be":c()}],"border-color-t":[{"border-t":c()}],"border-color-r":[{"border-r":c()}],"border-color-b":[{"border-b":c()}],"border-color-l":[{"border-l":c()}],"divide-color":[{divide:c()}],"outline-style":[{outline:[...D(),"none","hidden"]}],"outline-offset":[{"outline-offset":[p,n,s]}],"outline-w":[{outline:["",p,$,V]}],"outline-color":[{outline:c()}],shadow:[{shadow:["","none",h,Q,J]}],"shadow-color":[{shadow:c()}],"inset-shadow":[{"inset-shadow":["none",x,Q,J]}],"inset-shadow-color":[{"inset-shadow":c()}],"ring-w":[{ring:w()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:c()}],"ring-offset-w":[{"ring-offset":[p,V]}],"ring-offset-color":[{"ring-offset":c()}],"inset-ring-w":[{"inset-ring":w()}],"inset-ring-color":[{"inset-ring":c()}],"text-shadow":[{"text-shadow":["none",T,Q,J]}],"text-shadow-color":[{"text-shadow":c()}],opacity:[{opacity:[p,n,s]}],"mix-blend":[{"mix-blend":[...fe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":fe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[p]}],"mask-image-linear-from-pos":[{"mask-linear-from":g()}],"mask-image-linear-to-pos":[{"mask-linear-to":g()}],"mask-image-linear-from-color":[{"mask-linear-from":c()}],"mask-image-linear-to-color":[{"mask-linear-to":c()}],"mask-image-t-from-pos":[{"mask-t-from":g()}],"mask-image-t-to-pos":[{"mask-t-to":g()}],"mask-image-t-from-color":[{"mask-t-from":c()}],"mask-image-t-to-color":[{"mask-t-to":c()}],"mask-image-r-from-pos":[{"mask-r-from":g()}],"mask-image-r-to-pos":[{"mask-r-to":g()}],"mask-image-r-from-color":[{"mask-r-from":c()}],"mask-image-r-to-color":[{"mask-r-to":c()}],"mask-image-b-from-pos":[{"mask-b-from":g()}],"mask-image-b-to-pos":[{"mask-b-to":g()}],"mask-image-b-from-color":[{"mask-b-from":c()}],"mask-image-b-to-color":[{"mask-b-to":c()}],"mask-image-l-from-pos":[{"mask-l-from":g()}],"mask-image-l-to-pos":[{"mask-l-to":g()}],"mask-image-l-from-color":[{"mask-l-from":c()}],"mask-image-l-to-color":[{"mask-l-to":c()}],"mask-image-x-from-pos":[{"mask-x-from":g()}],"mask-image-x-to-pos":[{"mask-x-to":g()}],"mask-image-x-from-color":[{"mask-x-from":c()}],"mask-image-x-to-color":[{"mask-x-to":c()}],"mask-image-y-from-pos":[{"mask-y-from":g()}],"mask-image-y-to-pos":[{"mask-y-to":g()}],"mask-image-y-from-color":[{"mask-y-from":c()}],"mask-image-y-to-color":[{"mask-y-to":c()}],"mask-image-radial":[{"mask-radial":[n,s]}],"mask-image-radial-from-pos":[{"mask-radial-from":g()}],"mask-image-radial-to-pos":[{"mask-radial-to":g()}],"mask-image-radial-from-color":[{"mask-radial-from":c()}],"mask-image-radial-to-color":[{"mask-radial-to":c()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":O()}],"mask-image-conic-pos":[{"mask-conic":[p]}],"mask-image-conic-from-pos":[{"mask-conic-from":g()}],"mask-image-conic-to-pos":[{"mask-conic-to":g()}],"mask-image-conic-from-color":[{"mask-conic-from":c()}],"mask-image-conic-to-color":[{"mask-conic-to":c()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:pe()}],"mask-repeat":[{mask:ue()}],"mask-size":[{mask:be()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",n,s]}],filter:[{filter:["","none",n,s]}],blur:[{blur:ge()}],brightness:[{brightness:[p,n,s]}],contrast:[{contrast:[p,n,s]}],"drop-shadow":[{"drop-shadow":["","none",A,Q,J]}],"drop-shadow-color":[{"drop-shadow":c()}],grayscale:[{grayscale:["",p,n,s]}],"hue-rotate":[{"hue-rotate":[p,n,s]}],invert:[{invert:["",p,n,s]}],saturate:[{saturate:[p,n,s]}],sepia:[{sepia:["",p,n,s]}],"backdrop-filter":[{"backdrop-filter":["","none",n,s]}],"backdrop-blur":[{"backdrop-blur":ge()}],"backdrop-brightness":[{"backdrop-brightness":[p,n,s]}],"backdrop-contrast":[{"backdrop-contrast":[p,n,s]}],"backdrop-grayscale":[{"backdrop-grayscale":["",p,n,s]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[p,n,s]}],"backdrop-invert":[{"backdrop-invert":["",p,n,s]}],"backdrop-opacity":[{"backdrop-opacity":[p,n,s]}],"backdrop-saturate":[{"backdrop-saturate":[p,n,s]}],"backdrop-sepia":[{"backdrop-sepia":["",p,n,s]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":a()}],"border-spacing-x":[{"border-spacing-x":a()}],"border-spacing-y":[{"border-spacing-y":a()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",n,s]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[p,"initial",n,s]}],ease:[{ease:["linear","initial",L,n,s]}],delay:[{delay:[p,n,s]}],animate:[{animate:["none",v,n,s]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,n,s]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:Y()}],"rotate-x":[{"rotate-x":Y()}],"rotate-y":[{"rotate-y":Y()}],"rotate-z":[{"rotate-z":Y()}],scale:[{scale:q()}],"scale-x":[{"scale-x":q()}],"scale-y":[{"scale-y":q()}],"scale-z":[{"scale-z":q()}],"scale-3d":["scale-3d"],skew:[{skew:te()}],"skew-x":[{"skew-x":te()}],"skew-y":[{"skew-y":te()}],transform:[{transform:[n,s,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:X()}],"translate-x":[{"translate-x":X()}],"translate-y":[{"translate-y":X()}],"translate-z":[{"translate-z":X()}],"translate-none":["translate-none"],zoom:[{zoom:[G,n,s]}],accent:[{accent:c()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:c()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",n,s]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":c()}],"scrollbar-track-color":[{"scrollbar-track":c()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":a()}],"scroll-mx":[{"scroll-mx":a()}],"scroll-my":[{"scroll-my":a()}],"scroll-ms":[{"scroll-ms":a()}],"scroll-me":[{"scroll-me":a()}],"scroll-mbs":[{"scroll-mbs":a()}],"scroll-mbe":[{"scroll-mbe":a()}],"scroll-mt":[{"scroll-mt":a()}],"scroll-mr":[{"scroll-mr":a()}],"scroll-mb":[{"scroll-mb":a()}],"scroll-ml":[{"scroll-ml":a()}],"scroll-p":[{"scroll-p":a()}],"scroll-px":[{"scroll-px":a()}],"scroll-py":[{"scroll-py":a()}],"scroll-ps":[{"scroll-ps":a()}],"scroll-pe":[{"scroll-pe":a()}],"scroll-pbs":[{"scroll-pbs":a()}],"scroll-pbe":[{"scroll-pbe":a()}],"scroll-pt":[{"scroll-pt":a()}],"scroll-pr":[{"scroll-pr":a()}],"scroll-pb":[{"scroll-pb":a()}],"scroll-pl":[{"scroll-pl":a()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",n,s]}],fill:[{fill:["none",...c()]}],"stroke-w":[{stroke:[p,$,V,ve]}],stroke:[{stroke:["none",...c()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var _e=co(To);function je(...e){return _e(xe(e))}import{jsx as Lo}from"react/jsx-runtime";function K({className:e,...t}){return Lo("div",{"data-slot":"skeleton",className:je("animate-pulse rounded-md bg-accent",e),...t})}import{jsx as le,jsxs as Fe}from"react/jsx-runtime";function No(){return Fe("div",{className:"flex flex-col space-y-3",children:[le(K,{className:"h-[125px] w-[250px] rounded-xl"}),Fe("div",{className:"space-y-2",children:[le(K,{className:"h-4 w-[250px]"}),le(K,{className:"h-4 w-[200px]"})]})]})}export{No as default};
b/524bef23a0e591c09d5cf635fea5d4f6f97bba0ae1bfa764245f17059e96a193 ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Button } from "@/registry/new-york-v4/ui/button"
2
+ import { Textarea } from "@/registry/new-york-v4/ui/textarea"
3
+
4
+ export default function TextareaWithButton() {
5
+ return (
6
+ <div className="grid w-full gap-2">
7
+ <Textarea placeholder="Type your message here." />
8
+ <Button>Send message</Button>
9
+ </div>
10
+ )
11
+ }
b/52502b76a884030e15afe3f560d0527fbc11da53af70aa83ee62a60dd9b3baa3 ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html><meta charset=utf8><title>qwen35 kernels GPU parity</title>
2
+ <style>body{font:14px monospace;background:#111;color:#ddd;padding:20px}.ok{color:#5f5}.fail{color:#f55}</style>
3
+ <h3>qwen35 small kernels — WGSL vs CPU oracle</h3>
4
+ <pre id=out>running… (needs a WebGPU browser)</pre>
5
+ <script type=module>
6
+ import { gatedRMSNormGated } from "../gguf-forge-gated-delta.mjs";
7
+ import { rmsNorm1pGPU, gatedRMSNormGPU, conv1dStepGPU } from "./holo-qwen35-kernels.mjs";
8
+ const out = document.getElementById("out");
9
+ const log = (s, cls) => { out.innerHTML += `\n${cls ? `<span class=${cls}>${s}</span>` : s}`; };
10
+ const cos = (a, b) => { let d = 0, na = 0, nb = 0; for (let i = 0; i < a.length; i++) { d += a[i] * b[i]; na += a[i] * a[i]; nb += b[i] * b[i]; } return d / (Math.sqrt(na) * Math.sqrt(nb) + 1e-30); };
11
+ let seed = 11; const rnd = () => { seed = (seed * 1103515245 + 12345) & 0x7fffffff; return seed / 0x7fffffff * 2 - 1; };
12
+ const arr = (n, s = 1) => { const a = new Float32Array(n); for (let i = 0; i < n; i++) a[i] = rnd() * s; return a; };
13
+ try {
14
+ if (!navigator.gpu) throw new Error("no navigator.gpu");
15
+ const device = await (await navigator.gpu.requestAdapter()).requestDevice();
16
+ const checks = {};
17
+
18
+ // 1 · (1+w) RMSNorm (real d_model 4096)
19
+ { const N = 4096, eps = 1e-6, x = arr(N), w = arr(N).map(v => 0.1 * v);
20
+ let ss = 0; for (const v of x) ss += v * v; const sc = 1 / Math.sqrt(ss / N + eps);
21
+ const cpu = new Float32Array(N); for (let i = 0; i < N; i++) cpu[i] = x[i] * sc * (1 + w[i]);
22
+ const gpu = await rmsNorm1pGPU(device, x, w, eps);
23
+ checks.rmsnorm1p = cos(cpu, gpu); }
24
+
25
+ // 2 · gated RMSNorm (32 heads × 128)
26
+ { const H = 32, V = 128, eps = 1e-6, o = arr(H * V), w = arr(V).map(v => 1 + 0.1 * v), z = arr(H * V);
27
+ const cpu = Float32Array.from(o); gatedRMSNormGated(cpu, w, z, H, V, eps);
28
+ const gpu = await gatedRMSNormGPU(device, o, w, z, H, V, eps);
29
+ checks.gatedRMSNorm = cos(cpu, gpu); }
30
+
31
+ // 3 · conv1d step + SiLU (real conv_dim 8192, kernel 4)
32
+ { const C = 8192, K = 4, tail = arr((K - 1) * C, 0.3), cur = arr(C, 0.3), cw = arr(K * C, 0.3);
33
+ const cpu = new Float32Array(C);
34
+ for (let c = 0; c < C; c++) { let acc = 0; for (let j = 0; j < K - 1; j++) acc += cw[j * C + c] * tail[j * C + c]; acc += cw[(K - 1) * C + c] * cur[c]; cpu[c] = acc / (1 + Math.exp(-acc)); }
35
+ const gpu = await conv1dStepGPU(device, tail, cur, cw, C, K);
36
+ checks.conv1dStep = cos(cpu, gpu); }
37
+
38
+ let allOk = true;
39
+ for (const [k, v] of Object.entries(checks)) { const ok = v > 0.9999; allOk = allOk && ok; log(` ${ok ? "ok " : "FAIL"} ${k} cos=${v.toFixed(6)}`, ok ? "ok" : "fail"); }
40
+ log(allOk ? "\nALL KERNELS PARITY ✓" : "\nPARITY ✗", allOk ? "ok" : "fail");
41
+ } catch (e) { log("ERROR: " + e.message + "\n" + e.stack, "fail"); }
42
+ </script>
b/527375202f7b72eb54ef192638315e78c7054efe29dc903f3cfadd7231a0d86f ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "org.hologram.ui.example.empty-background",
3
+ "name": "empty-background",
4
+ "tier": "example",
5
+ "library": "shadcn",
6
+ "category": "Examples",
7
+ "upstream": "https://ui.shadcn.com/r/styles/new-york-v4/empty-background.json",
8
+ "did": "did:holo:sha256:8e1b085ca17b2d79d53dfa6d32f35b74ecd540ba00bf42c48a4346c1afc8e08b",
9
+ "import": "holo://sha256:72307d37f393b0cb9080877e8a127f0f5dba1b16eee4e8787efa46782a0293b5",
10
+ "integrity": "sha256-cjB9N/OTsMuQgId+ihJ/D126Gxbu5Oh4fvpGeCoCk7U=",
11
+ "kappa": "sha256:8e1b085ca17b2d79d53dfa6d32f35b74ecd540ba00bf42c48a4346c1afc8e08b",
12
+ "moduleKappa": "sha256:72307d37f393b0cb9080877e8a127f0f5dba1b16eee4e8787efa46782a0293b5",
13
+ "renderExport": "default",
14
+ "source": "registry/new-york-v4/examples/empty-background.tsx",
15
+ "module": "vendor/components/empty-background.js",
16
+ "exports": [
17
+ "default"
18
+ ],
19
+ "license": "MIT"
20
+ }
b/52ec93844587582a17d7dfe1ad77fe1d8b8e10d35c5e3fc1b4c54491cb01ce06 ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { BadgeCheckIcon, ChevronRightIcon } from "lucide-react"
2
+
3
+ import { Button } from "@/registry/new-york-v4/ui/button"
4
+ import {
5
+ Item,
6
+ ItemActions,
7
+ ItemContent,
8
+ ItemDescription,
9
+ ItemMedia,
10
+ ItemTitle,
11
+ } from "@/registry/new-york-v4/ui/item"
12
+
13
+ export default function ItemDemo() {
14
+ return (
15
+ <div className="flex w-full max-w-md flex-col gap-6">
16
+ <Item variant="outline">
17
+ <ItemContent>
18
+ <ItemTitle>Basic Item</ItemTitle>
19
+ <ItemDescription>
20
+ A simple item with title and description.
21
+ </ItemDescription>
22
+ </ItemContent>
23
+ <ItemActions>
24
+ <Button variant="outline" size="sm">
25
+ Action
26
+ </Button>
27
+ </ItemActions>
28
+ </Item>
29
+ <Item variant="outline" size="sm" asChild>
30
+ <a href="#">
31
+ <ItemMedia>
32
+ <BadgeCheckIcon className="size-5" />
33
+ </ItemMedia>
34
+ <ItemContent>
35
+ <ItemTitle>Your profile has been verified.</ItemTitle>
36
+ </ItemContent>
37
+ <ItemActions>
38
+ <ChevronRightIcon className="size-4" />
39
+ </ItemActions>
40
+ </a>
41
+ </Item>
42
+ </div>
43
+ )
44
+ }
b/52f669be209dfa1b25bc7a2e3402177f9b496770ef0e9dc6e8061504129d34ac ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Form, Field as FormischField, reset, useForm } from "@formisch/react"
5
+ import type { SubmitHandler } from "@formisch/react"
6
+ import { toast } from "sonner"
7
+ import * as v from "valibot"
8
+
9
+ import { Button } from "@/registry/new-york-v4/ui/button"
10
+ import {
11
+ Card,
12
+ CardContent,
13
+ CardDescription,
14
+ CardFooter,
15
+ CardHeader,
16
+ CardTitle,
17
+ } from "@/registry/new-york-v4/ui/card"
18
+ import {
19
+ Field,
20
+ FieldDescription,
21
+ FieldError,
22
+ FieldGroup,
23
+ FieldLabel,
24
+ } from "@/registry/new-york-v4/ui/field"
25
+ import { Input } from "@/registry/new-york-v4/ui/input"
26
+
27
+ const FormSchema = v.object({
28
+ username: v.pipe(
29
+ v.string(),
30
+ v.minLength(3, "Username must be at least 3 characters."),
31
+ v.maxLength(10, "Username must be at most 10 characters."),
32
+ v.regex(
33
+ /^[a-zA-Z0-9_]+$/,
34
+ "Username can only contain letters, numbers, and underscores."
35
+ )
36
+ ),
37
+ })
38
+
39
+ export default function FormFormischInput() {
40
+ const form = useForm({
41
+ schema: FormSchema,
42
+ initialInput: {
43
+ username: "",
44
+ },
45
+ })
46
+
47
+ const handleSubmit: SubmitHandler<typeof FormSchema> = (output) => {
48
+ toast("You submitted the following values:", {
49
+ description: (
50
+ <pre className="mt-2 w-[320px] overflow-x-auto rounded-md bg-code p-4 text-code-foreground">
51
+ <code>{JSON.stringify(output, null, 2)}</code>
52
+ </pre>
53
+ ),
54
+ position: "bottom-right",
55
+ classNames: {
56
+ content: "flex flex-col gap-2",
57
+ },
58
+ style: {
59
+ "--border-radius": "calc(var(--radius) + 4px)",
60
+ } as React.CSSProperties,
61
+ })
62
+ }
63
+
64
+ return (
65
+ <Card className="w-full sm:max-w-md">
66
+ <CardHeader>
67
+ <CardTitle>Profile Settings</CardTitle>
68
+ <CardDescription>
69
+ Update your profile information below.
70
+ </CardDescription>
71
+ </CardHeader>
72
+ <CardContent>
73
+ <Form of={form} id="form-formisch-input" onSubmit={handleSubmit}>
74
+ <FieldGroup>
75
+ <FormischField of={form} path={["username"]}>
76
+ {(field) => (
77
+ <Field data-invalid={field.errors !== null}>
78
+ <FieldLabel htmlFor="form-formisch-input-username">
79
+ Username
80
+ </FieldLabel>
81
+ <Input
82
+ {...field.props}
83
+ id="form-formisch-input-username"
84
+ value={field.input ?? ""}
85
+ aria-invalid={field.errors !== null}
86
+ placeholder="shadcn"
87
+ autoComplete="username"
88
+ />
89
+ <FieldDescription>
90
+ This is your public display name. Must be between 3 and 10
91
+ characters. Must only contain letters, numbers, and
92
+ underscores.
93
+ </FieldDescription>
94
+ {field.errors && (
95
+ <FieldError
96
+ errors={field.errors.map((message) => ({ message }))}
97
+ />
98
+ )}
99
+ </Field>
100
+ )}
101
+ </FormischField>
102
+ </FieldGroup>
103
+ </Form>
104
+ </CardContent>
105
+ <CardFooter>
106
+ <Field orientation="horizontal">
107
+ <Button type="button" variant="outline" onClick={() => reset(form)}>
108
+ Reset
109
+ </Button>
110
+ <Button type="submit" form="form-formisch-input">
111
+ Save
112
+ </Button>
113
+ </Field>
114
+ </CardFooter>
115
+ </Card>
116
+ )
117
+ }
b/530fb93805e1100d96fa73fc0797aa069182f71d6a62e875b86225dad311c160 ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "org.hologram.ui.chart.chart-radar-grid-circle",
3
+ "name": "chart-radar-grid-circle",
4
+ "tier": "chart",
5
+ "library": "shadcn",
6
+ "category": "Charts · Radar",
7
+ "upstream": "https://ui.shadcn.com/r/styles/new-york-v4/chart-radar-grid-circle.json",
8
+ "did": "did:holo:sha256:41bde9ca02b741e473638c16df15f1f4dccb48ea76dfd3d0d6bf4cd08c498865",
9
+ "import": "holo://sha256:04a19add9cad310c5c8966da93ea08a5167da7a1c796b024729159870c5cd438",
10
+ "integrity": "sha256-BKGa3ZytMQxciWbak+oIpRZ9p6HHlrAkcpFZhwxc1Dg=",
11
+ "kappa": "sha256:41bde9ca02b741e473638c16df15f1f4dccb48ea76dfd3d0d6bf4cd08c498865",
12
+ "moduleKappa": "sha256:04a19add9cad310c5c8966da93ea08a5167da7a1c796b024729159870c5cd438",
13
+ "renderExport": "ChartRadarGridCircle",
14
+ "source": "registry/new-york-v4/charts/chart-radar-grid-circle.tsx",
15
+ "module": "vendor/components/chart-radar-grid-circle.js",
16
+ "exports": [
17
+ "description",
18
+ "ChartRadarGridCircle"
19
+ ],
20
+ "license": "MIT"
21
+ }
b/538212a3e366eec61cce645c7d903a4f3846c3d670e82dcc2da803e0a45959d1 ADDED
@@ -0,0 +1,179 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Gemma3 end-to-end test. Build a tiny gemma3 with random F32 weights, forge ->
2
+ // synthesize -> run forward, and compare logits to an INDEPENDENT float64 reference
3
+ // that reproduces gemma3.cpp exactly: embedding ×√n_embd, QK-norm, per-layer RoPE
4
+ // base (SWA vs global), sliding-window attention mask, GeGLU FFN, and FOUR norms per
5
+ // layer (pre+post on attn and ffn), tied lm_head. Two layers with swaPat=2 exercise
6
+ // BOTH a sliding-window layer (layer 0) and a global layer (layer 1); a 4-token
7
+ // prompt with n_swa=2 exercises the sliding-window mask. Plus a structural check
8
+ // against the real gemma-3-4b header when present.
9
+
10
+ import assert from "node:assert";
11
+ import { existsSync, openSync, readSync, closeSync } from "node:fs";
12
+ import { forgeGguf } from "./gguf-forge.mjs";
13
+ import { synthesizeGraph } from "./gguf-forge-graph.mjs";
14
+ import { forward } from "./gguf-forge-exec.mjs";
15
+ import { GGML } from "./gguf-forge-dequant.mjs";
16
+ import { parseGgufHeader } from "../qvac-ingest.mjs";
17
+
18
+ let pass = 0, fail = 0;
19
+ const t = (name, fn) => { try { fn(); pass++; console.log(" ok " + name); } catch (e) { fail++; console.log("FAIL " + name + "\n " + e.message); } };
20
+
21
+ // ── tiny dims; HD≠D/NH (like Gemma's key_length), GQA, 2 layers, SWA period 2 ──
22
+ const D = 8, NH = 2, NHKV = 1, HD = 6, FF = 16, VOCAB = 5, NL = 2, EPS = 1e-6;
23
+ const FREQ = 1000000, FREQ_SWA = 10000, NSWA = 2, SWAPAT = 2;
24
+ const QD = NH * HD, KV = NHKV * HD, ESCALE = Math.sqrt(D), ASCALE = 1 / Math.sqrt(HD);
25
+ const isSwa = (il) => il % SWAPAT < SWAPAT - 1;
26
+
27
+ function prng(seed) { let s = seed >>> 0; return () => { s = (s * 1664525 + 1013904223) >>> 0; return (s / 4294967296) * 2 - 1; }; }
28
+ const r = prng(7);
29
+ const randF = (n, scale = 0.3) => { const a = new Float32Array(n); for (let i = 0; i < n; i++) a[i] = r() * scale; return a; };
30
+ const normW = (n) => randF(n, 1).map((x) => Math.abs(x) + 0.5);
31
+
32
+ const L = []; // per-layer weights
33
+ for (let il = 0; il < NL; il++) L.push({
34
+ attn_norm: normW(D), q_norm: normW(HD), k_norm: normW(HD), post_attn: normW(D), ffn_norm: normW(D), post_ffw: normW(D),
35
+ wq: randF(QD * D), wk: randF(KV * D), wv: randF(KV * D), wo: randF(D * QD),
36
+ wgate: randF(FF * D), wup: randF(FF * D), wdown: randF(D * FF),
37
+ });
38
+ const w = { tok_embd: randF(VOCAB * D), output_norm: normW(D) };
39
+
40
+ function buildGguf(meta, tensors) {
41
+ const ALIGN = 32; let off = 0;
42
+ const infos = tensors.map((t) => { const o = off; off = Math.ceil((o + t.bytes.length) / ALIGN) * ALIGN; return { ...t, offset: o }; });
43
+ let parts = [], len = 0; const push = (b) => { parts.push(b); len += b.length; };
44
+ const u32 = (v) => { const b = new Uint8Array(4); new DataView(b.buffer).setUint32(0, v >>> 0, true); push(b); };
45
+ const f32 = (v) => { const b = new Uint8Array(4); new DataView(b.buffer).setFloat32(0, v, true); push(b); };
46
+ const u64 = (v) => { const b = new Uint8Array(8); const dv = new DataView(b.buffer); dv.setUint32(0, v >>> 0, true); dv.setUint32(4, Math.floor(v / 4294967296), true); push(b); };
47
+ const str = (s) => { const e = new TextEncoder().encode(s); u64(e.length); push(e); };
48
+ push(new TextEncoder().encode("GGUF")); u32(3); u64(tensors.length); u64(Object.keys(meta).length);
49
+ for (const [k, val] of Object.entries(meta)) { str(k); if (typeof val === "string") { u32(8); str(val); } else if (Number.isInteger(val) && val >= 0 && val < 4294967296) { u32(4); u32(val); } else { u32(6); f32(val); } }
50
+ for (const ti of infos) { str(ti.name); u32(ti.dims.length); for (const d of ti.dims) u64(d); u32(ti.type); u64(ti.offset); }
51
+ if (len % ALIGN) push(new Uint8Array(ALIGN - (len % ALIGN)));
52
+ const dataStart = len;
53
+ for (const ti of infos) { while (len < dataStart + ti.offset) push(new Uint8Array(1)); push(ti.bytes); }
54
+ const out = new Uint8Array(len); let o = 0; for (const p of parts) { out.set(p, o); o += p.length; } return out;
55
+ }
56
+ const f32bytes = (arr) => new Uint8Array(arr.buffer.slice(arr.byteOffset, arr.byteOffset + arr.byteLength));
57
+
58
+ const meta = {
59
+ "general.architecture": "gemma3", "gemma3.block_count": NL, "gemma3.embedding_length": D,
60
+ "gemma3.attention.head_count": NH, "gemma3.attention.head_count_kv": NHKV, "gemma3.attention.key_length": HD,
61
+ "gemma3.feed_forward_length": FF, "gemma3.rope.freq_base": FREQ, "gemma3.rope.freq_base_swa": FREQ_SWA,
62
+ "gemma3.attention.sliding_window": NSWA, "gemma3.attention.sliding_window_pattern": SWAPAT,
63
+ "gemma3.attention.layer_norm_rms_epsilon": EPS,
64
+ };
65
+ const tensors = [["token_embd.weight", [D, VOCAB], w.tok_embd], ["output_norm.weight", [D], w.output_norm]];
66
+ for (let il = 0; il < NL; il++) { const p = `blk.${il}.`, x = L[il]; tensors.push(
67
+ [p + "attn_norm.weight", [D], x.attn_norm], [p + "attn_q.weight", [D, QD], x.wq], [p + "attn_k.weight", [D, KV], x.wk], [p + "attn_v.weight", [D, KV], x.wv],
68
+ [p + "attn_q_norm.weight", [HD], x.q_norm], [p + "attn_k_norm.weight", [HD], x.k_norm], [p + "attn_output.weight", [QD, D], x.wo],
69
+ [p + "post_attention_norm.weight", [D], x.post_attn], [p + "ffn_norm.weight", [D], x.ffn_norm],
70
+ [p + "ffn_gate.weight", [D, FF], x.wgate], [p + "ffn_up.weight", [D, FF], x.wup], [p + "ffn_down.weight", [FF, D], x.wdown],
71
+ [p + "post_ffw_norm.weight", [D], x.post_ffw]);
72
+ }
73
+ const ggufTensors = tensors.map(([name, dims, arr]) => ({ name, type: GGML.F32, dims, bytes: f32bytes(arr) }));
74
+
75
+ // ── independent float64 reference forward (reproduces gemma3.cpp) ──
76
+ function matvecRef(W, x, K, N) { const y = new Float64Array(N); for (let n = 0; n < N; n++) { let s = 0; for (let k = 0; k < K; k++) s += W[n * K + k] * x[k]; y[n] = s; } return y; }
77
+ function rmsRef(x, wt) { let s = 0; for (const v of x) s += v * v; const sc = 1 / Math.sqrt(s / x.length + EPS); return Array.from(x, (v, i) => v * sc * wt[i]); }
78
+ function normHeadsRef(vec, wt) { const out = Array.from(vec); for (let h = 0; h < vec.length / HD; h++) { const sl = vec.slice(h * HD, h * HD + HD), n = rmsRef(sl, wt); for (let d = 0; d < HD; d++) out[h * HD + d] = n[d]; } return out; }
79
+ const GA = 0.044715, GS = 0.7978845608028654;
80
+ const geluRef = (x) => 0.5 * x * (1 + Math.tanh(GS * (x + GA * x * x * x)));
81
+ function ropeRef(vec, pos, freqBase) { const half = HD / 2, nHeads = vec.length / HD, out = Float64Array.from(vec); for (let hh = 0; hh < nHeads; hh++) for (let ic = 0; ic < half; ic++) { const th = pos * Math.pow(freqBase, -2 * ic / HD); const c = Math.cos(th), sn = Math.sin(th); const o = hh * HD; const x0 = vec[o + ic], x1 = vec[o + ic + half]; out[o + ic] = x0 * c - x1 * sn; out[o + ic + half] = x0 * sn + x1 * c; } return out; }
82
+ const addV = (a, b) => a.map((x, i) => x + b[i]);
83
+
84
+ function referenceForward(tokens) {
85
+ const H = tokens.map((tk) => Array.from(w.tok_embd.slice(tk * D, tk * D + D), (v) => v * ESCALE));
86
+ const Kc = Array.from({ length: NL }, () => []), Vc = Array.from({ length: NL }, () => []);
87
+ for (let pos = 0; pos < tokens.length; pos++) {
88
+ let h = H[pos];
89
+ for (let il = 0; il < NL; il++) {
90
+ const x = L[il], fb = isSwa(il) ? FREQ_SWA : FREQ, swa = isSwa(il) ? NSWA : 0, lo = swa ? Math.max(0, pos - swa + 1) : 0;
91
+ const xn = rmsRef(h, x.attn_norm);
92
+ let q = Array.from(matvecRef(x.wq, xn, D, QD)), k = Array.from(matvecRef(x.wk, xn, D, KV)); const v = Array.from(matvecRef(x.wv, xn, D, KV));
93
+ q = normHeadsRef(q, x.q_norm); k = normHeadsRef(k, x.k_norm);
94
+ q = Array.from(ropeRef(q, pos, fb)); k = Array.from(ropeRef(k, pos, fb));
95
+ Kc[il].push(k); Vc[il].push(v);
96
+ const grp = NH / NHKV, ctx = new Array(QD).fill(0);
97
+ for (let hh = 0; hh < NH; hh++) {
98
+ const kvh = Math.floor(hh / grp), sc = [];
99
+ for (let tp = 0; tp <= pos; tp++) { if (tp < lo) { sc.push(-Infinity); continue; } let s = 0; for (let d = 0; d < HD; d++) s += q[hh * HD + d] * Kc[il][tp][kvh * HD + d]; sc.push(s * ASCALE); }
100
+ const mx = Math.max(...sc); let z = 0; const e = sc.map((s) => { const ex = Math.exp(s - mx); z += ex; return ex; });
101
+ for (let d = 0; d < HD; d++) { let acc = 0; for (let tp = 0; tp <= pos; tp++) acc += (e[tp] / z) * Vc[il][tp][kvh * HD + d]; ctx[hh * HD + d] = acc; }
102
+ }
103
+ const attnOut = Array.from(matvecRef(x.wo, ctx, QD, D));
104
+ const saOut = addV(rmsRef(attnOut, x.post_attn), h);
105
+ const xn2 = rmsRef(saOut, x.ffn_norm);
106
+ const g = matvecRef(x.wgate, xn2, D, FF), u = matvecRef(x.wup, xn2, D, FF);
107
+ const act = Array.from({ length: FF }, (_, i) => geluRef(g[i]) * u[i]);
108
+ const ffnOut = Array.from(matvecRef(x.wdown, act, FF, D));
109
+ h = addV(rmsRef(ffnOut, x.post_ffw), saOut);
110
+ H[pos] = h;
111
+ }
112
+ }
113
+ const fn = rmsRef(H[tokens.length - 1], w.output_norm);
114
+ return Array.from(matvecRef(w.tok_embd, fn, D, VOCAB)); // tied lm_head
115
+ }
116
+
117
+ const gguf = buildGguf(meta, ggufTensors);
118
+ const f = forgeGguf(gguf);
119
+ const graph = synthesizeGraph(f.plan);
120
+ const store = { get: (hex) => f.blocks.get(hex) };
121
+ const tokens = [3, 1, 4, 2]; // 4 tokens > n_swa=2 → exercises sliding-window mask
122
+
123
+ t("graph is family=gemma, tied, correct op count + all weights resolve", () => {
124
+ assert.strictEqual(graph.family, "gemma", graph.reason);
125
+ assert.strictEqual(graph.stats.n_layer, NL);
126
+ assert.strictEqual(graph.stats.tied, true);
127
+ assert.strictEqual(graph.stats.head_dim, HD);
128
+ assert.strictEqual(graph.stats.ops, 3 + 11 * NL);
129
+ assert.strictEqual(graph.stats.weightsUsed, tensors.length);
130
+ assert.ok(Math.abs(graph.stats.embdScale - ESCALE) < 1e-6 && Math.abs(graph.stats.attnScale - ASCALE) < 1e-6);
131
+ });
132
+
133
+ t("per-layer RoPE base: SWA layer 0 uses freq_base_swa, global layer 1 uses freq_base", () => {
134
+ const ropes = graph.ops.filter((o) => o.op === "rope");
135
+ assert.strictEqual(ropes[0].attrs.freq_base, FREQ_SWA); // layer 0 Q (SWA)
136
+ assert.strictEqual(ropes[2].attrs.freq_base, FREQ); // layer 1 Q (global)
137
+ const attns = graph.ops.filter((o) => o.op === "attn");
138
+ assert.strictEqual(attns[0].attrs.swa, NSWA); assert.strictEqual(attns[1].attrs.swa, 0);
139
+ });
140
+
141
+ t("executor logits match independent f64 reference (gemma3 forward)", () => {
142
+ const got = forward(f.plan, graph, store, tokens), ref = referenceForward(tokens);
143
+ assert.strictEqual(got.length, VOCAB);
144
+ for (let i = 0; i < VOCAB; i++) {
145
+ const rel = Math.abs(got[i] - ref[i]) / (Math.abs(ref[i]) + 1e-4);
146
+ assert.ok(rel < 5e-3, `logit ${i}: got ${got[i]} ref ${ref[i]} rel ${rel}`);
147
+ }
148
+ console.log(` logits: [${Array.from(got).map((x) => x.toFixed(4)).join(", ")}]`);
149
+ });
150
+
151
+ t("argmax (greedy token) matches reference", () => {
152
+ const am = (a) => a.indexOf(Math.max(...a));
153
+ assert.strictEqual(am(Array.from(forward(f.plan, graph, store, tokens))), am(referenceForward(tokens)));
154
+ });
155
+
156
+ t("executor is deterministic", () => {
157
+ const a = forward(f.plan, graph, store, tokens), b = forward(f.plan, graph, store, tokens);
158
+ for (let i = 0; i < VOCAB; i++) assert.strictEqual(a[i], b[i]);
159
+ });
160
+
161
+ // ── structural check against the REAL gemma-3-4b header (skipped if absent) ──
162
+ const REAL = "C:/Users/pavel/.lmstudio/models/lmstudio-community/gemma-3-4b-it-GGUF/gemma-3-4b-it-Q4_K_M.gguf";
163
+ t("real gemma-3-4b header: family=gemma, every tensor resolves, hparams correct", () => {
164
+ if (!existsSync(REAL)) { console.log(" (skipped — model not present)"); return; }
165
+ const fd = openSync(REAL, "r"); const buf = Buffer.alloc(96 * 1024 * 1024); readSync(fd, buf, 0, buf.length, 0); closeSync(fd);
166
+ const h = parseGgufHeader(new Uint8Array(buf));
167
+ const plan = { arch: h.meta["general.architecture"], meta: h.meta,
168
+ tensors: h.tensors.map((x) => ({ name: x.name, dims: x.dims, type: x.ggmlType, typeName: String(x.ggmlType), kappa: "sha256:" + "0".repeat(64) })) };
169
+ const g = synthesizeGraph(plan);
170
+ assert.strictEqual(g.family, "gemma", g.reason);
171
+ assert.strictEqual(g.stats.weightsUsed, h.tensors.length, "every tensor referenced by builder");
172
+ assert.strictEqual(g.stats.ops, 3 + 11 * g.stats.n_layer);
173
+ assert.strictEqual(g.stats.head_dim, 256); assert.strictEqual(g.stats.nSwa, 1024);
174
+ assert.ok(Math.abs(g.stats.attnScale - 1 / 16) < 1e-6);
175
+ console.log(` gemma-3-4b: ${g.stats.n_layer}L, head_dim ${g.stats.head_dim}, ${g.stats.weightsUsed}/${h.tensors.length} tensors, ${g.stats.ops} ops`);
176
+ });
177
+
178
+ console.log(`\n${pass} passed, ${fail} failed`);
179
+ process.exit(fail ? 1 : 0);
b/538eea94d0170957a83dbd5a3a57c660b82e885539b74f934e633c22b0b49df2 ADDED
Binary file (51.4 kB). View file
 
b/5399ad39ce209e2d33ddec80da4271ac5a9cf98a199ce4ed51be05e852a9164c ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client"
2
+
3
+ import { Bar, BarChart, XAxis } from "recharts"
4
+
5
+ import {
6
+ Card,
7
+ CardContent,
8
+ CardDescription,
9
+ CardHeader,
10
+ CardTitle,
11
+ } from "@/registry/new-york-v4/ui/card"
12
+ import {
13
+ ChartContainer,
14
+ ChartTooltip,
15
+ ChartTooltipContent,
16
+ type ChartConfig,
17
+ } from "@/registry/new-york-v4/ui/chart"
18
+
19
+ export const description = "A stacked bar chart with a legend"
20
+ export const iframeHeight = "600px"
21
+ export const containerClassName =
22
+ "[&>div]:w-full [&>div]:max-w-md flex items-center justify-center min-h-svh"
23
+
24
+ const chartData = [
25
+ { date: "2024-07-15", running: 450, swimming: 300 },
26
+ { date: "2024-07-16", running: 380, swimming: 420 },
27
+ { date: "2024-07-17", running: 520, swimming: 120 },
28
+ { date: "2024-07-18", running: 140, swimming: 550 },
29
+ { date: "2024-07-19", running: 600, swimming: 350 },
30
+ { date: "2024-07-20", running: 480, swimming: 400 },
31
+ ]
32
+
33
+ const chartConfig = {
34
+ running: {
35
+ label: "Running",
36
+ color: "var(--chart-1)",
37
+ },
38
+ swimming: {
39
+ label: "Swimming",
40
+ color: "var(--chart-2)",
41
+ },
42
+ } satisfies ChartConfig
43
+
44
+ export function ChartTooltipDefault() {
45
+ return (
46
+ <Card>
47
+ <CardHeader>
48
+ <CardTitle>Tooltip - Default</CardTitle>
49
+ <CardDescription>
50
+ Default tooltip with ChartTooltipContent.
51
+ </CardDescription>
52
+ </CardHeader>
53
+ <CardContent>
54
+ <ChartContainer config={chartConfig}>
55
+ <BarChart accessibilityLayer data={chartData}>
56
+ <XAxis
57
+ dataKey="date"
58
+ tickLine={false}
59
+ tickMargin={10}
60
+ axisLine={false}
61
+ tickFormatter={(value) => {
62
+ return new Date(value).toLocaleDateString("en-US", {
63
+ weekday: "short",
64
+ })
65
+ }}
66
+ />
67
+ <Bar
68
+ dataKey="running"
69
+ stackId="a"
70
+ fill="var(--color-running)"
71
+ radius={[0, 0, 4, 4]}
72
+ />
73
+ <Bar
74
+ dataKey="swimming"
75
+ stackId="a"
76
+ fill="var(--color-swimming)"
77
+ radius={[4, 4, 0, 0]}
78
+ />
79
+ <ChartTooltip
80
+ content={<ChartTooltipContent />}
81
+ cursor={false}
82
+ defaultIndex={1}
83
+ />
84
+ </BarChart>
85
+ </ChartContainer>
86
+ </CardContent>
87
+ </Card>
88
+ )
89
+ }
b/53b4184761901acdb37e8de56796199ca58ebc795841172e7427da3dc08c534c ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import{useState as Ea}from"react";import{forwardRef as Ye,createElement as _e}from"react";var we=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),_=(...e)=>e.filter((o,t,a)=>!!o&&o.trim()!==""&&a.indexOf(o)===t).join(" ").trim();import{forwardRef as je,createElement as be}from"react";var ke={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Pe=je(({color:e="currentColor",size:o=24,strokeWidth:t=2,absoluteStrokeWidth:a,className:d="",children:f,iconNode:r,...p},m)=>be("svg",{ref:m,...ke,width:o,height:o,stroke:e,strokeWidth:a?Number(t)*24/Number(o):t,className:_("lucide",d),...p},[...r.map(([c,I])=>be(c,I)),...Array.isArray(f)?f:[f]]));var $=(e,o)=>{let t=Ye(({className:a,...d},f)=>_e(Pe,{ref:f,iconNode:o,className:_(`lucide-${we(e)}`,a),...d}));return t.displayName=`${e}`,t};var N=$("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);var X=$("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimatePresence as Na,motion as ne}from"motion/react";function Ae(e){var o,t,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var d=e.length;for(o=0;o<d;o++)e[o]&&(t=Ae(e[o]))&&(a&&(a+=" "),a+=t)}else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}function ye(){for(var e,o,t=0,a="",d=arguments.length;t<d;t++)(e=arguments[t])&&(o=Ae(e))&&(a&&(a+=" "),a+=o);return a}var $e=(e,o)=>{let t=new Array(e.length+o.length);for(let a=0;a<e.length;a++)t[a]=e[a];for(let a=0;a<o.length;a++)t[e.length+a]=o[a];return t},ea=(e,o)=>({classGroupId:e,validator:o}),ve=(e=new Map,o=null,t)=>({nextPart:e,validators:o,classGroupId:t}),te="-",Be=[],aa="arbitrary..",ta=e=>{let o=la(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:a}=e;return{getClassGroupId:r=>{if(r.startsWith("[")&&r.endsWith("]"))return oa(r);let p=r.split(te),m=p[0]===""&&p.length>1?1:0;return qe(p,m,o)},getConflictingClassGroupIds:(r,p)=>{if(p){let m=a[r],c=t[r];return m?c?$e(c,m):m:c||Be}return t[r]||Be}}},qe=(e,o,t)=>{if(e.length-o===0)return t.classGroupId;let d=e[o],f=t.nextPart.get(d);if(f){let c=qe(e,o+1,f);if(c)return c}let r=t.validators;if(r===null)return;let p=o===0?e.join(te):e.slice(o).join(te),m=r.length;for(let c=0;c<m;c++){let I=r[c];if(I.validator(p))return I.classGroupId}},oa=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let o=e.slice(1,-1),t=o.indexOf(":"),a=o.slice(0,t);return a?aa+a:void 0})(),la=e=>{let{theme:o,classGroups:t}=e;return ua(t,o)},ua=(e,o)=>{let t=ve();for(let a in e){let d=e[a];ie(d,t,a,o)}return t},ie=(e,o,t,a)=>{let d=e.length;for(let f=0;f<d;f++){let r=e[f];da(r,o,t,a)}},da=(e,o,t,a)=>{if(typeof e=="string"){ra(e,o,t);return}if(typeof e=="function"){sa(e,o,t,a);return}fa(e,o,t,a)},ra=(e,o,t)=>{let a=e===""?o:Ue(o,e);a.classGroupId=t},sa=(e,o,t,a)=>{if(ia(e)){ie(e(a),o,t,a);return}o.validators===null&&(o.validators=[]),o.validators.push(ea(t,e))},fa=(e,o,t,a)=>{let d=Object.entries(e),f=d.length;for(let r=0;r<f;r++){let[p,m]=d[r];ie(m,Ue(o,p),t,a)}},Ue=(e,o)=>{let t=e,a=o.split(te),d=a.length;for(let f=0;f<d;f++){let r=a[f],p=t.nextPart.get(r);p||(p=ve(),t.nextPart.set(r,p)),t=p}return t},ia=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,ca=e=>{if(e<1)return{get:()=>{},set:()=>{}};let o=0,t=Object.create(null),a=Object.create(null),d=(f,r)=>{t[f]=r,o++,o>e&&(o=0,a=t,t=Object.create(null))};return{get(f){let r=t[f];if(r!==void 0)return r;if((r=a[f])!==void 0)return d(f,r),r},set(f,r){f in t?t[f]=r:d(f,r)}}},fe="!",Me=":",na=[],Fe=(e,o,t,a,d)=>({modifiers:e,hasImportantModifier:o,baseClassName:t,maybePostfixModifierPosition:a,isExternal:d}),pa=e=>{let{prefix:o,experimentalParseClassName:t}=e,a=d=>{let f=[],r=0,p=0,m=0,c,I=d.length;for(let S=0;S<I;S++){let b=d[S];if(r===0&&p===0){if(b===Me){f.push(d.slice(m,S)),m=S+1;continue}if(b==="/"){c=S;continue}}b==="["?r++:b==="]"?r--:b==="("?p++:b===")"&&p--}let C=f.length===0?d:d.slice(m),T=C,y=!1;C.endsWith(fe)?(T=C.slice(0,-1),y=!0):C.startsWith(fe)&&(T=C.slice(1),y=!0);let W=c&&c>m?c-m:void 0;return Fe(f,y,T,W)};if(o){let d=o+Me,f=a;a=r=>r.startsWith(d)?f(r.slice(d.length)):Fe(na,!1,r,void 0,!0)}if(t){let d=a;a=f=>t({className:f,parseClassName:d})}return a},ma=e=>{let o=new Map;return e.orderSensitiveModifiers.forEach((t,a)=>{o.set(t,1e6+a)}),t=>{let a=[],d=[];for(let f=0;f<t.length;f++){let r=t[f],p=r[0]==="[",m=o.has(r);p||m?(d.length>0&&(d.sort(),a.push(...d),d=[]),a.push(r)):d.push(r)}return d.length>0&&(d.sort(),a.push(...d)),a}},La=e=>({cache:ca(e.cacheSize),parseClassName:pa(e),sortModifiers:ma(e),postfixLookupClassGroupIds:xa(e),...ta(e)}),xa=e=>{let o=Object.create(null),t=e.postfixLookupClassGroups;if(t)for(let a=0;a<t.length;a++)o[t[a]]=!0;return o},Ia=/\s+/,Ca=(e,o)=>{let{parseClassName:t,getClassGroupId:a,getConflictingClassGroupIds:d,sortModifiers:f,postfixLookupClassGroupIds:r}=o,p=[],m=e.trim().split(Ia),c="";for(let I=m.length-1;I>=0;I-=1){let C=m[I],{isExternal:T,modifiers:y,hasImportantModifier:W,baseClassName:S,maybePostfixModifierPosition:b}=t(C);if(T){c=C+(c.length>0?" "+c:c);continue}let v=!!b,w;if(v){let M=S.substring(0,b);w=a(M);let s=w&&r[w]?a(S):void 0;s&&s!==w&&(w=s,v=!1)}else w=a(S);if(!w){if(!v){c=C+(c.length>0?" "+c:c);continue}if(w=a(S),!w){c=C+(c.length>0?" "+c:c);continue}v=!1}let E=y.length===0?"":y.length===1?y[0]:f(y).join(":"),H=W?E+fe:E,G=H+w;if(p.indexOf(G)>-1)continue;p.push(G);let z=d(w,v);for(let M=0;M<z.length;++M){let s=z[M];p.push(H+s)}c=C+(c.length>0?" "+c:c)}return c},ga=(...e)=>{let o=0,t,a,d="";for(;o<e.length;)(t=e[o++])&&(a=Oe(t))&&(d&&(d+=" "),d+=a);return d},Oe=e=>{if(typeof e=="string")return e;let o,t="";for(let a=0;a<e.length;a++)e[a]&&(o=Oe(e[a]))&&(t&&(t+=" "),t+=o);return t},ha=(e,...o)=>{let t,a,d,f,r=m=>{let c=o.reduce((I,C)=>C(I),e());return t=La(c),a=t.cache.get,d=t.cache.set,f=p,p(m)},p=m=>{let c=a(m);if(c)return c;let I=Ca(m,t);return d(m,I),I};return f=r,(...m)=>f(ga(...m))},Sa=[],L=e=>{let o=t=>t[e]||Sa;return o.isThemeGetter=!0,o},He=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Ge=/^\((?:(\w[\w-]*):)?(.+)\)$/i,wa=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,ka=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ba=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Pa=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Aa=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ya=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,D=e=>wa.test(e),n=e=>!!e&&!Number.isNaN(Number(e)),B=e=>!!e&&Number.isInteger(Number(e)),se=e=>e.endsWith("%")&&n(e.slice(0,-1)),F=e=>ka.test(e),ze=()=>!0,Ba=e=>ba.test(e)&&!Pa.test(e),ce=()=>!1,Ma=e=>Aa.test(e),Fa=e=>ya.test(e),Da=e=>!l(e)&&!u(e),Ra=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),Ta=e=>R(e,Ee,ce),l=e=>He.test(e),U=e=>R(e,Ne,Ba),De=e=>R(e,Va,n),va=e=>R(e,Ke,ze),qa=e=>R(e,Xe,ce),Re=e=>R(e,Ve,ce),Ua=e=>R(e,We,Fa),ee=e=>R(e,Ze,Ma),u=e=>Ge.test(e),K=e=>O(e,Ne),Oa=e=>O(e,Xe),Te=e=>O(e,Ve),Ha=e=>O(e,Ee),Ga=e=>O(e,We),ae=e=>O(e,Ze,!0),za=e=>O(e,Ke,!0),R=(e,o,t)=>{let a=He.exec(e);return a?a[1]?o(a[1]):t(a[2]):!1},O=(e,o,t=!1)=>{let a=Ge.exec(e);return a?a[1]?o(a[1]):t:!1},Ve=e=>e==="position"||e==="percentage",We=e=>e==="image"||e==="url",Ee=e=>e==="length"||e==="size"||e==="bg-size",Ne=e=>e==="length",Va=e=>e==="number",Xe=e=>e==="family-name",Ke=e=>e==="number"||e==="weight",Ze=e=>e==="shadow";var Wa=()=>{let e=L("color"),o=L("font"),t=L("text"),a=L("font-weight"),d=L("tracking"),f=L("leading"),r=L("breakpoint"),p=L("container"),m=L("spacing"),c=L("radius"),I=L("shadow"),C=L("inset-shadow"),T=L("text-shadow"),y=L("drop-shadow"),W=L("blur"),S=L("perspective"),b=L("aspect"),v=L("ease"),w=L("animate"),E=()=>["auto","avoid","all","avoid-page","page","left","right","column"],H=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],G=()=>[...H(),u,l],z=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],s=()=>[u,l,m],k=()=>[D,"full","auto",...s()],me=()=>[B,"none","subgrid",u,l],Le=()=>["auto",{span:["full",B,u,l]},B,u,l],Z=()=>[B,"auto",u,l],xe=()=>["auto","min","max","fr",u,l],oe=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],V=()=>["start","end","center","stretch","center-safe","end-safe"],P=()=>["auto",...s()],q=()=>[D,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...s()],le=()=>[D,"screen","full","dvw","lvw","svw","min","max","fit",...s()],ue=()=>[D,"screen","full","lh","dvh","lvh","svh","min","max","fit",...s()],i=()=>[e,u,l],Ie=()=>[...H(),Te,Re,{position:[u,l]}],Ce=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ge=()=>["auto","cover","contain",Ha,Ta,{size:[u,l]}],de=()=>[se,K,U],g=()=>["","none","full",c,u,l],h=()=>["",n,K,U],J=()=>["solid","dashed","dotted","double"],he=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],x=()=>[n,se,Te,Re],Se=()=>["","none",W,u,l],Q=()=>["none",n,u,l],j=()=>["none",n,u,l],re=()=>[n,u,l],Y=()=>[D,"full",...s()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[F],breakpoint:[F],color:[ze],container:[F],"drop-shadow":[F],ease:["in","out","in-out"],font:[Da],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[F],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[F],shadow:[F],spacing:["px",n],text:[F],"text-shadow":[F],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",D,l,u,b]}],container:["container"],"container-type":[{"@container":["","normal","size",u,l]}],"container-named":[Ra],columns:[{columns:[n,l,u,p]}],"break-after":[{"break-after":E()}],"break-before":[{"break-before":E()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:G()}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:k()}],"inset-x":[{"inset-x":k()}],"inset-y":[{"inset-y":k()}],start:[{"inset-s":k(),start:k()}],end:[{"inset-e":k(),end:k()}],"inset-bs":[{"inset-bs":k()}],"inset-be":[{"inset-be":k()}],top:[{top:k()}],right:[{right:k()}],bottom:[{bottom:k()}],left:[{left:k()}],visibility:["visible","invisible","collapse"],z:[{z:[B,"auto",u,l]}],basis:[{basis:[D,"full","auto",p,...s()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[n,D,"auto","initial","none",l]}],grow:[{grow:["",n,u,l]}],shrink:[{shrink:["",n,u,l]}],order:[{order:[B,"first","last","none",u,l]}],"grid-cols":[{"grid-cols":me()}],"col-start-end":[{col:Le()}],"col-start":[{"col-start":Z()}],"col-end":[{"col-end":Z()}],"grid-rows":[{"grid-rows":me()}],"row-start-end":[{row:Le()}],"row-start":[{"row-start":Z()}],"row-end":[{"row-end":Z()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":xe()}],"auto-rows":[{"auto-rows":xe()}],gap:[{gap:s()}],"gap-x":[{"gap-x":s()}],"gap-y":[{"gap-y":s()}],"justify-content":[{justify:[...oe(),"normal"]}],"justify-items":[{"justify-items":[...V(),"normal"]}],"justify-self":[{"justify-self":["auto",...V()]}],"align-content":[{content:["normal",...oe()]}],"align-items":[{items:[...V(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...V(),{baseline:["","last"]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...V(),"baseline"]}],"place-self":[{"place-self":["auto",...V()]}],p:[{p:s()}],px:[{px:s()}],py:[{py:s()}],ps:[{ps:s()}],pe:[{pe:s()}],pbs:[{pbs:s()}],pbe:[{pbe:s()}],pt:[{pt:s()}],pr:[{pr:s()}],pb:[{pb:s()}],pl:[{pl:s()}],m:[{m:P()}],mx:[{mx:P()}],my:[{my:P()}],ms:[{ms:P()}],me:[{me:P()}],mbs:[{mbs:P()}],mbe:[{mbe:P()}],mt:[{mt:P()}],mr:[{mr:P()}],mb:[{mb:P()}],ml:[{ml:P()}],"space-x":[{"space-x":s()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":s()}],"space-y-reverse":["space-y-reverse"],size:[{size:q()}],"inline-size":[{inline:["auto",...le()]}],"min-inline-size":[{"min-inline":["auto",...le()]}],"max-inline-size":[{"max-inline":["none",...le()]}],"block-size":[{block:["auto",...ue()]}],"min-block-size":[{"min-block":["auto",...ue()]}],"max-block-size":[{"max-block":["none",...ue()]}],w:[{w:[p,"screen",...q()]}],"min-w":[{"min-w":[p,"screen","none",...q()]}],"max-w":[{"max-w":[p,"screen","none","prose",{screen:[r]},...q()]}],h:[{h:["screen","lh",...q()]}],"min-h":[{"min-h":["screen","lh","none",...q()]}],"max-h":[{"max-h":["screen","lh",...q()]}],"font-size":[{text:["base",t,K,U]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[a,za,va]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",se,l]}],"font-family":[{font:[Oa,qa,o]}],"font-features":[{"font-features":[l]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[d,u,l]}],"line-clamp":[{"line-clamp":[n,"none",u,De]}],leading:[{leading:[f,...s()]}],"list-image":[{"list-image":["none",u,l]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",u,l]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:i()}],"text-color":[{text:i()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...J(),"wavy"]}],"text-decoration-thickness":[{decoration:[n,"from-font","auto",u,U]}],"text-decoration-color":[{decoration:i()}],"underline-offset":[{"underline-offset":[n,"auto",u,l]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:s()}],"tab-size":[{tab:[B,u,l]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",u,l]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",u,l]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Ie()}],"bg-repeat":[{bg:Ce()}],"bg-size":[{bg:ge()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},B,u,l],radial:["",u,l],conic:[B,u,l]},Ga,Ua]}],"bg-color":[{bg:i()}],"gradient-from-pos":[{from:de()}],"gradient-via-pos":[{via:de()}],"gradient-to-pos":[{to:de()}],"gradient-from":[{from:i()}],"gradient-via":[{via:i()}],"gradient-to":[{to:i()}],rounded:[{rounded:g()}],"rounded-s":[{"rounded-s":g()}],"rounded-e":[{"rounded-e":g()}],"rounded-t":[{"rounded-t":g()}],"rounded-r":[{"rounded-r":g()}],"rounded-b":[{"rounded-b":g()}],"rounded-l":[{"rounded-l":g()}],"rounded-ss":[{"rounded-ss":g()}],"rounded-se":[{"rounded-se":g()}],"rounded-ee":[{"rounded-ee":g()}],"rounded-es":[{"rounded-es":g()}],"rounded-tl":[{"rounded-tl":g()}],"rounded-tr":[{"rounded-tr":g()}],"rounded-br":[{"rounded-br":g()}],"rounded-bl":[{"rounded-bl":g()}],"border-w":[{border:h()}],"border-w-x":[{"border-x":h()}],"border-w-y":[{"border-y":h()}],"border-w-s":[{"border-s":h()}],"border-w-e":[{"border-e":h()}],"border-w-bs":[{"border-bs":h()}],"border-w-be":[{"border-be":h()}],"border-w-t":[{"border-t":h()}],"border-w-r":[{"border-r":h()}],"border-w-b":[{"border-b":h()}],"border-w-l":[{"border-l":h()}],"divide-x":[{"divide-x":h()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":h()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...J(),"hidden","none"]}],"divide-style":[{divide:[...J(),"hidden","none"]}],"border-color":[{border:i()}],"border-color-x":[{"border-x":i()}],"border-color-y":[{"border-y":i()}],"border-color-s":[{"border-s":i()}],"border-color-e":[{"border-e":i()}],"border-color-bs":[{"border-bs":i()}],"border-color-be":[{"border-be":i()}],"border-color-t":[{"border-t":i()}],"border-color-r":[{"border-r":i()}],"border-color-b":[{"border-b":i()}],"border-color-l":[{"border-l":i()}],"divide-color":[{divide:i()}],"outline-style":[{outline:[...J(),"none","hidden"]}],"outline-offset":[{"outline-offset":[n,u,l]}],"outline-w":[{outline:["",n,K,U]}],"outline-color":[{outline:i()}],shadow:[{shadow:["","none",I,ae,ee]}],"shadow-color":[{shadow:i()}],"inset-shadow":[{"inset-shadow":["none",C,ae,ee]}],"inset-shadow-color":[{"inset-shadow":i()}],"ring-w":[{ring:h()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:i()}],"ring-offset-w":[{"ring-offset":[n,U]}],"ring-offset-color":[{"ring-offset":i()}],"inset-ring-w":[{"inset-ring":h()}],"inset-ring-color":[{"inset-ring":i()}],"text-shadow":[{"text-shadow":["none",T,ae,ee]}],"text-shadow-color":[{"text-shadow":i()}],opacity:[{opacity:[n,u,l]}],"mix-blend":[{"mix-blend":[...he(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":he()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[n]}],"mask-image-linear-from-pos":[{"mask-linear-from":x()}],"mask-image-linear-to-pos":[{"mask-linear-to":x()}],"mask-image-linear-from-color":[{"mask-linear-from":i()}],"mask-image-linear-to-color":[{"mask-linear-to":i()}],"mask-image-t-from-pos":[{"mask-t-from":x()}],"mask-image-t-to-pos":[{"mask-t-to":x()}],"mask-image-t-from-color":[{"mask-t-from":i()}],"mask-image-t-to-color":[{"mask-t-to":i()}],"mask-image-r-from-pos":[{"mask-r-from":x()}],"mask-image-r-to-pos":[{"mask-r-to":x()}],"mask-image-r-from-color":[{"mask-r-from":i()}],"mask-image-r-to-color":[{"mask-r-to":i()}],"mask-image-b-from-pos":[{"mask-b-from":x()}],"mask-image-b-to-pos":[{"mask-b-to":x()}],"mask-image-b-from-color":[{"mask-b-from":i()}],"mask-image-b-to-color":[{"mask-b-to":i()}],"mask-image-l-from-pos":[{"mask-l-from":x()}],"mask-image-l-to-pos":[{"mask-l-to":x()}],"mask-image-l-from-color":[{"mask-l-from":i()}],"mask-image-l-to-color":[{"mask-l-to":i()}],"mask-image-x-from-pos":[{"mask-x-from":x()}],"mask-image-x-to-pos":[{"mask-x-to":x()}],"mask-image-x-from-color":[{"mask-x-from":i()}],"mask-image-x-to-color":[{"mask-x-to":i()}],"mask-image-y-from-pos":[{"mask-y-from":x()}],"mask-image-y-to-pos":[{"mask-y-to":x()}],"mask-image-y-from-color":[{"mask-y-from":i()}],"mask-image-y-to-color":[{"mask-y-to":i()}],"mask-image-radial":[{"mask-radial":[u,l]}],"mask-image-radial-from-pos":[{"mask-radial-from":x()}],"mask-image-radial-to-pos":[{"mask-radial-to":x()}],"mask-image-radial-from-color":[{"mask-radial-from":i()}],"mask-image-radial-to-color":[{"mask-radial-to":i()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":H()}],"mask-image-conic-pos":[{"mask-conic":[n]}],"mask-image-conic-from-pos":[{"mask-conic-from":x()}],"mask-image-conic-to-pos":[{"mask-conic-to":x()}],"mask-image-conic-from-color":[{"mask-conic-from":i()}],"mask-image-conic-to-color":[{"mask-conic-to":i()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Ie()}],"mask-repeat":[{mask:Ce()}],"mask-size":[{mask:ge()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",u,l]}],filter:[{filter:["","none",u,l]}],blur:[{blur:Se()}],brightness:[{brightness:[n,u,l]}],contrast:[{contrast:[n,u,l]}],"drop-shadow":[{"drop-shadow":["","none",y,ae,ee]}],"drop-shadow-color":[{"drop-shadow":i()}],grayscale:[{grayscale:["",n,u,l]}],"hue-rotate":[{"hue-rotate":[n,u,l]}],invert:[{invert:["",n,u,l]}],saturate:[{saturate:[n,u,l]}],sepia:[{sepia:["",n,u,l]}],"backdrop-filter":[{"backdrop-filter":["","none",u,l]}],"backdrop-blur":[{"backdrop-blur":Se()}],"backdrop-brightness":[{"backdrop-brightness":[n,u,l]}],"backdrop-contrast":[{"backdrop-contrast":[n,u,l]}],"backdrop-grayscale":[{"backdrop-grayscale":["",n,u,l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[n,u,l]}],"backdrop-invert":[{"backdrop-invert":["",n,u,l]}],"backdrop-opacity":[{"backdrop-opacity":[n,u,l]}],"backdrop-saturate":[{"backdrop-saturate":[n,u,l]}],"backdrop-sepia":[{"backdrop-sepia":["",n,u,l]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":s()}],"border-spacing-x":[{"border-spacing-x":s()}],"border-spacing-y":[{"border-spacing-y":s()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",u,l]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[n,"initial",u,l]}],ease:[{ease:["linear","initial",v,u,l]}],delay:[{delay:[n,u,l]}],animate:[{animate:["none",w,u,l]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[S,u,l]}],"perspective-origin":[{"perspective-origin":G()}],rotate:[{rotate:Q()}],"rotate-x":[{"rotate-x":Q()}],"rotate-y":[{"rotate-y":Q()}],"rotate-z":[{"rotate-z":Q()}],scale:[{scale:j()}],"scale-x":[{"scale-x":j()}],"scale-y":[{"scale-y":j()}],"scale-z":[{"scale-z":j()}],"scale-3d":["scale-3d"],skew:[{skew:re()}],"skew-x":[{"skew-x":re()}],"skew-y":[{"skew-y":re()}],transform:[{transform:[u,l,"","none","gpu","cpu"]}],"transform-origin":[{origin:G()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Y()}],"translate-x":[{"translate-x":Y()}],"translate-y":[{"translate-y":Y()}],"translate-z":[{"translate-z":Y()}],"translate-none":["translate-none"],zoom:[{zoom:[B,u,l]}],accent:[{accent:i()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:i()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",u,l]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":i()}],"scrollbar-track-color":[{"scrollbar-track":i()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":s()}],"scroll-mx":[{"scroll-mx":s()}],"scroll-my":[{"scroll-my":s()}],"scroll-ms":[{"scroll-ms":s()}],"scroll-me":[{"scroll-me":s()}],"scroll-mbs":[{"scroll-mbs":s()}],"scroll-mbe":[{"scroll-mbe":s()}],"scroll-mt":[{"scroll-mt":s()}],"scroll-mr":[{"scroll-mr":s()}],"scroll-mb":[{"scroll-mb":s()}],"scroll-ml":[{"scroll-ml":s()}],"scroll-p":[{"scroll-p":s()}],"scroll-px":[{"scroll-px":s()}],"scroll-py":[{"scroll-py":s()}],"scroll-ps":[{"scroll-ps":s()}],"scroll-pe":[{"scroll-pe":s()}],"scroll-pbs":[{"scroll-pbs":s()}],"scroll-pbe":[{"scroll-pbe":s()}],"scroll-pt":[{"scroll-pt":s()}],"scroll-pr":[{"scroll-pr":s()}],"scroll-pb":[{"scroll-pb":s()}],"scroll-pl":[{"scroll-pl":s()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",u,l]}],fill:[{fill:["none",...i()]}],"stroke-w":[{stroke:[n,K,U,De]}],stroke:[{stroke:["none",...i()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var Je=ha(Wa);function Qe(...e){return Je(ye(e))}import{jsx as A,jsxs as pe}from"react/jsx-runtime";var Xa={"from-bottom":{initial:{y:"100%",opacity:0},animate:{y:0,opacity:1},exit:{y:"100%",opacity:0}},"from-center":{initial:{scale:.5,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.5,opacity:0}},"from-top":{initial:{y:"-100%",opacity:0},animate:{y:0,opacity:1},exit:{y:"-100%",opacity:0}},"from-left":{initial:{x:"-100%",opacity:0},animate:{x:0,opacity:1},exit:{x:"-100%",opacity:0}},"from-right":{initial:{x:"100%",opacity:0},animate:{x:0,opacity:1},exit:{x:"100%",opacity:0}},fade:{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0}},"top-in-bottom-out":{initial:{y:"-100%",opacity:0},animate:{y:0,opacity:1},exit:{y:"100%",opacity:0}},"left-in-right-out":{initial:{x:"-100%",opacity:0},animate:{x:0,opacity:1},exit:{x:"100%",opacity:0}}};function Ct({animationStyle:e="from-center",videoSrc:o,thumbnailSrc:t,thumbnailAlt:a="Video thumbnail",className:d}){let[f,r]=Ea(!1),p=Xa[e];return pe("div",{className:Qe("relative",d),children:[pe("button",{type:"button","aria-label":"Play video",className:"group relative cursor-pointer border-0 bg-transparent p-0",onClick:()=>r(!0),children:[A("img",{src:t,alt:a,width:1920,height:1080,className:"w-full rounded-md border shadow-lg transition-all duration-200 ease-out group-hover:brightness-[0.8]"}),A("div",{className:"absolute inset-0 flex scale-[0.9] items-center justify-center rounded-2xl transition-all duration-200 ease-out group-hover:scale-100",children:A("div",{className:"bg-primary/10 flex size-28 items-center justify-center rounded-full backdrop-blur-md",children:A("div",{className:"from-primary/30 to-primary relative flex size-20 scale-100 items-center justify-center rounded-full bg-linear-to-b shadow-md transition-all duration-200 ease-out group-hover:scale-[1.2]",children:A(N,{className:"size-8 scale-100 fill-white text-white transition-transform duration-200 ease-out group-hover:scale-105",style:{filter:"drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06))"}})})})})]}),A(Na,{children:f&&A(ne.div,{initial:{opacity:0},animate:{opacity:1},role:"button",tabIndex:0,onKeyDown:m=>{(m.key==="Escape"||m.key==="Enter"||m.key===" ")&&r(!1)},onClick:()=>r(!1),exit:{opacity:0},className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-md",children:pe(ne.div,{...p,transition:{type:"spring",damping:30,stiffness:300},className:"relative mx-4 aspect-video w-full max-w-4xl md:mx-0",children:[A(ne.button,{className:"absolute -top-16 right-0 rounded-full bg-neutral-900/50 p-2 text-xl text-white ring-1 backdrop-blur-md dark:bg-neutral-100/50 dark:text-black",children:A(X,{className:"size-5"})}),A("div",{className:"relative isolate z-1 size-full overflow-hidden rounded-2xl border-2 border-white",children:A("iframe",{src:o,title:"Hero Video player",className:"mt-0 size-full rounded-2xl",allowFullScreen:!0,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"})})]})})})]})}export{Ct as HeroVideoDialog};
2
+ /*! Bundled license information:
3
+
4
+ lucide-react/dist/esm/shared/src/utils.js:
5
+ (**
6
+ * @license lucide-react v0.456.0 - ISC
7
+ *
8
+ * This source code is licensed under the ISC license.
9
+ * See the LICENSE file in the root directory of this source tree.
10
+ *)
11
+
12
+ lucide-react/dist/esm/defaultAttributes.js:
13
+ (**
14
+ * @license lucide-react v0.456.0 - ISC
15
+ *
16
+ * This source code is licensed under the ISC license.
17
+ * See the LICENSE file in the root directory of this source tree.
18
+ *)
19
+
20
+ lucide-react/dist/esm/Icon.js:
21
+ (**
22
+ * @license lucide-react v0.456.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ *)
27
+
28
+ lucide-react/dist/esm/createLucideIcon.js:
29
+ (**
30
+ * @license lucide-react v0.456.0 - ISC
31
+ *
32
+ * This source code is licensed under the ISC license.
33
+ * See the LICENSE file in the root directory of this source tree.
34
+ *)
35
+
36
+ lucide-react/dist/esm/icons/play.js:
37
+ (**
38
+ * @license lucide-react v0.456.0 - ISC
39
+ *
40
+ * This source code is licensed under the ISC license.
41
+ * See the LICENSE file in the root directory of this source tree.
42
+ *)
43
+
44
+ lucide-react/dist/esm/icons/x.js:
45
+ (**
46
+ * @license lucide-react v0.456.0 - ISC
47
+ *
48
+ * This source code is licensed under the ISC license.
49
+ * See the LICENSE file in the root directory of this source tree.
50
+ *)
51
+
52
+ lucide-react/dist/esm/lucide-react.js:
53
+ (**
54
+ * @license lucide-react v0.456.0 - ISC
55
+ *
56
+ * This source code is licensed under the ISC license.
57
+ * See the LICENSE file in the root directory of this source tree.
58
+ *)
59
+ */
b/53e07d243c06c652b1ac5e31de83b23b43311fa66317635cae17115b70c659a3 ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import { Spinner } from "@/registry/new-york-v4/ui/spinner"
2
+
3
+ export default function SpinnerBasic() {
4
+ return (
5
+ <div className="flex flex-col items-center justify-center gap-8">
6
+ <Spinner />
7
+ </div>
8
+ )
9
+ }
b/53eee6966441853930a8c119fcf1d47fdc9564852687b18a89bb13b617e48eea ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+
5
+ import { Button } from "@/registry/new-york-v4/ui/button"
6
+ import {
7
+ Command,
8
+ CommandEmpty,
9
+ CommandGroup,
10
+ CommandInput,
11
+ CommandItem,
12
+ CommandList,
13
+ } from "@/registry/new-york-v4/ui/command"
14
+ import {
15
+ Popover,
16
+ PopoverContent,
17
+ PopoverTrigger,
18
+ } from "@/registry/new-york-v4/ui/popover"
19
+
20
+ type Status = {
21
+ value: string
22
+ label: string
23
+ }
24
+
25
+ const statuses: Status[] = [
26
+ {
27
+ value: "backlog",
28
+ label: "Backlog",
29
+ },
30
+ {
31
+ value: "todo",
32
+ label: "Todo",
33
+ },
34
+ {
35
+ value: "in progress",
36
+ label: "In Progress",
37
+ },
38
+ {
39
+ value: "done",
40
+ label: "Done",
41
+ },
42
+ {
43
+ value: "canceled",
44
+ label: "Canceled",
45
+ },
46
+ ]
47
+
48
+ export default function ComboboxPopover() {
49
+ const [open, setOpen] = React.useState(false)
50
+ const [selectedStatus, setSelectedStatus] = React.useState<Status | null>(
51
+ null
52
+ )
53
+
54
+ return (
55
+ <div className="flex items-center space-x-4">
56
+ <p className="text-sm text-muted-foreground">Status</p>
57
+ <Popover open={open} onOpenChange={setOpen}>
58
+ <PopoverTrigger asChild>
59
+ <Button variant="outline" className="w-[150px] justify-start">
60
+ {selectedStatus ? <>{selectedStatus.label}</> : <>+ Set status</>}
61
+ </Button>
62
+ </PopoverTrigger>
63
+ <PopoverContent className="p-0" side="right" align="start">
64
+ <Command>
65
+ <CommandInput placeholder="Change status..." />
66
+ <CommandList>
67
+ <CommandEmpty>No results found.</CommandEmpty>
68
+ <CommandGroup>
69
+ {statuses.map((status) => (
70
+ <CommandItem
71
+ key={status.value}
72
+ value={status.value}
73
+ onSelect={(value) => {
74
+ setSelectedStatus(
75
+ statuses.find((priority) => priority.value === value) ||
76
+ null
77
+ )
78
+ setOpen(false)
79
+ }}
80
+ >
81
+ {status.label}
82
+ </CommandItem>
83
+ ))}
84
+ </CommandGroup>
85
+ </CommandList>
86
+ </Command>
87
+ </PopoverContent>
88
+ </Popover>
89
+ </div>
90
+ )
91
+ }
b/54164ea7f3832958672228a77becb1b1774aba0e3a52f4ed593c40d4c5135c3b ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "org.hologram.ui.example.empty-input-group",
3
+ "name": "empty-input-group",
4
+ "tier": "example",
5
+ "library": "shadcn",
6
+ "category": "Examples",
7
+ "upstream": "https://ui.shadcn.com/r/styles/new-york-v4/empty-input-group.json",
8
+ "did": "did:holo:sha256:314a193bca1792dac6e044db23cd6968ea641fd48a0e8622ab60f6710b135e3d",
9
+ "import": "holo://sha256:1cfc9b68bec557604a6821f30245b9b8703147567e4a35113b8fe067a9c0a73e",
10
+ "integrity": "sha256-HPybaL7FV2BKaCHzAkW5uHAxR1Z+SjURO4/gZ6nApz4=",
11
+ "kappa": "sha256:314a193bca1792dac6e044db23cd6968ea641fd48a0e8622ab60f6710b135e3d",
12
+ "moduleKappa": "sha256:1cfc9b68bec557604a6821f30245b9b8703147567e4a35113b8fe067a9c0a73e",
13
+ "renderExport": "default",
14
+ "source": "registry/new-york-v4/examples/empty-input-group.tsx",
15
+ "module": "vendor/components/empty-input-group.js",
16
+ "exports": [
17
+ "default"
18
+ ],
19
+ "license": "MIT"
20
+ }
b/54506a6d2e6a82b854ec22da523f80d02692038cd8a951d1bfd2527479ae88c2 ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Button } from "@/registry/new-york-v4/ui/button"
2
+ import {
3
+ DropdownMenu,
4
+ DropdownMenuContent,
5
+ DropdownMenuGroup,
6
+ DropdownMenuItem,
7
+ DropdownMenuLabel,
8
+ DropdownMenuPortal,
9
+ DropdownMenuSeparator,
10
+ DropdownMenuShortcut,
11
+ DropdownMenuSub,
12
+ DropdownMenuSubContent,
13
+ DropdownMenuSubTrigger,
14
+ DropdownMenuTrigger,
15
+ } from "@/registry/new-york-v4/ui/dropdown-menu"
16
+
17
+ export default function DropdownMenuDemo() {
18
+ return (
19
+ <DropdownMenu>
20
+ <DropdownMenuTrigger asChild>
21
+ <Button variant="outline">Open</Button>
22
+ </DropdownMenuTrigger>
23
+ <DropdownMenuContent className="w-56" align="start">
24
+ <DropdownMenuLabel>My Account</DropdownMenuLabel>
25
+ <DropdownMenuGroup>
26
+ <DropdownMenuItem>
27
+ Profile
28
+ <DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>
29
+ </DropdownMenuItem>
30
+ <DropdownMenuItem>
31
+ Billing
32
+ <DropdownMenuShortcut>⌘B</DropdownMenuShortcut>
33
+ </DropdownMenuItem>
34
+ <DropdownMenuItem>
35
+ Settings
36
+ <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>
37
+ </DropdownMenuItem>
38
+ <DropdownMenuItem>
39
+ Keyboard shortcuts
40
+ <DropdownMenuShortcut>⌘K</DropdownMenuShortcut>
41
+ </DropdownMenuItem>
42
+ </DropdownMenuGroup>
43
+ <DropdownMenuSeparator />
44
+ <DropdownMenuGroup>
45
+ <DropdownMenuItem>Team</DropdownMenuItem>
46
+ <DropdownMenuSub>
47
+ <DropdownMenuSubTrigger>Invite users</DropdownMenuSubTrigger>
48
+ <DropdownMenuPortal>
49
+ <DropdownMenuSubContent>
50
+ <DropdownMenuItem>Email</DropdownMenuItem>
51
+ <DropdownMenuItem>Message</DropdownMenuItem>
52
+ <DropdownMenuSeparator />
53
+ <DropdownMenuItem>More...</DropdownMenuItem>
54
+ </DropdownMenuSubContent>
55
+ </DropdownMenuPortal>
56
+ </DropdownMenuSub>
57
+ <DropdownMenuItem>
58
+ New Team
59
+ <DropdownMenuShortcut>⌘+T</DropdownMenuShortcut>
60
+ </DropdownMenuItem>
61
+ </DropdownMenuGroup>
62
+ <DropdownMenuSeparator />
63
+ <DropdownMenuItem>GitHub</DropdownMenuItem>
64
+ <DropdownMenuItem>Support</DropdownMenuItem>
65
+ <DropdownMenuItem disabled>API</DropdownMenuItem>
66
+ <DropdownMenuSeparator />
67
+ <DropdownMenuItem>
68
+ Log out
69
+ <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>
70
+ </DropdownMenuItem>
71
+ </DropdownMenuContent>
72
+ </DropdownMenu>
73
+ )
74
+ }
b/546ecee00f0c0cc7c342280e9558661a001cf622c6a6951b05edbc87f3a81197 ADDED
@@ -0,0 +1,404 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Holo Whisper — S0: legacy-ggml format reader + κ-forge.
2
+ //
3
+ // Whisper ships in whisper.cpp's LEGACY ggml container (magic 0x67676d6c), NOT GGUF.
4
+ // Layout (all little-endian, NO inter-tensor alignment):
5
+ // magic:u32
6
+ // hparams: 11×i32 = n_vocab, n_audio_ctx, n_audio_state, n_audio_head, n_audio_layer,
7
+ // n_text_ctx, n_text_state, n_text_head, n_text_layer, n_mels, ftype
8
+ // mel: n_mel:i32, n_fft:i32, filters[n_mel*n_fft]:f32
9
+ // vocab: n_vocab:i32, then n_vocab × (len:i32, bytes[len])
10
+ // tensors (until EOF): n_dims:i32, name_len:i32, ttype:i32, ne[n_dims]:i32, name[name_len], data
11
+ //
12
+ // Forging mirrors forgeGguf: each tensor's EXACT bytes are one κ-object (verbatim,
13
+ // no re-quant), the plan is the sealed manifest, rootKappa = did:holo over its JCS.
14
+
15
+ import { sha256hex, sriOf, kappa, didHolo, jcs } from "../../../../holo-os/system/os/usr/lib/holo/holo-uor.mjs";
16
+ import { ggmlNBytes, GGML_TYPE_NAME, loadByKappa } from "./gguf-forge.mjs";
17
+ import { dequantizeExact } from "./gguf-forge-dequant.mjs";
18
+ import { conv1d, gelu, layerNorm, softmax } from "./gguf-forge-kernels.mjs";
19
+
20
+ const fr = Math.fround;
21
+ const LN_EPS = 1e-5; // Whisper LayerNorm epsilon (torch default)
22
+
23
+ const WHISPER_MAGIC = 0x67676d6c;
24
+ const HPARAM_KEYS = ["n_vocab", "n_audio_ctx", "n_audio_state", "n_audio_head", "n_audio_layer",
25
+ "n_text_ctx", "n_text_state", "n_text_head", "n_text_layer", "n_mels", "ftype"];
26
+
27
+ // Parse the legacy-ggml header into { hparams, mel, vocab, tensors }. Records byte
28
+ // offsets/spans (no large copies). `wantVocab` controls whether token bytes are kept.
29
+ export function parseWhisperHeader(bytes, { wantVocab = false } = {}) {
30
+ const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
31
+ let o = 0;
32
+ const i32 = () => { const v = dv.getInt32(o, true); o += 4; return v; };
33
+ if ((dv.getUint32(o, true)) !== WHISPER_MAGIC) throw new Error(`whisper: bad magic 0x${dv.getUint32(o, true).toString(16)} (want ggml)`);
34
+ o += 4;
35
+
36
+ const hparams = {}; for (const k of HPARAM_KEYS) hparams[k] = i32();
37
+
38
+ const n_mel = i32(), n_fft = i32();
39
+ const mel = { n_mel, n_fft, offset: o, nbytes: n_mel * n_fft * 4 };
40
+ o += mel.nbytes;
41
+
42
+ const nVocab = i32();
43
+ const vocab = { count: nVocab, tokens: wantVocab ? [] : null };
44
+ for (let i = 0; i < nVocab; i++) {
45
+ const len = i32();
46
+ if (wantVocab) vocab.tokens.push(bytes.subarray(o, o + len));
47
+ o += len;
48
+ }
49
+
50
+ const tensors = [];
51
+ while (o < bytes.byteLength) {
52
+ const n_dims = i32(), name_len = i32(), ttype = i32();
53
+ const ne = []; for (let d = 0; d < n_dims; d++) ne.push(i32());
54
+ const name = new TextDecoder().decode(bytes.subarray(o, o + name_len)); o += name_len;
55
+ const nElems = ne.reduce((a, b) => a * b, 1);
56
+ const nbytes = ggmlNBytes(ttype, nElems);
57
+ if (o + nbytes > bytes.byteLength) throw new Error(`whisper: tensor ${name} runs past EOF (${o + nbytes} > ${bytes.byteLength})`);
58
+ tensors.push({ name, dims: ne, type: ttype, offset: o, nbytes });
59
+ o += nbytes;
60
+ }
61
+ if (o !== bytes.byteLength) throw new Error(`whisper: trailing ${bytes.byteLength - o} bytes — format drift (alignment?)`);
62
+ return { hparams, mel, vocab, tensors, bytesConsumed: o };
63
+ }
64
+
65
+ // Forge a whole in-memory whisper model (Uint8Array) into κ-objects + sealed plan.
66
+ export function forgeWhisper(bytes) {
67
+ const { hparams, mel, vocab, tensors } = parseWhisperHeader(bytes);
68
+ const blocks = new Map();
69
+ const planTensors = [];
70
+ for (const t of tensors) {
71
+ const blob = bytes.subarray(t.offset, t.offset + t.nbytes); // EXACT bytes = the κ-object
72
+ const hex = sha256hex(blob);
73
+ if (!blocks.has(hex)) blocks.set(hex, blob.slice()); // own bytes; L2 dedup by content
74
+ planTensors.push({
75
+ name: t.name, dims: t.dims, type: t.type, typeName: GGML_TYPE_NAME[t.type] || String(t.type),
76
+ nbytes: t.nbytes, kappa: kappa("sha256", hex), sri: sriOf(blob),
77
+ });
78
+ }
79
+ // Mel filterbank is a fixed model asset (used by the preprocessor) → its own κ.
80
+ const melBlob = bytes.subarray(mel.offset, mel.offset + mel.nbytes);
81
+ const melHex = sha256hex(melBlob);
82
+ if (!blocks.has(melHex)) blocks.set(melHex, melBlob.slice());
83
+
84
+ const plan = {
85
+ format: "holo-whisper/1",
86
+ arch: "whisper",
87
+ hparams,
88
+ mel: { n_mel: mel.n_mel, n_fft: mel.n_fft, kappa: kappa("sha256", melHex), nbytes: mel.nbytes },
89
+ vocabCount: vocab.count,
90
+ tensors: planTensors,
91
+ };
92
+ const rootKappa = didHolo("sha256", sha256hex(jcs(plan)));
93
+ return { hparams, mel, vocabCount: vocab.count, tensors: planTensors, blocks, plan, rootKappa };
94
+ }
95
+
96
+ // ── S1: audio → log-mel spectrogram ──
97
+ // Parse a PCM16 mono WAV → Float32 samples in [-1,1] (skips to the `data` chunk).
98
+ export function readWavPCM16(bytes) {
99
+ const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
100
+ let o = 12; // past RIFF/size/WAVE
101
+ while (o + 8 <= bytes.byteLength) {
102
+ const id = String.fromCharCode(bytes[o], bytes[o + 1], bytes[o + 2], bytes[o + 3]);
103
+ const sz = dv.getUint32(o + 4, true);
104
+ if (id === "data") { const n = sz >> 1, x = new Float32Array(n); for (let i = 0; i < n; i++) x[i] = dv.getInt16(o + 8 + i * 2, true) / 32768; return x; }
105
+ o += 8 + sz + (sz & 1);
106
+ }
107
+ throw new Error("wav: no data chunk");
108
+ }
109
+
110
+ // Whisper log-mel (matches whisper.cpp log_mel_spectrogram): periodic Hann window,
111
+ // n_fft=400, hop=160; |DFT|² over 201 bins; mel filterbank (stored); log10 + the
112
+ // (max−8)/((+4)/4) normalization. Pads/truncates to 30 s = 480000 samples → 3000
113
+ // frames. Returns mel [n_mel, n_frames] (mel[k*nFrames+f]) — the conv-stem input.
114
+ export function logMelSpectrogram(samples, filters, { nMel = 80, nFft = 400, hop = 160, nBins = 201, nSamples = 480000 } = {}) {
115
+ const x = new Float32Array(nSamples + nFft); x.set(samples.subarray(0, Math.min(samples.length, nSamples))); // +nFft tail pad
116
+ const nFrames = (nSamples / hop) | 0;
117
+ const hann = new Float32Array(nFft); for (let i = 0; i < nFft; i++) hann[i] = 0.5 - 0.5 * Math.cos((2 * Math.PI * i) / nFft);
118
+ // DFT cos/sin tables: cosT[bin*nFft+n]
119
+ const cosT = new Float32Array(nBins * nFft), sinT = new Float32Array(nBins * nFft);
120
+ for (let b = 0; b < nBins; b++) for (let n = 0; n < nFft; n++) { const a = (-2 * Math.PI * b * n) / nFft; cosT[b * nFft + n] = Math.cos(a); sinT[b * nFft + n] = Math.sin(a); }
121
+ const mel = new Float32Array(nMel * nFrames), win = new Float32Array(nFft), pw = new Float64Array(nBins);
122
+ let mmax = -Infinity;
123
+ for (let f = 0; f < nFrames; f++) {
124
+ const off = f * hop;
125
+ for (let n = 0; n < nFft; n++) win[n] = hann[n] * x[off + n]; // off+n < nSamples always (last frame off=479840)
126
+ // power spectrum |DFT|² computed ONCE per frame (was recomputed inside the per-mel loop —
127
+ // an 80× redundancy). Same arithmetic + accumulation order ⇒ bit-identical mel, ~80× faster.
128
+ for (let b = 0; b < nBins; b++) { let re = 0.0, im = 0.0; const tb = b * nFft; for (let n = 0; n < nFft; n++) { re += win[n] * cosT[tb + n]; im += win[n] * sinT[tb + n]; } pw[b] = re * re + im * im; }
129
+ for (let k = 0; k < nMel; k++) {
130
+ let s = 0.0; const fb = k * nBins;
131
+ for (let b = 0; b < nBins; b++) s += filters[fb + b] * pw[b];
132
+ let lv = Math.log10(Math.max(s, 1e-10));
133
+ mel[k * nFrames + f] = lv; if (lv > mmax) mmax = lv;
134
+ }
135
+ }
136
+ const floor = mmax - 8.0;
137
+ for (let i = 0; i < mel.length; i++) mel[i] = (Math.max(mel[i], floor) + 4.0) / 4.0;
138
+ return { mel, nFrames, nMel };
139
+ }
140
+
141
+ // Load the stored mel filterbank (κ in the plan) as f32 [nMel*nBins].
142
+ export function whisperMelFilters(plan, store) {
143
+ return dequantizeExact(0, loadByKappa(store, plan.mel.kappa), plan.mel.n_mel * plan.mel.n_fft);
144
+ }
145
+
146
+ // ── S2: audio conv stem ──
147
+ // Load a forged tensor's full f32 values by name (L5-verified via loadByKappa).
148
+ function tensorF32(plan, store, name) {
149
+ const t = plan.tensors.find((x) => x.name === name);
150
+ if (!t) throw new Error(`whisper: no tensor ${name}`);
151
+ return dequantizeExact(t.type, loadByKappa(store, t.kappa), t.dims.reduce((a, b) => a * b, 1));
152
+ }
153
+
154
+ // Whisper audio front-end (AudioEncoder stem): log-mel [n_mels, n_frames] →
155
+ // Conv1d(k3,s1,p1)·+bias·GELU → Conv1d(k3,s2,p1)·+bias·GELU → transpose → +pos_embd
156
+ // → encoder input [n_audio_ctx, n_audio_state] (one 768-vec per audio position).
157
+ // conv weights are stored F16 (already F16-valued); ggml rounds the conv INPUT to F16
158
+ // (handled inside conv1d). pos_embd is a stored tensor — no sinusoid computed.
159
+ export function whisperConvStem(plan, store, mel) {
160
+ const { n_mels, n_audio_state: S } = plan.hparams;
161
+ const nFrames = mel.length / n_mels; // 3000
162
+ const w1 = tensorF32(plan, store, "encoder.conv1.weight"), b1 = tensorF32(plan, store, "encoder.conv1.bias");
163
+ const w2 = tensorF32(plan, store, "encoder.conv2.weight"), b2 = tensorF32(plan, store, "encoder.conv2.bias");
164
+ const pos = tensorF32(plan, store, "encoder.positional_embedding");
165
+
166
+ const c1 = conv1d(mel, w1, n_mels, S, 3, nFrames, 1, 1); // [S, nFrames]
167
+ for (let oc = 0; oc < S; oc++) for (let l = 0; l < nFrames; l++) { const i = oc * nFrames + l; c1[i] = gelu(fr(c1[i] + b1[oc])); }
168
+
169
+ const OL = (((nFrames - 1) / 2) | 0) + 1; // 1500 = n_audio_ctx
170
+ const c2 = conv1d(c1, w2, S, S, 3, nFrames, 2, 1); // [S, OL]
171
+ for (let oc = 0; oc < S; oc++) for (let l = 0; l < OL; l++) { const i = oc * OL + l; c2[i] = gelu(fr(c2[i] + b2[oc])); }
172
+
173
+ const x = new Float32Array(OL * S); // transpose [S,OL]→[OL,S], + pos
174
+ for (let p = 0; p < OL; p++) for (let d = 0; d < S; d++) x[p * S + d] = fr(c2[d * OL + p] + pos[p * S + d]);
175
+ return { x, n_ctx: OL, n_state: S };
176
+ }
177
+
178
+ // ── S3: audio encoder ──
179
+ // Batched linear: X[n,inDim] · W[outDim,inDim] (+bias) → Y[n,outDim]. W stored
180
+ // [out,in] (ggml ne [in,out]: W[o*inDim+i]); pre-dequantized f32.
181
+ function linear(X, n, W, inDim, outDim, bias) {
182
+ const Y = new Float32Array(n * outDim);
183
+ for (let p = 0; p < n; p++) {
184
+ const xb = p * inDim;
185
+ for (let o = 0; o < outDim; o++) {
186
+ let s = bias ? bias[o] : 0.0; const wb = o * inDim;
187
+ for (let i = 0; i < inDim; i++) s = fr(s + fr(X[xb + i] * W[wb + i]));
188
+ Y[p * outDim + o] = fr(s);
189
+ }
190
+ }
191
+ return Y;
192
+ }
193
+ // LayerNorm every row (position) of X[n,S].
194
+ function lnRows(X, n, S, w, b) {
195
+ const Y = new Float32Array(n * S);
196
+ for (let p = 0; p < n; p++) Y.set(layerNorm(X.subarray(p * S, p * S + S), w, b, LN_EPS, S), p * S);
197
+ return Y;
198
+ }
199
+ // Non-causal multi-head self-attention: q,k,v are [n, H*hd]; every query attends to
200
+ // ALL keys (no causal mask — bidirectional encoder). scale = 1/√hd. → ctx [n, H*hd].
201
+ function mha(q, k, v, n, H, hd, scale) {
202
+ const S = H * hd, out = new Float32Array(n * S);
203
+ for (let h = 0; h < H; h++) {
204
+ const ho = h * hd;
205
+ for (let i = 0; i < n; i++) {
206
+ const scores = new Float32Array(n), qb = i * S + ho;
207
+ for (let j = 0; j < n; j++) { let s = 0.0; const kb = j * S + ho; for (let d = 0; d < hd; d++) s = fr(s + fr(q[qb + d] * k[kb + d])); scores[j] = fr(s); }
208
+ const pr = softmax(scores, scale);
209
+ const ob = i * S + ho;
210
+ for (let d = 0; d < hd; d++) { let acc = 0.0; for (let j = 0; j < n; j++) acc = fr(acc + fr(pr[j] * v[j * S + ho + d])); out[ob + d] = fr(acc); }
211
+ }
212
+ }
213
+ return out;
214
+ }
215
+
216
+ // Whisper audio encoder: x [n_ctx, n_audio_state] → encoder output [n_ctx, n_audio_state].
217
+ // Per block: x += attn(LN(x)); x += mlp(LN(x)). attn is NON-causal; K proj has no bias.
218
+ // Final encoder.ln_post. (Linears are f32 here — Tier-B; f16-activation rounding to match
219
+ // ggml mul_mat is a later tightening, like the LLM integer-dot path.)
220
+ export function whisperEncoder(plan, store, x0, n_ctx, { nLayers } = {}) {
221
+ const { n_audio_state: S, n_audio_head: H, n_audio_layer: NL } = plan.hparams;
222
+ const hd = S / H, scale = 1 / Math.sqrt(hd), FF = 4 * S;
223
+ const D = (name) => tensorF32(plan, store, name);
224
+ let x = Float32Array.from(x0);
225
+ const last = nLayers ?? NL; // optional cap (for fast large-model smoke runs)
226
+ for (let il = 0; il < last; il++) {
227
+ const p = `encoder.blocks.${il}.`;
228
+ const an = lnRows(x, n_ctx, S, D(p + "attn_ln.weight"), D(p + "attn_ln.bias"));
229
+ const q = linear(an, n_ctx, D(p + "attn.query.weight"), S, S, D(p + "attn.query.bias"));
230
+ const k = linear(an, n_ctx, D(p + "attn.key.weight"), S, S, null); // K: no bias (Whisper quirk)
231
+ const v = linear(an, n_ctx, D(p + "attn.value.weight"), S, S, D(p + "attn.value.bias"));
232
+ const ao = linear(mha(q, k, v, n_ctx, H, hd, scale), n_ctx, D(p + "attn.out.weight"), S, S, D(p + "attn.out.bias"));
233
+ for (let i = 0; i < x.length; i++) x[i] = fr(x[i] + ao[i]);
234
+ const mn = lnRows(x, n_ctx, S, D(p + "mlp_ln.weight"), D(p + "mlp_ln.bias"));
235
+ const h1 = linear(mn, n_ctx, D(p + "mlp.0.weight"), S, FF, D(p + "mlp.0.bias"));
236
+ for (let i = 0; i < h1.length; i++) h1[i] = gelu(h1[i]);
237
+ const h2 = linear(h1, n_ctx, D(p + "mlp.2.weight"), FF, S, D(p + "mlp.2.bias"));
238
+ for (let i = 0; i < x.length; i++) x[i] = fr(x[i] + h2[i]);
239
+ }
240
+ return lnRows(x, n_ctx, S, D("encoder.ln_post.weight"), D("encoder.ln_post.bias"));
241
+ }
242
+
243
+ // ── S4: cross-attention + decoder ──
244
+ // General attention: q [nQ,H*hd], k/v [nK,H*hd] → out [nQ,H*hd]. causal → query i sees
245
+ // keys 0..i (self-attn); else all nK keys (encoder self / cross-attn). Covers all three.
246
+ function attend(q, k, v, nQ, nK, H, hd, scale, causal) {
247
+ const Sd = H * hd, out = new Float32Array(nQ * Sd);
248
+ for (let h = 0; h < H; h++) {
249
+ const ho = h * hd;
250
+ for (let i = 0; i < nQ; i++) {
251
+ const lim = causal ? i + 1 : nK, scores = new Float32Array(lim), qb = i * Sd + ho;
252
+ for (let j = 0; j < lim; j++) { let s = 0.0; const kb = j * Sd + ho; for (let d = 0; d < hd; d++) s = fr(s + fr(q[qb + d] * k[kb + d])); scores[j] = fr(s); }
253
+ const pr = softmax(scores, scale), ob = i * Sd + ho;
254
+ for (let d = 0; d < hd; d++) { let acc = 0.0; for (let j = 0; j < lim; j++) acc = fr(acc + fr(pr[j] * v[j * Sd + ho + d])); out[ob + d] = fr(acc); }
255
+ }
256
+ }
257
+ return out;
258
+ }
259
+
260
+ // Whisper text decoder over a token sequence (prefill). Returns last-position logits.
261
+ // Per block: x += self_attn(LN(x), causal); x += cross_attn(LN(x), encoder K/V);
262
+ // x += mlp(LN(x)). Cross-attn K/V depend only on the encoder output → computed ONCE
263
+ // per layer. Final decoder.ln; logits via tied token_embedding. (K projections: no bias.)
264
+ export function whisperDecoder(plan, store, tokenIds, encoderOut, n_enc) {
265
+ const { n_text_state: S, n_text_head: H, n_text_layer: NL, n_vocab } = plan.hparams;
266
+ const hd = S / H, scale = 1 / Math.sqrt(hd), FF = 4 * S, N = tokenIds.length;
267
+ const D = (name) => tensorF32(plan, store, name);
268
+ const tokEmb = D("decoder.token_embedding.weight"), posEmb = D("decoder.positional_embedding");
269
+ const x = new Float32Array(N * S);
270
+ for (let p = 0; p < N; p++) for (let d = 0; d < S; d++) x[p * S + d] = fr(tokEmb[tokenIds[p] * S + d] + posEmb[p * S + d]);
271
+
272
+ for (let il = 0; il < NL; il++) {
273
+ const p = `decoder.blocks.${il}.`;
274
+ // cross-attn K/V from the encoder output (constant across decode steps)
275
+ const cK = linear(encoderOut, n_enc, D(p + "cross_attn.key.weight"), S, S, null);
276
+ const cV = linear(encoderOut, n_enc, D(p + "cross_attn.value.weight"), S, S, D(p + "cross_attn.value.bias"));
277
+ // causal self-attention
278
+ const an = lnRows(x, N, S, D(p + "attn_ln.weight"), D(p + "attn_ln.bias"));
279
+ const q = linear(an, N, D(p + "attn.query.weight"), S, S, D(p + "attn.query.bias"));
280
+ const k = linear(an, N, D(p + "attn.key.weight"), S, S, null);
281
+ const v = linear(an, N, D(p + "attn.value.weight"), S, S, D(p + "attn.value.bias"));
282
+ const so = linear(attend(q, k, v, N, N, H, hd, scale, true), N, D(p + "attn.out.weight"), S, S, D(p + "attn.out.bias"));
283
+ for (let i = 0; i < x.length; i++) x[i] = fr(x[i] + so[i]);
284
+ // cross-attention (decoder Q × encoder K/V, non-causal)
285
+ const cn = lnRows(x, N, S, D(p + "cross_attn_ln.weight"), D(p + "cross_attn_ln.bias"));
286
+ const cq = linear(cn, N, D(p + "cross_attn.query.weight"), S, S, D(p + "cross_attn.query.bias"));
287
+ const co = linear(attend(cq, cK, cV, N, n_enc, H, hd, scale, false), N, D(p + "cross_attn.out.weight"), S, S, D(p + "cross_attn.out.bias"));
288
+ for (let i = 0; i < x.length; i++) x[i] = fr(x[i] + co[i]);
289
+ // mlp
290
+ const mn = lnRows(x, N, S, D(p + "mlp_ln.weight"), D(p + "mlp_ln.bias"));
291
+ const h1 = linear(mn, N, D(p + "mlp.0.weight"), S, FF, D(p + "mlp.0.bias"));
292
+ for (let i = 0; i < h1.length; i++) h1[i] = gelu(h1[i]);
293
+ const h2 = linear(h1, N, D(p + "mlp.2.weight"), FF, S, D(p + "mlp.2.bias"));
294
+ for (let i = 0; i < x.length; i++) x[i] = fr(x[i] + h2[i]);
295
+ }
296
+ const fn = lnRows(x, N, S, D("decoder.ln.weight"), D("decoder.ln.bias"));
297
+ const last = fn.subarray((N - 1) * S, N * S), logits = new Float32Array(n_vocab); // tied lm_head
298
+ for (let tk = 0; tk < n_vocab; tk++) { let s = 0.0; const tb = tk * S; for (let d = 0; d < S; d++) s = fr(s + fr(last[d] * tokEmb[tb + d])); logits[tk] = s; }
299
+ return logits;
300
+ }
301
+
302
+ // ── S5: greedy decode (cached) + detokenize ──
303
+ // Whisper special tokens. EOT/SOT/first-language are fixed; the rest float with the
304
+ // vocab size (large-v3 added a language → +1 shift). Derive everything from n_vocab so
305
+ // the same code is correct for tiny…large-v3: timestamp_begin = n_vocab − 1501.
306
+ export function whisperSpecials(nVocab) {
307
+ const TS_BEGIN = nVocab - 1501;
308
+ return { EOT: 50257, SOT: 50258, LANG_EN: 50259, TRANSLATE: TS_BEGIN - 6, TRANSCRIBE: TS_BEGIN - 5, NO_TIMESTAMPS: TS_BEGIN - 1, TS_BEGIN };
309
+ }
310
+
311
+ const oneAttn = (q, Kc, Vc, nK, H, hd, scale) => { // single-query attention over cached/encoder K,V
312
+ const S = H * hd, out = new Float32Array(S);
313
+ for (let h = 0; h < H; h++) {
314
+ const ho = h * hd, scores = new Float32Array(nK);
315
+ for (let j = 0; j < nK; j++) { let s = 0.0; const kb = j * S + ho; for (let d = 0; d < hd; d++) s = fr(s + fr(q[ho + d] * Kc[kb + d])); scores[j] = fr(s); }
316
+ const pr = softmax(scores, scale);
317
+ for (let d = 0; d < hd; d++) { let a = 0.0; for (let j = 0; j < nK; j++) a = fr(a + fr(pr[j] * Vc[j * S + ho + d])); out[ho + d] = fr(a); }
318
+ }
319
+ return out;
320
+ };
321
+
322
+ // Autoregressive greedy transcription. Cross-attn K/V computed once; self-attn K/V
323
+ // cached and grown one token per step (true incremental decode). Suppresses the
324
+ // non-text special/timestamp tokens (keeps EOT as the stop). Returns generated text ids.
325
+ export function whisperDecodeGreedy(plan, store, encoderOut, n_enc, opts = {}) {
326
+ const { n_text_state: S, n_text_head: H, n_text_layer: NL, n_vocab } = plan.hparams;
327
+ const W = whisperSpecials(n_vocab);
328
+ const { lang = W.LANG_EN, task = W.TRANSCRIBE, maxNew = 224 } = opts;
329
+ const hd = S / H, scale = 1 / Math.sqrt(hd), FF = 4 * S;
330
+ const D = (name) => tensorF32(plan, store, name);
331
+ const tokEmb = D("decoder.token_embedding.weight"), posEmb = D("decoder.positional_embedding");
332
+ const dlnW = D("decoder.ln.weight"), dlnB = D("decoder.ln.bias");
333
+ const Lw = [], cK = [], cV = [];
334
+ for (let il = 0; il < NL; il++) {
335
+ const p = `decoder.blocks.${il}.`;
336
+ Lw[il] = {
337
+ aw: D(p + "attn_ln.weight"), ab: D(p + "attn_ln.bias"), qw: D(p + "attn.query.weight"), qb: D(p + "attn.query.bias"),
338
+ kw: D(p + "attn.key.weight"), vw: D(p + "attn.value.weight"), vb: D(p + "attn.value.bias"), ow: D(p + "attn.out.weight"), ob: D(p + "attn.out.bias"),
339
+ cw: D(p + "cross_attn_ln.weight"), cb: D(p + "cross_attn_ln.bias"), cqw: D(p + "cross_attn.query.weight"), cqb: D(p + "cross_attn.query.bias"), cow: D(p + "cross_attn.out.weight"), cob: D(p + "cross_attn.out.bias"),
340
+ mw: D(p + "mlp_ln.weight"), mb: D(p + "mlp_ln.bias"), m0: D(p + "mlp.0.weight"), m0b: D(p + "mlp.0.bias"), m2: D(p + "mlp.2.weight"), m2b: D(p + "mlp.2.bias"),
341
+ };
342
+ cK[il] = linear(encoderOut, n_enc, D(p + "cross_attn.key.weight"), S, S, null);
343
+ cV[il] = linear(encoderOut, n_enc, D(p + "cross_attn.value.weight"), S, S, D(p + "cross_attn.value.bias"));
344
+ }
345
+ const Kc = Array.from({ length: NL }, () => []), Vc = Array.from({ length: NL }, () => []);
346
+ const prompt = [W.SOT, lang, task, W.NO_TIMESTAMPS], gen = [];
347
+ const lin1 = (x, W, inD, outD, b) => linear(x, 1, W, inD, outD, b);
348
+ for (let p = 0; ; p++) {
349
+ const tok = p < prompt.length ? prompt[p] : gen[gen.length - 1];
350
+ const x = new Float32Array(S);
351
+ for (let d = 0; d < S; d++) x[d] = fr(tokEmb[tok * S + d] + posEmb[p * S + d]);
352
+ for (let il = 0; il < NL; il++) {
353
+ const w = Lw[il];
354
+ const an = layerNorm(x, w.aw, w.ab, LN_EPS);
355
+ const k = lin1(an, w.kw, S, S, null), v = lin1(an, w.vw, S, S, w.vb);
356
+ const kc = Kc[il], vc = Vc[il]; const base = kc.length; kc.length = base + S; vc.length = base + S;
357
+ for (let d = 0; d < S; d++) { kc[base + d] = k[d]; vc[base + d] = v[d]; }
358
+ const sa = oneAttn(lin1(an, w.qw, S, S, w.qb), kc, vc, p + 1, H, hd, scale);
359
+ const so = lin1(sa, w.ow, S, S, w.ob);
360
+ for (let d = 0; d < S; d++) x[d] = fr(x[d] + so[d]);
361
+ const cn = layerNorm(x, w.cw, w.cb, LN_EPS);
362
+ const co = lin1(oneAttn(lin1(cn, w.cqw, S, S, w.cqb), cK[il], cV[il], n_enc, H, hd, scale), w.cow, S, S, w.cob);
363
+ for (let d = 0; d < S; d++) x[d] = fr(x[d] + co[d]);
364
+ const mn = layerNorm(x, w.mw, w.mb, LN_EPS);
365
+ const h1 = lin1(mn, w.m0, S, FF, w.m0b); for (let i = 0; i < FF; i++) h1[i] = gelu(h1[i]);
366
+ const h2 = lin1(h1, w.m2, FF, S, w.m2b);
367
+ for (let d = 0; d < S; d++) x[d] = fr(x[d] + h2[d]);
368
+ }
369
+ if (p >= prompt.length - 1) {
370
+ const fn = layerNorm(x, dlnW, dlnB, LN_EPS);
371
+ let best = -1, bv = -Infinity;
372
+ for (let tk = 0; tk < n_vocab; tk++) {
373
+ if (tk > 50256 && tk !== W.EOT) continue; // text tokens + EOT only
374
+ let s = 0.0; const tb = tk * S; for (let d = 0; d < S; d++) s = fr(s + fr(fn[d] * tokEmb[tb + d]));
375
+ if (s > bv) { bv = s; best = tk; }
376
+ }
377
+ if (best === W.EOT || gen.length >= maxNew) break;
378
+ gen.push(best);
379
+ }
380
+ }
381
+ return gen;
382
+ }
383
+
384
+ // Detokenize text ids by concatenating the stored vocab token bytes, then UTF-8
385
+ // decode. whisper.cpp stores tokens as RAW UTF-8 text (literal spaces, multi-byte
386
+ // fallbacks) — NOT GPT-2 byte-encoded — so no byte-decoder is applied.
387
+ export function whisperDetok(modelBytes, ids) {
388
+ const { vocab } = parseWhisperHeader(modelBytes, { wantVocab: true });
389
+ let total = 0; for (const id of ids) if (id < vocab.tokens.length) total += vocab.tokens[id].length;
390
+ const out = new Uint8Array(total); let o = 0;
391
+ for (const id of ids) { if (id < vocab.tokens.length) { out.set(vocab.tokens[id], o); o += vocab.tokens[id].length; } }
392
+ return new TextDecoder().decode(out);
393
+ }
394
+
395
+ // Full pipeline: 16 kHz PCM16 WAV bytes → transcription text.
396
+ export function whisperTranscribe(forged, modelBytes, wavBytes, opts = {}) {
397
+ const { plan, blocks } = forged, store = { get: (h) => blocks.get(h) };
398
+ const filters = whisperMelFilters(plan, store);
399
+ const { mel } = logMelSpectrogram(readWavPCM16(wavBytes), filters, { nMel: plan.hparams.n_mels, nBins: plan.mel.n_fft }); // n_mels=128 on large-v3
400
+ const stem = whisperConvStem(plan, store, mel);
401
+ const enc = whisperEncoder(plan, store, stem.x, stem.n_ctx);
402
+ const ids = whisperDecodeGreedy(plan, store, enc, stem.n_ctx, opts);
403
+ return { ids, text: whisperDetok(modelBytes, ids) };
404
+ }
b/547a3d20ab71138e1ee98071e4bb37f9227ff8244be284088f69f4087ddb504f ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Qa=Object.defineProperty;var be=(e,a)=>{for(var t in a)Qa(e,t,{get:a[t],enumerable:!0})};import*as $a from"react";import{forwardRef as et,createElement as at}from"react";var Ne=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),de=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Ya,createElement as Ke}from"react";var Xe={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var _e=Ya(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:u,...d},n)=>Ke("svg",{ref:n,...Xe,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:de("lucide",r),...d},[...u.map(([s,L])=>Ke(s,L)),...Array.isArray(l)?l:[l]]));var Ze=(e,a)=>{let t=et(({className:o,...r},l)=>at(_e,{ref:l,iconNode:a,className:de(`lucide-${Ne(e)}`,o),...r}));return t.displayName=`${e}`,t};var Y=Ze("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);import*as aa from"react";import*as pt from"react-dom";var Z={};be(Z,{Root:()=>ot,Slot:()=>ot,Slottable:()=>rt,createSlot:()=>fe,createSlottable:()=>ea});import*as b from"react";import*as je from"react";function Je(e,a){if(typeof e=="function")return e(a);e!=null&&(e.current=a)}function tt(...e){return a=>{let t=!1,o=e.map(r=>{let l=Je(r,a);return!t&&typeof l=="function"&&(t=!0),l});if(t)return()=>{for(let r=0;r<o.length;r++){let l=o[r];typeof l=="function"?l():Je(e[r],null)}}}}function $e(...e){return je.useCallback(tt(...e),e)}function fe(e){let a=b.forwardRef((t,o)=>{let{children:r,...l}=t,u=null,d=!1,n=[];Qe(r)&&typeof se=="function"&&(r=se(r._payload)),b.Children.forEach(r,I=>{if(st(I)){d=!0;let g=I,h="child"in g.props?g.props.child:g.props.children;Qe(h)&&typeof se=="function"&&(h=se(h._payload)),u=lt(g,h),n.push(u?.props?.children)}else n.push(I)}),u?u=b.cloneElement(u,void 0,n):!d&&b.Children.count(r)===1&&b.isValidElement(r)&&(u=r);let s=u?dt(u):void 0,L=$e(o,s);if(!u){if(r||r===0)throw new Error(d?ct(e):nt(e));return r}let x=ut(l,u.props??{});return u.type!==b.Fragment&&(x.ref=o?L:s),b.cloneElement(u,x)});return a.displayName=`${e}.Slot`,a}var ot=fe("Slot"),Ye=Symbol.for("radix.slottable");function ea(e){let a=t=>"child"in t?t.children(t.child):t.children;return a.displayName=`${e}.Slottable`,a.__radixId=Ye,a}var rt=ea("Slottable"),lt=(e,a)=>{if("child"in e.props){let t=e.props.child;return b.isValidElement(t)?b.cloneElement(t,void 0,e.props.children(t.props.children)):null}return b.isValidElement(a)?a:null};function ut(e,a){let t={...a};for(let o in a){let r=e[o],l=a[o];/^on[A-Z]/.test(o)?r&&l?t[o]=(...d)=>{let n=l(...d);return r(...d),n}:r&&(t[o]=r):o==="style"?t[o]={...r,...l}:o==="className"&&(t[o]=[r,l].filter(Boolean).join(" "))}return{...e,...t}}function dt(e){let a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning;return t?e.ref:(a=Object.getOwnPropertyDescriptor(e,"ref")?.get,t=a&&"isReactWarning"in a&&a.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}function st(e){return b.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ye}var ft=Symbol.for("react.lazy");function Qe(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===ft&&"_payload"in e&&it(e._payload)}function it(e){return typeof e=="object"&&e!==null&&"then"in e}var nt=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,ct=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,se=b[" use ".trim().toString()];import{jsx as mt}from"react/jsx-runtime";var Lt=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],J=Lt.reduce((e,a)=>{let t=fe(`Primitive.${a}`),o=aa.forwardRef((r,l)=>{let{asChild:u,...d}=r,n=u?t:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),mt(n,{...d,ref:l})});return o.displayName=`Primitive.${a}`,{...e,[a]:o}},{});import*as q from"react";import{jsx as xt}from"react/jsx-runtime";function ta(e,a=[]){let t=[];function o(l,u){let d=q.createContext(u);d.displayName=l+"Context";let n=t.length;t=[...t,u];let s=x=>{let{scope:I,children:g,...h}=x,S=I?.[e]?.[n]||d,k=q.useMemo(()=>h,Object.values(h));return xt(S.Provider,{value:k,children:g})};s.displayName=l+"Provider";function L(x,I){let g=I?.[e]?.[n]||d,h=q.useContext(g);if(h)return h;if(u!==void 0)return u;throw new Error(`\`${x}\` must be used within \`${l}\``)}return[s,L]}let r=()=>{let l=t.map(u=>q.createContext(u));return function(d){let n=d?.[e]||l;return q.useMemo(()=>({[`__scope${e}`]:{...d,[e]:n}}),[d,n])}};return r.scopeName=e,[o,It(r,...a)]}function It(...e){let a=e[0];if(e.length===1)return a;let t=()=>{let o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(l){let u=o.reduce((d,{useScope:n,scopeName:s})=>{let x=n(l)[`__scope${s}`];return{...d,...x}},{});return q.useMemo(()=>({[`__scope${a.scopeName}`]:u}),[u])}};return t.scopeName=a.scopeName,t}import*as oa from"react";var ie=globalThis?.document?oa.useLayoutEffect:()=>{};import*as j from"react";function ra(e){let a=j.useRef(e);return j.useEffect(()=>{a.current=e}),j.useMemo(()=>(...t)=>a.current?.(...t),[])}var $={};be($,{Avatar:()=>ve,AvatarFallback:()=>Re,AvatarImage:()=>ye,Fallback:()=>yt,Image:()=>vt,Root:()=>At,createAvatarScope:()=>kt});import*as B from"react";import*as gt from"react";import*as ne from"react";var Pe=!1;function Ct(){let[e,a]=ne.useState(Pe);return ne.useEffect(()=>{Pe||(Pe=!0,a(!0))},[]),e}var la=gt[" useSyncExternalStore ".trim().toString()];function ht(){return()=>{}}function St(){return la(ht,()=>!0,()=>!1)}var ua=typeof la=="function"?St:Ct;import{jsx as ce}from"react/jsx-runtime";var Ae="Avatar",[wt,kt]=ta(Ae),[bt,sa]=wt(Ae),ve=B.forwardRef((e,a)=>{let{__scopeAvatar:t,...o}=e,[r,l]=B.useState("idle");return ce(bt,{scope:t,imageLoadingStatus:r,onImageLoadingStatusChange:l,children:ce(J.span,{...o,ref:a})})});ve.displayName=Ae;var fa="AvatarImage",ye=B.forwardRef((e,a)=>{let{__scopeAvatar:t,src:o,onLoadingStatusChange:r=()=>{},...l}=e,u=sa(fa,t),d=Pt(o,l),n=ra(s=>{r(s),u.onImageLoadingStatusChange(s)});return ie(()=>{d!=="idle"&&n(d)},[d,n]),d==="loaded"?ce(J.img,{...l,ref:a,src:o}):null});ye.displayName=fa;var ia="AvatarFallback",Re=B.forwardRef((e,a)=>{let{__scopeAvatar:t,delayMs:o,...r}=e,l=sa(ia,t),[u,d]=B.useState(o===void 0);return B.useEffect(()=>{if(o!==void 0){let n=window.setTimeout(()=>d(!0),o);return()=>window.clearTimeout(n)}},[o]),u&&l.imageLoadingStatus!=="loaded"?ce(J.span,{...r,ref:a}):null});Re.displayName=ia;function da(e,a){return e?a?(e.src!==a&&(e.src=a),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function Pt(e,{referrerPolicy:a,crossOrigin:t}){let o=ua(),r=B.useRef(null),l=o?(r.current||(r.current=new window.Image),r.current):null,[u,d]=B.useState(()=>da(l,e));return ie(()=>{d(da(l,e))},[l,e]),ie(()=>{let n=x=>()=>{d(x)};if(!l)return;let s=n("loaded"),L=n("error");return l.addEventListener("load",s),l.addEventListener("error",L),a&&(l.referrerPolicy=a),typeof t=="string"&&(l.crossOrigin=t),()=>{l.removeEventListener("load",s),l.removeEventListener("error",L)}},[l,t,a]),u}var At=ve,vt=ye,yt=Re;var pe={};be(pe,{Root:()=>Dt,Separator:()=>Be});import*as ca from"react";import{jsx as Rt}from"react/jsx-runtime";var Bt="Separator",na="horizontal",Mt=["horizontal","vertical"],Be=ca.forwardRef((e,a)=>{let{decorative:t,orientation:o=na,...r}=e,l=Ft(o)?o:na,d=t?{role:"none"}:{"aria-orientation":l==="vertical"?l:void 0,role:"separator"};return Rt(J.div,{"data-orientation":l,...d,...r,ref:a})});Be.displayName=Bt;function Ft(e){return Mt.includes(e)}var Dt=Be;function pa(e){var a,t,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(a=0;a<r;a++)e[a]&&(t=pa(e[a]))&&(o&&(o+=" "),o+=t)}else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}function me(){for(var e,a,t=0,o="",r=arguments.length;t<r;t++)(e=arguments[t])&&(a=pa(e))&&(o&&(o+=" "),o+=a);return o}var Tt=(e,a)=>{let t=new Array(e.length+a.length);for(let o=0;o<e.length;o++)t[o]=e[o];for(let o=0;o<a.length;o++)t[e.length+o]=a[o];return t},qt=(e,a)=>({classGroupId:e,validator:a}),ha=(e=new Map,a=null,t)=>({nextPart:e,validators:a,classGroupId:t}),Ie="-",ma=[],Ot="arbitrary..",Ut=e=>{let a=zt(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return Ht(u);let d=u.split(Ie),n=d[0]===""&&d.length>1?1:0;return Sa(d,n,a)},getConflictingClassGroupIds:(u,d)=>{if(d){let n=o[u],s=t[u];return n?s?Tt(s,n):n:s||ma}return t[u]||ma}}},Sa=(e,a,t)=>{if(e.length-a===0)return t.classGroupId;let r=e[a],l=t.nextPart.get(r);if(l){let s=Sa(e,a+1,l);if(s)return s}let u=t.validators;if(u===null)return;let d=a===0?e.join(Ie):e.slice(a).join(Ie),n=u.length;for(let s=0;s<n;s++){let L=u[s];if(L.validator(d))return L.classGroupId}},Ht=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let a=e.slice(1,-1),t=a.indexOf(":"),o=a.slice(0,t);return o?Ot+o:void 0})(),zt=e=>{let{theme:a,classGroups:t}=e;return Gt(t,a)},Gt=(e,a)=>{let t=ha();for(let o in e){let r=e[o];De(r,t,o,a)}return t},De=(e,a,t,o)=>{let r=e.length;for(let l=0;l<r;l++){let u=e[l];Vt(u,a,t,o)}},Vt=(e,a,t,o)=>{if(typeof e=="string"){Et(e,a,t);return}if(typeof e=="function"){Wt(e,a,t,o);return}Nt(e,a,t,o)},Et=(e,a,t)=>{let o=e===""?a:wa(a,e);o.classGroupId=t},Wt=(e,a,t,o)=>{if(Xt(e)){De(e(o),a,t,o);return}a.validators===null&&(a.validators=[]),a.validators.push(qt(t,e))},Nt=(e,a,t,o)=>{let r=Object.entries(e),l=r.length;for(let u=0;u<l;u++){let[d,n]=r[u];De(n,wa(a,d),t,o)}},wa=(e,a)=>{let t=e,o=a.split(Ie),r=o.length;for(let l=0;l<r;l++){let u=o[l],d=t.nextPart.get(u);d||(d=ha(),t.nextPart.set(u,d)),t=d}return t},Xt=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Kt=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=Object.create(null),o=Object.create(null),r=(l,u)=>{t[l]=u,a++,a>e&&(a=0,o=t,t=Object.create(null))};return{get(l){let u=t[l];if(u!==void 0)return u;if((u=o[l])!==void 0)return r(l,u),u},set(l,u){l in t?t[l]=u:r(l,u)}}},Fe="!",La=":",_t=[],xa=(e,a,t,o,r)=>({modifiers:e,hasImportantModifier:a,baseClassName:t,maybePostfixModifierPosition:o,isExternal:r}),Zt=e=>{let{prefix:a,experimentalParseClassName:t}=e,o=r=>{let l=[],u=0,d=0,n=0,s,L=r.length;for(let S=0;S<L;S++){let k=r[S];if(u===0&&d===0){if(k===La){l.push(r.slice(n,S)),n=S+1;continue}if(k==="/"){s=S;continue}}k==="["?u++:k==="]"?u--:k==="("?d++:k===")"&&d--}let x=l.length===0?r:r.slice(n),I=x,g=!1;x.endsWith(Fe)?(I=x.slice(0,-1),g=!0):x.startsWith(Fe)&&(I=x.slice(1),g=!0);let h=s&&s>n?s-n:void 0;return xa(l,g,I,h)};if(a){let r=a+La,l=o;o=u=>u.startsWith(r)?l(u.slice(r.length)):xa(_t,!1,u,void 0,!0)}if(t){let r=o;o=l=>t({className:l,parseClassName:r})}return o},Jt=e=>{let a=new Map;return e.orderSensitiveModifiers.forEach((t,o)=>{a.set(t,1e6+o)}),t=>{let o=[],r=[];for(let l=0;l<t.length;l++){let u=t[l],d=u[0]==="[",n=a.has(u);d||n?(r.length>0&&(r.sort(),o.push(...r),r=[]),o.push(u)):r.push(u)}return r.length>0&&(r.sort(),o.push(...r)),o}},jt=e=>({cache:Kt(e.cacheSize),parseClassName:Zt(e),sortModifiers:Jt(e),postfixLookupClassGroupIds:$t(e),...Ut(e)}),$t=e=>{let a=Object.create(null),t=e.postfixLookupClassGroups;if(t)for(let o=0;o<t.length;o++)a[t[o]]=!0;return a},Qt=/\s+/,Yt=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r,sortModifiers:l,postfixLookupClassGroupIds:u}=a,d=[],n=e.trim().split(Qt),s="";for(let L=n.length-1;L>=0;L-=1){let x=n[L],{isExternal:I,modifiers:g,hasImportantModifier:h,baseClassName:S,maybePostfixModifierPosition:k}=t(x);if(I){s=x+(s.length>0?" "+s:s);continue}let G=!!k,y;if(G){let T=S.substring(0,k);y=o(T);let c=y&&u[y]?o(S):void 0;c&&c!==y&&(y=c,G=!1)}else y=o(S);if(!y){if(!G){s=x+(s.length>0?" "+s:s);continue}if(y=o(S),!y){s=x+(s.length>0?" "+s:s);continue}G=!1}let Q=g.length===0?"":g.length===1?g[0]:l(g).join(":"),N=h?Q+Fe:Q,X=N+y;if(d.indexOf(X)>-1)continue;d.push(X);let K=r(y,G);for(let T=0;T<K.length;++T){let c=K[T];d.push(N+c)}s=x+(s.length>0?" "+s:s)}return s},eo=(...e)=>{let a=0,t,o,r="";for(;a<e.length;)(t=e[a++])&&(o=ka(t))&&(r&&(r+=" "),r+=o);return r},ka=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=ka(e[o]))&&(t&&(t+=" "),t+=a);return t},ao=(e,...a)=>{let t,o,r,l,u=n=>{let s=a.reduce((L,x)=>x(L),e());return t=jt(s),o=t.cache.get,r=t.cache.set,l=d,d(n)},d=n=>{let s=o(n);if(s)return s;let L=Yt(n,t);return r(n,L),L};return l=u,(...n)=>l(eo(...n))},to=[],C=e=>{let a=t=>t[e]||to;return a.isThemeGetter=!0,a},ba=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Pa=/^\((?:(\w[\w-]*):)?(.+)\)$/i,oo=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,ro=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,lo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,uo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,so=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,fo=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,U=e=>oo.test(e),m=e=>!!e&&!Number.isNaN(Number(e)),D=e=>!!e&&Number.isInteger(Number(e)),Me=e=>e.endsWith("%")&&m(e.slice(0,-1)),O=e=>ro.test(e),Aa=()=>!0,io=e=>lo.test(e)&&!uo.test(e),Te=()=>!1,no=e=>so.test(e),co=e=>fo.test(e),po=e=>!f(e)&&!i(e),mo=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),Lo=e=>H(e,Ra,Te),f=e=>ba.test(e),E=e=>H(e,Ba,io),Ia=e=>H(e,ko,m),xo=e=>H(e,Fa,Aa),Io=e=>H(e,Ma,Te),ga=e=>H(e,va,Te),go=e=>H(e,ya,co),Le=e=>H(e,Da,no),i=e=>Pa.test(e),ee=e=>W(e,Ba),Co=e=>W(e,Ma),Ca=e=>W(e,va),ho=e=>W(e,Ra),So=e=>W(e,ya),xe=e=>W(e,Da,!0),wo=e=>W(e,Fa,!0),H=(e,a,t)=>{let o=ba.exec(e);return o?o[1]?a(o[1]):t(o[2]):!1},W=(e,a,t=!1)=>{let o=Pa.exec(e);return o?o[1]?a(o[1]):t:!1},va=e=>e==="position"||e==="percentage",ya=e=>e==="image"||e==="url",Ra=e=>e==="length"||e==="size"||e==="bg-size",Ba=e=>e==="length",ko=e=>e==="number",Ma=e=>e==="family-name",Fa=e=>e==="number"||e==="weight",Da=e=>e==="shadow";var bo=()=>{let e=C("color"),a=C("font"),t=C("text"),o=C("font-weight"),r=C("tracking"),l=C("leading"),u=C("breakpoint"),d=C("container"),n=C("spacing"),s=C("radius"),L=C("shadow"),x=C("inset-shadow"),I=C("text-shadow"),g=C("drop-shadow"),h=C("blur"),S=C("perspective"),k=C("aspect"),G=C("ease"),y=C("animate"),Q=()=>["auto","avoid","all","avoid-page","page","left","right","column"],N=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],X=()=>[...N(),i,f],K=()=>["auto","hidden","clip","visible","scroll"],T=()=>["auto","contain","none"],c=()=>[i,f,n],R=()=>[U,"full","auto",...c()],Oe=()=>[D,"none","subgrid",i,f],Ue=()=>["auto",{span:["full",D,i,f]},D,i,f],te=()=>[D,"auto",i,f],He=()=>["auto","min","max","fr",i,f],Ce=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],_=()=>["start","end","center","stretch","center-safe","end-safe"],M=()=>["auto",...c()],V=()=>[U,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...c()],he=()=>[U,"screen","full","dvw","lvw","svw","min","max","fit",...c()],Se=()=>[U,"screen","full","lh","dvh","lvh","svh","min","max","fit",...c()],p=()=>[e,i,f],ze=()=>[...N(),Ca,ga,{position:[i,f]}],Ge=()=>["no-repeat",{repeat:["","x","y","space","round"]}],Ve=()=>["auto","cover","contain",ho,Lo,{size:[i,f]}],we=()=>[Me,ee,E],A=()=>["","none","full",s,i,f],v=()=>["",m,ee,E],oe=()=>["solid","dashed","dotted","double"],Ee=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],w=()=>[m,Me,Ca,ga],We=()=>["","none",h,i,f],re=()=>["none",m,i,f],le=()=>["none",m,i,f],ke=()=>[m,i,f],ue=()=>[U,"full",...c()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[O],breakpoint:[O],color:[Aa],container:[O],"drop-shadow":[O],ease:["in","out","in-out"],font:[po],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[O],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[O],shadow:[O],spacing:["px",m],text:[O],"text-shadow":[O],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",U,f,i,k]}],container:["container"],"container-type":[{"@container":["","normal","size",i,f]}],"container-named":[mo],columns:[{columns:[m,f,i,d]}],"break-after":[{"break-after":Q()}],"break-before":[{"break-before":Q()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:X()}],overflow:[{overflow:K()}],"overflow-x":[{"overflow-x":K()}],"overflow-y":[{"overflow-y":K()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:R()}],"inset-x":[{"inset-x":R()}],"inset-y":[{"inset-y":R()}],start:[{"inset-s":R(),start:R()}],end:[{"inset-e":R(),end:R()}],"inset-bs":[{"inset-bs":R()}],"inset-be":[{"inset-be":R()}],top:[{top:R()}],right:[{right:R()}],bottom:[{bottom:R()}],left:[{left:R()}],visibility:["visible","invisible","collapse"],z:[{z:[D,"auto",i,f]}],basis:[{basis:[U,"full","auto",d,...c()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[m,U,"auto","initial","none",f]}],grow:[{grow:["",m,i,f]}],shrink:[{shrink:["",m,i,f]}],order:[{order:[D,"first","last","none",i,f]}],"grid-cols":[{"grid-cols":Oe()}],"col-start-end":[{col:Ue()}],"col-start":[{"col-start":te()}],"col-end":[{"col-end":te()}],"grid-rows":[{"grid-rows":Oe()}],"row-start-end":[{row:Ue()}],"row-start":[{"row-start":te()}],"row-end":[{"row-end":te()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":He()}],"auto-rows":[{"auto-rows":He()}],gap:[{gap:c()}],"gap-x":[{"gap-x":c()}],"gap-y":[{"gap-y":c()}],"justify-content":[{justify:[...Ce(),"normal"]}],"justify-items":[{"justify-items":[..._(),"normal"]}],"justify-self":[{"justify-self":["auto",..._()]}],"align-content":[{content:["normal",...Ce()]}],"align-items":[{items:[..._(),{baseline:["","last"]}]}],"align-self":[{self:["auto",..._(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ce()}],"place-items":[{"place-items":[..._(),"baseline"]}],"place-self":[{"place-self":["auto",..._()]}],p:[{p:c()}],px:[{px:c()}],py:[{py:c()}],ps:[{ps:c()}],pe:[{pe:c()}],pbs:[{pbs:c()}],pbe:[{pbe:c()}],pt:[{pt:c()}],pr:[{pr:c()}],pb:[{pb:c()}],pl:[{pl:c()}],m:[{m:M()}],mx:[{mx:M()}],my:[{my:M()}],ms:[{ms:M()}],me:[{me:M()}],mbs:[{mbs:M()}],mbe:[{mbe:M()}],mt:[{mt:M()}],mr:[{mr:M()}],mb:[{mb:M()}],ml:[{ml:M()}],"space-x":[{"space-x":c()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":c()}],"space-y-reverse":["space-y-reverse"],size:[{size:V()}],"inline-size":[{inline:["auto",...he()]}],"min-inline-size":[{"min-inline":["auto",...he()]}],"max-inline-size":[{"max-inline":["none",...he()]}],"block-size":[{block:["auto",...Se()]}],"min-block-size":[{"min-block":["auto",...Se()]}],"max-block-size":[{"max-block":["none",...Se()]}],w:[{w:[d,"screen",...V()]}],"min-w":[{"min-w":[d,"screen","none",...V()]}],"max-w":[{"max-w":[d,"screen","none","prose",{screen:[u]},...V()]}],h:[{h:["screen","lh",...V()]}],"min-h":[{"min-h":["screen","lh","none",...V()]}],"max-h":[{"max-h":["screen","lh",...V()]}],"font-size":[{text:["base",t,ee,E]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,wo,xo]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Me,f]}],"font-family":[{font:[Co,Io,a]}],"font-features":[{"font-features":[f]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,i,f]}],"line-clamp":[{"line-clamp":[m,"none",i,Ia]}],leading:[{leading:[l,...c()]}],"list-image":[{"list-image":["none",i,f]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",i,f]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:p()}],"text-color":[{text:p()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...oe(),"wavy"]}],"text-decoration-thickness":[{decoration:[m,"from-font","auto",i,E]}],"text-decoration-color":[{decoration:p()}],"underline-offset":[{"underline-offset":[m,"auto",i,f]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:c()}],"tab-size":[{tab:[D,i,f]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",i,f]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",i,f]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ze()}],"bg-repeat":[{bg:Ge()}],"bg-size":[{bg:Ve()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},D,i,f],radial:["",i,f],conic:[D,i,f]},So,go]}],"bg-color":[{bg:p()}],"gradient-from-pos":[{from:we()}],"gradient-via-pos":[{via:we()}],"gradient-to-pos":[{to:we()}],"gradient-from":[{from:p()}],"gradient-via":[{via:p()}],"gradient-to":[{to:p()}],rounded:[{rounded:A()}],"rounded-s":[{"rounded-s":A()}],"rounded-e":[{"rounded-e":A()}],"rounded-t":[{"rounded-t":A()}],"rounded-r":[{"rounded-r":A()}],"rounded-b":[{"rounded-b":A()}],"rounded-l":[{"rounded-l":A()}],"rounded-ss":[{"rounded-ss":A()}],"rounded-se":[{"rounded-se":A()}],"rounded-ee":[{"rounded-ee":A()}],"rounded-es":[{"rounded-es":A()}],"rounded-tl":[{"rounded-tl":A()}],"rounded-tr":[{"rounded-tr":A()}],"rounded-br":[{"rounded-br":A()}],"rounded-bl":[{"rounded-bl":A()}],"border-w":[{border:v()}],"border-w-x":[{"border-x":v()}],"border-w-y":[{"border-y":v()}],"border-w-s":[{"border-s":v()}],"border-w-e":[{"border-e":v()}],"border-w-bs":[{"border-bs":v()}],"border-w-be":[{"border-be":v()}],"border-w-t":[{"border-t":v()}],"border-w-r":[{"border-r":v()}],"border-w-b":[{"border-b":v()}],"border-w-l":[{"border-l":v()}],"divide-x":[{"divide-x":v()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":v()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...oe(),"hidden","none"]}],"divide-style":[{divide:[...oe(),"hidden","none"]}],"border-color":[{border:p()}],"border-color-x":[{"border-x":p()}],"border-color-y":[{"border-y":p()}],"border-color-s":[{"border-s":p()}],"border-color-e":[{"border-e":p()}],"border-color-bs":[{"border-bs":p()}],"border-color-be":[{"border-be":p()}],"border-color-t":[{"border-t":p()}],"border-color-r":[{"border-r":p()}],"border-color-b":[{"border-b":p()}],"border-color-l":[{"border-l":p()}],"divide-color":[{divide:p()}],"outline-style":[{outline:[...oe(),"none","hidden"]}],"outline-offset":[{"outline-offset":[m,i,f]}],"outline-w":[{outline:["",m,ee,E]}],"outline-color":[{outline:p()}],shadow:[{shadow:["","none",L,xe,Le]}],"shadow-color":[{shadow:p()}],"inset-shadow":[{"inset-shadow":["none",x,xe,Le]}],"inset-shadow-color":[{"inset-shadow":p()}],"ring-w":[{ring:v()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:p()}],"ring-offset-w":[{"ring-offset":[m,E]}],"ring-offset-color":[{"ring-offset":p()}],"inset-ring-w":[{"inset-ring":v()}],"inset-ring-color":[{"inset-ring":p()}],"text-shadow":[{"text-shadow":["none",I,xe,Le]}],"text-shadow-color":[{"text-shadow":p()}],opacity:[{opacity:[m,i,f]}],"mix-blend":[{"mix-blend":[...Ee(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Ee()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[m]}],"mask-image-linear-from-pos":[{"mask-linear-from":w()}],"mask-image-linear-to-pos":[{"mask-linear-to":w()}],"mask-image-linear-from-color":[{"mask-linear-from":p()}],"mask-image-linear-to-color":[{"mask-linear-to":p()}],"mask-image-t-from-pos":[{"mask-t-from":w()}],"mask-image-t-to-pos":[{"mask-t-to":w()}],"mask-image-t-from-color":[{"mask-t-from":p()}],"mask-image-t-to-color":[{"mask-t-to":p()}],"mask-image-r-from-pos":[{"mask-r-from":w()}],"mask-image-r-to-pos":[{"mask-r-to":w()}],"mask-image-r-from-color":[{"mask-r-from":p()}],"mask-image-r-to-color":[{"mask-r-to":p()}],"mask-image-b-from-pos":[{"mask-b-from":w()}],"mask-image-b-to-pos":[{"mask-b-to":w()}],"mask-image-b-from-color":[{"mask-b-from":p()}],"mask-image-b-to-color":[{"mask-b-to":p()}],"mask-image-l-from-pos":[{"mask-l-from":w()}],"mask-image-l-to-pos":[{"mask-l-to":w()}],"mask-image-l-from-color":[{"mask-l-from":p()}],"mask-image-l-to-color":[{"mask-l-to":p()}],"mask-image-x-from-pos":[{"mask-x-from":w()}],"mask-image-x-to-pos":[{"mask-x-to":w()}],"mask-image-x-from-color":[{"mask-x-from":p()}],"mask-image-x-to-color":[{"mask-x-to":p()}],"mask-image-y-from-pos":[{"mask-y-from":w()}],"mask-image-y-to-pos":[{"mask-y-to":w()}],"mask-image-y-from-color":[{"mask-y-from":p()}],"mask-image-y-to-color":[{"mask-y-to":p()}],"mask-image-radial":[{"mask-radial":[i,f]}],"mask-image-radial-from-pos":[{"mask-radial-from":w()}],"mask-image-radial-to-pos":[{"mask-radial-to":w()}],"mask-image-radial-from-color":[{"mask-radial-from":p()}],"mask-image-radial-to-color":[{"mask-radial-to":p()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":N()}],"mask-image-conic-pos":[{"mask-conic":[m]}],"mask-image-conic-from-pos":[{"mask-conic-from":w()}],"mask-image-conic-to-pos":[{"mask-conic-to":w()}],"mask-image-conic-from-color":[{"mask-conic-from":p()}],"mask-image-conic-to-color":[{"mask-conic-to":p()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ze()}],"mask-repeat":[{mask:Ge()}],"mask-size":[{mask:Ve()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",i,f]}],filter:[{filter:["","none",i,f]}],blur:[{blur:We()}],brightness:[{brightness:[m,i,f]}],contrast:[{contrast:[m,i,f]}],"drop-shadow":[{"drop-shadow":["","none",g,xe,Le]}],"drop-shadow-color":[{"drop-shadow":p()}],grayscale:[{grayscale:["",m,i,f]}],"hue-rotate":[{"hue-rotate":[m,i,f]}],invert:[{invert:["",m,i,f]}],saturate:[{saturate:[m,i,f]}],sepia:[{sepia:["",m,i,f]}],"backdrop-filter":[{"backdrop-filter":["","none",i,f]}],"backdrop-blur":[{"backdrop-blur":We()}],"backdrop-brightness":[{"backdrop-brightness":[m,i,f]}],"backdrop-contrast":[{"backdrop-contrast":[m,i,f]}],"backdrop-grayscale":[{"backdrop-grayscale":["",m,i,f]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m,i,f]}],"backdrop-invert":[{"backdrop-invert":["",m,i,f]}],"backdrop-opacity":[{"backdrop-opacity":[m,i,f]}],"backdrop-saturate":[{"backdrop-saturate":[m,i,f]}],"backdrop-sepia":[{"backdrop-sepia":["",m,i,f]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":c()}],"border-spacing-x":[{"border-spacing-x":c()}],"border-spacing-y":[{"border-spacing-y":c()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",i,f]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[m,"initial",i,f]}],ease:[{ease:["linear","initial",G,i,f]}],delay:[{delay:[m,i,f]}],animate:[{animate:["none",y,i,f]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[S,i,f]}],"perspective-origin":[{"perspective-origin":X()}],rotate:[{rotate:re()}],"rotate-x":[{"rotate-x":re()}],"rotate-y":[{"rotate-y":re()}],"rotate-z":[{"rotate-z":re()}],scale:[{scale:le()}],"scale-x":[{"scale-x":le()}],"scale-y":[{"scale-y":le()}],"scale-z":[{"scale-z":le()}],"scale-3d":["scale-3d"],skew:[{skew:ke()}],"skew-x":[{"skew-x":ke()}],"skew-y":[{"skew-y":ke()}],transform:[{transform:[i,f,"","none","gpu","cpu"]}],"transform-origin":[{origin:X()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ue()}],"translate-x":[{"translate-x":ue()}],"translate-y":[{"translate-y":ue()}],"translate-z":[{"translate-z":ue()}],"translate-none":["translate-none"],zoom:[{zoom:[D,i,f]}],accent:[{accent:p()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:p()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",i,f]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":p()}],"scrollbar-track-color":[{"scrollbar-track":p()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":c()}],"scroll-mx":[{"scroll-mx":c()}],"scroll-my":[{"scroll-my":c()}],"scroll-ms":[{"scroll-ms":c()}],"scroll-me":[{"scroll-me":c()}],"scroll-mbs":[{"scroll-mbs":c()}],"scroll-mbe":[{"scroll-mbe":c()}],"scroll-mt":[{"scroll-mt":c()}],"scroll-mr":[{"scroll-mr":c()}],"scroll-mb":[{"scroll-mb":c()}],"scroll-ml":[{"scroll-ml":c()}],"scroll-p":[{"scroll-p":c()}],"scroll-px":[{"scroll-px":c()}],"scroll-py":[{"scroll-py":c()}],"scroll-ps":[{"scroll-ps":c()}],"scroll-pe":[{"scroll-pe":c()}],"scroll-pbs":[{"scroll-pbs":c()}],"scroll-pbe":[{"scroll-pbe":c()}],"scroll-pt":[{"scroll-pt":c()}],"scroll-pr":[{"scroll-pr":c()}],"scroll-pb":[{"scroll-pb":c()}],"scroll-pl":[{"scroll-pl":c()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",i,f]}],fill:[{fill:["none",...p()]}],"stroke-w":[{stroke:[m,ee,E,Ia]}],stroke:[{stroke:["none",...p()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var Ta=ao(bo);function P(...e){return Ta(me(e))}import{jsx as qe}from"react/jsx-runtime";function qa({className:e,size:a="default",...t}){return qe($.Root,{"data-slot":"avatar","data-size":a,className:P("group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",e),...t})}function Oa({className:e,...a}){return qe($.Image,{"data-slot":"avatar-image",className:P("aspect-square size-full",e),...a})}function Ua({className:e,...a}){return qe($.Fallback,{"data-slot":"avatar-fallback",className:P("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",e),...a})}var Ha=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,za=me,ae=(e,a)=>t=>{var o;if(a?.variants==null)return za(e,t?.class,t?.className);let{variants:r,defaultVariants:l}=a,u=Object.keys(r).map(s=>{let L=t?.[s],x=l?.[s];if(L===null)return null;let I=Ha(L)||Ha(x);return r[s][I]}),d=t&&Object.entries(t).reduce((s,L)=>{let[x,I]=L;return I===void 0||(s[x]=I),s},{}),n=a==null||(o=a.compoundVariants)===null||o===void 0?void 0:o.reduce((s,L)=>{let{class:x,className:I,...g}=L;return Object.entries(g).every(h=>{let[S,k]=h;return Array.isArray(k)?k.includes({...l,...d}[S]):{...l,...d}[S]===k})?[...s,x,I]:s},[]);return za(e,u,n,t?.class,t?.className)};import{jsx as Ao}from"react/jsx-runtime";var Po=ae("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function Ga({className:e,variant:a="default",size:t="default",asChild:o=!1,...r}){let l=o?Z.Root:"button";return Ao(l,{"data-slot":"button","data-variant":a,"data-size":t,className:P(Po({variant:a,size:t,className:e})),...r})}import{jsx as vo}from"react/jsx-runtime";function Va({className:e,orientation:a="horizontal",decorative:t=!0,...o}){return vo(pe.Root,{"data-slot":"separator",decorative:t,orientation:a,className:P("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...o})}import{jsx as z}from"react/jsx-runtime";function Ea({className:e,...a}){return z("div",{role:"list","data-slot":"item-group",className:P("group/item-group flex flex-col",e),...a})}function Wa({className:e,...a}){return z(Va,{"data-slot":"item-separator",orientation:"horizontal",className:P("my-0",e),...a})}var yo=ae("group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-accent/50",{variants:{variant:{default:"bg-transparent",outline:"border-border",muted:"bg-muted/50"},size:{default:"gap-4 p-4",sm:"gap-2.5 px-4 py-3"}},defaultVariants:{variant:"default",size:"default"}});function Na({className:e,variant:a="default",size:t="default",asChild:o=!1,...r}){let l=o?Z.Root:"div";return z(l,{"data-slot":"item","data-variant":a,"data-size":t,className:P(yo({variant:a,size:t,className:e})),...r})}var Ro=ae("flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none",{variants:{variant:{default:"bg-transparent",icon:"size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4",image:"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover"}},defaultVariants:{variant:"default"}});function Xa({className:e,variant:a="default",...t}){return z("div",{"data-slot":"item-media","data-variant":a,className:P(Ro({variant:a,className:e})),...t})}function Ka({className:e,...a}){return z("div",{"data-slot":"item-content",className:P("flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none",e),...a})}function _a({className:e,...a}){return z("div",{"data-slot":"item-title",className:P("flex w-fit items-center gap-2 text-sm leading-snug font-medium",e),...a})}function Za({className:e,...a}){return z("p",{"data-slot":"item-description",className:P("line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground","[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",e),...a})}function Ja({className:e,...a}){return z("div",{"data-slot":"item-actions",className:P("flex items-center gap-2",e),...a})}import{jsx as F,jsxs as ge}from"react/jsx-runtime";var ja=[{username:"shadcn",avatar:"https://github.com/shadcn.png",email:"shadcn@vercel.com"},{username:"maxleiter",avatar:"https://github.com/maxleiter.png",email:"maxleiter@vercel.com"},{username:"evilrabbit",avatar:"https://github.com/evilrabbit.png",email:"evilrabbit@vercel.com"}];function Bo(){return F("div",{className:"flex w-full max-w-md flex-col gap-6",children:F(Ea,{children:ja.map((e,a)=>ge($a.Fragment,{children:[ge(Na,{children:[F(Xa,{children:ge(qa,{children:[F(Oa,{src:e.avatar,className:"grayscale"}),F(Ua,{children:e.username.charAt(0)})]})}),ge(Ka,{className:"gap-1",children:[F(_a,{children:e.username}),F(Za,{children:e.email})]}),F(Ja,{children:F(Ga,{variant:"ghost",size:"icon",className:"rounded-full",children:F(Y,{})})})]}),a!==ja.length-1&&F(Wa,{})]},e.username))})})}export{Bo as default};
2
+ /*! Bundled license information:
3
+
4
+ lucide-react/dist/esm/shared/src/utils.js:
5
+ (**
6
+ * @license lucide-react v0.456.0 - ISC
7
+ *
8
+ * This source code is licensed under the ISC license.
9
+ * See the LICENSE file in the root directory of this source tree.
10
+ *)
11
+
12
+ lucide-react/dist/esm/defaultAttributes.js:
13
+ (**
14
+ * @license lucide-react v0.456.0 - ISC
15
+ *
16
+ * This source code is licensed under the ISC license.
17
+ * See the LICENSE file in the root directory of this source tree.
18
+ *)
19
+
20
+ lucide-react/dist/esm/Icon.js:
21
+ (**
22
+ * @license lucide-react v0.456.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ *)
27
+
28
+ lucide-react/dist/esm/createLucideIcon.js:
29
+ (**
30
+ * @license lucide-react v0.456.0 - ISC
31
+ *
32
+ * This source code is licensed under the ISC license.
33
+ * See the LICENSE file in the root directory of this source tree.
34
+ *)
35
+
36
+ lucide-react/dist/esm/icons/plus.js:
37
+ (**
38
+ * @license lucide-react v0.456.0 - ISC
39
+ *
40
+ * This source code is licensed under the ISC license.
41
+ * See the LICENSE file in the root directory of this source tree.
42
+ *)
43
+
44
+ lucide-react/dist/esm/lucide-react.js:
45
+ (**
46
+ * @license lucide-react v0.456.0 - ISC
47
+ *
48
+ * This source code is licensed under the ISC license.
49
+ * See the LICENSE file in the root directory of this source tree.
50
+ *)
51
+ */
b/54970b772dc9e6264cacd3fc1f09c437f382f76eadb80b20a979e3827fa05356 ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // holo-asr-bias.mjs — B0/B1: CONTEXTUAL BIASING for the TDT decode. Q hears the names that matter to YOU —
2
+ // your contacts, app/catalog names, places, jargon — by boosting them at decode (shallow fusion). The bias
3
+ // vocabulary is the user's own κ-world (holo-open catalog + omni-index + their strand), so it's personal AND
4
+ // serverless. The boost is BOUNDED and additive: it nudges the decoder toward a bias phrase once the acoustics
5
+ // start matching, but never forces a word the model didn't hear (the false-insertion risk — see lambda + B4).
6
+ //
7
+ // A bias phrase is matched as the SPM TOKEN-ID sequence the model actually emits (greedy longest-match over the
8
+ // vocab pieces, ▁ = leading space) — biasing in subword space, not characters. makeBiasContext keeps a trie over
9
+ // those id sequences and, per decode step, returns the token boosts for any token that EXTENDS an active match.
10
+
11
+ // makeSpmTokenizer(vocab) → tokenize(text) → [tokenId]. Greedy longest-match over the SentencePiece pieces (the
12
+ // same vocab.txt the decoder detokenizes with). Approximates SPM unigram closely enough for biasing.
13
+ export function makeSpmTokenizer(vocab) {
14
+ const p2id = new Map(); vocab.forEach((p, i) => { if (p) p2id.set(p, i); });
15
+ const unk = p2id.has("<unk>") ? p2id.get("<unk>") : 0;
16
+ function word(w) { // w already has a leading ▁
17
+ const ids = []; let s = w;
18
+ while (s.length) {
19
+ let hit = null;
20
+ for (let len = s.length; len > 0; len--) { const sub = s.slice(0, len); if (p2id.has(sub)) { hit = sub; break; } }
21
+ if (!hit) { ids.push(unk); s = s.slice(1); } else { ids.push(p2id.get(hit)); s = s.slice(hit.length); }
22
+ }
23
+ return ids;
24
+ }
25
+ return (text) => { const out = []; for (const w of String(text || "").trim().split(/\s+/).filter(Boolean)) out.push(...word("▁" + w.toLowerCase())); return out; };
26
+ }
27
+
28
+ // makeBiasContext({ phrases, tokenize, lambda }) → { boosts(), advance(tokenId), reset(), size }.
29
+ // phrases : string[] — the bias vocabulary (names/apps/places); deduped, bounded by the caller.
30
+ // tokenize : (text)→[id] — SPM tokenizer (makeSpmTokenizer or injected).
31
+ // lambda : the (bounded) logit boost added to a token that continues an active bias match (default 3.0).
32
+ export function makeBiasContext({ phrases = [], tokenize, lambda = 3.0 } = {}) {
33
+ if (!tokenize) throw new Error("makeBiasContext needs tokenize(text)->[id]");
34
+ const root = { ch: new Map(), term: false };
35
+ let n = 0;
36
+ for (const ph of phrases) {
37
+ const ids = tokenize(ph); if (!ids.length) continue;
38
+ let node = root;
39
+ for (const id of ids) { if (!node.ch.has(id)) node.ch.set(id, { ch: new Map(), term: false }); node = node.ch.get(id); }
40
+ node.term = true; n++;
41
+ }
42
+ let active = [root]; // trie nodes with a match in progress; root is always active (a phrase can start anytime)
43
+
44
+ return {
45
+ size: n,
46
+ // boosts() → Map<tokenId, boost>: every token that extends an active match (max boost if reachable >1 way).
47
+ boosts() { const m = new Map(); for (const node of active) for (const [id] of node.ch) { const b = m.get(id) || 0; if (lambda > b) m.set(id, lambda); } return m; },
48
+ // advance(tokenId) — after a real token is emitted, carry forward the matches it continues (+ root, so a new
49
+ // phrase can begin on the next token).
50
+ advance(tokenId) { const next = [root]; for (const node of active) { const c = node.ch.get(tokenId); if (c) next.push(c); } active = next; },
51
+ reset() { active = [root]; },
52
+ };
53
+ }
54
+
55
+ export default { makeSpmTokenizer, makeBiasContext };
b/54c6a21438a4975e5f47069f82dd0f528ef346e925d3962cf0aac956f8503b3f ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {
2
+ NativeSelect,
3
+ NativeSelectOption,
4
+ } from "@/registry/new-york-v4/ui/native-select"
5
+
6
+ export default function NativeSelectInvalid() {
7
+ return (
8
+ <NativeSelect aria-invalid="true">
9
+ <NativeSelectOption value="">Select role</NativeSelectOption>
10
+ <NativeSelectOption value="admin">Admin</NativeSelectOption>
11
+ <NativeSelectOption value="editor">Editor</NativeSelectOption>
12
+ <NativeSelectOption value="viewer">Viewer</NativeSelectOption>
13
+ <NativeSelectOption value="guest">Guest</NativeSelectOption>
14
+ </NativeSelect>
15
+ )
16
+ }
b/54cfad210df8bfd36c207bfd664cbfc5512099125b9deb2783945113ace861b8 ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import radialprogress from './object.js';
2
+ import { addPrefix } from '../../functions/addPrefix.js';
3
+
4
+ export default ({ addComponents, prefix = '' }) => {
5
+ const prefixedradialprogress = addPrefix(radialprogress, prefix);
6
+ addComponents({ ...prefixedradialprogress });
7
+ };
b/5517fcd7d12df355ddb31146a22d1b76ed364761d181459d0c73f591807d094c ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Oracle exporter for the BitNet GPU forward witness. Builds a tiny BitNet model (F32
2
+ // weights, the same arch gguf-forge-graph/exec run), forges → synthesizes → runs the CPU
3
+ // executor (the witnessed Tier-A oracle), and exports weights (flat bin + layout) + the
4
+ // last-position logits. The GPU page must reproduce those logits. F32 weights isolate the
5
+ // ARCH orchestration (2 sub-norms); the TQ2_0 GEMV is witnessed separately (bitnet-gemv).
6
+ import { writeFileSync } from "node:fs";
7
+ import { forgeGguf } from "./gguf-forge.mjs";
8
+ import { synthesizeGraph } from "./gguf-forge-graph.mjs";
9
+ import { forward } from "./gguf-forge-exec.mjs";
10
+ import { GGML } from "./gguf-forge-dequant.mjs";
11
+
12
+ const D = 8, NH = 2, NHKV = 2, HD = 4, FF = 16, V = 6, NL = 2, EPS = 1e-5, FREQ = 10000;
13
+ const QD = NH * HD, KV = NHKV * HD;
14
+ let s = 20260620 >>> 0; const r = () => { s = (s * 1664525 + 1013904223) >>> 0; return (s / 4294967296) * 2 - 1; };
15
+ const rf = (n, sc = 0.3) => Float32Array.from({ length: n }, () => r() * sc);
16
+ const nf = (n) => Float32Array.from({ length: n }, () => Math.abs(r()) + 0.5);
17
+
18
+ const W = {
19
+ "token_embd.weight": rf(V * D, 0.5), "output_norm.weight": nf(D),
20
+ };
21
+ for (let il = 0; il < NL; il++) { const p = `blk.${il}.`; Object.assign(W, {
22
+ [p + "attn_norm.weight"]: nf(D), [p + "attn_sub_norm.weight"]: nf(D),
23
+ [p + "attn_q.weight"]: rf(QD * D), [p + "attn_k.weight"]: rf(KV * D), [p + "attn_v.weight"]: rf(KV * D), [p + "attn_output.weight"]: rf(D * QD),
24
+ [p + "ffn_norm.weight"]: nf(D), [p + "ffn_sub_norm.weight"]: nf(FF),
25
+ [p + "ffn_gate.weight"]: rf(FF * D), [p + "ffn_up.weight"]: rf(FF * D), [p + "ffn_down.weight"]: rf(D * FF),
26
+ }); }
27
+
28
+ // build a GGUF, forge, synthesize, run CPU oracle
29
+ function buildGguf(meta, tensors) {
30
+ const ALIGN = 32; let off = 0;
31
+ const infos = tensors.map((t) => { const o = off; off = Math.ceil((o + t.bytes.length) / ALIGN) * ALIGN; return { ...t, offset: o }; });
32
+ let parts = [], len = 0; const push = (b) => { parts.push(b); len += b.length; };
33
+ const u32 = (v) => { const b = new Uint8Array(4); new DataView(b.buffer).setUint32(0, v >>> 0, true); push(b); };
34
+ const f32 = (v) => { const b = new Uint8Array(4); new DataView(b.buffer).setFloat32(0, v, true); push(b); };
35
+ const u64 = (v) => { const b = new Uint8Array(8); const dv = new DataView(b.buffer); dv.setUint32(0, v >>> 0, true); dv.setUint32(4, Math.floor(v / 4294967296), true); push(b); };
36
+ const str = (x) => { const e = new TextEncoder().encode(x); u64(e.length); push(e); };
37
+ push(new TextEncoder().encode("GGUF")); u32(3); u64(tensors.length); u64(Object.keys(meta).length);
38
+ for (const [k, val] of Object.entries(meta)) { str(k); if (typeof val === "string") { u32(8); str(val); } else { u32(4); u32(val); } }
39
+ for (const ti of infos) { str(ti.name); u32(ti.dims.length); for (const d of ti.dims) u64(d); u32(ti.type); u64(ti.offset); }
40
+ if (len % ALIGN) push(new Uint8Array(ALIGN - (len % ALIGN)));
41
+ const dataStart = len; for (const ti of infos) { while (len < dataStart + ti.offset) push(new Uint8Array(1)); push(ti.bytes); }
42
+ const out = new Uint8Array(len); let o = 0; for (const p of parts) { out.set(p, o); o += p.length; } return out;
43
+ }
44
+ const f32b = (a) => new Uint8Array(a.buffer.slice(a.byteOffset, a.byteOffset + a.byteLength));
45
+ // explicit [in, out] dims per tensor (by-length collides: ffn_gate [D,FF] vs ffn_down [FF,D])
46
+ const dimsFor = (name) => {
47
+ if (name === "token_embd.weight") return [D, V];
48
+ if (/attn_q\.weight$/.test(name)) return [D, QD];
49
+ if (/attn_(k|v)\.weight$/.test(name)) return [D, KV];
50
+ if (/attn_output\.weight$/.test(name)) return [QD, D];
51
+ if (/ffn_gate\.weight$|ffn_up\.weight$/.test(name)) return [D, FF];
52
+ if (/ffn_down\.weight$/.test(name)) return [FF, D];
53
+ if (/ffn_sub_norm\.weight$/.test(name)) return [FF];
54
+ return [D]; // attn_norm, attn_sub_norm, ffn_norm, output_norm
55
+ };
56
+ const meta = { "general.architecture": "bitnet", "bitnet.block_count": NL, "bitnet.embedding_length": D, "bitnet.attention.head_count": NH, "bitnet.attention.head_count_kv": NHKV, "bitnet.feed_forward_length": FF, "bitnet.rope.dimension_count": HD, "bitnet.rope.freq_base": FREQ, "bitnet.attention.layer_norm_rms_epsilon": EPS };
57
+ const tensors = Object.entries(W).map(([name, arr]) => ({ name, type: GGML.F32, dims: dimsFor(name), bytes: f32b(arr) }));
58
+ const f = forgeGguf(buildGguf(meta, tensors));
59
+ const graph = synthesizeGraph(f.plan);
60
+ if (graph.family !== "dense" || !graph.stats.bitnet) throw new Error("not a bitnet graph: " + graph.reason);
61
+ const tokens = [3, 1, 4, 2];
62
+ const logits = forward(f.plan, graph, { get: (h) => f.blocks.get(h) }, tokens);
63
+
64
+ // export flat weight bin + layout
65
+ const order = Object.keys(W); let total = 0; const layout = {};
66
+ for (const n of order) { layout[n] = { off: total, len: W[n].length }; total += W[n].length; }
67
+ const bin = new Float32Array(total); for (const n of order) bin.set(W[n], layout[n].off);
68
+ writeFileSync(new URL("./gpu/_bitml.bin", import.meta.url), Buffer.from(bin.buffer));
69
+ writeFileSync(new URL("./gpu/_bitml.json", import.meta.url), JSON.stringify({
70
+ cfg: { D, NH, NHKV, HD, FF, V, NL, QD, KV, EPS, FREQ, scale: 1 / Math.sqrt(HD), grp: NH / NHKV }, tokens, layout, expected: Array.from(logits),
71
+ }));
72
+ console.log(`wrote gpu/_bitml.{bin,json}: bitnet ${NL}L D${D} → ${V} logits, oracle argmax=${logits.indexOf(Math.max(...logits))}`);
b/55232fc89acadff912e945fd85c92d9cb538d80eefc370c09f5717dc45221fd1 ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "org.hologram.ui.terminal",
3
+ "name": "terminal",
4
+ "tier": "component",
5
+ "library": "magicui",
6
+ "category": "Components",
7
+ "upstream": "https://magicui.design/r/terminal.json",
8
+ "did": "did:holo:sha256:5ceb4d2ff519ddd48aed3023c09d0ddc31e9d51363b00dd6ce820d34c986187f",
9
+ "import": "holo://sha256:355c047ba93219a9a3c185a88d5b23bc959a5f48b0000e065082e95256f8d4e8",
10
+ "integrity": "sha256-NVwEe6kyGamjwYWojVsjvJWaX0iwAA4GUILpUlb41Og=",
11
+ "kappa": "sha256:5ceb4d2ff519ddd48aed3023c09d0ddc31e9d51363b00dd6ce820d34c986187f",
12
+ "moduleKappa": "sha256:355c047ba93219a9a3c185a88d5b23bc959a5f48b0000e065082e95256f8d4e8",
13
+ "renderExport": "AnimatedSpan",
14
+ "source": "components/ui/terminal.tsx",
15
+ "module": "vendor/components/terminal.js",
16
+ "exports": [
17
+ "AnimatedSpan",
18
+ "TypingAnimation",
19
+ "Terminal"
20
+ ],
21
+ "license": "MIT"
22
+ }
b/555d862d7a4b2dddd12b951c4eddb1e023e46d19f3c181964909b8c12ebcbcd0 ADDED
@@ -0,0 +1 @@
 
 
1
+ "use client";var lo=Object.defineProperty;var Se=(e,t)=>{for(var o in t)lo(e,o,{get:t[o],enumerable:!0})};import{useMemo as Rt}from"react";function ze(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(o=ze(e[t]))&&(r&&(r+=" "),r+=o)}else for(o in e)e[o]&&(r&&(r+=" "),r+=o);return r}function K(){for(var e,t,o=0,r="",s=arguments.length;o<s;o++)(e=arguments[o])&&(t=ze(e))&&(r&&(r+=" "),r+=t);return r}var Pe=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Ae=K,Ne=(e,t)=>o=>{var r;if(t?.variants==null)return Ae(e,o?.class,o?.className);let{variants:s,defaultVariants:a}=t,n=Object.keys(s).map(d=>{let b=o?.[d],g=a?.[d];if(b===null)return null;let x=Pe(b)||Pe(g);return s[d][x]}),p=o&&Object.entries(o).reduce((d,b)=>{let[g,x]=b;return x===void 0||(d[g]=x),d},{}),u=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((d,b)=>{let{class:g,className:x,...v}=b;return Object.entries(v).every(M=>{let[k,R]=M;return Array.isArray(R)?R.includes({...a,...p}[k]):{...a,...p}[k]===R})?[...d,g,x]:d},[]);return Ae(e,n,u,o?.class,o?.className)};var co=(e,t)=>{let o=new Array(e.length+t.length);for(let r=0;r<e.length;r++)o[r]=e[r];for(let r=0;r<t.length;r++)o[e.length+r]=t[r];return o},mo=(e,t)=>({classGroupId:e,validator:t}),Ve=(e=new Map,t=null,o)=>({nextPart:e,validators:t,classGroupId:o}),oe="-",Me=[],po="arbitrary..",uo=e=>{let t=bo(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:n=>{if(n.startsWith("[")&&n.endsWith("]"))return fo(n);let p=n.split(oe),u=p[0]===""&&p.length>1?1:0;return Oe(p,u,t)},getConflictingClassGroupIds:(n,p)=>{if(p){let u=r[n],d=o[n];return u?d?co(d,u):u:d||Me}return o[n]||Me}}},Oe=(e,t,o)=>{if(e.length-t===0)return o.classGroupId;let s=e[t],a=o.nextPart.get(s);if(a){let d=Oe(e,t+1,a);if(d)return d}let n=o.validators;if(n===null)return;let p=t===0?e.join(oe):e.slice(t).join(oe),u=n.length;for(let d=0;d<u;d++){let b=n[d];if(b.validator(p))return b.classGroupId}},fo=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{let t=e.slice(1,-1),o=t.indexOf(":"),r=t.slice(0,o);return r?po+r:void 0})(),bo=e=>{let{theme:t,classGroups:o}=e;return go(o,t)},go=(e,t)=>{let o=Ve();for(let r in e){let s=e[r];ue(s,o,r,t)}return o},ue=(e,t,o,r)=>{let s=e.length;for(let a=0;a<s;a++){let n=e[a];ho(n,t,o,r)}},ho=(e,t,o,r)=>{if(typeof e=="string"){xo(e,t,o);return}if(typeof e=="function"){yo(e,t,o,r);return}vo(e,t,o,r)},xo=(e,t,o)=>{let r=e===""?t:_e(t,e);r.classGroupId=o},yo=(e,t,o,r)=>{if(wo(e)){ue(e(r),t,o,r);return}t.validators===null&&(t.validators=[]),t.validators.push(mo(o,e))},vo=(e,t,o,r)=>{let s=Object.entries(e),a=s.length;for(let n=0;n<a;n++){let[p,u]=s[n];ue(u,_e(t,p),o,r)}},_e=(e,t)=>{let o=e,r=t.split(oe),s=r.length;for(let a=0;a<s;a++){let n=r[a],p=o.nextPart.get(n);p||(p=Ve(),o.nextPart.set(n,p)),o=p}return o},wo=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,ko=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,o=Object.create(null),r=Object.create(null),s=(a,n)=>{o[a]=n,t++,t>e&&(t=0,r=o,o=Object.create(null))};return{get(a){let n=o[a];if(n!==void 0)return n;if((n=r[a])!==void 0)return s(a,n),n},set(a,n){a in o?o[a]=n:s(a,n)}}},pe="!",Ge=":",Ro=[],Ie=(e,t,o,r,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:o,maybePostfixModifierPosition:r,isExternal:s}),Co=e=>{let{prefix:t,experimentalParseClassName:o}=e,r=s=>{let a=[],n=0,p=0,u=0,d,b=s.length;for(let k=0;k<b;k++){let R=s[k];if(n===0&&p===0){if(R===Ge){a.push(s.slice(u,k)),u=k+1;continue}if(R==="/"){d=k;continue}}R==="["?n++:R==="]"?n--:R==="("?p++:R===")"&&p--}let g=a.length===0?s:s.slice(u),x=g,v=!1;g.endsWith(pe)?(x=g.slice(0,-1),v=!0):g.startsWith(pe)&&(x=g.slice(1),v=!0);let M=d&&d>u?d-u:void 0;return Ie(a,v,x,M)};if(t){let s=t+Ge,a=r;r=n=>n.startsWith(s)?a(n.slice(s.length)):Ie(Ro,!1,n,void 0,!0)}if(o){let s=r;r=a=>o({className:a,parseClassName:s})}return r},So=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((o,r)=>{t.set(o,1e6+r)}),o=>{let r=[],s=[];for(let a=0;a<o.length;a++){let n=o[a],p=n[0]==="[",u=t.has(n);p||u?(s.length>0&&(s.sort(),r.push(...s),s=[]),r.push(n)):s.push(n)}return s.length>0&&(s.sort(),r.push(...s)),r}},zo=e=>({cache:ko(e.cacheSize),parseClassName:Co(e),sortModifiers:So(e),postfixLookupClassGroupIds:Po(e),...uo(e)}),Po=e=>{let t=Object.create(null),o=e.postfixLookupClassGroups;if(o)for(let r=0;r<o.length;r++)t[o[r]]=!0;return t},Ao=/\s+/,No=(e,t)=>{let{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:a,postfixLookupClassGroupIds:n}=t,p=[],u=e.trim().split(Ao),d="";for(let b=u.length-1;b>=0;b-=1){let g=u[b],{isExternal:x,modifiers:v,hasImportantModifier:M,baseClassName:k,maybePostfixModifierPosition:R}=o(g);if(x){d=g+(d.length>0?" "+d:d);continue}let O=!!R,P;if(O){let T=k.substring(0,R);P=r(T);let c=P&&n[P]?r(k):void 0;c&&c!==P&&(P=c,O=!1)}else P=r(k);if(!P){if(!O){d=g+(d.length>0?" "+d:d);continue}if(P=r(k),!P){d=g+(d.length>0?" "+d:d);continue}O=!1}let U=v.length===0?"":v.length===1?v[0]:a(v).join(":"),j=M?U+pe:U,D=j+P;if(p.indexOf(D)>-1)continue;p.push(D);let $=s(P,O);for(let T=0;T<$.length;++T){let c=$[T];p.push(j+c)}d=g+(d.length>0?" "+d:d)}return d},Mo=(...e)=>{let t=0,o,r,s="";for(;t<e.length;)(o=e[t++])&&(r=Fe(o))&&(s&&(s+=" "),s+=r);return s},Fe=e=>{if(typeof e=="string")return e;let t,o="";for(let r=0;r<e.length;r++)e[r]&&(t=Fe(e[r]))&&(o&&(o+=" "),o+=t);return o},Go=(e,...t)=>{let o,r,s,a,n=u=>{let d=t.reduce((b,g)=>g(b),e());return o=zo(d),r=o.cache.get,s=o.cache.set,a=p,p(u)},p=u=>{let d=r(u);if(d)return d;let b=No(u,o);return s(u,b),b};return a=n,(...u)=>a(Mo(...u))},Io=[],h=e=>{let t=o=>o[e]||Io;return t.isThemeGetter=!0,t},We=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,je=/^\((?:(\w[\w-]*):)?(.+)\)$/i,To=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Eo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Lo=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Vo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Oo=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,_o=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,L=e=>To.test(e),f=e=>!!e&&!Number.isNaN(Number(e)),I=e=>!!e&&Number.isInteger(Number(e)),me=e=>e.endsWith("%")&&f(e.slice(0,-1)),E=e=>Eo.test(e),De=()=>!0,Fo=e=>Lo.test(e)&&!Vo.test(e),fe=()=>!1,Wo=e=>Oo.test(e),jo=e=>_o.test(e),Do=e=>!i(e)&&!l(e),$o=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),Bo=e=>V(e,Ue,fe),i=e=>We.test(e),F=e=>V(e,Ye,Fo),Te=e=>V(e,Ko,f),Uo=e=>V(e,qe,De),Yo=e=>V(e,He,fe),Ee=e=>V(e,$e,fe),Ho=e=>V(e,Be,jo),Q=e=>V(e,Xe,Wo),l=e=>je.test(e),Y=e=>W(e,Ye),qo=e=>W(e,He),Le=e=>W(e,$e),Xo=e=>W(e,Ue),Zo=e=>W(e,Be),ee=e=>W(e,Xe,!0),Jo=e=>W(e,qe,!0),V=(e,t,o)=>{let r=We.exec(e);return r?r[1]?t(r[1]):o(r[2]):!1},W=(e,t,o=!1)=>{let r=je.exec(e);return r?r[1]?t(r[1]):o:!1},$e=e=>e==="position"||e==="percentage",Be=e=>e==="image"||e==="url",Ue=e=>e==="length"||e==="size"||e==="bg-size",Ye=e=>e==="length",Ko=e=>e==="number",He=e=>e==="family-name",qe=e=>e==="number"||e==="weight",Xe=e=>e==="shadow";var Qo=()=>{let e=h("color"),t=h("font"),o=h("text"),r=h("font-weight"),s=h("tracking"),a=h("leading"),n=h("breakpoint"),p=h("container"),u=h("spacing"),d=h("radius"),b=h("shadow"),g=h("inset-shadow"),x=h("text-shadow"),v=h("drop-shadow"),M=h("blur"),k=h("perspective"),R=h("aspect"),O=h("ease"),P=h("animate"),U=()=>["auto","avoid","all","avoid-page","page","left","right","column"],j=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],D=()=>[...j(),l,i],$=()=>["auto","hidden","clip","visible","scroll"],T=()=>["auto","contain","none"],c=()=>[l,i,u],A=()=>[L,"full","auto",...c()],he=()=>[I,"none","subgrid",l,i],xe=()=>["auto",{span:["full",I,l,i]},I,l,i],H=()=>[I,"auto",l,i],ye=()=>["auto","min","max","fr",l,i],ae=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],B=()=>["start","end","center","stretch","center-safe","end-safe"],G=()=>["auto",...c()],_=()=>[L,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...c()],ie=()=>[L,"screen","full","dvw","lvw","svw","min","max","fit",...c()],le=()=>[L,"screen","full","lh","dvh","lvh","svh","min","max","fit",...c()],m=()=>[e,l,i],ve=()=>[...j(),Le,Ee,{position:[l,i]}],we=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ke=()=>["auto","cover","contain",Xo,Bo,{size:[l,i]}],ce=()=>[me,Y,F],C=()=>["","none","full",d,l,i],S=()=>["",f,Y,F],q=()=>["solid","dashed","dotted","double"],Re=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],y=()=>[f,me,Le,Ee],Ce=()=>["","none",M,l,i],X=()=>["none",f,l,i],Z=()=>["none",f,l,i],de=()=>[f,l,i],J=()=>[L,"full",...c()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[E],breakpoint:[E],color:[De],container:[E],"drop-shadow":[E],ease:["in","out","in-out"],font:[Do],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[E],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[E],shadow:[E],spacing:["px",f],text:[E],"text-shadow":[E],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",L,i,l,R]}],container:["container"],"container-type":[{"@container":["","normal","size",l,i]}],"container-named":[$o],columns:[{columns:[f,i,l,p]}],"break-after":[{"break-after":U()}],"break-before":[{"break-before":U()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:D()}],overflow:[{overflow:$()}],"overflow-x":[{"overflow-x":$()}],"overflow-y":[{"overflow-y":$()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:A()}],"inset-x":[{"inset-x":A()}],"inset-y":[{"inset-y":A()}],start:[{"inset-s":A(),start:A()}],end:[{"inset-e":A(),end:A()}],"inset-bs":[{"inset-bs":A()}],"inset-be":[{"inset-be":A()}],top:[{top:A()}],right:[{right:A()}],bottom:[{bottom:A()}],left:[{left:A()}],visibility:["visible","invisible","collapse"],z:[{z:[I,"auto",l,i]}],basis:[{basis:[L,"full","auto",p,...c()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[f,L,"auto","initial","none",i]}],grow:[{grow:["",f,l,i]}],shrink:[{shrink:["",f,l,i]}],order:[{order:[I,"first","last","none",l,i]}],"grid-cols":[{"grid-cols":he()}],"col-start-end":[{col:xe()}],"col-start":[{"col-start":H()}],"col-end":[{"col-end":H()}],"grid-rows":[{"grid-rows":he()}],"row-start-end":[{row:xe()}],"row-start":[{"row-start":H()}],"row-end":[{"row-end":H()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ye()}],"auto-rows":[{"auto-rows":ye()}],gap:[{gap:c()}],"gap-x":[{"gap-x":c()}],"gap-y":[{"gap-y":c()}],"justify-content":[{justify:[...ae(),"normal"]}],"justify-items":[{"justify-items":[...B(),"normal"]}],"justify-self":[{"justify-self":["auto",...B()]}],"align-content":[{content:["normal",...ae()]}],"align-items":[{items:[...B(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...B(),{baseline:["","last"]}]}],"place-content":[{"place-content":ae()}],"place-items":[{"place-items":[...B(),"baseline"]}],"place-self":[{"place-self":["auto",...B()]}],p:[{p:c()}],px:[{px:c()}],py:[{py:c()}],ps:[{ps:c()}],pe:[{pe:c()}],pbs:[{pbs:c()}],pbe:[{pbe:c()}],pt:[{pt:c()}],pr:[{pr:c()}],pb:[{pb:c()}],pl:[{pl:c()}],m:[{m:G()}],mx:[{mx:G()}],my:[{my:G()}],ms:[{ms:G()}],me:[{me:G()}],mbs:[{mbs:G()}],mbe:[{mbe:G()}],mt:[{mt:G()}],mr:[{mr:G()}],mb:[{mb:G()}],ml:[{ml:G()}],"space-x":[{"space-x":c()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":c()}],"space-y-reverse":["space-y-reverse"],size:[{size:_()}],"inline-size":[{inline:["auto",...ie()]}],"min-inline-size":[{"min-inline":["auto",...ie()]}],"max-inline-size":[{"max-inline":["none",...ie()]}],"block-size":[{block:["auto",...le()]}],"min-block-size":[{"min-block":["auto",...le()]}],"max-block-size":[{"max-block":["none",...le()]}],w:[{w:[p,"screen",..._()]}],"min-w":[{"min-w":[p,"screen","none",..._()]}],"max-w":[{"max-w":[p,"screen","none","prose",{screen:[n]},..._()]}],h:[{h:["screen","lh",..._()]}],"min-h":[{"min-h":["screen","lh","none",..._()]}],"max-h":[{"max-h":["screen","lh",..._()]}],"font-size":[{text:["base",o,Y,F]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,Jo,Uo]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",me,i]}],"font-family":[{font:[qo,Yo,t]}],"font-features":[{"font-features":[i]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,l,i]}],"line-clamp":[{"line-clamp":[f,"none",l,Te]}],leading:[{leading:[a,...c()]}],"list-image":[{"list-image":["none",l,i]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",l,i]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:m()}],"text-color":[{text:m()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...q(),"wavy"]}],"text-decoration-thickness":[{decoration:[f,"from-font","auto",l,F]}],"text-decoration-color":[{decoration:m()}],"underline-offset":[{"underline-offset":[f,"auto",l,i]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:c()}],"tab-size":[{tab:[I,l,i]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",l,i]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",l,i]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ve()}],"bg-repeat":[{bg:we()}],"bg-size":[{bg:ke()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},I,l,i],radial:["",l,i],conic:[I,l,i]},Zo,Ho]}],"bg-color":[{bg:m()}],"gradient-from-pos":[{from:ce()}],"gradient-via-pos":[{via:ce()}],"gradient-to-pos":[{to:ce()}],"gradient-from":[{from:m()}],"gradient-via":[{via:m()}],"gradient-to":[{to:m()}],rounded:[{rounded:C()}],"rounded-s":[{"rounded-s":C()}],"rounded-e":[{"rounded-e":C()}],"rounded-t":[{"rounded-t":C()}],"rounded-r":[{"rounded-r":C()}],"rounded-b":[{"rounded-b":C()}],"rounded-l":[{"rounded-l":C()}],"rounded-ss":[{"rounded-ss":C()}],"rounded-se":[{"rounded-se":C()}],"rounded-ee":[{"rounded-ee":C()}],"rounded-es":[{"rounded-es":C()}],"rounded-tl":[{"rounded-tl":C()}],"rounded-tr":[{"rounded-tr":C()}],"rounded-br":[{"rounded-br":C()}],"rounded-bl":[{"rounded-bl":C()}],"border-w":[{border:S()}],"border-w-x":[{"border-x":S()}],"border-w-y":[{"border-y":S()}],"border-w-s":[{"border-s":S()}],"border-w-e":[{"border-e":S()}],"border-w-bs":[{"border-bs":S()}],"border-w-be":[{"border-be":S()}],"border-w-t":[{"border-t":S()}],"border-w-r":[{"border-r":S()}],"border-w-b":[{"border-b":S()}],"border-w-l":[{"border-l":S()}],"divide-x":[{"divide-x":S()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":S()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...q(),"hidden","none"]}],"divide-style":[{divide:[...q(),"hidden","none"]}],"border-color":[{border:m()}],"border-color-x":[{"border-x":m()}],"border-color-y":[{"border-y":m()}],"border-color-s":[{"border-s":m()}],"border-color-e":[{"border-e":m()}],"border-color-bs":[{"border-bs":m()}],"border-color-be":[{"border-be":m()}],"border-color-t":[{"border-t":m()}],"border-color-r":[{"border-r":m()}],"border-color-b":[{"border-b":m()}],"border-color-l":[{"border-l":m()}],"divide-color":[{divide:m()}],"outline-style":[{outline:[...q(),"none","hidden"]}],"outline-offset":[{"outline-offset":[f,l,i]}],"outline-w":[{outline:["",f,Y,F]}],"outline-color":[{outline:m()}],shadow:[{shadow:["","none",b,ee,Q]}],"shadow-color":[{shadow:m()}],"inset-shadow":[{"inset-shadow":["none",g,ee,Q]}],"inset-shadow-color":[{"inset-shadow":m()}],"ring-w":[{ring:S()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:m()}],"ring-offset-w":[{"ring-offset":[f,F]}],"ring-offset-color":[{"ring-offset":m()}],"inset-ring-w":[{"inset-ring":S()}],"inset-ring-color":[{"inset-ring":m()}],"text-shadow":[{"text-shadow":["none",x,ee,Q]}],"text-shadow-color":[{"text-shadow":m()}],opacity:[{opacity:[f,l,i]}],"mix-blend":[{"mix-blend":[...Re(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Re()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[f]}],"mask-image-linear-from-pos":[{"mask-linear-from":y()}],"mask-image-linear-to-pos":[{"mask-linear-to":y()}],"mask-image-linear-from-color":[{"mask-linear-from":m()}],"mask-image-linear-to-color":[{"mask-linear-to":m()}],"mask-image-t-from-pos":[{"mask-t-from":y()}],"mask-image-t-to-pos":[{"mask-t-to":y()}],"mask-image-t-from-color":[{"mask-t-from":m()}],"mask-image-t-to-color":[{"mask-t-to":m()}],"mask-image-r-from-pos":[{"mask-r-from":y()}],"mask-image-r-to-pos":[{"mask-r-to":y()}],"mask-image-r-from-color":[{"mask-r-from":m()}],"mask-image-r-to-color":[{"mask-r-to":m()}],"mask-image-b-from-pos":[{"mask-b-from":y()}],"mask-image-b-to-pos":[{"mask-b-to":y()}],"mask-image-b-from-color":[{"mask-b-from":m()}],"mask-image-b-to-color":[{"mask-b-to":m()}],"mask-image-l-from-pos":[{"mask-l-from":y()}],"mask-image-l-to-pos":[{"mask-l-to":y()}],"mask-image-l-from-color":[{"mask-l-from":m()}],"mask-image-l-to-color":[{"mask-l-to":m()}],"mask-image-x-from-pos":[{"mask-x-from":y()}],"mask-image-x-to-pos":[{"mask-x-to":y()}],"mask-image-x-from-color":[{"mask-x-from":m()}],"mask-image-x-to-color":[{"mask-x-to":m()}],"mask-image-y-from-pos":[{"mask-y-from":y()}],"mask-image-y-to-pos":[{"mask-y-to":y()}],"mask-image-y-from-color":[{"mask-y-from":m()}],"mask-image-y-to-color":[{"mask-y-to":m()}],"mask-image-radial":[{"mask-radial":[l,i]}],"mask-image-radial-from-pos":[{"mask-radial-from":y()}],"mask-image-radial-to-pos":[{"mask-radial-to":y()}],"mask-image-radial-from-color":[{"mask-radial-from":m()}],"mask-image-radial-to-color":[{"mask-radial-to":m()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":j()}],"mask-image-conic-pos":[{"mask-conic":[f]}],"mask-image-conic-from-pos":[{"mask-conic-from":y()}],"mask-image-conic-to-pos":[{"mask-conic-to":y()}],"mask-image-conic-from-color":[{"mask-conic-from":m()}],"mask-image-conic-to-color":[{"mask-conic-to":m()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ve()}],"mask-repeat":[{mask:we()}],"mask-size":[{mask:ke()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",l,i]}],filter:[{filter:["","none",l,i]}],blur:[{blur:Ce()}],brightness:[{brightness:[f,l,i]}],contrast:[{contrast:[f,l,i]}],"drop-shadow":[{"drop-shadow":["","none",v,ee,Q]}],"drop-shadow-color":[{"drop-shadow":m()}],grayscale:[{grayscale:["",f,l,i]}],"hue-rotate":[{"hue-rotate":[f,l,i]}],invert:[{invert:["",f,l,i]}],saturate:[{saturate:[f,l,i]}],sepia:[{sepia:["",f,l,i]}],"backdrop-filter":[{"backdrop-filter":["","none",l,i]}],"backdrop-blur":[{"backdrop-blur":Ce()}],"backdrop-brightness":[{"backdrop-brightness":[f,l,i]}],"backdrop-contrast":[{"backdrop-contrast":[f,l,i]}],"backdrop-grayscale":[{"backdrop-grayscale":["",f,l,i]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f,l,i]}],"backdrop-invert":[{"backdrop-invert":["",f,l,i]}],"backdrop-opacity":[{"backdrop-opacity":[f,l,i]}],"backdrop-saturate":[{"backdrop-saturate":[f,l,i]}],"backdrop-sepia":[{"backdrop-sepia":["",f,l,i]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":c()}],"border-spacing-x":[{"border-spacing-x":c()}],"border-spacing-y":[{"border-spacing-y":c()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",l,i]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[f,"initial",l,i]}],ease:[{ease:["linear","initial",O,l,i]}],delay:[{delay:[f,l,i]}],animate:[{animate:["none",P,l,i]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,l,i]}],"perspective-origin":[{"perspective-origin":D()}],rotate:[{rotate:X()}],"rotate-x":[{"rotate-x":X()}],"rotate-y":[{"rotate-y":X()}],"rotate-z":[{"rotate-z":X()}],scale:[{scale:Z()}],"scale-x":[{"scale-x":Z()}],"scale-y":[{"scale-y":Z()}],"scale-z":[{"scale-z":Z()}],"scale-3d":["scale-3d"],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[l,i,"","none","gpu","cpu"]}],"transform-origin":[{origin:D()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:J()}],"translate-x":[{"translate-x":J()}],"translate-y":[{"translate-y":J()}],"translate-z":[{"translate-z":J()}],"translate-none":["translate-none"],zoom:[{zoom:[I,l,i]}],accent:[{accent:m()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:m()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",l,i]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":m()}],"scrollbar-track-color":[{"scrollbar-track":m()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":c()}],"scroll-mx":[{"scroll-mx":c()}],"scroll-my":[{"scroll-my":c()}],"scroll-ms":[{"scroll-ms":c()}],"scroll-me":[{"scroll-me":c()}],"scroll-mbs":[{"scroll-mbs":c()}],"scroll-mbe":[{"scroll-mbe":c()}],"scroll-mt":[{"scroll-mt":c()}],"scroll-mr":[{"scroll-mr":c()}],"scroll-mb":[{"scroll-mb":c()}],"scroll-ml":[{"scroll-ml":c()}],"scroll-p":[{"scroll-p":c()}],"scroll-px":[{"scroll-px":c()}],"scroll-py":[{"scroll-py":c()}],"scroll-ps":[{"scroll-ps":c()}],"scroll-pe":[{"scroll-pe":c()}],"scroll-pbs":[{"scroll-pbs":c()}],"scroll-pbe":[{"scroll-pbe":c()}],"scroll-pt":[{"scroll-pt":c()}],"scroll-pr":[{"scroll-pr":c()}],"scroll-pb":[{"scroll-pb":c()}],"scroll-pl":[{"scroll-pl":c()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",l,i]}],fill:[{fill:["none",...m()]}],"stroke-w":[{stroke:[f,Y,F,Te]}],stroke:[{stroke:["none",...m()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}};var Ze=Go(Qo);function z(...e){return Ze(K(e))}import*as to from"react";import*as dt from"react-dom";import*as w from"react";import*as Ke from"react";function Je(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function et(...e){return t=>{let o=!1,r=e.map(s=>{let a=Je(s,t);return!o&&typeof a=="function"&&(o=!0),a});if(o)return()=>{for(let s=0;s<r.length;s++){let a=r[s];typeof a=="function"?a():Je(e[s],null)}}}}function Qe(...e){return Ke.useCallback(et(...e),e)}function oo(e){let t=w.forwardRef((o,r)=>{let{children:s,...a}=o,n=null,p=!1,u=[];eo(s)&&typeof te=="function"&&(s=te(s._payload)),w.Children.forEach(s,x=>{if(nt(x)){p=!0;let v=x,M="child"in v.props?v.props.child:v.props.children;eo(M)&&typeof te=="function"&&(M=te(M._payload)),n=tt(v,M),u.push(n?.props?.children)}else u.push(x)}),n?n=w.cloneElement(n,void 0,u):!p&&w.Children.count(s)===1&&w.isValidElement(s)&&(n=s);let d=n?st(n):void 0,b=Qe(r,d);if(!n){if(s||s===0)throw new Error(p?ct(e):lt(e));return s}let g=rt(a,n.props??{});return n.type!==w.Fragment&&(g.ref=r?b:d),w.cloneElement(n,g)});return t.displayName=`${e}.Slot`,t}var ot=Symbol.for("radix.slottable");var tt=(e,t)=>{if("child"in e.props){let o=e.props.child;return w.isValidElement(o)?w.cloneElement(o,void 0,e.props.children(o.props.children)):null}return w.isValidElement(t)?t:null};function rt(e,t){let o={...t};for(let r in t){let s=e[r],a=t[r];/^on[A-Z]/.test(r)?s&&a?o[r]=(...p)=>{let u=a(...p);return s(...p),u}:s&&(o[r]=s):r==="style"?o[r]={...s,...a}:r==="className"&&(o[r]=[s,a].filter(Boolean).join(" "))}return{...e,...o}}function st(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}function nt(e){return w.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===ot}var at=Symbol.for("react.lazy");function eo(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===at&&"_payload"in e&&it(e._payload)}function it(e){return typeof e=="object"&&e!==null&&"then"in e}var lt=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,ct=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,te=w[" use ".trim().toString()];import{jsx as mt}from"react/jsx-runtime";var pt=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],re=pt.reduce((e,t)=>{let o=oo(`Primitive.${t}`),r=to.forwardRef((s,a)=>{let{asChild:n,...p}=s,u=n?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),mt(u,{...p,ref:a})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});var se={};Se(se,{Label:()=>be,Root:()=>bt});import*as ro from"react";import{jsx as ut}from"react/jsx-runtime";var ft="Label",be=ro.forwardRef((e,t)=>ut(re.label,{...e,ref:t,onMouseDown:o=>{o.target.closest("button, input, select, textarea")||(e.onMouseDown?.(o),!o.defaultPrevented&&o.detail>1&&o.preventDefault())}}));be.displayName=ft;var bt=be;var ne={};Se(ne,{Root:()=>vt,Separator:()=>ge});import*as no from"react";import{jsx as gt}from"react/jsx-runtime";var ht="Separator",so="horizontal",xt=["horizontal","vertical"],ge=no.forwardRef((e,t)=>{let{decorative:o,orientation:r=so,...s}=e,a=yt(r)?r:so,p=o?{role:"none"}:{"aria-orientation":a==="vertical"?a:void 0,role:"separator"};return gt(re.div,{"data-orientation":a,...p,...s,ref:t})});ge.displayName=ht;function yt(e){return xt.includes(e)}var vt=ge;import{jsx as wt}from"react/jsx-runtime";function ao({className:e,...t}){return wt(se.Root,{"data-slot":"label",className:z("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}import{jsx as kt}from"react/jsx-runtime";function io({className:e,orientation:t="horizontal",decorative:o=!0,...r}){return kt(ne.Root,{"data-slot":"separator",decorative:o,orientation:t,className:z("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...r})}import{jsx as N,jsxs as St}from"react/jsx-runtime";function sr({className:e,...t}){return N("fieldset",{"data-slot":"field-set",className:z("flex flex-col gap-6","has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",e),...t})}function nr({className:e,variant:t="legend",...o}){return N("legend",{"data-slot":"field-legend","data-variant":t,className:z("mb-3 font-medium","data-[variant=legend]:text-base","data-[variant=label]:text-sm",e),...o})}function ar({className:e,...t}){return N("div",{"data-slot":"field-group",className:z("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",e),...t})}var Ct=Ne("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col @md/field-group:flex-row @md/field-group:items-center [&>*]:w-full @md/field-group:[&>*]:w-auto [&>.sr-only]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function ir({className:e,orientation:t="vertical",...o}){return N("div",{role:"group","data-slot":"field","data-orientation":t,className:z(Ct({orientation:t}),e),...o})}function lr({className:e,...t}){return N("div",{"data-slot":"field-content",className:z("group/field-content flex flex-1 flex-col gap-1.5 leading-snug",e),...t})}function cr({className:e,...t}){return N(ao,{"data-slot":"field-label",className:z("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5 dark:has-data-[state=checked]:bg-primary/10",e),...t})}function dr({className:e,...t}){return N("div",{"data-slot":"field-label",className:z("flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",e),...t})}function mr({className:e,...t}){return N("p",{"data-slot":"field-description",className:z("text-sm leading-normal font-normal text-muted-foreground group-has-[[data-orientation=horizontal]]/field:text-balance","last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5","[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",e),...t})}function pr({children:e,className:t,...o}){return St("div",{"data-slot":"field-separator","data-content":!!e,className:z("relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",t),...o,children:[N(io,{className:"absolute inset-0 top-1/2"}),e&&N("span",{className:"relative mx-auto block w-fit bg-background px-2 text-muted-foreground","data-slot":"field-separator-content",children:e})]})}function ur({className:e,children:t,errors:o,...r}){let s=Rt(()=>{if(t)return t;if(!o?.length)return null;let a=[...new Map(o.map(n=>[n?.message,n])).values()];return a?.length==1?a[0]?.message:N("ul",{className:"ml-4 flex list-disc flex-col gap-1",children:a.map((n,p)=>n?.message&&N("li",{children:n.message},p))})},[t,o]);return s?N("div",{role:"alert","data-slot":"field-error",className:z("text-sm font-normal text-destructive",e),...r,children:s}):null}export{ir as Field,lr as FieldContent,mr as FieldDescription,ur as FieldError,ar as FieldGroup,cr as FieldLabel,nr as FieldLegend,pr as FieldSeparator,sr as FieldSet,dr as FieldTitle};
b/55c3ca8e839517608c18ba0c41513311ba22cb03d06cd417837b5207f98c1f13 ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Holo Whisper S0 witness: legacy-ggml reader + κ-forge on the REAL ggml-small.bin.
2
+ // Proves: format parsed exactly (every byte consumed), hparams match Whisper-small,
3
+ // all 479 tensors forge to κ-objects, L5 re-derive holds, tamper is refused, the
4
+ // model gets one deterministic root κ. (Forges 488 MB → pure-JS sha256 ~40 s.)
5
+
6
+ import assert from "node:assert";
7
+ import { existsSync, readFileSync } from "node:fs";
8
+ import { parseWhisperHeader, forgeWhisper, whisperConvStem, whisperEncoder, whisperDecoder } from "./gguf-forge-whisper.mjs";
9
+ import { loadByKappa, mapStore } from "./gguf-forge.mjs";
10
+ import { dequantizeExact } from "./gguf-forge-dequant.mjs";
11
+
12
+ let pass = 0, fail = 0;
13
+ const t = (name, fn) => { try { fn(); pass++; console.log(" ok " + name); } catch (e) { fail++; console.log("FAIL " + name + "\n " + e.message); } };
14
+
15
+ const MODEL = "C:/Users/pavel/Desktop/SovereignAI/1_Compute/whisper.cpp/ggml-small.bin";
16
+ if (!existsSync(MODEL)) { console.log(" (skipped — ggml-small.bin not present)"); process.exit(0); }
17
+
18
+ const bytes = new Uint8Array(readFileSync(MODEL));
19
+
20
+ t("legacy-ggml header parses EXACTLY (every byte consumed, no drift)", () => {
21
+ const h = parseWhisperHeader(bytes);
22
+ assert.strictEqual(h.bytesConsumed, bytes.byteLength, "trailing/short bytes → format drift");
23
+ assert.deepStrictEqual(h.hparams, {
24
+ n_vocab: 51865, n_audio_ctx: 1500, n_audio_state: 768, n_audio_head: 12, n_audio_layer: 12,
25
+ n_text_ctx: 448, n_text_state: 768, n_text_head: 12, n_text_layer: 12, n_mels: 80, ftype: 1,
26
+ });
27
+ assert.strictEqual(h.mel.n_mel, 80); assert.strictEqual(h.mel.n_fft, 201);
28
+ assert.strictEqual(h.tensors.length, 479);
29
+ });
30
+
31
+ const f = forgeWhisper(bytes);
32
+ const store = mapStore(f.blocks);
33
+
34
+ t("forge: 479 tensors → κ-objects, encoder+decoder+conv+cross-attn all present", () => {
35
+ assert.strictEqual(f.tensors.length, 479);
36
+ assert.strictEqual(f.plan.arch, "whisper");
37
+ assert.strictEqual(f.plan.hparams.n_audio_layer, 12);
38
+ const names = new Set(f.tensors.map((x) => x.name));
39
+ for (const n of ["encoder.conv1.weight", "encoder.conv2.weight", "encoder.positional_embedding",
40
+ "encoder.blocks.0.attn.query.weight", "encoder.blocks.11.mlp.2.weight",
41
+ "decoder.token_embedding.weight", "decoder.blocks.0.cross_attn.key.weight", "decoder.ln.weight"])
42
+ assert.ok(names.has(n), `missing tensor ${n}`);
43
+ // Whisper quirk: attention KEY projection has no bias (query/value do).
44
+ assert.ok(!names.has("encoder.blocks.0.attn.key.bias"), "K proj should have no bias");
45
+ assert.ok(names.has("encoder.blocks.0.attn.query.bias"), "Q proj has bias");
46
+ });
47
+
48
+ t("root κ is a did:holo sha256 and re-hashing the plan reproduces it", () => {
49
+ assert.match(f.rootKappa, /^did:holo:sha256:[0-9a-f]{64}$/);
50
+ const again = forgeWhisper(bytes).rootKappa; // deterministic from the same bytes
51
+ assert.strictEqual(again, f.rootKappa);
52
+ });
53
+
54
+ t("L5 re-derive holds on a sample of tensors (incl largest)", () => {
55
+ const sample = [f.tensors[0], f.tensors[f.tensors.length - 1],
56
+ f.tensors.reduce((a, b) => (b.nbytes > a.nbytes ? b : a))]; // biggest = token_embedding
57
+ for (const ts of sample) { const got = loadByKappa(store, ts.kappa); assert.strictEqual(got.byteLength, ts.nbytes); }
58
+ });
59
+
60
+ t("L5 REFUSES a tampered block", () => {
61
+ const victim = f.tensors[10], hex = victim.kappa.split(":").pop();
62
+ const tampered = mapStore(new Map(f.blocks));
63
+ const b = f.blocks.get(hex).slice(); b[0] ^= 0xff; tampered.get = (h) => (h === hex ? b : f.blocks.get(h));
64
+ assert.throws(() => loadByKappa(tampered, victim.kappa), /L5 REFUSE/);
65
+ });
66
+
67
+ t("forged tensor bytes account for ~all of the 488 MB file", () => {
68
+ const totalTensor = f.tensors.reduce((a, x) => a + x.nbytes, 0);
69
+ assert.ok(totalTensor > bytes.byteLength * 0.98, `tensors ${totalTensor} vs file ${bytes.byteLength}`);
70
+ console.log(` ${f.tensors.length} tensors, ${(totalTensor / 1e6).toFixed(0)} MB forged, root ${f.rootKappa.slice(0, 28)}…`);
71
+ });
72
+
73
+ t("S2 conv stem runs on REAL weights: [80,3000] mel → [1500,768] encoder input, finite, deterministic", () => {
74
+ // deterministic synthetic log-mel in a plausible range (~[-1, 0.4])
75
+ const nF = 2 * f.plan.hparams.n_audio_ctx, mel = new Float32Array(80 * nF);
76
+ let s = 12345; const rnd = () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 4294967296; };
77
+ for (let i = 0; i < mel.length; i++) mel[i] = rnd() * 1.4 - 1.0;
78
+ const { x, n_ctx, n_state } = whisperConvStem(f.plan, store, mel);
79
+ assert.strictEqual(n_ctx, 1500); assert.strictEqual(n_state, 768);
80
+ assert.strictEqual(x.length, 1500 * 768);
81
+ assert.ok(x.every(Number.isFinite), "conv stem produced NaN/Inf");
82
+ const x2 = whisperConvStem(f.plan, store, mel).x;
83
+ for (let i = 0; i < x.length; i += 4096) assert.strictEqual(x[i], x2[i]); // deterministic
84
+ let mn = Infinity, mx = -Infinity; for (const v of x) { if (v < mn) mn = v; if (v > mx) mx = v; }
85
+ console.log(` encoder input [1500,768] range [${mn.toFixed(3)}, ${mx.toFixed(3)}], finite ✓`);
86
+ });
87
+
88
+ // ── S3: encoder vs an independent f64 reference (real weights, small n_ctx) ──
89
+ const { n_audio_state: S, n_audio_head: H } = f.plan.hparams, HD = S / H, SCALE = 1 / Math.sqrt(HD), FF = 4 * S, LN_EPS = 1e-5;
90
+ const D = (name) => { const t = f.plan.tensors.find((x) => x.name === name); return dequantizeExact(t.type, loadByKappa(store, t.kappa), t.dims.reduce((a, b) => a * b, 1)); };
91
+ function linR(X, n, W, inD, outD, bias) { const Y = new Float64Array(n * outD); for (let p = 0; p < n; p++) for (let o = 0; o < outD; o++) { let s = bias ? bias[o] : 0; for (let i = 0; i < inD; i++) s += X[p * inD + i] * W[o * inD + i]; Y[p * outD + o] = s; } return Y; }
92
+ function lnR(X, n, w, b) { const Y = new Float64Array(n * S); for (let p = 0; p < n; p++) { let m = 0; for (let i = 0; i < S; i++) m += X[p * S + i]; m /= S; let v = 0; for (let i = 0; i < S; i++) v += (X[p * S + i] - m) ** 2; const sc = 1 / Math.sqrt(v / S + LN_EPS); for (let i = 0; i < S; i++) Y[p * S + i] = (X[p * S + i] - m) * sc * w[i] + b[i]; } return Y; }
93
+ const geluR = (x) => 0.5 * x * (1 + Math.tanh(0.7978845608028654 * (x + 0.044715 * x ** 3)));
94
+ function mhaR(q, k, v, n) { const out = new Float64Array(n * S); for (let h = 0; h < H; h++) { const ho = h * HD; for (let i = 0; i < n; i++) { const sc = []; for (let j = 0; j < n; j++) { let s = 0; for (let d = 0; d < HD; d++) s += q[i * S + ho + d] * k[j * S + ho + d]; sc.push(s * SCALE); } const mx = Math.max(...sc); let z = 0; const e = sc.map((s) => { const x = Math.exp(s - mx); z += x; return x; }); for (let d = 0; d < HD; d++) { let a = 0; for (let j = 0; j < n; j++) a += (e[j] / z) * v[j * S + ho + d]; out[i * S + ho + d] = a; } } } return out; }
95
+ function encoderRef(x0, n) {
96
+ let x = Array.from(x0);
97
+ for (let il = 0; il < f.plan.hparams.n_audio_layer; il++) {
98
+ const p = `encoder.blocks.${il}.`;
99
+ const an = lnR(x, n, D(p + "attn_ln.weight"), D(p + "attn_ln.bias"));
100
+ const q = linR(an, n, D(p + "attn.query.weight"), S, S, D(p + "attn.query.bias"));
101
+ const k = linR(an, n, D(p + "attn.key.weight"), S, S, null);
102
+ const v = linR(an, n, D(p + "attn.value.weight"), S, S, D(p + "attn.value.bias"));
103
+ const ao = linR(mhaR(q, k, v, n), n, D(p + "attn.out.weight"), S, S, D(p + "attn.out.bias"));
104
+ for (let i = 0; i < x.length; i++) x[i] += ao[i];
105
+ const mn = lnR(x, n, D(p + "mlp_ln.weight"), D(p + "mlp_ln.bias"));
106
+ const h1 = linR(mn, n, D(p + "mlp.0.weight"), S, FF, D(p + "mlp.0.bias"));
107
+ for (let i = 0; i < h1.length; i++) h1[i] = geluR(h1[i]);
108
+ const h2 = linR(h1, n, D(p + "mlp.2.weight"), FF, S, D(p + "mlp.2.bias"));
109
+ for (let i = 0; i < x.length; i++) x[i] += h2[i];
110
+ }
111
+ return lnR(x, n, D("encoder.ln_post.weight"), D("encoder.ln_post.bias"));
112
+ }
113
+
114
+ t("S3 encoder matches independent f64 reference (12 layers, real weights)", () => {
115
+ const n = 4, x0 = new Float32Array(n * S);
116
+ let s = 99; const rnd = () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 4294967296 * 2 - 1; };
117
+ for (let i = 0; i < x0.length; i++) x0[i] = rnd() * 0.5;
118
+ const got = whisperEncoder(f.plan, store, x0, n), ref = encoderRef(x0, n);
119
+ let worst = 0; for (let i = 0; i < got.length; i++) worst = Math.max(worst, Math.abs(got[i] - ref[i]) / (Math.abs(ref[i]) + 1e-3));
120
+ assert.ok(worst < 5e-3, `encoder rel err ${worst}`);
121
+ console.log(` 12-layer encoder vs f64 ref: worst relErr ${worst.toExponential(2)}`);
122
+ });
123
+
124
+ t("S3 encoder runs on REAL conv-stem output (finite, deterministic)", () => {
125
+ const nF = 2 * f.plan.hparams.n_audio_ctx, mel = new Float32Array(80 * nF);
126
+ let s = 7; const rnd = () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 4294967296; };
127
+ for (let i = 0; i < mel.length; i++) mel[i] = rnd() * 1.4 - 1.0;
128
+ const stem = whisperConvStem(f.plan, store, mel);
129
+ const N = 96, sub = stem.x.subarray(0, N * S); // a slice of the real stem output
130
+ const enc = whisperEncoder(f.plan, store, sub, N);
131
+ assert.strictEqual(enc.length, N * S);
132
+ assert.ok(enc.every(Number.isFinite), "encoder produced NaN/Inf");
133
+ const enc2 = whisperEncoder(f.plan, store, sub, N);
134
+ for (let i = 0; i < enc.length; i += 4096) assert.strictEqual(enc[i], enc2[i]);
135
+ console.log(` encoder output [${N},${S}] on real conv-stem slice, finite ✓`);
136
+ });
137
+
138
+ // ── S4: decoder (self-attn + cross-attn + mlp) vs independent f64 reference ──
139
+ function attendR(q, k, v, nQ, nK, w, causal) { const out = new Float64Array(nQ * S); for (let h = 0; h < H; h++) { const ho = h * HD; for (let i = 0; i < nQ; i++) { const lim = causal ? i + 1 : nK, sc = []; for (let j = 0; j < lim; j++) { let s = 0; for (let d = 0; d < HD; d++) s += q[i * S + ho + d] * k[j * S + ho + d]; sc.push(s * SCALE); } const mx = Math.max(...sc); let z = 0; const e = sc.map((s) => { const x = Math.exp(s - mx); z += x; return x; }); for (let d = 0; d < HD; d++) { let a = 0; for (let j = 0; j < lim; j++) a += (e[j] / z) * v[j * S + ho + d]; out[i * S + ho + d] = a; } } } return out; }
140
+ function decoderRef(tokenIds, enc, nEnc) {
141
+ const NL = f.plan.hparams.n_text_layer, NV = f.plan.hparams.n_vocab, N = tokenIds.length;
142
+ const tokEmb = D("decoder.token_embedding.weight"), posEmb = D("decoder.positional_embedding");
143
+ let x = new Float64Array(N * S);
144
+ for (let p = 0; p < N; p++) for (let d = 0; d < S; d++) x[p * S + d] = tokEmb[tokenIds[p] * S + d] + posEmb[p * S + d];
145
+ for (let il = 0; il < NL; il++) {
146
+ const p = `decoder.blocks.${il}.`;
147
+ const cK = linR(enc, nEnc, D(p + "cross_attn.key.weight"), S, S, null), cV = linR(enc, nEnc, D(p + "cross_attn.value.weight"), S, S, D(p + "cross_attn.value.bias"));
148
+ const an = lnR(x, N, D(p + "attn_ln.weight"), D(p + "attn_ln.bias"));
149
+ const q = linR(an, N, D(p + "attn.query.weight"), S, S, D(p + "attn.query.bias")), k = linR(an, N, D(p + "attn.key.weight"), S, S, null), v = linR(an, N, D(p + "attn.value.weight"), S, S, D(p + "attn.value.bias"));
150
+ const so = linR(attendR(q, k, v, N, N, null, true), N, D(p + "attn.out.weight"), S, S, D(p + "attn.out.bias"));
151
+ for (let i = 0; i < x.length; i++) x[i] += so[i];
152
+ const cn = lnR(x, N, D(p + "cross_attn_ln.weight"), D(p + "cross_attn_ln.bias"));
153
+ const cq = linR(cn, N, D(p + "cross_attn.query.weight"), S, S, D(p + "cross_attn.query.bias"));
154
+ const co = linR(attendR(cq, cK, cV, N, nEnc, null, false), N, D(p + "cross_attn.out.weight"), S, S, D(p + "cross_attn.out.bias"));
155
+ for (let i = 0; i < x.length; i++) x[i] += co[i];
156
+ const mn = lnR(x, N, D(p + "mlp_ln.weight"), D(p + "mlp_ln.bias"));
157
+ const h1 = linR(mn, N, D(p + "mlp.0.weight"), S, FF, D(p + "mlp.0.bias"));
158
+ for (let i = 0; i < h1.length; i++) h1[i] = geluR(h1[i]);
159
+ const h2 = linR(h1, N, D(p + "mlp.2.weight"), FF, S, D(p + "mlp.2.bias"));
160
+ for (let i = 0; i < x.length; i++) x[i] += h2[i];
161
+ }
162
+ const fn = lnR(x, N, D("decoder.ln.weight"), D("decoder.ln.bias")), logits = new Float64Array(NV);
163
+ for (let tk = 0; tk < NV; tk++) { let s = 0; for (let d = 0; d < S; d++) s += fn[(N - 1) * S + d] * tokEmb[tk * S + d]; logits[tk] = s; }
164
+ return logits;
165
+ }
166
+
167
+ t("S4 decoder (self+cross attn) matches independent f64 reference, real weights", () => {
168
+ const nEnc = 8, N = 4, enc = new Float32Array(nEnc * S);
169
+ let s = 31; const rnd = () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 4294967296 * 2 - 1; };
170
+ for (let i = 0; i < enc.length; i++) enc[i] = rnd() * 0.5; // synthetic encoder output
171
+ const toks = [1, 234, 5000, 99]; // arbitrary valid token ids
172
+ const got = whisperDecoder(f.plan, store, toks, enc, nEnc), ref = decoderRef(toks, enc, nEnc);
173
+ assert.strictEqual(got.length, f.plan.hparams.n_vocab);
174
+ let worst = 0; for (let i = 0; i < got.length; i++) worst = Math.max(worst, Math.abs(got[i] - ref[i]) / (Math.abs(ref[i]) + 1e-2));
175
+ assert.ok(worst < 5e-3, `decoder rel err ${worst}`);
176
+ const am = (a) => { let bi = 0; for (let i = 1; i < a.length; i++) if (a[i] > a[bi]) bi = i; return bi; };
177
+ assert.strictEqual(am(got), am(ref), "argmax mismatch");
178
+ const got2 = whisperDecoder(f.plan, store, toks, enc, nEnc);
179
+ for (let i = 0; i < got.length; i += 4096) assert.strictEqual(got[i], got2[i]);
180
+ console.log(` 12-block decoder vs f64 ref: worst relErr ${worst.toExponential(2)}, argmax=${am(got)} (deterministic)`);
181
+ });
182
+
183
+ console.log(`\n${pass} passed, ${fail} failed`);
184
+ process.exit(fail ? 1 : 0);
b/55d2c61c568c176f395c9ea774868c740f49c08534f6387756bf9204d4beb53f ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "org.hologram.ui.example.field-checkbox",
3
+ "name": "field-checkbox",
4
+ "tier": "example",
5
+ "library": "shadcn",
6
+ "category": "Examples",
7
+ "upstream": "https://ui.shadcn.com/r/styles/new-york-v4/field-checkbox.json",
8
+ "did": "did:holo:sha256:f18cc146501322c174a06b179366676d6c0a116df5ca308ffb953bfe5867f79e",
9
+ "import": "holo://sha256:d223fb1c37b930bc8eb81dce2694f0fcd55fea24159452172125bf27ee5a8540",
10
+ "integrity": "sha256-0iP7HDe5MLyOuB3OJpTw/NVf6iQVlFIXISW/J+5ahUA=",
11
+ "kappa": "sha256:f18cc146501322c174a06b179366676d6c0a116df5ca308ffb953bfe5867f79e",
12
+ "moduleKappa": "sha256:d223fb1c37b930bc8eb81dce2694f0fcd55fea24159452172125bf27ee5a8540",
13
+ "renderExport": "default",
14
+ "source": "registry/new-york-v4/examples/field-checkbox.tsx",
15
+ "module": "vendor/components/field-checkbox.js",
16
+ "exports": [
17
+ "default"
18
+ ],
19
+ "license": "MIT"
20
+ }
b/55dd5507b69268db332c46f357a355703f5ac6da3cb86a70918ac69c7eeecf1b ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client"
2
+
3
+ import React, { useState } from "react"
4
+
5
+ import { cn } from "@/lib/utils"
6
+
7
+ /**
8
+ * InteractiveGridPattern is a component that renders a grid pattern with interactive squares.
9
+ *
10
+ * @param width - The width of each square.
11
+ * @param height - The height of each square.
12
+ * @param squares - The number of squares in the grid. The first element is the number of horizontal squares, and the second element is the number of vertical squares.
13
+ * @param className - The class name of the grid.
14
+ * @param squaresClassName - The class name of the squares.
15
+ */
16
+ interface InteractiveGridPatternProps extends React.SVGProps<SVGSVGElement> {
17
+ width?: number
18
+ height?: number
19
+ squares?: [number, number] // [horizontal, vertical]
20
+ className?: string
21
+ squaresClassName?: string
22
+ }
23
+
24
+ /**
25
+ * The InteractiveGridPattern component.
26
+ *
27
+ * @see InteractiveGridPatternProps for the props interface.
28
+ * @returns A React component.
29
+ */
30
+ export function InteractiveGridPattern({
31
+ width = 40,
32
+ height = 40,
33
+ squares = [24, 24],
34
+ className,
35
+ squaresClassName,
36
+ ...props
37
+ }: InteractiveGridPatternProps) {
38
+ const [horizontal, vertical] = squares
39
+ const [hoveredSquare, setHoveredSquare] = useState<number | null>(null)
40
+
41
+ return (
42
+ <svg
43
+ width={width * horizontal}
44
+ height={height * vertical}
45
+ className={cn(
46
+ "absolute inset-0 h-full w-full border border-gray-400/30",
47
+ className
48
+ )}
49
+ {...props}
50
+ >
51
+ {Array.from({ length: horizontal * vertical }).map((_, index) => {
52
+ const x = (index % horizontal) * width
53
+ const y = Math.floor(index / horizontal) * height
54
+ return (
55
+ <rect
56
+ key={index}
57
+ x={x}
58
+ y={y}
59
+ width={width}
60
+ height={height}
61
+ className={cn(
62
+ "stroke-gray-400/30 transition-all duration-100 ease-in-out not-[&:hover]:duration-1000",
63
+ hoveredSquare === index ? "fill-gray-300/30" : "fill-transparent",
64
+ squaresClassName
65
+ )}
66
+ onMouseEnter={() => setHoveredSquare(index)}
67
+ onMouseLeave={() => setHoveredSquare(null)}
68
+ />
69
+ )
70
+ })}
71
+ </svg>
72
+ )
73
+ }
b/55f7f3e71c56ec17f08356720151daded82613f589ff568dd2174a7a4a0e0f8f ADDED
@@ -0,0 +1 @@
 
 
1
+ /*! 🌼 daisyUI 5.5.22 - MIT License */ @layer utilities{.dropdown{@layer daisyui.l1.l2.l3{&{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}&>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}& .dropdown-content{position:absolute}&.dropdown-close .dropdown-content,&:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,&.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}&[popover],& .dropdown-content{z-index:999;@media (prefers-reduced-motion:no-preference){&{transition-behavior:allow-discrete;transition-property:opacity,scale,display,overlay;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}}@starting-style{&[popover],& .dropdown-content{opacity:0;scale:95%}}&:not(.dropdown-close){&.dropdown-open,&:not(.dropdown-hover):focus,&:focus-within{&>[tabindex]:first-child{pointer-events:none}& .dropdown-content{opacity:1;scale:100%}}&.dropdown-hover:hover{& .dropdown-content{opacity:1;scale:100%}}}&:is(details){& summary{&::-webkit-details-marker{display:none}}}&:where([popover]){background:0 0}&[popover]{color:inherit;position:fixed;@supports not (position-area:bottom){&{margin:auto}&.dropdown-close,&.dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}&::backdrop{background-color:oklab(0% none none/.3)}}&.dropdown-close,&:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}}}}.dropdown-start{@layer daisyui.l1.l2{&{--anchor-h:span-right}& :where(.dropdown-content){inset-inline-end:auto;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}&.dropdown-right{--anchor-h:right;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}}}.dropdown-center{@layer daisyui.l1.l2{&{--anchor-h:center}& :where(.dropdown-content){inset-inline-end:50%;translate:50%;[dir=rtl] &{translate:-50%}}&.dropdown-left{--anchor-h:left;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}&.dropdown-right{--anchor-h:right;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}}}.dropdown-end{@layer daisyui.l1.l2{&{--anchor-h:span-left}& :where(.dropdown-content){inset-inline-end:0;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}&.dropdown-right{--anchor-h:right;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}}}.dropdown-left{@layer daisyui.l1.l2{&{--anchor-h:left;--anchor-v:span-bottom}& .dropdown-content{inset-inline-end:100%;transform-origin:100%;top:0;bottom:auto}}}.dropdown-right{@layer daisyui.l1.l2{&{--anchor-h:right;--anchor-v:span-bottom}& .dropdown-content{inset-inline-start:100%;transform-origin:0;top:0;bottom:auto}}}.dropdown-bottom{@layer daisyui.l1.l2{&{--anchor-v:bottom}& .dropdown-content{transform-origin:top;top:100%;bottom:auto}}}.dropdown-top{@layer daisyui.l1.l2{&{--anchor-v:top}& .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}}}@keyframes dropdown{0%{opacity:0}}@media (width>=640px){.sm\:dropdown{@layer daisyui.l1.l2.l3{&{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}&>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}& .dropdown-content{position:absolute}&.dropdown-close .dropdown-content,&:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,&.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}&[popover],& .dropdown-content{z-index:999;@media (prefers-reduced-motion:no-preference){&{transition-behavior:allow-discrete;transition-property:opacity,scale,display,overlay;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}}@starting-style{&[popover],& .dropdown-content{opacity:0;scale:95%}}&:not(.dropdown-close){&.dropdown-open,&:not(.dropdown-hover):focus,&:focus-within{&>[tabindex]:first-child{pointer-events:none}& .dropdown-content{opacity:1;scale:100%}}&.dropdown-hover:hover{& .dropdown-content{opacity:1;scale:100%}}}&:is(details){& summary{&::-webkit-details-marker{display:none}}}&:where([popover]){background:0 0}&[popover]{color:inherit;position:fixed;@supports not (position-area:bottom){&{margin:auto}&.dropdown-close,&.dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}&::backdrop{background-color:oklab(0% none none/.3)}}&.dropdown-close,&:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}}}}.sm\:dropdown-start{@layer daisyui.l1.l2{&{--anchor-h:span-right}& :where(.dropdown-content){inset-inline-end:auto;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}&.dropdown-right{--anchor-h:right;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}}}.sm\:dropdown-center{@layer daisyui.l1.l2{&{--anchor-h:center}& :where(.dropdown-content){inset-inline-end:50%;translate:50%;[dir=rtl] &{translate:-50%}}&.dropdown-left{--anchor-h:left;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}&.dropdown-right{--anchor-h:right;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}}}.sm\:dropdown-end{@layer daisyui.l1.l2{&{--anchor-h:span-left}& :where(.dropdown-content){inset-inline-end:0;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}&.dropdown-right{--anchor-h:right;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}}}.sm\:dropdown-left{@layer daisyui.l1.l2{&{--anchor-h:left;--anchor-v:span-bottom}& .dropdown-content{inset-inline-end:100%;transform-origin:100%;top:0;bottom:auto}}}.sm\:dropdown-right{@layer daisyui.l1.l2{&{--anchor-h:right;--anchor-v:span-bottom}& .dropdown-content{inset-inline-start:100%;transform-origin:0;top:0;bottom:auto}}}.sm\:dropdown-bottom{@layer daisyui.l1.l2{&{--anchor-v:bottom}& .dropdown-content{transform-origin:top;top:100%;bottom:auto}}}.sm\:dropdown-top{@layer daisyui.l1.l2{&{--anchor-v:top}& .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}}}}@media (width>=768px){.md\:dropdown{@layer daisyui.l1.l2.l3{&{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}&>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}& .dropdown-content{position:absolute}&.dropdown-close .dropdown-content,&:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,&.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}&[popover],& .dropdown-content{z-index:999;@media (prefers-reduced-motion:no-preference){&{transition-behavior:allow-discrete;transition-property:opacity,scale,display,overlay;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}}@starting-style{&[popover],& .dropdown-content{opacity:0;scale:95%}}&:not(.dropdown-close){&.dropdown-open,&:not(.dropdown-hover):focus,&:focus-within{&>[tabindex]:first-child{pointer-events:none}& .dropdown-content{opacity:1;scale:100%}}&.dropdown-hover:hover{& .dropdown-content{opacity:1;scale:100%}}}&:is(details){& summary{&::-webkit-details-marker{display:none}}}&:where([popover]){background:0 0}&[popover]{color:inherit;position:fixed;@supports not (position-area:bottom){&{margin:auto}&.dropdown-close,&.dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}&::backdrop{background-color:oklab(0% none none/.3)}}&.dropdown-close,&:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}}}}.md\:dropdown-start{@layer daisyui.l1.l2{&{--anchor-h:span-right}& :where(.dropdown-content){inset-inline-end:auto;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}&.dropdown-right{--anchor-h:right;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}}}.md\:dropdown-center{@layer daisyui.l1.l2{&{--anchor-h:center}& :where(.dropdown-content){inset-inline-end:50%;translate:50%;[dir=rtl] &{translate:-50%}}&.dropdown-left{--anchor-h:left;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}&.dropdown-right{--anchor-h:right;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}}}.md\:dropdown-end{@layer daisyui.l1.l2{&{--anchor-h:span-left}& :where(.dropdown-content){inset-inline-end:0;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}&.dropdown-right{--anchor-h:right;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}}}.md\:dropdown-left{@layer daisyui.l1.l2{&{--anchor-h:left;--anchor-v:span-bottom}& .dropdown-content{inset-inline-end:100%;transform-origin:100%;top:0;bottom:auto}}}.md\:dropdown-right{@layer daisyui.l1.l2{&{--anchor-h:right;--anchor-v:span-bottom}& .dropdown-content{inset-inline-start:100%;transform-origin:0;top:0;bottom:auto}}}.md\:dropdown-bottom{@layer daisyui.l1.l2{&{--anchor-v:bottom}& .dropdown-content{transform-origin:top;top:100%;bottom:auto}}}.md\:dropdown-top{@layer daisyui.l1.l2{&{--anchor-v:top}& .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}}}}@media (width>=1024px){.lg\:dropdown{@layer daisyui.l1.l2.l3{&{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}&>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}& .dropdown-content{position:absolute}&.dropdown-close .dropdown-content,&:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,&.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}&[popover],& .dropdown-content{z-index:999;@media (prefers-reduced-motion:no-preference){&{transition-behavior:allow-discrete;transition-property:opacity,scale,display,overlay;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}}@starting-style{&[popover],& .dropdown-content{opacity:0;scale:95%}}&:not(.dropdown-close){&.dropdown-open,&:not(.dropdown-hover):focus,&:focus-within{&>[tabindex]:first-child{pointer-events:none}& .dropdown-content{opacity:1;scale:100%}}&.dropdown-hover:hover{& .dropdown-content{opacity:1;scale:100%}}}&:is(details){& summary{&::-webkit-details-marker{display:none}}}&:where([popover]){background:0 0}&[popover]{color:inherit;position:fixed;@supports not (position-area:bottom){&{margin:auto}&.dropdown-close,&.dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}&::backdrop{background-color:oklab(0% none none/.3)}}&.dropdown-close,&:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}}}}.lg\:dropdown-start{@layer daisyui.l1.l2{&{--anchor-h:span-right}& :where(.dropdown-content){inset-inline-end:auto;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}&.dropdown-right{--anchor-h:right;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}}}.lg\:dropdown-center{@layer daisyui.l1.l2{&{--anchor-h:center}& :where(.dropdown-content){inset-inline-end:50%;translate:50%;[dir=rtl] &{translate:-50%}}&.dropdown-left{--anchor-h:left;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}&.dropdown-right{--anchor-h:right;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}}}.lg\:dropdown-end{@layer daisyui.l1.l2{&{--anchor-h:span-left}& :where(.dropdown-content){inset-inline-end:0;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}&.dropdown-right{--anchor-h:right;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}}}.lg\:dropdown-left{@layer daisyui.l1.l2{&{--anchor-h:left;--anchor-v:span-bottom}& .dropdown-content{inset-inline-end:100%;transform-origin:100%;top:0;bottom:auto}}}.lg\:dropdown-right{@layer daisyui.l1.l2{&{--anchor-h:right;--anchor-v:span-bottom}& .dropdown-content{inset-inline-start:100%;transform-origin:0;top:0;bottom:auto}}}.lg\:dropdown-bottom{@layer daisyui.l1.l2{&{--anchor-v:bottom}& .dropdown-content{transform-origin:top;top:100%;bottom:auto}}}.lg\:dropdown-top{@layer daisyui.l1.l2{&{--anchor-v:top}& .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}}}}@media (width>=1280px){.xl\:dropdown{@layer daisyui.l1.l2.l3{&{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}&>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}& .dropdown-content{position:absolute}&.dropdown-close .dropdown-content,&:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,&.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}&[popover],& .dropdown-content{z-index:999;@media (prefers-reduced-motion:no-preference){&{transition-behavior:allow-discrete;transition-property:opacity,scale,display,overlay;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}}@starting-style{&[popover],& .dropdown-content{opacity:0;scale:95%}}&:not(.dropdown-close){&.dropdown-open,&:not(.dropdown-hover):focus,&:focus-within{&>[tabindex]:first-child{pointer-events:none}& .dropdown-content{opacity:1;scale:100%}}&.dropdown-hover:hover{& .dropdown-content{opacity:1;scale:100%}}}&:is(details){& summary{&::-webkit-details-marker{display:none}}}&:where([popover]){background:0 0}&[popover]{color:inherit;position:fixed;@supports not (position-area:bottom){&{margin:auto}&.dropdown-close,&.dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}&::backdrop{background-color:oklab(0% none none/.3)}}&.dropdown-close,&:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}}}}.xl\:dropdown-start{@layer daisyui.l1.l2{&{--anchor-h:span-right}& :where(.dropdown-content){inset-inline-end:auto;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}&.dropdown-right{--anchor-h:right;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}}}.xl\:dropdown-center{@layer daisyui.l1.l2{&{--anchor-h:center}& :where(.dropdown-content){inset-inline-end:50%;translate:50%;[dir=rtl] &{translate:-50%}}&.dropdown-left{--anchor-h:left;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}&.dropdown-right{--anchor-h:right;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}}}.xl\:dropdown-end{@layer daisyui.l1.l2{&{--anchor-h:span-left}& :where(.dropdown-content){inset-inline-end:0;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}&.dropdown-right{--anchor-h:right;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}}}.xl\:dropdown-left{@layer daisyui.l1.l2{&{--anchor-h:left;--anchor-v:span-bottom}& .dropdown-content{inset-inline-end:100%;transform-origin:100%;top:0;bottom:auto}}}.xl\:dropdown-right{@layer daisyui.l1.l2{&{--anchor-h:right;--anchor-v:span-bottom}& .dropdown-content{inset-inline-start:100%;transform-origin:0;top:0;bottom:auto}}}.xl\:dropdown-bottom{@layer daisyui.l1.l2{&{--anchor-v:bottom}& .dropdown-content{transform-origin:top;top:100%;bottom:auto}}}.xl\:dropdown-top{@layer daisyui.l1.l2{&{--anchor-v:top}& .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}}}}@media (width>=1536px){.\32 xl\:dropdown{@layer daisyui.l1.l2.l3{&{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}&>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}& .dropdown-content{position:absolute}&.dropdown-close .dropdown-content,&:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,&.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}&[popover],& .dropdown-content{z-index:999;@media (prefers-reduced-motion:no-preference){&{transition-behavior:allow-discrete;transition-property:opacity,scale,display,overlay;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}}@starting-style{&[popover],& .dropdown-content{opacity:0;scale:95%}}&:not(.dropdown-close){&.dropdown-open,&:not(.dropdown-hover):focus,&:focus-within{&>[tabindex]:first-child{pointer-events:none}& .dropdown-content{opacity:1;scale:100%}}&.dropdown-hover:hover{& .dropdown-content{opacity:1;scale:100%}}}&:is(details){& summary{&::-webkit-details-marker{display:none}}}&:where([popover]){background:0 0}&[popover]{color:inherit;position:fixed;@supports not (position-area:bottom){&{margin:auto}&.dropdown-close,&.dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}&::backdrop{background-color:oklab(0% none none/.3)}}&.dropdown-close,&:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}}}}.\32 xl\:dropdown-start{@layer daisyui.l1.l2{&{--anchor-h:span-right}& :where(.dropdown-content){inset-inline-end:auto;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}&.dropdown-right{--anchor-h:right;--anchor-v:span-bottom;& .dropdown-content{top:0;bottom:auto}}}}.\32 xl\:dropdown-center{@layer daisyui.l1.l2{&{--anchor-h:center}& :where(.dropdown-content){inset-inline-end:50%;translate:50%;[dir=rtl] &{translate:-50%}}&.dropdown-left{--anchor-h:left;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}&.dropdown-right{--anchor-h:right;--anchor-v:center;& .dropdown-content{top:auto;bottom:50%;translate:0 50%}}}}.\32 xl\:dropdown-end{@layer daisyui.l1.l2{&{--anchor-h:span-left}& :where(.dropdown-content){inset-inline-end:0;translate:0;[dir=rtl] &{translate:0}}&.dropdown-left{--anchor-h:left;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}&.dropdown-right{--anchor-h:right;--anchor-v:span-top;& .dropdown-content{top:auto;bottom:0}}}}.\32 xl\:dropdown-left{@layer daisyui.l1.l2{&{--anchor-h:left;--anchor-v:span-bottom}& .dropdown-content{inset-inline-end:100%;transform-origin:100%;top:0;bottom:auto}}}.\32 xl\:dropdown-right{@layer daisyui.l1.l2{&{--anchor-h:right;--anchor-v:span-bottom}& .dropdown-content{inset-inline-start:100%;transform-origin:0;top:0;bottom:auto}}}.\32 xl\:dropdown-bottom{@layer daisyui.l1.l2{&{--anchor-v:bottom}& .dropdown-content{transform-origin:top;top:100%;bottom:auto}}}.\32 xl\:dropdown-top{@layer daisyui.l1.l2{&{--anchor-v:top}& .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}}}}}
b/5605ca412d6e945038dca47f16e05e5b544cdd3bc360a531a35226241ccd2c9f ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "org.hologram.ui.globe",
3
+ "name": "globe",
4
+ "tier": "component",
5
+ "library": "magicui",
6
+ "category": "Components",
7
+ "upstream": "https://magicui.design/r/globe.json",
8
+ "did": "did:holo:sha256:07f81009831e8c3af06ee97315cb7010c1e8a292f4d8f581b08c0f3db48acc93",
9
+ "import": "holo://sha256:d7ee8100b841e17f7b6bc4b6ab1dc9ba0b311158ee42aade3ae86958e860e89f",
10
+ "integrity": "sha256-1+6BALhB4X97a8S2qx3JugsxEVjuQqreOuhpWOhg6J8=",
11
+ "kappa": "sha256:07f81009831e8c3af06ee97315cb7010c1e8a292f4d8f581b08c0f3db48acc93",
12
+ "moduleKappa": "sha256:d7ee8100b841e17f7b6bc4b6ab1dc9ba0b311158ee42aade3ae86958e860e89f",
13
+ "renderExport": "Globe",
14
+ "source": "components/ui/globe.tsx",
15
+ "module": "vendor/components/globe.js",
16
+ "exports": [
17
+ "Globe"
18
+ ],
19
+ "license": "MIT"
20
+ }
b/5608426c62550cd0a77afd59a228aa4c86ab5bc8dadf3aca1506a2a5f75e3f6b ADDED
@@ -0,0 +1 @@
 
 
1
+ export default {"color-scheme":"light","--color-base-100":"oklch(92.951% 0.002 17.197)","--color-base-200":"oklch(86.445% 0.002 17.197)","--color-base-300":"oklch(79.938% 0.001 17.197)","--color-base-content":"oklch(16.961% 0.001 17.32)","--color-primary":"oklch(62.45% 0.278 3.836)","--color-primary-content":"oklch(100% 0 0)","--color-secondary":"oklch(48.495% 0.11 355.095)","--color-secondary-content":"oklch(89.699% 0.022 355.095)","--color-accent":"oklch(56.273% 0.054 154.39)","--color-accent-content":"oklch(100% 0 0)","--color-neutral":"oklch(24.155% 0.049 89.07)","--color-neutral-content":"oklch(92.951% 0.002 17.197)","--color-info":"oklch(72.06% 0.191 231.6)","--color-info-content":"oklch(0% 0 0)","--color-success":"oklch(64.8% 0.15 160)","--color-success-content":"oklch(0% 0 0)","--color-warning":"oklch(84.71% 0.199 83.87)","--color-warning-content":"oklch(0% 0 0)","--color-error":"oklch(71.76% 0.221 22.18)","--color-error-content":"oklch(0% 0 0)","--radius-selector":"1rem","--radius-field":"0.5rem","--radius-box":"1rem","--size-selector":"0.25rem","--size-field":"0.25rem","--border":"1px","--depth":"0","--noise":"0"};
b/560c8fd7423d640804fd2f3eaa05a94f2a8595db6866fde0b52e60627a193bf3 ADDED
@@ -0,0 +1 @@
 
 
1
+ export default {"color-scheme":"light","--color-base-100":"oklch(100% 0 0)","--color-base-200":"oklch(97% 0 0)","--color-base-300":"oklch(94% 0 0)","--color-base-content":"oklch(0% 0 0)","--color-primary":"oklch(15.906% 0 0)","--color-primary-content":"oklch(100% 0 0)","--color-secondary":"oklch(21.455% 0.001 17.278)","--color-secondary-content":"oklch(100% 0 0)","--color-accent":"oklch(26.861% 0 0)","--color-accent-content":"oklch(100% 0 0)","--color-neutral":"oklch(0% 0 0)","--color-neutral-content":"oklch(100% 0 0)","--color-info":"oklch(79.54% 0.103 205.9)","--color-info-content":"oklch(15.908% 0.02 205.9)","--color-success":"oklch(90.13% 0.153 164.14)","--color-success-content":"oklch(18.026% 0.03 164.14)","--color-warning":"oklch(88.37% 0.135 79.94)","--color-warning-content":"oklch(17.674% 0.027 79.94)","--color-error":"oklch(78.66% 0.15 28.47)","--color-error-content":"oklch(15.732% 0.03 28.47)","--radius-selector":"2rem","--radius-field":"0.25rem","--radius-box":"0.5rem","--size-selector":"0.25rem","--size-field":"0.25rem","--border":"1px","--depth":"0","--noise":"0"};
b/56234b2d05618f547efac1e650343fef712d48544d361d66b9eac296229c4143 ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // K1 witness — κ-native quantized KV memory. KV vectors → content-addressed quant
2
+ // κ-blocks (bit-exact, reusing the proven quantizer), deduped, L5-verifiable.
3
+ import assert from "node:assert";
4
+ import { readFileSync } from "node:fs";
5
+ import { KvMemory } from "./gguf-forge-kvmem.mjs";
6
+ import { quantizeRowQ8_0, quantizeRowQ4_0 } from "./gguf-forge-quantize.mjs";
7
+ import { dequantizeExact, GGML } from "./gguf-forge-dequant.mjs";
8
+ import { ropeNeox } from "./gguf-forge-kernels.mjs";
9
+
10
+ const HD = 64, NROT = 64, FREQ = 1000000;
11
+ // per-head RoPE(delta) shift over a kvDim vector — the K-shift the memory applies.
12
+ const ropeShift = (kvec, _il, delta) => { const out = new Float32Array(kvec.length); for (let h = 0; h < kvec.length / HD; h++) out.set(ropeNeox(kvec.subarray(h * HD, (h + 1) * HD), delta, NROT, FREQ, HD), h * HD); return out; };
13
+
14
+ let pass = 0, fail = 0;
15
+ const t = (name, fn) => { try { fn(); pass++; console.log(" ok " + name); } catch (e) { fail++; console.log("FAIL " + name + "\n " + e.message); } };
16
+ function prng(s) { return () => { s = (s * 1664525 + 1013904223) >>> 0; return s / 4294967296 * 2 - 1; }; }
17
+ const kv = (n, seed) => { const r = prng(seed), a = new Float32Array(n); for (let i = 0; i < n; i++) a[i] = r() * 0.8; return a; };
18
+ const D = 128; // kvDim (n_head_kv*head_dim), multiple of 32
19
+
20
+ t("K1: KV vector stored as a content-addressed κ-block, bytes == the proven quantizer", () => {
21
+ for (const [type, qfn] of [[GGML.Q8_0, quantizeRowQ8_0], [GGML.Q4_0, quantizeRowQ4_0]]) {
22
+ const m = new KvMemory({ typeK: type, typeV: type, nLayer: 1 });
23
+ const vec = kv(D, 7 + type);
24
+ const ret = m.storeK(0, 0, vec); // returns the round-tripped value
25
+ const ref = m.refsK[0][0], hex = ref.split(":").pop();
26
+ const blob = m.blocks.get(hex);
27
+ const want = qfn(vec, D);
28
+ assert.strictEqual(blob.length, want.length);
29
+ for (let i = 0; i < want.length; i++) assert.strictEqual(blob[i], want[i], `byte ${i}`); // bit-exact KV block
30
+ // attention sees the dequantized round-trip
31
+ const deq = dequantizeExact(type, want, D);
32
+ for (let i = 0; i < D; i++) assert.strictEqual(ret[i], deq[i]);
33
+ }
34
+ });
35
+
36
+ t("K1: identical KV vectors dedup to ONE κ-object (content-addressed)", () => {
37
+ const m = new KvMemory({ typeK: GGML.Q8_0, typeV: GGML.Q8_0, nLayer: 2 });
38
+ const a = kv(D, 11), b = kv(D, 99);
39
+ m.storeK(0, 0, a); m.storeK(0, 1, a); m.storeK(1, 0, a); // 3 stores, same vec → 1 κ
40
+ m.storeK(0, 2, b); // distinct → 2nd κ
41
+ assert.strictEqual(m.blocks.size, 2);
42
+ assert.strictEqual(m.refsK[0][0], m.refsK[0][1]); // shared κ ref
43
+ });
44
+
45
+ t("K1: L5 re-derives a KV block and REFUSES a tampered one", () => {
46
+ const m = new KvMemory({ typeK: GGML.Q8_0, typeV: 0, nLayer: 1 });
47
+ const ref = m.refsK[0]; m.storeK(0, 0, kv(D, 3));
48
+ const k = m.refsK[0][0]; assert.ok(m.load(k).length === 136); // q8_0: 4 blocks × 34
49
+ const hex = k.split(":").pop(); m.blocks.get(hex)[0] ^= 0xff; // tamper
50
+ assert.throws(() => m.load(k), /L5 REFUSE/);
51
+ });
52
+
53
+ t("K1: quantized KV shrinks memory (q8_0 ≈ 3.8×, q4_0 ≈ 7.5× vs f32)", () => {
54
+ const N = 64;
55
+ const sz = (type) => { const m = new KvMemory({ typeK: type, typeV: type, nLayer: 1 }); for (let p = 0; p < N; p++) { m.storeK(0, p, kv(D, 1000 + p)); m.storeV(0, p, kv(D, 2000 + p)); } return m.bytes; };
56
+ const f32 = sz(0), q8 = sz(GGML.Q8_0), q4 = sz(GGML.Q4_0);
57
+ console.log(` f32 ${f32}B q8_0 ${q8}B (${(f32 / q8).toFixed(1)}×) q4_0 ${q4}B (${(f32 / q4).toFixed(1)}×)`);
58
+ assert.ok(f32 / q8 > 3.5 && f32 / q4 > 6.5);
59
+ });
60
+
61
+ t("K2: seq_cp SHARES the source's κ refs — zero-copy, 0 new blocks (qvac copies cells)", () => {
62
+ const m = new KvMemory({ typeK: GGML.Q8_0, typeV: GGML.Q8_0, nLayer: 2 });
63
+ for (let p = 0; p < 4; p++) { m.storeK(0, p, kv(D, p + 1)); m.storeK(1, p, kv(D, p + 50)); m.storeV(0, p, kv(D, p + 9)); m.storeV(1, p, kv(D, p + 99)); }
64
+ const before = m.blocks.size;
65
+ m.seqCp(0, 7); // copy sequence 0 → 7
66
+ assert.strictEqual(m.blocks.size, before, "seq_cp must add 0 κ-objects (pure sharing)");
67
+ for (let il = 0; il < 2; il++) for (let p = 0; p < 4; p++) assert.strictEqual(m.seqs.get(7).K[il][p], m.seqs.get(0).K[il][p]); // same κ ref
68
+ assert.strictEqual(m.seqPosMax(7), m.seqPosMax(0));
69
+ });
70
+
71
+ t("K2: branching shares the prefix — only the divergent token adds a κ", () => {
72
+ const m = new KvMemory({ typeK: GGML.Q8_0, typeV: GGML.Q8_0, nLayer: 1 });
73
+ for (let p = 0; p < 3; p++) { m.setSeq(0); m.storeK(0, p, kv(D, p + 1)); m.storeV(0, p, kv(D, p + 1000)); } // shared prefix (3 tok, distinct K/V)
74
+ const sharedBlocks = m.blocks.size; // 6 (3 K + 3 V)
75
+ m.seqCp(0, 1); // branch
76
+ m.setSeq(0); m.storeK(0, 3, kv(D, 100)); m.storeV(0, 3, kv(D, 1100)); // seq 0: token A (K+V)
77
+ m.setSeq(1); m.storeK(0, 3, kv(D, 200)); m.storeV(0, 3, kv(D, 1200)); // seq 1: token B (different)
78
+ assert.strictEqual(m.blocks.size, sharedBlocks + 4, "two branches add only their 2 divergent K+V each"); // +2 (A) +2 (B)
79
+ });
80
+
81
+ t("K2: seq_rm truncates + seq_keep/clear", () => {
82
+ const m = new KvMemory({ typeK: GGML.Q8_0, typeV: GGML.Q8_0, nLayer: 1 });
83
+ for (let p = 0; p < 4; p++) { m.storeK(0, p, kv(D, p + 1)); m.storeV(0, p, kv(D, p + 1)); }
84
+ m.seqRm(0, 2, 4); assert.strictEqual(m.seqPosMax(0), 1); // dropped pos 2,3
85
+ assert.strictEqual(m.seqs.get(0).K[0][2], undefined);
86
+ m.seqCp(0, 5); m.seqKeep(5); assert.ok(!m.seqExists(0) && m.seqExists(5));
87
+ m.clear(); assert.strictEqual(m.seqPosMax(5), -1);
88
+ });
89
+
90
+ t("K3: RoPE composes — ropeNeox(ropeNeox(x,a),b) == ropeNeox(x,a+b) (the seq_add basis)", () => {
91
+ const x = kv(HD, 5);
92
+ for (const [a, b] of [[3, 5], [10, -4], [0, 7], [128, 64]]) {
93
+ const twoStep = ropeNeox(ropeNeox(x, a, NROT, FREQ, HD), b, NROT, FREQ, HD);
94
+ const direct = ropeNeox(x, a + b, NROT, FREQ, HD);
95
+ let mx = 0; for (let i = 0; i < HD; i++) mx = Math.max(mx, Math.abs(twoStep[i] - direct[i]));
96
+ assert.ok(mx < 1e-4, `a=${a} b=${b}: maxAbs ${mx}`);
97
+ }
98
+ });
99
+
100
+ t("K3: seq_add(δ) shifts stored K as if RoPE'd at the new position", () => {
101
+ const m = new KvMemory({ typeK: 0, typeV: 0, nLayer: 1 }), raw = kv(D, 21), p = 7, delta = 40;
102
+ const kAtP = ropeShift(raw, 0, p); // K as stored at position p (post-RoPE)
103
+ m.storeK(0, 0, kAtP); m.storeV(0, 0, kv(D, 1));
104
+ m.seqAdd(0, 0, 1, delta, ropeShift, D); // shift by δ
105
+ const shifted = m.materialize(0, D).Kc[0][0];
106
+ const expected = ropeShift(raw, 0, p + delta); // K as if computed at p+δ
107
+ let mx = 0; for (let i = 0; i < D; i++) mx = Math.max(mx, Math.abs(shifted[i] - expected[i]));
108
+ assert.ok(mx < 1e-4, `seq_add maxAbs ${mx}`);
109
+ // invertible: +δ then −δ returns the original
110
+ m.seqAdd(0, 0, 1, -delta, ropeShift, D);
111
+ const back = m.materialize(0, D).Kc[0][0];
112
+ let mb = 0; for (let i = 0; i < D; i++) mb = Math.max(mb, Math.abs(back[i] - kAtP[i]));
113
+ assert.ok(mb < 1e-4, `round-trip maxAbs ${mb}`);
114
+ });
115
+
116
+ function fill(m, nLayer, N) { for (let p = 0; p < N; p++) for (let il = 0; il < nLayer; il++) { m.storeK(il, p, kv(D, p * 31 + il)); m.storeV(il, p, kv(D, p * 31 + il + 7)); } }
117
+
118
+ t("K4: SWA eviction bounds memory to a ring of n_swa (global layers unbounded)", () => {
119
+ const W = 8, N = 20, m = new KvMemory({ typeK: GGML.Q8_0, typeV: GGML.Q8_0, nLayer: 2 });
120
+ m.setSwa([W, 0]); // layer 0 = SWA(8), layer 1 = global
121
+ fill(m, 2, N);
122
+ assert.strictEqual(m.liveCount(0, 0), W, "SWA layer must keep exactly n_swa");
123
+ assert.strictEqual(m.liveCount(0, 1), N, "global layer keeps all");
124
+ });
125
+
126
+ t("K4: the retained ring == the attention window [pos−n_swa+1 .. pos] (evicted = masked)", () => {
127
+ const W = 8, N = 20, m = new KvMemory({ typeK: 0, typeV: 0, nLayer: 1 });
128
+ m.setSwa([W]); fill(m, 1, N);
129
+ const live = m.livePositions(0, 0), want = []; for (let p = N - W; p < N; p++) want.push(p);
130
+ assert.deepStrictEqual(live, want); // exactly the last n_swa = the final query's window
131
+ });
132
+
133
+ t("K4: Gemma3-pattern (5 SWA + 1 global / 6 layers) bounds long-context memory", () => {
134
+ const W = 8, N = 50, m = new KvMemory({ typeK: GGML.Q8_0, typeV: GGML.Q8_0, nLayer: 6 });
135
+ m.setSwa([W, W, W, W, W, 0]); fill(m, 6, N); // Gemma3: last of each group is global
136
+ let live = 0; for (let il = 0; il < 6; il++) live += m.liveCount(0, il);
137
+ const full = 6 * N;
138
+ console.log(` ${N} tokens × 6 layers: ${live}/${full} K positions live (${(full / live).toFixed(1)}× bounded)`);
139
+ assert.strictEqual(live, 5 * W + N); // 5 SWA rings + 1 full
140
+ });
141
+
142
+ t("K5: HYBRID memory — KV on attention layers + recurrent state on recurrent layers, all κ", () => {
143
+ const m = new KvMemory({ typeK: GGML.Q8_0, typeV: GGML.Q8_0, nLayer: 2 }); // typeR default f32
144
+ m.storeK(0, 0, kv(D, 1)); m.storeV(0, 0, kv(D, 2)); // layer 0 = attention (KV)
145
+ const conv = kv(96, 3), ssm = kv(256, 4);
146
+ m.storeRecurrent(1, "conv", conv); m.storeRecurrent(1, "ssm", ssm); // layer 1 = recurrent (Mamba state)
147
+ assert.ok(!m.isRecurrentLayer(0, 0), "layer 0 attention (KV, no R)");
148
+ assert.ok(m.isRecurrentLayer(0, 1), "layer 1 recurrent (R, no KV)"); // is_recurrent ⇔ n_head_kv==0
149
+ const gc = m.getRecurrent(0, 1, "conv", 96); for (let i = 0; i < 96; i++) assert.strictEqual(gc[i], conv[i]); // content-addressed round-trip
150
+ const before = m.blocks.size;
151
+ m.storeRecurrent(1, "conv", conv); assert.strictEqual(m.blocks.size, before); // unchanged state → dedup
152
+ m.storeRecurrent(1, "conv", kv(96, 99)); assert.strictEqual(m.blocks.size, before + 1); // changed → new κ (re-key)
153
+ });
154
+
155
+ t("K5: executor's generic op-walk handles interleaved attention + recurrent layers", () => {
156
+ const src = readFileSync(new URL("./gguf-forge-exec.mjs", import.meta.url), "utf8"); // a hybrid graph routes per-op
157
+ for (const op of ['case "attn"', 'case "mamba"', 'case "mamba2"', 'case "rwkv7_tmix"']) assert.ok(src.includes(op), `missing ${op}`);
158
+ });
159
+
160
+ t("K6: unified interface — seqCp branches a HYBRID sequence (KV + recurrent) with 0 new κ", () => {
161
+ const m = new KvMemory({ typeK: GGML.Q8_0, typeV: GGML.Q8_0, nLayer: 2 });
162
+ m.storeK(0, 0, kv(D, 1)); m.storeV(0, 0, kv(D, 2)); // attn layer
163
+ m.storeRecurrent(1, "ssm", kv(256, 4)); // recurrent layer
164
+ const before = m.blocks.size;
165
+ m.seqCp(0, 1); // share BOTH KV and R refs
166
+ assert.strictEqual(m.blocks.size, before, "hybrid branch is zero-copy");
167
+ assert.strictEqual(m.getRecurrent(1, 1, "ssm", 256)[0], m.getRecurrent(0, 1, "ssm", 256)[0]); // recurrent ref shared
168
+ });
169
+
170
+ console.log(`\n${pass} passed, ${fail} failed`);
171
+ process.exit(fail ? 1 : 0);