victor HF staff commited on
Commit
39eb06d
1 Parent(s): dac6daa

add playground

Browse files
.prettierrc CHANGED
@@ -3,6 +3,6 @@
3
  "singleQuote": true,
4
  "trailingComma": "none",
5
  "printWidth": 100,
6
- "plugins": ["prettier-plugin-svelte"],
7
  "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
8
  }
 
3
  "singleQuote": true,
4
  "trailingComma": "none",
5
  "printWidth": 100,
6
+ "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
7
  "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
8
  }
package.json CHANGED
@@ -15,13 +15,20 @@
15
  "@sveltejs/adapter-auto": "^3.0.0",
16
  "@sveltejs/kit": "^2.0.0",
17
  "@sveltejs/vite-plugin-svelte": "^3.0.0",
 
 
18
  "prettier": "^3.1.1",
19
  "prettier-plugin-svelte": "^3.1.2",
 
20
  "svelte": "^4.2.7",
21
  "svelte-check": "^3.6.0",
 
22
  "tslib": "^2.4.1",
23
  "typescript": "^5.0.0",
24
  "vite": "^5.0.3"
25
  },
26
- "type": "module"
 
 
 
27
  }
 
15
  "@sveltejs/adapter-auto": "^3.0.0",
16
  "@sveltejs/kit": "^2.0.0",
17
  "@sveltejs/vite-plugin-svelte": "^3.0.0",
18
+ "autoprefixer": "^10.4.19",
19
+ "postcss": "^8.4.38",
20
  "prettier": "^3.1.1",
21
  "prettier-plugin-svelte": "^3.1.2",
22
+ "prettier-plugin-tailwindcss": "^0.6.4",
23
  "svelte": "^4.2.7",
24
  "svelte-check": "^3.6.0",
25
+ "tailwindcss": "^3.4.4",
26
  "tslib": "^2.4.1",
27
  "typescript": "^5.0.0",
28
  "vite": "^5.0.3"
29
  },
30
+ "type": "module",
31
+ "dependencies": {
32
+ "@huggingface/inference": "^2.7.0"
33
+ }
34
  }
pnpm-lock.yaml CHANGED
@@ -4,6 +4,11 @@ settings:
4
  autoInstallPeers: true
5
  excludeLinksFromLockfile: false
6
 
 
 
 
 
 
7
  devDependencies:
8
  '@sveltejs/adapter-auto':
9
  specifier: ^3.0.0
@@ -14,18 +19,30 @@ devDependencies:
14
  '@sveltejs/vite-plugin-svelte':
15
  specifier: ^3.0.0
16
  version: 3.1.1(svelte@4.2.18)(vite@5.3.1)
 
 
 
 
 
 
17
  prettier:
18
  specifier: ^3.1.1
19
  version: 3.3.2
20
  prettier-plugin-svelte:
21
  specifier: ^3.1.2
22
  version: 3.2.5(prettier@3.3.2)(svelte@4.2.18)
 
 
 
23
  svelte:
24
  specifier: ^4.2.7
25
  version: 4.2.18
26
  svelte-check:
27
  specifier: ^3.6.0
28
- version: 3.8.4(svelte@4.2.18)
 
 
 
29
  tslib:
30
  specifier: ^2.4.1
31
  version: 2.6.3
@@ -38,6 +55,11 @@ devDependencies:
38
 
39
  packages:
40
 
 
 
 
 
 
41
  /@ampproject/remapping@2.3.0:
42
  resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
43
  engines: {node: '>=6.0.0'}
@@ -253,6 +275,29 @@ packages:
253
  dev: true
254
  optional: true
255
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
  /@jridgewell/gen-mapping@0.3.5:
257
  resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
258
  engines: {node: '>=6.0.0'}
@@ -283,6 +328,34 @@ packages:
283
  '@jridgewell/sourcemap-codec': 1.4.15
284
  dev: true
285
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  /@polka/url@1.0.0-next.25:
287
  resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
288
  dev: true
@@ -505,6 +578,32 @@ packages:
505
  hasBin: true
506
  dev: true
507
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
508
  /anymatch@3.1.3:
509
  resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
510
  engines: {node: '>= 8'}
@@ -513,12 +612,32 @@ packages:
513
  picomatch: 2.3.1
514
  dev: true
515
 
 
 
 
 
516
  /aria-query@5.3.0:
517
  resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
518
  dependencies:
519
  dequal: 2.0.3
520
  dev: true
521
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
522
  /axobject-query@4.0.0:
523
  resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==}
524
  dependencies:
@@ -541,6 +660,12 @@ packages:
541
  concat-map: 0.0.1
542
  dev: true
543
 
 
 
 
 
 
 
544
  /braces@3.0.3:
545
  resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
546
  engines: {node: '>=8'}
@@ -548,11 +673,31 @@ packages:
548
  fill-range: 7.1.1
549
  dev: true
550
 
 
 
 
 
 
 
 
 
 
 
 
551
  /buffer-crc32@1.0.0:
552
  resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==}
553
  engines: {node: '>=8.0.0'}
554
  dev: true
555
 
 
 
 
 
 
 
 
 
 
556
  /chokidar@3.6.0:
557
  resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
558
  engines: {node: '>= 8.10.0'}
@@ -578,6 +723,22 @@ packages:
578
  periscopic: 3.1.0
579
  dev: true
580
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
581
  /concat-map@0.0.1:
582
  resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
583
  dev: true
@@ -587,6 +748,15 @@ packages:
587
  engines: {node: '>= 0.6'}
588
  dev: true
589
 
 
 
 
 
 
 
 
 
 
590
  /css-tree@2.3.1:
591
  resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
592
  engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
@@ -595,6 +765,12 @@ packages:
595
  source-map-js: 1.2.0
596
  dev: true
597
 
 
 
 
 
 
 
598
  /debug@4.3.5:
599
  resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
600
  engines: {node: '>=6.0'}
@@ -626,6 +802,30 @@ packages:
626
  resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==}
627
  dev: true
628
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
629
  /es6-promise@3.3.1:
630
  resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
631
  dev: true
@@ -661,6 +861,11 @@ packages:
661
  '@esbuild/win32-x64': 0.21.5
662
  dev: true
663
 
 
 
 
 
 
664
  /esm-env@1.0.0:
665
  resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==}
666
  dev: true
@@ -671,6 +876,23 @@ packages:
671
  '@types/estree': 1.0.5
672
  dev: true
673
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
674
  /fill-range@7.1.1:
675
  resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
676
  engines: {node: '>=8'}
@@ -678,6 +900,18 @@ packages:
678
  to-regex-range: 5.0.1
679
  dev: true
680
 
 
 
 
 
 
 
 
 
 
 
 
 
681
  /fs.realpath@1.0.0:
682
  resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
683
  dev: true
@@ -690,6 +924,10 @@ packages:
690
  dev: true
691
  optional: true
692
 
 
 
 
 
693
  /glob-parent@5.1.2:
694
  resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
695
  engines: {node: '>= 6'}
@@ -697,6 +935,26 @@ packages:
697
  is-glob: 4.0.3
698
  dev: true
699
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
700
  /glob@7.2.3:
701
  resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
702
  deprecated: Glob versions prior to v9 are no longer supported
@@ -721,6 +979,13 @@ packages:
721
  resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
722
  dev: true
723
 
 
 
 
 
 
 
 
724
  /import-meta-resolve@4.1.0:
725
  resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
726
  dev: true
@@ -744,11 +1009,23 @@ packages:
744
  binary-extensions: 2.3.0
