@valbuild/ui 0.48.0 → 0.49.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.
@@ -46777,27 +46777,32 @@ function requireReactDom_production_min() {
46777
46777
  reactDom_production_min.version = "18.2.0-next-9e3b772b8-20220608";
46778
46778
  return reactDom_production_min;
46779
46779
  }
46780
- function checkDCE() {
46781
- if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") {
46782
- return;
46783
- }
46784
- if (process.env.NODE_ENV !== "production") {
46785
- throw new Error("^_^");
46780
+ var hasRequiredReactDom;
46781
+ function requireReactDom() {
46782
+ if (hasRequiredReactDom)
46783
+ return reactDom.exports;
46784
+ hasRequiredReactDom = 1;
46785
+ function checkDCE() {
46786
+ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") {
46787
+ return;
46788
+ }
46789
+ if (process.env.NODE_ENV !== "production") {
46790
+ throw new Error("^_^");
46791
+ }
46792
+ try {
46793
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
46794
+ } catch (err2) {
46795
+ console.error(err2);
46796
+ }
46786
46797
  }
46787
- try {
46788
- __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
46789
- } catch (err2) {
46790
- console.error(err2);
46798
+ if (process.env.NODE_ENV === "production") {
46799
+ checkDCE();
46800
+ reactDom.exports = requireReactDom_production_min();
46801
+ } else {
46802
+ reactDom.exports = requireReactDom_development();
46791
46803
  }
46804
+ return reactDom.exports;
46792
46805
  }
46793
- if (process.env.NODE_ENV === "production") {
46794
- checkDCE();
46795
- reactDom.exports = requireReactDom_production_min();
46796
- } else {
46797
- reactDom.exports = requireReactDom_development();
46798
- }
46799
- var reactDomExports = reactDom.exports;
46800
- const $7SXl2$reactdom = /* @__PURE__ */ getDefaultExportFromCjs(reactDomExports);
46801
46806
  var LexicalDragon_prod = {};
46802
46807
  var hasRequiredLexicalDragon_prod;
46803
46808
  function requireLexicalDragon_prod() {
@@ -48930,7 +48935,7 @@ function requireLexicalRichTextPlugin_prod() {
48930
48935
  if (hasRequiredLexicalRichTextPlugin_prod)
48931
48936
  return LexicalRichTextPlugin_prod;
48932
48937
  hasRequiredLexicalRichTextPlugin_prod = 1;
48933
- var b = requireLexicalComposerContext(), g = requireUseLexicalEditable(), l = React__default, m = requireLexicalText(), n = requireLexicalUtils(), p = reactDomExports, t = requireLexicalDragon(), u = LexicalRichText_1, v = "undefined" !== typeof window && "undefined" !== typeof window.document && "undefined" !== typeof window.document.createElement ? l.useLayoutEffect : l.useEffect;
48938
+ var b = requireLexicalComposerContext(), g = requireUseLexicalEditable(), l = React__default, m = requireLexicalText(), n = requireLexicalUtils(), p = requireReactDom(), t = requireLexicalDragon(), u = LexicalRichText_1, v = "undefined" !== typeof window && "undefined" !== typeof window.document && "undefined" !== typeof window.document.createElement ? l.useLayoutEffect : l.useEffect;
48934
48939
  function w(a) {
48935
48940
  return a.getEditorState().read(m.$canShowPlaceholderCurry(a.isComposing()));
48936
48941
  }
@@ -48997,7 +49002,7 @@ function requireLexicalRichTextPlugin_dev() {
48997
49002
  var React2 = React__default;
48998
49003
  var text = requireLexicalText();
48999
49004
  var utils2 = requireLexicalUtils();
49000
- var reactDom2 = reactDomExports;
49005
+ var reactDom2 = requireReactDom();
49001
49006
  var dragon = requireLexicalDragon();
49002
49007
  var richText = LexicalRichText_1;
49003
49008
  const CAN_USE_DOM = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
@@ -50863,16 +50868,16 @@ new Sym("()");
50863
50868
  var VAL_EXTENSION = "_type";
50864
50869
  var FILE_REF_PROP = "_ref";
50865
50870
  function convertFileSource(src) {
50866
- var _src$metadata2;
50871
+ var _src$metadata3, _src$metadata4;
50867
50872
  if (!src[FILE_REF_PROP].startsWith("/public")) {
50868
- var _src$metadata;
50873
+ var _src$metadata, _src$metadata2;
50869
50874
  return {
50870
- url: src[FILE_REF_PROP] + "?sha256=".concat((_src$metadata = src.metadata) === null || _src$metadata === void 0 ? void 0 : _src$metadata.sha256),
50875
+ url: src[FILE_REF_PROP] + ((_src$metadata = src.metadata) !== null && _src$metadata !== void 0 && _src$metadata.sha256 ? "?sha256=".concat((_src$metadata2 = src.metadata) === null || _src$metadata2 === void 0 ? void 0 : _src$metadata2.sha256) : ""),
50871
50876
  metadata: src.metadata
50872
50877
  };
50873
50878
  }
50874
50879
  return {
50875
- url: src[FILE_REF_PROP].slice("/public".length) + "?sha256=".concat((_src$metadata2 = src.metadata) === null || _src$metadata2 === void 0 ? void 0 : _src$metadata2.sha256),
50880
+ url: src[FILE_REF_PROP].slice("/public".length) + ((_src$metadata3 = src.metadata) !== null && _src$metadata3 !== void 0 && _src$metadata3.sha256 ? "?sha256=".concat((_src$metadata4 = src.metadata) === null || _src$metadata4 === void 0 ? void 0 : _src$metadata4.sha256) : ""),
50876
50881
  metadata: src.metadata
50877
50882
  };
50878
50883
  }
@@ -54463,7 +54468,701 @@ function _nonIterableSpread() {
54463
54468
  function _toConsumableArray(arr) {
54464
54469
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
54465
54470
  }
54466
- var MIME_TYPE_REGEX = /^data:(image\/(png|jpeg|jpg|gif|webp|bmp|tiff|ico|svg\+xml));base64,/;
54471
+ var EXT_TO_MIME_TYPES = {
54472
+ x3d: "application/vnd.hzn-3d-crossword",
54473
+ "3gp": "video/3gpp",
54474
+ "3g2": "video/3gpp2",
54475
+ mseq: "application/vnd.mseq",
54476
+ pwn: "application/vnd.3m.post-it-notes",
54477
+ plb: "application/vnd.3gpp.pic-bw-large",
54478
+ psb: "application/vnd.3gpp.pic-bw-small",
54479
+ pvb: "application/vnd.3gpp.pic-bw-var",
54480
+ tcap: "application/vnd.3gpp2.tcap",
54481
+ "7z": "application/x-7z-compressed",
54482
+ abw: "application/x-abiword",
54483
+ ace: "application/x-ace-compressed",
54484
+ acc: "application/vnd.americandynamics.acc",
54485
+ acu: "application/vnd.acucobol",
54486
+ atc: "application/vnd.acucorp",
54487
+ adp: "audio/adpcm",
54488
+ aab: "application/x-authorware-bin",
54489
+ aam: "application/x-authorware-map",
54490
+ aas: "application/x-authorware-seg",
54491
+ air: "application/vnd.adobe.air-application-installer-package+zip",
54492
+ swf: "application/x-shockwave-flash",
54493
+ fxp: "application/vnd.adobe.fxp",
54494
+ pdf: "application/pdf",
54495
+ ppd: "application/vnd.cups-ppd",
54496
+ dir: "application/x-director",
54497
+ xdp: "application/vnd.adobe.xdp+xml",
54498
+ xfdf: "application/vnd.adobe.xfdf",
54499
+ aac: "audio/x-aac",
54500
+ ahead: "application/vnd.ahead.space",
54501
+ azf: "application/vnd.airzip.filesecure.azf",
54502
+ azs: "application/vnd.airzip.filesecure.azs",
54503
+ azw: "application/vnd.amazon.ebook",
54504
+ ami: "application/vnd.amiga.ami",
54505
+ "N/A": "application/andrew-inset",
54506
+ apk: "application/vnd.android.package-archive",
54507
+ cii: "application/vnd.anser-web-certificate-issue-initiation",
54508
+ fti: "application/vnd.anser-web-funds-transfer-initiation",
54509
+ atx: "application/vnd.antix.game-component",
54510
+ dmg: "application/x-apple-diskimage",
54511
+ mpkg: "application/vnd.apple.installer+xml",
54512
+ aw: "application/applixware",
54513
+ mp3: "audio/mpeg",
54514
+ les: "application/vnd.hhe.lesson-player",
54515
+ swi: "application/vnd.aristanetworks.swi",
54516
+ s: "text/x-asm",
54517
+ atomcat: "application/atomcat+xml",
54518
+ atomsvc: "application/atomsvc+xml",
54519
+ atom: "application/atom+xml",
54520
+ ac: "application/pkix-attr-cert",
54521
+ aif: "audio/x-aiff",
54522
+ avi: "video/x-msvideo",
54523
+ aep: "application/vnd.audiograph",
54524
+ dxf: "image/vnd.dxf",
54525
+ dwf: "model/vnd.dwf",
54526
+ par: "text/plain-bas",
54527
+ bcpio: "application/x-bcpio",
54528
+ bin: "application/octet-stream",
54529
+ bmp: "image/bmp",
54530
+ torrent: "application/x-bittorrent",
54531
+ cod: "application/vnd.rim.cod",
54532
+ mpm: "application/vnd.blueice.multipass",
54533
+ bmi: "application/vnd.bmi",
54534
+ sh: "application/x-sh",
54535
+ btif: "image/prs.btif",
54536
+ rep: "application/vnd.businessobjects",
54537
+ bz: "application/x-bzip",
54538
+ bz2: "application/x-bzip2",
54539
+ csh: "application/x-csh",
54540
+ c: "text/x-c",
54541
+ cdxml: "application/vnd.chemdraw+xml",
54542
+ css: "text/css",
54543
+ cdx: "chemical/x-cdx",
54544
+ cml: "chemical/x-cml",
54545
+ csml: "chemical/x-csml",
54546
+ cdbcmsg: "application/vnd.contact.cmsg",
54547
+ cla: "application/vnd.claymore",
54548
+ c4g: "application/vnd.clonk.c4group",
54549
+ sub: "image/vnd.dvb.subtitle",
54550
+ cdmia: "application/cdmi-capability",
54551
+ cdmic: "application/cdmi-container",
54552
+ cdmid: "application/cdmi-domain",
54553
+ cdmio: "application/cdmi-object",
54554
+ cdmiq: "application/cdmi-queue",
54555
+ c11amc: "application/vnd.cluetrust.cartomobile-config",
54556
+ c11amz: "application/vnd.cluetrust.cartomobile-config-pkg",
54557
+ ras: "image/x-cmu-raster",
54558
+ dae: "model/vnd.collada+xml",
54559
+ csv: "text/csv",
54560
+ cpt: "application/mac-compactpro",
54561
+ wmlc: "application/vnd.wap.wmlc",
54562
+ cgm: "image/cgm",
54563
+ ice: "x-conference/x-cooltalk",
54564
+ cmx: "image/x-cmx",
54565
+ xar: "application/vnd.xara",
54566
+ cmc: "application/vnd.cosmocaller",
54567
+ cpio: "application/x-cpio",
54568
+ clkx: "application/vnd.crick.clicker",
54569
+ clkk: "application/vnd.crick.clicker.keyboard",
54570
+ clkp: "application/vnd.crick.clicker.palette",
54571
+ clkt: "application/vnd.crick.clicker.template",
54572
+ clkw: "application/vnd.crick.clicker.wordbank",
54573
+ wbs: "application/vnd.criticaltools.wbs+xml",
54574
+ cryptonote: "application/vnd.rig.cryptonote",
54575
+ cif: "chemical/x-cif",
54576
+ cmdf: "chemical/x-cmdf",
54577
+ cu: "application/cu-seeme",
54578
+ cww: "application/prs.cww",
54579
+ curl: "text/vnd.curl",
54580
+ dcurl: "text/vnd.curl.dcurl",
54581
+ mcurl: "text/vnd.curl.mcurl",
54582
+ scurl: "text/vnd.curl.scurl",
54583
+ car: "application/vnd.curl.car",
54584
+ pcurl: "application/vnd.curl.pcurl",
54585
+ cmp: "application/vnd.yellowriver-custom-menu",
54586
+ dssc: "application/dssc+der",
54587
+ xdssc: "application/dssc+xml",
54588
+ deb: "application/x-debian-package",
54589
+ uva: "audio/vnd.dece.audio",
54590
+ uvi: "image/vnd.dece.graphic",
54591
+ uvh: "video/vnd.dece.hd",
54592
+ uvm: "video/vnd.dece.mobile",
54593
+ uvu: "video/vnd.uvvu.mp4",
54594
+ uvp: "video/vnd.dece.pd",
54595
+ uvs: "video/vnd.dece.sd",
54596
+ uvv: "video/vnd.dece.video",
54597
+ dvi: "application/x-dvi",
54598
+ seed: "application/vnd.fdsn.seed",
54599
+ dtb: "application/x-dtbook+xml",
54600
+ res: "application/x-dtbresource+xml",
54601
+ ait: "application/vnd.dvb.ait",
54602
+ svc: "application/vnd.dvb.service",
54603
+ eol: "audio/vnd.digital-winds",
54604
+ djvu: "image/vnd.djvu",
54605
+ dtd: "application/xml-dtd",
54606
+ mlp: "application/vnd.dolby.mlp",
54607
+ wad: "application/x-doom",
54608
+ dpg: "application/vnd.dpgraph",
54609
+ dra: "audio/vnd.dra",
54610
+ dfac: "application/vnd.dreamfactory",
54611
+ dts: "audio/vnd.dts",
54612
+ dtshd: "audio/vnd.dts.hd",
54613
+ dwg: "image/vnd.dwg",
54614
+ geo: "application/vnd.dynageo",
54615
+ es: "application/ecmascript",
54616
+ mag: "application/vnd.ecowin.chart",
54617
+ mmr: "image/vnd.fujixerox.edmics-mmr",
54618
+ rlc: "image/vnd.fujixerox.edmics-rlc",
54619
+ exi: "application/exi",
54620
+ mgz: "application/vnd.proteus.magazine",
54621
+ epub: "application/epub+zip",
54622
+ eml: "message/rfc822",
54623
+ nml: "application/vnd.enliven",
54624
+ xpr: "application/vnd.is-xpr",
54625
+ xif: "image/vnd.xiff",
54626
+ xfdl: "application/vnd.xfdl",
54627
+ emma: "application/emma+xml",
54628
+ ez2: "application/vnd.ezpix-album",
54629
+ ez3: "application/vnd.ezpix-package",
54630
+ fst: "image/vnd.fst",
54631
+ fvt: "video/vnd.fvt",
54632
+ fbs: "image/vnd.fastbidsheet",
54633
+ fe_launch: "application/vnd.denovo.fcselayout-link",
54634
+ f4v: "video/x-f4v",
54635
+ flv: "video/x-flv",
54636
+ fpx: "image/vnd.fpx",
54637
+ npx: "image/vnd.net-fpx",
54638
+ flx: "text/vnd.fmi.flexstor",
54639
+ fli: "video/x-fli",
54640
+ ftc: "application/vnd.fluxtime.clip",
54641
+ fdf: "application/vnd.fdf",
54642
+ f: "text/x-fortran",
54643
+ mif: "application/vnd.mif",
54644
+ fm: "application/vnd.framemaker",
54645
+ fh: "image/x-freehand",
54646
+ fsc: "application/vnd.fsc.weblaunch",
54647
+ fnc: "application/vnd.frogans.fnc",
54648
+ ltf: "application/vnd.frogans.ltf",
54649
+ ddd: "application/vnd.fujixerox.ddd",
54650
+ xdw: "application/vnd.fujixerox.docuworks",
54651
+ xbd: "application/vnd.fujixerox.docuworks.binder",
54652
+ oas: "application/vnd.fujitsu.oasys",
54653
+ oa2: "application/vnd.fujitsu.oasys2",
54654
+ oa3: "application/vnd.fujitsu.oasys3",
54655
+ fg5: "application/vnd.fujitsu.oasysgp",
54656
+ bh2: "application/vnd.fujitsu.oasysprs",
54657
+ spl: "application/x-futuresplash",
54658
+ fzs: "application/vnd.fuzzysheet",
54659
+ g3: "image/g3fax",
54660
+ gmx: "application/vnd.gmx",
54661
+ gtw: "model/vnd.gtw",
54662
+ txd: "application/vnd.genomatix.tuxedo",
54663
+ ggb: "application/vnd.geogebra.file",
54664
+ ggt: "application/vnd.geogebra.tool",
54665
+ gdl: "model/vnd.gdl",
54666
+ gex: "application/vnd.geometry-explorer",
54667
+ gxt: "application/vnd.geonext",
54668
+ g2w: "application/vnd.geoplan",
54669
+ g3w: "application/vnd.geospace",
54670
+ gsf: "application/x-font-ghostscript",
54671
+ bdf: "application/x-font-bdf",
54672
+ gtar: "application/x-gtar",
54673
+ texinfo: "application/x-texinfo",
54674
+ gnumeric: "application/x-gnumeric",
54675
+ kml: "application/vnd.google-earth.kml+xml",
54676
+ kmz: "application/vnd.google-earth.kmz",
54677
+ gqf: "application/vnd.grafeq",
54678
+ gif: "image/gif",
54679
+ gv: "text/vnd.graphviz",
54680
+ gac: "application/vnd.groove-account",
54681
+ ghf: "application/vnd.groove-help",
54682
+ gim: "application/vnd.groove-identity-message",
54683
+ grv: "application/vnd.groove-injector",
54684
+ gtm: "application/vnd.groove-tool-message",
54685
+ tpl: "application/vnd.groove-tool-template",
54686
+ vcg: "application/vnd.groove-vcard",
54687
+ h261: "video/h261",
54688
+ h263: "video/h263",
54689
+ h264: "video/h264",
54690
+ hpid: "application/vnd.hp-hpid",
54691
+ hps: "application/vnd.hp-hps",
54692
+ hdf: "application/x-hdf",
54693
+ rip: "audio/vnd.rip",
54694
+ hbci: "application/vnd.hbci",
54695
+ jlt: "application/vnd.hp-jlyt",
54696
+ pcl: "application/vnd.hp-pcl",
54697
+ hpgl: "application/vnd.hp-hpgl",
54698
+ hvs: "application/vnd.yamaha.hv-script",
54699
+ hvd: "application/vnd.yamaha.hv-dic",
54700
+ hvp: "application/vnd.yamaha.hv-voice",
54701
+ "sfd-hdstx": "application/vnd.hydrostatix.sof-data",
54702
+ stk: "application/hyperstudio",
54703
+ hal: "application/vnd.hal+xml",
54704
+ html: "text/html",
54705
+ irm: "application/vnd.ibm.rights-management",
54706
+ sc: "application/vnd.ibm.secure-container",
54707
+ ics: "text/calendar",
54708
+ icc: "application/vnd.iccprofile",
54709
+ ico: "image/x-icon",
54710
+ igl: "application/vnd.igloader",
54711
+ ief: "image/ief",
54712
+ ivp: "application/vnd.immervision-ivp",
54713
+ ivu: "application/vnd.immervision-ivu",
54714
+ rif: "application/reginfo+xml",
54715
+ "3dml": "text/vnd.in3d.3dml",
54716
+ spot: "text/vnd.in3d.spot",
54717
+ igs: "model/iges",
54718
+ i2g: "application/vnd.intergeo",
54719
+ cdy: "application/vnd.cinderella",
54720
+ xpw: "application/vnd.intercon.formnet",
54721
+ fcs: "application/vnd.isac.fcs",
54722
+ ipfix: "application/ipfix",
54723
+ cer: "application/pkix-cert",
54724
+ pki: "application/pkixcmp",
54725
+ crl: "application/pkix-crl",
54726
+ pkipath: "application/pkix-pkipath",
54727
+ igm: "application/vnd.insors.igm",
54728
+ rcprofile: "application/vnd.ipunplugged.rcprofile",
54729
+ irp: "application/vnd.irepository.package+xml",
54730
+ jad: "text/vnd.sun.j2me.app-descriptor",
54731
+ jar: "application/java-archive",
54732
+ "class": "application/java-vm",
54733
+ jnlp: "application/x-java-jnlp-file",
54734
+ ser: "application/java-serialized-object",
54735
+ java: "text/x-java-source,java",
54736
+ js: "application/javascript",
54737
+ json: "application/json",
54738
+ joda: "application/vnd.joost.joda-archive",
54739
+ jpm: "video/jpm",
54740
+ jpeg: "image/jpeg",
54741
+ jpg: "image/jpeg",
54742
+ pjpeg: "image/pjpeg",
54743
+ jpgv: "video/jpeg",
54744
+ ktz: "application/vnd.kahootz",
54745
+ mmd: "application/vnd.chipnuts.karaoke-mmd",
54746
+ karbon: "application/vnd.kde.karbon",
54747
+ chrt: "application/vnd.kde.kchart",
54748
+ kfo: "application/vnd.kde.kformula",
54749
+ flw: "application/vnd.kde.kivio",
54750
+ kon: "application/vnd.kde.kontour",
54751
+ kpr: "application/vnd.kde.kpresenter",
54752
+ ksp: "application/vnd.kde.kspread",
54753
+ kwd: "application/vnd.kde.kword",
54754
+ htke: "application/vnd.kenameaapp",
54755
+ kia: "application/vnd.kidspiration",
54756
+ kne: "application/vnd.kinar",
54757
+ sse: "application/vnd.kodak-descriptor",
54758
+ lasxml: "application/vnd.las.las+xml",
54759
+ latex: "application/x-latex",
54760
+ lbd: "application/vnd.llamagraphics.life-balance.desktop",
54761
+ lbe: "application/vnd.llamagraphics.life-balance.exchange+xml",
54762
+ jam: "application/vnd.jam",
54763
+ "123": "application/vnd.lotus-1-2-3",
54764
+ apr: "application/vnd.lotus-approach",
54765
+ pre: "application/vnd.lotus-freelance",
54766
+ nsf: "application/vnd.lotus-notes",
54767
+ org: "application/vnd.lotus-organizer",
54768
+ scm: "application/vnd.lotus-screencam",
54769
+ lwp: "application/vnd.lotus-wordpro",
54770
+ lvp: "audio/vnd.lucent.voice",
54771
+ m3u: "audio/x-mpegurl",
54772
+ m4v: "video/x-m4v",
54773
+ hqx: "application/mac-binhex40",
54774
+ portpkg: "application/vnd.macports.portpkg",
54775
+ mgp: "application/vnd.osgeo.mapguide.package",
54776
+ mrc: "application/marc",
54777
+ mrcx: "application/marcxml+xml",
54778
+ mxf: "application/mxf",
54779
+ nbp: "application/vnd.wolfram.player",
54780
+ ma: "application/mathematica",
54781
+ mathml: "application/mathml+xml",
54782
+ mbox: "application/mbox",
54783
+ mc1: "application/vnd.medcalcdata",
54784
+ mscml: "application/mediaservercontrol+xml",
54785
+ cdkey: "application/vnd.mediastation.cdkey",
54786
+ mwf: "application/vnd.mfer",
54787
+ mfm: "application/vnd.mfmp",
54788
+ msh: "model/mesh",
54789
+ mads: "application/mads+xml",
54790
+ mets: "application/mets+xml",
54791
+ mods: "application/mods+xml",
54792
+ meta4: "application/metalink4+xml",
54793
+ mcd: "application/vnd.mcd",
54794
+ flo: "application/vnd.micrografx.flo",
54795
+ igx: "application/vnd.micrografx.igx",
54796
+ es3: "application/vnd.eszigno3+xml",
54797
+ mdb: "application/x-msaccess",
54798
+ asf: "video/x-ms-asf",
54799
+ exe: "application/x-msdownload",
54800
+ cil: "application/vnd.ms-artgalry",
54801
+ cab: "application/vnd.ms-cab-compressed",
54802
+ ims: "application/vnd.ms-ims",
54803
+ application: "application/x-ms-application",
54804
+ clp: "application/x-msclip",
54805
+ mdi: "image/vnd.ms-modi",
54806
+ eot: "application/vnd.ms-fontobject",
54807
+ xls: "application/vnd.ms-excel",
54808
+ xlam: "application/vnd.ms-excel.addin.macroenabled.12",
54809
+ xlsb: "application/vnd.ms-excel.sheet.binary.macroenabled.12",
54810
+ xltm: "application/vnd.ms-excel.template.macroenabled.12",
54811
+ xlsm: "application/vnd.ms-excel.sheet.macroenabled.12",
54812
+ chm: "application/vnd.ms-htmlhelp",
54813
+ crd: "application/x-mscardfile",
54814
+ lrm: "application/vnd.ms-lrm",
54815
+ mvb: "application/x-msmediaview",
54816
+ mny: "application/x-msmoney",
54817
+ pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
54818
+ sldx: "application/vnd.openxmlformats-officedocument.presentationml.slide",
54819
+ ppsx: "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
54820
+ potx: "application/vnd.openxmlformats-officedocument.presentationml.template",
54821
+ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
54822
+ xltx: "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
54823
+ docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
54824
+ dotx: "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
54825
+ obd: "application/x-msbinder",
54826
+ thmx: "application/vnd.ms-officetheme",
54827
+ onetoc: "application/onenote",
54828
+ pya: "audio/vnd.ms-playready.media.pya",
54829
+ pyv: "video/vnd.ms-playready.media.pyv",
54830
+ ppt: "application/vnd.ms-powerpoint",
54831
+ ppam: "application/vnd.ms-powerpoint.addin.macroenabled.12",
54832
+ sldm: "application/vnd.ms-powerpoint.slide.macroenabled.12",
54833
+ pptm: "application/vnd.ms-powerpoint.presentation.macroenabled.12",
54834
+ ppsm: "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
54835
+ potm: "application/vnd.ms-powerpoint.template.macroenabled.12",
54836
+ mpp: "application/vnd.ms-project",
54837
+ pub: "application/x-mspublisher",
54838
+ scd: "application/x-msschedule",
54839
+ xap: "application/x-silverlight-app",
54840
+ stl: "application/vnd.ms-pki.stl",
54841
+ cat: "application/vnd.ms-pki.seccat",
54842
+ vsd: "application/vnd.visio",
54843
+ vsdx: "application/vnd.visio2013",
54844
+ wm: "video/x-ms-wm",
54845
+ wma: "audio/x-ms-wma",
54846
+ wax: "audio/x-ms-wax",
54847
+ wmx: "video/x-ms-wmx",
54848
+ wmd: "application/x-ms-wmd",
54849
+ wpl: "application/vnd.ms-wpl",
54850
+ wmz: "application/x-ms-wmz",
54851
+ wmv: "video/x-ms-wmv",
54852
+ wvx: "video/x-ms-wvx",
54853
+ wmf: "application/x-msmetafile",
54854
+ trm: "application/x-msterminal",
54855
+ doc: "application/msword",
54856
+ docm: "application/vnd.ms-word.document.macroenabled.12",
54857
+ dotm: "application/vnd.ms-word.template.macroenabled.12",
54858
+ wri: "application/x-mswrite",
54859
+ wps: "application/vnd.ms-works",
54860
+ xbap: "application/x-ms-xbap",
54861
+ xps: "application/vnd.ms-xpsdocument",
54862
+ mid: "audio/midi",
54863
+ mpy: "application/vnd.ibm.minipay",
54864
+ afp: "application/vnd.ibm.modcap",
54865
+ rms: "application/vnd.jcp.javame.midlet-rms",
54866
+ tmo: "application/vnd.tmobile-livetv",
54867
+ prc: "application/x-mobipocket-ebook",
54868
+ mbk: "application/vnd.mobius.mbk",
54869
+ dis: "application/vnd.mobius.dis",
54870
+ plc: "application/vnd.mobius.plc",
54871
+ mqy: "application/vnd.mobius.mqy",
54872
+ msl: "application/vnd.mobius.msl",
54873
+ txf: "application/vnd.mobius.txf",
54874
+ daf: "application/vnd.mobius.daf",
54875
+ fly: "text/vnd.fly",
54876
+ mpc: "application/vnd.mophun.certificate",
54877
+ mpn: "application/vnd.mophun.application",
54878
+ mj2: "video/mj2",
54879
+ mpga: "audio/mpeg",
54880
+ mxu: "video/vnd.mpegurl",
54881
+ mpeg: "video/mpeg",
54882
+ m21: "application/mp21",
54883
+ mp4a: "audio/mp4",
54884
+ mp4: "video/mp4",
54885
+ m3u8: "application/vnd.apple.mpegurl",
54886
+ mus: "application/vnd.musician",
54887
+ msty: "application/vnd.muvee.style",
54888
+ mxml: "application/xv+xml",
54889
+ ngdat: "application/vnd.nokia.n-gage.data",
54890
+ "n-gage": "application/vnd.nokia.n-gage.symbian.install",
54891
+ ncx: "application/x-dtbncx+xml",
54892
+ nc: "application/x-netcdf",
54893
+ nlu: "application/vnd.neurolanguage.nlu",
54894
+ dna: "application/vnd.dna",
54895
+ nnd: "application/vnd.noblenet-directory",
54896
+ nns: "application/vnd.noblenet-sealer",
54897
+ nnw: "application/vnd.noblenet-web",
54898
+ rpst: "application/vnd.nokia.radio-preset",
54899
+ rpss: "application/vnd.nokia.radio-presets",
54900
+ n3: "text/n3",
54901
+ edm: "application/vnd.novadigm.edm",
54902
+ edx: "application/vnd.novadigm.edx",
54903
+ ext: "application/vnd.novadigm.ext",
54904
+ gph: "application/vnd.flographit",
54905
+ ecelp4800: "audio/vnd.nuera.ecelp4800",
54906
+ ecelp7470: "audio/vnd.nuera.ecelp7470",
54907
+ ecelp9600: "audio/vnd.nuera.ecelp9600",
54908
+ oda: "application/oda",
54909
+ ogx: "application/ogg",
54910
+ oga: "audio/ogg",
54911
+ ogv: "video/ogg",
54912
+ dd2: "application/vnd.oma.dd2+xml",
54913
+ oth: "application/vnd.oasis.opendocument.text-web",
54914
+ opf: "application/oebps-package+xml",
54915
+ qbo: "application/vnd.intu.qbo",
54916
+ oxt: "application/vnd.openofficeorg.extension",
54917
+ osf: "application/vnd.yamaha.openscoreformat",
54918
+ weba: "audio/webm",
54919
+ webm: "video/webm",
54920
+ odc: "application/vnd.oasis.opendocument.chart",
54921
+ otc: "application/vnd.oasis.opendocument.chart-template",
54922
+ odb: "application/vnd.oasis.opendocument.database",
54923
+ odf: "application/vnd.oasis.opendocument.formula",
54924
+ odft: "application/vnd.oasis.opendocument.formula-template",
54925
+ odg: "application/vnd.oasis.opendocument.graphics",
54926
+ otg: "application/vnd.oasis.opendocument.graphics-template",
54927
+ odi: "application/vnd.oasis.opendocument.image",
54928
+ oti: "application/vnd.oasis.opendocument.image-template",
54929
+ odp: "application/vnd.oasis.opendocument.presentation",
54930
+ otp: "application/vnd.oasis.opendocument.presentation-template",
54931
+ ods: "application/vnd.oasis.opendocument.spreadsheet",
54932
+ ots: "application/vnd.oasis.opendocument.spreadsheet-template",
54933
+ odt: "application/vnd.oasis.opendocument.text",
54934
+ odm: "application/vnd.oasis.opendocument.text-master",
54935
+ ott: "application/vnd.oasis.opendocument.text-template",
54936
+ ktx: "image/ktx",
54937
+ sxc: "application/vnd.sun.xml.calc",
54938
+ stc: "application/vnd.sun.xml.calc.template",
54939
+ sxd: "application/vnd.sun.xml.draw",
54940
+ std: "application/vnd.sun.xml.draw.template",
54941
+ sxi: "application/vnd.sun.xml.impress",
54942
+ sti: "application/vnd.sun.xml.impress.template",
54943
+ sxm: "application/vnd.sun.xml.math",
54944
+ sxw: "application/vnd.sun.xml.writer",
54945
+ sxg: "application/vnd.sun.xml.writer.global",
54946
+ stw: "application/vnd.sun.xml.writer.template",
54947
+ otf: "application/x-font-otf",
54948
+ osfpvg: "application/vnd.yamaha.openscoreformat.osfpvg+xml",
54949
+ dp: "application/vnd.osgi.dp",
54950
+ pdb: "application/vnd.palm",
54951
+ p: "text/x-pascal",
54952
+ paw: "application/vnd.pawaafile",
54953
+ pclxl: "application/vnd.hp-pclxl",
54954
+ efif: "application/vnd.picsel",
54955
+ pcx: "image/x-pcx",
54956
+ psd: "image/vnd.adobe.photoshop",
54957
+ prf: "application/pics-rules",
54958
+ pic: "image/x-pict",
54959
+ chat: "application/x-chat",
54960
+ p10: "application/pkcs10",
54961
+ p12: "application/x-pkcs12",
54962
+ p7m: "application/pkcs7-mime",
54963
+ p7s: "application/pkcs7-signature",
54964
+ p7r: "application/x-pkcs7-certreqresp",
54965
+ p7b: "application/x-pkcs7-certificates",
54966
+ p8: "application/pkcs8",
54967
+ plf: "application/vnd.pocketlearn",
54968
+ pnm: "image/x-portable-anymap",
54969
+ pbm: "image/x-portable-bitmap",
54970
+ pcf: "application/x-font-pcf",
54971
+ pfr: "application/font-tdpfr",
54972
+ pgn: "application/x-chess-pgn",
54973
+ pgm: "image/x-portable-graymap",
54974
+ png: "image/png",
54975
+ ppm: "image/x-portable-pixmap",
54976
+ pskcxml: "application/pskc+xml",
54977
+ pml: "application/vnd.ctc-posml",
54978
+ ai: "application/postscript",
54979
+ pfa: "application/x-font-type1",
54980
+ pbd: "application/vnd.powerbuilder6",
54981
+ pgp: "application/pgp-signature",
54982
+ box: "application/vnd.previewsystems.box",
54983
+ ptid: "application/vnd.pvi.ptid1",
54984
+ pls: "application/pls+xml",
54985
+ str: "application/vnd.pg.format",
54986
+ ei6: "application/vnd.pg.osasli",
54987
+ dsc: "text/prs.lines.tag",
54988
+ psf: "application/x-font-linux-psf",
54989
+ qps: "application/vnd.publishare-delta-tree",
54990
+ wg: "application/vnd.pmi.widget",
54991
+ qxd: "application/vnd.quark.quarkxpress",
54992
+ esf: "application/vnd.epson.esf",
54993
+ msf: "application/vnd.epson.msf",
54994
+ ssf: "application/vnd.epson.ssf",
54995
+ qam: "application/vnd.epson.quickanime",
54996
+ qfx: "application/vnd.intu.qfx",
54997
+ qt: "video/quicktime",
54998
+ rar: "application/x-rar-compressed",
54999
+ ram: "audio/x-pn-realaudio",
55000
+ rmp: "audio/x-pn-realaudio-plugin",
55001
+ rsd: "application/rsd+xml",
55002
+ rm: "application/vnd.rn-realmedia",
55003
+ bed: "application/vnd.realvnc.bed",
55004
+ mxl: "application/vnd.recordare.musicxml",
55005
+ musicxml: "application/vnd.recordare.musicxml+xml",
55006
+ rnc: "application/relax-ng-compact-syntax",
55007
+ rdz: "application/vnd.data-vision.rdz",
55008
+ rdf: "application/rdf+xml",
55009
+ rp9: "application/vnd.cloanto.rp9",
55010
+ jisp: "application/vnd.jisp",
55011
+ rtf: "application/rtf",
55012
+ rtx: "text/richtext",
55013
+ link66: "application/vnd.route66.link66+xml",
55014
+ rss: "application/rss+xml",
55015
+ shf: "application/shf+xml",
55016
+ st: "application/vnd.sailingtracker.track",
55017
+ svg: "image/svg+xml",
55018
+ sus: "application/vnd.sus-calendar",
55019
+ sru: "application/sru+xml",
55020
+ setpay: "application/set-payment-initiation",
55021
+ setreg: "application/set-registration-initiation",
55022
+ sema: "application/vnd.sema",
55023
+ semd: "application/vnd.semd",
55024
+ semf: "application/vnd.semf",
55025
+ see: "application/vnd.seemail",
55026
+ snf: "application/x-font-snf",
55027
+ spq: "application/scvp-vp-request",
55028
+ spp: "application/scvp-vp-response",
55029
+ scq: "application/scvp-cv-request",
55030
+ scs: "application/scvp-cv-response",
55031
+ sdp: "application/sdp",
55032
+ etx: "text/x-setext",
55033
+ movie: "video/x-sgi-movie",
55034
+ ifm: "application/vnd.shana.informed.formdata",
55035
+ itp: "application/vnd.shana.informed.formtemplate",
55036
+ iif: "application/vnd.shana.informed.interchange",
55037
+ ipk: "application/vnd.shana.informed.package",
55038
+ tfi: "application/thraud+xml",
55039
+ shar: "application/x-shar",
55040
+ rgb: "image/x-rgb",
55041
+ slt: "application/vnd.epson.salt",
55042
+ aso: "application/vnd.accpac.simply.aso",
55043
+ imp: "application/vnd.accpac.simply.imp",
55044
+ twd: "application/vnd.simtech-mindmapper",
55045
+ csp: "application/vnd.commonspace",
55046
+ saf: "application/vnd.yamaha.smaf-audio",
55047
+ mmf: "application/vnd.smaf",
55048
+ spf: "application/vnd.yamaha.smaf-phrase",
55049
+ teacher: "application/vnd.smart.teacher",
55050
+ svd: "application/vnd.svd",
55051
+ rq: "application/sparql-query",
55052
+ srx: "application/sparql-results+xml",
55053
+ gram: "application/srgs",
55054
+ grxml: "application/srgs+xml",
55055
+ ssml: "application/ssml+xml",
55056
+ skp: "application/vnd.koan",
55057
+ sgml: "text/sgml",
55058
+ sdc: "application/vnd.stardivision.calc",
55059
+ sda: "application/vnd.stardivision.draw",
55060
+ sdd: "application/vnd.stardivision.impress",
55061
+ smf: "application/vnd.stardivision.math",
55062
+ sdw: "application/vnd.stardivision.writer",
55063
+ sgl: "application/vnd.stardivision.writer-global",
55064
+ sm: "application/vnd.stepmania.stepchart",
55065
+ sit: "application/x-stuffit",
55066
+ sitx: "application/x-stuffitx",
55067
+ sdkm: "application/vnd.solent.sdkm+xml",
55068
+ xo: "application/vnd.olpc-sugar",
55069
+ au: "audio/basic",
55070
+ wqd: "application/vnd.wqd",
55071
+ sis: "application/vnd.symbian.install",
55072
+ smi: "application/smil+xml",
55073
+ xsm: "application/vnd.syncml+xml",
55074
+ bdm: "application/vnd.syncml.dm+wbxml",
55075
+ xdm: "application/vnd.syncml.dm+xml",
55076
+ sv4cpio: "application/x-sv4cpio",
55077
+ sv4crc: "application/x-sv4crc",
55078
+ sbml: "application/sbml+xml",
55079
+ tsv: "text/tab-separated-values",
55080
+ tiff: "image/tiff",
55081
+ tao: "application/vnd.tao.intent-module-archive",
55082
+ tar: "application/x-tar",
55083
+ tcl: "application/x-tcl",
55084
+ tex: "application/x-tex",
55085
+ tfm: "application/x-tex-tfm",
55086
+ tei: "application/tei+xml",
55087
+ txt: "text/plain",
55088
+ dxp: "application/vnd.spotfire.dxp",
55089
+ sfs: "application/vnd.spotfire.sfs",
55090
+ tsd: "application/timestamped-data",
55091
+ tpt: "application/vnd.trid.tpt",
55092
+ mxs: "application/vnd.triscape.mxs",
55093
+ t: "text/troff",
55094
+ tra: "application/vnd.trueapp",
55095
+ ttf: "application/x-font-ttf",
55096
+ ttl: "text/turtle",
55097
+ umj: "application/vnd.umajin",
55098
+ uoml: "application/vnd.uoml+xml",
55099
+ unityweb: "application/vnd.unity",
55100
+ ufd: "application/vnd.ufdl",
55101
+ uri: "text/uri-list",
55102
+ utz: "application/vnd.uiq.theme",
55103
+ ustar: "application/x-ustar",
55104
+ uu: "text/x-uuencode",
55105
+ vcs: "text/x-vcalendar",
55106
+ vcf: "text/x-vcard",
55107
+ vcd: "application/x-cdlink",
55108
+ vsf: "application/vnd.vsf",
55109
+ wrl: "model/vrml",
55110
+ vcx: "application/vnd.vcx",
55111
+ mts: "model/vnd.mts",
55112
+ vtu: "model/vnd.vtu",
55113
+ vis: "application/vnd.visionary",
55114
+ viv: "video/vnd.vivo",
55115
+ ccxml: "application/ccxml+xml,",
55116
+ vxml: "application/voicexml+xml",
55117
+ src: "application/x-wais-source",
55118
+ wbxml: "application/vnd.wap.wbxml",
55119
+ wbmp: "image/vnd.wap.wbmp",
55120
+ wav: "audio/x-wav",
55121
+ davmount: "application/davmount+xml",
55122
+ woff: "application/x-font-woff",
55123
+ wspolicy: "application/wspolicy+xml",
55124
+ webp: "image/webp",
55125
+ wtb: "application/vnd.webturbo",
55126
+ wgt: "application/widget",
55127
+ hlp: "application/winhlp",
55128
+ wml: "text/vnd.wap.wml",
55129
+ wmls: "text/vnd.wap.wmlscript",
55130
+ wmlsc: "application/vnd.wap.wmlscriptc",
55131
+ wpd: "application/vnd.wordperfect",
55132
+ stf: "application/vnd.wt.stf",
55133
+ wsdl: "application/wsdl+xml",
55134
+ xbm: "image/x-xbitmap",
55135
+ xpm: "image/x-xpixmap",
55136
+ xwd: "image/x-xwindowdump",
55137
+ der: "application/x-x509-ca-cert",
55138
+ fig: "application/x-xfig",
55139
+ xhtml: "application/xhtml+xml",
55140
+ xml: "application/xml",
55141
+ xdf: "application/xcap-diff+xml",
55142
+ xenc: "application/xenc+xml",
55143
+ xer: "application/patch-ops-error+xml",
55144
+ rl: "application/resource-lists+xml",
55145
+ rs: "application/rls-services+xml",
55146
+ rld: "application/resource-lists-diff+xml",
55147
+ xslt: "application/xslt+xml",
55148
+ xop: "application/xop+xml",
55149
+ xpi: "application/x-xpinstall",
55150
+ xspf: "application/xspf+xml",
55151
+ xul: "application/vnd.mozilla.xul+xml",
55152
+ xyz: "chemical/x-xyz",
55153
+ yaml: "text/yaml",
55154
+ yang: "application/yang",
55155
+ yin: "application/yin+xml",
55156
+ zir: "application/vnd.zul",
55157
+ zip: "application/zip",
55158
+ zmm: "application/vnd.handheld-entertainment+xml",
55159
+ zaz: "application/vnd.zzazz.deck+xml"
55160
+ };
55161
+ var MIME_TYPES_TO_EXT = Object.fromEntries(Object.entries(EXT_TO_MIME_TYPES).map(function(_ref) {
55162
+ var _ref2 = _slicedToArray(_ref, 2), k = _ref2[0], v = _ref2[1];
55163
+ return [v, k];
55164
+ }));
55165
+ var MIME_TYPE_REGEX = /^data:(.*?);base64,/;
54467
55166
  function getMimeType(base64Url) {
54468
55167
  var match = MIME_TYPE_REGEX.exec(base64Url);
54469
55168
  if (match && match[1]) {
@@ -54472,16 +55171,11 @@ function getMimeType(base64Url) {
54472
55171
  return;
54473
55172
  }
54474
55173
  function mimeTypeToFileExt(mimeType) {
54475
- if (mimeType === "image/svg+xml") {
54476
- return "svg";
54477
- }
54478
- if (mimeType === "image/vnd.microsoft.icon") {
54479
- return "ico";
54480
- }
54481
- if (mimeType.startsWith("image/")) {
54482
- return mimeType.slice("image/".length);
55174
+ var recognizedMimeType = MIME_TYPES_TO_EXT[mimeType];
55175
+ if (recognizedMimeType) {
55176
+ return recognizedMimeType;
54483
55177
  }
54484
- return mimeType;
55178
+ return mimeType.split("/")[1];
54485
55179
  }
54486
55180
  var HeaderRegEx = /^h([\d+])$/;
54487
55181
  function lexicalToRichTextSource(node) {
@@ -54639,10 +55333,10 @@ function fromLexicalFormat(format) {
54639
55333
  return [];
54640
55334
  });
54641
55335
  }
54642
- var textEncoder$1 = new TextEncoder();
55336
+ var textEncoder$2 = new TextEncoder();
54643
55337
  function fromLexicalImageNode(node, files) {
54644
55338
  if (node.src.startsWith("data:")) {
54645
- var sha256 = Internal.getSHA256Hash(textEncoder$1.encode(node.src));
55339
+ var sha256 = Internal.getSHA256Hash(textEncoder$2.encode(node.src));
54646
55340
  var mimeType = getMimeType(node.src);
54647
55341
  if (mimeType === void 0) {
54648
55342
  throw new Error("Could not detect Mime Type for image: ".concat(node.src));
@@ -55032,7 +55726,7 @@ function parseRichTextSource(_ref) {
55032
55726
  }
55033
55727
  return _defineProperty$4(_defineProperty$4({}, VAL_EXTENSION, "richtext"), "children", children);
55034
55728
  }
55035
- const textEncoder = new TextEncoder();
55729
+ const textEncoder$1 = new TextEncoder();
55036
55730
  function readImage(ev) {
55037
55731
  return new Promise((resolve, reject) => {
55038
55732
  var _a;
@@ -55043,7 +55737,7 @@ function readImage(ev) {
55043
55737
  if (typeof result2 === "string") {
55044
55738
  const image = new Image();
55045
55739
  image.addEventListener("load", () => {
55046
- const sha256 = Internal.getSHA256Hash(textEncoder.encode(result2));
55740
+ const sha256 = Internal.getSHA256Hash(textEncoder$1.encode(result2));
55047
55741
  if (image.naturalWidth && image.naturalHeight) {
55048
55742
  const mimeType = getMimeType(result2);
55049
55743
  resolve({
@@ -56689,6 +57383,21 @@ const ChevronDown = createLucideIcon("ChevronDown", [
56689
57383
  const ChevronLeft = createLucideIcon("ChevronLeft", [
56690
57384
  ["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]
56691
57385
  ]);
57386
+ const Diff = createLucideIcon("Diff", [
57387
+ ["path", { d: "M12 3v14", key: "7cf3v8" }],
57388
+ ["path", { d: "M5 10h14", key: "elsbfy" }],
57389
+ ["path", { d: "M5 21h14", key: "11awu3" }]
57390
+ ]);
57391
+ const File = createLucideIcon("File", [
57392
+ [
57393
+ "path",
57394
+ {
57395
+ d: "M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",
57396
+ key: "1nnpy2"
57397
+ }
57398
+ ],
57399
+ ["polyline", { points: "14 2 14 8 20 8", key: "1ew0cm" }]
57400
+ ]);
56692
57401
  const LogIn = createLucideIcon("LogIn", [
56693
57402
  ["path", { d: "M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4", key: "u53s6r" }],
56694
57403
  ["polyline", { points: "10 17 15 12 10 7", key: "1ail0h" }],
@@ -56750,7 +57459,7 @@ function ValMenu({
56750
57459
  api,
56751
57460
  patches,
56752
57461
  direction,
56753
- onCommit
57462
+ onClickPatches
56754
57463
  }) {
56755
57464
  const { theme: theme2, setTheme, editMode, setEditMode, session } = useValOverlayContext();
56756
57465
  if (session.status === "success" && session.data.mode === "unauthorized") {
@@ -56833,17 +57542,7 @@ function ValMenu({
56833
57542
  {
56834
57543
  onClick: () => {
56835
57544
  if (patchCount > 0) {
56836
- api.postCommit({ patches }).then((res) => {
56837
- if (result.isErr(res)) {
56838
- console.error(res.error);
56839
- alert("Could not commit patches: " + res.error.message);
56840
- } else {
56841
- console.log("Committed patches: ", res.value);
56842
- onCommit();
56843
- }
56844
- });
56845
- } else {
56846
- alert("No patches to commit");
57545
+ onClickPatches();
56847
57546
  }
56848
57547
  },
56849
57548
  children: /* @__PURE__ */ jsxs("div", { className: "relative h-[24px] w-[24px] flex justify-center items-center", children: [
@@ -56860,32 +57559,24 @@ function SingleItemMenu({
56860
57559
  direction,
56861
57560
  children
56862
57561
  }) {
56863
- return /* @__PURE__ */ jsx(
56864
- "div",
56865
- {
56866
- className: classNames(
56867
- "flex items-start justify-center w-full h-full font-sans border rounded-full gap-3 text-primary border-fill bg-gradient-to-br from-background/90 from-40% to-background backdrop-blur-lg drop-shadow-2xl",
56868
- {
56869
- "flex-col items-start": direction === "vertical",
56870
- "flex-row items-center": direction === "horizontal"
56871
- }
56872
- ),
56873
- children: /* @__PURE__ */ jsx("a", { className, href, children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center px-2 gap-y-2", children }) })
56874
- }
56875
- );
57562
+ return /* @__PURE__ */ jsx(MenuContainer, { direction, border: false, children: /* @__PURE__ */ jsx("a", { className, href, children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center px-2 gap-y-2", children }) }) });
56876
57563
  }
56877
57564
  function MenuContainer({
56878
57565
  children,
56879
- direction
57566
+ direction,
57567
+ border = true
56880
57568
  }) {
56881
57569
  return /* @__PURE__ */ jsx(
56882
57570
  "div",
56883
57571
  {
56884
57572
  className: classNames(
56885
- "flex justify-center w-full h-full px-2 py-2 font-sans border rounded-full gap-3 text-primary border-fill bg-gradient-to-br from-background/90 from-40% to-background backdrop-blur-lg drop-shadow-2xl",
57573
+ "flex justify-center w-full h-full px-2 py-2 font-sans rounded-full gap-3 text-primary border-fill bg-gradient-to-br from-background/90 from-40% to-background backdrop-blur-lg drop-shadow-2xl",
56886
57574
  {
56887
57575
  "flex-col items-start": direction === "vertical",
56888
57576
  "flex-row items-center": direction === "horizontal"
57577
+ },
57578
+ {
57579
+ border
56889
57580
  }
56890
57581
  ),
56891
57582
  children
@@ -57387,7 +58078,7 @@ Object.defineProperty(DraggableCore$2, "__esModule", {
57387
58078
  DraggableCore$2.default = void 0;
57388
58079
  var React$2 = _interopRequireWildcard$2(React__default);
57389
58080
  var _propTypes$3 = _interopRequireDefault$3(propTypesExports);
57390
- var _reactDom = _interopRequireDefault$3(reactDomExports);
58081
+ var _reactDom = _interopRequireDefault$3(requireReactDom());
57391
58082
  var _domFns = domFns;
57392
58083
  var _positionFns = positionFns;
57393
58084
  var _shims = shims;
@@ -57801,7 +58492,7 @@ _defineProperty$3(DraggableCore$1, "defaultProps", {
57801
58492
  exports.default = void 0;
57802
58493
  var React2 = _interopRequireWildcard2(React__default);
57803
58494
  var _propTypes3 = _interopRequireDefault2(propTypesExports);
57804
- var _reactDom2 = _interopRequireDefault2(reactDomExports);
58495
+ var _reactDom2 = _interopRequireDefault2(requireReactDom());
57805
58496
  var _clsx = _interopRequireDefault2(require$$3);
57806
58497
  var _domFns2 = domFns;
57807
58498
  var _positionFns2 = positionFns;
@@ -58900,6 +59591,8 @@ function _extends$2() {
58900
59591
  };
58901
59592
  return _extends$2.apply(this, arguments);
58902
59593
  }
59594
+ var reactDomExports = requireReactDom();
59595
+ const $7SXl2$reactdom = /* @__PURE__ */ getDefaultExportFromCjs(reactDomExports);
58903
59596
  function $6ed0406888f73fc4$var$setRef(ref, value) {
58904
59597
  if (typeof ref === "function")
58905
59598
  ref(value);
@@ -66057,7 +66750,7 @@ var RemoveScroll = React$3.forwardRef(function(props, parentRef) {
66057
66750
  onWheelCapture: nothing,
66058
66751
  onTouchMoveCapture: nothing
66059
66752
  }), callbacks = _a[0], setCallbacks = _a[1];
66060
- var forwardProps = props.forwardProps, children = props.children, className2 = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? "div" : _b, rest = __rest(props, ["forwardProps", "children", "className", "removeScrollBar", "enabled", "shards", "sideCar", "noIsolation", "inert", "allowPinchZoom", "as"]);
66753
+ var forwardProps = props.forwardProps, children = props.children, className2 = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container2 = _b === void 0 ? "div" : _b, rest = __rest(props, ["forwardProps", "children", "className", "removeScrollBar", "enabled", "shards", "sideCar", "noIsolation", "inert", "allowPinchZoom", "as"]);
66061
66754
  var SideCar2 = sideCar;
66062
66755
  var containerRef = useMergeRefs([ref, parentRef]);
66063
66756
  var containerProps = __assign(__assign({}, rest), callbacks);
@@ -66065,7 +66758,7 @@ var RemoveScroll = React$3.forwardRef(function(props, parentRef) {
66065
66758
  React$3.Fragment,
66066
66759
  null,
66067
66760
  enabled && React$3.createElement(SideCar2, { sideCar: effectCar, removeScrollBar, shards, noIsolation, inert, setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref }),
66068
- forwardProps ? React$3.cloneElement(React$3.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React$3.createElement(Container, __assign({}, containerProps, { className: className2, ref: containerRef }), children)
66761
+ forwardProps ? React$3.cloneElement(React$3.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React$3.createElement(Container2, __assign({}, containerProps, { className: className2, ref: containerRef }), children)
66069
66762
  );
66070
66763
  });
66071
66764
  RemoveScroll.defaultProps = {
@@ -67606,6 +68299,17 @@ function ValFormField({
67606
68299
  }
67607
68300
  );
67608
68301
  }
68302
+ if ((typeof source === "object" || source === null) && (schema == null ? void 0 : schema.type) === "file") {
68303
+ return /* @__PURE__ */ jsx(
68304
+ FileField,
68305
+ {
68306
+ path,
68307
+ registerPatchCallback,
68308
+ onSubmit,
68309
+ defaultValue: source
68310
+ }
68311
+ );
68312
+ }
67609
68313
  return /* @__PURE__ */ jsxs("div", { children: [
67610
68314
  "Unsupported schema: ",
67611
68315
  schema.type,
@@ -67617,14 +68321,14 @@ function ValFormField({
67617
68321
  ")"
67618
68322
  ] });
67619
68323
  }
67620
- function createImagePatch(path, data, filename, metadata) {
68324
+ function createFilePatch(path, data, filename, metadata) {
67621
68325
  if (!data || !metadata) {
67622
68326
  return [];
67623
68327
  }
67624
68328
  const shaSuffix = metadata.sha256.slice(0, 5);
67625
68329
  const newFilePath = function() {
67626
68330
  const mimeType = getMimeType(data) ?? "unknown";
67627
- const newExt = mimeTypeToFileExt(mimeType);
68331
+ const newExt = mimeTypeToFileExt(mimeType) ?? "unknown";
67628
68332
  if (filename) {
67629
68333
  let cleanFilename = filename.split(".").slice(0, -1).join(".") || filename;
67630
68334
  const maybeShaSuffixPos = cleanFilename.lastIndexOf("_");
@@ -67657,7 +68361,7 @@ function createImagePatch(path, data, filename, metadata) {
67657
68361
  }
67658
68362
  ];
67659
68363
  }
67660
- function createImageMetadataPatch(path, metadata) {
68364
+ function createFileMetadataPatch(path, metadata) {
67661
68365
  const metadataPath = path + "/metadata";
67662
68366
  return [
67663
68367
  {
@@ -67667,6 +68371,150 @@ function createImageMetadataPatch(path, metadata) {
67667
68371
  }
67668
68372
  ];
67669
68373
  }
68374
+ const textEncoder = new TextEncoder();
68375
+ function readFile(ev) {
68376
+ return new Promise((resolve, reject) => {
68377
+ var _a;
68378
+ const file = (_a = ev.currentTarget.files) == null ? void 0 : _a[0];
68379
+ const reader = new FileReader();
68380
+ reader.addEventListener("load", () => {
68381
+ const result2 = reader.result;
68382
+ if (typeof result2 === "string") {
68383
+ const sha256 = Internal.getSHA256Hash(textEncoder.encode(result2));
68384
+ const mimeType = getMimeType(result2);
68385
+ resolve({
68386
+ src: result2,
68387
+ filename: file == null ? void 0 : file.name,
68388
+ sha256,
68389
+ mimeType,
68390
+ fileExt: mimeType && mimeTypeToFileExt(mimeType)
68391
+ });
68392
+ } else if (!result2) {
68393
+ reject({ message: "Empty result" });
68394
+ } else {
68395
+ reject({ message: "Unexpected file result type", result: result2 });
68396
+ }
68397
+ });
68398
+ if (file) {
68399
+ reader.readAsDataURL(file);
68400
+ }
68401
+ });
68402
+ }
68403
+ function FileField({
68404
+ path,
68405
+ defaultValue,
68406
+ onSubmit,
68407
+ registerPatchCallback
68408
+ }) {
68409
+ var _a, _b;
68410
+ const [data, setData] = useState(
68411
+ null
68412
+ );
68413
+ const [loading, setLoading] = useState(false);
68414
+ const [metadata, setMetadata] = useState();
68415
+ const [url, setUrl] = useState();
68416
+ useEffect(() => {
68417
+ const url2 = defaultValue && Internal.convertFileSource(defaultValue).url;
68418
+ setUrl(url2);
68419
+ }, [defaultValue]);
68420
+ useEffect(() => {
68421
+ if (registerPatchCallback) {
68422
+ registerPatchCallback(async (path2) => {
68423
+ return createFilePatch(
68424
+ path2,
68425
+ (data == null ? void 0 : data.src) ?? null,
68426
+ (data == null ? void 0 : data.filename) ?? null,
68427
+ metadata
68428
+ );
68429
+ });
68430
+ }
68431
+ }, [data, defaultValue]);
68432
+ return /* @__PURE__ */ jsxs(FieldContainer, { children: [
68433
+ /* @__PURE__ */ jsxs("div", { className: "w-fit", children: [
68434
+ /* @__PURE__ */ jsx(
68435
+ "div",
68436
+ {
68437
+ className: "flex flex-col justify-start p-2 border border-b-0 rounded-sm rounded-b-none gap-y-4 bg-background text-foreground border-input",
68438
+ children: data || url ? /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col justify-center items-center min-h-[100px] min-w-[200px]", children: [
68439
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(File, {}) }),
68440
+ /* @__PURE__ */ jsx("div", { children: data == null ? void 0 : data.filename })
68441
+ ] }) : /* @__PURE__ */ jsx("div", { children: "Select file below" })
68442
+ },
68443
+ path
68444
+ ),
68445
+ /* @__PURE__ */ jsxs("div", { className: "p-4 border border-t-0 rounded-b-sm bg-background border-input", children: [
68446
+ /* @__PURE__ */ jsx(
68447
+ "label",
68448
+ {
68449
+ htmlFor: `img_input:${path}`,
68450
+ className: "block px-1 py-2 text-sm text-center rounded-md cursor-pointer bg-primary text-background",
68451
+ children: "Update"
68452
+ }
68453
+ ),
68454
+ /* @__PURE__ */ jsx(
68455
+ "input",
68456
+ {
68457
+ hidden: true,
68458
+ id: `img_input:${path}`,
68459
+ type: "file",
68460
+ onChange: (ev) => {
68461
+ readFile(ev).then((res) => {
68462
+ setData({ src: res.src, filename: res.filename });
68463
+ if (res.mimeType) {
68464
+ setMetadata({
68465
+ sha256: res.sha256,
68466
+ mimeType: res.mimeType
68467
+ });
68468
+ } else {
68469
+ setMetadata(void 0);
68470
+ }
68471
+ }).catch((err2) => {
68472
+ console.error(err2.message);
68473
+ setData(null);
68474
+ setMetadata(void 0);
68475
+ });
68476
+ }
68477
+ }
68478
+ )
68479
+ ] })
68480
+ ] }),
68481
+ onSubmit && /* @__PURE__ */ jsx(
68482
+ SubmitButton,
68483
+ {
68484
+ loading,
68485
+ enabled: !!data || ((_a = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _a.mimeType) !== (metadata == null ? void 0 : metadata.mimeType) || ((_b = defaultValue == null ? void 0 : defaultValue.metadata) == null ? void 0 : _b.sha256) !== (metadata == null ? void 0 : metadata.sha256),
68486
+ onClick: () => {
68487
+ if (data) {
68488
+ setLoading(true);
68489
+ onSubmit(
68490
+ (path2) => Promise.resolve(
68491
+ createFilePatch(
68492
+ path2,
68493
+ data.src,
68494
+ data.filename ?? null,
68495
+ metadata
68496
+ )
68497
+ )
68498
+ ).finally(() => {
68499
+ setLoading(false);
68500
+ setData(null);
68501
+ setMetadata(void 0);
68502
+ });
68503
+ } else if (metadata) {
68504
+ setLoading(true);
68505
+ onSubmit(
68506
+ (path2) => Promise.resolve(createFileMetadataPatch(path2, metadata))
68507
+ ).finally(() => {
68508
+ setLoading(false);
68509
+ setData(null);
68510
+ setMetadata(void 0);
68511
+ });
68512
+ }
68513
+ }
68514
+ }
68515
+ )
68516
+ ] });
68517
+ }
67670
68518
  function ImageField({
67671
68519
  path,
67672
68520
  defaultValue,
@@ -67687,7 +68535,7 @@ function ImageField({
67687
68535
  useEffect(() => {
67688
68536
  if (registerPatchCallback) {
67689
68537
  registerPatchCallback(async (path2) => {
67690
- return createImagePatch(
68538
+ return createFilePatch(
67691
68539
  path2,
67692
68540
  (data == null ? void 0 : data.src) ?? null,
67693
68541
  (data == null ? void 0 : data.filename) ?? null,
@@ -67813,7 +68661,7 @@ function ImageField({
67813
68661
  setLoading(true);
67814
68662
  onSubmit(
67815
68663
  (path2) => Promise.resolve(
67816
- createImagePatch(
68664
+ createFilePatch(
67817
68665
  path2,
67818
68666
  data.src,
67819
68667
  data.filename ?? null,
@@ -67828,7 +68676,7 @@ function ImageField({
67828
68676
  } else if (metadata) {
67829
68677
  setLoading(true);
67830
68678
  onSubmit(
67831
- (path2) => Promise.resolve(createImageMetadataPatch(path2, metadata))
68679
+ (path2) => Promise.resolve(createFileMetadataPatch(path2, metadata))
67832
68680
  ).finally(() => {
67833
68681
  setLoading(false);
67834
68682
  setData(null);
@@ -72623,6 +73471,7 @@ function useSession(api) {
72623
73471
  setSession({ status: "success", data: Session.parse(session2) });
72624
73472
  } else {
72625
73473
  if (res.error.statusCode === 401) {
73474
+ console.error("Unauthorized", res.error);
72626
73475
  setSession({
72627
73476
  status: "success",
72628
73477
  data: {
@@ -72675,6 +73524,532 @@ function Seg({ children }) {
72675
73524
  }
72676
73525
  return /* @__PURE__ */ jsx("span", { children });
72677
73526
  }
73527
+ const $409067139f391064$var$COLLAPSIBLE_NAME = "Collapsible";
73528
+ const [$409067139f391064$var$createCollapsibleContext, $409067139f391064$export$952b32dcbe73087a] = $c512c27ab02ef895$export$50c7b4e9d9f19c1($409067139f391064$var$COLLAPSIBLE_NAME);
73529
+ const [$409067139f391064$var$CollapsibleProvider, $409067139f391064$var$useCollapsibleContext] = $409067139f391064$var$createCollapsibleContext($409067139f391064$var$COLLAPSIBLE_NAME);
73530
+ const $409067139f391064$export$6eb0f7ddcda6131f = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
73531
+ const { __scopeCollapsible, open: openProp, defaultOpen, disabled, onOpenChange, ...collapsibleProps } = props;
73532
+ const [open = false, setOpen] = $71cd76cc60e0454e$export$6f32135080cb4c3({
73533
+ prop: openProp,
73534
+ defaultProp: defaultOpen,
73535
+ onChange: onOpenChange
73536
+ });
73537
+ return /* @__PURE__ */ createElement($409067139f391064$var$CollapsibleProvider, {
73538
+ scope: __scopeCollapsible,
73539
+ disabled,
73540
+ contentId: $1746a345f3d73bb7$export$f680877a34711e37(),
73541
+ open,
73542
+ onOpenToggle: useCallback(
73543
+ () => setOpen(
73544
+ (prevOpen) => !prevOpen
73545
+ ),
73546
+ [
73547
+ setOpen
73548
+ ]
73549
+ )
73550
+ }, /* @__PURE__ */ createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.div, _extends$2({
73551
+ "data-state": $409067139f391064$var$getState(open),
73552
+ "data-disabled": disabled ? "" : void 0
73553
+ }, collapsibleProps, {
73554
+ ref: forwardedRef
73555
+ })));
73556
+ });
73557
+ const $409067139f391064$var$TRIGGER_NAME = "CollapsibleTrigger";
73558
+ const $409067139f391064$export$c135dce7b15bbbdc = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
73559
+ const { __scopeCollapsible, ...triggerProps } = props;
73560
+ const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$TRIGGER_NAME, __scopeCollapsible);
73561
+ return /* @__PURE__ */ createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.button, _extends$2({
73562
+ type: "button",
73563
+ "aria-controls": context.contentId,
73564
+ "aria-expanded": context.open || false,
73565
+ "data-state": $409067139f391064$var$getState(context.open),
73566
+ "data-disabled": context.disabled ? "" : void 0,
73567
+ disabled: context.disabled
73568
+ }, triggerProps, {
73569
+ ref: forwardedRef,
73570
+ onClick: $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onClick, context.onOpenToggle)
73571
+ }));
73572
+ });
73573
+ const $409067139f391064$var$CONTENT_NAME = "CollapsibleContent";
73574
+ const $409067139f391064$export$aadde00976f34151 = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
73575
+ const { forceMount, ...contentProps } = props;
73576
+ const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$CONTENT_NAME, props.__scopeCollapsible);
73577
+ return /* @__PURE__ */ createElement(
73578
+ $921a889cee6df7e8$export$99c2b779aa4e8b8b,
73579
+ {
73580
+ present: forceMount || context.open
73581
+ },
73582
+ ({ present }) => /* @__PURE__ */ createElement($409067139f391064$var$CollapsibleContentImpl, _extends$2({}, contentProps, {
73583
+ ref: forwardedRef,
73584
+ present
73585
+ }))
73586
+ );
73587
+ });
73588
+ const $409067139f391064$var$CollapsibleContentImpl = /* @__PURE__ */ forwardRef((props, forwardedRef) => {
73589
+ const { __scopeCollapsible, present, children, ...contentProps } = props;
73590
+ const context = $409067139f391064$var$useCollapsibleContext($409067139f391064$var$CONTENT_NAME, __scopeCollapsible);
73591
+ const [isPresent, setIsPresent] = useState(present);
73592
+ const ref = useRef(null);
73593
+ const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(forwardedRef, ref);
73594
+ const heightRef = useRef(0);
73595
+ const height2 = heightRef.current;
73596
+ const widthRef = useRef(0);
73597
+ const width2 = widthRef.current;
73598
+ const isOpen = context.open || isPresent;
73599
+ const isMountAnimationPreventedRef = useRef(isOpen);
73600
+ const originalStylesRef = useRef();
73601
+ useEffect(() => {
73602
+ const rAF = requestAnimationFrame(
73603
+ () => isMountAnimationPreventedRef.current = false
73604
+ );
73605
+ return () => cancelAnimationFrame(rAF);
73606
+ }, []);
73607
+ $9f79659886946c16$export$e5c5a5f917a5871c(() => {
73608
+ const node = ref.current;
73609
+ if (node) {
73610
+ originalStylesRef.current = originalStylesRef.current || {
73611
+ transitionDuration: node.style.transitionDuration,
73612
+ animationName: node.style.animationName
73613
+ };
73614
+ node.style.transitionDuration = "0s";
73615
+ node.style.animationName = "none";
73616
+ const rect = node.getBoundingClientRect();
73617
+ heightRef.current = rect.height;
73618
+ widthRef.current = rect.width;
73619
+ if (!isMountAnimationPreventedRef.current) {
73620
+ node.style.transitionDuration = originalStylesRef.current.transitionDuration;
73621
+ node.style.animationName = originalStylesRef.current.animationName;
73622
+ }
73623
+ setIsPresent(present);
73624
+ }
73625
+ }, [
73626
+ context.open,
73627
+ present
73628
+ ]);
73629
+ return /* @__PURE__ */ createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.div, _extends$2({
73630
+ "data-state": $409067139f391064$var$getState(context.open),
73631
+ "data-disabled": context.disabled ? "" : void 0,
73632
+ id: context.contentId,
73633
+ hidden: !isOpen
73634
+ }, contentProps, {
73635
+ ref: composedRefs,
73636
+ style: {
73637
+ [`--radix-collapsible-content-height`]: height2 ? `${height2}px` : void 0,
73638
+ [`--radix-collapsible-content-width`]: width2 ? `${width2}px` : void 0,
73639
+ ...props.style
73640
+ }
73641
+ }), isOpen && children);
73642
+ });
73643
+ function $409067139f391064$var$getState(open) {
73644
+ return open ? "open" : "closed";
73645
+ }
73646
+ const $409067139f391064$export$be92b6f5f03c0fe9 = $409067139f391064$export$6eb0f7ddcda6131f;
73647
+ const $409067139f391064$export$41fb9f06171c75f4 = $409067139f391064$export$c135dce7b15bbbdc;
73648
+ const $409067139f391064$export$7c6e2c02157bb7d2 = $409067139f391064$export$aadde00976f34151;
73649
+ const $1bf158f521e1b1b4$var$ACCORDION_NAME = "Accordion";
73650
+ const $1bf158f521e1b1b4$var$ACCORDION_KEYS = [
73651
+ "Home",
73652
+ "End",
73653
+ "ArrowDown",
73654
+ "ArrowUp",
73655
+ "ArrowLeft",
73656
+ "ArrowRight"
73657
+ ];
73658
+ const [$1bf158f521e1b1b4$var$Collection, $1bf158f521e1b1b4$var$useCollection, $1bf158f521e1b1b4$var$createCollectionScope] = $e02a7d9cb1dc128c$export$c74125a8e3af6bb2($1bf158f521e1b1b4$var$ACCORDION_NAME);
73659
+ const [$1bf158f521e1b1b4$var$createAccordionContext, $1bf158f521e1b1b4$export$9748edc328a73be1] = $c512c27ab02ef895$export$50c7b4e9d9f19c1($1bf158f521e1b1b4$var$ACCORDION_NAME, [
73660
+ $1bf158f521e1b1b4$var$createCollectionScope,
73661
+ $409067139f391064$export$952b32dcbe73087a
73662
+ ]);
73663
+ const $1bf158f521e1b1b4$var$useCollapsibleScope = $409067139f391064$export$952b32dcbe73087a();
73664
+ const $1bf158f521e1b1b4$export$a766cd26d0d69044 = /* @__PURE__ */ React__default.forwardRef((props, forwardedRef) => {
73665
+ const { type, ...accordionProps } = props;
73666
+ const singleProps = accordionProps;
73667
+ const multipleProps = accordionProps;
73668
+ return /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$Collection.Provider, {
73669
+ scope: props.__scopeAccordion
73670
+ }, type === "multiple" ? /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionImplMultiple, _extends$2({}, multipleProps, {
73671
+ ref: forwardedRef
73672
+ })) : /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionImplSingle, _extends$2({}, singleProps, {
73673
+ ref: forwardedRef
73674
+ })));
73675
+ });
73676
+ $1bf158f521e1b1b4$export$a766cd26d0d69044.propTypes = {
73677
+ type(props) {
73678
+ const value = props.value || props.defaultValue;
73679
+ if (props.type && ![
73680
+ "single",
73681
+ "multiple"
73682
+ ].includes(props.type))
73683
+ return new Error("Invalid prop `type` supplied to `Accordion`. Expected one of `single | multiple`.");
73684
+ if (props.type === "multiple" && typeof value === "string")
73685
+ return new Error("Invalid prop `type` supplied to `Accordion`. Expected `single` when `defaultValue` or `value` is type `string`.");
73686
+ if (props.type === "single" && Array.isArray(value))
73687
+ return new Error("Invalid prop `type` supplied to `Accordion`. Expected `multiple` when `defaultValue` or `value` is type `string[]`.");
73688
+ return null;
73689
+ }
73690
+ };
73691
+ const [$1bf158f521e1b1b4$var$AccordionValueProvider, $1bf158f521e1b1b4$var$useAccordionValueContext] = $1bf158f521e1b1b4$var$createAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME);
73692
+ const [$1bf158f521e1b1b4$var$AccordionCollapsibleProvider, $1bf158f521e1b1b4$var$useAccordionCollapsibleContext] = $1bf158f521e1b1b4$var$createAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME, {
73693
+ collapsible: false
73694
+ });
73695
+ const $1bf158f521e1b1b4$var$AccordionImplSingle = /* @__PURE__ */ React__default.forwardRef((props, forwardedRef) => {
73696
+ const { value: valueProp, defaultValue, onValueChange = () => {
73697
+ }, collapsible = false, ...accordionSingleProps } = props;
73698
+ const [value, setValue] = $71cd76cc60e0454e$export$6f32135080cb4c3({
73699
+ prop: valueProp,
73700
+ defaultProp: defaultValue,
73701
+ onChange: onValueChange
73702
+ });
73703
+ return /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionValueProvider, {
73704
+ scope: props.__scopeAccordion,
73705
+ value: value ? [
73706
+ value
73707
+ ] : [],
73708
+ onItemOpen: setValue,
73709
+ onItemClose: React__default.useCallback(
73710
+ () => collapsible && setValue(""),
73711
+ [
73712
+ collapsible,
73713
+ setValue
73714
+ ]
73715
+ )
73716
+ }, /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionCollapsibleProvider, {
73717
+ scope: props.__scopeAccordion,
73718
+ collapsible
73719
+ }, /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionImpl, _extends$2({}, accordionSingleProps, {
73720
+ ref: forwardedRef
73721
+ }))));
73722
+ });
73723
+ const $1bf158f521e1b1b4$var$AccordionImplMultiple = /* @__PURE__ */ React__default.forwardRef((props, forwardedRef) => {
73724
+ const { value: valueProp, defaultValue, onValueChange = () => {
73725
+ }, ...accordionMultipleProps } = props;
73726
+ const [value1 = [], setValue] = $71cd76cc60e0454e$export$6f32135080cb4c3({
73727
+ prop: valueProp,
73728
+ defaultProp: defaultValue,
73729
+ onChange: onValueChange
73730
+ });
73731
+ const handleItemOpen = React__default.useCallback(
73732
+ (itemValue) => setValue(
73733
+ (prevValue = []) => [
73734
+ ...prevValue,
73735
+ itemValue
73736
+ ]
73737
+ ),
73738
+ [
73739
+ setValue
73740
+ ]
73741
+ );
73742
+ const handleItemClose = React__default.useCallback(
73743
+ (itemValue) => setValue(
73744
+ (prevValue = []) => prevValue.filter(
73745
+ (value) => value !== itemValue
73746
+ )
73747
+ ),
73748
+ [
73749
+ setValue
73750
+ ]
73751
+ );
73752
+ return /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionValueProvider, {
73753
+ scope: props.__scopeAccordion,
73754
+ value: value1,
73755
+ onItemOpen: handleItemOpen,
73756
+ onItemClose: handleItemClose
73757
+ }, /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionCollapsibleProvider, {
73758
+ scope: props.__scopeAccordion,
73759
+ collapsible: true
73760
+ }, /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionImpl, _extends$2({}, accordionMultipleProps, {
73761
+ ref: forwardedRef
73762
+ }))));
73763
+ });
73764
+ const [$1bf158f521e1b1b4$var$AccordionImplProvider, $1bf158f521e1b1b4$var$useAccordionContext] = $1bf158f521e1b1b4$var$createAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME);
73765
+ const $1bf158f521e1b1b4$var$AccordionImpl = /* @__PURE__ */ React__default.forwardRef((props, forwardedRef) => {
73766
+ const { __scopeAccordion, disabled, dir, orientation = "vertical", ...accordionProps } = props;
73767
+ const accordionRef = React__default.useRef(null);
73768
+ const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(accordionRef, forwardedRef);
73769
+ const getItems = $1bf158f521e1b1b4$var$useCollection(__scopeAccordion);
73770
+ const direction = $f631663db3294ace$export$b39126d51d94e6f3(dir);
73771
+ const isDirectionLTR = direction === "ltr";
73772
+ const handleKeyDown = $e42e1063c40fb3ef$export$b9ecd428b558ff10(props.onKeyDown, (event) => {
73773
+ var _triggerCollection$cl;
73774
+ if (!$1bf158f521e1b1b4$var$ACCORDION_KEYS.includes(event.key))
73775
+ return;
73776
+ const target = event.target;
73777
+ const triggerCollection = getItems().filter((item) => {
73778
+ var _item$ref$current;
73779
+ return !((_item$ref$current = item.ref.current) !== null && _item$ref$current !== void 0 && _item$ref$current.disabled);
73780
+ });
73781
+ const triggerIndex = triggerCollection.findIndex(
73782
+ (item) => item.ref.current === target
73783
+ );
73784
+ const triggerCount = triggerCollection.length;
73785
+ if (triggerIndex === -1)
73786
+ return;
73787
+ event.preventDefault();
73788
+ let nextIndex = triggerIndex;
73789
+ const homeIndex = 0;
73790
+ const endIndex = triggerCount - 1;
73791
+ const moveNext = () => {
73792
+ nextIndex = triggerIndex + 1;
73793
+ if (nextIndex > endIndex)
73794
+ nextIndex = homeIndex;
73795
+ };
73796
+ const movePrev = () => {
73797
+ nextIndex = triggerIndex - 1;
73798
+ if (nextIndex < homeIndex)
73799
+ nextIndex = endIndex;
73800
+ };
73801
+ switch (event.key) {
73802
+ case "Home":
73803
+ nextIndex = homeIndex;
73804
+ break;
73805
+ case "End":
73806
+ nextIndex = endIndex;
73807
+ break;
73808
+ case "ArrowRight":
73809
+ if (orientation === "horizontal") {
73810
+ if (isDirectionLTR)
73811
+ moveNext();
73812
+ else
73813
+ movePrev();
73814
+ }
73815
+ break;
73816
+ case "ArrowDown":
73817
+ if (orientation === "vertical")
73818
+ moveNext();
73819
+ break;
73820
+ case "ArrowLeft":
73821
+ if (orientation === "horizontal") {
73822
+ if (isDirectionLTR)
73823
+ movePrev();
73824
+ else
73825
+ moveNext();
73826
+ }
73827
+ break;
73828
+ case "ArrowUp":
73829
+ if (orientation === "vertical")
73830
+ movePrev();
73831
+ break;
73832
+ }
73833
+ const clampedIndex = nextIndex % triggerCount;
73834
+ (_triggerCollection$cl = triggerCollection[clampedIndex].ref.current) === null || _triggerCollection$cl === void 0 || _triggerCollection$cl.focus();
73835
+ });
73836
+ return /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionImplProvider, {
73837
+ scope: __scopeAccordion,
73838
+ disabled,
73839
+ direction: dir,
73840
+ orientation
73841
+ }, /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$Collection.Slot, {
73842
+ scope: __scopeAccordion
73843
+ }, /* @__PURE__ */ React__default.createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.div, _extends$2({}, accordionProps, {
73844
+ "data-orientation": orientation,
73845
+ ref: composedRefs,
73846
+ onKeyDown: disabled ? void 0 : handleKeyDown
73847
+ }))));
73848
+ });
73849
+ const $1bf158f521e1b1b4$var$ITEM_NAME = "AccordionItem";
73850
+ const [$1bf158f521e1b1b4$var$AccordionItemProvider, $1bf158f521e1b1b4$var$useAccordionItemContext] = $1bf158f521e1b1b4$var$createAccordionContext($1bf158f521e1b1b4$var$ITEM_NAME);
73851
+ const $1bf158f521e1b1b4$export$d99097c13d4dac9f = /* @__PURE__ */ React__default.forwardRef((props, forwardedRef) => {
73852
+ const { __scopeAccordion, value, ...accordionItemProps } = props;
73853
+ const accordionContext = $1bf158f521e1b1b4$var$useAccordionContext($1bf158f521e1b1b4$var$ITEM_NAME, __scopeAccordion);
73854
+ const valueContext = $1bf158f521e1b1b4$var$useAccordionValueContext($1bf158f521e1b1b4$var$ITEM_NAME, __scopeAccordion);
73855
+ const collapsibleScope = $1bf158f521e1b1b4$var$useCollapsibleScope(__scopeAccordion);
73856
+ const triggerId = $1746a345f3d73bb7$export$f680877a34711e37();
73857
+ const open1 = value && valueContext.value.includes(value) || false;
73858
+ const disabled = accordionContext.disabled || props.disabled;
73859
+ return /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$AccordionItemProvider, {
73860
+ scope: __scopeAccordion,
73861
+ open: open1,
73862
+ disabled,
73863
+ triggerId
73864
+ }, /* @__PURE__ */ React__default.createElement($409067139f391064$export$be92b6f5f03c0fe9, _extends$2({
73865
+ "data-orientation": accordionContext.orientation,
73866
+ "data-state": $1bf158f521e1b1b4$var$getState(open1)
73867
+ }, collapsibleScope, accordionItemProps, {
73868
+ ref: forwardedRef,
73869
+ disabled,
73870
+ open: open1,
73871
+ onOpenChange: (open) => {
73872
+ if (open)
73873
+ valueContext.onItemOpen(value);
73874
+ else
73875
+ valueContext.onItemClose(value);
73876
+ }
73877
+ })));
73878
+ });
73879
+ const $1bf158f521e1b1b4$var$HEADER_NAME = "AccordionHeader";
73880
+ const $1bf158f521e1b1b4$export$5e3e5deaaf81ee41 = /* @__PURE__ */ React__default.forwardRef((props, forwardedRef) => {
73881
+ const { __scopeAccordion, ...headerProps } = props;
73882
+ const accordionContext = $1bf158f521e1b1b4$var$useAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME, __scopeAccordion);
73883
+ const itemContext = $1bf158f521e1b1b4$var$useAccordionItemContext($1bf158f521e1b1b4$var$HEADER_NAME, __scopeAccordion);
73884
+ return /* @__PURE__ */ React__default.createElement($8927f6f2acc4f386$export$250ffa63cdc0d034.h3, _extends$2({
73885
+ "data-orientation": accordionContext.orientation,
73886
+ "data-state": $1bf158f521e1b1b4$var$getState(itemContext.open),
73887
+ "data-disabled": itemContext.disabled ? "" : void 0
73888
+ }, headerProps, {
73889
+ ref: forwardedRef
73890
+ }));
73891
+ });
73892
+ const $1bf158f521e1b1b4$var$TRIGGER_NAME = "AccordionTrigger";
73893
+ const $1bf158f521e1b1b4$export$94e939b1f85bdd73 = /* @__PURE__ */ React__default.forwardRef((props, forwardedRef) => {
73894
+ const { __scopeAccordion, ...triggerProps } = props;
73895
+ const accordionContext = $1bf158f521e1b1b4$var$useAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME, __scopeAccordion);
73896
+ const itemContext = $1bf158f521e1b1b4$var$useAccordionItemContext($1bf158f521e1b1b4$var$TRIGGER_NAME, __scopeAccordion);
73897
+ const collapsibleContext = $1bf158f521e1b1b4$var$useAccordionCollapsibleContext($1bf158f521e1b1b4$var$TRIGGER_NAME, __scopeAccordion);
73898
+ const collapsibleScope = $1bf158f521e1b1b4$var$useCollapsibleScope(__scopeAccordion);
73899
+ return /* @__PURE__ */ React__default.createElement($1bf158f521e1b1b4$var$Collection.ItemSlot, {
73900
+ scope: __scopeAccordion
73901
+ }, /* @__PURE__ */ React__default.createElement($409067139f391064$export$41fb9f06171c75f4, _extends$2({
73902
+ "aria-disabled": itemContext.open && !collapsibleContext.collapsible || void 0,
73903
+ "data-orientation": accordionContext.orientation,
73904
+ id: itemContext.triggerId
73905
+ }, collapsibleScope, triggerProps, {
73906
+ ref: forwardedRef
73907
+ })));
73908
+ });
73909
+ const $1bf158f521e1b1b4$var$CONTENT_NAME = "AccordionContent";
73910
+ const $1bf158f521e1b1b4$export$985b9a77379b54a0 = /* @__PURE__ */ React__default.forwardRef((props, forwardedRef) => {
73911
+ const { __scopeAccordion, ...contentProps } = props;
73912
+ const accordionContext = $1bf158f521e1b1b4$var$useAccordionContext($1bf158f521e1b1b4$var$ACCORDION_NAME, __scopeAccordion);
73913
+ const itemContext = $1bf158f521e1b1b4$var$useAccordionItemContext($1bf158f521e1b1b4$var$CONTENT_NAME, __scopeAccordion);
73914
+ const collapsibleScope = $1bf158f521e1b1b4$var$useCollapsibleScope(__scopeAccordion);
73915
+ return /* @__PURE__ */ React__default.createElement($409067139f391064$export$7c6e2c02157bb7d2, _extends$2({
73916
+ role: "region",
73917
+ "aria-labelledby": itemContext.triggerId,
73918
+ "data-orientation": accordionContext.orientation
73919
+ }, collapsibleScope, contentProps, {
73920
+ ref: forwardedRef,
73921
+ style: {
73922
+ ["--radix-accordion-content-height"]: "var(--radix-collapsible-content-height)",
73923
+ ["--radix-accordion-content-width"]: "var(--radix-collapsible-content-width)",
73924
+ ...props.style
73925
+ }
73926
+ }));
73927
+ });
73928
+ function $1bf158f521e1b1b4$var$getState(open) {
73929
+ return open ? "open" : "closed";
73930
+ }
73931
+ const $1bf158f521e1b1b4$export$be92b6f5f03c0fe9 = $1bf158f521e1b1b4$export$a766cd26d0d69044;
73932
+ const $1bf158f521e1b1b4$export$6d08773d2e66f8f2 = $1bf158f521e1b1b4$export$d99097c13d4dac9f;
73933
+ const $1bf158f521e1b1b4$export$8b251419efc915eb = $1bf158f521e1b1b4$export$5e3e5deaaf81ee41;
73934
+ const $1bf158f521e1b1b4$export$41fb9f06171c75f4 = $1bf158f521e1b1b4$export$94e939b1f85bdd73;
73935
+ const $1bf158f521e1b1b4$export$7c6e2c02157bb7d2 = $1bf158f521e1b1b4$export$985b9a77379b54a0;
73936
+ const Accordion = $1bf158f521e1b1b4$export$be92b6f5f03c0fe9;
73937
+ const AccordionItem = React$3.forwardRef(({ className: className2, ...props }, ref) => /* @__PURE__ */ jsx(
73938
+ $1bf158f521e1b1b4$export$6d08773d2e66f8f2,
73939
+ {
73940
+ ref,
73941
+ className: cn("border-b", className2),
73942
+ ...props
73943
+ }
73944
+ ));
73945
+ AccordionItem.displayName = "AccordionItem";
73946
+ const AccordionTrigger = React$3.forwardRef(({ className: className2, children, ...props }, ref) => /* @__PURE__ */ jsx($1bf158f521e1b1b4$export$8b251419efc915eb, { className: "flex", children: /* @__PURE__ */ jsxs(
73947
+ $1bf158f521e1b1b4$export$41fb9f06171c75f4,
73948
+ {
73949
+ ref,
73950
+ className: cn(
73951
+ "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
73952
+ className2
73953
+ ),
73954
+ ...props,
73955
+ children: [
73956
+ children,
73957
+ /* @__PURE__ */ jsx(ChevronDown, { className: "w-4 h-4 transition-transform duration-200 shrink-0" })
73958
+ ]
73959
+ }
73960
+ ) }));
73961
+ AccordionTrigger.displayName = $1bf158f521e1b1b4$export$41fb9f06171c75f4.displayName;
73962
+ const AccordionContent = React$3.forwardRef(({ className: className2, children, ...props }, ref) => /* @__PURE__ */ jsx(
73963
+ $1bf158f521e1b1b4$export$7c6e2c02157bb7d2,
73964
+ {
73965
+ ref,
73966
+ className: cn(
73967
+ "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
73968
+ className2
73969
+ ),
73970
+ ...props,
73971
+ children: /* @__PURE__ */ jsx("div", { className: "pt-0 pb-4", children })
73972
+ }
73973
+ ));
73974
+ AccordionContent.displayName = $1bf158f521e1b1b4$export$7c6e2c02157bb7d2.displayName;
73975
+ function ValPatches({
73976
+ api,
73977
+ patches: patchIdsByModule,
73978
+ onCommit,
73979
+ onCancel
73980
+ }) {
73981
+ const [loading, setLoading] = useState(false);
73982
+ useEffect(() => {
73983
+ const handler = (e) => {
73984
+ if (e.key === "Escape") {
73985
+ onCancel();
73986
+ }
73987
+ };
73988
+ window.addEventListener("keydown", handler);
73989
+ return () => window.removeEventListener("keydown", handler);
73990
+ }, []);
73991
+ return /* @__PURE__ */ jsxs(Container, { children: [
73992
+ /* @__PURE__ */ jsx("div", { className: "flex justify-end p-2", children: /* @__PURE__ */ jsx("button", { onClick: onCancel, children: /* @__PURE__ */ jsx(X, {}) }) }),
73993
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center h-full p-8 gap-y-5", children: [
73994
+ /* @__PURE__ */ jsx("h1", { className: "block font-sans text-xl font-bold", children: "Review changes" }),
73995
+ /* @__PURE__ */ jsx("ul", { children: Object.entries(patchIdsByModule).map(([moduleId, patchIds]) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Accordion, { type: "single", collapsible: true, children: /* @__PURE__ */ jsxs($1bf158f521e1b1b4$export$d99097c13d4dac9f, { value: moduleId, children: [
73996
+ /* @__PURE__ */ jsxs($1bf158f521e1b1b4$export$94e939b1f85bdd73, { className: "grid grid-cols-[1fr_min-content] gap-x-2", children: [
73997
+ /* @__PURE__ */ jsx("span", { children: moduleId }),
73998
+ /* @__PURE__ */ jsxs("span", { className: "flex", children: [
73999
+ /* @__PURE__ */ jsx(Diff, { size: 14 }),
74000
+ /* @__PURE__ */ jsx("span", { children: patchIds.length }),
74001
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(ChevronDown, { size: 14 }) })
74002
+ ] })
74003
+ ] }),
74004
+ /* @__PURE__ */ jsx(AccordionContent, { children: /* @__PURE__ */ jsx(Accordion, { type: "multiple", children: patchIds.map((patchId) => /* @__PURE__ */ jsxs($1bf158f521e1b1b4$export$d99097c13d4dac9f, { value: patchId, children: [
74005
+ /* @__PURE__ */ jsx($1bf158f521e1b1b4$export$94e939b1f85bdd73, { children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-x-5", children: [
74006
+ /* @__PURE__ */ jsx("span", { children: "Changed by: John Smith" }),
74007
+ /* @__PURE__ */ jsx("span", { children: "Changed at: 2024-01-04 13:25:00" }),
74008
+ /* @__PURE__ */ jsx(
74009
+ "img",
74010
+ {
74011
+ className: "h-[14px] w-[14px]",
74012
+ src: "https://randomuser.me/api/portraits/men/3.jpg"
74013
+ }
74014
+ ),
74015
+ /* @__PURE__ */ jsx(X, { size: 14 }),
74016
+ /* @__PURE__ */ jsx(ChevronDown, { size: 14 })
74017
+ ] }) }),
74018
+ /* @__PURE__ */ jsx(AccordionContent, { children: /* @__PURE__ */ jsx("div", { children: 'Changed to: "Foo bar"' }) })
74019
+ ] })) }) })
74020
+ ] }) }) }, moduleId)) }),
74021
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-x-4", children: [
74022
+ /* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: onCancel, children: "Cancel" }),
74023
+ /* @__PURE__ */ jsx(
74024
+ Button,
74025
+ {
74026
+ disabled: Object.keys(patchIdsByModule).length === 0 || loading,
74027
+ onClick: () => {
74028
+ setLoading(true);
74029
+ api.postCommit({ patches: patchIdsByModule }).then((res) => {
74030
+ if (result.isErr(res)) {
74031
+ console.error(res.error);
74032
+ alert("Could not commit patches: " + res.error.message);
74033
+ } else {
74034
+ console.log("Committed patches: ", res.value);
74035
+ onCommit();
74036
+ }
74037
+ }).finally(() => {
74038
+ setLoading(false);
74039
+ });
74040
+ },
74041
+ children: loading ? "Committing..." : "Commit"
74042
+ }
74043
+ )
74044
+ ] })
74045
+ ] })
74046
+ ] });
74047
+ }
74048
+ function Container({
74049
+ children
74050
+ }) {
74051
+ return /* @__PURE__ */ jsx("div", { className: "h-full w-full rounded-lg bg-gradient-to-br from-background/90 from-40% to-background backdrop-blur-lg text-primary drop-shadow-2xl", children });
74052
+ }
72678
74053
  const ValModulesContext = React__default.createContext(null);
72679
74054
  const useValModuleFromPath = (sourcePath) => {
72680
74055
  var _a, _b;
@@ -72804,6 +74179,7 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
72804
74179
  },
72805
74180
  []
72806
74181
  );
74182
+ const [patchModalOpen, setPatchModalOpen] = useState(false);
72807
74183
  const allModuleIds = Object.entries(modules || {}).flatMap(
72808
74184
  ([moduleId, valModule]) => {
72809
74185
  if ((valModule == null ? void 0 : valModule.schema) && (valModule == null ? void 0 : valModule.source)) {
@@ -72838,13 +74214,26 @@ Showing stack trace of: 1. ${fatalErrors[0].message}`;
72838
74214
  className: "relative w-full h-[100] overflow-hidden font-serif antialiased bg-background text-primary",
72839
74215
  "data-mode": theme2,
72840
74216
  children: [
74217
+ patchModalOpen && /* @__PURE__ */ jsx("div", { className: "fixed z-5 top-[16px] left-[16px] w-[calc(100%-32px-50px-16px)] h-[calc(100svh-32px)]", children: /* @__PURE__ */ jsx(
74218
+ ValPatches,
74219
+ {
74220
+ patches,
74221
+ api,
74222
+ onCancel: () => {
74223
+ setPatchModalOpen(false);
74224
+ },
74225
+ onCommit: () => {
74226
+ setPatchResetId((patchResetId) => patchResetId + 1);
74227
+ }
74228
+ }
74229
+ ) }),
72841
74230
  /* @__PURE__ */ jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsx(
72842
74231
  ValMenu,
72843
74232
  {
72844
74233
  direction: "vertical",
72845
74234
  api,
72846
74235
  patches,
72847
- onCommit: () => setPatchResetId((prev) => prev + 1)
74236
+ onClickPatches: () => setPatchModalOpen((prev) => !prev)
72848
74237
  }
72849
74238
  ) }),
72850
74239
  /* @__PURE__ */ jsx("div", { id: "val-fullscreen-hover", ref: hoverElemRef }),
@@ -73887,6 +75276,7 @@ function ValOverlay({
73887
75276
  },
73888
75277
  []
73889
75278
  );
75279
+ const [patchModalOpen, setPatchModalOpen] = useState(false);
73890
75280
  return /* @__PURE__ */ jsx(
73891
75281
  ValOverlayContext.Provider,
73892
75282
  {
@@ -73915,15 +75305,26 @@ function ValOverlay({
73915
75305
  // 1 less than the NextJS error z-index: 9000
73916
75306
  },
73917
75307
  children: [
75308
+ patchModalOpen && /* @__PURE__ */ jsx("div", { className: "fixed z-5 top-[16px] left-[16px] w-[calc(100%-32px-50px-16px)] h-[calc(100svh-32px)]", children: /* @__PURE__ */ jsx(
75309
+ ValPatches,
75310
+ {
75311
+ patches,
75312
+ api,
75313
+ onCancel: () => {
75314
+ setPatchModalOpen(false);
75315
+ },
75316
+ onCommit: () => {
75317
+ setPatchResetId((patchResetId) => patchResetId + 1);
75318
+ }
75319
+ }
75320
+ ) }),
73918
75321
  /* @__PURE__ */ jsx("div", { className: "fixed -translate-y-1/2 right-4 top-1/2 z-overlay", children: /* @__PURE__ */ jsx(
73919
75322
  ValMenu,
73920
75323
  {
73921
75324
  direction: "vertical",
73922
75325
  api,
73923
75326
  patches,
73924
- onCommit: () => {
73925
- setPatchResetId((patchResetId) => patchResetId + 1);
73926
- }
75327
+ onClickPatches: () => setPatchModalOpen((prev) => !prev)
73927
75328
  }
73928
75329
  ) }),
73929
75330
  session.status === "success" && session.data.enabled && (editMode === "hover" || editMode === "window") && hoverTarget.path && /* @__PURE__ */ jsx(
@@ -74049,28 +75450,40 @@ function ValHover({
74049
75450
  }) {
74050
75451
  var _a;
74051
75452
  const rect = (_a = hoverTarget.element) == null ? void 0 : _a.getBoundingClientRect();
75453
+ useEffect(() => {
75454
+ if (hoverTarget.path) {
75455
+ const clickListener = (ev) => {
75456
+ if (ev.target && ev.target instanceof HTMLElement && ev.target.id !== "val-ui")
75457
+ setWindowTarget({
75458
+ ...hoverTarget,
75459
+ path: hoverTarget.path,
75460
+ mouse: { x: ev.pageX, y: ev.pageY }
75461
+ });
75462
+ setEditMode("window");
75463
+ setHoverTarget(null);
75464
+ ev.stopPropagation();
75465
+ };
75466
+ const prevCursor = document.body.style.cursor;
75467
+ document.body.style.cursor = "pointer";
75468
+ document.body.addEventListener("click", clickListener);
75469
+ return () => {
75470
+ document.body.style.cursor = prevCursor;
75471
+ document.body.removeEventListener("click", clickListener);
75472
+ };
75473
+ }
75474
+ }, [hoverTarget]);
74052
75475
  return /* @__PURE__ */ jsx(
74053
75476
  "div",
74054
75477
  {
74055
75478
  id: "val-hover",
74056
75479
  className: "fixed border-2 cursor-pointer z-overlay-hover border-accent",
74057
75480
  style: {
75481
+ pointerEvents: "none",
74058
75482
  top: rect == null ? void 0 : rect.top,
74059
75483
  left: rect == null ? void 0 : rect.left,
74060
75484
  width: rect == null ? void 0 : rect.width,
74061
75485
  height: rect == null ? void 0 : rect.height
74062
75486
  },
74063
- onClick: (ev) => {
74064
- if (hoverTarget.path) {
74065
- setWindowTarget({
74066
- ...hoverTarget,
74067
- path: hoverTarget.path,
74068
- mouse: { x: ev.pageX, y: ev.pageY }
74069
- });
74070
- setEditMode("window");
74071
- setHoverTarget(null);
74072
- }
74073
- },
74074
75487
  children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end w-full text-xs", children: /* @__PURE__ */ jsx(
74075
75488
  "div",
74076
75489
  {
@@ -74089,20 +75502,31 @@ function useHoverTarget(editMode) {
74089
75502
  const [targetElement, setTargetElement] = useState();
74090
75503
  const [targetPath, setTargetPath] = useState();
74091
75504
  const [targetRect, setTargetRect] = useState();
75505
+ function tagElements(target) {
75506
+ if (target) {
75507
+ const sourcePaths = [];
75508
+ if (target.dataset.valPath) {
75509
+ sourcePaths.push(target.dataset.valPath);
75510
+ }
75511
+ for (const element of Array.from(target.querySelectorAll("*"))) {
75512
+ if (element instanceof HTMLElement) {
75513
+ const sourcePath = element.dataset.valPath;
75514
+ if (sourcePath) {
75515
+ sourcePaths.push(sourcePath);
75516
+ }
75517
+ }
75518
+ }
75519
+ if (sourcePaths.length > 0) {
75520
+ setTargetElement(target);
75521
+ setTargetPath(sourcePaths.join(","));
75522
+ setTargetRect(target.getBoundingClientRect());
75523
+ }
75524
+ }
75525
+ }
74092
75526
  useEffect(() => {
74093
75527
  if (editMode === "hover" || editMode === "window") {
74094
- let curr = null;
74095
75528
  const mouseOverListener = (e) => {
74096
- const target = e.target;
74097
- curr = target;
74098
- do {
74099
- if (curr == null ? void 0 : curr.dataset.valPath) {
74100
- setTargetElement(curr);
74101
- setTargetPath(curr.dataset.valPath);
74102
- setTargetRect(curr.getBoundingClientRect());
74103
- break;
74104
- }
74105
- } while (curr = (curr == null ? void 0 : curr.parentElement) || null);
75529
+ tagElements(e.target);
74106
75530
  };
74107
75531
  document.addEventListener("mouseover", mouseOverListener);
74108
75532
  return () => {
@@ -74177,7 +75601,7 @@ function useInitEditMode() {
74177
75601
  }, []);
74178
75602
  return [editMode, setEditMode];
74179
75603
  }
74180
- const styleCss = "/*\n Need to explicitly set config path, otherwise it may fail to resolve when\n built from outside packages/ui.\n*/\n\n/*\n ! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com\n*/\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: 'Roboto', sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\n\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n\n[hidden] {\n display: none;\n}\n\n/* :host for use with Shadow DOM, copied from the TailwindCSS prelude */\n\n:host {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n:root {\n --background: 110 10% 94%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 212.7 9.1% 76.3%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n/* dark theme */\n\n*[data-mode=\"dark\"] {\n --background: 0 0% 4%;\n --foreground: 210 40% 98%;\n\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n\n --muted: 178 23% 76%;\n --muted-foreground: 215 20.2% 65.1%;\n\n --accent: 159 60% 51%;\n --accent-foreground: 210 40% 98%;\n\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n\n* {\n border-color: hsl(var(--border));\n}\n\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.invisible {\n visibility: hidden;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.-left-2 {\n left: -0.5rem;\n}\n.-right-\\[10px\\] {\n right: -10px;\n}\n.-top-\\[10px\\] {\n top: -10px;\n}\n.-top-\\[4px\\] {\n top: -4px;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.left-0 {\n left: 0px;\n}\n.left-1 {\n left: 0.25rem;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-\\[50\\%\\] {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-1 {\n right: 0.25rem;\n}\n.right-4 {\n right: 1rem;\n}\n.right-\\[16px\\] {\n right: 16px;\n}\n.top-0 {\n top: 0px;\n}\n.top-1\\/2 {\n top: 50%;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[1\\] {\n z-index: 1;\n}\n.z-\\[5\\] {\n z-index: 5;\n}\n.z-overlay {\n z-index: 4;\n}\n.m-4 {\n margin: 1rem;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-my-2 {\n margin-top: -0.5rem;\n margin-bottom: -0.5rem;\n}\n.-my-\\[100px\\] {\n margin-top: -100px;\n margin-bottom: -100px;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.ml-0 {\n margin-left: 0px;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-\\[20px\\] {\n margin-left: 20px;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-11 {\n height: 2.75rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-9 {\n height: 2.25rem;\n}\n.h-\\[100\\] {\n height: 100;\n}\n.h-\\[12px\\] {\n height: 12px;\n}\n.h-\\[14px\\] {\n height: 14px;\n}\n.h-\\[18px\\] {\n height: 18px;\n}\n.h-\\[1px\\] {\n height: 1px;\n}\n.h-\\[20px\\] {\n height: 20px;\n}\n.h-\\[22px\\] {\n height: 22px;\n}\n.h-\\[24px\\] {\n height: 24px;\n}\n.h-\\[32px\\] {\n height: 32px;\n}\n.h-\\[50px\\] {\n height: 50px;\n}\n.h-\\[75px\\] {\n height: 75px;\n}\n.h-\\[9px\\] {\n height: 9px;\n}\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n.max-h-\\[500px\\] {\n max-height: 500px;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[300px\\] {\n min-height: 300px;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-0 {\n width: 0px;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-72 {\n width: 18rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-\\[12px\\] {\n width: 12px;\n}\n.w-\\[14px\\] {\n width: 14px;\n}\n.w-\\[1px\\] {\n width: 1px;\n}\n.w-\\[20px\\] {\n width: 20px;\n}\n.w-\\[24px\\] {\n width: 24px;\n}\n.w-\\[300px\\] {\n width: 300px;\n}\n.w-\\[32px\\] {\n width: 32px;\n}\n.w-\\[44px\\] {\n width: 44px;\n}\n.w-\\[9px\\] {\n width: 9px;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[320px\\] {\n min-width: 320px;\n}\n.min-w-\\[500px\\] {\n min-width: 500px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-\\[1000px\\] {\n max-width: 1000px;\n}\n.max-w-\\[10vw\\] {\n max-width: 10vw;\n}\n.max-w-\\[300px\\] {\n max-width: 300px;\n}\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-xl {\n max-width: 36rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-auto {\n flex: 1 1 auto;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[-90deg\\] {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[90deg\\] {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-col-resize {\n cursor: col-resize;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-se-resize {\n cursor: se-resize;\n}\n.touch-none {\n touch-action: none;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.resize {\n resize: both;\n}\n.list-decimal {\n list-style-type: decimal;\n}\n.list-disc {\n list-style-type: disc;\n}\n.grid-cols-\\[min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n.grid-rows-\\[1fr\\2c _min-content\\] {\n grid-template-rows: 1fr min-content;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-\\[0\\.5em\\] {\n gap: 0.5em;\n}\n.gap-\\[36px\\] {\n gap: 36px;\n}\n.gap-x-4 {\n -moz-column-gap: 1rem;\n column-gap: 1rem;\n}\n.gap-y-1 {\n row-gap: 0.25rem;\n}\n.gap-y-2 {\n row-gap: 0.5rem;\n}\n.gap-y-4 {\n row-gap: 1rem;\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-clip {\n overflow: clip;\n}\n.overflow-scroll {\n overflow: scroll;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-md {\n border-radius: calc(var(--radius) - 2px);\n}\n.rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n}\n.rounded-b-none {\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.rounded-b-sm {\n border-bottom-right-radius: calc(var(--radius) - 4px);\n border-bottom-left-radius: calc(var(--radius) - 4px);\n}\n.rounded-t-none {\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[2px\\] {\n border-width: 2px;\n}\n.border-x {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n.border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-0 {\n border-bottom-width: 0px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-r {\n border-right-width: 1px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-t-0 {\n border-top-width: 0px;\n}\n.border-accent {\n border-color: hsl(var(--accent));\n}\n.border-border {\n border-color: hsl(var(--border));\n}\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / var(--tw-border-opacity));\n}\n.border-input {\n border-color: hsl(var(--input));\n}\n.border-primary {\n border-color: hsl(var(--primary));\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-l-transparent {\n border-left-color: transparent;\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.bg-accent {\n background-color: hsl(var(--accent));\n}\n.bg-background {\n background-color: hsl(var(--background));\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\n}\n.bg-border {\n background-color: hsl(var(--border));\n}\n.bg-card {\n background-color: hsl(var(--card));\n}\n.bg-card-foreground {\n background-color: hsl(var(--card-foreground));\n}\n.bg-destructive {\n background-color: hsl(var(--destructive));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-muted {\n background-color: hsl(var(--muted));\n}\n.bg-popover {\n background-color: hsl(var(--popover));\n}\n.bg-primary {\n background-color: hsl(var(--primary));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-secondary {\n background-color: hsl(var(--secondary));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.from-background\\/90 {\n --tw-gradient-from: hsl(var(--background) / 0.9) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-card {\n --tw-gradient-from: hsl(var(--card)) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--card) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-transparent {\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-40\\% {\n --tw-gradient-from-position: 40%;\n}\n.from-50\\% {\n --tw-gradient-from-position: 50%;\n}\n.to-background {\n --tw-gradient-to: hsl(var(--background)) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.fill-white {\n fill: #fff;\n}\n.stroke-\\[2px\\] {\n stroke-width: 2px;\n}\n.stroke-\\[3px\\] {\n stroke-width: 3px;\n}\n.object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n}\n.p-0 {\n padding: 0px;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-\\[1px\\] {\n padding: 1px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.px-\\[24px\\] {\n padding-left: 24px;\n padding-right: 24px;\n}\n.px-\\[2px\\] {\n padding-left: 2px;\n padding-right: 2px;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.py-7 {\n padding-top: 1.75rem;\n padding-bottom: 1.75rem;\n}\n.py-\\[2px\\] {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pb-0 {\n padding-bottom: 0px;\n}\n.pb-20 {\n padding-bottom: 5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pb-8 {\n padding-bottom: 2rem;\n}\n.pl-0 {\n padding-left: 0px;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n.pl-\\[300px\\] {\n padding-left: 300px;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-start {\n text-align: start;\n}\n.font-sans {\n font-family: 'Roboto', sans-serif;\n}\n.font-serif {\n font-family: 'Space Mono', monospace;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n.text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-\\[12px\\] {\n font-weight: 12px;\n}\n.font-\\[400\\] {\n font-weight: 400;\n}\n.font-\\[500\\] {\n font-weight: 500;\n}\n.font-\\[550\\] {\n font-weight: 550;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.italic {\n font-style: italic;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-none {\n line-height: 1;\n}\n.tracking-\\[0\\.04em\\] {\n letter-spacing: 0.04em;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-accent {\n color: hsl(var(--accent));\n}\n.text-accent-foreground {\n color: hsl(var(--accent-foreground));\n}\n.text-background {\n color: hsl(var(--background));\n}\n.text-card-foreground {\n color: hsl(var(--card-foreground));\n}\n.text-current {\n color: currentColor;\n}\n.text-destructive {\n color: hsl(var(--destructive));\n}\n.text-destructive-foreground {\n color: hsl(var(--destructive-foreground));\n}\n.text-foreground {\n color: hsl(var(--foreground));\n}\n.text-muted {\n color: hsl(var(--muted));\n}\n.text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.text-popover-foreground {\n color: hsl(var(--popover-foreground));\n}\n.text-primary {\n color: hsl(var(--primary));\n}\n.text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.text-secondary-foreground {\n color: hsl(var(--secondary-foreground));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.mix-blend-difference {\n mix-blend-mode: difference;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.drop-shadow-2xl {\n --tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.drop-shadow-\\[0px_0px_12px_hsl\\(var\\(--accent\\)\\)\\] {\n --tw-drop-shadow: drop-shadow(0px 0px 12px hsl(var(--accent)));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(16px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes enter {\n\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n color: hsl(var(--muted-foreground));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n color: hsl(var(--muted-foreground));\n}\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n.hover\\:w-\\[2px\\]:hover {\n width: 2px;\n}\n.hover\\:w-\\[3px\\]:hover {\n width: 3px;\n}\n.hover\\:cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:rounded-lg:hover {\n border-radius: var(--radius);\n}\n.hover\\:bg-accent:hover {\n background-color: hsl(var(--accent));\n}\n.hover\\:bg-border:hover {\n background-color: hsl(var(--border));\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-primary:hover {\n background-color: hsl(var(--primary));\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:text-accent-foreground:hover {\n color: hsl(var(--accent-foreground));\n}\n.hover\\:text-muted-foreground:hover {\n color: hsl(var(--muted-foreground));\n}\n.hover\\:text-primary-foreground:hover {\n color: hsl(var(--primary-foreground));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.focus\\:bg-accent:focus {\n background-color: hsl(var(--accent));\n}\n.focus\\:bg-primary:focus {\n background-color: hsl(var(--primary));\n}\n.focus\\:text-accent-foreground:focus {\n color: hsl(var(--accent-foreground));\n}\n.focus\\:text-primary-foreground:focus {\n color: hsl(var(--primary-foreground));\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:outline-accent:focus-visible {\n outline-color: hsl(var(--accent));\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:text-background:disabled {\n color: hsl(var(--background));\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=\"true\"] {\n background-color: hsl(var(--accent));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=\"true\"] {\n color: hsl(var(--accent-foreground));\n}\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes accordion-up {\n\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n background-color: hsl(var(--background));\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=unchecked\\]\\:bg-primary[data-state=unchecked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n color: hsl(var(--foreground));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n color: hsl(var(--primary-foreground));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n color: hsl(var(--accent-foreground));\n}\n.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open] {\n color: hsl(var(--muted-foreground));\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n:is([data-mode=\"dark\"] .dark\\:border-white) {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n@media (min-width: 640px) {\n\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n\n .sm\\:block {\n display: block;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n\n .sm\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:relative {\n position: relative;\n }\n\n .md\\:flex {\n display: flex;\n }\n\n .md\\:hidden {\n display: none;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n .md\\:pl-0 {\n padding-left: 0px;\n }\n}\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-accent:has([aria-selected]) {\n background-color: hsl(var(--accent));\n}\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n}\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n}\n.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n color: hsl(var(--muted-foreground));\n}\n.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: 0px;\n}\n.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg {\n width: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input] {\n height: 3rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item] {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg {\n width: 1.25rem;\n}\n";
75604
+ const styleCss = "/*\n Need to explicitly set config path, otherwise it may fail to resolve when\n built from outside packages/ui.\n*/\n\n/*\n ! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com\n*/\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: 'Roboto', sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nReset default styling for dialogs.\n*/\n\ndialog {\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n\n[hidden] {\n display: none;\n}\n\n/* :host for use with Shadow DOM, copied from the TailwindCSS prelude */\n\n:host {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n:root {\n --background: 110 10% 94%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n\n --muted: 0 0% 57.3%;\n --muted-foreground: 215.4 16.3% 46.9%;\n\n --accent: 273 60% 51%;\n --accent-foreground: 110 10% 94%;\n\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 212.7 9.1% 76.3%;\n --ring: 222.2 84% 4.9%;\n\n --radius: 0.5rem;\n }\n\n/* dark theme */\n\n*[data-mode=\"dark\"] {\n --background: 0 0% 4%;\n --foreground: 210 40% 98%;\n\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n\n --muted: 178 23% 76%;\n --muted-foreground: 215 20.2% 65.1%;\n\n --accent: 159 60% 51%;\n --accent-foreground: 210 40% 98%;\n\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n\n* {\n border-color: hsl(var(--border));\n}\n\nbody {\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.invisible {\n visibility: hidden;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.-left-2 {\n left: -0.5rem;\n}\n.-right-\\[10px\\] {\n right: -10px;\n}\n.-top-\\[10px\\] {\n top: -10px;\n}\n.-top-\\[4px\\] {\n top: -4px;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.left-0 {\n left: 0px;\n}\n.left-1 {\n left: 0.25rem;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-\\[16px\\] {\n left: 16px;\n}\n.left-\\[50\\%\\] {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-1 {\n right: 0.25rem;\n}\n.right-4 {\n right: 1rem;\n}\n.right-\\[16px\\] {\n right: 16px;\n}\n.top-0 {\n top: 0px;\n}\n.top-1\\/2 {\n top: 50%;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[16px\\] {\n top: 16px;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.z-5 {\n z-index: 5;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[1\\] {\n z-index: 1;\n}\n.z-\\[5\\] {\n z-index: 5;\n}\n.z-overlay {\n z-index: 4;\n}\n.m-4 {\n margin: 1rem;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-my-2 {\n margin-top: -0.5rem;\n margin-bottom: -0.5rem;\n}\n.-my-\\[100px\\] {\n margin-top: -100px;\n margin-bottom: -100px;\n}\n.mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.ml-0 {\n margin-left: 0px;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-\\[20px\\] {\n margin-left: 20px;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-11 {\n height: 2.75rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-9 {\n height: 2.25rem;\n}\n.h-\\[100\\] {\n height: 100;\n}\n.h-\\[12px\\] {\n height: 12px;\n}\n.h-\\[14px\\] {\n height: 14px;\n}\n.h-\\[18px\\] {\n height: 18px;\n}\n.h-\\[1px\\] {\n height: 1px;\n}\n.h-\\[20px\\] {\n height: 20px;\n}\n.h-\\[22px\\] {\n height: 22px;\n}\n.h-\\[24px\\] {\n height: 24px;\n}\n.h-\\[32px\\] {\n height: 32px;\n}\n.h-\\[50px\\] {\n height: 50px;\n}\n.h-\\[75px\\] {\n height: 75px;\n}\n.h-\\[9px\\] {\n height: 9px;\n}\n.h-\\[calc\\(100svh-32px\\)\\] {\n height: calc(100svh - 32px);\n}\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n.max-h-\\[500px\\] {\n max-height: 500px;\n}\n.min-h-\\[100px\\] {\n min-height: 100px;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[300px\\] {\n min-height: 300px;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.w-0 {\n width: 0px;\n}\n.w-1\\/3 {\n width: 33.333333%;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-72 {\n width: 18rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-\\[12px\\] {\n width: 12px;\n}\n.w-\\[14px\\] {\n width: 14px;\n}\n.w-\\[1px\\] {\n width: 1px;\n}\n.w-\\[20px\\] {\n width: 20px;\n}\n.w-\\[24px\\] {\n width: 24px;\n}\n.w-\\[300px\\] {\n width: 300px;\n}\n.w-\\[32px\\] {\n width: 32px;\n}\n.w-\\[44px\\] {\n width: 44px;\n}\n.w-\\[9px\\] {\n width: 9px;\n}\n.w-\\[calc\\(100\\%-32px-50px-16px\\)\\] {\n width: calc(100% - 32px - 50px - 16px);\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-screen {\n width: 100vw;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[200px\\] {\n min-width: 200px;\n}\n.min-w-\\[320px\\] {\n min-width: 320px;\n}\n.min-w-\\[500px\\] {\n min-width: 500px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-\\[1000px\\] {\n max-width: 1000px;\n}\n.max-w-\\[10vw\\] {\n max-width: 10vw;\n}\n.max-w-\\[300px\\] {\n max-width: 300px;\n}\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-xl {\n max-width: 36rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-auto {\n flex: 1 1 auto;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.border-collapse {\n border-collapse: collapse;\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[-90deg\\] {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[90deg\\] {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-col-resize {\n cursor: col-resize;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-se-resize {\n cursor: se-resize;\n}\n.touch-none {\n touch-action: none;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.resize {\n resize: both;\n}\n.list-decimal {\n list-style-type: decimal;\n}\n.list-disc {\n list-style-type: disc;\n}\n.grid-cols-\\[1fr_min-content\\] {\n grid-template-columns: 1fr min-content;\n}\n.grid-cols-\\[min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n.grid-rows-\\[1fr\\2c _min-content\\] {\n grid-template-rows: 1fr min-content;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-5 {\n gap: 1.25rem;\n}\n.gap-\\[0\\.5em\\] {\n gap: 0.5em;\n}\n.gap-\\[36px\\] {\n gap: 36px;\n}\n.gap-x-2 {\n -moz-column-gap: 0.5rem;\n column-gap: 0.5rem;\n}\n.gap-x-4 {\n -moz-column-gap: 1rem;\n column-gap: 1rem;\n}\n.gap-x-5 {\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n}\n.gap-y-1 {\n row-gap: 0.25rem;\n}\n.gap-y-2 {\n row-gap: 0.5rem;\n}\n.gap-y-4 {\n row-gap: 1rem;\n}\n.gap-y-5 {\n row-gap: 1.25rem;\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-clip {\n overflow: clip;\n}\n.overflow-scroll {\n overflow: scroll;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-md {\n border-radius: calc(var(--radius) - 2px);\n}\n.rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n}\n.rounded-b-none {\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.rounded-b-sm {\n border-bottom-right-radius: calc(var(--radius) - 4px);\n border-bottom-left-radius: calc(var(--radius) - 4px);\n}\n.rounded-t-none {\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[2px\\] {\n border-width: 2px;\n}\n.border-x {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n.border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-0 {\n border-bottom-width: 0px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-r {\n border-right-width: 1px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-t-0 {\n border-top-width: 0px;\n}\n.border-accent {\n border-color: hsl(var(--accent));\n}\n.border-border {\n border-color: hsl(var(--border));\n}\n.border-gray-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / var(--tw-border-opacity));\n}\n.border-input {\n border-color: hsl(var(--input));\n}\n.border-primary {\n border-color: hsl(var(--primary));\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-l-transparent {\n border-left-color: transparent;\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.bg-accent {\n background-color: hsl(var(--accent));\n}\n.bg-background {\n background-color: hsl(var(--background));\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\n}\n.bg-border {\n background-color: hsl(var(--border));\n}\n.bg-card {\n background-color: hsl(var(--card));\n}\n.bg-card-foreground {\n background-color: hsl(var(--card-foreground));\n}\n.bg-destructive {\n background-color: hsl(var(--destructive));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n.bg-muted {\n background-color: hsl(var(--muted));\n}\n.bg-popover {\n background-color: hsl(var(--popover));\n}\n.bg-primary {\n background-color: hsl(var(--primary));\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n}\n.bg-secondary {\n background-color: hsl(var(--secondary));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.from-background\\/90 {\n --tw-gradient-from: hsl(var(--background) / 0.9) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-card {\n --tw-gradient-from: hsl(var(--card)) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--card) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-transparent {\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-40\\% {\n --tw-gradient-from-position: 40%;\n}\n.from-50\\% {\n --tw-gradient-from-position: 50%;\n}\n.to-background {\n --tw-gradient-to: hsl(var(--background)) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.fill-white {\n fill: #fff;\n}\n.stroke-\\[2px\\] {\n stroke-width: 2px;\n}\n.stroke-\\[3px\\] {\n stroke-width: 3px;\n}\n.object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n}\n.p-0 {\n padding: 0px;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-8 {\n padding: 2rem;\n}\n.p-\\[1px\\] {\n padding: 1px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.px-\\[24px\\] {\n padding-left: 24px;\n padding-right: 24px;\n}\n.px-\\[2px\\] {\n padding-left: 2px;\n padding-right: 2px;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.py-7 {\n padding-top: 1.75rem;\n padding-bottom: 1.75rem;\n}\n.py-\\[2px\\] {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pb-0 {\n padding-bottom: 0px;\n}\n.pb-20 {\n padding-bottom: 5rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pb-8 {\n padding-bottom: 2rem;\n}\n.pl-0 {\n padding-left: 0px;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n.pl-\\[300px\\] {\n padding-left: 300px;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-start {\n text-align: start;\n}\n.font-sans {\n font-family: 'Roboto', sans-serif;\n}\n.font-serif {\n font-family: 'Space Mono', monospace;\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n.text-\\[0\\.8rem\\] {\n font-size: 0.8rem;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-\\[12px\\] {\n font-weight: 12px;\n}\n.font-\\[400\\] {\n font-weight: 400;\n}\n.font-\\[500\\] {\n font-weight: 500;\n}\n.font-\\[550\\] {\n font-weight: 550;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.italic {\n font-style: italic;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-none {\n line-height: 1;\n}\n.tracking-\\[0\\.04em\\] {\n letter-spacing: 0.04em;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-accent {\n color: hsl(var(--accent));\n}\n.text-accent-foreground {\n color: hsl(var(--accent-foreground));\n}\n.text-background {\n color: hsl(var(--background));\n}\n.text-card-foreground {\n color: hsl(var(--card-foreground));\n}\n.text-current {\n color: currentColor;\n}\n.text-destructive {\n color: hsl(var(--destructive));\n}\n.text-destructive-foreground {\n color: hsl(var(--destructive-foreground));\n}\n.text-foreground {\n color: hsl(var(--foreground));\n}\n.text-muted {\n color: hsl(var(--muted));\n}\n.text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.text-popover-foreground {\n color: hsl(var(--popover-foreground));\n}\n.text-primary {\n color: hsl(var(--primary));\n}\n.text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.text-secondary-foreground {\n color: hsl(var(--secondary-foreground));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.mix-blend-difference {\n mix-blend-mode: difference;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.drop-shadow-2xl {\n --tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.drop-shadow-\\[0px_0px_12px_hsl\\(var\\(--accent\\)\\)\\] {\n --tw-drop-shadow: drop-shadow(0px 0px 12px hsl(var(--accent)));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(16px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n@keyframes enter {\n\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:text-sm::file-selector-button {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n color: hsl(var(--muted-foreground));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n color: hsl(var(--muted-foreground));\n}\n.focus-within\\:relative:focus-within {\n position: relative;\n}\n.hover\\:w-\\[2px\\]:hover {\n width: 2px;\n}\n.hover\\:w-\\[3px\\]:hover {\n width: 3px;\n}\n.hover\\:cursor-pointer:hover {\n cursor: pointer;\n}\n.hover\\:rounded-lg:hover {\n border-radius: var(--radius);\n}\n.hover\\:bg-accent:hover {\n background-color: hsl(var(--accent));\n}\n.hover\\:bg-border:hover {\n background-color: hsl(var(--border));\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-primary:hover {\n background-color: hsl(var(--primary));\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-red-700:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(185 28 28 / var(--tw-bg-opacity));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:text-accent-foreground:hover {\n color: hsl(var(--accent-foreground));\n}\n.hover\\:text-muted-foreground:hover {\n color: hsl(var(--muted-foreground));\n}\n.hover\\:text-primary-foreground:hover {\n color: hsl(var(--primary-foreground));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.focus\\:bg-accent:focus {\n background-color: hsl(var(--accent));\n}\n.focus\\:bg-primary:focus {\n background-color: hsl(var(--primary));\n}\n.focus\\:text-accent-foreground:focus {\n color: hsl(var(--accent-foreground));\n}\n.focus\\:text-primary-foreground:focus {\n color: hsl(var(--primary-foreground));\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:outline-accent:focus-visible {\n outline-color: hsl(var(--accent));\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-color: hsl(var(--ring));\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background));\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:text-background:disabled {\n color: hsl(var(--background));\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=\"true\"] {\n background-color: hsl(var(--accent));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=\"true\"] {\n color: hsl(var(--accent-foreground));\n}\n.aria-selected\\:opacity-100[aria-selected=\"true\"] {\n opacity: 1;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes accordion-up {\n\n from {\n height: var(--radix-accordion-content-height);\n }\n\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n\n from {\n height: 0;\n }\n\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n background-color: hsl(var(--background));\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n background-color: hsl(var(--accent));\n}\n.data-\\[state\\=unchecked\\]\\:bg-primary[data-state=unchecked] {\n background-color: hsl(var(--primary));\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n color: hsl(var(--foreground));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n color: hsl(var(--primary-foreground));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n color: hsl(var(--accent-foreground));\n}\n.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open] {\n color: hsl(var(--muted-foreground));\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n:is([data-mode=\"dark\"] .dark\\:border-white) {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n@media (min-width: 640px) {\n\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n\n .sm\\:block {\n display: block;\n }\n\n .sm\\:flex-row {\n flex-direction: row;\n }\n\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1rem * var(--tw-space-x-reverse));\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .sm\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n }\n\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n\n .sm\\:p-0 {\n padding: 0px;\n }\n\n .sm\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n\n .md\\:relative {\n position: relative;\n }\n\n .md\\:flex {\n display: flex;\n }\n\n .md\\:hidden {\n display: none;\n }\n\n .md\\:w-\\[300px\\] {\n width: 300px;\n }\n\n .md\\:w-full {\n width: 100%;\n }\n\n .md\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n .md\\:pl-0 {\n padding-left: 0px;\n }\n}\n.\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:bg-accent:has([aria-selected]) {\n background-color: hsl(var(--accent));\n}\n.first\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-l-md:has([aria-selected]):first-child {\n border-top-left-radius: calc(var(--radius) - 2px);\n border-bottom-left-radius: calc(var(--radius) - 2px);\n}\n.last\\:\\[\\&\\:has\\(\\[aria-selected\\]\\)\\]\\:rounded-r-md:has([aria-selected]):last-child {\n border-top-right-radius: calc(var(--radius) - 2px);\n border-bottom-right-radius: calc(var(--radius) - 2px);\n}\n.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n color: hsl(var(--muted-foreground));\n}\n.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: 0px;\n}\n.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg {\n width: 1.25rem;\n}\n.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input] {\n height: 3rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item] {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg {\n height: 1.25rem;\n}\n.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg {\n width: 1.25rem;\n}\n";
74181
75605
  function Style() {
74182
75606
  return /* @__PURE__ */ jsx("style", { children: styleCss });
74183
75607
  }