File size: 4,472 Bytes
c8f3d8b
 
 
 
 
 
 
 
 
0e30f31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c8f3d8b
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width" />
		<title>My static Space</title>
		<link rel="stylesheet" href="style.css" />
	</head>
	<body>
		<div class="flex flex-col md:flex-row" x-data="app()" x-init="init()">
      <div class="hero md:h-screen bg-stone-100 transition-[width] delay-150 ease-in-out w-full md:w-6/6" :class="open ? 'w-full md:w-2/6' : 'w-full md:w-6/6'">
        <div class="hero-content text-center">
          <div class="flex flex-col w-full md:max-w-xl space-y-3 md:space-y-6">
            <h1 class="font-bold text-stone-600 mb-1 md:mb-3 transition-all delay-150 ease-in-out text-2xl md:text-3xl lg:text-6xl" :class="open
              ? 'text-2xl md:text-3xl lg:text-4xl'
              : 'text-2xl md:text-3xl lg:text-6xl'">
              Webapp Factory 🏭
            </h1>
            <div class="py-1 md:py-2 space-y-2 md:space-y-3 text-stone-600 transition-all delay-150 ease-in-out text-lg lg:text-xl" :class="open
              ? 'text-lg lg:text-xl'
              : 'text-lg lg:text-xl'">
              <p>A space to generate tiny web apps.</p>
              <p>In case of hallucination try generating again 🎲</p>
            </div>
            <textarea name="promptDraft" x-model="promptDraft" rows="10" placeholder="Describe your web app" class="input w-full rounded text-stone-800 bg-stone-50 border-2 border-stone-400 font-mono text-md md:text-lg h-24 md:h-48"></textarea>
            <p class="py-1 md:py-2 text-stone-700 text-italic">
              Examples:

              <a href="/?prompt=a simple page to compute the BMI using metric units" class="text-bold underline">compute my BMI</a>,
              <a href="/?prompt=app listing various types of savanna animals, with their photos" class="text-bold underline">photos of savanna animals</a>
            </p>
            <button class="btn disabled:text-stone-400 btn-neutral" @click="open = true, prompt = promptDraft, state = state === 'stopped' ? 'loading' : 'stopped', state === 'streaming' ? stopGeneration() : true" :class="promptDraft.length < minPromptSize ? 'btn-neutral' : state === 'stopped' ? 'btn-accent' : 'btn-warning'" :disabled="promptDraft.length < minPromptSize" disabled="disabled">
              <span x-show="promptDraft.length < minPromptSize">Prompt too short to generate</span>
              <span x-show="promptDraft.length >= minPromptSize &amp;&amp; state !== 'stopped'" style="display: none;">Stop now</span>
              <span x-show="promptDraft.length >= minPromptSize &amp;&amp; state === 'stopped'" style="display: none;">Generate!</span>
            </button>
            <div class="flex flex-col text-stone-700 space-y-1 md:space-y-2">
              <p class="text-stone-700">
                Model used:
                <a href="https://huggingface.co/WizardLM/WizardCoder-15B-V1.0" class="underline" target="_blank">
                  WizardCoder-15B-1.0
                </a>
              </p>
              <p>Powered by 🤗 <a href="https://huggingface.co/inference-endpoints" class="underline" target="_blank">Inference Endpoints</a></p>
              <p class="text-stone-700" x-show="state === 'loading'" style="display: none;">
                Waiting for the stream to begin (might take a few minutes)..
              </p>
              <p class="text-stone-700" x-show="state === 'streaming'" style="display: none;">
                Content size: <span x-text="humanFileSize(size, true, 2)">0 B</span>. This version generates up
                to 1686 tokens.
              </p>
            </div>
          </div>
        </div>
      </div>
      <div class="flex flex-col transition-[width] delay-150 ease-in-out md:h-screen w-full md:w-0" :class="open ? 'w-full md:w-4/6' : 'w-full md:w-0'">
        <iframe id="iframe" class="border-none w-full md:min-h-screen" :src="!open
            ? '/placeholder.html'
            : `/app?prompt=${encodeURIComponent(prompt)}`
          " src="/placeholder.html"></iframe>

        <div x-show="state !== 'stopped'" class="flex w-full -mt-20 items-end justify-center pointer-events-none" style="display: none;">
          <div class="flex flex-row py-3 px-8 text-center bg-stone-200 text-stone-600 rounded-md shadow-md">
            <div class="animate-bounce duration-150 mr-1">🤖</div>
            <div>Generating your app..</div>
          </div>
        </div>
      </div>
    </div>
	</body>
</html>