745
  dev: true
746
 
 
 
 
 
 
 
 
747
  /is-extglob@2.1.1:
748
  resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
749
  engines: {node: '>=0.10.0'}
750
  dev: true
751
 
 
 
 
 
 
752
  /is-glob@4.0.3:
753
  resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
754
  engines: {node: '>=0.10.0'}
@@ -767,15 +1044,52 @@ packages:
767
  '@types/estree': 1.0.5
768
  dev: true
769
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
770
  /kleur@4.1.5:
771
  resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
772
  engines: {node: '>=6'}
773
  dev: true
774
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
775
  /locate-character@3.0.0:
776
  resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
777
  dev: true
778
 
 
 
 
 
 
779
  /magic-string@0.30.10:
780
  resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
781
  dependencies:
@@ -786,6 +1100,19 @@ packages:
786
  resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
787
  dev: true
788
 
 
 
 
 
 
 
 
 
 
 
 
 
 
789
  /min-indent@1.0.1:
790
  resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
791
  engines: {node: '>=4'}
@@ -797,10 +1124,22 @@ packages:
797
  brace-expansion: 1.1.11
798
  dev: true
799
 
 
 
 
 
 
 
 
800
  /minimist@1.2.8:
801
  resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
802
  dev: true
803
 
 
 
 
 
 
804
  /mkdirp@0.5.6:
805
  resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
806
  hasBin: true
@@ -822,28 +1161,76 @@ packages:
822
  resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
823
  dev: true
824
 
 
 
 
 
 
 
 
 
825
  /nanoid@3.3.7:
826
  resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
827
  engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
828
  hasBin: true
829
  dev: true
830
 
 
 
 
 
831
  /normalize-path@3.0.0:
832
  resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
833
  engines: {node: '>=0.10.0'}
834
  dev: true
835
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
836
  /once@1.4.0:
837
  resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
838
  dependencies:
839
  wrappy: 1.0.2
840
  dev: true
841
 
 
 
 
 
842
  /path-is-absolute@1.0.1:
843
  resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
844
  engines: {node: '>=0.10.0'}
845
  dev: true
846
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
847
  /periscopic@3.1.0:
848
  resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
849
  dependencies:
@@ -861,6 +1248,77 @@ packages:
861
  engines: {node: '>=8.6'}
862
  dev: true
863
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
864
  /postcss@8.4.38:
865
  resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
866
  engines: {node: ^10 || ^12 || >=14}
@@ -880,12 +1338,78 @@ packages:
880
  svelte: 4.2.18
881
  dev: true
882
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
883
  /prettier@3.3.2:
884
  resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
885
  engines: {node: '>=14'}
886
  hasBin: true
887
  dev: true
888
 
 
 
 
 
 
 
 
 
 
 
889
  /readdirp@3.6.0:
890
  resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
891
  engines: {node: '>=8.10.0'}
@@ -893,6 +1417,20 @@ packages:
893
  picomatch: 2.3.1
894
  dev: true
895
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
896
  /rimraf@2.7.1:
897
  resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
898
  deprecated: Rimraf versions prior to v4 are no longer supported
@@ -927,6 +1465,12 @@ packages:
927
  fsevents: 2.3.3
928
  dev: true
929
 
 
 
 
 
 
 
930
  /sade@1.8.1:
931
  resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
932
  engines: {node: '>=6'}
@@ -947,6 +1491,23 @@ packages:
947
  resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
948
  dev: true
949
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
950
  /sirv@2.0.4:
951
  resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
952
  engines: {node: '>= 10'}
@@ -971,6 +1532,38 @@ packages:
971
  engines: {node: '>=0.10.0'}
972
  dev: true
973
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
974
  /strip-indent@3.0.0:
975
  resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
976
  engines: {node: '>=8'}
@@ -978,7 +1571,26 @@ packages:
978
  min-indent: 1.0.1
979
  dev: true
980
 
981
- /svelte-check@3.8.4(svelte@4.2.18):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
982
  resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==}
983
  hasBin: true
984
  peerDependencies:
@@ -989,7 +1601,7 @@ packages:
989
  picocolors: 1.0.1
990
  sade: 1.8.1
991
  svelte: 4.2.18
992
- svelte-preprocess: 5.1.4(svelte@4.2.18)(typescript@5.5.2)
993
  typescript: 5.5.2
994
  transitivePeerDependencies:
995
  - '@babel/core'
@@ -1012,7 +1624,7 @@ packages:
1012
  svelte: 4.2.18
1013
  dev: true
1014
 
1015
- /svelte-preprocess@5.1.4(svelte@4.2.18)(typescript@5.5.2):
1016
  resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==}
1017
  engines: {node: '>= 16.0.0'}
1018
  requiresBuild: true
@@ -1053,6 +1665,7 @@ packages:
1053
  '@types/pug': 2.0.10
1054
  detect-indent: 6.1.0
1055
  magic-string: 0.30.10
 
1056
  sorcery: 0.11.1
1057
  strip-indent: 3.0.0
1058
  svelte: 4.2.18
@@ -1079,6 +1692,50 @@ packages:
1079
  periscopic: 3.1.0
1080
  dev: true
1081
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1082
  /tiny-glob@0.2.9:
1083
  resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
1084
  dependencies:
@@ -1098,6 +1755,10 @@ packages:
1098
  engines: {node: '>=6'}
1099
  dev: true
1100
 
 
 
 
 
1101
  /tslib@2.6.3:
1102
  resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
1103
  dev: true
@@ -1108,6 +1769,21 @@ packages:
1108
  hasBin: true
1109
  dev: true
1110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1111
  /vite@5.3.1:
1112
  resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==}
1113
  engines: {node: ^18.0.0 || >=20.0.0}
@@ -1154,6 +1830,38 @@ packages:
1154
  vite: 5.3.1
1155
  dev: true
1156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1157
  /wrappy@1.0.2:
1158
  resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1159
  dev: true
 
 
 
 
 
 
 
4
  autoInstallPeers: true
5
  excludeLinksFromLockfile: false
6
 
7
+ dependencies:
8
+ '@huggingface/inference':
9
+ specifier: ^2.7.0
10
+ version: 2.7.0
11
+
12
  devDependencies:
13
  '@sveltejs/adapter-auto':
14
  specifier: ^3.0.0
 
19
  '@sveltejs/vite-plugin-svelte':
20
  specifier: ^3.0.0
21
  version: 3.1.1(svelte@4.2.18)(vite@5.3.1)
22
+ autoprefixer:
23
+ specifier: ^10.4.19
24
+ version: 10.4.19(postcss@8.4.38)
25
+ postcss:
26
+ specifier: ^8.4.38
27
+ version: 8.4.38
28
  prettier:
29
  specifier: ^3.1.1
30
  version: 3.3.2
31
  prettier-plugin-svelte:
32
  specifier: ^3.1.2
33
  version: 3.2.5(prettier@3.3.2)(svelte@4.2.18)
34
+ prettier-plugin-tailwindcss:
35
+ specifier: ^0.6.4
36
+ version: 0.6.5(prettier-plugin-svelte@3.2.5)(prettier@3.3.2)
37
  svelte:
38
  specifier: ^4.2.7
39
  version: 4.2.18
40
  svelte-check:
41
  specifier: ^3.6.0
42
+ version: 3.8.4(postcss@8.4.38)(svelte@4.2.18)
43
+ tailwindcss:
44
+ specifier: ^3.4.4
45
+ version: 3.4.4
46
  tslib:
