furifont 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cli.mjs +5 -5
  2. package/dist/client/200.html +1 -1
  3. package/dist/client/404.html +1 -1
  4. package/dist/client/_nuxt/7dpEN058.js +4 -0
  5. package/dist/client/_nuxt/B35AZ4N5.js +3 -0
  6. package/dist/client/_nuxt/{Kki0DvjP.js → BK--K-B8.js} +1 -1
  7. package/dist/client/_nuxt/{C4V-788C.js → CCKNrAp3.js} +3 -3
  8. package/dist/client/_nuxt/CFJDasU9.js +2 -0
  9. package/dist/client/_nuxt/{slpK2-vu.js → Cav8jaAI.js} +1 -1
  10. package/dist/client/_nuxt/{CAnB8eMp.js → Cvflahe0.js} +1 -1
  11. package/dist/client/_nuxt/D-bzbSL2.js +1 -0
  12. package/dist/client/_nuxt/D1B77ENm.js +1 -0
  13. package/dist/client/_nuxt/{B2JUvp84.js → DUyBBmcb.js} +1 -1
  14. package/dist/client/_nuxt/{Dg3RF8xB.js → IRGIvKlv.js} +1 -1
  15. package/dist/client/_nuxt/builds/latest.json +1 -1
  16. package/dist/client/_nuxt/builds/meta/efe0e6b4-05bd-4e0b-a04c-7ec5da4143f9.json +1 -0
  17. package/dist/client/_nuxt/entry.BSCJYv63.css +1 -0
  18. package/dist/client/customize/index.html +1 -1
  19. package/dist/client/furifont.user.js +3 -3
  20. package/dist/client/index.html +1 -1
  21. package/dist/client/reference/index.html +1 -1
  22. package/dist/client/report/index.html +1 -1
  23. package/dist/client/version.json +1 -1
  24. package/dist/{config-BHN-5b6L.mjs → config-CNDZmTlF.mjs} +19 -5
  25. package/dist/devframe.mjs +2 -2
  26. package/dist/index.d.mts +18 -2
  27. package/dist/index.mjs +2 -2
  28. package/dist/{studio-bPS1eciv.mjs → studio-JiPccKUS.mjs} +41 -1
  29. package/package.json +4 -5
  30. package/dist/client/_nuxt/BgIj0bEj.js +0 -1
  31. package/dist/client/_nuxt/BpoWIN5A.js +0 -3
  32. package/dist/client/_nuxt/CG1cMRvM.js +0 -2
  33. package/dist/client/_nuxt/CHjPDtV4.js +0 -4
  34. package/dist/client/_nuxt/builds/meta/95075385-c519-4224-af4d-f5091c1f9663.json +0 -1
  35. package/dist/client/_nuxt/entry.C1lnNdD0.css +0 -1
  36. package/dist/client/_nuxt/ez7nRQJI.js +0 -1
package/dist/index.d.mts CHANGED
@@ -15,7 +15,7 @@ export declare const FurifontConfigSchema: v.ObjectSchema<{
15
15
  */
16
16
  readonly version: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "version must be major.minor.patch, with a minor below 10 and a patch below 100">]>, undefined>;
17
17
  readonly family: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.NonEmptyAction<string, undefined>, v.CheckAction<string, "Source is a reserved font name of the base font">]>, "Furifont Sans">;
18
- readonly rubyScript: v.OptionalSchema<v.PicklistSchema<readonly ["hiragana", "katakanaOn", "hepburn"], undefined>, "hiragana">;
18
+ readonly furiganaScript: v.OptionalSchema<v.PicklistSchema<readonly ["hiragana", "katakanaOn", "hepburn"], undefined>, "hiragana">;
19
19
  readonly sources: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["jmdict", "ichi", "news", "spec", "gai", "nf", "tatoeba", "place", "mahjong-yaku", "jr-stations", "yojijukugo", "japan-post"], undefined>, undefined>, () => ("jmdict" | "ichi" | "news" | "spec" | "gai" | "nf" | "tatoeba" | "place" | "mahjong-yaku" | "jr-stations" | "yojijukugo" | "japan-post")[]>;
20
20
  readonly skip: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, 0>;
21
21
  readonly take: v.OptionalSchema<v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, v.MinValueAction<number, 1, undefined>]>, undefined>;
@@ -119,6 +119,21 @@ interface WordMatch {
119
119
  sources: Source[];
120
120
  }[];
121
121
  }
122
+ /** A spread of one bucket of words, as the overview lists it. */
123
+ interface WordSample {
124
+ /** Words in the bucket. */
125
+ size: number;
126
+ /** Each with its place among all the words, most common first, and its best reading. */
127
+ words: {
128
+ rank: number;
129
+ notation: string;
130
+ }[];
131
+ }
132
+ interface WordSamples {
133
+ skip: WordSample;
134
+ take: WordSample;
135
+ rest: WordSample;
136
+ }
122
137
  /** The wire contract of the functions below, as the studio page calls them. */
123
138
  interface StudioFunctions {
124
139
  'furifont:state': () => Promise<StudioState>;
@@ -130,9 +145,10 @@ interface StudioFunctions {
130
145
  };
131
146
  'furifont:save': (config: FurifontConfigInput) => Promise<string>;
132
147
  'furifont:search': (query: string) => Promise<WordMatch[]>;
148
+ 'furifont:sample': (config: FurifontConfigInput) => Promise<WordSamples>;
133
149
  }
134
150
  declare module 'devframe' {
135
151
  interface DevframeRpcServerFunctions extends StudioFunctions {}
136
152
  }
137
153
  //#endregion
138
- export { type BuildEvent, type BuildResult, type BuiltFile, DEFAULTS, type FurifontConfig, type FurifontConfigInput, PREBUILT, type PlanReport, type PreviewResult, type SizeEstimate, type StudioFunctions, type StudioState, type WordMatch };
154
+ export { type BuildEvent, type BuildResult, type BuiltFile, DEFAULTS, type FurifontConfig, type FurifontConfigInput, PREBUILT, type PlanReport, type PreviewResult, type SizeEstimate, type StudioFunctions, type StudioState, type WordMatch, type WordSample, type WordSamples };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as buildFont, i as loadConfig, l as previewFont, o as estimateFont, r as FurifontConfigSchema, t as CONFIG_FILE } from "./config-BHN-5b6L.mjs";
2
- import { n as STUDIO_ID, t as BUILD_CHANNEL } from "./studio-bPS1eciv.mjs";
1
+ import { i as loadConfig, o as buildFont, r as FurifontConfigSchema, s as estimateFont, t as CONFIG_FILE, u as previewFont } from "./config-CNDZmTlF.mjs";
2
+ import { n as STUDIO_ID, t as BUILD_CHANNEL } from "./studio-JiPccKUS.mjs";
3
3
  import { DEFAULTS, PREBUILT } from "@furifont/core";
4
4
  export { BUILD_CHANNEL, CONFIG_FILE, DEFAULTS, FurifontConfigSchema, PREBUILT, STUDIO_ID, buildFont, estimateFont, loadConfig, previewFont };
@@ -1,4 +1,4 @@
1
- import { a as buildFont, c as planWithBase, i as loadConfig, l as previewFont, o as estimateFont, r as FurifontConfigSchema, s as getDictionary, t as CONFIG_FILE } from "./config-BHN-5b6L.mjs";
1
+ import { a as bucketWords, c as getDictionary, i as loadConfig, l as planWithBase, o as buildFont, r as FurifontConfigSchema, s as estimateFont, t as CONFIG_FILE, u as previewFont } from "./config-CNDZmTlF.mjs";
2
2
  import { mkdir, writeFile } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  import { BASE_FONTS } from "@furifont/compiler";
@@ -14,6 +14,40 @@ const BUILD_CHANNEL = "build";
14
14
  /** Where built fonts are served from, relative to the studio. */
15
15
  const FONTS_PATH = "/fonts/";
16
16
  const SEARCH_LIMIT = 40;
17
+ /** Words listed from each bucket of the overview. */
18
+ const SAMPLE_SIZE = 20;
19
+ /** How far, of one step, a sampled word may stray from its even place. */
20
+ const SAMPLE_JITTER = .6;
21
+ /** `count` indexes spread over `size`, one per step, each moved by up to half of {@link SAMPLE_JITTER} of a step either way. */
22
+ function spreadIndexes(size, count, random = Math.random) {
23
+ if (size <= count) return Array.from({ length: size }, (_, i) => i);
24
+ const step = size / count;
25
+ return Array.from({ length: count }, (_, n) => Math.min(size - 1, Math.max(0, Math.round(n * step + (random() - .5) * SAMPLE_JITTER * step))));
26
+ }
27
+ async function sampleWords(config, cwd) {
28
+ const [{ runs }, buckets] = await Promise.all([getDictionary(), bucketWords(config, cwd)]);
29
+ let offset = 0;
30
+ const sample = (words) => {
31
+ const start = offset;
32
+ offset += words.length;
33
+ return {
34
+ size: words.length,
35
+ words: spreadIndexes(words.length, SAMPLE_SIZE).map((i) => {
36
+ const form = words[i];
37
+ const [furigana] = Object.entries(runs[form] ?? {}).reduce((a, b) => b[1][0] > a[1][0] ? b : a);
38
+ return {
39
+ rank: start + i + 1,
40
+ notation: formatNotation(form, parseFurigana(furigana))
41
+ };
42
+ })
43
+ };
44
+ };
45
+ return {
46
+ skip: sample(buckets.skip),
47
+ take: sample(buckets.take),
48
+ rest: sample(buckets.rest)
49
+ };
50
+ }
17
51
  function wordReading(form, spans, [score, sources]) {
18
52
  return {
19
53
  notation: formatNotation(form, spans),
@@ -136,6 +170,12 @@ async function setupStudio(ctx) {
136
170
  type: "query",
137
171
  jsonSerializable: true,
138
172
  handler: (query) => searchWords(v.parse(Query, query))
173
+ }),
174
+ defineRpcFunction({
175
+ name: "sample",
176
+ type: "query",
177
+ jsonSerializable: true,
178
+ handler: (options) => sampleWords(parse(options), ctx.cwd)
139
179
  })
140
180
  ];
141
181
  for (const fn of functions) scope.rpc.register(fn);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "furifont",
3
3
  "type": "module",
4
- "version": "0.4.2",
4
+ "version": "0.5.0",
5
5
  "description": "Build Japanese fonts that show furigana by themselves, from the command line or a local studio",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -15,7 +15,6 @@
15
15
  "keywords": [
16
16
  "font",
17
17
  "furigana",
18
- "ruby",
19
18
  "japanese",
20
19
  "opentype",
21
20
  "devframe"
@@ -36,9 +35,9 @@
36
35
  "dist"
37
36
  ],
