basic start

This commit is contained in:
Joshua Seigler 2025-04-24 16:26:45 -04:00
parent 3841f530ac
commit 9a4336dacd
6 changed files with 677 additions and 171 deletions

BIN
public/brush-stroke.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -1,130 +1,203 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="410"
height="404"
viewBox="0 0 410 404"
fill="none"
version="1.1"
id="svg20"
sodipodi:docname="favicon.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata24">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1001"
id="namedview22"
showgrid="false"
inkscape:zoom="0.51361386"
inkscape:cx="-374.79518"
inkscape:cy="145.0506"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="g8"
inkscape:document-rotation="0"
inkscape:pagecheckerboard="0" />
<path
d="M399.641 59.5246L215.643 388.545C211.844 395.338 202.084 395.378 198.228 388.618L10.5817 59.5563C6.38087 52.1896 12.6802 43.2665 21.0281 44.7586L205.223 77.6824C206.398 77.8924 207.601 77.8904 208.776 77.6763L389.119 44.8058C397.439 43.2894 403.768 52.1434 399.641 59.5246Z"
fill="url(#paint0_linear)"
id="path2" />
<defs
id="defs18">
<linearGradient
id="paint0_linear"
x1="6.00017"
y1="32.9999"
x2="235"
y2="344"
gradientUnits="userSpaceOnUse">
<stop
stop-color="#41D1FF"
id="stop6" />
<stop
offset="1"
stop-color="#BD34FE"
id="stop8" />
</linearGradient>
<linearGradient
id="paint1_linear"
x1="194.651"
y1="8.81818"
x2="236.076"
y2="292.989"
gradientUnits="userSpaceOnUse">
<stop
stop-color="#FFEA83"
id="stop11" />
<stop
offset="0.0833333"
stop-color="#FFDD35"
id="stop13" />
<stop
offset="1"
stop-color="#FFA800"
id="stop15" />
</linearGradient>
</defs>
<path
d="M292.965 1.5744L156.801 28.2552C154.563 28.6937 152.906 30.5903 152.771 32.8664L144.395 174.33C144.198 177.662 147.258 180.248 150.51 179.498L188.42 170.749C191.967 169.931 195.172 173.055 194.443 176.622L183.18 231.775C182.422 235.487 185.907 238.661 189.532 237.56L212.947 230.446C216.577 229.344 220.065 232.527 219.297 236.242L201.398 322.875C200.278 328.294 207.486 331.249 210.492 326.603L212.5 323.5L323.454 102.072C325.312 98.3645 322.108 94.137 318.036 94.9228L279.014 102.454C275.347 103.161 272.227 99.746 273.262 96.1583L298.731 7.86689C299.767 4.27314 296.636 0.855181 292.965 1.5744Z"
fill="url(#paint1_linear)"
id="path4" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="PWA">
<g
id="g8"
transform="matrix(0.15789659,0,0,0.15890333,54.892928,275.21638)">
<path
fill="#3d3d3d"
fill-opacity="1"
stroke-width="0.2"
stroke-linejoin="round"
d="m 1436.62,603.304 56.39,-142.599 h 162.82 L 1578.56,244.39 1675.2,5.28336e-4 1952,734.933 h -204.13 l -47.3,-131.629 z"
id="path2-1"
style="fill:#3e3e3e;fill-opacity:1" />
<path
fill="#5a0fc8"
fill-opacity="1"
stroke-width="0.2"
stroke-linejoin="round"
d="M 1262.47,734.935 1558.79,0.00156593 1362.34,0.0025425 1159.64,474.933 1015.5,0.00351906 H 864.499 L 709.731,474.933 600.585,258.517 501.812,562.819 602.096,734.935 h 193.331 l 139.857,-425.91 133.346,425.91 z"
id="path4-4"
style="fill:#2e859c;fill-opacity:1" />
<path
fill="#3d3d3d"
fill-opacity="1"
stroke-width="0.2"
stroke-linejoin="round"
d="m 186.476,482.643 h 121.003 c 36.654,0 69.293,-4.091 97.917,-12.273 l 31.293,-96.408 87.459,-269.446 C 517.484,93.9535 509.876,83.9667 501.324,74.5569 456.419,24.852 390.719,4.06265e-4 304.222,4.06265e-4 H -3.8147e-6 V 734.933 H 186.476 Z M 346.642,169.079 c 17.54,17.653 26.309,41.276 26.309,70.871 0,29.822 -7.713,53.474 -23.138,70.956 -16.91,19.425 -48.047,29.137 -93.409,29.137 H 186.476 V 142.598 h 70.442 c 42.277,0 72.185,8.827 89.724,26.481 z"
id="path6"
style="fill:#3e3e3e;fill-opacity:1" />
</g>
</g>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="385px" height="401px" viewBox="0 0 385 401" enable-background="new 0 0 385 401" xml:space="preserve"> <image id="image0" width="385" height="401" x="0" y="0"
xlink:href="data:image/png;base64,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
RU5ErkJggg==" />
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