47
  specifier: ^2.4.1
48
  version: 2.6.3
 
55
 
56
  packages:
57
 
58
+ /@alloc/quick-lru@5.2.0:
59
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
60
+ engines: {node: '>=10'}
61
+ dev: true
62
+
63
  /@ampproject/remapping@2.3.0:
64
  resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
65
  engines: {node: '>=6.0.0'}
 
275
  dev: true
276
  optional: true
277
 
278
+ /@huggingface/inference@2.7.0:
279
+ resolution: {integrity: sha512-u7Fn637Q3f7nUB1tajM4CgzhvoFQkOQr5W5Fm+2wT9ETgGoLBh25BLlYPTJRjAd2WY01s71v0lqAwNvHHCc3mg==}
280
+ engines: {node: '>=18'}
281
+ dependencies:
282
+ '@huggingface/tasks': 0.10.19
283
+ dev: false
284
+
285
+ /@huggingface/tasks@0.10.19:
286
+ resolution: {integrity: sha512-JnfdySzAXNvuL8q0QUt1952cebwcpTjUKt8Hq80OSksY5l8hTpN2OcBpjrJ3Zk91mQnqVNJ9LS3B7RfCQ7kW/A==}
287
+ dev: false
288
+
289
+ /@isaacs/cliui@8.0.2:
290
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
291
+ engines: {node: '>=12'}
292
+ dependencies:
293
+ string-width: 5.1.2
294
+ string-width-cjs: /string-width@4.2.3
295
+ strip-ansi: 7.1.0
296
+ strip-ansi-cjs: /strip-ansi@6.0.1
297
+ wrap-ansi: 8.1.0
298
+ wrap-ansi-cjs: /wrap-ansi@7.0.0
299
+ dev: true
300
+
301
  /@jridgewell/gen-mapping@0.3.5:
302
  resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
303
  engines: {node: '>=6.0.0'}
 
328
  '@jridgewell/sourcemap-codec': 1.4.15
329
  dev: true
330
 
331
+ /@nodelib/fs.scandir@2.1.5:
332
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
333
+ engines: {node: '>= 8'}
334
+ dependencies:
335
+ '@nodelib/fs.stat': 2.0.5
336
+ run-parallel: 1.2.0
337
+ dev: true
338
+
339
+ /@nodelib/fs.stat@2.0.5:
340
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
341
+ engines: {node: '>= 8'}
342
+ dev: true
343
+
344
+ /@nodelib/fs.walk@1.2.8:
345
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
346
+ engines: {node: '>= 8'}
347
+ dependencies:
348
+ '@nodelib/fs.scandir': 2.1.5
349
+ fastq: 1.17.1
350
+ dev: true
351
+
352
+ /@pkgjs/parseargs@0.11.0:
353
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
354
+ engines: {node: '>=14'}
355
+ requiresBuild: true
356
+ dev: true
357
+ optional: true
358
+
359
  /@polka/url@1.0.0-next.25:
360
  resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
361
  dev: true
 
578
  hasBin: true
579
  dev: true
580
 
581
+ /ansi-regex@5.0.1:
582
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
583
+ engines: {node: '>=8'}
584
+ dev: true
585
+
586
+ /ansi-regex@6.0.1:
587
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
588
+ engines: {node: '>=12'}
589
+ dev: true
590
+
591
+ /ansi-styles@4.3.0:
592
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
593
+ engines: {node: '>=8'}
594
+ dependencies:
595
+ color-convert: 2.0.1
596
+ dev: true
597
+
598
+ /ansi-styles@6.2.1:
599
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
600
+ engines: {node: '>=12'}
601
+ dev: true
602
+
603
+ /any-promise@1.3.0:
604
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
605
+ dev: true
606
+
607
  /anymatch@3.1.3:
608
  resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
609
  engines: {node: '>= 8'}
 
612
  picomatch: 2.3.1
613
  dev: true
614
 
615
+ /arg@5.0.2:
616
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
617
+ dev: true
618
+
619
  /aria-query@5.3.0:
620
  resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
621
  dependencies:
622
  dequal: 2.0.3
623
  dev: true
624
 
625
+ /autoprefixer@10.4.19(postcss@8.4.38):
626
+ resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==}
627
+ engines: {node: ^10 || ^12 || >=14}
628
+ hasBin: true
629
+ peerDependencies:
630
+ postcss: ^8.1.0
631
+ dependencies:
632
+ browserslist: 4.23.1
633
+ caniuse-lite: 1.0.30001638
634
+ fraction.js: 4.3.7
635
+ normalize-range: 0.1.2
636
+ picocolors: 1.0.1
637
+ postcss: 8.4.38
638
+ postcss-value-parser: 4.2.0
639
+ dev: true
640
+
641
  /axobject-query@4.0.0:
642
  resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==}
643
  dependencies:
 
660
  concat-map: 0.0.1
661
  dev: true
662
 
663
+ /brace-expansion@2.0.1:
664
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
665
+ dependencies:
666
+ balanced-match: 1.0.2
667
+ dev: true
668
+
669
  /braces@3.0.3:
670
  resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
671
  engines: {node: '>=8'}
 
673
  fill-range: 7.1.1
674
  dev: true
675
 
676
+ /browserslist@4.23.1:
677
+ resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==}
678
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
679
+ hasBin: true
680
+ dependencies:
681
+ caniuse-lite: 1.0.30001638
682
+ electron-to-chromium: 1.4.812
683
+ node-releases: 2.0.14
684
+ update-browserslist-db: 1.0.16(browserslist@4.23.1)
685
+ dev: true
686
+
687
  /buffer-crc32@1.0.0:
688
  resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==}
689
  engines: {node: '>=8.0.0'}
690
  dev: true
691
 
692
+ /camelcase-css@2.0.1:
693
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
694
+ engines: {node: '>= 6'}
695
+ dev: true
696
+
697
+ /caniuse-lite@1.0.30001638:
698
+ resolution: {integrity: sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==}
699
+ dev: true
700
+
701
  /chokidar@3.6.0:
702
  resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
703
  engines: {node: '>= 8.10.0'}
 
723
  periscopic: 3.1.0
724
  dev: true
725
 
726
+ /color-convert@2.0.1:
727
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
728
+ engines: {node: '>=7.0.0'}
729
+ dependencies:
730
+ color-name: 1.1.4
731
+ dev: true
732
+
733
+ /color-name@1.1.4:
734
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
735
+ dev: true
736
+
737
+ /commander@4.1.1:
738
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
739
+ engines: {node: '>= 6'}
740
+ dev: true
741
+
742
  /concat-map@0.0.1:
743
  resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
744
  dev: true
 
748
  engines: {node: '>= 0.6'}
749
  dev: true
750
 
751
+ /cross-spawn@7.0.3:
752
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
753
+ engines: {node: '>= 8'}
754
+ dependencies:
755
+ path-key: 3.1.1
756
+ shebang-command: 2.0.0
757
+ which: 2.0.2
758
+ dev: true
759
+
760
  /css-tree@2.3.1:
761
  resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
762
  engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
 
765
  source-map-js: 1.2.0
766
  dev: true
767
 
768
+ /cssesc@3.0.0:
769
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
770
+ engines: {node: '>=4'}
771
+ hasBin: true
772
+ dev: true
773
+
774
  /debug@4.3.5:
775
  resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
776
  engines: {node: '>=6.0'}
 
802
  resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==}
803
  dev: true
804
 