38
37
  "dependencies": {
39
- "@furifont/compiler": "0.4.2",
40
- "@furifont/core": "0.4.2",
41
- "@furifont/dictionary": "0.4.2",
38
+ "@furifont/compiler": "0.5.0",
39
+ "@furifont/core": "0.5.0",
40
+ "@furifont/dictionary": "0.5.0",
42
41
  "cac": "^7.1.0",
43
42
  "devframe": "^1.2.5",
44
43
  "valibot": "^1.5.0"
@@ -1 +0,0 @@
1
- import{B as e,E as t,N as n,S as r,Vt as i,W as a,Y as o,bt as s,mt as c,nt as l,pt as u,rt as d,tt as f}from"./CkUAspOr.js";import{_ as p,i as m}from"./Dg3RF8xB.js";import{C as h,T as g,_,a as v,b as y,c as b,d as x,f as S,g as C,h as w,i as T,m as E,n as D,p as O,r as k,s as A,u as j,v as M,x as N,y as P}from"./ez7nRQJI.js";var F=[`hiragana`,`katakanaOn`,`hepburn`],I=[`jmdict`,`ichi`,`news`,`spec`,`gai`,`nf`,`tatoeba`,`place`,`mahjong-yaku`,`jr-stations`,`yojijukugo`,`japan-post`],L=[`N5`,`N4`,`N3`,`N2`,`N1`],R=[...I,...L,`inflecting`,`default`],z=e=>1<<R.indexOf(e),B=w({rubyScale:C(P(E(),S(.2),j(.8)),p.plan.metrics.rubyScale),rubyGap:C(P(E(),S(0),j(.5)),p.plan.metrics.rubyGap),compressionFloor:C(P(E(),S(.3),j(1)),p.plan.metrics.compressionFloor),maxRubyWidth:C(P(E(),S(1),j(3)),p.plan.metrics.maxRubyWidth)}),V=P(E(),A(),S(0)),H=w({family:C(P(h(),g(),O(),T(e=>!/source/i.test(e),`Source is a reserved font name of the base font`)),p.plan.family),rubyScript:C(M(F),p.plan.rubyScript),sources:C(D(M(I)),()=>[...I]),skip:C(V,p.plan.skip),take:C(P(V,S(1))),skipJlpt:C(M(L)),isolated:C(k(),p.plan.isolated),isolatedMinShare:C(P(E(),S(.5),j(1)),p.plan.isolatedMinShare),words:C(w({add:C(D(h()),[]),remove:C(D(h()),[]),pin:C(D(h()),[])}),{}),metrics:C(B,{})});function U(e={}){return _(H,e)}var W=P(E(),A(),S(0),j(1114111));w({version:b(1),names:w({family:h(),description:h()}),metrics:w({rubyScale:E(),rubyGap:E(),compressionFloor:E(),maxRubyWidth:E()}),codepoints:D(W),variants:D(w({name:P(h(),N(/^[A-Z_][\w.]{0,62}$/i)),base:W,selector:W})),glyphs:D(w({name:P(h(),N(/^[A-Z_][\w.]{0,62}$/i)),bases:P(D(W),x(1)),ruby:D(w({start:E(),end:E(),text:P(h(),O())}))})),fea:h(),subset:C(D(W)),smoke:D(w({text:h(),glyphs:D(h())}))});var G=e=>typeof e==`object`&&!!e&&!Array.isArray(e),K=e=>Array.isArray(e)&&e.length===2&&e.every(Number.isInteger)&&e[0]>=0&&e[0]<=100&&e[1]>0&&e[1]<1<<R.length,q=v(e=>G(e)&&Object.values(e).every(e=>G(e)&&Object.values(e).every(K)),`Expected readings by run, each [score, sources]`),J=Object.fromEntries(R.map(e=>[e,z(e)]));w({versions:y(h(),h()),sources:v(e=>G(e)&&JSON.stringify(e)===JSON.stringify(J),`Expected the sources of this version of @furifont/core`),onyomi:y(h(),D(h())),runs:q,kanji:q,bare:D(h())});function Y(){let e=c(),t;async function n(n){await navigator.clipboard?.writeText(n).then(()=>!0,()=>!1)&&(e.value=n,clearTimeout(t),t=setTimeout(()=>e.value=void 0,1200))}return{copied:u(e),copy:n}}var{rubyScale:X,rubyGap:Z}=U().metrics,Q=1.75,ee=.88+Z+X,$=1.255,te={rubyTop:$-ee,emTop:.3749999999999999,baseline:$,emBottom:1.375},ne=[`aria-label`],re=Object.assign(n({__name:`FuriText`,props:e({family:{default:()=>m[0].family},ruby:{type:Boolean,default:!0},size:{default:32},weight:{default:400},okurigana:{}},{text:{required:!0},textModifiers:{}}),emits:[`update:text`],setup(e){let n=f(e,`text`),c=r(()=>({fontFamily:`"${e.family}", sans-serif`,fontSize:`${e.size}px`,fontWeight:e.weight,lineHeight:Q,fontFeatureSettings:e.ruby?`normal`:`"ss01"`}));function u(e){let t=[],n=0;for(let r of e.childNodes){let e=r.textContent.length;r instanceof HTMLElement&&t.push({at:n,length:e,salt:Number(r.dataset.salt)}),n+=e}return t}function p(e){let t=getSelection();if(!t?.rangeCount||!t.isCollapsed||!e.contains(t.anchorNode))return;let n=document.createRange();return n.selectNodeContents(e),n.setEnd(t.anchorNode,t.anchorOffset),n.toString().length}function m(e,t){let n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=t;for(let e=n.nextNode();e;e=n.nextNode()){let t=e.nodeValue.length;if(r<=t){let t=document.createRange();t.setStart(e,r),t.collapse(!0),getSelection().removeAllRanges(),getSelection().addRange(t);return}r-=t}}let h=l(`el`),g,_=!1,v;function y(t,n,r=!1){let i=e.ruby&&e.okurigana?e.okurigana.find(n):[];if(!r&&t.textContent===n&&JSON.stringify(u(t))===JSON.stringify(i.map(({at:e,length:t,salt:n})=>({at:e,length:t,salt:n}))))return;let a=p(t),o=[],s=0;for(let e of i){o.push(n.slice(s,e.at));let t=document.createElement(`span`);t.textContent=n.slice(e.at,e.at+e.length),t.dataset.salt=String(e.salt),t.style.fontFeatureSettings=`"salt" ${e.salt}`,o.push(t),s=e.at+e.length}o.push(n.slice(s)),t.replaceChildren(...o.filter(e=>e!==``)),a!==void 0&&m(t,a)}d([h,n],([e,t])=>{e&&t!==g&&y(e,t,!0)},{immediate:!0}),d([()=>e.okurigana,()=>e.ruby],()=>{h.value&&y(h.value,g??n.value)});function b(){_=!0}function x(){_=!1,S()}function S(){g=h.value.innerText,n.value=g,clearTimeout(v),v=setTimeout(()=>!_&&h.value&&y(h.value,g),300)}return a(()=>clearTimeout(v)),(e,n)=>(o(),t(`p`,{ref_key:`el`,ref:h,lang:`ja`,contenteditable:`plaintext-only`,spellcheck:`false`,role:`textbox`,"aria-multiline":`true`,"aria-label":e.$t(`editable`),class:`cursor-text whitespace-pre-wrap break-words outline-1 outline-transparent outline-offset-4 transition-[outline-color] hover:outline-dashed hover:outline-[var(--ff-line)] focus:outline-dashed focus:outline-[var(--ff-fg)]`,style:i(s(c)),onInput:S,onCompositionstart:b,onCompositionend:x},null,44,ne))}}),{__name:`FuriText`});export{L as a,Y as i,te as n,H as o,Q as r,I as s,re as t};
@@ -1,3 +0,0 @@
1
- import{A as e,C as t,E as n,Ht as r,N as i,S as a,T as o,Vt as s,Y as c,Z as l,_ as u,at as d,bt as f,gt as p,j as m,mt as h,q as g,rt as _,s as v,t as y,ut as b,yt as x}from"./CkUAspOr.js";import{st as S,t as C}from"./Cl84O_XS.js";import{a as w,d as T,f as E,g as D,h as O,i as k,l as A,m as j,o as M,p as N,r as ee,s as te,u as P}from"./Dg3RF8xB.js";import{t as F}from"./ez7nRQJI.js";import{i as I,n as L,r as R,t as z}from"./BgIj0bEj.js";import{t as B}from"#entry";import{a as ne,i as V,n as re,r as H,t as U}from"./BJuAqPpj.js";import{n as W,t as G}from"./BaBNBiev.js";var K=Object.assign(i({__name:`UiTypeGrid`,props:{size:{}},setup(e){let t=a(()=>{let t=Math.round(L.baseline*e.size),n=n=>`${Math.round(t+(n-L.baseline)*e.size)}px`,r=e=>`transparent ${n(e)}, var(--ff-line) ${n(e)} calc(${n(e)} + 1px), transparent calc(${n(e)} + 1px)`,{emTop:i,emBottom:a}=L;return{backgroundImage:[`linear-gradient(${[i,a].map(r).join(`, `)})`,`linear-gradient(90deg, var(--ff-line) 1px, transparent 1px)`].join(`, `),backgroundSize:`100% ${e.size*R}px, ${e.size}px 100%`,backgroundPosition:`100vmax 100vmax`}});return(e,r)=>(c(),n(`div`,{"aria-hidden":`true`,class:`pointer-events-none absolute -inset-[100vmax] -z-1`,style:s(f(t))},null,4))}}),{__name:`UiTypeGrid`});function q(e){let t=new Map,n=/(?<!\p{sc=Han})\p{sc=Han}+(?=\p{sc=Hiragana})/gu,r=n=>{if(!t.has(n)){let r=new Map;for(let[t,i]of Object.entries(e.pairs[n]??{}))for(let e of i)r.set(e,t||null);t.set(n,r.size?{reading:r,longest:Math.max(...[...r.keys()].map(e=>e.length))}:void 0)}return t.get(n)},i=(t,n)=>{let r=t.length>[...t][0].length,i=(r?e.words[t]?.map(e=>[...e.matchAll(/\[([^\]]*)\]/g)].map(e=>e[1]).join(``)):e.readings[t])?.indexOf(n)??-1;return i>=+!!r&&i<15&&e.lone[t]!==n?i+1:0};return{find:e=>{let t=[];for(let{0:a,index:o}of e.matchAll(n)){let n=r(a),s=e.slice(o+a.length,o+a.length+(n?.longest??0)),c;for(let e=s.length;e>0&&c===void 0;e--)c=n?.reading.get(s.slice(0,e));let l=c?i(a,c):0;c&&l&&t.push({at:o,length:a.length,reading:c,salt:l})}return t},saltOf:i}}var J=new Map;function Y(e,t){let n=J.get(e);return n||(n=(t?t(e):fetch(e).then(t=>t.ok?t.text():Promise.reject(Error(e)))).then(JSON.parse),n.catch(()=>J.delete(e)),J.set(e,n)),n}async function X({readings:e,pairs:t,fetchText:n}){try{let[r,i]=await Promise.all([Y(e,n),Y(t,n)]);return r.salt===!0?q({pairs:i,readings:r.kanji,words:r.words,lone:r.lone}):void 0}catch{return}}function Z(e){let t=v().app.baseURL,n=p();async function r(){let r=x(e),i=await X({readings:`${t}${N(r,`ivs.json`)}`,pairs:`${t}okurigana.json`});r.stem===x(e).stem&&(n.value=i)}return g(r),_(()=>x(e).stem,r),{reader:n}}var ie={class:`grid lg:grid-cols-2`},ae={class:`flex flex-col gap-8 border-base px-6 py-16 lg:border-r lg:py-24`},oe={class:`display hero-title font-semibold`},se={class:`max-w-[46ch] text-[15px] lh-1.625 color-muted ws-pre-line`},ce={class:`flex flex-wrap gap-3`},le={class:`relative isolate flex flex-col justify-center gap-4 overflow-hidden border-t border-base px-6 py-12 lg:border-t-0`},ue={class:`relative`},de={key:0,class:`label no-ruby absolute right-3 bottom-3 border border-base bg-base px-2 py-1`},fe={class:`label absolute bottom-4 left-4 border border-base bg-base px-2 py-1`},Q=44,pe=Object.assign(i({__name:`DemoHero`,emits:[`download`],setup(i,{emit:s}){let l=s,u=h(V[0].text),p=a(()=>V.find(e=>e.text===u.value)?.author),{family:g,ruby:_,okurigana:v}=B(),{reader:y}=Z(g);return(i,a)=>{let s=G,h=K,x=z;return c(),n(`div`,ie,[t(`div`,ae,[a[4]||=t(`span`,{class:`label`},`振り仮名 / furigana`,-1),t(`h1`,oe,[e(r(i.$t(`hero.title1`)),1),a[3]||=t(`br`,null,null,-1),e(r(i.$t(`hero.title2`)),1)]),t(`p`,se,r(i.$t(`hero.body`)),1),t(`div`,ce,[m(s,{variant:`solid`,icon:`i-ph-download-simple`,onClick:a[0]||=e=>l(`download`)},{default:d(()=>[e(r(i.$t(`hero.download`)),1)]),_:1}),m(s,{to:`/customize`,icon:`i-ph-sliders-horizontal`},{default:d(()=>[e(r(i.$t(`hero.build`)),1)]),_:1})])]),t(`div`,le,[m(s,{icon:`i-ph-shuffle`,class:`absolute right-3 top-3 w-9 bg-base px-0`,"aria-label":i.$t(`shuffle`),title:i.$t(`shuffle`),onClick:a[1]||=e=>u.value=(`otherSample`in i?i.otherSample:f(ne))(f(u)).text},null,8,[`aria-label`,`title`]),t(`div`,ue,[m(h,{size:Q}),m(x,{text:f(u),"onUpdate:text":a[2]||=e=>b(u)?u.value=e:null,family:f(g).family,ruby:f(_),size:Q,okurigana:f(v)?f(y):void 0},null,8,[`text`,`family`,`ruby`,`okurigana`])]),f(p)?(c(),n(`span`,de,`⁄ `+r(f(p)),1)):o(``,!0),t(`span`,fe,r(f(g).family)+` Regular / `+r(Q)+`px`,1)])])}}}),{__name:`DemoHero`}),me={class:`grid lg:grid-cols-[340px_1fr]`},he={class:`flex flex-col gap-5 border-b border-base p-6 lg:border-b-0 lg:border-r`},ge={class:`flex flex-col gap-1.5`},_e={class:`text-xs lh-1.625 color-muted`},ve={class:`flex min-w-0 flex-col`},ye={class:`min-h-72 flex-1 px-6 py-8`},be={class:`flex items-center gap-3 border-t border-base px-6 py-3`},xe={class:`text-xs color-muted`},Se=Object.assign(i({__name:`DemoPlayground`,setup(i){let a=h(`今日は日本語の勉強をします。
2
- 明日は東京の大学へ行きます。
3
- 私は毎朝新聞を読みます。桜が咲きました。`),{face:o,script:s,ruby:l,okurigana:u,family:p,faces:g,scripts:_}=B(),{reader:v}=Z(p),y=h(30),x=h(400),{copied:S,copy:C}=I();return(i,h)=>{let T=H,E=W,D=re,O=U,k=z,A=G;return c(),n(`div`,me,[t(`div`,he,[m(E,{label:i.$t(`playground.script`)},{default:d(()=>[m(T,{modelValue:f(s),"onUpdate:modelValue":h[0]||=e=>b(s)?s.value=e:null,label:i.$t(`playground.script`),options:f(_)},null,8,[`modelValue`,`label`,`options`])]),_:1},8,[`label`]),m(E,{label:i.$t(`playground.face`)},{default:d(()=>[m(T,{modelValue:f(o),"onUpdate:modelValue":h[1]||=e=>b(o)?o.value=e:null,label:i.$t(`playground.face`),options:f(g)},null,8,[`modelValue`,`label`,`options`])]),_:1},8,[`label`]),m(E,{label:i.$t(`playground.size`,{size:f(y)})},{default:d(()=>[m(D,{modelValue:f(y),"onUpdate:modelValue":h[2]||=e=>b(y)?y.value=e:null,min:16,max:64},null,8,[`modelValue`])]),_:1},8,[`label`]),m(E,{label:i.$t(`playground.weight`,{weight:f(x)})},{default:d(()=>[m(D,{modelValue:f(x),"onUpdate:modelValue":h[3]||=e=>b(x)?x.value=e:null,min:`MIN_WEIGHT`in i?i.MIN_WEIGHT:f(M),max:`MAX_WEIGHT`in i?i.MAX_WEIGHT:f(w),step:10},null,8,[`modelValue`,`min`,`max`])]),_:1},8,[`label`]),m(O,{modelValue:f(l),"onUpdate:modelValue":h[4]||=e=>b(l)?l.value=e:null},{default:d(()=>[e(r(i.$t(`playground.ruby`)),1)]),_:1},8,[`modelValue`]),t(`div`,ge,[m(O,{modelValue:f(u),"onUpdate:modelValue":h[5]||=e=>b(u)?u.value=e:null},{default:d(()=>[e(r(i.$t(`playground.okurigana`)),1)]),_:1},8,[`modelValue`]),t(`p`,_e,r(i.$t(`playground.okuriganaHint`)),1)])]),t(`div`,ve,[t(`div`,ye,[m(k,{text:f(a),"onUpdate:text":h[6]||=e=>b(a)?a.value=e:null,family:f(p).family,ruby:f(l),size:f(y),weight:f(x),okurigana:f(u)?f(v):void 0},null,8,[`text`,`family`,`ruby`,`size`,`weight`,`okurigana`])]),t(`div`,be,[t(`div`,xe,r(i.$t(`playground.textHint`)),1),h[8]||=t(`div`,{class:`flex-auto`},null,-1),m(A,{variant:`ghost`,icon:f(S)?`i-ph-check`:`i-ph-copy`,onClick:h[7]||=e=>f(C)(f(a))},{default:d(()=>[e(r(f(S)?i.$t(`copied`):i.$t(`playground.copy`)),1)]),_:1},8,[`icon`])])])])}}}),{__name:`DemoPlayground`}),Ce={class:`overflow-hidden`},we={class:`-mb-px -mr-px grid sm:grid-cols-2 lg:grid-cols-3`},Te={class:`font-mono text-xs color-muted`},Ee={class:`text-base font-semibold tracking-tight`},De={class:`text-sm lh-1.625 color-muted`},Oe=Object.assign(i({__name:`DemoHowItWorks`,setup(e){let i=[`build`,`ligatures`,`longest`,`bare`,`okurigana`];return(e,a)=>(c(),n(`div`,Ce,[t(`ol`,we,[(c(),n(u,null,l(i,(n,i)=>t(`li`,{key:n,class:`flex flex-col gap-3 border-b border-r border-base p-8`},[t(`span`,Te,r(String(i+1).padStart(2,`0`)),1),t(`h3`,Ee,r(e.$t(`how.${n}.title`)),1),t(`p`,De,r(e.$t(`how.${n}.body`)),1)])),64))])]))}}),{__name:`DemoHowItWorks`}),ke={class:`grid sm:grid-cols-[1fr_2fr] overflow-hidden`},Ae={class:`flex flex-col gap-4 border-b border-base p-6 sm:border-b-0 sm:border-r`},je={class:`text-sm lh-1.625 color-muted`},Me={class:`grid grid-cols-2 lg:grid-cols-5 -mb-px -mr-px`},Ne={class:`label`},Pe=[`onClick`],Fe=Object.assign(i({__name:`DemoSelectors`,setup(i){let a=e=>String.fromCodePoint(917984+e),o=[{label:`selectors.default`,text:`市場`,code:`市場`},{label:`selectors.reading2`,text:`市${a(2)}場`,code:`市\\u{E01E2}場`},{label:`selectors.default`,text:`今日`,code:`今日`},{label:`selectors.reading2`,text:`今${a(2)}日`,code:`今\\u{E01E2}日`},{label:`selectors.none`,text:`今${a(0)}日`,code:`今\\u{E01E0}日`}],{copied:s,copy:p}=I(),{family:h,ruby:g}=B();return(i,a)=>{let _=G,v=z;return c(),n(`div`,ke,[t(`div`,Ae,[t(`p`,je,r(i.$t(`selectors.body`)),1),m(_,{to:`/reference`,icon:`i-ph-list-magnifying-glass`,class:`self-start`},{default:d(()=>[e(r(i.$t(`selectors.lookUp`)),1)]),_:1})]),t(`ul`,Me,[(c(),n(u,null,l(o,e=>t(`li`,{key:e.code,class:`flex flex-col gap-2 border-b border-r border-base p-4 last:border-r-0`},[m(v,{text:e.text,family:f(h).family,ruby:f(g),size:36},null,8,[`text`,`family`,`ruby`]),t(`span`,Ne,r(i.$t(e.label)),1),t(`button`,{type:`button`,class:`focus-ring self-start font-mono text-xs color-muted hover:color-base`,onClick:t=>f(p)(e.text)},r(f(s)===e.text?i.$t(`copied`):e.code),9,Pe)])),64))])])}}}),{__name:`DemoSelectors`}),Ie={},Le={class:`grid lg:grid-cols-[5fr_4fr]`},Re={class:`w-full border-b border-base text-sm lg:border-b-0 lg:border-r`},ze={class:`border-b border-base text-left`},Be={class:`label px-6 py-3 font-normal`},Ve={class:`label px-3 py-3 font-normal`},He={class:`label px-3 py-3 font-normal`},Ue={class:`px-6 py-3 font-medium`},We={class:`px-3 py-3 color-muted`},Ge={class:`px-3 py-3`},Ke={class:`flex gap-3 font-mono text-xs`},qe=[`href`],Je={class:`flex gap-3 font-mono text-xs`},Ye=[`href`],Xe={class:`flex flex-col gap-4 p-6`},Ze={class:`text-sm color-muted lh-1.625`},Qe={class:`text-sm color-muted lh-1.625`};function $e(i,a){let o=G;return c(),n(`div`,Le,[t(`table`,Re,[t(`thead`,null,[t(`tr`,ze,[t(`th`,Be,r(i.$t(`downloads.family`)),1),t(`th`,Ve,r(i.$t(`downloads.ruby`)),1),t(`th`,He,r(i.$t(`downloads.variable`)),1),(c(!0),n(u,null,l(`WEIGHTS`in i?i.WEIGHTS:f(E),e=>(c(),n(`th`,{key:e.style,class:`label px-3 py-3 font-normal`},r(e.style),1))),128))])]),t(`tbody`,null,[(c(!0),n(u,null,l(`FAMILIES`in i?i.FAMILIES:f(k),e=>(c(),n(`tr`,{key:e.stem,class:`border-b border-base last:border-b-0`},[t(`td`,Ue,r(e.family),1),t(`td`,We,r(i.$t(`scripts.${e.script}`)),1),t(`td`,Ge,[t(`span`,Ke,[(c(),n(u,null,l([`ttf`,`woff2`],n=>t(`a`,{key:n,href:(`releaseUrl`in i?i.releaseUrl:f(j))(`${e.stem}VF.${n}`),class:`focus-ring underline underline-offset-3 hover:color-muted`},r(n),9,qe)),64))])]),(c(!0),n(u,null,l(`WEIGHTS`in i?i.WEIGHTS:f(E),a=>(c(),n(`td`,{key:a.style,class:`px-3 py-3`},[t(`span`,Je,[(c(),n(u,null,l([`otf`,`woff2`],n=>t(`a`,{key:n,href:(`releaseUrl`in i?i.releaseUrl:f(j))(`${e.stem}-${a.style}.${n}`),class:`focus-ring underline underline-offset-3 hover:color-muted`},r(n),9,Ye)),64))])]))),128))]))),128))])]),t(`div`,Xe,[t(`p`,Ze,r(i.$t(`downloads.formats`)),1),m(o,{href:(`releaseUrl`in i?i.releaseUrl:f(j))(`Furifont.zip`),icon:`i-ph-download-simple`,class:`self-start`},{default:d(()=>[e(r(i.$t(`downloads.all`)),1)]),_:1},8,[`href`]),t(`p`,Qe,r(i.$t(`downloads.buildOwn`)),1),m(o,{to:`/customize`,icon:`i-ph-sliders-horizontal`,class:`self-start`},{default:d(()=>[e(r(i.$t(`nav.customize`)),1)]),_:1})])])}var et=Object.assign(y(Ie,[[`render`,$e]]),{__name:`DemoDownloads`}),tt='var Furifont=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let t={fonts:[{family:`Furifont Sans`,base:`Source Han Sans JP`,face:`sans`,rubyScript:`hiragana`},{family:`Furifont Sans Romaji`,base:`Source Han Sans JP`,face:`sans`,rubyScript:`hepburn`},{family:`Furifont Serif`,base:`Source Han Serif JP`,face:`serif`,rubyScript:`hiragana`},{family:`Furifont Serif Romaji`,base:`Source Han Serif JP`,face:`serif`,rubyScript:`hepburn`}],weights:[{style:`Regular`,weight:400}],variable:{style:`VF`,weights:[250,900]},options:{take:4e4}},n={base:12290,selector:65024},r=`U+2E80-2FDF,U+3000-30FF,U+3190-319F,U+31F0-31FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE00-FE0F,U+FF00-FFEF,U+20000-3FFFF,U+E0100-E01EF`,i=/[\\p{sc=Han}\\p{sc=Hiragana}\\p{sc=Katakana}]/u;function a(e){return(e.match(/\\s*(?:"(?:[^"\\\\]|\\\\.)*"|\'(?:[^\'\\\\]|\\\\.)*\'|[^,]+)/g)??[]).map(e=>e.trim()).filter(Boolean)}function o(e){return e.replace(/^(["\'])(.*)\\1$/,`$2`)}let s=/mono|courier|consol|menlo|monaco|等幅/i;function c(e){let t=e.map(o);return t.some(e=>e===`monospace`||e===`ui-monospace`)||s.test(t[0]??``)}async function l({family:e,url:n,fetchFont:i}){let a=(t,n=`400`)=>new FontFace(e,t,{unicodeRange:r,weight:n}).load().catch(()=>void 0),o=await Promise.all(t.weights.map(({style:t,weight:n})=>a(`local("${e} ${t}")${n===400?`,local("${e}")`:``}`,String(n)))),s=t.variable.weights.join(` `),c=o.some(Boolean)?o:[await(i?i(n).then(e=>a(e,s),()=>void 0):a(`url("${n}")`,s))];for(let e of c)e&&document.fonts.add(e);return c.some(Boolean)}function u(e){let t=/* @__PURE__ */ new Map,n=/(?<!\\p{sc=Han})\\p{sc=Han}+(?=\\p{sc=Hiragana})/gu,r=n=>{if(!t.has(n)){let r=/* @__PURE__ */ new Map;for(let[t,i]of Object.entries(e.pairs[n]??{}))for(let e of i)r.set(e,t||null);t.set(n,r.size?{reading:r,longest:Math.max(...[...r.keys()].map(e=>e.length))}:void 0)}return t.get(n)},i=(t,n)=>{let r=t.length>[...t][0].length,i=(r?e.words[t]?.map(e=>[...e.matchAll(/\\[([^\\]]*)\\]/g)].map(e=>e[1]).join(``)):e.readings[t])?.indexOf(n)??-1;return i>=+!!r&&i<15&&e.lone[t]!==n?i+1:0};return{find:e=>{let t=[];for(let{0:a,index:o}of e.matchAll(n)){let n=r(a),s=e.slice(o+a.length,o+a.length+(n?.longest??0)),c;for(let e=s.length;e>0&&c===void 0;e--)c=n?.reading.get(s.slice(0,e));let l=c?i(a,c):0;c&&l&&t.push({at:o,length:a.length,reading:c,salt:l})}return t},saltOf:i}}let d=/* @__PURE__ */ new Map;function f(e,t){let n=d.get(e);return n||(n=(t?t(e):fetch(e).then(t=>t.ok?t.text():Promise.reject(Error(e)))).then(JSON.parse),n.catch(()=>d.delete(e)),d.set(e,n)),n}async function p({readings:e,pairs:t,fetchText:n}){try{let[r,i]=await Promise.all([f(e,n),f(t,n)]);return r.salt===!0?u({pairs:i,readings:r.kanji,words:r.words,lone:r.lone}):void 0}catch{return}}function m(e,t){return{href:new URL(`/#downloads`,e).href,text:t.download}}function h(e,t,n){document.querySelector(`furifont-toast`)?.remove();let r=document.createElement(`furifont-toast`),i=r.attachShadow({mode:`open`}),a=new CSSStyleSheet;a.replaceSync(`:host{all:initial}div{position:fixed;z-index:2147483647;right:16px;bottom:16px;display:flex;gap:16px;align-items:start;max-width:360px;padding:12px 16px;border:1px solid #fafafa2b;background:#0a0a0a;color:#fafafa;font:14px/1.5 system-ui,sans-serif}p{margin:0}a{color:inherit;margin-right:12px}button{padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer}`),i.adoptedStyleSheets=[a];let o=document.createElement(`p`);o.append(e,` `,...t.map(({href:e,text:t})=>Object.assign(document.createElement(`a`),{href:e,target:`_blank`,rel:`noopener`,textContent:t})));let s=Object.assign(document.createElement(`button`),{ariaLabel:n,textContent:`×`,onclick:()=>r.remove()}),c=Object.assign(document.createElement(`div`),{role:`alert`});c.append(o,s),i.append(c),document.body.append(r),setTimeout(()=>r.remove(),1e4)}function g(e){let[t=0,n=0,r=0]=e.split(`.`).map(Number);return t*1e3+n*100+r}function _(e){let t=document.createElement(`canvas`).getContext(`2d`);return t.font=`1000px "${e}"`,Math.round(t.measureText(String.fromCodePoint(n.base,n.selector)).width)-2e3}async function v({family:e,url:t,toast:n},r){let i=new URL(`/version.json`,t).href,a;try{a=g(JSON.parse(await(r.fetchText?r.fetchText(i):fetch(i).then(e=>e.text()))).version)}catch{return}let o=[...g(r.version)<a?[r]:[],..._(e)<a?[m(t,n)]:[]];o.length&&h(n.outdated,o,n.close)}function y(e){let t=[];for(let n of e.filter(e=>e.isConnected)){let e=document.createTreeWalker(n,NodeFilter.SHOW_TEXT);for(let n=e.currentNode;n;n=e.nextNode())n.nodeType===Node.TEXT_NODE&&n.parentElement&&t.push(n)}return t}function b(e){let t=new Set(y(e).filter(e=>i.test(e.nodeValue??``)).map(e=>e.parentElement));for(let n of e){if(n.nodeType!==Node.ELEMENT_NODE)continue;let e=n;e.matches(`input,textarea`)&&t.add(e);for(let n of e.querySelectorAll(`input,textarea`))t.add(n)}return t}function x(e){let t=new CSSStyleSheet,n=[],r,i=0,s=()=>{for(let e of document.querySelectorAll(`[data-furifont-reading]`)){let t=r?r.saltOf(e.textContent??``,e.dataset.furifontReading):0;t?e.dataset.furifontSalt=String(t):delete e.dataset.furifontSalt}},l=e=>{if(!r)return;let t=y(e).filter(e=>/\\p{sc=Han}\\p{sc=Hiragana}/u.test(e.nodeValue??``)&&!e.parentElement.closest(`script,style,textarea,noscript,ruby,[contenteditable]:not([contenteditable=false]),[data-furifont-reading]`));for(let e of t)for(let{at:t,length:n,reading:i,salt:a}of r.find(e.nodeValue??``).reverse()){let r=t?e.splitText(t):e;r.length>n&&r.splitText(n);let o=document.createElement(`span`);o.dataset.furifontReading=i,o.dataset.furifontSalt=String(a),r.replaceWith(o),o.append(r)}},u={dispose:()=>{},sheet:t,family:e,restyle:()=>{let e=Array.from({length:15},(e,t)=>`[data-furifont-salt="${t+1}"]{font-feature-settings:"salt" ${t+1}!important}`).join(``),r=n.map((e,t)=>`[data-furifont="${t}"]{font-family:"${u.family}",${e}!important}`).join(``);t.replaceSync(`${r}[data-furifont-tight]{line-height:normal!important}ruby,ruby *{font-feature-settings:"ss01"!important}${e}`)},okurigana:e=>{let n=++i;r=void 0,s(),e&&!t.disabled&&p(e).then(e=>{n===i&&e&&(r=e,s(),l([document.body]))})}},d=e=>{let t=[...b(e)].filter(e=>!e.hasAttribute(`data-furifont`)).map(e=>{let{fontFamily:t,lineHeight:n,fontSize:r}=getComputedStyle(e),i=a(t);return o(i[0]??``)===u.family&&i.shift(),{element:e,stack:i,tight:Number.parseFloat(n)<1.6*Number.parseFloat(r)}}).filter(({stack:e})=>e.length&&!c(e)),r=n.length;for(let{element:e,stack:r,tight:i}of t){let t=r.join(`,`),a=n.includes(t)?n.indexOf(t):n.push(t)-1;e.setAttribute(`data-furifont`,String(a)),i&&e.setAttribute(`data-furifont-tight`,``)}n.length>r&&u.restyle()},f=new MutationObserver(e=>{let t=e.flatMap(e=>e.type===`characterData`?[e.target]:[...e.addedNodes]);d(t),l(t)});return u.dispose=()=>{f.disconnect(),i++,r=void 0,document.adoptedStyleSheets=document.adoptedStyleSheets.filter(e=>e!==t);for(let e of document.querySelectorAll(`[data-furifont],[data-furifont-tight]`))e.removeAttribute(`data-furifont`),e.removeAttribute(`data-furifont-tight`);for(let e of document.querySelectorAll(`[data-furifont-reading]`))e.replaceWith(...e.childNodes);window.furifont===u&&delete window.furifont},window.furifont=u,document.adoptedStyleSheets=[...document.adoptedStyleSheets,t],d([document.body]),f.observe(document.body,{childList:!0,characterData:!0,subtree:!0}),u}async function S(e){let{family:t,url:n,toast:r,okurigana:i,update:a}=e,o=window.furifont;o?.family===t?(o.sheet.disabled=!o.sheet.disabled,o.sheet.disabled||o.okurigana(i)):(o??=x(t),o.family=t,o.restyle(),o.sheet.disabled=!1,await l(e)?(o.okurigana(i),a&&await v(e,a)):(o.sheet.disabled=!0,o.family=``,h(r.message,[m(n,r)],r.close)))}return e.JAPANESE=i,e.UNICODE_RANGE=r,e.createOkuriganaReader=u,e.isMonospace=c,e.loadFurifont=l,e.loadOkuriganaReader=p,e.parseFontStack=a,e.showToast=h,e.toggleFurifont=S,e})({});',$={class:`grid lg:grid-cols-[340px_1fr]`},nt={class:`flex flex-col gap-5 border-b border-base p-6 lg:border-b-0 lg:border-r`},rt={class:`text-sm lh-1.625 color-muted`},it={class:`flex flex-col gap-1.5`},at={class:`text-xs lh-1.625 color-muted`},ot={class:`grid sm:grid-cols-2`},st={class:`flex flex-col gap-3 border-b border-base p-6 sm:border-b-0 sm:border-r`},ct={class:`label`},lt=[`href`],ut={class:`text-sm lh-1.625 color-muted`},dt={class:`flex flex-col gap-3 p-6`},ft={class:`label`},pt={class:`text-sm lh-1.625 color-muted`},mt=Object.assign(i({__name:`DemoAnyPage`,setup(i){let{t:o}=ee(),{face:s,script:l,okurigana:u,family:p,faces:h,scripts:g}=B(),_=a(()=>{let e={family:p.value.family,url:O(p.value),toast:{message:o(`anyPage.toast.message`),download:o(`anyPage.toast.download`),close:o(`anyPage.toast.close`),outdated:o(`anyPage.toast.outdated`)},okurigana:u.value?{readings:D(p.value),pairs:P}:void 0,update:{version:T,href:`${A}/#any-page`,text:o(`anyPage.toast.bookmarklet`)}};return`javascript:${encodeURIComponent(`void (()=>{${tt};Furifont.toggleFurifont(${JSON.stringify(e)})})()`)}`}),y=`${v().app.baseURL}furifont.user.js`;return(i,a)=>{let o=H,v=W,x=U,S=G;return c(),n(`div`,$,[t(`div`,nt,[t(`p`,rt,r(i.$t(`anyPage.body`)),1),m(v,{label:i.$t(`playground.script`)},{default:d(()=>[m(o,{modelValue:f(l),"onUpdate:modelValue":a[0]||=e=>b(l)?l.value=e:null,label:i.$t(`playground.script`),options:f(g)},null,8,[`modelValue`,`label`,`options`])]),_:1},8,[`label`]),m(v,{label:i.$t(`playground.face`)},{default:d(()=>[m(o,{modelValue:f(s),"onUpdate:modelValue":a[1]||=e=>b(s)?s.value=e:null,label:i.$t(`playground.face`),options:f(h)},null,8,[`modelValue`,`label`,`options`])]),_:1},8,[`label`]),t(`div`,it,[m(x,{modelValue:f(u),"onUpdate:modelValue":a[2]||=e=>b(u)?u.value=e:null},{default:d(()=>[e(r(i.$t(`anyPage.okurigana`)),1)]),_:1},8,[`modelValue`]),t(`p`,at,r(i.$t(`anyPage.okuriganaHint`)),1)])]),t(`div`,ot,[t(`div`,st,[t(`span`,ct,r(i.$t(`anyPage.bookmarklet`)),1),t(`a`,{href:f(_),class:`btn-solid focus-ring self-start`},[a[3]||=t(`span`,{class:`i-ph-bookmark-simple`},null,-1),e(` `+r(f(p).family),1)],8,lt),t(`p`,ut,r(i.$t(`anyPage.bookmarkletHint`)),1)]),t(`div`,dt,[t(`span`,ft,r(i.$t(`anyPage.userscript`)),1),m(S,{href:y,icon:`i-ph-puzzle-piece`,class:`self-start`},{default:d(()=>[e(r(i.$t(`anyPage.install`)),1)]),_:1}),t(`p`,pt,r(i.$t(`anyPage.userscriptHint`)),1)])])])}}}),{__name:`DemoAnyPage`}),ht={class:`flex items-center gap-2 border-t border-base px-6 py-3 text-xs color-muted bg-amber:5`},gt=[`href`],_t=i({__name:`index`,setup(i){function a(){document.getElementById(`downloads`)?.scrollIntoView({behavior:`smooth`})}let o=S();return g(()=>{o.hash&&document.getElementById(o.hash.slice(1))?.scrollIntoView({behavior:`smooth`})}),(i,o)=>{let s=pe,l=Se,u=F,p=Oe,h=Fe,g=C,_=et,v=mt;return c(),n(`div`,null,[m(s,{onDownload:a}),m(u,{index:`01`,title:i.$t(`sections.try`)},{default:d(()=>[m(l)]),_:1},8,[`title`]),m(u,{index:`02`,title:i.$t(`sections.how`)},{default:d(()=>[m(p)]),_:1},8,[`title`]),m(u,{index:`03`,title:i.$t(`sections.selectors`)},{default:d(()=>[m(h)]),_:1},8,[`title`]),t(`p`,ht,[o[0]||=t(`span`,{class:`i-ph-warning shrink-0 text-base text-amber`,"aria-hidden":`true`},null,-1),t(`span`,null,[e(r(i.$t(`notice`))+` `,1),m(g,{to:`/report`,class:`focus-ring underline underline-offset-3 hover:color-base`},{default:d(()=>[e(r(i.$t(`report.link`)),1)]),_:1})])]),m(u,{id:`downloads`,index:`04`,title:i.$t(`sections.download`)},{aside:d(()=>[o[1]||=t(`div`,{class:`flex-auto`},null,-1),t(`a`,{href:`RELEASE_URL`in i?i.RELEASE_URL:f(te),target:`_blank`,rel:`noopener`,class:`focus-ring self-start font-mono text-xs underline underline-offset-3 color-muted hover:color-inherit`},`v`+r(`VERSION`in i?i.VERSION:f(T)),9,gt)]),default:d(()=>[m(_)]),_:1},8,[`title`]),m(u,{id:`any-page`,index:`05`,title:i.$t(`sections.anyPage`)},{default:d(()=>[m(v)]),_:1},8,[`title`])])}}});export{_t as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./y75lAtyQ.js","./y07Wd5I9.js","./CkUAspOr.js","./D4ezFGbh.js","./Cl84O_XS.js","./Dg3RF8xB.js","./entry.C1lnNdD0.css"])))=>i.map(i=>d[i]);
2
- import{$ as e,A as t,B as n,C as r,E as i,Ht as a,N as o,R as s,S as c,T as l,V as u,W as d,X as f,Y as p,Z as m,_ as h,_t as g,at as _,bt as v,ft as y,gt as b,j as x,mt as S,ot as C,q as w,rt as T,s as E,tt as D,ut as O,w as k,zt as A}from"./CkUAspOr.js";import{o as j,s as M}from"./D4ezFGbh.js";import{_ as N,a as P,o as F,r as I}from"./Dg3RF8xB.js";import{C as L,S as R,d as z,h as B,n as ee,p as te,t as ne,v as re,y as V}from"./ez7nRQJI.js";import{a as H,i as ie,o as ae,s as U,t as oe}from"./BgIj0bEj.js";import{r as se}from"#entry";import{a as ce,i as le,n as W,r as ue,t as de}from"./BJuAqPpj.js";import{n as fe,t as G}from"./BaBNBiev.js";var pe={class:`grid gap-8 px-6 py-16 lg:grid-cols-2`},me={class:`flex flex-col gap-4`},he={class:`label`},ge={class:`display text-4xl font-semibold`},_e={class:`flex flex-col justify-center gap-5`},ve={class:`text-xs color-muted`},ye={class:`flex flex-col gap-2`},be={class:`label`},K=`npx furifont dev`,xe=Object.assign(o({__name:`CustomizeUnavailable`,setup(t){let{copied:n,copy:o}=ie();return(t,s)=>{let c=e(`i18n-t`);return p(),i(`div`,pe,[r(`div`,me,[r(`span`,he,a(t.$t(`customize.offline.eyebrow`)),1),r(`h1`,ge,a(t.$t(`customize.offline.title`)),1),x(c,{keypath:`customize.offline.body`,tag:`p`,class:`max-w-[52ch] text-[15px] lh-1.625 color-muted`},{folder:_(()=>[...s[1]||=[r(`code`,{class:`font-mono`},`./fonts`,-1)]]),_:1})]),r(`div`,_e,[r(`p`,ve,a(t.$t(`customize.offline.needs`)),1),r(`div`,ye,[r(`span`,be,a(t.$t(`customize.offline.run`)),1),r(`button`,{type:`button`,class:`focus-ring flex items-center justify-between gap-3 border border-strong px-4 py-3 text-left font-mono text-sm`,onClick:s[0]||=e=>v(o)(K)},[r(`span`,{class:`break-all`},`$ `+a(K)),r(`span`,{class:A([v(n)===K?`i-ph-check`:`i-ph-copy`,`shrink-0 color-muted`])},null,2)])])])])}}}),{__name:`CustomizeUnavailable`}),q=`furifont`,J=350,Se=`furifont:customize:`;function Y(e,t){let n;return()=>{clearTimeout(n),n=setTimeout(e,t)}}function Ce(e){return e instanceof Error?e.message:String(e)}var X=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function we(e,t){let n={};for(let r of new Set([...Object.keys(e),...Object.keys(t)])){let[i,a]=[e[r],t[r]];if(X(i)&&X(a)){let e=we(i,a);Object.keys(e).length&&(n[r]=e)}else JSON.stringify(i)!==JSON.stringify(a)&&(n[r]=i??null)}return n}function Te(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];r===null?delete n[e]:n[e]=X(r)&&X(t)?Te(t,r):r}return n}var Z=[`otf`,`woff2`],Ee=B({...ae.entries,base:V(L(),te()),formats:V(ee(re(Z)),z(1))});function De(e,t){let n;try{n=R(Ee,Te(t,JSON.parse(localStorage.getItem(e)??`{}`)))}catch{}return n?.success?n.output:(localStorage.removeItem(e),structuredClone(t))}function Oe(){let{devCustomizeBase:e}=E().public,t=S(`connecting`),n=b(),r=S({}),i=b(),a=S(le[0].text),o=y({loading:!1}),s=y({loading:!1}),c=y({running:!1,files:[]}),l=S(),u,f,p,m=0,h=0,_=0,v={},x=``;async function C(){i.value=await f.call(`report`,g(r.value)).catch(()=>i.value)}async function D(){let e=++_,t=await f.call(`estimate`,g(r.value)).catch(()=>void 0);e===_&&Object.assign(s,{size:t,loading:!1})}async function O(){let e=++m;o.loading=!0;try{let t=await f.call(`preview`,g(r.value),a.value);if(e!==m)return;let n=Uint8Array.from(atob(t.font),e=>e.charCodeAt(0)),i=new FontFace(`Furifont Preview ${e}`,n,{weight:`${F} ${P}`});await i.load(),document.fonts.add(i),p&&document.fonts.delete(p),p=i,Object.assign(o,{family:i.family,ms:t.ms,glyphs:t.stats.glyphs,variable:t.variable,error:void 0})}catch(t){e===m&&(o.error=Ce(t))}finally{e===m&&(o.loading=!1)}}let k=Y(async()=>{let e=++h;s.loading=!0,await Promise.all([C(),O()]),e===h&&D()},J);T(()=>JSON.stringify({...r.value,formats:void 0}),k),T(a,Y(O,J));function A(){let e=we(g(r.value),v);Object.keys(e).length?localStorage.setItem(x,JSON.stringify(e)):localStorage.removeItem(x)}T(r,A,{deep:!0});async function j(){try{let{connectDevframe:e}=await se(async()=>{let{connectDevframe:e}=await import(`./y75lAtyQ.js`);return{connectDevframe:e}},__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url);u=await e(void 0),f=u.scope(q).rpc}catch{t.value=`unavailable`;return}await u.ensureTrusted(1500).catch(()=>!1)?await N():t.value=`locked`}async function M(e){return!u||!await u.requestTrustWithCode(e)?!1:(await N(),!0)}async function N(){n.value=await f.call(`state`),v=n.value.config,x=Se+n.value.configPath,r.value=De(x,v),t.value=`ready`,k()}function I(){r.value={...structuredClone(v),words:g(r.value.words)}}async function L(){Object.assign(c,{running:!0,files:[],error:void 0,step:`plan`,done:null,total:null});try{let{streamId:e}=await f.call(`build`,g(r.value));for await(let t of u.scope(q).rpc.streaming.subscribe(`build`,e))t.type===`progress`?Object.assign(c,{step:t.step,done:t.done,total:t.total}):t.type===`done`?c.files=t.files:c.error=t.message}catch(e){c.error=Ce(e)}finally{c.running=!1}}async function R(){l.value=await f.call(`save`,g(r.value)),v=structuredClone(g(r.value)),A()}function z(e){return f.call(`search`,e)}function B(e,t){let n=r.value.words??={},i=n[e]??[];n[e]=i.includes(t)?i.filter(e=>e!==t):[...i,t]}return w(j),d(()=>{p&&document.fonts.delete(p)}),{status:t,state:n,config:r,report:i,text:a,preview:o,estimate:s,build:c,savedTo:l,unlock:M,runBuild:L,save:R,reset:I,search:z,toggleWord:B}}var ke=Symbol(`customize`);function Ae(){let e=Oe();return f(ke,e),e}function Q(){let e=s(ke);if(!e)throw Error(`useCustomize() is only available inside the customize page`);return e}var je={class:`label`},Me={class:`text-2xl font-semibold tracking-tight`},Ne=[`aria-label`],Pe={key:0,class:`text-sm`},Fe=[`disabled`],Ie=Object.assign(o({__name:`CustomizeAuth`,setup(t){let{unlock:n}=Q(),o=S(``),s=S(!1),c=S(!1);async function u(){c.value=!0,s.value=!await n(o.value.trim()),c.value=!1}return(t,n)=>{let d=e(`i18n-t`);return p(),i(`form`,{class:`mx-auto flex max-w-sm flex-col gap-4 px-6 py-24`,onSubmit:M(u,[`prevent`])},[r(`span`,je,a(t.$t(`customize.auth.eyebrow`)),1),r(`h1`,Me,a(t.$t(`customize.auth.title`)),1),x(d,{keypath:`customize.auth.body`,tag:`p`,class:`text-sm color-muted`},{command:_(()=>[...n[1]||=[r(`code`,{class:`font-mono`},`furifont dev`,-1)]]),_:1}),C(r(`input`,{"onUpdate:modelValue":n[0]||=e=>O(o)?o.value=e:null,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:`6`,"aria-label":t.$t(`customize.auth.code`),class:`input text-center font-mono text-xl tracking-[0.5em]`},null,8,Ne),[[j,v(o)]]),v(s)?(p(),i(`p`,Pe,a(t.$t(`customize.auth.failed`)),1)):l(``,!0),r(`button`,{type:`submit`,class:`btn-solid focus-ring`,disabled:v(c)||v(o).trim().length!==6},a(t.$t(`customize.auth.unlock`)),9,Fe)],32)}}}),{__name:`CustomizeAuth`}),Le={class:`label flex justify-between gap-3`},Re={class:`color-base tabular-nums`},ze={key:0,class:`text-xs color-muted`},Be=Object.assign(o({__name:`UiRange`,props:n({label:{},display:{},hint:{},min:{},max:{},step:{},disabled:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=D(e,`modelValue`);return(n,o)=>{let s=W;return p(),i(`label`,{class:A([`flex flex-col gap-1.5`,e.disabled&&`opacity-40`])},[r(`span`,Le,[r(`span`,null,a(e.label),1),r(`span`,Re,a(e.display),1)]),x(s,{modelValue:t.value,"onUpdate:modelValue":o[0]||=e=>t.value=e,min:e.min,max:e.max,step:e.step,disabled:e.disabled},null,8,[`modelValue`,`min`,`max`,`step`,`disabled`]),e.hint?(p(),i(`span`,ze,a(e.hint),1)):l(``,!0)],2)}}}),{__name:`UiRange`}),Ve=[`placeholder`],He=[`placeholder`],Ue={id:`customize-base-fonts`},We=[`value`],Ge={class:`flex flex-col gap-2`},Ke={class:`label mb-1.5`},qe={class:`flex flex-wrap gap-2`},Je=[`title`,`aria-pressed`,`onClick`],$=500,Ye=24e3,Xe=3e4,Ze=Object.assign(o({__name:`CustomizeOptions`,setup(e){let{t:n}=I(),{config:o,state:s,report:l,reset:u}=Q(),d=c({get:()=>o.value.skip??N.plan.skip,set:e=>o.value.skip=e}),f=c({get:()=>o.value.take??30500,set:e=>o.value.take=e>Xe?void 0:e}),g=c(()=>l.value&&l.value.stats.patterns-l.value.stats.places),y=c({get:()=>o.value.skipJlpt?H.indexOf(o.value.skipJlpt)+1:0,set:e=>{o.value.skipJlpt=H[e-1]}}),b=c(()=>y.value>1?`N5–${H[y.value-1]}`:H[y.value-1]),S=c({get:()=>o.value.isolated??N.plan.isolated,set:e=>o.value.isolated=e}),w=c({get:()=>o.value.isolatedMinShare??N.plan.isolatedMinShare,set:e=>o.value.isolatedMinShare=e}),T=c(()=>[`hiragana`,`katakanaOn`,`hepburn`].map(e=>({value:e,label:n(`customize.options.${e}`)}))),E=c(()=>o.value.metrics??{}),D=[{key:`rubyScale`,label:`rubyScale`,min:.2,max:.8,step:.05,digits:2},{key:`rubyGap`,label:`rubyGap`,min:0,max:.5,step:.01,digits:2},{key:`compressionFloor`,label:`squeeze`,min:.3,max:1,step:.05,digits:2},{key:`maxRubyWidth`,label:`maxWidth`,min:1,max:3,step:.1,digits:1}],k=c({get:()=>o.value.rubyScript??`hiragana`,set:e=>o.value.rubyScript=e}),P=e=>(o.value.sources??U).includes(e);function F(e){let t=o.value.sources??[...U];o.value.sources=t.includes(e)?t.filter(t=>t!==e):[...t,e]}return(e,n)=>{let c=fe,l=ue,I=Be,L=de,R=G;return p(),i(`form`,{class:`flex flex-col gap-5 p-6`,onSubmit:n[8]||=M(()=>{},[`prevent`])},[x(c,{label:e.$t(`customize.options.family`)},{default:_(()=>[C(r(`input`,{"onUpdate:modelValue":n[0]||=e=>v(o).family=e,class:`input`,placeholder:v(N).plan.family},null,8,Ve),[[j,v(o).family]])]),_:1},8,[`label`]),x(c,{label:e.$t(`customize.options.base`),hint:e.$t(`customize.options.baseHint`)},{default:_(()=>[C(r(`input`,{"onUpdate:modelValue":n[1]||=e=>v(o).base=e,class:`input`,list:`customize-base-fonts`,placeholder:v(N).build.base},null,8,He),[[j,v(o).base]]),r(`datalist`,Ue,[(p(!0),i(h,null,m(v(s)?.baseFonts,e=>(p(),i(`option`,{key:e,value:e},null,8,We))),128))])]),_:1},8,[`label`,`hint`]),x(c,{label:e.$t(`customize.options.script`)},{default:_(()=>[x(l,{modelValue:v(k),"onUpdate:modelValue":n[2]||=e=>O(k)?k.value=e:null,label:e.$t(`customize.options.script`),options:v(T)},null,8,[`modelValue`,`label`,`options`])]),_:1},8,[`label`]),n[9]||=r(`div`,{class:`h-px bg-[var(--ff-line)]`},null,-1),r(`fieldset`,Ge,[r(`legend`,Ke,a(e.$t(`customize.options.sources`)),1),r(`div`,qe,[(p(!0),i(h,null,m(v(U),t=>(p(),i(`button`,{key:t,type:`button`,class:A([`focus-ring border px-2 py-1 text-xs transition-colors`,P(t)?`border-inverse bg-inverse color-inverse`:`border-base color-muted hover:border-strong`]),title:e.$t(`customize.options.source.${t}.hint`),"aria-pressed":P(t),onClick:e=>F(t)},a(e.$t(`customize.options.source.${t}.name`)),11,Je))),128))])]),x(I,{modelValue:v(y),"onUpdate:modelValue":n[3]||=e=>O(y)?y.value=e:null,label:e.$t(`customize.options.jlpt`),display:v(b)??e.$t(`customize.options.none`),hint:e.$t(`customize.options.jlptHint`),min:0,max:v(H).length},null,8,[`modelValue`,`label`,`display`,`hint`,`max`]),x(L,{modelValue:v(S),"onUpdate:modelValue":n[4]||=e=>O(S)?S.value=e:null},{default:_(()=>[t(a(e.$t(`customize.options.isolated`)),1)]),_:1},8,[`modelValue`]),x(I,{modelValue:v(w),"onUpdate:modelValue":n[5]||=e=>O(w)?w.value=e:null,label:e.$t(`customize.options.share`),display:v(w).toFixed(2),hint:e.$t(`customize.options.shareHint`),min:.5,max:1,step:.05,disabled:!v(S)},null,8,[`modelValue`,`label`,`display`,`hint`,`disabled`]),n[10]||=r(`div`,{class:`h-px bg-[var(--ff-line)]`},null,-1),x(I,{modelValue:v(d),"onUpdate:modelValue":n[6]||=e=>O(d)?d.value=e:null,label:e.$t(`customize.options.skip`),display:v(d)?v(d).toLocaleString(`en`):e.$t(`customize.options.none`),hint:e.$t(`customize.options.skipHint`),min:0,max:Ye,step:$},null,8,[`modelValue`,`label`,`display`,`hint`]),x(I,{modelValue:v(f),"onUpdate:modelValue":n[7]||=e=>O(f)?f.value=e:null,label:e.$t(`customize.options.words`),display:v(f)>Xe?e.$t(`customize.options.all`):v(f).toLocaleString(`en`),hint:v(g)===void 0?void 0:e.$t(`customize.options.wordsHint`,{count:v(g).toLocaleString(`en`)}),min:$,max:30500,step:$},null,8,[`modelValue`,`label`,`display`,`hint`,`max`]),n[11]||=r(`div`,{class:`h-px bg-[var(--ff-line)]`},null,-1),(p(),i(h,null,m(D,t=>x(I,{key:t.key,"model-value":v(E)[t.key]??v(N).plan.metrics[t.key],label:e.$t(`customize.options.${t.label}`),display:(v(E)[t.key]??v(N).plan.metrics[t.key]).toFixed(t.digits),min:t.min,max:t.max,step:t.step,"onUpdate:modelValue":e=>v(E)[t.key]=e},null,8,[`model-value`,`label`,`display`,`min`,`max`,`step`,`onUpdate:modelValue`])),64)),x(R,{variant:`ghost`,icon:`i-ph-arrow-counter-clockwise`,class:`self-start`,title:e.$t(`customize.options.resetHint`),onClick:v(u)},{default:_(()=>[t(a(e.$t(`customize.options.reset`)),1)]),_:1},8,[`title`,`onClick`])],32)}}}),{__name:`CustomizeOptions`}),Qe={class:`relative min-h-56 px-6 py-8`},$e={key:0,class:`mt-4 font-mono text-xs`},et={class:`flex flex-wrap items-center gap-4 border-t border-base px-6 py-3`},tt={class:`text-xs color-muted`},nt={class:`font-mono text-xs color-muted tabular-nums`},rt=Object.assign(o({__name:`CustomizePreview`,setup(e){let{text:t,preview:n}=Q(),o=S(32),s=S(400);return(e,c)=>{let u=G,d=oe,f=W;return p(),i(`div`,null,[r(`div`,Qe,[x(u,{variant:`ghost`,icon:`i-ph-shuffle`,class:`absolute right-3 top-3 w-9 px-0`,"aria-label":e.$t(`shuffle`),title:e.$t(`shuffle`),onClick:c[0]||=n=>t.value=(`otherSample`in e?e.otherSample:v(ce))(v(t)).text},null,8,[`aria-label`,`title`]),x(d,{text:v(t),"onUpdate:text":c[1]||=e=>O(t)?t.value=e:null,family:v(n).family,size:v(o),weight:v(s),class:A(v(n).loading&&`opacity-60`)},null,8,[`text`,`family`,`size`,`weight`,`class`]),v(n).error?(p(),i(`p`,$e,a(v(n).error),1)):l(``,!0)]),r(`div`,et,[r(`span`,tt,a(v(n).loading?e.$t(`customize.preview.compiling`):e.$t(`playground.textHint`)),1),v(n).variable?(p(),k(f,{key:0,modelValue:v(s),"onUpdate:modelValue":c[2]||=e=>O(s)?s.value=e:null,min:`MIN_WEIGHT`in e?e.MIN_WEIGHT:v(F),max:`MAX_WEIGHT`in e?e.MAX_WEIGHT:v(P),step:10,"aria-label":e.$t(`customize.preview.weight`),class:`ml-auto w-28`},null,8,[`modelValue`,`min`,`max`,`aria-label`])):l(``,!0),x(f,{modelValue:v(o),"onUpdate:modelValue":c[3]||=e=>O(o)?o.value=e:null,min:16,max:64,"aria-label":e.$t(`customize.preview.size`),class:A(v(n).variable?`w-28`:`ml-auto w-28`)},null,8,[`modelValue`,`aria-label`,`class`]),r(`span`,nt,a(v(n).ms===void 0?``:e.$t(`customize.preview.stats`,{glyphs:v(n).glyphs??0,ms:v(n).ms})),1)])])}}}),{__name:`CustomizePreview`}),it={class:`flex flex-col gap-1 px-4 py-3`},at={class:`font-mono text-xl tabular-nums`},ot={class:`label`},st=Object.assign(o({__name:`UiStat`,props:{label:{},value:{}},setup(e){return(t,n)=>(p(),i(`div`,it,[r(`span`,at,a(typeof e.value==`number`?e.value.toLocaleString(`en`):e.value),1),r(`span`,ot,a(e.label),1)]))}}),{__name:`UiStat`}),ct={class:`grid grid-cols-3 border-b border-base lg:grid-cols-7`},lt={key:0,class:`label col-span-full px-6 py-4`},ut={class:`flex flex-wrap gap-3 px-6 pt-4 font-mono text-xs color-muted tabular-nums items-center`},dt=[`aria-label`],ft=[`aria-pressed`,`disabled`,`onClick`],pt={key:0},mt={key:0},ht={key:1},gt={class:`flex flex-wrap items-center gap-3 px-6 py-4`},_t=[`disabled`],vt={key:0,class:`font-mono text-xs color-muted`},yt={key:0,class:`border-t border-base px-6 py-3 font-mono text-xs`},bt={key:1,class:`border-t border-base`},xt=[`href`],St={class:`font-mono text-xs color-muted tabular-nums`},Ct=Object.assign(o({__name:`CustomizeBuild`,setup(e){let{t:n}=I(),{config:o,report:s,estimate:d,build:f,savedTo:g,runBuild:_,save:y}=Q(),b=e=>`${(e/1024/1024).toFixed(2)} MB`,x=c(()=>o.value.formats??Z);function S(e){o.value.formats=Z.filter(t=>t===e?!x.value.includes(t):x.value.includes(t))}let C=c(()=>{let e=d.size;return e&&[`woff2`,`otf`].filter(e=>x.value.includes(e)).map(t=>n(`customize.build.estimate.${t}`,{size:b(e[t])})).join(` · `)}),w=c(()=>{let e=s.value?.stats;return e?[{label:n(`customize.build.words`),value:e.patterns-e.places},{label:n(`customize.build.places`),value:e.places},{label:n(`customize.build.ambiguous`),value:e.ambiguous},{label:n(`customize.build.lone`),value:e.isolated},{label:n(`customize.build.protected`),value:e.protectedAnnotated+e.protectedBare},{label:n(`customize.build.glyphs`),value:e.glyphs},{label:n(`customize.build.rules`),value:e.rules}]:[]}),T=c(()=>f.total?`${f.step} ${f.done}/${f.total}`:f.step);return(e,n)=>{let o=st;return p(),i(`div`,null,[r(`div`,ct,[(p(!0),i(h,null,m(v(w),e=>(p(),k(o,u({key:e.label},{ref_for:!0},e,{class:`border-r border-base last:border-r-0`}),null,16))),128)),v(w).length?l(``,!0):(p(),i(`span`,lt,a(e.$t(`customize.build.planning`)),1))]),r(`div`,ut,[r(`div`,{role:`group`,"aria-label":e.$t(`customize.build.formats`),class:`flex gap-2`},[(p(!0),i(h,null,m(`FONT_FORMATS`in e?e.FONT_FORMATS:v(Z),e=>(p(),i(`button`,{key:e,type:`button`,class:A([`focus-ring border px-2 py-1 font-mono text-xs transition-colors disabled:cursor-not-allowed`,v(x).includes(e)?`border-strong bg-inverse color-inverse`:`border-base color-muted hover:border-strong`]),"aria-pressed":v(x).includes(e),disabled:v(f).running||v(x).length===1&&v(x).includes(e),onClick:t=>S(e)},` .`+a(e),11,ft))),128))],8,dt),v(C)||v(d).loading?(p(),i(`div`,pt,[v(C)?(p(),i(`span`,mt,a(v(C)),1)):l(``,!0),v(d).loading?(p(),i(`span`,ht,a(e.$t(`customize.build.estimating`)),1)):l(``,!0)])):l(``,!0)]),r(`div`,gt,[r(`button`,{type:`button`,class:`btn-solid focus-ring`,disabled:v(f).running,onClick:n[0]||=(...e)=>v(_)&&v(_)(...e)},[r(`span`,{class:A(v(f).running?`i-ph-circle-notch animate-spin`:`i-ph-hammer`)},null,2),t(` `+a(v(f).running?v(T):e.$t(`customize.build.run`)),1)],8,_t),r(`button`,{type:`button`,class:`btn-outline focus-ring`,onClick:n[1]||=(...e)=>v(y)&&v(y)(...e)},[n[2]||=r(`span`,{class:`i-ph-floppy-disk`},null,-1),t(` `+a(e.$t(`customize.build.save`)),1)]),v(g)?(p(),i(`span`,vt,a(v(g)),1)):l(``,!0)]),v(f).error?(p(),i(`p`,yt,a(v(f).error),1)):l(``,!0),v(f).files.length?(p(),i(`ul`,bt,[(p(!0),i(h,null,m(v(f).files,e=>(p(),i(`li`,{key:e.name,class:`flex items-center gap-4 border-b border-base px-6 py-2 last:border-b-0`},[r(`a`,{href:e.url,download:``,class:`focus-ring font-mono text-sm underline underline-offset-3`},a(e.name),9,xt),r(`span`,St,a(b(e.bytes)),1)]))),128))])):l(``,!0)])}}}),{__name:`CustomizeBuild`}),wt={class:`flex flex-col gap-2 border-b border-base p-6`},Tt=[`placeholder`,`aria-label`],Et={class:`text-xs color-muted`},Dt={class:`max-h-[32rem] overflow-y-auto`},Ot={lang:`ja`,class:`w-28 shrink-0 text-base`},kt=[`aria-pressed`,`title`,`onClick`],At=[`onClick`],jt=Object.assign(o({__name:`CustomizeWords`,setup(e){let{config:t,report:n,search:o,toggleWord:s}=Q(),l=S(``),u=b([]);T(l,async e=>{let t=e.trim(),n=t?await o(t).catch(()=>[]):[];e===l.value&&(u.value=n)});let d=c(()=>new Set(t.value.words?.pin??[])),f=c(()=>new Set(t.value.words?.remove??[])),g=c(()=>l.value.trim()?u.value:Object.entries(n.value?.ivs.words??{}).map(([e,t])=>({form:e,readings:t.map(e=>({notation:e,score:0,sources:[]}))})));return(e,t)=>(p(),i(`div`,null,[r(`div`,wt,[C(r(`input`,{"onUpdate:modelValue":t[0]||=e=>O(l)?l.value=e:null,type:`search`,lang:`ja`,placeholder:e.$t(`customize.dictionary.search`),"aria-label":e.$t(`customize.dictionary.search`),class:`input max-w-md`},null,8,Tt),[[j,v(l)]]),r(`p`,Et,a(v(l).trim()?e.$t(`customize.dictionary.results`,{count:v(u).length}):e.$t(`customize.dictionary.hint`)),1)]),r(`ul`,Dt,[(p(!0),i(h,null,m(v(g),t=>(p(),i(`li`,{key:t.form,class:A([`flex flex-wrap items-center gap-2 border-b border-base px-6 py-2`,v(f).has(t.form)&&`opacity-40`])},[r(`span`,Ot,a(t.form),1),(p(!0),i(h,null,m(t.readings,t=>(p(),i(`button`,{key:t.notation,type:`button`,lang:`ja`,class:A([`focus-ring border px-2 py-0.5 text-sm transition-colors`,v(d).has(t.notation)?`border-inverse bg-inverse color-inverse`:`border-base hover:border-strong`]),"aria-pressed":v(d).has(t.notation),title:t.sources.length?`${t.score} · ${t.sources.join(` `)}`:e.$t(`customize.dictionary.noTag`),onClick:e=>v(s)(`pin`,t.notation)},a(t.notation),11,kt))),128)),r(`button`,{type:`button`,class:`btn-ghost focus-ring ml-auto h-7 px-2 text-xs`,onClick:e=>v(s)(`remove`,t.form)},a(v(f).has(t.form)?e.$t(`customize.dictionary.restore`):e.$t(`customize.dictionary.remove`)),9,At)],2))),128))])]))}}),{__name:`CustomizeWords`}),Mt={class:`flex flex-col gap-4 p-6`},Nt=[`placeholder`,`aria-label`],Pt={type:`submit`,class:`btn-outline focus-ring shrink-0`},Ft={class:`label`},It={class:`flex flex-wrap gap-2`},Lt=[`aria-label`,`onClick`],Rt={key:0,class:`text-xs color-muted`},zt=Object.assign(o({__name:`CustomizeCustomWords`,setup(e){let{config:n,toggleWord:o}=Q(),s=S(``),u=c(()=>[{key:`add`,label:`customize.custom.added`,items:n.value.words?.add??[]},{key:`pin`,label:`customize.custom.pinned`,items:n.value.words?.pin??[]},{key:`remove`,label:`customize.custom.removed`,items:n.value.words?.remove??[]}]);function d(){/\[[^\]]+\]/.test(s.value)&&(o(`add`,s.value.trim()),s.value=``)}return(e,n)=>(p(),i(`div`,Mt,[r(`form`,{class:`flex gap-2`,onSubmit:M(d,[`prevent`])},[C(r(`input`,{"onUpdate:modelValue":n[0]||=e=>O(s)?s.value=e:null,lang:`ja`,placeholder:e.$t(`customize.custom.placeholder`),"aria-label":e.$t(`customize.custom.label`),class:`input font-mono`},null,8,Nt),[[j,v(s)]]),r(`button`,Pt,a(e.$t(`customize.custom.add`)),1)],32),(p(!0),i(h,null,m(v(u),s=>(p(),i(`div`,{key:s.key,class:`flex flex-col gap-2`},[r(`span`,Ft,a(e.$t(s.label,{count:s.items.length})),1),r(`div`,It,[(p(!0),i(h,null,m(s.items,c=>(p(),i(`button`,{key:c,type:`button`,lang:`ja`,class:`focus-ring group flex items-center gap-1.5 border border-base px-2 py-0.5 text-sm hover:border-strong`,"aria-label":e.$t(`customize.custom.takeOut`,{item:c}),onClick:e=>v(o)(s.key,c)},[t(a(c)+` `,1),n[1]||=r(`span`,{class:`i-ph-x text-xs color-muted group-hover:color-base`},null,-1)],8,Lt))),128)),s.items.length?l(``,!0):(p(),i(`span`,Rt,a(e.$t(`customize.custom.none`)),1))])]))),128))]))}}),{__name:`CustomizeCustomWords`}),Bt={key:0,class:`label px-6 py-24 text-center`},Vt={key:3,class:`grid lg:grid-cols-[340px_1fr]`},Ht={class:`border-b border-base lg:border-b-0 lg:border-r`},Ut={class:`flex items-baseline justify-between border-b border-base px-6 py-3`},Wt={class:`label color-base`},Gt={class:`font-mono text-[11px] color-muted`},Kt={class:`min-w-0`},qt=o({__name:`customize`,setup(e){let{status:t,state:n}=Ae();return(e,o)=>{let s=xe,c=Ie,l=Ze,u=rt,d=ne,f=Ct,m=jt,h=zt;return p(),i(`div`,null,[v(t)===`connecting`?(p(),i(`p`,Bt,a(e.$t(`customize.connecting`)),1)):v(t)===`unavailable`?(p(),k(s,{key:1})):v(t)===`locked`?(p(),k(c,{key:2})):(p(),i(`div`,Vt,[r(`aside`,Ht,[r(`div`,Ut,[r(`h1`,Wt,a(e.$t(`customize.title`)),1),r(`span`,Gt,a(v(n)?.sources.JMdict),1)]),x(l)]),r(`div`,Kt,[x(d,{index:`01`,title:e.$t(`customize.sections.preview`),class:`border-t-0 bg-base lg:sticky lg:top-14 lg:z-1 lg:border-b`},{default:_(()=>[x(u)]),_:1},8,[`title`]),x(d,{index:`02`,title:e.$t(`customize.sections.build`),class:`lg:border-t-0`},{default:_(()=>[x(f)]),_:1},8,[`title`]),x(d,{index:`03`,title:e.$t(`customize.sections.dictionary`)},{default:_(()=>[x(m)]),_:1},8,[`title`]),x(d,{index:`04`,title:e.$t(`customize.sections.words`)},{default:_(()=>[x(h)]),_:1},8,[`title`])])]))])}}});export{qt as default};
@@ -1,4 +0,0 @@
1
- var e={meta:{title:`Furifont:ふりがなを表示するフォント`,description:`ふりがなを自分で表示する日本語フォントです。`},nav:{demo:`はじめに`,docs:`ドキュメント`,customize:`カスタマイズ`,report:`報告`,github:`GitHub リポジトリ`,light:`ライトモードに切り替え`,dark:`ダークモードに切り替え`,language:`言語`,rubyOff:`ふりがなを隠す`,rubyOn:`ふりがなを表示`},footer:{fonts:`フォントは{license}です。Source Han Sans と Source Han Serif から作りました。`,data:`読みのデータは {jmdict}、{jmnedict}、{kanjidic}(EDRDG)、{furigana}、{japanpost}(地名)、{desktoptetsu}(JRの駅名)から取っています。ライセンスは CC BY-SA 4.0 です。`,code:`ツールは MIT ライセンスです。`,report:`読みの誤りを報告`,source:`GitHub のソースコード`,made:`制作:{author}`,supported:`{vercel} と{sponsors}の支援を受けています`,sponsors:`スポンサー`},copied:`コピーしました`,shuffle:`別の例文を表示`,editable:`サンプルの文章です。自由に書き換えられます。`,scripts:{hiragana:`ひらがな`,hepburn:`ローマ字`},faces:{sans:`ゴシック`,serif:`明朝`},hero:{title1:`ふりがなは、`,title2:`フォントが振る。`,body:`Furifont は、フォントそのものにふりがなを表示する
2
- 日本語フォントです。言葉ごとの読み方に合わせて、
3
- 合字で切り替えます。カスタムフォントに対応していれば、どこでも使えます。`,download:`フォントをダウンロード`,build:`自分でビルドする`},notice:`フォントの制約により、ふりがなが正しくない場合があります。ご注意ください。`,sections:{try:`試してみる`,how:`仕組み`,selectors:`読みを選ぶ`,download:`ダウンロード`,anyPage:`ウェブサイトで`},playground:{script:`ふりがなの文字`,face:`フォントの種類`,size:`サイズ / {size}px`,weight:`太さ / {weight}`,ruby:`ふりがな`,okurigana:`送り仮名の読み`,okuriganaHint:`JavaScript が必要です。ブラウザの制限により、フォントだけでは送り仮名を扱えません。`,textHint:`文章をクリックすると編集できます。`,copy:`テキストをコピー`},how:{build:{title:`カスタムビルド`,body:`Furifont は、源ノ角ゴシックまたは源ノ明朝を元に作ります。ビルドの工程で、数千の言葉の辞書を読み込み、ふりがなを新しいグリフとして描き込みます。出来上がるのは普通のフォントファイルです。JavaScript もプラグインも要りません。`},ligatures:{title:`仕事をするのは合字`,body:`フォントには、言葉ごとに合字が入っています。今日は、上に「きょう」が付いた一つのグリフになります。置き換えは文字を描くときに行われるので、文章そのものは変わりません。`},longest:{title:`長い単語を優先`,body:`Furifont は、漢字のまとまりを、数千の一般的な言葉の一覧と照らし合わせます。長い言葉から順に試します。たとえば、日本語は日本より先に選ばれます。今日は一つの言葉として、きょうと読みます。`},bare:{title:`迷ったら付けない`,body:`漢字が一つだけのときは、読み方が一つにはっきり決まる場合だけ、ふりがなを付けます。大人気は、だいにんきとも、おとなげとも読めるので、ふりがなを付けません。`},okurigana:{title:`送り仮名はオプトイン`,body:`ブラウザはフォントのスクリプトごとに別々に字形を作るため、フォントは漢字の後ろのかな(送り仮名)を見られません。そこで、JavaScript によるアノテーションで、オプションとして対応しています。`}},selectors:{body:`読み方が複数ある言葉があります。Furifont は、一番よく使う読み方を表示します。別の読み方にするには、最初の漢字のすぐ後ろに異体字セレクタ(目に見えない文字)を書きます。VS226 は読み 1、VS227 は読み 2 で、以降も同じです。VS225 はふりがなを消します。`,lookUp:`読みを調べる`,default:`既定`,reading2:`読み 2(VS227)`,none:`ルビなし(VS225)`},downloads:{all:`すべて ZIP でダウンロード`,family:`ファミリー`,ruby:`ルビ`,variable:`可変`,formats:`OTFとTTFは、パソコンにインストールするときによく使います。WOFF2はウェブサイト向けに最適化されています。最も快適に使えるので、可変フォントをおすすめします。互換性のために、固定のウェイトが必要になることもあります。`,buildOwn:`自分でフォントを作ることもできます。元のフォント、言葉の数、ふりがなの文字、大きさを選べます。`},anyPage:{body:`どんなウェブサイトでも Furifont で表示できます。漢字がある行には、ふりがなのための余白が付きます。パソコンに Furifont が入っていれば、ダウンロードは要りません。入っていなければ、このサイトからフォントを読み込みます。`,bookmarklet:`ブックマークレット`,bookmarkletHint:`ブックマークバーにドラッグしてください。好きなページでクリックすると、Furifont がオンになります。もう一度クリックすると、オフになります。X や GitHub のように、他のサイトのフォントを読み込めないサイトがあります。そのようなサイトでは、パソコンに Furifont をインストールしてください。`,okurigana:`送り仮名の読み`,okuriganaHint:`送り仮名の前の漢字に、正しい読みを付けます(来る、来ない の 来 など)。`,userscript:`ユーザースクリプト`,install:`ユーザースクリプトをインストール`,userscriptHint:`Tampermonkey や Violentmonkey(小さなプログラムを動かすブラウザの拡張機能)で使えます。日本語のページで、Furifont が自動でオンになります。他のサイトのフォントを読み込めないサイトでも動きます。メニューから、別の Furifont に切り替えたり、オフにしたりできます。`,toast:{message:`このページでは Furifont のフォントを読み込めませんでした。X や GitHub のように、他のサイトのフォントを読み込めないサイトがあります。そのようなサイトでは、パソコンに Furifont をインストールする必要があります。`,download:`フォントをダウンロード`,close:`閉じる`,outdated:`Furifont の新しいバージョンがあります。`,userscript:`ユーザースクリプトを更新`,bookmarklet:`新しいブックマークレットを入手`},menu:{okuriganaOn:`送り仮名の読み:オン`,okuriganaOff:`送り仮名の読み:オフ`}},reference:{eyebrow:`リファレンス`,title:`読みを選ぶ`,body:`Furifont は、言葉の一番よく使う読み方を表示します。別の読み方にするには、言葉の最初の漢字のすぐ後ろに異体字セレクタ(目に見えない文字)を書きます。VS226 は読み 1、VS227 は読み 2 で、以降も同じです。漢字が一つだけの場合は、その漢字の読み方を選びます。VS225 は、ふりがなのない漢字を表示します。`,search:`単語や漢字を検索:市場、今日、生`,searchLabel:`読みを検索`,hint:`読みをクリックすると、セレクタ付きの単語をコピーします。`,unavailable:`リファレンスは用意済みのフォントに入っていますが、ここでは読み込めませんでした({error})。{command} でフォントを作るか、カスタマイズを開いてください。`,loading:`読み込み中`,words:`複数の読みを持つ単語 / {count}`,kanji:`漢字 / {count}`,copyWith:`{text} を {selector} 付きでコピー`,default:`既定`},report:{eyebrow:`報告`,title:`読みの誤りを報告`,body:`ふりがなが間違っている、または必要な言葉にふりがなが付いていない
4
- 場合は、その言葉と正しい読みを教えてください。複数の言葉をまとめて報告できます。報告をもとに辞書を修正します。`,link:`読みの誤りを報告する。`,sections:{words:`言葉 / {count}`,environment:`表示された場所`,note:`その他`},word:`言葉`,expected:`正しい読み`,shown:`表示された読み(任意)`,context:`文(任意)`,remove:`{word} を削除`,add:`言葉を追加`,environment:`環境`,environments:{playground:`このサイトのプレイグラウンド`,website:`他のウェブサイト`,desktop:`デスクトップアプリ`,mobile:`モバイルアプリ`},family:`フォント`,familyAny:`(指定なし)`,url:`ページのアドレス(任意)`,app:`アプリ(任意)`,appPlaceholder:{desktop:`Word、Pages、VS Code`,mobile:`メモ、Kindle`},os:`OS(任意)`,notePlaceholder:`ブラウザ名や、読みが間違っている理由など、参考になること。`,name:`お名前(任意)`,nameHint:`読みを修正したときにクレジットとして記載します。匿名の場合は空欄のままにしてください。`,send:`報告を送信`,sending:`送信中`,sent:`ご報告ありがとうございます。`,again:`さらに報告する`,failed:`報告を送信できませんでした。しばらくしてからもう一度お試しください。`,limited:`短時間に多くの報告が送られました。1時間後にもう一度お試しください。`,privacy:`入力内容、フォントのバージョン、ブラウザ名を保存します。IPアドレスは保存しません。`},docs:{install:`フォントのインストール`,website:`ウェブサイトで使う`,readings:`読みを選ぶ`},customize:{connecting:`furifont dev に接続しています`,title:`カスタマイズ`,offline:{eyebrow:`カスタマイズ / オフライン`,title:`自分だけの Furifont を作る`,body:`カスタマイズは、あなたのパソコンで動くツールです。元のフォントを読み込み、作ったフォントを保存します。好きなフォルダで起動すると、このページがつながった状態で開きます。ライブプレビュー、辞書、ビルドボタンが使えます。作ったフォントは {folder} に保存されます。`,needs:`Node 22.18 以上が必要です(JavaScript のツールを動かす無料のプログラムです)。`,run:`好きなフォルダでカスタマイズを起動する`},auth:{eyebrow:`カスタマイズ / ロック中`,title:`ターミナルのコードを入力`,body:`{command} は、起動したターミナル(コマンドを入力する画面)に 6 桁のコードを表示しました。`,code:`コード`,failed:`コードが一致しません。ターミナルを確認して、もう一度お試しください。`,unlock:`ロックを解除`},sections:{preview:`プレビュー`,build:`ビルド`,dictionary:`辞書`,words:`あなたの単語`},options:{family:`フォントの名前`,base:`ベースフォント`,baseHint:`ふりがなを付ける元のフォントです。Source Han Serif JP Bold のようにダウンロードするフォントか、パソコン上の別のフォントファイルのパスを指定します。`,script:`ふりがなの文字`,hiragana:`ひらがな`,katakanaOn:`カタカナ`,hepburn:`ローマ字`,skip:`よく出る言葉を除く`,skipHint:`残った言葉のうち、よく使うものにはふりがなを付けません。読む人がすでに知っているからです。言葉と漢字一文字をよく使う順に並べ、500 ずつ数えます。`,words:`続けてふりがなを付ける言葉の数`,wordsHint:`続く言葉を、よく使う順に選びます。全部で {count} 語にふりがなが付きます。`,jlpt:`JLPT の言葉を除く`,jlptHint:`JLPT(日本語能力試験)の語彙リストで、この級までの言葉にはふりがなを付けません。N5 がいちばんやさしい級です。`,none:`なし`,all:`すべて`,sources:`次の語彙から言葉を選ぶ`,source:{jmdict:{name:`JMdict の全語`,hint:`JMdict:どのリストにも順位がない言葉(四字熟語など)も含む、すべての言葉です。順位のない言葉は、他に当てはまるものがない部分で使います。フォントが約700 KB大きくなります。`},ichi:{name:`基本の言葉`,hint:`JMdict「ichi1」「ichi2」:「一万語」リスト(基本の言葉の一覧)の言葉です。`},news:{name:`新聞の言葉`,hint:`JMdict「news1」「news2」:新聞によく出る 24,000 語です。`},spec:{name:`日常語`,hint:`JMdict「spec1」「spec2」:他の一覧に載っていない、一般的な言葉です。例:日本。`},gai:{name:`外来語`,hint:`JMdict「gai1」「gai2」:他の言語から入った、よく使う言葉です。`},nf:{name:`新聞の順位`,hint:`JMdict「nf01」〜「nf48」:新聞の言葉の一覧で順位がある言葉です(500 語ずつ)。`},tatoeba:{name:`Tatoeba の例文`,hint:`Tatoeba:例文に 3 回以上出てくる言葉です。上のリストにない留守中なども入ります。`},place:{name:`地名`,hint:`JMnedict:駅名と地名です。一般的な言葉に当てはまらない部分で使います。`},"mahjong-yaku":{name:`麻雀の役`,hint:`麻雀の役と牌の名前です(立直など)。一般的な言葉に当てはまらない部分で使います。`},"jr-stations":{name:`JRの駅名`,hint:`デスクトップ鉄のJR駅リストにある駅名です(阿蘇など)。一般的な言葉に当てはまらない部分で使います。`},yojijukugo:{name:`四字熟語`,hint:`JMdict:四字熟語です(阿鼻叫喚など)。一般的な言葉に当てはまらない部分で使います。`},"japan-post":{name:`市区町村と町域`,hint:`日本郵便の郵便番号データにある市区町村と町域の名前です(一宮など)。一般的な言葉に当てはまらない部分で使います。`}},isolated:`漢字一文字にもふりがなを付ける`,share:`漢字一文字のときの確かさ`,shareHint:`漢字が一つだけのとき、辞書の中でその読み方が少なくともこの割合を占める場合だけ、ふりがなを付けます。0.5 から 1 の数を入れます。大きいほど、ふりがなが付く漢字は減ります。`,rubyScale:`ふりがなの大きさ(漢字の何倍か)`,rubyGap:`漢字の上の余白(em)`,squeeze:`最も狭くする幅(通常の何倍か)`,maxWidth:`ふりがなの最大幅(em)`,reset:`初期設定に戻す`,resetHint:`カスタマイズが読み込んだ設定に戻します。追加した言葉はそのまま残ります。`},preview:{compiling:`プレビューを作っています`,weight:`プレビューの太さ`,size:`プレビューのサイズ`,stats:`{glyphs} グリフ / {ms} ms`},build:{words:`単語`,places:`地名`,ambiguous:`複数の読み`,lone:`漢字一文字`,protected:`あなたの設定`,glyphs:`ルビのグリフ`,rules:`ルール`,planning:`計画中`,estimate:{woff2:`≈ {size} WOFF2`,otf:`{size} OTF`},formats:`形式`,estimating:`サイズを見積もり中`,run:`フォントをビルド`,save:`設定を保存`},dictionary:{search:`辞書を検索:今日、生`,results:`{count} 語`,hint:`これらの言葉には、よく使う読み方が複数あります。一つを固定すると、それが標準の読み方になります。`,noTag:`一般的な言葉ではない`,restore:`元に戻す`,remove:`ふりがなを付けない`},custom:{placeholder:`日[に]本[ほん] または 今日[きょう]`,label:`追加する単語`,add:`単語を追加`,added:`追加 / {count}`,pinned:`固定 / {count}`,removed:`ふりがなを付けない / {count}`,none:`なし`,takeOut:`{item} を外す`}}};export{e as default};
@@ -1 +0,0 @@
1
- {"id":"95075385-c519-4224-af4d-f5091c1f9663","timestamp":1792114626267,"prerendered":[]}
@@ -1 +0,0 @@
1
- :root{--ff-bg:#fff;--ff-fg:#0a0a0a;--ff-muted:#0a0a0a9e;--ff-faint:#0a0a0a59;--ff-line:#0a0a0a1f;--ff-line-strong:#0a0a0a66;--ff-hover:#0a0a0a0d;--ff-lh:1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html.dark{--ff-bg:#0a0a0a;--ff-fg:#fafafa;--ff-muted:#fafafa9e;--ff-faint:#fafafa59;--ff-line:#fafafa2b;--ff-line-strong:#fafafa66;--ff-hover:#fafafa12;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{scrollbar-gutter:stable;line-height:calc(1.5 * var(--ff-lh))}:lang(ja){--ff-lh:1.3}body,html{background:var(--ff-bg);color:var(--ff-fg)}body{-webkit-font-smoothing:antialiased}:lang(ja) body{font-family:var(--ff-font),ui-sans-serif,system-ui,sans-serif;font-feature-settings:var(--ff-features)}::selection{background:var(--ff-fg);color:var(--ff-bg)}.display{letter-spacing:-.045em;text-wrap:balance;line-height:.95}:lang(ja) .display,:lang(zh) .display{letter-spacing:0;word-break:auto-phrase;line-height:1.8}.hero-title{font-size:calc(clamp(2.75rem,6vw,4.75rem))}:lang(ja) .hero-title,:lang(zh) .hero-title{font-size:calc(clamp(2.25rem,4.4vw,3.5rem))}@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--un-bg-opacity:100%;--un-border-opacity:100%;--un-outline-opacity:100%;--un-outline-style:solid;--un-text-opacity:100%}}@property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-outline-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --un-border-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-bg-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-inset-ring-color{syntax:"*";inherits:false}@property --un-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow-color{syntax:"*";inherits:false}@property --un-ring-color{syntax:"*";inherits:false}@property --un-ring-inset{syntax:"*";inherits:false}@property --un-ring-offset-color{syntax:"*";inherits:false}@property --un-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --un-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow-color{syntax:"*";inherits:false}@property --un-blur{syntax:"*";inherits:false}@property --un-brightness{syntax:"*";inherits:false}@property --un-contrast{syntax:"*";inherits:false}@property --un-drop-shadow{syntax:"*";inherits:false}@property --un-grayscale{syntax:"*";inherits:false}@property --un-hue-rotate{syntax:"*";inherits:false}@property --un-invert{syntax:"*";inherits:false}@property --un-saturate{syntax:"*";inherits:false}@property --un-sepia{syntax:"*";inherits:false}@property --un-numeric-figure{syntax:"*";inherits:false}@property --un-numeric-fraction{syntax:"*";inherits:false}@property --un-numeric-spacing{syntax:"*";inherits:false}@property --un-ordinal{syntax:"*";inherits:false}@property --un-slashed-zero{syntax:"*";inherits:false}:host,:root{--spacing:.25rem;--fontWeight-semibold:600;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--colors-amber-DEFAULT:oklch(82.8% .189 84.429);--container-6xl:72rem;--container-md:28rem;--container-sm:24rem;--tracking-tight:-.025em;--default-transition-timingFunction:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--fontWeight-normal:400;--fontWeight-medium:500;--font-sans: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";--tracking-wide:.025em;--radius-none:0;--colors-white:#fff;--colors-neutral-950:oklch(14.5% 0 0);--colors-neutral-500:oklch(55.6% 0 0);--text-4xl-fontSize:2.25rem;--text-4xl-lineHeight:2.5rem;--text-xs-fontSize:.75rem;--text-xs-lineHeight:1rem;--text-base-fontSize:1rem;--text-base-lineHeight:1.5rem;--text-sm-fontSize:.875rem;--text-sm-lineHeight:1.25rem;--text-7xl-fontSize:4.5rem;--text-7xl-lineHeight:1;--text-2xl-fontSize:1.5rem;--text-2xl-lineHeight:2rem;--text-xl-fontSize:1.25rem;--text-xl-lineHeight:1.75rem;--leading-none:1;--text-3xl-fontSize:1.875rem;--text-3xl-lineHeight:2.25rem;--default-font-family:var(--font-sans);--default-monoFont-family:var(--font-mono)}*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-featureSettings,normal);font-variation-settings:var(--default-font-variationSettings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-monoFont-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-monoFont-featureSettings,normal);font-variation-settings:var(--default-monoFont-variationSettings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}.resize-y,textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden~=until-found])){display:none!important}.i-ph-arrow-counter-clockwise{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M224%20128a96%2096%200%200%201-94.71%2096H128a95.38%2095.38%200%200%201-65.9-26.2%208%208%200%200%201%2011-11.63%2080%2080%200%201%200-1.67-114.78%203%203%200%200%201-.26.25L44.59%2096H72a8%208%200%200%201%200%2016H24a8%208%200%200%201-8-8V56a8%208%200%200%201%2016%200v29.8L60.25%2060A96%2096%200%200%201%20224%20128%22%2F%3E%3C%2Fsvg%3E)}.i-ph-arrow-counter-clockwise,.i-ph-bookmark-simple,.i-ph-check,.i-ph-check-circle-light,.i-ph-circle-notch,.i-ph-copy,.i-ph-download-simple,.i-ph-flag,.i-ph-floppy-disk,.i-ph-github-logo,.i-ph-hammer,.i-ph-list-magnifying-glass,.i-ph-moon,.i-ph-paper-plane-tilt,.i-ph-plus,.i-ph-puzzle-piece,.i-ph-shuffle,.i-ph-sliders-horizontal,.i-ph-sun,.i-ph-translate,.i-ph-trash,.i-ph-warning,.i-ph-x{-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.15em;height:1.15em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-bookmark-simple{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M184%2032H72a16%2016%200%200%200-16%2016v176a8%208%200%200%200%2012.24%206.78L128%20193.43l59.77%2037.35A8%208%200%200%200%20200%20224V48a16%2016%200%200%200-16-16m0%20177.57-51.77-32.35a8%208%200%200%200-8.48%200L72%20209.57V48h112Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-check{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22m229.66%2077.66-128%20128a8%208%200%200%201-11.32%200l-56-56a8%208%200%200%201%2011.32-11.32L96%20188.69%20218.34%2066.34a8%208%200%200%201%2011.32%2011.32%22%2F%3E%3C%2Fsvg%3E)}.i-ph-check-circle-light{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M172.24%2099.76a6%206%200%200%201%200%208.48l-56%2056a6%206%200%200%201-8.48%200l-24-24a6%206%200%200%201%208.48-8.48L112%20151.51l51.76-51.75a6%206%200%200%201%208.48%200M230%20128A102%20102%200%201%201%20128%2026a102.12%20102.12%200%200%201%20102%20102m-12%200a90%2090%200%201%200-90%2090%2090.1%2090.1%200%200%200%2090-90%22%2F%3E%3C%2Fsvg%3E)}.i-ph-circle-notch{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M232%20128a104%20104%200%200%201-208%200c0-41%2023.81-78.36%2060.66-95.27a8%208%200%200%201%206.68%2014.54C60.15%2061.59%2040%2093.27%2040%20128a88%2088%200%200%200%20176%200c0-34.73-20.15-66.41-51.34-80.73a8%208%200%200%201%206.68-14.54C208.19%2049.64%20232%2087%20232%20128%22%2F%3E%3C%2Fsvg%3E)}.i-ph-copy{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M216%2032H88a8%208%200%200%200-8%208v40H40a8%208%200%200%200-8%208v128a8%208%200%200%200%208%208h128a8%208%200%200%200%208-8v-40h40a8%208%200%200%200%208-8V40a8%208%200%200%200-8-8m-56%20176H48V96h112Zm48-48h-32V88a8%208%200%200%200-8-8H96V48h112Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-download-simple{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M224%20144v64a8%208%200%200%201-8%208H40a8%208%200%200%201-8-8v-64a8%208%200%200%201%2016%200v56h160v-56a8%208%200%200%201%2016%200m-101.66%205.66a8%208%200%200%200%2011.32%200l40-40a8%208%200%200%200-11.32-11.32L136%20124.69V32a8%208%200%200%200-16%200v92.69L93.66%2098.34a8%208%200%200%200-11.32%2011.32Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-flag{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M42.76%2050A8%208%200%200%200%2040%2056v168a8%208%200%200%200%2016%200v-44.23c26.79-21.16%2049.87-9.75%2076.45%203.41%2016.4%208.11%2034.06%2016.85%2053%2016.85%2013.93%200%2028.54-4.75%2043.82-18a8%208%200%200%200%202.76-6V56a8%208%200%200%200-13.27-6c-28%2024.23-51.72%2012.49-79.21-1.12C111.07%2034.76%2078.78%2018.79%2042.76%2050M216%20172.25c-26.79%2021.16-49.87%209.74-76.45-3.41-25-12.35-52.81-26.13-83.55-8.4V59.79c26.79-21.16%2049.87-9.75%2076.45%203.4%2025%2012.35%2052.82%2026.13%2083.55%208.4Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-floppy-disk{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M219.31%2072%20184%2036.69A15.86%2015.86%200%200%200%20172.69%2032H48a16%2016%200%200%200-16%2016v160a16%2016%200%200%200%2016%2016h160a16%2016%200%200%200%2016-16V83.31A15.86%2015.86%200%200%200%20219.31%2072M168%20208H88v-56h80Zm40%200h-24v-56a16%2016%200%200%200-16-16H88a16%2016%200%200%200-16%2016v56H48V48h124.69L208%2083.31ZM160%2072a8%208%200%200%201-8%208H96a8%208%200%200%201%200-16h56a8%208%200%200%201%208%208%22%2F%3E%3C%2Fsvg%3E)}.i-ph-github-logo{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M208.31%2075.68A59.78%2059.78%200%200%200%20202.93%2028a8%208%200%200%200-6.93-4%2059.75%2059.75%200%200%200-48%2024h-24a59.75%2059.75%200%200%200-48-24%208%208%200%200%200-6.93%204%2059.78%2059.78%200%200%200-5.38%2047.68A58.14%2058.14%200%200%200%2056%20104v8a56.06%2056.06%200%200%200%2048.44%2055.47A39.8%2039.8%200%200%200%2096%20192v8H72a24%2024%200%200%201-24-24%2040%2040%200%200%200-40-40%208%208%200%200%200%200%2016%2024%2024%200%200%201%2024%2024%2040%2040%200%200%200%2040%2040h24v16a8%208%200%200%200%2016%200v-40a24%2024%200%200%201%2048%200v40a8%208%200%200%200%2016%200v-40a39.8%2039.8%200%200%200-8.44-24.53A56.06%2056.06%200%200%200%20216%20112v-8a58.14%2058.14%200%200%200-7.69-28.32M200%20112a40%2040%200%200%201-40%2040h-48a40%2040%200%200%201-40-40v-8a41.74%2041.74%200%200%201%206.9-22.48%208%208%200%200%200%201.1-7.69%2043.8%2043.8%200%200%201%20.79-33.58%2043.88%2043.88%200%200%201%2032.32%2020.06%208%208%200%200%200%206.71%203.69h32.35a8%208%200%200%200%206.74-3.69%2043.87%2043.87%200%200%201%2032.32-20.06%2043.8%2043.8%200%200%201%20.77%2033.58%208.09%208.09%200%200%200%201%207.65%2041.7%2041.7%200%200%201%207%2022.52Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-hammer{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22m251.34%20112-67.46-67.92a96.1%2096.1%200%200%200-135.77%200l-.09.09L34.25%2058.4a8%208%200%200%200%2011.49%2011.13l13.73-14.18a80%2080%200%200%201%2018.71-13.9L124.68%2088l-96%2096a16%2016%200%200%200%200%2022.63l20.69%2020.69a16%2016%200%200%200%2022.63%200l96-96%2014.34%2014.34L200%20163.3a16%2016%200%200%200%2022.63%200l28.69-28.69a16%2016%200%200%200%20.02-22.61M60.68%20216%2040%20195.31l68-68L128.68%20148Zm101.66-101.68L140%20136.67%20119.31%20116l22.35-22.35a8%208%200%200%200%200-11.32L94.32%2035a80%2080%200%200%201%2078.23%2020.41l44.22%2044.51L188%20128.66l-14.34-14.34a8%208%200%200%200-11.32%200m49%2037.66-12-12L228%20111.25l12%2012Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-list-magnifying-glass{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M32%2064a8%208%200%200%201%208-8h176a8%208%200%200%201%200%2016H40a8%208%200%200%201-8-8m8%2072h72a8%208%200%200%200%200-16H40a8%208%200%200%200%200%2016m88%2048H40a8%208%200%200%200%200%2016h88a8%208%200%200%200%200-16m109.66%2013.66a8%208%200%200%201-11.32%200L206%20177.36A40%2040%200%201%201%20217.36%20166l20.3%2020.3a8%208%200%200%201%200%2011.36M184%20168a24%2024%200%201%200-24-24%2024%2024%200%200%200%2024%2024%22%2F%3E%3C%2Fsvg%3E)}.i-ph-moon{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M233.54%20142.23a8%208%200%200%200-8-2%2088.08%2088.08%200%200%201-109.8-109.8%208%208%200%200%200-10-10%20104.84%20104.84%200%200%200-52.91%2037A104%20104%200%200%200%20136%20224a103.1%20103.1%200%200%200%2062.52-20.88%20104.84%20104.84%200%200%200%2037-52.91%208%208%200%200%200-1.98-7.98m-44.64%2048.11A88%2088%200%200%201%2065.66%2067.11a89%2089%200%200%201%2031.4-26A106%20106%200%200%200%2096%2056a104.11%20104.11%200%200%200%20104%20104%20106%20106%200%200%200%2014.92-1.06%2089%2089%200%200%201-26.02%2031.4%22%2F%3E%3C%2Fsvg%3E)}.i-ph-paper-plane-tilt{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M227.32%2028.68a16%2016%200%200%200-15.66-4.08h-.15L19.57%2082.84a16%2016%200%200%200-2.49%2029.8L102%20154l41.3%2084.87a15.86%2015.86%200%200%200%2014.44%209.13q.69%200%201.38-.06a15.88%2015.88%200%200%200%2014-11.51l58.2-191.94v-.15a16%2016%200%200%200-4-15.66m-69.49%20203.17-.05.14v-.07l-40.06-82.3%2048-48a8%208%200%200%200-11.31-11.31l-48%2048-82.33-40.06h-.07.14L216%2040Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-plus{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M224%20128a8%208%200%200%201-8%208h-80v80a8%208%200%200%201-16%200v-80H40a8%208%200%200%201%200-16h80V40a8%208%200%200%201%2016%200v80h80a8%208%200%200%201%208%208%22%2F%3E%3C%2Fsvg%3E)}.i-ph-puzzle-piece{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M220.27%20158.54a8%208%200%200%200-7.7-.46%2020%2020%200%201%201%200-36.16%208%208%200%200%200%2011.43-7.23V72a16%2016%200%200%200-16-16h-36.22a35%2035%200%200%200%20.22-4%2036.1%2036.1%200%200%200-11.36-26.24%2036%2036%200%200%200-60.55%2023.62%2036.6%2036.6%200%200%200%20.14%206.62H64a16%2016%200%200%200-16%2016v32.22a35%2035%200%200%200-4-.22%2036.12%2036.12%200%200%200-26.24%2011.36%2035.7%2035.7%200%200%200-9.69%2027%2036.08%2036.08%200%200%200%2033.31%2033.6%2035.7%2035.7%200%200%200%206.62-.14V208a16%2016%200%200%200%2016%2016h144a16%2016%200%200%200%2016-16v-42.69a8%208%200%200%200-3.73-6.77M208%20208H64v-42.69a8%208%200%200%200-11.43-7.23%2020%2020%200%201%201%200-36.16A8%208%200%200%200%2064%20114.69V72h46.69a8%208%200%200%200%207.23-11.43%2020%2020%200%201%201%2036.16%200A8%208%200%200%200%20161.31%2072H208v32.23a35.7%2035.7%200%200%200-6.62-.14A36%2036%200%200%200%20204%20176a35%2035%200%200%200%204-.22Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-shuffle{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M237.66%20178.34a8%208%200%200%201%200%2011.32l-24%2024a8%208%200%200%201-11.32-11.32L212.69%20192h-11.75a72.12%2072.12%200%200%201-58.59-30.15l-41.72-58.4A56.1%2056.1%200%200%200%2055.06%2080H32a8%208%200%200%201%200-16h23.06a72.12%2072.12%200%200%201%2058.59%2030.15l41.72%2058.4A56.1%2056.1%200%200%200%20200.94%20176h11.75l-10.35-10.34a8%208%200%200%201%2011.32-11.32ZM143%20107a8%208%200%200%200%2011.16-1.86l1.2-1.67A56.1%2056.1%200%200%201%20200.94%2080h11.75l-10.35%2010.34a8%208%200%200%200%2011.32%2011.32l24-24a8%208%200%200%200%200-11.32l-24-24a8%208%200%200%200-11.32%2011.32L212.69%2064h-11.75a72.12%2072.12%200%200%200-58.59%2030.15l-1.2%201.67A8%208%200%200%200%20143%20107m-30%2042a8%208%200%200%200-11.16%201.86l-1.2%201.67A56.1%2056.1%200%200%201%2055.06%20176H32a8%208%200%200%200%200%2016h23.06a72.12%2072.12%200%200%200%2058.59-30.15l1.2-1.67A8%208%200%200%200%20113%20149%22%2F%3E%3C%2Fsvg%3E)}.i-ph-sliders-horizontal{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M40%2088h33a32%2032%200%200%200%2062%200h81a8%208%200%200%200%200-16h-81a32%2032%200%200%200-62%200H40a8%208%200%200%200%200%2016m64-24a16%2016%200%201%201-16%2016%2016%2016%200%200%201%2016-16m112%20104h-17a32%2032%200%200%200-62%200H40a8%208%200%200%200%200%2016h97a32%2032%200%200%200%2062%200h17a8%208%200%200%200%200-16m-48%2024a16%2016%200%201%201%2016-16%2016%2016%200%200%201-16%2016%22%2F%3E%3C%2Fsvg%3E)}.i-ph-sun{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M120%2040V16a8%208%200%200%201%2016%200v24a8%208%200%200%201-16%200m72%2088a64%2064%200%201%201-64-64%2064.07%2064.07%200%200%201%2064%2064m-16%200a48%2048%200%201%200-48%2048%2048.05%2048.05%200%200%200%2048-48M58.34%2069.66a8%208%200%200%200%2011.32-11.32l-16-16a8%208%200%200%200-11.32%2011.32Zm0%20116.68-16%2016a8%208%200%200%200%2011.32%2011.32l16-16a8%208%200%200%200-11.32-11.32M192%2072a8%208%200%200%200%205.66-2.34l16-16a8%208%200%200%200-11.32-11.32l-16%2016A8%208%200%200%200%20192%2072m5.66%20114.34a8%208%200%200%200-11.32%2011.32l16%2016a8%208%200%200%200%2011.32-11.32ZM48%20128a8%208%200%200%200-8-8H16a8%208%200%200%200%200%2016h24a8%208%200%200%200%208-8m80%2080a8%208%200%200%200-8%208v24a8%208%200%200%200%2016%200v-24a8%208%200%200%200-8-8m112-88h-24a8%208%200%200%200%200%2016h24a8%208%200%200%200%200-16%22%2F%3E%3C%2Fsvg%3E)}.i-ph-translate{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22m247.15%20212.42-56-112a8%208%200%200%200-14.31%200l-21.71%2043.43A88%2088%200%200%201%20108%20126.93%20103.65%20103.65%200%200%200%20135.69%2064H160a8%208%200%200%200%200-16h-56V32a8%208%200%200%200-16%200v16H32a8%208%200%200%200%200%2016h87.63A87.76%2087.76%200%200%201%2096%20116.35a87.7%2087.7%200%200%201-19-31%208%208%200%201%200-15.08%205.34A103.6%20103.6%200%200%200%2084%20127a87.55%2087.55%200%200%201-52%2017%208%208%200%200%200%200%2016%20103.46%20103.46%200%200%200%2064-22.08%20104.2%20104.2%200%200%200%2051.44%2021.31l-26.6%2053.19a8%208%200%200%200%2014.31%207.16L148.94%20192h70.11l13.79%2027.58A8%208%200%200%200%20240%20224a8%208%200%200%200%207.15-11.58M156.94%20176%20184%20121.89%20211.05%20176Z%22%2F%3E%3C%2Fsvg%3E)}.i-ph-trash{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M216%2048h-40v-8a24%2024%200%200%200-24-24h-48a24%2024%200%200%200-24%2024v8H40a8%208%200%200%200%200%2016h8v144a16%2016%200%200%200%2016%2016h128a16%2016%200%200%200%2016-16V64h8a8%208%200%200%200%200-16M96%2040a8%208%200%200%201%208-8h48a8%208%200%200%201%208%208v8H96Zm96%20168H64V64h128Zm-80-104v64a8%208%200%200%201-16%200v-64a8%208%200%200%201%2016%200m48%200v64a8%208%200%200%201-16%200v-64a8%208%200%200%201%2016%200%22%2F%3E%3C%2Fsvg%3E)}.i-ph-warning{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M236.8%20188.09%20149.35%2036.22a24.76%2024.76%200%200%200-42.7%200L19.2%20188.09a23.51%2023.51%200%200%200%200%2023.72A24.35%2024.35%200%200%200%2040.55%20224h174.9a24.35%2024.35%200%200%200%2021.33-12.19%2023.51%2023.51%200%200%200%20.02-23.72m-13.87%2015.71a8.5%208.5%200%200%201-7.48%204.2H40.55a8.5%208.5%200%200%201-7.48-4.2%207.59%207.59%200%200%201%200-7.72l87.45-151.87a8.75%208.75%200%200%201%2015%200l87.45%20151.87a7.59%207.59%200%200%201-.04%207.72M120%20144v-40a8%208%200%200%201%2016%200v40a8%208%200%200%201-16%200m20%2036a12%2012%200%201%201-12-12%2012%2012%200%200%201%2012%2012%22%2F%3E%3C%2Fsvg%3E)}.i-ph-x{--un-icon:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221.15em%22%20height%3D%221.15em%22%20viewBox%3D%220%200%20256%20256%22%3E%3Cpath%20fill%3D%22currentColor%22%20d%3D%22M205.66%20194.34a8%208%200%200%201-11.32%2011.32L128%20139.31l-66.34%2066.35a8%208%200%200%201-11.32-11.32L116.69%20128%2050.34%2061.66a8%208%200%200%201%2011.32-11.32L128%20116.69l66.34-66.35a8%208%200%200%201%2011.32%2011.32L139.31%20128Z%22%2F%3E%3C%2Fsvg%3E)}.btn-ghost{color:color-mix(in oklab,var(--ff-muted) var(--un-text-opacity),transparent);border-color:#0000}.btn-ghost,.btn-outline{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight));--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 4);gap:calc(var(--spacing) * 2);height:calc(var(--spacing) * 9);-webkit-user-select:none;user-select:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.15s;border-width:1px;justify-content:center;align-items:center;transition-duration:.15s;display:inline-flex}.btn-outline{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent);border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent)}.btn-solid{color:color-mix(in oklab,var(--ff-bg) var(--un-text-opacity),transparent);--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 4);border-color:color-mix(in oklab,var(--ff-fg) var(--un-border-opacity),transparent);background-color:color-mix(in oklab,var(--ff-fg) var(--un-bg-opacity),transparent);gap:calc(var(--spacing) * 2);height:calc(var(--spacing) * 9);-webkit-user-select:none;user-select:none;transition-duration:var(--un-duration,var(--default-transition-duration));--un-duration:.15s;justify-content:center;align-items:center;transition-duration:.15s;display:inline-flex}.btn-solid,.input{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));border-width:1px}.input{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);--un-outline-style:none;border-color:color-mix(in oklab,var(--ff-line) var(--un-border-opacity),transparent);border-radius:var(--radius-none);width:100%;transition-duration:var(--un-duration,var(--default-transition-duration));font-feature-settings:"ss01";background-color:#0000;outline-style:none;line-height:1}.\!color-base{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent)!important}.color-base,.group:hover .group-hover\:color-base{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent)}.color-inverse{color:color-mix(in oklab,var(--ff-bg) var(--un-text-opacity),transparent)}.color-muted,.label{color:color-mix(in oklab,var(--ff-muted) var(--un-text-opacity),transparent)}.label{--un-tracking:.12em;letter-spacing:.12em;font-size:11px;font-family:var(--font-mono);text-transform:uppercase;line-height:calc(1.45 * var(--ff-lh))}.btn-ghost:hover{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent);background-color:color-mix(in oklab,var(--ff-hover) var(--un-bg-opacity),transparent)}.btn-outline:hover{color:color-mix(in oklab,var(--ff-bg) var(--un-text-opacity),transparent);border-color:color-mix(in oklab,var(--ff-fg) var(--un-border-opacity),transparent);background-color:color-mix(in oklab,var(--ff-fg) var(--un-bg-opacity),transparent)}.hover\:color-base:hover{color:color-mix(in oklab,var(--ff-fg) var(--un-text-opacity),transparent)}.hover\:color-muted:hover{color:color-mix(in oklab,var(--ff-muted) var(--un-text-opacity),transparent)}.input::placeholder{color:color-mix(in oklab,var(--ff-faint) var(--un-text-opacity),transparent)}.slider::-webkit-slider-thumb{appearance:none;border-width:1px;border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent);--un-border-style:solid;background-color:color-mix(in oklab,var(--ff-bg) var(--un-bg-opacity),transparent);width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5);box-sizing:border-box;border-style:solid;margin-top:-5px}.slider{appearance:none;height:calc(var(--spacing) * 3.5);cursor:pointer;background-color:#0000;width:100%}.slider:focus-visible{outline-style:var(--un-outline-style);outline-width:2px;outline-color:color-mix(in oklab,var(--ff-fg) var(--un-outline-opacity),transparent);outline-offset:2px}.slider::-moz-range-thumb{border-radius:var(--radius-none);background-color:color-mix(in oklab,var(--ff-bg) var(--un-bg-opacity),transparent);width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.slider::-moz-range-thumb{border-width:1px;border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent);--un-border-style:solid;box-sizing:border-box;border-style:solid}.slider::-moz-range-track{border-width:1px;border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent);--un-border-style:solid;box-sizing:border-box;border-style:solid}.slider::-moz-range-track{height:calc(var(--spacing) * 1.5)}.slider::-webkit-slider-runnable-track{border-width:1px;border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent);--un-border-style:solid;height:calc(var(--spacing) * 1.5);background:linear-gradient(var(--ff-fg),var(--ff-fg)) 0 0/calc(7px + var(--slider-fraction) * (100% - 14px)) 100% no-repeat;box-sizing:border-box;border-style:solid}.border-base{border-color:color-mix(in oklab,var(--ff-line) var(--un-border-opacity),transparent)}.border-inverse{border-color:color-mix(in oklab,var(--ff-fg) var(--un-border-opacity),transparent)}.border-strong,.hover\:border-strong:hover{border-color:color-mix(in oklab,var(--ff-line-strong) var(--un-border-opacity),transparent)}.input:focus{border-color:color-mix(in oklab,var(--ff-fg) var(--un-border-opacity),transparent)}.bg-base{background-color:color-mix(in oklab,var(--ff-bg) var(--un-bg-opacity),transparent)}.bg-inverse{background-color:color-mix(in oklab,var(--ff-fg) var(--un-bg-opacity),transparent)}.slider::-moz-range-progress{background-color:color-mix(in oklab,var(--ff-fg) var(--un-bg-opacity),transparent);height:calc(var(--spacing) * 1.5)}.hover\:bg-hover:hover{background-color:color-mix(in oklab,var(--ff-hover) var(--un-bg-opacity),transparent)}.btn-solid:hover{opacity:.85}.btn-ghost:disabled,.btn-outline:disabled,.btn-solid:disabled{opacity:.4;cursor:not-allowed}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.text-2xl{font-size:var(--text-2xl-fontSize);line-height:var(--un-leading,var(--text-2xl-lineHeight))}.text-4xl{font-size:var(--text-4xl-fontSize);line-height:var(--un-leading,var(--text-4xl-lineHeight))}.text-7xl{font-size:var(--text-7xl-fontSize);line-height:var(--un-leading,var(--text-7xl-lineHeight))}.text-base{font-size:var(--text-base-fontSize);line-height:var(--un-leading,var(--text-base-lineHeight))}.text-sm{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight))}.text-xl{font-size:var(--text-xl-fontSize);line-height:var(--un-leading,var(--text-xl-lineHeight))}.text-xs{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight))}.dark .dark\:text-white{color:color-mix(in srgb,var(--colors-white) var(--un-text-opacity),transparent)}.text-\[11px\]{font-size:11px}.text-\[15px\]{font-size:15px}.text-\[56px\]{font-size:56px}.text-amber{color:color-mix(in srgb,var(--colors-amber-DEFAULT) var(--un-text-opacity),transparent)}.text-neutral-500{color:color-mix(in srgb,var(--colors-neutral-500) var(--un-text-opacity),transparent)}.text-neutral-950{color:color-mix(in srgb,var(--colors-neutral-950) var(--un-text-opacity),transparent)}.hover\:text-\[\#00DC82\]:hover{color:color-mix(in oklab,#00dc82 var(--un-text-opacity),transparent)}.hover\:color-inherit:hover,.text-inherit{color:inherit}.tracking-\[0\.04em\]{--un-tracking:.04em;letter-spacing:.04em}.tracking-\[0\.5em\]{--un-tracking:.5em;letter-spacing:.5em}.tracking-tight{--un-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--un-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.font-medium{--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium)}.font-mono{font-family:var(--font-mono)}.font-normal{--un-font-weight:var(--fontWeight-normal);font-weight:var(--fontWeight-normal)}.font-sans{font-family:var(--font-sans)}.font-semibold{--un-font-weight:var(--fontWeight-semibold);font-weight:var(--fontWeight-semibold)}.mx-auto{margin-inline:auto}.-mb-px{margin-bottom:-1px}.-mr-px{margin-right:-1px}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.ms{margin-inline-start:calc(var(--spacing) * 4)}.mt-4{margin-top:calc(var(--spacing) * 4)}.p-0{padding:calc(var(--spacing) * 0)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px,.px-4{padding-inline:calc(var(--spacing) * 4)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing))}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing))}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.appearance-none{appearance:none}.outline,.outline-1{outline-style:var(--un-outline-style);outline-width:1px}.outline-transparent{outline-color:#0000}.focus-within\:outline-\[var\(--ff-fg\)\]:focus-within{outline-color:color-mix(in oklab,var(--ff-fg) var(--un-outline-opacity),transparent)}.focus-within\:outline-2:focus-within{outline-style:var(--un-outline-style);outline-width:2px}.hover\:outline-\[var\(--ff-line\)\]:hover{outline-color:color-mix(in oklab,var(--ff-line) var(--un-outline-opacity),transparent)}.focus\:outline-\[var\(--ff-fg\)\]:focus,.peer:focus-visible~.peer-focus-visible\:outline-\[var\(--ff-fg\)\]{outline-color:color-mix(in oklab,var(--ff-fg) var(--un-outline-opacity),transparent)}.peer:focus-visible~.peer-focus-visible\:outline-2{outline-style:var(--un-outline-style);outline-width:2px}.outline-offset-4{outline-offset:4px}.focus-within\:outline-offset-2:focus-within,.peer:focus-visible~.peer-focus-visible\:outline-offset-2{outline-offset:2px}.outline-none{--un-outline-style:none;outline-style:none}.focus\:outline-dashed:focus,.hover\:outline-dashed:hover{--un-outline-style:dashed;outline-style:dashed}.border{border-width:1px}.border-x{border-inline-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-0{border-width:0}.border-t-0{border-top-width:0}.last\:border-b-0:last-child{border-bottom-width:0}.last\:border-r-0:last-child{border-right-width:0}.rounded-none{border-radius:var(--radius-none)}.bg-\[var\(--ff-line\)\]{background-color:color-mix(in oklab,var(--ff-line) var(--un-bg-opacity),transparent)}.bg-amber\:5{background-color:color-mix(in srgb,var(--colors-amber-DEFAULT) 5%,transparent)}.bg-transparent{background-color:#0000}.bg-white{background-color:color-mix(in srgb,var(--colors-white) var(--un-bg-opacity),transparent)}.dark .dark\:bg-neutral-950{background-color:color-mix(in srgb,var(--colors-neutral-950) var(--un-bg-opacity),transparent)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.underline{text-decoration-line:underline}.underline-offset-3{text-underline-offset:3px}.flex{display:flex}.inline-flex{display:inline-flex}.flex-1{flex:1}.flex-auto{flex:auto}.shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.gap-1{gap:calc(var(--spacing))}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-x-2{-moz-column-gap:calc(var(--spacing) * 2);column-gap:calc(var(--spacing) * 2)}.gap-x-4{-moz-column-gap:calc(var(--spacing) * 4);column-gap:calc(var(--spacing) * 4)}.gap-x-6{-moz-column-gap:calc(var(--spacing) * 6);column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.grid{display:grid}.col-span-full{grid-column:1/-1}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.size-\[10px\]{width:10px;height:10px}.size-\[11px\]{width:11px;height:11px}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-full{width:100%;height:100%}.h-14{height:calc(var(--spacing) * 14)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-px{height:1px}.h1{height:calc(var(--spacing))}.h2{height:calc(var(--spacing) * 2)}.h3{height:calc(var(--spacing) * 3)}.max-h-\[32rem\]{max-height:32rem}.max-w-\[46ch\]{max-width:46ch}.max-w-\[52ch\]{max-width:52ch}.max-w-\[60ch\]{max-width:60ch}.max-w-520px{max-width:520px}.max-w-6xl{max-width:var(--container-6xl)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-h-56{min-height:calc(var(--spacing) * 56)}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-screen{min-height:100vh}.min-w-0{min-width:calc(var(--spacing) * 0)}.w-28{width:calc(var(--spacing) * 28)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-fit{width:fit-content}.w-full{width:100%}.hidden{display:none}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.pointer-events-none{pointer-events:none}.select-none{-webkit-user-select:none;user-select:none}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.ws-pre-line{white-space:pre-line}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.focus-ring:focus{--un-ring-shadow:var(--un-ring-inset,) 0 0 0 calc(1px + var(--un-ring-offset-width)) var(--un-ring-color,currentColor);box-shadow:var(--un-inset-shadow),var(--un-inset-ring-shadow),var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.transition-\[outline-color\]{transition-property:outline-color}.transition-\[outline-color\],.transition-all,.transition-colors{transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration))}.transition-all{transition-property:all}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.self-start{align-self:flex-start}.-inset-\[100vmax\]{inset:-100vmax}.inset-0{inset:calc(var(--spacing) * 0)}.-bottom-\[6px\]{bottom:-6px}.-left-\[6px\]{left:-6px}.-right-\[6px\]{right:-6px}.-top-\[6px\]{top:-6px}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-\[14px\]{left:14px}.left-\[2px\]{left:2px}.left-4{left:calc(var(--spacing) * 4)}.right-3{right:calc(var(--spacing) * 3)}.top-\[2px\]{top:2px}.top-0{top:calc(var(--spacing) * 0)}.top-3{top:calc(var(--spacing) * 3)}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.place-content-center{place-content:center}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-z-1{z-index:-1}.z-1{z-index:1}.z-10{z-index:10}.overflow-hidden{overflow:hidden}.overflow-x-clip{overflow-x:clip}.overflow-y-auto{overflow-y:auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.animate-spin{animation:1s linear infinite spin}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.isolate{isolation:isolate}.invert{--un-invert:invert(100%);filter:var(--un-blur,) var(--un-brightness,) var(--un-contrast,) var(--un-grayscale,) var(--un-hue-rotate,) var(--un-invert,) var(--un-saturate,) var(--un-sepia,) var(--un-drop-shadow,)}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal,) var(--un-slashed-zero,) var(--un-numeric-figure,) var(--un-numeric-spacing,) var(--un-numeric-fraction,)}.no-ruby{font-feature-settings:"ss01";line-height:1}.lh-1\.625{line-height:calc(1.625 * var(--ff-lh))}@supports (color:color-mix(in lab,red,red)){.dark .dark\:text-white{color:color-mix(in oklab,var(--colors-white) var(--un-text-opacity),transparent)}.text-amber{color:color-mix(in oklab,var(--colors-amber-DEFAULT) var(--un-text-opacity),transparent)}.text-neutral-500{color:color-mix(in oklab,var(--colors-neutral-500) var(--un-text-opacity),transparent)}.text-neutral-950{color:color-mix(in oklab,var(--colors-neutral-950) var(--un-text-opacity),transparent)}.bg-amber\:5{background-color:color-mix(in oklab,var(--colors-amber-DEFAULT) 5%,transparent)}.bg-white{background-color:color-mix(in oklab,var(--colors-white) var(--un-bg-opacity),transparent)}.dark .dark\:bg-neutral-950{background-color:color-mix(in oklab,var(--colors-neutral-950) var(--un-bg-opacity),transparent)}}@media (width>=40rem){.sm\:text-3xl{font-size:var(--text-3xl-fontSize);line-height:var(--un-leading,var(--text-3xl-lineHeight))}.sm\:text-\[72px\]{font-size:72px}.sm\:tracking-\[0\.12em\]{--un-tracking:.12em;letter-spacing:.12em}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:border-r{border-right-width:1px}.sm\:border-b-0{border-bottom-width:0}.sm\:inline-flex{display:inline-flex}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:grid-cols-\[1fr_2fr\]{grid-template-columns:1fr 2fr}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:inline{display:inline}.sm\:block{display:block}}@media (width>=64rem){.lg\:py-24{padding-block:calc(var(--spacing) * 24)}.lg\:border-b{border-bottom-width:1px}.lg\:border-r{border-right-width:1px}.lg\:border-b-0{border-bottom-width:0}.lg\:border-t-0{border-top-width:0}.lg\:grid-cols-\[340px_1fr\]{grid-template-columns:340px 1fr}.lg\:grid-cols-\[5fr_4fr\]{grid-template-columns:5fr 4fr}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:top-14{top:calc(var(--spacing) * 14)}.lg\:sticky{position:sticky}.lg\:z-1{z-index:1}}
@@ -1 +0,0 @@
1
- import{C as e,E as t,Ht as n,N as r,Q as i,T as a,Y as o,j as s}from"./CkUAspOr.js";import{t as c}from"./Dg3RF8xB.js";var l={lang:void 0,message:void 0,abortEarly:void 0,abortPipeEarly:void 0};function u(e){return e?{lang:e?.lang??void 0,message:e?.message,abortEarly:e?.abortEarly??void 0,abortPipeEarly:e?.abortPipeEarly??void 0}:l}function d(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 f(e,t,n,r,i){let a=i&&`input`in i?i.input:n.value,o=i?.expected??e.expects??null,s=i?.received??d(a),c={kind:e.kind,type:e.type,input:a,expected:o,received:s,message:`Invalid ${t}: ${o?`Expected ${o} but r`:`R`}eceived ${s}`,requirement:e.requirement,path:i?.path,issues:i?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},l=e.kind===`schema`,u=i?.message??e.message??(e.reference,c.lang,void 0)??(l?(c.lang,void 0):null)??r.message??(c.lang,void 0);u!==void 0&&(c.message=typeof u==`function`?u(c):u),l&&(n.typed=!1),n.issues?n.issues.push(c):n.issues=[c]}function p(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)&&t!==`__proto__`&&t!==`prototype`&&t!==`constructor`}function h(e,t){let n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??`never`}function g(e){return e[`~standard`]={version:1,vendor:`valibot`,validate:t=>e[`~run`]({value:t},u())},e}var _=class extends Error{constructor(e){super(e[0].message),this.name=`ValiError`,this.issues=e}};function v(e,t){return{kind:`validation`,type:`check`,reference:v,async:!1,expects:null,requirement:e,message:t,"~run"(e,t){return e.typed&&!this.requirement(e.value)&&f(this,`input`,e,t),e}}}function y(e){return{kind:`validation`,type:`empty`,reference:y,async:!1,expects:`0`,message:e,"~run"(e,t){return e.typed&&e.value.length>0&&f(this,`length`,e,t,{received:`${e.value.length}`}),e}}}function b(e){return{kind:`validation`,type:`integer`,reference:b,async:!1,expects:null,requirement:Number.isInteger,message:e,"~run"(e,t){return e.typed&&!this.requirement(e.value)&&f(this,`integer`,e,t),e}}}function x(e,t){return{kind:`validation`,type:`max_length`,reference:x,async:!1,expects:`<=${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&e.value.length>this.requirement&&f(this,`length`,e,t,{received:`${e.value.length}`}),e}}}function S(e,t){return{kind:`validation`,type:`max_value`,reference:S,async:!1,expects:`<=${e instanceof Date?e.toJSON():d(e)}`,requirement:e,message:t,"~run"(e,t){return e.typed&&!(e.value<=this.requirement)&&f(this,`value`,e,t,{received:e.value instanceof Date?e.value.toJSON():d(e.value)}),e}}}function C(e,t){return{kind:`validation`,type:`min_length`,reference:C,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&e.value.length<this.requirement&&f(this,`length`,e,t,{received:`${e.value.length}`}),e}}}function w(e,t){return{kind:`validation`,type:`min_value`,reference:w,async:!1,expects:`>=${e instanceof Date?e.toJSON():d(e)}`,requirement:e,message:t,"~run"(e,t){return e.typed&&!(e.value>=this.requirement)&&f(this,`value`,e,t,{received:e.value instanceof Date?e.value.toJSON():d(e.value)}),e}}}function T(e){return{kind:`validation`,type:`non_empty`,reference:T,async:!1,expects:`!0`,message:e,"~run"(e,t){return e.typed&&e.value.length===0&&f(this,`length`,e,t,{received:`0`}),e}}}function E(e,t){return{kind:`validation`,type:`regex`,reference:E,async:!1,expects:`${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&!this.requirement.test(e.value)&&f(this,`format`,e,t),e}}}function D(e){return{kind:`transformation`,type:`transform`,reference:D,async:!1,operation:e,"~run"(e){return e.value=this.operation(e.value),e}}}function O(){return{kind:`transformation`,type:`trim`,reference:O,async:!1,"~run"(e){return e.value=e.value.trim(),e}}}function k(e,t,n){return typeof e.fallback==`function`?e.fallback(t,n):e.fallback}function A(e,t,n){return typeof e.default==`function`?e.default(t,n):e.default}function j(e,t){return g({kind:`schema`,type:`array`,reference:j,expects:`Array`,async:!1,item:e,message:t,"~run"(e,t){let n=e.value;if(Array.isArray(n)){e.typed=!0,e.value=[];for(let r=0;r<n.length;r++){let i=n[r],a=this.item[`~run`]({value:i},t);if(a.issues){let o={type:`array`,origin:`value`,input:n,key:r,value:i};for(let t of a.issues)t.path?t.path.unshift(o):t.path=[o],e.issues?.push(t);if(e.issues||=a.issues,t.abortEarly){e.typed=!1;break}}a.typed||(e.typed=!1),e.value.push(a.value)}}else f(this,`type`,e,t);return e}})}function M(e){return g({kind:`schema`,type:`boolean`,reference:M,expects:`boolean`,async:!1,message:e,"~run"(e,t){return typeof e.value==`boolean`?e.typed=!0:f(this,`type`,e,t),e}})}function N(e,t){return g({kind:`schema`,type:`custom`,reference:N,expects:`unknown`,async:!1,check:e,message:t,"~run"(e,t){return this.check(e.value)?e.typed=!0:f(this,`type`,e,t),e}})}function P(e,t){return g({kind:`schema`,type:`literal`,reference:P,expects:d(e),async:!1,literal:e,message:t,"~run"(e,t){return p(e.value,this.literal)?e.typed=!0:f(this,`type`,e,t),e}})}function F(e){return g({kind:`schema`,type:`number`,reference:F,expects:`number`,async:!1,message:e,"~run"(e,t){return typeof e.value==`number`&&!isNaN(e.value)?e.typed=!0:f(this,`type`,e,t),e}})}function I(e,t){return g({kind:`schema`,type:`object`,reference:I,expects:`Object`,async:!1,entries:e,message:t,"~run"(e,t){let n=e.value;if(n&&typeof n==`object`){e.typed=!0,e.value={};for(let r in this.entries){let i=this.entries[r];if(r in n||(i.type===`exact_optional`||i.type===`optional`||i.type===`nullish`)&&i.default!==void 0){let a=r in n?n[r]:A(i),o=i[`~run`]({value:a},t);if(o.issues){let i={type:`object`,origin:`value`,input:n,key:r,value:a};for(let t of o.issues)t.path?t.path.unshift(i):t.path=[i],e.issues?.push(t);if(e.issues||=o.issues,t.abortEarly){e.typed=!1;break}}o.typed||(e.typed=!1),e.value[r]=o.value}else if(i.fallback!==void 0)e.value[r]=k(i);else if(i.type!==`exact_optional`&&i.type!==`optional`&&i.type!==`nullish`&&(f(this,`key`,e,t,{input:void 0,expected:`"${r}"`,path:[{type:`object`,origin:`key`,input:n,key:r,value:n[r]}]}),t.abortEarly))break}}else f(this,`type`,e,t);return e}})}function L(e,t){return g({kind:`schema`,type:`optional`,reference:L,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:t,"~run"(e,t){return e.value===void 0&&(this.default!==void 0&&(e.value=A(this,e,t)),e.value===void 0)?(e.typed=!0,e):this.wrapped[`~run`](e,t)}})}function R(e,t){return g({kind:`schema`,type:`picklist`,reference:R,expects:h(e.map(d),`|`),async:!1,options:e,message:t,"~run"(e,t){return this.options.includes(e.value)?e.typed=!0:f(this,`type`,e,t),e}})}function z(e,t,n){return g({kind:`schema`,type:`record`,reference:z,expects:`Object`,async:!1,key:e,value:t,message:n,"~run"(e,t){let n=e.value;if(n&&typeof n==`object`){e.typed=!0,e.value={};for(let r in n)if(m(n,r)){let i=n[r],a=this.key[`~run`]({value:r},t);if(a.issues){let o={type:`object`,origin:`key`,input:n,key:r,value:i};for(let t of a.issues)t.path=[o],e.issues?.push(t);if(e.issues||=a.issues,t.abortEarly){e.typed=!1;break}}let o=this.value[`~run`]({value:i},t);if(o.issues){let a={type:`object`,origin:`value`,input:n,key:r,value:i};for(let t of o.issues)t.path?t.path.unshift(a):t.path=[a],e.issues?.push(t);if(e.issues||=o.issues,t.abortEarly){e.typed=!1;break}}(!a.typed||!o.typed)&&(e.typed=!1),a.typed&&(e.value[a.value]=o.value)}}else f(this,`type`,e,t);return e}})}function B(e){return g({kind:`schema`,type:`string`,reference:B,expects:`string`,async:!1,message:e,"~run"(e,t){return typeof e.value==`string`?e.typed=!0:f(this,`type`,e,t),e}})}function V(e,t,n){let r=e[`~run`]({value:t},u(n));if(r.issues)throw new _(r.issues);return r.value}function H(...e){return g({...e[0],pipe:e,"~run"(t,n){for(let r of e)if(r.kind!==`metadata`){if(t.issues&&(r.kind===`schema`||r.kind===`transformation`)){t.typed=!1;break}(!t.issues||!n.abortEarly&&!n.abortPipeEarly)&&(t=r[`~run`](t,n))}return t}})}function U(e,t,n){let r=e[`~run`]({value:t},u(n));return{typed:r.typed,success:!r.issues,output:r.value,issues:r.issues}}var W={class:`relative border-t border-base`},G={key:0,class:`flex items-baseline gap-3 border-b border-base px-6 py-3`},K={key:0,class:`label`},q={class:`label color-base`},J=Object.assign(r({__name:`UiSection`,props:{index:{},title:{}},setup(r){return(l,u)=>{let d=c;return o(),t(`section`,W,[s(d,{class:`-left-[6px] -top-[6px]`}),s(d,{class:`-right-[6px] -top-[6px]`}),r.title?(o(),t(`header`,G,[r.index?(o(),t(`span`,K,n(r.index),1)):a(``,!0),e(`h2`,q,n(r.title),1),i(l.$slots,`aside`)])):a(``,!0),i(l.$slots,`default`)])}}}),{__name:`UiSection`});export{B as C,U as S,O as T,V as _,N as a,z as b,P as c,C as d,w as f,L as g,I as h,v as i,x as l,F as m,j as n,y as o,T as p,M as r,b as s,J as t,S as u,R as v,D as w,E as x,H as y};