View file

@ -5,23 +5,17 @@
text-align: center;
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.solid:hover {
filter: drop-shadow(0 0 2em #61dafbaa);
#root::before {
z-index: -1;
content: '';
position: absolute;
inset: 0;
background: gray;
mask-image: url('brush-stroke.jpg');
mask-size: cover;
mask-repeat: no-repeat;
}
.card {
padding: 2em;
}
.read-the-docs {
color: #888;
.prompt {
font-size: min(3rem, 10vmin);
}

View file

@ -1,34 +1,43 @@
import { createSignal } from 'solid-js'
import solidLogo from './assets/solid.svg'
import appLogo from '/favicon.svg'
import PWABadge from './PWABadge.tsx'
import { createSignal, onMount } from 'solid-js'
import './App.css'
import parts from './parts.json'
import PWABadge from './PWABadge'
const pick = (source: string[]) => {
return source[Math.floor(source.length * Math.random())]
}
const getPrompt = () => {
let prompt = ""
do {
prompt += pick(parts.adjective) + ' '
} while (Math.random() > 0.8)
if (Math.random() > 0.5) {
prompt += pick(parts.mod) + ' '
}
while (Math.random() > 0.75) {
prompt += pick(parts.animal) + '/'
}
prompt = prompt.slice(0, -1)
prompt += " " + pick(parts.jobs)
return prompt
}
function App() {
const [count, setCount] = createSignal(0)
const [suggestion, setSuggestion] = createSignal("")
onMount(() => {
setSuggestion(getPrompt())
})
return (
<>
<div>
<a href="https://vite.dev" target="_blank">
<img src={appLogo} class="logo" alt="drawing-prompt logo" />
</a>
<a href="https://solidjs.com" target="_blank">
<img src={solidLogo} class="logo solid" alt="Solid logo" />
</a>
</div>
<h1>drawing-prompt</h1>
<div class="card">
<button onClick={() => setCount((count) => count + 1)}>
count is {count()}
</button>
<p>
Edit <code>src/App.tsx</code> and save to test HMR
</p>
</div>
<p class="read-the-docs">
Click on the Vite and Solid logos to learn more
</p>
<h1>Your Prompt:</h1>
<div class="prompt">{suggestion()}</div>
<button on:click={() => {
setSuggestion(getPrompt())
}}>
</button>
<PWABadge />
</>
)

View file

@ -20,7 +20,7 @@
.Message {
margin-bottom: 8px;
}
.Toast-button {
.ToastButton {
border: 1px solid #8885;
outline: none;
margin-right: 5px;

430
src/parts.json Normal file
View file

@ -0,0 +1,430 @@
{
"adjective": [
"agreeable",
"aloof",
"ambitious",
"angry",
"animated",
"antagonistic",
"anxious",
"apprehensive",
"awestruck",
"belligerent",
"calm",
"carefree",
"caring",
"cheerful",
"combative",
"dark",
"defensive",
"dejected",
"eager",
"energetic",
"erratic",
"excited",
"fearful",
"festive",
"friendly",
"fun",
"gloomy",
"glum",
"grateful",
"gregarious",
"heartbroken",
"hopeful",
"hostile",
"idyllic",
"impatient",
"indignant",
"invigorated",
"lighthearted",
"lively",
"lonely",
"loving",
"melancholy",
"mischievous",
"miserable",
"mournful",
"mysterious",
"nervous",
"nostalgic",
"ominous",
"optimistic",
"outgoing",
"overwhelmed",
"passionate",
"peaceful",
"perky",
"pessimistic",
"playful",
"realistic",
"reflective",
"resentful",
"restless",
"romantic",
"sad",
"sentimental",
"serious",
"shy",
"silly",
"solemn",
"strange",
"tender",
"tense",
"thankful",
"transcendent",
"unaffected",
"uneasy",
"unfriendly",
"unstable",
"unsteady",
"vivacious",
"wretched"
],
"mod": [
"plush",
"robot",
"vampire",
"zombie",
"wooden",
"virtual",
"military",
"aquatic",
"ancient",
"future",
"super"
],
"animal": [
"albatross",
"alligator",
"antelope",
"arctic",
"armadillo",
"baboon",
"badger",
"bat",
"beagle",
"bear",
"beaver",
"bison",
"blue whale",
"boar",
"brill",
"buffalo",
"bull",
"camel",
"capybara",
"carp",
"cat",
"chameleon",
"cheetah",
"chihuahua",
"chimpanzee",
"chinchillas",
"cobra",
"cow",
"crab",
"crocodile",
"crow",
"deer",
"dodo",
"dog",
"dolphin",
"donkey",
"duck",
"eagle",
"eel",
"elephant",
"elk",
"emu",
"fish",
"flamingo",
"fox",
"frog",
"frog",
"giant",
"giraffe",
"goat",
"goose",
"gorilla",
"haddock",
"hammerhead",
"hamster",
"hare",
"hawk",
"hedgehog",
"hen",
"hermit",
"herring",
"hippopotamus",
"horse",
"ibex",
"iguana",
"jackal",
"jaguar",
"jellyfish",
"kangaroo",
"koala",
"lemur",
"leopard",
"lion",
"lizard",
"llama",
"lynx",
"mammoth",
"meerkat",
"mole",
"monkey",
"mouse",
"mule",
"newt",
"orangutan",
"ostrich",
"otter",
"owl",
"panda",
"panther",
"peacock",
"pigeon",
"pike",
"porcupine",
"possum",
"pufferfish",
"rabbit",
"racoon",
"rat",
"rhinoceros",
"salamander",
"salmon",
"sardines",
"shark",
"sheep",
"sloth",
"snake",
"squirrel",
"swan",
"tiger",
"toad",
"tortoise",
"tuna",
"turtle",
"vulture",
"whale",
"wolf",
"wombat",
"zebra"
],
"jobs": [
"accountant",
"actor",
"actuary",
"administrator",
"advertising manager",
"aerospace engineer",
"agent",
"agricultural engineer",
"air traffic controller",
"anthropologist",
"archeologist",
"architect",
"art director",
"astronomer",
"athlete",
"auditor",
"baker",
"banking analyst",
"barista",
"bartender",
"bioinformatics scientist",
"biologist",
"biomedical engineer",
"blacksmiths",
"board member",
"broker",
"business analyst",
"buyer",
"naval captain",
"carpenter",
"cashier",
"chef",
"chemical engineer",
"chemist",
"chief executive",
"childcare worker",
"choreographer",
"civil engineer",
"cleaner",
"clergy",
"compliance manager",
"computer scientist",
"concierge",
"conservation worker",
"construction manager",
"construction worker",
"consultant",
"cook",
"copywriter",
"cosmetologist",
"courier",
"craftsperson",
"curator",
"customer experience designer",
"customer service",
"data analyst",
"data architect",
"data scientist",
"database administrator",
"dental assistant",
"dentist",
"development manager",
"director",
"ecommerce seller",
"economist",
"electrical engineer",
"electrician",
"emergency medical technician",
"energy engineer",
"engineer",
"entrepreneur",
"environmental engineer",
"environmental science",
"epidemiologist",
"equipment operator",
"event planner",
"executive management",
"farmer",
"fashion designer",
"financial analyst",
"financial controller",
"financial manager",
"firefighter",
"fishery worker",
"fitness trainer",
"flight attendant",
"floral designer",
"forestry worker",
"funeral attendant",
"game designer",
"gardener",
"general manager",
"geographer",
"government worker",
"hair stylist",
"health educator",
"homemaker",
"hotel manager",
"human resources",
"import/export specialist",
"industrial designer",
"information designer",
"information scientist",
"information technology manager",
"installation & maintenance worker",
"interpreter",
"journalist",
"laboratory technician",
"laborer",
"landscape architect",
"landscaping",
"lawyer",
"legal secretary",
"librarian",
"lifeguard",
"logistics engineer",
"management consultant",
"manicurist",
"manufacturing engineer",
"manufacturing worker",
"marketing analyst",
"marketing manager",
"mathematician",
"mechanical engineer",
"medical administrator",
"medical assistant",
"medical technician",
"medical technologist",
"mental health counselor",
"midwife",
"miner",
"musician",
"nanny",
"network administrator",
"nurse",
"occupational health & safety specialist",
"occupational therapist",
"office clerk",
"operations analyst",
"operations manager",
"optometrist",
"performance artist",
"personal care aid",
"pharmacist",
"photographer",
"physician",
"physicist",
"pilot",
"plumber",
"police officer",
"politician",
"producer",
"product designer",
"production manager",
"professor",
"program manager",
"project manager",
"promotion manager",
"property manager",
"public relations",
"purchasing manager",
"quality assurance manager",
"quality control analyst",
"railroad engineer",
"reporter",
"researcher",
"restaurant manager",
"rigger",
"robotics engineer",
"sales engineer",
"sales manager",
"salesperson",
"scientist",
"service attendant",
"service manager",
"shop salesperson",
"small business owner",
"social worker",
"sociologist",
"software architect",
"software developer",
"solar energy technician",
"space scientist",
"statistician",
"steel worker",
"stonemason",
"supervisor",
"surgeon",
"surveyor",
"system administrator",
"systems analyst",
"tailor",
"teacher",
"technical support",
"technical writer",
"technician",
"technology architect",
"testing engineer",
"tour guide",
"translator",
"transportation engineer",
"truck driver",
"tutor",
"urban designer",
"veterinarian",
"visual designer",
"waiter",
"web developer",
"wind energy engineer",
"writer",
"zoologist"
]
}