805
+ /didyoumean@1.2.2:
806
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
807
+ dev: true
808
+
809
+ /dlv@1.1.3:
810
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
811
+ dev: true
812
+
813
+ /eastasianwidth@0.2.0:
814
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
815
+ dev: true
816
+
817
+ /electron-to-chromium@1.4.812:
818
+ resolution: {integrity: sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg==}
819
+ dev: true
820
+
821
+ /emoji-regex@8.0.0:
822
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
823
+ dev: true
824
+
825
+ /emoji-regex@9.2.2:
826
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
827
+ dev: true
828
+
829
  /es6-promise@3.3.1:
830
  resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
831
  dev: true
 
861
  '@esbuild/win32-x64': 0.21.5
862
  dev: true
863
 
864
+ /escalade@3.1.2:
865
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
866
+ engines: {node: '>=6'}
867
+ dev: true
868
+
869
  /esm-env@1.0.0:
870
  resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==}
871
  dev: true
 
876
  '@types/estree': 1.0.5
877
  dev: true
878
 
879
+ /fast-glob@3.3.2:
880
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
881
+ engines: {node: '>=8.6.0'}
882
+ dependencies:
883
+ '@nodelib/fs.stat': 2.0.5
884
+ '@nodelib/fs.walk': 1.2.8
885
+ glob-parent: 5.1.2
886
+ merge2: 1.4.1
887
+ micromatch: 4.0.7
888
+ dev: true
889
+
890
+ /fastq@1.17.1:
891
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
892
+ dependencies:
893
+ reusify: 1.0.4
894
+ dev: true
895
+
896
  /fill-range@7.1.1:
897
  resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
898
  engines: {node: '>=8'}
 
900
  to-regex-range: 5.0.1
901
  dev: true
902
 
903
+ /foreground-child@3.2.1:
904
+ resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
905
+ engines: {node: '>=14'}
906
+ dependencies:
907
+ cross-spawn: 7.0.3
908
+ signal-exit: 4.1.0
909
+ dev: true
910
+
911
+ /fraction.js@4.3.7:
912
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
913
+ dev: true
914
+
915
  /fs.realpath@1.0.0:
916
  resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
917
  dev: true
 
924
  dev: true
925
  optional: true
926
 
927
+ /function-bind@1.1.2:
928
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
929
+ dev: true
930
+
931
  /glob-parent@5.1.2:
932
  resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
933
  engines: {node: '>= 6'}
 
935
  is-glob: 4.0.3
936
  dev: true
937
 
938
+ /glob-parent@6.0.2:
939
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
940
+ engines: {node: '>=10.13.0'}
941
+ dependencies:
942
+ is-glob: 4.0.3
943
+ dev: true
944
+
945
+ /glob@10.4.2:
946
+ resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==}
947
+ engines: {node: '>=16 || 14 >=14.18'}
948
+ hasBin: true
949
+ dependencies:
950
+ foreground-child: 3.2.1
951
+ jackspeak: 3.4.0
952
+ minimatch: 9.0.5
953
+ minipass: 7.1.2
954
+ package-json-from-dist: 1.0.0
955
+ path-scurry: 1.11.1
956
+ dev: true
957
+
958
  /glob@7.2.3:
959
  resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
960
  deprecated: Glob versions prior to v9 are no longer supported
 
979
  resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
980
  dev: true
981
 
982
+ /hasown@2.0.2:
983
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
984
+ engines: {node: '>= 0.4'}
985
+ dependencies:
986
+ function-bind: 1.1.2
987
+ dev: true
988
+
989
  /import-meta-resolve@4.1.0:
990
  resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
991
  dev: true
 
1009
  binary-extensions: 2.3.0
1010
  dev: true
1011
 
1012
+ /is-core-module@2.14.0:
1013
+ resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
1014
+ engines: {node: '>= 0.4'}
1015
+ dependencies:
1016
+ hasown: 2.0.2
1017
+ dev: true
1018
+
1019
  /is-extglob@2.1.1:
1020
  resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1021
  engines: {node: '>=0.10.0'}
1022
  dev: true
1023
 
1024
+ /is-fullwidth-code-point@3.0.0:
1025
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1026
+ engines: {node: '>=8'}
1027
+ dev: true
1028
+
1029
  /is-glob@4.0.3:
1030
  resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1031
  engines: {node: '>=0.10.0'}
 
1044
  '@types/estree': 1.0.5
1045
  dev: true
1046
 
1047
+ /isexe@2.0.0:
1048
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1049
+ dev: true
1050
+
1051
+ /jackspeak@3.4.0:
1052
+ resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
1053
+ engines: {node: '>=14'}
1054
+ dependencies:
1055
+ '@isaacs/cliui': 8.0.2
1056
+ optionalDependencies:
1057
+ '@pkgjs/parseargs': 0.11.0
1058
+ dev: true
1059
+
1060
+ /jiti@1.21.6:
1061
+ resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
1062
+ hasBin: true
1063
+ dev: true
1064
+
1065
  /kleur@4.1.5:
1066
  resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
1067
  engines: {node: '>=6'}
1068
  dev: true
1069
 
1070
+ /lilconfig@2.1.0:
1071
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1072
+ engines: {node: '>=10'}
1073
+ dev: true
1074
+
1075
+ /lilconfig@3.1.2:
1076
+ resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
1077
+ engines: {node: '>=14'}
1078
+ dev: true
1079
+
1080
+ /lines-and-columns@1.2.4:
1081
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1082
+ dev: true
1083
+
1084
  /locate-character@3.0.0:
1085
  resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
1086
  dev: true
1087
 
1088
+ /lru-cache@10.2.2:
1089
+ resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
1090
+ engines: {node: 14 || >=16.14}
1091
+ dev: true
1092
+
1093
  /magic-string@0.30.10:
1094
  resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
1095
  dependencies:
 
1100
  resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
1101
  dev: true
1102
 
1103
+ /merge2@1.4.1:
1104
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1105
+ engines: {node: '>= 8'}
1106
+ dev: true
1107
+
1108
+ /micromatch@4.0.7:
1109
+ resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
1110
+ engines: {node: '>=8.6'}
1111
+ dependencies:
1112
+ braces: 3.0.3
1113
+ picomatch: 2.3.1
1114
+ dev: true
1115
+
1116
  /min-indent@1.0.1:
1117
  resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
1118
  engines: {node: '>=4'}
 
1124
  brace-expansion: 1.1.11
1125
  dev: true
1126
 
1127
+ /minimatch@9.0.5:
1128
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1129
+ engines: {node: '>=16 || 14 >=14.17'}
1130
+ dependencies:
1131
+ brace-expansion: 2.0.1
1132
+ dev: true
1133
+
1134
  /minimist@1.2.8:
1135
  resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1136
  dev: true
1137
 
1138
+ /minipass@7.1.2:
1139
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1140
+ engines: {node: '>=16 || 14 >=14.17'}
1141
+ dev: true
1142
+
1143
  /mkdirp@0.5.6:
1144
  resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
1145
  hasBin: true
 
1161
  resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1162
  dev: true
1163
 
1164
+ /mz@2.7.0:
1165
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1166
+ dependencies:
1167
+ any-promise: 1.3.0
1168
+ object-assign: 4.1.1
1169
+ thenify-all: 1.6.0
1170
+ dev: true
1171
+
1172
  /nanoid@3.3.7:
1173
  resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1174
  engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1175
  hasBin: true
1176
  dev: true
1177
 
1178
+ /node-releases@2.0.14:
1179
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
1180
+ dev: true
1181
+
1182
  /normalize-path@3.0.0:
1183
  resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1184
  engines: {node: '>=0.10.0'}
1185
  dev: true
1186
 
1187
+ /normalize-range@0.1.2:
1188
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
1189
+ engines: {node: '>=0.10.0'}
1190
+ dev: true
1191
+
1192
+ /object-assign@4.1.1:
1193
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1194
+ engines: {node: '>=0.10.0'}
1195
+ dev: true
1196
+
1197
+ /object-hash@3.0.0:
1198
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
1199
+ engines: {node: '>= 6'}
1200
+ dev: true
1201
+
1202
  /once@1.4.0:
1203
  resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1204
  dependencies:
1205
  wrappy: 1.0.2
1206
  dev: true
1207
 
1208
+ /package-json-from-dist@1.0.0:
1209
+ resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
1210
+ dev: true
1211
+
1212
  /path-is-absolute@1.0.1:
1213
  resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1214
  engines: {node: '>=0.10.0'}
1215
  dev: true
1216
 
1217
+ /path-key@3.1.1:
1218
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1219
+ engines: {node: '>=8'}
1220
+ dev: true
1221
+
1222
+ /path-parse@1.0.7:
1223
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1224
+ dev: true
1225
+
1226
+ /path-scurry@1.11.1:
1227
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
1228
+ engines: {node: '>=16 || 14 >=14.18'}
1229
+ dependencies:
1230
+ lru-cache: 10.2.2
1231
+ minipass: 7.1.2
1232
+ dev: true
1233
+
1234
  /periscopic@3.1.0:
1235
  resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
1236
  dependencies:
 
1248
  engines: {node: '>=8.6'}
1249
  dev: true
1250
 
1251
+ /pify@2.3.0:
1252
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1253
+ engines: {node: '>=0.10.0'}
1254
+ dev: true
1255
+
1256
+ /pirates@4.0.6:
1257
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1258
+ engines: {node: '>= 6'}
1259
+ dev: true
1260
+
1261
+ /postcss-import@15.1.0(postcss@8.4.38):
1262
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
1263
+ engines: {node: '>=14.0.0'}
1264
+ peerDependencies:
1265
+ postcss: ^8.0.0
1266
+ dependencies:
1267
+ postcss: 8.4.38
1268
+ postcss-value-parser: 4.2.0
1269
+ read-cache: 1.0.0
1270
+ resolve: 1.22.8
1271
+ dev: true
1272
+
1273
+ /postcss-js@4.0.1(postcss@8.4.38):
1274
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
1275
+ engines: {node: ^12 || ^14 || >= 16}
1276
+ peerDependencies:
1277
+ postcss: ^8.4.21
1278
+ dependencies:
1279
+ camelcase-css: 2.0.1
1280
+ postcss: 8.4.38
1281
+ dev: true
1282
+
1283
+ /postcss-load-config@4.0.2(postcss@8.4.38):
1284
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
1285
+ engines: {node: '>= 14'}
1286
+ peerDependencies:
1287
+ postcss: '>=8.0.9'
1288
+ ts-node: '>=9.0.0'
1289
+ peerDependenciesMeta:
1290
+ postcss:
1291
+ optional: true
1292
+ ts-node:
1293
+ optional: true
1294
+ dependencies:
1295
+ lilconfig: 3.1.2
1296
+ postcss: 8.4.38
1297
+ yaml: 2.4.5
1298
+ dev: true
1299
+
1300
+ /postcss-nested@6.0.1(postcss@8.4.38):
1301
+ resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
1302
+ engines: {node: '>=12.0'}
1303
+ peerDependencies:
1304
+ postcss: ^8.2.14
1305
+ dependencies:
1306
+ postcss: 8.4.38
1307
+ postcss-selector-parser: 6.1.0
1308
+ dev: true
1309
+
1310
+ /postcss-selector-parser@6.1.0:
1311
+ resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==}
1312
+ engines: {node: '>=4'}
1313
+ dependencies:
1314
+ cssesc: 3.0.0
1315
+ util-deprecate: 1.0.2
1316
+ dev: true
1317
+
1318
+ /postcss-value-parser@4.2.0:
1319
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1320
+ dev: true
1321
+
1322
  /postcss@8.4.38:
1323
  resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
1324
  engines: {node: ^10 || ^12 || >=14}
 
1338
  svelte: 4.2.18
1339
  dev: true
1340
 
1341
+ /prettier-plugin-tailwindcss@0.6.5(prettier-plugin-svelte@3.2.5)(prettier@3.3.2):
1342
+ resolution: {integrity: sha512-axfeOArc/RiGHjOIy9HytehlC0ZLeMaqY09mm8YCkMzznKiDkwFzOpBvtuhuv3xG5qB73+Mj7OCe2j/L1ryfuQ==}
1343
+ engines: {node: '>=14.21.3'}
1344
+ peerDependencies:
1345
+ '@ianvs/prettier-plugin-sort-imports': '*'
1346
+ '@prettier/plugin-pug': '*'
1347
+ '@shopify/prettier-plugin-liquid': '*'
1348
+ '@trivago/prettier-plugin-sort-imports': '*'
1349
+ '@zackad/prettier-plugin-twig-melody': '*'
1350
+ prettier: ^3.0
1351
+ prettier-plugin-astro: '*'
1352
+ prettier-plugin-css-order: '*'
1353
+ prettier-plugin-import-sort: '*'
1354
+ prettier-plugin-jsdoc: '*'
1355
+ prettier-plugin-marko: '*'
1356
+ prettier-plugin-organize-attributes: '*'
1357
+ prettier-plugin-organize-imports: '*'
1358
+ prettier-plugin-sort-imports: '*'
1359
+ prettier-plugin-style-order: '*'
1360
+ prettier-plugin-svelte: '*'
1361
+ peerDependenciesMeta:
1362
+ '@ianvs/prettier-plugin-sort-imports':
1363
+ optional: true
1364
+ '@prettier/plugin-pug':
1365
+ optional: true
1366
+ '@shopify/prettier-plugin-liquid':
1367
+ optional: true
1368
+ '@trivago/prettier-plugin-sort-imports':
1369
+ optional: true
1370
+ '@zackad/prettier-plugin-twig-melody':
1371
+ optional: true
1372
+ prettier-plugin-astro:
1373
+ optional: true
1374
+ prettier-plugin-css-order:
1375
+ optional: true
1376
+ prettier-plugin-import-sort:
1377
+ optional: true
1378
+ prettier-plugin-jsdoc:
1379
+ optional: true
1380
+ prettier-plugin-marko:
1381
+ optional: true
1382
+ prettier-plugin-organize-attributes:
1383
+ optional: true
1384
+ prettier-plugin-organize-imports:
1385
+ optional: true
1386
+ prettier-plugin-sort-imports:
1387
+ optional: true
1388
+ prettier-plugin-style-order:
1389
+ optional: true
1390
+ prettier-plugin-svelte:
1391
+ optional: true
1392
+ dependencies:
1393
+ prettier: 3.3.2
1394
+ prettier-plugin-svelte: 3.2.5(prettier@3.3.2)(svelte@4.2.18)
1395
+ dev: true
1396
+
1397
  /prettier@3.3.2:
1398
  resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
1399
  engines: {node: '>=14'}
1400
  hasBin: true
1401
  dev: true
1402
 
1403
+ /queue-microtask@1.2.3:
1404
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1405
+ dev: true
1406
+
1407
+ /read-cache@1.0.0:
1408
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
1409
+ dependencies:
1410
+ pify: 2.3.0
1411
+ dev: true
1412
+
1413
  /readdirp@3.6.0:
1414
  resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1415
  engines: {node: '>=8.10.0'}
 
1417
  picomatch: 2.3.1
1418
  dev: true
1419
 
1420
+ /resolve@1.22.8:
1421
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1422
+ hasBin: true
1423
+ dependencies:
1424
+ is-core-module: 2.14.0
1425
+ path-parse: 1.0.7
1426
+ supports-preserve-symlinks-flag: 1.0.0
1427
+ dev: true
1428
+
1429
+ /reusify@1.0.4:
1430
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1431
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1432
+ dev: true
1433
+
1434
  /rimraf@2.7.1:
1435
  resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
1436
  deprecated: Rimraf versions prior to v4 are no longer supported
 
1465
  fsevents: 2.3.3
1466
  dev: true
1467
 
1468
+ /run-parallel@1.2.0:
1469
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1470
+ dependencies:
1471
+ queue-microtask: 1.2.3
1472
+ dev: true
1473
+
1474
  /sade@1.8.1:
1475
  resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
1476
  engines: {node: '>=6'}
 
1491
  resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
1492
  dev: true
1493
 
1494
+ /shebang-command@2.0.0:
1495
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1496
+ engines: {node: '>=8'}
1497
+ dependencies:
1498
+ shebang-regex: 3.0.0
1499
+ dev: true
1500
+
1501
+ /shebang-regex@3.0.0:
1502
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1503
+ engines: {node: '>=8'}
1504
+ dev: true
1505
+
1506
+ /signal-exit@4.1.0:
1507
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1508
+ engines: {node: '>=14'}
1509
+ dev: true
1510
+
1511
  /sirv@2.0.4:
1512
  resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
1513
  engines: {node: '>= 10'}
 
1532
  engines: {node: '>=0.10.0'}
1533
  dev: true
1534
 
1535
+ /string-width@4.2.3:
1536
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1537
+ engines: {node: '>=8'}
1538
+ dependencies:
1539
+ emoji-regex: 8.0.0
1540
+ is-fullwidth-code-point: 3.0.0
1541
+ strip-ansi: 6.0.1
1542
+ dev: true
1543
+
1544
+ /string-width@5.1.2:
1545
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1546
+ engines: {node: '>=12'}
1547
+ dependencies:
1548
+ eastasianwidth: 0.2.0
1549
+ emoji-regex: 9.2.2
1550
+ strip-ansi: 7.1.0
1551
+ dev: true
1552
+
1553
+ /strip-ansi@6.0.1:
1554
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1555
+ engines: {node: '>=8'}
1556
+ dependencies:
1557
+ ansi-regex: 5.0.1
1558
+ dev: true
1559
+
1560
+ /strip-ansi@7.1.0:
1561
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1562
+ engines: {node: '>=12'}
1563
+ dependencies:
1564
+ ansi-regex: 6.0.1
1565
+ dev: true
1566
+
1567
  /strip-indent@3.0.0:
1568
  resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
1569
  engines: {node: '>=8'}
 
1571
  min-indent: 1.0.1
1572
  dev: true
1573
 
1574
+ /sucrase@3.35.0:
1575
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
1576
+ engines: {node: '>=16 || 14 >=14.17'}
1577
+ hasBin: true
1578
+ dependencies:
1579
+ '@jridgewell/gen-mapping': 0.3.5
1580
+ commander: 4.1.1
1581
+ glob: 10.4.2
1582
+ lines-and-columns: 1.2.4
1583
+ mz: 2.7.0
1584
+ pirates: 4.0.6
1585
+ ts-interface-checker: 0.1.13
1586
+ dev: true
1587
+
1588
+ /supports-preserve-symlinks-flag@1.0.0:
1589
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1590
+ engines: {node: '>= 0.4'}
1591
+ dev: true
1592
+
1593
+ /svelte-check@3.8.4(postcss@8.4.38)(svelte@4.2.18):
1594
  resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==}
1595
  hasBin: true
1596
  peerDependencies:
 
1601
  picocolors: 1.0.1
1602
  sade: 1.8.1
1603
  svelte: 4.2.18
1604
+ svelte-preprocess: 5.1.4(postcss@8.4.38)(svelte@4.2.18)(typescript@5.5.2)
1605
  typescript: 5.5.2
1606
  transitivePeerDependencies:
1607
  - '@babel/core'
 
1624
  svelte: 4.2.18
1625
  dev: true
1626
 
1627
+ /svelte-preprocess@5.1.4(postcss@8.4.38)(svelte@4.2.18)(typescript@5.5.2):
1628
  resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==}
1629
  engines: {node: '>= 16.0.0'}
1630
  requiresBuild: true
 
1665
  '@types/pug': 2.0.10
1666
  detect-indent: 6.1.0
1667
  magic-string: 0.30.10
1668
+ postcss: 8.4.38
1669
  sorcery: 0.11.1
1670
  strip-indent: 3.0.0
1671
  svelte: 4.2.18
 
1692
  periscopic: 3.1.0
1693
  dev: true
1694
 
1695
+ /tailwindcss@3.4.4:
1696
+ resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==}
1697
+ engines: {node: '>=14.0.0'}
1698
+ hasBin: true
1699
+ dependencies:
1700
+ '@alloc/quick-lru': 5.2.0
1701
+ arg: 5.0.2
1702
+ chokidar: 3.6.0
1703
+ didyoumean: 1.2.2
1704
+ dlv: 1.1.3
1705
+ fast-glob: 3.3.2
1706
+ glob-parent: 6.0.2
1707
+ is-glob: 4.0.3
1708
+ jiti: 1.21.6
1709
+ lilconfig: 2.1.0
1710
+ micromatch: 4.0.7
1711
+ normalize-path: 3.0.0
1712
+ object-hash: 3.0.0
1713
+ picocolors: 1.0.1
1714
+ postcss: 8.4.38
1715
+ postcss-import: 15.1.0(postcss@8.4.38)
1716
+ postcss-js: 4.0.1(postcss@8.4.38)
1717
+ postcss-load-config: 4.0.2(postcss@8.4.38)
1718
+ postcss-nested: 6.0.1(postcss@8.4.38)
1719
+ postcss-selector-parser: 6.1.0
1720
+ resolve: 1.22.8
1721
+ sucrase: 3.35.0
1722
+ transitivePeerDependencies:
1723
+ - ts-node
1724
+ dev: true
1725
+
1726
+ /thenify-all@1.6.0:
1727
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1728
+ engines: {node: '>=0.8'}
1729
+ dependencies:
1730
+ thenify: 3.3.1
1731
+ dev: true
1732
+
1733
+ /thenify@3.3.1:
1734
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1735
+ dependencies:
1736
+ any-promise: 1.3.0
1737
+ dev: true
1738
+
1739
  /tiny-glob@0.2.9:
1740
  resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
1741
  dependencies:
 
1755
  engines: {node: '>=6'}
1756
  dev: true
1757
 
1758
+ /ts-interface-checker@0.1.13:
1759
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1760
+ dev: true
1761
+
1762
  /tslib@2.6.3:
1763
  resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
1764
  dev: true
 
1769
  hasBin: true
1770
  dev: true
1771
 
1772
+ /update-browserslist-db@1.0.16(browserslist@4.23.1):
1773
+ resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
1774
+ hasBin: true
1775
+ peerDependencies:
1776
+ browserslist: '>= 4.21.0'
1777
+ dependencies:
1778
+ browserslist: 4.23.1
1779
+ escalade: 3.1.2
1780
+ picocolors: 1.0.1
1781
+ dev: true
1782
+
1783
+ /util-deprecate@1.0.2:
1784
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1785
+ dev: true
1786
+
1787
  /vite@5.3.1:
1788
  resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==}
1789
  engines: {node: ^18.0.0 || >=20.0.0}
 
1830
  vite: 5.3.1
1831
  dev: true
1832
 
1833
+ /which@2.0.2:
1834
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1835
+ engines: {node: '>= 8'}
1836
+ hasBin: true
1837
+ dependencies:
1838
+ isexe: 2.0.0
1839
+ dev: true
1840
+
1841
+ /wrap-ansi@7.0.0:
1842
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1843
+ engines: {node: '>=10'}
1844
+ dependencies:
1845
+ ansi-styles: 4.3.0
1846
+ string-width: 4.2.3
1847
+ strip-ansi: 6.0.1
1848
+ dev: true
1849
+
1850
+ /wrap-ansi@8.1.0:
1851
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1852
+ engines: {node: '>=12'}
1853
+ dependencies:
1854
+ ansi-styles: 6.2.1
1855
+ string-width: 5.1.2
1856
+ strip-ansi: 7.1.0
1857
+ dev: true
1858
+
1859
  /wrappy@1.0.2:
1860
  resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1861
  dev: true
1862
+
1863
+ /yaml@2.4.5:
1864
+ resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==}
1865
+ engines: {node: '>= 14'}
1866
+ hasBin: true
1867
+ dev: true
postcss.config.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ export default {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {}
5
+ }
6
+ };
src/app.css ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
src/lib/components/Playground/Playground.svelte ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import { HfInference } from '@huggingface/inference';
3
+
4
+ import PlaygroundMessage from '$lib/components/Playground/PlaygroundMessage.svelte';
5
+ import PlaygroundOptions from '$lib/components/Playground/PlaygroundOptions.svelte';
6
+
7
+ type Message = {
8
+ role: 'user' | 'assistant' | 'system';
9
+ content: string;
10
+ };
11
+
12
+ const startMessages: Message[] = [{ role: 'user', content: '' }];
13
+ const compatibleModels: string[] = [
14
+ 'meta-llama/Meta-Llama-3-8B-Instruct',
15
+ 'mistralai/Mistral-7B-Instruct-v0.3'
16
+ ];
17
+
18
+ let hfToken: string | null;
19
+
20
+ let currentModel = compatibleModels[0];
21
+ let systemMessage: Message = { role: 'system', content: '' };
22
+ let messages: Message[] = startMessages;
23
+
24
+ function addMessage() {
25
+ messages = [
26
+ ...messages,
27
+ { role: messages.at(-1)?.role === 'user' ? 'assistant' : 'user', content: '' }
28
+ ];
29
+ }
30
+
31
+ function deleteMessage(i: number) {
32
+ messages = messages.filter((_, j) => j !== i);
33
+ }
34
+
35
+ function reset() {
36
+ messages = startMessages;
37
+ }
38
+
39
+ function onKeydown(event: KeyboardEvent) {
40
+ // check if the user is pressing the enter key + ctrl key or command key
41
+ if ((event.ctrlKey || event.metaKey) && event.key === 'Enter') {
42
+ submit();
43
+ }
44
+ }
45
+
46
+ async function submit() {
47
+ if (!hfToken) {
48
+ const token = prompt(
49
+ 'Please enter your Hugging Face API token (with `inference` permission):'
50
+ );
51
+ if (!token) return;
52
+ hfToken = token;
53
+ }
54
+ (document.activeElement as HTMLElement).blur();
55
+ const hf = new HfInference(hfToken);
56
+
57
+ const out = await hf.chatCompletion({
58
+ model: currentModel,
59
+ messages: systemMessage.content ? [systemMessage, ...messages] : messages,
60
+ max_tokens: 500,
61
+ temperature: 0.1,
62
+ seed: 0
63
+ });
64
+
65
+ messages = [...messages, ...out.choices.map((o) => o.message)];
66
+ }
67
+
68
+ $: console.log(messages);
69
+ </script>
70
+
71
+ <svelte:window on:keydown={onKeydown} />
72
+
73
+ <div
74
+ class="grid h-dvh divide-gray-200 overflow-hidden max-md:grid-cols-1 max-md:divide-y md:grid-cols-[260px,1fr,260px] md:divide-x"
75
+ >
76
+ <div class="relative flex flex-col overflow-y-auto p-5 pb-24">
77
+ <div class="pb-2 text-sm font-semibold">SYSTEM</div>
78
+ <textarea
79
+ name=""
80
+ id=""
81
+ placeholder="Enter a custom prompt"
82
+ bind:value={systemMessage.content}
83
+ class="absolute inset-x-0 bottom-0 h-full resize-none bg-transparent p-2 pl-5 pr-3 pt-12 outline-none"
84
+ ></textarea>
85
+ </div>
86
+ <div class="relative divide-y divide-gray-200">
87
+ {#each messages as message, i}
88
+ <PlaygroundMessage {message} on:delete={() => deleteMessage(i)} />
89
+ {/each}
90
+
91
+ <button
92
+ class="grid w-full grid-cols-[130px,1fr] items-center py-6 hover:bg-gray-50"
93
+ on:click={addMessage}
94
+ >
95
+ <div class="button !p-0 text-sm font-semibold">Add message</div>
96
+ </button>
97
+ <div class="absolute inset-x-0 bottom-0 flex h-20 items-center gap-2 whitespace-nowrap px-5">
98
+ <button
99
+ type="button"
100
+ class="rounded-lg border border-gray-200 bg-white px-5 py-2.5 text-sm font-medium text-gray-900 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:outline-none focus:ring-4 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
101
+ >Share</button
102
+ >
103
+
104
+ <button
105
+ type="button"
106
+ on:click={reset}
107
+ class="rounded-lg border border-gray-200 bg-white px-5 py-2.5 text-sm font-medium text-gray-900 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:outline-none focus:ring-4 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
108
+ >Reset</button
109
+ >
110
+ <div class="flex-1 items-center justify-center text-center text-sm text-gray-500">
111
+ 23 tokens · Latency 750ms
112
+ </div>
113
+ <button
114
+ type="button"
115
+ class="rounded-lg border border-gray-200 bg-white px-5 py-2.5 text-sm font-medium text-gray-900 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:outline-none focus:ring-4 focus:ring-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
116
+ >View Code</button
117
+ >
118
+ <button
119
+ on:click={submit}
120
+ type="button"
121
+ class="rounded-lg bg-black px-5 py-2.5 text-sm font-medium text-white hover:bg-gray-900 focus:outline-none focus:ring-4 focus:ring-gray-300 dark:border-gray-700 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700"
122
+ >Submit</button
123
+ >
124
+ </div>
125
+ </div>
126
+ <div class="flex flex-col gap-6 p-5">
127
+ <PlaygroundOptions {compatibleModels} bind:currentModel />
128
+ </div>
129
+ </div>
src/lib/components/Playground/PlaygroundMessage.svelte ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import { createEventDispatcher } from 'svelte';
3
+
4
+ type Message = {
5
+ role: 'user' | 'assistant';
6
+ content: string;
7
+ };
8
+
9
+ export let message: Message;
10
+
11
+ const dispatch = createEventDispatcher();
12
+ </script>
13
+
14
+ <div
15
+ class="group/message group grid grid-cols-[130px,1fr,2.5rem] items-start gap-4 px-6 pb-6 pt-4 hover:bg-gray-50"
16
+ >
17
+ <div class="pb-2 pt-3 text-sm font-semibold uppercase">{message.role}</div>
18
+ <textarea
19
+ autofocus={message.role === 'user'}
20
+ bind:value={message.content}
21
+ placeholder="Enter {message.role} message"
22
+ class="resize-none rounded px-3 py-2.5 ring-gray-100 [field-sizing:content] hover:resize-y focus:resize-y focus:ring group-hover:ring"
23
+ rows="1"
24
+ ></textarea>
25
+ <button
26
+ tabindex="1"
27
+ on:click={() => {
28
+ dispatch('delete');
29
+ }}
30
+ type="button"
31
+ class="mt-1.5 hidden size-8 rounded-lg border border-gray-200 bg-white text-xs font-medium text-gray-900 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:outline-none focus:ring-4 focus:ring-gray-100 group-hover/message:block dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white dark:focus:ring-gray-700"
32
+ >✕</button
33
+ >
34
+ </div>
src/lib/components/Playground/PlaygroundOptions.svelte ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ export let compatibleModels: string[] = [];
3
+ export let currentModel = compatibleModels[0];
4
+ </script>
5
+
6
+ <div>
7
+ <form class="mx-auto max-w-sm">
8
+ <label for="countries" class="mb-2 block text-sm font-medium text-gray-900 dark:text-white"
9
+ >Model</label
10
+ >
11
+ <select
12
+ bind:value={currentModel}
13
+ class="block w-full rounded-lg border border-gray-300 bg-gray-50 p-2.5 text-sm text-gray-900 focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400 dark:focus:border-blue-500 dark:focus:ring-blue-500"
14
+ >
15
+ {#each compatibleModels as model}
16
+ <option value={model}>{model}</option>
17
+ {/each}
18
+ </select>
19
+ </form>
20
+ </div>
21
+ <div>
22
+ <div class="flex items-center justify-between">
23
+ <label for="default-range" class="mb-2 block text-sm font-medium text-gray-900 dark:text-white"
24
+ >Temperature</label
25
+ >
26
+ <input type="text" class="w-12 rounded border px-1 py-0.5 text-right text-sm" value="0,5" />
27
+ </div>
28
+ <input
29
+ id="default-range"
30
+ type="range"
31
+ value="50"
32
+ class="h-2 w-full cursor-pointer appearance-none rounded-lg bg-gray-200 accent-black dark:bg-gray-700"
33
+ />
34
+ </div>
35
+ <div>
36
+ <div class="flex items-center justify-between">
37
+ <label for="default-range" class="mb-2 block text-sm font-medium text-gray-900 dark:text-white"
38
+ >Max tokens</label
39
+ >
40
+ <input type="text" class="w-16 rounded border px-1 py-0.5 text-right text-sm" value="32,000" />
41
+ </div>
42
+ <input
43
+ id="default-range"
44
+ type="range"
45
+ value="50"
46
+ class="h-2 w-full cursor-pointer appearance-none rounded-lg bg-gray-200 accent-black dark:bg-gray-700"
47
+ />
48
+ </div>
49
+ <div class="mt-2">
50
+ <label class="flex cursor-pointer items-center justify-between">
51
+ <input type="checkbox" value="" class="peer sr-only" disabled />
52
+ <span class="text-sm font-medium text-gray-900 dark:text-gray-300">Streaming</span>
53
+ <div
54
+ class="peer relative h-5 w-9 rounded-full bg-gray-200 after:absolute after:start-[2px] after:top-[2px] after:h-4 after:w-4 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-black peer-checked:after:translate-x-full peer-checked:after:border-white peer-focus:outline-none dark:border-gray-600 dark:bg-gray-700"
55
+ ></div>
56
+ </label>
57
+ </div>
58
+ <div class="mt-2">
59
+ <label class="flex cursor-pointer items-center justify-between">
60
+ <input type="checkbox" value="" class="peer sr-only" disabled />
61
+ <span class="text-sm font-medium text-gray-900 dark:text-gray-300">JSON Mode</span>
62
+ <div
63
+ class="peer relative h-5 w-9 rounded-full bg-gray-200 after:absolute after:start-[2px] after:top-[2px] after:h-4 after:w-4 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-black peer-checked:after:translate-x-full peer-checked:after:border-white peer-focus:outline-none dark:border-gray-600 dark:bg-gray-700"
64
+ ></div>
65
+ </label>
66
+ </div>
67
+ <div
68
+ class="mt-auto flex max-w-xs flex-col items-start gap-2.5 rounded-lg border bg-white p-4 text-gray-500 shadow dark:bg-gray-800 dark:text-gray-400"
69
+ role="alert"
70
+ >
71
+ <span class="text-sm font-semibold text-gray-900 dark:text-white">Get more usage</span>
72
+ <div class="text-sm font-normal">Larger models, x10 quota, and advanced features.</div>
73
+ <a
74
+ href="#"
75
+ class="inline-flex rounded-lg bg-black px-2.5 py-1.5 text-center text-xs font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-4 focus:ring-blue-300 dark:hover:bg-black dark:focus:ring-blue-800"
76
+ >Get PRO ($9/month)</a
77
+ >
78
+ </div>
79
+ <div
80
+ class="flex max-w-xs flex-col items-start gap-2.5 rounded-lg border bg-white p-4 text-gray-500 shadow dark:bg-gray-800 dark:text-gray-400"
81
+ role="alert"
82
+ >
83
+ <span class="text-sm font-semibold text-gray-900 dark:text-white">Deploy dedicated</span>
84
+ <div class="text-sm font-normal">Deploy your own production ready endpoint</div>
85
+ <a
86
+ href="#"
87
+ class="inline-flex rounded-lg bg-black px-2.5 py-1.5 text-center text-xs font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-4 focus:ring-blue-300 dark:hover:bg-black dark:focus:ring-blue-800"
88
+ >Deploy dedicated</a
89
+ >
90
+ </div>
91
+ <div>
92
+ <div class="mb-3 flex items-center justify-between gap-2">
93
+ <label for="default-range" class="block text-sm font-medium text-gray-900 dark:text-white"
94
+ >API Quota</label
95
+ >
96
+ <span
97
+ class="rounded bg-gray-100 px-1.5 py-0.5 text-xs font-medium text-gray-800 dark:bg-gray-700 dark:text-gray-300"
98
+ >Free</span
99
+ >
100
+
101
+ <input type="text" class="ml-auto w-12 text-right text-sm" value="76%" />
102
+ </div>
103
+ <div class="h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700">
104
+ <div class="h-2 rounded-full bg-black" style="width: 75%"></div>
105
+ </div>
106
+ </div>
src/routes/+layout.svelte ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <script>
2
+ import '../app.css';
3
+ </script>
4
+
5
+ <slot></slot>
6
+
7
+ <style></style>
src/routes/+page.svelte CHANGED
@@ -1,2 +1,5 @@
1
- <h1>Welcome to SvelteKit</h1>
2
- <p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p>
 
 
 
 
1
+ <script lang="ts">
2
+ import Playground from '$lib/components/Playground/Playground.svelte';
3
+ </script>
4
+
5
+ <Playground />
tailwind.config.ts ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type { Config } from 'tailwindcss';
2
+
3
+ export default {
4
+ content: ['./src/**/*.{html,js,svelte,ts}'],
5
+
6
+ theme: {
7
+ extend: {}
8
+ },
9
+
10
+ plugins: []
11
+ } as Config;